From 272adb5070d7eec61beab09af06beeb7c18e3173 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:06:00 -0800 Subject: [PATCH 01/72] chore: enter pre-release mode for SvelteKit 3 (#15302) --- .changeset/config.json | 2 +- .changeset/pre.json | 54 +++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 .changeset/pre.json diff --git a/.changeset/config.json b/.changeset/config.json index b5a4060d1a52..d81c3e9bb053 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -4,7 +4,7 @@ "commit": false, "linked": [], "access": "public", - "baseBranch": "main", + "baseBranch": "version-3", "bumpVersionsWithWorkspaceProtocolOnly": true, "ignore": ["!(@sveltejs/*)"] } diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000000..095075f16771 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,54 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "@sveltejs/adapter-auto": "7.0.1", + "@sveltejs/adapter-cloudflare": "7.2.7", + "test-cloudflare-pages": "0.0.1", + "test-cloudflare-workers": "0.0.1", + "@sveltejs/adapter-netlify": "6.0.0", + "test-netlify-basic": "0.0.1", + "test-netlify-edge": "0.0.1", + "@sveltejs/adapter-node": "5.5.3", + "@sveltejs/adapter-static": "3.0.10", + "~TODO~": "0.0.1", + "@sveltejs/adapter-vercel": "6.3.1", + "@sveltejs/amp": "1.1.5", + "@sveltejs/enhanced-img": "0.10.2", + "enhanced-img-basics": "0.0.1", + "@sveltejs/kit": "2.51.0", + "test-amp": "0.0.1", + "test-async": "0.0.1", + "test-basics": "0.0.2-next.0", + "test-dev-only": "0.0.2-next.0", + "test-embed": "0.0.1", + "test-hash-based-routing": "0.0.1", + "test-no-ssr": "0.0.1", + "test-options": "0.0.1", + "test-options-2": "0.0.1", + "test-options-3": "0.0.1", + "test-prerendered-app-error-pages": "0.0.1", + "test-writes": "0.0.2-next.0", + "prerenderable-incorrect-fragment": "0.0.1", + "prerenderable-remote-function-error": "0.0.1", + "prerenderable-not-prerendered": "0.0.1", + "private-dynamic-env": "0.0.1", + "private-dynamic-env-dynamic-import": "0.0.1", + "private-static-env": "0.0.1", + "private-static-env-dynamic-import": "0.0.1", + "server-only-folder": "0.0.1", + "server-only-folder-dynamic-import": "0.0.1", + "server-only-module": "0.0.1", + "server-only-module-dynamic-import": "0.0.1", + "service-worker-dynamic-public-env": "0.0.1", + "service-worker-private-env": "0.0.1", + "syntax-error": "0.0.1", + "prerendering-test-basics": "0.0.2-next.0", + "prerendering-test-options": "0.0.1", + "prerendering-test-paths-base": "0.0.1", + "@sveltejs/package": "2.5.7", + "test-redirect-importer": "0.0.1", + "playground-basic": "0.0.0" + }, + "changesets": [] +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6411dd2d5116..8f54dbac9157 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,7 +3,7 @@ name: CI on: push: branches: - - main + - version-3 pull_request: env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b23fd398fc37..8bf648af281d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Release on: push: branches: - - main + - version-3 concurrency: # prevent two release workflows from running at once From cb9d416d05266b6237f2856fb94df5b8a9b04279 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Thu, 12 Feb 2026 19:06:27 -0500 Subject: [PATCH 02/72] breaking: upgrade to cookie v1 (#13386) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .changeset/chilly-berries-press.md | 5 + packages/kit/package.json | 3 +- packages/kit/src/exports/public.d.ts | 10 +- packages/kit/src/runtime/server/cookie.js | 33 +- packages/kit/src/runtime/server/fetch.js | 2 +- .../kit/src/runtime/server/page/types.d.ts | 4 +- packages/kit/types/index.d.ts | 10 +- pnpm-lock.yaml | 762 +++++++++--------- pnpm-workspace.yaml | 2 +- 9 files changed, 411 insertions(+), 420 deletions(-) create mode 100644 .changeset/chilly-berries-press.md diff --git a/.changeset/chilly-berries-press.md b/.changeset/chilly-berries-press.md new file mode 100644 index 000000000000..9932af210b54 --- /dev/null +++ b/.changeset/chilly-berries-press.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: upgrade to cookie v1. Cookie names must now contain only ASCII characters diff --git a/packages/kit/package.json b/packages/kit/package.json index 8e31472de265..4fdd78c277ce 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -20,9 +20,8 @@ "dependencies": { "@standard-schema/spec": "^1.0.0", "@sveltejs/acorn-typescript": "^1.0.5", - "@types/cookie": "^0.6.0", "acorn": "^8.14.1", - "cookie": "^0.6.0", + "cookie": "^1.1.1", "devalue": "^5.6.2", "esm-env": "^1.2.2", "kleur": "^4.1.5", diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index c6bc1dcce8df..a3fa18376ee5 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -265,13 +265,13 @@ export interface Cookies { * @param name the name of the cookie * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) */ - get: (name: string, opts?: import('cookie').CookieParseOptions) => string | undefined; + get: (name: string, opts?: import('cookie').ParseOptions) => string | undefined; /** * Gets all cookies that were previously set with `cookies.set`, or from the request headers. * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) */ - getAll: (opts?: import('cookie').CookieParseOptions) => Array<{ name: string; value: string }>; + getAll: (opts?: import('cookie').ParseOptions) => Array<{ name: string; value: string }>; /** * Sets a cookie. This will add a `set-cookie` header to the response, but also make the cookie available via `cookies.get` or `cookies.getAll` during the current request. @@ -286,7 +286,7 @@ export interface Cookies { set: ( name: string, value: string, - opts: import('cookie').CookieSerializeOptions & { path: string } + opts: import('cookie').SerializeOptions & { path: string } ) => void; /** @@ -296,7 +296,7 @@ export interface Cookies { * @param name the name of the cookie * @param opts the options, passed directly to `cookie.serialize`. The `path` must match the path of the cookie you want to delete. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) */ - delete: (name: string, opts: import('cookie').CookieSerializeOptions & { path: string }) => void; + delete: (name: string, opts: import('cookie').SerializeOptions & { path: string }) => void; /** * Serialize a cookie name-value pair into a `Set-Cookie` header string, but don't apply it to the response. @@ -312,7 +312,7 @@ export interface Cookies { serialize: ( name: string, value: string, - opts: import('cookie').CookieSerializeOptions & { path: string } + opts: import('cookie').SerializeOptions & { path: string } ) => string; } diff --git a/packages/kit/src/runtime/server/cookie.js b/packages/kit/src/runtime/server/cookie.js index 1816ecd9ed0d..fe816df010c8 100644 --- a/packages/kit/src/runtime/server/cookie.js +++ b/packages/kit/src/runtime/server/cookie.js @@ -4,9 +4,6 @@ import { normalize_path, resolve } from '../../utils/url.js'; import { add_data_suffix } from '../pathname.js'; import { text_encoder } from '../utils.js'; -// eslint-disable-next-line no-control-regex -- control characters are invalid in cookie names -const INVALID_COOKIE_CHARACTER_REGEX = /[\x00-\x1F\x7F()<>@,;:"/[\]?={} \t]/; - /** * Tracks all cookies set during dev mode so we can emit warnings * when we detect that there's likely cookie misusage due to wrong paths @@ -49,7 +46,9 @@ function generate_cookie_key(domain, path, name) { */ export function get_cookies(request, url) { const header = request.headers.get('cookie') ?? ''; - const initial_cookies = parse(header, { decode: (value) => value }); + const initial_cookies = /** @type {Record} */ ( + parse(header, { decode: (value) => value }) + ); /** @type {string | undefined} */ let normalized_url; @@ -57,7 +56,7 @@ export function get_cookies(request, url) { /** @type {Map} */ const new_cookies = new Map(); - /** @type {import('cookie').CookieSerializeOptions} */ + /** @type {import('cookie').SerializeOptions} */ const defaults = { httpOnly: true, sameSite: 'lax', @@ -73,7 +72,7 @@ export function get_cookies(request, url) { /** * @param {string} name - * @param {import('cookie').CookieParseOptions} [opts] + * @param {import('cookie').ParseOptions} [opts] */ get(name, opts) { // Look for the most specific matching cookie from new_cookies @@ -115,7 +114,7 @@ export function get_cookies(request, url) { }, /** - * @param {import('cookie').CookieParseOptions} [opts] + * @param {import('cookie').ParseOptions} [opts] */ getAll(opts) { const cookies = parse(header, { decode: opts?.decode }); @@ -142,7 +141,11 @@ export function get_cookies(request, url) { cookies[c.name] = c.value; } - return Object.entries(cookies).map(([name, value]) => ({ name, value })); + return /** @type {Array<{ name: string; value: string }>} */ ( + Object.entries(cookies) + .filter(([, value]) => value != null) + .map(([name, value]) => ({ name, value })) + ); }, /** @@ -151,16 +154,6 @@ export function get_cookies(request, url) { * @param {import('./page/types.js').Cookie['options']} options */ set(name, value, options) { - // TODO: remove this check in 3.0 - const illegal_characters = name.match(INVALID_COOKIE_CHARACTER_REGEX); - if (illegal_characters) { - console.warn( - `The cookie name "${name}" will be invalid in SvelteKit 3.0 as it contains ${illegal_characters.join( - ' and ' - )}. See RFC 2616 for more details https://datatracker.ietf.org/doc/html/rfc2616#section-2.2` - ); - } - validate_options(options); set_internal(name, value, { ...defaults, ...options }); }, @@ -217,7 +210,9 @@ export function get_cookies(request, url) { // explicit header has highest precedence if (header) { - const parsed = parse(header, { decode: (value) => value }); + const parsed = /** @type {Record} */ ( + parse(header, { decode: (value) => value }) + ); for (const name in parsed) { combined_cookies[name] = parsed[name]; } diff --git a/packages/kit/src/runtime/server/fetch.js b/packages/kit/src/runtime/server/fetch.js index ee35cd5d36a9..41a12dd8cd89 100644 --- a/packages/kit/src/runtime/server/fetch.js +++ b/packages/kit/src/runtime/server/fetch.js @@ -164,7 +164,7 @@ export function create_fetch({ event, options, manifest, state, get_cookie_heade set_internal(name, value, { path, encode: (value) => value, - .../** @type {import('cookie').CookieSerializeOptions} */ (options) + .../** @type {import('cookie').SerializeOptions} */ (options) }); } } diff --git a/packages/kit/src/runtime/server/page/types.d.ts b/packages/kit/src/runtime/server/page/types.d.ts index f0d094d122c2..036114b5cf6e 100644 --- a/packages/kit/src/runtime/server/page/types.d.ts +++ b/packages/kit/src/runtime/server/page/types.d.ts @@ -1,4 +1,4 @@ -import { CookieSerializeOptions } from 'cookie'; +import { SerializeOptions } from 'cookie'; import { CspDirectives, ServerDataNode, @@ -39,7 +39,7 @@ export interface CspOpts { export interface Cookie { name: string; value: string; - options: CookieSerializeOptions & { path: string }; + options: SerializeOptions & { path: string }; } export type ServerDataSerializer = { diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 9db4119631ea..2cce8b7592fe 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -240,13 +240,13 @@ declare module '@sveltejs/kit' { * @param name the name of the cookie * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) */ - get: (name: string, opts?: import('cookie').CookieParseOptions) => string | undefined; + get: (name: string, opts?: import('cookie').ParseOptions) => string | undefined; /** * Gets all cookies that were previously set with `cookies.set`, or from the request headers. * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) */ - getAll: (opts?: import('cookie').CookieParseOptions) => Array<{ name: string; value: string }>; + getAll: (opts?: import('cookie').ParseOptions) => Array<{ name: string; value: string }>; /** * Sets a cookie. This will add a `set-cookie` header to the response, but also make the cookie available via `cookies.get` or `cookies.getAll` during the current request. @@ -261,7 +261,7 @@ declare module '@sveltejs/kit' { set: ( name: string, value: string, - opts: import('cookie').CookieSerializeOptions & { path: string } + opts: import('cookie').SerializeOptions & { path: string } ) => void; /** @@ -271,7 +271,7 @@ declare module '@sveltejs/kit' { * @param name the name of the cookie * @param opts the options, passed directly to `cookie.serialize`. The `path` must match the path of the cookie you want to delete. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) */ - delete: (name: string, opts: import('cookie').CookieSerializeOptions & { path: string }) => void; + delete: (name: string, opts: import('cookie').SerializeOptions & { path: string }) => void; /** * Serialize a cookie name-value pair into a `Set-Cookie` header string, but don't apply it to the response. @@ -287,7 +287,7 @@ declare module '@sveltejs/kit' { serialize: ( name: string, value: string, - opts: import('cookie').CookieSerializeOptions & { path: string } + opts: import('cookie').SerializeOptions & { path: string } ) => string; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78328efb810f..27f142487080 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,11 +22,11 @@ catalogs: specifier: ^5.0.0 version: 5.1.2 '@opentelemetry/sdk-node': - specifier: ^0.211.0 - version: 0.211.0 + specifier: ^0.212.0 + version: 0.212.0 '@opentelemetry/sdk-trace-node': specifier: ^2.0.1 - version: 2.5.0 + version: 2.5.1 '@playwright/test': specifier: 1.58.2 version: 1.58.2 @@ -92,7 +92,7 @@ catalogs: version: 3.0.0 svelte: specifier: ^5.48.4 - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: ^4.3.4 version: 4.3.4 @@ -127,7 +127,7 @@ importers: version: 1.58.2 '@sveltejs/eslint-config': specifier: 'catalog:' - version: 8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.48.4)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3) + version: 8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3) '@svitejs/changesets-changelog-github-compact': specifier: 'catalog:' version: 1.2.0 @@ -139,7 +139,7 @@ importers: version: 3.6.0 prettier-plugin-svelte: specifier: ^3.4.0 - version: 3.4.0(prettier@3.6.0)(svelte@5.48.4) + version: 3.4.0(prettier@3.6.0)(svelte@5.49.2) typescript-eslint: specifier: 'catalog:' version: 8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3) @@ -151,7 +151,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 18.19.119 @@ -200,13 +200,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/pages/server-side-dep svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 vite: specifier: 'catalog:' version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) @@ -221,13 +221,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/workers/server-side-dep svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 vite: specifier: 'catalog:' version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) @@ -273,7 +273,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 18.19.119 @@ -294,10 +294,10 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 vite: specifier: 'catalog:' version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) @@ -309,10 +309,10 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 vite: specifier: 'catalog:' version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) @@ -340,7 +340,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 18.19.119 @@ -367,7 +367,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 18.19.119 @@ -376,7 +376,7 @@ importers: version: 3.0.2 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 typescript: specifier: ^5.3.3 version: 5.8.3 @@ -391,13 +391,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) sirv-cli: specifier: 'catalog:' version: 3.0.0 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 vite: specifier: 'catalog:' version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) @@ -409,13 +409,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) sirv-cli: specifier: 'catalog:' version: 3.0.0 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 vite: specifier: 'catalog:' version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) @@ -434,7 +434,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 18.19.119 @@ -464,7 +464,7 @@ importers: version: 0.34.4 svelte-parse-markup: specifier: ^0.1.5 - version: 0.1.5(svelte@5.48.4) + version: 0.1.5(svelte@5.49.2) vite-imagetools: specifier: ^9.0.3 version: 9.0.3(rollup@4.57.1) @@ -474,7 +474,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/estree': specifier: 'catalog:' version: 1.0.8 @@ -486,7 +486,7 @@ importers: version: 4.57.1 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 typescript: specifier: ^5.6.3 version: 5.8.3 @@ -507,10 +507,10 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 vite: specifier: 'catalog:' version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) @@ -523,15 +523,12 @@ importers: '@sveltejs/acorn-typescript': specifier: ^1.0.5 version: 1.0.5(acorn@8.15.0) - '@types/cookie': - specifier: ^0.6.0 - version: 0.6.0 acorn: specifier: ^8.14.1 version: 8.15.0 cookie: - specifier: ^0.6.0 - version: 0.6.0 + specifier: ^1.1.1 + version: 1.1.1 devalue: specifier: ^5.6.2 version: 5.6.2 @@ -565,7 +562,7 @@ importers: version: 1.58.2 '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/connect': specifier: 'catalog:' version: 3.4.38 @@ -583,10 +580,10 @@ importers: version: 4.57.1 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-preprocess: specifier: 'catalog:' - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.48.4)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.3.3 version: 5.8.3 @@ -607,16 +604,16 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) dropcss: specifier: 'catalog:' version: 1.0.16 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -631,13 +628,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -655,25 +652,25 @@ importers: version: 1.9.0 '@opentelemetry/sdk-node': specifier: 'catalog:' - version: 0.211.0(@opentelemetry/api@1.9.0) + version: 0.212.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': specifier: 'catalog:' - version: 2.5.0(@opentelemetry/api@1.9.0) + version: 2.5.1(@opentelemetry/api@1.9.0) '@sveltejs/kit': specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@vitest/browser-playwright': specifier: 'catalog:' version: 4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) test-redirect-importer: specifier: workspace:* version: link:../../../../test-redirect-importer @@ -697,7 +694,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) e2e-test-dep-error: specifier: file:./_test_dependencies/cjs-only version: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only @@ -730,10 +727,10 @@ importers: version: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -748,13 +745,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -769,13 +766,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -790,13 +787,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -814,13 +811,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -838,13 +835,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -865,13 +862,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -886,13 +883,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -907,13 +904,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -937,13 +934,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -961,13 +958,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -985,13 +982,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1009,13 +1006,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1030,13 +1027,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1051,13 +1048,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1072,13 +1069,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1093,13 +1090,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1114,13 +1111,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1135,13 +1132,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1156,13 +1153,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1177,13 +1174,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1198,13 +1195,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1219,13 +1216,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1240,13 +1237,13 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1261,13 +1258,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1285,13 +1282,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1309,13 +1306,13 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.4 version: 5.8.3 @@ -1342,11 +1339,11 @@ importers: version: 7.7.3 svelte2tsx: specifier: ~0.7.33 - version: 0.7.33(svelte@5.48.4)(typescript@5.8.3) + version: 0.7.33(svelte@5.49.2)(typescript@5.8.3) devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 18.19.119 @@ -1358,10 +1355,10 @@ importers: version: 3.6.0 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-preprocess: specifier: 'catalog:' - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.48.4)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.3.3 version: 5.8.3 @@ -1409,22 +1406,22 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) prettier: specifier: ^3.3.2 version: 3.6.0 prettier-plugin-svelte: specifier: ^3.2.6 - version: 3.4.0(prettier@3.6.0)(svelte@5.48.4) + version: 3.4.0(prettier@3.6.0)(svelte@5.49.2) publint: specifier: 'catalog:' version: 0.3.0 svelte: specifier: 'catalog:' - version: 5.48.4 + version: 5.49.2 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.5.0 version: 5.8.3 @@ -2105,12 +2102,12 @@ packages: '@fontsource/libre-barcode-128-text@5.1.0': resolution: {integrity: sha512-MC7foQFRT0NDcsqBWQua2T3gs/fh/uTowTxfoPqGQWjqroiMxRZhQh7jerjnpcI+Xi3yR5bwCo6W2uwCza1FRw==} - '@grpc/grpc-js@1.13.4': - resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + '@grpc/grpc-js@1.14.3': + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} - '@grpc/proto-loader@0.7.15': - resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + '@grpc/proto-loader@0.8.0': + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} engines: {node: '>=6'} hasBin: true @@ -2597,16 +2594,16 @@ packages: resolution: {integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==} engines: {node: '>=8.0.0'} - '@opentelemetry/api-logs@0.211.0': - resolution: {integrity: sha512-swFdZq8MCdmdR22jTVGQDhwqDzcI4M10nhjXkLr1EsIzXgZBqm4ZlmmcWsg3TSNf+3mzgOiqveXmBLZuDi2Lgg==} + '@opentelemetry/api-logs@0.212.0': + resolution: {integrity: sha512-TEEVrLbNROUkYY51sBJGk7lO/OLjuepch8+hmpM6ffMJQ2z/KVCjdHuCFX6fJj8OkJP2zckPjrJzQtXU3IAsFg==} engines: {node: '>=8.0.0'} '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/configuration@0.211.0': - resolution: {integrity: sha512-PNsCkzsYQKyv8wiUIsH+loC4RYyblOaDnVASBtKS22hK55ToWs2UP6IsrcfSWWn54wWTvVe2gnfwz67Pvrxf2Q==} + '@opentelemetry/configuration@0.212.0': + resolution: {integrity: sha512-D8sAY6RbqMa1W8lCeiaSL2eMCW2MF87QI3y+I6DQE1j+5GrDMwiKPLdzpa/2/+Zl9v1//74LmooCTCJBvWR8Iw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.9.0 @@ -2617,8 +2614,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/context-async-hooks@2.5.0': - resolution: {integrity: sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==} + '@opentelemetry/context-async-hooks@2.5.1': + resolution: {integrity: sha512-MHbu8XxCHcBn6RwvCt2Vpn1WnLMNECfNKYB14LI5XypcgH4IE0/DiVifVR9tAkwPMyLXN8dOoPJfya3IryLQVw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -2629,74 +2626,74 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.5.0': - resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==} + '@opentelemetry/core@2.5.1': + resolution: {integrity: sha512-Dwlc+3HAZqpgTYq0MUyZABjFkcrKTePwuiFVLjahGD8cx3enqihmpAmdgNFO1R4m/sIe5afjJrA25Prqy4NXlA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/exporter-logs-otlp-grpc@0.211.0': - resolution: {integrity: sha512-UhOoWENNqyaAMP/dL1YXLkXt6ZBtovkDDs1p4rxto9YwJX1+wMjwg+Obfyg2kwpcMoaiIFT3KQIcLNW8nNGNfQ==} + '@opentelemetry/exporter-logs-otlp-grpc@0.212.0': + resolution: {integrity: sha512-/0bk6fQG+eSFZ4L6NlckGTgUous/ib5+OVdg0x4OdwYeHzV3lTEo3it1HgnPY6UKpmX7ki+hJvxjsOql8rCeZA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-logs-otlp-http@0.211.0': - resolution: {integrity: sha512-c118Awf1kZirHkqxdcF+rF5qqWwNjJh+BB1CmQvN9AQHC/DUIldy6dIkJn3EKlQnQ3HmuNRKc/nHHt5IusN7mA==} + '@opentelemetry/exporter-logs-otlp-http@0.212.0': + resolution: {integrity: sha512-JidJasLwG/7M9RTxV/64xotDKmFAUSBc9SNlxI32QYuUMK5rVKhHNWMPDzC7E0pCAL3cu+FyiKvsTwLi2KqPYw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-logs-otlp-proto@0.211.0': - resolution: {integrity: sha512-kMvfKMtY5vJDXeLnwhrZMEwhZ2PN8sROXmzacFU/Fnl4Z79CMrOaL7OE+5X3SObRYlDUa7zVqaXp9ZetYCxfDQ==} + '@opentelemetry/exporter-logs-otlp-proto@0.212.0': + resolution: {integrity: sha512-RpKB5UVfxc7c6Ta1UaCrxXDTQ0OD7BCGT66a97Q5zR1x3+9fw4dSaiqMXT/6FAWj2HyFbem6Rcu1UzPZikGTWQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-grpc@0.211.0': - resolution: {integrity: sha512-D/U3G8L4PzZp8ot5hX9wpgbTymgtLZCiwR7heMe4LsbGV4OdctS1nfyvaQHLT6CiGZ6FjKc1Vk9s6kbo9SWLXQ==} + '@opentelemetry/exporter-metrics-otlp-grpc@0.212.0': + resolution: {integrity: sha512-/6Gqf9wpBq22XsomR1i0iPGnbQtCq2Vwnrq5oiDPjYSqveBdK1jtQbhGfmpK2mLLxk4cPDtD1ZEYdIou5K8EaA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-http@0.211.0': - resolution: {integrity: sha512-lfHXElPAoDSPpPO59DJdN5FLUnwi1wxluLTWQDayqrSPfWRnluzxRhD+g7rF8wbj1qCz0sdqABl//ug1IZyWvA==} + '@opentelemetry/exporter-metrics-otlp-http@0.212.0': + resolution: {integrity: sha512-8hgBw3aTTRpSTkU4b9MLf/2YVLnfWp+hfnLq/1Fa2cky+vx6HqTodo+Zv1GTIrAKMOOwgysOjufy0gTxngqeBg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-proto@0.211.0': - resolution: {integrity: sha512-61iNbffEpyZv/abHaz3BQM3zUtA2kVIDBM+0dS9RK68ML0QFLRGYa50xVMn2PYMToyfszEPEgFC3ypGae2z8FA==} + '@opentelemetry/exporter-metrics-otlp-proto@0.212.0': + resolution: {integrity: sha512-C7I4WN+ghn3g7SnxXm2RK3/sRD0k/BYcXaK6lGU3yPjiM7a1M25MLuM6zY3PeVPPzzTZPfuS7+wgn/tHk768Xw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-prometheus@0.211.0': - resolution: {integrity: sha512-cD0WleEL3TPqJbvxwz5MVdVJ82H8jl8mvMad4bNU24cB5SH2mRW5aMLDTuV4614ll46R//R3RMmci26mc2L99g==} + '@opentelemetry/exporter-prometheus@0.212.0': + resolution: {integrity: sha512-hJFLhCJba5MW5QHexZMHZdMhBfNqNItxOsN0AZojwD1W2kU9xM+BEICowFGJFo/vNV+I2BJvTtmuKafeDSAo7Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.211.0': - resolution: {integrity: sha512-eFwx4Gvu6LaEiE1rOd4ypgAiWEdZu7Qzm2QNN2nJqPW1XDeAVH1eNwVcVQl+QK9HR/JCDZ78PZgD7xD/DBDqbw==} + '@opentelemetry/exporter-trace-otlp-grpc@0.212.0': + resolution: {integrity: sha512-9xTuYWp8ClBhljDGAoa0NSsJcsxJsC9zCFKMSZJp1Osb9pjXCMRdA6fwXtlubyqe7w8FH16EWtQNKx/FWi+Ghw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-http@0.211.0': - resolution: {integrity: sha512-F1Rv3JeMkgS//xdVjbQMrI3+26e5SXC7vXA6trx8SWEA0OUhw4JHB+qeHtH0fJn46eFItrYbL5m8j4qi9Sfaxw==} + '@opentelemetry/exporter-trace-otlp-http@0.212.0': + resolution: {integrity: sha512-v/0wMozNoiEPRolzC4YoPo4rAT0q8r7aqdnRw3Nu7IDN0CGFzNQazkfAlBJ6N5y0FYJkban7Aw5WnN73//6YlA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-proto@0.211.0': - resolution: {integrity: sha512-DkjXwbPiqpcPlycUojzG2RmR0/SIK8Gi9qWO9znNvSqgzrnAIE9x2n6yPfpZ+kWHZGafvsvA1lVXucTyyQa5Kg==} + '@opentelemetry/exporter-trace-otlp-proto@0.212.0': + resolution: {integrity: sha512-d1ivqPT0V+i0IVOOdzGaLqonjtlk5jYrW7ItutWzXL/Mk+PiYb59dymy/i2reot9dDnBFWfrsvxyqdutGF5Vig==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-zipkin@2.5.0': - resolution: {integrity: sha512-bk9VJgFgUAzkZzU8ZyXBSWiUGLOM3mZEgKJ1+jsZclhRnAoDNf+YBdq+G9R3cP0+TKjjWad+vVrY/bE/vRR9lA==} + '@opentelemetry/exporter-zipkin@2.5.1': + resolution: {integrity: sha512-Me6JVO7WqXGXsgr4+7o+B7qwKJQbt0c8WamFnxpkR43avgG9k/niTntwCaXiXUTjonWy0+61ZuX6CGzj9nn8CQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 @@ -2707,26 +2704,26 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.211.0': - resolution: {integrity: sha512-h0nrZEC/zvI994nhg7EgQ8URIHt0uDTwN90r3qQUdZORS455bbx+YebnGeEuFghUT0HlJSrLF4iHw67f+odY+Q==} + '@opentelemetry/instrumentation@0.212.0': + resolution: {integrity: sha512-IyXmpNnifNouMOe0I/gX7ENfv2ZCNdYTF0FpCsoBcpbIHzk81Ww9rQTYTnvghszCg7qGrIhNvWC8dhEifgX9Jg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-exporter-base@0.211.0': - resolution: {integrity: sha512-bp1+63V8WPV+bRI9EQG6E9YID1LIHYSZVbp7f+44g9tRzCq+rtw/o4fpL5PC31adcUsFiz/oN0MdLISSrZDdrg==} + '@opentelemetry/otlp-exporter-base@0.212.0': + resolution: {integrity: sha512-HoMv5pQlzbuxiMS0hN7oiUtg8RsJR5T7EhZccumIWxYfNo/f4wFc7LPDfFK6oHdG2JF/+qTocfqIHoom+7kLpw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-grpc-exporter-base@0.211.0': - resolution: {integrity: sha512-mR5X+N4SuphJeb7/K7y0JNMC8N1mB6gEtjyTLv+TSAhl0ZxNQzpSKP8S5Opk90fhAqVYD4R0SQSAirEBlH1KSA==} + '@opentelemetry/otlp-grpc-exporter-base@0.212.0': + resolution: {integrity: sha512-YidOSlzpsun9uw0iyIWrQp6HxpMtBlECE3tiHGAsnpEqJWbAUWcMnIffvIuvTtTQ1OyRtwwaE79dWSQ8+eiB7g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-transformer@0.211.0': - resolution: {integrity: sha512-julhCJ9dXwkOg9svuuYqqjXLhVaUgyUvO2hWbTxwjvLXX2rG3VtAaB0SzxMnGTuoCZizBT7Xqqm2V7+ggrfCXA==} + '@opentelemetry/otlp-transformer@0.212.0': + resolution: {integrity: sha512-bj7zYFOg6Db7NUwsRZQ/WoVXpAf41WY2gsd3kShSfdpZQDRKHWJiRZIg7A8HvWsf97wb05rMFzPbmSHyjEl9tw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -2737,8 +2734,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/propagator-b3@2.5.0': - resolution: {integrity: sha512-g10m4KD73RjHrSvUge+sUxUl8m4VlgnGc6OKvo68a4uMfaLjdFU+AULfvMQE/APq38k92oGUxEzBsAZ8RN/YHg==} + '@opentelemetry/propagator-b3@2.5.1': + resolution: {integrity: sha512-AU6sZgunZrZv/LTeHP+9IQsSSH5p3PtOfDPe8VTdwYH69nZCfvvvXehhzu+9fMW2mgJMh5RVpiH8M9xuYOu5Dg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -2749,8 +2746,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/propagator-jaeger@2.5.0': - resolution: {integrity: sha512-t70ErZCncAR/zz5AcGkL0TF25mJiK1FfDPEQCgreyAHZ+mRJ/bNUiCnImIBDlP3mSDXy6N09DbUEKq0ktW98Hg==} + '@opentelemetry/propagator-jaeger@2.5.1': + resolution: {integrity: sha512-8+SB94/aSIOVGDUPRFSBRHVUm2A8ye1vC6/qcf/D+TF4qat7PC6rbJhRxiUGDXZtMtKEPM/glgv5cBGSJQymSg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -2761,26 +2758,26 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@2.5.0': - resolution: {integrity: sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==} + '@opentelemetry/resources@2.5.1': + resolution: {integrity: sha512-BViBCdE/GuXRlp9k7nS1w6wJvY5fnFX5XvuEtWsTAOQFIO89Eru7lGW3WbfbxtCuZ/GbrJfAziXG0w0dpxL7eQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-logs@0.211.0': - resolution: {integrity: sha512-O5nPwzgg2JHzo59kpQTPUOTzFi0Nv5LxryG27QoXBciX3zWM3z83g+SNOHhiQVYRWFSxoWn1JM2TGD5iNjOwdA==} + '@opentelemetry/sdk-logs@0.212.0': + resolution: {integrity: sha512-qglb5cqTf0mOC1sDdZ7nfrPjgmAqs2OxkzOPIf2+Rqx8yKBK0pS7wRtB1xH30rqahBIut9QJDbDePyvtyqvH/Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.4.0 <1.10.0' - '@opentelemetry/sdk-metrics@2.5.0': - resolution: {integrity: sha512-BeJLtU+f5Gf905cJX9vXFQorAr6TAfK3SPvTFqP+scfIpDQEJfRaGJWta7sJgP+m4dNtBf9y3yvBKVAZZtJQVA==} + '@opentelemetry/sdk-metrics@2.5.1': + resolution: {integrity: sha512-RKMn3QKi8nE71ULUo0g/MBvq1N4icEBo7cQSKnL3URZT16/YH3nSVgWegOjwx7FRBTrjOIkMJkCUn/ZFIEfn4A==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.9.0 <1.10.0' - '@opentelemetry/sdk-node@0.211.0': - resolution: {integrity: sha512-+s1eGjoqmPCMptNxcJJD4IxbWJKNLOQFNKhpwkzi2gLkEbCj6LzSHJNhPcLeBrBlBLtlSpibM+FuS7fjZ8SSFQ==} + '@opentelemetry/sdk-node@0.212.0': + resolution: {integrity: sha512-tJzVDk4Lo44MdgJLlP+gdYdMnjxSNsjC/IiTxj5CFSnsjzpHXwifgl3BpUX67Ty3KcdubNVfedeBc/TlqHXwwg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' @@ -2791,8 +2788,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.5.0': - resolution: {integrity: sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==} + '@opentelemetry/sdk-trace-base@2.5.1': + resolution: {integrity: sha512-iZH3Gw8cxQn0gjpOjJMmKLd9GIaNh/E3v3ST67vyzLSxHBs14HsG4dy7jMYyC5WXGdBVEcM7U/XTF5hCQxjDMw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' @@ -2803,8 +2800,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-node@2.5.0': - resolution: {integrity: sha512-O6N/ejzburFm2C84aKNrwJVPpt6HSTSq8T0ZUMq3xT2XmqT4cwxUItcL5UWGThYuq8RTcbH8u1sfj6dmRci0Ow==} + '@opentelemetry/sdk-trace-node@2.5.1': + resolution: {integrity: sha512-9lopQ6ZoElETOEN0csgmtEV5/9C7BMfA7VtF4Jape3i954b6sTY2k3Xw3CxUTKreDck/vpAuJM+EDo4zheUw+A==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -3193,9 +3190,6 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -3638,6 +3632,9 @@ packages: cjs-module-lexer@1.4.3: resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + cjs-module-lexer@2.2.0: + resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} + clipboardy@4.0.0: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} @@ -3718,16 +3715,12 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} copy-file@11.0.0: @@ -4073,8 +4066,8 @@ packages: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} - esrap@2.2.1: - resolution: {integrity: sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==} + esrap@2.2.2: + resolution: {integrity: sha512-zA6497ha+qKvoWIK+WM9NAh5ni17sKZKhbS5B3PoYbBvaYHZWoS33zmFybmyqpn07RLUxSmn+RCls2/XF+d0oQ==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -4392,8 +4385,8 @@ packages: import-in-the-middle@1.15.0: resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==} - import-in-the-middle@2.0.0: - resolution: {integrity: sha512-yNZhyQYqXpkT0AKq3F3KLasUSK4fHvebNH5hOsKQw2dhGSALvQ4U0BqUc5suziKvydO5u5hgN2hy1RJaho8U5A==} + import-in-the-middle@2.0.6: + resolution: {integrity: sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -5588,8 +5581,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.48.4: - resolution: {integrity: sha512-JV3E7ckuQwxGVm9GbECVtgrs57E9uDz95H2mYpo38QIJd+ET2aR8zDK/iWI8J7VJtib4bwnJ3MMc6FKBJ0hGrQ==} + svelte@5.49.2: + resolution: {integrity: sha512-PYLwnngYzyhKzqDlGVlCH4z+NVI8mC0/bTv15vw25CcdOhxENsOHIbQ36oj5DIf3oBazM+STbCAvaskpxtBmWA==} engines: {node: '>=18'} svgo@4.0.0: @@ -6614,12 +6607,12 @@ snapshots: '@fontsource/libre-barcode-128-text@5.1.0': {} - '@grpc/grpc-js@1.13.4': + '@grpc/grpc-js@1.14.3': dependencies: - '@grpc/proto-loader': 0.7.15 + '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 - '@grpc/proto-loader@0.7.15': + '@grpc/proto-loader@0.8.0': dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 @@ -7128,7 +7121,7 @@ snapshots: dependencies: '@netlify/dev-utils': 4.3.3 '@netlify/redirect-parser': 15.0.3 - cookie: 1.0.2 + cookie: 1.1.1 jsonwebtoken: 9.0.2 netlify-redirector: 0.5.0 @@ -7206,23 +7199,23 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs@0.211.0': + '@opentelemetry/api-logs@0.212.0': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api@1.9.0': {} - '@opentelemetry/configuration@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/configuration@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) yaml: 2.8.0 '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -7231,114 +7224,115 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.36.0 - '@opentelemetry/exporter-logs-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-logs-otlp-grpc@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-logs-otlp-http@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-proto@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-logs-otlp-proto@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-metrics-otlp-grpc@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-metrics-otlp-http@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-proto@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-metrics-otlp-proto@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-prometheus@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-prometheus@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-grpc@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-http@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-proto@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-proto@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-zipkin@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-zipkin@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.36.0 '@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)': @@ -7350,38 +7344,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - import-in-the-middle: 2.0.0 + '@opentelemetry/api-logs': 0.212.0 + import-in-the-middle: 2.0.6 require-in-the-middle: 8.0.0 transitivePeerDependencies: - supports-color - '@opentelemetry/otlp-exporter-base@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-exporter-base@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-grpc-exporter-base@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-transformer@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) protobufjs: 8.0.0 '@opentelemetry/propagator-b3@1.30.1(@opentelemetry/api@1.9.0)': @@ -7389,20 +7383,20 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-b3@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-b3@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-jaeger@1.30.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-jaeger@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': dependencies: @@ -7410,51 +7404,51 @@ snapshots: '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resources@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.36.0 - '@opentelemetry/sdk-logs@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-logs@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-metrics@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-node@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-node@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/configuration': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-grpc': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-proto': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-grpc': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-proto': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-prometheus': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-proto': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-zipkin': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-b3': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-node': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/configuration': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-proto': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-grpc': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-proto': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-prometheus': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-zipkin': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.36.0 transitivePeerDependencies: - supports-color @@ -7466,11 +7460,11 @@ snapshots: '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.36.0 '@opentelemetry/sdk-trace-node@1.30.1(@opentelemetry/api@1.9.0)': @@ -7483,12 +7477,12 @@ snapshots: '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) semver: 7.7.3 - '@opentelemetry/sdk-trace-node@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-node@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions@1.28.0': {} @@ -7718,31 +7712,31 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/eslint-config@8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.48.4)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3)': + '@sveltejs/eslint-config@8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3)': dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.34.0(jiti@2.4.2)) eslint: 9.34.0(jiti@2.4.2) eslint-config-prettier: 9.1.0(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-n: 17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-svelte: 3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.48.4)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) + eslint-plugin-svelte: 3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) globals: 15.15.0 typescript: 5.8.3 typescript-eslint: 8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3) - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) obug: 2.1.1 - svelte: 5.48.4 + svelte: 5.49.2 vite: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.48.4)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 - svelte: 5.48.4 + svelte: 5.49.2 vite: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) vitefu: 1.1.1(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) @@ -7773,8 +7767,6 @@ snapshots: dependencies: '@types/node': 18.19.119 - '@types/cookie@0.6.0': {} - '@types/deep-eql@4.0.2': {} '@types/eslint@8.56.12': @@ -8321,6 +8313,8 @@ snapshots: cjs-module-lexer@1.4.3: {} + cjs-module-lexer@2.2.0: {} + clipboardy@4.0.0: dependencies: execa: 8.0.1 @@ -8398,11 +8392,9 @@ snapshots: cookie-es@1.2.2: {} - cookie@0.6.0: {} - cookie@0.7.2: {} - cookie@1.0.2: {} + cookie@1.1.1: {} copy-file@11.0.0: dependencies: @@ -8767,7 +8759,7 @@ snapshots: - supports-color - typescript - eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.48.4)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)): + eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.5 @@ -8779,9 +8771,9 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.3 - svelte-eslint-parser: 1.4.1(svelte@5.48.4) + svelte-eslint-parser: 1.4.1(svelte@5.49.2) optionalDependencies: - svelte: 5.48.4 + svelte: 5.49.2 transitivePeerDependencies: - ts-node @@ -8850,7 +8842,7 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@2.2.1: + esrap@2.2.2: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -9154,11 +9146,11 @@ snapshots: cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.4 - import-in-the-middle@2.0.0: + import-in-the-middle@2.0.6: dependencies: acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) - cjs-module-lexer: 1.4.3 + cjs-module-lexer: 2.2.0 module-details-from-path: 1.0.4 imurmurhash@0.1.4: {} @@ -9899,10 +9891,10 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.4.0(prettier@3.6.0)(svelte@5.48.4): + prettier-plugin-svelte@3.4.0(prettier@3.6.0)(svelte@5.49.2): dependencies: prettier: 3.6.0 - svelte: 5.48.4 + svelte: 5.49.2 prettier@2.8.8: {} @@ -10310,19 +10302,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.3.4(picomatch@4.0.3)(svelte@5.48.4)(typescript@5.8.3): + svelte-check@4.3.4(picomatch@4.0.3)(svelte@5.49.2)(typescript@5.8.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 fdir: 6.5.0(picomatch@4.0.3) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.48.4 + svelte: 5.49.2 typescript: 5.8.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@1.4.1(svelte@5.48.4): + svelte-eslint-parser@1.4.1(svelte@5.49.2): dependencies: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -10331,30 +10323,30 @@ snapshots: postcss-scss: 4.0.9(postcss@8.5.6) postcss-selector-parser: 7.1.1 optionalDependencies: - svelte: 5.48.4 + svelte: 5.49.2 - svelte-parse-markup@0.1.5(svelte@5.48.4): + svelte-parse-markup@0.1.5(svelte@5.49.2): dependencies: - svelte: 5.48.4 + svelte: 5.49.2 - svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.48.4)(typescript@5.8.3): + svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3): dependencies: detect-indent: 6.1.0 strip-indent: 3.0.0 - svelte: 5.48.4 + svelte: 5.49.2 optionalDependencies: postcss: 8.5.6 postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) typescript: 5.8.3 - svelte2tsx@0.7.33(svelte@5.48.4)(typescript@5.8.3): + svelte2tsx@0.7.33(svelte@5.49.2)(typescript@5.8.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.48.4 + svelte: 5.49.2 typescript: 5.8.3 - svelte@5.48.4: + svelte@5.49.2: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -10366,7 +10358,7 @@ snapshots: clsx: 2.1.1 devalue: 5.6.2 esm-env: 1.2.2 - esrap: 2.2.1 + esrap: 2.2.2 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.21 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0be1fffbfa37..13157ffbcf9c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -19,7 +19,7 @@ catalog: '@netlify/dev': ^4.8.8 '@netlify/edge-functions': ^3.0.0 '@netlify/functions': ^5.0.0 - '@opentelemetry/sdk-node': ^0.211.0 + '@opentelemetry/sdk-node': ^0.212.0 '@opentelemetry/sdk-trace-node': ^2.0.1 '@playwright/test': 1.58.2 '@polka/url': ^1.0.0-next.28 From caf3a18de6581ab7d454d6fa8ad37ebdbdef95e6 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 13 Feb 2026 05:48:55 +0530 Subject: [PATCH 03/72] breaking: require Node 22 (#12548) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/cold-carrots-raise.md | 6 + .changeset/salty-chefs-sleep.md | 6 + .github/workflows/ci.yml | 12 +- packages/adapter-cloudflare/tsconfig.json | 7 +- packages/adapter-vercel/package.json | 3 - packages/kit/package.json | 3 +- packages/kit/src/cli.js | 6 +- packages/kit/src/core/adapt/builder.js | 12 +- packages/kit/src/core/adapt/index.js | 4 +- packages/kit/src/core/config/options.js | 4 +- .../core/sync/create_manifest_data/index.js | 19 +- .../src/core/sync/write_client_manifest.js | 13 +- packages/kit/src/core/sync/write_server.js | 13 +- packages/kit/src/core/sync/write_tsconfig.js | 20 +- packages/kit/src/core/utils.js | 11 +- packages/kit/src/exports/vite/dev/index.js | 10 +- packages/kit/src/exports/vite/index.js | 23 +- .../vite/static_analysis/utils.spec.js | 9 +- packages/package/package.json | 3 +- packages/package/src/cli.js | 6 +- packages/package/src/index.js | 9 +- packages/package/src/validate.js | 11 +- pnpm-lock.yaml | 340 +++++++++--------- pnpm-workspace.yaml | 2 +- 24 files changed, 266 insertions(+), 286 deletions(-) create mode 100644 .changeset/cold-carrots-raise.md create mode 100644 .changeset/salty-chefs-sleep.md diff --git a/.changeset/cold-carrots-raise.md b/.changeset/cold-carrots-raise.md new file mode 100644 index 000000000000..b715e26dbc8e --- /dev/null +++ b/.changeset/cold-carrots-raise.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/package': major +'@sveltejs/kit': major +--- + +breaking: require Node 22 or newer diff --git a/.changeset/salty-chefs-sleep.md b/.changeset/salty-chefs-sleep.md new file mode 100644 index 000000000000..1f2cb46beafb --- /dev/null +++ b/.changeset/salty-chefs-sleep.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/package': patch +'@sveltejs/kit': patch +--- + +chore: remove dependency on kleur diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f54dbac9157..3fd095c9133a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,14 +51,6 @@ jobs: fail-fast: false matrix: include: - - node-version: 18 - os: ubuntu-latest - e2e-browser: 'chromium' - vite: 'baseline' - - node-version: 20 - os: ubuntu-latest - e2e-browser: 'chromium' - vite: 'current' - node-version: 22 os: ubuntu-latest e2e-browser: 'chromium' @@ -238,7 +230,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18, 20, 22, 24] + node-version: [22, 24] steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v4.2.0 @@ -261,5 +253,3 @@ jobs: - run: pnpm playwright install chromium --no-shell - run: cd packages/kit && pnpm prepublishOnly - run: pnpm run test:others - env: - NODE_OPTIONS: ${{matrix.node-version == 22 && '--experimental-strip-types' || ''}} # allows loading svelte.config.ts diff --git a/packages/adapter-cloudflare/tsconfig.json b/packages/adapter-cloudflare/tsconfig.json index 7421129f0c56..14cf70a313f9 100644 --- a/packages/adapter-cloudflare/tsconfig.json +++ b/packages/adapter-cloudflare/tsconfig.json @@ -5,15 +5,14 @@ "noEmit": true, "noImplicitAny": true, "strictNullChecks": true, - "target": "es2022", - "module": "node16", - "moduleResolution": "node16", + "module": "nodenext", "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"], + "target": "es2024", + "lib": ["es2024"], "types": ["@cloudflare/workers-types"] }, "include": [ diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 8c61fcf09393..c1b00cf6152e 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -52,8 +52,5 @@ }, "peerDependencies": { "@sveltejs/kit": "^2.4.0" - }, - "engines": { - "node": ">=20.0" } } diff --git a/packages/kit/package.json b/packages/kit/package.json index 4fdd78c277ce..003ea468d6b1 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -24,7 +24,6 @@ "cookie": "^1.1.1", "devalue": "^5.6.2", "esm-env": "^1.2.2", - "kleur": "^4.1.5", "magic-string": "^0.30.5", "mrmime": "^2.0.0", "sade": "^1.8.1", @@ -131,6 +130,6 @@ }, "types": "types/index.d.ts", "engines": { - "node": ">=18.13" + "node": ">=22" } } diff --git a/packages/kit/src/cli.js b/packages/kit/src/cli.js index 9f56e2e17814..e09ee98cc10b 100755 --- a/packages/kit/src/cli.js +++ b/packages/kit/src/cli.js @@ -1,6 +1,6 @@ import fs from 'node:fs'; import process from 'node:process'; -import colors from 'kleur'; +import { styleText } from 'node:util'; import sade from 'sade'; import { load_config } from './core/config/index.js'; import { coalesce_to_error } from './utils/error.js'; @@ -11,9 +11,9 @@ function handle_error(e) { if (error.name === 'SyntaxError') throw error; - console.error(colors.bold().red(`> ${error.message}`)); + console.error(styleText(['bold', 'red'], `> ${error.message}`)); if (error.stack) { - console.error(colors.gray(error.stack.split('\n').slice(1).join('\n'))); + console.error(styleText('grey', error.stack.split('\n').slice(1).join('\n'))); } process.exit(1); diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 20124e43e334..4ed068f7ada1 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -2,11 +2,10 @@ /** @import { ResolvedConfig } from 'vite' */ /** @import { RouteDefinition } from '@sveltejs/kit' */ /** @import { RouteData, ValidatedConfig, BuildData, ServerMetadata, ServerMetadataRoute, Prerendered, PrerenderMap, Logger, RemoteChunk } from 'types' */ -import colors from 'kleur'; import { createReadStream, createWriteStream, existsSync, statSync } from 'node:fs'; import { extname, resolve, join, dirname, relative } from 'node:path'; import { pipeline } from 'node:stream'; -import { promisify } from 'node:util'; +import { promisify, styleText } from 'node:util'; import zlib from 'node:zlib'; import { copy, rimraf, mkdirp, posixify } from '../../utils/filesystem.js'; import { generate_manifest } from '../generate_manifest/index.js'; @@ -173,11 +172,10 @@ export function create_builder({ if (existsSync(dest)) { console.log( - colors - .bold() - .yellow( - `Overwriting ${dest} with fallback page. Consider using a different name for the fallback.` - ) + styleText( + ['bold', 'yellow'], + `Overwriting ${dest} with fallback page. Consider using a different name for the fallback.` + ) ); } diff --git a/packages/kit/src/core/adapt/index.js b/packages/kit/src/core/adapt/index.js index 48d14116369e..d50a57e36060 100644 --- a/packages/kit/src/core/adapt/index.js +++ b/packages/kit/src/core/adapt/index.js @@ -1,4 +1,4 @@ -import colors from 'kleur'; +import { styleText } from 'node:util'; import { create_builder } from './builder.js'; /** @@ -24,7 +24,7 @@ export async function adapt( // This is only called when adapter is truthy, so the cast is safe const { name, adapt } = /** @type {import('@sveltejs/kit').Adapter} */ (config.kit.adapter); - console.log(colors.bold().cyan(`\n> Using ${name}`)); + console.log(styleText(['bold', 'cyan'], `\n> Using ${name}`)); const builder = create_builder({ config, diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index d16ba4253582..62d8a291eab2 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -1,5 +1,5 @@ import process from 'node:process'; -import colors from 'kleur'; +import { styleText } from 'node:util'; /** @typedef {import('./types.js').Validator} Validator */ @@ -329,7 +329,7 @@ function deprecate( ) { return (input, keypath) => { if (input !== undefined) { - console.warn(colors.bold().yellow(get_message(keypath))); + console.warn(styleText(['bold', 'yellow'], get_message(keypath))); } return fn(input, keypath); diff --git a/packages/kit/src/core/sync/create_manifest_data/index.js b/packages/kit/src/core/sync/create_manifest_data/index.js index b7c5e93d658d..9eb5707c8eb9 100644 --- a/packages/kit/src/core/sync/create_manifest_data/index.js +++ b/packages/kit/src/core/sync/create_manifest_data/index.js @@ -1,13 +1,13 @@ +import { lookup } from 'mrmime'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; -import colors from 'kleur'; -import { lookup } from 'mrmime'; -import { list_files, runtime_directory } from '../../utils.js'; +import { styleText } from 'node:util'; import { posixify, resolve_entry } from '../../../utils/filesystem.js'; import { parse_route_id } from '../../../utils/routing.js'; -import { sort_routes } from './sort.js'; +import { list_files, runtime_directory } from '../../utils.js'; import { isSvelte5Plus } from '../utils.js'; +import { sort_routes } from './sort.js'; /** * Generates the manifest data used for the client-side manifest and types generation. @@ -236,12 +236,11 @@ function create_routes_and_nodes(cwd, config, fallback) { ); if (typo) { console.log( - colors - .bold() - .yellow( - `Missing route file prefix. Did you mean +${file.name}?` + - ` at ${path.join(dir, file.name)}` - ) + styleText( + ['bold', 'yellow'], + `Missing route file prefix. Did you mean +${file.name}?` + + ` at ${path.join(dir, file.name)}` + ) ); } diff --git a/packages/kit/src/core/sync/write_client_manifest.js b/packages/kit/src/core/sync/write_client_manifest.js index 7495e3134854..06789ab95c80 100644 --- a/packages/kit/src/core/sync/write_client_manifest.js +++ b/packages/kit/src/core/sync/write_client_manifest.js @@ -1,8 +1,8 @@ import path from 'node:path'; +import { styleText } from 'node:util'; import { relative_path, resolve_entry } from '../../utils/filesystem.js'; import { s } from '../../utils/misc.js'; import { dedent, isSvelte5Plus, write_if_changed } from './utils.js'; -import colors from 'kleur'; /** * Writes the client manifest to disk. The manifest is used to power the router. It contains the @@ -126,12 +126,11 @@ export function write_client_manifest(kit, manifest_data, output, metadata) { const typo = resolve_entry('src/+hooks.client'); if (typo) { console.log( - colors - .bold() - .yellow( - `Unexpected + prefix. Did you mean ${typo.split('/').at(-1)?.slice(1)}?` + - ` at ${path.resolve(typo)}` - ) + styleText( + ['bold', 'yellow'], + `Unexpected + prefix. Did you mean ${typo.split('/').at(-1)?.slice(1)}?` + + ` at ${path.resolve(typo)}` + ) ); } diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index ea7d9dfe0c99..0e9b1dcb868f 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -1,12 +1,12 @@ import path from 'node:path'; import process from 'node:process'; +import { styleText } from 'node:util'; import { hash } from '../../utils/hash.js'; import { posixify, resolve_entry } from '../../utils/filesystem.js'; import { s } from '../../utils/misc.js'; import { load_error_page, load_template } from '../config/index.js'; import { runtime_directory } from '../utils.js'; import { isSvelte5Plus, write_if_changed } from './utils.js'; -import colors from 'kleur'; import { escape_html } from '../../utils/escape.js'; /** @@ -110,12 +110,11 @@ export function write_server(config, output) { const typo = resolve_entry('src/+hooks.server'); if (typo) { console.log( - colors - .bold() - .yellow( - `Unexpected + prefix. Did you mean ${typo.split('/').at(-1)?.slice(1)}?` + - ` at ${path.resolve(typo)}` - ) + styleText( + ['bold', 'yellow'], + `Unexpected + prefix. Did you mean ${typo.split('/').at(-1)?.slice(1)}?` + + ` at ${path.resolve(typo)}` + ) ); } diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 9451c8aefac5..0e8ef261f5c1 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -1,7 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; -import colors from 'kleur'; +import { styleText } from 'node:util'; import { posixify } from '../../utils/filesystem.js'; import { write_if_changed } from './utils.js'; @@ -167,12 +167,11 @@ function validate_user_config(cwd, out, config) { if (baseUrl || paths) { console.warn( - colors - .bold() - .yellow( - `You have specified a baseUrl and/or paths in your ${config.kind} which interferes with SvelteKit's auto-generated tsconfig.json. ` + - 'Remove it to avoid problems with intellisense. For path aliases, use `kit.alias` instead: https://svelte.dev/docs/kit/configuration#alias' - ) + styleText( + ['bold', 'yellow'], + `You have specified a baseUrl and/or paths in your ${config.kind} which interferes with SvelteKit's auto-generated tsconfig.json. ` + + 'Remove it to avoid problems with intellisense. For path aliases, use `kit.alias` instead: https://svelte.dev/docs/kit/configuration#alias' + ) ); } } else { @@ -180,9 +179,10 @@ function validate_user_config(cwd, out, config) { if (!relative.startsWith('./')) relative = './' + relative; console.warn( - colors - .bold() - .yellow(`Your ${config.kind} should extend the configuration generated by SvelteKit:`) + styleText( + ['bold', 'yellow'], + `Your ${config.kind} should extend the configuration generated by SvelteKit:` + ) ); console.warn(`{\n "extends": "${relative}"\n}`); } diff --git a/packages/kit/src/core/utils.js b/packages/kit/src/core/utils.js index 668306e9e70f..ff6b7a460639 100644 --- a/packages/kit/src/core/utils.js +++ b/packages/kit/src/core/utils.js @@ -2,7 +2,7 @@ import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; import { fileURLToPath } from 'node:url'; -import colors from 'kleur'; +import { styleText } from 'node:util'; import { posixify, to_fs } from '../utils/filesystem.js'; /** @@ -34,11 +34,10 @@ export function logger({ verbose }) { /** @param {string} msg */ const err = (msg) => console.error(msg.replace(/^/gm, ' ')); - log.success = (msg) => log(colors.green(`✔ ${msg}`)); - log.error = (msg) => err(colors.bold().red(msg)); - log.warn = (msg) => log(colors.bold().yellow(msg)); - - log.minor = verbose ? (msg) => log(colors.grey(msg)) : noop; + log.success = (msg) => log(styleText('green', `✔ ${msg}`)); + log.error = (msg) => err(styleText(['bold', 'red'], msg)); + log.warn = (msg) => log(styleText(['bold', 'yellow'], msg)); + log.minor = verbose ? (msg) => log(styleText('grey', msg)) : noop; log.info = verbose ? log : noop; return log; diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 31c13c1ead8b..83e984501536 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -3,7 +3,7 @@ import path from 'node:path'; import process from 'node:process'; import { URL } from 'node:url'; import { AsyncLocalStorage } from 'node:async_hooks'; -import colors from 'kleur'; +import { styleText } from 'node:util'; import sirv from 'sirv'; import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; @@ -70,7 +70,9 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { try { return await vite.ssrLoadModule(url, { fixStacktrace: true }); } catch (/** @type {any} */ err) { - const msg = buildErrorMessage(err, [colors.red(`Internal server error: ${err.message}`)]); + const msg = buildErrorMessage(err, [ + styleText('red', `Internal server error: ${err.message}`) + ]); if (!vite.config.logger.hasErrorLogged(err)) { vite.config.logger.error(msg, { error: err }); @@ -117,7 +119,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { } catch (error) { manifest_error = /** @type {Error} */ (error); - console.error(colors.bold().red(manifest_error.message)); + console.error(styleText(['bold', 'red'], manifest_error.message)); vite.ws.send({ type: 'error', err: { @@ -538,7 +540,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { }); if (manifest_error) { - console.error(colors.bold().red(manifest_error.message)); + console.error(styleText(['bold', 'red'], manifest_error.message)); const error_page = load_error_page(svelte_config); diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 1f1adb8aa312..de09e4304930 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -1,8 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; - -import colors from 'kleur'; +import { styleText } from 'node:util'; import { copy, mkdirp, posixify, read, resolve_entry, rimraf } from '../../utils/filesystem.js'; import { create_static_module, create_dynamic_module } from '../../core/env.js'; @@ -98,7 +97,7 @@ const warning_preprocessor = { const fixed = basename.replace('.svelte', '(.server).js/ts'); const message = - `\n${colors.bold().red(path.relative('.', filename))}\n` + + `\n${styleText(['bold', 'red'], path.relative('.', filename))}\n` + `\`${match[1]}\` will be ignored — move it to ${fixed} instead. See https://svelte.dev/docs/kit/page-options for more information.`; if (!warned.has(message)) { @@ -115,7 +114,7 @@ const warning_preprocessor = { if (basename.startsWith('+layout.') && !has_children(content, isSvelte5Plus())) { const message = - `\n${colors.bold().red(path.relative('.', filename))}\n` + + `\n${styleText(['bold', 'red'], path.relative('.', filename))}\n` + `\`\`${isSvelte5Plus() ? ' or `{@render ...}` tag' : ''}` + ' missing — inner content will not be rendered'; @@ -934,7 +933,7 @@ async function kit({ svelte_config }) { } }, ssrEmitAssets: true, - target: ssr ? 'node18.13' : undefined + target: ssr ? 'node20.12' : undefined }, publicDir: kit.files.assets, worker: { @@ -1325,9 +1324,7 @@ async function kit({ svelte_config }) { // created by other Vite plugins finalise = async () => { console.log( - `\nRun ${colors - .bold() - .cyan('npm run preview')} to preview your production build locally.` + `\nRun ${styleText(['bold', 'cyan'], 'npm run preview')} to preview your production build locally.` ); if (kit.adapter) { @@ -1343,9 +1340,9 @@ async function kit({ svelte_config }) { vite_config ); } else { - console.log(colors.bold().yellow('\nNo adapter specified')); + console.log(styleText(['bold', 'yellow'], '\nNo adapter specified')); - const link = colors.bold().cyan('https://svelte.dev/docs/kit/adapters'); + const link = styleText(['bold', 'cyan'], 'https://svelte.dev/docs/kit/adapters'); console.log( `See ${link} to learn how to configure your app to run on the platform of your choosing` ); @@ -1386,8 +1383,10 @@ function warn_overridden_config(config, resolved_config) { if (overridden.length > 0) { console.error( - colors.bold().red('The following Vite config options will be overridden by SvelteKit:') + - overridden.map((key) => `\n - ${key}`).join('') + styleText( + ['bold', 'red'], + 'The following Vite config options will be overridden by SvelteKit:' + ) + overridden.map((key) => `\n - ${key}`).join('') ); } } diff --git a/packages/kit/src/exports/vite/static_analysis/utils.spec.js b/packages/kit/src/exports/vite/static_analysis/utils.spec.js index 1b65daba559c..67ee5d2f8900 100644 --- a/packages/kit/src/exports/vite/static_analysis/utils.spec.js +++ b/packages/kit/src/exports/vite/static_analysis/utils.spec.js @@ -1,14 +1,7 @@ -import { expect, test, vi } from 'vitest'; +import { expect, test } from 'vitest'; import path from 'node:path'; import { should_ignore, has_children } from './utils.js'; -// Mock the colors module to avoid issues in tests -vi.mock('kleur', () => ({ - default: { - bold: () => ({ red: (/** @type {string} */ str) => str }) - } -})); - // We need to test the warning_preprocessor functionality // Since it's not exported, we'll recreate the relevant parts for testing const options_regex = /(export\s+const\s+(prerender|csr|ssr|trailingSlash))\s*=/s; diff --git a/packages/package/package.json b/packages/package/package.json index 4d534d715aa9..5c5211d5dd6d 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -21,7 +21,6 @@ "type": "module", "dependencies": { "chokidar": "^5.0.0", - "kleur": "^4.1.5", "sade": "^1.8.1", "semver": "^7.5.4", "svelte2tsx": "~0.7.33" @@ -56,6 +55,6 @@ "./package.json": "./package.json" }, "engines": { - "node": "^16.14 || >=18" + "node": ">=22" } } diff --git a/packages/package/src/cli.js b/packages/package/src/cli.js index ca28b1ee1464..9cca67d4005a 100644 --- a/packages/package/src/cli.js +++ b/packages/package/src/cli.js @@ -1,6 +1,6 @@ import fs from 'node:fs'; import process from 'node:process'; -import colors from 'kleur'; +import { styleText } from 'node:util'; import sade from 'sade'; import { load_config } from './config.js'; @@ -8,9 +8,9 @@ import { load_config } from './config.js'; function handle_error(error) { if (error.name === 'SyntaxError') throw error; - console.error(colors.bold().red(`> ${error.message}`)); + console.error(styleText(['bold', 'red'], `> ${error.message}`)); if (error.stack) { - console.error(colors.gray(error.stack.split('\n').slice(1).join('\n'))); + console.error(styleText('grey', error.stack.split('\n').slice(1).join('\n'))); } process.exit(1); diff --git a/packages/package/src/index.js b/packages/package/src/index.js index b91aa92a2b93..62494f85d328 100644 --- a/packages/package/src/index.js +++ b/packages/package/src/index.js @@ -1,6 +1,6 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import colors from 'kleur'; +import { styleText } from 'node:util'; import chokidar from 'chokidar'; import { preprocess } from 'svelte/compiler'; import { copy, mkdirp, posixify, rimraf } from './filesystem.js'; @@ -68,9 +68,10 @@ async function do_build(options, analyse_code) { copy(temp, output); console.log( - colors - .bold() - .green(`${path.relative(options.cwd, input)} -> ${path.relative(options.cwd, output)}`) + styleText( + ['bold', 'green'], + `${path.relative(options.cwd, input)} -> ${path.relative(options.cwd, output)}` + ) ); } diff --git a/packages/package/src/validate.js b/packages/package/src/validate.js index 24fedf37c401..20d01080642a 100644 --- a/packages/package/src/validate.js +++ b/packages/package/src/validate.js @@ -1,4 +1,4 @@ -import colors from 'kleur'; +import { styleText } from 'node:util'; import { load_pkg_json } from './config.js'; /** @@ -31,12 +31,13 @@ export function create_validator(options) { // - maybe there's a custom post-build script that fixes some of these if (warnings.length) { console.log( - colors - .bold() - .yellow('@sveltejs/package found the following issues while packaging your library:') + styleText( + ['bold', 'yellow'], + '@sveltejs/package found the following issues while packaging your library:' + ) ); for (const warning of warnings) { - console.log(colors.yellow(`${warning}\n`)); + console.log(styleText('yellow', `${warning}\n`)); } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27f142487080..6c88c975c671 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,8 +58,8 @@ catalogs: specifier: ^1.0.5 version: 1.0.8 '@types/node': - specifier: ^18.19.119 - version: 18.19.119 + specifier: ^24.1.0 + version: 24.10.11 '@types/semver': specifier: ^7.5.6 version: 7.5.8 @@ -121,13 +121,13 @@ importers: devDependencies: '@changesets/cli': specifier: 'catalog:' - version: 2.29.6(@types/node@18.19.119) + version: 2.29.6(@types/node@24.10.11) '@playwright/test': specifier: 'catalog:' version: 1.58.2 '@sveltejs/eslint-config': specifier: 'catalog:' - version: 8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3) + version: 8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3) '@svitejs/changesets-changelog-github-compact': specifier: 'catalog:' version: 1.2.0 @@ -151,16 +151,16 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 typescript: specifier: ^5.3.3 version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-cloudflare: dependencies: @@ -182,7 +182,7 @@ importers: version: link:../kit '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 esbuild: specifier: 'catalog:' version: 0.25.12 @@ -191,7 +191,7 @@ importers: version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-cloudflare/test/apps/pages: devDependencies: @@ -200,7 +200,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/pages/server-side-dep @@ -209,7 +209,7 @@ importers: version: 5.49.2 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) wrangler: specifier: 'catalog:' version: 4.14.4(@cloudflare/workers-types@4.20250508.0) @@ -221,7 +221,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/workers/server-side-dep @@ -230,7 +230,7 @@ importers: version: 5.49.2 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) wrangler: specifier: 'catalog:' version: 4.14.4(@cloudflare/workers-types@4.20250508.0) @@ -273,10 +273,10 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 rollup: specifier: ^4.14.2 version: 4.57.1 @@ -285,7 +285,7 @@ importers: version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-netlify/test/apps/basic: devDependencies: @@ -294,13 +294,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-netlify/test/apps/edge: devDependencies: @@ -309,13 +309,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-node: dependencies: @@ -340,10 +340,10 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 polka: specifier: 'catalog:' version: 1.0.0-next.28 @@ -355,7 +355,7 @@ importers: version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-static: devDependencies: @@ -367,10 +367,10 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 sirv: specifier: ^3.0.0 version: 3.0.2 @@ -382,7 +382,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -391,7 +391,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) sirv-cli: specifier: 'catalog:' version: 3.0.0 @@ -400,7 +400,7 @@ importers: version: 5.49.2 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-static/test/apps/spa: devDependencies: @@ -409,7 +409,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) sirv-cli: specifier: 'catalog:' version: 3.0.0 @@ -418,7 +418,7 @@ importers: version: 5.49.2 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/adapter-vercel: dependencies: @@ -434,16 +434,16 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 typescript: specifier: ^5.3.3 version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/amp: devDependencies: @@ -474,13 +474,13 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/estree': specifier: 'catalog:' version: 1.0.8 '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 rollup: specifier: ^4.27.4 version: 4.57.1 @@ -492,10 +492,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/enhanced-img/test/apps/basics: devDependencies: @@ -507,13 +507,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit: dependencies: @@ -535,9 +535,6 @@ importers: esm-env: specifier: ^1.2.2 version: 1.2.2 - kleur: - specifier: ^4.1.5 - version: 4.1.5 magic-string: specifier: ^0.30.5 version: 0.30.21 @@ -562,13 +559,13 @@ importers: version: 1.58.2 '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/connect': specifier: 'catalog:' version: 3.4.38 '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 '@types/set-cookie-parser': specifier: 'catalog:' version: 2.4.7 @@ -583,16 +580,16 @@ importers: version: 5.49.2 svelte-preprocess: specifier: 'catalog:' - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.3.3 version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/amp: devDependencies: @@ -604,7 +601,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) dropcss: specifier: 'catalog:' version: 1.0.16 @@ -619,7 +616,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/async: devDependencies: @@ -628,7 +625,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -643,7 +640,7 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/basics: devDependencies: @@ -661,10 +658,10 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) + version: 4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) svelte: specifier: 'catalog:' version: 5.49.2 @@ -682,10 +679,10 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/dev-only: devDependencies: @@ -694,7 +691,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) e2e-test-dep-error: specifier: file:./_test_dependencies/cjs-only version: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only @@ -736,7 +733,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/embed: devDependencies: @@ -745,7 +742,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -757,7 +754,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/hash-based-routing: devDependencies: @@ -766,7 +763,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -778,7 +775,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/no-ssr: devDependencies: @@ -787,7 +784,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -799,7 +796,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/options: devDependencies: @@ -811,7 +808,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -823,7 +820,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/options-2: devDependencies: @@ -835,7 +832,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -850,7 +847,7 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/options-3: devDependencies: @@ -862,7 +859,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -874,7 +871,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/prerendered-app-error-pages: devDependencies: @@ -883,7 +880,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -895,7 +892,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/apps/writes: devDependencies: @@ -904,7 +901,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -916,13 +913,13 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors: devDependencies: vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: devDependencies: @@ -934,7 +931,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -946,7 +943,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/prerender-remote-function-error: devDependencies: @@ -958,7 +955,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -970,7 +967,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -982,7 +979,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -994,7 +991,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -1006,7 +1003,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1018,7 +1015,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -1027,7 +1024,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1039,7 +1036,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -1048,7 +1045,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1060,7 +1057,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -1069,7 +1066,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1081,7 +1078,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -1090,7 +1087,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1102,7 +1099,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -1111,7 +1108,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1123,7 +1120,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -1132,7 +1129,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1144,7 +1141,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -1153,7 +1150,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1165,7 +1162,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -1174,7 +1171,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1186,7 +1183,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -1195,7 +1192,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1207,7 +1204,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -1216,7 +1213,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1228,7 +1225,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -1237,7 +1234,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1249,7 +1246,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/prerendering/basics: devDependencies: @@ -1258,7 +1255,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1270,10 +1267,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/prerendering/options: devDependencies: @@ -1282,7 +1279,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1294,10 +1291,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1306,7 +1303,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.49.2 @@ -1318,19 +1315,16 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/package: dependencies: chokidar: specifier: ^5.0.0 version: 5.0.0 - kleur: - specifier: ^4.1.5 - version: 4.1.5 sade: specifier: ^1.8.1 version: 1.8.1 @@ -1343,10 +1337,10 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' - version: 18.19.119 + version: 24.10.11 '@types/semver': specifier: 'catalog:' version: 7.5.8 @@ -1358,13 +1352,13 @@ importers: version: 5.49.2 svelte-preprocess: specifier: 'catalog:' - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3) typescript: specifier: ^5.3.3 version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages/test-redirect-importer: dependencies: @@ -1406,7 +1400,7 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) prettier: specifier: ^3.3.2 version: 3.6.0 @@ -1430,7 +1424,7 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) packages: @@ -3205,8 +3199,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.119': - resolution: {integrity: sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==} + '@types/node@24.10.11': + resolution: {integrity: sha512-/Af7O8r1frCVgOz0I62jWUtMohJ0/ZQU/ZoketltOJPZpnb17yoNc9BSoVuV9qlaIXJiPNOpsfq4ByFajSArNQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -5730,8 +5724,8 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -6148,7 +6142,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.6(@types/node@18.19.119)': + '@changesets/cli@2.29.6(@types/node@24.10.11)': dependencies: '@changesets/apply-release-plan': 7.0.12 '@changesets/assemble-release-plan': 6.0.9 @@ -6164,7 +6158,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.1(@types/node@18.19.119) + '@inquirer/external-editor': 1.0.1(@types/node@24.10.11) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -6801,12 +6795,12 @@ snapshots: '@import-maps/resolve@2.0.0': {} - '@inquirer/external-editor@1.0.1(@types/node@18.19.119)': + '@inquirer/external-editor@1.0.1(@types/node@24.10.11)': dependencies: chardet: 2.1.0 iconv-lite: 0.6.3 optionalDependencies: - '@types/node': 18.19.119 + '@types/node': 24.10.11 '@isaacs/balanced-match@4.0.1': {} @@ -7712,33 +7706,33 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/eslint-config@8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3)': + '@sveltejs/eslint-config@8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3)': dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.34.0(jiti@2.4.2)) eslint: 9.34.0(jiti@2.4.2) eslint-config-prettier: 9.1.0(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-n: 17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-svelte: 3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) + eslint-plugin-svelte: 3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)) globals: 15.15.0 typescript: 5.8.3 typescript-eslint: 8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3) - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) obug: 2.1.1 svelte: 5.49.2 - vite: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.49.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.49.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.49.2 - vite: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - vitefu: 1.1.1(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + vite: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@svitejs/changesets-changelog-github-compact@1.2.0': dependencies: @@ -7765,7 +7759,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 18.19.119 + '@types/node': 24.10.11 '@types/deep-eql@4.0.2': {} @@ -7780,9 +7774,9 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@18.19.119': + '@types/node@24.10.11': dependencies: - undici-types: 5.26.5 + undici-types: 7.16.0 '@types/normalize-package-data@2.4.4': {} @@ -7794,13 +7788,13 @@ snapshots: '@types/set-cookie-parser@2.4.7': dependencies: - '@types/node': 18.19.119 + '@types/node': 24.10.11 '@types/triple-beam@1.3.5': {} '@types/yauzl@2.10.3': dependencies: - '@types/node': 18.19.119 + '@types/node': 24.10.11 optional: true '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3)': @@ -7985,29 +7979,29 @@ snapshots: - rollup - supports-color - '@vitest/browser-playwright@4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16)': + '@vitest/browser-playwright@4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16)': dependencies: - '@vitest/browser': 4.0.16(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) - '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@vitest/browser': 4.0.16(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) + '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) playwright: 1.58.2 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.0.16(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16)': + '@vitest/browser@4.0.16(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16)': dependencies: - '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@vitest/utils': 4.0.16 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -8024,13 +8018,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@vitest/mocker@4.0.16(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) '@vitest/pretty-format@4.0.16': dependencies: @@ -8759,7 +8753,7 @@ snapshots: - supports-color - typescript - eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)): + eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.49.2)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.5 @@ -8768,7 +8762,7 @@ snapshots: globals: 16.5.0 known-css-properties: 0.37.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.3 svelte-eslint-parser: 1.4.1(svelte@5.49.2) @@ -9835,13 +9829,13 @@ snapshots: '@polka/url': 1.0.0-next.28 trouter: 4.0.0 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)): + postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@types/node@18.19.119)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@24.10.11)(typescript@5.8.3) postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: @@ -9918,7 +9912,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 18.19.119 + '@types/node': 24.10.11 long: 5.3.2 protobufjs@8.0.0: @@ -9933,7 +9927,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 18.19.119 + '@types/node': 24.10.11 long: 5.3.2 publint@0.3.0: @@ -10329,14 +10323,14 @@ snapshots: dependencies: svelte: 5.49.2 - svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3): + svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.49.2)(typescript@5.8.3): dependencies: detect-indent: 6.1.0 strip-indent: 3.0.0 svelte: 5.49.2 optionalDependencies: postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)) typescript: 5.8.3 svelte2tsx@0.7.33(svelte@5.49.2)(typescript@5.8.3): @@ -10450,14 +10444,14 @@ snapshots: picomatch: 4.0.3 typescript: 5.8.3 - ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3): + ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.119 + '@types/node': 24.10.11 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -10496,7 +10490,7 @@ snapshots: uncrypto@0.1.3: {} - undici-types@5.26.5: {} + undici-types@7.16.0: {} undici@5.29.0: dependencies: @@ -10575,7 +10569,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): + vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -10584,20 +10578,20 @@ snapshots: rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 18.19.119 + '@types/node': 24.10.11 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.1 yaml: 2.8.0 - vitefu@1.1.1(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)): + vitefu@1.1.1(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)): optionalDependencies: - vite: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@18.19.119)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.11)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -10614,12 +10608,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 - '@types/node': 18.19.119 - '@vitest/browser-playwright': 4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) + '@types/node': 24.10.11 + '@vitest/browser-playwright': 4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) transitivePeerDependencies: - jiti - less diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 13157ffbcf9c..c50511b24eab 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -31,7 +31,7 @@ catalog: '@svitejs/changesets-changelog-github-compact': ^1.2.0 '@types/connect': ^3.4.38 '@types/estree': ^1.0.5 - '@types/node': ^18.19.119 + '@types/node': ^24.1.0 '@types/semver': ^7.5.6 '@types/set-cookie-parser': ^2.4.7 '@vitest/browser-playwright': ^4.0.0 From 71e82053ace295607290b5c719f57b6f17ef9bd8 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 13 Feb 2026 08:20:33 +0800 Subject: [PATCH 04/72] fix: add svelte.config.js to tsconfig.json `includes` (#12090) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/shaggy-walls-wave.md | 5 +++++ packages/kit/src/core/sync/write_tsconfig.js | 1 + packages/kit/src/core/sync/write_tsconfig.spec.js | 1 + 3 files changed, 7 insertions(+) create mode 100644 .changeset/shaggy-walls-wave.md diff --git a/.changeset/shaggy-walls-wave.md b/.changeset/shaggy-walls-wave.md new file mode 100644 index 000000000000..cb7cffae3a95 --- /dev/null +++ b/.changeset/shaggy-walls-wave.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": major +--- + +breaking: `svelte.config.js` will now be included in type checking \ No newline at end of file diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 0e8ef261f5c1..9782950bd2a3 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -59,6 +59,7 @@ export function get_tsconfig(kit) { 'ambient.d.ts', // careful: changing this name would be a breaking change, because it's referenced in the service-workers documentation 'non-ambient.d.ts', './types/**/$types.d.ts', + config_relative('svelte.config.js'), config_relative('vite.config.js'), config_relative('vite.config.ts') ]); diff --git a/packages/kit/src/core/sync/write_tsconfig.spec.js b/packages/kit/src/core/sync/write_tsconfig.spec.js index b8fe6eadbca8..90cec2d223b1 100644 --- a/packages/kit/src/core/sync/write_tsconfig.spec.js +++ b/packages/kit/src/core/sync/write_tsconfig.spec.js @@ -81,6 +81,7 @@ test('Creates tsconfig include from kit.files', () => { 'ambient.d.ts', 'non-ambient.d.ts', './types/**/$types.d.ts', + '../svelte.config.js', '../vite.config.js', '../vite.config.ts', '../app/**/*.js', From 4777827246727045cf0209399751377564e7951d Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 13 Feb 2026 10:47:43 -0800 Subject: [PATCH 05/72] breaking: remove the `preloadStrategy` option (#15256) Closes https://github.com/sveltejs/kit/issues/11190 `modulepreload` is now baseline 2023: https://caniuse.com/?search=modulepreload I left the type so that it will show up in the docs still for users on older versions of Kit Removed the test from the options app because `modulepreload` only gets written when not prerendering --- .changeset/cuddly-radios-brush.md | 5 +++++ packages/kit/src/core/config/index.spec.js | 2 +- packages/kit/src/core/config/options.js | 1 - packages/kit/src/core/sync/write_server.js | 1 - packages/kit/src/exports/public.d.ts | 1 + packages/kit/src/exports/vite/index.js | 7 ++----- .../kit/src/runtime/server/page/render.js | 15 +-------------- packages/kit/src/types/internal.d.ts | 1 - .../kit/test/apps/options/svelte.config.js | 3 --- .../apps/options/test/paths-assets.test.js | 19 ------------------- packages/kit/test/apps/options/test/test.js | 4 ++-- packages/kit/types/index.d.ts | 1 + 12 files changed, 13 insertions(+), 47 deletions(-) create mode 100644 .changeset/cuddly-radios-brush.md diff --git a/.changeset/cuddly-radios-brush.md b/.changeset/cuddly-radios-brush.md new file mode 100644 index 000000000000..96091fec4f61 --- /dev/null +++ b/.changeset/cuddly-radios-brush.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove the `preloadStrategy` option. `modulepreload` will always be used diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 14ac3361701b..549538e20d18 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -100,7 +100,7 @@ const get_defaults = (prefix = '') => ({ }, inlineStyleThreshold: 0, moduleExtensions: ['.js', '.ts'], - output: { preloadStrategy: 'modulepreload', bundleStrategy: 'split' }, + output: { bundleStrategy: 'split' }, outDir: join(prefix, '.svelte-kit'), router: { type: 'pathname', diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index 62d8a291eab2..26cb922ff89c 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -159,7 +159,6 @@ const options = object( outDir: string('.svelte-kit'), output: object({ - preloadStrategy: list(['modulepreload', 'preload-js', 'preload-mjs']), bundleStrategy: list(['split', 'single', 'inline']) }), diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index 0e9b1dcb868f..096c0f6c8d3c 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -46,7 +46,6 @@ export const options = { env_private_prefix: '${config.kit.env.privatePrefix}', hash_routing: ${s(config.kit.router.type === 'hash')}, hooks: null, // added lazily, via \`get_hooks\` - preload_strategy: ${s(config.kit.output.preloadStrategy)}, root, service_worker: ${has_service_worker}, service_worker_options: ${config.kit.serviceWorker.register ? s(config.kit.serviceWorker.options) : 'null'}, diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index a3fa18376ee5..6baf0d6f0b0f 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -618,6 +618,7 @@ export interface KitConfig { * - `preload-mjs` - uses `` but with the `.mjs` extension which prevents double-parsing in Chromium. Some static webservers will fail to serve .mjs files with a `Content-Type: application/javascript` header, which will cause your application to break. If that doesn't apply to you, this is the option that will deliver the best performance for the largest number of users, until `modulepreload` is more widely supported. * @default "modulepreload" * @since 1.8.4 + * @deprecated removed in 3.0.0 */ preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs'; /** diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index de09e4304930..cabd359a51ac 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -883,9 +883,6 @@ async function kit({ svelte_config }) { }); } - // see the kit.output.preloadStrategy option for details on why we have multiple options here - const ext = kit.output.preloadStrategy === 'preload-mjs' ? 'mjs' : 'js'; - // We could always use a relative asset base path here, but it's better for performance not to. // E.g. Vite generates `new URL('/asset.png', import.meta).href` for a relative path vs just '/asset.png'. // That's larger and takes longer to run and also causes an HTML diff between SSR and client @@ -909,8 +906,8 @@ async function kit({ svelte_config }) { output: { format: inline ? 'iife' : 'esm', name: `__sveltekit_${version_hash}.app`, - entryFileNames: ssr ? '[name].js' : `${prefix}/[name].[hash].${ext}`, - chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[hash].${ext}`, + entryFileNames: ssr ? '[name].js' : `${prefix}/[name].[hash].js`, + chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[hash].js`, assetFileNames: `${prefix}/assets/[name].[hash][extname]`, hoistTransitiveImports: false, sourcemapIgnoreList, diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index 4a6b80be0373..256e86470855 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -346,14 +346,8 @@ export async function render_response({ ); for (const path of included_modulepreloads) { - // see the kit.output.preloadStrategy option for details on why we have multiple options here link_headers.add(`<${encodeURI(path)}>; rel="modulepreload"; nopush`); - - if (options.preload_strategy !== 'modulepreload') { - head.add_script_preload(path); - } else { - head.add_link_tag(path, ['rel="modulepreload"']); - } + head.add_link_tag(path, ['rel="modulepreload"']); } } @@ -711,13 +705,6 @@ class Head { this.#stylesheet_links.push(``); } - /** @param {string} href */ - add_script_preload(href) { - this.#script_preloads.push( - `` - ); - } - /** * @param {string} href * @param {string[]} attributes diff --git a/packages/kit/src/types/internal.d.ts b/packages/kit/src/types/internal.d.ts index 66f4fb30a3ea..9dfa66cdd086 100644 --- a/packages/kit/src/types/internal.d.ts +++ b/packages/kit/src/types/internal.d.ts @@ -459,7 +459,6 @@ export interface SSROptions { env_private_prefix: string; hash_routing: boolean; hooks: ServerHooks; - preload_strategy: ValidatedConfig['kit']['output']['preloadStrategy']; root: SSRComponent['default']; service_worker: boolean; service_worker_options: RegistrationOptions; diff --git a/packages/kit/test/apps/options/svelte.config.js b/packages/kit/test/apps/options/svelte.config.js index 4852cc71596d..9a80be89163d 100644 --- a/packages/kit/test/apps/options/svelte.config.js +++ b/packages/kit/test/apps/options/svelte.config.js @@ -26,9 +26,6 @@ const config = { appDir: '_wheee/nested', inlineStyleThreshold: 1024, outDir: '.custom-out-dir', - output: { - preloadStrategy: 'preload-mjs' - }, paths: { base: '/path-base', // @ts-expect-error our env var string can't match the https template literal diff --git a/packages/kit/test/apps/options/test/paths-assets.test.js b/packages/kit/test/apps/options/test/paths-assets.test.js index 8292404084be..472bf68ee8c8 100644 --- a/packages/kit/test/apps/options/test/paths-assets.test.js +++ b/packages/kit/test/apps/options/test/paths-assets.test.js @@ -212,23 +212,4 @@ test.describe('inlineStyleThreshold', () => { await expect(page.locator('#conditionally')).toBeVisible(); expect(await get_computed_style('#conditionally', 'color')).toBe('rgb(0, 0, 255)'); }); - - test('places preload links before inlined styles', async ({ request }) => { - // Skip in dev mode since inlineStyleThreshold works differently there - test.skip(!!process.env.DEV); - - const response = await request.get('/path-base/base/'); - const html = await response.text(); - - const preloadMatch = html.match(/]+rel="preload"/); - const styleMatch = html.match(/]*>/); - - expect(preloadMatch).not.toBeNull(); - expect(styleMatch).not.toBeNull(); - - const preloadIndex = html.indexOf(preloadMatch[0]); - const styleIndex = html.indexOf(styleMatch[0]); - - expect(preloadIndex).toBeLessThan(styleIndex); - }); }); diff --git a/packages/kit/test/apps/options/test/test.js b/packages/kit/test/apps/options/test/test.js index f401c759078f..0cb5c6c027c5 100644 --- a/packages/kit/test/apps/options/test/test.js +++ b/packages/kit/test/apps/options/test/test.js @@ -175,7 +175,7 @@ test.describe('trailingSlash', () => { if (process.env.DEV) { expect(requests.filter((req) => req.endsWith('.svelte')).length).toBe(1); } else { - expect(requests.filter((req) => req.endsWith('.mjs')).length).toBeGreaterThan(0); + expect(requests.filter((req) => req.endsWith('.js')).length).toBeGreaterThan(0); } requests = []; @@ -207,7 +207,7 @@ test.describe('trailingSlash', () => { if (process.env.DEV) { expect(requests.filter((req) => req.endsWith('.svelte')).length).toBe(1); } else { - expect(requests.filter((req) => req.endsWith('.mjs')).length).toBeGreaterThan(0); + expect(requests.filter((req) => req.endsWith('.js')).length).toBeGreaterThan(0); } requests = []; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 2cce8b7592fe..3a9f8149c63c 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -593,6 +593,7 @@ declare module '@sveltejs/kit' { * - `preload-mjs` - uses `` but with the `.mjs` extension which prevents double-parsing in Chromium. Some static webservers will fail to serve .mjs files with a `Content-Type: application/javascript` header, which will cause your application to break. If that doesn't apply to you, this is the option that will deliver the best performance for the largest number of users, until `modulepreload` is more widely supported. * @default "modulepreload" * @since 1.8.4 + * @deprecated removed in 3.0.0 */ preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs'; /** From df6cf793be013339c88ecf57e59c62a9d504ac7a Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:51:26 -0800 Subject: [PATCH 06/72] chore: update wrangler (#15316) --- pnpm-lock.yaml | 1254 +++++++++++++++++-------------------------- pnpm-workspace.yaml | 2 +- 2 files changed, 496 insertions(+), 760 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6c88c975c671..d96ae9e16e0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,8 +112,8 @@ catalogs: specifier: ^4.0.0 version: 4.0.16 wrangler: - specifier: ^4.14.3 - version: 4.14.4 + specifier: ^4.65.0 + version: 4.65.0 importers: @@ -172,7 +172,7 @@ importers: version: 0.8.0-next.18 wrangler: specifier: ^4.0.0 - version: 4.14.4(@cloudflare/workers-types@4.20250508.0) + version: 4.65.0(@cloudflare/workers-types@4.20250508.0) devDependencies: '@playwright/test': specifier: 'catalog:' @@ -212,7 +212,7 @@ importers: version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) wrangler: specifier: 'catalog:' - version: 4.14.4(@cloudflare/workers-types@4.20250508.0) + version: 4.65.0(@cloudflare/workers-types@4.20250508.0) packages/adapter-cloudflare/test/apps/workers: devDependencies: @@ -233,7 +233,7 @@ importers: version: 6.4.1(@types/node@24.10.11)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) wrangler: specifier: 'catalog:' - version: 4.14.4(@cloudflare/workers-types@4.20250508.0) + version: 4.65.0(@cloudflare/workers-types@4.20250508.0) packages/adapter-netlify: dependencies: @@ -461,7 +461,7 @@ importers: version: 0.30.21 sharp: specifier: ^0.34.1 - version: 0.34.4 + version: 0.34.5 svelte-parse-markup: specifier: ^0.1.5 version: 0.1.5(svelte@5.49.2) @@ -1330,7 +1330,7 @@ importers: version: 1.8.1 semver: specifier: ^7.5.4 - version: 7.7.3 + version: 7.7.4 svelte2tsx: specifier: ~0.7.33 version: 0.7.33(svelte@5.49.2)(typescript@5.8.3) @@ -1515,45 +1515,45 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@cloudflare/kv-asset-handler@0.4.0': - resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} + '@cloudflare/kv-asset-handler@0.4.2': + resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.3.1': - resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==} + '@cloudflare/unenv-preset@2.12.1': + resolution: {integrity: sha512-tP/Wi+40aBJovonSNJSsS7aFJY0xjuckKplmzDs2Xat06BJ68B6iG7YDUWXJL8gNn0gqW7YC5WhlYhO3QbugQA==} peerDependencies: - unenv: 2.0.0-rc.15 - workerd: ^1.20250320.0 + unenv: 2.0.0-rc.24 + workerd: ^1.20260115.0 peerDependenciesMeta: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20250507.0': - resolution: {integrity: sha512-xC+8hmQuOUUNCVT9DWpLMfxhR4Xs4kI8v7Bkybh4pzGC85moH6fMfCBNaP0YQCNAA/BR56aL/AwfvMVGskTK/A==} + '@cloudflare/workerd-darwin-64@1.20260212.0': + resolution: {integrity: sha512-kLxuYutk88Wlo7edp8mlkN68TgZZ9237SUnuX9kNaD5jcOdblUqiBctMRZeRcPsuoX/3g2t0vS4ga02NBEVRNg==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20250507.0': - resolution: {integrity: sha512-Oynff5H8yM4trfUFaKdkOvPV3jac8mg7QC19ILZluCVgLx/JGEVLEJ7do1Na9rLqV8CK4gmUXPrUMX7uerhQgg==} + '@cloudflare/workerd-darwin-arm64@1.20260212.0': + resolution: {integrity: sha512-fqoqQWMA1D0ZzDOD8sp0allREM2M8GHdpxMXQ8EdZpZ70z5bJbJ9Vr4qe35++FNIZJspsDHfTw3Xm/M4ELm/dQ==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20250507.0': - resolution: {integrity: sha512-/HAA+Zg/R7Q/Smyl835FUFKjotZN1UzN9j/BHBd0xKmKov97QkXAX8gsyGnyKqRReIOinp8x/8+UebTICR7VJw==} + '@cloudflare/workerd-linux-64@1.20260212.0': + resolution: {integrity: sha512-bCSQoZzDzV5MSh4ueWo1DgmOn4Hf3QBu4Yo3eQFXA2llYFIu/sZgRtkEehw1X2/SY5Sn6O0EMCqxJYRf82Wdeg==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20250507.0': - resolution: {integrity: sha512-NMPibSdOYeycU0IrKkgOESFJQy7dEpHvuatZxQxlT+mIQK0INzI3irp2kKxhF99s25kPC4p+xg9bU3ugTrs3VQ==} + '@cloudflare/workerd-linux-arm64@1.20260212.0': + resolution: {integrity: sha512-GPvp1iiKQodtbUDi6OmR5I0vD75lawB54tdYGtmypuHC7ZOI2WhBmhb3wCxgnQNOG1z7mhCQrzRCoqrKwYbVWQ==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20250507.0': - resolution: {integrity: sha512-c91fhNP8ufycdIDqjVyKTqeb4ewkbAYXFQbLreMVgh4LLQQPDDEte8wCdmaFy5bIL0M9d85PpdCq51RCzq/FaQ==} + '@cloudflare/workerd-windows-64@1.20260212.0': + resolution: {integrity: sha512-wHRI218Xn4ndgWJCUHH4Zx0YlU5q/o6OmcxXkcw95tJOsQn4lDrhppioPh4eScxJZALf2X+ODeZcyQTCq5exGw==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -1576,8 +1576,8 @@ packages: resolution: {integrity: sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ==} engines: {node: '>=18'} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@envelop/instrumentation@1.0.0': resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} @@ -1589,14 +1589,14 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.4': - resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1607,14 +1607,14 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.4': - resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1625,14 +1625,14 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.4': - resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1643,14 +1643,14 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.4': - resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1661,14 +1661,14 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.4': - resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1679,14 +1679,14 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.4': - resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1697,14 +1697,14 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.4': - resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1715,14 +1715,14 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.4': - resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1733,14 +1733,14 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.4': - resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1751,14 +1751,14 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.4': - resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1769,14 +1769,14 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.4': - resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1787,14 +1787,14 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.4': - resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1805,14 +1805,14 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.4': - resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1823,14 +1823,14 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.4': - resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1841,14 +1841,14 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.4': - resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1859,14 +1859,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.4': - resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1877,14 +1877,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.4': - resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1895,14 +1895,14 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.4': - resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -1913,14 +1913,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.4': - resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -1931,14 +1931,14 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.4': - resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1949,14 +1949,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.4': - resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -1973,20 +1973,26 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.4': - resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1997,14 +2003,14 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.4': - resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -2015,14 +2021,14 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.4': - resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -2033,14 +2039,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.4': - resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2086,10 +2092,6 @@ packages: '@fastify/accept-negotiator@2.0.1': resolution: {integrity: sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@fastify/busboy@3.1.1': resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} @@ -2136,255 +2138,151 @@ packages: resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-arm64@0.34.4': - resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-darwin-x64@0.34.4': - resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.2.3': - resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.2.3': - resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-arm64@1.2.3': - resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.3': - resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-ppc64@1.2.3': - resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.3': - resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.3': - resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': - resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.3': - resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-arm64@0.34.4': - resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.4': - resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-ppc64@0.34.4': - resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] + cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.4': - resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.4': - resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-linuxmusl-arm64@0.34.4': - resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@img/sharp-linuxmusl-x64@0.34.4': - resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-wasm32@0.34.4': - resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.4': - resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-ia32@0.34.4': - resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - - '@img/sharp-win32-x64@0.34.4': - resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -2914,6 +2812,15 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} + + '@poppinss/dumper@0.6.5': + resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} + + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3122,6 +3029,13 @@ packages: cpu: [x64] os: [win32] + '@sindresorhus/is@7.2.0': + resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} + engines: {node: '>=18'} + + '@speed-highlight/core@1.2.14': + resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==} + '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -3244,8 +3158,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.54.0': - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + '@typescript-eslint/project-service@8.55.0': + resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -3254,8 +3168,8 @@ packages: resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.54.0': - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + '@typescript-eslint/scope-manager@8.55.0': + resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.43.0': @@ -3264,8 +3178,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.54.0': - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + '@typescript-eslint/tsconfig-utils@8.55.0': + resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -3281,8 +3195,8 @@ packages: resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.54.0': - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + '@typescript-eslint/types@8.55.0': + resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.43.0': @@ -3291,8 +3205,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.54.0': - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + '@typescript-eslint/typescript-estree@8.55.0': + resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -3304,8 +3218,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.54.0': - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + '@typescript-eslint/utils@8.55.0': + resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3315,8 +3229,8 @@ packages: resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.54.0': - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + '@typescript-eslint/visitor-keys@8.55.0': + resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vercel/nft@0.29.4': @@ -3422,19 +3336,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -3508,9 +3413,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - ast-module-types@6.0.1: resolution: {integrity: sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA==} engines: {node: '>=18'} @@ -3660,10 +3562,6 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - colorspace@1.1.4: resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} @@ -3709,10 +3607,6 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - cookie@1.1.1: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} @@ -3774,9 +3668,6 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -3953,6 +3844,9 @@ packages: resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -3961,13 +3855,13 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.4: - resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true - esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} engines: {node: '>=18'} hasBin: true @@ -4097,17 +3991,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - exit-hook@2.2.1: - resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} - engines: {node: '>=6'} - expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - exsolve@1.0.4: - resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} - extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -4253,9 +4140,6 @@ packages: resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} engines: {node: '>=16'} - get-source@2.0.12: - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} - get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -4264,8 +4148,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.13.1: - resolution: {integrity: sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==} + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -4275,9 +4159,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -4785,11 +4666,6 @@ packages: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -4798,8 +4674,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - miniflare@4.20250507.0: - resolution: {integrity: sha512-EgbQRt/Hnr8HCmW2J/4LRNE3yOzJTdNd98XJ8gnGXFKcimXxUFPiWP3k1df+ZPCtEHp6cXxi8+jP7v9vuIbIsg==} + miniflare@4.20260212.0: + resolution: {integrity: sha512-Lgxq83EuR2q/0/DAVOSGXhXS1V7GDB04HVggoPsenQng8sqEDR3hO4FigIw5ZI2Sv2X7kIc30NCzGHJlCFIYWg==} engines: {node: '>=18.0.0'} hasBin: true @@ -4851,10 +4727,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -4942,9 +4814,6 @@ packages: ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - omit.js@2.0.2: resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} @@ -5199,9 +5068,6 @@ packages: engines: {node: '>=14'} hasBin: true - printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -5360,8 +5226,8 @@ packages: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} engines: {node: '>=6'} - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true @@ -5374,12 +5240,8 @@ packages: set-cookie-parser@3.0.1: resolution: {integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==} - sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - - sharp@0.34.4: - resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: @@ -5451,16 +5313,9 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - stacktracey@2.1.8: - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - stoppable@1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - streamx@2.22.1: resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} @@ -5502,6 +5357,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -5727,12 +5586,12 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} + engines: {node: '>=20.18.1'} - unenv@2.0.0-rc.15: - resolution: {integrity: sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==} + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} @@ -5964,8 +5823,8 @@ packages: resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} engines: {node: '>= 12.0.0'} - workerd@1.20250507.0: - resolution: {integrity: sha512-OXaGjEh5THT9iblwWIyPrYBoaPe/d4zN03Go7/w8CmS8sma7//O9hjbk43sboWkc89taGPmU0/LNyZUUiUlHeQ==} + workerd@1.20260212.0: + resolution: {integrity: sha512-4B9BoZUzKSRv3pVZGEPh7OX+Q817hpUqAUtz5O0TxJVqo4OsYJAUA/sY177Q5ha/twjT9KaJt2DtQzE+oyCOzw==} engines: {node: '>=16'} hasBin: true @@ -5973,12 +5832,12 @@ packages: resolution: {integrity: sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==} engines: {node: '>=12'} - wrangler@4.14.4: - resolution: {integrity: sha512-HIdOdiMIcJV5ymw80RKsr3Uzen/p1kRX4jnCEmR2XVeoEhV2Qw6GABxS5WMTlSES2/vEX0Y+ezUAdsprcUhJ5g==} - engines: {node: '>=18.0.0'} + wrangler@4.65.0: + resolution: {integrity: sha512-R+n3o3tlGzLK9I4fGocPReOuvcnjhtOL2aCVKkHMeuEwt9pPbOO4FxJtx/ec5cIUG/otRyJnfQGCAr9DplBVng==} + engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20250507.0 + '@cloudflare/workers-types': ^4.20260212.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -6067,8 +5926,11 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} - youch@3.3.4: - resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} + youch-core@0.3.3: + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} + + youch@4.1.0-beta.10: + resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} @@ -6077,9 +5939,6 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod@3.22.3: - resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -6127,7 +5986,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.3 + semver: 7.7.4 '@changesets/assemble-release-plan@6.0.9': dependencies: @@ -6136,7 +5995,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.3 + semver: 7.7.4 '@changesets/changelog-git@0.2.1': dependencies: @@ -6169,7 +6028,7 @@ snapshots: package-manager-detector: 0.2.8 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.3 + semver: 7.7.4 spawndamnit: 3.0.1 term-size: 2.2.1 transitivePeerDependencies: @@ -6194,7 +6053,7 @@ snapshots: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.3 + semver: 7.7.4 '@changesets/get-github-info@0.6.0': dependencies: @@ -6264,29 +6123,27 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 - '@cloudflare/kv-asset-handler@0.4.0': - dependencies: - mime: 3.0.0 + '@cloudflare/kv-asset-handler@0.4.2': {} - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0)': + '@cloudflare/unenv-preset@2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260212.0)': dependencies: - unenv: 2.0.0-rc.15 + unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20250507.0 + workerd: 1.20260212.0 - '@cloudflare/workerd-darwin-64@1.20250507.0': + '@cloudflare/workerd-darwin-64@1.20260212.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250507.0': + '@cloudflare/workerd-darwin-arm64@1.20260212.0': optional: true - '@cloudflare/workerd-linux-64@1.20250507.0': + '@cloudflare/workerd-linux-64@1.20260212.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20250507.0': + '@cloudflare/workerd-linux-arm64@1.20260212.0': optional: true - '@cloudflare/workerd-windows-64@1.20250507.0': + '@cloudflare/workerd-windows-64@1.20260212.0': optional: true '@cloudflare/workers-types@4.20250508.0': {} @@ -6308,7 +6165,7 @@ snapshots: gonzales-pe: 4.3.0 node-source-walk: 7.0.1 - '@emnapi/runtime@1.5.0': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -6321,190 +6178,190 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.25.4': + '@esbuild/aix-ppc64@0.27.2': optional: true - '@esbuild/aix-ppc64@0.27.2': + '@esbuild/aix-ppc64@0.27.3': optional: true '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.4': + '@esbuild/android-arm64@0.27.2': optional: true - '@esbuild/android-arm64@0.27.2': + '@esbuild/android-arm64@0.27.3': optional: true '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.25.4': + '@esbuild/android-arm@0.27.2': optional: true - '@esbuild/android-arm@0.27.2': + '@esbuild/android-arm@0.27.3': optional: true '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.25.4': + '@esbuild/android-x64@0.27.2': optional: true - '@esbuild/android-x64@0.27.2': + '@esbuild/android-x64@0.27.3': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.4': + '@esbuild/darwin-arm64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.27.2': + '@esbuild/darwin-arm64@0.27.3': optional: true '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.4': + '@esbuild/darwin-x64@0.27.2': optional: true - '@esbuild/darwin-x64@0.27.2': + '@esbuild/darwin-x64@0.27.3': optional: true '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.4': + '@esbuild/freebsd-arm64@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.27.2': + '@esbuild/freebsd-arm64@0.27.3': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.4': + '@esbuild/freebsd-x64@0.27.2': optional: true - '@esbuild/freebsd-x64@0.27.2': + '@esbuild/freebsd-x64@0.27.3': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.4': + '@esbuild/linux-arm64@0.27.2': optional: true - '@esbuild/linux-arm64@0.27.2': + '@esbuild/linux-arm64@0.27.3': optional: true '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.25.4': + '@esbuild/linux-arm@0.27.2': optional: true - '@esbuild/linux-arm@0.27.2': + '@esbuild/linux-arm@0.27.3': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.4': + '@esbuild/linux-ia32@0.27.2': optional: true - '@esbuild/linux-ia32@0.27.2': + '@esbuild/linux-ia32@0.27.3': optional: true '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.4': + '@esbuild/linux-loong64@0.27.2': optional: true - '@esbuild/linux-loong64@0.27.2': + '@esbuild/linux-loong64@0.27.3': optional: true '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.4': + '@esbuild/linux-mips64el@0.27.2': optional: true - '@esbuild/linux-mips64el@0.27.2': + '@esbuild/linux-mips64el@0.27.3': optional: true '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.4': + '@esbuild/linux-ppc64@0.27.2': optional: true - '@esbuild/linux-ppc64@0.27.2': + '@esbuild/linux-ppc64@0.27.3': optional: true '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.4': + '@esbuild/linux-riscv64@0.27.2': optional: true - '@esbuild/linux-riscv64@0.27.2': + '@esbuild/linux-riscv64@0.27.3': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.4': + '@esbuild/linux-s390x@0.27.2': optional: true - '@esbuild/linux-s390x@0.27.2': + '@esbuild/linux-s390x@0.27.3': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.25.4': + '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/linux-x64@0.27.2': + '@esbuild/linux-x64@0.27.3': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.4': + '@esbuild/netbsd-arm64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.27.2': + '@esbuild/netbsd-arm64@0.27.3': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.4': + '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/netbsd-x64@0.27.2': + '@esbuild/netbsd-x64@0.27.3': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.4': + '@esbuild/openbsd-arm64@0.27.2': optional: true - '@esbuild/openbsd-arm64@0.27.2': + '@esbuild/openbsd-arm64@0.27.3': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.4': + '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/openbsd-x64@0.27.2': + '@esbuild/openbsd-x64@0.27.3': optional: true '@esbuild/openharmony-arm64@0.25.12': @@ -6513,42 +6370,45 @@ snapshots: '@esbuild/openharmony-arm64@0.27.2': optional: true - '@esbuild/sunos-x64@0.25.12': + '@esbuild/openharmony-arm64@0.27.3': optional: true - '@esbuild/sunos-x64@0.25.4': + '@esbuild/sunos-x64@0.25.12': optional: true '@esbuild/sunos-x64@0.27.2': optional: true - '@esbuild/win32-arm64@0.25.12': + '@esbuild/sunos-x64@0.27.3': optional: true - '@esbuild/win32-arm64@0.25.4': + '@esbuild/win32-arm64@0.25.12': optional: true '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/win32-ia32@0.25.12': + '@esbuild/win32-arm64@0.27.3': optional: true - '@esbuild/win32-ia32@0.25.4': + '@esbuild/win32-ia32@0.25.12': optional: true '@esbuild/win32-ia32@0.27.2': optional: true - '@esbuild/win32-x64@0.25.12': + '@esbuild/win32-ia32@0.27.3': optional: true - '@esbuild/win32-x64@0.25.4': + '@esbuild/win32-x64@0.25.12': optional: true '@esbuild/win32-x64@0.27.2': optional: true + '@esbuild/win32-x64@0.27.3': + optional: true + '@eslint-community/eslint-utils@4.9.1(eslint@9.34.0(jiti@2.4.2))': dependencies: eslint: 9.34.0(jiti@2.4.2) @@ -6595,8 +6455,6 @@ snapshots: '@fastify/accept-negotiator@2.0.1': {} - '@fastify/busboy@2.1.1': {} - '@fastify/busboy@3.1.1': {} '@fontsource/libre-barcode-128-text@5.1.0': {} @@ -6632,165 +6490,98 @@ snapshots: '@img/colour@1.0.0': {} - '@img/sharp-darwin-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - optional: true - - '@img/sharp-darwin-arm64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.3 - optional: true - - '@img/sharp-darwin-x64@0.33.5': + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true - '@img/sharp-darwin-x64@0.34.4': + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.3 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-darwin-arm64@1.2.3': - optional: true - - '@img/sharp-libvips-darwin-x64@1.0.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.2.3': - optional: true - - '@img/sharp-libvips-linux-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.2.3': - optional: true - - '@img/sharp-libvips-linux-arm@1.0.5': - optional: true - - '@img/sharp-libvips-linux-arm@1.2.3': + '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true - '@img/sharp-libvips-linux-ppc64@1.2.3': + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.0.4': + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.2.3': + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.4': + '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.2.3': + '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.4': + '@img/sharp-libvips-linux-x64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.3': + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true - '@img/sharp-linux-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 - optional: true - - '@img/sharp-linux-arm64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.3 - optional: true - - '@img/sharp-linux-arm@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 - optional: true - - '@img/sharp-linux-arm@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true - '@img/sharp-linux-ppc64@0.34.4': + '@img/sharp-linux-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.33.5': + '@img/sharp-linux-arm@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.34.4': + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.4 optional: true - '@img/sharp-linux-x64@0.33.5': + '@img/sharp-linux-riscv64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true - '@img/sharp-linux-x64@0.34.4': + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.5': + '@img/sharp-linux-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.4': + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.5': + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 - optional: true - - '@img/sharp-wasm32@0.33.5': - dependencies: - '@emnapi/runtime': 1.5.0 - optional: true - - '@img/sharp-wasm32@0.34.4': + '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.5.0 - optional: true - - '@img/sharp-win32-arm64@0.34.4': + '@emnapi/runtime': 1.8.1 optional: true - '@img/sharp-win32-ia32@0.33.5': + '@img/sharp-win32-arm64@0.34.5': optional: true - '@img/sharp-win32-ia32@0.34.4': + '@img/sharp-win32-ia32@0.34.5': optional: true - '@img/sharp-win32-x64@0.33.5': - optional: true - - '@img/sharp-win32-x64@0.34.4': + '@img/sharp-win32-x64@0.34.5': optional: true '@import-maps/resolve@2.0.0': {} @@ -6878,7 +6669,7 @@ snapshots: https-proxy-agent: 7.0.6 node-fetch: 2.7.0 nopt: 8.0.0 - semver: 7.7.3 + semver: 7.7.4 tar: 7.5.7 transitivePeerDependencies: - encoding @@ -6950,7 +6741,7 @@ snapshots: image-size: 2.0.2 js-image-generator: 1.0.4 parse-gitignore: 2.0.0 - semver: 7.7.3 + semver: 7.7.4 tmp-promise: 3.0.3 uuid: 13.0.0 write-file-atomic: 5.0.1 @@ -7009,7 +6800,7 @@ snapshots: p-wait-for: 5.0.2 parse-imports: 2.2.1 path-key: 4.0.0 - semver: 7.7.3 + semver: 7.7.4 tar: 7.5.7 tmp-promise: 3.0.3 urlpattern-polyfill: 8.0.2 @@ -7043,7 +6834,7 @@ snapshots: jwt-decode: 4.0.0 lambda-local: 2.2.0 read-package-up: 11.0.0 - semver: 7.7.3 + semver: 7.7.4 source-map-support: 0.5.21 transitivePeerDependencies: - encoding @@ -7165,7 +6956,7 @@ snapshots: precinct: 12.2.0 require-package-name: 2.0.1 resolve: 2.0.0-next.5 - semver: 7.7.3 + semver: 7.7.4 tmp-promise: 3.0.3 toml: 3.0.0 unixify: 1.0.0 @@ -7469,7 +7260,7 @@ snapshots: '@opentelemetry/propagator-b3': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-jaeger': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - semver: 7.7.3 + semver: 7.7.4 '@opentelemetry/sdk-trace-node@2.5.1(@opentelemetry/api@1.9.0)': dependencies: @@ -7556,6 +7347,18 @@ snapshots: '@polka/url@1.0.0-next.28': {} + '@poppinss/colors@4.1.6': + dependencies: + kleur: 4.1.5 + + '@poppinss/dumper@0.6.5': + dependencies: + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.2.0 + supports-color: 10.2.2 + + '@poppinss/exception@1.2.3': {} + '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -7692,6 +7495,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true + '@sindresorhus/is@7.2.0': {} + + '@speed-highlight/core@1.2.14': {} + '@standard-schema/spec@1.0.0': {} '@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2))': @@ -7828,17 +7635,17 @@ snapshots: '@typescript-eslint/project-service@8.43.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.8.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.8.3) + '@typescript-eslint/types': 8.55.0 debug: 4.4.3 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.54.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.55.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.8.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.8.3) + '@typescript-eslint/types': 8.55.0 debug: 4.4.3 typescript: 5.8.3 transitivePeerDependencies: @@ -7849,16 +7656,16 @@ snapshots: '@typescript-eslint/types': 8.43.0 '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/scope-manager@8.54.0': + '@typescript-eslint/scope-manager@8.55.0': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 @@ -7876,7 +7683,7 @@ snapshots: '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@8.55.0': {} '@typescript-eslint/typescript-estree@8.43.0(typescript@5.8.3)': dependencies: @@ -7888,21 +7695,21 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 ts-api-utils: 2.4.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.55.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.8.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/project-service': 8.55.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.8.3) + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 debug: 4.4.3 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.8.3) typescript: 5.8.3 @@ -7920,12 +7727,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.55.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.8.3) eslint: 9.34.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: @@ -7936,9 +7743,9 @@ snapshots: '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.54.0': + '@typescript-eslint/visitor-keys@8.55.0': dependencies: - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/types': 8.55.0 eslint-visitor-keys: 4.2.1 '@vercel/nft@0.29.4(rollup@4.57.1)': @@ -8123,15 +7930,11 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-walk@8.3.2: {} - acorn-walk@8.3.4: dependencies: acorn: 8.15.0 optional: true - acorn@8.14.0: {} - acorn@8.15.0: {} agent-base@7.1.3: {} @@ -8206,10 +8009,6 @@ snapshots: array-union@2.1.0: {} - as-table@1.0.55: - dependencies: - printable-characters: 1.0.42 - ast-module-types@6.0.1: {} async-sema@3.1.1: {} @@ -8345,12 +8144,6 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - optional: true - colorspace@1.1.4: dependencies: color: 3.2.1 @@ -8386,8 +8179,6 @@ snapshots: cookie-es@1.2.2: {} - cookie@0.7.2: {} - cookie@1.1.1: {} copy-file@11.0.0: @@ -8449,8 +8240,6 @@ snapshots: dependencies: css-tree: 2.2.1 - data-uri-to-buffer@2.0.2: {} - data-uri-to-buffer@4.0.1: {} dataloader@1.4.0: {} @@ -8515,7 +8304,7 @@ snapshots: detective-typescript@14.0.0(typescript@5.8.3): dependencies: - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.8.3) ast-module-types: 6.0.1 node-source-walk: 7.0.1 typescript: 5.8.3 @@ -8618,6 +8407,8 @@ snapshots: env-paths@3.0.0: {} + error-stack-parser-es@1.0.5: {} + es-module-lexer@1.7.0: {} esbuild@0.25.12: @@ -8649,34 +8440,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.25.4: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.4 - '@esbuild/android-arm': 0.25.4 - '@esbuild/android-arm64': 0.25.4 - '@esbuild/android-x64': 0.25.4 - '@esbuild/darwin-arm64': 0.25.4 - '@esbuild/darwin-x64': 0.25.4 - '@esbuild/freebsd-arm64': 0.25.4 - '@esbuild/freebsd-x64': 0.25.4 - '@esbuild/linux-arm': 0.25.4 - '@esbuild/linux-arm64': 0.25.4 - '@esbuild/linux-ia32': 0.25.4 - '@esbuild/linux-loong64': 0.25.4 - '@esbuild/linux-mips64el': 0.25.4 - '@esbuild/linux-ppc64': 0.25.4 - '@esbuild/linux-riscv64': 0.25.4 - '@esbuild/linux-s390x': 0.25.4 - '@esbuild/linux-x64': 0.25.4 - '@esbuild/netbsd-arm64': 0.25.4 - '@esbuild/netbsd-x64': 0.25.4 - '@esbuild/openbsd-arm64': 0.25.4 - '@esbuild/openbsd-x64': 0.25.4 - '@esbuild/sunos-x64': 0.25.4 - '@esbuild/win32-arm64': 0.25.4 - '@esbuild/win32-ia32': 0.25.4 - '@esbuild/win32-x64': 0.25.4 - esbuild@0.27.2: optionalDependencies: '@esbuild/aix-ppc64': 0.27.2 @@ -8706,6 +8469,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.2 '@esbuild/win32-x64': 0.27.2 + esbuild@0.27.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 + escalade@3.2.0: {} escape-string-regexp@4.0.0: {} @@ -8723,7 +8515,7 @@ snapshots: eslint-compat-utils@0.5.1(eslint@9.34.0(jiti@2.4.2)): dependencies: eslint: 9.34.0(jiti@2.4.2) - semver: 7.7.3 + semver: 7.7.4 eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)): dependencies: @@ -8739,15 +8531,15 @@ snapshots: eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) - '@typescript-eslint/utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3) enhanced-resolve: 5.19.0 eslint: 9.34.0(jiti@2.4.2) eslint-plugin-es-x: 7.8.0(eslint@9.34.0(jiti@2.4.2)) - get-tsconfig: 4.13.1 + get-tsconfig: 4.13.6 globals: 15.15.0 ignore: 5.3.2 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 ts-declaration-location: 1.0.7(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -8764,7 +8556,7 @@ snapshots: postcss: 8.5.6 postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.11)(typescript@5.8.3)) postcss-safe-parser: 7.0.1(postcss@8.5.6) - semver: 7.7.3 + semver: 7.7.4 svelte-eslint-parser: 1.4.1(svelte@5.49.2) optionalDependencies: svelte: 5.49.2 @@ -8872,12 +8664,8 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - exit-hook@2.2.1: {} - expect-type@1.3.0: {} - exsolve@1.0.4: {} - extendable-error@0.1.7: {} extract-zip@2.0.1: @@ -9014,18 +8802,13 @@ snapshots: get-port@7.1.0: {} - get-source@2.0.12: - dependencies: - data-uri-to-buffer: 2.0.2 - source-map: 0.6.1 - get-stream@5.2.0: dependencies: pump: 3.0.2 get-stream@8.0.1: {} - get-tsconfig@4.13.1: + get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -9037,8 +8820,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@10.5.0: dependencies: foreground-child: 3.3.0 @@ -9168,7 +8949,7 @@ snapshots: listhen: 1.9.0 ofetch: 1.4.1 pathe: 2.0.3 - sharp: 0.34.4 + sharp: 0.34.5 svgo: 4.0.0 ufo: 1.6.3 unstorage: 1.16.1(@netlify/blobs@10.5.0) @@ -9315,7 +9096,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.3 + semver: 7.7.4 junk@4.0.1: {} @@ -9519,25 +9300,18 @@ snapshots: dependencies: mime-db: 1.54.0 - mime@3.0.0: {} - mimic-fn@4.0.0: {} min-indent@1.0.1: {} - miniflare@4.20250507.0: + miniflare@4.20260212.0: dependencies: '@cspotcode/source-map-support': 0.8.1 - acorn: 8.14.0 - acorn-walk: 8.3.2 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - stoppable: 1.1.0 - undici: 5.29.0 - workerd: 1.20250507.0 + sharp: 0.34.5 + undici: 7.18.2 + workerd: 1.20260212.0 ws: 8.18.0 - youch: 3.3.4 - zod: 3.22.3 + youch: 4.1.0-beta.10 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9586,8 +9360,6 @@ snapshots: ms@2.1.3: {} - mustache@4.2.0: {} - nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -9634,7 +9406,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.3 + semver: 7.7.4 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -9659,8 +9431,6 @@ snapshots: node-fetch-native: 1.6.6 ufo: 1.6.3 - ohash@2.0.11: {} - omit.js@2.0.2: {} once@1.4.0: @@ -9894,8 +9664,6 @@ snapshots: prettier@3.6.0: {} - printable-characters@1.0.42: {} - process-nextick-args@2.0.1: {} process@0.11.10: {} @@ -10103,7 +9871,7 @@ snapshots: semiver@1.1.0: {} - semver@7.7.3: {} + semver@7.7.4: {} server-side-dep@file:packages/adapter-cloudflare/test/apps/pages/server-side-dep: {} @@ -10111,61 +9879,36 @@ snapshots: set-cookie-parser@3.0.1: {} - sharp@0.33.5: - dependencies: - color: 4.2.3 - detect-libc: 2.1.2 - semver: 7.7.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - optional: true - - sharp@0.34.4: + sharp@0.34.5: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.7.4 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.4 - '@img/sharp-darwin-x64': 0.34.4 - '@img/sharp-libvips-darwin-arm64': 1.2.3 - '@img/sharp-libvips-darwin-x64': 1.2.3 - '@img/sharp-libvips-linux-arm': 1.2.3 - '@img/sharp-libvips-linux-arm64': 1.2.3 - '@img/sharp-libvips-linux-ppc64': 1.2.3 - '@img/sharp-libvips-linux-s390x': 1.2.3 - '@img/sharp-libvips-linux-x64': 1.2.3 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 - '@img/sharp-linux-arm': 0.34.4 - '@img/sharp-linux-arm64': 0.34.4 - '@img/sharp-linux-ppc64': 0.34.4 - '@img/sharp-linux-s390x': 0.34.4 - '@img/sharp-linux-x64': 0.34.4 - '@img/sharp-linuxmusl-arm64': 0.34.4 - '@img/sharp-linuxmusl-x64': 0.34.4 - '@img/sharp-wasm32': 0.34.4 - '@img/sharp-win32-arm64': 0.34.4 - '@img/sharp-win32-ia32': 0.34.4 - '@img/sharp-win32-x64': 0.34.4 + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 shebang-command@2.0.0: dependencies: @@ -10236,15 +9979,8 @@ snapshots: stackback@0.0.2: {} - stacktracey@2.1.8: - dependencies: - as-table: 1.0.55 - get-source: 2.0.12 - std-env@3.10.0: {} - stoppable@1.1.0: {} - streamx@2.22.1: dependencies: fast-fifo: 1.3.2 @@ -10290,6 +10026,8 @@ snapshots: strip-json-comments@3.1.1: {} + supports-color@10.2.2: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -10492,17 +10230,11 @@ snapshots: undici-types@7.16.0: {} - undici@5.29.0: - dependencies: - '@fastify/busboy': 2.1.1 + undici@7.18.2: {} - unenv@2.0.0-rc.15: + unenv@2.0.0-rc.24: dependencies: - defu: 6.1.4 - exsolve: 1.0.4 - ohash: 2.0.11 pathe: 2.0.3 - ufo: 1.6.3 unicorn-magic@0.1.0: {} @@ -10565,7 +10297,7 @@ snapshots: dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.57.1) imagetools-core: 9.1.0 - sharp: 0.34.4 + sharp: 0.34.5 transitivePeerDependencies: - rollup @@ -10665,33 +10397,32 @@ snapshots: triple-beam: 1.4.1 winston-transport: 4.9.0 - workerd@1.20250507.0: + workerd@1.20260212.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250507.0 - '@cloudflare/workerd-darwin-arm64': 1.20250507.0 - '@cloudflare/workerd-linux-64': 1.20250507.0 - '@cloudflare/workerd-linux-arm64': 1.20250507.0 - '@cloudflare/workerd-windows-64': 1.20250507.0 + '@cloudflare/workerd-darwin-64': 1.20260212.0 + '@cloudflare/workerd-darwin-arm64': 1.20260212.0 + '@cloudflare/workerd-linux-64': 1.20260212.0 + '@cloudflare/workerd-linux-arm64': 1.20260212.0 + '@cloudflare/workerd-windows-64': 1.20260212.0 worktop@0.8.0-next.18: dependencies: mrmime: 2.0.0 regexparam: 3.0.0 - wrangler@4.14.4(@cloudflare/workers-types@4.20250508.0): + wrangler@4.65.0(@cloudflare/workers-types@4.20250508.0): dependencies: - '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0) + '@cloudflare/kv-asset-handler': 0.4.2 + '@cloudflare/unenv-preset': 2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260212.0) blake3-wasm: 2.1.5 - esbuild: 0.25.4 - miniflare: 4.20250507.0 + esbuild: 0.27.3 + miniflare: 4.20260212.0 path-to-regexp: 6.3.0 - unenv: 2.0.0-rc.15 - workerd: 1.20250507.0 + unenv: 2.0.0-rc.24 + workerd: 1.20260212.0 optionalDependencies: '@cloudflare/workers-types': 4.20250508.0 fsevents: 2.3.3 - sharp: 0.33.5 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -10756,11 +10487,18 @@ snapshots: yocto-queue@1.2.1: {} - youch@3.3.4: + youch-core@0.3.3: dependencies: - cookie: 0.7.2 - mustache: 4.2.0 - stacktracey: 2.1.8 + '@poppinss/exception': 1.2.3 + error-stack-parser-es: 1.0.5 + + youch@4.1.0-beta.10: + dependencies: + '@poppinss/colors': 4.1.6 + '@poppinss/dumper': 0.6.5 + '@speed-highlight/core': 1.2.14 + cookie: 1.1.1 + youch-core: 0.3.3 zimmerframe@1.1.2: {} @@ -10770,8 +10508,6 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 - zod@3.22.3: {} - zod@3.25.76: {} zod@4.0.14: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c50511b24eab..39358a63d673 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -50,7 +50,7 @@ catalog: valibot: ^1.1.0 vite: ^6.3.5 vitest: ^4.0.0 - wrangler: ^4.14.3 + wrangler: ^4.65.0 catalogs: vite-baseline: vite: ^5.4.21 # should be 5.0.3 but older versions cause errors in some tests From d06affc9246c676fc32b644efc0bbf53b42bc67d Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 17 Feb 2026 18:15:11 +0800 Subject: [PATCH 07/72] chore: change error helpers to use public interface types (#13036) closes https://github.com/sveltejs/kit/issues/12986 This PR changes the `error`, `isHttpError`, `redirect`, and `isRedirect` functions to use the public interface version of the `HttpError` and `Redirect` errors instead of our internal classes. --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Chew Tee Ming Co-authored-by: Rich Harris Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/light-singers-lie.md | 5 +++++ packages/kit/src/exports/index.js | 12 ++++++------ packages/kit/types/index.d.ts | 25 +++++-------------------- 3 files changed, 16 insertions(+), 26 deletions(-) create mode 100644 .changeset/light-singers-lie.md diff --git a/.changeset/light-singers-lie.md b/.changeset/light-singers-lie.md new file mode 100644 index 000000000000..745edec0deb3 --- /dev/null +++ b/.changeset/light-singers-lie.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +chore: change `error`, `isHttpError`, `redirect`, and `isRedirect` to refer to public type instead of internal class diff --git a/packages/kit/src/exports/index.js b/packages/kit/src/exports/index.js index 8923ea96a3a6..2378d41009c1 100644 --- a/packages/kit/src/exports/index.js +++ b/packages/kit/src/exports/index.js @@ -44,7 +44,7 @@ export { VERSION } from '../version.js'; * @param {number} status * @param {App.Error} body * @return {never} - * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. + * @throws {import('./public.js').HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ /** @@ -58,7 +58,7 @@ export { VERSION } from '../version.js'; * @param {number} status * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} [body] * @return {never} - * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. + * @throws {import('./public.js').HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ /** @@ -69,7 +69,7 @@ export { VERSION } from '../version.js'; * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} body An object that conforms to the App.Error type. If a string is passed, it will be used as the message property. * @return {never} - * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. + * @throws {import('./public.js').HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ export function error(status, body) { @@ -85,7 +85,7 @@ export function error(status, body) { * @template {number} T * @param {unknown} e * @param {T} [status] The status to filter for. - * @return {e is (HttpError & { status: T extends undefined ? never : T })} + * @return {e is (import('./public.js').HttpError & { status: T extends undefined ? never : T })} */ export function isHttpError(e, status) { if (!(e instanceof HttpError)) return false; @@ -105,7 +105,7 @@ export function isHttpError(e, status) { * * @param {300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | ({} & number)} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages). Must be in the range 300-308. * @param {string | URL} location The location to redirect to. - * @throws {Redirect} This error instructs SvelteKit to redirect to the specified location. + * @throws {import('./public.js').Redirect} This error instructs SvelteKit to redirect to the specified location. * @throws {Error} If the provided status is invalid. * @return {never} */ @@ -124,7 +124,7 @@ export function redirect(status, location) { /** * Checks whether this is a redirect thrown by {@link redirect}. * @param {unknown} e The object to check. - * @return {e is Redirect} + * @return {e is import('./public.js').Redirect} */ export function isRedirect(e) { return e instanceof Redirect; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 3a9f8149c63c..241047b57951 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2640,7 +2640,7 @@ declare module '@sveltejs/kit' { * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it. * @param status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. * @param body An object that conforms to the App.Error type. If a string is passed, it will be used as the message property. - * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. + * @throws {import('./public.js').HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ export function error(status: number, body: App.Error): never; @@ -2651,7 +2651,7 @@ declare module '@sveltejs/kit' { * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it. * @param status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. * @param body An object that conforms to the App.Error type. If a string is passed, it will be used as the message property. - * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. + * @throws {import('./public.js').HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ export function error(status: number, body?: { @@ -2661,7 +2661,7 @@ declare module '@sveltejs/kit' { * Checks whether this is an error thrown by {@link error}. * @param status The status to filter for. * */ - export function isHttpError(e: unknown, status?: T): e is (HttpError_1 & { + export function isHttpError(e: unknown, status?: T): e is (HttpError & { status: T extends undefined ? never : T; }); /** @@ -2677,7 +2677,7 @@ declare module '@sveltejs/kit' { * * @param status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages). Must be in the range 300-308. * @param location The location to redirect to. - * @throws {Redirect} This error instructs SvelteKit to redirect to the specified location. + * @throws {import('./public.js').Redirect} This error instructs SvelteKit to redirect to the specified location. * @throws {Error} If the provided status is invalid. * */ export function redirect(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | ({} & number), location: string | URL): never; @@ -2685,7 +2685,7 @@ declare module '@sveltejs/kit' { * Checks whether this is a redirect thrown by {@link redirect}. * @param e The object to check. * */ - export function isRedirect(e: unknown): e is Redirect_1; + export function isRedirect(e: unknown): e is Redirect; /** * Create a JSON `Response` object from the supplied data. * @param data The value that will be serialized as JSON. @@ -2767,21 +2767,6 @@ declare module '@sveltejs/kit' { export type LessThan = TNumber extends TArray["length"] ? TArray[number] : LessThan; export type NumericRange = Exclude, LessThan>; export const VERSION: string; - class HttpError_1 { - - constructor(status: number, body: { - message: string; - } extends App.Error ? (App.Error | string | undefined) : App.Error); - status: number; - body: App.Error; - toString(): string; - } - class Redirect_1 { - - constructor(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, location: string); - status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308; - location: string; - } export {}; } From 62eae5e732595ba727f8e72ef76670344cb6d26d Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 19 Feb 2026 10:05:40 -0700 Subject: [PATCH 08/72] chore: migrate from rollup to rolldown (#15297) closes https://github.com/sveltejs/kit/issues/13845 --------- Co-authored-by: Tee Ming --- .changeset/large-onions-attack.md | 5 + .../25-build-and-deploy/40-adapter-node.md | 2 +- eslint.config.js | 1 - packages/adapter-node/index.js | 21 +- packages/adapter-node/package.json | 9 +- .../{rollup.config.js => rolldown.config.js} | 45 +-- packages/adapter-node/tsconfig.json | 1 + pnpm-lock.yaml | 287 ++++++++++++------ 8 files changed, 229 insertions(+), 142 deletions(-) create mode 100644 .changeset/large-onions-attack.md rename packages/adapter-node/{rollup.config.js => rolldown.config.js} (52%) diff --git a/.changeset/large-onions-attack.md b/.changeset/large-onions-attack.md new file mode 100644 index 000000000000..aef0217173b9 --- /dev/null +++ b/.changeset/large-onions-attack.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-node': major +--- + +chore: migrate from rollup to rolldown diff --git a/documentation/docs/25-build-and-deploy/40-adapter-node.md b/documentation/docs/25-build-and-deploy/40-adapter-node.md index 347396904790..70f3ce553af5 100644 --- a/documentation/docs/25-build-and-deploy/40-adapter-node.md +++ b/documentation/docs/25-build-and-deploy/40-adapter-node.md @@ -33,7 +33,7 @@ You will need the output directory, the project's `package.json`, and the produc node build ``` -Development dependencies will be bundled into your app using [Rollup](https://rollupjs.org). To control whether a given package is bundled or externalised, place it in `devDependencies` or `dependencies` respectively in your `package.json`. +Development dependencies will be bundled into your app using [Rolldown](https://rolldown.rs/). To control whether a given package is bundled or externalised, place it in `devDependencies` or `dependencies` respectively in your `package.json`. ### Compressing responses diff --git a/eslint.config.js b/eslint.config.js index e8b6daf86615..0060a6f55620 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -54,7 +54,6 @@ export default [ ignores: [ 'packages/adapter-cloudflare/test/apps/**/*', 'packages/adapter-netlify/test/apps/**/*', - 'packages/adapter-node/rollup.config.js', 'packages/adapter-node/tests/smoke.spec_disabled.js', 'packages/adapter-static/test/apps/**/*', 'packages/kit/src/core/sync/create_manifest_data/test/samples/**/*', diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index f6efaf07b991..9ed74124b9bb 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -1,9 +1,6 @@ import { readFileSync, writeFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; -import { rollup } from 'rollup'; -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import json from '@rollup/plugin-json'; +import { rolldown } from 'rolldown'; /** * @template T @@ -72,22 +69,16 @@ export default function (opts = {}) { // we bundle the Vite output so that deployments only need // their production dependencies. Anything in devDependencies // will get included in the bundled code - const bundle = await rollup({ + const bundle = await rolldown({ input, external: [ // dependencies could have deep exports, so we need a regex ...Object.keys(pkg.dependencies || {}).map((d) => new RegExp(`^${d}(\\/.*)?$`)) ], - plugins: [ - nodeResolve({ - preferBuiltins: true, - exportConditions: ['node'] - }), - // @ts-ignore https://github.com/rollup/plugins/issues/1329 - commonjs({ strictRequires: true }), - // @ts-ignore https://github.com/rollup/plugins/issues/1329 - json() - ] + platform: 'node', + resolve: { + conditionNames: ['node'] + } }); await bundle.write({ diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 0ff39a6cb9ad..09da0782e5ae 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -33,8 +33,8 @@ "ambient.d.ts" ], "scripts": { - "dev": "rollup -cw", - "build": "rollup -c", + "dev": "rolldown -cw", + "build": "rolldown -c", "test": "vitest run", "check": "tsc", "lint": "prettier --check .", @@ -52,10 +52,7 @@ "vitest": "catalog:" }, "dependencies": { - "@rollup/plugin-commonjs": "^29.0.0", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.0", - "rollup": "^4.9.5" + "rolldown": "^1.0.0-rc.5" }, "peerDependencies": { "@sveltejs/kit": "^2.4.0" diff --git a/packages/adapter-node/rollup.config.js b/packages/adapter-node/rolldown.config.js similarity index 52% rename from packages/adapter-node/rollup.config.js rename to packages/adapter-node/rolldown.config.js index 40f8e07558aa..45167575c67d 100644 --- a/packages/adapter-node/rollup.config.js +++ b/packages/adapter-node/rolldown.config.js @@ -1,12 +1,9 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import json from '@rollup/plugin-json'; import { builtinModules } from 'node:module'; import { rmSync } from 'node:fs'; /** * @param {string} filepath - * @returns {import('rollup').Plugin} + * @returns {import('rolldown').Plugin} */ function clearOutput(filepath) { return { @@ -22,7 +19,7 @@ function clearOutput(filepath) { } /** - * @returns {import('rollup').Plugin} + * @returns {import('rolldown').Plugin} */ function prefixBuiltinModules() { return { @@ -42,14 +39,9 @@ export default [ file: 'files/index.js', format: 'esm' }, - plugins: [ - clearOutput('files/index.js'), - nodeResolve({ preferBuiltins: true }), - commonjs(), - json(), - prefixBuiltinModules() - ], - external: ['ENV', 'HANDLER'] + plugins: [clearOutput('files/index.js'), prefixBuiltinModules()], + external: ['ENV', 'HANDLER'], + platform: 'node' }, { input: 'src/env.js', @@ -57,30 +49,20 @@ export default [ file: 'files/env.js', format: 'esm' }, - plugins: [ - clearOutput('files/env.js'), - nodeResolve(), - commonjs(), - json(), - prefixBuiltinModules() - ], - external: ['HANDLER'] + plugins: [clearOutput('files/env.js'), prefixBuiltinModules()], + external: ['HANDLER'], + platform: 'node' }, { input: 'src/handler.js', output: { file: 'files/handler.js', format: 'esm', - inlineDynamicImports: true + codeSplitting: false }, - plugins: [ - clearOutput('files/handler.js'), - nodeResolve(), - commonjs(), - json(), - prefixBuiltinModules() - ], - external: ['ENV', 'MANIFEST', 'SERVER', 'SHIMS'] + plugins: [clearOutput('files/handler.js'), prefixBuiltinModules()], + external: ['ENV', 'MANIFEST', 'SERVER', 'SHIMS'], + platform: 'node' }, { input: 'src/shims.js', @@ -88,6 +70,7 @@ export default [ file: 'files/shims.js', format: 'esm' }, - plugins: [clearOutput('files/shims.js'), nodeResolve(), commonjs(), prefixBuiltinModules()] + plugins: [clearOutput('files/shims.js'), prefixBuiltinModules()], + platform: 'node' } ]; diff --git a/packages/adapter-node/tsconfig.json b/packages/adapter-node/tsconfig.json index 4234750243cc..f97ac86855b3 100644 --- a/packages/adapter-node/tsconfig.json +++ b/packages/adapter-node/tsconfig.json @@ -16,6 +16,7 @@ }, "include": [ "index.js", + "rolldown.config.js", "src/**/*.js", "tests/**/*.js", "tests/**/*.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dcbcf0e4960c..71812a380c12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,7 +26,7 @@ catalogs: version: 0.212.0 '@opentelemetry/sdk-trace-node': specifier: ^2.0.1 - version: 2.5.0 + version: 2.5.1 '@playwright/test': specifier: 1.58.2 version: 1.58.2 @@ -334,18 +334,9 @@ importers: packages/adapter-node: dependencies: - '@rollup/plugin-commonjs': - specifier: ^29.0.0 - version: 29.0.0(rollup@4.57.1) - '@rollup/plugin-json': - specifier: ^6.1.0 - version: 6.1.0(rollup@4.57.1) - '@rollup/plugin-node-resolve': - specifier: ^16.0.0 - version: 16.0.0(rollup@4.57.1) - rollup: - specifier: ^4.9.5 - version: 4.57.1 + rolldown: + specifier: ^1.0.0-rc.5 + version: 1.0.0-rc.5 devDependencies: '@polka/url': specifier: 'catalog:' @@ -664,7 +655,7 @@ importers: version: 0.212.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': specifier: 'catalog:' - version: 2.5.0(@opentelemetry/api@1.9.0) + version: 2.5.1(@opentelemetry/api@1.9.0) '@sveltejs/kit': specifier: workspace:^ version: link:../../.. @@ -1631,12 +1622,18 @@ packages: resolution: {integrity: sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ==} engines: {node: '>=18'} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} '@emnapi/runtime@1.8.1': resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@envelop/instrumentation@1.0.0': resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} engines: {node: '>=18.0.0'} @@ -2821,6 +2818,9 @@ packages: engines: {node: '>=18'} hasBin: true + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@netlify/ai@0.3.5': resolution: {integrity: sha512-7suwHOBy9s14yeWRxt+w3Zh6Rrx8gX7zP/xmsxqxLyJlcBykWm6siBJs2mMtJgbWvcrgI5BEgNLh5qfXlTCsRQ==} engines: {node: '>=20.6.1'} @@ -2971,12 +2971,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/context-async-hooks@2.5.0': - resolution: {integrity: sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/context-async-hooks@2.5.1': resolution: {integrity: sha512-MHbu8XxCHcBn6RwvCt2Vpn1WnLMNECfNKYB14LI5XypcgH4IE0/DiVifVR9tAkwPMyLXN8dOoPJfya3IryLQVw==} engines: {node: ^18.19.0 || >=20.6.0} @@ -2989,12 +2983,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.5.0': - resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.5.1': resolution: {integrity: sha512-Dwlc+3HAZqpgTYq0MUyZABjFkcrKTePwuiFVLjahGD8cx3enqihmpAmdgNFO1R4m/sIe5afjJrA25Prqy4NXlA==} engines: {node: ^18.19.0 || >=20.6.0} @@ -3127,12 +3115,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@2.5.0': - resolution: {integrity: sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/resources@2.5.1': resolution: {integrity: sha512-BViBCdE/GuXRlp9k7nS1w6wJvY5fnFX5XvuEtWsTAOQFIO89Eru7lGW3WbfbxtCuZ/GbrJfAziXG0w0dpxL7eQ==} engines: {node: ^18.19.0 || >=20.6.0} @@ -3163,12 +3145,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.5.0': - resolution: {integrity: sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.5.1': resolution: {integrity: sha512-iZH3Gw8cxQn0gjpOjJMmKLd9GIaNh/E3v3ST67vyzLSxHBs14HsG4dy7jMYyC5WXGdBVEcM7U/XTF5hCQxjDMw==} engines: {node: ^18.19.0 || >=20.6.0} @@ -3181,12 +3157,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-node@2.5.0': - resolution: {integrity: sha512-O6N/ejzburFm2C84aKNrwJVPpt6HSTSq8T0ZUMq3xT2XmqT4cwxUItcL5UWGThYuq8RTcbH8u1sfj6dmRci0Ow==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-node@2.5.1': resolution: {integrity: sha512-9lopQ6ZoElETOEN0csgmtEV5/9C7BMfA7VtF4Jape3i954b6sTY2k3Xw3CxUTKreDck/vpAuJM+EDo4zheUw+A==} engines: {node: ^18.19.0 || >=20.6.0} @@ -3201,6 +3171,9 @@ packages: resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} engines: {node: '>=14'} + '@oxc-project/types@0.114.0': + resolution: {integrity: sha512-//nBfbzHQHvJs8oFIjv6coZ6uxQ4alLfiPe6D5vit6c4pmxATHHlVwgB1k+Hv4yoAMyncdxgRBF5K4BYWUCzvA==} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -3350,6 +3323,90 @@ packages: resolution: {integrity: sha512-NvV5jPAQIMCoHvaJ0ZhfouBJ2woFYYf+o6B7dCHGh/tLKSPVoxhjffi35xPuMHgOv65aTOKUzML5XwQF9EkDAA==} engines: {node: '>=18'} + '@rolldown/binding-android-arm64@1.0.0-rc.5': + resolution: {integrity: sha512-zCEmUrt1bggwgBgeKLxNj217J1OrChrp3jJt24VK9jAharSTeVaHODNL+LpcQVhRz+FktYWfT9cjo5oZ99ZLpg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.5': + resolution: {integrity: sha512-ZP9xb9lPAex36pvkNWCjSEJW/Gfdm9I3ssiqOFLmpZ/vosPXgpoGxCmh+dX1Qs+/bWQE6toNFXWWL8vYoKoK9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.5': + resolution: {integrity: sha512-7IdrPunf6dp9mywMgTOKMMGDnMHQ6+h5gRl6LW8rhD8WK2kXX0IwzcM5Zc0B5J7xQs8QWOlKjv8BJsU/1CD3pg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.5': + resolution: {integrity: sha512-o/JCk+dL0IN68EBhZ4DqfsfvxPfMeoM6cJtxORC1YYoxGHZyth2Kb2maXDb4oddw2wu8iIbnYXYPEzBtAF5CAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.5': + resolution: {integrity: sha512-IIBwTtA6VwxQLcEgq2mfrUgam7VvPZjhd/jxmeS1npM+edWsrrpRLHUdze+sk4rhb8/xpP3flemgcZXXUW6ukw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.5': + resolution: {integrity: sha512-KSol1De1spMZL+Xg7K5IBWXIvRWv7+pveaxFWXpezezAG7CS6ojzRjtCGCiLxQricutTAi/LkNWKMsd2wNhMKQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.5': + resolution: {integrity: sha512-WFljyDkxtXRlWxMjxeegf7xMYXxUr8u7JdXlOEWKYgDqEgxUnSEsVDxBiNWQ1D5kQKwf8Wo4sVKEYPRhCdsjwA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.5': + resolution: {integrity: sha512-CUlplTujmbDWp2gamvrqVKi2Or8lmngXT1WxsizJfts7JrvfGhZObciaY/+CbdbS9qNnskvwMZNEhTPrn7b+WA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.5': + resolution: {integrity: sha512-wdf7g9NbVZCeAo2iGhsjJb7I8ZFfs6X8bumfrWg82VK+8P6AlLXwk48a1ASiJQDTS7Svq2xVzZg3sGO2aXpHRA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.5': + resolution: {integrity: sha512-0CWY7ubu12nhzz+tkpHjoG3IRSTlWYe0wrfJRf4qqjqQSGtAYgoL9kwzdvlhaFdZ5ffVeyYw9qLsChcjUMEloQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.5': + resolution: {integrity: sha512-LztXnGzv6t2u830mnZrFLRVqT/DPJ9DL4ZTz/y93rqUVkeHjMMYIYaFj+BUthiYxbVH9dH0SZYufETspKY/NhA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.5': + resolution: {integrity: sha512-jUct1XVeGtyjqJXEAfvdFa8xoigYZ2rge7nYEm70ppQxpfH9ze2fbIrpHmP2tNM2vL/F6Dd0CpXhpjPbC6bSxQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.5': + resolution: {integrity: sha512-VQ8F9ld5gw29epjnVGdrx8ugiLTe8BMqmhDYy7nGbdeDo4HAt4bgdZvLbViEhg7DZyHLpiEUlO5/jPSUrIuxRQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.5': + resolution: {integrity: sha512-RxlLX/DPoarZ9PtxVrQgZhPoor987YtKQqCo5zkjX+0S0yLJ7Vv515Wk6+xtTL67VONKJKxETWZwuZjss2idYw==} + '@rollup/plugin-commonjs@29.0.0': resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -3587,6 +3644,9 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -3608,9 +3668,6 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.119': - resolution: {integrity: sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==} - '@types/node@24.10.13': resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} @@ -5756,6 +5813,11 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rolldown@1.0.0-rc.5: + resolution: {integrity: sha512-0AdalTs6hNTioaCYIkAa7+xsmHBfU5hCNclZnM/lp7lGGDuUOb6N4BVNtwiomybbencDjq/waKjTImqiGCs5sw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.57.1: resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -6160,9 +6222,6 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -6798,6 +6857,12 @@ snapshots: gonzales-pe: 4.3.0 node-source-walk: 7.0.1 + '@emnapi/core@1.8.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 @@ -6808,6 +6873,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + '@envelop/instrumentation@1.0.0': dependencies: '@whatwg-node/promise-helpers': 1.3.2 @@ -7551,6 +7621,13 @@ snapshots: - encoding - supports-color + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@netlify/ai@0.3.5(@netlify/api@14.0.12)': dependencies: '@netlify/api': 14.0.12 @@ -7876,10 +7953,6 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -7889,11 +7962,6 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.36.0 - '@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -8074,12 +8142,6 @@ snapshots: '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 - '@opentelemetry/resources@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -8136,13 +8198,6 @@ snapshots: '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 - '@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -8160,13 +8215,6 @@ snapshots: '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) semver: 7.7.3 - '@opentelemetry/sdk-trace-node@2.5.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-node@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -8178,6 +8226,8 @@ snapshots: '@opentelemetry/semantic-conventions@1.36.0': {} + '@oxc-project/types@0.114.0': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -8289,6 +8339,49 @@ snapshots: '@publint/pack@0.1.0': {} + '@rolldown/binding-android-arm64@1.0.0-rc.5': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.5': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.5': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.5': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.5': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.5': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.5': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.5': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.5': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.5': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.5': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.5': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.5': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.5': {} + '@rollup/plugin-commonjs@29.0.0(rollup@4.57.1)': dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.57.1) @@ -8465,6 +8558,11 @@ snapshots: '@tsconfig/node16@1.0.4': optional: true + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -8486,10 +8584,6 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@18.19.119': - dependencies: - undici-types: 5.26.5 - '@types/node@24.10.13': dependencies: undici-types: 7.16.0 @@ -9917,7 +10011,7 @@ snapshots: listhen: 1.9.0 ofetch: 1.4.1 pathe: 2.0.3 - sharp: 0.34.4 + sharp: 0.34.5 svgo: 4.0.0 ufo: 1.6.3 unstorage: 1.16.1(@netlify/blobs@10.5.0) @@ -10673,7 +10767,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 18.19.119 + '@types/node': 24.10.13 long: 5.3.2 protobufjs@8.0.0: @@ -10688,7 +10782,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 18.19.119 + '@types/node': 24.10.13 long: 5.3.2 publint@0.3.0: @@ -10813,6 +10907,25 @@ snapshots: reusify@1.0.4: {} + rolldown@1.0.0-rc.5: + dependencies: + '@oxc-project/types': 0.114.0 + '@rolldown/pluginutils': 1.0.0-rc.5 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.5 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.5 + '@rolldown/binding-darwin-x64': 1.0.0-rc.5 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.5 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.5 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.5 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.5 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.5 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.5 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.5 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.5 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.5 + rollup@4.57.1: dependencies: '@types/estree': 1.0.8 @@ -11285,8 +11398,6 @@ snapshots: uncrypto@0.1.3: {} - undici-types@5.26.5: {} - undici-types@7.16.0: {} undici@5.29.0: From 63b4df3a0440b7a03e6f5e178669f186bbb12bc2 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 20 Feb 2026 09:44:05 +0800 Subject: [PATCH 09/72] chore: upgrade wrangler and remove deprecated `event.platform.context` (#15347) This PR upgrades wrangler to a newer version without vulnerabilities. Bumps the peer version too. Additionally, we remove the deprecated `platform.context` property. Also ran `pnpm dedupe` to try to get rid of as many older unused transitive dependencies that were setting off dependabot security alerts. --- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/five-readers-march.md | 5 + .changeset/fluffy-tires-judge.md | 5 + .changeset/forty-ducks-fly.md | 5 + packages/adapter-cloudflare/ambient.d.ts | 2 - packages/adapter-cloudflare/package.json | 4 +- packages/adapter-cloudflare/src/worker.js | 1 - pnpm-lock.yaml | 1239 ++------------------- pnpm-workspace.yaml | 2 +- 8 files changed, 137 insertions(+), 1126 deletions(-) create mode 100644 .changeset/five-readers-march.md create mode 100644 .changeset/fluffy-tires-judge.md create mode 100644 .changeset/forty-ducks-fly.md diff --git a/.changeset/five-readers-march.md b/.changeset/five-readers-march.md new file mode 100644 index 000000000000..e9fb4707d606 --- /dev/null +++ b/.changeset/five-readers-march.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare': major +--- + +breaking: upgrade `@cloudflare/workers-types` to 4.20260219.0 diff --git a/.changeset/fluffy-tires-judge.md b/.changeset/fluffy-tires-judge.md new file mode 100644 index 000000000000..f5a5e090b2f9 --- /dev/null +++ b/.changeset/fluffy-tires-judge.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare': major +--- + +breaking: upgrade minimum `wrangler` version to ^4.67.0 diff --git a/.changeset/forty-ducks-fly.md b/.changeset/forty-ducks-fly.md new file mode 100644 index 000000000000..98c98783ee29 --- /dev/null +++ b/.changeset/forty-ducks-fly.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare': major +--- + +breaking: remove `platform.context` in favour of `platform.ctx` diff --git a/packages/adapter-cloudflare/ambient.d.ts b/packages/adapter-cloudflare/ambient.d.ts index d99dd15ab6cc..c485bb610945 100644 --- a/packages/adapter-cloudflare/ambient.d.ts +++ b/packages/adapter-cloudflare/ambient.d.ts @@ -9,8 +9,6 @@ declare global { export interface Platform { env: unknown; ctx: ExecutionContext; - /** @deprecated Use `ctx` instead */ - context: ExecutionContext; caches: CacheStorage; cf?: IncomingRequestCfProperties; } diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 4df44ed1c37e..ae46453ce50b 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -44,7 +44,7 @@ "prepublishOnly": "pnpm build" }, "dependencies": { - "@cloudflare/workers-types": "^4.20250507.0", + "@cloudflare/workers-types": "^4.20260219.0", "worktop": "0.8.0-next.18" }, "devDependencies": { @@ -57,6 +57,6 @@ }, "peerDependencies": { "@sveltejs/kit": "^2.0.0", - "wrangler": "^4.0.0" + "wrangler": "^4.67.0" } } diff --git a/packages/adapter-cloudflare/src/worker.js b/packages/adapter-cloudflare/src/worker.js index bcee34b882e2..f34f099bb759 100644 --- a/packages/adapter-cloudflare/src/worker.js +++ b/packages/adapter-cloudflare/src/worker.js @@ -100,7 +100,6 @@ export default { platform: { env, ctx, - context: ctx, // deprecated in favor of ctx // @ts-expect-error webworker types from worktop are not compatible with Cloudflare Workers types caches, // @ts-expect-error the type is correct but ts is confused because platform.cf uses the type from index.ts while req.cf uses the type from index.d.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71812a380c12..ee9a9cafe354 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,7 +14,7 @@ catalogs: version: 5.1.0 '@netlify/dev': specifier: ^4.8.8 - version: 4.8.8 + version: 4.11.2 '@netlify/edge-functions': specifier: ^3.0.0 version: 3.0.3 @@ -112,7 +112,7 @@ catalogs: specifier: ^4.0.0 version: 4.0.16 wrangler: - specifier: ^4.65.0 + specifier: ^4.67.0 version: 4.67.0 importers: @@ -165,14 +165,14 @@ importers: packages/adapter-cloudflare: dependencies: '@cloudflare/workers-types': - specifier: ^4.20250507.0 - version: 4.20250508.0 + specifier: ^4.20260219.0 + version: 4.20260219.0 worktop: specifier: 0.8.0-next.18 version: 0.8.0-next.18 wrangler: - specifier: ^4.0.0 - version: 4.14.4(@cloudflare/workers-types@4.20250508.0) + specifier: ^4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260219.0) devDependencies: '@playwright/test': specifier: 'catalog:' @@ -212,7 +212,7 @@ importers: version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) wrangler: specifier: 'catalog:' - version: 4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260219.0) packages/adapter-cloudflare/test/apps/workers: devDependencies: @@ -233,7 +233,7 @@ importers: version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) wrangler: specifier: 'catalog:' - version: 4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260219.0) packages/adapter-netlify: dependencies: @@ -246,7 +246,7 @@ importers: devDependencies: '@netlify/dev': specifier: 'catalog:' - version: 4.8.8(@netlify/api@14.0.12)(rollup@4.57.1) + version: 4.11.2(rollup@4.57.1) '@netlify/edge-functions': specifier: 'catalog:' version: 3.0.3 @@ -467,7 +467,7 @@ importers: version: 0.30.21 sharp: specifier: ^0.34.1 - version: 0.34.4 + version: 0.34.5 svelte-parse-markup: specifier: ^0.1.5 version: 0.1.5(svelte@5.51.5) @@ -1518,10 +1518,6 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@cloudflare/kv-asset-handler@0.4.0': - resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} - engines: {node: '>=18.0.0'} - '@cloudflare/kv-asset-handler@0.4.2': resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} @@ -1535,77 +1531,38 @@ packages: workerd: optional: true - '@cloudflare/unenv-preset@2.3.1': - resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==} - peerDependencies: - unenv: 2.0.0-rc.15 - workerd: ^1.20250320.0 - peerDependenciesMeta: - workerd: - optional: true - - '@cloudflare/workerd-darwin-64@1.20250507.0': - resolution: {integrity: sha512-xC+8hmQuOUUNCVT9DWpLMfxhR4Xs4kI8v7Bkybh4pzGC85moH6fMfCBNaP0YQCNAA/BR56aL/AwfvMVGskTK/A==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - '@cloudflare/workerd-darwin-64@1.20260219.0': resolution: {integrity: sha512-k+xM+swQBQnkrvwobjRPxyeYwjLSludJusR0PqeHe+h6X9QIRGgw3s1AO38lXQsqzMSgG5709oOXSF19NKVVaQ==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20250507.0': - resolution: {integrity: sha512-Oynff5H8yM4trfUFaKdkOvPV3jac8mg7QC19ILZluCVgLx/JGEVLEJ7do1Na9rLqV8CK4gmUXPrUMX7uerhQgg==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260219.0': resolution: {integrity: sha512-EyfQdsG1KcIVAf4qndT00LZly7sLFm1VxMWHBvOFB/EVYF2sE5HZ0dPbe+yrax5p3eS0oLZthR8ynhz4UulMUQ==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20250507.0': - resolution: {integrity: sha512-/HAA+Zg/R7Q/Smyl835FUFKjotZN1UzN9j/BHBd0xKmKov97QkXAX8gsyGnyKqRReIOinp8x/8+UebTICR7VJw==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - '@cloudflare/workerd-linux-64@1.20260219.0': resolution: {integrity: sha512-N0UHXILYYa6htFO/uC92uAqusvynbSbOcHcrVXMKqP9Jy7eqXGMovyKIrNgzYnKIszNB+0lfUYdGI3Wci07LuA==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20250507.0': - resolution: {integrity: sha512-NMPibSdOYeycU0IrKkgOESFJQy7dEpHvuatZxQxlT+mIQK0INzI3irp2kKxhF99s25kPC4p+xg9bU3ugTrs3VQ==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260219.0': resolution: {integrity: sha512-835pjQ9uuAtwPBOAkPf+oxH3mNE5mqWuE3H7hJsul7WZsRD2FDcariyoT2AW6xyOePILrn4uMnmG1KGc9m/8Pg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20250507.0': - resolution: {integrity: sha512-c91fhNP8ufycdIDqjVyKTqeb4ewkbAYXFQbLreMVgh4LLQQPDDEte8wCdmaFy5bIL0M9d85PpdCq51RCzq/FaQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - '@cloudflare/workerd-windows-64@1.20260219.0': resolution: {integrity: sha512-i7qcuOsuAxqqn1n5Ar3Rh1dHUL9vNmpF9FcdMTT84jIrdm5UNrPZz5grJthPmpB9LTcreT9iiP6qKbzGjnCwPA==} engines: {node: '>=16'} cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20250508.0': - resolution: {integrity: sha512-Gr7NLsHy5BFXbWVMMO+1mf/DwxT30tNw5LGhC86S+CXErM2a2eJ0HJHqgAs0Y8Lt/XEUSrH9QrUFDvJWNhE4Rg==} + '@cloudflare/workers-types@4.20260219.0': + resolution: {integrity: sha512-jL2BNnDqbKXDrxhtKx+wVmQpv/P6w8J4WVFiuT9OMEPsw8V2TfTozoWTcCZ2AhE09yK406xQFE4mBq9IIgobuw==} '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} @@ -1625,9 +1582,6 @@ packages: '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/runtime@1.8.1': resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} @@ -1644,12 +1598,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.4': - resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} @@ -1668,12 +1616,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.4': - resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.2': resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} @@ -1692,12 +1634,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.4': - resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.2': resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} @@ -1716,12 +1652,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.4': - resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.2': resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} @@ -1740,12 +1670,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.4': - resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.2': resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} @@ -1764,12 +1688,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.4': - resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.2': resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} @@ -1788,12 +1706,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.4': - resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.2': resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} @@ -1812,12 +1724,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.4': - resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} @@ -1836,12 +1742,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.4': - resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.2': resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} @@ -1860,12 +1760,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.4': - resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.2': resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} @@ -1884,12 +1778,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.4': - resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.2': resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} @@ -1908,12 +1796,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.4': - resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.2': resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} @@ -1932,12 +1814,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.4': - resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.2': resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} @@ -1956,12 +1832,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.4': - resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.2': resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} @@ -1980,12 +1850,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.4': - resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.2': resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} @@ -2004,12 +1868,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.4': - resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.2': resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} @@ -2028,12 +1886,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.4': - resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.2': resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} @@ -2052,12 +1904,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.4': - resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.2': resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} @@ -2076,12 +1922,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.4': - resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} @@ -2100,12 +1940,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.4': - resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.2': resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} @@ -2124,12 +1958,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.4': - resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} @@ -2166,12 +1994,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.4': - resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.2': resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} @@ -2190,12 +2012,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.4': - resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.2': resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} @@ -2214,12 +2030,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.4': - resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.2': resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} @@ -2238,12 +2048,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.4': - resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.2': resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} @@ -2297,10 +2101,6 @@ packages: '@fastify/accept-negotiator@2.0.1': resolution: {integrity: sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@fastify/busboy@3.1.1': resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} @@ -2347,114 +2147,40 @@ packages: resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-arm64@0.34.4': - resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.34.5': resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-darwin-x64@0.34.4': - resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.34.5': resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.2.3': - resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.2.3': - resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-arm64@1.2.3': - resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-arm@1.2.3': - resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.3': - resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] @@ -2467,92 +2193,30 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-s390x@1.2.3': - resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-x64@1.2.3': - resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': - resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@img/sharp-libvips-linuxmusl-x64@1.2.3': - resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-arm64@0.34.4': - resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2560,20 +2224,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-arm@0.34.4': - resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2581,13 +2231,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.4': - resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2602,20 +2245,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-s390x@0.34.4': - resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2623,20 +2252,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-x64@0.34.4': - resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2644,20 +2259,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-linuxmusl-arm64@0.34.4': - resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2665,20 +2266,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@img/sharp-linuxmusl-x64@0.34.4': - resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2686,63 +2273,23 @@ packages: os: [linux] libc: [musl] - '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-wasm32@0.34.4': - resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.4': - resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - '@img/sharp-win32-arm64@0.34.5': resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-ia32@0.34.4': - resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.34.5': resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - - '@img/sharp-win32-x64@0.34.4': - resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.34.5': resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2821,29 +2368,27 @@ packages: '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - '@netlify/ai@0.3.5': - resolution: {integrity: sha512-7suwHOBy9s14yeWRxt+w3Zh6Rrx8gX7zP/xmsxqxLyJlcBykWm6siBJs2mMtJgbWvcrgI5BEgNLh5qfXlTCsRQ==} + '@netlify/ai@0.3.8': + resolution: {integrity: sha512-qz8XDb/82UzsUMKn+sB84V3ZGqeNQOvGwNo840nHIV9saJwLPTd+FOqSUoKUIxZphNA7kQ0uGeadSUkJzDz7og==} engines: {node: '>=20.6.1'} - peerDependencies: - '@netlify/api': '>=14.0.12' - '@netlify/api@14.0.12': - resolution: {integrity: sha512-4xSfHAj9PIZZ78YOPby6TBHxYnf6sOE1/jpkHSDyt2oRxF94qJ0fhp96Fo2kq/rIhvgTlU5Ce3HARi8BDY4mLw==} + '@netlify/api@14.0.14': + resolution: {integrity: sha512-/YwcFbI0RsKXof+e+f48pVqmELzkGWOrhqZuL5xCUNdHYhvUd9El0jQDv7fBjdhxHSrflnZfXFUW56xaI69k4A==} engines: {node: '>=18.14.0'} '@netlify/binary-info@1.0.0': resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==} - '@netlify/blobs@10.5.0': - resolution: {integrity: sha512-yrdt6H1X56DYz7pS3exU/iHO+iOW5sVzseaQwRQQ9OYChB/pVjXQzkBKAjS9dHIecSpv0oynkLxd/mwSJfAJLQ==} + '@netlify/blobs@10.7.0': + resolution: {integrity: sha512-wuiaKRbRLG/L049yR+7/p7xSKa4jx6JRBnweRYwP6mMYn9D+x/wccPgsxEMtKqthmow6frs7ZSrNYTt9U3yUdQ==} engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/cache@3.3.4': - resolution: {integrity: sha512-Fl4/KxP8NS7+skjfRixgekuqBNvLPay/J6qC2mxvHjkkZNu1oUs8QOc+T3Nvt4n+UMrltnt9ggg0q/q4hmBIVw==} + '@netlify/cache@3.3.5': + resolution: {integrity: sha512-u4wx2se/wRvLsU/sQlT5ruofEwMjo5kg6ybEdQLuIswH6+6+9BCFF8VX4ByBP3MZJl3/pxExmcPiFqo0TBP3tg==} engines: {node: '>=20.6.1'} - '@netlify/config@24.2.0': - resolution: {integrity: sha512-idc1D6kdQOFjG70aZC06crqElTyaSulVlnOEDZX2+5/vcmfFCBu8CJSEd5YzC6VCCXBgOW3Hw0cVxDTl5X6+CQ==} + '@netlify/config@24.4.0': + resolution: {integrity: sha512-Dg5JQQjGb2biCvxu6Ryv+KUrgVP2iTrxSVb2pYLiUgKXqx12FeUX4/gFhERNYh1ncK1mJdN1SB3+gP5WxUAFEA==} engines: {node: '>=18.14.0'} hasBin: true @@ -2851,27 +2396,32 @@ packages: resolution: {integrity: sha512-qziF8R9kf7mRNgSpmUH96O0aV1ZiwK4c9ZecFQbDSQuYhgy9GY1WTjiQF0oQnohjTjWNtXhrU39LAeXWNLaBJg==} engines: {node: ^18.14.0 || >=20} - '@netlify/dev@4.8.8': - resolution: {integrity: sha512-tvucXIB5t0R6nSC+L/W9xPX1uV4588pwfCcSqPstkQhS8tHg6cYrnzjUTvxfUL3lPUm1zVFGDz39ExK9tqiL1Q==} + '@netlify/dev@4.11.2': + resolution: {integrity: sha512-quIKbuG7xD3yiWExuZA1Xl/b3Wc+/V3QjrNT4XX5m+dA/D54J61dABf1IGwQYNZHKiF5rVL7D3AwHNAojVQzuw==} engines: {node: '>=20.6.1'} + peerDependencies: + '@netlify/db-dev': 0.2.0 + peerDependenciesMeta: + '@netlify/db-dev': + optional: true - '@netlify/edge-bundler@14.9.3': - resolution: {integrity: sha512-NaIIsjGfl6YcnZKRa5/BOpbBi4MK1B4U1E/ekH8VaAIy0I7aYwnWg45SZSkTrMOeHzZPGXTAwjyKqzPi8HBQ4A==} + '@netlify/edge-bundler@14.9.10': + resolution: {integrity: sha512-Ja5FQuerrDzgiEKwpCF2zHCNDz3pTfMOTE6qyicZc9EmLkKcT9d8M/Pjvv9v7XbqZidN1474EBv2IE8Yuf8d5Q==} engines: {node: '>=18.14.0'} '@netlify/edge-functions-bootstrap@2.16.0': resolution: {integrity: sha512-v8QQihSbBHj3JxtJsHoepXALpNumD9M7egHoc8z62FYl5it34dWczkaJoFFopEyhiBVKi4K/n0ZYpdzwfujd6g==} - '@netlify/edge-functions-dev@1.0.8': - resolution: {integrity: sha512-SvOWcPqKjDjhOKKpp5VFCgONKgRPNM3YsssVG3s2xi5OvNGSw+1KPAlzGplM+MqOfv+3oIs7N+6pULk0MtaimA==} + '@netlify/edge-functions-dev@1.0.11': + resolution: {integrity: sha512-ASybM6fkopOKHorwI1TwsbBlF+eZQCMmlddWtSpyWDunKc4P7i/FEkzdTinNQvcLX7RIGOwjrxanTMEOen/Zvg==} engines: {node: '>=20.6.1'} '@netlify/edge-functions@3.0.3': resolution: {integrity: sha512-grElRK+rTBdYrPsULPKrhcHhrW+fwpDRLPbGByqa6Xrz0fhzcFJ2D9ijxEQ/onFcSVPYHT1u1mI48GhS5bZ/Ag==} engines: {node: '>=18.0.0'} - '@netlify/functions-dev@1.1.8': - resolution: {integrity: sha512-zl5IWvs5B4ck1w8KcV6NUsdkVF1BmW2deF5FwZj14jy5yiF6Errska+lSr9S5tZZ0vJUSs75is7vauP2AxewDA==} + '@netlify/functions-dev@1.1.12': + resolution: {integrity: sha512-rWFCthzhKiuM62yPd2upDY9+y/Ww5ahEKA8+E8WS8dgQKg+5/G/Yka6zfPNpkkFM3/oNi0R7LffWn2DMxrTMPQ==} engines: {node: '>=20.6.1'} '@netlify/functions@5.1.2': @@ -2894,8 +2444,8 @@ packages: resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/open-api@2.46.0': - resolution: {integrity: sha512-ONTAnExC2fX4luhAQ91DD3ORbh+YFMmzk9ebrheVg+W4cTHmNnGxLbiYbmd44IqnLQjgqn4xrmmDULEMZcMdfw==} + '@netlify/open-api@2.49.1': + resolution: {integrity: sha512-4jFX59dqSBJIlFK/qXrEmWsMDHBErS9cFSFweWmPFKRNCuIVlkeibQrRQcVtqKfek3al1UuXscVVIZEYM05LMA==} engines: {node: '>=14.8.0'} '@netlify/otel@5.1.1': @@ -2906,20 +2456,20 @@ packages: resolution: {integrity: sha512-/HB3fcRRNgf6O/pbLn4EYNDHrU2kiadMMnazg8/OjvQK2S9i4y61vQcrICvDxYKUKQdgeEaABUuaCNAJFnfD9w==} engines: {node: '>=18.14.0'} - '@netlify/redirects@3.1.4': - resolution: {integrity: sha512-2FcF/0Q24JA+VmpWlVRp835UvhBHQe3XGVaxAQfHiDd5aXztaz2U5Y4VEZyrZJOubY5xnxr2yqumDfClAiCKxw==} + '@netlify/redirects@3.1.5': + resolution: {integrity: sha512-yU4YBqRYoqPobg/u96QI07IuevAc8+tVLAcnty6/vBJAlo5d7E72r+U6dez48EPGIJHY5hEQK4jT0m9SmKg8mg==} engines: {node: '>=20.6.1'} - '@netlify/runtime-utils@2.2.1': - resolution: {integrity: sha512-dyJeuggzQM8+Dsi0T8Z9UjfLJ6vCmNC36W6WE2aqzfTdTw4wPkh2xlEu4LoD75+TGuYK7jIhEoU2QcCXOzfyAQ==} + '@netlify/runtime-utils@2.3.0': + resolution: {integrity: sha512-cW8weDvsKV7zfia2m5EcBy6KILGoPD+eYZ3qWNGnIo05DGF28goPES0xKSDkNYgAF/2rRSIhie2qcBhbGVgSRg==} engines: {node: ^18.14.0 || >=20} - '@netlify/runtime@4.1.13': - resolution: {integrity: sha512-pnexwAHckodyApbNaHiEzNyVlw+zx33wIwUSAopkq7qU8YYUQbDWIMi5gpGE6FsIvv/CCR8uxMgeIPOBLuVk5Q==} + '@netlify/runtime@4.1.15': + resolution: {integrity: sha512-drX5NYNnqAMKnYsStRT8Q1ruNqd68QdMGdakdMtMb/aTaAtPCIug66BPP98YSWvgv9r7O5eO4NX/Ma7UkMVwvQ==} engines: {node: '>=20.6.1'} - '@netlify/serverless-functions-api@2.8.3': - resolution: {integrity: sha512-RJGKH85YeUFVvRgHz3ArNPiTwIx9w8Da9fDPqS3G40tI+keaNG3UdTVMm8HQvIAB4RS6N8Gu4oVPiU2Lqb4IIg==} + '@netlify/serverless-functions-api@2.9.0': + resolution: {integrity: sha512-D1y8y0orn/n0cdLp16pP6oJ4f+4Gc52pf+FMXNKhlJ97bLRKNce3NgSr3mbgxHUtuNd27f8Mgc4D3scJlnC4uQ==} engines: {node: '>=18.0.0'} '@netlify/static@3.1.3': @@ -2930,8 +2480,8 @@ packages: resolution: {integrity: sha512-5gxMWh/S7wr0uHKSTbMv4bjWmWSpwpeLYvErWeVNAPll5/QNFo9aWimMAUuh8ReLY3/fg92XAroVVu7+z27Snw==} engines: {node: ^18.14.0 || >=20} - '@netlify/zip-it-and-ship-it@14.2.0': - resolution: {integrity: sha512-yM69tB71nhvl7L7orfq5fGEonmSVzi2G12/BAV8O+El7ISpkkjFz+8S8qZVxsEK3IbW4EFO+3L8l6jHJHZtxeQ==} + '@netlify/zip-it-and-ship-it@14.4.0': + resolution: {integrity: sha512-Mi0Kg71CAMH9YsErbCqBWFfKyTim67wT7nmmPLYxFM672Mzu4KNArXmDMWAqmR6Fes2t0uXnnHBVNUfDM1ajqw==} engines: {node: '>=18.14.0'} hasBin: true @@ -3602,6 +3152,11 @@ packages: peerDependencies: acorn: ^8.9.0 + '@sveltejs/acorn-typescript@1.0.9': + resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==} + peerDependencies: + acorn: ^8.9.0 + '@sveltejs/eslint-config@8.2.0': resolution: {integrity: sha512-5ab8AXjLoY+H0dsYTGB+9L8AnOvOzd9NZkECj40VAk6Uh9u7+5d8jVk+YYW6NGsEQ+HwHBUi19yij+q+5Pm+aQ==} peerDependencies: @@ -3894,19 +3449,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -3980,9 +3526,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - ast-module-types@6.0.1: resolution: {integrity: sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA==} engines: {node: '>=18'} @@ -4132,10 +3675,6 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - colorspace@1.1.4: resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} @@ -4181,10 +3720,6 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - cookie@1.1.1: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} @@ -4246,9 +3781,6 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -4436,11 +3968,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.4: - resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.2: resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} @@ -4577,17 +4104,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - exit-hook@2.2.1: - resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} - engines: {node: '>=6'} - expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - exsolve@1.0.4: - resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} - extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -4733,9 +4253,6 @@ packages: resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} engines: {node: '>=16'} - get-source@2.0.12: - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} - get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -4755,9 +4272,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -5029,19 +4543,19 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} - jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} junk@4.0.1: resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} engines: {node: '>=12.20'} - jwa@1.4.2: - resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - jws@3.2.3: - resolution: {integrity: sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==} + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} jwt-decode@4.0.0: resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} @@ -5265,11 +4779,6 @@ packages: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -5278,11 +4787,6 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - miniflare@4.20250507.0: - resolution: {integrity: sha512-EgbQRt/Hnr8HCmW2J/4LRNE3yOzJTdNd98XJ8gnGXFKcimXxUFPiWP3k1df+ZPCtEHp6cXxi8+jP7v9vuIbIsg==} - engines: {node: '>=18.0.0'} - hasBin: true - miniflare@4.20260219.0: resolution: {integrity: sha512-EIb5wXbWUnnC60XU2aiFOPNd4fgTXzECkwRSOXZ1vdcY9WZaEE9rVf+h+Apw+WkOHRkp3Dr9/ZhQ5y1R+9iZ4Q==} engines: {node: '>=18.0.0'} @@ -5336,10 +4840,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -5427,9 +4927,6 @@ packages: ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - omit.js@2.0.2: resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} @@ -5684,9 +5181,6 @@ packages: engines: {node: '>=14'} hasBin: true - printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -5864,14 +5358,6 @@ packages: set-cookie-parser@3.0.1: resolution: {integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==} - sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - - sharp@0.34.4: - resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -5945,16 +5431,9 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - stacktracey@2.1.8: - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - stoppable@1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - streamx@2.22.1: resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} @@ -6096,6 +5575,7 @@ packages: tar@7.5.7: resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} @@ -6225,17 +5705,10 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} - undici@7.18.2: resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} engines: {node: '>=20.18.1'} - unenv@2.0.0-rc.15: - resolution: {integrity: sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==} - unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} @@ -6469,11 +5942,6 @@ packages: resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} engines: {node: '>= 12.0.0'} - workerd@1.20250507.0: - resolution: {integrity: sha512-OXaGjEh5THT9iblwWIyPrYBoaPe/d4zN03Go7/w8CmS8sma7//O9hjbk43sboWkc89taGPmU0/LNyZUUiUlHeQ==} - engines: {node: '>=16'} - hasBin: true - workerd@1.20260219.0: resolution: {integrity: sha512-l4U4iT5H8jNV6+EK23ExnUV2z6JvqQtQPrT8XCm4G8RpwC9EPpYTOO9s/ImMPJKe1WSbQUQoJ4k8Nd83fz8skQ==} engines: {node: '>=16'} @@ -6483,16 +5951,6 @@ packages: resolution: {integrity: sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==} engines: {node: '>=12'} - wrangler@4.14.4: - resolution: {integrity: sha512-HIdOdiMIcJV5ymw80RKsr3Uzen/p1kRX4jnCEmR2XVeoEhV2Qw6GABxS5WMTlSES2/vEX0Y+ezUAdsprcUhJ5g==} - engines: {node: '>=18.0.0'} - hasBin: true - peerDependencies: - '@cloudflare/workers-types': ^4.20250507.0 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - wrangler@4.67.0: resolution: {integrity: sha512-58OoVth7bqm0nqsRgcI67gHbpp0IfR1JIBqDY0XR1FzRu9Qkjn6v2iJAdFf82QcVBFhaMBYQi88WqYGswq5wlQ==} engines: {node: '>=20.0.0'} @@ -6590,9 +6048,6 @@ packages: youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} - youch@3.3.4: - resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} - youch@4.1.0-beta.10: resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} @@ -6603,9 +6058,6 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod@3.22.3: - resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -6790,10 +6242,6 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 - '@cloudflare/kv-asset-handler@0.4.0': - dependencies: - mime: 3.0.0 - '@cloudflare/kv-asset-handler@0.4.2': {} '@cloudflare/unenv-preset@2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260219.0)': @@ -6802,43 +6250,22 @@ snapshots: optionalDependencies: workerd: 1.20260219.0 - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0)': - dependencies: - unenv: 2.0.0-rc.15 - optionalDependencies: - workerd: 1.20250507.0 - - '@cloudflare/workerd-darwin-64@1.20250507.0': - optional: true - '@cloudflare/workerd-darwin-64@1.20260219.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250507.0': - optional: true - '@cloudflare/workerd-darwin-arm64@1.20260219.0': optional: true - '@cloudflare/workerd-linux-64@1.20250507.0': - optional: true - '@cloudflare/workerd-linux-64@1.20260219.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20250507.0': - optional: true - '@cloudflare/workerd-linux-arm64@1.20260219.0': optional: true - '@cloudflare/workerd-windows-64@1.20250507.0': - optional: true - '@cloudflare/workerd-windows-64@1.20260219.0': optional: true - '@cloudflare/workers-types@4.20250508.0': {} + '@cloudflare/workers-types@4.20260219.0': {} '@colors/colors@1.6.0': {} @@ -6863,11 +6290,6 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.5.0': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 @@ -6886,9 +6308,6 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.25.4': - optional: true - '@esbuild/aix-ppc64@0.27.2': optional: true @@ -6898,9 +6317,6 @@ snapshots: '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.4': - optional: true - '@esbuild/android-arm64@0.27.2': optional: true @@ -6910,9 +6326,6 @@ snapshots: '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.25.4': - optional: true - '@esbuild/android-arm@0.27.2': optional: true @@ -6922,9 +6335,6 @@ snapshots: '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.25.4': - optional: true - '@esbuild/android-x64@0.27.2': optional: true @@ -6934,9 +6344,6 @@ snapshots: '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.4': - optional: true - '@esbuild/darwin-arm64@0.27.2': optional: true @@ -6946,9 +6353,6 @@ snapshots: '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.4': - optional: true - '@esbuild/darwin-x64@0.27.2': optional: true @@ -6958,9 +6362,6 @@ snapshots: '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.4': - optional: true - '@esbuild/freebsd-arm64@0.27.2': optional: true @@ -6970,9 +6371,6 @@ snapshots: '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.4': - optional: true - '@esbuild/freebsd-x64@0.27.2': optional: true @@ -6982,9 +6380,6 @@ snapshots: '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.4': - optional: true - '@esbuild/linux-arm64@0.27.2': optional: true @@ -6994,9 +6389,6 @@ snapshots: '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.25.4': - optional: true - '@esbuild/linux-arm@0.27.2': optional: true @@ -7006,9 +6398,6 @@ snapshots: '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.4': - optional: true - '@esbuild/linux-ia32@0.27.2': optional: true @@ -7018,9 +6407,6 @@ snapshots: '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.4': - optional: true - '@esbuild/linux-loong64@0.27.2': optional: true @@ -7030,9 +6416,6 @@ snapshots: '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.4': - optional: true - '@esbuild/linux-mips64el@0.27.2': optional: true @@ -7042,9 +6425,6 @@ snapshots: '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.4': - optional: true - '@esbuild/linux-ppc64@0.27.2': optional: true @@ -7054,9 +6434,6 @@ snapshots: '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.4': - optional: true - '@esbuild/linux-riscv64@0.27.2': optional: true @@ -7066,9 +6443,6 @@ snapshots: '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.4': - optional: true - '@esbuild/linux-s390x@0.27.2': optional: true @@ -7078,9 +6452,6 @@ snapshots: '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.25.4': - optional: true - '@esbuild/linux-x64@0.27.2': optional: true @@ -7090,9 +6461,6 @@ snapshots: '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.4': - optional: true - '@esbuild/netbsd-arm64@0.27.2': optional: true @@ -7102,9 +6470,6 @@ snapshots: '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.4': - optional: true - '@esbuild/netbsd-x64@0.27.2': optional: true @@ -7114,9 +6479,6 @@ snapshots: '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.4': - optional: true - '@esbuild/openbsd-arm64@0.27.2': optional: true @@ -7126,9 +6488,6 @@ snapshots: '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.4': - optional: true - '@esbuild/openbsd-x64@0.27.2': optional: true @@ -7147,9 +6506,6 @@ snapshots: '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.25.4': - optional: true - '@esbuild/sunos-x64@0.27.2': optional: true @@ -7159,9 +6515,6 @@ snapshots: '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.4': - optional: true - '@esbuild/win32-arm64@0.27.2': optional: true @@ -7171,9 +6524,6 @@ snapshots: '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.25.4': - optional: true - '@esbuild/win32-ia32@0.27.2': optional: true @@ -7183,9 +6533,6 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.25.4': - optional: true - '@esbuild/win32-x64@0.27.2': optional: true @@ -7238,8 +6585,6 @@ snapshots: '@fastify/accept-negotiator@2.0.1': {} - '@fastify/busboy@2.1.1': {} - '@fastify/busboy@3.1.1': {} '@fontsource/libre-barcode-128-text@5.1.0': {} @@ -7275,152 +6620,56 @@ snapshots: '@img/colour@1.0.0': {} - '@img/sharp-darwin-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - optional: true - - '@img/sharp-darwin-arm64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.3 - optional: true - '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true - '@img/sharp-darwin-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 - optional: true - - '@img/sharp-darwin-x64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.3 - optional: true - '@img/sharp-darwin-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-darwin-arm64@1.2.3': - optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true - '@img/sharp-libvips-darwin-x64@1.0.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.2.3': - optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.2.3': - optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm@1.0.5': - optional: true - - '@img/sharp-libvips-linux-arm@1.2.3': - optional: true - '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.3': - optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.0.4': - optional: true - - '@img/sharp-libvips-linux-s390x@1.2.3': - optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.2.3': - optional: true - '@img/sharp-libvips-linux-x64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': - optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.2.3': - optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true - '@img/sharp-linux-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 - optional: true - - '@img/sharp-linux-arm64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.3 - optional: true - '@img/sharp-linux-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true - '@img/sharp-linux-arm@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 - optional: true - - '@img/sharp-linux-arm@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.3 - optional: true - '@img/sharp-linux-arm@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-ppc64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.3 - optional: true - '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.2.4 @@ -7431,102 +6680,37 @@ snapshots: '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 - optional: true - - '@img/sharp-linux-s390x@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.3 - optional: true - '@img/sharp-linux-s390x@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true - '@img/sharp-linux-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 - optional: true - - '@img/sharp-linux-x64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.3 - optional: true - '@img/sharp-linux-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-arm64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 - optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-x64@0.34.4': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 - optional: true - '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true - '@img/sharp-wasm32@0.33.5': - dependencies: - '@emnapi/runtime': 1.5.0 - optional: true - - '@img/sharp-wasm32@0.34.4': - dependencies: - '@emnapi/runtime': 1.5.0 - optional: true - '@img/sharp-wasm32@0.34.5': dependencies: '@emnapi/runtime': 1.8.1 optional: true - '@img/sharp-win32-arm64@0.34.4': - optional: true - '@img/sharp-win32-arm64@0.34.5': optional: true - '@img/sharp-win32-ia32@0.33.5': - optional: true - - '@img/sharp-win32-ia32@0.34.4': - optional: true - '@img/sharp-win32-ia32@0.34.5': optional: true - '@img/sharp-win32-x64@0.33.5': - optional: true - - '@img/sharp-win32-x64@0.34.4': - optional: true - '@img/sharp-win32-x64@0.34.5': optional: true @@ -7628,35 +6812,35 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@netlify/ai@0.3.5(@netlify/api@14.0.12)': + '@netlify/ai@0.3.8': dependencies: - '@netlify/api': 14.0.12 + '@netlify/api': 14.0.14 - '@netlify/api@14.0.12': + '@netlify/api@14.0.14': dependencies: - '@netlify/open-api': 2.46.0 + '@netlify/open-api': 2.49.1 node-fetch: 3.3.2 p-wait-for: 5.0.2 picoquery: 2.5.0 '@netlify/binary-info@1.0.0': {} - '@netlify/blobs@10.5.0': + '@netlify/blobs@10.7.0': dependencies: '@netlify/dev-utils': 4.3.3 '@netlify/otel': 5.1.1 - '@netlify/runtime-utils': 2.2.1 + '@netlify/runtime-utils': 2.3.0 transitivePeerDependencies: - supports-color - '@netlify/cache@3.3.4': + '@netlify/cache@3.3.5': dependencies: - '@netlify/runtime-utils': 2.2.1 + '@netlify/runtime-utils': 2.3.0 - '@netlify/config@24.2.0': + '@netlify/config@24.4.0': dependencies: '@iarna/toml': 2.2.5 - '@netlify/api': 14.0.12 + '@netlify/api': 14.0.14 '@netlify/headers-parser': 9.0.2 '@netlify/redirect-parser': 15.0.3 chalk: 5.6.0 @@ -7699,18 +6883,18 @@ snapshots: uuid: 13.0.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.8.8(@netlify/api@14.0.12)(rollup@4.57.1)': + '@netlify/dev@4.11.2(rollup@4.57.1)': dependencies: - '@netlify/ai': 0.3.5(@netlify/api@14.0.12) - '@netlify/blobs': 10.5.0 - '@netlify/config': 24.2.0 + '@netlify/ai': 0.3.8 + '@netlify/blobs': 10.7.0 + '@netlify/config': 24.4.0 '@netlify/dev-utils': 4.3.3 - '@netlify/edge-functions-dev': 1.0.8 - '@netlify/functions-dev': 1.1.8(rollup@4.57.1) + '@netlify/edge-functions-dev': 1.0.11 + '@netlify/functions-dev': 1.1.12(rollup@4.57.1) '@netlify/headers': 2.1.3 - '@netlify/images': 1.3.3(@netlify/blobs@10.5.0) - '@netlify/redirects': 3.1.4 - '@netlify/runtime': 4.1.13 + '@netlify/images': 1.3.3(@netlify/blobs@10.7.0) + '@netlify/redirects': 3.1.5 + '@netlify/runtime': 4.1.15 '@netlify/static': 3.1.3 ulid: 3.0.1 transitivePeerDependencies: @@ -7722,7 +6906,6 @@ snapshots: - '@azure/storage-blob' - '@capacitor/preferences' - '@deno/kv' - - '@netlify/api' - '@planetscale/database' - '@upstash/redis' - '@vercel/blob' @@ -7736,9 +6919,12 @@ snapshots: - supports-color - uploadthing - '@netlify/edge-bundler@14.9.3': + '@netlify/edge-bundler@14.9.10': dependencies: '@import-maps/resolve': 2.0.0 + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.15.0) + acorn: 8.15.0 + acorn-walk: 8.3.4 ajv: 8.17.1 ajv-errors: 3.0.0(ajv@8.17.1) better-ajv-errors: 1.2.0(ajv@8.17.1) @@ -7761,25 +6947,25 @@ snapshots: '@netlify/edge-functions-bootstrap@2.16.0': {} - '@netlify/edge-functions-dev@1.0.8': + '@netlify/edge-functions-dev@1.0.11': dependencies: '@netlify/dev-utils': 4.3.3 - '@netlify/edge-bundler': 14.9.3 + '@netlify/edge-bundler': 14.9.10 '@netlify/edge-functions': 3.0.3 '@netlify/edge-functions-bootstrap': 2.16.0 - '@netlify/runtime-utils': 2.2.1 + '@netlify/runtime-utils': 2.3.0 get-port: 7.1.0 '@netlify/edge-functions@3.0.3': dependencies: '@netlify/types': 2.3.0 - '@netlify/functions-dev@1.1.8(rollup@4.57.1)': + '@netlify/functions-dev@1.1.12(rollup@4.57.1)': dependencies: - '@netlify/blobs': 10.5.0 + '@netlify/blobs': 10.7.0 '@netlify/dev-utils': 4.3.3 '@netlify/functions': 5.1.2 - '@netlify/zip-it-and-ship-it': 14.2.0(rollup@4.57.1) + '@netlify/zip-it-and-ship-it': 14.4.0(rollup@4.57.1) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -7811,9 +6997,9 @@ snapshots: dependencies: '@netlify/headers-parser': 9.0.2 - '@netlify/images@1.3.3(@netlify/blobs@10.5.0)': + '@netlify/images@1.3.3(@netlify/blobs@10.7.0)': dependencies: - ipx: 3.1.1(@netlify/blobs@10.5.0) + ipx: 3.1.1(@netlify/blobs@10.7.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7836,7 +7022,7 @@ snapshots: '@netlify/node-cookies@0.1.0': {} - '@netlify/open-api@2.46.0': {} + '@netlify/open-api@2.49.1': {} '@netlify/otel@5.1.1': dependencies: @@ -7855,26 +7041,26 @@ snapshots: is-plain-obj: 4.1.0 path-exists: 5.0.0 - '@netlify/redirects@3.1.4': + '@netlify/redirects@3.1.5': dependencies: '@netlify/dev-utils': 4.3.3 '@netlify/redirect-parser': 15.0.3 cookie: 1.1.1 - jsonwebtoken: 9.0.2 + jsonwebtoken: 9.0.3 netlify-redirector: 0.5.0 - '@netlify/runtime-utils@2.2.1': {} + '@netlify/runtime-utils@2.3.0': {} - '@netlify/runtime@4.1.13': + '@netlify/runtime@4.1.15': dependencies: - '@netlify/blobs': 10.5.0 - '@netlify/cache': 3.3.4 - '@netlify/runtime-utils': 2.2.1 + '@netlify/blobs': 10.7.0 + '@netlify/cache': 3.3.5 + '@netlify/runtime-utils': 2.3.0 '@netlify/types': 2.3.0 transitivePeerDependencies: - supports-color - '@netlify/serverless-functions-api@2.8.3': {} + '@netlify/serverless-functions-api@2.9.0': {} '@netlify/static@3.1.3': dependencies: @@ -7882,12 +7068,12 @@ snapshots: '@netlify/types@2.3.0': {} - '@netlify/zip-it-and-ship-it@14.2.0(rollup@4.57.1)': + '@netlify/zip-it-and-ship-it@14.4.0(rollup@4.57.1)': dependencies: '@babel/parser': 7.27.5 '@babel/types': 7.28.6 '@netlify/binary-info': 1.0.0 - '@netlify/serverless-functions-api': 2.8.3 + '@netlify/serverless-functions-api': 2.9.0 '@vercel/nft': 0.29.4(rollup@4.57.1) archiver: 7.0.1 common-path-prefix: 3.0.0 @@ -8511,6 +7697,10 @@ snapshots: dependencies: acorn: 8.15.0 + '@sveltejs/acorn-typescript@1.0.9(acorn@8.15.0)': + dependencies: + acorn: 8.15.0 + '@sveltejs/eslint-config@8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.34.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)))(eslint@9.34.0(jiti@2.4.2))(typescript-eslint@8.43.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3)': dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.34.0(jiti@2.4.2)) @@ -8935,14 +8125,9 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-walk@8.3.2: {} - acorn-walk@8.3.4: dependencies: acorn: 8.15.0 - optional: true - - acorn@8.14.0: {} acorn@8.15.0: {} @@ -9018,10 +8203,6 @@ snapshots: array-union@2.1.0: {} - as-table@1.0.55: - dependencies: - printable-characters: 1.0.42 - ast-module-types@6.0.1: {} async-sema@3.1.1: {} @@ -9157,12 +8338,6 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - optional: true - colorspace@1.1.4: dependencies: color: 3.2.1 @@ -9198,8 +8373,6 @@ snapshots: cookie-es@1.2.2: {} - cookie@0.7.2: {} - cookie@1.1.1: {} copy-file@11.0.0: @@ -9261,8 +8434,6 @@ snapshots: dependencies: css-tree: 2.2.1 - data-uri-to-buffer@2.0.2: {} - data-uri-to-buffer@4.0.1: {} dataloader@1.4.0: {} @@ -9463,34 +8634,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.25.4: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.4 - '@esbuild/android-arm': 0.25.4 - '@esbuild/android-arm64': 0.25.4 - '@esbuild/android-x64': 0.25.4 - '@esbuild/darwin-arm64': 0.25.4 - '@esbuild/darwin-x64': 0.25.4 - '@esbuild/freebsd-arm64': 0.25.4 - '@esbuild/freebsd-x64': 0.25.4 - '@esbuild/linux-arm': 0.25.4 - '@esbuild/linux-arm64': 0.25.4 - '@esbuild/linux-ia32': 0.25.4 - '@esbuild/linux-loong64': 0.25.4 - '@esbuild/linux-mips64el': 0.25.4 - '@esbuild/linux-ppc64': 0.25.4 - '@esbuild/linux-riscv64': 0.25.4 - '@esbuild/linux-s390x': 0.25.4 - '@esbuild/linux-x64': 0.25.4 - '@esbuild/netbsd-arm64': 0.25.4 - '@esbuild/netbsd-x64': 0.25.4 - '@esbuild/openbsd-arm64': 0.25.4 - '@esbuild/openbsd-x64': 0.25.4 - '@esbuild/sunos-x64': 0.25.4 - '@esbuild/win32-arm64': 0.25.4 - '@esbuild/win32-ia32': 0.25.4 - '@esbuild/win32-x64': 0.25.4 - esbuild@0.27.2: optionalDependencies: '@esbuild/aix-ppc64': 0.27.2 @@ -9715,12 +8858,8 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - exit-hook@2.2.1: {} - expect-type@1.3.0: {} - exsolve@1.0.4: {} - extendable-error@0.1.7: {} extract-zip@2.0.1: @@ -9857,11 +8996,6 @@ snapshots: get-port@7.1.0: {} - get-source@2.0.12: - dependencies: - data-uri-to-buffer: 2.0.2 - source-map: 0.6.1 - get-stream@5.2.0: dependencies: pump: 3.0.2 @@ -9880,8 +9014,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@10.5.0: dependencies: foreground-child: 3.3.0 @@ -9998,7 +9130,7 @@ snapshots: inherits@2.0.4: {} - ipx@3.1.1(@netlify/blobs@10.5.0): + ipx@3.1.1(@netlify/blobs@10.7.0): dependencies: '@fastify/accept-negotiator': 2.0.1 citty: 0.1.6 @@ -10014,7 +9146,7 @@ snapshots: sharp: 0.34.5 svgo: 4.0.0 ufo: 1.6.3 - unstorage: 1.16.1(@netlify/blobs@10.5.0) + unstorage: 1.16.1(@netlify/blobs@10.7.0) xss: 1.0.15 transitivePeerDependencies: - '@azure/app-configuration' @@ -10147,9 +9279,9 @@ snapshots: jsonpointer@5.0.1: {} - jsonwebtoken@9.0.2: + jsonwebtoken@9.0.3: dependencies: - jws: 3.2.3 + jws: 4.0.1 lodash.includes: 4.3.0 lodash.isboolean: 3.0.3 lodash.isinteger: 4.0.4 @@ -10162,15 +9294,15 @@ snapshots: junk@4.0.1: {} - jwa@1.4.2: + jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - jws@3.2.3: + jws@4.0.1: dependencies: - jwa: 1.4.2 + jwa: 2.0.1 safe-buffer: 5.2.1 jwt-decode@4.0.0: {} @@ -10362,29 +9494,10 @@ snapshots: dependencies: mime-db: 1.54.0 - mime@3.0.0: {} - mimic-fn@4.0.0: {} min-indent@1.0.1: {} - miniflare@4.20250507.0: - dependencies: - '@cspotcode/source-map-support': 0.8.1 - acorn: 8.14.0 - acorn-walk: 8.3.2 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - stoppable: 1.1.0 - undici: 5.29.0 - workerd: 1.20250507.0 - ws: 8.18.0 - youch: 3.3.4 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - miniflare@4.20260219.0: dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -10441,8 +9554,6 @@ snapshots: ms@2.1.3: {} - mustache@4.2.0: {} - nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -10514,8 +9625,6 @@ snapshots: node-fetch-native: 1.6.6 ufo: 1.6.3 - ohash@2.0.11: {} - omit.js@2.0.2: {} once@1.4.0: @@ -10749,8 +9858,6 @@ snapshots: prettier@3.6.0: {} - printable-characters@1.0.42: {} - process-nextick-args@2.0.1: {} process@0.11.10: {} @@ -10985,62 +10092,6 @@ snapshots: set-cookie-parser@3.0.1: {} - sharp@0.33.5: - dependencies: - color: 4.2.3 - detect-libc: 2.1.2 - semver: 7.7.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - optional: true - - sharp@0.34.4: - dependencies: - '@img/colour': 1.0.0 - detect-libc: 2.1.2 - semver: 7.7.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.4 - '@img/sharp-darwin-x64': 0.34.4 - '@img/sharp-libvips-darwin-arm64': 1.2.3 - '@img/sharp-libvips-darwin-x64': 1.2.3 - '@img/sharp-libvips-linux-arm': 1.2.3 - '@img/sharp-libvips-linux-arm64': 1.2.3 - '@img/sharp-libvips-linux-ppc64': 1.2.3 - '@img/sharp-libvips-linux-s390x': 1.2.3 - '@img/sharp-libvips-linux-x64': 1.2.3 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 - '@img/sharp-linux-arm': 0.34.4 - '@img/sharp-linux-arm64': 0.34.4 - '@img/sharp-linux-ppc64': 0.34.4 - '@img/sharp-linux-s390x': 0.34.4 - '@img/sharp-linux-x64': 0.34.4 - '@img/sharp-linuxmusl-arm64': 0.34.4 - '@img/sharp-linuxmusl-x64': 0.34.4 - '@img/sharp-wasm32': 0.34.4 - '@img/sharp-win32-arm64': 0.34.4 - '@img/sharp-win32-ia32': 0.34.4 - '@img/sharp-win32-x64': 0.34.4 - sharp@0.34.5: dependencies: '@img/colour': 1.0.0 @@ -11141,15 +10192,8 @@ snapshots: stackback@0.0.2: {} - stacktracey@2.1.8: - dependencies: - as-table: 1.0.55 - get-source: 2.0.12 - std-env@3.10.0: {} - stoppable@1.1.0: {} - streamx@2.22.1: dependencies: fast-fifo: 1.3.2 @@ -11251,7 +10295,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 - '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.15.0) '@types/estree': 1.0.8 '@types/trusted-types': 2.0.7 acorn: 8.15.0 @@ -11400,20 +10444,8 @@ snapshots: undici-types@7.16.0: {} - undici@5.29.0: - dependencies: - '@fastify/busboy': 2.1.1 - undici@7.18.2: {} - unenv@2.0.0-rc.15: - dependencies: - defu: 6.1.4 - exsolve: 1.0.4 - ohash: 2.0.11 - pathe: 2.0.3 - ufo: 1.6.3 - unenv@2.0.0-rc.24: dependencies: pathe: 2.0.3 @@ -11426,7 +10458,7 @@ snapshots: dependencies: normalize-path: 2.1.1 - unstorage@1.16.1(@netlify/blobs@10.5.0): + unstorage@1.16.1(@netlify/blobs@10.7.0): dependencies: anymatch: 3.1.3 chokidar: 4.0.3 @@ -11437,7 +10469,7 @@ snapshots: ofetch: 1.4.1 ufo: 1.6.3 optionalDependencies: - '@netlify/blobs': 10.5.0 + '@netlify/blobs': 10.7.0 untun@0.1.3: dependencies: @@ -11479,7 +10511,7 @@ snapshots: dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.57.1) imagetools-core: 9.1.0 - sharp: 0.34.4 + sharp: 0.34.5 transitivePeerDependencies: - rollup @@ -11579,14 +10611,6 @@ snapshots: triple-beam: 1.4.1 winston-transport: 4.9.0 - workerd@1.20250507.0: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250507.0 - '@cloudflare/workerd-darwin-arm64': 1.20250507.0 - '@cloudflare/workerd-linux-64': 1.20250507.0 - '@cloudflare/workerd-linux-arm64': 1.20250507.0 - '@cloudflare/workerd-windows-64': 1.20250507.0 - workerd@1.20260219.0: optionalDependencies: '@cloudflare/workerd-darwin-64': 1.20260219.0 @@ -11600,25 +10624,7 @@ snapshots: mrmime: 2.0.0 regexparam: 3.0.0 - wrangler@4.14.4(@cloudflare/workers-types@4.20250508.0): - dependencies: - '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0) - blake3-wasm: 2.1.5 - esbuild: 0.25.4 - miniflare: 4.20250507.0 - path-to-regexp: 6.3.0 - unenv: 2.0.0-rc.15 - workerd: 1.20250507.0 - optionalDependencies: - '@cloudflare/workers-types': 4.20250508.0 - fsevents: 2.3.3 - sharp: 0.33.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - wrangler@4.67.0: + wrangler@4.67.0(@cloudflare/workers-types@4.20260219.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 '@cloudflare/unenv-preset': 2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260219.0) @@ -11629,6 +10635,7 @@ snapshots: unenv: 2.0.0-rc.24 workerd: 1.20260219.0 optionalDependencies: + '@cloudflare/workers-types': 4.20260219.0 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil @@ -11699,12 +10706,6 @@ snapshots: '@poppinss/exception': 1.2.3 error-stack-parser-es: 1.0.5 - youch@3.3.4: - dependencies: - cookie: 0.7.2 - mustache: 4.2.0 - stacktracey: 2.1.8 - youch@4.1.0-beta.10: dependencies: '@poppinss/colors': 4.1.6 @@ -11721,8 +10722,6 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 - zod@3.22.3: {} - zod@3.25.76: {} zod@4.0.14: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 713eff7e6421..2bcb9a7a1d19 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -50,7 +50,7 @@ catalog: valibot: ^1.1.0 vite: ^6.3.5 vitest: ^4.0.0 - wrangler: ^4.65.0 + wrangler: ^4.67.0 catalogs: vite-baseline: vite: ^5.4.21 # should be 5.0.3 but older versions cause errors in some tests From 0a194a04e7ee0e3d329dae8fd5bd4700ed6dcbd5 Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Fri, 20 Feb 2026 09:30:19 -0500 Subject: [PATCH 10/72] fix(adapter-netlify)!: write output conforming to Netlify Frameworks API (#15294) ~~(Stacked on top of https://github.com/sveltejs/kit/pull/15203)~~ closes #15169 The current implementation of the Netlify adapter writes output to paths and config files that are under-documented and in some cases entirely undocumented. 18 months ago, Netlify addressed this by releasing the stable, documented Netlify Frameworks API](https://docs.netlify.com/build/frameworks/frameworks-api/). This PR migrates the adapter to write output that conforms to this spec. POTENTIALLY BREAKING CHANGE: Deploying and previewing with Netlify CLI now requires [v17.31.0](https://github.com/netlify/cli/releases/tag/v17.31.0) or later. Run `npm i -g netlify-cli@latest` to upgrade. --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. ### Tests - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Tee Ming Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/fine-ghosts-camp.md | 7 + packages/adapter-netlify/index.js | 184 +++++++++--------- .../test/apps/basic/netlify.toml | 7 +- .../test/apps/edge/netlify.toml | 13 +- .../test/apps/split/netlify.toml | 7 +- packages/adapter-netlify/utils.js | 70 +++++++ packages/adapter-netlify/utils.spec.js | 161 +++++++++++++++ 7 files changed, 341 insertions(+), 108 deletions(-) create mode 100644 .changeset/fine-ghosts-camp.md create mode 100644 packages/adapter-netlify/utils.js create mode 100644 packages/adapter-netlify/utils.spec.js diff --git a/.changeset/fine-ghosts-camp.md b/.changeset/fine-ghosts-camp.md new file mode 100644 index 000000000000..6eacab83c095 --- /dev/null +++ b/.changeset/fine-ghosts-camp.md @@ -0,0 +1,7 @@ +--- +'@sveltejs/adapter-netlify': major +--- + +breaking: write output that conforms to the stable [Netlify Frameworks API](https://docs.netlify.com/build/frameworks/frameworks-api/). + +Deploying and previewing with Netlify CLI now requires [v17.31.0](https://github.com/netlify/cli/releases/tag/v17.31.0) or later. Run `npm i -g netlify-cli@latest` to upgrade. diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 32413fc586d3..fa82803e6cd5 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -1,11 +1,15 @@ /** @import { BuildOptions } from 'esbuild' */ -import { appendFileSync, existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs'; -import { join, resolve, posix } from 'node:path'; +import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { join, posix } from 'node:path'; import { fileURLToPath } from 'node:url'; import { builtinModules } from 'node:module'; import process from 'node:process'; import esbuild from 'esbuild'; import toml from '@iarna/toml'; +import { matches, get_publish_directory } from './utils.js'; + +const pkg = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf-8')); +const adapter_version = pkg.version; /** * @typedef {{ @@ -55,11 +59,13 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { // empty out existing build directories builder.rimraf(publish); + builder.rimraf('.netlify/v1'); + + // clean up legacy directories from older adapter versions builder.rimraf('.netlify/edge-functions'); builder.rimraf('.netlify/server'); builder.rimraf('.netlify/package.json'); builder.rimraf('.netlify/serverless.js'); - if (existsSync('.netlify/functions-internal')) { for (const file of readdirSync('.netlify/functions-internal')) { if (file.startsWith(FUNCTION_PREFIX)) { @@ -75,13 +81,13 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { builder.writeClient(publish_dir); builder.writePrerendered(publish_dir); - builder.log.minor('Writing custom headers...'); - const headers_file = join(publish, '_headers'); - builder.copy('_headers', headers_file); - appendFileSync( - headers_file, - `\n\n/${builder.getAppPath()}/immutable/*\n cache-control: public\n cache-control: immutable\n cache-control: max-age=31536000\n` - ); + // Copy user's custom _headers file if it exists + if (existsSync('_headers')) { + builder.copy('_headers', join(publish, '_headers')); + } + + builder.log.minor('Writing Netlify config...'); + write_frameworks_config({ builder }); if (edge) { if (split) { @@ -109,7 +115,8 @@ async function generate_edge_functions({ builder }) { builder.rimraf(tmp); builder.mkdirp(tmp); - builder.mkdirp('.netlify/edge-functions'); + // https://docs.netlify.com/build/frameworks/frameworks-api/#edge-functions + builder.mkdirp('.netlify/v1/edge-functions'); builder.log.minor('Generating Edge Function...'); const relativePath = posix.relative(tmp, builder.getServerDirectory()); @@ -134,7 +141,7 @@ async function generate_edge_functions({ builder }) { const path = '/*'; // We only need to specify paths without the trailing slash because // Netlify will handle the optional trailing slash for us - const excluded = [ + const excluded_paths = [ // Contains static files `/${builder.getAppPath()}/immutable/*`, `/${builder.getAppPath()}/version.json`, @@ -153,18 +160,6 @@ async function generate_edge_functions({ builder }) { '/.netlify/*' ]; - /** @type {import('@netlify/edge-functions').Manifest} */ - const edge_manifest = { - functions: [ - { - function: 'render', - path, - excludedPath: /** @type {`/${string}`[]} */ (excluded) - } - ], - version: 1 - }; - /** @type {BuildOptions} */ const esbuild_config = { bundle: true, @@ -185,29 +180,34 @@ async function generate_edge_functions({ builder }) { external: builtinModules.map((id) => `node:${id}`), alias: Object.fromEntries(builtinModules.map((id) => [id, `node:${id}`])) }; + await Promise.all([ esbuild.build({ entryPoints: [`${tmp}/entry.js`], - outfile: '.netlify/edge-functions/render.js', + outfile: `.netlify/v1/edge-functions/${FUNCTION_PREFIX}render.js`, ...esbuild_config }), builder.hasServerInstrumentationFile() && esbuild.build({ - entryPoints: [`${builder.getServerDirectory()}/instrumentation.server.js`], - outfile: '.netlify/edge/instrumentation.server.js', + entryPoints: [ + `${builder.getServerDirectory()}/${FUNCTION_PREFIX}instrumentation.server.js` + ], + outfile: `.netlify/v1/edge-functions/${FUNCTION_PREFIX}instrumentation.server.js`, ...esbuild_config }) ]); if (builder.hasServerInstrumentationFile()) { builder.instrument({ - entrypoint: '.netlify/edge-functions/render.js', - instrumentation: '.netlify/edge/instrumentation.server.js', - start: '.netlify/edge/start.js' + entrypoint: `.netlify/v1/edge-functions/${FUNCTION_PREFIX}render.js`, + instrumentation: `.netlify/v1/edge-functions/${FUNCTION_PREFIX}instrumentation.server.js`, + start: `.netlify/v1/edge-functions/${FUNCTION_PREFIX}start.js` }); } - writeFileSync('.netlify/edge-functions/manifest.json', JSON.stringify(edge_manifest)); + // https://docs.netlify.com/build/frameworks/frameworks-api/#edge-functions + // Edge function config goes in config.json + add_edge_function_config({ builder, path, excluded_paths }); } /** * @param { object } params @@ -216,15 +216,16 @@ async function generate_edge_functions({ builder }) { * @param { boolean } params.split */ function generate_lambda_functions({ builder, publish, split }) { - builder.mkdirp('.netlify/functions-internal/.svelte-kit'); + // https://docs.netlify.com/build/frameworks/frameworks-api/#netlifyv1functions + builder.mkdirp('.netlify/v1/functions'); - builder.writeServer('.netlify/server'); + builder.writeServer('.netlify/v1/server'); const replace = { '0SERVER': './server/index.js' // digit prefix prevents CJS build from using this as a variable name, which would also get replaced }; - builder.copy(files, '.netlify', { replace, filter: (name) => !name.endsWith('edge.js') }); + builder.copy(files, '.netlify/v1', { replace, filter: (file) => !file.endsWith('edge.js') }); builder.log.minor('Generating serverless functions...'); @@ -279,17 +280,17 @@ function generate_lambda_functions({ builder, publish, split }) { const config = generate_config_export(pattern); if (builder.hasServerInstrumentationFile()) { - writeFileSync(`.netlify/functions-internal/${name}.mjs`, fn); + writeFileSync(`.netlify/v1/functions/${name}.mjs`, fn); builder.instrument({ - entrypoint: `.netlify/functions-internal/${name}.mjs`, - instrumentation: '.netlify/server/instrumentation.server.js', - start: `.netlify/functions-start/${name}.start.mjs`, + entrypoint: `.netlify/v1/functions/${name}.mjs`, + instrumentation: '.netlify/v1/server/instrumentation.server.js', + start: `.netlify/v1/functions/${name}.start.mjs`, module: { generateText: generate_traced_module(config) } }); } else { - writeFileSync(`.netlify/functions-internal/${name}.mjs`, `${fn}\n${config}`); + writeFileSync(`.netlify/v1/functions/${name}.mjs`, `${fn}\n${config}`); } } } else { @@ -301,17 +302,17 @@ function generate_lambda_functions({ builder, publish, split }) { const config = generate_config_export('/*'); if (builder.hasServerInstrumentationFile()) { - writeFileSync(`.netlify/functions-internal/${FUNCTION_PREFIX}render.mjs`, fn); + writeFileSync(`.netlify/v1/functions/${FUNCTION_PREFIX}render.mjs`, fn); builder.instrument({ - entrypoint: `.netlify/functions-internal/${FUNCTION_PREFIX}render.mjs`, - instrumentation: '.netlify/server/instrumentation.server.js', - start: `.netlify/functions-start/${FUNCTION_PREFIX}render.start.mjs`, + entrypoint: `.netlify/v1/functions/${FUNCTION_PREFIX}render.mjs`, + instrumentation: '.netlify/v1/server/instrumentation.server.js', + start: `.netlify/v1/functions/${FUNCTION_PREFIX}render.start.mjs`, module: { generateText: generate_traced_module(config) } }); } else { - writeFileSync(`.netlify/functions-internal/${FUNCTION_PREFIX}render.mjs`, `${fn}\n${config}`); + writeFileSync(`.netlify/v1/functions/${FUNCTION_PREFIX}render.mjs`, `${fn}\n${config}`); } } @@ -335,66 +336,61 @@ function get_netlify_config() { } /** - * @param {NetlifyConfig | null} netlify_config - * @param {import('@sveltejs/kit').Builder} builder - **/ -function get_publish_directory(netlify_config, builder) { - if (netlify_config) { - if (!netlify_config.build?.publish) { - builder.log.minor('No publish directory specified in netlify.toml, using default'); - return; - } - - if (resolve(netlify_config.build.publish) === process.cwd()) { - throw new Error( - 'The publish directory cannot be set to the site root. Please change it to another value such as "build" in netlify.toml.' - ); - } - return netlify_config.build.publish; - } + * Writes the Netlify Frameworks API config file + * https://docs.netlify.com/build/frameworks/frameworks-api/ + * @param {{ builder: import('@sveltejs/kit').Builder }} params + */ +function write_frameworks_config({ builder }) { + // https://docs.netlify.com/build/frameworks/frameworks-api/#headers + /** @type {{ headers: Array<{ for: string, values: Record }> }} */ + const config = { + headers: [ + { + for: `/${builder.getAppPath()}/immutable/*`, + values: { + 'cache-control': 'public, immutable, max-age=31536000' + } + } + ] + }; - builder.log.warn( - 'No netlify.toml found. Using default publish directory. Consult https://svelte.dev/docs/kit/adapter-netlify#usage for more details' - ); + builder.mkdirp('.netlify/v1'); + writeFileSync('.netlify/v1/config.json', JSON.stringify(config, null, '\t')); } /** - * @typedef {{ rest: boolean, dynamic: boolean, content: string }} RouteSegment - */ - -/** - * @param {RouteSegment[]} a - * @param {RouteSegment[]} b - * @returns {boolean} + * Adds edge function configuration to the Frameworks API config file + * https://docs.netlify.com/build/frameworks/frameworks-api/#edge-functions + * @param {{ builder: import('@sveltejs/kit').Builder, path: string, excluded_paths: string[] }} params */ -function matches(a, b) { - if (a[0] && b[0]) { - if (b[0].rest) { - if (b.length === 1) return true; - - const next_b = b.slice(1); - - for (let i = 0; i < a.length; i += 1) { - if (matches(a.slice(i), next_b)) return true; - } - - return false; +function add_edge_function_config({ path, excluded_paths }) { + const config_path = '.netlify/v1/config.json'; + const config = JSON.parse(readFileSync(config_path, 'utf-8')); + + // https://docs.netlify.com/build/frameworks/frameworks-api/#edge-functions + config.edge_functions = [ + { + function: `${FUNCTION_PREFIX}render`, + name: 'SvelteKit', + generator: get_generator_string(), + path, + excludedPath: excluded_paths } + ]; - if (!b[0].dynamic) { - if (!a[0].dynamic && a[0].content !== b[0].content) return false; - } + writeFileSync(config_path, JSON.stringify(config, null, '\t')); +} - if (a.length === 1 && b.length === 1) return true; - return matches(a.slice(1), b.slice(1)); - } else if (a[0]) { - return a.length === 1 && a[0].rest; - } else { - return b.length === 1 && b[0].rest; - } +/** + * Gets the generator string for Netlify function metadata + * @returns {string} + */ +function get_generator_string() { + return `@sveltejs/adapter-netlify@${adapter_version}`; } /** + * https://docs.netlify.com/functions/get-started/?fn-language=ts#response * @param {string} manifest * @returns {string} */ @@ -413,6 +409,8 @@ export default init(${manifest}); function generate_config_export(pattern) { return `\ export const config = { + name: "SvelteKit server", + generator: "${get_generator_string()}", path: "${pattern}", excludedPath: "/.netlify/*", preferStatic: true diff --git a/packages/adapter-netlify/test/apps/basic/netlify.toml b/packages/adapter-netlify/test/apps/basic/netlify.toml index 5bd2fc95156c..00917ab74a18 100644 --- a/packages/adapter-netlify/test/apps/basic/netlify.toml +++ b/packages/adapter-netlify/test/apps/basic/netlify.toml @@ -1,9 +1,8 @@ [build] publish = "build" -# TODO: remove this after we refactor to the Netlify frameworks API +# TODO: remove this once @netlify/dev works with the Netlify frameworks API # we are purposely misusing the user functions config to discover our framework -# build output because our adapter still outputs using an older API but the new -# Netlify dev server adheres to the new API +# build output because the Netlify dev plugin doesn't currently detect it [functions] -directory = ".netlify/functions-internal" +directory = ".netlify/v1/functions" diff --git a/packages/adapter-netlify/test/apps/edge/netlify.toml b/packages/adapter-netlify/test/apps/edge/netlify.toml index fba5510330d6..5ea18d6abd4e 100644 --- a/packages/adapter-netlify/test/apps/edge/netlify.toml +++ b/packages/adapter-netlify/test/apps/edge/netlify.toml @@ -1,14 +1,13 @@ [build] publish = "build" -# TODO: remove these once we overhaul the Netlify adapter to use the new edge declarations https://docs.netlify.com/build/edge-functions/declarations/#declare-edge-functions-inline +# TODO: remove this once @netlify/dev works with the Netlify frameworks API +# we are purposely misusing the edge functions config to discover our framework +# build output because the Netlify dev plugin doesn't currently detect it +edge_functions = ".netlify/v1/edge-functions" -# defaults to "netlify/edge-functions" (without the . prefix) -edge_functions = ".netlify/edge-functions" - -# the dev server doesn't read the manifest.json in edge-functions so we need -# to explicitly declare this here +# Netlify dev plugin doesn't detect .netlify/v1/config.json [[edge_functions]] +function = "sveltekit-render" path = "/*" -function = "render" excludedPath = ["/_app/immutable/*", "/_app/version.json", "/.netlify/*"] diff --git a/packages/adapter-netlify/test/apps/split/netlify.toml b/packages/adapter-netlify/test/apps/split/netlify.toml index 5bd2fc95156c..00917ab74a18 100644 --- a/packages/adapter-netlify/test/apps/split/netlify.toml +++ b/packages/adapter-netlify/test/apps/split/netlify.toml @@ -1,9 +1,8 @@ [build] publish = "build" -# TODO: remove this after we refactor to the Netlify frameworks API +# TODO: remove this once @netlify/dev works with the Netlify frameworks API # we are purposely misusing the user functions config to discover our framework -# build output because our adapter still outputs using an older API but the new -# Netlify dev server adheres to the new API +# build output because the Netlify dev plugin doesn't currently detect it [functions] -directory = ".netlify/functions-internal" +directory = ".netlify/v1/functions" diff --git a/packages/adapter-netlify/utils.js b/packages/adapter-netlify/utils.js new file mode 100644 index 000000000000..27d37aab9d2d --- /dev/null +++ b/packages/adapter-netlify/utils.js @@ -0,0 +1,70 @@ +import { resolve } from 'node:path'; +import process from 'node:process'; + +/** + * @typedef {{ rest: boolean, dynamic: boolean, content: string }} RouteSegment + */ + +/** + * @typedef {{ + * build?: { publish?: string } + * functions?: { node_bundler?: 'zisi' | 'esbuild' } + * }} NetlifyConfig + */ + +/** + * @param {RouteSegment[]} a + * @param {RouteSegment[]} b + * @returns {boolean} + */ +export function matches(a, b) { + if (a[0] && b[0]) { + if (b[0].rest) { + if (b.length === 1) return true; + + const next_b = b.slice(1); + + for (let i = 0; i < a.length; i += 1) { + if (matches(a.slice(i), next_b)) return true; + } + + return false; + } + + if (!b[0].dynamic) { + if (!a[0].dynamic && a[0].content !== b[0].content) return false; + } + + if (a.length === 1 && b.length === 1) return true; + return matches(a.slice(1), b.slice(1)); + } else if (a[0]) { + return a.length === 1 && a[0].rest; + } else { + return b.length === 1 && b[0].rest; + } +} + +/** + * @param {NetlifyConfig | null} netlify_config + * @param {import('@sveltejs/kit').Builder} builder + * @returns {string | undefined} + */ +export function get_publish_directory(netlify_config, builder) { + if (netlify_config) { + if (!netlify_config.build?.publish) { + builder.log.minor('No publish directory specified in netlify.toml, using default'); + return; + } + + if (resolve(netlify_config.build.publish) === process.cwd()) { + throw new Error( + 'The publish directory cannot be set to the site root. Please change it to another value such as "build" in netlify.toml.' + ); + } + return netlify_config.build.publish; + } + + builder.log.warn( + 'No netlify.toml found. Using default publish directory. Consult https://svelte.dev/docs/kit/adapter-netlify#usage for more details' + ); +} diff --git a/packages/adapter-netlify/utils.spec.js b/packages/adapter-netlify/utils.spec.js new file mode 100644 index 000000000000..60da6beda5cd --- /dev/null +++ b/packages/adapter-netlify/utils.spec.js @@ -0,0 +1,161 @@ +import process from 'node:process'; +import { describe, test, expect, vi } from 'vitest'; +import { matches, get_publish_directory } from './utils.js'; + +/** + * Helper to create a static route segment + * @param {string} content + * @returns {{ rest: boolean, dynamic: boolean, content: string }} + */ +function static_segment(content) { + return { rest: false, dynamic: false, content }; +} + +/** + * Helper to create a dynamic route segment + * @param {string} content + * @returns {{ rest: boolean, dynamic: boolean, content: string }} + */ +function dynamic_segment(content) { + return { rest: false, dynamic: true, content }; +} + +/** + * Helper to create a rest route segment + * @param {string} content + * @returns {{ rest: boolean, dynamic: boolean, content: string }} + */ +function rest_segment(content) { + return { rest: true, dynamic: true, content }; +} + +describe('matches', () => { + test('two identical static routes match', () => { + expect( + matches( + [static_segment('blog'), static_segment('post')], + [static_segment('blog'), static_segment('post')] + ) + ).toBe(true); + }); + + test('static segment mismatch returns false', () => { + expect(matches([static_segment('blog')], [static_segment('about')])).toBe(false); + }); + + test('dynamic segment matches any static segment', () => { + expect(matches([static_segment('blog')], [dynamic_segment('[slug]')])).toBe(true); + }); + + test('rest segment at end matches everything', () => { + expect( + matches([static_segment('blog'), static_segment('post')], [rest_segment('[...rest]')]) + ).toBe(true); + }); + + test('rest-only route matches any route', () => { + expect( + matches( + [static_segment('a'), static_segment('b'), static_segment('c')], + [rest_segment('[...rest]')] + ) + ).toBe(true); + }); + + test('rest segment matches remaining segments', () => { + expect( + matches( + [static_segment('blog'), static_segment('2024'), static_segment('post')], + [static_segment('blog'), rest_segment('[...rest]')] + ) + ).toBe(true); + }); + + test('empty segments (index routes)', () => { + expect(matches([], [])).toBe(false); + }); + + test('mismatched lengths without rest return false', () => { + expect( + matches([static_segment('blog'), static_segment('post')], [static_segment('blog')]) + ).toBe(false); + }); + + test('rest with following segments', () => { + expect( + matches( + [static_segment('a'), static_segment('b'), static_segment('page')], + [rest_segment('[...rest]'), static_segment('page')] + ) + ).toBe(true); + }); + + test('rest with following segments that do not match', () => { + expect( + matches( + [static_segment('a'), static_segment('b'), static_segment('other')], + [rest_segment('[...rest]'), static_segment('page')] + ) + ).toBe(false); + }); + + test('a has trailing rest and b is shorter', () => { + expect(matches([rest_segment('[...rest]')], [static_segment('blog')])).toBe(true); + }); + + test('a is longer without rest in b', () => { + expect(matches([static_segment('a'), static_segment('b')], [static_segment('a')])).toBe(false); + }); + + test('b is longer without rest in a', () => { + expect(matches([static_segment('a')], [static_segment('a'), static_segment('b')])).toBe(false); + }); + + test('dynamic in a matches static in b', () => { + expect(matches([dynamic_segment('[id]')], [static_segment('blog')])).toBe(true); + }); + + test('both dynamic segments match', () => { + expect(matches([dynamic_segment('[id]')], [dynamic_segment('[slug]')])).toBe(true); + }); +}); + +describe('get_publish_directory', () => { + test('returns undefined when no netlify.toml, with warning logged', () => { + const warn = vi.fn(); + const builder = /** @type {any} */ ({ log: { warn, minor: vi.fn() } }); + + const result = get_publish_directory(null, builder); + + expect(result).toBeUndefined(); + expect(warn).toHaveBeenCalledOnce(); + expect(warn).toHaveBeenCalledWith(expect.stringContaining('No netlify.toml found')); + }); + + test('returns undefined when config has no build.publish, with minor log', () => { + const minor = vi.fn(); + const builder = /** @type {any} */ ({ log: { warn: vi.fn(), minor } }); + + const result = get_publish_directory({ build: {} }, builder); + + expect(result).toBeUndefined(); + expect(minor).toHaveBeenCalledOnce(); + expect(minor).toHaveBeenCalledWith(expect.stringContaining('No publish directory specified')); + }); + + test('returns the publish value when specified', () => { + const builder = /** @type {any} */ ({ log: { warn: vi.fn(), minor: vi.fn() } }); + + const result = get_publish_directory({ build: { publish: 'dist' } }, builder); + + expect(result).toBe('dist'); + }); + + test('throws when publish is site root', () => { + const builder = /** @type {any} */ ({ log: { warn: vi.fn(), minor: vi.fn() } }); + + expect(() => get_publish_directory({ build: { publish: process.cwd() } }, builder)).toThrow( + 'The publish directory cannot be set to the site root' + ); + }); +}); From a7cfab6b7eb9ce6a9941e9420f2a6f21b2848b5d Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sat, 21 Feb 2026 08:51:43 -0700 Subject: [PATCH 11/72] chore: build with rolldown (#15373) --- packages/adapter-netlify/package.json | 9 +- .../{rollup.config.js => rolldown.config.js} | 13 +- packages/enhanced-img/package.json | 2 +- packages/kit/package.json | 2 +- pnpm-lock.yaml | 113 ++---------------- pnpm-workspace.yaml | 3 - 6 files changed, 19 insertions(+), 123 deletions(-) rename packages/adapter-netlify/{rollup.config.js => rolldown.config.js} (56%) diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 1b8851c4542f..cab0690b79e6 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -33,8 +33,8 @@ "ambient.d.ts" ], "scripts": { - "dev": "rollup -cw", - "build": "rollup -c", + "dev": "rolldown -cw", + "build": "rolldown -c", "check": "tsc", "lint": "prettier --check .", "format": "pnpm lint --write", @@ -53,13 +53,10 @@ "@netlify/functions": "catalog:", "@netlify/node-cookies": "^0.1.0", "@netlify/types": "^2.1.0", - "@rollup/plugin-commonjs": "catalog:", - "@rollup/plugin-json": "catalog:", - "@rollup/plugin-node-resolve": "catalog:", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", - "rollup": "^4.14.2", + "rolldown": "^1.0.0-rc.5", "typescript": "^5.3.3", "vitest": "catalog:" }, diff --git a/packages/adapter-netlify/rollup.config.js b/packages/adapter-netlify/rolldown.config.js similarity index 56% rename from packages/adapter-netlify/rollup.config.js rename to packages/adapter-netlify/rolldown.config.js index 82d61b85d29d..e9be35048264 100644 --- a/packages/adapter-netlify/rollup.config.js +++ b/packages/adapter-netlify/rolldown.config.js @@ -1,11 +1,8 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import json from '@rollup/plugin-json'; import { rmSync } from 'node:fs'; /** * @param {string} filepath - * @returns {import('rollup').Plugin} + * @returns {import('rolldown').Plugin} */ function clearOutput(filepath) { return { @@ -20,7 +17,7 @@ function clearOutput(filepath) { }; } -/** @type {import('rollup').RollupOptions} */ +/** @type {import('rolldown').RolldownOptions} */ const config = { input: { serverless: 'src/serverless.js', @@ -31,10 +28,10 @@ const config = { dir: 'files', format: 'esm' }, - // @ts-ignore https://github.com/rollup/plugins/issues/1329 - plugins: [clearOutput('files'), nodeResolve({ preferBuiltins: true }), commonjs(), json()], + plugins: [clearOutput('files')], external: (id) => id === '0SERVER' || id === 'MANIFEST' || id.startsWith('node:'), - preserveEntrySignatures: 'exports-only' + preserveEntrySignatures: 'exports-only', + platform: 'node' }; export default config; diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 4fe935949b77..08c9e1cd2f85 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -48,7 +48,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "@types/estree": "catalog:", "@types/node": "catalog:", - "rollup": "^4.27.4", + "rolldown": "^1.0.0-rc.5", "svelte": "catalog:", "typescript": "^5.6.3", "vite": "catalog:", diff --git a/packages/kit/package.json b/packages/kit/package.json index 7caa7db73178..6e0c69e5c71a 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -37,7 +37,7 @@ "@types/node": "catalog:", "@types/set-cookie-parser": "catalog:", "dts-buddy": "catalog:", - "rollup": "^4.14.2", + "rolldown": "^1.0.0-rc.5", "svelte": "catalog:", "svelte-preprocess": "catalog:", "typescript": "^5.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1a69e36e226..29a5822e9ae4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,15 +33,6 @@ catalogs: '@polka/url': specifier: ^1.0.0-next.28 version: 1.0.0-next.28 - '@rollup/plugin-commonjs': - specifier: ^29.0.0 - version: 29.0.0 - '@rollup/plugin-json': - specifier: ^6.1.0 - version: 6.1.0 - '@rollup/plugin-node-resolve': - specifier: ^16.0.0 - version: 16.0.0 '@sveltejs/eslint-config': specifier: ^9.0.0 version: 9.0.0 @@ -253,15 +244,6 @@ importers: '@netlify/types': specifier: ^2.1.0 version: 2.3.0 - '@rollup/plugin-commonjs': - specifier: 'catalog:' - version: 29.0.0(rollup@4.57.1) - '@rollup/plugin-json': - specifier: 'catalog:' - version: 6.1.0(rollup@4.57.1) - '@rollup/plugin-node-resolve': - specifier: 'catalog:' - version: 16.0.0(rollup@4.57.1) '@sveltejs/kit': specifier: workspace:^ version: link:../kit @@ -271,9 +253,9 @@ importers: '@types/node': specifier: 'catalog:' version: 24.10.13 - rollup: - specifier: ^4.14.2 - version: 4.57.1 + rolldown: + specifier: ^1.0.0-rc.5 + version: 1.0.0-rc.5 typescript: specifier: ^5.3.3 version: 5.8.3 @@ -481,9 +463,9 @@ importers: '@types/node': specifier: 'catalog:' version: 24.10.13 - rollup: - specifier: ^4.27.4 - version: 4.57.1 + rolldown: + specifier: ^1.0.0-rc.5 + version: 1.0.0-rc.5 svelte: specifier: 'catalog:' version: 5.51.5 @@ -569,9 +551,9 @@ importers: dts-buddy: specifier: 'catalog:' version: 0.6.2(typescript@5.8.3) - rollup: - specifier: ^4.14.2 - version: 4.57.1 + rolldown: + specifier: ^1.0.0-rc.5 + version: 1.0.0-rc.5 svelte: specifier: 'catalog:' version: 5.51.5 @@ -2944,33 +2926,6 @@ packages: '@rolldown/pluginutils@1.0.0-rc.5': resolution: {integrity: sha512-RxlLX/DPoarZ9PtxVrQgZhPoor987YtKQqCo5zkjX+0S0yLJ7Vv515Wk6+xtTL67VONKJKxETWZwuZjss2idYw==} - '@rollup/plugin-commonjs@29.0.0': - resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@16.0.0': - resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.3': resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} @@ -3215,9 +3170,6 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} @@ -3643,9 +3595,6 @@ packages: common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} @@ -4378,9 +4327,6 @@ packages: engines: {node: '>=14.16'} hasBin: true - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-network-error@1.1.0: resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} engines: {node: '>=16'} @@ -4401,9 +4347,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -7482,34 +7425,6 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.5': {} - '@rollup/plugin-commonjs@29.0.0(rollup@4.57.1)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.57.1) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.3) - is-reference: 1.2.1 - magic-string: 0.30.21 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.57.1 - - '@rollup/plugin-json@6.1.0(rollup@4.57.1)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.57.1) - optionalDependencies: - rollup: 4.57.1 - - '@rollup/plugin-node-resolve@16.0.0(rollup@4.57.1)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.57.1) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 4.57.1 - '@rollup/pluginutils@5.1.3(rollup@4.57.1)': dependencies: '@types/estree': 1.0.8 @@ -7693,8 +7608,6 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/resolve@1.20.2': {} - '@types/retry@0.12.2': {} '@types/semver@7.5.8': {} @@ -8210,8 +8123,6 @@ snapshots: common-path-prefix@3.0.0: {} - commondir@1.0.1: {} - compress-commons@6.0.2: dependencies: crc-32: 1.2.2 @@ -9048,8 +8959,6 @@ snapshots: dependencies: is-docker: 3.0.0 - is-module@1.0.0: {} - is-network-error@1.1.0: {} is-number@7.0.0: {} @@ -9060,10 +8969,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.8 - is-reference@3.0.3: dependencies: '@types/estree': 1.0.8 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c0d099e6b769..d368a8e11f21 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -23,9 +23,6 @@ catalog: '@opentelemetry/sdk-trace-node': ^2.0.1 '@playwright/test': 1.58.2 '@polka/url': ^1.0.0-next.28 - '@rollup/plugin-commonjs': ^29.0.0 - '@rollup/plugin-json': ^6.1.0 - '@rollup/plugin-node-resolve': ^16.0.0 '@sveltejs/eslint-config': ^9.0.0 '@sveltejs/vite-plugin-svelte': ^6.0.0-next.3 '@svitejs/changesets-changelog-github-compact': ^1.2.0 From e2f3075ef299b91175fae116e6a76269002029cf Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sat, 21 Feb 2026 09:16:23 -0700 Subject: [PATCH 12/72] breaking: require newer versions of Svelte and Vite (#15371) --- .changeset/early-worlds-slide.md | 5 +++++ .changeset/heavy-showers-leave.md | 5 +++++ .changeset/nine-coins-cheer.md | 5 +++++ packages/kit/package.json | 6 +++--- 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 .changeset/early-worlds-slide.md create mode 100644 .changeset/heavy-showers-leave.md create mode 100644 .changeset/nine-coins-cheer.md diff --git a/.changeset/early-worlds-slide.md b/.changeset/early-worlds-slide.md new file mode 100644 index 000000000000..f9280d7ee391 --- /dev/null +++ b/.changeset/early-worlds-slide.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: require `@sveltejs/vite-plugin-svelte` v7 diff --git a/.changeset/heavy-showers-leave.md b/.changeset/heavy-showers-leave.md new file mode 100644 index 000000000000..413aa29ab325 --- /dev/null +++ b/.changeset/heavy-showers-leave.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: require Svelte 5 diff --git a/.changeset/nine-coins-cheer.md b/.changeset/nine-coins-cheer.md new file mode 100644 index 000000000000..8f78036d0edd --- /dev/null +++ b/.changeset/nine-coins-cheer.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: require Vite 8 diff --git a/packages/kit/package.json b/packages/kit/package.json index 6e0c69e5c71a..7a3f2d7b0cd1 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -45,11 +45,11 @@ "vitest": "catalog:" }, "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0", + "@sveltejs/vite-plugin-svelte": "^7.0.0", "@opentelemetry/api": "^1.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", + "svelte": "^5.0.0", "typescript": "^5.3.3", - "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0" + "vite": "^8.0.0" }, "peerDependenciesMeta": { "@opentelemetry/api": { From 6670c6778369c72a2e8627c36fb0fb9043bc2459 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 22 Feb 2026 21:27:29 -0800 Subject: [PATCH 13/72] chore: fix TODO in cookie code (#15388) --- packages/kit/src/runtime/server/cookie.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/packages/kit/src/runtime/server/cookie.js b/packages/kit/src/runtime/server/cookie.js index fe816df010c8..48434d26f709 100644 --- a/packages/kit/src/runtime/server/cookie.js +++ b/packages/kit/src/runtime/server/cookie.js @@ -17,14 +17,6 @@ const cookie_paths = {}; */ const MAX_COOKIE_SIZE = 4129; -// TODO 3.0 remove this check -/** @param {import('./page/types.js').Cookie['options']} options */ -function validate_options(options) { - if (options?.path === undefined) { - throw new Error('You must specify a `path` when setting, deleting or serializing cookies'); - } -} - /** * Generates a unique key for a cookie based on its domain, path, and name in * the format: `/?`. @@ -154,7 +146,6 @@ export function get_cookies(request, url) { * @param {import('./page/types.js').Cookie['options']} options */ set(name, value, options) { - validate_options(options); set_internal(name, value, { ...defaults, ...options }); }, @@ -163,7 +154,6 @@ export function get_cookies(request, url) { * @param {import('./page/types.js').Cookie['options']} options */ delete(name, options) { - validate_options(options); cookies.set(name, '', { ...options, maxAge: 0 }); }, @@ -173,8 +163,6 @@ export function get_cookies(request, url) { * @param {import('./page/types.js').Cookie['options']} options */ serialize(name, value, options) { - validate_options(options); - let path = options.path; if (!options.domain || options.domain === url.hostname) { From d10eae5e6a66f80969c22ace0ff8c0e9ff573fd6 Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 23 Feb 2026 01:30:17 -0500 Subject: [PATCH 14/72] test(adapter-netlify): add more integration test coverage (#15386) This PR adds more integration test coverage for `@sveltejs/adapter-netlify`. --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. ### Tests - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [ ] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Tee Ming --- packages/adapter-netlify/index.js | 7 +++--- packages/adapter-netlify/package.json | 2 +- .../test/apps/basic/.gitignore | 2 +- .../adapter-netlify/test/apps/basic/_headers | 2 ++ .../test/apps/basic/_redirects | 1 + .../test/apps/basic/netlify.toml | 6 ++--- .../apps/basic/src/instrumentation.server.js | 1 - .../test/apps/basic/src/routes/+page.svelte | 1 + .../routes/greeting/[name]/+page.server.js | 4 ++++ .../src/routes/greeting/[name]/+page.svelte | 5 +++++ .../test/apps/basic/svelte.config.js | 7 +----- .../test/apps/basic/test/test.js | 22 +++++++++++++++++++ .../adapter-netlify/test/apps/edge/_headers | 2 ++ .../adapter-netlify/test/apps/edge/_redirects | 1 + .../test/apps/edge/netlify.toml | 8 +++---- .../test/apps/edge/src/routes/+page.svelte | 1 + .../routes/greeting/[name]/+page.server.js | 4 ++++ .../src/routes/greeting/[name]/+page.svelte | 5 +++++ .../test/apps/edge/test/test.js | 17 ++++++++++++++ .../test/apps/instrumentation/.gitignore | 6 +++++ .../test/apps/instrumentation/netlify.toml | 8 +++++++ .../test/apps/instrumentation/package.json | 19 ++++++++++++++++ .../apps/instrumentation/playwright.config.js | 1 + .../test/apps/instrumentation/src/app.html | 12 ++++++++++ .../src/instrumentation.server.js | 1 + .../instrumentation/src/routes/+page.svelte | 1 + .../src/routes/instrumented/+server.js | 3 +++ .../apps/instrumentation/svelte.config.js | 15 +++++++++++++ .../test/apps/instrumentation/test/test.js | 13 +++++++++++ .../test/apps/instrumentation/tsconfig.json | 14 ++++++++++++ .../test/apps/instrumentation/vite.config.ts | 11 ++++++++++ .../test/apps/split/.gitignore | 2 +- .../test/apps/split/_redirects | 1 + .../test/apps/split/netlify.toml | 6 ++--- .../apps/split/src/instrumentation.server.js | 1 - .../test/apps/split/src/routes/+page.svelte | 1 + .../routes/greeting/[name]/+page.server.js | 4 ++++ .../src/routes/greeting/[name]/+page.svelte | 5 +++++ .../test/apps/split/svelte.config.js | 3 --- .../test/apps/split/test/test.js | 16 ++++++++++++++ packages/adapter-netlify/test/preview.js | 13 ++++++----- pnpm-lock.yaml | 15 +++++++++++++ 42 files changed, 235 insertions(+), 34 deletions(-) create mode 100644 packages/adapter-netlify/test/apps/basic/_headers create mode 100644 packages/adapter-netlify/test/apps/basic/_redirects delete mode 100644 packages/adapter-netlify/test/apps/basic/src/instrumentation.server.js create mode 100644 packages/adapter-netlify/test/apps/basic/src/routes/+page.svelte create mode 100644 packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.server.js create mode 100644 packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.svelte create mode 100644 packages/adapter-netlify/test/apps/edge/_headers create mode 100644 packages/adapter-netlify/test/apps/edge/_redirects create mode 100644 packages/adapter-netlify/test/apps/edge/src/routes/+page.svelte create mode 100644 packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.server.js create mode 100644 packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.svelte create mode 100644 packages/adapter-netlify/test/apps/instrumentation/.gitignore create mode 100644 packages/adapter-netlify/test/apps/instrumentation/netlify.toml create mode 100644 packages/adapter-netlify/test/apps/instrumentation/package.json create mode 100644 packages/adapter-netlify/test/apps/instrumentation/playwright.config.js create mode 100644 packages/adapter-netlify/test/apps/instrumentation/src/app.html create mode 100644 packages/adapter-netlify/test/apps/instrumentation/src/instrumentation.server.js create mode 100644 packages/adapter-netlify/test/apps/instrumentation/src/routes/+page.svelte create mode 100644 packages/adapter-netlify/test/apps/instrumentation/src/routes/instrumented/+server.js create mode 100644 packages/adapter-netlify/test/apps/instrumentation/svelte.config.js create mode 100644 packages/adapter-netlify/test/apps/instrumentation/test/test.js create mode 100644 packages/adapter-netlify/test/apps/instrumentation/tsconfig.json create mode 100644 packages/adapter-netlify/test/apps/instrumentation/vite.config.ts create mode 100644 packages/adapter-netlify/test/apps/split/_redirects delete mode 100644 packages/adapter-netlify/test/apps/split/src/instrumentation.server.js create mode 100644 packages/adapter-netlify/test/apps/split/src/routes/+page.svelte create mode 100644 packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.server.js create mode 100644 packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.svelte diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 337392a3c29e..627c64a5a8f4 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -65,7 +65,8 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { builder.rimraf(publish); builder.rimraf('.netlify/v1'); - // clean up legacy directories from older adapter versions + // clean up legacy directories from older adapter versions to avoid + // gnarly edge cases when an existing project is upgraded to this version builder.rimraf('.netlify/edge-functions'); builder.rimraf('.netlify/server'); builder.rimraf('.netlify/package.json'); @@ -100,7 +101,7 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { await generate_edge_functions({ builder }); } else { - generate_lambda_functions({ builder, split, publish }); + generate_serverless_functions({ builder, split, publish }); } }, @@ -117,7 +118,7 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { * @param { string } params.publish * @param { boolean } params.split */ -function generate_lambda_functions({ builder, publish, split }) { +function generate_serverless_functions({ builder, publish, split }) { // https://docs.netlify.com/build/frameworks/frameworks-api/#netlifyv1functions builder.mkdirp(netlify_framework_serverless_path); diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 76edec12df6f..ffff6c149acf 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -38,7 +38,7 @@ "check": "tsc", "lint": "prettier --check .", "format": "pnpm lint --write", - "test": "pnpm test:integration", + "test": "pnpm test:unit && pnpm test:integration", "test:unit": "vitest run", "test:integration": "pnpm build && pnpm -r --workspace-concurrency 1 --filter=\"./test/**\" test", "prepublishOnly": "pnpm build" diff --git a/packages/adapter-netlify/test/apps/basic/.gitignore b/packages/adapter-netlify/test/apps/basic/.gitignore index 88f661c765c6..4150a3674e3a 100644 --- a/packages/adapter-netlify/test/apps/basic/.gitignore +++ b/packages/adapter-netlify/test/apps/basic/.gitignore @@ -3,4 +3,4 @@ node_modules /.svelte-kit /.netlify /build -deno.lock \ No newline at end of file +deno.lock diff --git a/packages/adapter-netlify/test/apps/basic/_headers b/packages/adapter-netlify/test/apps/basic/_headers new file mode 100644 index 000000000000..01c0aab8e046 --- /dev/null +++ b/packages/adapter-netlify/test/apps/basic/_headers @@ -0,0 +1,2 @@ +/custom-header-path + X-Custom-Header: test-value diff --git a/packages/adapter-netlify/test/apps/basic/_redirects b/packages/adapter-netlify/test/apps/basic/_redirects new file mode 100644 index 000000000000..fd5703a26e6a --- /dev/null +++ b/packages/adapter-netlify/test/apps/basic/_redirects @@ -0,0 +1 @@ +/redirect-me /greeting/redirected 301 diff --git a/packages/adapter-netlify/test/apps/basic/netlify.toml b/packages/adapter-netlify/test/apps/basic/netlify.toml index 00917ab74a18..a19ca0df6798 100644 --- a/packages/adapter-netlify/test/apps/basic/netlify.toml +++ b/packages/adapter-netlify/test/apps/basic/netlify.toml @@ -1,8 +1,8 @@ [build] publish = "build" -# TODO: remove this once @netlify/dev works with the Netlify frameworks API -# we are purposely misusing the user functions config to discover our framework -# build output because the Netlify dev plugin doesn't currently detect it +# TODO(serhalp): remove this when @netlify/dev supports serve/preview. +# @netlify/dev does not yet have explicit support for a "serve" mode, but this funky workaround is +# sufficient for our purposes for now. NOTE: do not do this in real apps; this is only for testing. [functions] directory = ".netlify/v1/functions" diff --git a/packages/adapter-netlify/test/apps/basic/src/instrumentation.server.js b/packages/adapter-netlify/test/apps/basic/src/instrumentation.server.js deleted file mode 100644 index acc9022e1d64..000000000000 --- a/packages/adapter-netlify/test/apps/basic/src/instrumentation.server.js +++ /dev/null @@ -1 +0,0 @@ -// this is just here to make sure the changes resulting from it work diff --git a/packages/adapter-netlify/test/apps/basic/src/routes/+page.svelte b/packages/adapter-netlify/test/apps/basic/src/routes/+page.svelte new file mode 100644 index 000000000000..03c350d48255 --- /dev/null +++ b/packages/adapter-netlify/test/apps/basic/src/routes/+page.svelte @@ -0,0 +1 @@ +

Hello from SvelteKit

diff --git a/packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.server.js b/packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.server.js new file mode 100644 index 000000000000..31e005a89bad --- /dev/null +++ b/packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.server.js @@ -0,0 +1,4 @@ +/** @type {import('./$types').PageServerLoad} */ +export function load({ params }) { + return { name: params.name }; +} diff --git a/packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.svelte b/packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.svelte new file mode 100644 index 000000000000..4dcbba568369 --- /dev/null +++ b/packages/adapter-netlify/test/apps/basic/src/routes/greeting/[name]/+page.svelte @@ -0,0 +1,5 @@ + + +

Hello {data.name}

diff --git a/packages/adapter-netlify/test/apps/basic/svelte.config.js b/packages/adapter-netlify/test/apps/basic/svelte.config.js index 050579db13ba..20cd2b3ff5b8 100644 --- a/packages/adapter-netlify/test/apps/basic/svelte.config.js +++ b/packages/adapter-netlify/test/apps/basic/svelte.config.js @@ -3,12 +3,7 @@ import adapter from '../../../index.js'; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { - adapter: adapter(), - experimental: { - instrumentation: { - server: true - } - } + adapter: adapter() } }; diff --git a/packages/adapter-netlify/test/apps/basic/test/test.js b/packages/adapter-netlify/test/apps/basic/test/test.js index 50329932eb04..89d91598c165 100644 --- a/packages/adapter-netlify/test/apps/basic/test/test.js +++ b/packages/adapter-netlify/test/apps/basic/test/test.js @@ -5,8 +5,30 @@ import { expect, test } from '@playwright/test'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); +test('page renders', async ({ request }) => { + const response = await request.get('/'); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('Hello from SvelteKit'); +}); + +test('dynamic route works', async ({ request }) => { + const response = await request.get('/greeting/world'); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('Hello world'); +}); + test('read from $app/server works', async ({ request }) => { const content = fs.readFileSync(path.resolve(__dirname, '../src/routes/read/file.txt'), 'utf-8'); const response = await request.get('/read'); expect(await response.text()).toBe(content); }); + +test('_redirects are copied to publish directory', () => { + const redirects = fs.readFileSync(path.resolve(__dirname, '../build/_redirects'), 'utf-8'); + expect(redirects).toContain('/redirect-me /greeting/redirected 301'); +}); + +test('_headers are copied to publish directory', () => { + const headers = fs.readFileSync(path.resolve(__dirname, '../build/_headers'), 'utf-8'); + expect(headers).toContain('X-Custom-Header: test-value'); +}); diff --git a/packages/adapter-netlify/test/apps/edge/_headers b/packages/adapter-netlify/test/apps/edge/_headers new file mode 100644 index 000000000000..01c0aab8e046 --- /dev/null +++ b/packages/adapter-netlify/test/apps/edge/_headers @@ -0,0 +1,2 @@ +/custom-header-path + X-Custom-Header: test-value diff --git a/packages/adapter-netlify/test/apps/edge/_redirects b/packages/adapter-netlify/test/apps/edge/_redirects new file mode 100644 index 000000000000..fd5703a26e6a --- /dev/null +++ b/packages/adapter-netlify/test/apps/edge/_redirects @@ -0,0 +1 @@ +/redirect-me /greeting/redirected 301 diff --git a/packages/adapter-netlify/test/apps/edge/netlify.toml b/packages/adapter-netlify/test/apps/edge/netlify.toml index 5ea18d6abd4e..cc05e8c07a1d 100644 --- a/packages/adapter-netlify/test/apps/edge/netlify.toml +++ b/packages/adapter-netlify/test/apps/edge/netlify.toml @@ -1,13 +1,11 @@ [build] publish = "build" -# TODO: remove this once @netlify/dev works with the Netlify frameworks API -# we are purposely misusing the edge functions config to discover our framework -# build output because the Netlify dev plugin doesn't currently detect it +# TODO(serhalp): remove this when @netlify/dev supports serve/preview. +# @netlify/dev does not yet have explicit support for a "serve" mode, but this funky workaround is +# sufficient for our purposes for now. NOTE: do not do this in real apps; this is only for testing. edge_functions = ".netlify/v1/edge-functions" -# Netlify dev plugin doesn't detect .netlify/v1/config.json [[edge_functions]] function = "sveltekit-render" path = "/*" -excludedPath = ["/_app/immutable/*", "/_app/version.json", "/.netlify/*"] diff --git a/packages/adapter-netlify/test/apps/edge/src/routes/+page.svelte b/packages/adapter-netlify/test/apps/edge/src/routes/+page.svelte new file mode 100644 index 000000000000..03c350d48255 --- /dev/null +++ b/packages/adapter-netlify/test/apps/edge/src/routes/+page.svelte @@ -0,0 +1 @@ +

Hello from SvelteKit

diff --git a/packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.server.js b/packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.server.js new file mode 100644 index 000000000000..31e005a89bad --- /dev/null +++ b/packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.server.js @@ -0,0 +1,4 @@ +/** @type {import('./$types').PageServerLoad} */ +export function load({ params }) { + return { name: params.name }; +} diff --git a/packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.svelte b/packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.svelte new file mode 100644 index 000000000000..4dcbba568369 --- /dev/null +++ b/packages/adapter-netlify/test/apps/edge/src/routes/greeting/[name]/+page.svelte @@ -0,0 +1,5 @@ + + +

Hello {data.name}

diff --git a/packages/adapter-netlify/test/apps/edge/test/test.js b/packages/adapter-netlify/test/apps/edge/test/test.js index 50329932eb04..8053aaa563a2 100644 --- a/packages/adapter-netlify/test/apps/edge/test/test.js +++ b/packages/adapter-netlify/test/apps/edge/test/test.js @@ -5,8 +5,25 @@ import { expect, test } from '@playwright/test'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); +test('page renders', async ({ request }) => { + const response = await request.get('/'); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('Hello from SvelteKit'); +}); + +test('dynamic route works', async ({ request }) => { + const response = await request.get('/greeting/world'); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('Hello world'); +}); + test('read from $app/server works', async ({ request }) => { const content = fs.readFileSync(path.resolve(__dirname, '../src/routes/read/file.txt'), 'utf-8'); const response = await request.get('/read'); expect(await response.text()).toBe(content); }); + +test('_headers are copied to publish directory', () => { + const headers = fs.readFileSync(path.resolve(__dirname, '../build/_headers'), 'utf-8'); + expect(headers).toContain('X-Custom-Header: test-value'); +}); diff --git a/packages/adapter-netlify/test/apps/instrumentation/.gitignore b/packages/adapter-netlify/test/apps/instrumentation/.gitignore new file mode 100644 index 000000000000..88f661c765c6 --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +node_modules +/.svelte-kit +/.netlify +/build +deno.lock \ No newline at end of file diff --git a/packages/adapter-netlify/test/apps/instrumentation/netlify.toml b/packages/adapter-netlify/test/apps/instrumentation/netlify.toml new file mode 100644 index 000000000000..d2d45458b84f --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/netlify.toml @@ -0,0 +1,8 @@ +[build] +publish = "build" + +# TODO(serhalp): remove this when @netlify/dev supports serve/preview. +# @netlify/dev does not yet have explicit support for a "serve" mode, but this funky workaround is +# sufficient for our purposes for now. NOTE: do not do this in real apps; this is only for testing. +[functions] +directory = "./.netlify/v1/functions" diff --git a/packages/adapter-netlify/test/apps/instrumentation/package.json b/packages/adapter-netlify/test/apps/instrumentation/package.json new file mode 100644 index 000000000000..e2f181b4503a --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/package.json @@ -0,0 +1,19 @@ +{ + "name": "test-netlify-instrumentation", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "node ../../preview.js", + "prepare": "svelte-kit sync || echo ''", + "test": "playwright test" + }, + "devDependencies": { + "@sveltejs/kit": "workspace:^", + "@sveltejs/vite-plugin-svelte": "catalog:", + "svelte": "catalog:", + "vite": "catalog:" + }, + "type": "module" +} diff --git a/packages/adapter-netlify/test/apps/instrumentation/playwright.config.js b/packages/adapter-netlify/test/apps/instrumentation/playwright.config.js new file mode 100644 index 000000000000..33d36b651014 --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/playwright.config.js @@ -0,0 +1 @@ +export { config as default } from '../../utils.js'; diff --git a/packages/adapter-netlify/test/apps/instrumentation/src/app.html b/packages/adapter-netlify/test/apps/instrumentation/src/app.html new file mode 100644 index 000000000000..26bc25de4e52 --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/src/app.html @@ -0,0 +1,12 @@ + + + + + + %sveltekit.head% + + + +
%sveltekit.body%
+ + diff --git a/packages/adapter-netlify/test/apps/instrumentation/src/instrumentation.server.js b/packages/adapter-netlify/test/apps/instrumentation/src/instrumentation.server.js new file mode 100644 index 000000000000..00368839194c --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/src/instrumentation.server.js @@ -0,0 +1 @@ +globalThis.__INSTRUMENTATION_RAN__ = true; diff --git a/packages/adapter-netlify/test/apps/instrumentation/src/routes/+page.svelte b/packages/adapter-netlify/test/apps/instrumentation/src/routes/+page.svelte new file mode 100644 index 000000000000..03c350d48255 --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/src/routes/+page.svelte @@ -0,0 +1 @@ +

Hello from SvelteKit

diff --git a/packages/adapter-netlify/test/apps/instrumentation/src/routes/instrumented/+server.js b/packages/adapter-netlify/test/apps/instrumentation/src/routes/instrumented/+server.js new file mode 100644 index 000000000000..def88b135b5f --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/src/routes/instrumented/+server.js @@ -0,0 +1,3 @@ +export function GET() { + return new Response(String(globalThis.__INSTRUMENTATION_RAN__ === true)); +} diff --git a/packages/adapter-netlify/test/apps/instrumentation/svelte.config.js b/packages/adapter-netlify/test/apps/instrumentation/svelte.config.js new file mode 100644 index 000000000000..050579db13ba --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/svelte.config.js @@ -0,0 +1,15 @@ +import adapter from '../../../index.js'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + kit: { + adapter: adapter(), + experimental: { + instrumentation: { + server: true + } + } + } +}; + +export default config; diff --git a/packages/adapter-netlify/test/apps/instrumentation/test/test.js b/packages/adapter-netlify/test/apps/instrumentation/test/test.js new file mode 100644 index 000000000000..452b099714a3 --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/test/test.js @@ -0,0 +1,13 @@ +import { expect, test } from '@playwright/test'; + +test('page renders', async ({ request }) => { + const response = await request.get('/'); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('Hello from SvelteKit'); +}); + +test('instrumentation.server.js runs at startup', async ({ request }) => { + const response = await request.get('/instrumented'); + expect(response.status()).toBe(200); + expect(await response.text()).toBe('true'); +}); diff --git a/packages/adapter-netlify/test/apps/instrumentation/tsconfig.json b/packages/adapter-netlify/test/apps/instrumentation/tsconfig.json new file mode 100644 index 000000000000..34380ebc986e --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + }, + "extends": "./.svelte-kit/tsconfig.json" +} diff --git a/packages/adapter-netlify/test/apps/instrumentation/vite.config.ts b/packages/adapter-netlify/test/apps/instrumentation/vite.config.ts new file mode 100644 index 000000000000..72a307cc0e56 --- /dev/null +++ b/packages/adapter-netlify/test/apps/instrumentation/vite.config.ts @@ -0,0 +1,11 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import type { UserConfig } from 'vite'; + +const config: UserConfig = { + build: { + minify: false + }, + plugins: [sveltekit()] +}; + +export default config; diff --git a/packages/adapter-netlify/test/apps/split/.gitignore b/packages/adapter-netlify/test/apps/split/.gitignore index 88f661c765c6..4150a3674e3a 100644 --- a/packages/adapter-netlify/test/apps/split/.gitignore +++ b/packages/adapter-netlify/test/apps/split/.gitignore @@ -3,4 +3,4 @@ node_modules /.svelte-kit /.netlify /build -deno.lock \ No newline at end of file +deno.lock diff --git a/packages/adapter-netlify/test/apps/split/_redirects b/packages/adapter-netlify/test/apps/split/_redirects new file mode 100644 index 000000000000..fd5703a26e6a --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/_redirects @@ -0,0 +1 @@ +/redirect-me /greeting/redirected 301 diff --git a/packages/adapter-netlify/test/apps/split/netlify.toml b/packages/adapter-netlify/test/apps/split/netlify.toml index 00917ab74a18..a19ca0df6798 100644 --- a/packages/adapter-netlify/test/apps/split/netlify.toml +++ b/packages/adapter-netlify/test/apps/split/netlify.toml @@ -1,8 +1,8 @@ [build] publish = "build" -# TODO: remove this once @netlify/dev works with the Netlify frameworks API -# we are purposely misusing the user functions config to discover our framework -# build output because the Netlify dev plugin doesn't currently detect it +# TODO(serhalp): remove this when @netlify/dev supports serve/preview. +# @netlify/dev does not yet have explicit support for a "serve" mode, but this funky workaround is +# sufficient for our purposes for now. NOTE: do not do this in real apps; this is only for testing. [functions] directory = ".netlify/v1/functions" diff --git a/packages/adapter-netlify/test/apps/split/src/instrumentation.server.js b/packages/adapter-netlify/test/apps/split/src/instrumentation.server.js deleted file mode 100644 index acc9022e1d64..000000000000 --- a/packages/adapter-netlify/test/apps/split/src/instrumentation.server.js +++ /dev/null @@ -1 +0,0 @@ -// this is just here to make sure the changes resulting from it work diff --git a/packages/adapter-netlify/test/apps/split/src/routes/+page.svelte b/packages/adapter-netlify/test/apps/split/src/routes/+page.svelte new file mode 100644 index 000000000000..03c350d48255 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/src/routes/+page.svelte @@ -0,0 +1 @@ +

Hello from SvelteKit

diff --git a/packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.server.js b/packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.server.js new file mode 100644 index 000000000000..31e005a89bad --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.server.js @@ -0,0 +1,4 @@ +/** @type {import('./$types').PageServerLoad} */ +export function load({ params }) { + return { name: params.name }; +} diff --git a/packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.svelte b/packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.svelte new file mode 100644 index 000000000000..4dcbba568369 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/src/routes/greeting/[name]/+page.svelte @@ -0,0 +1,5 @@ + + +

Hello {data.name}

diff --git a/packages/adapter-netlify/test/apps/split/svelte.config.js b/packages/adapter-netlify/test/apps/split/svelte.config.js index f9615fced0bc..d8a8964901c7 100644 --- a/packages/adapter-netlify/test/apps/split/svelte.config.js +++ b/packages/adapter-netlify/test/apps/split/svelte.config.js @@ -5,9 +5,6 @@ const config = { kit: { adapter: adapter({ split: true }), experimental: { - instrumentation: { - server: true - }, remoteFunctions: true } } diff --git a/packages/adapter-netlify/test/apps/split/test/test.js b/packages/adapter-netlify/test/apps/split/test/test.js index 1e502c5c559a..9ab80a929fb5 100644 --- a/packages/adapter-netlify/test/apps/split/test/test.js +++ b/packages/adapter-netlify/test/apps/split/test/test.js @@ -1,5 +1,10 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; import { expect, test } from '@playwright/test'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + test('routes to routes with dynamic params', async ({ page }) => { await page.goto('/dynamic/123'); await expect(page.locator('p')).toHaveText('id: 123'); @@ -20,3 +25,14 @@ test('client-side fetch for query remote function data', async ({ page }) => { await page.goto('/remote/query'); await expect(page.locator('p')).toHaveText('a: 1'); }); + +test('split generates multiple function files', () => { + const functions_dir = path.resolve(__dirname, '../.netlify/v1/functions'); + const files = fs.readdirSync(functions_dir).filter((f) => f.startsWith('sveltekit-')); + expect(files.length).toBeGreaterThan(1); +}); + +test('_redirects are copied to publish directory', () => { + const redirects = fs.readFileSync(path.resolve(__dirname, '../build/_redirects'), 'utf-8'); + expect(redirects).toContain('/redirect-me /greeting/redirected 301'); +}); diff --git a/packages/adapter-netlify/test/preview.js b/packages/adapter-netlify/test/preview.js index 603d47741d82..c142137e9663 100644 --- a/packages/adapter-netlify/test/preview.js +++ b/packages/adapter-netlify/test/preview.js @@ -6,19 +6,20 @@ import process from 'node:process'; import { getRequest, setResponse } from '@sveltejs/kit/node'; const netlifyDev = new NetlifyDev({}); - -const serverReady = netlifyDev.start(); +await netlifyDev.start(); const port = process.env.PORT ? +process.env.PORT : 8888; const base = `http://localhost:${port}`; http .createServer(async (req, res) => { - await serverReady; const request = await getRequest({ request: req, base }); - const response = - (await netlifyDev.handle(request)) ?? new Response('Not Found', { status: 404 }); - await setResponse(res, response); + const response = await netlifyDev.handle(request); + if (response) { + await setResponse(res, response); + return; + } + await setResponse(res, new Response('Not Found', { status: 404 })); }) .listen(port); console.log(`Netlify Dev listening on http://localhost:${port}`); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a0e39e69800..31b78ed6c4cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -293,6 +293,21 @@ importers: specifier: 'catalog:' version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + packages/adapter-netlify/test/apps/instrumentation: + devDependencies: + '@sveltejs/kit': + specifier: workspace:^ + version: link:../../../../kit + '@sveltejs/vite-plugin-svelte': + specifier: 'catalog:' + version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + svelte: + specifier: 'catalog:' + version: 5.51.5 + vite: + specifier: 'catalog:' + version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + packages/adapter-netlify/test/apps/split: devDependencies: '@sveltejs/kit': From 1f87a79b1837e68c668492cd4c2e169fd053b389 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 23 Feb 2026 12:07:13 -0800 Subject: [PATCH 15/72] chore: remove Svelte 4 code (#15387) --- .../core/sync/create_manifest_data/index.js | 3 +- packages/kit/src/core/sync/utils.js | 8 -- .../src/core/sync/write_client_manifest.js | 4 +- packages/kit/src/core/sync/write_root.js | 116 ++++++------------ packages/kit/src/core/sync/write_server.js | 4 +- packages/kit/src/exports/vite/index.js | 12 +- .../components/{svelte-5 => }/error.svelte | 0 .../components/{svelte-5 => }/layout.svelte | 2 +- .../runtime/components/svelte-4/error.svelte | 6 - .../runtime/components/svelte-4/layout.svelte | 1 - scripts/print-flaky-test-report.js | 2 + scripts/sync-all.js | 9 +- tsconfig.json | 2 +- 13 files changed, 57 insertions(+), 112 deletions(-) rename packages/kit/src/runtime/components/{svelte-5 => }/error.svelte (100%) rename packages/kit/src/runtime/components/{svelte-5 => }/layout.svelte (56%) delete mode 100644 packages/kit/src/runtime/components/svelte-4/error.svelte delete mode 100644 packages/kit/src/runtime/components/svelte-4/layout.svelte diff --git a/packages/kit/src/core/sync/create_manifest_data/index.js b/packages/kit/src/core/sync/create_manifest_data/index.js index 721de50391ba..27dc4f8cba5d 100644 --- a/packages/kit/src/core/sync/create_manifest_data/index.js +++ b/packages/kit/src/core/sync/create_manifest_data/index.js @@ -6,7 +6,6 @@ import { styleText } from 'node:util'; import { posixify, resolve_entry } from '../../../utils/filesystem.js'; import { parse_route_id } from '../../../utils/routing.js'; import { list_files, runtime_directory } from '../../utils.js'; -import { isSvelte5Plus } from '../utils.js'; import { sort_routes } from './sort.js'; import { create_node_analyser, @@ -24,7 +23,7 @@ import { */ export default function create_manifest_data({ config, - fallback = `${runtime_directory}/components/${isSvelte5Plus() ? 'svelte-5' : 'svelte-4'}`, + fallback = `${runtime_directory}/components`, cwd = process.cwd() }) { const assets = create_assets(config); diff --git a/packages/kit/src/core/sync/utils.js b/packages/kit/src/core/sync/utils.js index be3ecc22b347..0e0181366f9d 100644 --- a/packages/kit/src/core/sync/utils.js +++ b/packages/kit/src/core/sync/utils.js @@ -1,10 +1,6 @@ import fs from 'node:fs'; import path from 'node:path'; import { mkdirp } from '../../utils/filesystem.js'; -import { import_peer } from '../../utils/import.js'; - -/** @type {{ VERSION: string }} */ -const { VERSION } = await import_peer('svelte/compiler'); /** @type {Map} */ const previous_contents = new Map(); @@ -72,7 +68,3 @@ export function dedent(strings, ...values) { return str; } - -export function isSvelte5Plus() { - return Number(VERSION[0]) >= 5; -} diff --git a/packages/kit/src/core/sync/write_client_manifest.js b/packages/kit/src/core/sync/write_client_manifest.js index 06789ab95c80..f47f21991ee4 100644 --- a/packages/kit/src/core/sync/write_client_manifest.js +++ b/packages/kit/src/core/sync/write_client_manifest.js @@ -2,7 +2,7 @@ import path from 'node:path'; import { styleText } from 'node:util'; import { relative_path, resolve_entry } from '../../utils/filesystem.js'; import { s } from '../../utils/misc.js'; -import { dedent, isSvelte5Plus, write_if_changed } from './utils.js'; +import { dedent, write_if_changed } from './utils.js'; /** * Writes the client manifest to disk. The manifest is used to power the router. It contains the @@ -176,7 +176,7 @@ export function write_client_manifest(kit, manifest_data, output, metadata) { export const decode = (type, value) => decoders[type](value); - export { default as root } from '../root.${isSvelte5Plus() ? 'js' : 'svelte'}'; + export { default as root } from '../root.js'; ` ); diff --git a/packages/kit/src/core/sync/write_root.js b/packages/kit/src/core/sync/write_root.js index 5866b3d8e783..a9da7e2e8106 100644 --- a/packages/kit/src/core/sync/write_root.js +++ b/packages/kit/src/core/sync/write_root.js @@ -1,4 +1,4 @@ -import { dedent, isSvelte5Plus, write_if_changed } from './utils.js'; +import { dedent, write_if_changed } from './utils.js'; /** * @param {import('types').ManifestData} manifest_data @@ -22,38 +22,24 @@ export function write_root(manifest_data, output) { let l = max_depth; let pyramid = dedent` - ${ - isSvelte5Plus() - ? ` - ` - : `` - }`; + + `; while (l--) { pyramid = dedent` {#if constructors[${l + 1}]} - ${ - isSvelte5Plus() - ? dedent`{@const Pyramid_${l} = constructors[${l}]} + ${dedent`{@const Pyramid_${l} = constructors[${l}]} ${pyramid} - ` - : dedent` - ${pyramid} - ` - } + `} {:else} - ${ - isSvelte5Plus() - ? dedent` + ${dedent` {@const Pyramid_${l} = constructors[${l}]} - ` - : dedent`` - } + `} {/if} `; @@ -63,61 +49,41 @@ export function write_root(manifest_data, output) { `${output}/root.svelte`, dedent` - ${isSvelte5Plus() ? '' : ''} + ${pyramid} @@ -148,14 +114,12 @@ export function write_root(manifest_data, output) { ` ); - if (isSvelte5Plus()) { - write_if_changed( - `${output}/root.js`, - dedent` - import { asClassComponent } from 'svelte/legacy'; - import Root from './root.svelte'; - export default asClassComponent(Root); - ` - ); - } + write_if_changed( + `${output}/root.js`, + dedent` + import { asClassComponent } from 'svelte/legacy'; + import Root from './root.svelte'; + export default asClassComponent(Root); + ` + ); } diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index 096c0f6c8d3c..64ca62d1f0c0 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -6,7 +6,7 @@ import { posixify, resolve_entry } from '../../utils/filesystem.js'; import { s } from '../../utils/misc.js'; import { load_error_page, load_template } from '../config/index.js'; import { runtime_directory } from '../utils.js'; -import { isSvelte5Plus, write_if_changed } from './utils.js'; +import { write_if_changed } from './utils.js'; import { escape_html } from '../../utils/escape.js'; /** @@ -29,7 +29,7 @@ const server_template = ({ template, error_page }) => ` -import root from '../root.${isSvelte5Plus() ? 'js' : 'svelte'}'; +import root from '../root.js'; import { set_building, set_prerendering } from '__sveltekit/environment'; import { set_assets } from '$app/paths/internal/server'; import { set_manifest, set_read_implementation } from '__sveltekit/server'; diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 282dc99b6b6a..11f5b3f9e96d 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -27,7 +27,7 @@ import prerender from '../../core/postbuild/prerender.js'; import analyse from '../../core/postbuild/analyse.js'; import { s } from '../../utils/misc.js'; import { hash } from '../../utils/hash.js'; -import { dedent, isSvelte5Plus } from '../../core/sync/utils.js'; +import { dedent } from '../../core/sync/utils.js'; import { env_dynamic_private, env_dynamic_public, @@ -112,10 +112,10 @@ const warning_preprocessor = { const basename = path.basename(filename); - if (basename.startsWith('+layout.') && !has_children(content, isSvelte5Plus())) { + if (basename.startsWith('+layout.') && !has_children(content, true)) { const message = `\n${styleText(['bold', 'red'], path.relative('.', filename))}\n` + - `\`\`${isSvelte5Plus() ? ' or `{@render ...}` tag' : ''}` + + '`` or `{@render ...}` tag' + ' missing — inner content will not be rendered'; if (!warned.has(message)) { @@ -149,11 +149,7 @@ export async function sveltekit() { extensions: svelte_config.extensions, preprocess, onwarn: svelte_config.onwarn, - compilerOptions: { - // @ts-ignore - ignore this property when running `pnpm check` against Svelte 5 in the ecosystem CI - hydratable: isSvelte5Plus() ? undefined : true, - ...svelte_config.compilerOptions - }, + compilerOptions: { ...svelte_config.compilerOptions }, ...svelte_config.vitePlugin }; diff --git a/packages/kit/src/runtime/components/svelte-5/error.svelte b/packages/kit/src/runtime/components/error.svelte similarity index 100% rename from packages/kit/src/runtime/components/svelte-5/error.svelte rename to packages/kit/src/runtime/components/error.svelte diff --git a/packages/kit/src/runtime/components/svelte-5/layout.svelte b/packages/kit/src/runtime/components/layout.svelte similarity index 56% rename from packages/kit/src/runtime/components/svelte-5/layout.svelte rename to packages/kit/src/runtime/components/layout.svelte index 4b7cb066e5aa..17d34e7cf6aa 100644 --- a/packages/kit/src/runtime/components/svelte-5/layout.svelte +++ b/packages/kit/src/runtime/components/layout.svelte @@ -1,5 +1,5 @@ {@render children()} diff --git a/packages/kit/src/runtime/components/svelte-4/error.svelte b/packages/kit/src/runtime/components/svelte-4/error.svelte deleted file mode 100644 index b82ddfaed4b4..000000000000 --- a/packages/kit/src/runtime/components/svelte-4/error.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - -

{$page.status}

-

{$page.error?.message}

diff --git a/packages/kit/src/runtime/components/svelte-4/layout.svelte b/packages/kit/src/runtime/components/svelte-4/layout.svelte deleted file mode 100644 index 4fa864ce7aa9..000000000000 --- a/packages/kit/src/runtime/components/svelte-4/layout.svelte +++ /dev/null @@ -1 +0,0 @@ - diff --git a/scripts/print-flaky-test-report.js b/scripts/print-flaky-test-report.js index d37e73ae978b..ebad60355bc1 100644 --- a/scripts/print-flaky-test-report.js +++ b/scripts/print-flaky-test-report.js @@ -1,3 +1,5 @@ +import * as process from 'node:process'; + // pnpm captures stdout and prefixes it with the package name which breaks the annotations // so save it in a file and print it out at the end // ideally we'd just use cat, but that doesn't work on Windows hence this script diff --git a/scripts/sync-all.js b/scripts/sync-all.js index 7e12ca05b561..08cf8bcf808c 100644 --- a/scripts/sync-all.js +++ b/scripts/sync-all.js @@ -1,6 +1,8 @@ import fs from 'node:fs'; import path from 'node:path'; +import { chdir } from 'node:process'; import { load_config } from '../packages/kit/src/core/config/index.js'; +import { all as syncAll } from '../packages/kit/src/core/sync/sync.js'; // This isn't strictly necessary, but it eliminates some annoying warnings in CI @@ -16,11 +18,8 @@ for (const directories of [ continue; } - process.chdir(cwd); + chdir(cwd); - // we defer this import so that we don't try and resolve `svelte` from - // the root via `isSvelte5Plus`, which would blow up - const sync = await import('../packages/kit/src/core/sync/sync.js'); - await sync.all(await load_config({ cwd }), 'development'); + syncAll(await load_config({ cwd }), 'development'); } } diff --git a/tsconfig.json b/tsconfig.json index a16cc63c8b86..d7ccc88d75da 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,5 +6,5 @@ "target": "ESNext", "moduleResolution": "bundler" }, - "include": ["eslint.config.js", ".eslint/*.js"] + "include": ["eslint.config.js", ".eslint/*.js", "scripts"] } From e802ae907c18a997f333a1ab07bdc32f4b473014 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 24 Feb 2026 14:41:19 -0800 Subject: [PATCH 16/72] chore: upgrade to Vite 8 beta (#15376) removes some stuff for testing Node 18 since we don't support it anymore Already separately bumped the peer dependency in another PR for a cleaner PR and changeset --- .github/workflows/ci.yml | 16 +- packages/adapter-auto/package.json | 1 + packages/adapter-cloudflare/package.json | 1 + packages/adapter-netlify/package.json | 1 + packages/adapter-node/package.json | 1 + packages/adapter-vercel/package.json | 1 + .../enhanced-img/test/markup-plugin.spec.js | 2 +- packages/kit/src/exports/vite/index.js | 67 +- packages/package/package.json | 1 + pnpm-lock.yaml | 680 ++++++++++-------- pnpm-workspace.yaml | 21 +- 11 files changed, 440 insertions(+), 352 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4656da31d7ae..b7d972edf15d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,10 +75,10 @@ jobs: os: ubuntu-latest e2e-browser: 'chromium' vite: 'current' - - node-version: 24 - os: ubuntu-latest - e2e-browser: 'chromium' - vite: 'beta' +# - node-version: 24 +# os: ubuntu-latest +# e2e-browser: 'chromium' +# vite: 'beta' env: KIT_E2E_BROWSER: ${{matrix.e2e-browser}} MATRIX_VITE: ${{matrix.vite}} @@ -260,14 +260,6 @@ jobs: with: deno-version: ^2.2.4 - run: pnpm install --frozen-lockfile - - name: setup overrides for matrix.node - if: matrix.node-version == 18 - run: - | # copies catalogs.node-xx to overrides in pnpm-workspace.yaml so the subsequent `pnpm install` enforces them - yq -i '.overrides =.catalogs."node-18"' pnpm-workspace.yaml - pnpm install --no-frozen-lockfile - git checkout pnpm-lock.yaml pnpm-workspace.yaml # revert changes to pnpm files to avoid cache key changes - pnpm --dir packages/kit ls vite @sveltejs/vite-plugin-svelte - run: pnpm playwright install chromium --no-shell - run: cd packages/kit && pnpm prepublishOnly - run: pnpm run test:others diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index c9bec56fcf5a..c9e3ed1982c4 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -44,6 +44,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", "typescript": "^5.3.3", + "vite": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index ae46453ce50b..7945963a18f7 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -53,6 +53,7 @@ "@types/node": "catalog:", "esbuild": "catalog:", "typescript": "^5.3.3", + "vite": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index d052e0545bcb..2f00c5c00571 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -58,6 +58,7 @@ "@types/node": "catalog:", "rolldown": "^1.0.0-rc.5", "typescript": "^5.3.3", + "vite": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 09da0782e5ae..aa131586cd87 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -49,6 +49,7 @@ "polka": "catalog:", "sirv": "^3.0.2", "typescript": "^5.3.3", + "vite": "catalog:", "vitest": "catalog:" }, "dependencies": { diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 2c17bfd02398..a87fa3de7f43 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -48,6 +48,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", "typescript": "^5.3.3", + "vite": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/enhanced-img/test/markup-plugin.spec.js b/packages/enhanced-img/test/markup-plugin.spec.js index 1da359e91cff..b6dacafe3ec1 100644 --- a/packages/enhanced-img/test/markup-plugin.spec.js +++ b/packages/enhanced-img/test/markup-plugin.spec.js @@ -41,7 +41,7 @@ it('Image preprocess snapshot test', async () => { if (!transformed.code) throw new Error('transform did not return any code'); // Make imports readable - const ouput = transformed.code.replace(/import/g, '\n\timport'); + const ouput = transformed.code.toString().replace(/import/g, '\n\timport'); await expect(ouput).toMatchFileSnapshot('./Output.svelte'); }); diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 5939ea81bdc0..f8eb5801f0ee 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -185,9 +185,6 @@ async function kit({ svelte_config }) { /** @type {import('vite')} */ const vite = await import_peer('vite'); - // @ts-ignore `vite.rolldownVersion` only exists in `vite 8` - const is_rolldown = !!vite.rolldownVersion; - const { kit } = svelte_config; const out = `${kit.outDir}/output`; @@ -299,7 +296,27 @@ async function kit({ svelte_config }) { // this does not affect app code, just handling of imported libraries that use $app or $env '$app', '$env' - ] + ], + rolldownOptions: kit.experimental.remoteFunctions + ? { + plugins: [ + { + name: 'vite-plugin-sveltekit-setup:optimize-remote-functions', + load: { + filter: { + // treat .remote.js files as empty for the purposes of prebundling + id: new RegExp( + `.remote(${kit.moduleExtensions.join('|')})$`.replaceAll('.', '\\.') + ) + }, + handler() { + return ''; + } + } + } + ] + } + : undefined }, ssr: { noExternal: [ @@ -318,40 +335,6 @@ async function kit({ svelte_config }) { } }; - if (kit.experimental.remoteFunctions) { - // treat .remote.js files as empty for the purposes of prebundling - // detects rolldown to avoid a warning message in vite 8 beta - const remote_id_filter = new RegExp( - `.remote(${kit.moduleExtensions.join('|')})$`.replaceAll('.', '\\.') - ); - new_config.optimizeDeps ??= {}; // for some reason ts says this could be undefined even though it was set above - if (is_rolldown) { - // @ts-ignore - new_config.optimizeDeps.rolldownOptions ??= {}; - // @ts-ignore - new_config.optimizeDeps.rolldownOptions.plugins ??= []; - // @ts-ignore - new_config.optimizeDeps.rolldownOptions.plugins.push({ - name: 'vite-plugin-sveltekit-setup:optimize-remote-functions', - load: { - filter: { id: remote_id_filter }, - handler() { - return ''; - } - } - }); - } else { - new_config.optimizeDeps.esbuildOptions ??= {}; - new_config.optimizeDeps.esbuildOptions.plugins ??= []; - new_config.optimizeDeps.esbuildOptions.plugins.push({ - name: 'vite-plugin-sveltekit-setup:optimize-remote-functions', - setup(build) { - build.onLoad({ filter: remote_id_filter }, () => ({ contents: '' })); - } - }); - } - } - const define = { __SVELTEKIT_APP_DIR__: s(kit.appDir), __SVELTEKIT_EMBEDDED__: s(kit.embedded), @@ -924,16 +907,12 @@ async function kit({ svelte_config }) { assetFileNames: `${prefix}/assets/[name].[hash][extname]`, hoistTransitiveImports: false, sourcemapIgnoreList, - inlineDynamicImports: is_rolldown ? undefined : !split, - // @ts-ignore: only available in Vite 8 - codeSplitting: is_rolldown ? split : undefined + codeSplitting: split }, preserveEntrySignatures: 'strict', onwarn(warning, handler) { if ( - (is_rolldown - ? warning.code === 'IMPORT_IS_UNDEFINED' - : warning.code === 'MISSING_EXPORT') && + warning.code === 'IMPORT_IS_UNDEFINED' && warning.id === `${kit.outDir}/generated/client-optimized/app.js` ) { // ignore e.g. undefined `handleError` hook when diff --git a/packages/package/package.json b/packages/package/package.json index 5c5211d5dd6d..d5bb18b34915 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -33,6 +33,7 @@ "svelte": "catalog:", "svelte-preprocess": "catalog:", "typescript": "^5.3.3", + "vite": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 378bc6502425..a29710313837 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,8 +37,8 @@ catalogs: specifier: ^9.0.0 version: 9.0.0 '@sveltejs/vite-plugin-svelte': - specifier: ^6.0.0-next.3 - version: 6.2.4 + specifier: ^7.0.0 + version: 7.0.0 '@svitejs/changesets-changelog-github-compact': specifier: ^1.2.0 version: 1.2.0 @@ -58,8 +58,8 @@ catalogs: specifier: ^2.4.7 version: 2.4.7 '@vitest/browser-playwright': - specifier: ^4.0.0 - version: 4.0.16 + specifier: ^4.1.0-beta.4 + version: 4.1.0-beta.4 dropcss: specifier: ^1.0.16 version: 1.0.16 @@ -94,11 +94,11 @@ catalogs: specifier: ^1.1.0 version: 1.2.0 vite: - specifier: ^6.3.5 - version: 6.4.1 + specifier: ^8.0.0-beta.15 + version: 8.0.0-beta.15 vitest: - specifier: ^4.0.0 - version: 4.0.16 + specifier: ^4.1.0-beta.4 + version: 4.1.0-beta.4 wrangler: specifier: ^4.67.0 version: 4.67.0 @@ -136,16 +136,19 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 typescript: specifier: ^5.3.3 version: 5.8.3 + vite: + specifier: 'catalog:' + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-cloudflare: dependencies: @@ -174,9 +177,12 @@ importers: typescript: specifier: ^5.3.3 version: 5.8.3 + vite: + specifier: 'catalog:' + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-cloudflare/test/apps/pages: devDependencies: @@ -185,7 +191,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/pages/server-side-dep @@ -194,7 +200,7 @@ importers: version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) wrangler: specifier: 'catalog:' version: 4.67.0(@cloudflare/workers-types@4.20260227.0) @@ -206,7 +212,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/workers/server-side-dep @@ -215,7 +221,7 @@ importers: version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) wrangler: specifier: 'catalog:' version: 4.67.0(@cloudflare/workers-types@4.20260227.0) @@ -249,7 +255,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 @@ -259,9 +265,12 @@ importers: typescript: specifier: ^5.3.3 version: 5.8.3 + vite: + specifier: 'catalog:' + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-netlify/test/apps/basic: devDependencies: @@ -270,13 +279,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/adapter-netlify/test/apps/edge: devDependencies: @@ -285,13 +294,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/adapter-netlify/test/apps/instrumentation: devDependencies: @@ -300,13 +309,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/adapter-netlify/test/apps/split: devDependencies: @@ -315,13 +324,13 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/adapter-node: dependencies: @@ -337,7 +346,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 @@ -350,9 +359,12 @@ importers: typescript: specifier: ^5.3.3 version: 5.8.3 + vite: + specifier: 'catalog:' + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-static: devDependencies: @@ -364,7 +376,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 @@ -379,7 +391,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -388,7 +400,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) sirv-cli: specifier: 'catalog:' version: 3.0.0 @@ -397,7 +409,7 @@ importers: version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/adapter-static/test/apps/spa: devDependencies: @@ -406,7 +418,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) sirv-cli: specifier: 'catalog:' version: 3.0.0 @@ -415,7 +427,7 @@ importers: version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/adapter-vercel: dependencies: @@ -431,16 +443,19 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 typescript: specifier: ^5.3.3 version: 5.8.3 + vite: + specifier: 'catalog:' + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-vercel/test/apps/basic: devDependencies: @@ -449,7 +464,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -458,7 +473,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/amp: devDependencies: @@ -489,7 +504,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/estree': specifier: 'catalog:' version: 1.0.8 @@ -507,10 +522,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/enhanced-img/test/apps/basics: devDependencies: @@ -522,19 +537,19 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit: dependencies: '@standard-schema/spec': specifier: ^1.0.0 - version: 1.0.0 + version: 1.1.0 '@sveltejs/acorn-typescript': specifier: ^1.0.5 version: 1.0.9(acorn@8.16.0) @@ -571,7 +586,7 @@ importers: version: 1.58.2 '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/connect': specifier: 'catalog:' version: 3.4.38 @@ -598,10 +613,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/kit/test/apps/amp: devDependencies: @@ -613,7 +628,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) dropcss: specifier: 'catalog:' version: 1.0.16 @@ -628,7 +643,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/async: devDependencies: @@ -637,7 +652,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -652,7 +667,7 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/basics: devDependencies: @@ -670,10 +685,10 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) + version: 4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) svelte: specifier: 'catalog:' version: 5.51.5 @@ -691,10 +706,10 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/kit/test/apps/dev-only: devDependencies: @@ -703,7 +718,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) e2e-test-dep-error: specifier: file:./_test_dependencies/cjs-only version: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only @@ -745,7 +760,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/embed: devDependencies: @@ -754,7 +769,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -766,7 +781,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/hash-based-routing: devDependencies: @@ -775,7 +790,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -787,7 +802,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/no-ssr: devDependencies: @@ -796,7 +811,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -808,7 +823,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/options: devDependencies: @@ -820,7 +835,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -832,7 +847,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/options-2: devDependencies: @@ -844,7 +859,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -859,7 +874,7 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/options-3: devDependencies: @@ -871,7 +886,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -883,7 +898,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/prerendered-app-error-pages: devDependencies: @@ -892,7 +907,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -904,7 +919,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/apps/writes: devDependencies: @@ -913,7 +928,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -925,13 +940,13 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors: devDependencies: vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: devDependencies: @@ -943,7 +958,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -955,7 +970,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/prerender-remote-function-error: devDependencies: @@ -967,7 +982,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -979,7 +994,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -991,7 +1006,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1003,7 +1018,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -1015,7 +1030,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1027,7 +1042,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -1036,7 +1051,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1048,7 +1063,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -1057,7 +1072,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1069,7 +1084,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -1078,7 +1093,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1090,7 +1105,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -1099,7 +1114,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1111,7 +1126,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -1120,7 +1135,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1132,7 +1147,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -1141,7 +1156,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1153,7 +1168,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -1162,7 +1177,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1174,7 +1189,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -1183,7 +1198,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1195,7 +1210,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -1204,7 +1219,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1216,7 +1231,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -1225,7 +1240,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1237,7 +1252,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -1246,7 +1261,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1258,7 +1273,7 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages/kit/test/prerendering/basics: devDependencies: @@ -1267,7 +1282,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1279,10 +1294,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/kit/test/prerendering/options: devDependencies: @@ -1291,7 +1306,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1303,10 +1318,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1315,7 +1330,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) svelte: specifier: 'catalog:' version: 5.51.5 @@ -1327,10 +1342,10 @@ importers: version: 5.8.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/package: dependencies: @@ -1349,7 +1364,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 @@ -1368,9 +1383,12 @@ importers: typescript: specifier: ^5.3.3 version: 5.8.3 + vite: + specifier: 'catalog:' + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/test-redirect-importer: dependencies: @@ -1412,7 +1430,7 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) prettier: specifier: ^3.3.2 version: 3.6.0 @@ -1436,7 +1454,7 @@ importers: version: 1.2.0(typescript@5.8.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) packages: @@ -2723,6 +2741,10 @@ packages: resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} engines: {node: '>=14'} + '@oxc-project/runtime@0.114.0': + resolution: {integrity: sha512-mVGQvr/uFJGQ3hsvgQ1sJfh79t5owyZZZtw+VaH+WhtvsmtgjT6imznB9sz2Q67Q0/4obM9mOOtQscU4aJteSg==} + engines: {node: ^20.19.0 || >=22.12.0} + '@oxc-project/types@0.114.0': resolution: {integrity: sha512-//nBfbzHQHvJs8oFIjv6coZ6uxQ4alLfiPe6D5vit6c4pmxATHHlVwgB1k+Hv4yoAMyncdxgRBF5K4BYWUCzvA==} @@ -3113,8 +3135,8 @@ packages: '@speed-highlight/core@1.2.14': resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@stylistic/eslint-plugin-js@2.1.0': resolution: {integrity: sha512-gdXUjGNSsnY6nPyqxu6lmDTtVrwCOjun4x8PUn0x04d5ucLI74N3MT1Q0UhdcOR9No3bo5PGDyBgXK+KmD787A==} @@ -3139,20 +3161,12 @@ packages: typescript: '>= 5' typescript-eslint: '>= 8' - '@sveltejs/vite-plugin-svelte-inspector@5.0.2': - resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==} - engines: {node: ^20.19 || ^22.12 || >=24} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0 - svelte: ^5.0.0 - vite: ^6.3.0 || ^7.0.0 - - '@sveltejs/vite-plugin-svelte@6.2.4': - resolution: {integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==} + '@sveltejs/vite-plugin-svelte@7.0.0': + resolution: {integrity: sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==} engines: {node: ^20.19 || ^22.12 || >=24} peerDependencies: - svelte: ^5.0.0 - vite: ^6.3.0 || ^7.0.0 + svelte: ^5.46.4 + vite: ^8.0.0-beta.7 || ^8.0.0 '@svitejs/changesets-changelog-github-compact@1.2.0': resolution: {integrity: sha512-08eKiDAjj4zLug1taXSIJ0kGL5cawjVCyJkBb6EWSg5fEPX6L+Wtr0CH2If4j5KYylz85iaZiFlUItvgJvll5g==} @@ -3290,22 +3304,22 @@ packages: engines: {node: '>=20'} hasBin: true - '@vitest/browser-playwright@4.0.16': - resolution: {integrity: sha512-I2Fy/ANdphi1yI46d15o0M1M4M0UJrUiVKkH5oKeRZZCdPg0fw/cfTKZzv9Ge9eobtJYp4BGblMzXdXH0vcl5g==} + '@vitest/browser-playwright@4.1.0-beta.4': + resolution: {integrity: sha512-tjNmV3jz09UmyivfpLRbSrRpYILkwSpwfQmwDB314LiDg2+clTj8mlSYQxPuX+Mmg+p9ozt6+D9sikhVgQtY2w==} peerDependencies: playwright: '*' - vitest: 4.0.16 + vitest: 4.1.0-beta.4 - '@vitest/browser@4.0.16': - resolution: {integrity: sha512-t4toy8X/YTnjYEPoY0pbDBg3EvDPg1elCDrfc+VupPHwoN/5/FNQ8Z+xBYIaEnOE2vVEyKwqYBzZ9h9rJtZVcg==} + '@vitest/browser@4.1.0-beta.4': + resolution: {integrity: sha512-/YdjpNjNL2cq7cB6fDrJE/V0jDViHZS+M92iN5h/ZilARGIPMU+vt/p94oGI8qPRYYA7D+SnJpLlK1iqFi5RTw==} peerDependencies: - vitest: 4.0.16 + vitest: 4.1.0-beta.4 - '@vitest/expect@4.0.16': - resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} + '@vitest/expect@4.1.0-beta.4': + resolution: {integrity: sha512-50CzsTy9kVrlI7V0Ot63jPb5q069r1Xn/z489q/pWmFImEUC30oiO9gaRInkWUmgHpSZTO8E9rSdu6jFZwRHjg==} - '@vitest/mocker@4.0.16': - resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} + '@vitest/mocker@4.1.0-beta.4': + resolution: {integrity: sha512-JIHUUrevhes/tP8U3TqPHo/n8lmruITvC9YdnbYyA+L0Y9zyYZ5zW/07+i/aXpmabtxIiJG7eKIv2ootcBu4Vw==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3315,20 +3329,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.16': - resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} + '@vitest/pretty-format@4.1.0-beta.4': + resolution: {integrity: sha512-rAJOtUSRzgobQtuW98WV3bSkomdILArhgSc4JQ5G6Et0eaD6DTeMpr+k7B//F/xYG7oVeuabOTx3EWu06ILCgA==} - '@vitest/runner@4.0.16': - resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} + '@vitest/runner@4.1.0-beta.4': + resolution: {integrity: sha512-/uhv354dTwbqiDCAk9IUCVXNBGByn40Xh8DkJ5EdzqEYN3aw5x25OmmpxpSjxlkBkoxQEUP3zg6WOUGeTYKoOw==} - '@vitest/snapshot@4.0.16': - resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} + '@vitest/snapshot@4.1.0-beta.4': + resolution: {integrity: sha512-ukET4KPzUZgCD1flrQFuhuXS9J2/c6bzMoRCCmjB12+JwwgYvxCEE6wURZXRUjwcA6jD2HCpxeKiVq/4Ojz0EQ==} - '@vitest/spy@4.0.16': - resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} + '@vitest/spy@4.1.0-beta.4': + resolution: {integrity: sha512-aRsQ3vLSKbEifcMufUXAp1OCBcLEWDDmGAItaVa2WDwh08pxcpoDCCfchCDDYjftajq5Mi22ZNN9Afy9IW4ZJw==} - '@vitest/utils@4.0.16': - resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} + '@vitest/utils@4.1.0-beta.4': + resolution: {integrity: sha512-c6oj0FpdLwmOisNpeVwhXqwe9Harehj+n9Pfz4/Iv45dSR32VHDzK2uosqT2ocCZhgzXwX4xpL8thl2Wr/wyrw==} '@vue/compiler-core@3.5.16': resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==} @@ -3889,6 +3903,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -4515,72 +4532,78 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lightningcss-darwin-arm64@1.30.1: - resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.1: - resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.1: - resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.1: - resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.1: - resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.30.1: - resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.30.1: - resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.30.1: - resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.30.1: - resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.1: - resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.1: - resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} lilconfig@2.1.0: @@ -5478,10 +5501,9 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@7.5.7: - resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==} + tar@7.5.9: + resolution: {integrity: sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==} engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} @@ -5738,31 +5760,34 @@ packages: resolution: {integrity: sha512-FwjApRNZyN+RucPW9Z9kf0dyzyi3r3zlDfrTnzHXNaYpmT3pZ5w//d6QkApy1iypbDm+3fq+Gwfv+PYA4j4uYw==} engines: {node: '>=20.0.0'} - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@8.0.0-beta.15: + resolution: {integrity: sha512-RHX7IvsJlEfjyA1rS7MY0UsmF91etdLAamslHR5lfuO3W/BXRdXm2tRE64ztpSPZbKqB4wAAZ0AwtF6QzfKZLA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.0.0-alpha.31 + esbuild: ^0.27.0 jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -5778,28 +5803,29 @@ packages: yaml: optional: true - vitefu@1.1.1: - resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + vitefu@1.1.2: + resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0 peerDependenciesMeta: vite: optional: true - vitest@4.0.16: - resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} + vitest@4.1.0-beta.4: + resolution: {integrity: sha512-MimZ9YLGPFhLGVR+WWQdSvc2vmOwH75f5SDRttg+cnlBJ0XNs6mTvrV4Oi6xIF3FOsH3LPs2f/LM1WyCGy40qA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.16 - '@vitest/browser-preview': 4.0.16 - '@vitest/browser-webdriverio': 4.0.16 - '@vitest/ui': 4.0.16 + '@vitest/browser-playwright': 4.1.0-beta.4 + '@vitest/browser-preview': 4.1.0-beta.4 + '@vitest/browser-webdriverio': 4.1.0-beta.4 + '@vitest/ui': 4.1.0-beta.4 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -5894,8 +5920,8 @@ packages: utf-8-validate: optional: true - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -6690,7 +6716,7 @@ snapshots: node-fetch: 2.7.0 nopt: 8.0.0 semver: 7.7.4 - tar: 7.5.7 + tar: 7.5.9 transitivePeerDependencies: - encoding - supports-color @@ -6830,7 +6856,7 @@ snapshots: parse-imports: 2.2.1 path-key: 4.0.0 semver: 7.7.4 - tar: 7.5.7 + tar: 7.5.9 tmp-promise: 3.0.3 urlpattern-polyfill: 8.0.2 uuid: 11.1.0 @@ -7302,6 +7328,8 @@ snapshots: '@opentelemetry/semantic-conventions@1.36.0': {} + '@oxc-project/runtime@0.114.0': {} + '@oxc-project/types@0.114.0': {} '@parcel/watcher-android-arm64@2.5.1': @@ -7545,7 +7573,7 @@ snapshots: '@speed-highlight/core@1.2.14': {} - '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} '@stylistic/eslint-plugin-js@2.1.0(eslint@10.0.0(jiti@2.4.2))': dependencies: @@ -7571,22 +7599,23 @@ snapshots: typescript: 5.8.3 typescript-eslint: 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + deepmerge: 4.3.1 + magic-string: 0.30.21 obug: 2.1.1 svelte: 5.51.5 - vite: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) + vitefu: 1.1.2(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.51.5)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.51.5 - vite: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) + vitefu: 1.1.2(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@svitejs/changesets-changelog-github-compact@1.2.0': dependencies: @@ -7787,73 +7816,114 @@ snapshots: - rollup - supports-color - '@vitest/browser-playwright@4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16)': + '@vitest/browser-playwright@4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': + dependencies: + '@vitest/browser': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) + '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + playwright: 1.58.2 + tinyrainbow: 3.0.3 + vitest: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + optional: true + + '@vitest/browser-playwright@4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': dependencies: - '@vitest/browser': 4.0.16(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) - '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@vitest/browser': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) + '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) playwright: 1.58.2 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vitest: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.0.16(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16)': + '@vitest/browser@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': dependencies: - '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) - '@vitest/utils': 4.0.16 + '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + '@vitest/utils': 4.1.0-beta.4 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - ws: 8.18.3 + vitest: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + ws: 8.19.0 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite + optional: true - '@vitest/expect@4.0.16': + '@vitest/browser@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': dependencies: - '@standard-schema/spec': 1.0.0 + '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) + '@vitest/utils': 4.1.0-beta.4 + magic-string: 0.30.21 + pixelmatch: 7.1.0 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.0.3 + vitest: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) + ws: 8.19.0 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/expect@4.1.0-beta.4': + dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.2 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 + '@vitest/spy': 4.1.0-beta.4 + '@vitest/utils': 4.1.0-beta.4 chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@vitest/mocker@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))': + dependencies: + '@vitest/spy': 4.1.0-beta.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) + + '@vitest/mocker@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))': dependencies: - '@vitest/spy': 4.0.16 + '@vitest/spy': 4.1.0-beta.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) - '@vitest/pretty-format@4.0.16': + '@vitest/pretty-format@4.1.0-beta.4': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.16': + '@vitest/runner@4.1.0-beta.4': dependencies: - '@vitest/utils': 4.0.16 + '@vitest/utils': 4.1.0-beta.4 pathe: 2.0.3 - '@vitest/snapshot@4.0.16': + '@vitest/snapshot@4.1.0-beta.4': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.1.0-beta.4 + '@vitest/utils': 4.1.0-beta.4 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.16': {} + '@vitest/spy@4.1.0-beta.4': {} - '@vitest/utils@4.0.16': + '@vitest/utils@4.1.0-beta.4': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.1.0-beta.4 tinyrainbow: 3.0.3 '@vue/compiler-core@3.5.16': @@ -8404,6 +8474,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} + esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 @@ -9126,51 +9198,54 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lightningcss-darwin-arm64@1.30.1: + lightningcss-android-arm64@1.31.1: + optional: true + + lightningcss-darwin-arm64@1.31.1: optional: true - lightningcss-darwin-x64@1.30.1: + lightningcss-darwin-x64@1.31.1: optional: true - lightningcss-freebsd-x64@1.30.1: + lightningcss-freebsd-x64@1.31.1: optional: true - lightningcss-linux-arm-gnueabihf@1.30.1: + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true - lightningcss-linux-arm64-gnu@1.30.1: + lightningcss-linux-arm64-gnu@1.31.1: optional: true - lightningcss-linux-arm64-musl@1.30.1: + lightningcss-linux-arm64-musl@1.31.1: optional: true - lightningcss-linux-x64-gnu@1.30.1: + lightningcss-linux-x64-gnu@1.31.1: optional: true - lightningcss-linux-x64-musl@1.30.1: + lightningcss-linux-x64-musl@1.31.1: optional: true - lightningcss-win32-arm64-msvc@1.30.1: + lightningcss-win32-arm64-msvc@1.31.1: optional: true - lightningcss-win32-x64-msvc@1.30.1: + lightningcss-win32-x64-msvc@1.31.1: optional: true - lightningcss@1.30.1: + lightningcss@1.31.1: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-darwin-arm64: 1.30.1 - lightningcss-darwin-x64: 1.30.1 - lightningcss-freebsd-x64: 1.30.1 - lightningcss-linux-arm-gnueabihf: 1.30.1 - lightningcss-linux-arm64-gnu: 1.30.1 - lightningcss-linux-arm64-musl: 1.30.1 - lightningcss-linux-x64-gnu: 1.30.1 - lightningcss-linux-x64-musl: 1.30.1 - lightningcss-win32-arm64-msvc: 1.30.1 - lightningcss-win32-x64-msvc: 1.30.1 - optional: true + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 lilconfig@2.1.0: {} @@ -9843,6 +9918,7 @@ snapshots: '@rollup/rollup-win32-x64-gnu': 4.57.1 '@rollup/rollup-win32-x64-msvc': 4.57.1 fsevents: 2.3.3 + optional: true run-parallel@1.2.0: dependencies: @@ -10108,7 +10184,7 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.22.1 - tar@7.5.7: + tar@7.5.9: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -10293,35 +10369,83 @@ snapshots: transitivePeerDependencies: - rollup - vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): + vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0): dependencies: + '@oxc-project/runtime': 0.114.0 + lightningcss: 1.31.1 + picomatch: 4.0.3 + postcss: 8.5.6 + rolldown: 1.0.0-rc.5 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.13 esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) + fsevents: 2.3.3 + jiti: 2.4.2 + yaml: 2.8.0 + + vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0): + dependencies: + '@oxc-project/runtime': 0.114.0 + lightningcss: 1.31.1 picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.57.1 + rolldown: 1.0.0-rc.5 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.13 + esbuild: 0.27.3 fsevents: 2.3.3 jiti: 2.4.2 - lightningcss: 1.30.1 yaml: 2.8.0 - vitefu@1.1.1(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)): + vitefu@1.1.2(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)): optionalDependencies: - vite: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) - vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.0.16)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): + vitefu@1.1.2(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)): + optionalDependencies: + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) + + vitest@4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)): + dependencies: + '@vitest/expect': 4.1.0-beta.4 + '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + '@vitest/pretty-format': 4.1.0-beta.4 + '@vitest/runner': 4.1.0-beta.4 + '@vitest/snapshot': 4.1.0-beta.4 + '@vitest/spy': 4.1.0-beta.4 + '@vitest/utils': 4.1.0-beta.4 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@types/node': 24.10.13 + '@vitest/browser-playwright': 4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) + transitivePeerDependencies: + - msw + + vitest@4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)): dependencies: - '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) - '@vitest/pretty-format': 4.0.16 - '@vitest/runner': 4.0.16 - '@vitest/snapshot': 4.0.16 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 - es-module-lexer: 1.7.0 + '@vitest/expect': 4.1.0-beta.4 + '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) + '@vitest/pretty-format': 4.1.0-beta.4 + '@vitest/runner': 4.1.0-beta.4 + '@vitest/snapshot': 4.1.0-beta.4 + '@vitest/spy': 4.1.0-beta.4 + '@vitest/utils': 4.1.0-beta.4 + es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 @@ -10332,24 +10456,14 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.13 - '@vitest/browser-playwright': 4.0.16(playwright@1.58.2)(vite@6.4.1(@types/node@24.10.13)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) + '@vitest/browser-playwright': 4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml web-streams-polyfill@3.3.3: {} @@ -10440,7 +10554,7 @@ snapshots: ws@8.18.0: {} - ws@8.18.3: {} + ws@8.19.0: {} xss@1.0.15: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8effca56d178..b92e6b2362a9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -25,14 +25,14 @@ catalog: '@playwright/test': 1.58.2 '@polka/url': ^1.0.0-next.28 '@sveltejs/eslint-config': ^9.0.0 - '@sveltejs/vite-plugin-svelte': ^6.0.0-next.3 + '@sveltejs/vite-plugin-svelte': ^7.0.0 '@svitejs/changesets-changelog-github-compact': ^1.2.0 '@types/connect': ^3.4.38 '@types/estree': ^1.0.5 '@types/node': ^24.1.0 '@types/semver': ^7.5.6 '@types/set-cookie-parser': ^2.4.7 - '@vitest/browser-playwright': ^4.0.0 + '@vitest/browser-playwright': ^4.1.0-beta.4 dropcss: ^1.0.16 dts-buddy: ^0.7.0 esbuild: ^0.25.4 @@ -45,20 +45,17 @@ catalog: svelte-check: ^4.3.4 svelte-preprocess: ^6.0.0 valibot: ^1.1.0 - vite: ^6.3.5 - vitest: ^4.0.0 + vite: ^8.0.0-beta.15 + vitest: ^4.1.0-beta.4 wrangler: ^4.67.0 catalogs: + # these show up in the ci.yml like `vite: 'beta'`, etc. vite-baseline: - vite: ^5.4.21 # should be 5.0.3 but older versions cause errors in some tests - '@sveltejs/vite-plugin-svelte': ^4.0.0 - 'vitest>vite': ^6.0.0 # vitest@4 doesn't work with vite@5, vite@7 doesn't work on node18 + vite: ^8.0.0-beta.15 + '@sveltejs/vite-plugin-svelte': ^7.0.0 vite-beta: - vite: ^8.0.0-beta.9 - '@sveltejs/vite-plugin-svelte': ^7.0.0-next.0 - node-18: - vite: ^6.0.0 # vite7 requires node20 - '@sveltejs/vite-plugin-svelte': ^5.0.0 #vps6 requires node20 + vite: ^9.0.0-beta.0 + '@sveltejs/vite-plugin-svelte': ^7.0.0 overrides: # ci script replaces all overrides with the vite-xxx or node-xx catalogs above. # if you want to introduce an override, make sure to add it to all of them too From a2792e2cdc2dee91c20c7bfd921a104b539abae5 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 24 Feb 2026 21:07:22 -0800 Subject: [PATCH 17/72] breaking: default the cookie `path` option to `"/"` (#15398) I should have done this as part of https://github.com/sveltejs/kit/pull/15388 Closes https://github.com/sveltejs/kit/issues/11799 --- .changeset/cuddly-tigers-attend.md | 5 +++ .../docs/20-core-concepts/20-load.md | 2 +- packages/kit/src/exports/public.d.ts | 37 ++++++++----------- packages/kit/src/runtime/server/cookie.js | 13 ++++--- .../kit/src/runtime/server/page/types.d.ts | 4 +- packages/kit/types/index.d.ts | 37 ++++++++----------- 6 files changed, 46 insertions(+), 52 deletions(-) create mode 100644 .changeset/cuddly-tigers-attend.md diff --git a/.changeset/cuddly-tigers-attend.md b/.changeset/cuddly-tigers-attend.md new file mode 100644 index 000000000000..2d1d9c4b5929 --- /dev/null +++ b/.changeset/cuddly-tigers-attend.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: default the cookie `path` option to `'/'` diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index d6a1ccc21825..85078b92bf0f 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -296,7 +296,7 @@ export async function load({ fetch, params }) { ## Cookies -A server `load` function can get and set [`cookies`](@sveltejs-kit#Cookies). +A server `load` function can get [`cookies`](@sveltejs-kit#Cookies) as shown below. When setting cookies, SvelteKit provides default values for `httpOnly`, `secure`, and `path` — as described in [the API documentation](@sveltejs-kit#Cookies) — in order to improve security and developer experience. ```js /// file: src/routes/+layout.server.js diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 6baf0d6f0b0f..d4913f1dd488 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -263,57 +263,50 @@ export interface Cookies { /** * Gets a cookie that was previously set with `cookies.set`, or from the request headers. * @param name the name of the cookie - * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) + * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookieparsecookiestr-options) */ get: (name: string, opts?: import('cookie').ParseOptions) => string | undefined; /** * Gets all cookies that were previously set with `cookies.set`, or from the request headers. - * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) + * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookieparsecookiestr-options) */ getAll: (opts?: import('cookie').ParseOptions) => Array<{ name: string; value: string }>; /** * Sets a cookie. This will add a `set-cookie` header to the response, but also make the cookie available via `cookies.get` or `cookies.getAll` during the current request. * - * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. The `sameSite` option defaults to `lax`. + * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. * - * You must specify a `path` for the cookie. In most cases you should explicitly set `path: '/'` to make the cookie available throughout your app. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children + * The `path` option is `'/'` by default. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children. * @param name the name of the cookie * @param value the cookie value - * @param opts the options, passed directly to `cookie.serialize`. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) + * @param opts the options passed to `cookie.serialize` with the SvelteKit defaults described above. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookiestringifysetcookiesetcookieobj-options) */ - set: ( - name: string, - value: string, - opts: import('cookie').SerializeOptions & { path: string } - ) => void; + set: (name: string, value: string, opts: import('cookie').SerializeOptions) => void; /** * Deletes a cookie by setting its value to an empty string and setting the expiry date in the past. * - * You must specify a `path` for the cookie. In most cases you should explicitly set `path: '/'` to make the cookie available throughout your app. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children + * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. + * + * The `path` option is `'/'` by default. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children. * @param name the name of the cookie - * @param opts the options, passed directly to `cookie.serialize`. The `path` must match the path of the cookie you want to delete. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) + * @param opts the options passed to `cookie.serialize` with the SvelteKit defaults described above. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookiestringifysetcookiesetcookieobj-options) */ - delete: (name: string, opts: import('cookie').SerializeOptions & { path: string }) => void; + delete: (name: string, opts: import('cookie').SerializeOptions) => void; /** * Serialize a cookie name-value pair into a `Set-Cookie` header string, but don't apply it to the response. * - * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. The `sameSite` option defaults to `lax`. - * - * You must specify a `path` for the cookie. In most cases you should explicitly set `path: '/'` to make the cookie available throughout your app. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children + * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. * + * The `path` option is `'/'` by default. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children. * @param name the name of the cookie * @param value the cookie value - * @param opts the options, passed directly to `cookie.serialize`. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) + * @param opts the options passed to `cookie.serialize` with the SvelteKit defaults described above. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookiestringifysetcookiesetcookieobj-options) */ - serialize: ( - name: string, - value: string, - opts: import('cookie').SerializeOptions & { path: string } - ) => string; + serialize: (name: string, value: string, opts: import('cookie').SerializeOptions) => string; } /** diff --git a/packages/kit/src/runtime/server/cookie.js b/packages/kit/src/runtime/server/cookie.js index 48434d26f709..bd36e86f0653 100644 --- a/packages/kit/src/runtime/server/cookie.js +++ b/packages/kit/src/runtime/server/cookie.js @@ -51,6 +51,7 @@ export function get_cookies(request, url) { /** @type {import('cookie').SerializeOptions} */ const defaults = { httpOnly: true, + path: '/', sameSite: 'lax', secure: url.hostname === 'localhost' && url.protocol === 'http:' ? false : true }; @@ -143,7 +144,7 @@ export function get_cookies(request, url) { /** * @param {string} name * @param {string} value - * @param {import('./page/types.js').Cookie['options']} options + * @param {import('cookie').SerializeOptions} options */ set(name, value, options) { set_internal(name, value, { ...defaults, ...options }); @@ -151,7 +152,7 @@ export function get_cookies(request, url) { /** * @param {string} name - * @param {import('./page/types.js').Cookie['options']} options + * @param {import('cookie').SerializeOptions} options */ delete(name, options) { cookies.set(name, '', { ...options, maxAge: 0 }); @@ -160,10 +161,10 @@ export function get_cookies(request, url) { /** * @param {string} name * @param {string} value - * @param {import('./page/types.js').Cookie['options']} options + * @param {import('cookie').SerializeOptions} options */ serialize(name, value, options) { - let path = options.path; + let path = options.path ?? '/'; if (!options.domain || options.domain === url.hostname) { if (!normalized_url) { @@ -217,7 +218,7 @@ export function get_cookies(request, url) { /** * @param {string} name * @param {string} value - * @param {import('./page/types.js').Cookie['options']} options + * @param {import('cookie').SerializeOptions} options */ function set_internal(name, value, options) { if (!normalized_url) { @@ -225,7 +226,7 @@ export function get_cookies(request, url) { return; } - let path = options.path; + let path = options.path ?? '/'; if (!options.domain || options.domain === url.hostname) { path = resolve(normalized_url, path); diff --git a/packages/kit/src/runtime/server/page/types.d.ts b/packages/kit/src/runtime/server/page/types.d.ts index 036114b5cf6e..7eaa50b9a814 100644 --- a/packages/kit/src/runtime/server/page/types.d.ts +++ b/packages/kit/src/runtime/server/page/types.d.ts @@ -39,7 +39,9 @@ export interface CspOpts { export interface Cookie { name: string; value: string; - options: SerializeOptions & { path: string }; + options: SerializeOptions & { + path: string; + }; } export type ServerDataSerializer = { diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index ec24fe0fcd59..9daaba850d42 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -238,57 +238,50 @@ declare module '@sveltejs/kit' { /** * Gets a cookie that was previously set with `cookies.set`, or from the request headers. * @param name the name of the cookie - * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) + * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookieparsecookiestr-options) */ get: (name: string, opts?: import('cookie').ParseOptions) => string | undefined; /** * Gets all cookies that were previously set with `cookies.set`, or from the request headers. - * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie#cookieparsestr-options) + * @param opts the options, passed directly to `cookie.parse`. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookieparsecookiestr-options) */ getAll: (opts?: import('cookie').ParseOptions) => Array<{ name: string; value: string }>; /** * Sets a cookie. This will add a `set-cookie` header to the response, but also make the cookie available via `cookies.get` or `cookies.getAll` during the current request. * - * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. The `sameSite` option defaults to `lax`. + * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. * - * You must specify a `path` for the cookie. In most cases you should explicitly set `path: '/'` to make the cookie available throughout your app. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children + * The `path` option is `'/'` by default. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children. * @param name the name of the cookie * @param value the cookie value - * @param opts the options, passed directly to `cookie.serialize`. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) + * @param opts the options passed to `cookie.serialize` with the SvelteKit defaults described above. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookiestringifysetcookiesetcookieobj-options) */ - set: ( - name: string, - value: string, - opts: import('cookie').SerializeOptions & { path: string } - ) => void; + set: (name: string, value: string, opts: import('cookie').SerializeOptions) => void; /** * Deletes a cookie by setting its value to an empty string and setting the expiry date in the past. * - * You must specify a `path` for the cookie. In most cases you should explicitly set `path: '/'` to make the cookie available throughout your app. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children + * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. + * + * The `path` option is `'/'` by default. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children. * @param name the name of the cookie - * @param opts the options, passed directly to `cookie.serialize`. The `path` must match the path of the cookie you want to delete. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) + * @param opts the options passed to `cookie.serialize` with the SvelteKit defaults described above. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookiestringifysetcookiesetcookieobj-options) */ - delete: (name: string, opts: import('cookie').SerializeOptions & { path: string }) => void; + delete: (name: string, opts: import('cookie').SerializeOptions) => void; /** * Serialize a cookie name-value pair into a `Set-Cookie` header string, but don't apply it to the response. * - * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. The `sameSite` option defaults to `lax`. - * - * You must specify a `path` for the cookie. In most cases you should explicitly set `path: '/'` to make the cookie available throughout your app. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children + * The `httpOnly` and `secure` options are `true` by default (except on http://localhost, where `secure` is `false`), and must be explicitly disabled if you want cookies to be readable by client-side JavaScript and/or transmitted over HTTP. * + * The `path` option is `'/'` by default. You can use relative paths, or set `path: ''` to make the cookie only available on the current path and its children. * @param name the name of the cookie * @param value the cookie value - * @param opts the options, passed directly to `cookie.serialize`. See documentation [here](https://github.com/jshttp/cookie#cookieserializename-value-options) + * @param opts the options passed to `cookie.serialize` with the SvelteKit defaults described above. See documentation [here](https://github.com/jshttp/cookie?tab=readme-ov-file#cookiestringifysetcookiesetcookieobj-options) */ - serialize: ( - name: string, - value: string, - opts: import('cookie').SerializeOptions & { path: string } - ) => string; + serialize: (name: string, value: string, opts: import('cookie').SerializeOptions) => string; } /** From 84dda6d483904ece9a4aade6650b50aa028dbc08 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 24 Feb 2026 22:54:31 -0800 Subject: [PATCH 18/72] chore: remove another rolldown check (#15415) I missed this one since it wasn't snake_case like the others --- .../src/exports/vite/build/build_service_worker.js | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/kit/src/exports/vite/build/build_service_worker.js b/packages/kit/src/exports/vite/build/build_service_worker.js index a90c62dd1a4a..9e591946d595 100644 --- a/packages/kit/src/exports/vite/build/build_service_worker.js +++ b/packages/kit/src/exports/vite/build/build_service_worker.js @@ -1,4 +1,3 @@ -import fs from 'node:fs'; import * as vite from 'vite'; import { dedent } from '../../../core/sync/utils.js'; import { s } from '../../../utils/misc.js'; @@ -6,9 +5,6 @@ import { get_config_aliases, strip_virtual_prefix, get_env, normalize_id } from import { create_static_module } from '../../../core/env.js'; import { env_static_public, service_worker } from '../module_ids.js'; -// @ts-ignore `vite.rolldownVersion` only exists in `rolldown-vite` -const isRolldown = !!vite.rolldownVersion; - /** * @param {string} out * @param {import('types').ValidatedKitConfig} kit @@ -105,8 +101,7 @@ export async function build_service_worker( 'service-worker': service_worker_entry_file }, output: { - // .mjs so that esbuild doesn't incorrectly inject `export` https://github.com/vitejs/vite/issues/15379 - entryFileNames: `service-worker.${isRolldown ? 'js' : 'mjs'}`, + entryFileNames: 'service-worker.js', assetFileNames: `${kit.appDir}/immutable/assets/[name].[hash][extname]`, inlineDynamicImports: true } @@ -130,9 +125,4 @@ export async function build_service_worker( } } }); - - // rename .mjs to .js to avoid incorrect MIME types with ancient webservers - if (!isRolldown) { - fs.renameSync(`${out}/client/service-worker.mjs`, `${out}/client/service-worker.js`); - } } From 1d76212740f59ed58839ef569899c653870834fd Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Feb 2026 15:35:53 +0800 Subject: [PATCH 19/72] chore: remove dependency on `set-cookie-parser` (#15384) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drops the `set-cookie-parser` dependency (and its `@types/*` package) by using `parseSetCookie` from the already-bundled `cookie@1.x` package and the standard `Headers.prototype.getSetCookie()` API (Node.js ≥ 18). ### Key changes - **`server/fetch.js`**: Replace `splitCookiesString` + `parseString` with `response.headers.getSetCookie()` (returns individual Set-Cookie headers as an array) + `parseSetCookie(str, { decode: (v) => v })` - **`exports/node/index.js`**: Replace `splitCookiesString(response.headers.get('set-cookie'))` workaround with `response.headers.getSetCookie()` directly - **`exports/vite/index.js`**: Remove `set-cookie-parser` from SSR externals list - **`package.json` / `pnpm-workspace.yaml`**: Remove `set-cookie-parser` and `@types/set-cookie-parser` ```js // Before for (const str of set_cookie_parser.splitCookiesString(response.headers.get('set-cookie'))) { const { name, value, ...options } = set_cookie_parser.parseString(str, { decodeValues: false }); // ... } // After for (const str of response.headers.getSetCookie()) { const { name, value, ...options } = parseSetCookie(str, { decode: (v) => v }); // ... } ```
Original prompt > > ---- > > *This section details on the original issue you should resolve* > > Various cookie upgrades and package removals > ### Describe the problem > > Upgrade to cookie 1.x > Allows dropping types package > Next release will allow dropping set-cookie-parser (https://github.com/jshttp/cookie/pull/244) > > ### Describe the proposed solution > > Update to latest cookie package > > ### Alternatives considered > > _No response_ > > ### Importance > > nice to have > > ### Additional Information > > _No response_ > > use `parseSetCookie` from the `cookie` package to replace the `set-cookie-parser` package > > ## Comments on the Issue (you are @copilot in this section) > > > @Conduitry > We don't want to work on this until we're ready to start making the push to SvelteKit 3.0 as it's going to be a breaking change. > @benmccann > We tried to upgrade cookie earlier, but had to roll it back due to breaking changes. SvelteKit 3 will happen soon and will upgrade to the latest > @benmccann > @copilot use `parseSetCookie` from the `cookie` package to replace the `set-cookie-parser` package in the `version-3` branch > >
- Fixes sveltejs/kit#14553 --- ✨ Let Copilot coding agent [set things up for you](https://github.com/sveltejs/kit/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: benmccann <322311+benmccann@users.noreply.github.com> Co-authored-by: Tee Ming --- .changeset/spicy-drinks-build.md | 5 +++++ packages/kit/package.json | 2 -- packages/kit/src/exports/node/index.js | 11 +---------- packages/kit/src/exports/vite/index.js | 3 +-- packages/kit/src/runtime/server/fetch.js | 25 ++++++++++-------------- pnpm-lock.yaml | 21 -------------------- pnpm-workspace.yaml | 1 - 7 files changed, 17 insertions(+), 51 deletions(-) create mode 100644 .changeset/spicy-drinks-build.md diff --git a/.changeset/spicy-drinks-build.md b/.changeset/spicy-drinks-build.md new file mode 100644 index 000000000000..453c6dc1b288 --- /dev/null +++ b/.changeset/spicy-drinks-build.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +chore: remove dependency on `set-cookie-parser` diff --git a/packages/kit/package.json b/packages/kit/package.json index 7a3f2d7b0cd1..11b4e5fdc1e9 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -26,7 +26,6 @@ "esm-env": "^1.2.2", "magic-string": "^0.30.5", "mrmime": "^2.0.0", - "set-cookie-parser": "^3.0.0", "sirv": "^3.0.0" }, "devDependencies": { @@ -35,7 +34,6 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "@types/connect": "catalog:", "@types/node": "catalog:", - "@types/set-cookie-parser": "catalog:", "dts-buddy": "catalog:", "rolldown": "^1.0.0-rc.5", "svelte": "catalog:", diff --git a/packages/kit/src/exports/node/index.js b/packages/kit/src/exports/node/index.js index ae2cae9ab3f8..35bd3564cc55 100644 --- a/packages/kit/src/exports/node/index.js +++ b/packages/kit/src/exports/node/index.js @@ -1,6 +1,5 @@ import { createReadStream } from 'node:fs'; import { Readable } from 'node:stream'; -import * as set_cookie_parser from 'set-cookie-parser'; import { SvelteKitError } from '../internal/index.js'; /** @@ -156,15 +155,7 @@ export async function getRequest({ request, base, bodySizeLimit }) { export async function setResponse(res, response) { for (const [key, value] of response.headers) { try { - res.setHeader( - key, - key === 'set-cookie' - ? set_cookie_parser.splitCookiesString( - // This is absurd but necessary, TODO: investigate why - /** @type {string}*/ (response.headers.get(key)) - ) - : value - ); + res.setHeader(key, key === 'set-cookie' ? response.headers.getSetCookie() : value); } catch (error) { res.getHeaderNames().forEach((name) => res.removeHeader(name)); res.writeHead(500).end(String(error)); diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index f8eb5801f0ee..dd742f0b0511 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -394,8 +394,7 @@ async function kit({ svelte_config }) { // These Kit dependencies are packaged as CommonJS, which means they must always be externalized. // Without this, the tests will still pass but `pnpm dev` will fail in projects that link `@sveltejs/kit`. /** @type {NonNullable} */ (new_config.ssr).external = [ - 'cookie', - 'set-cookie-parser' + 'cookie' ]; } diff --git a/packages/kit/src/runtime/server/fetch.js b/packages/kit/src/runtime/server/fetch.js index 41a12dd8cd89..52d4c1f64a4c 100644 --- a/packages/kit/src/runtime/server/fetch.js +++ b/packages/kit/src/runtime/server/fetch.js @@ -1,4 +1,4 @@ -import * as set_cookie_parser from 'set-cookie-parser'; +import { parseSetCookie } from 'cookie'; import { respond } from './respond.js'; import * as paths from '$app/paths/internal/server'; import { read_implementation } from '__sveltekit/server'; @@ -151,22 +151,17 @@ export function create_fetch({ event, options, manifest, state, get_cookie_heade const response = await internal_fetch(request, options, manifest, state); - const set_cookie = response.headers.get('set-cookie'); - if (set_cookie) { - for (const str of set_cookie_parser.splitCookiesString(set_cookie)) { - const { name, value, ...options } = set_cookie_parser.parseString(str, { - decodeValues: false - }); + for (const str of response.headers.getSetCookie()) { + const { name, value, ...options } = parseSetCookie(str, { decode: (v) => v }); - const path = options.path ?? (url.pathname.split('/').slice(0, -1).join('/') || '/'); + const path = options.path ?? (url.pathname.split('/').slice(0, -1).join('/') || '/'); - // options.sameSite is string, something more specific is required - type cast is safe - set_internal(name, value, { - path, - encode: (value) => value, - .../** @type {import('cookie').SerializeOptions} */ (options) - }); - } + // options.sameSite is string, something more specific is required - type cast is safe + set_internal(name, /** @type {string} */ (value), { + path, + encode: (value) => value, + .../** @type {import('cookie').SerializeOptions} */ (options) + }); } return response; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a29710313837..bb1f4fdd29d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,9 +54,6 @@ catalogs: '@types/semver': specifier: ^7.5.6 version: 7.5.8 - '@types/set-cookie-parser': - specifier: ^2.4.7 - version: 2.4.7 '@vitest/browser-playwright': specifier: ^4.1.0-beta.4 version: 4.1.0-beta.4 @@ -571,9 +568,6 @@ importers: mrmime: specifier: ^2.0.0 version: 2.0.0 - set-cookie-parser: - specifier: ^3.0.0 - version: 3.0.1 sirv: specifier: ^3.0.0 version: 3.0.2 @@ -593,9 +587,6 @@ importers: '@types/node': specifier: 'catalog:' version: 24.10.13 - '@types/set-cookie-parser': - specifier: 'catalog:' - version: 2.4.7 dts-buddy: specifier: 'catalog:' version: 0.7.0(typescript@5.8.3) @@ -3223,9 +3214,6 @@ packages: '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/set-cookie-parser@2.4.7': - resolution: {integrity: sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==} - '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} @@ -5288,9 +5276,6 @@ packages: server-side-dep@file:packages/adapter-cloudflare/test/apps/workers/server-side-dep: resolution: {directory: packages/adapter-cloudflare/test/apps/workers/server-side-dep, type: directory} - set-cookie-parser@3.0.1: - resolution: {integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==} - sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -7674,10 +7659,6 @@ snapshots: '@types/semver@7.5.8': {} - '@types/set-cookie-parser@2.4.7': - dependencies: - '@types/node': 24.10.13 - '@types/triple-beam@1.3.5': {} '@types/trusted-types@2.0.7': {} @@ -9946,8 +9927,6 @@ snapshots: server-side-dep@file:packages/adapter-cloudflare/test/apps/workers/server-side-dep: {} - set-cookie-parser@3.0.1: {} - sharp@0.34.5: dependencies: '@img/colour': 1.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b92e6b2362a9..fd75b2114a13 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -31,7 +31,6 @@ catalog: '@types/estree': ^1.0.5 '@types/node': ^24.1.0 '@types/semver': ^7.5.6 - '@types/set-cookie-parser': ^2.4.7 '@vitest/browser-playwright': ^4.1.0-beta.4 dropcss: ^1.0.16 dts-buddy: ^0.7.0 From 7ea8afe53ebc17861b74a10c5346c476f7737333 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 24 Feb 2026 23:40:06 -0800 Subject: [PATCH 20/72] chore: upgrade to TypeScript 5.9 (#15370) Didn't bump the peer dependency or create a changelog entry yet because we'll probably upgrade to TypeScript 6 before a final release. I created an issue to ensure we don't lose track of that --------- Co-authored-by: Tee Ming --- packages/adapter-auto/package.json | 2 +- packages/adapter-cloudflare/package.json | 2 +- packages/adapter-netlify/package.json | 2 +- packages/adapter-node/package.json | 2 +- packages/adapter-static/package.json | 2 +- packages/adapter-vercel/package.json | 2 +- packages/amp/package.json | 2 +- packages/enhanced-img/package.json | 2 +- packages/kit/package.json | 2 +- .../telemetry/record_span.enabled.spec.js | 16 +- packages/package/package.json | 2 +- pnpm-lock.yaml | 339 +++++++++--------- pnpm-workspace.yaml | 1 + 13 files changed, 191 insertions(+), 185 deletions(-) diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index c9e3ed1982c4..b10e4a1d4912 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -43,7 +43,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 7945963a18f7..8133bcdec436 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:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 2f00c5c00571..2ff69f788cb3 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -57,7 +57,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", "rolldown": "^1.0.0-rc.5", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index aa131586cd87..2c7bfc788423 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -48,7 +48,7 @@ "@types/node": "catalog:", "polka": "catalog:", "sirv": "^3.0.2", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 99ce29a0392f..3b42bc57735e 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -45,7 +45,7 @@ "@types/node": "catalog:", "sirv": "^3.0.0", "svelte": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:" }, "peerDependencies": { diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index a87fa3de7f43..770d85b93d39 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -47,7 +47,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, 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/enhanced-img/package.json b/packages/enhanced-img/package.json index 08c9e1cd2f85..e1625c5c976d 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -50,7 +50,7 @@ "@types/node": "catalog:", "rolldown": "^1.0.0-rc.5", "svelte": "catalog:", - "typescript": "^5.6.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/kit/package.json b/packages/kit/package.json index 11b4e5fdc1e9..53fc661155f7 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -38,7 +38,7 @@ "rolldown": "^1.0.0-rc.5", "svelte": "catalog:", "svelte-preprocess": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, 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/package/package.json b/packages/package/package.json index d5bb18b34915..84b5f1663b6b 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -32,7 +32,7 @@ "prettier": "^3.1.1", "svelte": "catalog:", "svelte-preprocess": "catalog:", - "typescript": "^5.3.3", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb1f4fdd29d0..b3ae18975ffa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,6 +87,9 @@ catalogs: svelte-preprocess: specifier: ^6.0.0 version: 6.0.0 + typescript: + specifier: 5.9.3 + version: 5.9.3 valibot: specifier: ^1.1.0 version: 1.2.0 @@ -112,7 +115,7 @@ importers: version: 1.58.2 '@sveltejs/eslint-config': specifier: 'catalog:' - version: 9.0.0(@eslint/js@10.0.1(eslint@10.0.0(jiti@2.4.2)))(@stylistic/eslint-plugin-js@2.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-plugin-n@17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)))(eslint@10.0.0(jiti@2.4.2))(typescript-eslint@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3) + version: 9.0.0(@eslint/js@10.0.1(eslint@10.0.0(jiti@2.4.2)))(@stylistic/eslint-plugin-js@2.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-plugin-n@17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3))(eslint-plugin-svelte@3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)))(eslint@10.0.0(jiti@2.4.2))(typescript-eslint@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3))(typescript@5.9.3) '@svitejs/changesets-changelog-github-compact': specifier: 'catalog:' version: 1.2.0 @@ -138,8 +141,8 @@ importers: specifier: 'catalog:' version: 24.10.13 typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -172,8 +175,8 @@ importers: specifier: 'catalog:' version: 0.25.12 typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) @@ -260,8 +263,8 @@ importers: specifier: ^1.0.0-rc.5 version: 1.0.0-rc.5 typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) @@ -354,8 +357,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -384,8 +387,8 @@ importers: specifier: 'catalog:' version: 5.51.5 typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -445,8 +448,8 @@ importers: specifier: 'catalog:' version: 24.10.13 typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) @@ -467,7 +470,7 @@ importers: version: 5.51.5 typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -478,8 +481,8 @@ importers: specifier: workspace:^ version: link:../kit typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 packages/enhanced-img: dependencies: @@ -515,8 +518,8 @@ importers: specifier: 'catalog:' version: 5.51.5 typescript: - specifier: ^5.6.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -589,7 +592,7 @@ importers: version: 24.10.13 dts-buddy: specifier: 'catalog:' - version: 0.7.0(typescript@5.8.3) + version: 0.7.0(typescript@5.9.3) rolldown: specifier: ^1.0.0-rc.5 version: 1.0.0-rc.5 @@ -598,10 +601,10 @@ importers: version: 5.51.5 svelte-preprocess: specifier: 'catalog:' - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.51.5)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)))(postcss@8.5.6)(svelte@5.51.5)(typescript@5.9.3) typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -628,10 +631,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -649,13 +652,13 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 valibot: specifier: 'catalog:' - version: 1.2.0(typescript@5.8.3) + version: 1.2.0(typescript@5.9.3) vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -685,16 +688,16 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) test-redirect-importer: specifier: workspace:* version: link:../../../../test-redirect-importer typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 valibot: specifier: 'catalog:' - version: 1.2.0(typescript@5.8.3) + version: 1.2.0(typescript@5.9.3) vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -745,10 +748,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -766,10 +769,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -787,10 +790,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -808,10 +811,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -832,10 +835,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -856,13 +859,13 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 valibot: specifier: 'catalog:' - version: 1.2.0(typescript@5.8.3) + version: 1.2.0(typescript@5.9.3) vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -883,10 +886,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -904,10 +907,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -925,10 +928,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -955,10 +958,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -979,10 +982,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1003,10 +1006,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1027,10 +1030,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1048,10 +1051,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1069,10 +1072,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1090,10 +1093,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1111,10 +1114,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1132,10 +1135,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1153,10 +1156,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1174,10 +1177,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1195,10 +1198,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1216,10 +1219,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1237,10 +1240,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1258,10 +1261,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1279,10 +1282,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1303,10 +1306,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1327,10 +1330,10 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1351,7 +1354,7 @@ importers: version: 7.7.4 svelte2tsx: specifier: ~0.7.33 - version: 0.7.33(svelte@5.51.5)(typescript@5.8.3) + version: 0.7.33(svelte@5.51.5)(typescript@5.9.3) devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' @@ -1370,10 +1373,10 @@ importers: version: 5.51.5 svelte-preprocess: specifier: 'catalog:' - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.51.5)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)))(postcss@8.5.6)(svelte@5.51.5)(typescript@5.9.3) typescript: - specifier: ^5.3.3 - version: 5.8.3 + specifier: 'catalog:' + version: 5.9.3 vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -1436,13 +1439,13 @@ importers: version: 5.51.5 svelte-check: specifier: 'catalog:' - version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3) + version: 4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3) typescript: specifier: ^5.5.0 - version: 5.8.3 + version: 5.9.3 valibot: specifier: 'catalog:' - version: 1.2.0(typescript@5.8.3) + version: 1.2.0(typescript@5.9.3) vite: specifier: 'catalog:' version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) @@ -5600,8 +5603,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -7572,17 +7575,17 @@ snapshots: dependencies: acorn: 8.16.0 - '@sveltejs/eslint-config@9.0.0(@eslint/js@10.0.1(eslint@10.0.0(jiti@2.4.2)))(@stylistic/eslint-plugin-js@2.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-plugin-n@17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)))(eslint@10.0.0(jiti@2.4.2))(typescript-eslint@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3)': + '@sveltejs/eslint-config@9.0.0(@eslint/js@10.0.1(eslint@10.0.0(jiti@2.4.2)))(@stylistic/eslint-plugin-js@2.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@10.0.0(jiti@2.4.2)))(eslint-plugin-n@17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3))(eslint-plugin-svelte@3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)))(eslint@10.0.0(jiti@2.4.2))(typescript-eslint@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3))(typescript@5.9.3)': dependencies: '@eslint/js': 10.0.1(eslint@10.0.0(jiti@2.4.2)) '@stylistic/eslint-plugin-js': 2.1.0(eslint@10.0.0(jiti@2.4.2)) eslint: 10.0.0(jiti@2.4.2) eslint-config-prettier: 9.1.0(eslint@10.0.0(jiti@2.4.2)) - eslint-plugin-n: 17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-svelte: 3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)) + eslint-plugin-n: 17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) + eslint-plugin-svelte: 3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) globals: 17.3.0 - typescript: 5.8.3 - typescript-eslint: 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) + typescript: 5.9.3 + typescript-eslint: 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.51.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))': dependencies: @@ -7668,40 +7671,40 @@ snapshots: '@types/node': 24.10.13 optional: true - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3))(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3))(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 eslint: 10.0.0(jiti@2.4.2) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 eslint: 10.0.0(jiti@2.4.2) - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) '@typescript-eslint/types': 8.56.0 debug: 4.4.3 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -7710,47 +7713,47 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) debug: 4.4.3 eslint: 10.0.0(jiti@2.4.2) - ts-api-utils: 2.4.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/typescript-estree@8.56.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.56.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.8.3) + '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.4 tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) eslint: 10.0.0(jiti@2.4.2) - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8346,16 +8349,16 @@ snapshots: detective-stylus@5.0.1: {} - detective-typescript@14.0.0(typescript@5.8.3): + detective-typescript@14.0.0(typescript@5.9.3): dependencies: - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) ast-module-types: 6.0.1 node-source-walk: 7.0.1 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - detective-vue2@2.2.0(typescript@5.8.3): + detective-vue2@2.2.0(typescript@5.9.3): dependencies: '@dependents/detective-less': 5.0.1 '@vue/compiler-sfc': 3.5.16 @@ -8363,8 +8366,8 @@ snapshots: detective-sass: 6.0.1 detective-scss: 5.0.1 detective-stylus: 5.0.1 - detective-typescript: 14.0.0(typescript@5.8.3) - typescript: 5.8.3 + detective-typescript: 14.0.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8405,7 +8408,7 @@ snapshots: dropcss@1.0.16: {} - dts-buddy@0.7.0(typescript@5.8.3): + dts-buddy@0.7.0(typescript@5.9.3): dependencies: '@jridgewell/source-map': 0.3.6 '@jridgewell/sourcemap-codec': 1.5.5 @@ -8414,8 +8417,8 @@ snapshots: magic-string: 0.30.21 sade: 1.8.1 tinyglobby: 0.2.15 - ts-api-utils: 1.3.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 1.3.0(typescript@5.9.3) + typescript: 5.9.3 e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: {} @@ -8574,7 +8577,7 @@ snapshots: eslint: 10.0.0(jiti@2.4.2) eslint-compat-utils: 0.5.1(eslint@10.0.0(jiti@2.4.2)) - eslint-plugin-n@17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-n@17.24.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.4.2)) enhanced-resolve: 5.19.0 @@ -8585,11 +8588,11 @@ snapshots: globrex: 0.1.2 ignore: 5.3.2 semver: 7.7.4 - ts-declaration-location: 1.0.7(typescript@5.8.3) + ts-declaration-location: 1.0.7(typescript@5.9.3) transitivePeerDependencies: - typescript - eslint-plugin-svelte@3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)): + eslint-plugin-svelte@3.15.0(eslint@10.0.0(jiti@2.4.2))(svelte@5.51.5)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.5 @@ -8598,7 +8601,7 @@ snapshots: globals: 16.5.0 known-css-properties: 0.37.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.4 svelte-eslint-parser: 1.4.1(svelte@5.51.5) @@ -9631,13 +9634,13 @@ snapshots: '@polka/url': 1.0.0-next.28 trouter: 4.0.0 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)): + postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@types/node@24.10.13)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@24.10.13)(typescript@5.9.3) postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: @@ -9676,12 +9679,12 @@ snapshots: detective-sass: 6.0.1 detective-scss: 5.0.1 detective-stylus: 5.0.1 - detective-typescript: 14.0.0(typescript@5.8.3) - detective-vue2: 2.2.0(typescript@5.8.3) + detective-typescript: 14.0.0(typescript@5.9.3) + detective-vue2: 2.2.0(typescript@5.9.3) module-definition: 6.0.1 node-source-walk: 7.0.1 postcss: 8.5.6 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -10080,7 +10083,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.8.3): + svelte-check@4.3.4(picomatch@4.0.3)(svelte@5.51.5)(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 @@ -10088,7 +10091,7 @@ snapshots: picocolors: 1.1.1 sade: 1.8.1 svelte: 5.51.5 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - picomatch @@ -10107,22 +10110,22 @@ snapshots: dependencies: svelte: 5.51.5 - svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.51.5)(typescript@5.8.3): + svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)))(postcss@8.5.6)(svelte@5.51.5)(typescript@5.9.3): dependencies: detect-indent: 6.1.0 strip-indent: 3.0.0 svelte: 5.51.5 optionalDependencies: postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3)) - typescript: 5.8.3 + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + typescript: 5.9.3 - svelte2tsx@0.7.33(svelte@5.51.5)(typescript@5.8.3): + svelte2tsx@0.7.33(svelte@5.51.5)(typescript@5.9.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 svelte: 5.51.5 - typescript: 5.8.3 + typescript: 5.9.3 svelte@5.51.5: dependencies: @@ -10216,20 +10219,20 @@ snapshots: dependencies: regexparam: 3.0.0 - ts-api-utils@1.3.0(typescript@5.8.3): + ts-api-utils@1.3.0(typescript@5.9.3): dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - ts-api-utils@2.4.0(typescript@5.8.3): + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - ts-declaration-location@1.0.7(typescript@5.8.3): + ts-declaration-location@1.0.7(typescript@5.9.3): dependencies: picomatch: 4.0.3 - typescript: 5.8.3 + typescript: 5.9.3 - ts-node@10.9.2(@types/node@24.10.13)(typescript@5.8.3): + ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 @@ -10243,7 +10246,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.4 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optional: true @@ -10256,18 +10259,18 @@ snapshots: type-fest@4.41.0: {} - typescript-eslint@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3))(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3))(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) eslint: 10.0.0(jiti@2.4.2) - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript@5.8.3: {} + typescript@5.9.3: {} ufo@1.6.3: {} @@ -10329,9 +10332,9 @@ snapshots: v8-compile-cache-lib@3.0.1: optional: true - valibot@1.2.0(typescript@5.8.3): + valibot@1.2.0(typescript@5.9.3): optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 validate-npm-package-license@3.0.4: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fd75b2114a13..2ebd3de31f40 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -43,6 +43,7 @@ catalog: svelte: ^5.51.5 svelte-check: ^4.3.4 svelte-preprocess: ^6.0.0 + typescript: 5.9.3 valibot: ^1.1.0 vite: ^8.0.0-beta.15 vitest: ^4.1.0-beta.4 From d9209803924206eed99f69d872b4d3c87a3a4f56 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 25 Feb 2026 15:48:01 +0800 Subject: [PATCH 21/72] chore: check `WORKERS_CI` env variable to determine if we're building for Cloudflare Workers (#13733) Inspired by https://github.com/unjs/std-env/pull/156 ~This PR detects the `WORKERS_CI` environment variable so that `adapter-auto` and `adapter-cloudflare` can work with Cloudflare's [Workers Git integration](https://developers.cloudflare.com/workers/ci-cd/builds/) to build the app without requiring a wrangler configuration from the user.~ I've changed the scope of the PR to focus on only the Cloudflare adapter because we'll may end up deprecating adapter-auto. Also, it doesn't work well with adapter-auto since it requires a wrangler config file. --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Chew Tee Ming Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/plenty-cougars-wave.md | 5 +++++ packages/adapter-cloudflare/utils.js | 2 +- packages/adapter-cloudflare/utils.spec.js | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/plenty-cougars-wave.md diff --git a/.changeset/plenty-cougars-wave.md b/.changeset/plenty-cougars-wave.md new file mode 100644 index 000000000000..03d6b75dd276 --- /dev/null +++ b/.changeset/plenty-cougars-wave.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare': patch +--- + +chore: check the `WORKERS_CI` environment variable to determine if we're building for Cloudflare Workers diff --git a/packages/adapter-cloudflare/utils.js b/packages/adapter-cloudflare/utils.js index 28d83691b12a..f4b27e98d50f 100644 --- a/packages/adapter-cloudflare/utils.js +++ b/packages/adapter-cloudflare/utils.js @@ -9,7 +9,7 @@ export function is_building_for_cloudflare_pages(wrangler_config) { return true; } - if (wrangler_config.main || wrangler_config.assets) { + if (!!process.env.WORKERS_CI || wrangler_config.main || wrangler_config.assets) { return false; } diff --git a/packages/adapter-cloudflare/utils.spec.js b/packages/adapter-cloudflare/utils.spec.js index f6059a96609f..7d3755559376 100644 --- a/packages/adapter-cloudflare/utils.spec.js +++ b/packages/adapter-cloudflare/utils.spec.js @@ -68,6 +68,15 @@ describe('detects Cloudflare Workers project', () => { ) ).toBe(false); }); + + test('WORKERS_CI environment variable', () => { + vi.stubEnv('WORKERS_CI', '1'); + const result = is_building_for_cloudflare_pages( + /** @type {import('wrangler').Unstable_Config} */ ({}) + ); + vi.unstubAllEnvs(); + expect(result).toBe(false); + }); }); describe('validates Wrangler config', () => { From cb0a1ceba2fecfbe22342992a2a2e6181b93a515 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 25 Feb 2026 19:31:56 +0800 Subject: [PATCH 22/72] whitespace --- packages/kit/types/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 1574b988ea49..7d7b33a81863 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2409,7 +2409,7 @@ declare module '@sveltejs/kit' { : T[K]; } : T | undefined; - + type IsAny = 0 extends 1 & T ? true : false; interface Asset { file: string; From d54597018308068aea5268e6c45b26398cd57607 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:11:03 -0800 Subject: [PATCH 23/72] breaking: remove deprecated 'pragma' header (#15428) closes https://github.com/sveltejs/kit/issues/14576 --- .changeset/giant-numbers-care.md | 5 +++++ packages/kit/src/runtime/client/utils.js | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/giant-numbers-care.md diff --git a/.changeset/giant-numbers-care.md b/.changeset/giant-numbers-care.md new file mode 100644 index 000000000000..e033cd7e2d28 --- /dev/null +++ b/.changeset/giant-numbers-care.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove deprecated `pragma` header in version polling for improved CORS support diff --git a/packages/kit/src/runtime/client/utils.js b/packages/kit/src/runtime/client/utils.js index 4a62702b9389..5bfe038747ce 100644 --- a/packages/kit/src/runtime/client/utils.js +++ b/packages/kit/src/runtime/client/utils.js @@ -270,7 +270,6 @@ export function create_updated_store() { try { const res = await fetch(`${assets}/${__SVELTEKIT_APP_VERSION_FILE__}`, { headers: { - pragma: 'no-cache', 'cache-control': 'no-cache' } }); From c696d52e41c38d6f460b28393490df8e9ad57cd4 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 26 Feb 2026 18:43:35 +0800 Subject: [PATCH 24/72] code begone --- .../docs/25-build-and-deploy/99-writing-adapters.md | 1 - .../98-reference/15-@sveltejs-kit-node-polyfills.md | 5 ----- packages/adapter-netlify/rolldown.config.js | 1 - packages/adapter-netlify/src/serverless.js | 1 - packages/adapter-netlify/src/shims.js | 2 -- packages/adapter-node/index.js | 1 - packages/adapter-node/rolldown.config.js | 11 +---------- packages/adapter-node/src/handler.js | 1 - packages/adapter-node/src/shims.js | 2 -- packages/kit/package.json | 4 ---- packages/kit/scripts/generate-dts.js | 1 - packages/kit/src/core/postbuild/analyse.js | 3 --- packages/kit/src/core/postbuild/fallback.js | 3 --- packages/kit/src/core/postbuild/prerender.js | 3 --- packages/kit/src/exports/hooks/sequence.spec.js | 3 --- packages/kit/src/exports/vite/dev/index.js | 3 --- packages/kit/src/exports/vite/preview/index.js | 3 --- packages/kit/src/runtime/server/cookie.spec.js | 3 --- packages/kit/tsconfig.json | 1 - packages/kit/types/index.d.ts | 11 ----------- 20 files changed, 1 insertion(+), 62 deletions(-) delete mode 100644 documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md delete mode 100644 packages/adapter-netlify/src/shims.js delete mode 100644 packages/adapter-node/src/shims.js diff --git a/documentation/docs/25-build-and-deploy/99-writing-adapters.md b/documentation/docs/25-build-and-deploy/99-writing-adapters.md index 931420b8fb8f..823e2ffea350 100644 --- a/documentation/docs/25-build-and-deploy/99-writing-adapters.md +++ b/documentation/docs/25-build-and-deploy/99-writing-adapters.md @@ -57,7 +57,6 @@ Within the `adapt` method, there are a number of things that an adapter should d - Instantiates the app with a manifest generated with `builder.generateManifest({ relativePath })` - Listens for requests from the platform, converts them to a standard [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) if necessary, calls the `server.respond(request, { getClientAddress })` function to generate a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) and responds with it - expose any platform-specific information to SvelteKit via the `platform` option passed to `server.respond` - - Globally shims `fetch` to work on the target platform, if necessary. SvelteKit provides a `@sveltejs/kit/node/polyfills` helper for platforms that can use `undici` - Bundle the output to avoid needing to install dependencies on the target platform, if necessary - Put the user's static files and the generated JS/CSS in the correct location for the target platform diff --git a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md b/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md deleted file mode 100644 index a80c80ab3139..000000000000 --- a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: @sveltejs/kit/node/polyfills ---- - -> MODULE: @sveltejs/kit/node/polyfills diff --git a/packages/adapter-netlify/rolldown.config.js b/packages/adapter-netlify/rolldown.config.js index e9be35048264..9230e1b5fb01 100644 --- a/packages/adapter-netlify/rolldown.config.js +++ b/packages/adapter-netlify/rolldown.config.js @@ -21,7 +21,6 @@ function clearOutput(filepath) { const config = { input: { serverless: 'src/serverless.js', - shims: 'src/shims.js', edge: 'src/edge.js' }, output: { diff --git a/packages/adapter-netlify/src/serverless.js b/packages/adapter-netlify/src/serverless.js index c8a6447b6ad9..d783fe09ec2b 100644 --- a/packages/adapter-netlify/src/serverless.js +++ b/packages/adapter-netlify/src/serverless.js @@ -1,4 +1,3 @@ -import './shims'; import { Server } from '0SERVER'; import { createReadableStream } from '@sveltejs/kit/node'; import process from 'node:process'; diff --git a/packages/adapter-netlify/src/shims.js b/packages/adapter-netlify/src/shims.js deleted file mode 100644 index 2490311daa1e..000000000000 --- a/packages/adapter-netlify/src/shims.js +++ /dev/null @@ -1,2 +0,0 @@ -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; -installPolyfills(); diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index 9ed74124b9bb..a6b3358d4a5a 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -94,7 +94,6 @@ export default function (opts = {}) { HANDLER: './handler.js', MANIFEST: './server/manifest.js', SERVER: './server/index.js', - SHIMS: './shims.js', ENV_PREFIX: JSON.stringify(envPrefix), PRECOMPRESS: JSON.stringify(precompress) } diff --git a/packages/adapter-node/rolldown.config.js b/packages/adapter-node/rolldown.config.js index 45167575c67d..d84faba8ae5a 100644 --- a/packages/adapter-node/rolldown.config.js +++ b/packages/adapter-node/rolldown.config.js @@ -61,16 +61,7 @@ export default [ codeSplitting: false }, plugins: [clearOutput('files/handler.js'), prefixBuiltinModules()], - external: ['ENV', 'MANIFEST', 'SERVER', 'SHIMS'], - platform: 'node' - }, - { - input: 'src/shims.js', - output: { - file: 'files/shims.js', - format: 'esm' - }, - plugins: [clearOutput('files/shims.js'), prefixBuiltinModules()], + external: ['ENV', 'MANIFEST', 'SERVER'], platform: 'node' } ]; diff --git a/packages/adapter-node/src/handler.js b/packages/adapter-node/src/handler.js index b8fd2f38cbe5..72e5a105a73b 100644 --- a/packages/adapter-node/src/handler.js +++ b/packages/adapter-node/src/handler.js @@ -1,4 +1,3 @@ -import 'SHIMS'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; diff --git a/packages/adapter-node/src/shims.js b/packages/adapter-node/src/shims.js deleted file mode 100644 index 2490311daa1e..000000000000 --- a/packages/adapter-node/src/shims.js +++ /dev/null @@ -1,2 +0,0 @@ -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; -installPolyfills(); diff --git a/packages/kit/package.json b/packages/kit/package.json index c7b871f19160..457b8a990bbb 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -112,10 +112,6 @@ "types": "./types/index.d.ts", "import": "./src/exports/node/index.js" }, - "./node/polyfills": { - "types": "./types/index.d.ts", - "import": "./src/exports/node/polyfills.js" - }, "./hooks": { "types": "./types/index.d.ts", "import": "./src/exports/hooks/index.js" diff --git a/packages/kit/scripts/generate-dts.js b/packages/kit/scripts/generate-dts.js index b470d6d63494..60c7fe7d103f 100644 --- a/packages/kit/scripts/generate-dts.js +++ b/packages/kit/scripts/generate-dts.js @@ -7,7 +7,6 @@ await createBundle({ '@sveltejs/kit': 'src/exports/public.d.ts', '@sveltejs/kit/hooks': 'src/exports/hooks/index.js', '@sveltejs/kit/node': 'src/exports/node/index.js', - '@sveltejs/kit/node/polyfills': 'src/exports/node/polyfills.js', '@sveltejs/kit/vite': 'src/exports/vite/index.js', '$app/environment': 'src/runtime/app/environment/types.d.ts', '$app/forms': 'src/runtime/app/forms.js', diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index aa99609e6a04..76936b253e24 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -4,7 +4,6 @@ import { pathToFileURL } from 'node:url'; import { validate_server_exports } from '../../utils/exports.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { ENDPOINT_METHODS } from '../../constants.js'; import { filter_env } from '../../utils/env.js'; import { has_server_load, resolve_route } from '../../utils/routing.js'; @@ -50,8 +49,6 @@ async function analyse({ /** @type {import('types').ServerInternalModule} */ const internal = await import(pathToFileURL(`${server_root}/server/internal.js`).href); - installPolyfills(); - // configure `import { building } from '$app/environment'` — // essential we do this before analysing the code internal.set_building(); diff --git a/packages/kit/src/core/postbuild/fallback.js b/packages/kit/src/core/postbuild/fallback.js index 39356887a289..ef0d0530955f 100644 --- a/packages/kit/src/core/postbuild/fallback.js +++ b/packages/kit/src/core/postbuild/fallback.js @@ -1,7 +1,6 @@ import { readFileSync } from 'node:fs'; import { join } from 'node:path'; import { pathToFileURL } from 'node:url'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; @@ -17,8 +16,6 @@ async function generate_fallback({ manifest_path, env }) { /** @type {import('types').ValidatedKitConfig} */ const config = (await load_config()).kit; - installPolyfills(); - const server_root = join(config.outDir, 'output'); /** @type {import('types').ServerInternalModule} */ diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 8caa68fdfe85..6acf8e47dff4 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -1,7 +1,6 @@ import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { pathToFileURL } from 'node:url'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { mkdirp, posixify, walk } from '../../utils/filesystem.js'; import { decode_uri, is_root_relative, resolve } from '../../utils/url.js'; import { escape_html } from '../../utils/escape.js'; @@ -124,8 +123,6 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) { /** @type {import('types').Logger} */ const log = logger({ verbose }); - installPolyfills(); - /** @type {Map} */ const saved = new Map(); diff --git a/packages/kit/src/exports/hooks/sequence.spec.js b/packages/kit/src/exports/hooks/sequence.spec.js index e3ccc1cf930e..a6516f445f4a 100644 --- a/packages/kit/src/exports/hooks/sequence.spec.js +++ b/packages/kit/src/exports/hooks/sequence.spec.js @@ -2,7 +2,6 @@ /** @import { RequestState } from 'types' */ import { assert, expect, test, vi } from 'vitest'; import { sequence } from './sequence.js'; -import { installPolyfills } from '../node/polyfills.js'; import { noop_span } from '../../runtime/telemetry/noop.js'; const dummy_event = vi.hoisted( @@ -29,8 +28,6 @@ vi.mock(import('@sveltejs/kit/internal/server'), async (actualPromise) => { }; }); -installPolyfills(); - test('applies handlers in sequence', async () => { /** @type {string[]} */ const order = []; diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index cc116bac0792..7313f237d353 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -7,7 +7,6 @@ import { styleText } from 'node:util'; import sirv from 'sirv'; import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; -import { installPolyfills } from '../../../exports/node/polyfills.js'; import { coalesce_to_error } from '../../../utils/error.js'; import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js'; import { load_error_page } from '../../../core/config/index.js'; @@ -32,8 +31,6 @@ const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; * @return {Promise void>>} */ export async function dev(vite, vite_config, svelte_config, get_remotes) { - installPolyfills(); - const async_local_storage = new AsyncLocalStorage(); globalThis.__SVELTEKIT_TRACK__ = (label) => { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 02a89e9e6dd4..54c856418d63 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -5,7 +5,6 @@ import { lookup } from 'mrmime'; import sirv from 'sirv'; import { loadEnv, normalizePath } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; -import { installPolyfills } from '../../../exports/node/polyfills.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; import { not_found } from '../utils.js'; @@ -19,8 +18,6 @@ import { not_found } from '../utils.js'; * @param {import('types').ValidatedConfig} svelte_config */ export async function preview(vite, vite_config, svelte_config) { - installPolyfills(); - const { paths } = svelte_config.kit; const base = paths.base; const assets = paths.assets ? SVELTE_KIT_ASSETS : paths.base; diff --git a/packages/kit/src/runtime/server/cookie.spec.js b/packages/kit/src/runtime/server/cookie.spec.js index 658697aebac5..efcb8c531458 100644 --- a/packages/kit/src/runtime/server/cookie.spec.js +++ b/packages/kit/src/runtime/server/cookie.spec.js @@ -1,9 +1,6 @@ import process from 'node:process'; import { assert, expect, test, describe } from 'vitest'; import { domain_matches, path_matches, get_cookies } from './cookie.js'; -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; - -installPolyfills(); const domains = { positive: [ diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index f94a6a9ec71c..952ee7b30d3f 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -11,7 +11,6 @@ "paths": { "@sveltejs/kit": ["./src/exports/public.d.ts"], "@sveltejs/kit/node": ["./src/exports/node/index.js"], - "@sveltejs/kit/node/polyfills": ["./src/exports/node/polyfills.js"], "@sveltejs/kit/internal": ["./src/exports/internal/index.js"], "@sveltejs/kit/internal/server": ["./src/exports/internal/server.js"], "$app/paths": ["./src/runtime/app/paths/public.d.ts"], diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index e9fcea6e04f4..0815489c9c08 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2878,17 +2878,6 @@ declare module '@sveltejs/kit/node' { export {}; } -declare module '@sveltejs/kit/node/polyfills' { - /** - * Make various web APIs available as globals: - * - `crypto` - * - `File` - */ - export function installPolyfills(): void; - - export {}; -} - declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. From d333c41cba66ce3027aa98a15831867863d9481c Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 26 Feb 2026 18:45:00 +0800 Subject: [PATCH 25/72] changesets --- .changeset/cyan-zoos-love.md | 5 +++++ .changeset/many-jeans-feel.md | 6 ++++++ 2 files changed, 11 insertions(+) create mode 100644 .changeset/cyan-zoos-love.md create mode 100644 .changeset/many-jeans-feel.md diff --git a/.changeset/cyan-zoos-love.md b/.changeset/cyan-zoos-love.md new file mode 100644 index 000000000000..391ee6403465 --- /dev/null +++ b/.changeset/cyan-zoos-love.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove `@sveltejs/kit/node/polyfills` diff --git a/.changeset/many-jeans-feel.md b/.changeset/many-jeans-feel.md new file mode 100644 index 000000000000..e8f56a7afb9c --- /dev/null +++ b/.changeset/many-jeans-feel.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/adapter-netlify': major +'@sveltejs/adapter-node': major +--- + +breaking: remove Node 18 polyfills From 732e691b2c3b85a4d8a6ba83b3bdac838d3df5dc Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 26 Feb 2026 18:48:14 +0800 Subject: [PATCH 26/72] Revert "changesets" This reverts commit d333c41cba66ce3027aa98a15831867863d9481c. --- .changeset/cyan-zoos-love.md | 5 ----- .changeset/many-jeans-feel.md | 6 ------ 2 files changed, 11 deletions(-) delete mode 100644 .changeset/cyan-zoos-love.md delete mode 100644 .changeset/many-jeans-feel.md diff --git a/.changeset/cyan-zoos-love.md b/.changeset/cyan-zoos-love.md deleted file mode 100644 index 391ee6403465..000000000000 --- a/.changeset/cyan-zoos-love.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': major ---- - -breaking: remove `@sveltejs/kit/node/polyfills` diff --git a/.changeset/many-jeans-feel.md b/.changeset/many-jeans-feel.md deleted file mode 100644 index e8f56a7afb9c..000000000000 --- a/.changeset/many-jeans-feel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@sveltejs/adapter-netlify': major -'@sveltejs/adapter-node': major ---- - -breaking: remove Node 18 polyfills From 73291741753e7dbcc3dbd88deb042f0ab2404e97 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 26 Feb 2026 18:48:22 +0800 Subject: [PATCH 27/72] Revert "code begone" This reverts commit c696d52e41c38d6f460b28393490df8e9ad57cd4. --- .../docs/25-build-and-deploy/99-writing-adapters.md | 1 + .../98-reference/15-@sveltejs-kit-node-polyfills.md | 5 +++++ packages/adapter-netlify/rolldown.config.js | 1 + packages/adapter-netlify/src/serverless.js | 1 + packages/adapter-netlify/src/shims.js | 2 ++ packages/adapter-node/index.js | 1 + packages/adapter-node/rolldown.config.js | 11 ++++++++++- packages/adapter-node/src/handler.js | 1 + packages/adapter-node/src/shims.js | 2 ++ packages/kit/package.json | 4 ++++ packages/kit/scripts/generate-dts.js | 1 + packages/kit/src/core/postbuild/analyse.js | 3 +++ packages/kit/src/core/postbuild/fallback.js | 3 +++ packages/kit/src/core/postbuild/prerender.js | 3 +++ packages/kit/src/exports/hooks/sequence.spec.js | 3 +++ packages/kit/src/exports/vite/dev/index.js | 3 +++ packages/kit/src/exports/vite/preview/index.js | 3 +++ packages/kit/src/runtime/server/cookie.spec.js | 3 +++ packages/kit/tsconfig.json | 1 + packages/kit/types/index.d.ts | 11 +++++++++++ 20 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md create mode 100644 packages/adapter-netlify/src/shims.js create mode 100644 packages/adapter-node/src/shims.js diff --git a/documentation/docs/25-build-and-deploy/99-writing-adapters.md b/documentation/docs/25-build-and-deploy/99-writing-adapters.md index 823e2ffea350..931420b8fb8f 100644 --- a/documentation/docs/25-build-and-deploy/99-writing-adapters.md +++ b/documentation/docs/25-build-and-deploy/99-writing-adapters.md @@ -57,6 +57,7 @@ Within the `adapt` method, there are a number of things that an adapter should d - Instantiates the app with a manifest generated with `builder.generateManifest({ relativePath })` - Listens for requests from the platform, converts them to a standard [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) if necessary, calls the `server.respond(request, { getClientAddress })` function to generate a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) and responds with it - expose any platform-specific information to SvelteKit via the `platform` option passed to `server.respond` + - Globally shims `fetch` to work on the target platform, if necessary. SvelteKit provides a `@sveltejs/kit/node/polyfills` helper for platforms that can use `undici` - Bundle the output to avoid needing to install dependencies on the target platform, if necessary - Put the user's static files and the generated JS/CSS in the correct location for the target platform diff --git a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md b/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md new file mode 100644 index 000000000000..a80c80ab3139 --- /dev/null +++ b/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md @@ -0,0 +1,5 @@ +--- +title: @sveltejs/kit/node/polyfills +--- + +> MODULE: @sveltejs/kit/node/polyfills diff --git a/packages/adapter-netlify/rolldown.config.js b/packages/adapter-netlify/rolldown.config.js index 9230e1b5fb01..e9be35048264 100644 --- a/packages/adapter-netlify/rolldown.config.js +++ b/packages/adapter-netlify/rolldown.config.js @@ -21,6 +21,7 @@ function clearOutput(filepath) { const config = { input: { serverless: 'src/serverless.js', + shims: 'src/shims.js', edge: 'src/edge.js' }, output: { diff --git a/packages/adapter-netlify/src/serverless.js b/packages/adapter-netlify/src/serverless.js index d783fe09ec2b..c8a6447b6ad9 100644 --- a/packages/adapter-netlify/src/serverless.js +++ b/packages/adapter-netlify/src/serverless.js @@ -1,3 +1,4 @@ +import './shims'; import { Server } from '0SERVER'; import { createReadableStream } from '@sveltejs/kit/node'; import process from 'node:process'; diff --git a/packages/adapter-netlify/src/shims.js b/packages/adapter-netlify/src/shims.js new file mode 100644 index 000000000000..2490311daa1e --- /dev/null +++ b/packages/adapter-netlify/src/shims.js @@ -0,0 +1,2 @@ +import { installPolyfills } from '@sveltejs/kit/node/polyfills'; +installPolyfills(); diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index a6b3358d4a5a..9ed74124b9bb 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -94,6 +94,7 @@ export default function (opts = {}) { HANDLER: './handler.js', MANIFEST: './server/manifest.js', SERVER: './server/index.js', + SHIMS: './shims.js', ENV_PREFIX: JSON.stringify(envPrefix), PRECOMPRESS: JSON.stringify(precompress) } diff --git a/packages/adapter-node/rolldown.config.js b/packages/adapter-node/rolldown.config.js index d84faba8ae5a..45167575c67d 100644 --- a/packages/adapter-node/rolldown.config.js +++ b/packages/adapter-node/rolldown.config.js @@ -61,7 +61,16 @@ export default [ codeSplitting: false }, plugins: [clearOutput('files/handler.js'), prefixBuiltinModules()], - external: ['ENV', 'MANIFEST', 'SERVER'], + external: ['ENV', 'MANIFEST', 'SERVER', 'SHIMS'], + platform: 'node' + }, + { + input: 'src/shims.js', + output: { + file: 'files/shims.js', + format: 'esm' + }, + plugins: [clearOutput('files/shims.js'), prefixBuiltinModules()], platform: 'node' } ]; diff --git a/packages/adapter-node/src/handler.js b/packages/adapter-node/src/handler.js index 72e5a105a73b..b8fd2f38cbe5 100644 --- a/packages/adapter-node/src/handler.js +++ b/packages/adapter-node/src/handler.js @@ -1,3 +1,4 @@ +import 'SHIMS'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; diff --git a/packages/adapter-node/src/shims.js b/packages/adapter-node/src/shims.js new file mode 100644 index 000000000000..2490311daa1e --- /dev/null +++ b/packages/adapter-node/src/shims.js @@ -0,0 +1,2 @@ +import { installPolyfills } from '@sveltejs/kit/node/polyfills'; +installPolyfills(); diff --git a/packages/kit/package.json b/packages/kit/package.json index 457b8a990bbb..c7b871f19160 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -112,6 +112,10 @@ "types": "./types/index.d.ts", "import": "./src/exports/node/index.js" }, + "./node/polyfills": { + "types": "./types/index.d.ts", + "import": "./src/exports/node/polyfills.js" + }, "./hooks": { "types": "./types/index.d.ts", "import": "./src/exports/hooks/index.js" diff --git a/packages/kit/scripts/generate-dts.js b/packages/kit/scripts/generate-dts.js index 60c7fe7d103f..b470d6d63494 100644 --- a/packages/kit/scripts/generate-dts.js +++ b/packages/kit/scripts/generate-dts.js @@ -7,6 +7,7 @@ await createBundle({ '@sveltejs/kit': 'src/exports/public.d.ts', '@sveltejs/kit/hooks': 'src/exports/hooks/index.js', '@sveltejs/kit/node': 'src/exports/node/index.js', + '@sveltejs/kit/node/polyfills': 'src/exports/node/polyfills.js', '@sveltejs/kit/vite': 'src/exports/vite/index.js', '$app/environment': 'src/runtime/app/environment/types.d.ts', '$app/forms': 'src/runtime/app/forms.js', diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index 76936b253e24..aa99609e6a04 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -4,6 +4,7 @@ import { pathToFileURL } from 'node:url'; import { validate_server_exports } from '../../utils/exports.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; +import { installPolyfills } from '../../exports/node/polyfills.js'; import { ENDPOINT_METHODS } from '../../constants.js'; import { filter_env } from '../../utils/env.js'; import { has_server_load, resolve_route } from '../../utils/routing.js'; @@ -49,6 +50,8 @@ async function analyse({ /** @type {import('types').ServerInternalModule} */ const internal = await import(pathToFileURL(`${server_root}/server/internal.js`).href); + installPolyfills(); + // configure `import { building } from '$app/environment'` — // essential we do this before analysing the code internal.set_building(); diff --git a/packages/kit/src/core/postbuild/fallback.js b/packages/kit/src/core/postbuild/fallback.js index ef0d0530955f..39356887a289 100644 --- a/packages/kit/src/core/postbuild/fallback.js +++ b/packages/kit/src/core/postbuild/fallback.js @@ -1,6 +1,7 @@ import { readFileSync } from 'node:fs'; import { join } from 'node:path'; import { pathToFileURL } from 'node:url'; +import { installPolyfills } from '../../exports/node/polyfills.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; @@ -16,6 +17,8 @@ async function generate_fallback({ manifest_path, env }) { /** @type {import('types').ValidatedKitConfig} */ const config = (await load_config()).kit; + installPolyfills(); + const server_root = join(config.outDir, 'output'); /** @type {import('types').ServerInternalModule} */ diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 6acf8e47dff4..8caa68fdfe85 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -1,6 +1,7 @@ import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { pathToFileURL } from 'node:url'; +import { installPolyfills } from '../../exports/node/polyfills.js'; import { mkdirp, posixify, walk } from '../../utils/filesystem.js'; import { decode_uri, is_root_relative, resolve } from '../../utils/url.js'; import { escape_html } from '../../utils/escape.js'; @@ -123,6 +124,8 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) { /** @type {import('types').Logger} */ const log = logger({ verbose }); + installPolyfills(); + /** @type {Map} */ const saved = new Map(); diff --git a/packages/kit/src/exports/hooks/sequence.spec.js b/packages/kit/src/exports/hooks/sequence.spec.js index a6516f445f4a..e3ccc1cf930e 100644 --- a/packages/kit/src/exports/hooks/sequence.spec.js +++ b/packages/kit/src/exports/hooks/sequence.spec.js @@ -2,6 +2,7 @@ /** @import { RequestState } from 'types' */ import { assert, expect, test, vi } from 'vitest'; import { sequence } from './sequence.js'; +import { installPolyfills } from '../node/polyfills.js'; import { noop_span } from '../../runtime/telemetry/noop.js'; const dummy_event = vi.hoisted( @@ -28,6 +29,8 @@ vi.mock(import('@sveltejs/kit/internal/server'), async (actualPromise) => { }; }); +installPolyfills(); + test('applies handlers in sequence', async () => { /** @type {string[]} */ const order = []; diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 7313f237d353..cc116bac0792 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -7,6 +7,7 @@ import { styleText } from 'node:util'; import sirv from 'sirv'; import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; +import { installPolyfills } from '../../../exports/node/polyfills.js'; import { coalesce_to_error } from '../../../utils/error.js'; import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js'; import { load_error_page } from '../../../core/config/index.js'; @@ -31,6 +32,8 @@ const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; * @return {Promise void>>} */ export async function dev(vite, vite_config, svelte_config, get_remotes) { + installPolyfills(); + const async_local_storage = new AsyncLocalStorage(); globalThis.__SVELTEKIT_TRACK__ = (label) => { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 54c856418d63..02a89e9e6dd4 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -5,6 +5,7 @@ import { lookup } from 'mrmime'; import sirv from 'sirv'; import { loadEnv, normalizePath } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; +import { installPolyfills } from '../../../exports/node/polyfills.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; import { not_found } from '../utils.js'; @@ -18,6 +19,8 @@ import { not_found } from '../utils.js'; * @param {import('types').ValidatedConfig} svelte_config */ export async function preview(vite, vite_config, svelte_config) { + installPolyfills(); + const { paths } = svelte_config.kit; const base = paths.base; const assets = paths.assets ? SVELTE_KIT_ASSETS : paths.base; diff --git a/packages/kit/src/runtime/server/cookie.spec.js b/packages/kit/src/runtime/server/cookie.spec.js index efcb8c531458..658697aebac5 100644 --- a/packages/kit/src/runtime/server/cookie.spec.js +++ b/packages/kit/src/runtime/server/cookie.spec.js @@ -1,6 +1,9 @@ import process from 'node:process'; import { assert, expect, test, describe } from 'vitest'; import { domain_matches, path_matches, get_cookies } from './cookie.js'; +import { installPolyfills } from '@sveltejs/kit/node/polyfills'; + +installPolyfills(); const domains = { positive: [ diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index 952ee7b30d3f..f94a6a9ec71c 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -11,6 +11,7 @@ "paths": { "@sveltejs/kit": ["./src/exports/public.d.ts"], "@sveltejs/kit/node": ["./src/exports/node/index.js"], + "@sveltejs/kit/node/polyfills": ["./src/exports/node/polyfills.js"], "@sveltejs/kit/internal": ["./src/exports/internal/index.js"], "@sveltejs/kit/internal/server": ["./src/exports/internal/server.js"], "$app/paths": ["./src/runtime/app/paths/public.d.ts"], diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 0815489c9c08..e9fcea6e04f4 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2878,6 +2878,17 @@ declare module '@sveltejs/kit/node' { export {}; } +declare module '@sveltejs/kit/node/polyfills' { + /** + * Make various web APIs available as globals: + * - `crypto` + * - `File` + */ + export function installPolyfills(): void; + + export {}; +} + declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. From ac46f8fb82718be81a856751f3d735f78a90ad15 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 26 Feb 2026 18:50:08 +0800 Subject: [PATCH 28/72] push --- .changeset/cyan-zoos-love.md | 5 +++++ .changeset/many-jeans-feel.md | 6 ++++++ .../docs/25-build-and-deploy/99-writing-adapters.md | 1 - .../98-reference/15-@sveltejs-kit-node-polyfills.md | 5 ----- packages/adapter-netlify/rolldown.config.js | 1 - packages/adapter-netlify/src/serverless.js | 1 - packages/adapter-netlify/src/shims.js | 2 -- packages/adapter-node/index.js | 1 - packages/adapter-node/rolldown.config.js | 11 +---------- packages/adapter-node/src/handler.js | 1 - packages/adapter-node/src/shims.js | 2 -- packages/kit/package.json | 4 ---- packages/kit/scripts/generate-dts.js | 1 - packages/kit/src/core/postbuild/analyse.js | 3 --- packages/kit/src/core/postbuild/fallback.js | 3 --- packages/kit/src/core/postbuild/prerender.js | 3 --- packages/kit/src/exports/hooks/sequence.spec.js | 3 --- packages/kit/src/exports/vite/dev/index.js | 3 --- packages/kit/src/exports/vite/preview/index.js | 3 --- packages/kit/src/runtime/server/cookie.spec.js | 3 --- packages/kit/tsconfig.json | 1 - packages/kit/types/index.d.ts | 11 ----------- 22 files changed, 12 insertions(+), 62 deletions(-) create mode 100644 .changeset/cyan-zoos-love.md create mode 100644 .changeset/many-jeans-feel.md delete mode 100644 documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md delete mode 100644 packages/adapter-netlify/src/shims.js delete mode 100644 packages/adapter-node/src/shims.js diff --git a/.changeset/cyan-zoos-love.md b/.changeset/cyan-zoos-love.md new file mode 100644 index 000000000000..391ee6403465 --- /dev/null +++ b/.changeset/cyan-zoos-love.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove `@sveltejs/kit/node/polyfills` diff --git a/.changeset/many-jeans-feel.md b/.changeset/many-jeans-feel.md new file mode 100644 index 000000000000..e8f56a7afb9c --- /dev/null +++ b/.changeset/many-jeans-feel.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/adapter-netlify': major +'@sveltejs/adapter-node': major +--- + +breaking: remove Node 18 polyfills diff --git a/documentation/docs/25-build-and-deploy/99-writing-adapters.md b/documentation/docs/25-build-and-deploy/99-writing-adapters.md index 931420b8fb8f..823e2ffea350 100644 --- a/documentation/docs/25-build-and-deploy/99-writing-adapters.md +++ b/documentation/docs/25-build-and-deploy/99-writing-adapters.md @@ -57,7 +57,6 @@ Within the `adapt` method, there are a number of things that an adapter should d - Instantiates the app with a manifest generated with `builder.generateManifest({ relativePath })` - Listens for requests from the platform, converts them to a standard [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) if necessary, calls the `server.respond(request, { getClientAddress })` function to generate a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) and responds with it - expose any platform-specific information to SvelteKit via the `platform` option passed to `server.respond` - - Globally shims `fetch` to work on the target platform, if necessary. SvelteKit provides a `@sveltejs/kit/node/polyfills` helper for platforms that can use `undici` - Bundle the output to avoid needing to install dependencies on the target platform, if necessary - Put the user's static files and the generated JS/CSS in the correct location for the target platform diff --git a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md b/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md deleted file mode 100644 index a80c80ab3139..000000000000 --- a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: @sveltejs/kit/node/polyfills ---- - -> MODULE: @sveltejs/kit/node/polyfills diff --git a/packages/adapter-netlify/rolldown.config.js b/packages/adapter-netlify/rolldown.config.js index e9be35048264..9230e1b5fb01 100644 --- a/packages/adapter-netlify/rolldown.config.js +++ b/packages/adapter-netlify/rolldown.config.js @@ -21,7 +21,6 @@ function clearOutput(filepath) { const config = { input: { serverless: 'src/serverless.js', - shims: 'src/shims.js', edge: 'src/edge.js' }, output: { diff --git a/packages/adapter-netlify/src/serverless.js b/packages/adapter-netlify/src/serverless.js index c8a6447b6ad9..d783fe09ec2b 100644 --- a/packages/adapter-netlify/src/serverless.js +++ b/packages/adapter-netlify/src/serverless.js @@ -1,4 +1,3 @@ -import './shims'; import { Server } from '0SERVER'; import { createReadableStream } from '@sveltejs/kit/node'; import process from 'node:process'; diff --git a/packages/adapter-netlify/src/shims.js b/packages/adapter-netlify/src/shims.js deleted file mode 100644 index 2490311daa1e..000000000000 --- a/packages/adapter-netlify/src/shims.js +++ /dev/null @@ -1,2 +0,0 @@ -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; -installPolyfills(); diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index 9ed74124b9bb..a6b3358d4a5a 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -94,7 +94,6 @@ export default function (opts = {}) { HANDLER: './handler.js', MANIFEST: './server/manifest.js', SERVER: './server/index.js', - SHIMS: './shims.js', ENV_PREFIX: JSON.stringify(envPrefix), PRECOMPRESS: JSON.stringify(precompress) } diff --git a/packages/adapter-node/rolldown.config.js b/packages/adapter-node/rolldown.config.js index 45167575c67d..d84faba8ae5a 100644 --- a/packages/adapter-node/rolldown.config.js +++ b/packages/adapter-node/rolldown.config.js @@ -61,16 +61,7 @@ export default [ codeSplitting: false }, plugins: [clearOutput('files/handler.js'), prefixBuiltinModules()], - external: ['ENV', 'MANIFEST', 'SERVER', 'SHIMS'], - platform: 'node' - }, - { - input: 'src/shims.js', - output: { - file: 'files/shims.js', - format: 'esm' - }, - plugins: [clearOutput('files/shims.js'), prefixBuiltinModules()], + external: ['ENV', 'MANIFEST', 'SERVER'], platform: 'node' } ]; diff --git a/packages/adapter-node/src/handler.js b/packages/adapter-node/src/handler.js index b8fd2f38cbe5..72e5a105a73b 100644 --- a/packages/adapter-node/src/handler.js +++ b/packages/adapter-node/src/handler.js @@ -1,4 +1,3 @@ -import 'SHIMS'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; diff --git a/packages/adapter-node/src/shims.js b/packages/adapter-node/src/shims.js deleted file mode 100644 index 2490311daa1e..000000000000 --- a/packages/adapter-node/src/shims.js +++ /dev/null @@ -1,2 +0,0 @@ -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; -installPolyfills(); diff --git a/packages/kit/package.json b/packages/kit/package.json index c7b871f19160..457b8a990bbb 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -112,10 +112,6 @@ "types": "./types/index.d.ts", "import": "./src/exports/node/index.js" }, - "./node/polyfills": { - "types": "./types/index.d.ts", - "import": "./src/exports/node/polyfills.js" - }, "./hooks": { "types": "./types/index.d.ts", "import": "./src/exports/hooks/index.js" diff --git a/packages/kit/scripts/generate-dts.js b/packages/kit/scripts/generate-dts.js index b470d6d63494..60c7fe7d103f 100644 --- a/packages/kit/scripts/generate-dts.js +++ b/packages/kit/scripts/generate-dts.js @@ -7,7 +7,6 @@ await createBundle({ '@sveltejs/kit': 'src/exports/public.d.ts', '@sveltejs/kit/hooks': 'src/exports/hooks/index.js', '@sveltejs/kit/node': 'src/exports/node/index.js', - '@sveltejs/kit/node/polyfills': 'src/exports/node/polyfills.js', '@sveltejs/kit/vite': 'src/exports/vite/index.js', '$app/environment': 'src/runtime/app/environment/types.d.ts', '$app/forms': 'src/runtime/app/forms.js', diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index aa99609e6a04..76936b253e24 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -4,7 +4,6 @@ import { pathToFileURL } from 'node:url'; import { validate_server_exports } from '../../utils/exports.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { ENDPOINT_METHODS } from '../../constants.js'; import { filter_env } from '../../utils/env.js'; import { has_server_load, resolve_route } from '../../utils/routing.js'; @@ -50,8 +49,6 @@ async function analyse({ /** @type {import('types').ServerInternalModule} */ const internal = await import(pathToFileURL(`${server_root}/server/internal.js`).href); - installPolyfills(); - // configure `import { building } from '$app/environment'` — // essential we do this before analysing the code internal.set_building(); diff --git a/packages/kit/src/core/postbuild/fallback.js b/packages/kit/src/core/postbuild/fallback.js index 39356887a289..ef0d0530955f 100644 --- a/packages/kit/src/core/postbuild/fallback.js +++ b/packages/kit/src/core/postbuild/fallback.js @@ -1,7 +1,6 @@ import { readFileSync } from 'node:fs'; import { join } from 'node:path'; import { pathToFileURL } from 'node:url'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; @@ -17,8 +16,6 @@ async function generate_fallback({ manifest_path, env }) { /** @type {import('types').ValidatedKitConfig} */ const config = (await load_config()).kit; - installPolyfills(); - const server_root = join(config.outDir, 'output'); /** @type {import('types').ServerInternalModule} */ diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 8caa68fdfe85..6acf8e47dff4 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -1,7 +1,6 @@ import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { pathToFileURL } from 'node:url'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { mkdirp, posixify, walk } from '../../utils/filesystem.js'; import { decode_uri, is_root_relative, resolve } from '../../utils/url.js'; import { escape_html } from '../../utils/escape.js'; @@ -124,8 +123,6 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) { /** @type {import('types').Logger} */ const log = logger({ verbose }); - installPolyfills(); - /** @type {Map} */ const saved = new Map(); diff --git a/packages/kit/src/exports/hooks/sequence.spec.js b/packages/kit/src/exports/hooks/sequence.spec.js index e3ccc1cf930e..a6516f445f4a 100644 --- a/packages/kit/src/exports/hooks/sequence.spec.js +++ b/packages/kit/src/exports/hooks/sequence.spec.js @@ -2,7 +2,6 @@ /** @import { RequestState } from 'types' */ import { assert, expect, test, vi } from 'vitest'; import { sequence } from './sequence.js'; -import { installPolyfills } from '../node/polyfills.js'; import { noop_span } from '../../runtime/telemetry/noop.js'; const dummy_event = vi.hoisted( @@ -29,8 +28,6 @@ vi.mock(import('@sveltejs/kit/internal/server'), async (actualPromise) => { }; }); -installPolyfills(); - test('applies handlers in sequence', async () => { /** @type {string[]} */ const order = []; diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index cc116bac0792..7313f237d353 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -7,7 +7,6 @@ import { styleText } from 'node:util'; import sirv from 'sirv'; import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; -import { installPolyfills } from '../../../exports/node/polyfills.js'; import { coalesce_to_error } from '../../../utils/error.js'; import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js'; import { load_error_page } from '../../../core/config/index.js'; @@ -32,8 +31,6 @@ const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; * @return {Promise void>>} */ export async function dev(vite, vite_config, svelte_config, get_remotes) { - installPolyfills(); - const async_local_storage = new AsyncLocalStorage(); globalThis.__SVELTEKIT_TRACK__ = (label) => { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 02a89e9e6dd4..54c856418d63 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -5,7 +5,6 @@ import { lookup } from 'mrmime'; import sirv from 'sirv'; import { loadEnv, normalizePath } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; -import { installPolyfills } from '../../../exports/node/polyfills.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; import { not_found } from '../utils.js'; @@ -19,8 +18,6 @@ import { not_found } from '../utils.js'; * @param {import('types').ValidatedConfig} svelte_config */ export async function preview(vite, vite_config, svelte_config) { - installPolyfills(); - const { paths } = svelte_config.kit; const base = paths.base; const assets = paths.assets ? SVELTE_KIT_ASSETS : paths.base; diff --git a/packages/kit/src/runtime/server/cookie.spec.js b/packages/kit/src/runtime/server/cookie.spec.js index 658697aebac5..efcb8c531458 100644 --- a/packages/kit/src/runtime/server/cookie.spec.js +++ b/packages/kit/src/runtime/server/cookie.spec.js @@ -1,9 +1,6 @@ import process from 'node:process'; import { assert, expect, test, describe } from 'vitest'; import { domain_matches, path_matches, get_cookies } from './cookie.js'; -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; - -installPolyfills(); const domains = { positive: [ diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index f94a6a9ec71c..952ee7b30d3f 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -11,7 +11,6 @@ "paths": { "@sveltejs/kit": ["./src/exports/public.d.ts"], "@sveltejs/kit/node": ["./src/exports/node/index.js"], - "@sveltejs/kit/node/polyfills": ["./src/exports/node/polyfills.js"], "@sveltejs/kit/internal": ["./src/exports/internal/index.js"], "@sveltejs/kit/internal/server": ["./src/exports/internal/server.js"], "$app/paths": ["./src/runtime/app/paths/public.d.ts"], diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index e9fcea6e04f4..0815489c9c08 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2878,17 +2878,6 @@ declare module '@sveltejs/kit/node' { export {}; } -declare module '@sveltejs/kit/node/polyfills' { - /** - * Make various web APIs available as globals: - * - `crypto` - * - `File` - */ - export function installPolyfills(): void; - - export {}; -} - declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. From d58c0e24be864740c1875561e61602e734514143 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 26 Feb 2026 18:50:42 +0800 Subject: [PATCH 29/72] Revert "push" This reverts commit ac46f8fb82718be81a856751f3d735f78a90ad15. --- .changeset/cyan-zoos-love.md | 5 ----- .changeset/many-jeans-feel.md | 6 ------ .../docs/25-build-and-deploy/99-writing-adapters.md | 1 + .../98-reference/15-@sveltejs-kit-node-polyfills.md | 5 +++++ packages/adapter-netlify/rolldown.config.js | 1 + packages/adapter-netlify/src/serverless.js | 1 + packages/adapter-netlify/src/shims.js | 2 ++ packages/adapter-node/index.js | 1 + packages/adapter-node/rolldown.config.js | 11 ++++++++++- packages/adapter-node/src/handler.js | 1 + packages/adapter-node/src/shims.js | 2 ++ packages/kit/package.json | 4 ++++ packages/kit/scripts/generate-dts.js | 1 + packages/kit/src/core/postbuild/analyse.js | 3 +++ packages/kit/src/core/postbuild/fallback.js | 3 +++ packages/kit/src/core/postbuild/prerender.js | 3 +++ packages/kit/src/exports/hooks/sequence.spec.js | 3 +++ packages/kit/src/exports/vite/dev/index.js | 3 +++ packages/kit/src/exports/vite/preview/index.js | 3 +++ packages/kit/src/runtime/server/cookie.spec.js | 3 +++ packages/kit/tsconfig.json | 1 + packages/kit/types/index.d.ts | 11 +++++++++++ 22 files changed, 62 insertions(+), 12 deletions(-) delete mode 100644 .changeset/cyan-zoos-love.md delete mode 100644 .changeset/many-jeans-feel.md create mode 100644 documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md create mode 100644 packages/adapter-netlify/src/shims.js create mode 100644 packages/adapter-node/src/shims.js diff --git a/.changeset/cyan-zoos-love.md b/.changeset/cyan-zoos-love.md deleted file mode 100644 index 391ee6403465..000000000000 --- a/.changeset/cyan-zoos-love.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': major ---- - -breaking: remove `@sveltejs/kit/node/polyfills` diff --git a/.changeset/many-jeans-feel.md b/.changeset/many-jeans-feel.md deleted file mode 100644 index e8f56a7afb9c..000000000000 --- a/.changeset/many-jeans-feel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@sveltejs/adapter-netlify': major -'@sveltejs/adapter-node': major ---- - -breaking: remove Node 18 polyfills diff --git a/documentation/docs/25-build-and-deploy/99-writing-adapters.md b/documentation/docs/25-build-and-deploy/99-writing-adapters.md index 823e2ffea350..931420b8fb8f 100644 --- a/documentation/docs/25-build-and-deploy/99-writing-adapters.md +++ b/documentation/docs/25-build-and-deploy/99-writing-adapters.md @@ -57,6 +57,7 @@ Within the `adapt` method, there are a number of things that an adapter should d - Instantiates the app with a manifest generated with `builder.generateManifest({ relativePath })` - Listens for requests from the platform, converts them to a standard [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) if necessary, calls the `server.respond(request, { getClientAddress })` function to generate a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) and responds with it - expose any platform-specific information to SvelteKit via the `platform` option passed to `server.respond` + - Globally shims `fetch` to work on the target platform, if necessary. SvelteKit provides a `@sveltejs/kit/node/polyfills` helper for platforms that can use `undici` - Bundle the output to avoid needing to install dependencies on the target platform, if necessary - Put the user's static files and the generated JS/CSS in the correct location for the target platform diff --git a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md b/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md new file mode 100644 index 000000000000..a80c80ab3139 --- /dev/null +++ b/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md @@ -0,0 +1,5 @@ +--- +title: @sveltejs/kit/node/polyfills +--- + +> MODULE: @sveltejs/kit/node/polyfills diff --git a/packages/adapter-netlify/rolldown.config.js b/packages/adapter-netlify/rolldown.config.js index 9230e1b5fb01..e9be35048264 100644 --- a/packages/adapter-netlify/rolldown.config.js +++ b/packages/adapter-netlify/rolldown.config.js @@ -21,6 +21,7 @@ function clearOutput(filepath) { const config = { input: { serverless: 'src/serverless.js', + shims: 'src/shims.js', edge: 'src/edge.js' }, output: { diff --git a/packages/adapter-netlify/src/serverless.js b/packages/adapter-netlify/src/serverless.js index d783fe09ec2b..c8a6447b6ad9 100644 --- a/packages/adapter-netlify/src/serverless.js +++ b/packages/adapter-netlify/src/serverless.js @@ -1,3 +1,4 @@ +import './shims'; import { Server } from '0SERVER'; import { createReadableStream } from '@sveltejs/kit/node'; import process from 'node:process'; diff --git a/packages/adapter-netlify/src/shims.js b/packages/adapter-netlify/src/shims.js new file mode 100644 index 000000000000..2490311daa1e --- /dev/null +++ b/packages/adapter-netlify/src/shims.js @@ -0,0 +1,2 @@ +import { installPolyfills } from '@sveltejs/kit/node/polyfills'; +installPolyfills(); diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index a6b3358d4a5a..9ed74124b9bb 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -94,6 +94,7 @@ export default function (opts = {}) { HANDLER: './handler.js', MANIFEST: './server/manifest.js', SERVER: './server/index.js', + SHIMS: './shims.js', ENV_PREFIX: JSON.stringify(envPrefix), PRECOMPRESS: JSON.stringify(precompress) } diff --git a/packages/adapter-node/rolldown.config.js b/packages/adapter-node/rolldown.config.js index d84faba8ae5a..45167575c67d 100644 --- a/packages/adapter-node/rolldown.config.js +++ b/packages/adapter-node/rolldown.config.js @@ -61,7 +61,16 @@ export default [ codeSplitting: false }, plugins: [clearOutput('files/handler.js'), prefixBuiltinModules()], - external: ['ENV', 'MANIFEST', 'SERVER'], + external: ['ENV', 'MANIFEST', 'SERVER', 'SHIMS'], + platform: 'node' + }, + { + input: 'src/shims.js', + output: { + file: 'files/shims.js', + format: 'esm' + }, + plugins: [clearOutput('files/shims.js'), prefixBuiltinModules()], platform: 'node' } ]; diff --git a/packages/adapter-node/src/handler.js b/packages/adapter-node/src/handler.js index 72e5a105a73b..b8fd2f38cbe5 100644 --- a/packages/adapter-node/src/handler.js +++ b/packages/adapter-node/src/handler.js @@ -1,3 +1,4 @@ +import 'SHIMS'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; diff --git a/packages/adapter-node/src/shims.js b/packages/adapter-node/src/shims.js new file mode 100644 index 000000000000..2490311daa1e --- /dev/null +++ b/packages/adapter-node/src/shims.js @@ -0,0 +1,2 @@ +import { installPolyfills } from '@sveltejs/kit/node/polyfills'; +installPolyfills(); diff --git a/packages/kit/package.json b/packages/kit/package.json index 457b8a990bbb..c7b871f19160 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -112,6 +112,10 @@ "types": "./types/index.d.ts", "import": "./src/exports/node/index.js" }, + "./node/polyfills": { + "types": "./types/index.d.ts", + "import": "./src/exports/node/polyfills.js" + }, "./hooks": { "types": "./types/index.d.ts", "import": "./src/exports/hooks/index.js" diff --git a/packages/kit/scripts/generate-dts.js b/packages/kit/scripts/generate-dts.js index 60c7fe7d103f..b470d6d63494 100644 --- a/packages/kit/scripts/generate-dts.js +++ b/packages/kit/scripts/generate-dts.js @@ -7,6 +7,7 @@ await createBundle({ '@sveltejs/kit': 'src/exports/public.d.ts', '@sveltejs/kit/hooks': 'src/exports/hooks/index.js', '@sveltejs/kit/node': 'src/exports/node/index.js', + '@sveltejs/kit/node/polyfills': 'src/exports/node/polyfills.js', '@sveltejs/kit/vite': 'src/exports/vite/index.js', '$app/environment': 'src/runtime/app/environment/types.d.ts', '$app/forms': 'src/runtime/app/forms.js', diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index 76936b253e24..aa99609e6a04 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -4,6 +4,7 @@ import { pathToFileURL } from 'node:url'; import { validate_server_exports } from '../../utils/exports.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; +import { installPolyfills } from '../../exports/node/polyfills.js'; import { ENDPOINT_METHODS } from '../../constants.js'; import { filter_env } from '../../utils/env.js'; import { has_server_load, resolve_route } from '../../utils/routing.js'; @@ -49,6 +50,8 @@ async function analyse({ /** @type {import('types').ServerInternalModule} */ const internal = await import(pathToFileURL(`${server_root}/server/internal.js`).href); + installPolyfills(); + // configure `import { building } from '$app/environment'` — // essential we do this before analysing the code internal.set_building(); diff --git a/packages/kit/src/core/postbuild/fallback.js b/packages/kit/src/core/postbuild/fallback.js index ef0d0530955f..39356887a289 100644 --- a/packages/kit/src/core/postbuild/fallback.js +++ b/packages/kit/src/core/postbuild/fallback.js @@ -1,6 +1,7 @@ import { readFileSync } from 'node:fs'; import { join } from 'node:path'; import { pathToFileURL } from 'node:url'; +import { installPolyfills } from '../../exports/node/polyfills.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; @@ -16,6 +17,8 @@ async function generate_fallback({ manifest_path, env }) { /** @type {import('types').ValidatedKitConfig} */ const config = (await load_config()).kit; + installPolyfills(); + const server_root = join(config.outDir, 'output'); /** @type {import('types').ServerInternalModule} */ diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 6acf8e47dff4..8caa68fdfe85 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -1,6 +1,7 @@ import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { pathToFileURL } from 'node:url'; +import { installPolyfills } from '../../exports/node/polyfills.js'; import { mkdirp, posixify, walk } from '../../utils/filesystem.js'; import { decode_uri, is_root_relative, resolve } from '../../utils/url.js'; import { escape_html } from '../../utils/escape.js'; @@ -123,6 +124,8 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) { /** @type {import('types').Logger} */ const log = logger({ verbose }); + installPolyfills(); + /** @type {Map} */ const saved = new Map(); diff --git a/packages/kit/src/exports/hooks/sequence.spec.js b/packages/kit/src/exports/hooks/sequence.spec.js index a6516f445f4a..e3ccc1cf930e 100644 --- a/packages/kit/src/exports/hooks/sequence.spec.js +++ b/packages/kit/src/exports/hooks/sequence.spec.js @@ -2,6 +2,7 @@ /** @import { RequestState } from 'types' */ import { assert, expect, test, vi } from 'vitest'; import { sequence } from './sequence.js'; +import { installPolyfills } from '../node/polyfills.js'; import { noop_span } from '../../runtime/telemetry/noop.js'; const dummy_event = vi.hoisted( @@ -28,6 +29,8 @@ vi.mock(import('@sveltejs/kit/internal/server'), async (actualPromise) => { }; }); +installPolyfills(); + test('applies handlers in sequence', async () => { /** @type {string[]} */ const order = []; diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 7313f237d353..cc116bac0792 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -7,6 +7,7 @@ import { styleText } from 'node:util'; import sirv from 'sirv'; import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; +import { installPolyfills } from '../../../exports/node/polyfills.js'; import { coalesce_to_error } from '../../../utils/error.js'; import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js'; import { load_error_page } from '../../../core/config/index.js'; @@ -31,6 +32,8 @@ const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; * @return {Promise void>>} */ export async function dev(vite, vite_config, svelte_config, get_remotes) { + installPolyfills(); + const async_local_storage = new AsyncLocalStorage(); globalThis.__SVELTEKIT_TRACK__ = (label) => { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 54c856418d63..02a89e9e6dd4 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -5,6 +5,7 @@ import { lookup } from 'mrmime'; import sirv from 'sirv'; import { loadEnv, normalizePath } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; +import { installPolyfills } from '../../../exports/node/polyfills.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; import { not_found } from '../utils.js'; @@ -18,6 +19,8 @@ import { not_found } from '../utils.js'; * @param {import('types').ValidatedConfig} svelte_config */ export async function preview(vite, vite_config, svelte_config) { + installPolyfills(); + const { paths } = svelte_config.kit; const base = paths.base; const assets = paths.assets ? SVELTE_KIT_ASSETS : paths.base; diff --git a/packages/kit/src/runtime/server/cookie.spec.js b/packages/kit/src/runtime/server/cookie.spec.js index efcb8c531458..658697aebac5 100644 --- a/packages/kit/src/runtime/server/cookie.spec.js +++ b/packages/kit/src/runtime/server/cookie.spec.js @@ -1,6 +1,9 @@ import process from 'node:process'; import { assert, expect, test, describe } from 'vitest'; import { domain_matches, path_matches, get_cookies } from './cookie.js'; +import { installPolyfills } from '@sveltejs/kit/node/polyfills'; + +installPolyfills(); const domains = { positive: [ diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index 952ee7b30d3f..f94a6a9ec71c 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -11,6 +11,7 @@ "paths": { "@sveltejs/kit": ["./src/exports/public.d.ts"], "@sveltejs/kit/node": ["./src/exports/node/index.js"], + "@sveltejs/kit/node/polyfills": ["./src/exports/node/polyfills.js"], "@sveltejs/kit/internal": ["./src/exports/internal/index.js"], "@sveltejs/kit/internal/server": ["./src/exports/internal/server.js"], "$app/paths": ["./src/runtime/app/paths/public.d.ts"], diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 0815489c9c08..e9fcea6e04f4 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2878,6 +2878,17 @@ declare module '@sveltejs/kit/node' { export {}; } +declare module '@sveltejs/kit/node/polyfills' { + /** + * Make various web APIs available as globals: + * - `crypto` + * - `File` + */ + export function installPolyfills(): void; + + export {}; +} + declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. From ba36148577ed0bc2675034a3d57001d71d328cd1 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 26 Feb 2026 21:38:54 +0800 Subject: [PATCH 30/72] breaking: remove Node polyfills (#15430) closes https://github.com/sveltejs/kit/issues/15258 This PR removes the export `@sveltejs/kit/node/polyfills` and the shims from the node and netlify adapter. They were only needed while we still supported Node 18 --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --- .changeset/cyan-zoos-love.md | 5 +++++ .../docs/25-build-and-deploy/99-writing-adapters.md | 1 - .../98-reference/15-@sveltejs-kit-node-polyfills.md | 5 ----- packages/adapter-netlify/rolldown.config.js | 1 - packages/adapter-netlify/src/serverless.js | 1 - packages/adapter-netlify/src/shims.js | 2 -- packages/adapter-node/index.js | 1 - packages/adapter-node/rolldown.config.js | 11 +---------- packages/adapter-node/src/handler.js | 1 - packages/adapter-node/src/shims.js | 2 -- packages/kit/package.json | 4 ---- packages/kit/scripts/generate-dts.js | 1 - packages/kit/src/core/postbuild/analyse.js | 3 --- packages/kit/src/core/postbuild/fallback.js | 3 --- packages/kit/src/core/postbuild/prerender.js | 3 --- packages/kit/src/exports/hooks/sequence.spec.js | 3 --- packages/kit/src/exports/vite/dev/index.js | 3 --- packages/kit/src/exports/vite/preview/index.js | 3 --- packages/kit/src/runtime/server/cookie.spec.js | 3 --- packages/kit/tsconfig.json | 1 - packages/kit/types/index.d.ts | 11 ----------- 21 files changed, 6 insertions(+), 62 deletions(-) create mode 100644 .changeset/cyan-zoos-love.md delete mode 100644 documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md delete mode 100644 packages/adapter-netlify/src/shims.js delete mode 100644 packages/adapter-node/src/shims.js diff --git a/.changeset/cyan-zoos-love.md b/.changeset/cyan-zoos-love.md new file mode 100644 index 000000000000..391ee6403465 --- /dev/null +++ b/.changeset/cyan-zoos-love.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove `@sveltejs/kit/node/polyfills` diff --git a/documentation/docs/25-build-and-deploy/99-writing-adapters.md b/documentation/docs/25-build-and-deploy/99-writing-adapters.md index 931420b8fb8f..823e2ffea350 100644 --- a/documentation/docs/25-build-and-deploy/99-writing-adapters.md +++ b/documentation/docs/25-build-and-deploy/99-writing-adapters.md @@ -57,7 +57,6 @@ Within the `adapt` method, there are a number of things that an adapter should d - Instantiates the app with a manifest generated with `builder.generateManifest({ relativePath })` - Listens for requests from the platform, converts them to a standard [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) if necessary, calls the `server.respond(request, { getClientAddress })` function to generate a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) and responds with it - expose any platform-specific information to SvelteKit via the `platform` option passed to `server.respond` - - Globally shims `fetch` to work on the target platform, if necessary. SvelteKit provides a `@sveltejs/kit/node/polyfills` helper for platforms that can use `undici` - Bundle the output to avoid needing to install dependencies on the target platform, if necessary - Put the user's static files and the generated JS/CSS in the correct location for the target platform diff --git a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md b/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md deleted file mode 100644 index a80c80ab3139..000000000000 --- a/documentation/docs/98-reference/15-@sveltejs-kit-node-polyfills.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: @sveltejs/kit/node/polyfills ---- - -> MODULE: @sveltejs/kit/node/polyfills diff --git a/packages/adapter-netlify/rolldown.config.js b/packages/adapter-netlify/rolldown.config.js index e9be35048264..9230e1b5fb01 100644 --- a/packages/adapter-netlify/rolldown.config.js +++ b/packages/adapter-netlify/rolldown.config.js @@ -21,7 +21,6 @@ function clearOutput(filepath) { const config = { input: { serverless: 'src/serverless.js', - shims: 'src/shims.js', edge: 'src/edge.js' }, output: { diff --git a/packages/adapter-netlify/src/serverless.js b/packages/adapter-netlify/src/serverless.js index c8a6447b6ad9..d783fe09ec2b 100644 --- a/packages/adapter-netlify/src/serverless.js +++ b/packages/adapter-netlify/src/serverless.js @@ -1,4 +1,3 @@ -import './shims'; import { Server } from '0SERVER'; import { createReadableStream } from '@sveltejs/kit/node'; import process from 'node:process'; diff --git a/packages/adapter-netlify/src/shims.js b/packages/adapter-netlify/src/shims.js deleted file mode 100644 index 2490311daa1e..000000000000 --- a/packages/adapter-netlify/src/shims.js +++ /dev/null @@ -1,2 +0,0 @@ -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; -installPolyfills(); diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index 9ed74124b9bb..a6b3358d4a5a 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -94,7 +94,6 @@ export default function (opts = {}) { HANDLER: './handler.js', MANIFEST: './server/manifest.js', SERVER: './server/index.js', - SHIMS: './shims.js', ENV_PREFIX: JSON.stringify(envPrefix), PRECOMPRESS: JSON.stringify(precompress) } diff --git a/packages/adapter-node/rolldown.config.js b/packages/adapter-node/rolldown.config.js index 45167575c67d..d84faba8ae5a 100644 --- a/packages/adapter-node/rolldown.config.js +++ b/packages/adapter-node/rolldown.config.js @@ -61,16 +61,7 @@ export default [ codeSplitting: false }, plugins: [clearOutput('files/handler.js'), prefixBuiltinModules()], - external: ['ENV', 'MANIFEST', 'SERVER', 'SHIMS'], - platform: 'node' - }, - { - input: 'src/shims.js', - output: { - file: 'files/shims.js', - format: 'esm' - }, - plugins: [clearOutput('files/shims.js'), prefixBuiltinModules()], + external: ['ENV', 'MANIFEST', 'SERVER'], platform: 'node' } ]; diff --git a/packages/adapter-node/src/handler.js b/packages/adapter-node/src/handler.js index b8fd2f38cbe5..72e5a105a73b 100644 --- a/packages/adapter-node/src/handler.js +++ b/packages/adapter-node/src/handler.js @@ -1,4 +1,3 @@ -import 'SHIMS'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; diff --git a/packages/adapter-node/src/shims.js b/packages/adapter-node/src/shims.js deleted file mode 100644 index 2490311daa1e..000000000000 --- a/packages/adapter-node/src/shims.js +++ /dev/null @@ -1,2 +0,0 @@ -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; -installPolyfills(); diff --git a/packages/kit/package.json b/packages/kit/package.json index c7b871f19160..457b8a990bbb 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -112,10 +112,6 @@ "types": "./types/index.d.ts", "import": "./src/exports/node/index.js" }, - "./node/polyfills": { - "types": "./types/index.d.ts", - "import": "./src/exports/node/polyfills.js" - }, "./hooks": { "types": "./types/index.d.ts", "import": "./src/exports/hooks/index.js" diff --git a/packages/kit/scripts/generate-dts.js b/packages/kit/scripts/generate-dts.js index b470d6d63494..60c7fe7d103f 100644 --- a/packages/kit/scripts/generate-dts.js +++ b/packages/kit/scripts/generate-dts.js @@ -7,7 +7,6 @@ await createBundle({ '@sveltejs/kit': 'src/exports/public.d.ts', '@sveltejs/kit/hooks': 'src/exports/hooks/index.js', '@sveltejs/kit/node': 'src/exports/node/index.js', - '@sveltejs/kit/node/polyfills': 'src/exports/node/polyfills.js', '@sveltejs/kit/vite': 'src/exports/vite/index.js', '$app/environment': 'src/runtime/app/environment/types.d.ts', '$app/forms': 'src/runtime/app/forms.js', diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index aa99609e6a04..76936b253e24 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -4,7 +4,6 @@ import { pathToFileURL } from 'node:url'; import { validate_server_exports } from '../../utils/exports.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { ENDPOINT_METHODS } from '../../constants.js'; import { filter_env } from '../../utils/env.js'; import { has_server_load, resolve_route } from '../../utils/routing.js'; @@ -50,8 +49,6 @@ async function analyse({ /** @type {import('types').ServerInternalModule} */ const internal = await import(pathToFileURL(`${server_root}/server/internal.js`).href); - installPolyfills(); - // configure `import { building } from '$app/environment'` — // essential we do this before analysing the code internal.set_building(); diff --git a/packages/kit/src/core/postbuild/fallback.js b/packages/kit/src/core/postbuild/fallback.js index 39356887a289..ef0d0530955f 100644 --- a/packages/kit/src/core/postbuild/fallback.js +++ b/packages/kit/src/core/postbuild/fallback.js @@ -1,7 +1,6 @@ import { readFileSync } from 'node:fs'; import { join } from 'node:path'; import { pathToFileURL } from 'node:url'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { load_config } from '../config/index.js'; import { forked } from '../../utils/fork.js'; @@ -17,8 +16,6 @@ async function generate_fallback({ manifest_path, env }) { /** @type {import('types').ValidatedKitConfig} */ const config = (await load_config()).kit; - installPolyfills(); - const server_root = join(config.outDir, 'output'); /** @type {import('types').ServerInternalModule} */ diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 8caa68fdfe85..6acf8e47dff4 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -1,7 +1,6 @@ import { existsSync, readFileSync, statSync, writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { pathToFileURL } from 'node:url'; -import { installPolyfills } from '../../exports/node/polyfills.js'; import { mkdirp, posixify, walk } from '../../utils/filesystem.js'; import { decode_uri, is_root_relative, resolve } from '../../utils/url.js'; import { escape_html } from '../../utils/escape.js'; @@ -124,8 +123,6 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) { /** @type {import('types').Logger} */ const log = logger({ verbose }); - installPolyfills(); - /** @type {Map} */ const saved = new Map(); diff --git a/packages/kit/src/exports/hooks/sequence.spec.js b/packages/kit/src/exports/hooks/sequence.spec.js index e3ccc1cf930e..a6516f445f4a 100644 --- a/packages/kit/src/exports/hooks/sequence.spec.js +++ b/packages/kit/src/exports/hooks/sequence.spec.js @@ -2,7 +2,6 @@ /** @import { RequestState } from 'types' */ import { assert, expect, test, vi } from 'vitest'; import { sequence } from './sequence.js'; -import { installPolyfills } from '../node/polyfills.js'; import { noop_span } from '../../runtime/telemetry/noop.js'; const dummy_event = vi.hoisted( @@ -29,8 +28,6 @@ vi.mock(import('@sveltejs/kit/internal/server'), async (actualPromise) => { }; }); -installPolyfills(); - test('applies handlers in sequence', async () => { /** @type {string[]} */ const order = []; diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index cc116bac0792..7313f237d353 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -7,7 +7,6 @@ import { styleText } from 'node:util'; import sirv from 'sirv'; import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; -import { installPolyfills } from '../../../exports/node/polyfills.js'; import { coalesce_to_error } from '../../../utils/error.js'; import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js'; import { load_error_page } from '../../../core/config/index.js'; @@ -32,8 +31,6 @@ const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; * @return {Promise void>>} */ export async function dev(vite, vite_config, svelte_config, get_remotes) { - installPolyfills(); - const async_local_storage = new AsyncLocalStorage(); globalThis.__SVELTEKIT_TRACK__ = (label) => { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 02a89e9e6dd4..54c856418d63 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -5,7 +5,6 @@ import { lookup } from 'mrmime'; import sirv from 'sirv'; import { loadEnv, normalizePath } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; -import { installPolyfills } from '../../../exports/node/polyfills.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; import { not_found } from '../utils.js'; @@ -19,8 +18,6 @@ import { not_found } from '../utils.js'; * @param {import('types').ValidatedConfig} svelte_config */ export async function preview(vite, vite_config, svelte_config) { - installPolyfills(); - const { paths } = svelte_config.kit; const base = paths.base; const assets = paths.assets ? SVELTE_KIT_ASSETS : paths.base; diff --git a/packages/kit/src/runtime/server/cookie.spec.js b/packages/kit/src/runtime/server/cookie.spec.js index 658697aebac5..efcb8c531458 100644 --- a/packages/kit/src/runtime/server/cookie.spec.js +++ b/packages/kit/src/runtime/server/cookie.spec.js @@ -1,9 +1,6 @@ import process from 'node:process'; import { assert, expect, test, describe } from 'vitest'; import { domain_matches, path_matches, get_cookies } from './cookie.js'; -import { installPolyfills } from '@sveltejs/kit/node/polyfills'; - -installPolyfills(); const domains = { positive: [ diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index f94a6a9ec71c..952ee7b30d3f 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -11,7 +11,6 @@ "paths": { "@sveltejs/kit": ["./src/exports/public.d.ts"], "@sveltejs/kit/node": ["./src/exports/node/index.js"], - "@sveltejs/kit/node/polyfills": ["./src/exports/node/polyfills.js"], "@sveltejs/kit/internal": ["./src/exports/internal/index.js"], "@sveltejs/kit/internal/server": ["./src/exports/internal/server.js"], "$app/paths": ["./src/runtime/app/paths/public.d.ts"], diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index e9fcea6e04f4..0815489c9c08 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2878,17 +2878,6 @@ declare module '@sveltejs/kit/node' { export {}; } -declare module '@sveltejs/kit/node/polyfills' { - /** - * Make various web APIs available as globals: - * - `crypto` - * - `File` - */ - export function installPolyfills(): void; - - export {}; -} - declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. From c4e70eb01c5297fd58c62ee7e19deeb9b46b1390 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 27 Feb 2026 01:59:11 +0800 Subject: [PATCH 31/72] chore: migrate from esbuild to rolldown (#15432) closes #15424 closes https://github.com/sveltejs/kit/issues/13609 This PR switches the Vercel and Netlify adapters to use rolldown instead of esbuild It also updates the build targets from es2020 to es2022 to support top-level await I _also_ made the Vercel adapter run the test app build after the unit tests just because it's a quick and cheap way to verify the build runs if we don't run platform tests. --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/clean-papers-give.md | 6 + .changeset/polite-lemons-refuse.md | 6 + package.json | 1 - packages/adapter-cloudflare/package.json | 4 +- .../adapter-cloudflare/rolldown.config.js | 10 + packages/adapter-cloudflare/tsconfig.json | 1 + packages/adapter-netlify/index.js | 66 +- packages/adapter-netlify/package.json | 3 +- packages/adapter-node/package.json | 2 +- packages/adapter-vercel/index.js | 138 ++--- packages/adapter-vercel/package.json | 6 +- packages/enhanced-img/package.json | 2 +- packages/kit/package.json | 2 +- pnpm-lock.yaml | 574 ++++++------------ pnpm-workspace.yaml | 1 + renovate.json | 1 - 16 files changed, 303 insertions(+), 520 deletions(-) create mode 100644 .changeset/clean-papers-give.md create mode 100644 .changeset/polite-lemons-refuse.md create mode 100644 packages/adapter-cloudflare/rolldown.config.js diff --git a/.changeset/clean-papers-give.md b/.changeset/clean-papers-give.md new file mode 100644 index 000000000000..44d488dfee8f --- /dev/null +++ b/.changeset/clean-papers-give.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/adapter-netlify': major +'@sveltejs/adapter-vercel': major +--- + +chore: use `rolldown` for edge function bundling diff --git a/.changeset/polite-lemons-refuse.md b/.changeset/polite-lemons-refuse.md new file mode 100644 index 000000000000..053810bb3e1d --- /dev/null +++ b/.changeset/polite-lemons-refuse.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/adapter-netlify': major +'@sveltejs/adapter-vercel': major +--- + +breaking: edge function build target is now `es2022` diff --git a/package.json b/package.json index 07eca2a3f0c0..537d642b472c 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,6 @@ "pnpm": { "onlyBuiltDependencies": [ "@parcel/watcher", - "esbuild", "protobufjs", "rolldown", "sharp", diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 8133bcdec436..f7fd0ff8fda8 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -34,7 +34,7 @@ "ambient.d.ts" ], "scripts": { - "build": "esbuild src/worker.js --bundle --outfile=files/worker.js --external:SERVER --external:MANIFEST --external:cloudflare:workers --format=esm", + "build": "rolldown -c", "lint": "prettier --check .", "format": "pnpm lint --write", "check": "tsc --skipLibCheck", @@ -51,7 +51,7 @@ "@playwright/test": "catalog:", "@sveltejs/kit": "workspace:^", "@types/node": "catalog:", - "esbuild": "catalog:", + "rolldown": "catalog:", "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" diff --git a/packages/adapter-cloudflare/rolldown.config.js b/packages/adapter-cloudflare/rolldown.config.js new file mode 100644 index 000000000000..89e1458358b4 --- /dev/null +++ b/packages/adapter-cloudflare/rolldown.config.js @@ -0,0 +1,10 @@ +import { defineConfig } from 'rolldown'; + +export default defineConfig({ + input: 'src/worker.js', + output: { + file: 'files/worker.js' + }, + external: ['SERVER', 'MANIFEST', 'cloudflare:workers'], + platform: 'browser' +}); diff --git a/packages/adapter-cloudflare/tsconfig.json b/packages/adapter-cloudflare/tsconfig.json index 14cf70a313f9..6b387d40f5f3 100644 --- a/packages/adapter-cloudflare/tsconfig.json +++ b/packages/adapter-cloudflare/tsconfig.json @@ -19,6 +19,7 @@ "index.js", "utils.js", "utils.spec.js", + "rolldown.config.js", "test/utils.js", "internal.d.ts", "src/worker.js" diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 627c64a5a8f4..2dce87fa0e71 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -1,11 +1,10 @@ -/** @import { BuildOptions } from 'esbuild' */ import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs'; import { join, posix } from 'node:path'; import { fileURLToPath } from 'node:url'; import { builtinModules } from 'node:module'; import process from 'node:process'; -import esbuild from 'esbuild'; import toml from '@iarna/toml'; +import { build } from 'rolldown'; import { matches, get_publish_directory, s } from './utils.js'; /** @@ -329,6 +328,24 @@ ${config}`; }; } +/** @satisfies {import('rolldown').BuildOptions} */ +const rolldown_config = { + platform: 'browser', + output: { + sourcemap: true, + codeSplitting: false + }, + transform: { + target: 'es2022' + }, + // Node built-ins are allowed, but must be prefixed with `node:` + // https://docs.netlify.com/edge-functions/api/#runtime-environment + external: builtinModules.map((id) => `node:${id}`), + resolve: { + alias: Object.fromEntries(builtinModules.map((id) => [id, `node:${id}`])) + } +}; + /** * @param { object } params * @param {import('@sveltejs/kit').Builder} params.builder @@ -383,40 +400,23 @@ async function generate_edge_functions({ builder }) { '/.netlify/*' ]; - /** @type {BuildOptions} */ - const esbuild_config = { - bundle: true, - format: 'esm', - platform: 'browser', - sourcemap: 'linked', - target: 'es2020', - loader: { - '.wasm': 'copy', - '.woff': 'copy', - '.woff2': 'copy', - '.ttf': 'copy', - '.eot': 'copy', - '.otf': 'copy' - }, - // Node built-ins are allowed, but must be prefixed with `node:` - // https://docs.netlify.com/edge-functions/api/#runtime-environment - external: builtinModules.map((id) => `node:${id}`), - alias: Object.fromEntries(builtinModules.map((id) => [id, `node:${id}`])) - }; - await Promise.all([ - esbuild.build({ - entryPoints: [`${tmp}/entry.js`], - outfile: `${netlify_framework_edge_path}/${FUNCTION_PREFIX}render.js`, - ...esbuild_config + build({ + ...rolldown_config, + input: `${tmp}/entry.js`, + output: { + ...rolldown_config.output, + file: `${netlify_framework_edge_path}/${FUNCTION_PREFIX}render.js` + } }), builder.hasServerInstrumentationFile() && - esbuild.build({ - entryPoints: [ - `${builder.getServerDirectory()}/${FUNCTION_PREFIX}instrumentation.server.js` - ], - outfile: `${netlify_framework_edge_path}/${FUNCTION_PREFIX}instrumentation.server.js`, - ...esbuild_config + build({ + ...rolldown_config, + input: `${builder.getServerDirectory()}/instrumentation.server.js`, + output: { + ...rolldown_config.output, + file: `${netlify_framework_edge_path}/${FUNCTION_PREFIX}instrumentation.server.js` + } }) ]); diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 2ff69f788cb3..b5329e0a425d 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "esbuild": "^0.25.4" + "rolldown": "^1.0.0-rc.6" }, "devDependencies": { "@netlify/dev": "catalog:", @@ -56,7 +56,6 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", - "rolldown": "^1.0.0-rc.5", "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 2c7bfc788423..3aa58f2999a2 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -53,7 +53,7 @@ "vitest": "catalog:" }, "dependencies": { - "rolldown": "^1.0.0-rc.5" + "rolldown": "^1.0.0-rc.6" }, "peerDependencies": { "@sveltejs/kit": "^2.4.0" diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index d6213e554d4b..6ba0e2f8945f 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -1,12 +1,11 @@ -/** @import { BuildOptions } from 'esbuild' */ import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; import { fileURLToPath } from 'node:url'; +import { VERSION } from '@sveltejs/kit'; import { nodeFileTrace } from '@vercel/nft'; -import esbuild from 'esbuild'; +import { build } from 'rolldown'; import { get_pathname, parse_isr_expiration, pattern_to_src, resolve_runtime } from './utils.js'; -import { VERSION } from '@sveltejs/kit'; /** * @template T @@ -27,6 +26,33 @@ const [kit_major, kit_minor] = VERSION.split('.'); // https://vercel.com/docs/functions/edge-functions/edge-runtime#compatible-node.js-modules const compatible_node_modules = ['async_hooks', 'events', 'buffer', 'assert', 'util']; +/** @satisfies {import('rolldown').BuildOptions} */ +const rolldown_config = { + platform: 'browser', + resolve: { + conditionNames: [ + // Vercel's Edge runtime key https://runtime-keys.proposal.wintercg.org/#edge-light + 'edge-light', + // re-include these since they are included by default when no conditions are specified + 'import', + 'browser', + 'default' + ] + }, + external: [...compatible_node_modules, ...compatible_node_modules.map((id) => `node:${id}`)], + transform: { + // minimum Node.js version supported is v14.6.0 that is mapped to ES2019 + // https://edge-runtime.vercel.app/features/polyfills + // TODO verify the latest ES version the edge runtime supports + target: 'es2022' + }, + output: { + sourcemap: true, + banner: () => 'globalThis.global = globalThis;', + codeSplitting: false + } +}; + /** @type {import('./index.js').default} **/ const plugin = function (defaults = {}) { if ('edge' in defaults) { @@ -139,52 +165,33 @@ const plugin = function (defaults = {}) { try { const outdir = `${dirs.functions}/${name}.func`; - /** @type {BuildOptions} */ - const esbuild_config = { - // minimum Node.js version supported is v14.6.0 that is mapped to ES2019 - // https://edge-runtime.vercel.app/features/polyfills - // TODO verify the latest ES version the edge runtime supports - target: 'es2020', - bundle: true, - platform: 'browser', - conditions: [ - // Vercel's Edge runtime key https://runtime-keys.proposal.wintercg.org/#edge-light - 'edge-light', - // re-include these since they are included by default when no conditions are specified - // https://esbuild.github.io/api/#conditions - 'module' - ], - format: 'esm', - external: [ - ...compatible_node_modules, - ...compatible_node_modules.map((id) => `node:${id}`), - ...(config.external || []) - ], - sourcemap: 'linked', - banner: { js: 'globalThis.global = globalThis;' }, - loader: { - '.wasm': 'copy', - '.woff': 'copy', - '.woff2': 'copy', - '.ttf': 'copy', - '.eot': 'copy', - '.otf': 'copy' - } + + const build_config = { + ...rolldown_config, + external: [...rolldown_config.external, ...(config.external || [])] }; - const result = await esbuild.build({ - entryPoints: [`${tmp}/edge.js`], - outfile: `${outdir}/index.js`, - ...esbuild_config - }); - let instrumentation_result; - if (builder.hasServerInstrumentationFile?.()) { - instrumentation_result = await esbuild.build({ - entryPoints: [`${builder.getServerDirectory()}/instrumentation.server.js`], - outfile: `${outdir}/instrumentation.server.js`, - ...esbuild_config - }); + await Promise.all([ + build({ + ...build_config, + input: `${tmp}/edge.js`, + output: { + ...build_config.output, + file: `${outdir}/index.js` + } + }), + builder.hasServerInstrumentationFile?.() && + build({ + ...build_config, + input: `${builder.getServerDirectory()}/instrumentation.server.js`, + output: { + ...build_config.output, + file: `${outdir}/instrumentation.server.js` + } + }) + ]); + if (builder.hasServerInstrumentationFile?.()) { builder.instrument?.({ entrypoint: `${outdir}/index.js`, instrumentation: `${outdir}/instrumentation.server.js`, @@ -193,45 +200,10 @@ const plugin = function (defaults = {}) { } }); } - - const warnings = instrumentation_result - ? [...result.warnings, ...instrumentation_result.warnings] - : result.warnings; - - if (warnings.length > 0) { - const formatted = await esbuild.formatMessages(warnings, { - kind: 'warning', - color: true - }); - - console.error(formatted.join('\n')); - } } catch (err) { - const error = /** @type {import('esbuild').BuildFailure} */ (err); - for (const e of error.errors) { - for (const node of e.notes) { - const match = - /The package "(.+)" wasn't found on the file system but is built into node/.exec( - node.text - ); - - if (match) { - node.text = `Cannot use "${match[1]}" when deploying to Vercel Edge Functions.`; - } - } - } - - const formatted = await esbuild.formatMessages(error.errors, { - kind: 'error', - color: true - }); - - console.error(formatted.join('\n')); - throw new Error( - `Bundling with esbuild failed with ${error.errors.length} ${ - error.errors.length === 1 ? 'error' : 'errors' - }`, + 'Bundling edge function with Rolldown failed' + + (err instanceof Error ? `: ${err.message}` : ''), { cause: err } ); } diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 770d85b93d39..d9a485d44c33 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -37,11 +37,13 @@ "lint": "prettier --check .", "format": "pnpm lint --write", "check": "tsc", - "test": "vitest run" + "test:unit": "vitest run", + "test:build": "cd test/apps/basic && pnpm build", + "test": "pnpm test:unit && pnpm test:build" }, "dependencies": { "@vercel/nft": "^1.3.2", - "esbuild": "^0.25.4" + "rolldown": "^1.0.0-rc.6" }, "devDependencies": { "@sveltejs/kit": "workspace:^", diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index e1625c5c976d..9d2ad76e82e3 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -48,7 +48,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "@types/estree": "catalog:", "@types/node": "catalog:", - "rolldown": "^1.0.0-rc.5", + "rolldown": "catalog:", "svelte": "catalog:", "typescript": "catalog:", "vite": "catalog:", diff --git a/packages/kit/package.json b/packages/kit/package.json index 457b8a990bbb..7f1fdcc281ce 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -35,7 +35,7 @@ "@types/connect": "catalog:", "@types/node": "catalog:", "dts-buddy": "catalog:", - "rolldown": "^1.0.0-rc.5", + "rolldown": "catalog:", "svelte": "catalog:", "svelte-preprocess": "catalog:", "typescript": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b5f039da75a5..e105397185aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,9 +63,6 @@ catalogs: dts-buddy: specifier: ^0.7.0 version: 0.7.0 - esbuild: - specifier: ^0.25.4 - version: 0.25.12 eslint: specifier: ^10.0.0 version: 10.0.0 @@ -75,6 +72,9 @@ catalogs: publint: specifier: ^0.3.0 version: 0.3.0 + rolldown: + specifier: ^1.0.0-rc.6 + version: 1.0.0-rc.6 sirv-cli: specifier: ^3.0.0 version: 3.0.0 @@ -171,18 +171,18 @@ importers: '@types/node': specifier: 'catalog:' version: 24.10.13 - esbuild: + rolldown: specifier: 'catalog:' - version: 0.25.12 + version: 1.0.0-rc.6 typescript: specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-cloudflare/test/apps/pages: devDependencies: @@ -231,9 +231,9 @@ importers: '@iarna/toml': specifier: ^2.2.5 version: 2.2.5 - esbuild: - specifier: ^0.25.4 - version: 0.25.12 + rolldown: + specifier: ^1.0.0-rc.6 + version: 1.0.0-rc.6 devDependencies: '@netlify/dev': specifier: 'catalog:' @@ -255,22 +255,19 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 7.0.0(svelte@5.53.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + version: 7.0.0(svelte@5.53.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 - rolldown: - specifier: ^1.0.0-rc.5 - version: 1.0.0-rc.5 typescript: specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-netlify/test/apps/basic: devDependencies: @@ -335,8 +332,8 @@ importers: packages/adapter-node: dependencies: rolldown: - specifier: ^1.0.0-rc.5 - version: 1.0.0-rc.5 + specifier: ^1.0.0-rc.6 + version: 1.0.0-rc.6 devDependencies: '@polka/url': specifier: 'catalog:' @@ -434,16 +431,16 @@ importers: '@vercel/nft': specifier: ^1.3.2 version: 1.3.2(rollup@4.57.1) - esbuild: - specifier: ^0.25.4 - version: 0.25.12 + rolldown: + specifier: ^1.0.0-rc.6 + version: 1.0.0-rc.6 devDependencies: '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 7.0.0(svelte@5.53.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + version: 7.0.0(svelte@5.53.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) '@types/node': specifier: 'catalog:' version: 24.10.13 @@ -452,10 +449,10 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) + version: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) vitest: specifier: 'catalog:' - version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-vercel/test/apps/basic: devDependencies: @@ -512,8 +509,8 @@ importers: specifier: 'catalog:' version: 24.10.13 rolldown: - specifier: ^1.0.0-rc.5 - version: 1.0.0-rc.5 + specifier: 'catalog:' + version: 1.0.0-rc.6 svelte: specifier: 'catalog:' version: 5.53.5 @@ -594,8 +591,8 @@ importers: specifier: 'catalog:' version: 0.7.0(typescript@5.9.3) rolldown: - specifier: ^1.0.0-rc.5 - version: 1.0.0-rc.5 + specifier: 'catalog:' + version: 1.0.0-rc.6 svelte: specifier: 'catalog:' version: 5.53.5 @@ -1613,12 +1610,6 @@ packages: resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} engines: {node: '>=18.0.0'} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} @@ -1631,12 +1622,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.2': resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} @@ -1649,12 +1634,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.2': resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} @@ -1667,12 +1646,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.2': resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} @@ -1685,12 +1658,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.2': resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} @@ -1703,12 +1670,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.2': resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} @@ -1721,12 +1682,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.2': resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} @@ -1739,12 +1694,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} @@ -1757,12 +1706,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.2': resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} @@ -1775,12 +1718,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.2': resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} @@ -1793,12 +1730,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.2': resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} @@ -1811,12 +1742,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.2': resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} @@ -1829,12 +1754,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.2': resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} @@ -1847,12 +1766,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.2': resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} @@ -1865,12 +1778,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.2': resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} @@ -1883,12 +1790,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.2': resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} @@ -1901,12 +1802,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.2': resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} @@ -1919,12 +1814,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.2': resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} @@ -1937,12 +1826,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} @@ -1955,12 +1838,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.2': resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} @@ -1973,12 +1850,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} @@ -1991,12 +1862,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.27.2': resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} @@ -2009,12 +1874,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.2': resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} @@ -2027,12 +1886,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.2': resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} @@ -2045,12 +1898,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.2': resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} @@ -2063,12 +1910,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.2': resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} @@ -2742,6 +2583,9 @@ packages: '@oxc-project/types@0.114.0': resolution: {integrity: sha512-//nBfbzHQHvJs8oFIjv6coZ6uxQ4alLfiPe6D5vit6c4pmxATHHlVwgB1k+Hv4yoAMyncdxgRBF5K4BYWUCzvA==} + '@oxc-project/types@0.115.0': + resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -2897,30 +2741,60 @@ packages: cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.0.0-rc.6': + resolution: {integrity: sha512-kvjTSWGcrv+BaR2vge57rsKiYdVR8V8CoS0vgKrc570qRBfty4bT+1X0z3j2TaVV+kAYzA0PjeB9+mdZyqUZlg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.0.0-rc.5': resolution: {integrity: sha512-ZP9xb9lPAex36pvkNWCjSEJW/Gfdm9I3ssiqOFLmpZ/vosPXgpoGxCmh+dX1Qs+/bWQE6toNFXWWL8vYoKoK9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.0.0-rc.6': + resolution: {integrity: sha512-+tJhD21KvGNtUrpLXrZQlT+j5HZKiEwR2qtcZb3vNOUpvoT9QjEykr75ZW/Kr0W89gose/HVXU6351uVZD8Qvw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.5': resolution: {integrity: sha512-7IdrPunf6dp9mywMgTOKMMGDnMHQ6+h5gRl6LW8rhD8WK2kXX0IwzcM5Zc0B5J7xQs8QWOlKjv8BJsU/1CD3pg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.6': + resolution: {integrity: sha512-DKNhjMk38FAWaHwUt1dFR3rA/qRAvn2NUvSG2UGvxvlMxSmN/qqww/j4ABAbXhNRXtGQNmrAINMXRuwHl16ZHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.0.0-rc.5': resolution: {integrity: sha512-o/JCk+dL0IN68EBhZ4DqfsfvxPfMeoM6cJtxORC1YYoxGHZyth2Kb2maXDb4oddw2wu8iIbnYXYPEzBtAF5CAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.0.0-rc.6': + resolution: {integrity: sha512-8TThsRkCPAnfyMBShxrGdtoOE6h36QepqRQI97iFaQSCRbHFWHcDHppcojZnzXoruuhPnjMEygzaykvPVJsMRg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.5': resolution: {integrity: sha512-IIBwTtA6VwxQLcEgq2mfrUgam7VvPZjhd/jxmeS1npM+edWsrrpRLHUdze+sk4rhb8/xpP3flemgcZXXUW6ukw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.6': + resolution: {integrity: sha512-ZfmFoOwPUZCWtGOVC9/qbQzfc0249FrRUOzV2XabSMUV60Crp211OWLQN1zmQAsRIVWRcEwhJ46Z1mXGo/L/nQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.5': resolution: {integrity: sha512-KSol1De1spMZL+Xg7K5IBWXIvRWv7+pveaxFWXpezezAG7CS6ojzRjtCGCiLxQricutTAi/LkNWKMsd2wNhMKQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2928,6 +2802,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.6': + resolution: {integrity: sha512-ZsGzbNETxPodGlLTYHaCSGVhNN/rvkMDCJYHdT7PZr5jFJRmBfmDi2awhF64Dt2vxrJqY6VeeYSgOzEbHRsb7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.5': resolution: {integrity: sha512-WFljyDkxtXRlWxMjxeegf7xMYXxUr8u7JdXlOEWKYgDqEgxUnSEsVDxBiNWQ1D5kQKwf8Wo4sVKEYPRhCdsjwA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2935,6 +2816,13 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.6': + resolution: {integrity: sha512-elPpdevtCdUOqziemR86C4CSCr/5sUxalzDrf/CJdMT+kZt2C556as++qHikNOz0vuFf52h+GJNXZM08eWgGPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.5': resolution: {integrity: sha512-CUlplTujmbDWp2gamvrqVKi2Or8lmngXT1WxsizJfts7JrvfGhZObciaY/+CbdbS9qNnskvwMZNEhTPrn7b+WA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2942,6 +2830,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.6': + resolution: {integrity: sha512-IBwXsf56o3xhzAyaZxdM1CX8UFiBEUFCjiVUgny67Q8vPIqkjzJj0YKhd3TbBHanuxThgBa59f6Pgutg2OGk5A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.5': resolution: {integrity: sha512-wdf7g9NbVZCeAo2iGhsjJb7I8ZFfs6X8bumfrWg82VK+8P6AlLXwk48a1ASiJQDTS7Svq2xVzZg3sGO2aXpHRA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2949,32 +2844,65 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.6': + resolution: {integrity: sha512-vOk7G8V9Zm+8a6PL6JTpCea61q491oYlGtO6CvnsbhNLlKdf0bbCPytFzGQhYmCKZDKkEbmnkcIprTEGCURnwg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.5': resolution: {integrity: sha512-0CWY7ubu12nhzz+tkpHjoG3IRSTlWYe0wrfJRf4qqjqQSGtAYgoL9kwzdvlhaFdZ5ffVeyYw9qLsChcjUMEloQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.6': + resolution: {integrity: sha512-ASjEDI4MRv7XCQb2JVaBzfEYO98JKCGrAgoW6M03fJzH/ilCnC43Mb3ptB9q/lzsaahoJyIBoAGKAYEjUvpyvQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.5': resolution: {integrity: sha512-LztXnGzv6t2u830mnZrFLRVqT/DPJ9DL4ZTz/y93rqUVkeHjMMYIYaFj+BUthiYxbVH9dH0SZYufETspKY/NhA==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.6': + resolution: {integrity: sha512-mYa1+h2l6Zc0LvmwUh0oXKKYihnw/1WC73vTqw+IgtfEtv47A+rWzzcWwVDkW73+UDr0d/Ie/HRXoaOY22pQDw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.5': resolution: {integrity: sha512-jUct1XVeGtyjqJXEAfvdFa8xoigYZ2rge7nYEm70ppQxpfH9ze2fbIrpHmP2tNM2vL/F6Dd0CpXhpjPbC6bSxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.6': + resolution: {integrity: sha512-e2ABskbNH3MRUBMjgxaMjYIw11DSwjLJxBII3UgpF6WClGLIh8A20kamc+FKH5vIaFVnYQInmcLYSUVpqMPLow==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.5': resolution: {integrity: sha512-VQ8F9ld5gw29epjnVGdrx8ugiLTe8BMqmhDYy7nGbdeDo4HAt4bgdZvLbViEhg7DZyHLpiEUlO5/jPSUrIuxRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.6': + resolution: {integrity: sha512-dJVc3ifhaRXxIEh1xowLohzFrlQXkJ66LepHm+CmSprTWgVrPa8Fx3OL57xwIqDEH9hufcKkDX2v65rS3NZyRA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-rc.5': resolution: {integrity: sha512-RxlLX/DPoarZ9PtxVrQgZhPoor987YtKQqCo5zkjX+0S0yLJ7Vv515Wk6+xtTL67VONKJKxETWZwuZjss2idYw==} + '@rolldown/pluginutils@1.0.0-rc.6': + resolution: {integrity: sha512-Y0+JT8Mi1mmW08K6HieG315XNRu4L0rkfCpA364HtytjgiqYnMYRdFPcxRl+BQQqNXzecL2S9nii+RUpO93XIA==} + '@rollup/pluginutils@5.1.3': resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} @@ -3897,11 +3825,6 @@ packages: es-module-lexer@2.0.0: resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.2: resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} @@ -5236,6 +5159,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.0.0-rc.6: + resolution: {integrity: sha512-B8vFPV1ADyegoYfhg+E7RAucYKv0xdVlwYYsIJgfPNeiSxZGWNxts9RqhyGzC11ULK/VaeXyKezGCwpMiH8Ktw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.57.1: resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -6225,234 +6153,156 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 - '@esbuild/aix-ppc64@0.25.12': - optional: true - '@esbuild/aix-ppc64@0.27.2': optional: true '@esbuild/aix-ppc64@0.27.3': optional: true - '@esbuild/android-arm64@0.25.12': - optional: true - '@esbuild/android-arm64@0.27.2': optional: true '@esbuild/android-arm64@0.27.3': optional: true - '@esbuild/android-arm@0.25.12': - optional: true - '@esbuild/android-arm@0.27.2': optional: true '@esbuild/android-arm@0.27.3': optional: true - '@esbuild/android-x64@0.25.12': - optional: true - '@esbuild/android-x64@0.27.2': optional: true '@esbuild/android-x64@0.27.3': optional: true - '@esbuild/darwin-arm64@0.25.12': - optional: true - '@esbuild/darwin-arm64@0.27.2': optional: true '@esbuild/darwin-arm64@0.27.3': optional: true - '@esbuild/darwin-x64@0.25.12': - optional: true - '@esbuild/darwin-x64@0.27.2': optional: true '@esbuild/darwin-x64@0.27.3': optional: true - '@esbuild/freebsd-arm64@0.25.12': - optional: true - '@esbuild/freebsd-arm64@0.27.2': optional: true '@esbuild/freebsd-arm64@0.27.3': optional: true - '@esbuild/freebsd-x64@0.25.12': - optional: true - '@esbuild/freebsd-x64@0.27.2': optional: true '@esbuild/freebsd-x64@0.27.3': optional: true - '@esbuild/linux-arm64@0.25.12': - optional: true - '@esbuild/linux-arm64@0.27.2': optional: true '@esbuild/linux-arm64@0.27.3': optional: true - '@esbuild/linux-arm@0.25.12': - optional: true - '@esbuild/linux-arm@0.27.2': optional: true '@esbuild/linux-arm@0.27.3': optional: true - '@esbuild/linux-ia32@0.25.12': - optional: true - '@esbuild/linux-ia32@0.27.2': optional: true '@esbuild/linux-ia32@0.27.3': optional: true - '@esbuild/linux-loong64@0.25.12': - optional: true - '@esbuild/linux-loong64@0.27.2': optional: true '@esbuild/linux-loong64@0.27.3': optional: true - '@esbuild/linux-mips64el@0.25.12': - optional: true - '@esbuild/linux-mips64el@0.27.2': optional: true '@esbuild/linux-mips64el@0.27.3': optional: true - '@esbuild/linux-ppc64@0.25.12': - optional: true - '@esbuild/linux-ppc64@0.27.2': optional: true '@esbuild/linux-ppc64@0.27.3': optional: true - '@esbuild/linux-riscv64@0.25.12': - optional: true - '@esbuild/linux-riscv64@0.27.2': optional: true '@esbuild/linux-riscv64@0.27.3': optional: true - '@esbuild/linux-s390x@0.25.12': - optional: true - '@esbuild/linux-s390x@0.27.2': optional: true '@esbuild/linux-s390x@0.27.3': optional: true - '@esbuild/linux-x64@0.25.12': - optional: true - '@esbuild/linux-x64@0.27.2': optional: true '@esbuild/linux-x64@0.27.3': optional: true - '@esbuild/netbsd-arm64@0.25.12': - optional: true - '@esbuild/netbsd-arm64@0.27.2': optional: true '@esbuild/netbsd-arm64@0.27.3': optional: true - '@esbuild/netbsd-x64@0.25.12': - optional: true - '@esbuild/netbsd-x64@0.27.2': optional: true '@esbuild/netbsd-x64@0.27.3': optional: true - '@esbuild/openbsd-arm64@0.25.12': - optional: true - '@esbuild/openbsd-arm64@0.27.2': optional: true '@esbuild/openbsd-arm64@0.27.3': optional: true - '@esbuild/openbsd-x64@0.25.12': - optional: true - '@esbuild/openbsd-x64@0.27.2': optional: true '@esbuild/openbsd-x64@0.27.3': optional: true - '@esbuild/openharmony-arm64@0.25.12': - optional: true - '@esbuild/openharmony-arm64@0.27.2': optional: true '@esbuild/openharmony-arm64@0.27.3': optional: true - '@esbuild/sunos-x64@0.25.12': - optional: true - '@esbuild/sunos-x64@0.27.2': optional: true '@esbuild/sunos-x64@0.27.3': optional: true - '@esbuild/win32-arm64@0.25.12': - optional: true - '@esbuild/win32-arm64@0.27.2': optional: true '@esbuild/win32-arm64@0.27.3': optional: true - '@esbuild/win32-ia32@0.25.12': - optional: true - '@esbuild/win32-ia32@0.27.2': optional: true '@esbuild/win32-ia32@0.27.3': optional: true - '@esbuild/win32-x64@0.25.12': - optional: true - '@esbuild/win32-x64@0.27.2': optional: true @@ -7320,6 +7170,8 @@ snapshots: '@oxc-project/types@0.114.0': {} + '@oxc-project/types@0.115.0': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -7434,46 +7286,89 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-rc.5': optional: true + '@rolldown/binding-android-arm64@1.0.0-rc.6': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.5': optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.6': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.5': optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.6': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.5': optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.6': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.5': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.6': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.5': optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.6': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.5': optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.6': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.5': optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.6': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.5': optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.6': + optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.5': optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.6': + optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.5': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.6': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.5': optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.6': + optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.5': optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.6': + optional: true + '@rolldown/pluginutils@1.0.0-rc.5': {} + '@rolldown/pluginutils@1.0.0-rc.6': {} + '@rollup/pluginutils@5.1.3(rollup@4.57.1)': dependencies: '@types/estree': 1.0.8 @@ -7587,15 +7482,6 @@ snapshots: typescript: 5.9.3 typescript-eslint: 8.56.0(eslint@10.0.0(jiti@2.4.2))(typescript@5.9.3) - '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))': - dependencies: - deepmerge: 4.3.1 - magic-string: 0.30.21 - obug: 2.1.1 - svelte: 5.53.5 - vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) - vitefu: 1.1.2(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) - '@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.53.5)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))': dependencies: deepmerge: 4.3.1 @@ -7800,20 +7686,6 @@ snapshots: - rollup - supports-color - '@vitest/browser-playwright@4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': - dependencies: - '@vitest/browser': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) - '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) - playwright: 1.58.2 - tinyrainbow: 3.0.3 - vitest: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - '@vitest/browser-playwright@4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': dependencies: '@vitest/browser': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) @@ -7827,24 +7699,6 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': - dependencies: - '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) - '@vitest/utils': 4.1.0-beta.4 - magic-string: 0.30.21 - pixelmatch: 7.1.0 - pngjs: 7.0.0 - sirv: 3.0.2 - tinyrainbow: 3.0.3 - vitest: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) - ws: 8.19.0 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - '@vitest/browser@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4)': dependencies: '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) @@ -7871,14 +7725,6 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))': - dependencies: - '@vitest/spy': 4.1.0-beta.4 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) - '@vitest/mocker@4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0))': dependencies: '@vitest/spy': 4.1.0-beta.4 @@ -8460,35 +8306,6 @@ snapshots: es-module-lexer@2.0.0: {} - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.2: optionalDependencies: '@esbuild/aix-ppc64': 0.27.2 @@ -9872,6 +9689,25 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.5 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.5 + rolldown@1.0.0-rc.6: + dependencies: + '@oxc-project/types': 0.115.0 + '@rolldown/pluginutils': 1.0.0-rc.6 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.6 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.6 + '@rolldown/binding-darwin-x64': 1.0.0-rc.6 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.6 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.6 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.6 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.6 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.6 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.6 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.6 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.6 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.6 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.6 + rollup@4.57.1: dependencies: '@types/estree': 1.0.8 @@ -10351,21 +10187,6 @@ snapshots: transitivePeerDependencies: - rollup - vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0): - dependencies: - '@oxc-project/runtime': 0.114.0 - lightningcss: 1.31.1 - picomatch: 4.0.3 - postcss: 8.5.6 - rolldown: 1.0.0-rc.5 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.10.13 - esbuild: 0.25.12 - fsevents: 2.3.3 - jiti: 2.4.2 - yaml: 2.8.0 - vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0): dependencies: '@oxc-project/runtime': 0.114.0 @@ -10381,43 +10202,10 @@ snapshots: jiti: 2.4.2 yaml: 2.8.0 - vitefu@1.1.2(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)): - optionalDependencies: - vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) - vitefu@1.1.2(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)): optionalDependencies: vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) - vitest@4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)): - dependencies: - '@vitest/expect': 4.1.0-beta.4 - '@vitest/mocker': 4.1.0-beta.4(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0)) - '@vitest/pretty-format': 4.1.0-beta.4 - '@vitest/runner': 4.1.0-beta.4 - '@vitest/snapshot': 4.1.0-beta.4 - '@vitest/spy': 4.1.0-beta.4 - '@vitest/utils': 4.1.0-beta.4 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 - tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.0 - '@types/node': 24.10.13 - '@vitest/browser-playwright': 4.1.0-beta.4(playwright@1.58.2)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.25.12)(jiti@2.4.2)(yaml@2.8.0))(vitest@4.1.0-beta.4) - transitivePeerDependencies: - - msw - vitest@4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)): dependencies: '@vitest/expect': 4.1.0-beta.4 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9bc1c0bdcacf..302e485f7463 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -38,6 +38,7 @@ catalog: eslint: ^10.0.0 polka: ^1.0.0-next.28 publint: ^0.3.0 + rolldown: ^1.0.0-rc.6 semver: ^7.5.4 sirv-cli: ^3.0.0 svelte: ^5.53.5 diff --git a/renovate.json b/renovate.json index b490bdda612b..fcf282536e0f 100644 --- a/renovate.json +++ b/renovate.json @@ -10,7 +10,6 @@ }, "ignoreDeps": [ "@types/node", - "esbuild", "rollup", "typescript" ], From 9d429e01dd01f32b10dc326c87247a264578527e Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 26 Feb 2026 11:55:29 -0800 Subject: [PATCH 32/72] chore: make use of `import.meta.dirname` (#15434) --- .../test/apps/workers/test/test.js | 8 ++-- .../test/apps/basic/test/test.js | 15 +++--- .../test/apps/edge/test/test.js | 10 ++-- .../enhanced-img/test/markup-plugin.spec.js | 2 +- packages/kit/src/core/adapt/builder.spec.js | 13 ++--- packages/kit/src/core/config/index.spec.js | 14 ++---- packages/kit/test/apps/dev-only/test/test.js | 48 ++++++++++++++----- packages/kit/test/apps/options-2/test/test.js | 4 +- packages/kit/test/apps/writes/test/test.js | 6 ++- packages/kit/test/build-errors/env.spec.js | 12 ++--- .../kit/test/build-errors/prerender.spec.js | 7 ++- .../kit/test/build-errors/server-only.spec.js | 8 ++-- .../test/build-errors/syntax-error.spec.js | 3 +- packages/package/test/index.spec.js | 20 ++++---- 14 files changed, 92 insertions(+), 78 deletions(-) diff --git a/packages/adapter-cloudflare/test/apps/workers/test/test.js b/packages/adapter-cloudflare/test/apps/workers/test/test.js index 40072953a16f..44832c70890f 100644 --- a/packages/adapter-cloudflare/test/apps/workers/test/test.js +++ b/packages/adapter-cloudflare/test/apps/workers/test/test.js @@ -1,10 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; -import { fileURLToPath } from 'node:url'; import { expect, test } from '@playwright/test'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - test('worker', async ({ page }) => { await page.goto('/'); await expect(page.locator('h1')).toContainText('Sum: 3'); @@ -16,7 +13,10 @@ test('ctx', async ({ request }) => { }); test('read from $app/server works', async ({ request }) => { - const content = fs.readFileSync(path.resolve(__dirname, '../src/routes/read/file.txt'), 'utf-8'); + const content = fs.readFileSync( + path.resolve(import.meta.dirname, '../src/routes/read/file.txt'), + 'utf-8' + ); const response = await request.get('/read'); expect(await response.text()).toBe(content); }); diff --git a/packages/adapter-netlify/test/apps/basic/test/test.js b/packages/adapter-netlify/test/apps/basic/test/test.js index 89d91598c165..b208dd54a8b7 100644 --- a/packages/adapter-netlify/test/apps/basic/test/test.js +++ b/packages/adapter-netlify/test/apps/basic/test/test.js @@ -1,10 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; -import { fileURLToPath } from 'node:url'; import { expect, test } from '@playwright/test'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - test('page renders', async ({ request }) => { const response = await request.get('/'); expect(response.status()).toBe(200); @@ -18,17 +15,23 @@ test('dynamic route works', async ({ request }) => { }); test('read from $app/server works', async ({ request }) => { - const content = fs.readFileSync(path.resolve(__dirname, '../src/routes/read/file.txt'), 'utf-8'); + const content = fs.readFileSync( + path.resolve(import.meta.dirname, '../src/routes/read/file.txt'), + 'utf-8' + ); const response = await request.get('/read'); expect(await response.text()).toBe(content); }); test('_redirects are copied to publish directory', () => { - const redirects = fs.readFileSync(path.resolve(__dirname, '../build/_redirects'), 'utf-8'); + const redirects = fs.readFileSync( + path.resolve(import.meta.dirname, '../build/_redirects'), + 'utf-8' + ); expect(redirects).toContain('/redirect-me /greeting/redirected 301'); }); test('_headers are copied to publish directory', () => { - const headers = fs.readFileSync(path.resolve(__dirname, '../build/_headers'), 'utf-8'); + const headers = fs.readFileSync(path.resolve(import.meta.dirname, '../build/_headers'), 'utf-8'); expect(headers).toContain('X-Custom-Header: test-value'); }); diff --git a/packages/adapter-netlify/test/apps/edge/test/test.js b/packages/adapter-netlify/test/apps/edge/test/test.js index 8053aaa563a2..11818baa35c5 100644 --- a/packages/adapter-netlify/test/apps/edge/test/test.js +++ b/packages/adapter-netlify/test/apps/edge/test/test.js @@ -1,10 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; -import { fileURLToPath } from 'node:url'; import { expect, test } from '@playwright/test'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - test('page renders', async ({ request }) => { const response = await request.get('/'); expect(response.status()).toBe(200); @@ -18,12 +15,15 @@ test('dynamic route works', async ({ request }) => { }); test('read from $app/server works', async ({ request }) => { - const content = fs.readFileSync(path.resolve(__dirname, '../src/routes/read/file.txt'), 'utf-8'); + const content = fs.readFileSync( + path.resolve(import.meta.dirname, '../src/routes/read/file.txt'), + 'utf-8' + ); const response = await request.get('/read'); expect(await response.text()).toBe(content); }); test('_headers are copied to publish directory', () => { - const headers = fs.readFileSync(path.resolve(__dirname, '../build/_headers'), 'utf-8'); + const headers = fs.readFileSync(path.resolve(import.meta.dirname, '../build/_headers'), 'utf-8'); expect(headers).toContain('X-Custom-Header: test-value'); }); diff --git a/packages/enhanced-img/test/markup-plugin.spec.js b/packages/enhanced-img/test/markup-plugin.spec.js index b6dacafe3ec1..33b9288a6c0c 100644 --- a/packages/enhanced-img/test/markup-plugin.spec.js +++ b/packages/enhanced-img/test/markup-plugin.spec.js @@ -3,7 +3,7 @@ import path from 'node:path'; import { expect, it } from 'vitest'; import { image_plugin, parse_object } from '../src/vite-plugin.js'; -const resolve = /** @param {string} file */ (file) => path.resolve(__dirname, file); +const resolve = /** @param {string} file */ (file) => path.resolve(import.meta.dirname, file); it('Image preprocess snapshot test', async () => { const filename = 'Input.svelte'; diff --git a/packages/kit/src/core/adapt/builder.spec.js b/packages/kit/src/core/adapt/builder.spec.js index b69c7b8296bb..304a1ba5987d 100644 --- a/packages/kit/src/core/adapt/builder.spec.js +++ b/packages/kit/src/core/adapt/builder.spec.js @@ -6,11 +6,8 @@ import { create_builder } from './builder.js'; import { posixify } from '../../utils/filesystem.js'; import { list_files } from '../utils.js'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = join(__filename, '..'); - test('copy files', () => { - const cwd = join(__dirname, 'fixtures/basic'); + const cwd = join(import.meta.dirname, 'fixtures/basic'); const outDir = join(cwd, '.svelte-kit'); /** @type {import('@sveltejs/kit').Config} */ @@ -19,7 +16,7 @@ test('copy files', () => { kit: { appDir: '_app', files: { - assets: join(__dirname, 'fixtures/basic/static') + assets: join(import.meta.dirname, 'fixtures/basic/static') }, outDir } @@ -42,7 +39,7 @@ test('copy files', () => { log: {} }); - const dest = join(__dirname, 'output'); + const dest = join(import.meta.dirname, 'output'); rmSync(dest, { recursive: true, force: true }); @@ -74,8 +71,8 @@ test('compress files', async () => { }); test('instrument generates facade with posix paths', () => { - const fixtureDir = join(__dirname, 'fixtures/instrument'); - const dest = join(__dirname, 'output'); + const fixtureDir = join(import.meta.dirname, 'fixtures/instrument'); + const dest = join(import.meta.dirname, 'output'); rmSync(dest, { recursive: true, force: true }); mkdirSync(join(dest, 'server'), { recursive: true }); diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 549538e20d18..5a32221a0d58 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -1,12 +1,8 @@ import { join } from 'node:path'; -import { fileURLToPath } from 'node:url'; import { assert, expect, test } from 'vitest'; import { validate_config, load_config } from './index.js'; import process from 'node:process'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = join(__filename, '..'); - /** * mutates and remove keys from an object when check callback returns true * @param {Record} o any object @@ -362,7 +358,7 @@ validate_paths( ); test('load default config (esm)', async () => { - const cwd = join(__dirname, 'fixtures/default'); + const cwd = join(import.meta.dirname, 'fixtures/default'); const config = await load_config({ cwd }); remove_keys(config, ([, v]) => typeof v === 'function'); @@ -374,7 +370,7 @@ test('load default config (esm)', async () => { }); test('load default config (esm) with .ts extensions', async () => { - const cwd = join(__dirname, 'fixtures/typescript'); + const cwd = join(import.meta.dirname, 'fixtures/typescript'); const config = await load_config({ cwd }); remove_keys(config, ([, v]) => typeof v === 'function'); @@ -386,7 +382,7 @@ test('load default config (esm) with .ts extensions', async () => { }); test('load .js config when both .js and .ts configs are present', async () => { - const cwd = join(__dirname, 'fixtures/multiple'); + const cwd = join(import.meta.dirname, 'fixtures/multiple'); const config = await load_config({ cwd }); remove_keys(config, ([, v]) => typeof v === 'function'); @@ -401,7 +397,7 @@ test('errors on loading config with incorrect default export', async () => { let message = null; try { - const cwd = join(__dirname, 'fixtures', 'export-string'); + const cwd = join(import.meta.dirname, 'fixtures', 'export-string'); await load_config({ cwd }); } catch (/** @type {any} */ e) { message = e.message; @@ -505,7 +501,7 @@ test('errors on invalid forkPreloads values', () => { }); test('uses src prefix for other kit.files options', async () => { - const cwd = join(__dirname, 'fixtures/custom-src'); + const cwd = join(import.meta.dirname, 'fixtures/custom-src'); const config = await load_config({ cwd }); remove_keys(config, ([, v]) => typeof v === 'function'); diff --git a/packages/kit/test/apps/dev-only/test/test.js b/packages/kit/test/apps/dev-only/test/test.js index 1b9099a923f1..6e2a96dd8782 100644 --- a/packages/kit/test/apps/dev-only/test/test.js +++ b/packages/kit/test/apps/dev-only/test/test.js @@ -3,9 +3,6 @@ import { test } from '../../../utils.js'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; -import { fileURLToPath } from 'node:url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); /** @typedef {import('@playwright/test').Response} Response */ @@ -86,7 +83,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).toHaveProperty('optimized.e2e-test-dep-page-svelte'); @@ -96,7 +96,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).toHaveProperty('optimized.e2e-test-dep-page-universal'); @@ -106,7 +109,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).not.toHaveProperty('optimized.e2e-test-dep-page-server'); @@ -116,7 +122,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).toHaveProperty('optimized.e2e-test-dep-layout-svelte'); @@ -126,7 +135,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).toHaveProperty('optimized.e2e-test-dep-layout-universal'); @@ -136,7 +148,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).not.toHaveProperty('optimized.e2e-test-dep-layout-server'); @@ -146,7 +161,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).toHaveProperty('optimized.e2e-test-dep-error'); @@ -156,7 +174,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).toHaveProperty('optimized.e2e-test-dep-hooks-client'); @@ -166,7 +187,10 @@ test.describe('Vite', () => { await page.goto('/'); await page.getByText('hello world!').waitFor(); - const manifest_path = path.join(__dirname, '../node_modules/.vite/deps/_metadata.json'); + const manifest_path = path.join( + import.meta.dirname, + '../node_modules/.vite/deps/_metadata.json' + ); const manifest = JSON.parse(fs.readFileSync(manifest_path, 'utf-8')); expect(manifest).toHaveProperty('optimized.e2e-test-dep-hooks'); diff --git a/packages/kit/test/apps/options-2/test/test.js b/packages/kit/test/apps/options-2/test/test.js index f3df40146a8d..8a1d74487ab8 100644 --- a/packages/kit/test/apps/options-2/test/test.js +++ b/packages/kit/test/apps/options-2/test/test.js @@ -1,6 +1,5 @@ import path from 'node:path'; import process from 'node:process'; -import { fileURLToPath } from 'node:url'; import { expect } from '@playwright/test'; import { test } from '../../../utils.js'; @@ -126,11 +125,10 @@ test.describe('trailing slash', () => { test.describe('Service worker', () => { if (process.env.DEV) { test('import proxy /basepath/service-worker.js', async ({ request }) => { - const __dirname = path.dirname(fileURLToPath(import.meta.url)); const response = await request.get('/basepath/service-worker.js'); const content = await response.text(); expect(content).toEqual( - `import '${path.join('/basepath', '/@fs', __dirname, '../src/service-worker.js')}';` + `import '${path.join('/basepath', '/@fs', import.meta.dirname, '../src/service-worker.js')}';` ); }); diff --git a/packages/kit/test/apps/writes/test/test.js b/packages/kit/test/apps/writes/test/test.js index e513c647f37d..83c069633829 100644 --- a/packages/kit/test/apps/writes/test/test.js +++ b/packages/kit/test/apps/writes/test/test.js @@ -18,8 +18,10 @@ test.describe('Filesystem updates', () => { // future test file that has the same name const route = 'zzzz' + Date.now(); const content = 'Hello new route'; - const __dirname = path.dirname(fileURLToPath(import.meta.url)); - const filepath = path.join(__dirname, `../src/routes/new-route/${route}/+page.svelte`); + const filepath = path.join( + import.meta.dirname, + `../src/routes/new-route/${route}/+page.svelte` + ); const dir = path.dirname(filepath); try { diff --git a/packages/kit/test/build-errors/env.spec.js b/packages/kit/test/build-errors/env.spec.js index aa41d4db6545..061d6a3c9a77 100644 --- a/packages/kit/test/build-errors/env.spec.js +++ b/packages/kit/test/build-errors/env.spec.js @@ -13,7 +13,7 @@ test('$env/dynamic/private is not statically importable from the client', { time assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/private-dynamic-env'), + cwd: path.join(import.meta.dirname, 'apps/private-dynamic-env'), stdio: 'pipe', timeout, env @@ -26,7 +26,7 @@ test('$env/dynamic/private is not dynamically importable from the client', { tim assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/private-dynamic-env-dynamic-import'), + cwd: path.join(import.meta.dirname, 'apps/private-dynamic-env-dynamic-import'), stdio: 'pipe', timeout, env @@ -39,7 +39,7 @@ test('$env/static/private is not statically importable from the client', { timeo assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/private-static-env'), + cwd: path.join(import.meta.dirname, 'apps/private-static-env'), stdio: 'pipe', timeout, env @@ -52,7 +52,7 @@ test('$env/static/private is not dynamically importable from the client', { time assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/private-static-env-dynamic-import'), + cwd: path.join(import.meta.dirname, 'apps/private-static-env-dynamic-import'), stdio: 'pipe', timeout, env @@ -65,7 +65,7 @@ test('$env/dynamic/private is not importable from the service worker', { timeout assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/service-worker-private-env'), + cwd: path.join(import.meta.dirname, 'apps/service-worker-private-env'), stdio: 'pipe', timeout, env @@ -78,7 +78,7 @@ test('$env/dynamic/public is not importable from the service worker', { timeout assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/service-worker-dynamic-public-env'), + cwd: path.join(import.meta.dirname, 'apps/service-worker-dynamic-public-env'), stdio: 'pipe', timeout, env diff --git a/packages/kit/test/build-errors/prerender.spec.js b/packages/kit/test/build-errors/prerender.spec.js index 903d2491e858..e788055bac8b 100644 --- a/packages/kit/test/build-errors/prerender.spec.js +++ b/packages/kit/test/build-errors/prerender.spec.js @@ -2,7 +2,6 @@ import { assert, test } from 'vitest'; import { execSync } from 'node:child_process'; import path from 'node:path'; import { EOL } from 'node:os'; -import process from 'node:process'; const timeout = 60_000; @@ -10,7 +9,7 @@ test('prerenderable routes must be prerendered', { timeout }, () => { assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/prerenderable-not-prerendered'), + cwd: path.join(import.meta.dirname, 'apps/prerenderable-not-prerendered'), stdio: 'pipe', timeout }), @@ -22,7 +21,7 @@ test('entry generators should match their own route', { timeout }, () => { assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/prerender-entry-generator-mismatch'), + cwd: path.join(import.meta.dirname, 'apps/prerender-entry-generator-mismatch'), stdio: 'pipe', timeout }), @@ -34,7 +33,7 @@ test('an error in a `prerender` function should fail the build', { timeout }, () assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/prerender-remote-function-error'), + cwd: path.join(import.meta.dirname, 'apps/prerender-remote-function-error'), stdio: 'pipe', timeout }), diff --git a/packages/kit/test/build-errors/server-only.spec.js b/packages/kit/test/build-errors/server-only.spec.js index 67bccd96afd3..1de049a8ff56 100644 --- a/packages/kit/test/build-errors/server-only.spec.js +++ b/packages/kit/test/build-errors/server-only.spec.js @@ -13,7 +13,7 @@ test('$lib/*.server.* is not statically importable from the client', { timeout } assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/server-only-module'), + cwd: path.join(import.meta.dirname, 'apps/server-only-module'), stdio: 'pipe', timeout, env @@ -26,7 +26,7 @@ test('$lib/*.server.* is not dynamically importable from the client', { timeout assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/server-only-module-dynamic-import'), + cwd: path.join(import.meta.dirname, 'apps/server-only-module-dynamic-import'), stdio: 'pipe', timeout, env @@ -39,7 +39,7 @@ test('$lib/server/* is not statically importable from the client', { timeout }, assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/server-only-folder'), + cwd: path.join(import.meta.dirname, 'apps/server-only-folder'), stdio: 'pipe', timeout, env @@ -52,7 +52,7 @@ test('$lib/server/* is not dynamically importable from the client', { timeout }, assert.throws( () => execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/server-only-folder-dynamic-import'), + cwd: path.join(import.meta.dirname, 'apps/server-only-folder-dynamic-import'), stdio: 'pipe', timeout, env diff --git a/packages/kit/test/build-errors/syntax-error.spec.js b/packages/kit/test/build-errors/syntax-error.spec.js index 9abc21f59ba2..5d0456b761f6 100644 --- a/packages/kit/test/build-errors/syntax-error.spec.js +++ b/packages/kit/test/build-errors/syntax-error.spec.js @@ -1,14 +1,13 @@ import { assert, test } from 'vitest'; import { execSync } from 'node:child_process'; import path from 'node:path'; -import process from 'node:process'; const timeout = 60_000; test('$lib/*.server.* is not statically importable from the client', { timeout }, () => { try { execSync('pnpm build', { - cwd: path.join(process.cwd(), 'apps/syntax-error'), + cwd: path.join(import.meta.dirname, 'apps/syntax-error'), stdio: 'pipe', timeout }); diff --git a/packages/package/test/index.spec.js b/packages/package/test/index.spec.js index e972d823ed4f..4ed145ca1abf 100644 --- a/packages/package/test/index.spec.js +++ b/packages/package/test/index.spec.js @@ -1,7 +1,6 @@ import fs from 'node:fs'; import process from 'node:process'; import { join, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; import prettier from 'prettier'; import { test, expect } from 'vitest'; @@ -12,15 +11,12 @@ import { rimraf, walk } from '../src/filesystem.js'; import { _create_validator } from '../src/validate.js'; import { resolve_aliases } from '../src/utils.js'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = join(__filename, '..'); - /** * @param {string} path * @param {Partial} [options] */ async function test_make_package(path, options) { - const cwd = join(__dirname, 'fixtures', path); + const cwd = join(import.meta.dirname, 'fixtures', path); const ewd = join(cwd, 'expected'); const output = join(cwd, 'dist'); @@ -85,9 +81,9 @@ async function format(file, content) { }); } -for (const dir of fs.readdirSync(join(__dirname, 'errors'))) { +for (const dir of fs.readdirSync(join(import.meta.dirname, 'errors'))) { test(`package error [${dir}]`, async () => { - const cwd = join(__dirname, 'errors', dir); + const cwd = join(import.meta.dirname, 'errors', dir); const output = join(cwd, 'dist'); const config = await load_config({ cwd }); @@ -177,7 +173,7 @@ test('create package with tsconfig specified', async () => { // chokidar doesn't fire events in github actions :shrug: if (!process.env.CI) { test('watches for changes', async () => { - const cwd = join(__dirname, 'watch'); + const cwd = join(import.meta.dirname, 'watch'); const config = await load_config({ cwd }); @@ -197,7 +193,7 @@ if (!process.env.CI) { /** @param {string} file */ function read(file) { - return fs.readFileSync(join(__dirname, 'watch', file), 'utf-8'); + return fs.readFileSync(join(import.meta.dirname, 'watch', file), 'utf-8'); } /** @@ -205,12 +201,12 @@ if (!process.env.CI) { * @param {string} data */ function write(file, data) { - return fs.writeFileSync(join(__dirname, 'watch', file), data); + return fs.writeFileSync(join(import.meta.dirname, 'watch', file), data); } /** @param {string} file */ function remove(file) { - const filepath = join(__dirname, 'watch', file); + const filepath = join(import.meta.dirname, 'watch', file); if (fs.existsSync(filepath)) fs.unlinkSync(filepath); } @@ -346,7 +342,7 @@ test('validates package (all ok 2)', () => { }); test('create package with preserved output', async () => { - const output = join(__dirname, 'fixtures', 'preserve-output', 'dist'); + const output = join(import.meta.dirname, 'fixtures', 'preserve-output', 'dist'); rimraf(output); fs.mkdirSync(join(output, 'assets'), { recursive: true }); fs.writeFileSync(join(output, 'assets', 'theme.css'), ':root { color: red }'); From 4bea2d235c64588b1f17b6d4c204effcd06567c4 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 26 Feb 2026 12:19:18 -0800 Subject: [PATCH 33/72] chore: add esbuild back to onlyBuiltDependencies. it's still pulled in via netlify --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 6d619a53bbed..e8cd58b3efe4 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "pnpm": { "onlyBuiltDependencies": [ "@parcel/watcher", + "esbuild", "protobufjs", "rolldown", "sharp", From 87603d13d009cada171c9b5d5daad5adad4f72de Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 26 Feb 2026 15:25:58 -0800 Subject: [PATCH 34/72] breaking: remove the deprecated CSRF option (#15437) Left it in the types so that it shows up in the reference docs for users who are still on SvelteKit 2 --- .changeset/gentle-radios-go.md | 5 ++++ packages/kit/src/core/config/index.spec.js | 5 ++-- packages/kit/src/core/config/options.js | 24 +++++++++++++++---- packages/kit/src/core/sync/write_server.js | 2 +- packages/kit/src/exports/public.d.ts | 2 +- .../kit/test/apps/basics/svelte.config.js | 1 - packages/kit/types/index.d.ts | 2 +- 7 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 .changeset/gentle-radios-go.md diff --git a/.changeset/gentle-radios-go.md b/.changeset/gentle-radios-go.md new file mode 100644 index 000000000000..33d159e8acb5 --- /dev/null +++ b/.changeset/gentle-radios-go.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove the deprecated CSRF `checkOrigin` option in favor of `trustedOrigins` diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 5a32221a0d58..28d65b5458cd 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -64,7 +64,7 @@ const get_defaults = (prefix = '') => ({ reportOnly: directive_defaults }, csrf: { - checkOrigin: true, + checkOrigin: undefined, trustedOrigins: [] }, embedded: false, @@ -96,13 +96,14 @@ const get_defaults = (prefix = '') => ({ }, inlineStyleThreshold: 0, moduleExtensions: ['.js', '.ts'], - output: { bundleStrategy: 'split' }, + output: { bundleStrategy: 'split', preloadStrategy: undefined }, outDir: join(prefix, '.svelte-kit'), router: { type: 'pathname', resolution: 'client' }, serviceWorker: { + options: undefined, register: true }, typescript: {}, diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index 26cb922ff89c..27f302306f79 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -109,10 +109,8 @@ const options = object( }), csrf: object({ - checkOrigin: deprecate( - boolean(true), - (keypath) => - `\`${keypath}\` has been deprecated in favour of \`csrf.trustedOrigins\`. It will be removed in a future version` + checkOrigin: removed( + (keypath) => `\`${keypath}\` has been removed in favour of \`csrf.trustedOrigins\`` ), trustedOrigins: string_array([]) }), @@ -159,6 +157,9 @@ const options = object( outDir: string('.svelte-kit'), output: object({ + preloadStrategy: removed( + (keypath) => `\`${keypath}\` has been removed. modulepreload will always be used` + ), bundleStrategy: list(['split', 'single', 'inline']) }), @@ -335,6 +336,21 @@ function deprecate( }; } +/** + * @param {(keypath: string) => string} get_message + * @returns {Validator} + */ +function removed( + get_message = (keypath) => + `The \`${keypath}\` option has been removed. Please see the list of breaking changes for your major release` +) { + return (input, keypath) => { + if (typeof input !== 'undefined') { + throw new Error(get_message(keypath)); + } + }; +} + /** * @param {Record} children * @param {boolean} [allow_unknown] diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index 64ca62d1f0c0..5ef57288b1f6 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -39,7 +39,7 @@ export const options = { app_template_contains_nonce: ${template.includes('%sveltekit.nonce%')}, async: ${s(!!config.compilerOptions?.experimental?.async)}, csp: ${s(config.kit.csp)}, - csrf_check_origin: ${s(config.kit.csrf.checkOrigin && !config.kit.csrf.trustedOrigins.includes('*'))}, + csrf_check_origin: ${s(!config.kit.csrf.trustedOrigins.includes('*'))}, csrf_trusted_origins: ${s(config.kit.csrf.trustedOrigins)}, embedded: ${config.kit.embedded}, env_public_prefix: '${config.kit.env.publicPrefix}', diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index aa290bb669a6..3a71e65bb354 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -421,7 +421,7 @@ export interface KitConfig { * * To allow people to make `POST`, `PUT`, `PATCH`, or `DELETE` requests with a `Content-Type` of `application/x-www-form-urlencoded`, `multipart/form-data`, or `text/plain` to your app from other origins, you will need to disable this option. Be careful! * @default true - * @deprecated Use `trustedOrigins: ['*']` instead + * @deprecated removed in 3.0. Use `trustedOrigins: ['*']` instead */ checkOrigin?: boolean; /** diff --git a/packages/kit/test/apps/basics/svelte.config.js b/packages/kit/test/apps/basics/svelte.config.js index d13136edee93..8630e784a24d 100644 --- a/packages/kit/test/apps/basics/svelte.config.js +++ b/packages/kit/test/apps/basics/svelte.config.js @@ -38,7 +38,6 @@ const config = { }, csrf: { - checkOrigin: true, trustedOrigins: ['https://trusted.example.com', 'https://payment-gateway.test'] }, diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 0815489c9c08..ddb3a450efba 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -395,7 +395,7 @@ declare module '@sveltejs/kit' { * * To allow people to make `POST`, `PUT`, `PATCH`, or `DELETE` requests with a `Content-Type` of `application/x-www-form-urlencoded`, `multipart/form-data`, or `text/plain` to your app from other origins, you will need to disable this option. Be careful! * @default true - * @deprecated Use `trustedOrigins: ['*']` instead + * @deprecated removed in 3.0. Use `trustedOrigins: ['*']` instead */ checkOrigin?: boolean; /** From 8823037b4a341013cc40a9bb688ee23bda3dbb04 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 27 Feb 2026 22:27:32 -0800 Subject: [PATCH 35/72] chore: deprecate `Response` helpers (#15448) closes https://github.com/sveltejs/kit/issues/12708 --- .changeset/shiny-feet-crash.md | 5 +++++ packages/kit/src/exports/index.js | 2 ++ packages/kit/types/index.d.ts | 2 ++ 3 files changed, 9 insertions(+) create mode 100644 .changeset/shiny-feet-crash.md diff --git a/.changeset/shiny-feet-crash.md b/.changeset/shiny-feet-crash.md new file mode 100644 index 000000000000..0d1485671007 --- /dev/null +++ b/.changeset/shiny-feet-crash.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +chore: deprecate `Response` helpers in favor of platform-provided alternatives diff --git a/packages/kit/src/exports/index.js b/packages/kit/src/exports/index.js index 2378d41009c1..ccc37c85a4f8 100644 --- a/packages/kit/src/exports/index.js +++ b/packages/kit/src/exports/index.js @@ -134,6 +134,7 @@ export function isRedirect(e) { * Create a JSON `Response` object from the supplied data. * @param {any} data The value that will be serialized as JSON. * @param {ResponseInit} [init] Options such as `status` and `headers` that will be added to the response. `Content-Type: application/json` and `Content-Length` headers will be added automatically. + * @deprecated use `Response.json` */ export function json(data, init) { // TODO deprecate this in favour of `Response.json` when it's @@ -162,6 +163,7 @@ export function json(data, init) { * Create a `Response` object from the supplied body. * @param {string} body The value that will be used as-is. * @param {ResponseInit} [init] Options such as `status` and `headers` that will be added to the response. A `Content-Length` header will be added automatically. + * @deprecated use `new Response` */ export function text(body, init) { const headers = new Headers(init?.headers); diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index ddb3a450efba..a8dd1410d08e 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2700,12 +2700,14 @@ declare module '@sveltejs/kit' { * Create a JSON `Response` object from the supplied data. * @param data The value that will be serialized as JSON. * @param init Options such as `status` and `headers` that will be added to the response. `Content-Type: application/json` and `Content-Length` headers will be added automatically. + * @deprecated use `Response.json` */ export function json(data: any, init?: ResponseInit): Response; /** * Create a `Response` object from the supplied body. * @param body The value that will be used as-is. * @param init Options such as `status` and `headers` that will be added to the response. A `Content-Length` header will be added automatically. + * @deprecated use `new Response` */ export function text(body: string, init?: ResponseInit): Response; /** From 23782eb9de9aa023b33619b4acf455b1a4d4e692 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 1 Mar 2026 09:18:54 -0800 Subject: [PATCH 36/72] chore: faster builds with Vite 8 hook filters (#15439) closes https://github.com/sveltejs/kit/issues/13756 This PR is going to be hard to look at because of all the indentation changes, but basically I moved some `if` statements in our Vite plugin hooks to a `filter` methods to be faster. The changes themselves are pretty straightforward if you ignore the spacing changes. There was only one where it was a little gnarly to convert the `if` to a regex. I put a comment on that regex explaining what it's supposed to do --------- Co-authored-by: Tee Ming --- .changeset/cold-carrots-raise.md | 1 + .changeset/nine-coins-cheer.md | 1 + packages/enhanced-img/package.json | 4 +- packages/kit/src/exports/vite/index.js | 442 ++++++++++++++----------- pnpm-lock.yaml | 15 +- 5 files changed, 261 insertions(+), 202 deletions(-) diff --git a/.changeset/cold-carrots-raise.md b/.changeset/cold-carrots-raise.md index b715e26dbc8e..5b77b8c63f25 100644 --- a/.changeset/cold-carrots-raise.md +++ b/.changeset/cold-carrots-raise.md @@ -1,6 +1,7 @@ --- '@sveltejs/package': major '@sveltejs/kit': major +'@sveltejs/enhanced-img': major --- breaking: require Node 22 or newer diff --git a/.changeset/nine-coins-cheer.md b/.changeset/nine-coins-cheer.md index 8f78036d0edd..efaf5ad2ecdc 100644 --- a/.changeset/nine-coins-cheer.md +++ b/.changeset/nine-coins-cheer.md @@ -1,4 +1,5 @@ --- +'@sveltejs/enhanced-img': major '@sveltejs/kit': major --- diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 9d2ad76e82e3..6419c68bdb14 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -41,7 +41,7 @@ "magic-string": "^0.30.5", "sharp": "^0.34.1", "svelte-parse-markup": "^0.1.5", - "vite-imagetools": "^9.0.3", + "vite-imagetools": "^10.0.0", "zimmerframe": "^1.1.2" }, "devDependencies": { @@ -57,6 +57,6 @@ "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^6.0.0", "svelte": "^5.0.0", - "vite": "^6.3.0 || >=7.0.0" + "vite": ">=8.0.0" } } diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index dd742f0b0511..96ccab11bb78 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -3,6 +3,8 @@ import path from 'node:path'; import process from 'node:process'; import { styleText } from 'node:util'; +import { exactRegex, prefixRegex } from 'rolldown/filter'; + import { copy, mkdirp, posixify, read, resolve_entry, rimraf } from '../../utils/filesystem.js'; import { create_static_module, create_dynamic_module } from '../../core/env.js'; import * as sync from '../../core/sync/sync.js'; @@ -29,6 +31,7 @@ import { s } from '../../utils/misc.js'; import { hash } from '../../utils/hash.js'; import { dedent } from '../../core/sync/utils.js'; import { + app_server, env_dynamic_private, env_dynamic_public, env_static_private, @@ -168,6 +171,15 @@ let manifest_data; /** @type {import('types').ServerMetadata | undefined} only set at build time once analysis is finished */ let build_metadata = undefined; +/** + * TODO: SvelteKit 4 - replace with RegExp.escape - available only in Node 24 + * @param {string} str + * @returns + */ +const reg_exp_escape = function (str) { + return str.replace(/[-[\]{}()*+!<=:?.\\/\\^$|#\s,]/g, '\\$&'); +}; + /** * Returns the SvelteKit Vite plugin. Vite executes Rollup hooks as well as some of its own. * Background reading is available at: @@ -423,7 +435,7 @@ async function kit({ svelte_config }) { // If importing from a service-worker, only allow $service-worker & $env/static/public, but none of the other virtual modules. // This check won't catch transitive imports, but it will warn when the import comes from a service-worker directly. // Transitive imports will be caught during the build. - // TODO move this logic to plugin_guard + // TODO move this logic to plugin_guard. add a filter to this resolveId when doing so if (importer) { const parsed_importer = path.parse(importer); @@ -456,45 +468,55 @@ async function kit({ svelte_config }) { return `\0virtual:${id}`; } }, + load: { + filter: { + id: [ + exactRegex(env_static_private), + exactRegex(env_static_public), + exactRegex(env_dynamic_private), + exactRegex(env_dynamic_public), + exactRegex(service_worker), + exactRegex(sveltekit_environment), + exactRegex(sveltekit_server) + ] + }, + handler(id, options) { + switch (id) { + case env_static_private: + return create_static_module('$env/static/private', env.private); + + case env_static_public: + return create_static_module('$env/static/public', env.public); + + case env_dynamic_private: + return create_dynamic_module( + 'private', + vite_config_env.command === 'serve' ? env.private : undefined + ); - load(id, options) { - const browser = !options?.ssr; - - const global = is_build - ? `globalThis.__sveltekit_${version_hash}` - : 'globalThis.__sveltekit_dev'; - - switch (id) { - case env_static_private: - return create_static_module('$env/static/private', env.private); - - case env_static_public: - return create_static_module('$env/static/public', env.public); - - case env_dynamic_private: - return create_dynamic_module( - 'private', - vite_config_env.command === 'serve' ? env.private : undefined - ); + case env_dynamic_public: { + const browser = !options?.ssr; + // populate `$env/dynamic/public` from `window` + if (browser) { + const global = is_build + ? `globalThis.__sveltekit_${version_hash}` + : 'globalThis.__sveltekit_dev'; + return `export const env = ${global}.env;`; + } - case env_dynamic_public: - // populate `$env/dynamic/public` from `window` - if (browser) { - return `export const env = ${global}.env;`; + return create_dynamic_module( + 'public', + vite_config_env.command === 'serve' ? env.public : undefined + ); } - return create_dynamic_module( - 'public', - vite_config_env.command === 'serve' ? env.public : undefined - ); - - case service_worker: - return create_service_worker_module(svelte_config); + case service_worker: + return create_service_worker_module(svelte_config); - case sveltekit_environment: { - const { version } = svelte_config.kit; + case sveltekit_environment: { + const { version } = svelte_config.kit; - return dedent` + return dedent` export const version = ${s(version.name)}; export let building = false; export let prerendering = false; @@ -507,10 +529,10 @@ async function kit({ svelte_config }) { prerendering = true; } `; - } + } - case sveltekit_server: { - return dedent` + case sveltekit_server: { + return dedent` export let read_implementation = null; export let manifest = null; @@ -523,11 +545,13 @@ async function kit({ svelte_config }) { manifest = _; } `; + } } } } }; + const skip_plugin_guard = process.env.TEST === 'true'; /** @type {Map>} */ const import_map = new Map(); const server_only_pattern = /.*\.server\..+/; @@ -544,102 +568,121 @@ async function kit({ svelte_config }) { // are added to the module graph enforce: 'pre', - async resolveId(id, importer, options) { - if (importer && !importer.endsWith('index.html')) { - const resolved = await this.resolve(id, importer, { ...options, skipSelf: true }); - - if (resolved) { - const normalized = normalize_id(resolved.id, normalized_lib, normalized_cwd); - - let importers = import_map.get(normalized); + resolveId: skip_plugin_guard + ? undefined + : { + // TODO: use composable filter API here when supported: + // https://github.com/vitejs/rolldown-vite/issues/605 + // filter: ([ + // exclude(importerId(/index\.html$/)), + // include(importerId(/.+/)) + // ]), + async handler(id, importer, options) { + if (importer && !importer.endsWith('index.html')) { + const resolved = await this.resolve(id, importer, { ...options, skipSelf: true }); + + if (resolved) { + const normalized = normalize_id(resolved.id, normalized_lib, normalized_cwd); + + let importers = import_map.get(normalized); + + if (!importers) { + importers = new Set(); + import_map.set(normalized, importers); + } - if (!importers) { - importers = new Set(); - import_map.set(normalized, importers); + importers.add(normalize_id(importer, normalized_lib, normalized_cwd)); + } + } } + }, - importers.add(normalize_id(importer, normalized_lib, normalized_cwd)); - } - } - }, - - load(id, options) { - if (options?.ssr === true || process.env.TEST === 'true') { - return; - } - - // skip .server.js files outside the cwd or in node_modules, as the filename might not mean 'server-only module' in this context - const is_internal = id.startsWith(normalized_cwd) && !id.startsWith(normalized_node_modules); - - const normalized = normalize_id(id, normalized_lib, normalized_cwd); - - const is_server_only = - normalized === '$env/static/private' || - normalized === '$env/dynamic/private' || - normalized === '$app/server' || - normalized.startsWith('$lib/server/') || - (is_internal && server_only_pattern.test(path.basename(id))); - - if (is_server_only) { - // in dev, this doesn't exist, so we need to create it - manifest_data ??= sync.all(svelte_config, vite_config_env.mode).manifest_data; - - /** @type {Set} */ - const entrypoints = new Set(); - for (const node of manifest_data.nodes) { - if (node.component) entrypoints.add(node.component); - if (node.universal) entrypoints.add(node.universal); - } + load: skip_plugin_guard + ? undefined + : { + filter: { + id: [ + exactRegex(env_static_private), + exactRegex(env_dynamic_private), + exactRegex(app_server), + prefixRegex(`${normalized_lib}/server/`), + // skip .server.js files outside the cwd or in node_modules, as the filename might not mean 'server-only module' in this context + // should be equivalent to: (id.startsWith(normalized_cwd) && !id.startsWith(normalized_node_modules) && server_only_pattern.test(path.basename(id)) + // TODO: address https://github.com/sveltejs/kit/issues/12529 + // if we decide to do it then remove the CWD portion of the regex + // if we decide not to do it then this regex is complicated enough that it should be refactored out and independently tested + new RegExp( + `^(?!${reg_exp_escape(normalized_node_modules)})${reg_exp_escape(normalized_cwd)}${server_only_pattern.source}$` + ) + ] + }, + handler(id, options) { + // TODO: replace with https://vite.dev/guide/api-environment-plugins#per-environment-plugins + if (options?.ssr === true) { + return; + } - if (manifest_data.hooks.client) entrypoints.add(manifest_data.hooks.client); - if (manifest_data.hooks.universal) entrypoints.add(manifest_data.hooks.universal); + // in dev, this doesn't exist, so we need to create it + manifest_data ??= sync.all(svelte_config, vite_config_env.mode).manifest_data; - const normalized = normalize_id(id, normalized_lib, normalized_cwd); - const chain = [normalized]; + /** @type {Set} */ + const entrypoints = new Set(); + for (const node of manifest_data.nodes) { + if (node.component) entrypoints.add(node.component); + if (node.universal) entrypoints.add(node.universal); + } - let current = normalized; - let includes_remote_file = false; + if (manifest_data.hooks.client) entrypoints.add(manifest_data.hooks.client); + if (manifest_data.hooks.universal) entrypoints.add(manifest_data.hooks.universal); - while (true) { - const importers = import_map.get(current); - if (!importers) break; + const normalized = normalize_id(id, normalized_lib, normalized_cwd); + const chain = [normalized]; - const candidates = Array.from(importers).filter((importer) => !chain.includes(importer)); - if (candidates.length === 0) break; + let current = normalized; + let includes_remote_file = false; - chain.push((current = candidates[0])); + while (true) { + const importers = import_map.get(current); + if (!importers) break; - includes_remote_file ||= svelte_config.kit.moduleExtensions.some((ext) => { - return current.endsWith(`.remote${ext}`); - }); + const candidates = Array.from(importers).filter( + (importer) => !chain.includes(importer) + ); + if (candidates.length === 0) break; + + chain.push((current = candidates[0])); + + includes_remote_file ||= svelte_config.kit.moduleExtensions.some((ext) => { + return current.endsWith(`.remote${ext}`); + }); + + if (entrypoints.has(current)) { + const pyramid = chain + .reverse() + .map((id, i) => { + return `${' '.repeat(i + 1)}${id}`; + }) + .join(' imports\n'); + + if (includes_remote_file) { + error_for_missing_config( + 'remote functions', + 'kit.experimental.remoteFunctions', + 'true' + ); + } - if (entrypoints.has(current)) { - const pyramid = chain - .reverse() - .map((id, i) => { - return `${' '.repeat(i + 1)}${id}`; - }) - .join(' imports\n'); + let message = `Cannot import ${normalized} into code that runs in the browser, as this could leak sensitive information.`; + message += `\n\n${pyramid}`; + message += `\n\nIf you're only using the import as a type, change it to \`import type\`.`; - if (includes_remote_file) { - error_for_missing_config( - 'remote functions', - 'kit.experimental.remoteFunctions', - 'true' - ); + throw stackless(message); + } } - let message = `Cannot import ${normalized} into code that runs in the browser, as this could leak sensitive information.`; - message += `\n\n${pyramid}`; - message += `\n\nIf you're only using the import as a type, change it to \`import type\`.`; - - throw stackless(message); + throw new Error('An impossible situation occurred'); } } - - throw new Error('An impossible situation occurred'); - } - } }; /** @type {import('vite').ViteDevServer} */ @@ -658,16 +701,25 @@ async function kit({ svelte_config }) { const plugin_remote = { name: 'vite-plugin-sveltekit-remote', - resolveId(id) { - if (id.startsWith('\0sveltekit-remote:')) return id; + // prevent other plugins from resolving our remote virtual module + resolveId: { + filter: { + id: prefixRegex('\0sveltekit-remote:') + }, + handler(id) { + return id; + } }, - load(id) { - // On-the-fly generated entry point for remote file just forwards the original module - // We're not using manualChunks because it can cause problems with circular dependencies - // (e.g. https://github.com/sveltejs/kit/issues/14679) and module ordering in general - // (e.g. https://github.com/sveltejs/kit/issues/14590). - if (id.startsWith('\0sveltekit-remote:')) { + load: { + filter: { + id: prefixRegex('\0sveltekit-remote:') + }, + handler(id) { + // On-the-fly generated entry point for remote file just forwards the original module + // We're not using manualChunks because it can cause problems with circular dependencies + // (e.g. https://github.com/sveltejs/kit/issues/14679) and module ordering in general + // (e.g. https://github.com/sveltejs/kit/issues/14590). const hash_id = id.slice('\0sveltekit-remote:'.length); const original = remote_original_by_hash.get(hash_id); if (!original) throw new Error(`Expected to find metadata for remote file ${id}`); @@ -679,31 +731,32 @@ async function kit({ svelte_config }) { dev_server = _dev_server; }, - async transform(code, id, opts) { - const normalized = normalize_id(id, normalized_lib, normalized_cwd); - if (!svelte_config.kit.moduleExtensions.some((ext) => normalized.endsWith(`.remote${ext}`))) { - return; - } - - const file = posixify(path.relative(cwd, id)); - const remote = { - hash: hash(file), - file - }; + transform: { + filter: { + id: new RegExp( + `\\.remote(?:${svelte_config.kit.moduleExtensions.map((e) => e.replaceAll('.', '\\.')).join('|')})(?:\\?.*)?$` + ) + }, + async handler(code, id, opts) { + const file = posixify(path.relative(cwd, id)); + const remote = { + hash: hash(file), + file + }; - remotes.push(remote); + remotes.push(remote); - if (opts?.ssr) { - // we need to add an `await Promise.resolve()` because if the user imports this function - // on the client AND in a load function when loading the client module we will trigger - // an ssrLoadModule during dev. During a link preload, the module can be mistakenly - // loaded and transformed twice and the first time all its exports would be undefined - // triggering a dev server error. By adding a microtask we ensure that the module is fully loaded + if (opts?.ssr) { + // we need to add an `await Promise.resolve()` because if the user imports this function + // on the client AND in a load function when loading the client module we will trigger + // an ssrLoadModule during dev. During a link preload, the module can be mistakenly + // loaded and transformed twice and the first time all its exports would be undefined + // triggering a dev server error. By adding a microtask we ensure that the module is fully loaded - // Extra newlines to prevent syntax errors around missing semicolons or comments - code += - '\n\n' + - dedent` + // Extra newlines to prevent syntax errors around missing semicolons or comments + code += + '\n\n' + + dedent` import * as $$_self_$$ from './${path.basename(id)}'; import { init_remote_functions as $$_init_$$ } from '@sveltejs/kit/internal'; @@ -717,69 +770,70 @@ async function kit({ svelte_config }) { } `; - // Emit a dedicated entry chunk for this remote in SSR builds (prod only) - if (!dev_server) { - remote_original_by_hash.set(remote.hash, id); - if (!emitted_remote_hashes.has(remote.hash)) { - this.emitFile({ - type: 'chunk', - id: `\0sveltekit-remote:${remote.hash}`, - name: `remote-${remote.hash}` - }); - emitted_remote_hashes.add(remote.hash); + // Emit a dedicated entry chunk for this remote in SSR builds (prod only) + if (!dev_server) { + remote_original_by_hash.set(remote.hash, id); + if (!emitted_remote_hashes.has(remote.hash)) { + this.emitFile({ + type: 'chunk', + id: `\0sveltekit-remote:${remote.hash}`, + name: `remote-${remote.hash}` + }); + emitted_remote_hashes.add(remote.hash); + } } - } - return code; - } + return code; + } - // For the client, read the exports and create a new module that only contains fetch functions with the correct metadata + // For the client, read the exports and create a new module that only contains fetch functions with the correct metadata - /** @type {Map} */ - const map = new Map(); + /** @type {Map} */ + const map = new Map(); - // in dev, load the server module here (which will result in this hook - // being called again with `opts.ssr === true` if the module isn't - // already loaded) so we can determine what it exports - if (dev_server) { - const module = await dev_server.ssrLoadModule(id); + // in dev, load the server module here (which will result in this hook + // being called again with `opts.ssr === true` if the module isn't + // already loaded) so we can determine what it exports + if (dev_server) { + const module = await dev_server.ssrLoadModule(id); - for (const [name, value] of Object.entries(module)) { - const type = value?.__?.type; - if (type) { - map.set(name, type); + for (const [name, value] of Object.entries(module)) { + const type = value?.__?.type; + if (type) { + map.set(name, type); + } } } - } - // in prod, we already built and analysed the server code before - // building the client code, so `remote_exports` is populated - else if (build_metadata?.remotes) { - const exports = build_metadata?.remotes.get(remote.hash); - if (!exports) throw new Error('Expected to find metadata for remote file ' + id); + // in prod, we already built and analysed the server code before + // building the client code, so `remote_exports` is populated + else if (build_metadata?.remotes) { + const exports = build_metadata?.remotes.get(remote.hash); + if (!exports) throw new Error('Expected to find metadata for remote file ' + id); - for (const [name, value] of exports) { - map.set(name, value.type); + for (const [name, value] of exports) { + map.set(name, value.type); + } } - } - let namespace = '__remote'; - let uid = 1; - while (map.has(namespace)) namespace = `__remote${uid++}`; + let namespace = '__remote'; + let uid = 1; + while (map.has(namespace)) namespace = `__remote${uid++}`; - const exports = Array.from(map).map(([name, type]) => { - return `export const ${name} = ${namespace}.${type}('${remote.hash}/${name}');`; - }); + const exports = Array.from(map).map(([name, type]) => { + return `export const ${name} = ${namespace}.${type}('${remote.hash}/${name}');`; + }); - let result = `import * as ${namespace} from '__sveltekit/remote';\n\n${exports.join('\n')}\n`; + let result = `import * as ${namespace} from '__sveltekit/remote';\n\n${exports.join('\n')}\n`; - if (dev_server) { - result += `\nimport.meta.hot?.accept();\n`; - } + if (dev_server) { + result += `\nimport.meta.hot?.accept();\n`; + } - return { - code: result - }; + return { + code: result + }; + } } }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41161822657c..b052ffafb205 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -493,8 +493,8 @@ importers: specifier: ^0.1.5 version: 0.1.5(svelte@5.53.5) vite-imagetools: - specifier: ^9.0.3 - version: 9.0.3(rollup@4.59.0) + specifier: ^10.0.0 + version: 10.0.0(rollup@4.59.0)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) zimmerframe: specifier: ^1.1.2 version: 1.1.2 @@ -5672,9 +5672,11 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - vite-imagetools@9.0.3: - resolution: {integrity: sha512-FwjApRNZyN+RucPW9Z9kf0dyzyi3r3zlDfrTnzHXNaYpmT3pZ5w//d6QkApy1iypbDm+3fq+Gwfv+PYA4j4uYw==} - engines: {node: '>=20.0.0'} + vite-imagetools@10.0.0: + resolution: {integrity: sha512-+83L32YPU/2BOHWhudO2+9T5HBvb3+0qHoUNN7fb0+XcAoXilx7aE25cDPWU5kBi5Yc750zYCvHxgfyR+tAuMA==} + engines: {node: '>=22.0.0'} + peerDependencies: + vite: '>=7.0.0' vite@8.0.0-beta.15: resolution: {integrity: sha512-RHX7IvsJlEfjyA1rS7MY0UsmF91etdLAamslHR5lfuO3W/BXRdXm2tRE64ztpSPZbKqB4wAAZ0AwtF6QzfKZLA==} @@ -10180,11 +10182,12 @@ snapshots: validate-npm-package-name@5.0.1: {} - vite-imagetools@9.0.3(rollup@4.59.0): + vite-imagetools@10.0.0(rollup@4.59.0)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)): dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.59.0) imagetools-core: 9.1.0 sharp: 0.34.5 + vite: 8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0) transitivePeerDependencies: - rollup From 58c453e80c5f713e62cd6a0e2028e171bf327c4e Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 5 Mar 2026 06:09:53 +0800 Subject: [PATCH 37/72] chore: catalog typescript dev dependencies --- .../test/apps/basic/package.json | 2 +- packages/kit/test/apps/amp/package.json | 2 +- packages/kit/test/apps/async/package.json | 2 +- packages/kit/test/apps/basics/package.json | 2 +- packages/kit/test/apps/dev-only/package.json | 2 +- packages/kit/test/apps/embed/package.json | 2 +- .../test/apps/hash-based-routing/package.json | 2 +- packages/kit/test/apps/no-ssr/package.json | 2 +- packages/kit/test/apps/options-2/package.json | 2 +- packages/kit/test/apps/options-3/package.json | 2 +- packages/kit/test/apps/options/package.json | 2 +- .../prerendered-app-error-pages/package.json | 2 +- packages/kit/test/apps/writes/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../apps/private-dynamic-env/package.json | 2 +- .../package.json | 2 +- .../apps/private-static-env/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-folder/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-module/package.json | 2 +- .../package.json | 2 +- .../service-worker-private-env/package.json | 2 +- .../apps/syntax-error/package.json | 2 +- .../kit/test/prerendering/basics/package.json | 2 +- .../test/prerendering/options/package.json | 2 +- .../test/prerendering/paths-base/package.json | 2 +- playgrounds/basic/package.json | 2 +- pnpm-lock.yaml | 64 +++++++++---------- 33 files changed, 64 insertions(+), 64 deletions(-) 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/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/basics/package.json b/packages/kit/test/apps/basics/package.json index 2225ff965100..d451306d741b 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -29,7 +29,7 @@ "svelte": "catalog:", "svelte-check": "catalog:", "test-redirect-importer": "workspace:*", - "typescript": "^5.5.4", + "typescript": "catalog:", "valibot": "catalog:", "vite": "catalog:", "vitest": "catalog:" diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json index 92a6d820c5d9..8c5a91632c3d 100644 --- a/packages/kit/test/apps/dev-only/package.json +++ b/packages/kit/test/apps/dev-only/package.json @@ -25,7 +25,7 @@ "e2e-test-dep-server": "file:./_test_dependencies/cjs-only", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/apps/embed/package.json b/packages/kit/test/apps/embed/package.json index ca28362aa0af..2a0e722ffc06 100644 --- a/packages/kit/test/apps/embed/package.json +++ b/packages/kit/test/apps/embed/package.json @@ -17,7 +17,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/apps/hash-based-routing/package.json b/packages/kit/test/apps/hash-based-routing/package.json index a96d21fe7f8f..9384331118be 100644 --- a/packages/kit/test/apps/hash-based-routing/package.json +++ b/packages/kit/test/apps/hash-based-routing/package.json @@ -17,7 +17,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/apps/no-ssr/package.json b/packages/kit/test/apps/no-ssr/package.json index 315382d0d8b3..e4436793a993 100644 --- a/packages/kit/test/apps/no-ssr/package.json +++ b/packages/kit/test/apps/no-ssr/package.json @@ -17,7 +17,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index bb41653fb9f9..f486ca1fb1db 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/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/options-3/package.json b/packages/kit/test/apps/options-3/package.json index 44a7c7baa5d8..2ec4dbe2170c 100644 --- a/packages/kit/test/apps/options-3/package.json +++ b/packages/kit/test/apps/options-3/package.json @@ -16,7 +16,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index 04ce65e2a148..33b0484cf1fa 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -20,7 +20,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/apps/prerendered-app-error-pages/package.json b/packages/kit/test/apps/prerendered-app-error-pages/package.json index 7f8511aefe07..32a0dd5fc089 100644 --- a/packages/kit/test/apps/prerendered-app-error-pages/package.json +++ b/packages/kit/test/apps/prerendered-app-error-pages/package.json @@ -19,7 +19,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" } } diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index 69656c154aef..f4a932aa834d 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -17,7 +17,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json index e296847ef3e5..2d6008752294 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/prerender-remote-function-error/package.json b/packages/kit/test/build-errors/apps/prerender-remote-function-error/package.json index 2628dec79662..203ae3da2c2c 100644 --- a/packages/kit/test/build-errors/apps/prerender-remote-function-error/package.json +++ b/packages/kit/test/build-errors/apps/prerender-remote-function-error/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json index e296847ef3e5..2d6008752294 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json index 680769944384..910a1384ae52 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json index c632d6b093d3..f702ab6ef15e 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json index f4d3402beb89..b1a4d2d81566 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json index 328098a1b6e0..df5aa6240d04 100644 --- a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-static-env/package.json b/packages/kit/test/build-errors/apps/private-static-env/package.json index 4ad0b870dbc0..6f570213db2a 100644 --- a/packages/kit/test/build-errors/apps/private-static-env/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json index 5baa5a4a983d..9873dad7fe5e 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-folder/package.json b/packages/kit/test/build-errors/apps/server-only-folder/package.json index 0ee204db1366..d5a1f2fd3c97 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json index f8ec05958665..7dd73677753e 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-module/package.json b/packages/kit/test/build-errors/apps/server-only-module/package.json index a064e2ab00bb..ac29787fce27 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json index 87ef62005b4f..08a2e94abd8d 100644 --- a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json index ee64fc9cb964..d237a0113d7b 100644 --- a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/syntax-error/package.json b/packages/kit/test/build-errors/apps/syntax-error/package.json index d4111a628c8f..04bae44de898 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/package.json +++ b/packages/kit/test/build-errors/apps/syntax-error/package.json @@ -13,7 +13,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:" }, "type": "module" diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index 39a5db2dfdba..93d41ba907ae 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -16,7 +16,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index 633673769613..7bfa4cba3fd2 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index 114c7903284f..f04cdcbc2da1 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.4", + "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:" }, diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index 1c3f95cb27a3..44d2dc2580d6 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -31,7 +31,7 @@ "publint": "catalog:", "svelte": "catalog:", "svelte-check": "catalog:", - "typescript": "^5.5.0", + "typescript": "catalog:", "valibot": "catalog:", "vite": "catalog:" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55c9535ebed0..6457a939b64f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -472,7 +472,7 @@ importers: specifier: 'catalog:' version: 5.53.5 typescript: - specifier: ^5.3.3 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -636,7 +636,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -657,7 +657,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 valibot: specifier: 'catalog:' @@ -696,7 +696,7 @@ importers: specifier: workspace:* version: link:../../../../test-redirect-importer typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 valibot: specifier: 'catalog:' @@ -753,7 +753,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -774,7 +774,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -795,7 +795,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -816,7 +816,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -840,7 +840,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -864,7 +864,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 valibot: specifier: 'catalog:' @@ -891,7 +891,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -912,7 +912,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -933,7 +933,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -963,7 +963,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -987,7 +987,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1011,7 +1011,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1035,7 +1035,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1056,7 +1056,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1077,7 +1077,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1098,7 +1098,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1119,7 +1119,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1140,7 +1140,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1161,7 +1161,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1182,7 +1182,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1203,7 +1203,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1224,7 +1224,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1245,7 +1245,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1266,7 +1266,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1287,7 +1287,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1311,7 +1311,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1335,7 +1335,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.4 + specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' @@ -1444,7 +1444,7 @@ importers: specifier: 'catalog:' version: 4.3.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3) typescript: - specifier: ^5.5.0 + specifier: 'catalog:' version: 5.9.3 valibot: specifier: 'catalog:' From 1b3810d907fe3e0052887a80a2387338469ee944 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 6 Mar 2026 03:26:36 +0800 Subject: [PATCH 38/72] chore: bump peer dep on SvelteKit (#15496) This PR removes some guards and optional chaining that were only necessary to support older Kit versions --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [ ] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [ ] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [ ] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- packages/adapter-vercel/index.js | 57 ++++++---------------------- packages/adapter-vercel/package.json | 2 +- 2 files changed, 13 insertions(+), 46 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 6ba0e2f8945f..a17c6e3d6194 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -7,22 +7,9 @@ import { nodeFileTrace } from '@vercel/nft'; import { build } from 'rolldown'; import { get_pathname, parse_isr_expiration, pattern_to_src, resolve_runtime } from './utils.js'; -/** - * @template T - * @template {keyof T} K - * @typedef {Partial> & Required>} PartialExcept - */ - -/** - * We use a custom `Builder` type here to support the minimum version of SvelteKit. - * @typedef {PartialExcept} Builder2_4_0 - */ - const name = '@sveltejs/adapter-vercel'; const INTERNAL = '![-]'; // this name is guaranteed not to conflict with user routes -const [kit_major, kit_minor] = VERSION.split('.'); - // https://vercel.com/docs/functions/edge-functions/edge-runtime#compatible-node.js-modules const compatible_node_modules = ['async_hooks', 'events', 'buffer', 'assert', 'util']; @@ -61,7 +48,7 @@ const plugin = function (defaults = {}) { return { name, - /** @param {Builder2_4_0} builder */ + /** @param {import('@sveltejs/kit').Builder} builder */ async adapt(builder) { if (!builder.routes) { throw new Error( @@ -113,8 +100,8 @@ const plugin = function (defaults = {}) { MANIFEST: './manifest.js' } }); - if (builder.hasServerInstrumentationFile?.()) { - builder.instrument?.({ + if (builder.hasServerInstrumentationFile()) { + builder.instrument({ entrypoint: `${tmp}/index.js`, instrumentation: `${builder.getServerDirectory()}/instrumentation.server.js` }); @@ -180,7 +167,7 @@ const plugin = function (defaults = {}) { file: `${outdir}/index.js` } }), - builder.hasServerInstrumentationFile?.() && + builder.hasServerInstrumentationFile() && build({ ...build_config, input: `${builder.getServerDirectory()}/instrumentation.server.js`, @@ -191,8 +178,8 @@ const plugin = function (defaults = {}) { }) ]); - if (builder.hasServerInstrumentationFile?.()) { - builder.instrument?.({ + if (builder.hasServerInstrumentationFile()) { + builder.instrument({ entrypoint: `${outdir}/index.js`, instrumentation: `${outdir}/instrumentation.server.js`, module: { @@ -458,8 +445,7 @@ const plugin = function (defaults = {}) { } } - // optional chaining to support older versions that don't have this setting yet - if (builder.config.kit.router?.resolution === 'server') { + if (builder.config.kit.router.resolution === 'server') { // Create a separate edge function just for server-side route resolution. // By omitting all routes we're ensuring it's small (the routes will still be available // to the route resolution, because it does not rely on the server routing manifest) @@ -488,18 +474,7 @@ const plugin = function (defaults = {}) { }, supports: { - read: ({ config, route }) => { - const runtime = config.runtime ?? defaults.runtime; - - // TODO bump peer dep in next adapter major to simplify this - if (runtime === 'edge' && kit_major === '2' && kit_minor < '25') { - throw new Error( - `${name}: Cannot use \`read\` from \`$app/server\` in route \`${route.id}\` configured with \`runtime: 'edge'\` and SvelteKit < 2.25.0` - ); - } - - return true; - }, + read: () => true, instrumentation: () => true } }; @@ -533,7 +508,7 @@ function write(file, data) { // This function is duplicated in adapter-static /** - * @param {Builder2_4_0} builder + * @param {import('@sveltejs/kit').Builder} builder * @param {import('./index.js').Config} config * @param {string} dir */ @@ -671,7 +646,7 @@ function static_vercel_config(builder, config, dir) { } /** - * @param {Builder2_4_0} builder + * @param {import('@sveltejs/kit').Builder} builder * @param {string} entry * @param {string} dir * @param {import('./index.js').ServerlessConfig} config @@ -792,18 +767,10 @@ async function create_function_bundle(builder, entry, dir, config) { } /** - * - * @param {Builder2_4_0} builder - * @param {any} vercel_config + * @param {import('@sveltejs/kit').Builder} builder + * @param {any} vercel_config see https://vercel.com/docs/project-configuration/vercel-json */ function validate_vercel_json(builder, vercel_config) { - if (builder.routes.length > 0 && !builder.routes[0].api) { - // bail — we're on an older SvelteKit version that doesn't - // populate `route.api.methods`, so we can't check - // to see if cron paths are valid - return; - } - const crons = /** @type {Array} */ ( Array.isArray(vercel_config?.crons) ? vercel_config.crons : [] ); diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index d9a485d44c33..db7b7050cb67 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -54,6 +54,6 @@ "vitest": "catalog:" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0" + "@sveltejs/kit": "^3.0.0" } } From 587bea1dcde3a13b14dea43a13c4de1ab5d55617 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 6 Mar 2026 03:29:26 +0800 Subject: [PATCH 39/72] chore: bump peer dep version for SvelteKit (#15494) Part of https://github.com/sveltejs/kit/issues/1247 Removes some TODOs that we wanted to get done for the next adapter major such as ensuring new Kit features are always available by bumping the peer dep and removing workarounds for ambient types not being available (they are now) --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [ ] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [ ] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [ ] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --- packages/adapter-cloudflare/index.js | 19 +++--------- packages/adapter-cloudflare/internal.d.ts | 29 ------------------- packages/adapter-cloudflare/package.json | 2 +- .../test/apps/workers/src/app.d.ts | 3 -- packages/adapter-cloudflare/utils.js | 2 +- 5 files changed, 6 insertions(+), 49 deletions(-) delete mode 100644 packages/adapter-cloudflare/test/apps/workers/src/app.d.ts diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 7d51fd0967ea..d3b2a61f556d 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -1,4 +1,3 @@ -import { VERSION } from '@sveltejs/kit'; import { copyFileSync, existsSync, readFileSync, writeFileSync } from 'node:fs'; import path from 'node:path'; import process from 'node:process'; @@ -12,13 +11,12 @@ import { } from './utils.js'; const name = '@sveltejs/adapter-cloudflare'; -const [kit_major, kit_minor] = VERSION.split('.'); /** @type {import('./index.js').default} */ export default function (options = {}) { return { name, - /** @param {Builder2_0_0} builder */ + /** @param {import('@sveltejs/kit').Builder} builder */ async adapt(builder) { if ( existsSync('_routes.json') || @@ -126,8 +124,8 @@ export default function (options = {}) { ASSETS: assets_binding } }); - if (builder.hasServerInstrumentationFile?.()) { - builder.instrument?.({ + if (builder.hasServerInstrumentationFile()) { + builder.instrument({ entrypoint: worker_dest, instrumentation: `${builder.getServerDirectory()}/instrumentation.server.js` }); @@ -214,16 +212,7 @@ export default function (options = {}) { }; }, supports: { - read: ({ route }) => { - // TODO bump peer dep in next adapter major to simplify this - if (kit_major === '2' && kit_minor < '25') { - throw new Error( - `${name}: Cannot use \`read\` from \`$app/server\` in route \`${route.id}\` when using SvelteKit < 2.25.0` - ); - } - - return true; - }, + read: () => true, instrumentation: () => true } }; diff --git a/packages/adapter-cloudflare/internal.d.ts b/packages/adapter-cloudflare/internal.d.ts index 848182720e5d..6c79569f7f7f 100644 --- a/packages/adapter-cloudflare/internal.d.ts +++ b/packages/adapter-cloudflare/internal.d.ts @@ -10,32 +10,3 @@ declare module 'MANIFEST' { export const app_path: string; export const base_path: string; } - -type PartialExcept = Partial> & Required>; - -/** - * We use a custom `Builder` type here to ensure compatibility with the minimum version of SvelteKit. - */ -type Builder2_0_0 = PartialExcept< - import('@sveltejs/kit').Builder, - | 'log' - | 'rimraf' - | 'mkdirp' - | 'config' - | 'prerendered' - | 'routes' - | 'createEntries' - | 'generateFallback' - | 'generateEnvModule' - | 'generateManifest' - | 'getBuildDirectory' - | 'getClientDirectory' - | 'getServerDirectory' - | 'getAppPath' - | 'writeClient' - | 'writePrerendered' - | 'writePrerendered' - | 'writeServer' - | 'copy' - | 'compress' ->; diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index f7fd0ff8fda8..8b185d760303 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -57,7 +57,7 @@ "vitest": "catalog:" }, "peerDependencies": { - "@sveltejs/kit": "^2.0.0", + "@sveltejs/kit": "^3.0.0", "wrangler": "^4.67.0" } } diff --git a/packages/adapter-cloudflare/test/apps/workers/src/app.d.ts b/packages/adapter-cloudflare/test/apps/workers/src/app.d.ts deleted file mode 100644 index 101a9db0b8bf..000000000000 --- a/packages/adapter-cloudflare/test/apps/workers/src/app.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -// TODO: remove this in 3.0 once svelte.config.js is included by the generated tsconfig.json -// this ensures we get the ambient types from the adapter -import '../../../../index.js'; diff --git a/packages/adapter-cloudflare/utils.js b/packages/adapter-cloudflare/utils.js index f4b27e98d50f..2b1c7c74b567 100644 --- a/packages/adapter-cloudflare/utils.js +++ b/packages/adapter-cloudflare/utils.js @@ -81,7 +81,7 @@ export function parse_redirects(file_contents) { /** * Generates the [_routes.json](https://developers.cloudflare.com/pages/functions/routing/#create-a-_routesjson-file) * file that dictates which routes invoke the Cloudflare Worker. - * @param {Builder2_0_0} builder + * @param {import('@sveltejs/kit').Builder} builder * @param {string[]} client_assets * @param {string[]} redirects * @param {import('./index.js').AdapterOptions['routes']} routes From 8e11b8f831637404ff020373e182ed8918e60037 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 6 Mar 2026 03:46:38 +0800 Subject: [PATCH 40/72] use import.meta.dirname --- packages/adapter-netlify/test/apps/split/test/test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/adapter-netlify/test/apps/split/test/test.js b/packages/adapter-netlify/test/apps/split/test/test.js index 9ab80a929fb5..4093bf3fb413 100644 --- a/packages/adapter-netlify/test/apps/split/test/test.js +++ b/packages/adapter-netlify/test/apps/split/test/test.js @@ -1,10 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; -import { fileURLToPath } from 'node:url'; import { expect, test } from '@playwright/test'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - test('routes to routes with dynamic params', async ({ page }) => { await page.goto('/dynamic/123'); await expect(page.locator('p')).toHaveText('id: 123'); @@ -27,12 +24,15 @@ test('client-side fetch for query remote function data', async ({ page }) => { }); test('split generates multiple function files', () => { - const functions_dir = path.resolve(__dirname, '../.netlify/v1/functions'); + const functions_dir = path.resolve(import.meta.dirname, '../.netlify/v1/functions'); const files = fs.readdirSync(functions_dir).filter((f) => f.startsWith('sveltekit-')); expect(files.length).toBeGreaterThan(1); }); test('_redirects are copied to publish directory', () => { - const redirects = fs.readFileSync(path.resolve(__dirname, '../build/_redirects'), 'utf-8'); + const redirects = fs.readFileSync( + path.resolve(import.meta.dirname, '../build/_redirects'), + 'utf-8' + ); expect(redirects).toContain('/redirect-me /greeting/redirected 301'); }); From 8af47eb06f9a1a883058de059ccf81aab4e85627 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 6 Mar 2026 04:16:43 +0800 Subject: [PATCH 41/72] fix: use Vite `root` config setting instead of current working directory (#15469) closes https://github.com/sveltejs/kit/issues/11356 closes https://github.com/sveltejs/kit/issues/12140 closes https://github.com/sveltejs/kit/pull/15188 This PR standardises the use of `process.cwd()` to prefer the Vite config `root` setting when available [similar to VPS](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/src/utils/options.js#L354-L356). This helps us resolve paths correctly before reading files or generating tsconfig paths. It eases lots of monorepo tooling usage, particularly Vitest workspaces. This also allows us to use the Vitest IDE extension to run unit tests (which didn't work before because of the aforementioned issues). We _could_ backport these changes to v2 but it's a bit easier to base it on v3 which already makes use of `import.meta.dirname` in many places thanks to https://github.com/sveltejs/kit/pull/15434 I've only made changes to `kit` itself for now, so other packages still default to `process.cwd()` but those are probably less problematic since they won't run for Vitest tests --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/nasty-impalas-wear.md | 5 + package.json | 3 +- packages/adapter-auto/vitest.config.js | 5 + packages/adapter-cloudflare/tsconfig.json | 1 + packages/adapter-cloudflare/vitest.config.js | 5 + packages/adapter-netlify/vitest.config.js | 5 + packages/adapter-node/tsconfig.json | 1 + packages/adapter-node/vitest.config.js | 5 + packages/adapter-vercel/vitest.config.js | 5 + packages/enhanced-img/tsconfig.json | 2 +- packages/enhanced-img/vitest.config.js | 5 + packages/kit/scripts/generate-version.js | 7 +- packages/kit/src/cli.js | 2 +- packages/kit/src/core/adapt/builder.js | 12 +- packages/kit/src/core/config/index.js | 9 +- packages/kit/src/core/env.js | 7 +- .../generate_manifest/find_server_assets.js | 5 +- .../kit/src/core/generate_manifest/index.js | 14 +- packages/kit/src/core/postbuild/analyse.js | 18 +- packages/kit/src/core/postbuild/fallback.js | 7 +- packages/kit/src/core/postbuild/prerender.js | 10 +- .../core/sync/create_manifest_data/index.js | 11 +- .../sync/create_manifest_data/index.spec.js | 19 +- packages/kit/src/core/sync/sync.js | 43 +- packages/kit/src/core/sync/write_server.js | 6 +- packages/kit/src/core/sync/write_tsconfig.js | 29 +- .../kit/src/core/sync/write_tsconfig.spec.js | 8 +- .../kit/src/core/sync/write_types/index.js | 53 ++- .../src/core/sync/write_types/index.spec.js | 12 +- .../write_types/test/actions/+page.server.js | 2 +- .../test/layout-advanced/(main)/+page.js | 2 +- .../test/layout-advanced/(main)/sub/+page.js | 4 +- .../sync/write_types/test/layout/+layout.js | 2 +- .../write_types/test/layout/+layout.server.js | 2 +- .../sync/write_types/test/layout/+page.js | 4 +- .../+page.js | 2 +- .../param-type-inference/required/+layout.js | 2 +- .../[narrowedParam=narrowed]/+page.js | 2 +- .../[regularParam=not_narrowed]/+page.js | 2 +- .../spread/[...spread=narrowed]/+page.js | 2 +- .../simple-page-server-and-shared/+page.js | 4 +- .../simple-page-server-only/+page.server.js | 4 +- .../sub/+page.server.js | 4 +- .../test/simple-page-shared-only/+page.js | 2 +- .../test/simple-page-shared-only/sub/+page.js | 4 +- .../+layout.js | 2 +- .../nested/+layout.js | 2 +- .../sync/write_types/test/slugs/+layout.js | 2 +- .../write_types/test/slugs/[...rest]/+page.js | 2 +- .../write_types/test/slugs/[slug]/+page.js | 2 +- .../test/slugs/x/[[optional]]/+page.js | 2 +- packages/kit/src/core/utils.js | 11 +- .../src/exports/vite/build/build_server.js | 16 +- .../vite/build/build_service_worker.js | 5 +- packages/kit/src/exports/vite/build/utils.js | 12 +- packages/kit/src/exports/vite/dev/index.js | 31 +- packages/kit/src/exports/vite/index.js | 410 +++++++++++------- .../src/exports/vite/static_analysis/index.js | 16 +- packages/kit/src/exports/vite/utils.js | 9 +- packages/kit/src/exports/vite/utils.spec.js | 2 +- packages/kit/src/runtime/server/utils.js | 3 +- packages/kit/src/utils/import.js | 13 +- packages/kit/src/version.spec.js | 24 +- .../kit/test/apps/basics/svelte.config.js | 6 + packages/kit/test/apps/basics/vite.config.js | 22 +- .../kit/test/build-errors/vitest.config.js | 5 + .../test/prerendering/basics/globalSetup.js | 2 +- .../test/prerendering/basics/vite.config.js | 2 +- packages/package/vitest.config.js | 5 + pnpm-lock.yaml | 3 + scripts/sync-all.js | 4 +- tsconfig.json | 2 +- vitest.config.js | 28 ++ 73 files changed, 617 insertions(+), 384 deletions(-) create mode 100644 .changeset/nasty-impalas-wear.md create mode 100644 packages/adapter-auto/vitest.config.js create mode 100644 packages/adapter-cloudflare/vitest.config.js create mode 100644 packages/adapter-netlify/vitest.config.js create mode 100644 packages/adapter-node/vitest.config.js create mode 100644 packages/adapter-vercel/vitest.config.js create mode 100644 packages/enhanced-img/vitest.config.js create mode 100644 packages/kit/test/build-errors/vitest.config.js create mode 100644 packages/package/vitest.config.js create mode 100644 vitest.config.js diff --git a/.changeset/nasty-impalas-wear.md b/.changeset/nasty-impalas-wear.md new file mode 100644 index 000000000000..14fef49885f0 --- /dev/null +++ b/.changeset/nasty-impalas-wear.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: resolve paths using the Vite config `root` option instead of `process.cwd()` to better support monorepo configurations such as Vitest workspaces diff --git a/package.json b/package.json index 7426bc24bb67..00bd89d7b612 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "@svitejs/changesets-changelog-github-compact": "catalog:", "eslint": "catalog:", "prettier": "catalog:", - "prettier-plugin-svelte": "catalog:" + "prettier-plugin-svelte": "catalog:", + "vitest": "catalog:" }, "packageManager": "pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017", "engines": { diff --git a/packages/adapter-auto/vitest.config.js b/packages/adapter-auto/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/adapter-auto/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/packages/adapter-cloudflare/tsconfig.json b/packages/adapter-cloudflare/tsconfig.json index 6b387d40f5f3..8e8b455d2fd2 100644 --- a/packages/adapter-cloudflare/tsconfig.json +++ b/packages/adapter-cloudflare/tsconfig.json @@ -20,6 +20,7 @@ "utils.js", "utils.spec.js", "rolldown.config.js", + "vitest.config.js", "test/utils.js", "internal.d.ts", "src/worker.js" diff --git a/packages/adapter-cloudflare/vitest.config.js b/packages/adapter-cloudflare/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/adapter-cloudflare/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/packages/adapter-netlify/vitest.config.js b/packages/adapter-netlify/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/adapter-netlify/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/packages/adapter-node/tsconfig.json b/packages/adapter-node/tsconfig.json index f97ac86855b3..e075f510dcb2 100644 --- a/packages/adapter-node/tsconfig.json +++ b/packages/adapter-node/tsconfig.json @@ -17,6 +17,7 @@ "include": [ "index.js", "rolldown.config.js", + "vitest.config.js", "src/**/*.js", "tests/**/*.js", "tests/**/*.ts", diff --git a/packages/adapter-node/vitest.config.js b/packages/adapter-node/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/adapter-node/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/packages/adapter-vercel/vitest.config.js b/packages/adapter-vercel/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/adapter-vercel/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/packages/enhanced-img/tsconfig.json b/packages/enhanced-img/tsconfig.json index 0ff94d9e3f38..9dd4dc4fd688 100644 --- a/packages/enhanced-img/tsconfig.json +++ b/packages/enhanced-img/tsconfig.json @@ -15,5 +15,5 @@ "noUnusedLocals": true, "noUnusedParameters": true }, - "include": ["src/**/*", "types/**/*", "test/**/*"] + "include": ["src/**/*", "types/**/*", "test/**/*", "vitest.config.js"] } diff --git a/packages/enhanced-img/vitest.config.js b/packages/enhanced-img/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/enhanced-img/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/packages/kit/scripts/generate-version.js b/packages/kit/scripts/generate-version.js index ecf715c9a15c..1ab7960f55ab 100644 --- a/packages/kit/scripts/generate-version.js +++ b/packages/kit/scripts/generate-version.js @@ -1,8 +1,11 @@ import fs from 'node:fs'; +import path from 'node:path'; -const pkg = JSON.parse(fs.readFileSync('package.json', 'utf-8')); +const pkg = JSON.parse( + fs.readFileSync(path.join(import.meta.dirname, '..', 'package.json'), 'utf-8') +); fs.writeFileSync( - './src/version.js', + path.join(import.meta.dirname, '..', 'src', 'version.js'), `// generated during release, do not modify\n\n/** @type {string} */\nexport const VERSION = '${pkg.version}';\n` ); diff --git a/packages/kit/src/cli.js b/packages/kit/src/cli.js index f1efe75e8bb5..4b810ae9f697 100755 --- a/packages/kit/src/cli.js +++ b/packages/kit/src/cli.js @@ -81,7 +81,7 @@ if (command === 'sync') { } try { - const config = await load_config(); + const config = await load_config({ cwd: process.cwd() }); const sync = await import('./core/sync/sync.js'); sync.all_types(config, values.mode); } catch (error) { diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 52114110c0f8..0c064eed4975 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -147,7 +147,8 @@ export function create_builder({ prerendered: [], relative_path: relativePath, routes: Array.from(filtered), - remotes + remotes, + root: vite_config.root }) }); } @@ -157,7 +158,8 @@ export function create_builder({ findServerAssets(route_data) { return find_server_assets( build_data, - route_data.map((route) => /** @type {import('types').RouteData} */ (lookup.get(route))) + route_data.map((route) => /** @type {import('types').RouteData} */ (lookup.get(route))), + vite_config.root ); }, @@ -167,7 +169,8 @@ export function create_builder({ const fallback = await generate_fallback({ manifest_path, - env: { ...env.private, ...env.public } + env: { ...env.private, ...env.public }, + root: vite_config.root }); if (existsSync(dest)) { @@ -197,7 +200,8 @@ export function create_builder({ routes: subset ? subset.map((route) => /** @type {import('types').RouteData} */ (lookup.get(route))) : route_data.filter((route) => prerender_map.get(route.id) !== true), - remotes + remotes, + root: vite_config.root }); }, diff --git a/packages/kit/src/core/config/index.js b/packages/kit/src/core/config/index.js index ae35a708132b..e3f0e0798b88 100644 --- a/packages/kit/src/core/config/index.js +++ b/packages/kit/src/core/config/index.js @@ -1,6 +1,5 @@ import fs from 'node:fs'; import path from 'node:path'; -import process from 'node:process'; import * as url from 'node:url'; import options from './options.js'; @@ -58,10 +57,10 @@ export function load_error_page(config) { /** * Loads and validates Svelte config file - * @param {{ cwd?: string }} options + * @param {{ cwd: string }} options * @returns {Promise} */ -export async function load_config({ cwd = process.cwd() } = {}) { +export async function load_config({ cwd }) { const config_files = ['js', 'ts'] .map((ext) => path.join(cwd, `svelte.config.${ext}`)) .filter((f) => fs.existsSync(f)); @@ -93,11 +92,13 @@ export async function load_config({ cwd = process.cwd() } = {}) { /** * @param {import('@sveltejs/kit').Config} config + * @param {{ cwd: string }} options * @returns {import('types').ValidatedConfig} */ -function process_config(config, { cwd = process.cwd() } = {}) { +export function process_config(config, { cwd }) { const validated = validate_config(config); + validated.kit.env.dir = path.resolve(cwd, validated.kit.env.dir); validated.kit.outDir = path.resolve(cwd, validated.kit.outDir); for (const key in validated.kit.files) { diff --git a/packages/kit/src/core/env.js b/packages/kit/src/core/env.js index 455eb0f44b68..fcc8ec66779f 100644 --- a/packages/kit/src/core/env.js +++ b/packages/kit/src/core/env.js @@ -1,6 +1,6 @@ import { GENERATED_COMMENT } from '../constants.js'; import { dedent } from './sync/utils.js'; -import { runtime_base } from './utils.js'; +import { get_runtime_base } from './utils.js'; /** * @typedef {'public' | 'private'} EnvType @@ -32,15 +32,16 @@ export function create_static_module(id, env) { /** * @param {EnvType} type * @param {Record | undefined} dev_values If in a development mode, values to pre-populate the module with. + * @param {string} root */ -export function create_dynamic_module(type, dev_values) { +export function create_dynamic_module(type, dev_values, root) { if (dev_values) { const keys = Object.entries(dev_values).map( ([k, v]) => `${JSON.stringify(k)}: ${JSON.stringify(v)}` ); return `export const env = {\n${keys.join(',\n')}\n}`; } - return `export { ${type}_env as env } from '${runtime_base}/shared-server.js';`; + return `export { ${type}_env as env } from '${get_runtime_base(root)}/shared-server.js';`; } /** diff --git a/packages/kit/src/core/generate_manifest/find_server_assets.js b/packages/kit/src/core/generate_manifest/find_server_assets.js index 044db8419107..393941919b54 100644 --- a/packages/kit/src/core/generate_manifest/find_server_assets.js +++ b/packages/kit/src/core/generate_manifest/find_server_assets.js @@ -4,8 +4,9 @@ import { find_deps } from '../../exports/vite/build/utils.js'; * Finds all the assets that are imported by server files associated with `routes` * @param {import('types').BuildData} build_data * @param {import('types').RouteData[]} routes + * @param {string} root */ -export function find_server_assets(build_data, routes) { +export function find_server_assets(build_data, routes, root) { /** * All nodes actually used in the routes definition (prerendered routes are omitted). * Root layout/error is always included as they are needed for 404 and root errors. @@ -19,7 +20,7 @@ export function find_server_assets(build_data, routes) { /** @param {string} id */ function add_assets(id) { if (id in build_data.server_manifest) { - const deps = find_deps(build_data.server_manifest, id, false); + const deps = find_deps(build_data.server_manifest, id, false, root); for (const asset of deps.assets) { server_assets.add(asset); } diff --git a/packages/kit/src/core/generate_manifest/index.js b/packages/kit/src/core/generate_manifest/index.js index 6b2445aa2107..4bbc78509bdf 100644 --- a/packages/kit/src/core/generate_manifest/index.js +++ b/packages/kit/src/core/generate_manifest/index.js @@ -20,9 +20,17 @@ import { uneval } from 'devalue'; * relative_path: string; * routes: import('types').RouteData[]; * remotes: RemoteChunk[]; + * root: string; * }} opts */ -export function generate_manifest({ build_data, prerendered, relative_path, routes, remotes }) { +export function generate_manifest({ + build_data, + prerendered, + relative_path, + routes, + remotes, + root +}) { /** * @type {Map} The new index of each node in the filtered nodes array */ @@ -34,7 +42,7 @@ export function generate_manifest({ build_data, prerendered, relative_path, rout */ const used_nodes = new Set([0, 1]); - const server_assets = find_server_assets(build_data, routes); + const server_assets = find_server_assets(build_data, routes, root); for (const route of routes) { if (route.page) { @@ -119,7 +127,7 @@ export function generate_manifest({ build_data, prerendered, relative_path, rout pattern: ${route.pattern}, params: ${s(route.params)}, page: ${route.page ? `{ layouts: ${get_nodes(route.page.layouts)}, errors: ${get_nodes(route.page.errors)}, leaf: ${reindexed.get(route.page.leaf)} }` : 'null'}, - endpoint: ${route.endpoint ? loader(join_relative(relative_path, resolve_symlinks(build_data.server_manifest, route.endpoint.file).chunk.file)) : 'null'} + endpoint: ${route.endpoint ? loader(join_relative(relative_path, resolve_symlinks(build_data.server_manifest, route.endpoint.file, root).chunk.file)) : 'null'} } `; }).filter(Boolean).join(',\n')} diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index 76936b253e24..184478d94b4e 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -25,6 +25,7 @@ export default forked(import.meta.url, analyse); * out: string; * output_config: import('types').RecursiveRequired; * remotes: RemoteChunk[]; + * root: string; * }} opts */ async function analyse({ @@ -36,13 +37,14 @@ async function analyse({ env, out, output_config, - remotes + remotes, + root }) { /** @type {import('@sveltejs/kit').SSRManifest} */ const manifest = (await import(pathToFileURL(manifest_path).href)).manifest; /** @type {import('types').ValidatedKitConfig} */ - const config = (await load_config()).kit; + const config = (await load_config({ cwd: root })).kit; const server_root = join(config.outDir, 'output'); @@ -63,7 +65,17 @@ async function analyse({ internal.set_read_implementation((file) => createReadableStream(`${server_root}/server/${file}`)); // first, build server nodes without the client manifest so we can analyse it - build_server_nodes(out, config, manifest_data, server_manifest, null, null, null, output_config); + build_server_nodes( + out, + config, + manifest_data, + server_manifest, + null, + null, + null, + output_config, + root + ); /** @type {import('types').ServerMetadata} */ const metadata = { diff --git a/packages/kit/src/core/postbuild/fallback.js b/packages/kit/src/core/postbuild/fallback.js index ef0d0530955f..66fa0c6379e7 100644 --- a/packages/kit/src/core/postbuild/fallback.js +++ b/packages/kit/src/core/postbuild/fallback.js @@ -9,12 +9,13 @@ export default forked(import.meta.url, generate_fallback); /** * @param {{ * manifest_path: string; - * env: Record + * env: Record; + * root: string; * }} opts */ -async function generate_fallback({ manifest_path, env }) { +async function generate_fallback({ manifest_path, env, root }) { /** @type {import('types').ValidatedKitConfig} */ - const config = (await load_config()).kit; + const config = (await load_config({ cwd: root })).kit; const server_root = join(config.outDir, 'output'); diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 6acf8e47dff4..f8d8603bdb32 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -31,10 +31,11 @@ const SPECIAL_HASHLINKS = new Set(['', 'top']); * manifest_path: string; * metadata: import('types').ServerMetadata; * verbose: boolean; - * env: Record + * env: Record; + * root: string; * }} opts */ -async function prerender({ hash, out, manifest_path, metadata, verbose, env }) { +async function prerender({ hash, out, manifest_path, metadata, verbose, env, root }) { /** @type {import('@sveltejs/kit').SSRManifest} */ const manifest = (await import(pathToFileURL(manifest_path).href)).manifest; @@ -99,12 +100,13 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) { const prerendered_routes = new Set(); /** @type {import('types').ValidatedKitConfig} */ - const config = (await load_config()).kit; + const config = (await load_config({ cwd: root })).kit; if (hash) { const fallback = await generate_fallback({ manifest_path, - env + env, + root }); const file = output_filename('/', true); diff --git a/packages/kit/src/core/sync/create_manifest_data/index.js b/packages/kit/src/core/sync/create_manifest_data/index.js index 27dc4f8cba5d..d7ffe012d6bd 100644 --- a/packages/kit/src/core/sync/create_manifest_data/index.js +++ b/packages/kit/src/core/sync/create_manifest_data/index.js @@ -1,7 +1,6 @@ import { lookup } from 'mrmime'; import fs from 'node:fs'; import path from 'node:path'; -import process from 'node:process'; import { styleText } from 'node:util'; import { posixify, resolve_entry } from '../../../utils/filesystem.js'; import { parse_route_id } from '../../../utils/routing.js'; @@ -17,14 +16,14 @@ import { * @param {{ * config: import('types').ValidatedConfig; * fallback?: string; - * cwd?: string; + * cwd: string; * }} opts * @returns {import('types').ManifestData} */ export default function create_manifest_data({ config, fallback = `${runtime_directory}/components`, - cwd = process.cwd() + cwd }) { const assets = create_assets(config); const hooks = create_hooks(config, cwd); @@ -114,8 +113,8 @@ function create_matchers(config, cwd) { } /** - * @param {import('types').ValidatedConfig} config * @param {string} cwd + * @param {import('types').ValidatedConfig} config * @param {string} fallback */ function create_routes_and_nodes(cwd, config, fallback) { @@ -418,7 +417,7 @@ function create_routes_and_nodes(cwd, config, fallback) { const indexes = new Map(nodes.map((node, i) => [node, i])); - const node_analyser = create_node_analyser(); + const node_analyser = create_node_analyser(cwd); for (const route of routes) { if (!route.leaf) continue; @@ -470,7 +469,7 @@ function create_routes_and_nodes(cwd, config, fallback) { for (const route of routes) { if (route.endpoint) { - route.endpoint.page_options = get_page_options(route.endpoint.file); + route.endpoint.page_options = get_page_options(route.endpoint.file, cwd); } } diff --git a/packages/kit/src/core/sync/create_manifest_data/index.spec.js b/packages/kit/src/core/sync/create_manifest_data/index.spec.js index 09f732bed8f9..6a7a1b1b1c4c 100644 --- a/packages/kit/src/core/sync/create_manifest_data/index.spec.js +++ b/packages/kit/src/core/sync/create_manifest_data/index.spec.js @@ -1,12 +1,11 @@ import fs from 'node:fs'; import path from 'node:path'; -import { fileURLToPath } from 'node:url'; import { assert, expect, test } from 'vitest'; import create_manifest_data from './index.js'; import { sort_routes } from './sort.js'; import { validate_config } from '../../config/index.js'; -const cwd = fileURLToPath(new URL('./test', import.meta.url)); +const cwd = path.join(import.meta.dirname, 'test'); /** * @param {string} dir @@ -87,7 +86,7 @@ test('creates routes', () => { { id: '/blog.json', pattern: '/^/blog.json/?$/', - endpoint: { file: 'samples/basic/blog.json/+server.js', page_options: null } + endpoint: { file: 'samples/basic/blog.json/+server.js', page_options: {} } }, { id: '/blog', @@ -99,7 +98,7 @@ test('creates routes', () => { pattern: '/^/blog/([^/]+?).json/?$/', endpoint: { file: 'samples/basic/blog/[slug].json/+server.ts', - page_options: null + page_options: {} } }, { @@ -310,7 +309,7 @@ test('allows rest parameters inside segments', () => { pattern: '/^/([^]*?).json/?$/', endpoint: { file: 'samples/rest-prefix-suffix/[...rest].json/+server.js', - page_options: null + page_options: {} } } ]); @@ -348,7 +347,7 @@ test('optional parameters', () => { { id: '/[[foo]]bar', pattern: '/^/([^/]*)?bar/?$/', - endpoint: { file: 'samples/optional/[[foo]]bar/+server.js', page_options: null } + endpoint: { file: 'samples/optional/[[foo]]bar/+server.js', page_options: {} } }, { id: '/nested', pattern: '/^/nested/?$/' }, { @@ -481,7 +480,7 @@ test('allows multiple slugs', () => { pattern: '/^/([^/]+?).([^/]+?)/?$/', endpoint: { file: 'samples/multiple-slugs/[file].[ext]/+server.js', - page_options: null + page_options: {} } } ]); @@ -506,7 +505,7 @@ test('ignores things that look like lockfiles', () => { pattern: '/^/foo/?$/', endpoint: { file: 'samples/lockfiles/foo/+server.js', - page_options: null + page_options: {} } } ]); @@ -542,7 +541,7 @@ test('works with custom extensions', () => { pattern: '/^/blog.json/?$/', endpoint: { file: 'samples/custom-extension/blog.json/+server.js', - page_options: null + page_options: {} } }, { @@ -555,7 +554,7 @@ test('works with custom extensions', () => { pattern: '/^/blog/([^/]+?).json/?$/', endpoint: { file: 'samples/custom-extension/blog/[slug].json/+server.js', - page_options: null + page_options: {} } }, { diff --git a/packages/kit/src/core/sync/sync.js b/packages/kit/src/core/sync/sync.js index d8643e989128..bdcddc338a76 100644 --- a/packages/kit/src/core/sync/sync.js +++ b/packages/kit/src/core/sync/sync.js @@ -1,4 +1,5 @@ import path from 'node:path'; +import process from 'node:process'; import create_manifest_data from './create_manifest_data/index.js'; import { write_client_manifest } from './write_client_manifest.js'; import { write_root } from './write_root.js'; @@ -16,25 +17,27 @@ import { * Initialize SvelteKit's generated files that only depend on the config and mode. * @param {import('types').ValidatedConfig} config * @param {string} mode + * @param {string} root The project root directory */ -export function init(config, mode) { - write_tsconfig(config.kit); +export function init(config, mode, root) { + write_tsconfig(config.kit, root); write_ambient(config.kit, mode); } /** * Update SvelteKit's generated files * @param {import('types').ValidatedConfig} config + * @param {string} root The project root directory */ -export function create(config) { - const manifest_data = create_manifest_data({ config }); +export function create(config, root) { + const manifest_data = create_manifest_data({ config, cwd: root }); const output = path.join(config.kit.outDir, 'generated'); write_client_manifest(config.kit, manifest_data, `${output}/client`); - write_server(config, output); + write_server(config, output, root); write_root(manifest_data, output); - write_all_types(config, manifest_data); + write_all_types(config, manifest_data, root); write_non_ambient(config.kit, manifest_data); return { manifest_data }; @@ -47,9 +50,10 @@ export function create(config) { * @param {import('types').ValidatedConfig} config * @param {import('types').ManifestData} manifest_data * @param {string} file + * @param {string} root The project root directory */ -export function update(config, manifest_data, file) { - const node_analyser = create_node_analyser(); +export function update(config, manifest_data, file, root) { + const node_analyser = create_node_analyser(root); for (const node of manifest_data.nodes) { node.page_options = node_analyser.get_page_options(node); @@ -57,11 +61,11 @@ export function update(config, manifest_data, file) { for (const route of manifest_data.routes) { if (route.endpoint) { - route.endpoint.page_options = get_page_options(route.endpoint.file); + route.endpoint.page_options = get_page_options(route.endpoint.file, root); } } - write_types(config, manifest_data, file); + write_types(config, manifest_data, file, root); write_non_ambient(config.kit, manifest_data); } @@ -69,10 +73,11 @@ export function update(config, manifest_data, file) { * Run sync.init and sync.create in series, returning the result from sync.create. * @param {import('types').ValidatedConfig} config * @param {string} mode The Vite mode + * @param {string} root The project root directory */ -export function all(config, mode) { - init(config, mode); - return create(config); +export function all(config, mode, root) { + init(config, mode, root); + return create(config, root); } /** @@ -81,16 +86,18 @@ export function all(config, mode) { * @param {string} mode The Vite mode */ export function all_types(config, mode) { - init(config, mode); - const manifest_data = create_manifest_data({ config }); - write_all_types(config, manifest_data); + const cwd = process.cwd(); + init(config, mode, cwd); + const manifest_data = create_manifest_data({ config, cwd }); + write_all_types(config, manifest_data, cwd); write_non_ambient(config.kit, manifest_data); } /** * Regenerate __SERVER__/internal.js in response to src/{app.html,error.html,service-worker.js} changing * @param {import('types').ValidatedConfig} config + * @param {string} root The project root directory */ -export function server(config) { - write_server(config, path.join(config.kit.outDir, 'generated')); +export function server(config, root) { + write_server(config, path.join(config.kit.outDir, 'generated'), root); } diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index 5ef57288b1f6..c062a262d971 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -1,5 +1,4 @@ import path from 'node:path'; -import process from 'node:process'; import { styleText } from 'node:util'; import { hash } from '../../utils/hash.js'; import { posixify, resolve_entry } from '../../utils/filesystem.js'; @@ -101,8 +100,9 @@ export { set_assets, set_building, set_manifest, set_prerendering, set_private_e * Write server configuration to disk * @param {import('types').ValidatedConfig} config * @param {string} output + * @param {string} root The project root directory */ -export function write_server(config, output) { +export function write_server(config, output, root) { const server_hooks_file = resolve_entry(config.kit.files.hooks.server); const universal_hooks_file = resolve_entry(config.kit.files.hooks.universal); @@ -133,7 +133,7 @@ export function write_server(config, output) { has_service_worker: config.kit.serviceWorker.register && !!resolve_entry(config.kit.files.serviceWorker), runtime_directory: relative(runtime_directory), - template: load_template(process.cwd(), config), + template: load_template(root, config), error_page: load_error_page(config) }) ); diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 9782950bd2a3..9c038bde2b25 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -1,6 +1,5 @@ import fs from 'node:fs'; import path from 'node:path'; -import process from 'node:process'; import { styleText } from 'node:util'; import { posixify } from '../../utils/filesystem.js'; import { write_if_changed } from './utils.js'; @@ -17,10 +16,11 @@ function maybe_file(cwd, file) { } /** + * @param {string} cwd * @param {string} file */ -function project_relative(file) { - return posixify(path.relative('.', file)); +function project_relative(cwd, file) { + return posixify(path.relative(cwd, file)); } /** @@ -37,21 +37,23 @@ function remove_trailing_slashstar(file) { /** * Generates the tsconfig that the user's tsconfig inherits from. * @param {import('types').ValidatedKitConfig} kit + * @param {string} cwd */ -export function write_tsconfig(kit, cwd = process.cwd()) { +export function write_tsconfig(kit, cwd) { const out = path.join(kit.outDir, 'tsconfig.json'); const user_config = load_user_tsconfig(cwd); if (user_config) validate_user_config(cwd, out, user_config); - write_if_changed(out, JSON.stringify(get_tsconfig(kit), null, '\t')); + write_if_changed(out, JSON.stringify(get_tsconfig(kit, cwd), null, '\t')); } /** * Generates the tsconfig that the user's tsconfig inherits from. * @param {import('types').ValidatedKitConfig} kit + * @param {string} cwd */ -export function get_tsconfig(kit) { +export function get_tsconfig(kit, cwd) { /** @param {string} file */ const config_relative = (file) => posixify(path.relative(kit.outDir, file)); @@ -75,11 +77,11 @@ export function get_tsconfig(kit) { // Test folder is a special case - we advocate putting tests in a top-level test folder // and it's not configurable (should we make it?) - const test_folder = project_relative('test'); + const test_folder = project_relative(cwd, 'test'); include.add(config_relative(`${test_folder}/**/*.js`)); include.add(config_relative(`${test_folder}/**/*.ts`)); include.add(config_relative(`${test_folder}/**/*.svelte`)); - const tests_folder = project_relative('tests'); + const tests_folder = project_relative(cwd, 'tests'); include.add(config_relative(`${tests_folder}/**/*.js`)); include.add(config_relative(`${tests_folder}/**/*.ts`)); include.add(config_relative(`${tests_folder}/**/*.svelte`)); @@ -102,7 +104,7 @@ export function get_tsconfig(kit) { compilerOptions: { // generated options paths: { - ...get_tsconfig_paths(kit), + ...get_tsconfig_paths(kit, cwd), '$app/types': ['./types/index.d.ts'] }, rootDirs: [config_relative('.'), './types'], @@ -176,7 +178,7 @@ function validate_user_config(cwd, out, config) { ); } } else { - let relative = posixify(path.relative('.', out)); + let relative = posixify(path.relative(cwd, out)); if (!relative.startsWith('./')) relative = './' + relative; console.warn( @@ -199,8 +201,9 @@ const value_regex = /^(.*?)((\/\*)|(\.\w+))?$/; * Related to vite alias creation. * * @param {import('types').ValidatedKitConfig} config + * @param {string} cwd */ -function get_tsconfig_paths(config) { +function get_tsconfig_paths(config, cwd) { /** @param {string} file */ const config_relative = (file) => { let relative_path = path.relative(config.outDir, file); @@ -211,8 +214,8 @@ function get_tsconfig_paths(config) { }; const alias = { ...config.alias }; - if (fs.existsSync(project_relative(config.files.lib))) { - alias['$lib'] = project_relative(config.files.lib); + if (fs.existsSync(project_relative(cwd, config.files.lib))) { + alias['$lib'] = project_relative(cwd, config.files.lib); } /** @type {Record} */ diff --git a/packages/kit/src/core/sync/write_tsconfig.spec.js b/packages/kit/src/core/sync/write_tsconfig.spec.js index 90cec2d223b1..47e03dac5273 100644 --- a/packages/kit/src/core/sync/write_tsconfig.spec.js +++ b/packages/kit/src/core/sync/write_tsconfig.spec.js @@ -15,7 +15,7 @@ test('Creates tsconfig path aliases from kit.alias', () => { } }); - const { compilerOptions } = get_tsconfig(kit); + const { compilerOptions } = get_tsconfig(kit, '.'); // $lib isn't part of the outcome because there's a "path exists" // check in the implementation @@ -42,7 +42,7 @@ test('Allows generated tsconfig to be mutated', () => { } }); - const config = get_tsconfig(kit); + const config = get_tsconfig(kit, '.'); // @ts-expect-error assert.equal(config.extends, 'some/other/tsconfig.json'); @@ -60,7 +60,7 @@ test('Allows generated tsconfig to be replaced', () => { } }); - const config = get_tsconfig(kit); + const config = get_tsconfig(kit, '.'); // @ts-expect-error assert.equal(config.extends, 'some/other/tsconfig.json'); @@ -75,7 +75,7 @@ test('Creates tsconfig include from kit.files', () => { } }); - const { include } = get_tsconfig(kit); + const { include } = get_tsconfig(kit, '.'); expect(include).toEqual([ 'ambient.d.ts', diff --git a/packages/kit/src/core/sync/write_types/index.js b/packages/kit/src/core/sync/write_types/index.js index a7f48109548d..95f493810a52 100644 --- a/packages/kit/src/core/sync/write_types/index.js +++ b/packages/kit/src/core/sync/write_types/index.js @@ -1,6 +1,5 @@ import fs from 'node:fs'; import path from 'node:path'; -import process from 'node:process'; import MagicString from 'magic-string'; import { posixify, rimraf, walk } from '../../../utils/filesystem.js'; import { compact } from '../../../utils/array.js'; @@ -25,21 +24,20 @@ const is_whitespace = (/** @type {string} */ char) => /\s/.test(char); * @typedef {Map} RoutesMap */ -const cwd = process.cwd(); - /** * Creates types for the whole manifest * @param {import('types').ValidatedConfig} config * @param {import('types').ManifestData} manifest_data + * @param {string} root The project root directory */ -export function write_all_types(config, manifest_data) { +export function write_all_types(config, manifest_data, root) { if (!ts) return; const types_dir = `${config.kit.outDir}/types`; // empty out files that no longer need to exist const routes_dir = remove_relative_parent_traversals( - posixify(path.relative('.', config.kit.files.routes)) + posixify(path.relative(root, config.kit.files.routes)) ); const expected_directories = new Set( manifest_data.routes.map((route) => path.join(routes_dir, route.id)) @@ -109,7 +107,7 @@ export function write_all_types(config, manifest_data) { const source_last_updated = Math.max( // ctimeMs includes move operations whereas mtimeMs does not - ...input_files.map((file) => fs.statSync(file).ctimeMs) + ...input_files.map((file) => fs.statSync(path.resolve(root, file)).ctimeMs) ); const types_last_updated = Math.max(...output_files.map((file) => file.updated)); @@ -124,7 +122,7 @@ export function write_all_types(config, manifest_data) { if (should_generate) { // track which old files end up being surplus to requirements const to_delete = new Set(output_files.map((file) => file.name)); - update_types(config, routes_map, route, to_delete); + update_types(config, routes_map, route, root, to_delete); meta_data[route.id] = input_files; } } @@ -138,8 +136,9 @@ export function write_all_types(config, manifest_data) { * @param {import('types').ValidatedConfig} config * @param {import('types').ManifestData} manifest_data * @param {string} file + * @param {string} root The project root directory */ -export function write_types(config, manifest_data, file) { +export function write_types(config, manifest_data, file, root) { if (!ts) return; if (!path.basename(file).startsWith('+')) { @@ -153,7 +152,7 @@ export function write_types(config, manifest_data, file) { if (!route) return; if (!route.leaf && !route.layout && !route.endpoint) return; // nothing to do - update_types(config, create_routes_map(manifest_data), route); + update_types(config, create_routes_map(manifest_data), route, root); } /** @@ -176,11 +175,12 @@ function create_routes_map(manifest_data) { * @param {import('types').ValidatedConfig} config * @param {RoutesMap} routes * @param {import('types').RouteData} route + * @param {string} root The project root directory * @param {Set} [to_delete] */ -function update_types(config, routes, route, to_delete = new Set()) { +function update_types(config, routes, route, root, to_delete = new Set()) { const routes_dir = remove_relative_parent_traversals( - posixify(path.relative('.', config.kit.files.routes)) + posixify(path.relative(root, config.kit.files.routes)) ); const outdir = path.join(config.kit.outDir, 'types', routes_dir, route.id); @@ -255,7 +255,7 @@ function update_types(config, routes, route, to_delete = new Set()) { declarations: d, exports: e, proxies - } = process_node(route.leaf, outdir, true, route_info.proxies); + } = process_node(route.leaf, outdir, true, route_info.proxies, root); exports.push(...e); declarations.push(...d); @@ -304,7 +304,7 @@ function update_types(config, routes, route, to_delete = new Set()) { layout_params.push({ ...param, optional: true }); } - ensureProxies(page, leaf.proxies); + ensureProxies(page, leaf.proxies, root); if ( // Be defensive - if a proxy doesn't exist (because it couldn't be created), assume a load function exists. @@ -340,6 +340,7 @@ function update_types(config, routes, route, to_delete = new Set()) { outdir, false, { server: null, universal: null }, + root, all_pages_have_load ); @@ -379,9 +380,10 @@ function update_types(config, routes, route, to_delete = new Set()) { * @param {string} outdir * @param {boolean} is_page * @param {Proxies} proxies + * @param {string} root The project root directory * @param {boolean} [all_pages_have_load] */ -function process_node(node, outdir, is_page, proxies, all_pages_have_load = true) { +function process_node(node, outdir, is_page, proxies, root, all_pages_have_load = true) { const params = `${is_page ? 'Route' : 'Layout'}Params`; const prefix = is_page ? 'Page' : 'Layout'; @@ -397,7 +399,7 @@ function process_node(node, outdir, is_page, proxies, all_pages_have_load = true /** @type {string} */ let data; - ensureProxies(node, proxies); + ensureProxies(node, proxies, root); if (node.server) { const basename = path.basename(node.server); @@ -430,7 +432,7 @@ function process_node(node, outdir, is_page, proxies, all_pages_have_load = true // The advantage is that type updates are reflected without saving. const from = proxy.modified ? `./proxy${replace_ext_with_js(basename)}` - : path_to_original(outdir, node.server); + : path_to_original(outdir, node.server, root); exports.push( 'type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T;', @@ -499,7 +501,7 @@ function process_node(node, outdir, is_page, proxies, all_pages_have_load = true // The advantage is that type updates are reflected without saving. const from = proxy.modified ? `./proxy${replace_ext_with_js(path.basename(file_path))}` - : path_to_original(outdir, file_path); + : path_to_original(outdir, file_path, root); const type = `Kit.LoadProperties>>`; return expand ? `Expand>>` : type; } else { @@ -519,24 +521,26 @@ function process_node(node, outdir, is_page, proxies, all_pages_have_load = true * * @param {import('types').PageNode} node * @param {Proxies} proxies + * @param {string} root The project root directory */ -function ensureProxies(node, proxies) { +function ensureProxies(node, proxies, root) { if (node.server && !proxies.server) { - proxies.server = createProxy(node.server, true); + proxies.server = createProxy(node.server, true, root); } if (node.universal && !proxies.universal) { - proxies.universal = createProxy(node.universal, false); + proxies.universal = createProxy(node.universal, false, root); } } /** * @param {string} file_path * @param {boolean} is_server + * @param {string} root The project root directory * @returns {Proxy} */ -function createProxy(file_path, is_server) { - const proxy = tweak_types(fs.readFileSync(file_path, 'utf8'), is_server); +function createProxy(file_path, is_server, root) { + const proxy = tweak_types(fs.readFileSync(path.resolve(root, file_path), 'utf8'), is_server); if (proxy) { return { ...proxy, @@ -581,9 +585,10 @@ function get_parent_type(node, type) { /** * @param {string} outdir * @param {string} file_path + * @param {string} root The project root directory */ -function path_to_original(outdir, file_path) { - return posixify(path.relative(outdir, path.join(cwd, replace_ext_with_js(file_path)))); +function path_to_original(outdir, file_path, root) { + return posixify(path.relative(outdir, path.join(root, replace_ext_with_js(file_path)))); } /** diff --git a/packages/kit/src/core/sync/write_types/index.spec.js b/packages/kit/src/core/sync/write_types/index.spec.js index 647ceff6611e..15f79e4c15bb 100644 --- a/packages/kit/src/core/sync/write_types/index.spec.js +++ b/packages/kit/src/core/sync/write_types/index.spec.js @@ -2,7 +2,6 @@ import { execSync } from 'node:child_process'; import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; -import { fileURLToPath } from 'node:url'; import { assert, expect, test } from 'vitest'; import { rimraf } from '../../../utils/filesystem.js'; import create_manifest_data from '../create_manifest_data/index.js'; @@ -10,7 +9,7 @@ import { tweak_types, write_all_types } from './index.js'; import { write_non_ambient } from '../write_non_ambient.js'; import { validate_config } from '../../config/index.js'; -const cwd = fileURLToPath(new URL('./test', import.meta.url)); +const cwd = path.join(import.meta.dirname, 'test'); /** * @param {string} dir @@ -23,13 +22,16 @@ function run_test(dir) { initial.kit.files.assets = path.resolve(cwd, 'static'); initial.kit.files.params = path.resolve(cwd, dir, 'params'); initial.kit.files.routes = path.resolve(cwd, dir); - initial.kit.outDir = path.resolve(cwd, path.join(dir, '.svelte-kit')); + initial.kit.outDir = path.resolve(cwd, dir, '.svelte-kit'); + + const root = path.join(cwd, dir); const manifest = create_manifest_data({ - config: /** @type {import('types').ValidatedConfig} */ (initial) + config: /** @type {import('types').ValidatedConfig} */ (initial), + cwd: root }); - write_all_types(initial, manifest); + write_all_types(initial, manifest, root); write_non_ambient(initial.kit, manifest); } diff --git a/packages/kit/src/core/sync/write_types/test/actions/+page.server.js b/packages/kit/src/core/sync/write_types/test/actions/+page.server.js index 3347ea120fac..453d08708447 100644 --- a/packages/kit/src/core/sync/write_types/test/actions/+page.server.js +++ b/packages/kit/src/core/sync/write_types/test/actions/+page.server.js @@ -39,7 +39,7 @@ export const actions = { /** * Ordinarily this would live in a +page.svelte, but to make it easy to run the tests, we put it here. * The `export` is so that eslint doesn't throw a hissy fit about the unused variable - * @type {import('./.svelte-kit/types/src/core/sync/write_types/test/actions/$types').SubmitFunction} + * @type {import('./.svelte-kit/types/$types').SubmitFunction} */ export const submit = () => { return ({ result }) => { diff --git a/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/+page.js b/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/+page.js index 2368bd47160f..37854020e94f 100644 --- a/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/+page.js +++ b/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/+page.js @@ -1,6 +1,6 @@ // test to see if layout adjusts correctly if +page.js exists, but no load function -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/layout-advanced/(main)/$types').PageData} */ +/** @type {import('../.svelte-kit/types/(main)/$types').PageData} */ const data = { root: '' }; diff --git a/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/sub/+page.js b/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/sub/+page.js index 908adae6e5df..05cf07858240 100644 --- a/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/sub/+page.js +++ b/packages/kit/src/core/sync/write_types/test/layout-advanced/(main)/sub/+page.js @@ -1,4 +1,4 @@ -/** @type {import('../../.svelte-kit/types/src/core/sync/write_types/test/layout-advanced/(main)/sub/$types').PageLoad} */ +/** @type {import('../../.svelte-kit/types/(main)/sub/$types').PageLoad} */ export async function load({ parent }) { const p = await parent(); p.main; @@ -10,7 +10,7 @@ export async function load({ parent }) { }; } -/** @type {import('../../.svelte-kit/types/src/core/sync/write_types/test/layout-advanced/(main)/sub/$types').PageData} */ +/** @type {import('../../.svelte-kit/types/(main)/sub/$types').PageData} */ const data = { main: '', root: '', diff --git a/packages/kit/src/core/sync/write_types/test/layout/+layout.js b/packages/kit/src/core/sync/write_types/test/layout/+layout.js index c8bc95024f98..8643783872c6 100644 --- a/packages/kit/src/core/sync/write_types/test/layout/+layout.js +++ b/packages/kit/src/core/sync/write_types/test/layout/+layout.js @@ -1,4 +1,4 @@ -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/layout/$types').LayoutLoad} */ +/** @type {import('./.svelte-kit/types/$types').LayoutLoad} */ export function load({ data }) { data.server; // @ts-expect-error diff --git a/packages/kit/src/core/sync/write_types/test/layout/+layout.server.js b/packages/kit/src/core/sync/write_types/test/layout/+layout.server.js index 77a2a9780b5b..f3b024c96c5b 100644 --- a/packages/kit/src/core/sync/write_types/test/layout/+layout.server.js +++ b/packages/kit/src/core/sync/write_types/test/layout/+layout.server.js @@ -1,4 +1,4 @@ -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/layout/$types').LayoutServerLoad} */ +/** @type {import('./.svelte-kit/types/$types').LayoutServerLoad} */ export function load() { return { server: 'server' diff --git a/packages/kit/src/core/sync/write_types/test/layout/+page.js b/packages/kit/src/core/sync/write_types/test/layout/+page.js index 4abd01995480..63b0672410d7 100644 --- a/packages/kit/src/core/sync/write_types/test/layout/+page.js +++ b/packages/kit/src/core/sync/write_types/test/layout/+page.js @@ -1,4 +1,4 @@ -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/layout/$types').PageLoad} */ +/** @type {import('./.svelte-kit/types/$types').PageLoad} */ export function load({ data }) { data.pageServer; // @ts-expect-error @@ -8,7 +8,7 @@ export function load({ data }) { }; } -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/layout/$types').PageData} */ +/** @type {import('./.svelte-kit/types/$types').PageData} */ const data = { shared: 'asd', pageShared: 'asd' diff --git a/packages/kit/src/core/sync/write_types/test/param-type-inference/optional/[[optionalNarrowedParam=narrowed]]/+page.js b/packages/kit/src/core/sync/write_types/test/param-type-inference/optional/[[optionalNarrowedParam=narrowed]]/+page.js index 024289bef97e..cbb0d64378c9 100644 --- a/packages/kit/src/core/sync/write_types/test/param-type-inference/optional/[[optionalNarrowedParam=narrowed]]/+page.js +++ b/packages/kit/src/core/sync/write_types/test/param-type-inference/optional/[[optionalNarrowedParam=narrowed]]/+page.js @@ -1,6 +1,6 @@ /* eslint-disable */ -/** @type {import('../../.svelte-kit/types/src/core/sync/write_types/test/param-type-inference/optional/[[optionalNarrowedParam=narrowed]]/$types').PageLoad} */ +/** @type {import('../../.svelte-kit/types/optional/[[optionalNarrowedParam=narrowed]]/$types').PageLoad} */ export function load({ params }) { if (params.optionalNarrowedParam) { /** @type {"a" | "b"} */ diff --git a/packages/kit/src/core/sync/write_types/test/param-type-inference/required/+layout.js b/packages/kit/src/core/sync/write_types/test/param-type-inference/required/+layout.js index 5a67f890cd8c..3c27fddc8492 100644 --- a/packages/kit/src/core/sync/write_types/test/param-type-inference/required/+layout.js +++ b/packages/kit/src/core/sync/write_types/test/param-type-inference/required/+layout.js @@ -1,6 +1,6 @@ /* eslint-disable */ -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/param-type-inference/required/$types').LayoutLoad} */ +/** @type {import('../.svelte-kit/types/required/$types').LayoutLoad} */ export function load({ params }) { if (params.narrowedParam) { /** @type {"a" | "b"} */ diff --git a/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[narrowedParam=narrowed]/+page.js b/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[narrowedParam=narrowed]/+page.js index 395ae659aa1d..76d9483badff 100644 --- a/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[narrowedParam=narrowed]/+page.js +++ b/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[narrowedParam=narrowed]/+page.js @@ -1,6 +1,6 @@ /* eslint-disable */ -/** @type {import('../../.svelte-kit/types/src/core/sync/write_types/test/param-type-inference/required/[narrowedParam=narrowed]/$types').PageLoad} */ +/** @type {import('../../.svelte-kit/types/required/[narrowedParam=narrowed]/$types').PageLoad} */ export function load({ params }) { /** @type {"a" | "b"} */ let a; diff --git a/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[regularParam=not_narrowed]/+page.js b/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[regularParam=not_narrowed]/+page.js index 6fd50653a023..bd803fe94597 100644 --- a/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[regularParam=not_narrowed]/+page.js +++ b/packages/kit/src/core/sync/write_types/test/param-type-inference/required/[regularParam=not_narrowed]/+page.js @@ -1,6 +1,6 @@ /* eslint-disable */ -/** @type {import('../../.svelte-kit/types/src/core/sync/write_types/test/param-type-inference/required/[regularParam=not_narrowed]/$types').PageLoad} */ +/** @type {import('../../.svelte-kit/types/required/[regularParam=not_narrowed]/$types').PageLoad} */ export function load({ params }) { /** @type {string} a*/ const a = params.regularParam; diff --git a/packages/kit/src/core/sync/write_types/test/param-type-inference/spread/[...spread=narrowed]/+page.js b/packages/kit/src/core/sync/write_types/test/param-type-inference/spread/[...spread=narrowed]/+page.js index f26d10e3aa74..393446edfb18 100644 --- a/packages/kit/src/core/sync/write_types/test/param-type-inference/spread/[...spread=narrowed]/+page.js +++ b/packages/kit/src/core/sync/write_types/test/param-type-inference/spread/[...spread=narrowed]/+page.js @@ -1,6 +1,6 @@ /* eslint-disable */ -/** @type {import('../../.svelte-kit/types/src/core/sync/write_types/test/param-type-inference/spread/[...spread=narrowed]/$types').PageLoad} */ +/** @type {import('../../.svelte-kit/types/spread/[...spread=narrowed]/$types').PageLoad} */ export function load({ params }) { /** @type {"a" | "b"} */ let a; diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/+page.js b/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/+page.js index 9d11e44f0552..e9b7de888b7f 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/+page.js +++ b/packages/kit/src/core/sync/write_types/test/simple-page-server-and-shared/+page.js @@ -1,4 +1,4 @@ -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/simple-page-server-and-shared/$types').PageLoad} */ +/** @type {import('./.svelte-kit/types/$types').PageLoad} */ export function load({ data }) { data.server; // @ts-expect-error @@ -8,7 +8,7 @@ export function load({ data }) { }; } -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/simple-page-server-and-shared/$types').PageData} */ +/** @type {import('./.svelte-kit/types/$types').PageData} */ const data = { shared: 'asd' }; diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-server-only/+page.server.js b/packages/kit/src/core/sync/write_types/test/simple-page-server-only/+page.server.js index cfdb779689e4..b33e149baf62 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-server-only/+page.server.js +++ b/packages/kit/src/core/sync/write_types/test/simple-page-server-only/+page.server.js @@ -8,7 +8,7 @@ export const actions = { default: () => ({ action: 'bar' }) }; -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/simple-page-server-only/$types').PageData} */ +/** @type {import('./.svelte-kit/types/$types').PageData} */ const data = { foo: 'asd' }; @@ -16,7 +16,7 @@ data.foo; // @ts-expect-error data.bar; -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/simple-page-server-only/$types').ActionData} */ +/** @type {import('./.svelte-kit/types/$types').ActionData} */ const actionData = { action: 'bar' }; actionData.action; // @ts-expect-error 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..836f9d5e0d67 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 @@ -1,4 +1,4 @@ -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/simple-page-server-only/sub/$types').PageServerLoad} */ +/** @type {import('../.svelte-kit/types/sub/$types').PageServerLoad} */ export function load() { if (Math.random() > 0.5) { return { @@ -7,7 +7,7 @@ export function load() { } } -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/simple-page-server-only/sub/$types').PageData} */ +/** @type {import('../.svelte-kit/types/sub/$types').PageData} */ const data = /** @type {any} */ ({ foo: 'bar' }); // the any cast prevents TypeScript from narrowing this to foo being defined diff --git a/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/+page.js b/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/+page.js index 900e9369bd13..03eee6efca6b 100644 --- a/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/+page.js +++ b/packages/kit/src/core/sync/write_types/test/simple-page-shared-only/+page.js @@ -4,7 +4,7 @@ export function load() { }; } -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/simple-page-shared-only/$types').PageData} */ +/** @type {import('./.svelte-kit/types/$types').PageData} */ const data = { shared: 'asd' }; 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..0ffaf618e561 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 @@ -1,4 +1,4 @@ -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/simple-page-shared-only/sub/$types').PageLoad} */ +/** @type {import('../.svelte-kit/types/sub/$types').PageLoad} */ export function load() { if (Math.random() > 0.5) { return { @@ -7,7 +7,7 @@ export function load() { } } -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/simple-page-shared-only/sub/$types').PageData} */ +/** @type {import('../.svelte-kit/types/sub/$types').PageData} */ const data = /** @type {any} */ ({ foo: 'bar' }); // the any cast prevents TypeScript from narrowing this to foo being defined diff --git a/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/+layout.js b/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/+layout.js index f0ae674a8f07..44f1d712d137 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/+layout.js +++ b/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/+layout.js @@ -1,4 +1,4 @@ -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/$types').LayoutLoad} */ +/** @type {import('./.svelte-kit/types/$types').LayoutLoad} */ export function load({ params }) { params.rest; params.slug; diff --git a/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/nested/+layout.js b/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/nested/+layout.js index d41974fea45b..563f8f2c81f3 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/nested/+layout.js +++ b/packages/kit/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/nested/+layout.js @@ -1,4 +1,4 @@ -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/slugs-layout-not-all-pages-have-load/nested/$types').LayoutLoad} */ +/** @type {import('../.svelte-kit/types/nested/$types').LayoutLoad} */ export function load({ params }) { params.rest; // @ts-expect-error 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..88e9d5dba3cd 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 @@ -1,4 +1,4 @@ -/** @type {import('./.svelte-kit/types/src/core/sync/write_types/test/slugs/$types').LayoutLoad} */ +/** @type {import('./.svelte-kit/types/$types').LayoutLoad} */ export function load({ params }) { params.optional; params.rest; diff --git a/packages/kit/src/core/sync/write_types/test/slugs/[...rest]/+page.js b/packages/kit/src/core/sync/write_types/test/slugs/[...rest]/+page.js index cdebe4d37303..067a12c5c1d0 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs/[...rest]/+page.js +++ b/packages/kit/src/core/sync/write_types/test/slugs/[...rest]/+page.js @@ -1,4 +1,4 @@ -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/slugs/[...rest]/$types').PageLoad} */ +/** @type {import('../.svelte-kit/types/[...rest]/$types').PageLoad} */ export function load({ params }) { params.rest.charAt(1); // @ts-expect-error diff --git a/packages/kit/src/core/sync/write_types/test/slugs/[slug]/+page.js b/packages/kit/src/core/sync/write_types/test/slugs/[slug]/+page.js index 9a82f5ab5782..0f0777d66937 100644 --- a/packages/kit/src/core/sync/write_types/test/slugs/[slug]/+page.js +++ b/packages/kit/src/core/sync/write_types/test/slugs/[slug]/+page.js @@ -1,4 +1,4 @@ -/** @type {import('../.svelte-kit/types/src/core/sync/write_types/test/slugs/[slug]/$types').PageLoad} */ +/** @type {import('../.svelte-kit/types/[slug]/$types').PageLoad} */ export function load({ params }) { params.slug.charAt(1); // @ts-expect-error 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..55c3ddcd0ec3 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 @@ -1,4 +1,4 @@ -/** @type {import('../../.svelte-kit/types/src/core/sync/write_types/test/slugs/x/[[optional]]/$types').PageLoad} */ +/** @type {import('../../.svelte-kit/types/x/[[optional]]/$types').PageLoad} */ export async function load({ parent, params }) { const p = await parent(); /** @type {NonNullable} */ diff --git a/packages/kit/src/core/utils.js b/packages/kit/src/core/utils.js index ff6b7a460639..73ded00b82fb 100644 --- a/packages/kit/src/core/utils.js +++ b/packages/kit/src/core/utils.js @@ -1,6 +1,5 @@ import fs from 'node:fs'; import path from 'node:path'; -import process from 'node:process'; import { fileURLToPath } from 'node:url'; import { styleText } from 'node:util'; import { posixify, to_fs } from '../utils/filesystem.js'; @@ -19,10 +18,14 @@ export const runtime_directory = posixify(fileURLToPath(new URL('../runtime', im * This allows us to import SvelteKit internals that aren't exposed via `pkg.exports` in a * way that works whether `@sveltejs/kit` is installed inside the project's `node_modules` * or in a workspace root + * @param {string} root + * @returns {string} */ -export const runtime_base = runtime_directory.startsWith(process.cwd()) - ? `/${path.relative('.', runtime_directory)}` - : to_fs(runtime_directory); +export function get_runtime_base(root) { + return runtime_directory.startsWith(root) + ? `/${path.relative(root, runtime_directory)}` + : to_fs(runtime_directory); +} function noop() {} diff --git a/packages/kit/src/exports/vite/build/build_server.js b/packages/kit/src/exports/vite/build/build_server.js index 379e0be23e3e..10ace8a58762 100644 --- a/packages/kit/src/exports/vite/build/build_server.js +++ b/packages/kit/src/exports/vite/build/build_server.js @@ -15,6 +15,7 @@ import { fix_css_urls } from '../../../utils/css.js'; * @param {string | null} assets_path * @param {import('vite').Rollup.RollupOutput['output'] | null} client_chunks * @param {import('types').RecursiveRequired} output_config + * @param {string} root */ export function build_server_nodes( out, @@ -24,7 +25,8 @@ export function build_server_nodes( client_manifest, assets_path, client_chunks, - output_config + output_config, + root ) { mkdirp(`${out}/server/nodes`); mkdirp(`${out}/server/stylesheets`); @@ -113,7 +115,7 @@ export function build_server_nodes( exports.push( 'let component_cache;', `export const component = async () => component_cache ??= (await import('../${ - resolve_symlinks(server_manifest, node.component).chunk.file + resolve_symlinks(server_manifest, node.component, root).chunk.file }')).default;` ); } @@ -123,7 +125,7 @@ export function build_server_nodes( exports.push(`export const universal = ${s(node.page_options, null, 2)};`); } else { imports.push( - `import * as universal from '../${resolve_symlinks(server_manifest, node.universal).chunk.file}';` + `import * as universal from '../${resolve_symlinks(server_manifest, node.universal, root).chunk.file}';` ); // TODO: when building for analysis, explain why the file was loaded on the server if we fail to load it exports.push('export { universal };'); @@ -133,7 +135,7 @@ export function build_server_nodes( if (node.server) { imports.push( - `import * as server from '../${resolve_symlinks(server_manifest, node.server).chunk.file}';` + `import * as server from '../${resolve_symlinks(server_manifest, node.server, root).chunk.file}';` ); exports.push('export { server };'); exports.push(`export const server_id = ${s(node.server)};`); @@ -145,7 +147,7 @@ export function build_server_nodes( output_config.bundleStrategy === 'split' ) { const entry_path = `${normalizePath(kit.outDir)}/generated/client-optimized/nodes/${i}.js`; - const entry = find_deps(client_manifest, entry_path, true); + const entry = find_deps(client_manifest, entry_path, true, root); // Eagerly load client stylesheets and fonts imported by the SSR-ed page to avoid FOUC. // However, if it is not used during SSR (not present in the server manifest), @@ -154,13 +156,13 @@ export function build_server_nodes( /** @type {import('types').AssetDependencies | undefined} */ let component; if (node.component) { - component = find_deps(server_manifest, node.component, true); + component = find_deps(server_manifest, node.component, true, root); } /** @type {import('types').AssetDependencies | undefined} */ let universal; if (node.universal) { - universal = find_deps(server_manifest, node.universal, true); + universal = find_deps(server_manifest, node.universal, true, root); } /** @type {Set} */ diff --git a/packages/kit/src/exports/vite/build/build_service_worker.js b/packages/kit/src/exports/vite/build/build_service_worker.js index aa9b6e3a6ac1..d9ab47f331f1 100644 --- a/packages/kit/src/exports/vite/build/build_service_worker.js +++ b/packages/kit/src/exports/vite/build/build_service_worker.js @@ -1,4 +1,3 @@ -import process from 'node:process'; import * as vite from 'vite'; import { dedent } from '../../../core/sync/utils.js'; import { s } from '../../../utils/misc.js'; @@ -84,7 +83,7 @@ export async function build_service_worker( return create_static_module('$env/static/public', env.public); } - const normalized_cwd = vite.normalizePath(process.cwd()); + const normalized_cwd = vite.normalizePath(vite_config.root); const normalized_lib = vite.normalizePath(kit.files.lib); const relative = normalize_id(id, normalized_lib, normalized_cwd); const stripped = strip_virtual_prefix(relative); @@ -116,7 +115,7 @@ export async function build_service_worker( publicDir: false, plugins: [sw_virtual_modules], resolve: { - alias: [...get_config_aliases(kit)] + alias: [...get_config_aliases(kit, vite_config.root)] }, experimental: { renderBuiltUrl(filename) { diff --git a/packages/kit/src/exports/vite/build/utils.js b/packages/kit/src/exports/vite/build/utils.js index 8da2e7020c6a..86a0dd33b0b1 100644 --- a/packages/kit/src/exports/vite/build/utils.js +++ b/packages/kit/src/exports/vite/build/utils.js @@ -8,9 +8,10 @@ import { s } from '../../../utils/misc.js'; * @param {import('vite').Manifest} manifest * @param {string} entry * @param {boolean} add_dynamic_css + * @param {string} root * @returns {import('types').AssetDependencies} */ -export function find_deps(manifest, entry, add_dynamic_css) { +export function find_deps(manifest, entry, add_dynamic_css, root) { /** @type {Set} */ const seen = new Set(); @@ -36,7 +37,7 @@ export function find_deps(manifest, entry, add_dynamic_css) { if (seen.has(current)) return; seen.add(current); - const { chunk } = resolve_symlinks(manifest, current); + const { chunk } = resolve_symlinks(manifest, current, root); if (add_js) imports.add(chunk.file); @@ -82,7 +83,7 @@ export function find_deps(manifest, entry, add_dynamic_css) { } } - const { chunk, file } = resolve_symlinks(manifest, entry); + const { chunk, file } = resolve_symlinks(manifest, entry, root); traverse(file, true, entry, 0); @@ -102,10 +103,11 @@ export function find_deps(manifest, entry, add_dynamic_css) { /** * @param {import('vite').Manifest} manifest * @param {string} file + * @param {string} root */ -export function resolve_symlinks(manifest, file) { +export function resolve_symlinks(manifest, file, root) { while (!manifest[file]) { - const next = normalizePath(path.relative('.', fs.realpathSync(file))); + const next = normalizePath(path.relative(root, fs.realpathSync(file))); if (next === file) throw new Error(`Could not find file "${file}" in Vite manifest`); file = next; } diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 7313f237d353..52923f56e880 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -1,6 +1,5 @@ import fs from 'node:fs'; import path from 'node:path'; -import process from 'node:process'; import { URL } from 'node:url'; import { AsyncLocalStorage } from 'node:async_hooks'; import { styleText } from 'node:util'; @@ -12,14 +11,13 @@ import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesyst import { load_error_page } from '../../../core/config/index.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; import * as sync from '../../../core/sync/sync.js'; -import { get_mime_lookup, runtime_base } from '../../../core/utils.js'; +import { get_mime_lookup, get_runtime_base } from '../../../core/utils.js'; import { compact } from '../../../utils/array.js'; import { not_found } from '../utils.js'; import { SCHEME } from '../../../utils/url.js'; import { check_feature } from '../../../utils/features.js'; import { escape_html } from '../../../utils/escape.js'; -const cwd = process.cwd(); // vite-specifc queries that we should skip handling for css urls const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; @@ -28,9 +26,10 @@ const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; * @param {import('vite').ResolvedConfig} vite_config * @param {import('types').ValidatedConfig} svelte_config * @param {() => Array<{ hash: string, file: string }>} get_remotes + * @param {string} root The project root directory * @return {Promise void>>} */ -export async function dev(vite, vite_config, svelte_config, get_remotes) { +export async function dev(vite, vite_config, svelte_config, get_remotes, root) { const async_local_storage = new AsyncLocalStorage(); globalThis.__SVELTEKIT_TRACK__ = (label) => { @@ -51,7 +50,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { return fetch(info, init); }; - sync.init(svelte_config, vite_config.mode); + sync.init(svelte_config, vite_config.mode, root); /** @type {import('types').ManifestData} */ let manifest_data; @@ -103,7 +102,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { function update_manifest() { try { - ({ manifest_data } = sync.create(svelte_config)); + ({ manifest_data } = sync.create(svelte_config, root)); if (manifest_error) { manifest_error = null; @@ -131,7 +130,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { mimeTypes: get_mime_lookup(manifest_data), _: { client: { - start: `${runtime_base}/client/entry.js`, + start: `${get_runtime_base(root)}/client/entry.js`, app: `${to_fs(svelte_config.kit.outDir)}/generated/client/app.js`, imports: [], stylesheets: [], @@ -274,7 +273,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { page: route.page, endpoint: endpoint ? async () => { - const url = path.resolve(cwd, endpoint.file); + const url = path.resolve(root, endpoint.file); return await loud_ssr_load_module(url); } : null, @@ -288,7 +287,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { for (const key in manifest_data.matchers) { const file = manifest_data.matchers[key]; - const url = path.resolve(cwd, file); + const url = path.resolve(root, file); const module = await vite.ssrLoadModule(url, { fixStacktrace: true }); if (module.match) { @@ -358,7 +357,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { // Don't run for a single file if the whole manifest is about to get updated // Unless it's a file where the trailing slash page option might have changed if (timeout || restarting || !/\+(page|layout|server).*$/.test(file)) return; - sync.update(svelte_config, manifest_data, file); + sync.update(svelte_config, manifest_data, file, root); }); const { appTemplate, errorTemplate, serviceWorker, hooks } = svelte_config.kit.files; @@ -381,7 +380,7 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { file.startsWith(serviceWorker) || file.startsWith(hooks.server) ) { - sync.server(svelte_config); + sync.server(svelte_config, root); } }); @@ -453,7 +452,9 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { }`; const decoded = decodeURI(new URL(base + req.url).pathname); - const file = posixify(path.resolve(decoded.slice(svelte_config.kit.paths.base.length + 1))); + const file = posixify( + path.resolve(root, decoded.slice(svelte_config.kit.paths.base.length + 1)) + ); const is_file = fs.existsSync(file) && !fs.statSync(file).isDirectory(); const allowed = !vite_config.server.fs.strict || @@ -496,11 +497,13 @@ export async function dev(vite, vite_config, svelte_config, get_remotes) { // we have to import `Server` before calling `set_assets` const { Server } = /** @type {import('types').ServerModule} */ ( - await vite.ssrLoadModule(`${runtime_base}/server/index.js`, { fixStacktrace: true }) + await vite.ssrLoadModule(`${get_runtime_base(root)}/server/index.js`, { + fixStacktrace: true + }) ); const { set_fix_stack_trace } = await vite.ssrLoadModule( - `${runtime_base}/shared-server.js` + `${get_runtime_base(root)}/shared-server.js` ); set_fix_stack_trace(fix_stack_trace); diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 96ccab11bb78..162d45121dde 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -10,7 +10,6 @@ import { create_static_module, create_dynamic_module } from '../../core/env.js'; import * as sync from '../../core/sync/sync.js'; import { create_assets } from '../../core/sync/create_manifest_data/index.js'; import { runtime_directory, logger } from '../../core/utils.js'; -import { load_config } from '../../core/config/index.js'; import { generate_manifest } from '../../core/generate_manifest/index.js'; import { build_server_nodes } from './build/build_server.js'; import { build_service_worker } from './build/build_service_worker.js'; @@ -43,8 +42,12 @@ import { import { import_peer } from '../../utils/import.js'; import { compact } from '../../utils/array.js'; import { should_ignore, has_children } from './static_analysis/utils.js'; +import { load_config } from '../../core/config/index.js'; + +const cwd = process.cwd(); -const cwd = posixify(process.cwd()); +/** @type {string} */ +let root; /** @type {import('./types.js').EnforcedConfig} */ const enforced_config = { @@ -79,8 +82,7 @@ const enforced_config = { $lib: true, '$service-worker': true } - }, - root: true + } }; const options_regex = /(export\s+const\s+(prerender|csr|ssr|trailingSlash))\s*=/s; @@ -100,7 +102,7 @@ const warning_preprocessor = { const fixed = basename.replace('.svelte', '(.server).js/ts'); const message = - `\n${styleText(['bold', 'red'], path.relative('.', filename))}\n` + + `\n${styleText(['bold', 'red'], path.relative(root, filename))}\n` + `\`${match[1]}\` will be ignored — move it to ${fixed} instead. See https://svelte.dev/docs/kit/page-options for more information.`; if (!warned.has(message)) { @@ -117,7 +119,7 @@ const warning_preprocessor = { if (basename.startsWith('+layout.') && !has_children(content, true)) { const message = - `\n${styleText(['bold', 'red'], path.relative('.', filename))}\n` + + `\n${styleText(['bold', 'red'], path.relative(root, filename))}\n` + '`` or `{@render ...}` tag' + ' missing — inner content will not be rendered'; @@ -129,36 +131,88 @@ const warning_preprocessor = { } }; +/** @type {import('@sveltejs/vite-plugin-svelte')} */ +let vite_plugin_svelte; + /** * Returns the SvelteKit Vite plugins. * @returns {Promise} */ export async function sveltekit() { - const svelte_config = await load_config(); - - /** @type {import('@sveltejs/vite-plugin-svelte').Options['preprocess']} */ - let preprocess = svelte_config.preprocess; - if (Array.isArray(preprocess)) { - preprocess = [...preprocess, warning_preprocessor]; - } else if (preprocess) { - preprocess = [preprocess, warning_preprocessor]; - } else { - preprocess = warning_preprocessor; - } + // the config options will be set only after the Vite `config` hook runs + // because we need to find `svelte.config.js` relative to `vite.config.root` + const svelte_config = /** @type {import('types').ValidatedConfig} */ ({}); /** @type {import('@sveltejs/vite-plugin-svelte').Options} */ const vite_plugin_svelte_options = { - configFile: false, - extensions: svelte_config.extensions, - preprocess, - onwarn: svelte_config.onwarn, - compilerOptions: { ...svelte_config.compilerOptions }, - ...svelte_config.vitePlugin + // we don't want vite-plugin-svelte to load the config file itself because + // it will try to validate it without knowing that kit options are valid + configFile: false }; - const { svelte } = await import_peer('@sveltejs/vite-plugin-svelte'); + /** @type {import('@sveltejs/vite-plugin-svelte')} */ + vite_plugin_svelte = await import_peer('@sveltejs/vite-plugin-svelte', cwd); + + return [ + plugin_svelte_config({ vite_plugin_svelte_options, svelte_config }), + ...vite_plugin_svelte.svelte(vite_plugin_svelte_options), + ...kit({ svelte_config }) + ]; +} - return [...svelte(vite_plugin_svelte_options), ...(await kit({ svelte_config }))]; +/** @param {import('vite').UserConfig | import('vite').ResolvedConfig} vite_config */ +function resolve_root(vite_config) { + return posixify(vite_config.root ? path.resolve(vite_config.root) : cwd); +} + +/** + * Resolves the Svelte config using the `vite.config.root` setting before any + * of our other plugins try to access the config objects + * @param {{ + * vite_plugin_svelte_options: import('@sveltejs/vite-plugin-svelte').Options; + * svelte_config: import('types').ValidatedConfig; + * }} options + * @return {import('vite').Plugin} + */ +function plugin_svelte_config({ vite_plugin_svelte_options, svelte_config }) { + return { + name: 'vite-plugin-sveltekit-resolve-svelte-config', + // make sure it runs first + enforce: 'pre', + config: { + order: 'pre', + async handler(config) { + root = resolve_root(config); + + const user_svelte_config = await load_config({ cwd: root }); + + /** @type {import('@sveltejs/vite-plugin-svelte').Options['preprocess']} */ + let preprocess = user_svelte_config.preprocess; + if (Array.isArray(preprocess)) { + preprocess = [...preprocess, warning_preprocessor]; + } else if (preprocess) { + preprocess = [preprocess, warning_preprocessor]; + } else { + preprocess = warning_preprocessor; + } + + vite_plugin_svelte_options.extensions = user_svelte_config.extensions; + vite_plugin_svelte_options.preprocess = preprocess; + vite_plugin_svelte_options.onwarn = user_svelte_config.onwarn; + vite_plugin_svelte_options.compilerOptions = { ...user_svelte_config.compilerOptions }; + Object.assign(vite_plugin_svelte_options, user_svelte_config.vitePlugin); + + Object.assign(svelte_config, user_svelte_config); + } + }, + // TODO: do we even need to set `root` based on the final Vite config? + configResolved: { + order: 'pre', + handler(config) { + root = resolve_root(config); + } + } + }; } // These variables live outside the `kit()` function because it is re-invoked by each Vite build @@ -171,15 +225,6 @@ let manifest_data; /** @type {import('types').ServerMetadata | undefined} only set at build time once analysis is finished */ let build_metadata = undefined; -/** - * TODO: SvelteKit 4 - replace with RegExp.escape - available only in Node 24 - * @param {string} str - * @returns - */ -const reg_exp_escape = function (str) { - return str.replace(/[-[\]{}()*+!<=:?.\\/\\^$|#\s,]/g, '\\$&'); -}; - /** * Returns the SvelteKit Vite plugin. Vite executes Rollup hooks as well as some of its own. * Background reading is available at: @@ -191,16 +236,19 @@ const reg_exp_escape = function (str) { * - https://rollupjs.org/guide/en/#output-generation-hooks * * @param {{ svelte_config: import('types').ValidatedConfig }} options - * @return {Promise} + * @return {import('vite').Plugin[]} */ -async function kit({ svelte_config }) { +function kit({ svelte_config }) { /** @type {import('vite')} */ - const vite = await import_peer('vite'); + let vite; - const { kit } = svelte_config; - const out = `${kit.outDir}/output`; + /** @type {import('types').ValidatedKitConfig} */ + let kit; + /** @type {string} */ + let out; - const version_hash = hash(kit.version.name); + /** @type {string} */ + let version_hash; /** @type {import('vite').ResolvedConfig} */ let vite_config; @@ -220,13 +268,17 @@ async function kit({ svelte_config }) { /** @type {import('vite').UserConfig} */ let initial_config; - const service_worker_entry_file = resolve_entry(kit.files.serviceWorker); - const parsed_service_worker = path.parse(kit.files.serviceWorker); - - const normalized_cwd = vite.normalizePath(cwd); - const normalized_lib = vite.normalizePath(kit.files.lib); - const normalized_node_modules = vite.normalizePath(path.resolve('node_modules')); - + /** @type {string | null} */ + let service_worker_entry_file; + /** @type {import('node:path').ParsedPath} */ + let parsed_service_worker; + + /** @type {string} */ + let normalized_cwd; + /** @type {string} */ + let normalized_lib; + /** @type {string} */ + let normalized_node_modules; /** * A map showing which features (such as `$app/server:read`) are defined * in which chunks, so that we can later determine which routes use which features @@ -240,25 +292,38 @@ async function kit({ svelte_config }) { /** @type {import('vite').Plugin} */ const plugin_setup = { name: 'vite-plugin-sveltekit-setup', - /** * Build the SvelteKit-provided Vite config to be merged with the user's vite.config.js file. * @see https://vitejs.dev/guide/api-plugin.html#config */ - config(config, config_env) { + async config(config, config_env) { initial_config = config; vite_config_env = config_env; is_build = config_env.command === 'build'; + ({ kit } = svelte_config); + out = `${kit.outDir}/output`; + + version_hash = hash(kit.version.name); + env = get_env(kit.env, vite_config_env.mode); + service_worker_entry_file = resolve_entry(kit.files.serviceWorker); + parsed_service_worker = path.parse(kit.files.serviceWorker); + + vite = await import_peer('vite', root); + + normalized_cwd = vite.normalizePath(root); + normalized_lib = vite.normalizePath(kit.files.lib); + normalized_node_modules = vite.normalizePath(path.resolve(root, 'node_modules')); + const allow = new Set([ kit.files.lib, kit.files.routes, kit.outDir, - path.resolve('src'), // TODO this isn't correct if user changed all his files to sth else than src (like in test/options) - path.resolve('node_modules'), - path.resolve(vite.searchForWorkspaceRoot(cwd), 'node_modules') + path.resolve(root, kit.files.src), + path.resolve(root, 'node_modules'), + path.resolve(cwd, 'node_modules') ]); // We can only add directories to the allow list, so we find out @@ -275,10 +340,9 @@ async function kit({ svelte_config }) { alias: [ { find: '__SERVER__', replacement: `${generated}/server` }, { find: '$app', replacement: `${runtime_directory}/app` }, - ...get_config_aliases(kit) + ...get_config_aliases(kit, root) ] }, - root: cwd, server: { cors: { preflightContinue: true }, fs: { @@ -375,7 +439,7 @@ async function kit({ svelte_config }) { }; if (!secondary_build_started) { - manifest_data = sync.all(svelte_config, config_env.mode).manifest_data; + manifest_data = sync.all(svelte_config, config_env.mode, root).manifest_data; // During the initial server build we don't know yet new_config.define.__SVELTEKIT_HAS_SERVER_LOAD__ = 'true'; new_config.define.__SVELTEKIT_HAS_UNIVERSAL_LOAD__ = 'true'; @@ -491,7 +555,8 @@ async function kit({ svelte_config }) { case env_dynamic_private: return create_dynamic_module( 'private', - vite_config_env.command === 'serve' ? env.private : undefined + vite_config_env.command === 'serve' ? env.private : undefined, + root ); case env_dynamic_public: { @@ -506,7 +571,8 @@ async function kit({ svelte_config }) { return create_dynamic_module( 'public', - vite_config_env.command === 'serve' ? env.public : undefined + vite_config_env.command === 'serve' ? env.public : undefined, + root ); } @@ -605,15 +671,8 @@ async function kit({ svelte_config }) { exactRegex(env_static_private), exactRegex(env_dynamic_private), exactRegex(app_server), - prefixRegex(`${normalized_lib}/server/`), - // skip .server.js files outside the cwd or in node_modules, as the filename might not mean 'server-only module' in this context - // should be equivalent to: (id.startsWith(normalized_cwd) && !id.startsWith(normalized_node_modules) && server_only_pattern.test(path.basename(id)) - // TODO: address https://github.com/sveltejs/kit/issues/12529 - // if we decide to do it then remove the CWD portion of the regex - // if we decide not to do it then this regex is complicated enough that it should be refactored out and independently tested - new RegExp( - `^(?!${reg_exp_escape(normalized_node_modules)})${reg_exp_escape(normalized_cwd)}${server_only_pattern.source}$` - ) + /\/server\//, + new RegExp(`${server_only_pattern.source}$`) ] }, handler(id, options) { @@ -622,8 +681,27 @@ async function kit({ svelte_config }) { return; } + // skip .server.js files outside the cwd or in node_modules, as the filename might not mean 'server-only module' in this context + const is_internal = + id.startsWith(normalized_cwd) && !id.startsWith(normalized_node_modules); + + const normalized = normalize_id(id, normalized_lib, normalized_cwd); + + const is_server_only = + normalized === '$env/static/private' || + normalized === '$env/dynamic/private' || + normalized === '$app/server' || + normalized.startsWith('$lib/server/') || + (is_internal && server_only_pattern.test(path.basename(id))); + + // skip .server.js files outside the cwd or in node_modules, as the filename might not mean 'server-only module' in this context + // TODO: address https://github.com/sveltejs/kit/issues/12529 + if (!is_server_only) { + return; + } + // in dev, this doesn't exist, so we need to create it - manifest_data ??= sync.all(svelte_config, vite_config_env.mode).manifest_data; + manifest_data ??= sync.all(svelte_config, vite_config_env.mode, root).manifest_data; /** @type {Set} */ const entrypoints = new Set(); @@ -635,7 +713,6 @@ async function kit({ svelte_config }) { if (manifest_data.hooks.client) entrypoints.add(manifest_data.hooks.client); if (manifest_data.hooks.universal) entrypoints.add(manifest_data.hooks.universal); - const normalized = normalize_id(id, normalized_lib, normalized_cwd); const chain = [normalized]; let current = normalized; @@ -716,6 +793,10 @@ async function kit({ svelte_config }) { id: prefixRegex('\0sveltekit-remote:') }, handler(id) { + if (!kit.experimental.remoteFunctions) { + return null; + } + // On-the-fly generated entry point for remote file just forwards the original module // We're not using manualChunks because it can cause problems with circular dependencies // (e.g. https://github.com/sveltejs/kit/issues/14679) and module ordering in general @@ -728,35 +809,42 @@ async function kit({ svelte_config }) { }, configureServer(_dev_server) { + if (!kit.experimental.remoteFunctions) { + return; + } + dev_server = _dev_server; }, - transform: { - filter: { - id: new RegExp( - `\\.remote(?:${svelte_config.kit.moduleExtensions.map((e) => e.replaceAll('.', '\\.')).join('|')})(?:\\?.*)?$` - ) - }, - async handler(code, id, opts) { - const file = posixify(path.relative(cwd, id)); - const remote = { - hash: hash(file), - file - }; + async transform(code, id, opts) { + if (!kit.experimental.remoteFunctions) { + return; + } - remotes.push(remote); + const normalized = normalize_id(id, normalized_lib, normalized_cwd); + if (!svelte_config.kit.moduleExtensions.some((ext) => normalized.endsWith(`.remote${ext}`))) { + return; + } + + const file = posixify(path.relative(root, id)); + const remote = { + hash: hash(file), + file + }; - if (opts?.ssr) { - // we need to add an `await Promise.resolve()` because if the user imports this function - // on the client AND in a load function when loading the client module we will trigger - // an ssrLoadModule during dev. During a link preload, the module can be mistakenly - // loaded and transformed twice and the first time all its exports would be undefined - // triggering a dev server error. By adding a microtask we ensure that the module is fully loaded + remotes.push(remote); - // Extra newlines to prevent syntax errors around missing semicolons or comments - code += - '\n\n' + - dedent` + if (opts?.ssr) { + // we need to add an `await Promise.resolve()` because if the user imports this function + // on the client AND in a load function when loading the client module we will trigger + // an ssrLoadModule during dev. During a link preload, the module can be mistakenly + // loaded and transformed twice and the first time all its exports would be undefined + // triggering a dev server error. By adding a microtask we ensure that the module is fully loaded + + // Extra newlines to prevent syntax errors around missing semicolons or comments + code += + '\n\n' + + dedent` import * as $$_self_$$ from './${path.basename(id)}'; import { init_remote_functions as $$_init_$$ } from '@sveltejs/kit/internal'; @@ -770,70 +858,69 @@ async function kit({ svelte_config }) { } `; - // Emit a dedicated entry chunk for this remote in SSR builds (prod only) - if (!dev_server) { - remote_original_by_hash.set(remote.hash, id); - if (!emitted_remote_hashes.has(remote.hash)) { - this.emitFile({ - type: 'chunk', - id: `\0sveltekit-remote:${remote.hash}`, - name: `remote-${remote.hash}` - }); - emitted_remote_hashes.add(remote.hash); - } + // Emit a dedicated entry chunk for this remote in SSR builds (prod only) + if (!dev_server) { + remote_original_by_hash.set(remote.hash, id); + if (!emitted_remote_hashes.has(remote.hash)) { + this.emitFile({ + type: 'chunk', + id: `\0sveltekit-remote:${remote.hash}`, + name: `remote-${remote.hash}` + }); + emitted_remote_hashes.add(remote.hash); } - - return code; } - // For the client, read the exports and create a new module that only contains fetch functions with the correct metadata + return code; + } - /** @type {Map} */ - const map = new Map(); + // For the client, read the exports and create a new module that only contains fetch functions with the correct metadata - // in dev, load the server module here (which will result in this hook - // being called again with `opts.ssr === true` if the module isn't - // already loaded) so we can determine what it exports - if (dev_server) { - const module = await dev_server.ssrLoadModule(id); + /** @type {Map} */ + const map = new Map(); - for (const [name, value] of Object.entries(module)) { - const type = value?.__?.type; - if (type) { - map.set(name, type); - } + // in dev, load the server module here (which will result in this hook + // being called again with `opts.ssr === true` if the module isn't + // already loaded) so we can determine what it exports + if (dev_server) { + const module = await dev_server.ssrLoadModule(id); + + for (const [name, value] of Object.entries(module)) { + const type = value?.__?.type; + if (type) { + map.set(name, type); } } + } - // in prod, we already built and analysed the server code before - // building the client code, so `remote_exports` is populated - else if (build_metadata?.remotes) { - const exports = build_metadata?.remotes.get(remote.hash); - if (!exports) throw new Error('Expected to find metadata for remote file ' + id); + // in prod, we already built and analysed the server code before + // building the client code, so `remote_exports` is populated + else if (build_metadata?.remotes) { + const exports = build_metadata?.remotes.get(remote.hash); + if (!exports) throw new Error('Expected to find metadata for remote file ' + id); - for (const [name, value] of exports) { - map.set(name, value.type); - } + for (const [name, value] of exports) { + map.set(name, value.type); } + } - let namespace = '__remote'; - let uid = 1; - while (map.has(namespace)) namespace = `__remote${uid++}`; + let namespace = '__remote'; + let uid = 1; + while (map.has(namespace)) namespace = `__remote${uid++}`; - const exports = Array.from(map).map(([name, type]) => { - return `export const ${name} = ${namespace}.${type}('${remote.hash}/${name}');`; - }); - - let result = `import * as ${namespace} from '__sveltekit/remote';\n\n${exports.join('\n')}\n`; + const exports = Array.from(map).map(([name, type]) => { + return `export const ${name} = ${namespace}.${type}('${remote.hash}/${name}');`; + }); - if (dev_server) { - result += `\nimport.meta.hot?.accept();\n`; - } + let result = `import * as ${namespace} from '__sveltekit/remote';\n\n${exports.join('\n')}\n`; - return { - code: result - }; + if (dev_server) { + result += `\nimport.meta.hot?.accept();\n`; } + + return { + code: result + }; } }; @@ -866,7 +953,7 @@ async function kit({ svelte_config }) { // add entry points for every endpoint... manifest_data.routes.forEach((route) => { if (route.endpoint) { - const resolved = path.resolve(route.endpoint.file); + const resolved = path.resolve(root, route.endpoint.file); const relative = decodeURIComponent(path.relative(kit.files.routes, resolved)); const name = posixify(path.join('entries/endpoints', relative.replace(/\.js$/, ''))); input[name] = resolved; @@ -877,7 +964,7 @@ async function kit({ svelte_config }) { manifest_data.nodes.forEach((node) => { for (const file of [node.component, node.universal, node.server]) { if (file) { - const resolved = path.resolve(file); + const resolved = path.resolve(root, file); const relative = decodeURIComponent(path.relative(kit.files.routes, resolved)); const name = relative.startsWith('..') @@ -891,15 +978,15 @@ async function kit({ svelte_config }) { // ...and every matcher Object.entries(manifest_data.matchers).forEach(([key, file]) => { const name = posixify(path.join('entries/matchers', key)); - input[name] = path.resolve(file); + input[name] = path.resolve(root, file); }); // ...and the hooks files if (manifest_data.hooks.server) { - input['entries/hooks.server'] = path.resolve(manifest_data.hooks.server); + input['entries/hooks.server'] = path.resolve(root, manifest_data.hooks.server); } if (manifest_data.hooks.universal) { - input['entries/hooks.universal'] = path.resolve(manifest_data.hooks.universal); + input['entries/hooks.universal'] = path.resolve(root, manifest_data.hooks.universal); } // ...and the server instrumentation file @@ -1016,7 +1103,7 @@ async function kit({ svelte_config }) { * @see https://vitejs.dev/guide/api-plugin.html#configureserver */ async configureServer(vite) { - return await dev(vite, vite_config, svelte_config, () => remotes); + return await dev(vite, vite_config, svelte_config, () => remotes, root); }, /** @@ -1100,7 +1187,8 @@ async function kit({ svelte_config }) { prerendered: [], relative_path: '.', routes: manifest_data.routes, - remotes + remotes, + root })};\n` ); @@ -1115,7 +1203,8 @@ async function kit({ svelte_config }) { env: { ...env.private, ...env.public }, out, output_config: svelte_config.output, - remotes + remotes, + root }); build_metadata = metadata; @@ -1210,7 +1299,7 @@ async function kit({ svelte_config }) { * @param {boolean} [add_dynamic_css] */ const deps_of = (entry, add_dynamic_css = false) => - find_deps(client_manifest, posixify(path.relative('.', entry)), add_dynamic_css); + find_deps(client_manifest, posixify(path.relative(root, entry)), add_dynamic_css, root); if (svelte_config.kit.output.bundleStrategy === 'split') { const start = deps_of(`${runtime_directory}/client/entry.js`); @@ -1237,7 +1326,8 @@ async function kit({ svelte_config }) { const deps = deps_of(entry, true); const file = resolve_symlinks( client_manifest, - `${kit.outDir}/generated/client-optimized/nodes/${i}.js` + `${kit.outDir}/generated/client-optimized/nodes/${i}.js`, + root ).chunk.file; return { file, css: deps.stylesheets }; @@ -1301,7 +1391,8 @@ async function kit({ svelte_config }) { prerendered: [], relative_path: '.', routes: manifest_data.routes, - remotes + remotes, + root })};\n` ); @@ -1314,7 +1405,8 @@ async function kit({ svelte_config }) { client_manifest, assets_path, client_chunks, - svelte_config.kit.output + svelte_config.kit.output, + root ); // ...and prerender @@ -1324,7 +1416,8 @@ async function kit({ svelte_config }) { manifest_path, metadata, verbose, - env: { ...env.private, ...env.public } + env: { ...env.private, ...env.public }, + root }); // generate a new manifest that doesn't include prerendered pages @@ -1335,7 +1428,8 @@ async function kit({ svelte_config }) { prerendered: prerendered.paths, relative_path: '.', routes: manifest_data.routes.filter((route) => prerender_map.get(route.id) !== true), - remotes + remotes, + root })};\n` ); @@ -1408,13 +1502,9 @@ async function kit({ svelte_config }) { } }; - return [ - plugin_setup, - kit.experimental.remoteFunctions && plugin_remote, - plugin_virtual_modules, - plugin_guard, - plugin_compile - ].filter((p) => !!p); + return [plugin_setup, plugin_remote, plugin_virtual_modules, plugin_guard, plugin_compile].filter( + (p) => !!p + ); } /** diff --git a/packages/kit/src/exports/vite/static_analysis/index.js b/packages/kit/src/exports/vite/static_analysis/index.js index 6d4248032da5..015a58c45b84 100644 --- a/packages/kit/src/exports/vite/static_analysis/index.js +++ b/packages/kit/src/exports/vite/static_analysis/index.js @@ -1,3 +1,4 @@ +import path from 'node:path'; import { tsPlugin } from '@sveltejs/acorn-typescript'; import { Parser } from 'acorn'; import { read } from '../../../utils/filesystem.js'; @@ -213,11 +214,13 @@ function get_name(node) { /** * Reads and statically analyses a file for page options * @param {string} filepath + * @param {string} root The project root directory * @returns {PageOptions | null} Returns the page options for the file or `null` if unanalysable */ -export function get_page_options(filepath) { +export function get_page_options(filepath, root) { + const input = read(path.resolve(root, filepath)); + try { - const input = read(filepath); const page_options = statically_analyse_page_options(filepath, input); if (page_options === null) { return null; @@ -229,7 +232,10 @@ export function get_page_options(filepath) { } } -export function create_node_analyser() { +/** + * @param {string} root + */ +export function create_node_analyser(root) { const static_exports = new Map(); /** @@ -273,7 +279,7 @@ export function create_node_analyser() { } if (node.server) { - const server_page_options = get_page_options(node.server); + const server_page_options = get_page_options(node.server, root); if (server_page_options === null) { cache(key, null); return null; @@ -282,7 +288,7 @@ export function create_node_analyser() { } if (node.universal) { - const universal_page_options = get_page_options(node.universal); + const universal_page_options = get_page_options(node.universal, root); if (universal_page_options === null) { cache(key, null); return null; diff --git a/packages/kit/src/exports/vite/utils.js b/packages/kit/src/exports/vite/utils.js index 77743bda77c9..117ce6575c15 100644 --- a/packages/kit/src/exports/vite/utils.js +++ b/packages/kit/src/exports/vite/utils.js @@ -20,8 +20,9 @@ import { * Related to tsconfig path alias creation. * * @param {import('types').ValidatedKitConfig} config + * @param {string} root * */ -export function get_config_aliases(config) { +export function get_config_aliases(config, root) { /** @type {import('vite').Alias[]} */ const alias = [ // For now, we handle `$lib` specially here rather than make it a default value for @@ -38,16 +39,16 @@ export function get_config_aliases(config) { // Doing just `{ find: key.slice(0, -2) ,..}` would mean `import .. from "key"` would also be matched, which we don't want alias.push({ find: new RegExp(`^${escape_for_regexp(key.slice(0, -2))}\\/(.+)$`), - replacement: `${path.resolve(value)}/$1` + replacement: `${path.resolve(root, value)}/$1` }); } else if (key + '/*' in config.alias) { // key and key/* both exist -> the replacement for key needs to happen _only_ on import .. from "key" alias.push({ find: new RegExp(`^${escape_for_regexp(key)}$`), - replacement: path.resolve(value) + replacement: path.resolve(root, value) }); } else { - alias.push({ find: key, replacement: path.resolve(value) }); + alias.push({ find: key, replacement: path.resolve(root, value) }); } } diff --git a/packages/kit/src/exports/vite/utils.spec.js b/packages/kit/src/exports/vite/utils.spec.js index 90c9ee0c91e1..7878487573fe 100644 --- a/packages/kit/src/exports/vite/utils.spec.js +++ b/packages/kit/src/exports/vite/utils.spec.js @@ -18,7 +18,7 @@ test('transform kit.alias to resolve.alias', () => { } }); - const aliases = get_config_aliases(config.kit); + const aliases = get_config_aliases(config.kit, '.'); const transformed = aliases.map((entry) => { const replacement = posixify(path.relative('.', entry.replacement)); diff --git a/packages/kit/src/runtime/server/utils.js b/packages/kit/src/runtime/server/utils.js index 3394bb038070..2257328df8d4 100644 --- a/packages/kit/src/runtime/server/utils.js +++ b/packages/kit/src/runtime/server/utils.js @@ -223,9 +223,8 @@ let relative = (file) => file; if (DEV) { try { const path = await import('node:path'); - const process = await import('node:process'); - relative = (file) => path.relative(process.cwd(), file); + relative = (file) => path.relative('.', file); } catch { // do nothing } diff --git a/packages/kit/src/utils/import.js b/packages/kit/src/utils/import.js index 3ed96fa46484..da80140d9b19 100644 --- a/packages/kit/src/utils/import.js +++ b/packages/kit/src/utils/import.js @@ -1,16 +1,16 @@ -import process from 'node:process'; import fs from 'node:fs'; import path from 'node:path'; /** - * Resolves a peer dependency relative to the current CWD. Duplicated with `packages/adapter-auto` + * Resolves a peer dependency relative to the current working directory. Duplicated with `packages/adapter-auto` * @param {string} dependency + * @param {string} root */ -function resolve_peer(dependency) { +function resolve_peer(dependency, root) { let [name, ...parts] = dependency.split('/'); if (name[0] === '@') name += `/${parts.shift()}`; - let dir = process.cwd(); + let dir = root; while (!fs.existsSync(`${dir}/node_modules/${name}/package.json`)) { if (dir === (dir = path.dirname(dir))) { @@ -42,10 +42,11 @@ function resolve_peer(dependency) { * Resolve a dependency relative to the current working directory, * rather than relative to this package (but falls back to trying that, if necessary) * @param {string} dependency + * @param {string} root */ -export async function import_peer(dependency) { +export async function import_peer(dependency, root) { try { - return await import(resolve_peer(dependency)); + return await import(resolve_peer(dependency, root)); } catch { return await import(dependency); } diff --git a/packages/kit/src/version.spec.js b/packages/kit/src/version.spec.js index fa44692da9ff..fd4073523494 100644 --- a/packages/kit/src/version.spec.js +++ b/packages/kit/src/version.spec.js @@ -4,16 +4,18 @@ import { assert, describe, it } from 'vitest'; // runs the version generation as a side-effect of importing import '../scripts/generate-version.js'; +import { join } from 'node:path'; -describe('@sveltejs/kit VERSION', async () => { - it('should be the exact version from package.json'); - const { VERSION } = await import('./version.js'); - const pkg = JSON.parse( - readFileSync(fileURLToPath(new URL('../package.json', import.meta.url)), 'utf-8') - ); - assert.equal( - VERSION, - pkg.version, - 'VERSION export in src/version.js does not equal version in package.json' - ); +describe('@sveltejs/kit VERSION', () => { + it('should be the exact version from package.json', async () => { + const { VERSION } = await import(join(import.meta.dirname, 'version.js')); + const pkg = JSON.parse( + readFileSync(fileURLToPath(new URL('../package.json', import.meta.url)), 'utf-8') + ); + assert.equal( + VERSION, + pkg.version, + 'VERSION export in src/version.js does not equal version in package.json' + ); + }); }); diff --git a/packages/kit/test/apps/basics/svelte.config.js b/packages/kit/test/apps/basics/svelte.config.js index 8630e784a24d..61af6dff4fd5 100644 --- a/packages/kit/test/apps/basics/svelte.config.js +++ b/packages/kit/test/apps/basics/svelte.config.js @@ -72,6 +72,12 @@ const config = { router: { resolution: /** @type {'client' | 'server'} */ (process.env.ROUTER_RESOLUTION) || 'client' + }, + + typescript: { + config: (config) => { + config.include.push('../unit-test'); + } } }, diff --git a/packages/kit/test/apps/basics/vite.config.js b/packages/kit/test/apps/basics/vite.config.js index 7352ce2054df..415957fac6da 100644 --- a/packages/kit/test/apps/basics/vite.config.js +++ b/packages/kit/test/apps/basics/vite.config.js @@ -21,20 +21,12 @@ export default defineConfig({ }, test: { expect: { requireAssertions: true }, - projects: [ - { - extends: './vite.config.js', - test: { - name: 'client', - browser: { - enabled: true, - provider: playwright(), - instances: [{ browser: 'chromium' }], - headless: true - }, - include: ['unit-test/**/*.spec.js'] - } - } - ] + browser: { + enabled: true, + provider: playwright(), + instances: [{ browser: 'chromium' }], + headless: true + }, + include: ['unit-test/**/*.spec.js'] } }); diff --git a/packages/kit/test/build-errors/vitest.config.js b/packages/kit/test/build-errors/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/kit/test/build-errors/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/packages/kit/test/prerendering/basics/globalSetup.js b/packages/kit/test/prerendering/basics/globalSetup.js index 3175a7093312..240a2e05bc8e 100644 --- a/packages/kit/test/prerendering/basics/globalSetup.js +++ b/packages/kit/test/prerendering/basics/globalSetup.js @@ -1,5 +1,5 @@ import { execSync } from 'node:child_process'; export default function setup() { - execSync('svelte-kit sync && pnpm run build'); + execSync('svelte-kit sync && pnpm run build', { cwd: import.meta.dirname }); } diff --git a/packages/kit/test/prerendering/basics/vite.config.js b/packages/kit/test/prerendering/basics/vite.config.js index 701326176284..253a50dc5b65 100644 --- a/packages/kit/test/prerendering/basics/vite.config.js +++ b/packages/kit/test/prerendering/basics/vite.config.js @@ -24,7 +24,7 @@ const config = { }, test: { - globalSetup: './globalSetup.js' + globalSetup: path.join(import.meta.dirname, 'globalSetup.js') } }; diff --git a/packages/package/vitest.config.js b/packages/package/vitest.config.js new file mode 100644 index 000000000000..a15b3a470a6d --- /dev/null +++ b/packages/package/vitest.config.js @@ -0,0 +1,5 @@ +// we need this file to prevent Vitest from resolving a Vitest config from another directory + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11c19e3c5b47..be5c5d189b12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -134,6 +134,9 @@ importers: prettier-plugin-svelte: specifier: 'catalog:' version: 3.5.1(prettier@3.8.1)(svelte@5.53.5) + vitest: + specifier: 'catalog:' + version: 4.1.0-beta.4(@opentelemetry/api@1.9.0)(@types/node@24.10.13)(@vitest/browser-playwright@4.1.0-beta.4)(vite@8.0.0-beta.15(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.4.2)(yaml@2.8.0)) packages/adapter-auto: devDependencies: diff --git a/scripts/sync-all.js b/scripts/sync-all.js index 08cf8bcf808c..b6d0e9876ce4 100644 --- a/scripts/sync-all.js +++ b/scripts/sync-all.js @@ -14,12 +14,12 @@ for (const directories of [ for (const dir of fs.readdirSync(directories)) { const cwd = path.join(directories, dir); - if (!fs.existsSync(path.join(cwd,'svelte.config.js'))) { + if (!fs.existsSync(path.join(cwd, 'svelte.config.js'))) { continue; } chdir(cwd); - syncAll(await load_config({ cwd }), 'development'); + syncAll(await load_config({ cwd }), 'development', cwd); } } diff --git a/tsconfig.json b/tsconfig.json index d7ccc88d75da..451d37bf30b3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,5 +6,5 @@ "target": "ESNext", "moduleResolution": "bundler" }, - "include": ["eslint.config.js", ".eslint/*.js", "scripts"] + "include": ["eslint.config.js", ".eslint/*.js", "scripts", "vitest.config.js"] } diff --git a/vitest.config.js b/vitest.config.js new file mode 100644 index 000000000000..36b774f3b08c --- /dev/null +++ b/vitest.config.js @@ -0,0 +1,28 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + projects: [ + 'packages/*', + // prevent Vitest from crawling nested Vite apps in the kit test directory + // which do not use Vitest but have a vite.config.js file + '!packages/kit', + { + extends: 'packages/kit/kit.vitest.config.js', + root: 'packages/kit' + }, + { + extends: 'packages/kit/test/apps/basics/vite.config.js', + root: 'packages/kit/test/apps/basics' + }, + 'packages/kit/test/build-errors', + { + extends: 'packages/kit/test/prerendering/basics/vite.config.js', + root: 'packages/kit/test/prerendering/basics', + test: { + name: 'kit-prerendering-basics' + } + } + ] + } +}); From 669f4fd691b27a0de33aa27f18abd6e1a8b813df Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 6 Mar 2026 10:33:44 +0800 Subject: [PATCH 42/72] chore: remove Node 18 workarounds (#15498) --- packages/enhanced-img/src/vite-plugin.js | 2 +- packages/enhanced-img/test/apps/basics/test/test.js | 5 +---- packages/enhanced-img/test/utils.js | 13 ++++--------- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/enhanced-img/src/vite-plugin.js b/packages/enhanced-img/src/vite-plugin.js index c8ccb26b3f17..105a1651acbf 100644 --- a/packages/enhanced-img/src/vite-plugin.js +++ b/packages/enhanced-img/src/vite-plugin.js @@ -33,7 +33,7 @@ export function image_plugin(imagetools_plugin) { } const api = svelteConfigPlugin.api; // @ts-expect-error plugin.transform is defined below before configResolved is called - plugin.transform.filter.id = (api.filter ?? api.idFilter).id; // TODO: idFilter was used by earlier versions of vite-plugin-svelte@6, remove when @7 is required + plugin.transform.filter.id = api.filter.id; }, transform: { order: 'pre', // puts it before vite-plugin-svelte:compile diff --git a/packages/enhanced-img/test/apps/basics/test/test.js b/packages/enhanced-img/test/apps/basics/test/test.js index 4644464605ff..d8bb982bbea6 100644 --- a/packages/enhanced-img/test/apps/basics/test/test.js +++ b/packages/enhanced-img/test/apps/basics/test/test.js @@ -1,8 +1,5 @@ import { expect, test } from '@playwright/test'; -import process from 'node:process'; -const is_node18 = process.versions.node.startsWith('18.'); -// TODO: remove with SvelteKit 3 -test.skip(is_node18, 'enhanced-img requires vite-plugin-svelte@6 which requires node20'); + test('images are properly rendered', async ({ page }) => { await page.goto('/'); diff --git a/packages/enhanced-img/test/utils.js b/packages/enhanced-img/test/utils.js index 3417a89c55f4..66d9762807b2 100644 --- a/packages/enhanced-img/test/utils.js +++ b/packages/enhanced-img/test/utils.js @@ -2,20 +2,15 @@ import { devices } from '@playwright/test'; import process from 'node:process'; import { number_from_env } from '../../../test-utils/index.js'; -// TODO: remove with SvelteKit 3 -const is_node18 = process.versions.node.startsWith('18.'); /** @type {import('@playwright/test').PlaywrightTestConfig} */ export const config = { forbidOnly: !!process.env.CI, // generous timeouts on CI timeout: process.env.CI ? 45000 : 15000, - webServer: is_node18 - ? undefined - : { - // do not try to build on node18 - command: 'pnpm build && pnpm preview', - port: 4173 - }, + webServer: { + command: 'pnpm build && pnpm preview', + port: 4173 + }, retries: process.env.CI ? 2 : number_from_env('KIT_E2E_RETRIES', 0), projects: [ { From 8c288dca4456923b2d932e14a6aa3408b9db81d8 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 7 Mar 2026 21:37:42 +0800 Subject: [PATCH 43/72] fix lint after merge --- packages/kit/src/core/config/options.js | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index b991554aadf3..ca3c9d34c787 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -317,24 +317,24 @@ const options = object( true ); -/** - * @param {Validator} fn - * @param {(keypath: string) => string} get_message - * @returns {Validator} - */ -function deprecate( - fn, - get_message = (keypath) => - `The \`${keypath}\` option is deprecated, and will be removed in a future version` -) { - return (input, keypath) => { - if (input !== undefined) { - console.warn(styleText(['bold', 'yellow'], get_message(keypath))); - } - - return fn(input, keypath); - }; -} +// /** +// * @param {Validator} fn +// * @param {(keypath: string) => string} get_message +// * @returns {Validator} +// */ +// function deprecate( +// fn, +// get_message = (keypath) => +// `The \`${keypath}\` option is deprecated, and will be removed in a future version` +// ) { +// return (input, keypath) => { +// if (input !== undefined) { +// console.warn(styleText(['bold', 'yellow'], get_message(keypath))); +// } + +// return fn(input, keypath); +// }; +// } /** * @param {(keypath: string) => string} get_message From f5e38478ae942ccbf88ecf28cf14f70aea22a23a Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 7 Mar 2026 23:33:19 +0800 Subject: [PATCH 44/72] fix lint --- packages/kit/src/core/config/options.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index ca3c9d34c787..bfb769c8d095 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -1,5 +1,4 @@ import process from 'node:process'; -import { styleText } from 'node:util'; /** @typedef {import('./types.js').Validator} Validator */ From 9565db5523792c07fcb1482bc31f3bbffef45217 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 8 Mar 2026 22:22:14 +0800 Subject: [PATCH 45/72] chore: remove `with_resolvers` in favour of `Promise.withResolvers()` (#15510) --- packages/kit/src/core/postbuild/queue.js | 7 +++--- packages/kit/src/runtime/server/index.js | 6 ++--- packages/kit/src/utils/promise.js | 29 ------------------------ packages/kit/src/utils/streaming.js | 6 ++--- packages/kit/tsconfig.json | 6 ++--- 5 files changed, 11 insertions(+), 43 deletions(-) delete mode 100644 packages/kit/src/utils/promise.js diff --git a/packages/kit/src/core/postbuild/queue.js b/packages/kit/src/core/postbuild/queue.js index a816e6eb2350..3edcfe94b7e5 100644 --- a/packages/kit/src/core/postbuild/queue.js +++ b/packages/kit/src/core/postbuild/queue.js @@ -1,6 +1,3 @@ -/** @import { PromiseWithResolvers } from '../../utils/promise.js' */ -import { with_resolvers } from '../../utils/promise.js'; - /** * @typedef {{ * fn: () => Promise, @@ -13,7 +10,9 @@ import { with_resolvers } from '../../utils/promise.js'; export function queue(concurrency) { /** @type {Task[]} */ const tasks = []; - const { promise, resolve, reject } = /** @type {PromiseWithResolvers} */ (with_resolvers()); + const { promise, resolve, reject } = /** @type {PromiseWithResolvers} */ ( + Promise.withResolvers() + ); let current = 0; let closed = false; diff --git a/packages/kit/src/runtime/server/index.js b/packages/kit/src/runtime/server/index.js index 3fbc43e5e4ff..0dbeecb2d1d5 100644 --- a/packages/kit/src/runtime/server/index.js +++ b/packages/kit/src/runtime/server/index.js @@ -1,5 +1,3 @@ -/** @import { PromiseWithResolvers } from '../../utils/promise.js' */ -import { with_resolvers } from '../../utils/promise.js'; import { IN_WEBCONTAINER } from './constants.js'; import { respond } from './respond.js'; import { set_private_env, set_public_env } from '../shared-server.js'; @@ -36,7 +34,9 @@ export class Server { /** @type {typeof respond} */ this.respond = async (...args) => { - const { promise, resolve } = /** @type {PromiseWithResolvers} */ (with_resolvers()); + const { promise, resolve } = /** @type {PromiseWithResolvers} */ ( + Promise.withResolvers() + ); const previous = current; current = promise; diff --git a/packages/kit/src/utils/promise.js b/packages/kit/src/utils/promise.js deleted file mode 100644 index c7890541c61a..000000000000 --- a/packages/kit/src/utils/promise.js +++ /dev/null @@ -1,29 +0,0 @@ -/** @see https://github.com/microsoft/TypeScript/blob/904e7dd97dc8da1352c8e05d70829dff17c73214/src/lib/es2024.promise.d.ts */ - -/** - * @template T - * @typedef {{ - * promise: Promise; - * resolve: (value: T | PromiseLike) => void; - * reject: (reason?: any) => void; - * }} PromiseWithResolvers - */ - -/** - * TODO: Whenever Node >21 is minimum supported version, we can use `Promise.withResolvers` to avoid this ceremony - * - * @template T - * @returns {PromiseWithResolvers} - */ -export function with_resolvers() { - let resolve; - let reject; - - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - - // @ts-expect-error `resolve` and `reject` are assigned! - return { promise, resolve, reject }; -} diff --git a/packages/kit/src/utils/streaming.js b/packages/kit/src/utils/streaming.js index 6595405ea0ad..c9fac76a5a6d 100644 --- a/packages/kit/src/utils/streaming.js +++ b/packages/kit/src/utils/streaming.js @@ -1,5 +1,3 @@ -import { with_resolvers } from './promise.js'; - /** * Create an async iterator and a function to push values into it * @template T @@ -12,7 +10,7 @@ export function create_async_iterator() { let resolved = -1; let returned = -1; - /** @type {import('./promise.js').PromiseWithResolvers[]} */ + /** @type {PromiseWithResolvers[]} */ const deferred = []; return { @@ -32,7 +30,7 @@ export function create_async_iterator() { }; }, add: (promise) => { - deferred.push(with_resolvers()); + deferred.push(Promise.withResolvers()); void promise.then((value) => { deferred[++resolved].resolve(value); }); diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index 952ee7b30d3f..533431738447 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -4,9 +4,9 @@ "checkJs": true, "noEmit": true, "strict": true, - "target": "es2023", - "module": "node16", - "moduleResolution": "node16", + "target": "esnext", + "module": "nodenext", + "moduleResolution": "nodenext", "allowSyntheticDefaultImports": true, "paths": { "@sveltejs/kit": ["./src/exports/public.d.ts"], From 20b75f453eaccb0e366c22ab74fd38a9fe84cda9 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 9 Mar 2026 13:14:13 +0800 Subject: [PATCH 46/72] chore: bump peer on kit for adapters (#15506) This PR cleans up some unnecessary types/guards because we were trying to support older versions of SvelteKit. Now that we will only support v3, we don't need to be careful about which features from SvelteKit aren't available such as instrumentation --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [ ] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/late-lions-crash.md | 9 +++++++++ packages/adapter-auto/index.js | 14 +------------- packages/adapter-auto/package.json | 2 +- packages/adapter-cloudflare/index.js | 1 - packages/adapter-netlify/index.js | 1 - packages/adapter-node/index.js | 18 +++--------------- packages/adapter-node/package.json | 2 +- packages/adapter-node/src/env.js | 1 - packages/adapter-node/src/handler.js | 3 --- packages/adapter-static/index.js | 2 -- packages/adapter-static/package.json | 2 +- packages/adapter-static/platforms.js | 4 ++-- packages/adapter-static/tsconfig.json | 2 +- 13 files changed, 19 insertions(+), 42 deletions(-) create mode 100644 .changeset/late-lions-crash.md diff --git a/.changeset/late-lions-crash.md b/.changeset/late-lions-crash.md new file mode 100644 index 000000000000..f120c80d8caa --- /dev/null +++ b/.changeset/late-lions-crash.md @@ -0,0 +1,9 @@ +--- +"@sveltejs/adapter-auto": major +"@sveltejs/adapter-cloudflare": major +"@sveltejs/adapter-netlify": major +"@sveltejs/adapter-node": major +"@sveltejs/adapter-static": major +--- + +breaking: require SvelteKit 3 diff --git a/packages/adapter-auto/index.js b/packages/adapter-auto/index.js index 64bc04312afc..6813807e0086 100644 --- a/packages/adapter-auto/index.js +++ b/packages/adapter-auto/index.js @@ -4,17 +4,6 @@ import path from 'node:path'; import fs from 'node:fs'; import process from 'node:process'; -/** - * @template T - * @template {keyof T} K - * @typedef {Partial> & Required>} PartialExcept - */ - -/** - * We use a custom `Builder` type here to support the minimum version of SvelteKit. - * @typedef {PartialExcept} Builder2_0_0 - */ - /** @type {Record string>} */ const commands = { npm: (name, version) => `npm install -D ${name}@${version}`, @@ -149,11 +138,10 @@ async function get_adapter() { /** @type {() => Adapter} */ export default () => ({ name: '@sveltejs/adapter-auto', - /** @param {Builder2_0_0} builder */ adapt: async (builder) => { const adapter = await get_adapter(); - if (adapter) return adapter.adapt(/** @type {import('@sveltejs/kit').Builder} */ (builder)); + if (adapter) return adapter.adapt(builder); builder.log.warn( 'Could not detect a supported production environment. See https://svelte.dev/docs/kit/adapters to learn how to configure your app to run on the platform of your choosing' diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index b10e4a1d4912..7a33765279cf 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -48,6 +48,6 @@ "vitest": "catalog:" }, "peerDependencies": { - "@sveltejs/kit": "^2.0.0" + "@sveltejs/kit": "^3.0.0" } } diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index d3b2a61f556d..66c8a2da246e 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -16,7 +16,6 @@ const name = '@sveltejs/adapter-cloudflare'; export default function (options = {}) { return { name, - /** @param {import('@sveltejs/kit').Builder} builder */ async adapt(builder) { if ( existsSync('_routes.json') || diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 2dce87fa0e71..db7f6b2e8e1d 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -34,7 +34,6 @@ const FUNCTION_PREFIX = 'sveltekit-'; export default function ({ split = false, edge = edge_set_in_env_var } = {}) { return { name, - /** @param {import('@sveltejs/kit').Builder} builder */ async adapt(builder) { if (!builder.routes) { throw new Error( diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index a6b3358d4a5a..3949e366ea8a 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -2,17 +2,6 @@ import { readFileSync, writeFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { rolldown } from 'rolldown'; -/** - * @template T - * @template {keyof T} K - * @typedef {Partial> & Required>} PartialExcept - */ - -/** - * We use a custom `Builder` type here to support the minimum version of SvelteKit. - * @typedef {PartialExcept} Builder2_4_0 - */ - const files = fileURLToPath(new URL('./files', import.meta.url).href); /** @type {import('./index.js').default} */ @@ -21,7 +10,6 @@ export default function (opts = {}) { return { name: '@sveltejs/adapter-node', - /** @param {Builder2_4_0} builder */ async adapt(builder) { const tmp = builder.getBuildDirectory('adapter-node'); @@ -62,7 +50,7 @@ export default function (opts = {}) { manifest: `${tmp}/manifest.js` }; - if (builder.hasServerInstrumentationFile?.()) { + if (builder.hasServerInstrumentationFile()) { input['instrumentation.server'] = `${tmp}/instrumentation.server.js`; } @@ -99,8 +87,8 @@ export default function (opts = {}) { } }); - if (builder.hasServerInstrumentationFile?.()) { - builder.instrument?.({ + if (builder.hasServerInstrumentationFile()) { + builder.instrument({ entrypoint: `${out}/index.js`, instrumentation: `${out}/server/instrumentation.server.js`, module: { diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 26bef62d94a4..6fe45be3bbec 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -56,6 +56,6 @@ "rolldown": "^1.0.0-rc.6" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0" + "@sveltejs/kit": "^3.0.0" } } diff --git a/packages/adapter-node/src/env.js b/packages/adapter-node/src/env.js index 05251f8658b2..f7e5c2edf0d9 100644 --- a/packages/adapter-node/src/env.js +++ b/packages/adapter-node/src/env.js @@ -1,4 +1,3 @@ -/* global ENV_PREFIX */ import process from 'node:process'; const expected = new Set([ diff --git a/packages/adapter-node/src/handler.js b/packages/adapter-node/src/handler.js index 72e5a105a73b..a6c7d9eca50a 100644 --- a/packages/adapter-node/src/handler.js +++ b/packages/adapter-node/src/handler.js @@ -10,9 +10,6 @@ import { manifest, prerendered, base } from 'MANIFEST'; import { env } from 'ENV'; import { parse_as_bytes, parse_origin } from '../utils.js'; -/* global ENV_PREFIX */ -/* global PRECOMPRESS */ - const server = new Server(manifest); // parse_origin validates ORIGIN and throws descriptive errors for invalid values diff --git a/packages/adapter-static/index.js b/packages/adapter-static/index.js index c2b87301c8a8..6ba84906c6c5 100644 --- a/packages/adapter-static/index.js +++ b/packages/adapter-static/index.js @@ -5,7 +5,6 @@ import { platforms } from './platforms.js'; export default function (options) { return { name: '@sveltejs/adapter-static', - /** @param {import('./internal.js').Builder2_0_0} builder */ async adapt(builder) { if (!options?.fallback && builder.config.kit.router?.type !== 'hash') { const dynamic_routes = builder.routes.filter((route) => route.prerender !== true); @@ -52,7 +51,6 @@ See https://svelte.dev/docs/kit/page-options#prerender for more details` } const { - // @ts-ignore pages = 'build', assets = pages, fallback, diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 3b42bc57735e..22cfb3c91686 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -49,6 +49,6 @@ "vite": "catalog:" }, "peerDependencies": { - "@sveltejs/kit": "^2.0.0" + "@sveltejs/kit": "^3.0.0" } } diff --git a/packages/adapter-static/platforms.js b/packages/adapter-static/platforms.js index 6ed421625668..51a6bf0a3562 100644 --- a/packages/adapter-static/platforms.js +++ b/packages/adapter-static/platforms.js @@ -6,12 +6,12 @@ import process from 'node:process'; * name: string; * test: () => boolean; * defaults: import('./index.js').AdapterOptions; - * done: (builder: import('./internal.js').Builder2_0_0) => void; + * done: (builder: import('@sveltejs/kit').Builder) => void; * }} * Platform */ // This function is duplicated in adapter-vercel -/** @param {import('./internal.js').Builder2_0_0} builder */ +/** @param {import('@sveltejs/kit').Builder} builder */ function static_vercel_config(builder) { /** @type {any[]} */ const prerendered_redirects = []; diff --git a/packages/adapter-static/tsconfig.json b/packages/adapter-static/tsconfig.json index ad019b486258..d77c9c034e04 100644 --- a/packages/adapter-static/tsconfig.json +++ b/packages/adapter-static/tsconfig.json @@ -14,5 +14,5 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["index.js", "internal.d.ts", "test/utils.js"] + "include": ["index.js", "test/utils.js"] } From 047d6a0f1c3fd1bc6f90a81177a2834b023a64b3 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 10 Mar 2026 02:20:24 +0800 Subject: [PATCH 47/72] breaking: remove `builder.createEntries` (#15509) This PR removes the deprecated `builder.createEntries` API. Requires https://github.com/sveltejs/kit/pull/15506 to be merged first to remove references to it in the adapters --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [ ] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [ ] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [ ] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --- .changeset/eighty-paws-love.md | 5 +++ packages/kit/src/core/adapt/builder.js | 52 -------------------------- packages/kit/src/exports/public.d.ts | 5 +-- packages/kit/types/index.d.ts | 5 +-- 4 files changed, 9 insertions(+), 58 deletions(-) create mode 100644 .changeset/eighty-paws-love.md diff --git a/.changeset/eighty-paws-love.md b/.changeset/eighty-paws-love.md new file mode 100644 index 000000000000..b301fa8f1b2c --- /dev/null +++ b/.changeset/eighty-paws-love.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove `createEntries` from the `Builder` object passed to adapter functions diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 0c064eed4975..bb5ef66edea7 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -103,58 +103,6 @@ export function create_builder({ ); }, - async createEntries(fn) { - const seen = new Set(); - - for (let i = 0; i < route_data.length; i += 1) { - const route = route_data[i]; - if (prerender_map.get(route.id) === true) continue; - const { id, filter, complete } = fn(routes[i]); - - if (seen.has(id)) continue; - seen.add(id); - - const group = [route]; - - // figure out which lower priority routes should be considered fallbacks - for (let j = i + 1; j < route_data.length; j += 1) { - if (prerender_map.get(routes[j].id) === true) continue; - if (filter(routes[j])) { - group.push(route_data[j]); - } - } - - const filtered = new Set(group); - - // heuristic: if /foo/[bar] is included, /foo/[bar].json should - // also be included, since the page likely needs the endpoint - // TODO is this still necessary, given the new way of doing things? - filtered.forEach((route) => { - if (route.page) { - const endpoint = route_data.find((candidate) => candidate.id === route.id + '.json'); - - if (endpoint) { - filtered.add(endpoint); - } - } - }); - - if (filtered.size > 0) { - await complete({ - generateManifest: ({ relativePath }) => - generate_manifest({ - build_data, - prerendered: [], - relative_path: relativePath, - routes: Array.from(filtered), - remotes, - root: vite_config.root - }) - }); - } - } - }, - findServerAssets(route_data) { return find_server_assets( build_data, diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 2f3b95808cab..d086466c6aef 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -122,13 +122,12 @@ export interface Builder { /** An array of all routes (including prerendered) */ routes: RouteDefinition[]; - // TODO 3.0 remove this method /** * Create separate functions that map to one or more routes of your app. * @param fn A function that groups a set of routes into an entry point - * @deprecated Use `builder.routes` instead + * @deprecated removed in 3.0. Use `builder.routes` instead */ - createEntries: (fn: (route: RouteDefinition) => AdapterEntry) => Promise; + createEntries?: (fn: (route: RouteDefinition) => AdapterEntry) => Promise; /** * Find all the assets imported by server files belonging to `routes` diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index b144e95547e5..8ea68a54c68c 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -97,13 +97,12 @@ declare module '@sveltejs/kit' { /** An array of all routes (including prerendered) */ routes: RouteDefinition[]; - // TODO 3.0 remove this method /** * Create separate functions that map to one or more routes of your app. * @param fn A function that groups a set of routes into an entry point - * @deprecated Use `builder.routes` instead + * @deprecated removed in 3.0. Use `builder.routes` instead */ - createEntries: (fn: (route: RouteDefinition) => AdapterEntry) => Promise; + createEntries?: (fn: (route: RouteDefinition) => AdapterEntry) => Promise; /** * Find all the assets imported by server files belonging to `routes` From 096962c47b0b0f63acd0d539d3973797e4867487 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 11 Mar 2026 07:14:29 +0800 Subject: [PATCH 48/72] breaking: remove `delta` from non-popstate navigations (#15522) This PR addresses a TODO comment to remove the `delta` property from navigation events which aren't `popstate` --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. ### Tests - [ ] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --- .changeset/gentle-signs-cross.md | 5 ++++ packages/kit/src/exports/public.d.ts | 30 +------------------- packages/kit/src/runtime/app/state/client.js | 2 +- packages/kit/src/runtime/client/client.js | 2 +- packages/kit/types/index.d.ts | 30 +------------------- 5 files changed, 9 insertions(+), 60 deletions(-) create mode 100644 .changeset/gentle-signs-cross.md diff --git a/.changeset/gentle-signs-cross.md b/.changeset/gentle-signs-cross.md new file mode 100644 index 000000000000..b819bf018351 --- /dev/null +++ b/.changeset/gentle-signs-cross.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: the `delta` property now only exists for `popstate` navigation events diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index d086466c6aef..da8f1dca659f 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -611,7 +611,7 @@ export interface KitConfig { * - `preload-mjs` - uses `` but with the `.mjs` extension which prevents double-parsing in Chromium. Some static webservers will fail to serve .mjs files with a `Content-Type: application/javascript` header, which will cause your application to break. If that doesn't apply to you, this is the option that will deliver the best performance for the largest number of users, until `modulepreload` is more widely supported. * @default "modulepreload" * @since 1.8.4 - * @deprecated removed in 3.0.0 + * @deprecated removed in 3.0 */ preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs'; /** @@ -1265,13 +1265,6 @@ export interface NavigationGoto extends NavigationBase { * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect */ type: 'goto'; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export interface NavigationLeave extends NavigationBase { @@ -1280,13 +1273,6 @@ export interface NavigationLeave extends NavigationBase { * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring */ type: 'leave'; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export interface NavigationFormSubmit extends NavigationBase { @@ -1300,13 +1286,6 @@ export interface NavigationFormSubmit extends NavigationBase { * The `SubmitEvent` that caused the navigation */ event: SubmitEvent; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export interface NavigationPopState extends NavigationBase { @@ -1338,13 +1317,6 @@ export interface NavigationLink extends NavigationBase { * The `PointerEvent` that caused the navigation */ event: PointerEvent; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export type Navigation = diff --git a/packages/kit/src/runtime/app/state/client.js b/packages/kit/src/runtime/app/state/client.js index 7a276d0d9512..ff9c55cfe634 100644 --- a/packages/kit/src/runtime/app/state/client.js +++ b/packages/kit/src/runtime/app/state/client.js @@ -46,7 +46,7 @@ export const navigating = { return _navigating.current ? _navigating.current.willUnload : null; }, get delta() { - return _navigating.current ? _navigating.current.delta : null; + return _navigating.current?.type === 'popstate' ? _navigating.current.delta : null; }, get complete() { return _navigating.current ? _navigating.current.complete : null; diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 0faada3d4b01..cd1d1ae7d86a 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -1476,7 +1476,7 @@ function _before_navigate({ url, type, intent, delta, event, scroll }) { const nav = create_navigation(current, intent, url, type, scroll ?? null); - if (delta !== undefined) { + if (nav.navigation.type === 'popstate' && delta !== undefined) { nav.navigation.delta = delta; } diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 8ea68a54c68c..ba2a7b713bbb 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -585,7 +585,7 @@ declare module '@sveltejs/kit' { * - `preload-mjs` - uses `` but with the `.mjs` extension which prevents double-parsing in Chromium. Some static webservers will fail to serve .mjs files with a `Content-Type: application/javascript` header, which will cause your application to break. If that doesn't apply to you, this is the option that will deliver the best performance for the largest number of users, until `modulepreload` is more widely supported. * @default "modulepreload" * @since 1.8.4 - * @deprecated removed in 3.0.0 + * @deprecated removed in 3.0 */ preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs'; /** @@ -1239,13 +1239,6 @@ declare module '@sveltejs/kit' { * - `goto`: Navigation was triggered by a `goto(...)` call or a redirect */ type: 'goto'; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export interface NavigationLeave extends NavigationBase { @@ -1254,13 +1247,6 @@ declare module '@sveltejs/kit' { * - `leave`: The app is being left either because the tab is being closed or a navigation to a different document is occurring */ type: 'leave'; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export interface NavigationFormSubmit extends NavigationBase { @@ -1274,13 +1260,6 @@ declare module '@sveltejs/kit' { * The `SubmitEvent` that caused the navigation */ event: SubmitEvent; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export interface NavigationPopState extends NavigationBase { @@ -1312,13 +1291,6 @@ declare module '@sveltejs/kit' { * The `PointerEvent` that caused the navigation */ event: PointerEvent; - - // TODO 3.0 remove this property, so that it only exists when type is 'popstate' - // (would possibly be a breaking change to do it prior to that) - /** - * In case of a history back/forward navigation, the number of steps to go back/forward - */ - delta?: undefined; } export type Navigation = From 2c71180f307f9c5b7088c3bc9aa829cd89ef97c4 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 11 Mar 2026 15:05:51 +0800 Subject: [PATCH 49/72] chore: remove old migration warnings (#15523) --- .changeset/cold-carrots-raise.md | 2 +- packages/enhanced-img/package.json | 3 ++ packages/kit/package.json | 2 +- packages/kit/src/exports/node/index.js | 23 +++------ .../kit/src/runtime/app/server/remote/form.js | 51 ------------------- packages/kit/src/runtime/app/state/client.js | 7 --- .../client/remote-functions/form.svelte.js | 40 --------------- packages/kit/src/runtime/form-utils.js | 40 --------------- packages/package/package.json | 2 +- 9 files changed, 12 insertions(+), 158 deletions(-) diff --git a/.changeset/cold-carrots-raise.md b/.changeset/cold-carrots-raise.md index 5b77b8c63f25..b42f613dc0fd 100644 --- a/.changeset/cold-carrots-raise.md +++ b/.changeset/cold-carrots-raise.md @@ -4,4 +4,4 @@ '@sveltejs/enhanced-img': major --- -breaking: require Node 22 or newer +breaking: require Node 22.17.0 or newer diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 6419c68bdb14..f2071e25bb34 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -58,5 +58,8 @@ "@sveltejs/vite-plugin-svelte": "^6.0.0", "svelte": "^5.0.0", "vite": ">=8.0.0" + }, + "engines": { + "node": ">=22.17" } } diff --git a/packages/kit/package.json b/packages/kit/package.json index c263f34c2775..fbf8e46bc0a9 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -123,6 +123,6 @@ }, "types": "types/index.d.ts", "engines": { - "node": ">=22" + "node": ">=22.17" } } diff --git a/packages/kit/src/exports/node/index.js b/packages/kit/src/exports/node/index.js index 35bd3564cc55..73c9a059750c 100644 --- a/packages/kit/src/exports/node/index.js +++ b/packages/kit/src/exports/node/index.js @@ -35,16 +35,11 @@ function get_raw_body(req, body_size_limit) { return new ReadableStream({ start(controller) { if (body_size_limit !== undefined && content_length > body_size_limit) { - let message = `Content-length of ${content_length} exceeds limit of ${body_size_limit} bytes.`; - - if (body_size_limit === 0) { - // https://github.com/sveltejs/kit/pull/11589 - // TODO this exists to aid migration — remove in a future version - message += ' To disable body size limits, specify Infinity rather than 0.'; - } - - const error = new SvelteKitError(413, 'Payload Too Large', message); - + const error = new SvelteKitError( + 413, + 'Payload Too Large', + `Content-length of ${content_length} exceeds limit of ${body_size_limit} bytes.` + ); controller.error(error); return; } @@ -119,15 +114,9 @@ export async function getRequest({ request, base, bodySizeLimit }) { delete headers[':scheme']; } - // TODO: Whenever Node >=22 is minimum supported version, we can use `request.readableAborted` - // @see https://github.com/nodejs/node/blob/5cf3c3e24c7257a0c6192ed8ef71efec8ddac22b/lib/internal/streams/readable.js#L1443-L1453 const controller = new AbortController(); - let errored = false; - let end_emitted = false; - request.once('error', () => (errored = true)); - request.once('end', () => (end_emitted = true)); request.once('close', () => { - if ((errored || request.destroyed) && !end_emitted) { + if (request.readableAborted) { controller.abort(); } }); diff --git a/packages/kit/src/runtime/app/server/remote/form.js b/packages/kit/src/runtime/app/server/remote/form.js index 7b40124066f9..7d5590c4bd6a 100644 --- a/packages/kit/src/runtime/app/server/remote/form.js +++ b/packages/kit/src/runtime/app/server/remote/form.js @@ -2,11 +2,9 @@ /** @import { InternalRemoteFormIssue, MaybePromise, RemoteInfo } from 'types' */ /** @import { StandardSchemaV1 } from '@standard-schema/spec' */ import { get_request_store } from '@sveltejs/kit/internal/server'; -import { DEV } from 'esm-env'; import { create_field_proxy, set_nested_value, - throw_on_old_property_access, deep_set, normalize_issue, flatten_issues @@ -90,32 +88,6 @@ export function form(validate_or_fn, maybe_fn) { name: '', id: '', fn: async (data, meta, form_data) => { - // TODO 3.0 remove this warning - if (DEV && !data) { - const error = () => { - throw new Error( - 'Remote form functions no longer get passed a FormData object. ' + - "`form` now has the same signature as `query` or `command`, i.e. it expects to be invoked like `form(schema, callback)` or `form('unchecked', callback)`. " + - 'The payload of the callback function is now a POJO instead of a FormData object. See https://kit.svelte.dev/docs/remote-functions#form for details.' - ); - }; - data = {}; - for (const key of [ - 'append', - 'delete', - 'entries', - 'forEach', - 'get', - 'getAll', - 'has', - 'keys', - 'set', - 'values' - ]) { - Object.defineProperty(data, key, { get: error }); - } - } - /** @type {{ submission: true, input?: Record, issues?: InternalRemoteFormIssue[], result: Output }} */ const output = {}; @@ -202,20 +174,6 @@ export function form(validate_or_fn, maybe_fn) { } }); - // TODO 3.0 remove - if (DEV) { - throw_on_old_property_access(instance); - - Object.defineProperty(instance, 'buttonProps', { - get() { - throw new Error( - '`form.buttonProps` has been removed: Instead of `