From 06b55720c18948ed6eb34deace77aeaeb97ce566 Mon Sep 17 00:00:00 2001 From: Andreas Ehrencrona Date: Fri, 30 Oct 2020 14:58:35 +0200 Subject: [PATCH 01/14] adding types to stores --- packages/kit/src/runtime/stores/index.ts | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/kit/src/runtime/stores/index.ts b/packages/kit/src/runtime/stores/index.ts index ef1afc7ebcbf2..2fe0a36bc0d52 100644 --- a/packages/kit/src/runtime/stores/index.ts +++ b/packages/kit/src/runtime/stores/index.ts @@ -1,23 +1,31 @@ import { getContext } from 'svelte'; +import { Readable, Writable } from 'svelte/store'; +import { Page } from '../navigation/types'; + +// these Svelte types are not exported, so repeating them here. +type Subscriber = (value: T) => void; +type Updater = (value: T) => T; + +export type PageContext = Page & { error?: Error }; // const ssr = (import.meta as any).env.SSR; const ssr = typeof window === 'undefined'; // TODO why doesn't previous line work in build? export const getStores: () => { - page: any // TODO - preloading: any // TODO - session: any // TODO + page: Readable + preloading: Readable + session: Writable } = () => getContext('__svelte__'); export const page = { - subscribe(fn) { + subscribe(fn: Subscriber) { const store = getStores().page; return store.subscribe(fn); } }; export const preloading = { - subscribe(fn) { + subscribe(fn: Subscriber) { const store = getStores().preloading; return store.subscribe(fn); } @@ -28,7 +36,7 @@ const error = verb => { }; export const session = { - subscribe(fn) { + subscribe(fn: Subscriber) { const store = getStores().session; if (!ssr) { @@ -38,6 +46,6 @@ export const session = { return store.subscribe(fn); }, - set: () => error('set'), - update: () => error('update') + set: (updater: Updater) => { error('set') }, + update: (updater: Updater) => { error('update') } }; \ No newline at end of file From fbdcd4a2ad73ba627968cc6c3ce30f8a10b3ee29 Mon Sep 17 00:00:00 2001 From: Andreas Ehrencrona Date: Mon, 2 Nov 2020 16:14:17 +0200 Subject: [PATCH 02/14] moved pagecontext and introduced types to navigation/start/index.ts --- packages/kit/src/runtime/navigation/start/index.ts | 9 +++------ packages/kit/src/runtime/navigation/types.ts | 4 ++++ packages/kit/src/runtime/stores/index.ts | 4 +--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/kit/src/runtime/navigation/start/index.ts b/packages/kit/src/runtime/navigation/start/index.ts index a5833ac508163..313942178c501 100644 --- a/packages/kit/src/runtime/navigation/start/index.ts +++ b/packages/kit/src/runtime/navigation/start/index.ts @@ -6,10 +6,7 @@ import goto from '../goto'; import { page_store } from './page_store'; import { layout, ErrorComponent, components } from 'MANIFEST'; import root from 'ROOT'; - -// TODO -// import { PageContext } from '@sapper/common'; -type PageContext = any; +import { PageContext } from '../types'; declare const __SVELTE__; export const initial_data: InitialData = typeof __SVELTE__ !== 'undefined' && __SVELTE__; @@ -22,8 +19,8 @@ let current_branch: Branch = []; let current_query = '{}'; const stores = { - page: page_store({}), - preloading: writable(null), + page: page_store({} as any), + preloading: writable(false), session: writable(initial_data && initial_data.session) }; diff --git a/packages/kit/src/runtime/navigation/types.ts b/packages/kit/src/runtime/navigation/types.ts index a235bfe6bb34b..6249cb395f360 100644 --- a/packages/kit/src/runtime/navigation/types.ts +++ b/packages/kit/src/runtime/navigation/types.ts @@ -43,3 +43,7 @@ export interface Page { params: Record; query: Record; } + +export interface PageContext extends Page { + error?: Error +}; diff --git a/packages/kit/src/runtime/stores/index.ts b/packages/kit/src/runtime/stores/index.ts index 2fe0a36bc0d52..7f43d18ce2f87 100644 --- a/packages/kit/src/runtime/stores/index.ts +++ b/packages/kit/src/runtime/stores/index.ts @@ -1,13 +1,11 @@ import { getContext } from 'svelte'; import { Readable, Writable } from 'svelte/store'; -import { Page } from '../navigation/types'; +import { PageContext } from '../navigation/types'; // these Svelte types are not exported, so repeating them here. type Subscriber = (value: T) => void; type Updater = (value: T) => T; -export type PageContext = Page & { error?: Error }; - // const ssr = (import.meta as any).env.SSR; const ssr = typeof window === 'undefined'; // TODO why doesn't previous line work in build? From 3bdf33b51895377c31d40e47dafba225ad8d4bc7 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Mon, 2 Nov 2020 11:35:58 -0500 Subject: [PATCH 03/14] add app-utils changeset --- .changeset/twelve-snails-destroy.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/twelve-snails-destroy.md diff --git a/.changeset/twelve-snails-destroy.md b/.changeset/twelve-snails-destroy.md new file mode 100644 index 0000000000000..70c13d8d17213 --- /dev/null +++ b/.changeset/twelve-snails-destroy.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/app-utils': patch +--- + +Fix missing files in published package From 6b68730f9bb7c02ecc93315803ad7142945112bf Mon Sep 17 00:00:00 2001 From: Conduitry Date: Mon, 2 Nov 2020 11:40:22 -0500 Subject: [PATCH 04/14] bump versions --- .changeset/twelve-snails-destroy.md | 5 ----- packages/adapter-begin/CHANGELOG.md | 7 +++++++ packages/adapter-begin/package.json | 2 +- packages/adapter-node/CHANGELOG.md | 7 +++++++ packages/adapter-node/package.json | 2 +- packages/adapter-static/CHANGELOG.md | 7 +++++++ packages/adapter-static/package.json | 2 +- packages/app-utils/CHANGELOG.md | 6 ++++++ packages/app-utils/package.json | 2 +- packages/kit/CHANGELOG.md | 7 +++++++ packages/kit/package.json | 2 +- 11 files changed, 39 insertions(+), 10 deletions(-) delete mode 100644 .changeset/twelve-snails-destroy.md diff --git a/.changeset/twelve-snails-destroy.md b/.changeset/twelve-snails-destroy.md deleted file mode 100644 index 70c13d8d17213..0000000000000 --- a/.changeset/twelve-snails-destroy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/app-utils': patch ---- - -Fix missing files in published package diff --git a/packages/adapter-begin/CHANGELOG.md b/packages/adapter-begin/CHANGELOG.md index 6970abb2ada20..e3ccc151b3ce3 100644 --- a/packages/adapter-begin/CHANGELOG.md +++ b/packages/adapter-begin/CHANGELOG.md @@ -1,5 +1,12 @@ # @sveltejs/adapter-begin +## 0.0.3 + +### Patch Changes + +- Updated dependencies [3bdf33b] + - @sveltejs/app-utils@0.0.17 + ## 0.0.2 ### Patch Changes diff --git a/packages/adapter-begin/package.json b/packages/adapter-begin/package.json index 1574efbb0ed9a..2577e34c223e6 100644 --- a/packages/adapter-begin/package.json +++ b/packages/adapter-begin/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-begin", - "version": "0.0.2", + "version": "0.0.3", "main": "index.js", "scripts": { "lint": "eslint --ignore-pattern node_modules/ '**/*.{ts,js,svelte}'" diff --git a/packages/adapter-node/CHANGELOG.md b/packages/adapter-node/CHANGELOG.md index 0ce2f9282673a..84fee7d2b2f88 100644 --- a/packages/adapter-node/CHANGELOG.md +++ b/packages/adapter-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @sveltejs/adapter-node +## 0.0.14 + +### Patch Changes + +- Updated dependencies [3bdf33b] + - @sveltejs/app-utils@0.0.17 + ## 0.0.13 ### Patch Changes diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 5ae0034802cbf..89a3fb6668c64 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-node", - "version": "0.0.13", + "version": "0.0.14", "main": "index.js", "files": [ "server.js" diff --git a/packages/adapter-static/CHANGELOG.md b/packages/adapter-static/CHANGELOG.md index 97fc2e8119705..bb0b6b7806b64 100644 --- a/packages/adapter-static/CHANGELOG.md +++ b/packages/adapter-static/CHANGELOG.md @@ -1,5 +1,12 @@ # @sveltejs/adapter-static +## 0.0.14 + +### Patch Changes + +- Updated dependencies [3bdf33b] + - @sveltejs/app-utils@0.0.17 + ## 0.0.13 ### Patch Changes diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 0e233e50fa29d..ae2d60292a806 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-static", - "version": "0.0.13", + "version": "0.0.14", "scripts": { "lint": "eslint --ignore-pattern node_modules/ '**/*.{ts,js,svelte}'" }, diff --git a/packages/app-utils/CHANGELOG.md b/packages/app-utils/CHANGELOG.md index 13a4faeb23204..0d2f520f4874e 100644 --- a/packages/app-utils/CHANGELOG.md +++ b/packages/app-utils/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/app-utils +## 0.0.17 + +### Patch Changes + +- 3bdf33b: Fix missing files in published package + ## 0.0.16 ### Patch Changes diff --git a/packages/app-utils/package.json b/packages/app-utils/package.json index 565d2f13ed4d1..9d5e63124bf38 100644 --- a/packages/app-utils/package.json +++ b/packages/app-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/app-utils", - "version": "0.0.16", + "version": "0.0.17", "scripts": { "clean": "node rimraf.js common files http renderer", "dev": "npm run clean && rollup -cw", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 57be4ed677ba4..9e4a39e58028d 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,12 @@ # @sveltejs/kit +## 0.0.25 + +### Patch Changes + +- Updated dependencies [3bdf33b] + - @sveltejs/app-utils@0.0.17 + ## 0.0.24 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 8609a44a906d2..8222f1bd0e137 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "0.0.24", + "version": "0.0.25", "dependencies": { "@sveltejs/app-utils": "workspace:*", "cheap-watch": "^1.0.2", From 3fe691bdab6fe622fb5836320f7147da094eaddc Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 2 Nov 2020 10:11:51 -0800 Subject: [PATCH 05/14] Fix lint errors in adapter-vercel --- packages/adapter-vercel/index.js | 2 +- packages/adapter-vercel/src/render.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index deb5707936230..5766d6e2bfe91 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -38,7 +38,7 @@ module.exports = async function builder({ dir, manifest, log }) { // TODO: Merge this, rather than write it log.minor('Rewriting vercel configuration...'); writeFileSync( - `vercel.json`, + 'vercel.json', JSON.stringify({ public: true, build: { diff --git a/packages/adapter-vercel/src/render.js b/packages/adapter-vercel/src/render.js index 2420ccd99e796..bca7de5ba0911 100644 --- a/packages/adapter-vercel/src/render.js +++ b/packages/adapter-vercel/src/render.js @@ -13,9 +13,9 @@ exports.handler = async function(event) { path, httpMethod, headers, - queryStringParameters, - body, // TODO pass this to renderer - isBase64Encoded // TODO is this useful? + queryStringParameters + // body, // TODO pass this to renderer + // isBase64Encoded // TODO is this useful? } = event; const query = new URLSearchParams(); From 64e3663d46c040f3a67c92e7b1630e2118434137 Mon Sep 17 00:00:00 2001 From: Antony Jones Date: Mon, 2 Nov 2020 23:09:50 +0000 Subject: [PATCH 06/14] Fix netlify config readme url --- packages/adapter-netlify/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 4dbff0172b2f3..7dbbcb143385c 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -20,7 +20,7 @@ module.exports = async function builder({ throw err; } } else { - throw new Error('Missing a netlify.toml file. Consult https://github.com/sveltejs/adapter-netlify#configuration'); + throw new Error('Missing a netlify.toml file. Consult https://github.com/sveltejs/kit/tree/master/packages/adapter-netlify#configuration'); } if (!netlify_config.build || !netlify_config.build.publish || !netlify_config.build.functions) { From 92c2e53d0d3ca253f84a8ba1b907193fc58a1da6 Mon Sep 17 00:00:00 2001 From: Andreas Ehrencrona Date: Fri, 30 Oct 2020 14:36:46 +0200 Subject: [PATCH 07/14] Made error page work --- .../app-utils/src/renderer/render/page.ts | 66 +++++-------------- 1 file changed, 18 insertions(+), 48 deletions(-) diff --git a/packages/app-utils/src/renderer/render/page.ts b/packages/app-utils/src/renderer/render/page.ts index c806e6f980071..8cbbc88816482 100644 --- a/packages/app-utils/src/renderer/render/page.ts +++ b/packages/app-utils/src/renderer/render/page.ts @@ -19,7 +19,9 @@ type FetchOpts = { export default async function render_page( request: IncomingRequest, context: any, - options: RenderOptions + options: RenderOptions, + status: number = 200, + error?: Error ): Promise<{ status: number, body: string, @@ -192,14 +194,15 @@ export default async function render_page( }); const props: Record = { - status: 200, - error: null, + status, + error, stores: { page: readable({ host: request.host, path: request.path, query: request.query, - params + params, + error }, noop), preloading: readable(null, noop), session: writable(session) @@ -266,8 +269,8 @@ export default async function render_page( `.replace(/^\t\t\t/gm, ''); - - const body = `${rendered.html} - `.replace(/^\t\t\t/gm, ''); - - const html = options.template - .replace('%svelte.head%', head) - .replace('%svelte.body%', body); - - return { - status, - headers: { - 'content-type': 'text/html' - }, - body: html, - dependencies: {} - }; - } catch (error) { + if (!error) { + const status = thrown.status || 500; + return render_page(request, context, options, status, thrown); + } + else { // oh lawd now you've done it return { status: 500, headers: {}, - body: error.stack, // TODO probably not in prod? + body: thrown.stack, // TODO probably not in prod? dependencies: {} }; } @@ -345,7 +315,7 @@ function try_serialize(data: any, fail?: (err: Error) => void) { } // Ensure we return something truthy so the client will not re-render the page over the error -function serialize_error(error: Error) { +function serialize_error(error?: Error) { if (!error) return null; let serialized = try_serialize(error); if (!serialized) { From 580a6c5c9f7961925ebb666113dbdedc71f5dd9a Mon Sep 17 00:00:00 2001 From: Andreas Ehrencrona Date: Tue, 3 Nov 2020 10:29:52 +0200 Subject: [PATCH 08/14] default error to null (not undefined) to be consistent on client and server --- packages/app-utils/src/renderer/render/page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app-utils/src/renderer/render/page.ts b/packages/app-utils/src/renderer/render/page.ts index 8cbbc88816482..5cb68c478ecd3 100644 --- a/packages/app-utils/src/renderer/render/page.ts +++ b/packages/app-utils/src/renderer/render/page.ts @@ -21,7 +21,7 @@ export default async function render_page( context: any, options: RenderOptions, status: number = 200, - error?: Error + error: Error | null = null ): Promise<{ status: number, body: string, From e3202c1c54d1542aea069e0ecb7dbda283999404 Mon Sep 17 00:00:00 2001 From: Andreas Ehrencrona Date: Thu, 5 Nov 2020 10:06:31 +0200 Subject: [PATCH 09/14] else and braces --- packages/app-utils/src/renderer/render/page.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/app-utils/src/renderer/render/page.ts b/packages/app-utils/src/renderer/render/page.ts index 5cb68c478ecd3..029b213842006 100644 --- a/packages/app-utils/src/renderer/render/page.ts +++ b/packages/app-utils/src/renderer/render/page.ts @@ -292,8 +292,7 @@ export default async function render_page( if (!error) { const status = thrown.status || 500; return render_page(request, context, options, status, thrown); - } - else { + } else { // oh lawd now you've done it return { status: 500, From 964a8d2a55917779993f4f6abe6c63b31bb5010d Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 5 Nov 2020 09:15:56 -0500 Subject: [PATCH 10/14] bump create-svelte version --- packages/create-svelte/package.json | 2 +- pnpm-lock.yaml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index dc7bfe40bdc44..440da14c0ea09 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -1,6 +1,6 @@ { "name": "create-svelte", - "version": "2.0.0-alpha.16", + "version": "2.0.0-alpha.17", "bin": "./bin", "devDependencies": { "@sveltejs/app-utils": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 043dc2cd8ee32..92d62bf6db524 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -223,7 +223,7 @@ importers: '@snowpack/plugin-svelte': 3.0.0 specifiers: '@snowpack/plugin-svelte': ^3.0.0 -lockfileVersion: 5.2 +lockfileVersion: 5.1 packages: /@architect/parser/2.3.0: dev: false @@ -4155,5 +4155,6 @@ packages: eslint-plugin-svelte3: '>= 2' typescript: '>= 3' resolution: + registry: 'https://registry.npmjs.org/' tarball: 'https://codeload.github.com/sveltejs/eslint-config/tar.gz/787b269a808a2863c8c44bfc48349da6253d06d3' version: 5.5.0 From 9fce326c7b605623a9bdaaf348476e819eaae276 Mon Sep 17 00:00:00 2001 From: Andreas Ehrencrona Date: Fri, 6 Nov 2020 19:02:15 +0200 Subject: [PATCH 11/14] types to interfaces --- packages/app-utils/src/types.d.ts | 40 +++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/app-utils/src/types.d.ts b/packages/app-utils/src/types.d.ts index 27b86b586e2e5..9c8d92457b56c 100644 --- a/packages/app-utils/src/types.d.ts +++ b/packages/app-utils/src/types.d.ts @@ -4,30 +4,30 @@ export type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'OPTIONS'; export type Headers = Record; -export type IncomingRequest = { +export interface IncomingRequest { host: string | null; // TODO is this actually necessary? method: Method; headers: Headers; body: any; // TODO path: string; query: URLSearchParams; -}; +} -export type EndpointResponse = { +export interface EndpointResponse { status: number; headers: Headers; body: any; // TODO what types can body be? -}; +} -export type PageResponse = EndpointResponse & { +export interface PageResponse extends EndpointResponse { dependencies: Record; -}; +} -export type SetupModule = { +export interface SetupModule { prepare?: (headers: Headers) => Promise<{ context: any, headers: Headers }>; getSession?: (context: any) => Promise; setSession?: (context: any, session: any) => Promise; -}; +} export interface SSRComponentModule { default: SSRComponent; @@ -41,7 +41,7 @@ export interface SSRComponent { } } -export type RenderOptions = { +export interface RenderOptions { only_prerender: boolean; // TODO this shouldn't really be part of the public API static_dir: string; template: string; @@ -51,44 +51,44 @@ export type RenderOptions = { setup: SetupModule; load: (route: PageComponentManifest | EndpointManifest) => Promise; // TODO dev: boolean; // TODO this is awkward -}; +} -export type PageComponentManifest = { +export interface PageComponentManifest { default?: boolean; type?: string; url: string; name: string; file: string; -}; +} -export type PageManifest = { +export interface PageManifest { pattern: RegExp; path: string; parts: Array<{ component: PageComponentManifest; params: string[]; }>; -}; +} -export type EndpointManifest = { +export interface EndpointManifest { name: string; pattern: RegExp; file: string; url: string; params: string[]; -}; +} -export type RouteManifest = { +export interface RouteManifest { error: PageComponentManifest; layout: PageComponentManifest; components: PageComponentManifest[]; pages: PageManifest[]; endpoints: EndpointManifest[]; -}; +} -export type ClientManifest = { +export interface ClientManifest { entry: string; deps: Record -}; +} export type Loader = (item: PageComponentManifest | EndpointManifest) => Promise; // TODO types for modules From 343ffe431e0cdfdc66a609684b31a9d098f5443e Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 6 Nov 2020 13:43:34 -0800 Subject: [PATCH 12/14] Prefer interfaces over types --- packages/kit/src/api/dev/types.ts | 20 +++++----- packages/kit/src/interfaces.ts | 40 ++++++++++---------- packages/kit/src/runtime/navigation/types.ts | 4 +- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/kit/src/api/dev/types.ts b/packages/kit/src/api/dev/types.ts index a5e6e244e78aa..c9a1da0cad2b2 100644 --- a/packages/kit/src/api/dev/types.ts +++ b/packages/kit/src/api/dev/types.ts @@ -4,28 +4,28 @@ export type Query = Record; export type Params = Record; -export type Request = { +export interface Request { host: string; path: string; query: Query; params: Params; -}; +} -export type Response = { +export interface Response { status?: number; text?: string; headers?: Record; body: any -}; +} -export type ServerRoute = { +export interface ServerRoute { get?: (request?: Request, session?: any) => Response | Promise; post?: (request?: Request, session?: any) => Response | Promise; put?: (request?: Request, session?: any) => Response | Promise; del?: (request?: Request, session?: any) => Response | Promise; -}; +} -export type PageComponent = { +export interface PageComponent { default: { render: (props: Record) => { html: string; @@ -37,8 +37,8 @@ export type PageComponent = { } }; preload?: (page?: Request, session?: any) => Record; -}; +} -export type DevConfig = { +export interface DevConfig { port: number; -}; \ No newline at end of file +} diff --git a/packages/kit/src/interfaces.ts b/packages/kit/src/interfaces.ts index f7ab26626e150..1fa7a3e97f960 100644 --- a/packages/kit/src/interfaces.ts +++ b/packages/kit/src/interfaces.ts @@ -1,10 +1,10 @@ import { PageComponentManifest, PageManifest, EndpointManifest } from '@sveltejs/app-utils'; -export type SvelteAppConfig = { +export interface SvelteAppConfig { adapter: string; } -export type Route = { +export interface Route { id: string; handlers: Array<{ type: 'page' | 'route'; @@ -17,36 +17,36 @@ export type Route = { params: string[]; }; -export type Template = { +export interface Template { render: (data: Record) => string; stream: (req, res, data: Record>) => void; -}; +} -export type WritableStore = { +export interface WritableStore { set: (value: T) => void; update: (fn: (value: T) => T) => void; subscribe: (fn: (T: any) => void) => () => void; -}; +} -export type Dirs = { +export interface Dirs { dest: string; src: string; routes: string; -}; +} -export type ManifestData = { +export interface ManifestData { error: PageComponentManifest; layout: PageComponentManifest; components: PageComponentManifest[]; pages: PageManifest[]; endpoints: EndpointManifest[]; -}; +} -export type ReadyEvent = { +export interface ReadyEvent { port: number; -}; +} -export type ErrorEvent = { +export interface ErrorEvent { type: string; error: Error & { frame?: unknown; @@ -56,26 +56,26 @@ export type ErrorEvent = { column: number; }; }; -}; +} -export type FatalEvent = { +export interface FatalEvent { message: string; log?: unknown; -}; +} -export type InvalidEvent = { +export interface InvalidEvent { changed: string[]; invalid: { client: boolean; server: boolean; serviceworker: boolean; }; -}; +} -// export type BuildEvent = { +// export interface BuildEvent { // type: string; // errors: Array<{ file: string; message: string; duplicate: boolean }>; // warnings: Array<{ file: string; message: string; duplicate: boolean }>; // duration: number; // result: CompileResult; -// }; +// } diff --git a/packages/kit/src/runtime/navigation/types.ts b/packages/kit/src/runtime/navigation/types.ts index 6249cb395f360..f51160304efc7 100644 --- a/packages/kit/src/runtime/navigation/types.ts +++ b/packages/kit/src/runtime/navigation/types.ts @@ -12,7 +12,7 @@ export type Branch = Array<{ part?: number; }>; -export type InitialData = { +export interface InitialData { session: any; preloaded?: object[]; status: number; @@ -46,4 +46,4 @@ export interface Page { export interface PageContext extends Page { error?: Error -}; +} From 4e6e555199d1ca518aa33af286b3ce0635befe42 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Sun, 8 Nov 2020 08:53:39 +0100 Subject: [PATCH 13/14] Add CSS preprocessor prompt to create-svelte (#114) Options: - CSS (changes nothing, default) - Less - SCSS --- packages/create-svelte/cli/index.ts | 37 ++++++++++------ .../cli/modifications/add_css.ts | 42 +++++++++++++++++++ 2 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 packages/create-svelte/cli/modifications/add_css.ts diff --git a/packages/create-svelte/cli/index.ts b/packages/create-svelte/cli/index.ts index 7e44d001ac0e0..3eae8d7f230c3 100644 --- a/packages/create-svelte/cli/index.ts +++ b/packages/create-svelte/cli/index.ts @@ -6,6 +6,7 @@ import path from 'path'; import prompts from 'prompts/lib/index'; import glob from 'tiny-glob/sync'; import gitignore_contents from '../template/.gitignore'; +import add_css from './modifications/add_css'; import add_typescript from './modifications/add_typescript'; import versions from './versions'; @@ -84,19 +85,7 @@ async function main(): Promise { console.log(bold(green(`✔ Copied project files`))); - // modifications - const modifications = [['Use TypeScript in components?', false, add_typescript]] as const; - - for (const [message, initial, fn] of modifications) { - const response = await prompts({ - type: 'confirm', - name: 'value', - message, - initial - }); - - await fn(target, response.value); - } + await prompt_modifications(target); console.log(`\nNext steps:`); let i = 1; @@ -113,4 +102,26 @@ async function main(): Promise { console.log('\nStuck? Visit us at https://svelte.dev/chat\n'); } +async function prompt_modifications(target: string) { + const ts_response = await prompts({ + type: 'confirm', + name: 'value', + message: 'Use TypeScript in components?', + initial: false + }); + await add_typescript(target, ts_response.value); + + const css_response = await prompts({ + type: 'select', + name: 'value', + message: 'What do you want to use for writing Styles in Svelte components?', + choices: [ + { title: 'CSS', value: 'css' }, + { title: 'Less', value: 'less' }, + { title: 'SCSS', value: 'scss' } + ] + }); + await add_css(target, css_response.value); +} + main(); diff --git a/packages/create-svelte/cli/modifications/add_css.ts b/packages/create-svelte/cli/modifications/add_css.ts new file mode 100644 index 0000000000000..9a6dd6f754ff5 --- /dev/null +++ b/packages/create-svelte/cli/modifications/add_css.ts @@ -0,0 +1,42 @@ +import { bold, green } from 'kleur/colors'; +import { add_svelte_prepocess_to_config, update_component, update_package_json } from './utils'; + +export default async function add_css(cwd: string, which: 'css' | 'less' | 'scss'): Promise { + if (which === 'css') { + console.log(`You can add support for CSS preprocessors like SCSS/Less/PostCSS later.`); + } else if (which === 'less') { + update_package_json(cwd, { + less: '^3.0.0', + 'svelte-preprocess': '^4.0.0' + }); + update_component(cwd, 'src/components/Counter.svelte', [['