Skip to content

Commit d030f4b

Browse files
authored
feat: support Vite 6 (#12270)
1 parent da965d7 commit d030f4b

File tree

67 files changed

+1365
-1593
lines changed

Some content is hidden

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

67 files changed

+1365
-1593
lines changed

.changeset/curvy-garlics-walk.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@sveltejs/adapter-cloudflare-workers': minor
3+
'@sveltejs/adapter-cloudflare': minor
4+
'@sveltejs/adapter-netlify': minor
5+
'@sveltejs/adapter-vercel': minor
6+
---
7+
8+
chore: upgrade esbuild to 0.24.0

.changeset/purple-comics-know.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': minor
3+
---
4+
5+
feat: Vite 6 support

packages/adapter-auto/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
},
4141
"devDependencies": {
4242
"@sveltejs/kit": "workspace:^",
43-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
43+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
4444
"@types/node": "^18.19.48",
4545
"typescript": "^5.3.3"
4646
},

packages/adapter-cloudflare-workers/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"dependencies": {
4141
"@cloudflare/workers-types": "^4.20231121.0",
4242
"@iarna/toml": "^2.2.5",
43-
"esbuild": "^0.21.5"
43+
"esbuild": "^0.24.0"
4444
},
4545
"devDependencies": {
4646
"@cloudflare/kv-asset-handler": "^0.3.0",

packages/adapter-cloudflare/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
},
4242
"dependencies": {
4343
"@cloudflare/workers-types": "^4.20231121.0",
44-
"esbuild": "^0.21.5",
44+
"esbuild": "^0.24.0",
4545
"worktop": "0.8.0-next.18"
4646
},
4747
"devDependencies": {

packages/adapter-netlify/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
},
4343
"dependencies": {
4444
"@iarna/toml": "^2.2.5",
45-
"esbuild": "^0.21.5",
45+
"esbuild": "^0.24.0",
4646
"set-cookie-parser": "^2.6.0"
4747
},
4848
"devDependencies": {
@@ -51,12 +51,12 @@
5151
"@rollup/plugin-json": "^6.1.0",
5252
"@rollup/plugin-node-resolve": "^15.3.0",
5353
"@sveltejs/kit": "workspace:^",
54-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
54+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
5555
"@types/node": "^18.19.48",
5656
"@types/set-cookie-parser": "^2.4.7",
5757
"rollup": "^4.14.2",
5858
"typescript": "^5.3.3",
59-
"vitest": "^2.0.1"
59+
"vitest": "^2.1.6"
6060
},
6161
"peerDependencies": {
6262
"@sveltejs/kit": "^2.4.0"

packages/adapter-node/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@
4343
"devDependencies": {
4444
"@polka/url": "^1.0.0-next.28",
4545
"@sveltejs/kit": "workspace:^",
46-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
46+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
4747
"@types/node": "^18.19.48",
4848
"polka": "^1.0.0-next.28",
4949
"sirv": "^3.0.0",
5050
"typescript": "^5.3.3",
51-
"vitest": "^2.0.1"
51+
"vitest": "^2.1.6"
5252
},
5353
"dependencies": {
5454
"@rollup/plugin-commonjs": "^28.0.1",

packages/adapter-static/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@
4141
"devDependencies": {
4242
"@playwright/test": "^1.44.1",
4343
"@sveltejs/kit": "workspace:^",
44-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
44+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
4545
"@types/node": "^18.19.48",
4646
"sirv": "^3.0.0",
47-
"svelte": "^4.2.10",
47+
"svelte": "^5.2.9",
4848
"typescript": "^5.3.3",
49-
"vite": "^5.3.2"
49+
"vite": "^6.0.1"
5050
},
5151
"peerDependencies": {
5252
"@sveltejs/kit": "^2.0.0"

packages/adapter-static/test/apps/prerendered/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
},
1111
"devDependencies": {
1212
"@sveltejs/kit": "workspace:^",
13-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
13+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
1414
"sirv-cli": "^3.0.0",
15-
"svelte": "^4.2.10",
16-
"vite": "^5.3.2"
15+
"svelte": "^5.2.9",
16+
"vite": "^6.0.1"
1717
},
1818
"type": "module"
1919
}

packages/adapter-static/test/apps/spa/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
"devDependencies": {
1212
"@sveltejs/adapter-node": "workspace:^",
1313
"@sveltejs/kit": "workspace:^",
14-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
14+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
1515
"sirv-cli": "^3.0.0",
16-
"svelte": "^4.2.10",
17-
"vite": "^5.3.2"
16+
"svelte": "^5.2.9",
17+
"vite": "^6.0.1"
1818
},
1919
"type": "module"
2020
}

