From 0a1474e6b430e9ae4535e66f00282144a02a53c9 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 4 Mar 2022 13:19:40 -0500 Subject: [PATCH 1/4] typecheck adapters --- packages/adapter-auto/package.json | 4 ++ packages/adapter-auto/tsconfig.json | 13 ++++++ .../{files/entry.d.ts => ambient.d.ts} | 0 packages/adapter-cloudflare-workers/index.js | 4 +- .../adapter-cloudflare-workers/package.json | 3 +- .../adapter-cloudflare-workers/tsconfig.json | 9 ++-- .../{files/worker.d.ts => ambient.d.ts} | 0 packages/adapter-cloudflare/index.js | 2 +- packages/adapter-cloudflare/package.json | 3 +- packages/adapter-cloudflare/tsconfig.json | 8 ++-- .../{src/handler.d.ts => ambient.d.ts} | 0 packages/adapter-netlify/index.js | 4 +- packages/adapter-netlify/package.json | 2 + packages/adapter-netlify/rollup.config.js | 41 ++++++++++--------- packages/adapter-netlify/tsconfig.json | 9 ++-- packages/adapter-node/{src => }/ambient.d.ts | 0 packages/adapter-node/index.d.ts | 6 +++ packages/adapter-node/index.js | 2 +- packages/adapter-node/package.json | 2 + packages/adapter-node/src/handler.d.ts | 9 ++++ packages/adapter-node/tsconfig.json | 11 +++-- packages/adapter-static/package.json | 1 + packages/adapter-static/tsconfig.json | 8 ++-- .../adapter-vercel/{files => }/ambient.d.ts | 0 packages/adapter-vercel/index.js | 2 +- packages/adapter-vercel/package.json | 6 ++- packages/adapter-vercel/tsconfig.json | 9 ++-- packages/kit/types/index.d.ts | 23 +++++++++++ packages/kit/types/internal.d.ts | 7 ++-- packages/kit/types/private.d.ts | 21 ---------- pnpm-lock.yaml | 5 +++ 31 files changed, 139 insertions(+), 75 deletions(-) create mode 100644 packages/adapter-auto/tsconfig.json rename packages/adapter-cloudflare-workers/{files/entry.d.ts => ambient.d.ts} (100%) rename packages/adapter-cloudflare/{files/worker.d.ts => ambient.d.ts} (100%) rename packages/adapter-netlify/{src/handler.d.ts => ambient.d.ts} (100%) rename packages/adapter-node/{src => }/ambient.d.ts (100%) create mode 100644 packages/adapter-node/src/handler.d.ts rename packages/adapter-vercel/{files => }/ambient.d.ts (100%) diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index 6f217124b4b0..c0f78bb205ec 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -26,11 +26,15 @@ "scripts": { "lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format", "format": "npm run check-format -- --write", + "check": "tsc", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore" }, "dependencies": { "@sveltejs/adapter-cloudflare": "workspace:*", "@sveltejs/adapter-netlify": "workspace:*", "@sveltejs/adapter-vercel": "workspace:*" + }, + "devDependencies": { + "typescript": "^4.6.2" } } diff --git a/packages/adapter-auto/tsconfig.json b/packages/adapter-auto/tsconfig.json new file mode 100644 index 000000000000..9e4540589a76 --- /dev/null +++ b/packages/adapter-auto/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "noEmit": true, + "noImplicitAny": true, + "baseUrl": ".", + "paths": { + "@sveltejs/kit": ["../kit/types/index"] + } + }, + "include": ["**/*.js"] +} diff --git a/packages/adapter-cloudflare-workers/files/entry.d.ts b/packages/adapter-cloudflare-workers/ambient.d.ts similarity index 100% rename from packages/adapter-cloudflare-workers/files/entry.d.ts rename to packages/adapter-cloudflare-workers/ambient.d.ts diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index c4b6aa4c69ba..996219fa909c 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -19,7 +19,7 @@ export default function () { // @ts-ignore const entrypoint = site['entry-point'] || 'workers-site'; - const files = fileURLToPath(new URL('./files', import.meta.url)); + const files = fileURLToPath(new URL('./files', import.meta.url).href); const tmp = builder.getBuildDirectory('cloudflare-workers-tmp'); builder.rimraf(bucket); @@ -67,7 +67,7 @@ export default function () { }; } -/** @param {import('@sveltejs/kit').Builder} builder */ +/** @param {any} builder */ function validate_config(builder) { if (existsSync('wrangler.toml')) { let wrangler_config; diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index f77dbe047f8f..3d5813915f9a 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -24,6 +24,7 @@ "scripts": { "lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format", "format": "npm run check-format -- --write", + "check": "tsc", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore" }, "dependencies": { @@ -32,6 +33,6 @@ }, "devDependencies": { "@cloudflare/kv-asset-handler": "^0.2.0", - "@sveltejs/kit": "workspace:*" + "typescript": "^4.6.2" } } diff --git a/packages/adapter-cloudflare-workers/tsconfig.json b/packages/adapter-cloudflare-workers/tsconfig.json index d856a1dae902..af2a0c525acf 100644 --- a/packages/adapter-cloudflare-workers/tsconfig.json +++ b/packages/adapter-cloudflare-workers/tsconfig.json @@ -4,10 +4,13 @@ "checkJs": true, "noEmit": true, "noImplicitAny": true, - "target": "es2020", "module": "es2020", "moduleResolution": "node", - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "paths": { + "@sveltejs/kit": ["../kit/types/index"] + } }, - "include": ["./index.js", "files"] + "include": ["**/*.js", "ambient.d.ts"] } diff --git a/packages/adapter-cloudflare/files/worker.d.ts b/packages/adapter-cloudflare/ambient.d.ts similarity index 100% rename from packages/adapter-cloudflare/files/worker.d.ts rename to packages/adapter-cloudflare/ambient.d.ts diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index ea3005e08da5..d79e65807257 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -8,7 +8,7 @@ export default function (options = {}) { return { name: '@sveltejs/adapter-cloudflare', async adapt(builder) { - const files = fileURLToPath(new URL('./files', import.meta.url)); + const files = fileURLToPath(new URL('./files', import.meta.url).href); const dest = builder.getBuildDirectory('cloudflare'); const tmp = builder.getBuildDirectory('cloudflare-tmp'); diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index c13ec7527c92..6da03dc96f41 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -25,13 +25,14 @@ "scripts": { "lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format", "format": "npm run check-format -- --write", + "check": "tsc", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore" }, "dependencies": { "esbuild": "^0.14.21" }, "devDependencies": { - "@sveltejs/kit": "workspace:*" + "typescript": "^4.6.2" }, "publishConfig": { "access": "public" diff --git a/packages/adapter-cloudflare/tsconfig.json b/packages/adapter-cloudflare/tsconfig.json index f9bf8e7cb2be..87628b965a0a 100644 --- a/packages/adapter-cloudflare/tsconfig.json +++ b/packages/adapter-cloudflare/tsconfig.json @@ -4,10 +4,12 @@ "checkJs": true, "noEmit": true, "noImplicitAny": true, - "target": "es2020", "module": "es2020", "moduleResolution": "node", - "allowSyntheticDefaultImports": true + "baseUrl": ".", + "paths": { + "@sveltejs/kit": ["../kit/types/index"] + } }, - "include": ["./index.js", "./files"] + "include": ["**/*.js", "ambient.d.ts"] } diff --git a/packages/adapter-netlify/src/handler.d.ts b/packages/adapter-netlify/ambient.d.ts similarity index 100% rename from packages/adapter-netlify/src/handler.d.ts rename to packages/adapter-netlify/ambient.d.ts diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 330071470d6b..4cbca7229059 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -12,7 +12,7 @@ import toml from '@iarna/toml'; * } & toml.JsonMap} NetlifyConfig */ -const files = fileURLToPath(new URL('./files', import.meta.url)); +const files = fileURLToPath(new URL('./files', import.meta.url).href); /** @type {import('.')} */ export default function ({ split = false } = {}) { @@ -153,7 +153,7 @@ function get_netlify_config() { /** * @param {NetlifyConfig} netlify_config - * @param {import('@sveltejs/kit').Builder} builder + * @param {any} builder **/ function get_publish_directory(netlify_config, builder) { if (netlify_config) { diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index b0ef4d65bc89..36c6685e13b5 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -25,6 +25,7 @@ "dev": "rimraf files && rollup -cw", "build": "rimraf files && rollup -c", "test": "uvu src \"(spec\\.js|test[\\\\/]index\\.js)\"", + "check": "tsc", "lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format", "format": "npm run check-format -- --write", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", @@ -43,6 +44,7 @@ "@sveltejs/kit": "workspace:*", "rimraf": "^3.0.2", "rollup": "^2.58.0", + "typescript": "^4.6.2", "uvu": "^0.5.2" } } diff --git a/packages/adapter-netlify/rollup.config.js b/packages/adapter-netlify/rollup.config.js index 7564de03ee9c..ffbdb912e0e9 100644 --- a/packages/adapter-netlify/rollup.config.js +++ b/packages/adapter-netlify/rollup.config.js @@ -2,24 +2,25 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; -export default [ - { - input: { - handler: 'src/handler.js', - shims: 'src/shims.js' +/** @type {import('rollup').RollupOptions} */ +const config = { + input: { + handler: 'src/handler.js', + shims: 'src/shims.js' + }, + output: [ + { + dir: 'files/cjs', + format: 'cjs' }, - output: [ - { - dir: 'files/cjs', - format: 'cjs' - }, - { - dir: 'files/esm', - format: 'esm' - } - ], - plugins: [nodeResolve(), commonjs(), json()], - external: (id) => id === '0APP' || id.startsWith('node:'), - preserveEntrySignatures: true - } -]; + { + dir: 'files/esm', + format: 'esm' + } + ], + plugins: [nodeResolve(), commonjs(), json()], + external: (id) => id === '0SERVER' || id.startsWith('node:'), + preserveEntrySignatures: 'exports-only' +}; + +export default config; diff --git a/packages/adapter-netlify/tsconfig.json b/packages/adapter-netlify/tsconfig.json index 3b817fb6b17a..87bea241ee5c 100644 --- a/packages/adapter-netlify/tsconfig.json +++ b/packages/adapter-netlify/tsconfig.json @@ -4,10 +4,13 @@ "checkJs": true, "noEmit": true, "noImplicitAny": true, - "target": "es2020", "module": "es2020", "moduleResolution": "node", - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "paths": { + "@sveltejs/kit": ["../kit/types/index"] + } }, - "include": ["./index.js", "src"] + "include": ["*.js", "src/**/*.js", "ambient.d.ts"] } diff --git a/packages/adapter-node/src/ambient.d.ts b/packages/adapter-node/ambient.d.ts similarity index 100% rename from packages/adapter-node/src/ambient.d.ts rename to packages/adapter-node/ambient.d.ts diff --git a/packages/adapter-node/index.d.ts b/packages/adapter-node/index.d.ts index e7169b54b799..38ca13c5c8f0 100644 --- a/packages/adapter-node/index.d.ts +++ b/packages/adapter-node/index.d.ts @@ -1,5 +1,11 @@ import { Adapter } from '@sveltejs/kit'; +declare global { + const HOST_ENV: string; + const PATH_ENV: string; + const PORT_ENV: string; +} + interface AdapterOptions { out?: string; precompress?: boolean; diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index fc302b17a978..01e3d2b458eb 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -7,7 +7,7 @@ import zlib from 'zlib'; const pipe = promisify(pipeline); -const files = fileURLToPath(new URL('./files', import.meta.url)); +const files = fileURLToPath(new URL('./files', import.meta.url).href); /** @type {import('.')} */ export default function ({ diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 3b5dea46e8e6..5123ccc811a3 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -25,6 +25,7 @@ "dev": "rimraf files && rollup -cw", "build": "rimraf files && rollup -c", "test": "echo \"tests temporarily disabled\" # c8 uvu tests", + "check": "tsc", "lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format", "format": "npm run check-format -- --write", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", @@ -44,6 +45,7 @@ "rimraf": "^3.0.2", "rollup": "^2.60.2", "sirv": "^2.0.0", + "typescript": "^4.6.2", "uvu": "^0.5.2" } } diff --git a/packages/adapter-node/src/handler.d.ts b/packages/adapter-node/src/handler.d.ts new file mode 100644 index 000000000000..dc1f50b46033 --- /dev/null +++ b/packages/adapter-node/src/handler.d.ts @@ -0,0 +1,9 @@ +import type { Handle } from '@sveltejs/kit'; + +declare global { + const ORIGIN: string; + const HOST_HEADER: string; + const PROTOCOL_HEADER: string; +} + +export const handler: Handle; diff --git a/packages/adapter-node/tsconfig.json b/packages/adapter-node/tsconfig.json index 517604c951ec..89ca95cf92bd 100644 --- a/packages/adapter-node/tsconfig.json +++ b/packages/adapter-node/tsconfig.json @@ -4,10 +4,13 @@ "checkJs": true, "noEmit": true, "noImplicitAny": true, - "target": "es2020", - "module": "es2020", + "allowSyntheticDefaultImports": true, "moduleResolution": "node", - "allowSyntheticDefaultImports": true + "module": "es2020", + "baseUrl": ".", + "paths": { + "@sveltejs/kit": ["../kit/types/index"] + } }, - "include": ["index.js", "src"] + "include": ["index.js", "src/**/*.js", "ambient.d.ts"] } diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 09813bab2c59..b08bbac88f81 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -34,6 +34,7 @@ "port-authority": "^1.1.2", "sirv": "^2.0.0", "svelte": "^3.44.2", + "typescript": "^4.6.2", "uvu": "^0.5.2" } } diff --git a/packages/adapter-static/tsconfig.json b/packages/adapter-static/tsconfig.json index 113d5b4c70e3..d564497a3d40 100644 --- a/packages/adapter-static/tsconfig.json +++ b/packages/adapter-static/tsconfig.json @@ -4,11 +4,13 @@ "checkJs": true, "noEmit": true, "noImplicitAny": true, - "target": "es2020", "module": "es2020", "moduleResolution": "node", "allowSyntheticDefaultImports": true, - "skipLibCheck": true + "baseUrl": ".", + "paths": { + "@sveltejs/kit": ["../kit/types/index"] + } }, - "include": ["index.js", "test/*.js"] + "include": ["index.js"] } diff --git a/packages/adapter-vercel/files/ambient.d.ts b/packages/adapter-vercel/ambient.d.ts similarity index 100% rename from packages/adapter-vercel/files/ambient.d.ts rename to packages/adapter-vercel/ambient.d.ts diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 67c29e4a60b1..7ed513d8eb9e 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -93,7 +93,7 @@ export default function ({ external = [] } = {}) { builder.rimraf(dir); builder.rimraf(tmp); - const files = fileURLToPath(new URL('./files', import.meta.url)); + const files = fileURLToPath(new URL('./files', import.meta.url).href); const dirs = { static: `${dir}/static`, diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index dda7a4d91fe7..625e2c5262dc 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -24,12 +24,14 @@ "scripts": { "lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format", "format": "npm run check-format -- --write", - "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore" + "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", + "check": "tsc" }, "dependencies": { "esbuild": "^0.14.21" }, "devDependencies": { - "@sveltejs/kit": "workspace:*" + "@sveltejs/kit": "workspace:*", + "typescript": "^4.6.2" } } diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index d856a1dae902..af2a0c525acf 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -4,10 +4,13 @@ "checkJs": true, "noEmit": true, "noImplicitAny": true, - "target": "es2020", "module": "es2020", "moduleResolution": "node", - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "paths": { + "@sveltejs/kit": ["../kit/types/index"] + } }, - "include": ["./index.js", "files"] + "include": ["**/*.js", "ambient.d.ts"] } diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index b8e79c7f32c4..40fb058f00a3 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -16,10 +16,12 @@ import { MaybePromise, PrerenderOnErrorValue, RequestEvent, + RequestOptions, ResolveOptions, ResponseHeaders, TrailingSlash } from './private'; +import { SSRNodeLoader, SSRRoute } from './internal'; export interface Adapter { name: string; @@ -164,3 +166,24 @@ export type RequestHandlerOutput = MaybePromise< Fallthrough > >; + +export class Server { + constructor(manifest: SSRManifest); + respond(request: Request, options?: RequestOptions): Promise; +} + +export interface SSRManifest { + appDir: string; + assets: Set; + /** private fields */ + _: { + mime: Record; + entry: { + file: string; + js: string[]; + css: string[]; + }; + nodes: SSRNodeLoader[]; + routes: SSRRoute[]; + }; +} diff --git a/packages/kit/types/internal.d.ts b/packages/kit/types/internal.d.ts index 26cd29aaed0a..85f5bc04c2f1 100644 --- a/packages/kit/types/internal.d.ts +++ b/packages/kit/types/internal.d.ts @@ -6,7 +6,9 @@ import { Handle, HandleError, Load, - RequestHandler + RequestHandler, + Server, + SSRManifest } from './index'; import { Either, @@ -14,14 +16,11 @@ import { HttpMethod, JSONObject, MaybePromise, - Prerendered, RequestEvent, RequestOptions, ResolveOptions, ResponseHeaders, RouteSegment, - Server, - SSRManifest, TrailingSlash } from './private'; diff --git a/packages/kit/types/private.d.ts b/packages/kit/types/private.d.ts index b4beab62d945..ffa93c7b79b3 100644 --- a/packages/kit/types/private.d.ts +++ b/packages/kit/types/private.d.ts @@ -329,27 +329,6 @@ export interface RouteSegment { rest: boolean; } -export class Server { - constructor(manifest: SSRManifest); - respond(request: Request, options?: RequestOptions): Promise; -} - -export interface SSRManifest { - appDir: string; - assets: Set; - /** private fields */ - _: { - mime: Record; - entry: { - file: string; - js: string[]; - css: string[]; - }; - nodes: SSRNodeLoader[]; - routes: SSRRoute[]; - }; -} - export interface ToJSON { toJSON(...args: any[]): Exclude; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d87d7db74f50..278a70b225d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,10 +49,15 @@ importers: '@sveltejs/adapter-cloudflare': workspace:* '@sveltejs/adapter-netlify': workspace:* '@sveltejs/adapter-vercel': workspace:* + '@sveltejs/kit': workspace:* + typescript: ^4.6.2 dependencies: '@sveltejs/adapter-cloudflare': link:../adapter-cloudflare '@sveltejs/adapter-netlify': link:../adapter-netlify '@sveltejs/adapter-vercel': link:../adapter-vercel + devDependencies: + '@sveltejs/kit': link:../kit + typescript: 4.6.2 packages/adapter-begin: specifiers: From 728b0ab33bf26f75f7e2d750176c46df196fb5d4 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 4 Mar 2022 13:20:38 -0500 Subject: [PATCH 2/4] changeset --- .changeset/rich-icons-swim.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rich-icons-swim.md diff --git a/.changeset/rich-icons-swim.md b/.changeset/rich-icons-swim.md new file mode 100644 index 000000000000..ec073b068abf --- /dev/null +++ b/.changeset/rich-icons-swim.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +Expose Server and SSRManifest as public types From 704648dceb289af5d7e04674f6ddceb44d08265a Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 4 Mar 2022 13:22:41 -0500 Subject: [PATCH 3/4] fix lockfile --- pnpm-lock.yaml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 278a70b225d6..c11df355e1e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,14 +49,12 @@ importers: '@sveltejs/adapter-cloudflare': workspace:* '@sveltejs/adapter-netlify': workspace:* '@sveltejs/adapter-vercel': workspace:* - '@sveltejs/kit': workspace:* typescript: ^4.6.2 dependencies: '@sveltejs/adapter-cloudflare': link:../adapter-cloudflare '@sveltejs/adapter-netlify': link:../adapter-netlify '@sveltejs/adapter-vercel': link:../adapter-vercel devDependencies: - '@sveltejs/kit': link:../kit typescript: 4.6.2 packages/adapter-begin: @@ -71,25 +69,25 @@ importers: packages/adapter-cloudflare: specifiers: - '@sveltejs/kit': workspace:* esbuild: ^0.14.21 + typescript: ^4.6.2 dependencies: esbuild: 0.14.21 devDependencies: - '@sveltejs/kit': link:../kit + typescript: 4.6.2 packages/adapter-cloudflare-workers: specifiers: '@cloudflare/kv-asset-handler': ^0.2.0 '@iarna/toml': ^2.2.5 - '@sveltejs/kit': workspace:* esbuild: ^0.14.21 + typescript: ^4.6.2 dependencies: '@iarna/toml': 2.2.5 esbuild: 0.14.21 devDependencies: '@cloudflare/kv-asset-handler': 0.2.0 - '@sveltejs/kit': link:../kit + typescript: 4.6.2 packages/adapter-netlify: specifiers: @@ -103,6 +101,7 @@ importers: rimraf: ^3.0.2 rollup: ^2.58.0 tiny-glob: ^0.2.9 + typescript: ^4.6.2 uvu: ^0.5.2 dependencies: '@iarna/toml': 2.2.5 @@ -116,6 +115,7 @@ importers: '@sveltejs/kit': link:../kit rimraf: 3.0.2 rollup: 2.60.2 + typescript: 4.6.2 uvu: 0.5.2 packages/adapter-node: @@ -131,6 +131,7 @@ importers: rollup: ^2.60.2 sirv: ^2.0.0 tiny-glob: ^0.2.9 + typescript: ^4.6.2 uvu: ^0.5.2 dependencies: tiny-glob: 0.2.9 @@ -145,6 +146,7 @@ importers: rimraf: 3.0.2 rollup: 2.60.2 sirv: 2.0.0 + typescript: 4.6.2 uvu: 0.5.2 packages/adapter-static: @@ -156,6 +158,7 @@ importers: sirv: ^2.0.0 svelte: ^3.44.2 tiny-glob: ^0.2.9 + typescript: ^4.6.2 uvu: ^0.5.2 dependencies: tiny-glob: 0.2.9 @@ -166,16 +169,19 @@ importers: port-authority: 1.1.2 sirv: 2.0.0 svelte: 3.44.2 + typescript: 4.6.2 uvu: 0.5.2 packages/adapter-vercel: specifiers: '@sveltejs/kit': workspace:* esbuild: ^0.14.21 + typescript: ^4.6.2 dependencies: esbuild: 0.14.21 devDependencies: '@sveltejs/kit': link:../kit + typescript: 4.6.2 packages/create-svelte: specifiers: From 47b380ef13b849dfdbdfebf2e56d1c566c058066 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 4 Mar 2022 17:48:17 -0500 Subject: [PATCH 4/4] expose Builder --- packages/adapter-cloudflare-workers/index.js | 2 +- packages/adapter-netlify/index.js | 2 +- packages/kit/types/index.d.ts | 70 +++++++++++++++++++- packages/kit/types/private.d.ts | 65 +----------------- 4 files changed, 71 insertions(+), 68 deletions(-) diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index 996219fa909c..f161a109cb37 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -67,7 +67,7 @@ export default function () { }; } -/** @param {any} builder */ +/** @param {import('@sveltejs/kit').Builder} builder */ function validate_config(builder) { if (existsSync('wrangler.toml')) { let wrangler_config; diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 4cbca7229059..4d6aa3eea4c9 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -153,7 +153,7 @@ function get_netlify_config() { /** * @param {NetlifyConfig} netlify_config - * @param {any} builder + * @param {import('@sveltejs/kit').Builder} builder **/ function get_publish_directory(netlify_config, builder) { if (netlify_config) { diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 40fb058f00a3..0698718e4dbc 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -5,29 +5,95 @@ import './ambient'; import { CompileOptions } from 'svelte/types/compiler/interfaces'; import { + AdapterEntry, Body, - Builder, CspDirectives, Either, ErrorLoadInput, Fallthrough, LoadInput, LoadOutput, + Logger, MaybePromise, + Prerendered, PrerenderOnErrorValue, RequestEvent, RequestOptions, ResolveOptions, ResponseHeaders, + RouteDefinition, TrailingSlash } from './private'; -import { SSRNodeLoader, SSRRoute } from './internal'; +import { SSRNodeLoader, SSRRoute, ValidatedConfig } from './internal'; export interface Adapter { name: string; adapt(builder: Builder): Promise; } +export interface Builder { + log: Logger; + rimraf(dir: string): void; + mkdirp(dir: string): void; + + config: ValidatedConfig; + prerendered: Prerendered; + + /** + * Create entry points that map to individual functions + * @param fn A function that groups a set of routes into an entry point + */ + createEntries(fn: (route: RouteDefinition) => AdapterEntry): void; + + generateManifest: (opts: { relativePath: string; format?: 'esm' | 'cjs' }) => string; + + getBuildDirectory(name: string): string; + getClientDirectory(): string; + getServerDirectory(): string; + getStaticDirectory(): string; + + /** + * @param dest the destination folder to which files should be copied + * @returns an array of paths corresponding to the files that have been created by the copy + */ + writeClient(dest: string): string[]; + /** + * + * @param dest + */ + writePrerendered( + dest: string, + opts?: { + fallback?: string; + } + ): string[]; + /** + * @param dest the destination folder to which files should be copied + * @returns an array of paths corresponding to the files that have been created by the copy + */ + writeServer(dest: string): string[]; + /** + * @param dest the destination folder to which files should be copied + * @returns an array of paths corresponding to the files that have been created by the copy + */ + writeStatic(dest: string): string[]; + /** + * @param from the source file or folder + * @param to the destination file or folder + * @param opts.filter a function to determine whether a file or folder should be copied + * @param opts.replace a map of strings to replace + * @returns an array of paths corresponding to the files that have been created by the copy + */ + copy( + from: string, + to: string, + opts?: { + filter?: (basename: string) => boolean; + replace?: Record; + } + ): string[]; +} + export interface Config { compilerOptions?: CompileOptions; extensions?: string[]; diff --git a/packages/kit/types/private.d.ts b/packages/kit/types/private.d.ts index ffa93c7b79b3..b8c7f9660f14 100644 --- a/packages/kit/types/private.d.ts +++ b/packages/kit/types/private.d.ts @@ -2,7 +2,7 @@ // but which cannot be imported from `@sveltejs/kit`. Care should // be taken to avoid breaking changes when editing this file -import { SSRNodeLoader, SSRRoute, ValidatedConfig } from './internal'; +import { ValidatedConfig } from './internal'; export interface AdapterEntry { /** @@ -30,69 +30,6 @@ export interface AdapterEntry { export type Body = JSONValue | Uint8Array | ReadableStream | import('stream').Readable; -export interface Builder { - log: Logger; - rimraf(dir: string): void; - mkdirp(dir: string): void; - - config: ValidatedConfig; - prerendered: Prerendered; - - /** - * Create entry points that map to individual functions - * @param fn A function that groups a set of routes into an entry point - */ - createEntries(fn: (route: RouteDefinition) => AdapterEntry): void; - - generateManifest: (opts: { relativePath: string; format?: 'esm' | 'cjs' }) => string; - - getBuildDirectory(name: string): string; - getClientDirectory(): string; - getServerDirectory(): string; - getStaticDirectory(): string; - - /** - * @param dest the destination folder to which files should be copied - * @returns an array of paths corresponding to the files that have been created by the copy - */ - writeClient(dest: string): string[]; - /** - * - * @param dest - */ - writePrerendered( - dest: string, - opts?: { - fallback?: string; - } - ): string[]; - /** - * @param dest the destination folder to which files should be copied - * @returns an array of paths corresponding to the files that have been created by the copy - */ - writeServer(dest: string): string[]; - /** - * @param dest the destination folder to which files should be copied - * @returns an array of paths corresponding to the files that have been created by the copy - */ - writeStatic(dest: string): string[]; - /** - * @param from the source file or folder - * @param to the destination file or folder - * @param opts.filter a function to determine whether a file or folder should be copied - * @param opts.replace a map of strings to replace - * @returns an array of paths corresponding to the files that have been created by the copy - */ - copy( - from: string, - to: string, - opts?: { - filter?: (basename: string) => boolean; - replace?: Record; - } - ): string[]; -} - // Based on https://github.com/josh-hemphill/csp-typed-directives/blob/latest/src/csp.types.ts // // MIT License