Skip to content

Commit 16b764c

Browse files
authored
breaking: upgrade to TypeScript 5 (#11160)
1 parent 43a745a commit 16b764c

File tree

62 files changed

+290
-285
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+290
-285
lines changed

.changeset/itchy-bags-lay.md

-5
This file was deleted.

.changeset/silent-mayflies-burn.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': major
3+
---
4+
5+
breaking: upgrade to TypeScript 5 and default `moduleResolution` to `bundler` in user projects

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"playwright": "1.30.0",
3232
"prettier": "^3.1.0",
3333
"svelte": "^4.2.7",
34-
"typescript": "^4.9.4"
34+
"typescript": "^5.3.2"
3535
},
3636
"packageManager": "[email protected]",
3737
"engines": {

packages/adapter-auto/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"devDependencies": {
3333
"@sveltejs/kit": "workspace:^",
3434
"@types/node": "^16.18.6",
35-
"typescript": "^4.9.4"
35+
"typescript": "^5.3.2"
3636
},
3737
"dependencies": {
3838
"import-meta-resolve": "^4.0.0"

packages/adapter-cloudflare-workers/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"devDependencies": {
3838
"@cloudflare/kv-asset-handler": "^0.3.0",
3939
"@types/node": "^16.18.6",
40-
"typescript": "^4.9.4"
40+
"typescript": "^5.3.2"
4141
},
4242
"peerDependencies": {
4343
"@sveltejs/kit": "^1.0.0"

packages/adapter-cloudflare/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"devDependencies": {
4040
"@types/node": "^16.18.6",
4141
"@types/ws": "^8.5.3",
42-
"typescript": "^4.9.4"
42+
"typescript": "^5.3.2"
4343
},
4444
"peerDependencies": {
4545
"@sveltejs/kit": "^1.0.0"

packages/adapter-netlify/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@
3838
"set-cookie-parser": "^2.6.0"
3939
},
4040
"devDependencies": {
41-
"@netlify/functions": "^2.0.1",
41+
"@netlify/functions": "^2.4.0",
4242
"@rollup/plugin-commonjs": "^25.0.7",
4343
"@rollup/plugin-json": "^6.0.1",
4444
"@rollup/plugin-node-resolve": "^15.2.3",
4545
"@sveltejs/kit": "workspace:^",
4646
"@types/node": "^16.18.6",
4747
"@types/set-cookie-parser": "^2.4.2",
4848
"rollup": "^4.2.0",
49-
"typescript": "^4.9.4",
49+
"typescript": "^5.3.2",
5050
"vitest": "^0.34.5"
5151
},
5252
"peerDependencies": {

packages/adapter-netlify/rollup.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const config = {
1212
dir: 'files/esm',
1313
format: 'esm'
1414
},
15+
// @ts-ignore https://github.com/rollup/plugins/issues/1329
1516
plugins: [nodeResolve({ preferBuiltins: true }), commonjs(), json()],
1617
external: (id) => id === '0SERVER' || id.startsWith('node:'),
1718
preserveEntrySignatures: 'exports-only'

packages/adapter-netlify/tsconfig.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
"noEmit": true,
66
"noImplicitAny": true,
77
"target": "es2022",
8-
"module": "es2022",
9-
// `@netlify/function` > `@netlify/serverless-functions-api` types are not compatible,
10-
// so using this moduleResolution for now
11-
"moduleResolution": "node",
8+
"module": "node16",
9+
"moduleResolution": "node16",
10+
// https://github.com/netlify/functions/issues/447
11+
"skipLibCheck": true,
1212
"allowSyntheticDefaultImports": true,
1313
"baseUrl": ".",
1414
"paths": {

packages/adapter-node/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ export default function (opts = {}) {
6262
preferBuiltins: true,
6363
exportConditions: ['node']
6464
}),
65+
// @ts-ignore https://github.com/rollup/plugins/issues/1329
6566
commonjs({ strictRequires: true }),
67+
// @ts-ignore https://github.com/rollup/plugins/issues/1329
6668
json()
6769
]
6870
});

packages/adapter-node/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"c8": "^8.0.0",
4040
"polka": "^1.0.0-next.23",
4141
"sirv": "^2.0.3",
42-
"typescript": "^4.9.4",
42+
"typescript": "^5.3.2",
4343
"vitest": "^0.34.5"
4444
},
4545
"dependencies": {

packages/adapter-node/src/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export const path = env('SOCKET_PATH', false);
66
export const host = env('HOST', '0.0.0.0');
77
export const port = env('PORT', !path && '3000');
88

9+
// @ts-ignore - https://github.com/lukeed/polka/issues/199
910
const server = polka().use(handler);
1011

1112
server.listen({ path, host, port }, () => {

packages/adapter-node/tsconfig.json

+2-5
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,8 @@
66
"noImplicitAny": true,
77
"allowSyntheticDefaultImports": true,
88
"target": "es2022",
9-
"module": "es2022",
10-
// Can't use moduleResolution: node16 because of these issues:
11-
// https://github.com/rollup/plugins/issues/1329
12-
// https://github.com/lukeed/polka/issues/199
13-
"moduleResolution": "node",
9+
"module": "node16",
10+
"moduleResolution": "node16",
1411
"baseUrl": ".",
1512
"paths": {
1613
"@sveltejs/kit": ["../kit/types/index"]

packages/adapter-static/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ See https://kit.svelte.dev/docs/page-options#prerender for more details`
5252
}
5353

5454
const {
55+
// @ts-ignore
5556
pages = 'build',
5657
assets = pages,
5758
fallback,

packages/adapter-static/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"@types/node": "^16.18.6",
3636
"sirv": "^2.0.3",
3737
"svelte": "^4.2.7",
38-
"typescript": "^4.9.4",
38+
"typescript": "^5.3.2",
3939
"vite": "^5.0.4"
4040
},
4141
"peerDependencies": {

packages/adapter-vercel/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"devDependencies": {
3838
"@sveltejs/kit": "workspace:^",
3939
"@types/node": "^16.18.6",
40-
"typescript": "^4.9.4",
40+
"typescript": "^5.3.2",
4141
"vitest": "^0.34.5"
4242
},
4343
"peerDependencies": {

packages/create-svelte/templates/default/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"@sveltejs/adapter-auto": "workspace:*",
1313
"@sveltejs/kit": "workspace:*",
1414
"svelte": "^4.2.7",
15-
"typescript": "^5.0.0",
15+
"typescript": "^5.3.2",
1616
"vite": "^5.0.4"
1717
},
1818
"type": "module",

packages/create-svelte/templates/skeletonlib/package.template.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"publint": "^0.1.9",
2626
"svelte": "^4.2.7",
2727
"tslib": "^2.4.1",
28-
"typescript": "^5.0.0",
28+
"typescript": "^5.3.2",
2929
"vite": "^5.0.3"
3030
},
3131
"svelte": "./dist/index.js",

packages/enhanced-img/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,15 @@
2828
"dependencies": {
2929
"magic-string": "^0.30.0",
3030
"svelte-parse-markup": "^0.1.1",
31-
"vite-imagetools": "^6.2.5"
31+
"vite-imagetools": "^6.2.6"
3232
},
3333
"devDependencies": {
3434
"@types/estree": "^1.0.2",
3535
"@types/node": "^16.18.6",
3636
"estree-walker": "^3.0.3",
37+
"rollup": "^4.2.0",
3738
"svelte": "^4.2.7",
38-
"typescript": "^4.9.4",
39+
"typescript": "^5.3.2",
3940
"vite": "^5.0.4",
4041
"vitest": "^0.34.0"
4142
}

packages/enhanced-img/tsconfig.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"noEmit": true,
66
"strict": true,
77
"target": "es2022",
8-
"module": "es2022",
9-
"moduleResolution": "node",
8+
"module": "node16",
9+
"moduleResolution": "node16",
1010
"allowSyntheticDefaultImports": true,
1111
"paths": {
1212
"types": ["./types/index"],

packages/kit/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@
3131
"@types/node": "^16.18.6",
3232
"@types/sade": "^1.7.4",
3333
"@types/set-cookie-parser": "^2.4.2",
34-
"dts-buddy": "^0.2.4",
34+
"dts-buddy": "^0.4.0",
3535
"rollup": "^4.2.0",
3636
"svelte": "^4.2.7",
3737
"svelte-preprocess": "^5.1.1",
38-
"typescript": "^4.9.4",
38+
"typescript": "^5.3.2",
3939
"vite": "^5.0.4",
4040
"vitest": "^0.34.5"
4141
},

packages/kit/src/core/sync/write_tsconfig.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ export function get_tsconfig(kit, include_base_url) {
139139
// This is required for svelte-package to work as expected
140140
// Can be overwritten
141141
lib: ['esnext', 'DOM', 'DOM.Iterable'],
142-
moduleResolution: 'node', // TODO change to "bundler" in SvelteKit v2
142+
moduleResolution: 'bundler',
143143
module: 'esnext',
144144
noEmit: true, // prevent tsconfig error "overwriting input files" - Vite handles the build and ignores this
145145
target: 'esnext',

packages/kit/src/core/sync/write_tsconfig.spec.js

+2
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ test('Allows generated tsconfig to be mutated', () => {
6565

6666
const config = get_tsconfig(kit, false);
6767

68+
// @ts-expect-error
6869
assert.equal(config.extends, 'some/other/tsconfig.json');
6970
});
7071

@@ -82,6 +83,7 @@ test('Allows generated tsconfig to be replaced', () => {
8283

8384
const config = get_tsconfig(kit, false);
8485

86+
// @ts-expect-error
8587
assert.equal(config.extends, 'some/other/tsconfig.json');
8688
});
8789

packages/kit/src/core/sync/write_types/test/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"private": true,
3+
"type": "module",
34
"scripts": {
45
"testtypes": "tsc"
56
}

packages/kit/src/core/sync/write_types/test/tsconfig.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
"checkJs": true,
55
"noEmit": true,
66
"strict": true,
7-
"target": "es2020",
7+
"target": "es2022",
88
"module": "es2022",
9-
"moduleResolution": "node",
9+
"moduleResolution": "bundler",
1010
"allowSyntheticDefaultImports": true,
1111
"baseUrl": ".",
1212
"paths": {

packages/kit/src/exports/vite/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ const options_regex = /(export\s+const\s+(prerender|csr|ssr|trailingSlash))\s*=/
7878
/** @type {Set<string>} */
7979
const warned = new Set();
8080

81-
/** @type {import('@sveltejs/vite-plugin-svelte').PreprocessorGroup} */
81+
/** @type {import('svelte/compiler').PreprocessorGroup} */
8282
const warning_preprocessor = {
8383
script: ({ content, filename }) => {
8484
if (!filename) return;
@@ -630,7 +630,7 @@ function kit({ svelte_config }) {
630630
scoped(
631631
assets,
632632
sirv(join(svelte_config.kit.outDir, 'output/client'), {
633-
setHeaders: (res, pathname) => {
633+
setHeaders: (res, pathname) => {
634634
// only apply to immutable directory, not e.g. version.json
635635
if (pathname.startsWith(`/${svelte_config.kit.appDir}/immutable`)) {
636636
res.setHeader('cache-control', 'public,max-age=31536000,immutable');

packages/kit/src/exports/vite/preview/index.js

+48-50
Original file line numberDiff line numberDiff line change
@@ -60,69 +60,67 @@ export async function preview(vite, vite_config, svelte_config) {
6060

6161
// prerendered pages (we can't just use sirv because we need to
6262
// preserve the correct trailingSlash behaviour)
63-
vite.middlewares.use(
64-
(req, res, next) => {
65-
let if_none_match_value = req.headers['if-none-match'];
63+
vite.middlewares.use((req, res, next) => {
64+
let if_none_match_value = req.headers['if-none-match'];
6665

67-
if (if_none_match_value?.startsWith('W/"')) {
68-
if_none_match_value = if_none_match_value.substring(2);
69-
}
66+
if (if_none_match_value?.startsWith('W/"')) {
67+
if_none_match_value = if_none_match_value.substring(2);
68+
}
7069

71-
if (if_none_match_value === etag) {
72-
res.statusCode = 304;
73-
res.end();
74-
return;
75-
}
70+
if (if_none_match_value === etag) {
71+
res.statusCode = 304;
72+
res.end();
73+
return;
74+
}
7675

77-
const { pathname, search } = new URL(/** @type {string} */ (req.url), 'http://dummy');
78-
79-
let filename = normalizePath(
80-
join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname)
81-
);
82-
let prerendered = is_file(filename);
83-
84-
if (!prerendered) {
85-
const has_trailing_slash = pathname.endsWith('/');
86-
const html_filename = `${filename}${has_trailing_slash ? 'index.html' : '.html'}`;
87-
88-
/** @type {string | undefined} */
89-
let redirect;
90-
91-
if (is_file(html_filename)) {
92-
filename = html_filename;
93-
prerendered = true;
94-
} else if (has_trailing_slash) {
95-
if (is_file(filename.slice(0, -1) + '.html')) {
96-
redirect = pathname.slice(0, -1);
97-
}
98-
} else if (is_file(filename + '/index.html')) {
99-
redirect = pathname + '/';
100-
}
76+
const { pathname, search } = new URL(/** @type {string} */ (req.url), 'http://dummy');
77+
78+
let filename = normalizePath(
79+
join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname)
80+
);
81+
let prerendered = is_file(filename);
10182

102-
if (redirect) {
103-
if (search) redirect += search;
104-
res.writeHead(307, {
105-
location: redirect
106-
});
83+
if (!prerendered) {
84+
const has_trailing_slash = pathname.endsWith('/');
85+
const html_filename = `${filename}${has_trailing_slash ? 'index.html' : '.html'}`;
10786

108-
res.end();
87+
/** @type {string | undefined} */
88+
let redirect;
10989

110-
return;
90+
if (is_file(html_filename)) {
91+
filename = html_filename;
92+
prerendered = true;
93+
} else if (has_trailing_slash) {
94+
if (is_file(filename.slice(0, -1) + '.html')) {
95+
redirect = pathname.slice(0, -1);
11196
}
97+
} else if (is_file(filename + '/index.html')) {
98+
redirect = pathname + '/';
11299
}
113100

114-
if (prerendered) {
115-
res.writeHead(200, {
116-
'content-type': lookup(pathname) || 'text/html',
117-
etag
101+
if (redirect) {
102+
if (search) redirect += search;
103+
res.writeHead(307, {
104+
location: redirect
118105
});
119106

120-
fs.createReadStream(filename).pipe(res);
121-
} else {
122-
next();
107+
res.end();
108+
109+
return;
123110
}
124111
}
125-
);
112+
113+
if (prerendered) {
114+
res.writeHead(200, {
115+
'content-type': lookup(pathname) || 'text/html',
116+
etag
117+
});
118+
119+
fs.createReadStream(filename).pipe(res);
120+
} else {
121+
next();
122+
}
123+
});
126124

127125
// SSR
128126
vite.middlewares.use(async (req, res) => {

0 commit comments

Comments
 (0)