packages/adapter-vercel/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@
4040
},
4141
"dependencies": {
4242
"@vercel/nft": "^0.27.1",
43-
"esbuild": "^0.21.5"
43+
"esbuild": "^0.24.0"
4444
},
4545
"devDependencies": {
4646
"@sveltejs/kit": "workspace:^",
47-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
47+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
4848
"@types/node": "^18.19.48",
4949
"typescript": "^5.3.3",
50-
"vitest": "^2.0.1"
50+
"vitest": "^2.1.6"
5151
},
5252
"peerDependencies": {
5353
"@sveltejs/kit": "^2.4.0"

packages/enhanced-img/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@
4444
"devDependencies": {
4545
"@types/estree": "^1.0.5",
4646
"@types/node": "^18.19.48",
47-
"rollup": "^4.14.2",
48-
"svelte": "^5.1.3",
47+
"rollup": "^4.27.4",
48+
"svelte": "^5.2.9",
4949
"typescript": "^5.6.3",
50-
"vite": "^5.3.2",
51-
"vitest": "^2.0.1"
50+
"vite": "^6.0.1",
51+
"vitest": "^2.1.6"
5252
},
5353
"peerDependencies": {
5454
"svelte": "^5.0.0",

packages/kit/package.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"@types/cookie": "^0.6.0",
2222
"cookie": "^0.6.0",
2323
"devalue": "^5.1.0",
24-
"esm-env": "^1.0.0",
24+
"esm-env": "^1.2.1",
2525
"import-meta-resolve": "^4.1.0",
2626
"kleur": "^4.1.5",
2727
"magic-string": "^0.30.5",
@@ -33,22 +33,22 @@
3333
},
3434
"devDependencies": {
3535
"@playwright/test": "^1.44.1",
36-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
36+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
3737
"@types/connect": "^3.4.38",
3838
"@types/node": "^18.19.48",
3939
"@types/set-cookie-parser": "^2.4.7",
40-
"dts-buddy": "^0.5.3",
40+
"dts-buddy": "^0.5.4",
4141
"rollup": "^4.14.2",
42-
"svelte": "^4.2.10",
42+
"svelte": "^5.2.9",
4343
"svelte-preprocess": "^6.0.0",
4444
"typescript": "^5.3.3",
45-
"vite": "^5.3.2",
46-
"vitest": "^2.0.1"
45+
"vite": "^6.0.1",
46+
"vitest": "^2.1.6"
4747
},
4848
"peerDependencies": {
49-
"@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1",
49+
"@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0",
5050
"svelte": "^4.0.0 || ^5.0.0-next.0",
51-
"vite": "^5.0.3"
51+
"vite": "^5.0.3 || ^6.0.0"
5252
},
5353
"bin": {
5454
"svelte-kit": "svelte-kit.js"

packages/kit/src/exports/public.d.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,12 @@ export interface ActionFailure<T extends Record<string, unknown> | undefined = u
7979
[uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure
8080
}
8181

82-
type UnpackValidationError<T> = T extends ActionFailure<infer X>
83-
? X
84-
: T extends void
85-
? undefined // needs to be undefined, because void will corrupt union type
86-
: T;
82+
type UnpackValidationError<T> =
83+
T extends ActionFailure<infer X>
84+
? X
85+
: T extends void
86+
? undefined // needs to be undefined, because void will corrupt union type
87+
: T;
8788

8889
/**
8990
* This object is passed to the `adapt` function of adapters.

packages/kit/src/runtime/client/client.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -972,7 +972,7 @@ async function load_route({ id, invalidating, url, params, route, preload }) {
972972
server_data_node: create_data_node(
973973
// server_data_node is undefined if it wasn't reloaded from the server;
974974
// and if current loader uses server data, we want to reuse previous data.
975-
server_data_node === undefined && loader[0] ? { type: 'skip' } : server_data_node ?? null,
975+
server_data_node === undefined && loader[0] ? { type: 'skip' } : (server_data_node ?? null),
976976
loader[0] ? previous?.server : undefined
977977
)
978978
});

packages/kit/src/runtime/server/page/load_data.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ export function create_universal_fetch(event, state, fetched, csr, resolve_opts)
244244
}
245245
} else {
246246
// simulate CORS errors and "no access to body in no-cors mode" server-side for consistency with client-side behaviour
247-
const mode = input instanceof Request ? input.mode : init?.mode ?? 'cors';
247+
const mode = input instanceof Request ? input.mode : (init?.mode ?? 'cors');
248248
if (mode === 'no-cors') {
249249
response = new Response('', {
250250
status: response.status,

packages/kit/src/runtime/server/page/render.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export async function render_response({
7979

8080
const form_value =
8181
action_result?.type === 'success' || action_result?.type === 'failure'
82-
? action_result.data ?? null
82+
? (action_result.data ?? null)
8383
: null;
8484

8585
/** @type {string} */

packages/kit/test/apps/amp/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
"devDependencies": {
1515
"@sveltejs/amp": "workspace:^",
1616
"@sveltejs/kit": "workspace:^",
17-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
17+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
1818
"cross-env": "^7.0.3",
1919
"dropcss": "^1.0.16",
20-
"svelte": "^4.2.10",
20+
"svelte": "^5.2.9",
2121
"svelte-check": "^4.0.1",
2222
"typescript": "^5.5.4",
23-
"vite": "^5.3.2"
23+
"vite": "^6.0.1"
2424
},
2525
"type": "module"
2626
}

packages/kit/test/apps/basics/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
},
1616
"devDependencies": {
1717
"@sveltejs/kit": "workspace:^",
18-
"@sveltejs/vite-plugin-svelte": "^3.0.1",
18+
"@sveltejs/vite-plugin-svelte": "^5.0.1",
1919
"cross-env": "^7.0.3",
20-
"svelte": "^4.2.10",
20+
"svelte": "^5.2.9",
2121
"svelte-check": "^4.0.1",
2222
"typescript": "^5.5.4",
23-
"vite": "^5.3.2"
23+
"vite": "^6.0.1"
2424
},
2525
"type": "module"
2626
}

