diff --git a/.changeset/full-flies-turn.md b/.changeset/full-flies-turn.md new file mode 100644 index 000000000000..895b5936cc02 --- /dev/null +++ b/.changeset/full-flies-turn.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: support TypeScript 6.0 diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index 4b864270e5c3..ae2e87f09b59 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -42,7 +42,7 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@types/node": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-auto/tsconfig.json b/packages/adapter-auto/tsconfig.json index c68e02a6b620..e5c3a0be1f2d 100644 --- a/packages/adapter-auto/tsconfig.json +++ b/packages/adapter-auto/tsconfig.json @@ -3,12 +3,10 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "noImplicitAny": true, - "strictNullChecks": true, "target": "es2022", "module": "node16", "moduleResolution": "node16", - "baseUrl": "." + "types": ["node"] }, "include": ["**/*.js"] } diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 4df44ed1c37e..8d04ca549f16 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -52,7 +52,7 @@ "@sveltejs/kit": "workspace:^", "@types/node": "catalog:", "esbuild": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-cloudflare/test/apps/pages/tsconfig.json b/packages/adapter-cloudflare/test/apps/pages/tsconfig.json index 34380ebc986e..c2db702f9bb1 100644 --- a/packages/adapter-cloudflare/test/apps/pages/tsconfig.json +++ b/packages/adapter-cloudflare/test/apps/pages/tsconfig.json @@ -7,7 +7,6 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true, "moduleResolution": "bundler" }, "extends": "./.svelte-kit/tsconfig.json" diff --git a/packages/adapter-cloudflare/test/apps/workers/tsconfig.json b/packages/adapter-cloudflare/test/apps/workers/tsconfig.json index 34380ebc986e..c2db702f9bb1 100644 --- a/packages/adapter-cloudflare/test/apps/workers/tsconfig.json +++ b/packages/adapter-cloudflare/test/apps/workers/tsconfig.json @@ -7,7 +7,6 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true, "moduleResolution": "bundler" }, "extends": "./.svelte-kit/tsconfig.json" diff --git a/packages/adapter-cloudflare/tsconfig.json b/packages/adapter-cloudflare/tsconfig.json index 7421129f0c56..d1fdac44e7b3 100644 --- a/packages/adapter-cloudflare/tsconfig.json +++ b/packages/adapter-cloudflare/tsconfig.json @@ -3,18 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "noImplicitAny": true, - "strictNullChecks": true, "target": "es2022", "module": "node16", "moduleResolution": "node16", - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../kit/types/index"] }, // taken from the Cloudflare Workers TypeScript template https://github.com/cloudflare/workers-sdk/blob/main/packages/create-cloudflare/templates/hello-world/ts/tsconfig.json "lib": ["es2021"], - "types": ["@cloudflare/workers-types"] + "types": ["node", "@cloudflare/workers-types"] }, "include": [ "index.js", diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 2ebcd26febbe..cd8ff0521324 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -312,7 +312,9 @@ function get_netlify_config() { try { return /** @type {NetlifyConfig} */ (toml.parse(readFileSync('netlify.toml', 'utf-8'))); } catch (err) { - err.message = `Error parsing netlify.toml: ${err.message}`; + if (err instanceof Error) { + err.message = `Error parsing netlify.toml: ${err.message}`; + } throw err; } } diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index f67668458d58..0ff4c4aa12d8 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -59,7 +59,7 @@ "@sveltejs/kit": "workspace:^", "@types/node": "catalog:", "rollup": "^4.59.0", - "typescript": "^5.3.3", + "typescript": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-netlify/src/serverless.js b/packages/adapter-netlify/src/serverless.js index c8a6447b6ad9..592eb081b7b9 100644 --- a/packages/adapter-netlify/src/serverless.js +++ b/packages/adapter-netlify/src/serverless.js @@ -1,4 +1,4 @@ -import './shims'; +import './shims.js'; import { Server } from '0SERVER'; import { createReadableStream } from '@sveltejs/kit/node'; import process from 'node:process'; diff --git a/packages/adapter-netlify/test/apps/basic/tsconfig.json b/packages/adapter-netlify/test/apps/basic/tsconfig.json index 34380ebc986e..c2db702f9bb1 100644 --- a/packages/adapter-netlify/test/apps/basic/tsconfig.json +++ b/packages/adapter-netlify/test/apps/basic/tsconfig.json @@ -7,7 +7,6 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true, "moduleResolution": "bundler" }, "extends": "./.svelte-kit/tsconfig.json" diff --git a/packages/adapter-netlify/test/apps/edge/tsconfig.json b/packages/adapter-netlify/test/apps/edge/tsconfig.json index 34380ebc986e..c2db702f9bb1 100644 --- a/packages/adapter-netlify/test/apps/edge/tsconfig.json +++ b/packages/adapter-netlify/test/apps/edge/tsconfig.json @@ -7,7 +7,6 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true, "moduleResolution": "bundler" }, "extends": "./.svelte-kit/tsconfig.json" diff --git a/packages/adapter-netlify/test/apps/split/tsconfig.json b/packages/adapter-netlify/test/apps/split/tsconfig.json index 34380ebc986e..c2db702f9bb1 100644 --- a/packages/adapter-netlify/test/apps/split/tsconfig.json +++ b/packages/adapter-netlify/test/apps/split/tsconfig.json @@ -7,7 +7,6 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true, "moduleResolution": "bundler" }, "extends": "./.svelte-kit/tsconfig.json" diff --git a/packages/adapter-netlify/tsconfig.json b/packages/adapter-netlify/tsconfig.json index 80d2a47380f3..6a110982ab66 100644 --- a/packages/adapter-netlify/tsconfig.json +++ b/packages/adapter-netlify/tsconfig.json @@ -3,16 +3,13 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "noImplicitAny": true, - "strictNullChecks": true, "target": "es2022", "module": "node16", "moduleResolution": "node16", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../kit/types/index"] - } + }, + "types": ["node"] }, "include": ["*.js", "src/**/*.js", "internal.d.ts", "test/utils.js"] } diff --git a/packages/adapter-node/internal.d.ts b/packages/adapter-node/internal.d.ts index 8387855f7893..147c5af6b49f 100644 --- a/packages/adapter-node/internal.d.ts +++ b/packages/adapter-node/internal.d.ts @@ -18,3 +18,5 @@ declare module 'MANIFEST' { declare module 'SERVER' { export { Server } from '@sveltejs/kit'; } + +declare module 'SHIMS' {} diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 30b06394117f..55b8e6d91fa7 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -47,7 +47,7 @@ "@types/node": "catalog:", "polka": "catalog:", "sirv": "^3.0.2", - "typescript": "^5.3.3", + "typescript": "catalog:", "vitest": "catalog:" }, "dependencies": { diff --git a/packages/adapter-node/tsconfig.json b/packages/adapter-node/tsconfig.json index 4234750243cc..6bcfb5cb7c2d 100644 --- a/packages/adapter-node/tsconfig.json +++ b/packages/adapter-node/tsconfig.json @@ -3,16 +3,13 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "noImplicitAny": true, - "strictNullChecks": true, - "allowSyntheticDefaultImports": true, "target": "es2022", "module": "node16", "moduleResolution": "node16", - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../kit/types/index"] - } + }, + "types": ["node"] }, "include": [ "index.js", diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 2f179673ceac..488ef1d88c09 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -44,7 +44,7 @@ "@types/node": "catalog:", "sirv": "^3.0.0", "svelte": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-static/tsconfig.json b/packages/adapter-static/tsconfig.json index ad019b486258..7395ffa36b2e 100644 --- a/packages/adapter-static/tsconfig.json +++ b/packages/adapter-static/tsconfig.json @@ -3,16 +3,13 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "noImplicitAny": true, - "strictNullChecks": true, "target": "es2022", "module": "node16", "moduleResolution": "node16", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../kit/types/index"] - } + }, + "types": ["node"] }, "include": ["index.js", "internal.d.ts", "test/utils.js"] } diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 25b6f21eb54a..dc650e8a5492 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@types/node": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-vercel/test/apps/basic/package.json b/packages/adapter-vercel/test/apps/basic/package.json index 974f76c2c2d7..821ffb4d56c1 100644 --- a/packages/adapter-vercel/test/apps/basic/package.json +++ b/packages/adapter-vercel/test/apps/basic/package.json @@ -12,7 +12,7 @@ "@sveltejs/kit": "workspace:*", "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/adapter-vercel/test/apps/basic/tsconfig.json b/packages/adapter-vercel/test/apps/basic/tsconfig.json index feea18bf220e..1de19ffb0ade 100644 --- a/packages/adapter-vercel/test/apps/basic/tsconfig.json +++ b/packages/adapter-vercel/test/apps/basic/tsconfig.json @@ -9,7 +9,6 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true, "moduleResolution": "bundler" } } diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 4432dae4102d..25c169acf112 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -2,18 +2,14 @@ "compilerOptions": { "allowJs": true, "checkJs": true, - "strict": true, "noEmit": true, - "noImplicitAny": true, - "strictNullChecks": true, "target": "es2022", "module": "node16", "moduleResolution": "node16", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../kit/types/index"] - } + }, + "types": ["node"] }, "include": ["*.js", "files/**/*.js", "internal.d.ts", "test/**/*.js"] } diff --git a/packages/amp/package.json b/packages/amp/package.json index 64057390ddd1..71a625e1c479 100644 --- a/packages/amp/package.json +++ b/packages/amp/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "typescript": "^5.3.3" + "typescript": "catalog:" }, "peerDependencies": { "@sveltejs/kit": "^1.0.0 || ^2.0.0" diff --git a/packages/amp/tsconfig.json b/packages/amp/tsconfig.json index 26885cff272f..07bed26bd73a 100644 --- a/packages/amp/tsconfig.json +++ b/packages/amp/tsconfig.json @@ -3,10 +3,8 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "node16", - "moduleResolution": "node16", - "allowSyntheticDefaultImports": true + "moduleResolution": "node16" } } diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index c268f15e034d..84c29225d4c3 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -49,7 +49,7 @@ "@types/node": "catalog:", "rollup": "^4.59.0", "svelte": "catalog:", - "typescript": "^5.6.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/enhanced-img/tsconfig.json b/packages/enhanced-img/tsconfig.json index 0ff94d9e3f38..aa8cebdd02c1 100644 --- a/packages/enhanced-img/tsconfig.json +++ b/packages/enhanced-img/tsconfig.json @@ -3,17 +3,16 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "node16", "moduleResolution": "node16", - "allowSyntheticDefaultImports": true, "paths": { "types": ["./types/index"], "types/*": ["./types/*"] }, "noUnusedLocals": true, - "noUnusedParameters": true + "noUnusedParameters": true, + "types": ["node"] }, "include": ["src/**/*", "types/**/*", "test/**/*"] } diff --git a/packages/kit/package.json b/packages/kit/package.json index 2c78c154d2b1..218dd3364273 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -38,7 +38,7 @@ "@types/connect": "catalog:", "@types/node": "catalog:", "@types/set-cookie-parser": "catalog:", - "dts-buddy": "catalog:", + "dts-buddy": "^0.7.0", "rollup": "^4.59.0", "svelte": "catalog:", "svelte-preprocess": "catalog:", @@ -50,7 +50,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0", "@opentelemetry/api": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": "^5.3.3", + "typescript": "^5.3.3 || ^6.0.0", "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0" }, "peerDependenciesMeta": { diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 9451c8aefac5..d0f6330e1b1f 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -121,7 +121,8 @@ export function get_tsconfig(kit) { moduleResolution: 'bundler', module: 'esnext', noEmit: true, // prevent tsconfig error "overwriting input files" - Vite handles the build and ignores this - target: 'esnext' + target: 'esnext', + types: ['node'] }, include: [...include], exclude @@ -165,6 +166,7 @@ function validate_user_config(cwd, out, config) { if (extends_framework_config) { const { paths, baseUrl } = options; + // TODO: baseUrl will be removed in TypeScript 7.0 if (baseUrl || paths) { console.warn( colors diff --git a/packages/kit/src/core/sync/write_types/test/actions/tsconfig.json b/packages/kit/src/core/sync/write_types/test/actions/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/actions/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/actions/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/app-types/tsconfig.json b/packages/kit/src/core/sync/write_types/test/app-types/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/app-types/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/app-types/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/layout-advanced/tsconfig.json b/packages/kit/src/core/sync/write_types/test/layout-advanced/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/layout-advanced/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/layout-advanced/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/layout/tsconfig.json b/packages/kit/src/core/sync/write_types/test/layout/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/layout/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/layout/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/param-type-inference/tsconfig.json b/packages/kit/src/core/sync/write_types/test/param-type-inference/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/param-type-inference/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/param-type-inference/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/tsconfig.json b/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-server-only/sub/+page.server.js b/packages/kit/src/core/sync/write_types/test/simple-page-server-only/sub/+page.server.js index 58b4c36ac541..572c955d4daa 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-server-only/sub/+page.server.js +++ b/packages/kit/src/core/sync/write_types/test/simple-page-server-only/sub/+page.server.js @@ -12,5 +12,5 @@ const data = /** @type {any} */ ({ foo: 'bar' }); // the any cast prevents TypeScript from narrowing this to foo being defined data.foo; -// @ts-expect-error +// @ts-ignore this doesn't error with TypeScript 6 data.foo.charAt(0); diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-server-only/tsconfig.json b/packages/kit/src/core/sync/write_types/test/simple-page-server-only/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-server-only/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/simple-page-server-only/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/sub/+page.js b/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/sub/+page.js index b1d06b96d262..5b31531c2364 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/sub/+page.js +++ b/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/sub/+page.js @@ -12,5 +12,5 @@ const data = /** @type {any} */ ({ foo: 'bar' }); // the any cast prevents TypeScript from narrowing this to foo being defined data.foo; -// @ts-expect-error +// @ts-ignore this doesn't error with TypeScript 6 data.foo.charAt(0); diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/tsconfig.json b/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/tsconfig.json b/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/slugs/+layout.js b/packages/kit/src/core/sync/write_types/test/slugs/+layout.js index 8eea8cfcc18f..96531291b144 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs/+layout.js +++ b/packages/kit/src/core/sync/write_types/test/slugs/+layout.js @@ -3,12 +3,12 @@ export function load({ params }) { params.optional; params.rest; params.slug; - // @ts-expect-error + // @ts-ignore this doesn't error with TypeScript 6 params.foo; - // @ts-expect-error + // @ts-ignore this doesn't error with TypeScript 6 params.optional.charAt(1); - // @ts-expect-error + // @ts-ignore this doesn't error with TypeScript 6 params.rest.charAt(1); - // @ts-expect-error + // @ts-ignore this doesn't error with TypeScript 6 params.slug.charAt(1); } diff --git a/packages/kit/src/core/sync/write_types/test/slugs/tsconfig.json b/packages/kit/src/core/sync/write_types/test/slugs/tsconfig.json index 8ac11dd62008..6cc924afd564 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs/tsconfig.json +++ b/packages/kit/src/core/sync/write_types/test/slugs/tsconfig.json @@ -3,17 +3,15 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", "paths": { "@sveltejs/kit": ["../../../../../exports/public"], "types": ["../../../../../types/internal"], "$app/types": ["../../../../../types/ambient.d.ts"] - } + }, + "types": ["node"] }, "include": ["./**/*.js", "./**/*.ts", ".svelte-kit/non-ambient.d.ts"], "exclude": ["..svelte-kit/**"] diff --git a/packages/kit/src/core/sync/write_types/test/slugs/x/[[optional]]/+page.js b/packages/kit/src/core/sync/write_types/test/slugs/x/[[optional]]/+page.js index 4085ce7295cb..3f3f9702b49a 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs/x/[[optional]]/+page.js +++ b/packages/kit/src/core/sync/write_types/test/slugs/x/[[optional]]/+page.js @@ -10,7 +10,7 @@ export async function load({ parent, params }) { params.optional; params.optional?.charAt(1); - // @ts-expect-error + // @ts-ignore this doesn't error with TypeScript 6 params.optional.charAt(1); // @ts-expect-error params.slug; diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 83a90ba1e0f6..6d207bcc9ff5 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -3138,7 +3138,8 @@ function reset_focus(url, scroll = true) { const tabindex = root.getAttribute('tabindex'); root.tabIndex = -1; - // @ts-expect-error options.focusVisible is only supported in Firefox + // TODO: remove this when we switch to TypeScript 6 + // @ts-ignore options.focusVisible is only typed in TypeScript 6 // See https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#browser_compatibility root.focus({ preventScroll: true, focusVisible: false }); diff --git a/packages/kit/src/runtime/telemetry/record_span.enabled.spec.js b/packages/kit/src/runtime/telemetry/record_span.enabled.spec.js index b85a70b812d4..75fd31dd7de3 100644 --- a/packages/kit/src/runtime/telemetry/record_span.enabled.spec.js +++ b/packages/kit/src/runtime/telemetry/record_span.enabled.spec.js @@ -17,14 +17,16 @@ const { tracer, span } = vi.hoisted(() => { }) ); - const mock_tracer = /** @type {Tracer} */ ({ - startActiveSpan: vi.fn((_name, _options, fn) => { - return fn(span); - }), - startSpan: vi.fn((_name, _options, fn) => { - return fn(span); + const mock_tracer = /** @type {Tracer} */ ( + /** @type {unknown} */ ({ + startActiveSpan: vi.fn((_name, _options, fn) => { + return fn(span); + }), + startSpan: vi.fn((_name, _options, fn) => { + return fn(span); + }) }) - }); + ); return { tracer: mock_tracer, span: mock_span }; }); diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index 105b2ed55ad8..69c12ca9ffc6 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -19,7 +19,7 @@ "dropcss": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/apps/async/package.json b/packages/kit/test/apps/async/package.json index 7afccae4847a..0a2094fca12e 100644 --- a/packages/kit/test/apps/async/package.json +++ b/packages/kit/test/apps/async/package.json @@ -18,7 +18,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "valibot": "catalog:", "vite": "catalog:" } diff --git a/packages/kit/test/apps/async/src/hooks.server.js b/packages/kit/test/apps/async/src/hooks.server.js index 4a1d3f5e8ffd..fe9347f2aa1e 100644 --- a/packages/kit/test/apps/async/src/hooks.server.js +++ b/packages/kit/test/apps/async/src/hooks.server.js @@ -36,8 +36,10 @@ export const handleError = ({ error: e, event, status, message }) => { return { message: `${error.message} (${status} ${message}, on ${event.url.pathname})` }; }; -// @ts-ignore this doesn't exist in old Node TODO remove SvelteKit 3 (same in test-basics) +// TODO: remove in SvelteKit 3.0 +// @ts-ignore this doesn't exist in old Node Promise.withResolvers ??= () => { + /** @type {{ promise: Promise, resolve: (value: any) => void, reject: (reason?: any) => void }} */ const d = {}; d.promise = new Promise((resolve, reject) => { d.resolve = resolve; diff --git a/packages/kit/test/apps/async/src/lib/index.js b/packages/kit/test/apps/async/src/lib/index.js index f9917fd877e2..b42cc5aac7ac 100644 --- a/packages/kit/test/apps/async/src/lib/index.js +++ b/packages/kit/test/apps/async/src/lib/index.js @@ -1,4 +1,5 @@ export class Foo { + /** @param {string} message */ constructor(message) { this.message = message; } diff --git a/packages/kit/test/apps/async/src/routes/remote/batch-ssr/+page.svelte b/packages/kit/test/apps/async/src/routes/remote/batch-ssr/+page.svelte index 0507d7effe5b..b21a1b227b26 100644 --- a/packages/kit/test/apps/async/src/routes/remote/batch-ssr/+page.svelte +++ b/packages/kit/test/apps/async/src/routes/remote/batch-ssr/+page.svelte @@ -1,11 +1,11 @@ - -

{(await todo_1).title}

-

{(await todo_2).title}

+

{(await todo_1)?.title}

+

{(await todo_2)?.title}

-

{(await todo_3).title}

+

{(await todo_3)?.title}

{#snippet failed(error)}

{get_message(error)}

diff --git a/packages/kit/test/apps/async/src/routes/remote/batch/+page.svelte b/packages/kit/test/apps/async/src/routes/remote/batch/+page.svelte index 5bac7d52cbce..0e715eb76394 100644 --- a/packages/kit/test/apps/async/src/routes/remote/batch/+page.svelte +++ b/packages/kit/test/apps/async/src/routes/remote/batch/+page.svelte @@ -18,7 +18,7 @@ {#each todos as { id, promise }, idx (idx)}
  • - {(await promise).title} + {(await promise)?.title} {#snippet failed(error)} {#if set_message.fields.message.issues()} -

    {set_message.fields.message.issues()[0].message}

    +

    {set_message.fields.message.issues()?.[0].message}

    {/if} @@ -35,7 +35,7 @@
    {#if scoped.fields.message.issues()} -

    {scoped.fields.message.issues()[0].message}

    +

    {scoped.fields.message.issues()?.[0].message}

    {/if} @@ -58,7 +58,7 @@ })} > {#if enhanced.fields.message.issues()} -

    {enhanced.fields.message.issues()[0].message}

    +

    {enhanced.fields.message.issues()?.[0].message}

    {/if} diff --git a/packages/kit/test/apps/async/src/routes/remote/form/skip-submit/+page.svelte b/packages/kit/test/apps/async/src/routes/remote/form/skip-submit/+page.svelte index 0fc9c0688449..7d0344307e9f 100644 --- a/packages/kit/test/apps/async/src/routes/remote/form/skip-submit/+page.svelte +++ b/packages/kit/test/apps/async/src/routes/remote/form/skip-submit/+page.svelte @@ -1,9 +1,9 @@ - whole-page diff --git a/packages/kit/test/apps/async/src/routes/remote/query-command.remote.js b/packages/kit/test/apps/async/src/routes/remote/query-command.remote.js index 53334d628f94..ca3bd07570a7 100644 --- a/packages/kit/test/apps/async/src/routes/remote/query-command.remote.js +++ b/packages/kit/test/apps/async/src/routes/remote/query-command.remote.js @@ -4,6 +4,9 @@ export const echo = query('unchecked', (value) => value); export const add = query('unchecked', ({ a, b }) => a + b); let count = 0; +/** + * @type {PromiseWithResolvers[]} + */ const deferreds = []; let get_count_called = false; @@ -25,7 +28,7 @@ export const set_count = command('unchecked', async ({ c, slow = false, deferred export const resolve_deferreds = command(() => { for (const deferred of deferreds) { - deferred.resolve(); + deferred.resolve(null); } deferreds.length = 0; }); diff --git a/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/inactive/+page.svelte b/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/inactive/+page.svelte index e5595400b94d..6c6a6a8824ae 100644 --- a/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/inactive/+page.svelte +++ b/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/inactive/+page.svelte @@ -8,7 +8,7 @@ let result = $state(''); let stored: RemoteQuery; - function get_message(error) { + function get_message(error: unknown) { return error instanceof Error ? error.message : String(error); } diff --git a/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/not-tracked/+page.svelte b/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/not-tracked/+page.svelte index 536a0acb97f8..2de78c880f5d 100644 --- a/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/not-tracked/+page.svelte +++ b/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/not-tracked/+page.svelte @@ -6,7 +6,7 @@ let result = $state(''); let stored: RemoteQuery; - function get_message(error) { + function get_message(error: unknown) { return error instanceof Error ? error.message : String(error); } diff --git a/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/run-in-render/+page.svelte b/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/run-in-render/+page.svelte index 843bf36ddd6f..18e67c805c90 100644 --- a/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/run-in-render/+page.svelte +++ b/packages/kit/test/apps/async/src/routes/remote/query-runtime-errors/run-in-render/+page.svelte @@ -1,7 +1,7 @@ - - Custom error page: {page.error.message} + Custom error page: {page.error?.message}

    {page.status}

    -

    This is your custom error page saying: "{page.error.message}"

    +

    This is your custom error page saying: "{page.error?.message}"