packages/kit/test/apps/basics/test/cross-platform/client.test.js

+24-16
Original file line numberDiff line numberDiff line change
@@ -283,13 +283,12 @@ test.describe('Scrolling', () => {
283283
test('url-supplied non-ascii anchor works on navigation to page after manual scroll', async ({
284284
page,
285285
in_view,
286-
clicknav
286+
clicknav,
287+
scroll_to
287288
}) => {
288289
await page.goto('/anchor');
289290
await clicknav('#non-ascii-anchor');
290-
await page.evaluate(() => {
291-
window.scrollTo(0, 50);
292-
});
291+
await scroll_to(0, 50);
293292
await page.locator('#non-ascii-anchor').click();
294293
expect(await in_view('#go-to-encöded')).toBe(true);
295294
});
@@ -359,7 +358,8 @@ test.describe('Scrolling', () => {
359358

360359
test('scroll is restored after hitting the back button for an in-app cross-document navigation', async ({
361360
page,
362-
clicknav
361+
clicknav,
362+
scroll_to
363363
}) => {
364364
await page.goto('/scroll/cross-document/a');
365365

@@ -368,7 +368,7 @@ test.describe('Scrolling', () => {
368368
if (!rect) throw new Error('Could not determine bounding box');
369369

370370
const target_scroll_y = rect.y + rect.height - height;
371-
await page.evaluate((y) => scrollTo(0, y), target_scroll_y);
371+
await scroll_to(0, target_scroll_y);
372372

373373
await page.locator('[href="/scroll/cross-document/b"]').click();
374374
expect(await page.textContent('h1')).toBe('b');
@@ -441,7 +441,8 @@ test.describe('Scrolling', () => {
441441
test('scroll positions are recovered on reloading the page', async ({
442442
page,
443443
app,
444-
browserName
444+
browserName,
445+
scroll_to
445446
}) => {
446447
// No idea why the workaround below works only in dev mode
447448
// A better solution would probably be to set fission.webContentIsolationStrategy: 1
@@ -451,20 +452,21 @@ test.describe('Scrolling', () => {
451452
}
452453

453454
await page.goto('/anchor');
454-
await page.evaluate(() => window.scrollTo(0, 1000));
455+
await scroll_to(0, 1000);
455456
await app.goto('/anchor/anchor');
456-
await page.evaluate(() => window.scrollTo(0, 1000));
457+
await scroll_to(0, 1000);
457458

458459
await page.reload();
459460
if (browserName === 'firefox') {
460461
// Firefox with Playwright pushed new history entry history after reload
461462
// See https://github.com/microsoft/playwright/issues/22640
462463
await page.goBack();
463464
}
464-
expect(await page.evaluate(() => window.scrollY)).toBe(1000);
465+
await page.waitForFunction(() => window.scrollY === 1000);
465466

467+
const waiter = page.waitForFunction(() => window.scrollY === 1000);
466468
await page.goBack();
467-
expect(await page.evaluate(() => window.scrollY)).toBe(1000);
469+
await waiter;
468470
});
469471

470472
test('scroll position is top of page on ssr:false reload', async ({ page }) => {
@@ -474,26 +476,32 @@ test.describe('Scrolling', () => {
474476
expect(await page.evaluate(() => window.scrollY)).toBe(0);
475477
});
476478

477-
test('clicking # or #top takes you to the top of the current page', async ({ page }) => {
479+
test('clicking # or #top takes you to the top of the current page', async ({
480+
page,
481+
scroll_to
482+
}) => {
478483
await page.goto('/scroll/top');
479484

480485
for (const href of ['#', '#top']) {
481-
await page.evaluate(() => window.scrollTo(0, 1000));
486+
await scroll_to(0, 1000);
482487
await page.click(`a[href="${href}"]`);
483488
expect(await page.evaluate(() => window.scrollY)).toBe(0);
484489

485-
await page.evaluate(() => window.scrollTo(0, 1000));
490+
await scroll_to(0, 1000);
486491
await page.click(`a[href="${href}"]`);
487492
expect(await page.evaluate(() => window.scrollY)).toBe(0);
488493
}
489494
});
490495

491-
test('Scroll position is correct after going back from a shallow route', async ({ page }) => {
496+
test('Scroll position is correct after going back from a shallow route', async ({
497+
page,
498+
scroll_to
499+
}) => {
492500
await page.goto('/scroll/push-state');
493501
await page.locator('#subpage-link').click();
494502
await page.locator('#back-button').click();
495503

496-
await page.evaluate(() => window.scrollTo(0, 9999));
504+
await scroll_to(0, 9999);
497505

498506
const scroll = await page.evaluate(() => window.scrollY);
499507
expect(scroll).toBeGreaterThan(0);

0 commit comments

Comments
 (0)