From 6d536c438a03e7c02246fed78d94d25451af7d4e Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 5 Jun 2024 00:25:31 +0800 Subject: [PATCH 01/73] wip --- packages/adapter-vercel/files/reroute.js | 50 +++++++++++ packages/adapter-vercel/index.js | 103 ++++++++++++++++++++++- 2 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 packages/adapter-vercel/files/reroute.js diff --git a/packages/adapter-vercel/files/reroute.js b/packages/adapter-vercel/files/reroute.js new file mode 100644 index 000000000000..b714447ed139 --- /dev/null +++ b/packages/adapter-vercel/files/reroute.js @@ -0,0 +1,50 @@ +import { reroute } from 'HOOKS'; + +// we copy the rewrite function from `@vercel/edge` because that package can't co-exist with `@types/node`. +// see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 + +/** + * https://github.com/vercel/vercel/blob/4337ea0654c4ee2c91c4464540f879d43da6696f/packages/edge/src/middleware-helpers.ts#L38-L55 + * @param {*} init + * @param {Headers} headers + */ +function handleMiddlewareField(init, headers) { + if (init?.request?.headers) { + if (!(init.request.headers instanceof Headers)) { + throw new Error('request.headers must be an instance of Headers'); + } + + const keys = []; + for (const [key, value] of init.request.headers) { + headers.set('x-middleware-request-' + key, value); + keys.push(key); + } + + headers.set('x-middleware-override-headers', keys.join(',')); + } +} + +/** + * https://github.com/vercel/vercel/blob/4337ea0654c4ee2c91c4464540f879d43da6696f/packages/edge/src/middleware-helpers.ts#L101-L114 + * @param {string | URL} destination + * @returns {Response} + */ +export function rewrite(destination) { + const headers = new Headers({}); + headers.set('x-middleware-rewrite', String(destination)); + + handleMiddlewareField(undefined, headers); + + return new Response(null, { + headers + }); +} + +/** + * @param {Request} request + * @returns {Response} + */ +export default function middleware(request) { + const pathname = reroute({ url: new URL(request.url) }); + return rewrite(new URL(pathname, request.url)); +} diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 7506a90d782d..d8a31146946a 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -220,7 +220,7 @@ const plugin = function (defaults = {}) { } const node_runtime = /nodejs([0-9]+)\.x/.exec(runtime); - if (runtime !== 'edge' && (!node_runtime || node_runtime[1] < 18)) { + if (runtime !== 'edge' && (!node_runtime || +node_runtime[1] < 18)) { throw new Error( `Invalid runtime '${runtime}' for route ${route.id}. Valid runtimes are 'edge' and 'nodejs18.x' or higher ` + '(see the Node.js Version section in your Vercel project settings for info on the currently supported versions).' @@ -293,6 +293,107 @@ const plugin = function (defaults = {}) { const singular = groups.size === 1; + const hooks_filename = builder.config.kit.files.hooks.universal.split('/').at(-1); + const hooks_output_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; + + if (!singular && hooks_output_path) { + /** + * @param {string} name + * @param {import('.').EdgeConfig} config + */ + async function generate_middleware(name, config) { + const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); + const relativePath = path.posix.relative(tmp, hooks_output_path); + + builder.copy(`${files}/${name}.js`, `${tmp}/${name}.js`, { + replace: { + HOOKS: relativePath + } + }); + + try { + const result = await esbuild.build({ + entryPoints: [`${tmp}/${name}.js`], + outfile: `${dirs.functions}/${name}.func/index.js`, + target: 'es2020', // TODO verify what the edge runtime supports + bundle: true, + platform: 'browser', + 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' + } + }); + + if (result.warnings.length > 0) { + const formatted = await esbuild.formatMessages(result.warnings, { + kind: 'warning', + color: true + }); + + console.error(formatted.join('\n')); + } + } catch (error) { + 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' + }` + ); + } + + write( + `${dirs.functions}/${name}.func/.vc-config.json`, + JSON.stringify( + { + runtime: 'edge', + regions: config.regions, + entrypoint: 'index.js', + framework: { + slug: 'sveltekit', + version: VERSION + } + }, + null, + '\t' + ) + ); + } + + static_config.routes.push({ + src: '/.*', + middlewarePath: 'reroute', + continue: true + }); + + await generate_middleware('reroute', { external: defaults?.external }); + } + for (const group of groups.values()) { const generate_function = group.config.runtime === 'edge' ? generate_edge_function : generate_serverless_function; From 58db3cec08159325664cc397c18d5165fd464b06 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 5 Jun 2024 00:40:02 +0800 Subject: [PATCH 02/73] fix types --- packages/adapter-vercel/files/reroute.js | 21 ++++++++++++-- packages/adapter-vercel/index.d.ts | 37 ++++++++++++++++++++++++ packages/adapter-vercel/internal.d.ts | 5 ++++ 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/packages/adapter-vercel/files/reroute.js b/packages/adapter-vercel/files/reroute.js index b714447ed139..3ed5d2802da5 100644 --- a/packages/adapter-vercel/files/reroute.js +++ b/packages/adapter-vercel/files/reroute.js @@ -5,7 +5,7 @@ import { reroute } from 'HOOKS'; /** * https://github.com/vercel/vercel/blob/4337ea0654c4ee2c91c4464540f879d43da6696f/packages/edge/src/middleware-helpers.ts#L38-L55 - * @param {*} init + * @param {import('index.js').ExtraResponseInit | undefined} init * @param {Headers} headers */ function handleMiddlewareField(init, headers) { @@ -40,11 +40,28 @@ export function rewrite(destination) { }); } +/** + * + * @param {import('index.js').ExtraResponseInit=} init + * @returns {Response} + */ +export function next(init) { + const headers = new Headers(init?.headers ?? {}); + headers.set('x-middleware-next', '1'); + + handleMiddlewareField(init, headers); + + return new Response(null, { + ...init, + headers + }); +} + /** * @param {Request} request * @returns {Response} */ export default function middleware(request) { const pathname = reroute({ url: new URL(request.url) }); - return rewrite(new URL(pathname, request.url)); + return pathname ? rewrite(pathname) : next(request); } diff --git a/packages/adapter-vercel/index.d.ts b/packages/adapter-vercel/index.d.ts index 6d9f8d359891..511b26adc86b 100644 --- a/packages/adapter-vercel/index.d.ts +++ b/packages/adapter-vercel/index.d.ts @@ -157,3 +157,40 @@ export interface RequestContext { */ promise: Promise ): void; } + +export interface ModifiedRequest { + /** + * If set, overwrites the incoming headers to the origin request. + * + * This is useful when you want to pass data between a Middleware and a + * Serverless or Edge Function. + * + * @example + * Add a `x-user-id` header and remove the `Authorization` header + * + * ```ts + * import { rewrite } from '@vercel/edge'; + * export default async function middleware(request: Request): Promise { + * const newHeaders = new Headers(request.headers); + * newHeaders.set('x-user-id', 'user_123'); + * newHeaders.delete('authorization'); + * return rewrite(request.url, { + * request: { headers: newHeaders } + * }) + * } + * ``` + */ + headers?: Headers; +} + +export interface ExtraResponseInit extends Omit { + /** + * These headers will be sent to the user response + * along with the response headers from the origin. + */ + headers?: HeadersInit; + /** + * Fields to rewrite for the upstream request. + */ + request?: ModifiedRequest; +} diff --git a/packages/adapter-vercel/internal.d.ts b/packages/adapter-vercel/internal.d.ts index 537f7cc041d1..43c7fe9f93aa 100644 --- a/packages/adapter-vercel/internal.d.ts +++ b/packages/adapter-vercel/internal.d.ts @@ -6,3 +6,8 @@ declare module 'MANIFEST' { import { SSRManifest } from '@sveltejs/kit'; export const manifest: SSRManifest; } + +declare module 'HOOKS' { + import { Reroute } from '@sveltejs/kit'; + export const reroute: Reroute; +} From 12c1dc50467dd731bf593021616836f809269024 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 5 Jun 2024 22:16:18 +0800 Subject: [PATCH 03/73] use import alias instead of builder.copy replace --- packages/adapter-vercel/files/reroute.js | 2 +- packages/adapter-vercel/index.js | 10 ++++------ packages/adapter-vercel/internal.d.ts | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/adapter-vercel/files/reroute.js b/packages/adapter-vercel/files/reroute.js index 3ed5d2802da5..57a6923cc47c 100644 --- a/packages/adapter-vercel/files/reroute.js +++ b/packages/adapter-vercel/files/reroute.js @@ -1,4 +1,4 @@ -import { reroute } from 'HOOKS'; +import { reroute } from '__HOOKS__'; // we copy the rewrite function from `@vercel/edge` because that package can't co-exist with `@types/node`. // see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index d8a31146946a..1a5f7acc54dd 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -303,13 +303,8 @@ const plugin = function (defaults = {}) { */ async function generate_middleware(name, config) { const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); - const relativePath = path.posix.relative(tmp, hooks_output_path); - builder.copy(`${files}/${name}.js`, `${tmp}/${name}.js`, { - replace: { - HOOKS: relativePath - } - }); + builder.copy(`${files}/${name}.js`, `${tmp}/${name}.js`); try { const result = await esbuild.build({ @@ -328,6 +323,9 @@ const plugin = function (defaults = {}) { banner: { js: 'globalThis.global = globalThis;' }, loader: { '.wasm': 'copy' + }, + alias: { + __HOOKS__: hooks_output_path } }); diff --git a/packages/adapter-vercel/internal.d.ts b/packages/adapter-vercel/internal.d.ts index 43c7fe9f93aa..d1a3caa010b8 100644 --- a/packages/adapter-vercel/internal.d.ts +++ b/packages/adapter-vercel/internal.d.ts @@ -7,7 +7,7 @@ declare module 'MANIFEST' { export const manifest: SSRManifest; } -declare module 'HOOKS' { +declare module '__HOOKS__' { import { Reroute } from '@sveltejs/kit'; export const reroute: Reroute; } From 56821208df7c24047510c7c332f2005c10010d83 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 5 Jun 2024 23:27:32 +0800 Subject: [PATCH 04/73] add netlify support --- packages/adapter-netlify/ambient.d.ts | 6 +++ packages/adapter-netlify/index.js | 70 +++++++++++++++++++++++++ packages/adapter-netlify/src/reroute.js | 11 ++++ 3 files changed, 87 insertions(+) create mode 100644 packages/adapter-netlify/src/reroute.js diff --git a/packages/adapter-netlify/ambient.d.ts b/packages/adapter-netlify/ambient.d.ts index 450140da9871..abea43f41169 100644 --- a/packages/adapter-netlify/ambient.d.ts +++ b/packages/adapter-netlify/ambient.d.ts @@ -8,3 +8,9 @@ declare module 'MANIFEST' { export const manifest: SSRManifest; export const prerendered: Set; } + +declare module '__HOOKS__' { + import { Reroute } from '@sveltejs/kit'; + + export const reroute: Reroute; +} diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 7bfec980ef9a..40ee02eb776b 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -17,10 +17,12 @@ import toml from '@iarna/toml'; * functions: Array< * | { * function: string; + * name?: string; * path: string; * } * | { * function: string; + * name?: string; * pattern: string; * } * >; @@ -93,6 +95,13 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { await generate_edge_functions({ builder }); } else { await generate_lambda_functions({ builder, split, publish }); + + const hooks_filename = builder.config.kit.files.hooks.universal.split('/').at(-1); + const hooks_output_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; + + if (split && hooks_output_path) { + await generate_reroute_middleware({ builder, hooks_output_path }); + } } }, @@ -110,6 +119,7 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { } }; } + /** * @param { object } params * @param {import('@sveltejs/kit').Builder} params.builder @@ -176,6 +186,66 @@ async function generate_edge_functions({ builder }) { writeFileSync('.netlify/edge-functions/manifest.json', JSON.stringify(edge_manifest)); } + +/** + * @param {object} params + * @param {import('@sveltejs/kit').Builder} params.builder + * @param {string} params.hooks_output_path + */ +async function generate_reroute_middleware({ builder, hooks_output_path }) { + const tmp = builder.getBuildDirectory('netlify-tmp'); + builder.rimraf(tmp); + builder.mkdirp(tmp); + + builder.mkdirp('.netlify/edge-functions'); + + // Don't match the static directory + const pattern = '^/.*$'; + + // Go doesn't support lookarounds, so we can't do this + // const pattern = appDir ? `^/(?!${escapeStringRegexp(appDir)}).*$` : '^/.*$'; + + /** @type {HandlerManifest} */ + const edge_manifest = { + functions: [ + { + function: 'reroute', + pattern + }, + { + function: 'render', + pattern + } + ], + version: 1 + }; + + builder.log.minor('Generating Reroute Edge Function...'); + + builder.copy(`${files}/reroute.js`, `${tmp}/entry.js`); + + await esbuild.build({ + entryPoints: [`${tmp}/entry.js`], + // + outfile: '.netlify/edge-functions/reroute.js', + bundle: true, + format: 'esm', + platform: 'browser', + sourcemap: 'linked', + target: 'es2020', + + // 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}`])), + __HOOKS__: hooks_output_path + } + }); + + writeFileSync('.netlify/edge-functions/manifest.json', JSON.stringify(edge_manifest)); +} + /** * @param { object } params * @param {import('@sveltejs/kit').Builder} params.builder diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js new file mode 100644 index 000000000000..5587b2cf40fd --- /dev/null +++ b/packages/adapter-netlify/src/reroute.js @@ -0,0 +1,11 @@ +import { reroute } from '__HOOKS__'; + +/** + * @param {Request} request + * @returns {Promise} + */ +export default async function middleware(request) { + const url = new URL(request.url); + const pathname = reroute({ url }); + return pathname ? new URL(pathname, request.url) : undefined; +} From 91aeaaf44373be9733eaa9ed3fb8c2676f54ae6c Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 5 Jun 2024 23:31:32 +0800 Subject: [PATCH 05/73] oops we only need one edge function for serverless split --- packages/adapter-netlify/index.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 40ee02eb776b..9ae364ee5e4d 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -17,12 +17,10 @@ import toml from '@iarna/toml'; * functions: Array< * | { * function: string; - * name?: string; * path: string; * } * | { * function: string; - * name?: string; * pattern: string; * } * >; @@ -211,10 +209,6 @@ async function generate_reroute_middleware({ builder, hooks_output_path }) { { function: 'reroute', pattern - }, - { - function: 'render', - pattern } ], version: 1 From 06337fdd4a13f3d3b91c0aa4ef2feae20741543e Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 5 Jun 2024 23:41:39 +0800 Subject: [PATCH 06/73] readability --- packages/adapter-netlify/src/reroute.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index 5587b2cf40fd..446cce5bce7d 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -7,5 +7,8 @@ import { reroute } from '__HOOKS__'; export default async function middleware(request) { const url = new URL(request.url); const pathname = reroute({ url }); - return pathname ? new URL(pathname, request.url) : undefined; + + if (pathname) { + return new URL(pathname, request.url); + } } From 25c38a053797c7e82d37a435c4fc99fee91471c0 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 7 Jun 2024 02:42:04 +0800 Subject: [PATCH 07/73] cleanup vercel implementation --- packages/adapter-vercel/index.js | 159 ++++++++++--------------------- 1 file changed, 50 insertions(+), 109 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 2d79e5d1e104..a4b4272f1d9d 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -98,29 +98,15 @@ const plugin = function (defaults = {}) { } /** + * @param {string} file * @param {string} name - * @param {import('./index.js').EdgeConfig} config - * @param {import('@sveltejs/kit').RouteDefinition[]} routes + * @param {import('./index.js').Config} config + * @param {import('esbuild').BuildOptions=} esbuild_options */ - async function generate_edge_function(name, config, routes) { - const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); - const relativePath = path.posix.relative(tmp, builder.getServerDirectory()); - - builder.copy(`${files}/edge.js`, `${tmp}/edge.js`, { - replace: { - SERVER: `${relativePath}/index.js`, - MANIFEST: './manifest.js' - } - }); - - write( - `${tmp}/manifest.js`, - `export const manifest = ${builder.generateManifest({ relativePath, routes })};\n` - ); - + async function bundle_edge_function(file, name, config, esbuild_options) { try { const result = await esbuild.build({ - entryPoints: [`${tmp}/edge.js`], + entryPoints: [`${tmp}/${file}.js`], outfile: `${dirs.functions}/${name}.func/index.js`, target: 'es2020', // TODO verify what the edge runtime supports bundle: true, @@ -129,13 +115,14 @@ const plugin = function (defaults = {}) { external: [ ...compatible_node_modules, ...compatible_node_modules.map((id) => `node:${id}`), - ...(config.external || []) + ...((config.runtime === 'edge' && config.external) || []) ], sourcemap: 'linked', banner: { js: 'globalThis.global = globalThis;' }, loader: { '.wasm': 'copy' - } + }, + ...(esbuild_options || {}) }); if (result.warnings.length > 0) { @@ -179,7 +166,7 @@ const plugin = function (defaults = {}) { `${dirs.functions}/${name}.func/.vc-config.json`, JSON.stringify( { - runtime: config.runtime, + runtime: 'edge', regions: config.regions, entrypoint: 'index.js', framework: { @@ -193,6 +180,46 @@ const plugin = function (defaults = {}) { ); } + /** + * @param {string} name + * @param {import('./index.js').EdgeConfig} config + * @param {import('@sveltejs/kit').RouteDefinition[]} routes + */ + async function generate_edge_function(name, config, routes) { + const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); + const relativePath = path.posix.relative(tmp, builder.getServerDirectory()); + + builder.copy(`${files}/edge.js`, `${tmp}/edge.js`, { + replace: { + SERVER: `${relativePath}/index.js`, + MANIFEST: './manifest.js' + } + }); + + write( + `${tmp}/manifest.js`, + `export const manifest = ${builder.generateManifest({ relativePath, routes })};\n` + ); + + await bundle_edge_function('edge', name, config); + } + + /** + * @param {string} name + * @param {import('index.js').Config} config + */ + async function generate_edge_middleware(name, config) { + const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); + + builder.copy(`${files}/${name}.js`, `${tmp}/${name}.js`); + + await bundle_edge_function(name, name, config, { + alias: { + __HOOKS__: hooks_output_path + } + }); + } + /** @type {Map[] }>} */ const groups = new Map(); @@ -298,99 +325,13 @@ const plugin = function (defaults = {}) { const hooks_output_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; if (!singular && hooks_output_path) { - /** - * @param {string} name - * @param {import('.').EdgeConfig} config - */ - async function generate_middleware(name, config) { - const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); - - builder.copy(`${files}/${name}.js`, `${tmp}/${name}.js`); - - try { - const result = await esbuild.build({ - entryPoints: [`${tmp}/${name}.js`], - outfile: `${dirs.functions}/${name}.func/index.js`, - target: 'es2020', // TODO verify what the edge runtime supports - bundle: true, - platform: 'browser', - 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' - }, - alias: { - __HOOKS__: hooks_output_path - } - }); - - if (result.warnings.length > 0) { - const formatted = await esbuild.formatMessages(result.warnings, { - kind: 'warning', - color: true - }); - - console.error(formatted.join('\n')); - } - } catch (error) { - 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' - }` - ); - } - - write( - `${dirs.functions}/${name}.func/.vc-config.json`, - JSON.stringify( - { - runtime: 'edge', - regions: config.regions, - entrypoint: 'index.js', - framework: { - slug: 'sveltekit', - version: VERSION - } - }, - null, - '\t' - ) - ); - } - static_config.routes.push({ src: '/.*', middlewarePath: 'reroute', continue: true }); - await generate_middleware('reroute', { external: defaults?.external }); + await generate_edge_middleware('reroute', defaults); } for (const group of groups.values()) { From 28e7f3960b8ae7883b0dbf40946921b19ab91544 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 7 Jun 2024 02:45:45 +0800 Subject: [PATCH 08/73] this can be sync --- packages/adapter-netlify/src/reroute.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index 446cce5bce7d..c243e0d70abd 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -2,9 +2,9 @@ import { reroute } from '__HOOKS__'; /** * @param {Request} request - * @returns {Promise} + * @returns {URL | undefined} */ -export default async function middleware(request) { +export default function middleware(request) { const url = new URL(request.url); const pathname = reroute({ url }); From 766d4f7251768aa840c3e85bbe349792e97e11e8 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 8 Jun 2024 01:48:57 +0800 Subject: [PATCH 09/73] make temp file a variable --- packages/adapter-vercel/index.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index a4b4272f1d9d..748b7ee65b3c 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -98,15 +98,15 @@ const plugin = function (defaults = {}) { } /** - * @param {string} file + * @param {string} entry_point * @param {string} name * @param {import('./index.js').Config} config * @param {import('esbuild').BuildOptions=} esbuild_options */ - async function bundle_edge_function(file, name, config, esbuild_options) { + async function bundle_edge_function(entry_point, name, config, esbuild_options) { try { const result = await esbuild.build({ - entryPoints: [`${tmp}/${file}.js`], + entryPoints: [entry_point], outfile: `${dirs.functions}/${name}.func/index.js`, target: 'es2020', // TODO verify what the edge runtime supports bundle: true, @@ -189,7 +189,9 @@ const plugin = function (defaults = {}) { const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); const relativePath = path.posix.relative(tmp, builder.getServerDirectory()); - builder.copy(`${files}/edge.js`, `${tmp}/edge.js`, { + const dest = `${tmp}/edge.js`; + + builder.copy(`${files}/edge.js`, dest, { replace: { SERVER: `${relativePath}/index.js`, MANIFEST: './manifest.js' @@ -201,7 +203,7 @@ const plugin = function (defaults = {}) { `export const manifest = ${builder.generateManifest({ relativePath, routes })};\n` ); - await bundle_edge_function('edge', name, config); + await bundle_edge_function(dest, name, config); } /** @@ -211,9 +213,11 @@ const plugin = function (defaults = {}) { async function generate_edge_middleware(name, config) { const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); - builder.copy(`${files}/${name}.js`, `${tmp}/${name}.js`); + const dest = `${tmp}/${name}.js`; + + builder.copy(`${files}/${name}.js`, dest); - await bundle_edge_function(name, name, config, { + await bundle_edge_function(dest, name, config, { alias: { __HOOKS__: hooks_output_path } From 2f40af2fe2d8b86a9ac3f39c3f30de25cc60eedd Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 8 Jun 2024 13:46:29 +0800 Subject: [PATCH 10/73] fix node types with @vercel/edge --- packages/adapter-vercel/ambient-fix.d.ts | 9 +++ packages/adapter-vercel/ambient.d.ts | 3 +- packages/adapter-vercel/files/reroute.js | 58 +-------------- packages/adapter-vercel/index.d.ts | 93 ------------------------ packages/adapter-vercel/package.json | 1 + pnpm-lock.yaml | 8 ++ 6 files changed, 21 insertions(+), 151 deletions(-) create mode 100644 packages/adapter-vercel/ambient-fix.d.ts diff --git a/packages/adapter-vercel/ambient-fix.d.ts b/packages/adapter-vercel/ambient-fix.d.ts new file mode 100644 index 000000000000..76c6a5c9f478 --- /dev/null +++ b/packages/adapter-vercel/ambient-fix.d.ts @@ -0,0 +1,9 @@ +// we redeclare node process and import this file before `@vercel/edge` +// cso that it an co-exist with `@types/node`. +// see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 + +declare global { + var process: NodeJS.Process; +} + +export {}; diff --git a/packages/adapter-vercel/ambient.d.ts b/packages/adapter-vercel/ambient.d.ts index a106f64e3f12..f9d2dc1ab3b0 100644 --- a/packages/adapter-vercel/ambient.d.ts +++ b/packages/adapter-vercel/ambient.d.ts @@ -1,4 +1,5 @@ -import { RequestContext } from './index.js'; +import 'ambient-fix.js'; +import type { RequestContext } from '@vercel/edge'; declare global { namespace App { diff --git a/packages/adapter-vercel/files/reroute.js b/packages/adapter-vercel/files/reroute.js index 57a6923cc47c..9118b7f44093 100644 --- a/packages/adapter-vercel/files/reroute.js +++ b/packages/adapter-vercel/files/reroute.js @@ -1,61 +1,5 @@ import { reroute } from '__HOOKS__'; - -// we copy the rewrite function from `@vercel/edge` because that package can't co-exist with `@types/node`. -// see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 - -/** - * https://github.com/vercel/vercel/blob/4337ea0654c4ee2c91c4464540f879d43da6696f/packages/edge/src/middleware-helpers.ts#L38-L55 - * @param {import('index.js').ExtraResponseInit | undefined} init - * @param {Headers} headers - */ -function handleMiddlewareField(init, headers) { - if (init?.request?.headers) { - if (!(init.request.headers instanceof Headers)) { - throw new Error('request.headers must be an instance of Headers'); - } - - const keys = []; - for (const [key, value] of init.request.headers) { - headers.set('x-middleware-request-' + key, value); - keys.push(key); - } - - headers.set('x-middleware-override-headers', keys.join(',')); - } -} - -/** - * https://github.com/vercel/vercel/blob/4337ea0654c4ee2c91c4464540f879d43da6696f/packages/edge/src/middleware-helpers.ts#L101-L114 - * @param {string | URL} destination - * @returns {Response} - */ -export function rewrite(destination) { - const headers = new Headers({}); - headers.set('x-middleware-rewrite', String(destination)); - - handleMiddlewareField(undefined, headers); - - return new Response(null, { - headers - }); -} - -/** - * - * @param {import('index.js').ExtraResponseInit=} init - * @returns {Response} - */ -export function next(init) { - const headers = new Headers(init?.headers ?? {}); - headers.set('x-middleware-next', '1'); - - handleMiddlewareField(init, headers); - - return new Response(null, { - ...init, - headers - }); -} +import { rewrite, next } from '@vercel/edge'; /** * @param {Request} request diff --git a/packages/adapter-vercel/index.d.ts b/packages/adapter-vercel/index.d.ts index 75eebb066e37..4c08c9103c4b 100644 --- a/packages/adapter-vercel/index.d.ts +++ b/packages/adapter-vercel/index.d.ts @@ -101,96 +101,3 @@ export type Config = (EdgeConfig | ServerlessConfig) & { */ images?: ImagesConfig; }; - -// we copy the RequestContext interface from `@vercel/edge` because that package can't co-exist with `@types/node`. -// see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 - -/** - * An extension to the standard `Request` object that is passed to every Edge Function. - * - * @example - * ```ts - * import type { RequestContext } from '@vercel/edge'; - * - * export default async function handler(request: Request, ctx: RequestContext): Promise { - * // ctx is the RequestContext - * } - * ``` - */ -export interface RequestContext { - /** - * A method that can be used to keep the function running after a response has been sent. - * This is useful when you have an async task that you want to keep running even after the - * response has been sent and the request has ended. - * - * @example - * - * Sending an internal error to an error tracking service - * - * ```ts - * import type { RequestContext } from '@vercel/edge'; - * - * export async function handleRequest(request: Request, ctx: RequestContext): Promise { - * try { - * return await myFunctionThatReturnsResponse(); - * } catch (e) { - * ctx.waitUntil((async () => { - * // report this error to your error tracking service - * await fetch('https://my-error-tracking-service.com', { - * method: 'POST', - * body: JSON.stringify({ - * stack: e.stack, - * message: e.message, - * name: e.name, - * url: request.url, - * }), - * }); - * })()); - * return new Response('Internal Server Error', { status: 500 }); - * } - * } - * ``` - */ - waitUntil( - /** - * A promise that will be kept alive until it resolves or rejects. - */ promise: Promise - ): void; -} - -export interface ModifiedRequest { - /** - * If set, overwrites the incoming headers to the origin request. - * - * This is useful when you want to pass data between a Middleware and a - * Serverless or Edge Function. - * - * @example - * Add a `x-user-id` header and remove the `Authorization` header - * - * ```ts - * import { rewrite } from '@vercel/edge'; - * export default async function middleware(request: Request): Promise { - * const newHeaders = new Headers(request.headers); - * newHeaders.set('x-user-id', 'user_123'); - * newHeaders.delete('authorization'); - * return rewrite(request.url, { - * request: { headers: newHeaders } - * }) - * } - * ``` - */ - headers?: Headers; -} - -export interface ExtraResponseInit extends Omit { - /** - * These headers will be sent to the user response - * along with the response headers from the origin. - */ - headers?: HeadersInit; - /** - * Fields to rewrite for the upstream request. - */ - request?: ModifiedRequest; -} diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index f0aa1208dcdb..9dacdfd43b0a 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -38,6 +38,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", + "@vercel/edge": "^1.1.1", "typescript": "^5.3.3", "vitest": "^1.5.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7dfe0ad6ef40..f396e555eb2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -284,6 +284,9 @@ importers: '@types/node': specifier: ^18.19.3 version: 18.19.31 + '@vercel/edge': + specifier: ^1.1.1 + version: 1.1.1 typescript: specifier: ^5.3.3 version: 5.4.5 @@ -2361,6 +2364,9 @@ packages: '@typescript/vfs@1.3.5': resolution: {integrity: sha512-pI8Saqjupf9MfLw7w2+og+fmb0fZS0J6vsKXXrp4/PDXEFvntgzXmChCXC/KefZZS0YGS6AT8e0hGAJcTsdJlg==} + '@vercel/edge@1.1.1': + resolution: {integrity: sha512-NtKiIbn9Cq6HWGy+qRudz28mz5nxfOJWls5Pnckjw1yCfSX8rhXdvY/il3Sy3Zd5n/sKCM2h7VSCCpJF/oaDrQ==} + '@vercel/nft@0.27.1': resolution: {integrity: sha512-K6upzYHCV1cq2gP83r1o8uNV1vwvAlozvMqp7CEjYWxo0CMI8/4jKcDkVjlypVhrfZ54SXwh9QbH0ZIk/vQCsw==} engines: {node: '>=16'} @@ -6000,6 +6006,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@vercel/edge@1.1.1': {} + '@vercel/nft@0.27.1': dependencies: '@mapbox/node-pre-gyp': 1.0.11 From 6ccef504e6e5e426f3e1636ed09757aa6ee37a7c Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 9 Jun 2024 01:09:59 +0800 Subject: [PATCH 11/73] add separate tsconfig for edge files --- packages/adapter-vercel/ambient-fix.d.ts | 9 --- packages/adapter-vercel/ambient.d.ts | 5 +- .../adapter-vercel/files/{ => edge}/edge.js | 2 +- .../files/{ => edge}/reroute.js | 0 .../adapter-vercel/files/edge/tsconfig.json | 15 +++++ packages/adapter-vercel/index.d.ts | 56 +++++++++++++++++++ packages/adapter-vercel/index.js | 6 +- packages/adapter-vercel/package.json | 3 +- packages/adapter-vercel/tsconfig.json | 3 +- pnpm-lock.yaml | 6 +- 10 files changed, 85 insertions(+), 20 deletions(-) delete mode 100644 packages/adapter-vercel/ambient-fix.d.ts rename packages/adapter-vercel/files/{ => edge}/edge.js (89%) rename packages/adapter-vercel/files/{ => edge}/reroute.js (100%) create mode 100644 packages/adapter-vercel/files/edge/tsconfig.json diff --git a/packages/adapter-vercel/ambient-fix.d.ts b/packages/adapter-vercel/ambient-fix.d.ts deleted file mode 100644 index 76c6a5c9f478..000000000000 --- a/packages/adapter-vercel/ambient-fix.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -// we redeclare node process and import this file before `@vercel/edge` -// cso that it an co-exist with `@types/node`. -// see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 - -declare global { - var process: NodeJS.Process; -} - -export {}; diff --git a/packages/adapter-vercel/ambient.d.ts b/packages/adapter-vercel/ambient.d.ts index f9d2dc1ab3b0..2c94fea274a8 100644 --- a/packages/adapter-vercel/ambient.d.ts +++ b/packages/adapter-vercel/ambient.d.ts @@ -1,5 +1,4 @@ -import 'ambient-fix.js'; -import type { RequestContext } from '@vercel/edge'; +import type { RequestContext } from "./index.js"; declare global { namespace App { @@ -11,3 +10,5 @@ declare global { } } } + +export {}; diff --git a/packages/adapter-vercel/files/edge.js b/packages/adapter-vercel/files/edge/edge.js similarity index 89% rename from packages/adapter-vercel/files/edge.js rename to packages/adapter-vercel/files/edge/edge.js index 9834559a2235..2343d11c0a8c 100644 --- a/packages/adapter-vercel/files/edge.js +++ b/packages/adapter-vercel/files/edge/edge.js @@ -8,7 +8,7 @@ const initialized = server.init({ /** * @param {Request} request - * @param {import('../index.js').RequestContext} context + * @param {import('@vercel/edge').RequestContext} context */ export default async (request, context) => { await initialized; diff --git a/packages/adapter-vercel/files/reroute.js b/packages/adapter-vercel/files/edge/reroute.js similarity index 100% rename from packages/adapter-vercel/files/reroute.js rename to packages/adapter-vercel/files/edge/reroute.js diff --git a/packages/adapter-vercel/files/edge/tsconfig.json b/packages/adapter-vercel/files/edge/tsconfig.json new file mode 100644 index 000000000000..111b433e9599 --- /dev/null +++ b/packages/adapter-vercel/files/edge/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "strict": true, + "noEmit": true, + "noImplicitAny": true, + "target": "es2022", + "module": "es2022", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "baseUrl": "." + }, + "include": ["*.js", "../../internal.d.ts"] +} diff --git a/packages/adapter-vercel/index.d.ts b/packages/adapter-vercel/index.d.ts index 4c08c9103c4b..74aaed8cd620 100644 --- a/packages/adapter-vercel/index.d.ts +++ b/packages/adapter-vercel/index.d.ts @@ -101,3 +101,59 @@ export type Config = (EdgeConfig | ServerlessConfig) & { */ images?: ImagesConfig; }; + +// we copy the RequestContext interface from `@vercel/edge` because that package can't co-exist with `@types/node`. +// see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 + +/** + * An extension to the standard `Request` object that is passed to every Edge Function. + * + * @example + * ```ts + * import type { RequestContext } from '@vercel/edge'; + * + * export default async function handler(request: Request, ctx: RequestContext): Promise { + * // ctx is the RequestContext + * } + * ``` + */ +export interface RequestContext { + /** + * A method that can be used to keep the function running after a response has been sent. + * This is useful when you have an async task that you want to keep running even after the + * response has been sent and the request has ended. + * + * @example + * + * Sending an internal error to an error tracking service + * + * ```ts + * import type { RequestContext } from '@vercel/edge'; + * + * export async function handleRequest(request: Request, ctx: RequestContext): Promise { + * try { + * return await myFunctionThatReturnsResponse(); + * } catch (e) { + * ctx.waitUntil((async () => { + * // report this error to your error tracking service + * await fetch('https://my-error-tracking-service.com', { + * method: 'POST', + * body: JSON.stringify({ + * stack: e.stack, + * message: e.message, + * name: e.name, + * url: request.url, + * }), + * }); + * })()); + * return new Response('Internal Server Error', { status: 500 }); + * } + * } + * ``` + */ + waitUntil( + /** + * A promise that will be kept alive until it resolves or rejects. + */ promise: Promise + ): void; +} diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 748b7ee65b3c..60ebe735255b 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -191,7 +191,7 @@ const plugin = function (defaults = {}) { const dest = `${tmp}/edge.js`; - builder.copy(`${files}/edge.js`, dest, { + builder.copy(`${files}/edge/edge.js`, dest, { replace: { SERVER: `${relativePath}/index.js`, MANIFEST: './manifest.js' @@ -208,14 +208,14 @@ const plugin = function (defaults = {}) { /** * @param {string} name - * @param {import('index.js').Config} config + * @param {import('./index.js').Config} config */ async function generate_edge_middleware(name, config) { const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); const dest = `${tmp}/${name}.js`; - builder.copy(`${files}/${name}.js`, dest); + builder.copy(`${files}/edge/${name}.js`, dest); await bundle_edge_function(dest, name, config, { alias: { diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 9dacdfd43b0a..8f7cab08c8f1 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -20,6 +20,7 @@ "types": "index.d.ts", "files": [ "files", + "!files/edge/tsconfig.json", "index.js", "utils.js", "index.d.ts" @@ -31,6 +32,7 @@ "test": "vitest run" }, "dependencies": { + "@vercel/edge": "^1.1.1", "@vercel/nft": "^0.27.1", "esbuild": "^0.20.2" }, @@ -38,7 +40,6 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", - "@vercel/edge": "^1.1.1", "typescript": "^5.3.3", "vitest": "^1.5.0" }, diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 3d157ebc29e5..d010921fa995 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -13,5 +13,6 @@ "paths": { "@sveltejs/kit": ["../kit/types/index"] } - } + }, + "exclude": ["files/edge"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f396e555eb2b..491f8bdd7a1d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -268,6 +268,9 @@ importers: packages/adapter-vercel: dependencies: + '@vercel/edge': + specifier: ^1.1.1 + version: 1.1.1 '@vercel/nft': specifier: ^0.27.1 version: 0.27.1 @@ -284,9 +287,6 @@ importers: '@types/node': specifier: ^18.19.3 version: 18.19.31 - '@vercel/edge': - specifier: ^1.1.1 - version: 1.1.1 typescript: specifier: ^5.3.3 version: 5.4.5 From 322ba6cedf94e16120604fb8dd2b1dd3c848f6ff Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 9 Jun 2024 01:11:51 +0800 Subject: [PATCH 12/73] prettier --- packages/adapter-vercel/ambient.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-vercel/ambient.d.ts b/packages/adapter-vercel/ambient.d.ts index 2c94fea274a8..5b3c0a534f8b 100644 --- a/packages/adapter-vercel/ambient.d.ts +++ b/packages/adapter-vercel/ambient.d.ts @@ -1,4 +1,4 @@ -import type { RequestContext } from "./index.js"; +import type { RequestContext } from './index.js'; declare global { namespace App { From 2306806dd7ffe7dc0ea5eb0d2f684edb3aa9cc76 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 9 Jun 2024 21:32:51 +0800 Subject: [PATCH 13/73] cleanup netlify --- packages/adapter-netlify/index.js | 101 ++++++++++++------------------ packages/adapter-vercel/index.js | 29 +++++---- 2 files changed, 57 insertions(+), 73 deletions(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 2ad8083075c2..c68fcdf55d5c 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -95,10 +95,10 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { generate_lambda_functions({ builder, split, publish }); const hooks_filename = builder.config.kit.files.hooks.universal.split('/').at(-1); - const hooks_output_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; + const hooks_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; - if (split && hooks_output_path) { - await generate_reroute_middleware({ builder, hooks_output_path }); + if (split && hooks_path) { + await generate_reroute_middleware({ builder, hooks_path }); } } }, @@ -129,24 +129,8 @@ async function generate_edge_functions({ builder }) { builder.mkdirp('.netlify/edge-functions'); - // Don't match the static directory - const pattern = '^/.*$'; - - // Go doesn't support lookarounds, so we can't do this - // const pattern = appDir ? `^/(?!${escapeStringRegexp(appDir)}).*$` : '^/.*$'; - - /** @type {HandlerManifest} */ - const edge_manifest = { - functions: [ - { - function: 'render', - pattern - } - ], - version: 1 - }; - builder.log.minor('Generating Edge Function...'); + const relativePath = posix.relative(tmp, builder.getServerDirectory()); builder.copy(`${files}/edge.js`, `${tmp}/entry.js`, { @@ -167,9 +151,44 @@ async function generate_edge_functions({ builder }) { )});\n` ); + await bundle_edge_function({ builder, name: 'render' }); +} + +/** + * @param {object} params + * @param {import('@sveltejs/kit').Builder} params.builder + * @param {string} params.hooks_path + */ +async function generate_reroute_middleware({ builder, hooks_path }) { + const tmp = builder.getBuildDirectory('netlify-tmp'); + builder.rimraf(tmp); + builder.mkdirp(tmp); + + builder.mkdirp('.netlify/edge-functions'); + + builder.log.minor('Generating Reroute Edge Function...'); + + builder.copy(`${files}/reroute.js`, `${tmp}/entry.js`, { + replace: { + __HOOKS__: hooks_path + } + }); + + await bundle_edge_function({ builder, name: 'reroute' }); +} + +/** + * + * @param {object} params + * @param {import('@sveltejs/kit').Builder} params.builder + * @param {string} params.name + */ +async function bundle_edge_function({ builder, name }) { + const tmp = builder.getBuildDirectory('netlify-tmp'); + await esbuild.build({ entryPoints: [`${tmp}/entry.js`], - outfile: '.netlify/edge-functions/render.js', + outfile: `.netlify/edge-functions/${name}.js`, bundle: true, format: 'esm', platform: 'browser', @@ -182,21 +201,6 @@ async function generate_edge_functions({ builder }) { alias: Object.fromEntries(builtinModules.map((id) => [id, `node:${id}`])) }); - writeFileSync('.netlify/edge-functions/manifest.json', JSON.stringify(edge_manifest)); -} - -/** - * @param {object} params - * @param {import('@sveltejs/kit').Builder} params.builder - * @param {string} params.hooks_output_path - */ -async function generate_reroute_middleware({ builder, hooks_output_path }) { - const tmp = builder.getBuildDirectory('netlify-tmp'); - builder.rimraf(tmp); - builder.mkdirp(tmp); - - builder.mkdirp('.netlify/edge-functions'); - // Don't match the static directory const pattern = '^/.*$'; @@ -207,36 +211,13 @@ async function generate_reroute_middleware({ builder, hooks_output_path }) { const edge_manifest = { functions: [ { - function: 'reroute', + function: name, pattern } ], version: 1 }; - builder.log.minor('Generating Reroute Edge Function...'); - - builder.copy(`${files}/reroute.js`, `${tmp}/entry.js`); - - await esbuild.build({ - entryPoints: [`${tmp}/entry.js`], - // - outfile: '.netlify/edge-functions/reroute.js', - bundle: true, - format: 'esm', - platform: 'browser', - sourcemap: 'linked', - target: 'es2020', - - // 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}`])), - __HOOKS__: hooks_output_path - } - }); - writeFileSync('.netlify/edge-functions/manifest.json', JSON.stringify(edge_manifest)); } diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 60ebe735255b..1785352cb9b7 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -98,15 +98,13 @@ const plugin = function (defaults = {}) { } /** - * @param {string} entry_point + * @param {import('esbuild').BuildOptions & Required>} esbuild_options * @param {string} name - * @param {import('./index.js').Config} config - * @param {import('esbuild').BuildOptions=} esbuild_options + * @param {import('./index.js').Config} adapter_config */ - async function bundle_edge_function(entry_point, name, config, esbuild_options) { + async function bundle_edge_function(esbuild_options, name, adapter_config) { try { const result = await esbuild.build({ - entryPoints: [entry_point], outfile: `${dirs.functions}/${name}.func/index.js`, target: 'es2020', // TODO verify what the edge runtime supports bundle: true, @@ -115,7 +113,7 @@ const plugin = function (defaults = {}) { external: [ ...compatible_node_modules, ...compatible_node_modules.map((id) => `node:${id}`), - ...((config.runtime === 'edge' && config.external) || []) + ...((adapter_config.runtime === 'edge' && adapter_config.external) || []) ], sourcemap: 'linked', banner: { js: 'globalThis.global = globalThis;' }, @@ -167,7 +165,7 @@ const plugin = function (defaults = {}) { JSON.stringify( { runtime: 'edge', - regions: config.regions, + regions: adapter_config.regions, entrypoint: 'index.js', framework: { slug: 'sveltekit', @@ -203,7 +201,7 @@ const plugin = function (defaults = {}) { `export const manifest = ${builder.generateManifest({ relativePath, routes })};\n` ); - await bundle_edge_function(dest, name, config); + await bundle_edge_function({ entryPoints: [dest] }, name, config); } /** @@ -217,11 +215,16 @@ const plugin = function (defaults = {}) { builder.copy(`${files}/edge/${name}.js`, dest); - await bundle_edge_function(dest, name, config, { - alias: { - __HOOKS__: hooks_output_path - } - }); + await bundle_edge_function( + { + entryPoints: [dest], + alias: { + __HOOKS__: hooks_output_path + } + }, + name, + config + ); } /** @type {Map[] }>} */ From 5cfc8eb2c2d24a9818bf0f8f7c795f3be51377ed Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 17 Jun 2024 02:00:02 +0800 Subject: [PATCH 14/73] docs --- .../docs/25-build-and-deploy/80-adapter-netlify.md | 6 ++++++ documentation/docs/25-build-and-deploy/90-adapter-vercel.md | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md index a9d5702b3b14..90efe3ef38c0 100644 --- a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md +++ b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md @@ -107,6 +107,12 @@ Additionally, you can add your own Netlify functions by creating a directory for directory = "functions" ``` +## Notes + +### Individual functions and `reroute` + +If the `split` option is set to `true` in the adapter config, the [`reroute`](/docs/hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. + ## Troubleshooting ### Accessing the file system diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index f772d0dd85dd..1250184a748c 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -171,6 +171,10 @@ If you have Vercel functions contained in the `api` directory at the project's r Projects created before a certain date may default to using an older Node version than what SvelteKit currently requires. You can [change the Node version in your project settings](https://vercel.com/docs/concepts/functions/serverless-functions/runtimes/node-js#node.js-version). +### Individual functions and `reroute` + +If `split` is set to `true` for a route, or at the adapter level, the [`reroute`](/docs/hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. + ## Troubleshooting ### Accessing the file system From d8c29f3c455528ac134eee4895c45a2a636a0641 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 17 Jun 2024 02:09:01 +0800 Subject: [PATCH 15/73] changeset --- .changeset/hot-guests-enjoy.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/hot-guests-enjoy.md diff --git a/.changeset/hot-guests-enjoy.md b/.changeset/hot-guests-enjoy.md new file mode 100644 index 000000000000..518fa33f1819 --- /dev/null +++ b/.changeset/hot-guests-enjoy.md @@ -0,0 +1,6 @@ +--- +"@sveltejs/adapter-netlify": patch +"@sveltejs/adapter-vercel": patch +--- + +fix: run `reroute` in an edge middleware before invoking an individual function From 58dfb9de321de321eb22854618fba5ffc8b50a88 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 10 Oct 2024 13:33:22 +0800 Subject: [PATCH 16/73] Update .changeset/hot-guests-enjoy.md --- .changeset/hot-guests-enjoy.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/hot-guests-enjoy.md b/.changeset/hot-guests-enjoy.md index 518fa33f1819..9eb5203aa831 100644 --- a/.changeset/hot-guests-enjoy.md +++ b/.changeset/hot-guests-enjoy.md @@ -1,6 +1,6 @@ --- -"@sveltejs/adapter-netlify": patch -"@sveltejs/adapter-vercel": patch +"@sveltejs/adapter-netlify": minor +"@sveltejs/adapter-vercel": minor --- fix: run `reroute` in an edge middleware before invoking an individual function From 1f9d964eb4922daea95ead0b633e8d4c39295256 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Tue, 29 Oct 2024 19:53:47 +0800 Subject: [PATCH 17/73] fix broken lockfile --- pnpm-lock.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1a40dcd6f72..1d13e5020e3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -264,7 +264,7 @@ importers: dependencies: '@vercel/edge': specifier: ^1.1.1 - version: 1.1.1 + version: 1.1.2 '@vercel/nft': specifier: ^0.27.1 version: 0.27.1 @@ -2058,6 +2058,9 @@ packages: resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vercel/edge@1.1.2': + resolution: {integrity: sha512-wt5SnhsMahWX8U9ZZhFUQoiXhMn/CUxA5xeMdZX1cwyOL1ZbDR3rNI8HRT9RSU73nDxeF6jlnqJyp/0Jy0VM2A==} + '@vercel/nft@0.27.1': resolution: {integrity: sha512-K6upzYHCV1cq2gP83r1o8uNV1vwvAlozvMqp7CEjYWxo0CMI8/4jKcDkVjlypVhrfZ54SXwh9QbH0ZIk/vQCsw==} engines: {node: '>=16'} @@ -4683,6 +4686,8 @@ snapshots: '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 + '@vercel/edge@1.1.2': {} + '@vercel/nft@0.27.1': dependencies: '@mapbox/node-pre-gyp': 1.0.11 From 2d82cac37e2500263532edb2e1bb83759ffff049 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Mon, 2 Dec 2024 13:59:49 +0800 Subject: [PATCH 18/73] check if reroute hook exists before generating reroute middleware --- packages/adapter-netlify/index.js | 5 ++++- packages/adapter-vercel/index.js | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 63fe15e6c603..221e8c0a9b81 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -98,7 +98,10 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { const hooks_filename = builder.config.kit.files.hooks.universal.split('/').at(-1); const hooks_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; - if (split && hooks_path) { + const has_reroute_hook = + existsSync(hooks_path) && (await import(hooks_path).then((m) => 'reroute' in m)); + + if (split && has_reroute_hook) { await generate_reroute_middleware({ builder, hooks_path }); } } diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index ca0fb67fd108..0fa9c3192990 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -351,7 +351,11 @@ const plugin = function (defaults = {}) { const hooks_filename = builder.config.kit.files.hooks.universal.split('/').at(-1); const hooks_output_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; - if (!singular && hooks_output_path) { + const has_reroute_hook = + fs.existsSync(hooks_output_path) && + (await import(hooks_output_path).then((m) => 'reroute' in m)); + + if (!singular && has_reroute_hook) { static_config.routes.push({ src: '/.*', middlewarePath: 'reroute', From 21251156b698a393e6fbaf21bb4c0baa832defe0 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Mon, 2 Dec 2024 14:15:23 +0800 Subject: [PATCH 19/73] bump @vercel/edge to 1.1.2 --- packages/adapter-vercel/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index cb7ac5cb2c4f..4ee4d15ece95 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -40,7 +40,7 @@ "test": "vitest run" }, "dependencies": { - "@vercel/edge": "^1.1.1", + "@vercel/edge": "^1.1.2", "@vercel/nft": "^0.27.7", "esbuild": "^0.24.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1803dd31b96d..0b821ce41ec9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,7 +263,7 @@ importers: packages/adapter-vercel: dependencies: '@vercel/edge': - specifier: ^1.1.1 + specifier: ^1.1.2 version: 1.1.2 '@vercel/nft': specifier: ^0.27.7 From 59b5f4b1f1fa657f0d835eb5ab086bc3bea6049f Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Mon, 2 Dec 2024 14:31:59 +0800 Subject: [PATCH 20/73] copy over reroute.js --- packages/adapter-netlify/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index c407c76922ba..6a9cbc803774 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -33,7 +33,7 @@ ], "scripts": { "dev": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -cw", - "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/edge.js', 'files/edge.js')\"", + "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/edge.js', 'files/edge.js')\" && node -e \"fs.cpSync('src/reroute.js', 'files/reroute.js')\"", "test": "vitest run", "check": "tsc", "lint": "prettier --check .", From dc440c1a6f73cb6ea6bc956aef8bded2be885d04 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Mon, 2 Dec 2024 14:52:34 +0800 Subject: [PATCH 21/73] how do I get esbuild to bundle vercel/edge? --- packages/adapter-vercel/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 4ee4d15ece95..01716c1cf668 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -40,7 +40,6 @@ "test": "vitest run" }, "dependencies": { - "@vercel/edge": "^1.1.2", "@vercel/nft": "^0.27.7", "esbuild": "^0.24.0" }, @@ -52,6 +51,7 @@ "vitest": "^2.1.6" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0" + "@sveltejs/kit": "^2.4.0", + "@vercel/edge": "^1.1.2" } } From 1d1a67dcc92f6e6a1d8e4dd519b124d57b81d2c2 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Tue, 3 Dec 2024 10:47:26 +0800 Subject: [PATCH 22/73] add rollup to bundle @vercel/edge --- packages/adapter-netlify/package.json | 2 +- packages/adapter-vercel/.gitignore | 1 + packages/adapter-vercel/index.js | 2 +- packages/adapter-vercel/package.json | 11 ++++++++--- packages/adapter-vercel/rollup.config.js | 17 +++++++++++++++++ .../adapter-vercel/{files => src}/edge/edge.js | 0 .../{files => src}/edge/reroute.js | 0 .../{files => src}/edge/tsconfig.json | 0 .../adapter-vercel/{files => src}/serverless.js | 0 packages/adapter-vercel/tsconfig.json | 2 +- pnpm-lock.yaml | 6 ++++++ 11 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 packages/adapter-vercel/rollup.config.js rename packages/adapter-vercel/{files => src}/edge/edge.js (100%) rename packages/adapter-vercel/{files => src}/edge/reroute.js (100%) rename packages/adapter-vercel/{files => src}/edge/tsconfig.json (100%) rename packages/adapter-vercel/{files => src}/serverless.js (100%) diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 6a9cbc803774..1282c3925212 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -33,7 +33,7 @@ ], "scripts": { "dev": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -cw", - "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/edge.js', 'files/edge.js')\" && node -e \"fs.cpSync('src/reroute.js', 'files/reroute.js')\"", + "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/edge.js', 'files/edge.js'); fs.cpSync('src/reroute.js', 'files/reroute.js')\"", "test": "vitest run", "check": "tsc", "lint": "prettier --check .", diff --git a/packages/adapter-vercel/.gitignore b/packages/adapter-vercel/.gitignore index 9daa8247da45..1f664acc2b82 100644 --- a/packages/adapter-vercel/.gitignore +++ b/packages/adapter-vercel/.gitignore @@ -1,2 +1,3 @@ .DS_Store node_modules +/files \ No newline at end of file diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 0fa9c3192990..56a0fe51ff94 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -229,7 +229,7 @@ const plugin = function (defaults = {}) { * @param {import('./index.js').Config} config */ async function generate_edge_middleware(name, config) { - const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); + const tmp = builder.getBuildDirectory('vercel-tmp'); const dest = `${tmp}/${name}.js`; diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 01716c1cf668..2ecc6c6c563a 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -34,24 +34,29 @@ "index.d.ts" ], "scripts": { + "dev": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -cw", + "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/serverless.js', 'files/serverless.js'); fs.cpSync('src/edge/edge.js', 'files/edge/edge.js')\"", "lint": "prettier --check .", "format": "pnpm lint --write", "check": "tsc", - "test": "vitest run" + "test": "vitest run", + "prepublishOnly": "pnpm build" }, "dependencies": { + "@vercel/edge": "^1.1.2", "@vercel/nft": "^0.27.7", "esbuild": "^0.24.0" }, "devDependencies": { + "@rollup/plugin-node-resolve": "^15.3.0", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/node": "^18.19.48", + "rollup": "^4.14.2", "typescript": "^5.3.3", "vitest": "^2.1.6" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0", - "@vercel/edge": "^1.1.2" + "@sveltejs/kit": "^2.4.0" } } diff --git a/packages/adapter-vercel/rollup.config.js b/packages/adapter-vercel/rollup.config.js new file mode 100644 index 000000000000..b2a500299755 --- /dev/null +++ b/packages/adapter-vercel/rollup.config.js @@ -0,0 +1,17 @@ +import { nodeResolve } from '@rollup/plugin-node-resolve'; + +/** @type {import('rollup').RollupOptions} */ +const config = { + input: { + reroute: 'src/edge/reroute.js', + }, + output: { + dir: 'files/edge', + format: 'esm' + }, + plugins: [nodeResolve({ preferBuiltins: true })], + external: (id) => id === '__HOOKS__', + preserveEntrySignatures: 'exports-only' +}; + +export default config; diff --git a/packages/adapter-vercel/files/edge/edge.js b/packages/adapter-vercel/src/edge/edge.js similarity index 100% rename from packages/adapter-vercel/files/edge/edge.js rename to packages/adapter-vercel/src/edge/edge.js diff --git a/packages/adapter-vercel/files/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js similarity index 100% rename from packages/adapter-vercel/files/edge/reroute.js rename to packages/adapter-vercel/src/edge/reroute.js diff --git a/packages/adapter-vercel/files/edge/tsconfig.json b/packages/adapter-vercel/src/edge/tsconfig.json similarity index 100% rename from packages/adapter-vercel/files/edge/tsconfig.json rename to packages/adapter-vercel/src/edge/tsconfig.json diff --git a/packages/adapter-vercel/files/serverless.js b/packages/adapter-vercel/src/serverless.js similarity index 100% rename from packages/adapter-vercel/files/serverless.js rename to packages/adapter-vercel/src/serverless.js diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index d010921fa995..4f8cee472937 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -14,5 +14,5 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "exclude": ["files/edge"] + "exclude": ["src/edge", "files"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b821ce41ec9..724cc6c09464 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -272,6 +272,9 @@ importers: specifier: ^0.24.0 version: 0.24.0 devDependencies: + '@rollup/plugin-node-resolve': + specifier: ^15.3.0 + version: 15.3.0(rollup@4.27.4) '@sveltejs/kit': specifier: workspace:^ version: link:../kit @@ -281,6 +284,9 @@ importers: '@types/node': specifier: ^18.19.48 version: 18.19.50 + rollup: + specifier: ^4.14.2 + version: 4.27.4 typescript: specifier: ^5.3.3 version: 5.6.3 From c19a4ae67e81a1fd724e2a42845d72ef767c0602 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Tue, 3 Dec 2024 10:49:20 +0800 Subject: [PATCH 23/73] format --- packages/adapter-vercel/rollup.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-vercel/rollup.config.js b/packages/adapter-vercel/rollup.config.js index b2a500299755..394510d7a56a 100644 --- a/packages/adapter-vercel/rollup.config.js +++ b/packages/adapter-vercel/rollup.config.js @@ -3,7 +3,7 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; /** @type {import('rollup').RollupOptions} */ const config = { input: { - reroute: 'src/edge/reroute.js', + reroute: 'src/edge/reroute.js' }, output: { dir: 'files/edge', From aa125d5b8f5d031faf5ade9d0d405bf12fa52b4b Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Tue, 21 Jan 2025 11:35:37 +0800 Subject: [PATCH 24/73] disable duplicate import eslint rule for line --- packages/adapter-netlify/internal.d.ts | 1 + packages/adapter-vercel/internal.d.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/adapter-netlify/internal.d.ts b/packages/adapter-netlify/internal.d.ts index abea43f41169..d23ffb5a0727 100644 --- a/packages/adapter-netlify/internal.d.ts +++ b/packages/adapter-netlify/internal.d.ts @@ -10,6 +10,7 @@ declare module 'MANIFEST' { } declare module '__HOOKS__' { + // eslint-disable-next-line no-duplicate-imports import { Reroute } from '@sveltejs/kit'; export const reroute: Reroute; diff --git a/packages/adapter-vercel/internal.d.ts b/packages/adapter-vercel/internal.d.ts index d1a3caa010b8..253d06ade4fa 100644 --- a/packages/adapter-vercel/internal.d.ts +++ b/packages/adapter-vercel/internal.d.ts @@ -8,6 +8,7 @@ declare module 'MANIFEST' { } declare module '__HOOKS__' { + // eslint-disable-next-line no-duplicate-imports import { Reroute } from '@sveltejs/kit'; export const reroute: Reroute; } From 014e5dd4a5704b2446f455bd75215f82c7044219 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Tue, 21 Jan 2025 11:35:46 +0800 Subject: [PATCH 25/73] bump @vercel/edge --- packages/adapter-vercel/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 434ad7f66e50..bcd5a27c440a 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -44,7 +44,7 @@ "prepublishOnly": "pnpm build" }, "dependencies": { - "@vercel/edge": "^1.1.2", + "@vercel/edge": "^1.2.1", "@vercel/nft": "^0.29.0", "esbuild": "^0.24.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94d9e3810017..5f629214f560 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -266,8 +266,8 @@ importers: packages/adapter-vercel: dependencies: '@vercel/edge': - specifier: ^1.1.2 - version: 1.1.2 + specifier: ^1.2.1 + version: 1.2.1 '@vercel/nft': specifier: ^0.29.0 version: 0.29.0(rollup@4.30.1) @@ -2080,8 +2080,8 @@ packages: resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vercel/edge@1.1.2': - resolution: {integrity: sha512-wt5SnhsMahWX8U9ZZhFUQoiXhMn/CUxA5xeMdZX1cwyOL1ZbDR3rNI8HRT9RSU73nDxeF6jlnqJyp/0Jy0VM2A==} + '@vercel/edge@1.2.1': + resolution: {integrity: sha512-1++yncEyIAi68D3UEOlytYb1IUcIulMWdoSzX2h9LuSeeyR7JtaIgR8DcTQ6+DmYOQn+5MCh6LY+UmK6QBByNA==} '@vercel/nft@0.29.0': resolution: {integrity: sha512-LAkWyznNySxZ57ibqEGKnWFPqiRxyLvewFyB9iCHFfMsZlVyiu8MNFbjrGk3eV0vuyim5HzBloqlvSrG4BpZ7g==} @@ -4547,7 +4547,7 @@ snapshots: '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 - '@vercel/edge@1.1.2': {} + '@vercel/edge@1.2.1': {} '@vercel/nft@0.29.0(rollup@4.30.1)': dependencies: From 11c4a7015f9491b302ae0a05830433f3a243aa1b Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Tue, 21 Jan 2025 12:31:45 +0800 Subject: [PATCH 26/73] strip sveltekit url internals before passing url to reroute --- packages/adapter-netlify/src/reroute.js | 43 ++++++++++++++++- packages/adapter-vercel/src/edge/reroute.js | 51 ++++++++++++++++++++- packages/kit/src/runtime/shared.js | 2 + packages/kit/src/utils/url.js | 2 + 4 files changed, 95 insertions(+), 3 deletions(-) diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index c243e0d70abd..72be34447aaf 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -6,9 +6,50 @@ import { reroute } from '__HOOKS__'; */ export default function middleware(request) { const url = new URL(request.url); + + const is_data_request = has_data_suffix(url.pathname); + if (is_data_request) { + url.pathname = + strip_data_suffix(url.pathname) + + (url.searchParams.get(TRAILING_SLASH_PARAM) === '1' ? '/' : '') || '/'; + url.searchParams.delete(TRAILING_SLASH_PARAM); + url.searchParams.delete(INVALIDATED_PARAM); + } + const pathname = reroute({ url }); if (pathname) { - return new URL(pathname, request.url); + const new_url = new URL(request.url); + new_url.pathname = is_data_request ? add_data_suffix(pathname) : pathname; + return new_url; } } + +// These constants/functions are duplicated in kit and adapter-vercel + +const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; + +const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; + +const DATA_SUFFIX = '/__data.json'; +const HTML_DATA_SUFFIX = '.html__data.json'; + +/** @param {string} pathname */ +function has_data_suffix(pathname) { + return pathname.endsWith(DATA_SUFFIX) || pathname.endsWith(HTML_DATA_SUFFIX); +} + +/** @param {string} pathname */ +function add_data_suffix(pathname) { + if (pathname.endsWith('.html')) return pathname.replace(/\.html$/, HTML_DATA_SUFFIX); + return pathname.replace(/\/$/, '') + DATA_SUFFIX; +} + +/** @param {string} pathname */ +function strip_data_suffix(pathname) { + if (pathname.endsWith(HTML_DATA_SUFFIX)) { + return pathname.slice(0, -HTML_DATA_SUFFIX.length) + '.html'; + } + + return pathname.slice(0, -DATA_SUFFIX.length); +} diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js index 9118b7f44093..266da348ac76 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/src/edge/reroute.js @@ -6,6 +6,53 @@ import { rewrite, next } from '@vercel/edge'; * @returns {Response} */ export default function middleware(request) { - const pathname = reroute({ url: new URL(request.url) }); - return pathname ? rewrite(pathname) : next(request); + const url = new URL(request.url); + + const is_data_request = has_data_suffix(url.pathname); + if (is_data_request) { + url.pathname = + strip_data_suffix(url.pathname) + + (url.searchParams.get(TRAILING_SLASH_PARAM) === '1' ? '/' : '') || '/'; + url.searchParams.delete(TRAILING_SLASH_PARAM); + url.searchParams.delete(INVALIDATED_PARAM); + } + + const pathname = reroute({ url }); + + if (pathname) { + const new_url = new URL(request.url); + new_url.pathname = is_data_request ? add_data_suffix(pathname) : pathname; + return rewrite(new_url); + } + + return next(request); +} + +// These constants/functions are duplicated in kit and adapter-netlify + +const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; + +const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; + +const DATA_SUFFIX = '/__data.json'; +const HTML_DATA_SUFFIX = '.html__data.json'; + +/** @param {string} pathname */ +function has_data_suffix(pathname) { + return pathname.endsWith(DATA_SUFFIX) || pathname.endsWith(HTML_DATA_SUFFIX); +} + +/** @param {string} pathname */ +function add_data_suffix(pathname) { + if (pathname.endsWith('.html')) return pathname.replace(/\.html$/, HTML_DATA_SUFFIX); + return pathname.replace(/\/$/, '') + DATA_SUFFIX; +} + +/** @param {string} pathname */ +function strip_data_suffix(pathname) { + if (pathname.endsWith(HTML_DATA_SUFFIX)) { + return pathname.slice(0, -HTML_DATA_SUFFIX.length) + '.html'; + } + + return pathname.slice(0, -DATA_SUFFIX.length); } diff --git a/packages/kit/src/runtime/shared.js b/packages/kit/src/runtime/shared.js index b5c559b4292c..33b6c2eb0759 100644 --- a/packages/kit/src/runtime/shared.js +++ b/packages/kit/src/runtime/shared.js @@ -11,6 +11,8 @@ export function validate_depends(route_id, dep) { } } +// These constants are duplicated in adapter-vercel and adapter-netlify + export const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; export const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; diff --git a/packages/kit/src/utils/url.js b/packages/kit/src/utils/url.js index 0d0af684f6a2..e1f7430a91bd 100644 --- a/packages/kit/src/utils/url.js +++ b/packages/kit/src/utils/url.js @@ -200,6 +200,8 @@ function allow_nodejs_console_log(url) { } } +// These constants/functions are duplicated in adapter-vercel and adapter-netlify + const DATA_SUFFIX = '/__data.json'; const HTML_DATA_SUFFIX = '.html__data.json'; From e9a2f85021c88caf709840124ab0a3f81674ce6b Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Tue, 21 Jan 2025 12:39:37 +0800 Subject: [PATCH 27/73] revert --- packages/adapter-vercel/ambient.d.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/adapter-vercel/ambient.d.ts b/packages/adapter-vercel/ambient.d.ts index 5b3c0a534f8b..a106f64e3f12 100644 --- a/packages/adapter-vercel/ambient.d.ts +++ b/packages/adapter-vercel/ambient.d.ts @@ -1,4 +1,4 @@ -import type { RequestContext } from './index.js'; +import { RequestContext } from './index.js'; declare global { namespace App { @@ -10,5 +10,3 @@ declare global { } } } - -export {}; From a589063a9ee6b5e3e26e403f21ce80d68eaa341d Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 21 Jan 2025 12:41:33 +0800 Subject: [PATCH 28/73] Update .changeset/hot-guests-enjoy.md --- .changeset/hot-guests-enjoy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/hot-guests-enjoy.md b/.changeset/hot-guests-enjoy.md index 9eb5203aa831..b5a2abc5abb3 100644 --- a/.changeset/hot-guests-enjoy.md +++ b/.changeset/hot-guests-enjoy.md @@ -3,4 +3,4 @@ "@sveltejs/adapter-vercel": minor --- -fix: run `reroute` in an edge middleware before invoking an individual function +fix: run `reroute` in an edge middleware before invoking a split function From 46ac4dffc4b33570dd61a375ac621ff53e87af82 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 21 Jan 2025 12:43:52 +0800 Subject: [PATCH 29/73] Update documentation/docs/25-build-and-deploy/90-adapter-vercel.md --- documentation/docs/25-build-and-deploy/90-adapter-vercel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 771c5f563a95..fa2e8c119910 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -191,7 +191,7 @@ Projects created before a certain date may default to using an older Node versio ### Individual functions and `reroute` -If `split` is set to `true` for a route, or at the adapter level, the [`reroute`](/docs/hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. +If the `split` option is set to `true` for a route, or at the adapter level, the [`reroute`](/docs/hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. ## Troubleshooting From bb7418f6e6a9dbfb0590a9d73aceafd924fa335c Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 12:58:32 +0800 Subject: [PATCH 30/73] restore original path and export middleware reroute function --- packages/adapter-netlify/index.js | 17 +++---- packages/adapter-netlify/package.json | 2 +- packages/adapter-netlify/rollup.config.js | 40 ++++++++++------ packages/adapter-netlify/src/reroute.js | 50 ++------------------ packages/adapter-vercel/index.js | 21 ++++----- packages/adapter-vercel/src/edge/reroute.js | 51 ++------------------- packages/kit/package.json | 12 +++-- packages/kit/scripts/generate-dts.js | 1 + packages/kit/src/core/adapt/builder.js | 20 ++++++++ packages/kit/src/exports/adapter/index.js | 39 ++++++++++++++++ packages/kit/src/exports/public.d.ts | 5 ++ packages/kit/src/runtime/server/respond.js | 31 +++++++++---- packages/kit/src/runtime/shared.js | 4 +- packages/kit/src/utils/url.js | 2 - packages/kit/types/index.d.ts | 18 ++++++++ 15 files changed, 166 insertions(+), 147 deletions(-) create mode 100644 packages/kit/src/exports/adapter/index.js diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 221e8c0a9b81..15eb6a8ccbc6 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -95,14 +95,11 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { } else { generate_lambda_functions({ builder, split, publish }); - const hooks_filename = builder.config.kit.files.hooks.universal.split('/').at(-1); - const hooks_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; + /** @type {string | void} */ + let reroute_path; - const has_reroute_hook = - existsSync(hooks_path) && (await import(hooks_path).then((m) => 'reroute' in m)); - - if (split && has_reroute_hook) { - await generate_reroute_middleware({ builder, hooks_path }); + if (split && (reroute_path = await builder.getReroutePath())) { + await generate_reroute_middleware({ builder, reroute_path }); } } }, @@ -161,9 +158,9 @@ async function generate_edge_functions({ builder }) { /** * @param {object} params * @param {import('@sveltejs/kit').Builder} params.builder - * @param {string} params.hooks_path + * @param {string} params.reroute_path */ -async function generate_reroute_middleware({ builder, hooks_path }) { +async function generate_reroute_middleware({ builder, reroute_path }) { const tmp = builder.getBuildDirectory('netlify-tmp'); builder.rimraf(tmp); builder.mkdirp(tmp); @@ -174,7 +171,7 @@ async function generate_reroute_middleware({ builder, hooks_path }) { builder.copy(`${files}/reroute.js`, `${tmp}/entry.js`, { replace: { - __HOOKS__: hooks_path + __HOOKS__: reroute_path } }); diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 95d85faa0139..6601bdc5e8d9 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -33,7 +33,7 @@ ], "scripts": { "dev": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -cw", - "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/edge.js', 'files/edge.js'); fs.cpSync('src/reroute.js', 'files/reroute.js')\"", + "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/edge.js', 'files/edge.js')\"", "test": "vitest run", "check": "tsc", "lint": "prettier --check .", diff --git a/packages/adapter-netlify/rollup.config.js b/packages/adapter-netlify/rollup.config.js index b69d62886502..c77f061d83b6 100644 --- a/packages/adapter-netlify/rollup.config.js +++ b/packages/adapter-netlify/rollup.config.js @@ -2,20 +2,32 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; -/** @type {import('rollup').RollupOptions} */ -const config = { - input: { - serverless: 'src/serverless.js', - shims: 'src/shims.js' +/** @type {import('rollup').RollupOptions[]} */ +const config = [ + { + input: { + serverless: 'src/serverless.js', + shims: 'src/shims.js' + }, + output: { + dir: 'files/esm', + format: 'esm' + }, + // @ts-ignore https://github.com/rollup/plugins/issues/1329 + plugins: [nodeResolve({ preferBuiltins: true }), commonjs(), json()], + external: (id) => id === '0SERVER' || id.startsWith('node:'), + preserveEntrySignatures: 'exports-only' }, - output: { - dir: 'files/esm', - format: 'esm' - }, - // @ts-ignore https://github.com/rollup/plugins/issues/1329 - plugins: [nodeResolve({ preferBuiltins: true }), commonjs(), json()], - external: (id) => id === '0SERVER' || id.startsWith('node:'), - preserveEntrySignatures: 'exports-only' -}; + { + input: 'src/reroute.js', + output: { + file: 'files/reroute.js', + format: 'esm' + }, + plugins: [nodeResolve({ preferBuiltins: true })], + external: (id) => id === '__HOOKS__', + preserveEntrySignatures: 'exports-only' + } +]; export default config; diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index 72be34447aaf..ebdabb32879e 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -1,55 +1,13 @@ import { reroute } from '__HOOKS__'; +import { applyReroute } from '@sveltejs/kit/adapter'; /** * @param {Request} request * @returns {URL | undefined} */ export default function middleware(request) { - const url = new URL(request.url); - - const is_data_request = has_data_suffix(url.pathname); - if (is_data_request) { - url.pathname = - strip_data_suffix(url.pathname) + - (url.searchParams.get(TRAILING_SLASH_PARAM) === '1' ? '/' : '') || '/'; - url.searchParams.delete(TRAILING_SLASH_PARAM); - url.searchParams.delete(INVALIDATED_PARAM); - } - - const pathname = reroute({ url }); - - if (pathname) { - const new_url = new URL(request.url); - new_url.pathname = is_data_request ? add_data_suffix(pathname) : pathname; - return new_url; - } -} - -// These constants/functions are duplicated in kit and adapter-vercel - -const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; - -const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; - -const DATA_SUFFIX = '/__data.json'; -const HTML_DATA_SUFFIX = '.html__data.json'; - -/** @param {string} pathname */ -function has_data_suffix(pathname) { - return pathname.endsWith(DATA_SUFFIX) || pathname.endsWith(HTML_DATA_SUFFIX); -} - -/** @param {string} pathname */ -function add_data_suffix(pathname) { - if (pathname.endsWith('.html')) return pathname.replace(/\.html$/, HTML_DATA_SUFFIX); - return pathname.replace(/\/$/, '') + DATA_SUFFIX; -} - -/** @param {string} pathname */ -function strip_data_suffix(pathname) { - if (pathname.endsWith(HTML_DATA_SUFFIX)) { - return pathname.slice(0, -HTML_DATA_SUFFIX.length) + '.html'; + const rerouted_path = applyReroute(new URL(request.url), reroute); + if (rerouted_path) { + return rerouted_path; } - - return pathname.slice(0, -DATA_SUFFIX.length); } diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 56a0fe51ff94..b62cf2b873e2 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -227,8 +227,9 @@ const plugin = function (defaults = {}) { /** * @param {string} name * @param {import('./index.js').Config} config + * @param {Record=} alias */ - async function generate_edge_middleware(name, config) { + async function generate_edge_middleware(name, config, alias) { const tmp = builder.getBuildDirectory('vercel-tmp'); const dest = `${tmp}/${name}.js`; @@ -238,9 +239,7 @@ const plugin = function (defaults = {}) { await bundle_edge_function( { entryPoints: [dest], - alias: { - __HOOKS__: hooks_output_path - } + alias }, name, config @@ -348,21 +347,19 @@ const plugin = function (defaults = {}) { const singular = groups.size === 1; - const hooks_filename = builder.config.kit.files.hooks.universal.split('/').at(-1); - const hooks_output_path = `${builder.getServerDirectory()}/chunks/${hooks_filename}.js`; - - const has_reroute_hook = - fs.existsSync(hooks_output_path) && - (await import(hooks_output_path).then((m) => 'reroute' in m)); + /** @type {string | void} */ + let reroute_path; - if (!singular && has_reroute_hook) { + if (!singular && (reroute_path = await builder.getReroutePath())) { static_config.routes.push({ src: '/.*', middlewarePath: 'reroute', continue: true }); - await generate_edge_middleware('reroute', defaults); + await generate_edge_middleware('reroute', defaults, { + __HOOKS__: reroute_path + }); } for (const group of groups.values()) { diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js index 266da348ac76..c84edb1fa78c 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/src/edge/reroute.js @@ -1,58 +1,15 @@ import { reroute } from '__HOOKS__'; import { rewrite, next } from '@vercel/edge'; +import { applyReroute } from '@sveltejs/kit/adapter'; /** * @param {Request} request * @returns {Response} */ export default function middleware(request) { - const url = new URL(request.url); - - const is_data_request = has_data_suffix(url.pathname); - if (is_data_request) { - url.pathname = - strip_data_suffix(url.pathname) + - (url.searchParams.get(TRAILING_SLASH_PARAM) === '1' ? '/' : '') || '/'; - url.searchParams.delete(TRAILING_SLASH_PARAM); - url.searchParams.delete(INVALIDATED_PARAM); + const rerouted_path = applyReroute(new URL(request.url), reroute); + if (rerouted_path) { + return rewrite(rerouted_path); } - - const pathname = reroute({ url }); - - if (pathname) { - const new_url = new URL(request.url); - new_url.pathname = is_data_request ? add_data_suffix(pathname) : pathname; - return rewrite(new_url); - } - return next(request); } - -// These constants/functions are duplicated in kit and adapter-netlify - -const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; - -const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; - -const DATA_SUFFIX = '/__data.json'; -const HTML_DATA_SUFFIX = '.html__data.json'; - -/** @param {string} pathname */ -function has_data_suffix(pathname) { - return pathname.endsWith(DATA_SUFFIX) || pathname.endsWith(HTML_DATA_SUFFIX); -} - -/** @param {string} pathname */ -function add_data_suffix(pathname) { - if (pathname.endsWith('.html')) return pathname.replace(/\.html$/, HTML_DATA_SUFFIX); - return pathname.replace(/\/$/, '') + DATA_SUFFIX; -} - -/** @param {string} pathname */ -function strip_data_suffix(pathname) { - if (pathname.endsWith(HTML_DATA_SUFFIX)) { - return pathname.slice(0, -HTML_DATA_SUFFIX.length) + '.html'; - } - - return pathname.slice(0, -DATA_SUFFIX.length); -} diff --git a/packages/kit/package.json b/packages/kit/package.json index a8ba2b6c5b87..9ae00a536d6f 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -80,6 +80,14 @@ "types": "./types/index.d.ts", "import": "./src/exports/index.js" }, + "./adapter": { + "types": "./types/index.d.ts", + "import": "./src/exports/adapter/index.js" + }, + "./hooks": { + "types": "./types/index.d.ts", + "import": "./src/exports/hooks/index.js" + }, "./node": { "types": "./types/index.d.ts", "import": "./src/exports/node/index.js" @@ -88,10 +96,6 @@ "types": "./types/index.d.ts", "import": "./src/exports/node/polyfills.js" }, - "./hooks": { - "types": "./types/index.d.ts", - "import": "./src/exports/hooks/index.js" - }, "./vite": { "types": "./types/index.d.ts", "import": "./src/exports/vite/index.js" diff --git a/packages/kit/scripts/generate-dts.js b/packages/kit/scripts/generate-dts.js index e8579ec59054..421f5867d81c 100644 --- a/packages/kit/scripts/generate-dts.js +++ b/packages/kit/scripts/generate-dts.js @@ -5,6 +5,7 @@ await createBundle({ output: 'types/index.d.ts', modules: { '@sveltejs/kit': 'src/exports/public.d.ts', + '@sveltejs/kit/adapter': 'src/exports/adapter/index.js', '@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', diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index e02efbdd1e28..2a9f1d52f926 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -208,6 +208,26 @@ export function create_builder({ return build_data.app_path; }, + async getReroutePath() { + const hooks = build_data.manifest_data.hooks.universal; + console.log(build_data.manifest_data.hooks) + if (!hooks) return; + + const hooks_path = `${config.kit.outDir}/output/server/${build_data.server_manifest[hooks]}`; + + console.log({ + hooks_path, + exists: existsSync(hooks_path) + }) + + const has_reroute_hook = + existsSync(hooks_path) && (await import(hooks_path).then((m) => 'reroute' in m)); + + if (has_reroute_hook) { + return hooks_path; + } + }, + writeClient(dest) { return copy(`${config.kit.outDir}/output/client`, dest, { // avoid making vite build artefacts public diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js new file mode 100644 index 000000000000..087eee72f847 --- /dev/null +++ b/packages/kit/src/exports/adapter/index.js @@ -0,0 +1,39 @@ +import { + INVALIDATED_PARAM, + ORIGINAL_PATH_PARAM, + TRAILING_SLASH_PARAM +} from '../../runtime/shared.js'; +import { has_data_suffix, strip_data_suffix } from '../../utils/url.js'; + +/** + * If your deployment platform supports splitting your app into multiple functions, + * you should run this in a middleware that runs before the main handler + * to reroute the request to the correct function. + * + * @param {URL} url + * @param {import("@sveltejs/kit").Reroute} reroute + * @returns {URL | void} + * @since 2.17.0 + */ +export function applyReroute(url, reroute) { + const url_copy = new URL(url); + + const is_data_request = has_data_suffix(url.pathname); + if (is_data_request) { + url_copy.pathname = + strip_data_suffix(url_copy.pathname) + + (url_copy.searchParams.get(TRAILING_SLASH_PARAM) === '1' ? '/' : '') || '/'; + url_copy.searchParams.delete(TRAILING_SLASH_PARAM); + url_copy.searchParams.delete(INVALIDATED_PARAM); + } + + // reroute could alter the given URL, so we pass a copy + const pathname = reroute({ url: url_copy }); + + if (pathname) { + const new_url = new URL(url); + new_url.searchParams.set(ORIGINAL_PATH_PARAM, url.pathname); + new_url.pathname = pathname; + return new_url; + } +} diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 0d5888be0699..bcaec9ff4363 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -145,6 +145,11 @@ export interface Builder { getServerDirectory: () => string; /** Get the application path including any configured `base` path, e.g. `my-base-path/_app`. */ getAppPath: () => string; + /** + * Get the fully resolved path to the file containing the `reroute` hook if it exists. + * @since 2.17.0 + */ + getReroutePath: () => Promise; /** * Write client assets to `dest`. diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index ab51505a897c..08641522227f 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -29,7 +29,7 @@ import { import { get_option } from '../../utils/options.js'; import { json, text } from '../../exports/index.js'; import { action_json_redirect, is_action_json_request } from './page/actions.js'; -import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM } from '../shared.js'; +import { INVALIDATED_PARAM, ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../shared.js'; import { get_public_env } from './env_module.js'; import { load_page_nodes } from './page/load_page_nodes.js'; import { get_page_config } from '../../utils/route_config.js'; @@ -85,6 +85,17 @@ export async function respond(request, options, manifest, state) { return text('Not found', { status: 404 }); } + /** @type {string | undefined} */ + let rerouted_path = undefined; + + // if reroute already ran in an edge middleware we need to restore the original path + const original_path = url.searchParams.get(ORIGINAL_PATH_PARAM); + if (original_path) { + rerouted_path = url.pathname; + url.pathname = original_path; + url.searchParams.delete(ORIGINAL_PATH_PARAM); + } + const is_data_request = has_data_suffix(url.pathname); /** @type {boolean[] | undefined} */ let invalidated_data_nodes; @@ -100,16 +111,18 @@ export async function respond(request, options, manifest, state) { url.searchParams.delete(INVALIDATED_PARAM); } - // reroute could alter the given URL, so we pass a copy - let rerouted_path; - try { - rerouted_path = options.hooks.reroute({ url: new URL(url) }) ?? url.pathname; - } catch { - return text('Internal Server Error', { - status: 500 - }); + if (!rerouted_path) { + try { + // reroute could alter the given URL, so we pass a copy + rerouted_path = options.hooks.reroute({ url: new URL(url) }) ?? url.pathname; + } catch { + return text('Internal Server Error', { + status: 500 + }); + } } + /** @type {string} */ let decoded; try { decoded = decode_pathname(rerouted_path); diff --git a/packages/kit/src/runtime/shared.js b/packages/kit/src/runtime/shared.js index 33b6c2eb0759..6570156e4a1b 100644 --- a/packages/kit/src/runtime/shared.js +++ b/packages/kit/src/runtime/shared.js @@ -11,8 +11,8 @@ export function validate_depends(route_id, dep) { } } -// These constants are duplicated in adapter-vercel and adapter-netlify - export const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; export const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; + +export const ORIGINAL_PATH_PARAM = 'x-sveltekit-original-path'; diff --git a/packages/kit/src/utils/url.js b/packages/kit/src/utils/url.js index e1f7430a91bd..0d0af684f6a2 100644 --- a/packages/kit/src/utils/url.js +++ b/packages/kit/src/utils/url.js @@ -200,8 +200,6 @@ function allow_nodejs_console_log(url) { } } -// These constants/functions are duplicated in adapter-vercel and adapter-netlify - const DATA_SUFFIX = '/__data.json'; const HTML_DATA_SUFFIX = '.html__data.json'; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index a7b9cf1e4a09..a500fc5ede81 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -127,6 +127,11 @@ declare module '@sveltejs/kit' { getServerDirectory: () => string; /** Get the application path including any configured `base` path, e.g. `my-base-path/_app`. */ getAppPath: () => string; + /** + * Get the fully resolved path to the file containing the `reroute` hook if it exists. + * @since 2.17.0 + */ + getReroutePath: () => Promise; /** * Write client assets to `dest`. @@ -1970,6 +1975,19 @@ declare module '@sveltejs/kit' { export {}; } +declare module '@sveltejs/kit/adapter' { + /** + * If your deployment platform supports splitting your app into multiple functions, + * you should run this in a middleware that runs before the main handler + * to reroute the request to the correct function. + * + * @since 2.17.0 + */ + export function applyReroute(url: URL, reroute: import("@sveltejs/kit").Reroute): URL | void; + + export {}; +} + declare module '@sveltejs/kit/hooks' { /** * A helper function for sequencing multiple `handle` calls in a middleware-like manner. From 1da5a79d54d5f5112f48dcbefa2ffb755fdce2c8 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 13:12:22 +0800 Subject: [PATCH 31/73] remove logs --- packages/kit/src/core/adapt/builder.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 2a9f1d52f926..d3224f2547f4 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -210,19 +210,11 @@ export function create_builder({ async getReroutePath() { const hooks = build_data.manifest_data.hooks.universal; - console.log(build_data.manifest_data.hooks) if (!hooks) return; - const hooks_path = `${config.kit.outDir}/output/server/${build_data.server_manifest[hooks]}`; - - console.log({ - hooks_path, - exists: existsSync(hooks_path) - }) - + const hooks_path = `${config.kit.outDir}/output/server/${build_data.server_manifest[hooks].file}`; const has_reroute_hook = existsSync(hooks_path) && (await import(hooks_path).then((m) => 'reroute' in m)); - if (has_reroute_hook) { return hooks_path; } From d13fb42e314f03398e6f61996e5d43a4ba11f9fd Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 13:14:03 +0800 Subject: [PATCH 32/73] bump adapter kit peer version --- packages/adapter-netlify/package.json | 2 +- packages/adapter-vercel/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index bcc1d4d2ed0f..8a45c7d918fe 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -59,6 +59,6 @@ "vitest": "^3.0.1" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0" + "@sveltejs/kit": "^2.17.0" } } diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index bcd5a27c440a..2325a0b0962d 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -58,6 +58,6 @@ "vitest": "^3.0.1" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0" + "@sveltejs/kit": "^2.17.0" } } From 25a88d099881eafedbbf0e6b644cccd77cf9c77d Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 13:17:10 +0800 Subject: [PATCH 33/73] format --- packages/kit/src/exports/adapter/index.js | 4 ++-- packages/kit/src/exports/public.d.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 087eee72f847..9ab51e12edf5 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -9,7 +9,7 @@ import { has_data_suffix, strip_data_suffix } from '../../utils/url.js'; * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler * to reroute the request to the correct function. - * + * * @param {URL} url * @param {import("@sveltejs/kit").Reroute} reroute * @returns {URL | void} @@ -27,7 +27,7 @@ export function applyReroute(url, reroute) { url_copy.searchParams.delete(INVALIDATED_PARAM); } - // reroute could alter the given URL, so we pass a copy + // reroute could alter the given URL, so we pass a copy const pathname = reroute({ url: url_copy }); if (pathname) { diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index bcaec9ff4363..8962d5173f3f 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -149,7 +149,7 @@ export interface Builder { * Get the fully resolved path to the file containing the `reroute` hook if it exists. * @since 2.17.0 */ - getReroutePath: () => Promise; + getReroutePath: () => Promise; /** * Write client assets to `dest`. From 435e12ed83cdeb829c26fc90abdefde858b009fe Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 13:18:29 +0800 Subject: [PATCH 34/73] reword changeset --- .changeset/hot-guests-enjoy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/hot-guests-enjoy.md b/.changeset/hot-guests-enjoy.md index b5a2abc5abb3..b481541eccc4 100644 --- a/.changeset/hot-guests-enjoy.md +++ b/.changeset/hot-guests-enjoy.md @@ -3,4 +3,4 @@ "@sveltejs/adapter-vercel": minor --- -fix: run `reroute` in an edge middleware before invoking a split function +fix: run `reroute` in an edge middleware if the app has been split into multiple functions From 8d667e6a8148d779219cb350adb770ad355d8158 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 13:57:13 +0800 Subject: [PATCH 35/73] fix incorrect merge --- packages/adapter-netlify/index.js | 65 ++++++++++++------------------- 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index d348bbabe1cd..925e8990ac8a 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -151,42 +151,6 @@ async function generate_edge_functions({ builder }) { writeFileSync(`${tmp}/manifest.js`, `export const manifest = ${manifest};\n`); - /** @type {{ assets: Set }} */ - const { assets } = (await import(`${tmp}/manifest.js`)).manifest; - - const path = '/*'; - // We only need to specify paths without the trailing slash because - // Netlify will handle the optional trailing slash for us - const excludedPath = [ - // Contains static files - `/${builder.getAppPath()}/*`, - ...builder.prerendered.paths, - ...Array.from(assets).flatMap((asset) => { - if (asset.endsWith('/index.html')) { - const dir = asset.replace(/\/index\.html$/, ''); - return [ - `${builder.config.kit.paths.base}/${asset}`, - `${builder.config.kit.paths.base}/${dir}` - ]; - } - return `${builder.config.kit.paths.base}/${asset}`; - }), - // Should not be served by SvelteKit at all - '/.netlify/*' - ]; - - /** @type {HandlerManifest} */ - const edge_manifest = { - functions: [ - { - function: 'render', - path, - excludedPath - } - ], - version: 1 - }; - await bundle_edge_function({ builder, name: 'render' }); } @@ -244,18 +208,37 @@ async function bundle_edge_function({ builder, name }) { alias: Object.fromEntries(builtinModules.map((id) => [id, `node:${id}`])) }); - // Don't match the static directory - const pattern = '^/.*$'; + /** @type {{ assets: Set }} */ + const { assets } = (await import(`${tmp}/manifest.js`)).manifest; - // Go doesn't support lookarounds, so we can't do this - // const pattern = appDir ? `^/(?!${escapeStringRegexp(appDir)}).*$` : '^/.*$'; + const path = '/*'; + // We only need to specify paths without the trailing slash because + // Netlify will handle the optional trailing slash for us + const excludedPath = [ + // Contains static files + `/${builder.getAppPath()}/*`, + ...builder.prerendered.paths, + ...Array.from(assets).flatMap((asset) => { + if (asset.endsWith('/index.html')) { + const dir = asset.replace(/\/index\.html$/, ''); + return [ + `${builder.config.kit.paths.base}/${asset}`, + `${builder.config.kit.paths.base}/${dir}` + ]; + } + return `${builder.config.kit.paths.base}/${asset}`; + }), + // Should not be served by SvelteKit at all + '/.netlify/*' + ]; /** @type {HandlerManifest} */ const edge_manifest = { functions: [ { function: name, - pattern + path, + excludedPath } ], version: 1 From 95d0d42b24cd2df21f8246fcb97690a19ca3d2cb Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 13:59:32 +0800 Subject: [PATCH 36/73] format --- 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 a500fc5ede81..e8912a558d2f 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -131,7 +131,7 @@ declare module '@sveltejs/kit' { * Get the fully resolved path to the file containing the `reroute` hook if it exists. * @since 2.17.0 */ - getReroutePath: () => Promise; + getReroutePath: () => Promise; /** * Write client assets to `dest`. From 4fb32a5a394fade90b71c3812a900376f7a47aa5 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 17:09:09 +0800 Subject: [PATCH 37/73] apparently the edge middleware preserves the original url so we don't need to --- packages/kit/src/exports/adapter/index.js | 10 ++++------ packages/kit/src/runtime/server/respond.js | 21 +++++---------------- packages/kit/src/runtime/shared.js | 2 -- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 9ab51e12edf5..75b5eac099f4 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -1,9 +1,8 @@ import { INVALIDATED_PARAM, - ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../../runtime/shared.js'; -import { has_data_suffix, strip_data_suffix } from '../../utils/url.js'; +import { add_data_suffix, has_data_suffix, strip_data_suffix } from '../../utils/url.js'; /** * If your deployment platform supports splitting your app into multiple functions, @@ -28,12 +27,11 @@ export function applyReroute(url, reroute) { } // reroute could alter the given URL, so we pass a copy - const pathname = reroute({ url: url_copy }); + const reroute_path = reroute({ url: url_copy }); - if (pathname) { + if (reroute_path) { const new_url = new URL(url); - new_url.searchParams.set(ORIGINAL_PATH_PARAM, url.pathname); - new_url.pathname = pathname; + new_url.pathname = is_data_request ? add_data_suffix(reroute_path) : reroute_path; return new_url; } } diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index f77431510f40..919452b1b6b7 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -29,7 +29,7 @@ import { import { get_option } from '../../utils/options.js'; import { json, text } from '../../exports/index.js'; import { action_json_redirect, is_action_json_request } from './page/actions.js'; -import { INVALIDATED_PARAM, ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../shared.js'; +import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM } from '../shared.js'; import { get_public_env } from './env_module.js'; import { load_page_nodes } from './page/load_page_nodes.js'; import { get_page_config } from '../../utils/route_config.js'; @@ -85,17 +85,6 @@ export async function respond(request, options, manifest, state) { return text('Not found', { status: 404 }); } - /** @type {string | undefined} */ - let rerouted_path = undefined; - - // if reroute already ran in an edge middleware we need to restore the original path - const original_path = url.searchParams.get(ORIGINAL_PATH_PARAM); - if (original_path) { - rerouted_path = url.pathname; - url.pathname = original_path; - url.searchParams.delete(ORIGINAL_PATH_PARAM); - } - const is_data_request = has_data_suffix(url.pathname); /** @type {boolean[] | undefined} */ let invalidated_data_nodes; @@ -110,17 +99,17 @@ export async function respond(request, options, manifest, state) { .map((node) => node === '1'); url.searchParams.delete(INVALIDATED_PARAM); } - - if (!rerouted_path) { + + // reroute could alter the given URL, so we pass a copy + /** @type {string} */ + let rerouted_path; try { - // reroute could alter the given URL, so we pass a copy rerouted_path = options.hooks.reroute({ url: new URL(url) }) ?? url.pathname; } catch { return text('Internal Server Error', { status: 500 }); } - } /** @type {string} */ let decoded; diff --git a/packages/kit/src/runtime/shared.js b/packages/kit/src/runtime/shared.js index 6570156e4a1b..b5c559b4292c 100644 --- a/packages/kit/src/runtime/shared.js +++ b/packages/kit/src/runtime/shared.js @@ -14,5 +14,3 @@ export function validate_depends(route_id, dep) { export const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; export const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; - -export const ORIGINAL_PATH_PARAM = 'x-sveltekit-original-path'; From 9934caaf4d38f70499a573176d9cf1f7ace8a88b Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 17:13:21 +0800 Subject: [PATCH 38/73] format --- packages/kit/src/exports/adapter/index.js | 5 +---- packages/kit/src/runtime/server/respond.js | 18 +++++++++--------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 75b5eac099f4..6cfc9d36a49b 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -1,7 +1,4 @@ -import { - INVALIDATED_PARAM, - TRAILING_SLASH_PARAM -} from '../../runtime/shared.js'; +import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM } from '../../runtime/shared.js'; import { add_data_suffix, has_data_suffix, strip_data_suffix } from '../../utils/url.js'; /** diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index 919452b1b6b7..c1fb1fd63d0a 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -99,17 +99,17 @@ export async function respond(request, options, manifest, state) { .map((node) => node === '1'); url.searchParams.delete(INVALIDATED_PARAM); } - - // reroute could alter the given URL, so we pass a copy + /** @type {string} */ let rerouted_path; - try { - rerouted_path = options.hooks.reroute({ url: new URL(url) }) ?? url.pathname; - } catch { - return text('Internal Server Error', { - status: 500 - }); - } + try { + // reroute could alter the given URL, so we pass a copy + rerouted_path = options.hooks.reroute({ url: new URL(url) }) ?? url.pathname; + } catch { + return text('Internal Server Error', { + status: 500 + }); + } /** @type {string} */ let decoded; From 705f2d1ed5da96d16c9b4dcd32fa286196464ef3 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 23 Jan 2025 19:01:25 +0800 Subject: [PATCH 39/73] fix merge discrepencies --- packages/adapter-netlify/index.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 925e8990ac8a..25dbfb5d9900 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -145,12 +145,6 @@ async function generate_edge_functions({ builder }) { } }); - const manifest = builder.generateManifest({ - relativePath - }); - - writeFileSync(`${tmp}/manifest.js`, `export const manifest = ${manifest};\n`); - await bundle_edge_function({ builder, name: 'render' }); } @@ -186,6 +180,10 @@ async function generate_reroute_middleware({ builder, reroute_path }) { async function bundle_edge_function({ builder, name }) { const tmp = builder.getBuildDirectory('netlify-tmp'); + const relativePath = posix.relative(tmp, builder.getServerDirectory()); + const manifest = builder.generateManifest({ relativePath }); + writeFileSync(`${tmp}/manifest.js`, `export const manifest = ${manifest};\n`); + await esbuild.build({ entryPoints: [`${tmp}/entry.js`], outfile: `.netlify/edge-functions/${name}.js`, From e38a660252687376b3c8aff473f99c4671674a85 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 24 Jan 2025 12:43:54 +0800 Subject: [PATCH 40/73] fix endless loop on Netlify --- packages/adapter-netlify/src/reroute.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index ebdabb32879e..d13ec4faa612 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -6,8 +6,13 @@ import { applyReroute } from '@sveltejs/kit/adapter'; * @returns {URL | undefined} */ export default function middleware(request) { - const rerouted_path = applyReroute(new URL(request.url), reroute); - if (rerouted_path) { + const url = new URL(request.url); + const rerouted_path = applyReroute(url, reroute); + + // a rewrite on Netlify will cause this function to run again with the new URL + // instead of moving onto the route function, so we only return a URL if + // the reroute path is different from the original to avoid an endless loop + if (rerouted_path && url.pathname !== rerouted_path.pathname) { return rerouted_path; } } From 5783e9bb778983e1d8bac90a3e4f57bdf2a5c64d Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 24 Jan 2025 13:22:07 +0800 Subject: [PATCH 41/73] restore original path --- packages/kit/src/exports/adapter/index.js | 3 ++- packages/kit/src/runtime/server/respond.js | 11 +++++++++-- packages/kit/src/runtime/shared.js | 2 ++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 6cfc9d36a49b..cf1a91b12699 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -1,4 +1,4 @@ -import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM } from '../../runtime/shared.js'; +import { INVALIDATED_PARAM, ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../../runtime/shared.js'; import { add_data_suffix, has_data_suffix, strip_data_suffix } from '../../utils/url.js'; /** @@ -28,6 +28,7 @@ export function applyReroute(url, reroute) { if (reroute_path) { const new_url = new URL(url); + new_url.searchParams.set(ORIGINAL_PATH_PARAM, url.pathname); new_url.pathname = is_data_request ? add_data_suffix(reroute_path) : reroute_path; return new_url; } diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index c1fb1fd63d0a..a1bddc1b7bc8 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -29,7 +29,7 @@ import { import { get_option } from '../../utils/options.js'; import { json, text } from '../../exports/index.js'; import { action_json_redirect, is_action_json_request } from './page/actions.js'; -import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM } from '../shared.js'; +import { INVALIDATED_PARAM, ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../shared.js'; import { get_public_env } from './env_module.js'; import { load_page_nodes } from './page/load_page_nodes.js'; import { get_page_config } from '../../utils/route_config.js'; @@ -57,9 +57,16 @@ const allowed_page_methods = new Set(['GET', 'HEAD', 'OPTIONS']); * @returns {Promise} */ export async function respond(request, options, manifest, state) { - /** URL but stripped from the potential `/__data.json` suffix and its search param */ + // URL but stripped from the potential `/__data.json` suffix and its search param const url = new URL(request.url); + // if the url has been rewritten by a middleware, we need to restore the original path + const original_path = url.searchParams.get(ORIGINAL_PATH_PARAM); + if (original_path) { + url.pathname = original_path; + url.searchParams.delete(ORIGINAL_PATH_PARAM); + } + if (options.csrf_check_origin) { const forbidden = is_form_content_type(request) && diff --git a/packages/kit/src/runtime/shared.js b/packages/kit/src/runtime/shared.js index b5c559b4292c..6570156e4a1b 100644 --- a/packages/kit/src/runtime/shared.js +++ b/packages/kit/src/runtime/shared.js @@ -14,3 +14,5 @@ export function validate_depends(route_id, dep) { export const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; export const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; + +export const ORIGINAL_PATH_PARAM = 'x-sveltekit-original-path'; From 09a744bbbd3b08494a1c4a11c547ea47cd8dea67 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 24 Jan 2025 15:11:22 +0800 Subject: [PATCH 42/73] format --- packages/kit/src/exports/adapter/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index cf1a91b12699..39c7fa9d8a8e 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -1,4 +1,8 @@ -import { INVALIDATED_PARAM, ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../../runtime/shared.js'; +import { + INVALIDATED_PARAM, + ORIGINAL_PATH_PARAM, + TRAILING_SLASH_PARAM +} from '../../runtime/shared.js'; import { add_data_suffix, has_data_suffix, strip_data_suffix } from '../../utils/url.js'; /** From 9fcdfc15d6bda9fac7355fbd93236dcaa20e6364 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 31 Jan 2025 11:39:11 +0100 Subject: [PATCH 43/73] Apply suggestions from code review --- packages/adapter-netlify/index.js | 2 +- packages/adapter-vercel/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 25dbfb5d9900..438057505868 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -102,7 +102,7 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { /** @type {string | void} */ let reroute_path; - if (split && (reroute_path = await builder.getReroutePath())) { + if (split && (reroute_path = await builder.getReroutePath?.())) { await generate_reroute_middleware({ builder, reroute_path }); } } diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index b62cf2b873e2..97aafe1d2099 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -350,7 +350,7 @@ const plugin = function (defaults = {}) { /** @type {string | void} */ let reroute_path; - if (!singular && (reroute_path = await builder.getReroutePath())) { + if (!singular && (reroute_path = await builder.getReroutePath?.())) { static_config.routes.push({ src: '/.*', middlewarePath: 'reroute', From d5006293be37235b0a202a631b7e41c6521d4f7c Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 5 Feb 2025 09:46:55 +0800 Subject: [PATCH 44/73] fix import --- packages/kit/src/exports/adapter/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 39c7fa9d8a8e..8ed6a05b4f84 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -3,7 +3,7 @@ import { ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../../runtime/shared.js'; -import { add_data_suffix, has_data_suffix, strip_data_suffix } from '../../utils/url.js'; +import { add_data_suffix, has_data_suffix, strip_data_suffix } from '../../runtime/pathname.js'; /** * If your deployment platform supports splitting your app into multiple functions, From 826bdd16b830427063292d1eac051f1101efb9ca Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 5 Feb 2025 09:50:44 +0800 Subject: [PATCH 45/73] kit changeset --- .changeset/modern-dogs-tie.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/modern-dogs-tie.md diff --git a/.changeset/modern-dogs-tie.md b/.changeset/modern-dogs-tie.md new file mode 100644 index 000000000000..a7893dff3826 --- /dev/null +++ b/.changeset/modern-dogs-tie.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: add `applyReroute` and `getReroutePath` helpers for running `reroute` in a middleware before the main handler From 08000bd883fe43ef404b4f5f40f1c8869aabff60 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 12 Feb 2025 13:02:53 +0800 Subject: [PATCH 46/73] Update packages/adapter-netlify/package.json --- packages/adapter-netlify/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 8a45c7d918fe..bcc1d4d2ed0f 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -59,6 +59,6 @@ "vitest": "^3.0.1" }, "peerDependencies": { - "@sveltejs/kit": "^2.17.0" + "@sveltejs/kit": "^2.4.0" } } From 32af931cd94d761da92089cd7949f2f69e229a41 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 12 Feb 2025 13:03:17 +0800 Subject: [PATCH 47/73] Update packages/adapter-vercel/package.json --- packages/adapter-vercel/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 9d4a294c895c..c5807b3c965a 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -58,6 +58,6 @@ "vitest": "^3.0.1" }, "peerDependencies": { - "@sveltejs/kit": "^2.17.0" + "@sveltejs/kit": "^2.4.0" } } From a984fffb36b9b26d21a0907b69218e2293ae5ad6 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 20 Feb 2025 14:18:38 +0800 Subject: [PATCH 48/73] await setResponse --- packages/adapter-vercel/src/serverless.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-vercel/src/serverless.js b/packages/adapter-vercel/src/serverless.js index a8f774be9424..5e6cbf0c3834 100644 --- a/packages/adapter-vercel/src/serverless.js +++ b/packages/adapter-vercel/src/serverless.js @@ -36,7 +36,7 @@ export default async (req, res) => { const request = await getRequest({ base: `https://${req.headers.host}`, request: req }); - setResponse( + await setResponse( res, await server.respond(request, { getClientAddress() { From 849c8edb7c2e5081f772b8f20f979f5a9049a5b9 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 20 Feb 2025 14:19:50 +0800 Subject: [PATCH 49/73] it wasn't awaited before so let's not await it --- packages/adapter-vercel/src/serverless.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-vercel/src/serverless.js b/packages/adapter-vercel/src/serverless.js index 5e6cbf0c3834..6384ff6eb5fc 100644 --- a/packages/adapter-vercel/src/serverless.js +++ b/packages/adapter-vercel/src/serverless.js @@ -36,7 +36,7 @@ export default async (req, res) => { const request = await getRequest({ base: `https://${req.headers.host}`, request: req }); - await setResponse( + void setResponse( res, await server.respond(request, { getClientAddress() { From 1a29182be7f55773f332fdd14bec9f8d53829e22 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 6 Mar 2025 16:03:43 +0800 Subject: [PATCH 50/73] skip reroute based on the manifest value --- .changeset/hot-guests-enjoy.md | 4 +- .changeset/modern-dogs-tie.md | 2 +- packages/adapter-netlify/index.js | 43 ++++++++++++------- packages/adapter-netlify/package.json | 2 +- packages/adapter-netlify/src/reroute.js | 16 +++---- packages/adapter-vercel/index.js | 12 ++++-- packages/adapter-vercel/package.json | 2 +- packages/adapter-vercel/src/edge/reroute.js | 10 ++--- packages/kit/src/core/adapt/builder.js | 5 ++- .../kit/src/core/generate_manifest/index.js | 12 +++++- packages/kit/src/exports/adapter/index.js | 38 +++++----------- packages/kit/src/exports/public.d.ts | 14 ++++-- packages/kit/src/runtime/server/respond.js | 36 ++++++++++------ packages/kit/src/runtime/shared.js | 2 + packages/kit/types/index.d.ts | 19 +++++--- 15 files changed, 126 insertions(+), 91 deletions(-) diff --git a/.changeset/hot-guests-enjoy.md b/.changeset/hot-guests-enjoy.md index b481541eccc4..97a4cf11457b 100644 --- a/.changeset/hot-guests-enjoy.md +++ b/.changeset/hot-guests-enjoy.md @@ -1,6 +1,6 @@ --- -"@sveltejs/adapter-netlify": minor -"@sveltejs/adapter-vercel": minor +"@sveltejs/adapter-netlify": major +"@sveltejs/adapter-vercel": major --- fix: run `reroute` in an edge middleware if the app has been split into multiple functions diff --git a/.changeset/modern-dogs-tie.md b/.changeset/modern-dogs-tie.md index a7893dff3826..e754970c0560 100644 --- a/.changeset/modern-dogs-tie.md +++ b/.changeset/modern-dogs-tie.md @@ -2,4 +2,4 @@ '@sveltejs/kit': minor --- -feat: add `applyReroute` and `getReroutePath` helpers for running `reroute` in a middleware before the main handler +feat: add `applyReroute` and `builder.getReroutePath` helpers for running `reroute` in a middleware before the main handler diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 62aa2c107bdb..75ae8b1a7ed0 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -90,21 +90,24 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { `\n\n/${builder.getAppPath()}/immutable/*\n cache-control: public\n cache-control: immutable\n cache-control: max-age=31536000\n` ); + let reroute_middleware = false; + if (edge) { if (split) { throw new Error('Cannot use `split: true` alongside `edge: true`'); } - await generate_edge_functions({ builder }); + await generate_edge_functions({ builder, reroute_middleware }); } else { - generate_lambda_functions({ builder, split, publish }); - /** @type {string | void} */ let reroute_path; if (split && (reroute_path = await builder.getReroutePath?.())) { await generate_reroute_middleware({ builder, reroute_path }); + reroute_middleware = true; } + + generate_lambda_functions({ builder, split, publish, reroute_middleware }); } }, @@ -126,8 +129,9 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) { /** * @param { object } params * @param {import('@sveltejs/kit').Builder} params.builder + * @param {boolean} params.reroute_middleware */ -async function generate_edge_functions({ builder }) { +async function generate_edge_functions({ builder, reroute_middleware }) { const tmp = builder.getBuildDirectory('netlify-tmp'); builder.rimraf(tmp); builder.mkdirp(tmp); @@ -145,7 +149,7 @@ async function generate_edge_functions({ builder }) { } }); - await bundle_edge_function({ builder, name: 'render' }); + await bundle_edge_function({ builder, name: 'render', reroute_middleware }); } /** @@ -154,21 +158,21 @@ async function generate_edge_functions({ builder }) { * @param {string} params.reroute_path */ async function generate_reroute_middleware({ builder, reroute_path }) { + builder.log.minor('Generating edge middleware to run reroute before split functions...'); + const tmp = builder.getBuildDirectory('netlify-tmp'); builder.rimraf(tmp); builder.mkdirp(tmp); builder.mkdirp('.netlify/edge-functions'); - builder.log.minor('Generating Reroute Edge Function...'); - builder.copy(`${files}/reroute.js`, `${tmp}/entry.js`, { replace: { __HOOKS__: reroute_path } }); - await bundle_edge_function({ builder, name: 'reroute' }); + await bundle_edge_function({ builder, name: 'reroute', reroute_middleware: false }); } /** @@ -176,12 +180,16 @@ async function generate_reroute_middleware({ builder, reroute_path }) { * @param {object} params * @param {import('@sveltejs/kit').Builder} params.builder * @param {string} params.name + * @param {boolean} params.reroute_middleware */ -async function bundle_edge_function({ builder, name }) { +async function bundle_edge_function({ builder, name, reroute_middleware }) { const tmp = builder.getBuildDirectory('netlify-tmp'); const relativePath = posix.relative(tmp, builder.getServerDirectory()); - const manifest = builder.generateManifest({ relativePath }); + const manifest = builder.generateManifest({ + relativePath, + rerouteMiddleware: reroute_middleware + }); writeFileSync(`${tmp}/manifest.js`, `export const manifest = ${manifest};\n`); await esbuild.build({ @@ -247,12 +255,13 @@ async function bundle_edge_function({ builder, name }) { } /** - * @param { object } params + * @param {object} params * @param {import('@sveltejs/kit').Builder} params.builder - * @param { string } params.publish - * @param { boolean } params.split + * @param {string} params.publish + * @param {boolean} params.split + * @param {boolean} params.reroute_middleware */ -function generate_lambda_functions({ builder, publish, split }) { +function generate_lambda_functions({ builder, publish, split, reroute_middleware }) { builder.mkdirp('.netlify/functions-internal/.svelte-kit'); /** @type {string[]} */ @@ -313,7 +322,8 @@ function generate_lambda_functions({ builder, publish, split }) { const manifest = builder.generateManifest({ relativePath: '../server', - routes + routes, + rerouteMiddleware: reroute_middleware }); const fn = `import { init } from '../serverless.js';\n\nexport const handler = init(${manifest});\n`; @@ -327,7 +337,8 @@ function generate_lambda_functions({ builder, publish, split }) { } } else { const manifest = builder.generateManifest({ - relativePath: '../server' + relativePath: '../server', + rerouteMiddleware: reroute_middleware }); const fn = `import { init } from '../serverless.js';\n\nexport const handler = init(${manifest});\n`; diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 5d348330663c..d9c87f00ebf5 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -59,6 +59,6 @@ "vitest": "^3.0.1" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0" + "@sveltejs/kit": "^2.19.0" } } diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index d13ec4faa612..07ce184d02bb 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -3,16 +3,16 @@ import { applyReroute } from '@sveltejs/kit/adapter'; /** * @param {Request} request - * @returns {URL | undefined} + * @returns {Promise} */ -export default function middleware(request) { +export default async function middleware(request) { const url = new URL(request.url); - const rerouted_path = applyReroute(url, reroute); + const resolved_path = await applyReroute(url, reroute); - // a rewrite on Netlify will cause this function to run again with the new URL - // instead of moving onto the route function, so we only return a URL if - // the reroute path is different from the original to avoid an endless loop - if (rerouted_path && url.pathname !== rerouted_path.pathname) { - return rerouted_path; + // a Netlify rewrite will invoke this function again but with the new URL, + // so we only return a URL if the rerouted path is different from the original + // to avoid an endless loop + if (resolved_path && url.pathname !== resolved_path.pathname) { + return resolved_path; } } diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 5cf01edd8f72..8eccee23942f 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -82,6 +82,8 @@ const plugin = function (defaults = {}) { builder.log.minor('Generating serverless function...'); + let reroute_middleware = false; + /** * @param {string} name * @param {import('./index.js').ServerlessConfig} config @@ -101,7 +103,7 @@ const plugin = function (defaults = {}) { write( `${tmp}/manifest.js`, - `export const manifest = ${builder.generateManifest({ relativePath, routes })};\n` + `export const manifest = ${builder.generateManifest({ relativePath, routes, rerouteMiddleware: reroute_middleware })};\n` ); await create_function_bundle(builder, `${tmp}/index.js`, dir, config); @@ -121,7 +123,7 @@ const plugin = function (defaults = {}) { try { const result = await esbuild.build({ outfile: `${dirs.functions}/${name}.func/index.js`, - target: 'es2020', // TODO verify what the edge runtime supports + target: 'es2020', // TODO verify what the edge runtime supports. Might be es2019? See https://github.com/vercel/edge-runtime/blob/dd44c3f4e14a45d0f5ddfaf63c00fe19670cb0a6/tsconfig.json#L13 bundle: true, platform: 'browser', format: 'esm', @@ -218,7 +220,7 @@ const plugin = function (defaults = {}) { write( `${tmp}/manifest.js`, - `export const manifest = ${builder.generateManifest({ relativePath, routes })};\n` + `export const manifest = ${builder.generateManifest({ relativePath, routes, rerouteMiddleware: reroute_middleware })};\n` ); await bundle_edge_function({ entryPoints: [dest] }, name, config); @@ -351,6 +353,8 @@ const plugin = function (defaults = {}) { let reroute_path; if (!singular && (reroute_path = await builder.getReroutePath?.())) { + builder.log('Generating edge middleware to run reroute before split functions...'); + static_config.routes.push({ src: '/.*', middlewarePath: 'reroute', @@ -360,6 +364,8 @@ const plugin = function (defaults = {}) { await generate_edge_middleware('reroute', defaults, { __HOOKS__: reroute_path }); + + reroute_middleware = true; } for (const group of groups.values()) { diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 91ae2e4f1219..d398f2182420 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -58,6 +58,6 @@ "vitest": "^3.0.1" }, "peerDependencies": { - "@sveltejs/kit": "^2.4.0" + "@sveltejs/kit": "^2.19.0" } } diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js index c84edb1fa78c..a05e0e8d3def 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/src/edge/reroute.js @@ -4,12 +4,12 @@ import { applyReroute } from '@sveltejs/kit/adapter'; /** * @param {Request} request - * @returns {Response} + * @returns {Promise} */ -export default function middleware(request) { - const rerouted_path = applyReroute(new URL(request.url), reroute); - if (rerouted_path) { - return rewrite(rerouted_path); +export default async function middleware(request) { + const resolved_path = await applyReroute(new URL(request.url), reroute); + if (resolved_path) { + return rewrite(resolved_path); } return next(request); } diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index ed86afc19bc8..d952b511bf1b 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -183,14 +183,15 @@ export function create_builder({ write(dest, `export const env=${JSON.stringify(env.public)}`); }, - generateManifest({ relativePath, routes: subset }) { + generateManifest({ relativePath, routes: subset, rerouteMiddleware }) { return generate_manifest({ build_data, prerendered: prerendered.paths, relative_path: relativePath, routes: subset ? subset.map((route) => /** @type {import('types').RouteData} */ (lookup.get(route))) - : route_data.filter((route) => prerender_map.get(route.id) !== true) + : route_data.filter((route) => prerender_map.get(route.id) !== true), + reroute_middleware: rerouteMiddleware }); }, diff --git a/packages/kit/src/core/generate_manifest/index.js b/packages/kit/src/core/generate_manifest/index.js index eaaf9e6cd38e..348a6c2eda4f 100644 --- a/packages/kit/src/core/generate_manifest/index.js +++ b/packages/kit/src/core/generate_manifest/index.js @@ -18,9 +18,16 @@ import { uneval } from 'devalue'; * prerendered: string[]; * relative_path: string; * routes: import('types').RouteData[]; + * reroute_middleware?: boolean; * }} opts */ -export function generate_manifest({ build_data, prerendered, relative_path, routes }) { +export function generate_manifest({ + build_data, + prerendered, + relative_path, + routes, + reroute_middleware +}) { /** * @type {Map} The new index of each node in the filtered nodes array */ @@ -127,7 +134,8 @@ export function generate_manifest({ build_data, prerendered, relative_path, rout ).join('\n')} return { ${Array.from(matchers).join(', ')} }; }, - server_assets: ${s(files)} + server_assets: ${s(files)}, + reroute_middleware: ${reroute_middleware ?? false} } } `; diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 8ed6a05b4f84..0791a26d4b56 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -1,39 +1,23 @@ -import { - INVALIDATED_PARAM, - ORIGINAL_PATH_PARAM, - TRAILING_SLASH_PARAM -} from '../../runtime/shared.js'; -import { add_data_suffix, has_data_suffix, strip_data_suffix } from '../../runtime/pathname.js'; +import { ORIGINAL_PATH_PARAM, RESOLVED_PATH_PARAM } from '../../runtime/shared.js'; +import { normalizeUrl } from '../index.js'; /** * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler * to reroute the request to the correct function. - * * @param {URL} url * @param {import("@sveltejs/kit").Reroute} reroute - * @returns {URL | void} - * @since 2.17.0 + * @returns {Promise} + * @since 2.19.0 */ -export function applyReroute(url, reroute) { - const url_copy = new URL(url); +export async function applyReroute(url, reroute) { + const { url: normalized_url, denormalize } = normalizeUrl(url); - const is_data_request = has_data_suffix(url.pathname); - if (is_data_request) { - url_copy.pathname = - strip_data_suffix(url_copy.pathname) + - (url_copy.searchParams.get(TRAILING_SLASH_PARAM) === '1' ? '/' : '') || '/'; - url_copy.searchParams.delete(TRAILING_SLASH_PARAM); - url_copy.searchParams.delete(INVALIDATED_PARAM); - } - - // reroute could alter the given URL, so we pass a copy - const reroute_path = reroute({ url: url_copy }); + const resolved_path = await reroute({ url: normalized_url }); + normalized_url.searchParams.set(ORIGINAL_PATH_PARAM, url.pathname); + normalized_url.searchParams.set(RESOLVED_PATH_PARAM, resolved_path ?? url.pathname); - if (reroute_path) { - const new_url = new URL(url); - new_url.searchParams.set(ORIGINAL_PATH_PARAM, url.pathname); - new_url.pathname = is_data_request ? add_data_suffix(reroute_path) : reroute_path; - return new_url; + if (resolved_path) { + return denormalize(normalized_url); } } diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 99d0a87a603e..8b626bf3c7b5 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -130,9 +130,15 @@ export interface Builder { /** * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/@sveltejs-kit#Server) with. - * @param opts a relative path to the base directory of the app and optionally in which format (esm or cjs) the manifest should be generated + * @param opts.relativePath a relative path to the base directory of the app + * @param opts.routes optional. In which format (esm or cjs) the manifest should be generated + * @param opts.rerouteMiddleware optional. True if the `reroute` hook will run in a middleware before the main handler */ - generateManifest: (opts: { relativePath: string; routes?: RouteDefinition[] }) => string; + generateManifest: (opts: { + relativePath: string; + routes?: RouteDefinition[]; + rerouteMiddleware?: boolean; + }) => string; /** * Resolve a path to the `name` directory inside `outDir`, e.g. `/path/to/.svelte-kit/my-adapter`. @@ -147,7 +153,7 @@ export interface Builder { getAppPath: () => string; /** * Get the fully resolved path to the file containing the `reroute` hook if it exists. - * @since 2.17.0 + * @since 2.19.0 */ getReroutePath: () => Promise; @@ -1329,6 +1335,8 @@ export interface SSRManifest { matchers: () => Promise>; /** A `[file]: size` map of all assets imported by server code. */ server_assets: Record; + /** True if the `reroute` hook will run in a middleware before the main handler */ + reroute_middleware: boolean; }; } diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index 65375a16f121..3e971e239ba5 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -22,7 +22,12 @@ import { import { get_option } from '../../utils/options.js'; import { json, text } from '../../exports/index.js'; import { action_json_redirect, is_action_json_request } from './page/actions.js'; -import { INVALIDATED_PARAM, ORIGINAL_PATH_PARAM, TRAILING_SLASH_PARAM } from '../shared.js'; +import { + INVALIDATED_PARAM, + TRAILING_SLASH_PARAM, + ORIGINAL_PATH_PARAM, + RESOLVED_PATH_PARAM +} from '../shared.js'; import { get_public_env } from './env_module.js'; import { get_page_config } from '../../utils/route_config.js'; import { resolve_route } from './page/server_routing.js'; @@ -61,11 +66,13 @@ export async function respond(request, options, manifest, state) { // URL but stripped from the potential `/__data.json` suffix and its search param const url = new URL(request.url); - // if the url has been rewritten by a middleware, we need to restore the original path - const original_path = url.searchParams.get(ORIGINAL_PATH_PARAM); - if (original_path) { - url.pathname = original_path; + let resolved_path; + + if (manifest._.reroute_middleware) { + url.pathname = url.searchParams.get(ORIGINAL_PATH_PARAM) || url.pathname; + resolved_path = url.searchParams.get(RESOLVED_PATH_PARAM); url.searchParams.delete(ORIGINAL_PATH_PARAM); + url.searchParams.delete(RESOLVED_PATH_PARAM); } if (options.csrf_check_origin) { @@ -117,15 +124,16 @@ export async function respond(request, options, manifest, state) { url.searchParams.delete(INVALIDATED_PARAM); } - let resolved_path; - - try { - // reroute could alter the given URL, so we pass a copy - resolved_path = (await options.hooks.reroute({ url: new URL(url) })) ?? url.pathname; - } catch { - return text('Internal Server Error', { - status: 500 - }); + // skip reroute if it already ran earlier in an edge middleware + if (!resolved_path) { + try { + // reroute could alter the given URL, so we pass a copy + resolved_path = (await options.hooks.reroute({ url: new URL(url) })) ?? url.pathname; + } catch { + return text('Internal Server Error', { + status: 500 + }); + } } try { diff --git a/packages/kit/src/runtime/shared.js b/packages/kit/src/runtime/shared.js index 6570156e4a1b..8510abd70342 100644 --- a/packages/kit/src/runtime/shared.js +++ b/packages/kit/src/runtime/shared.js @@ -16,3 +16,5 @@ export const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; export const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; export const ORIGINAL_PATH_PARAM = 'x-sveltekit-original-path'; + +export const RESOLVED_PATH_PARAM = 'x-sveltekit-resolved-path'; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index a69498fc2c2b..7239593c5d2d 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -112,9 +112,15 @@ declare module '@sveltejs/kit' { /** * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/@sveltejs-kit#Server) with. - * @param opts a relative path to the base directory of the app and optionally in which format (esm or cjs) the manifest should be generated + * @param opts.relativePath a relative path to the base directory of the app + * @param opts.routes optional. In which format (esm or cjs) the manifest should be generated + * @param opts.rerouteMiddleware optional. True if the `reroute` hook will run in a middleware before the main handler */ - generateManifest: (opts: { relativePath: string; routes?: RouteDefinition[] }) => string; + generateManifest: (opts: { + relativePath: string; + routes?: RouteDefinition[]; + rerouteMiddleware?: boolean; + }) => string; /** * Resolve a path to the `name` directory inside `outDir`, e.g. `/path/to/.svelte-kit/my-adapter`. @@ -129,7 +135,7 @@ declare module '@sveltejs/kit' { getAppPath: () => string; /** * Get the fully resolved path to the file containing the `reroute` hook if it exists. - * @since 2.17.0 + * @since 2.19.0 */ getReroutePath: () => Promise; @@ -1311,6 +1317,8 @@ declare module '@sveltejs/kit' { matchers: () => Promise>; /** A `[file]: size` map of all assets imported by server code. */ server_assets: Record; + /** True if the `reroute` hook will run in a middleware before the main handler */ + reroute_middleware: boolean; }; } @@ -2061,10 +2069,9 @@ declare module '@sveltejs/kit/adapter' { * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler * to reroute the request to the correct function. - * - * @since 2.17.0 + * @since 2.19.0 */ - export function applyReroute(url: URL, reroute: import("@sveltejs/kit").Reroute): URL | void; + export function applyReroute(url: URL, reroute: import("@sveltejs/kit").Reroute): Promise; export {}; } From d31d06fe180387d05702c73c0d3bff2ec25a009b Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 6 Mar 2025 16:08:22 +0800 Subject: [PATCH 51/73] oops forgot this --- packages/kit/src/exports/vite/dev/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 7049d8910508..922257f18a23 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -286,7 +286,8 @@ export async function dev(vite, vite_config, svelte_config) { } return matchers; - } + }, + reroute_middleware: false } }; } From 95037c34ac6c77d451feb38cf0b940f34785dbe6 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 6 Mar 2025 17:11:08 +0800 Subject: [PATCH 52/73] fix --- packages/kit/src/exports/adapter/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 0791a26d4b56..38b03d966630 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -18,6 +18,7 @@ export async function applyReroute(url, reroute) { normalized_url.searchParams.set(RESOLVED_PATH_PARAM, resolved_path ?? url.pathname); if (resolved_path) { + normalized_url.pathname = resolved_path; return denormalize(normalized_url); } } From 0f997ed35703842d3576de2fa5973d06bd65da2c Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 7 Mar 2025 11:49:50 +0800 Subject: [PATCH 53/73] ensure reroute does not run twice even if resolved path is the same --- packages/adapter-netlify/src/reroute.js | 9 ++++----- packages/adapter-vercel/src/edge/reroute.js | 9 +++------ packages/kit/src/exports/adapter/index.js | 18 ++++++++++-------- packages/kit/src/runtime/server/respond.js | 10 ++-------- packages/kit/src/runtime/shared.js | 2 -- packages/kit/types/index.d.ts | 2 +- 6 files changed, 20 insertions(+), 30 deletions(-) diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index 07ce184d02bb..e7604fb1ad3a 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -3,16 +3,15 @@ import { applyReroute } from '@sveltejs/kit/adapter'; /** * @param {Request} request - * @returns {Promise} + * @returns {Promise} */ export default async function middleware(request) { - const url = new URL(request.url); - const resolved_path = await applyReroute(url, reroute); + const resolved_url = await applyReroute(request.url, reroute); // a Netlify rewrite will invoke this function again but with the new URL, // so we only return a URL if the rerouted path is different from the original // to avoid an endless loop - if (resolved_path && url.pathname !== resolved_path.pathname) { - return resolved_path; + if (request.url !== resolved_url.href) { + return resolved_url; } } diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js index a05e0e8d3def..595230dcb95f 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/src/edge/reroute.js @@ -1,5 +1,5 @@ import { reroute } from '__HOOKS__'; -import { rewrite, next } from '@vercel/edge'; +import { rewrite } from '@vercel/edge'; import { applyReroute } from '@sveltejs/kit/adapter'; /** @@ -7,9 +7,6 @@ import { applyReroute } from '@sveltejs/kit/adapter'; * @returns {Promise} */ export default async function middleware(request) { - const resolved_path = await applyReroute(new URL(request.url), reroute); - if (resolved_path) { - return rewrite(resolved_path); - } - return next(request); + const resolved_url = await applyReroute(request.url, reroute); + return rewrite(resolved_url); } diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 38b03d966630..17a824a7f5d7 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -1,24 +1,26 @@ -import { ORIGINAL_PATH_PARAM, RESOLVED_PATH_PARAM } from '../../runtime/shared.js'; +import { ORIGINAL_PATH_PARAM } from '../../runtime/shared.js'; import { normalizeUrl } from '../index.js'; /** * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler * to reroute the request to the correct function. - * @param {URL} url + * @param {string} url * @param {import("@sveltejs/kit").Reroute} reroute - * @returns {Promise} + * @returns {Promise} * @since 2.19.0 */ export async function applyReroute(url, reroute) { - const { url: normalized_url, denormalize } = normalizeUrl(url); + const new_url = new URL(url); + new_url.searchParams.set(ORIGINAL_PATH_PARAM, new_url.pathname); + const { url: normalized_url, denormalize } = normalizeUrl(url); const resolved_path = await reroute({ url: normalized_url }); - normalized_url.searchParams.set(ORIGINAL_PATH_PARAM, url.pathname); - normalized_url.searchParams.set(RESOLVED_PATH_PARAM, resolved_path ?? url.pathname); if (resolved_path) { - normalized_url.pathname = resolved_path; - return denormalize(normalized_url); + new_url.pathname = resolved_path; + return denormalize(new_url); } + + return new_url; } diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index 3e971e239ba5..84b7df7b3011 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -22,12 +22,7 @@ import { import { get_option } from '../../utils/options.js'; import { json, text } from '../../exports/index.js'; import { action_json_redirect, is_action_json_request } from './page/actions.js'; -import { - INVALIDATED_PARAM, - TRAILING_SLASH_PARAM, - ORIGINAL_PATH_PARAM, - RESOLVED_PATH_PARAM -} from '../shared.js'; +import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM, ORIGINAL_PATH_PARAM } from '../shared.js'; import { get_public_env } from './env_module.js'; import { get_page_config } from '../../utils/route_config.js'; import { resolve_route } from './page/server_routing.js'; @@ -69,10 +64,9 @@ export async function respond(request, options, manifest, state) { let resolved_path; if (manifest._.reroute_middleware) { + resolved_path = url.pathname; url.pathname = url.searchParams.get(ORIGINAL_PATH_PARAM) || url.pathname; - resolved_path = url.searchParams.get(RESOLVED_PATH_PARAM); url.searchParams.delete(ORIGINAL_PATH_PARAM); - url.searchParams.delete(RESOLVED_PATH_PARAM); } if (options.csrf_check_origin) { diff --git a/packages/kit/src/runtime/shared.js b/packages/kit/src/runtime/shared.js index 8510abd70342..6570156e4a1b 100644 --- a/packages/kit/src/runtime/shared.js +++ b/packages/kit/src/runtime/shared.js @@ -16,5 +16,3 @@ export const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; export const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; export const ORIGINAL_PATH_PARAM = 'x-sveltekit-original-path'; - -export const RESOLVED_PATH_PARAM = 'x-sveltekit-resolved-path'; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 7239593c5d2d..5f606b62eb75 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2071,7 +2071,7 @@ declare module '@sveltejs/kit/adapter' { * to reroute the request to the correct function. * @since 2.19.0 */ - export function applyReroute(url: URL, reroute: import("@sveltejs/kit").Reroute): Promise; + export function applyReroute(url: string, reroute: import("@sveltejs/kit").Reroute): Promise; export {}; } From eaa85863f6fc7018290716e56ae04510146a041d Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 9 Apr 2025 17:52:27 +0800 Subject: [PATCH 54/73] fix doc links --- documentation/docs/25-build-and-deploy/80-adapter-netlify.md | 2 +- documentation/docs/25-build-and-deploy/90-adapter-vercel.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md index 6d781d39cdc8..6faa328255db 100644 --- a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md +++ b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md @@ -115,7 +115,7 @@ Additionally, you can add your own Netlify functions by creating a directory for ### Individual functions and `reroute` -If the `split` option is set to `true` in the adapter config, the [`reroute`](/docs/hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. +If the `split` option is set to `true` in the adapter config, the [`reroute`](hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. ## Troubleshooting diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 74a2f5c7b3a8..afd56d83abcc 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -190,7 +190,7 @@ Projects created before a certain date may default to using an older Node versio ### Individual functions and `reroute` -If the `split` option is set to `true` for a route, or at the adapter level, the [`reroute`](/docs/hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. +If the `split` option is set to `true` for a route, or at the adapter level, the [`reroute`](hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. ## Troubleshooting From df46216bfe0687ed30bf5f9b1724d9d40e511a1a Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 9 Apr 2025 17:52:50 +0800 Subject: [PATCH 55/73] avoid rewrite if pathname is the same --- packages/adapter-netlify/src/reroute.js | 7 +++---- packages/adapter-vercel/src/edge/reroute.js | 8 ++++++-- packages/kit/src/exports/adapter/index.js | 15 ++++++++------- packages/kit/types/index.d.ts | 5 +++-- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index e7604fb1ad3a..15d5c1f4cb62 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -8,10 +8,9 @@ import { applyReroute } from '@sveltejs/kit/adapter'; export default async function middleware(request) { const resolved_url = await applyReroute(request.url, reroute); - // a Netlify rewrite will invoke this function again but with the new URL, - // so we only return a URL if the rerouted path is different from the original - // to avoid an endless loop - if (request.url !== resolved_url.href) { + // to avoid an endless loop, we only rewrite the URL if the new pathname is different + // since a Netlify rewrite will always re-invoke this function with the returned URL + if (resolved_url) { return resolved_url; } } diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js index 595230dcb95f..9502c0199524 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/src/edge/reroute.js @@ -1,5 +1,5 @@ import { reroute } from '__HOOKS__'; -import { rewrite } from '@vercel/edge'; +import { rewrite, next } from '@vercel/edge'; import { applyReroute } from '@sveltejs/kit/adapter'; /** @@ -8,5 +8,9 @@ import { applyReroute } from '@sveltejs/kit/adapter'; */ export default async function middleware(request) { const resolved_url = await applyReroute(request.url, reroute); - return rewrite(resolved_url); + if (resolved_url) { + return rewrite(resolved_url); + } + + return next(); } diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 17a824a7f5d7..6a34c2dbfe84 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -7,20 +7,21 @@ import { normalizeUrl } from '../index.js'; * to reroute the request to the correct function. * @param {string} url * @param {import("@sveltejs/kit").Reroute} reroute - * @returns {Promise} - * @since 2.19.0 + * @returns {Promise} The new URL if the pathname was changed. Otherwise, it doesn't return anything. + * @since 2.21.0 */ export async function applyReroute(url, reroute) { const new_url = new URL(url); new_url.searchParams.set(ORIGINAL_PATH_PARAM, new_url.pathname); const { url: normalized_url, denormalize } = normalizeUrl(url); - const resolved_path = await reroute({ url: normalized_url }); + const resolved_path = await reroute({ url: normalized_url, fetch }); - if (resolved_path) { - new_url.pathname = resolved_path; - return denormalize(new_url); + // bail out if there were no changes to the pathname + if (!resolved_path || resolved_path === new_url.pathname) { + return; } - return new_url; + new_url.pathname = resolved_path; + return denormalize(new_url); } diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 7422f3e8fbff..8ea728598de0 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2074,9 +2074,10 @@ declare module '@sveltejs/kit/adapter' { * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler * to reroute the request to the correct function. - * @since 2.19.0 + * @returns The new URL if the pathname was changed + * @since 2.21.0 */ - export function applyReroute(url: string, reroute: import("@sveltejs/kit").Reroute): Promise; + export function applyReroute(url: string, reroute: import("@sveltejs/kit").Reroute): Promise; export {}; } From 40df48a986f4cb31d2e4dc7229fec76db0ae88f4 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 9 Apr 2025 17:53:21 +0800 Subject: [PATCH 56/73] check value of reroute export --- packages/kit/src/core/adapt/builder.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index d952b511bf1b..52e56e0b586f 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -216,8 +216,7 @@ export function create_builder({ if (!hooks) return; const hooks_path = `${config.kit.outDir}/output/server/${build_data.server_manifest[hooks].file}`; - const has_reroute_hook = - existsSync(hooks_path) && (await import(hooks_path).then((m) => 'reroute' in m)); + const has_reroute_hook = existsSync(hooks_path) && !!(await import(hooks_path)).reroute; if (has_reroute_hook) { return hooks_path; } From d0fd71b3ea2d0921edf07f902f7397e2dd600228 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 9 Apr 2025 17:55:24 +0800 Subject: [PATCH 57/73] generate types --- 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 8ea728598de0..acc520a5fff2 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2074,7 +2074,7 @@ declare module '@sveltejs/kit/adapter' { * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler * to reroute the request to the correct function. - * @returns The new URL if the pathname was changed + * @returns The new URL if the pathname was changed. Otherwise, it doesn't return anything. * @since 2.21.0 */ export function applyReroute(url: string, reroute: import("@sveltejs/kit").Reroute): Promise; From b86bfadaef34f1eb71bf182df9730596370da8d6 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 10 Apr 2025 10:44:36 +0800 Subject: [PATCH 58/73] better docs --- packages/adapter-netlify/src/reroute.js | 2 +- packages/adapter-vercel/src/edge/reroute.js | 3 +- packages/kit/src/exports/adapter/index.js | 29 +++++++++++----- packages/kit/src/exports/public.d.ts | 22 ++++++++++-- packages/kit/types/index.d.ts | 38 ++++++++++++++++++--- 5 files changed, 77 insertions(+), 17 deletions(-) diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index 15d5c1f4cb62..8092332d1b30 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -10,7 +10,7 @@ export default async function middleware(request) { // to avoid an endless loop, we only rewrite the URL if the new pathname is different // since a Netlify rewrite will always re-invoke this function with the returned URL - if (resolved_url) { + if (request.url !== resolved_url.href) { return resolved_url; } } diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js index 9502c0199524..1ef66d134b23 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/src/edge/reroute.js @@ -8,7 +8,8 @@ import { applyReroute } from '@sveltejs/kit/adapter'; */ export default async function middleware(request) { const resolved_url = await applyReroute(request.url, reroute); - if (resolved_url) { + if (request.url !== resolved_url.href) { + // TODO: use header to store query params because Vercel discards empty value ones? return rewrite(resolved_url); } diff --git a/packages/kit/src/exports/adapter/index.js b/packages/kit/src/exports/adapter/index.js index 6a34c2dbfe84..43f74239e6e0 100644 --- a/packages/kit/src/exports/adapter/index.js +++ b/packages/kit/src/exports/adapter/index.js @@ -4,24 +4,37 @@ import { normalizeUrl } from '../index.js'; /** * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler - * to reroute the request to the correct function. + * to reroute the request to the correct function and [generate a server-side manifest](https://svelte.dev/docs/kit/@sveltejs-kit#Builder) + * with the `rerouteMiddleware` option set to `true`. + * @example + * ```js + * import { applyReroute } from '@sveltejs/kit/adapter'; + * // replace __HOOKS__ with the path to the reroute hook obtained from `builder.getReroutePath()` + * import { reroute } from '__HOOKS__'; + * + * export default async function middleware(request) { + * return applyReroute(request.url, reroute); + * } + * ``` * @param {string} url * @param {import("@sveltejs/kit").Reroute} reroute - * @returns {Promise} The new URL if the pathname was changed. Otherwise, it doesn't return anything. + * @returns {Promise} * @since 2.21.0 */ export async function applyReroute(url, reroute) { - const new_url = new URL(url); - new_url.searchParams.set(ORIGINAL_PATH_PARAM, new_url.pathname); + const url_copy = new URL(url); + url_copy.searchParams.set(ORIGINAL_PATH_PARAM, url_copy.pathname); const { url: normalized_url, denormalize } = normalizeUrl(url); const resolved_path = await reroute({ url: normalized_url, fetch }); // bail out if there were no changes to the pathname - if (!resolved_path || resolved_path === new_url.pathname) { - return; + if (!resolved_path || resolved_path === url_copy.pathname) { + // we always return a URL with the x-sveltekit-original-path param set + // so that the requester can't fake it + return url_copy; } - new_url.pathname = resolved_path; - return denormalize(new_url); + url_copy.pathname = resolved_path; + return denormalize(url_copy); } diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 9bef8e5c2be8..20d3ed2eca4e 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -132,7 +132,7 @@ export interface Builder { * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/@sveltejs-kit#Server) with. * @param opts.relativePath a relative path to the base directory of the app * @param opts.routes optional. In which format (esm or cjs) the manifest should be generated - * @param opts.rerouteMiddleware optional. True if the `reroute` hook will run in a middleware before the main handler + * @param opts.rerouteMiddleware optional. True if the `reroute` hook will run in a middleware before the main handler using the [`applyReroute`](https://svelte.dev/docs/kit/@sveltejs-kit-adapter#applyReroute) function */ generateManifest: (opts: { relativePath: string; @@ -153,7 +153,25 @@ export interface Builder { getAppPath: () => string; /** * Get the fully resolved path to the file containing the `reroute` hook if it exists. - * @since 2.19.0 + * @example + * ```js + * const reroutePath = builder.getReroutePath(); + * if (split && reroutePath) { + * // generate a server-side manifest with the `rerouteMiddleware` option set to `true` + * fs.writeFileSync( + * `${output}/manifest.js`, + * `export const manifest = ${builder.generateManifest({ relativePath, routes, rerouteMiddleware: true })};\n` + * ); + * + * // create a middleware that imports and runs the `reroute` hook + * builder.copy(`${files}/reroute.js`, `${output}/entry.js`, { + * replace: { + * __HOOKS__: reroutePath + * } + * }); + * } + * ``` + * @since 2.21.0 */ getReroutePath: () => Promise; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index acc520a5fff2..23dad9dd6520 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -114,7 +114,7 @@ declare module '@sveltejs/kit' { * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/@sveltejs-kit#Server) with. * @param opts.relativePath a relative path to the base directory of the app * @param opts.routes optional. In which format (esm or cjs) the manifest should be generated - * @param opts.rerouteMiddleware optional. True if the `reroute` hook will run in a middleware before the main handler + * @param opts.rerouteMiddleware optional. True if the `reroute` hook will run in a middleware before the main handler using the [`applyReroute`](https://svelte.dev/docs/kit/@sveltejs-kit-adapter#applyReroute) function */ generateManifest: (opts: { relativePath: string; @@ -135,7 +135,25 @@ declare module '@sveltejs/kit' { getAppPath: () => string; /** * Get the fully resolved path to the file containing the `reroute` hook if it exists. - * @since 2.19.0 + * @example + * ```js + * const reroutePath = builder.getReroutePath(); + * if (split && reroutePath) { + * // generate a server-side manifest with the `rerouteMiddleware` option set to `true` + * fs.writeFileSync( + * `${output}/manifest.js`, + * `export const manifest = ${builder.generateManifest({ relativePath, routes, rerouteMiddleware: true })};\n` + * ); + * + * // create a middleware that imports and runs the `reroute` hook + * builder.copy(`${files}/reroute.js`, `${output}/entry.js`, { + * replace: { + * __HOOKS__: reroutePath + * } + * }); + * } + * ``` + * @since 2.21.0 */ getReroutePath: () => Promise; @@ -2073,11 +2091,21 @@ declare module '@sveltejs/kit/adapter' { /** * If your deployment platform supports splitting your app into multiple functions, * you should run this in a middleware that runs before the main handler - * to reroute the request to the correct function. - * @returns The new URL if the pathname was changed. Otherwise, it doesn't return anything. + * to reroute the request to the correct function and [generate a server-side manifest](https://svelte.dev/docs/kit/@sveltejs-kit#Builder) + * with the `rerouteMiddleware` option set to `true`. + * @example + * ```js + * import { applyReroute } from '@sveltejs/kit/adapter'; + * // replace __HOOKS__ with the path to the reroute hook obtained from `builder.getReroutePath()` + * import { reroute } from '__HOOKS__'; + * + * export default async function middleware(request) { + * return applyReroute(request.url, reroute); + * } + * ``` * @since 2.21.0 */ - export function applyReroute(url: string, reroute: import("@sveltejs/kit").Reroute): Promise; + export function applyReroute(url: string, reroute: import("@sveltejs/kit").Reroute): Promise; export {}; } From d73f37fdcc9a92058e7398853543349f5ec469f1 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 11 Apr 2025 17:49:06 +0800 Subject: [PATCH 59/73] fix netlify infinite loop --- packages/adapter-netlify/index.js | 26 ++------------- packages/adapter-netlify/package.json | 1 + packages/adapter-netlify/src/edge.js | 6 +--- packages/adapter-netlify/src/reroute.js | 17 ++++------ packages/adapter-vercel/src/edge/reroute.js | 9 ++---- pnpm-lock.yaml | 36 ++++++++++++++++++++- 6 files changed, 49 insertions(+), 46 deletions(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 6d0e6516093e..9668e53341b5 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -13,26 +13,6 @@ import toml from '@iarna/toml'; * } & toml.JsonMap} NetlifyConfig */ -/** - * TODO(serhalp) Replace this custom type with an import from `@netlify/edge-functions`, - * once that type is fixed to include `excludedPath` and `function`. - * @typedef {{ - * functions: Array< - * | { - * function: string; - * path: string; - * excludedPath?: string | string[]; - * } - * | { - * function: string; - * pattern: string; - * excludedPattern?: string | string[]; - * } - * >; - * version: 1; - * }} HandlerManifest - */ - const name = '@sveltejs/adapter-netlify'; const files = fileURLToPath(new URL('./files', import.meta.url).href); @@ -233,7 +213,7 @@ async function bundle_edge_function({ builder, name, reroute_middleware }) { const path = '/*'; // We only need to specify paths without the trailing slash because // Netlify will handle the optional trailing slash for us - const excludedPath = [ + const excluded = [ // Contains static files `/${builder.getAppPath()}/*`, ...builder.prerendered.paths, @@ -251,13 +231,13 @@ async function bundle_edge_function({ builder, name, reroute_middleware }) { '/.netlify/*' ]; - /** @type {HandlerManifest} */ + /** @type {import('@netlify/edge-functions').Manifest} */ const edge_manifest = { functions: [ { function: name, path, - excludedPath + excludedPath: /** @type {`/${string}`[]} */ (excluded) } ], version: 1 diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 1bbd7cda6f1e..3d3ebfe6ef52 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -46,6 +46,7 @@ "set-cookie-parser": "^2.6.0" }, "devDependencies": { + "@netlify/edge-functions": "^2.11.1", "@netlify/functions": "^3.0.0", "@rollup/plugin-commonjs": "^28.0.1", "@rollup/plugin-json": "^6.1.0", diff --git a/packages/adapter-netlify/src/edge.js b/packages/adapter-netlify/src/edge.js index f6aeb2b25655..094a7e3ae316 100644 --- a/packages/adapter-netlify/src/edge.js +++ b/packages/adapter-netlify/src/edge.js @@ -8,11 +8,7 @@ const initialized = server.init({ env: Deno.env.toObject() }); -/** - * @param { Request } request - * @param { any } context - * @returns { Promise } - */ +/** @type {import('@netlify/edge-functions').EdgeFunction} */ export default async function handler(request, context) { await initialized; return server.respond(request, { diff --git a/packages/adapter-netlify/src/reroute.js b/packages/adapter-netlify/src/reroute.js index 8092332d1b30..145b27dc0852 100644 --- a/packages/adapter-netlify/src/reroute.js +++ b/packages/adapter-netlify/src/reroute.js @@ -1,16 +1,13 @@ import { reroute } from '__HOOKS__'; import { applyReroute } from '@sveltejs/kit/adapter'; -/** - * @param {Request} request - * @returns {Promise} - */ -export default async function middleware(request) { +/** @type {import('@netlify/edge-functions').EdgeFunction} */ +export default async function middleware(request, context) { const resolved_url = await applyReroute(request.url, reroute); - // to avoid an endless loop, we only rewrite the URL if the new pathname is different - // since a Netlify rewrite will always re-invoke this function with the returned URL - if (request.url !== resolved_url.href) { - return resolved_url; - } + // Netlify rewrites can cause an endless loop because it will re-run this + // function with the rewritten URL. Therefore, we use `context.next` instead + // to specifically invoke the next function in the chain with the rewritten URL + const new_request = new Request(resolved_url, request); + return context.next(new_request); } diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/src/edge/reroute.js index 1ef66d134b23..595230dcb95f 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/src/edge/reroute.js @@ -1,5 +1,5 @@ import { reroute } from '__HOOKS__'; -import { rewrite, next } from '@vercel/edge'; +import { rewrite } from '@vercel/edge'; import { applyReroute } from '@sveltejs/kit/adapter'; /** @@ -8,10 +8,5 @@ import { applyReroute } from '@sveltejs/kit/adapter'; */ export default async function middleware(request) { const resolved_url = await applyReroute(request.url, reroute); - if (request.url !== resolved_url.href) { - // TODO: use header to store query params because Vercel discards empty value ones? - return rewrite(resolved_url); - } - - return next(); + return rewrite(resolved_url); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 184c6b10eb75..5bb1dbf3cccd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -137,6 +137,9 @@ importers: specifier: ^2.6.0 version: 2.6.0 devDependencies: + '@netlify/edge-functions': + specifier: ^2.11.1 + version: 2.11.1 '@netlify/functions': specifier: ^3.0.0 version: 3.0.0 @@ -315,7 +318,7 @@ importers: dependencies: '@sveltejs/kit': specifier: ^1.0.0 || ^2.0.0 - version: link:../kit + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) devDependencies: typescript: specifier: ^5.3.3 @@ -1669,6 +1672,9 @@ packages: engines: {node: '>=18'} hasBin: true + '@netlify/edge-functions@2.11.1': + resolution: {integrity: sha512-pyQOTZ8a+ge5lZlE+H/UAHyuqQqtL5gE0pXrHT9mOykr3YQqnkB2hZMtx12odatZ87gHg4EA+UPyMZUbLfnXvw==} + '@netlify/functions@3.0.0': resolution: {integrity: sha512-XXf9mNw4+fkxUzukDpJtzc32bl1+YlXZwEhc5ZgMcTbJPLpgRLDs5WWSPJ4eY/Mv1ZFvtxmMwmfgoQYVt68Qog==} engines: {node: '>=18.0.0'} @@ -1871,6 +1877,15 @@ packages: typescript: '>= 5' typescript-eslint: '>= 7.5' + '@sveltejs/kit@2.20.5': + resolution: {integrity: sha512-zT/97KvVUo19jEGZa972ls7KICjPCB53j54TVxnEFT5VEwL16G+YFqRVwJbfxh7AmS7/Ptr1rKF7Qt4FBMDNlw==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 || ^6.0.0 + '@sveltejs/vite-plugin-svelte-inspector@4.0.1': resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} @@ -4028,6 +4043,8 @@ snapshots: - encoding - supports-color + '@netlify/edge-functions@2.11.1': {} + '@netlify/functions@3.0.0': dependencies: '@netlify/serverless-functions-api': 1.30.1 @@ -4188,6 +4205,23 @@ snapshots: typescript: 5.6.3 typescript-eslint: 8.26.0(eslint@9.6.0)(typescript@5.6.3) + '@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.1.0 + esm-env: 1.2.2 + import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.17 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 3.0.0 + svelte: 5.23.1 + vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) From 2ea355c10c09a9587b16cb358d0cfb9b2aca3cde Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 11 Apr 2025 18:35:02 +0800 Subject: [PATCH 60/73] add netlify test --- eslint.config.js | 1 + package.json | 8 +- packages/adapter-netlify/package.json | 7 +- .../test/apps/split/.gitignore | 5 + .../test/apps/split/netlify.toml | 2 + .../test/apps/split/package.json | 20 + .../test/apps/split/playwright.config.js | 1 + .../test/apps/split/src/app.html | 11 + .../test/apps/split/src/hooks.js | 5 + .../split/src/routes/reroute/+page.svelte | 5 + .../test/apps/split/svelte.config.js | 12 + .../test/apps/split/test/test.js | 8 + .../test/apps/split/tsconfig.json | 14 + .../test/apps/split/vite.config.js | 11 + packages/adapter-netlify/test/utils.js | 28 + packages/adapter-netlify/tsconfig.json | 2 +- pnpm-lock.yaml | 8093 ++++++++++++++++- pnpm-workspace.yaml | 1 + 18 files changed, 7927 insertions(+), 307 deletions(-) create mode 100644 packages/adapter-netlify/test/apps/split/.gitignore create mode 100644 packages/adapter-netlify/test/apps/split/netlify.toml create mode 100644 packages/adapter-netlify/test/apps/split/package.json create mode 100644 packages/adapter-netlify/test/apps/split/playwright.config.js create mode 100644 packages/adapter-netlify/test/apps/split/src/app.html create mode 100644 packages/adapter-netlify/test/apps/split/src/hooks.js create mode 100644 packages/adapter-netlify/test/apps/split/src/routes/reroute/+page.svelte create mode 100644 packages/adapter-netlify/test/apps/split/svelte.config.js create mode 100644 packages/adapter-netlify/test/apps/split/test/test.js create mode 100644 packages/adapter-netlify/test/apps/split/tsconfig.json create mode 100644 packages/adapter-netlify/test/apps/split/vite.config.js create mode 100644 packages/adapter-netlify/test/utils.js diff --git a/eslint.config.js b/eslint.config.js index 8444424cd723..8673a848b2c6 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -31,6 +31,7 @@ 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/**/*', diff --git a/package.json b/package.json index f4a585a29940..983f3a7c3824 100644 --- a/package.json +++ b/package.json @@ -37,9 +37,13 @@ }, "pnpm": { "onlyBuiltDependencies": [ + "@parcel/watcher", + "esbuild", + "netlify-cli", + "sharp", "svelte-preprocess", - "workerd", - "esbuild" + "unix-dgram", + "workerd" ] } } \ No newline at end of file diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 3d3ebfe6ef52..3415d3b0fecf 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -34,11 +34,13 @@ "scripts": { "dev": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -cw", "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/edge.js', 'files/edge.js')\"", - "test": "vitest run", "check": "tsc", "lint": "prettier --check .", "format": "pnpm lint --write", - "prepublishOnly": "pnpm build" + "prepublishOnly": "pnpm build", + "test": "pnpm test:unit && pnpm test:integration", + "test:unit": "vitest run", + "test:integration": "pnpm build && pnpm -r --workspace-concurrency 1 --filter=\"./test/**\" test" }, "dependencies": { "@iarna/toml": "^2.2.5", @@ -48,6 +50,7 @@ "devDependencies": { "@netlify/edge-functions": "^2.11.1", "@netlify/functions": "^3.0.0", + "@playwright/test": "^1.44.1", "@rollup/plugin-commonjs": "^28.0.1", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.0", diff --git a/packages/adapter-netlify/test/apps/split/.gitignore b/packages/adapter-netlify/test/apps/split/.gitignore new file mode 100644 index 000000000000..69e22a8368e7 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +node_modules +/.svelte-kit +/.netlify +/build \ No newline at end of file diff --git a/packages/adapter-netlify/test/apps/split/netlify.toml b/packages/adapter-netlify/test/apps/split/netlify.toml new file mode 100644 index 000000000000..4fa4a7e4621c --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/netlify.toml @@ -0,0 +1,2 @@ +[dev] + publish = "build" \ No newline at end of file diff --git a/packages/adapter-netlify/test/apps/split/package.json b/packages/adapter-netlify/test/apps/split/package.json new file mode 100644 index 000000000000..d51b477f5fb0 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/package.json @@ -0,0 +1,20 @@ +{ + "name": "test-netlify-split", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "BROWSER=none netlify serve", + "prepare": "svelte-kit sync || echo ''", + "test": "playwright test" + }, + "devDependencies": { + "@sveltejs/kit": "workspace:^", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "netlify-cli": "20.0.0", + "svelte": "^5.23.1", + "vite": "^6.0.11" + }, + "type": "module" +} diff --git a/packages/adapter-netlify/test/apps/split/playwright.config.js b/packages/adapter-netlify/test/apps/split/playwright.config.js new file mode 100644 index 000000000000..33d36b651014 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/playwright.config.js @@ -0,0 +1 @@ +export { config as default } from '../../utils.js'; diff --git a/packages/adapter-netlify/test/apps/split/src/app.html b/packages/adapter-netlify/test/apps/split/src/app.html new file mode 100644 index 000000000000..d533c5e31716 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/src/app.html @@ -0,0 +1,11 @@ + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/adapter-netlify/test/apps/split/src/hooks.js b/packages/adapter-netlify/test/apps/split/src/hooks.js new file mode 100644 index 000000000000..cb8d0e6e71e4 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/src/hooks.js @@ -0,0 +1,5 @@ +export function reroute({ url }) { + if (url.pathname.endsWith('/reroute')) { + return '/reroute'; + } +} diff --git a/packages/adapter-netlify/test/apps/split/src/routes/reroute/+page.svelte b/packages/adapter-netlify/test/apps/split/src/routes/reroute/+page.svelte new file mode 100644 index 000000000000..75f3f293db6d --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/src/routes/reroute/+page.svelte @@ -0,0 +1,5 @@ + + +

{$page.url.pathname + $page.url.search}

diff --git a/packages/adapter-netlify/test/apps/split/svelte.config.js b/packages/adapter-netlify/test/apps/split/svelte.config.js new file mode 100644 index 000000000000..ee3217d21192 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/svelte.config.js @@ -0,0 +1,12 @@ +import adapter from '../../../index.js'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + kit: { + adapter: adapter({ + split: true + }) + } +}; + +export default config; diff --git a/packages/adapter-netlify/test/apps/split/test/test.js b/packages/adapter-netlify/test/apps/split/test/test.js new file mode 100644 index 000000000000..4ef0b9433554 --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/test/test.js @@ -0,0 +1,8 @@ +import { expect, test } from '@playwright/test'; + +test('edge middleware runs reroute before split function', async ({ page }) => { + await page.goto('/reroute'); + await expect(page.locator('p')).toContainText('/reroute'); + await page.goto('/en/reroute'); + await expect(page.locator('p')).toContainText('/en/reroute'); +}); diff --git a/packages/adapter-netlify/test/apps/split/tsconfig.json b/packages/adapter-netlify/test/apps/split/tsconfig.json new file mode 100644 index 000000000000..34380ebc986e --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/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/split/vite.config.js b/packages/adapter-netlify/test/apps/split/vite.config.js new file mode 100644 index 000000000000..29ad08debe6a --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/vite.config.js @@ -0,0 +1,11 @@ +import { sveltekit } from '@sveltejs/kit/vite'; + +/** @type {import('vite').UserConfig} */ +const config = { + build: { + minify: false + }, + plugins: [sveltekit()] +}; + +export default config; diff --git a/packages/adapter-netlify/test/utils.js b/packages/adapter-netlify/test/utils.js new file mode 100644 index 000000000000..368ee6818e98 --- /dev/null +++ b/packages/adapter-netlify/test/utils.js @@ -0,0 +1,28 @@ +import { devices } from '@playwright/test'; +import process from 'node:process'; + +/** @type {import('@playwright/test').PlaywrightTestConfig} */ +export const config = { + forbidOnly: !!process.env.CI, + // generous timeouts on CI + timeout: process.env.CI ? 45000 : 15000, + webServer: { + command: 'pnpm build && pnpm preview', + port: 8888 + }, + retries: process.env.CI ? 2 : 0, + projects: [ + { + name: 'chromium' + } + ], + use: { + ...devices['Desktop Chrome'], + screenshot: 'only-on-failure', + trace: 'retain-on-failure' + }, + workers: process.env.CI ? 2 : undefined, + reporter: 'list', + testDir: 'test', + testMatch: /(.+\.)?(test|spec)\.[jt]s/ +}; diff --git a/packages/adapter-netlify/tsconfig.json b/packages/adapter-netlify/tsconfig.json index cdc2d9ec2a62..8804423db3c5 100644 --- a/packages/adapter-netlify/tsconfig.json +++ b/packages/adapter-netlify/tsconfig.json @@ -15,5 +15,5 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["*.js", "src/**/*.js", "internal.d.ts"] + "include": ["index.js", "src/**/*.js", "internal.d.ts", "test/utils.js"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5bb1dbf3cccd..68d653b9308a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.27.11 '@sveltejs/eslint-config': specifier: ^8.1.0 - version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.16.1(eslint@9.6.0)(typescript@5.6.3))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.23.1))(eslint@9.6.0)(typescript-eslint@8.26.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3) + version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.16.1(eslint@9.6.0)(typescript@5.6.3))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.23.1)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)))(eslint@9.6.0)(typescript-eslint@8.26.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 @@ -44,7 +44,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -53,7 +53,7 @@ importers: version: 5.6.3 vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/adapter-cloudflare: dependencies: @@ -90,7 +90,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/pages/server-side-dep @@ -99,7 +99,7 @@ importers: version: 5.23.1 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) wrangler: specifier: ^4.0.0 version: 4.0.0(@cloudflare/workers-types@4.20250312.0) @@ -111,7 +111,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/workers/server-side-dep @@ -120,7 +120,7 @@ importers: version: 5.23.1 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) wrangler: specifier: ^4.0.0 version: 4.0.0(@cloudflare/workers-types@4.20250312.0) @@ -143,6 +143,9 @@ importers: '@netlify/functions': specifier: ^3.0.0 version: 3.0.0 + '@playwright/test': + specifier: ^1.44.1 + version: 1.44.1 '@rollup/plugin-commonjs': specifier: ^28.0.1 version: 28.0.1(rollup@4.30.1) @@ -157,7 +160,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -172,7 +175,25 @@ importers: version: 5.6.3 vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) + + packages/adapter-netlify/test/apps/split: + devDependencies: + '@sveltejs/kit': + specifier: workspace:^ + version: link:../../../../kit + '@sveltejs/vite-plugin-svelte': + specifier: ^5.0.1 + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) + netlify-cli: + specifier: 20.0.0 + version: 20.0.0(@types/node@18.19.50)(picomatch@4.0.2)(rollup@4.30.1) + svelte: + specifier: ^5.23.1 + version: 5.23.1 + vite: + specifier: ^6.0.11 + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/adapter-node: dependencies: @@ -197,7 +218,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -212,7 +233,7 @@ importers: version: 5.6.3 vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/adapter-static: devDependencies: @@ -224,7 +245,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -239,7 +260,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -248,7 +269,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) sirv-cli: specifier: ^3.0.0 version: 3.0.0 @@ -257,7 +278,7 @@ importers: version: 5.23.1 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/adapter-static/test/apps/spa: devDependencies: @@ -269,7 +290,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) sirv-cli: specifier: ^3.0.0 version: 3.0.0 @@ -278,7 +299,7 @@ importers: version: 5.23.1 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/adapter-vercel: dependencies: @@ -300,7 +321,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -312,13 +333,13 @@ importers: version: 5.6.3 vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/amp: dependencies: '@sveltejs/kit': specifier: ^1.0.0 || ^2.0.0 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) devDependencies: typescript: specifier: ^5.3.3 @@ -361,10 +382,10 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit: dependencies: @@ -407,7 +428,7 @@ importers: version: 1.44.1 '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/connect': specifier: ^3.4.38 version: 3.4.38 @@ -428,16 +449,16 @@ importers: version: 5.23.1 svelte-preprocess: specifier: ^6.0.0 - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.3))(postcss@8.5.3)(svelte@5.23.1)(typescript@5.6.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)))(postcss@8.5.3)(svelte@5.23.1)(typescript@5.6.3) typescript: specifier: ^5.3.3 version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/amp: devDependencies: @@ -449,7 +470,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -467,7 +488,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/basics: devDependencies: @@ -476,7 +497,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -491,7 +512,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/dev-only: devDependencies: @@ -500,7 +521,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -545,7 +566,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/embed: devDependencies: @@ -554,7 +575,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -569,7 +590,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/hash-based-routing: devDependencies: @@ -578,7 +599,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -593,7 +614,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/no-ssr: devDependencies: @@ -602,7 +623,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -617,7 +638,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/options: devDependencies: @@ -629,7 +650,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -644,7 +665,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/options-2: devDependencies: @@ -656,7 +677,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -671,7 +692,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/prerendered-app-error-pages: devDependencies: @@ -680,7 +701,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -695,7 +716,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/apps/writes: devDependencies: @@ -704,7 +725,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -719,13 +740,13 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors: devDependencies: vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: devDependencies: @@ -737,7 +758,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -749,7 +770,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -761,7 +782,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -773,7 +794,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -785,7 +806,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -797,7 +818,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -806,7 +827,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -818,7 +839,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -827,7 +848,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -839,7 +860,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -848,7 +869,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -863,7 +884,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -872,7 +893,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -884,7 +905,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -893,7 +914,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -905,7 +926,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -914,7 +935,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -926,7 +947,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -935,7 +956,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -947,7 +968,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -956,7 +977,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -968,7 +989,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -977,7 +998,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -989,7 +1010,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -998,7 +1019,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -1010,7 +1031,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -1019,7 +1040,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -1031,7 +1052,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/prerendering/basics: devDependencies: @@ -1040,7 +1061,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -1052,10 +1073,10 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/prerendering/options: devDependencies: @@ -1064,7 +1085,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -1076,10 +1097,10 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1088,7 +1109,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) svelte: specifier: ^5.23.1 version: 5.23.1 @@ -1100,10 +1121,10 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) vitest: specifier: ^3.0.1 - version: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + version: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages/package: dependencies: @@ -1125,7 +1146,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -1140,7 +1161,7 @@ importers: version: 5.23.1 svelte-preprocess: specifier: ^6.0.0 - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.3))(postcss@8.5.3)(svelte@5.23.1)(typescript@5.6.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)))(postcss@8.5.3)(svelte@5.23.1)(typescript@5.6.3) typescript: specifier: ^5.3.3 version: 5.6.3 @@ -1182,7 +1203,7 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: ^5.0.1 - version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) prettier: specifier: ^3.3.2 version: 3.3.3 @@ -1203,7 +1224,7 @@ importers: version: 5.6.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + version: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) packages: @@ -1215,10 +1236,53 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/runtime@7.26.10': resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.10': + resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@bugsnag/browser@7.25.0': + resolution: {integrity: sha512-PzzWy5d9Ly1CU1KkxTB6ZaOw/dO+CYSfVtqxVJccy832e6+7rW/dvSw5Jy7rsNhgcKSKjZq86LtNkPSvritOLA==} + + '@bugsnag/core@7.25.0': + resolution: {integrity: sha512-JZLak1b5BVzy77CPcklViZrppac/pE07L3uSDmfSvFYSCGReXkik2txOgV05VlF9EDe36dtUAIIV7iAPDfFpQQ==} + + '@bugsnag/cuid@3.2.1': + resolution: {integrity: sha512-zpvN8xQ5rdRWakMd/BcVkdn2F8HKlDSbM3l7duueK590WmI1T0ObTLc1V/1e55r14WNjPd5AJTYX4yPEAFVi+Q==} + + '@bugsnag/js@7.25.0': + resolution: {integrity: sha512-d8n8SyKdRUz8jMacRW1j/Sj/ckhKbIEp49+Dacp3CS8afRgfMZ//NXhUFFXITsDP5cXouaejR9fx4XVapYXNgg==} + + '@bugsnag/node@7.25.0': + resolution: {integrity: sha512-KlxBaJ8EREEsfKInybAjTO9LmdDXV3cUH5+XNXyqUZrcRVuPOu4j4xvljh+n24ifok/wbFZTKVXUzrN4iKIeIA==} + + '@bugsnag/safe-json-stringify@6.0.0': + resolution: {integrity: sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==} + '@changesets/apply-release-plan@7.0.7': resolution: {integrity: sha512-qnPOcmmmnD0MfMg9DjU1/onORFyRpDXkMMl2IJg9mECY6RnxL3wN0TCCc92b2sXt1jt8DgjAUUsZYGUGTdYIXA==} @@ -1323,109 +1387,324 @@ packages: '@cloudflare/workers-types@4.20250312.0': resolution: {integrity: sha512-LQBDkrXxm/L0FM4NoT8EXaKCA7+2roOAZAWg+31RGxLKcoAWWSQpbf0PFMBAyFIN/eNADu5RKKrt4qHWNsztHQ==} + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + + '@dependents/detective-less@4.1.0': + resolution: {integrity: sha512-KrkT6qO5NxqNfy68sBl6CTSoJ4SNDIS5iQArkibhlbGU4LaDukZ3q2HIkh8aUKDio6o4itU4xDR7t82Y2eP1Bg==} + engines: {node: '>=14'} + '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + '@esbuild/aix-ppc64@0.19.11': + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.21.2': + resolution: {integrity: sha512-/c7hocx0pm14bHQlqUVKmxwdT/e5/KkyoY1W8F9lk/8CkE037STDDz8PXUP/LE6faj2HqchvDs9GcShxFhI78Q==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.19.11': + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.2': + resolution: {integrity: sha512-SGZKngoTWVUriO5bDjI4WDGsNx2VKZoXcds+ita/kVYB+8IkSCKDRDaK+5yu0b5S0eq6B3S7fpiEvpsa2ammlQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm@0.19.11': + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.2': + resolution: {integrity: sha512-G1ve3b4FeyJeyCjB4MX1CiWyTaIJwT9wAYE+8+IRA53YoN/reC/Bf2GDRXAzDTnh69Fpl+1uIKg76DiB3U6vwQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-x64@0.19.11': + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.2': + resolution: {integrity: sha512-1wzzNoj2QtNkAYwIcWJ66UTRA80+RTQ/kuPMtEuP0X6dp5Ar23Dn566q3aV61h4EYrrgGlOgl/HdcqN/2S/2vg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.19.11': + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.2': + resolution: {integrity: sha512-ZyMkPWc5eTROcLOA10lEqdDSTc6ds6nuh3DeHgKip/XJrYjZDfnkCVSty8svWdy+SC1f77ULtVeIqymTzaB6/Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.19.11': + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.2': + resolution: {integrity: sha512-K4ZdVq1zP9v51h/cKVna7im7G0zGTKKB6bP2yJiSmHjjOykbd8DdhrSi8V978sF69rkwrn8zCyL2t6I3ei6j9A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.19.11': + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.2': + resolution: {integrity: sha512-4kbOGdpA61CXqadD+Gb/Pw3YXamQGiz9mal/h93rFVSjr5cgMnmJd/gbfPRm+3BMifvnaOfS1gNWaIDxkE2A3A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.19.11': + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.2': + resolution: {integrity: sha512-ShS+R09nuHzDBfPeMUliKZX27Wrmr8UFp93aFf/S8p+++x5BZ+D344CLKXxmY6qzgTL3mILSImPCNJOzD6+RRg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.19.11': + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.2': + resolution: {integrity: sha512-Hdu8BL+AmO+eCDvvT6kz/fPQhvuHL8YK4ExKZfANWsNe1kFGOHw7VJvS/FKSLFqheXmB3rTF3xFQIgUWPYsGnA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.19.11': + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.2': + resolution: {integrity: sha512-nnGXjOAv+7cM3LYRx4tJsYdgy8dGDGkAzF06oIDGppWbUkUKN9SmgQA8H0KukpU0Pjrj9XmgbWqMVSX/U7eeTA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.19.11': + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.2': + resolution: {integrity: sha512-m73BOCW2V9lcj7RtEMi+gBfHC6n3+VHpwQXP5offtQMPLDkpVolYn1YGXxOZ9hp4h3UPRKuezL7WkBsw+3EB3Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.19.11': + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.2': + resolution: {integrity: sha512-84eYHwwWHq3myIY/6ikALMcnwkf6Qo7NIq++xH0x+cJuUNpdwh8mlpUtRY+JiGUc60yu7ElWBbVHGWTABTclGw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.19.11': + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.2': + resolution: {integrity: sha512-9siSZngT0/ZKG+AH+/agwKF29LdCxw4ODi/PiE0F52B2rtLozlDP92umf8G2GPoVV611LN4pZ+nSTckebOscUA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.19.11': + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.2': + resolution: {integrity: sha512-y0T4aV2CA+ic04ULya1A/8M2RDpDSK2ckgTj6jzHKFJvCq0jQg8afQQIn4EM0G8u2neyOiNHgSF9YKPfuqKOVw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.19.11': + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.2': + resolution: {integrity: sha512-x5ssCdXmZC86L2Li1qQPF/VaC4VP20u/Zm8jlAu9IiVOVi79YsSz6cpPDYZl1rfKSHYCJW9XBfFCo66S5gVPSA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.19.11': + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.2': + resolution: {integrity: sha512-NP7fTpGSFWdXyvp8iAFU04uFh9ARoplFVM/m+8lTRpaYG+2ytHPZWyscSsMM6cvObSIK2KoPHXiZD4l99WaxbQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.19.11': + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.2': + resolution: {integrity: sha512-giZ/uOxWDKda44ZuyfKbykeXznfuVNkTgXOUOPJIjbayJV6FRpQ4zxUy9JMBPLaK9IJcdWtaoeQrYBMh3Rr4vQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} @@ -1438,6 +1717,18 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.19.11': + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.2': + resolution: {integrity: sha512-IeFMfGFSQfIj1d4XU+6lkbFzMR+mFELUUVYrZ+jvWzG4NGvs6o53ReEHLHpYkjRbdEjJy2W3lTekTxrFHW7YJg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} @@ -1450,30 +1741,90 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.19.11': + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.2': + resolution: {integrity: sha512-48QhWD6WxcebNNaE4FCwgvQVUnAycuTd+BdvA/oZu+/MmbpU8pY2dMEYlYzj5uNHWIG5jvdDmFXu0naQeOWUoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.19.11': + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.2': + resolution: {integrity: sha512-90r3nTBLgdIgD4FCVV9+cR6Hq2Dzs319icVsln+NTmTVwffWcCqXGml8rAoocHuJ85kZK36DCteii96ba/PX8g==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.19.11': + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.2': + resolution: {integrity: sha512-sNndlsBT8OeE/MZDSGpRDJlWuhjuUz/dn80nH0EP4ZzDUYvMDVa7G87DVpweBrn4xdJYyXS/y4CQNrf7R2ODXg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.19.11': + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.2': + resolution: {integrity: sha512-Ti2QChGNFzWhUNNVuU4w21YkYTErsNh3h+CzvlEhzgRbwsJ7TrWQqRzW3bllLKKvTppuF3DJ3XP1GEg11AfrEQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.19.11': + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.2': + resolution: {integrity: sha512-VEfTCZicoZnZ6sGkjFPGRFFJuL2fZn2bLhsekZl1CJslflp2cJS/VoKs1jMk+3pDfsGW6CfQVUckP707HwbXeQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} @@ -1506,10 +1857,32 @@ packages: resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fastify/accept-negotiator@1.1.0': + resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} + engines: {node: '>=14'} + + '@fastify/ajv-compiler@3.6.0': + resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==} + '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@fastify/error@3.4.1': + resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} + + '@fastify/fast-json-stringify-compiler@4.3.0': + resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} + + '@fastify/merge-json-schemas@0.1.1': + resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} + + '@fastify/send@2.1.0': + resolution: {integrity: sha512-yNYiY6sDkexoJR0D8IDy3aRP3+L4wdqCpvx5WP+VtEU58sn7USmKynBzDQex5X42Zzvw2gNzzYgP90UfWShLFA==} + + '@fastify/static@7.0.4': + resolution: {integrity: sha512-p2uKtaf8BMOZWLs6wu+Ihg7bWNBdjNgCwDza4MJtTqg+5ovKmcbgbR9Xs5/smZ1YISfzKOCNYmZV8LaCj+eJ1Q==} + '@fontsource/libre-barcode-128-text@5.1.0': resolution: {integrity: sha512-MC7foQFRT0NDcsqBWQua2T3gs/fh/uTowTxfoPqGQWjqroiMxRZhQh7jerjnpcI+Xi3yR5bwCo6W2uwCza1FRw==} @@ -1517,6 +1890,10 @@ packages: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/momoa@2.0.4': + resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} + engines: {node: '>=10.10.0'} + '@humanwhocodes/retry@0.3.0': resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} @@ -1629,6 +2006,9 @@ packages: cpu: [x64] os: [win32] + '@import-maps/resolve@1.0.1': + resolution: {integrity: sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1637,6 +2017,10 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -1661,34 +2045,206 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@lukeed/ms@2.0.2': + resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} + engines: {node: '>=8'} + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + '@mapbox/node-pre-gyp@2.0.0': resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==} engines: {node: '>=18'} hasBin: true - '@netlify/edge-functions@2.11.1': - resolution: {integrity: sha512-pyQOTZ8a+ge5lZlE+H/UAHyuqQqtL5gE0pXrHT9mOykr3YQqnkB2hZMtx12odatZ87gHg4EA+UPyMZUbLfnXvw==} + '@netlify/binary-info@1.0.0': + resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==} - '@netlify/functions@3.0.0': - resolution: {integrity: sha512-XXf9mNw4+fkxUzukDpJtzc32bl1+YlXZwEhc5ZgMcTbJPLpgRLDs5WWSPJ4eY/Mv1ZFvtxmMwmfgoQYVt68Qog==} - engines: {node: '>=18.0.0'} + '@netlify/blobs@8.1.2': + resolution: {integrity: sha512-coQlePCMpgyMxfeCvxa6qPHlahECin0lSRtg8UOn2rzXRWdvJk+yUhhUstW4HLa9ynvAXFAGTEZoVt4BTESNbw==} + engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/node-cookies@0.1.0': - resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} + '@netlify/build-info@9.0.2': + resolution: {integrity: sha512-2c1mTGLRYjRxhyv11CbnwkusGKtRBRQW0RXk0i72BmhtTpzNwNdNWAGh+IRaudONGO8vqvAyiDtyTUkF6QBgHg==} engines: {node: ^14.16.0 || >=16.0.0} + hasBin: true - '@netlify/serverless-functions-api@1.30.1': - resolution: {integrity: sha512-JkbaWFeydQdeDHz1mAy4rw+E3bl9YtbCgkntfTxq+IlNX/aIMv2/b1kZnQZcil4/sPoZGL831Dq6E374qRpU1A==} - engines: {node: '>=18.0.0'} + '@netlify/build@30.1.1': + resolution: {integrity: sha512-iPGaFjDOE7FDt9xskCLaYlXcbwlQuoDZ0votmr2CQWfrNSnXAP8f44kPPSEzaLqyeQwRjmsrBUKqJ0Q3NCTLPA==} + engines: {node: ^14.16.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@netlify/opentelemetry-sdk-setup': ^1.1.0 + '@opentelemetry/api': ~1.8.0 + peerDependenciesMeta: + '@netlify/opentelemetry-sdk-setup': + optional: true - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + '@netlify/cache-utils@5.2.0': + resolution: {integrity: sha512-kKzGQ9gKNRUjqFMC1/1goeTe1WfzL6KhphwXac7tialowg10Dtmr2X+eDzfH9enGvD6vhYR4a0QMTQWkjfPVmg==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/config@21.0.7': + resolution: {integrity: sha512-B4SBC1a6TB2bIafJvUnF9RViVYn2QDSW96majr7XkG8kgdd5DbOjKyERHaQ8F2912lpg0pp3izlofERuGkDx9A==} + engines: {node: ^14.16.0 || >=16.0.0} + hasBin: true + + '@netlify/edge-bundler@12.4.0': + resolution: {integrity: sha512-UESSjInC554A97VkxDnv4MZKK6Nk9JLHzuvoMfqHB0biht0J5rvXk+EcAjgfaaVJezOTQb45XMiH5lqJFVe6HQ==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/edge-functions@2.11.1': + resolution: {integrity: sha512-pyQOTZ8a+ge5lZlE+H/UAHyuqQqtL5gE0pXrHT9mOykr3YQqnkB2hZMtx12odatZ87gHg4EA+UPyMZUbLfnXvw==} + + '@netlify/framework-info@9.9.3': + resolution: {integrity: sha512-kPTF5yemdmadP/+qMDcc3p10NkZKXHXGm2BCFvB192paCNxQrSJz+qb56SO+kvSn9exg+HvhGJ0gfIcVwPjzWw==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@netlify/functions-utils@5.3.14': + resolution: {integrity: sha512-EFeTvSFsngdsgTXZukVKJt8tx+iSZFokW3EQw5hIN42eJjyVSVV+UrxaHHVvCfeu2VxliWsxPiF/YZ2iuxWhhA==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/functions@3.0.0': + resolution: {integrity: sha512-XXf9mNw4+fkxUzukDpJtzc32bl1+YlXZwEhc5ZgMcTbJPLpgRLDs5WWSPJ4eY/Mv1ZFvtxmMwmfgoQYVt68Qog==} + engines: {node: '>=18.0.0'} + + '@netlify/git-utils@5.2.0': + resolution: {integrity: sha512-maNQyhQ6zTS5Kwl03HXoUa7uTNjmCvZea5Jko2pyDWz0xW1cunnil+4s33wXrMZJNDvyv97O2vkC5N1sAS3fyQ==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/headers-parser@8.0.0': + resolution: {integrity: sha512-TAxRPOpPDphDttDukWj1mTJtjxA81FhxV9EBOwP3DipqKMNs1mXlucMu/3kvIKG1o2XMrQbvSttHK8URdVROrw==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/local-functions-proxy-darwin-arm64@1.1.1': + resolution: {integrity: sha512-lphJ9qqZ3glnKWEqlemU1LMqXxtJ/tKf7VzakqqyjigwLscXSZSb6fupSjQfd4tR1xqxA76ylws/2HDhc/gs+Q==} + cpu: [arm64] + os: [darwin] + hasBin: true + + '@netlify/local-functions-proxy-darwin-x64@1.1.1': + resolution: {integrity: sha512-4CRB0H+dXZzoEklq5Jpmg+chizXlVwCko94d8+UHWCgy/bA3M/rU/BJ8OLZisnJaAktHoeLABKtcLOhtRHpxZQ==} + cpu: [x64] + os: [darwin] + hasBin: true + + '@netlify/local-functions-proxy-freebsd-arm64@1.1.1': + resolution: {integrity: sha512-u13lWTVMJDF0A6jX7V4N3HYGTIHLe5d1Z2wT43fSIHwXkTs6UXi72cGSraisajG+5JFIwHfPr7asw5vxFC0P9w==} + cpu: [arm64] + os: [freebsd] + hasBin: true + + '@netlify/local-functions-proxy-freebsd-x64@1.1.1': + resolution: {integrity: sha512-g5xw4xATK5YDzvXtzJ8S1qSkWBiyF8VVRehXPMOAMzpGjCX86twYhWp8rbAk7yA1zBWmmWrWNA2Odq/MgpKJJg==} + cpu: [x64] + os: [freebsd] + hasBin: true + + '@netlify/local-functions-proxy-linux-arm64@1.1.1': + resolution: {integrity: sha512-dPGu1H5n8na7mBKxiXQ+FNmthDAiA57wqgpm5JMAHtcdcmRvcXwJkwWVGvwfj8ShhYJHQaSaS9oPgO+mpKkgmA==} + cpu: [arm64] + os: [linux] + hasBin: true + + '@netlify/local-functions-proxy-linux-arm@1.1.1': + resolution: {integrity: sha512-YsTpL+AbHwQrfHWXmKnwUrJBjoUON363nr6jUG1ueYnpbbv6wTUA7gI5snMi/gkGpqFusBthAA7C30e6bixfiA==} + cpu: [arm] + os: [linux] + hasBin: true + + '@netlify/local-functions-proxy-linux-ia32@1.1.1': + resolution: {integrity: sha512-Ra0FlXDrmPRaq+rYH3/ttkXSrwk1D5Zx/Na7UPfJZxMY7Qo5iY4bgi/FuzjzWzlp0uuKZOhYOYzYzsIIyrSvmw==} + cpu: [ia32] + os: [linux] + hasBin: true + + '@netlify/local-functions-proxy-linux-ppc64@1.1.1': + resolution: {integrity: sha512-oXf1satwqwUUxz7LHS1BxbRqc4FFEKIDFTls04eXiLReFR3sqv9H/QuYNTCCDMuRcCOd92qKyDfATdnxT4HR8w==} + cpu: [ppc64] + os: [linux] + hasBin: true + + '@netlify/local-functions-proxy-linux-x64@1.1.1': + resolution: {integrity: sha512-bS3u4JuDg/eC0y4Na3i/29JBOxrdUvsK5JSjHfzUeZEbOcuXYf4KavTpHS5uikdvTgyczoSrvbmQJ5m0FLXfLA==} + cpu: [x64] + os: [linux] + hasBin: true + + '@netlify/local-functions-proxy-openbsd-x64@1.1.1': + resolution: {integrity: sha512-1xLef/kLRNkBTXJ+ZGoRFcwsFxd/B2H3oeJZyXaZ3CN5umd9Mv9wZuAD74NuMt/535yRva8jtAJqvEgl9xMSdA==} + cpu: [x64] + os: [openbsd] + hasBin: true + + '@netlify/local-functions-proxy-win32-ia32@1.1.1': + resolution: {integrity: sha512-4IOMDBxp2f8VbIkhZ85zGNDrZR4ey8d68fCMSOIwitjsnKav35YrCf8UmAh3UR6CNIRJdJL4MW1GYePJ7iJ8uA==} + cpu: [ia32] + os: [win32] + hasBin: true + + '@netlify/local-functions-proxy-win32-x64@1.1.1': + resolution: {integrity: sha512-VCBXBJWBujVxyo5f+3r8ovLc9I7wJqpmgDn3ixs1fvdrER5Ac+SzYwYH4mUug9HI08mzTSAKZErzKeuadSez3w==} + cpu: [x64] + os: [win32] + hasBin: true + + '@netlify/local-functions-proxy@2.0.3': + resolution: {integrity: sha512-siVwmrp7Ow+7jLALi6jXOja4Y4uHMMgOLLQMgd+OZ1TESOstrJvkUisJEDAc9hx7u0v/B0mh5g1g1huiH3uS3A==} + engines: {node: '>=18.14.0'} + + '@netlify/node-cookies@0.1.0': + resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/open-api@2.36.0': + resolution: {integrity: sha512-cxdjUkHh0/SLvPusCFOmIoKpXdfvom+cpBT/bUrP2oxxH1htWgJ59GGuu/pJGEU+xhKpPotr+TSJl00u7ktIhg==} + engines: {node: '>=14.8.0'} + + '@netlify/opentelemetry-utils@1.3.1': + resolution: {integrity: sha512-WAzYBrRQdPw+2JWRESxmUwBSOnUGGgBh4l9GvNmMCxa/ecLw42MhNIONETZ+j2hvQd9T7qRxHece/QREgF9J0g==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@opentelemetry/api': ~1.8.0 + + '@netlify/plugins-list@6.80.0': + resolution: {integrity: sha512-bCKLI51UZ70ziIWsf2nvgPd4XuG6m8AMCoHiYtl/BSsiaSBfmryZnTTqdRXerH09tBRpbPPwzaEgUJwyU9o8Qw==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@netlify/redirect-parser@14.5.1': + resolution: {integrity: sha512-pg5Oa/da6P0djfLOaBj/5IiB4tXNzGlvl2IK6MzxM4W0zkwdLprw3NjduBeaSmWe7h+9WZKKVTh2IVNEXqs3iQ==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/run-utils@5.2.0': + resolution: {integrity: sha512-bsrv7Sjge5g71VMgZ65Ioc5q4lHXdLQCmpUU6sY06Aeol1psi1iDOGVMx/7ExJjbCtQgxye35wZjAz60i6X22Q==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/serverless-functions-api@1.30.1': + resolution: {integrity: sha512-JkbaWFeydQdeDHz1mAy4rw+E3bl9YtbCgkntfTxq+IlNX/aIMv2/b1kZnQZcil4/sPoZGL831Dq6E374qRpU1A==} + engines: {node: '>=18.0.0'} + + '@netlify/serverless-functions-api@1.37.0': + resolution: {integrity: sha512-6tLX6fNXNuI9ImIM6ej0Xq0vPcHHB3PsHuyQBMdvLGQHKxwqqlJTxGbAP3RcuCgIOtZ1meUKp7YkbBjrwwio8A==} + engines: {node: '>=18.0.0'} + + '@netlify/zip-it-and-ship-it@10.0.4': + resolution: {integrity: sha512-DaKSkQbRq0MlDGxsNfxP/jBfRFkH4FcuuBZ18AsslVv+AsYqhUBBN2CDaSqbP4BUpvjXEI8ZZ0IIenRo4NszOg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + + '@netlify/zip-it-and-ship-it@10.0.5': + resolution: {integrity: sha512-MgaUhXHRVRMFEnIJbx8taMQIAAO8tqSow/ThQagj5KEaa1HDKO7JASR8yP1Ys2Hnwz8CMX9Q4YoyL9tSS0oIMA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} '@nodelib/fs.stat@2.0.5': @@ -1699,6 +2255,156 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@octokit/auth-token@5.1.2': + resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} + engines: {node: '>= 18'} + + '@octokit/core@6.1.5': + resolution: {integrity: sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==} + engines: {node: '>= 18'} + + '@octokit/endpoint@10.1.4': + resolution: {integrity: sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==} + engines: {node: '>= 18'} + + '@octokit/graphql@8.2.2': + resolution: {integrity: sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==} + engines: {node: '>= 18'} + + '@octokit/openapi-types@24.2.0': + resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} + + '@octokit/openapi-types@25.0.0': + resolution: {integrity: sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw==} + + '@octokit/plugin-paginate-rest@11.6.0': + resolution: {integrity: sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-request-log@5.3.1': + resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-rest-endpoint-methods@13.5.0': + resolution: {integrity: sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/request-error@6.1.8': + resolution: {integrity: sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==} + engines: {node: '>= 18'} + + '@octokit/request@9.2.3': + resolution: {integrity: sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==} + engines: {node: '>= 18'} + + '@octokit/rest@21.1.1': + resolution: {integrity: sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==} + engines: {node: '>= 18'} + + '@octokit/types@13.10.0': + resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} + + '@octokit/types@14.0.0': + resolution: {integrity: sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==} + + '@opentelemetry/api@1.8.0': + resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} + engines: {node: '>=8.0.0'} + + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-wasm@2.5.1': + resolution: {integrity: sha512-RJxlQQLkaMMIuWRozy+z2vEqbaQlCuaCgVZIUCzQLYggY22LZbP5Y1+ia+FD724Ids9e+XIyOLXLrLgQSHIthw==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1708,6 +2414,22 @@ packages: engines: {node: '>=16'} hasBin: true + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + + '@pnpm/tabtab@0.5.4': + resolution: {integrity: sha512-bWLDlHsBlgKY/05wDN/V3ETcn5G2SV/SiA2ZmNvKGGlmVX4G5li7GRDhHcgYvHJHyJ8TUStqg2xtHmCs0UbAbg==} + engines: {node: '>=18'} + '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} @@ -1855,6 +2577,18 @@ packages: cpu: [x64] os: [win32] + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + + '@sindresorhus/slugify@2.2.1': + resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==} + engines: {node: '>=12'} + + '@sindresorhus/transliterate@1.6.0': + resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} + engines: {node: '>=12'} + '@stylistic/eslint-plugin-js@2.1.0': resolution: {integrity: sha512-gdXUjGNSsnY6nPyqxu6lmDTtVrwCOjun4x8PUn0x04d5ucLI74N3MT1Q0UhdcOR9No3bo5PGDyBgXK+KmD787A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1905,6 +2639,29 @@ packages: resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -1920,6 +2677,21 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/http-proxy@1.17.16': + resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1929,15 +2701,33 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} + '@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.1': + resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} + '@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==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@8.26.0': resolution: {integrity: sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1968,6 +2758,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@8.26.0': resolution: {integrity: sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1976,6 +2770,15 @@ packages: resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/typescript-estree@8.26.0': resolution: {integrity: sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2002,6 +2805,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@8.26.0': resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2013,6 +2820,11 @@ packages: '@vercel/edge@1.2.1': resolution: {integrity: sha512-1++yncEyIAi68D3UEOlytYb1IUcIulMWdoSzX2h9LuSeeyR7JtaIgR8DcTQ6+DmYOQn+5MCh6LY+UmK6QBByNA==} + '@vercel/nft@0.27.7': + resolution: {integrity: sha512-FG6H5YkP4bdw9Ll1qhmbxuE8KwW2E/g8fJpM183fWQLeVDGqzeywMIeJ9h2txdWZ03psgWMn6QymTxaDLmdwUg==} + engines: {node: '>=16'} + hasBin: true + '@vercel/nft@0.29.2': resolution: {integrity: sha512-A/Si4mrTkQqJ6EXJKv5EYCDQ3NL6nJXxG8VGXePsaiQigsomHYQC9xSpX8qGk7AEZk4b1ssbYIqJ0ISQQ7bfcA==} engines: {node: '>=18'} @@ -2047,10 +2859,52 @@ packages: '@vitest/utils@3.0.5': resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} + '@xhmikosr/archive-type@6.0.1': + resolution: {integrity: sha512-PB3NeJL8xARZt52yDBupK0dNPn8uIVQDe15qNehUpoeeLWCZyAOam4vGXnoZGz2N9D1VXtjievJuCsXam2TmbQ==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xhmikosr/decompress-tar@7.0.0': + resolution: {integrity: sha512-kyWf2hybtQVbWtB+FdRyOT+jyR5jxCNZPLqvQGB7djZj75lrpLUPEmRbyo86AtJ5OEtivpYaNWjCkqSJ8xtRWw==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xhmikosr/decompress-tarbz2@7.0.0': + resolution: {integrity: sha512-3QnjipYkRgh3Dee1MWDgKmANWxOQBVN4e1IwiGNe2fHYfMYTeSkVvWREt87UIoSucKUh3E95v8uGFttgTknZcA==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xhmikosr/decompress-targz@7.0.0': + resolution: {integrity: sha512-7BNHJl92g9OLhw89zqcFS67V1LAtm4Ex02j6OiQzuE8P7Yy9lQcyBuEL3x6v436grLdL+BcFjgbmhWxnem4GHw==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xhmikosr/decompress-unzip@6.0.0': + resolution: {integrity: sha512-R1HAkjXLS7RAL74YFLxYY9zYflCcYGssld9KKFDu87PnJ4h4btdhzXfSC8J5i5A2njH3oYIoCzx03RIGTH07Sg==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xhmikosr/decompress@9.0.1': + resolution: {integrity: sha512-9Lvlt6Qdpo9SaRQyRIXCo3lgU++eMZ68lzgjcTwtuKDrlwT635+5zsHZ1yrSx/Blc5IDuVLlPkBPj5CZkx+2+Q==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xhmikosr/downloader@13.0.1': + resolution: {integrity: sha512-mBvWew1kZJHfNQVVfVllMjUDwCGN9apPa0t4/z1zaUJ9MzpXjRL3w8fsfJKB8gHN/h4rik9HneKfDbh2fErN+w==} + engines: {node: ^14.14.0 || >=16.0.0} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + abstract-logging@2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -2075,17 +2929,68 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} + aggregate-error@4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} + engines: {node: '>=12'} + + ajv-errors@3.0.0: + resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} + peerDependencies: + ajv: ^8.0.1 + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-escapes@6.2.1: + resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} + engines: {node: '>=14.16'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2098,51 +3003,192 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + ansi-to-html@0.7.2: + resolution: {integrity: sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==} + engines: {node: '>=8.0.0'} + hasBin: true - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + + archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + + archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + arrify@3.0.0: + resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} + engines: {node: '>=12'} + as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + ascii-table@0.0.9: + resolution: {integrity: sha512-xpkr6sCDIYTPqzvjG8M3ncw1YOTaloWZOyrUmicoEifBEKzQzt+ooUpRpQ/AbOoJfO/p2ZKiyp79qHThzJDulQ==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-module-types@5.0.0: + resolution: {integrity: sha512-JvqziE0Wc0rXQfma0HZC/aY7URXHFuZV84fJRtP8u+lhp0JYCNd5wJzVXP45t0PH0Mej3ynlzvdyITYIu0G4LQ==} + engines: {node: '>=14'} + async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + atomically@2.0.3: + resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} + + avvio@8.4.0: + resolution: {integrity: sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + + backoff@2.5.0: + resolution: {integrity: sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==} + engines: {node: '>= 0.6'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} + + bare-fs@4.1.2: + resolution: {integrity: sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.1: + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.6.5: + resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + before-after-hook@3.0.2: + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + + better-ajv-errors@1.2.0: + resolution: {integrity: sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + ajv: 4.11.8 - 8 + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@8.0.1: + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} + engines: {node: '>=18'} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -2153,14 +3199,79 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + byline@5.0.0: + resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + engines: {node: '>=0.10.0'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsite@1.0.0: + resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -2169,6 +3280,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -2176,10 +3291,21 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -2188,30 +3314,149 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.1.0: + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} + engines: {node: '>=8'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + clean-deep@3.4.0: + resolution: {integrity: sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==} + engines: {node: '>=4'} + + clean-stack@4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} + engines: {node: '>=12'} + + clean-stack@5.2.0: + resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} + engines: {node: '>=14.16'} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + 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'} + colors-option@3.0.0: + resolution: {integrity: sha512-DP3FpjsiDDvnQC1OJBsdOJZPuy7r0o6sepY2T5M3L/d2nrE23O/ErFkEqyY3ngVL1ZhTj/H0pCMNObZGkEOaaQ==} + engines: {node: '>=12.20.0'} + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + comment-json@4.2.5: + resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} + engines: {node: '>= 6'} + + 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@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@7.0.0: + resolution: {integrity: sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==} + engines: {node: '>=18'} + consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} @@ -2220,6 +3465,23 @@ packages: resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} engines: {node: '>=4'} + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} @@ -2228,6 +3490,53 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + 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==} + engines: {node: '>=18'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cp-file@10.0.0: + resolution: {integrity: sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==} + engines: {node: '>=14.16'} + + cp-file@9.1.0: + resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==} + engines: {node: '>=10'} + + cpy@9.0.1: + resolution: {integrity: sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==} + engines: {node: ^12.20.0 || ^14.17.0 || >=16.0.0} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -2237,17 +3546,61 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crossws@0.3.4: + resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} + + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + cssfilter@0.0.10: + resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + cyclist@1.0.2: + resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} + 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'} + dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -2257,6 +3610,13 @@ packages: supports-color: optional: true + decache@4.6.2: + resolution: {integrity: sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dedent-js@1.0.1: resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} @@ -2264,6 +3624,10 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2271,13 +3635,50 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2291,9 +3692,46 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + detective-amd@5.0.2: + resolution: {integrity: sha512-XFd/VEQ76HSpym80zxM68ieB77unNuoMwopU2TFT/ErUk5n4KvUTwW4beafAVUugrjV48l4BmmR0rh2MglBaiA==} + engines: {node: '>=14'} + hasBin: true + + detective-cjs@5.0.1: + resolution: {integrity: sha512-6nTvAZtpomyz/2pmEmGX1sXNjaqgMplhQkskq2MLrar0ZAIkHMrDhLXkRiK2mvbu9wSWr0V5/IfiTrZqAQMrmQ==} + engines: {node: '>=14'} + + detective-es6@4.0.1: + resolution: {integrity: sha512-k3Z5tB4LQ8UVHkuMrFOlvb3GgFWdJ9NqAa2YLUU/jTaWJIm+JJnEh4PsMc+6dfT223Y8ACKOaC0qcj7diIhBKw==} + engines: {node: '>=14'} + + detective-postcss@6.1.3: + resolution: {integrity: sha512-7BRVvE5pPEvk2ukUWNQ+H2XOq43xENWbH0LcdCE14mwgTBEAMoAx+Fc1rdp76SmyZ4Sp48HlV7VedUnP6GA1Tw==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + detective-sass@5.0.3: + resolution: {integrity: sha512-YsYT2WuA8YIafp2RVF5CEfGhhyIVdPzlwQgxSjK+TUm3JoHP+Tcorbk3SfG0cNZ7D7+cYWa0ZBcvOaR0O8+LlA==} + engines: {node: '>=14'} + + detective-scss@4.0.3: + resolution: {integrity: sha512-VYI6cHcD0fLokwqqPFFtDQhhSnlFWvU614J42eY6G0s8c+MBhi9QAWycLwIOGxlmD8I/XvGSOUV1kIDhJ70ZPg==} + engines: {node: '>=14'} + + detective-stylus@4.0.0: + resolution: {integrity: sha512-TfPotjhszKLgFBzBhTOxNHDsutIxx9GTWjrL5Wh7Qx/ydxKhwUrlSFeLIn+ZaHPF+h0siVBkAQSuy6CADyTxgQ==} + engines: {node: '>=14'} + + detective-typescript@11.2.0: + resolution: {integrity: sha512-ARFxjzizOhPqs1fYC/2NMC3N4jrQ6HvVflnXBTRqNEqJuXwyKLRr9CrJwkRcV/SnZt1sNXgsF6FPm0x57Tq0rw==} + engines: {node: ^14.14.0 || >=16.0.0} + devalue@5.1.0: resolution: {integrity: sha512-N1MxQrdI1KmHTVfiGzEi6J2rEtrGZU1f2CELFpqjqlBwl/KgQDjPpszqySb4W3+w3YWwjt2++OExkh2r6O2VPA==} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} @@ -2302,10 +3740,35 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@7.2.0: + resolution: {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + dot-prop@9.0.0: + resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} + engines: {node: '>=18'} + dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + dropcss@1.0.16: resolution: {integrity: sha512-QgA6BUh2SoBYE/dSuMmeGhNdoGtGewt3Rn66xKyXoGNyjrKRXf163wuM+xeQ83p87l/3ALoB6Il1dgKyGS5pEw==} @@ -2315,18 +3778,45 @@ packages: peerDependencies: typescript: '>=5.0.4 <5.8' + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: resolution: {directory: packages/kit/test/apps/dev-only/_test_dependencies/cjs-only, type: directory} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -2335,19 +3825,91 @@ packages: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} - engines: {node: '>=18'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + envinfo@7.14.0: + resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} + engines: {node: '>=4'} hasBin: true - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} - eslint-compat-utils@0.5.1: + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.2: + resolution: {integrity: sha512-LmHPAa5h4tSxz+g/D8IHY6wCjtIiFx8I7/Q0Aq+NmvtoYvyMnJU0KQJcqB6QH30X9x/W4CemgUtPgQDZFca5SA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-compat-utils@0.5.1: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: @@ -2443,17 +4005,68 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + execa@8.0.1: + 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'} + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + expect-type@1.1.0: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} + express-logging@1.1.1: + resolution: {integrity: sha512-1KboYwxxCG5kwkJHR5LjFDTD1Mgl8n4PIMcCuhhd/1OqaxlC68P3QKbvvAbZVUtVgtlxEdTgSUwf6yxwzRCuuA==} + engines: {node: '>= 0.10.26'} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + exsolve@1.0.4: resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} + ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + + ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -2461,9 +4074,29 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-content-type-parse@1.1.0: + resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} + + fast-content-type-parse@2.0.1: + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-equals@3.0.3: + resolution: {integrity: sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2471,12 +4104,44 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-json-stringify@5.16.1: + resolution: {integrity: sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==} + fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@2.4.0: + resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastify-plugin@4.5.1: + resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} + + fastify@4.29.0: + resolution: {integrity: sha512-MaaUHUGcCgC8fXQDsDtioaCcag1fmPJ9j64vAKunqZF4aSub040ZGi/ag8NGE2714yREPOKZuHCfpPzuUD3UQQ==} + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.4.3: resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} peerDependencies: @@ -2485,17 +4150,68 @@ packages: picomatch: optional: true + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + figures@4.0.1: + resolution: {integrity: sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==} + engines: {node: '>=12'} + + figures@5.0.0: + resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} + engines: {node: '>=14'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + file-type@18.7.0: + resolution: {integrity: sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==} + engines: {node: '>=14.16'} + file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filename-reserved-regex@3.0.0: + resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + filenamify@5.1.1: + resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==} + engines: {node: '>=12.20'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + filter-obj@3.0.0: + resolution: {integrity: sha512-oQZM+QmVni8MsYzcq9lgTHD/qeLqaG8XaOPOW7dzuSafVxSUlH1+1ZDefj2OD9f2XsmG5lFl2Euc9NI4jgwFWg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-my-way@8.2.2: + resolution: {integrity: sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==} + engines: {node: '>=14'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -2504,6 +4220,14 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -2511,10 +4235,53 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + flush-write-stream@2.0.0: + resolution: {integrity: sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==} + + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + + folder-walker@3.2.0: + resolution: {integrity: sha512-VjAQdSLsl6AkpZNyrQJfO7BXLo4chnStqb055bumZMbRUPpVuPN3a4ktsnRCmrFZjtMlYLkyXiR5rAs4WOpC4Q==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from2-array@0.0.4: + resolution: {integrity: sha512-0G0cAp7sYLobH7ALsr835x98PU/YeVF7wlwxdWbCUaea7wsa7lJfKZUAo6p2YZGZ8F94luCuqHZS3JtFER6uPg==} + + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -2523,6 +4290,13 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2536,16 +4310,82 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + fuzzy@0.1.3: + resolution: {integrity: sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==} + engines: {node: '>= 0.6.0'} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + get-amd-module-type@5.0.1: + resolution: {integrity: sha512-jb65zDeHyDjFR1loOVk0HQGM5WNwoGB8aLWy3LKCieMKol0/ProHkhO2X1JxojuN10vbz1qNn09MJ7tNp7qMzw==} + engines: {node: '>=14'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-name@2.2.0: + resolution: {integrity: sha512-LmCKVxioe63Fy6KDAQ/mmCSOSSRUE/x4zdrMD+7dU8quF3bGpzvP8mOmq4Dgce3nzU9AgkVDotucNOOg7c27BQ==} + engines: {node: '>= 12.0.0'} + + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-port@5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} + get-port@6.1.2: + resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + 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'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + gh-release-fetch@4.0.3: + resolution: {integrity: sha512-TOiP1nwLsH5shG85Yt6v6Kjq5JU/44jXyEpbcfPgmj3C829yeXIlx9nAEwQRaxtRF3SJinn2lz7XUkfG9W/U4g==} + engines: {node: ^14.18.0 || ^16.13.0 || >=18.0.0} + + git-repo-info@2.1.1: + resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} + engines: {node: '>= 4.0'} + + gitconfiglocal@2.1.0: + resolution: {integrity: sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2561,6 +4401,19 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -2573,20 +4426,102 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + gonzales-pe@4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + h3@1.15.1: + resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-own-prop@2.0.0: + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + hot-shots@10.2.1: + resolution: {integrity: sha512-tmjcyZkG/qADhcdC7UjAp8D7v7W2DOYFgaZ48fYMuayMQmVVUg8fntKmrjes/b40ef6yZ+qt1lB8kuEDfLC4zw==} + engines: {node: '>=10.0.0'} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-middleware@2.0.7: + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -2594,14 +4529,40 @@ packages: human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + image-meta@0.2.1: + resolution: {integrity: sha512-K6acvFaelNxx8wc2VjbIzXKDVB0Khs0QT35U6NkGfTdCmjLNcO2945m7RFNR9/RPVFm48hq7QPzK8uGH18HCGw==} + imagetools-core@7.0.0: resolution: {integrity: sha512-6fYbD7u4VIOt6fqKrOlbF77JXgUVyUmEJIPlfYVTuR/S2Ig9cX3gukGiLEU0aSetcfE7CYnhLTPtTEu4mLwhCw==} engines: {node: '>=18.0.0'} @@ -2617,12 +4578,74 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + index-to-position@1.1.0: + resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} + engines: {node: '>=18'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer-autocomplete-prompt@1.4.0: + resolution: {integrity: sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==} + engines: {node: '>=10'} + peerDependencies: + inquirer: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + inspect-with-kind@1.0.5: + resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipx@2.1.0: + resolution: {integrity: sha512-AVnPGXJ8L41vjd11Z4akIF2yd14636Klxul3tBySxHA6PKfCOQPxBDkCFK5zcWh0z/keR6toh1eg8qzdBVUgdA==} + hasBin: true + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2631,13 +4654,39 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-in-ci@1.0.0: + resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==} + engines: {node: '>=18'} + hasBin: true + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-installed-globally@1.0.0: + resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} + engines: {node: '>=18'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-npm@6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2646,26 +4695,106 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-obj@4.1.0: + 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==} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-url-superb@4.0.0: + resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} + engines: {node: '>=10'} + + is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + iserror@0.0.2: + resolution: {integrity: sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -2677,18 +4806,57 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-ref-resolver@1.0.1: + resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + junk@4.0.1: + resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} + engines: {node: '>=12.20'} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + jwt-decode@4.0.0: + resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} + engines: {node: '>=18'} + + keep-func-props@4.0.1: + resolution: {integrity: sha512-87ftOIICfdww3SxR5P1veq3ThBNyRPG0JGL//oaR08v0k2yTicEIHd7s0GqSJfQvlb+ybC3GiDepOweo0LDhvw==} + engines: {node: '>=12.20.0'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -2696,10 +4864,37 @@ packages: known-css-properties@0.34.0: resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + + ky@1.8.0: + resolution: {integrity: sha512-DoKGmG27nT8t/1F9gV8vNzggJ3mLAyD49J8tTMWHeZvS8qLc7GlyTieicYtFzvDznMe/q2u38peOjkWc5/pjvw==} + engines: {node: '>=18'} + + lambda-local@2.2.0: + resolution: {integrity: sha512-bPcgpIXbHnVGfI/omZIlgucDqlf4LrsunwoKue5JdZeGybt8L6KyJz2Zu19ffuZwIwLj2NAI2ZyaqNT6/cetcg==} + engines: {node: '>=8'} + hasBin: true + + latest-version@9.0.0: + resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} + engines: {node: '>=18'} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + light-my-request@5.14.0: + resolution: {integrity: sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==} + lightningcss-darwin-arm64@1.24.1: resolution: {integrity: sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==} engines: {node: '>= 12.0.0'} @@ -2762,6 +4957,13 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + listhen@1.9.0: + resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} + hasBin: true + local-access@1.1.0: resolution: {integrity: sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==} engines: {node: '>=6'} @@ -2777,37 +4979,213 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isempty@4.4.0: + resolution: {integrity: sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash.transform@4.6.0: + resolution: {integrity: sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==} + + lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-process-errors@8.0.0: + resolution: {integrity: sha512-+SNGqNC1gCMJfhwYzAHr/YgNT/ZJc+V2nCkvtPnjrENMeCe+B/jgShBW0lmWoh6uVV2edFAPc/IUOkDdsjTbTg==} + engines: {node: '>=12.20.0'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} + engines: {node: '>= 12.0.0'} + loupe@3.1.3: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + luxon@3.6.1: + resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} + engines: {node: '>=12'} + + macos-release@3.3.0: + resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + map-obj@5.0.2: + resolution: {integrity: sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + maxstache-stream@1.0.4: + resolution: {integrity: sha512-v8qlfPN0pSp7bdSoLo1NTjG43GXGqk5W2NWFnOCq2GlmFFqebGzPCjLKSbShuqIOVorOtZSAy7O/S1OCCRONUw==} + + maxstache@1.0.7: + resolution: {integrity: sha512-53ZBxHrZM+W//5AcRVewiLpDunHnucfdzZUGz54Fnvo4tE+J3p8EL66kBrs2UhBXvYKTWckWYYWBqJqoTcenqg==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micro-api-client@3.3.0: + resolution: {integrity: sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==} + + micro-memoize@4.1.3: + resolution: {integrity: sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -2820,23 +5198,65 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + minizlib@3.0.2: resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + module-definition@5.0.1: + resolution: {integrity: sha512-kvw3B4G19IXk+BOXnYq/D/VeO9qfHaapMeuS7w7sNUqmGaA6hywdFHMi+VWeR9wUScXM7XjoryTffCZ5B0/8IA==} + engines: {node: '>=14'} + hasBin: true + + moize@6.1.6: + resolution: {integrity: sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q==} + + move-file@3.1.0: + resolution: {integrity: sha512-4aE3U7CCBWgrQlQDMq8da4woBWDGHioJFiOZ8Ie6Yq2uwYQ9V2kGhTz4x3u6Wc+OU17nw0yc3rJ/lQ4jIiPe3A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -2845,24 +5265,79 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + multiparty@4.2.3: + resolution: {integrity: sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==} + engines: {node: '>= 0.10'} + mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanospinner@1.2.2: + resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} + + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + nested-error-stacks@2.1.1: + resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} + + netlify-cli@20.0.0: + resolution: {integrity: sha512-A7A4C9cVtolZzSx8X7LChDQzcCIqHvK4kqmuOYu5zmCKwpJJaASXagMW1pUTpvZvrJlBAIycv17rAEOtPdHUJQ==} + engines: {node: '>=18.14.0'} + hasBin: true + + netlify-redirector@0.5.0: + resolution: {integrity: sha512-4zdzIP+6muqPCuE8avnrgDJ6KW/2+UpHTRcTbMXCIRxiRmyrX+IZ4WSJGZdHPWF3WmQpXpy603XxecZ9iygN7w==} + + netlify@13.3.4: + resolution: {integrity: sha512-+Uh1YkU5EjbvqqmolVy/N8RlejDg2zvSqnpbpdaTAkgpIXgeIhCkUep0SAWa2UCEIf1Mlz1XHWRmQJaSgIZbGw==} + engines: {node: ^14.16.0 || >=16.0.0} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-abi@3.74.0: + resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} + engines: {node: '>=10'} + + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -2872,22 +5347,137 @@ packages: encoding: optional: true + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + node-gyp-build@4.8.0: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true + node-mock-http@1.0.0: + resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + + node-source-walk@6.0.2: + resolution: {integrity: sha512-jn9vOIK/nfqoFCcpK89/VCVaLg1IHE6UVfDOzvqmANaJ/rWCTEdH8RZ1V278nv2jr36BJdyQXIAavBLXpzdlag==} + engines: {node: '>=14'} + + node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + nopt@8.0.0: resolution: {integrity: sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + 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==} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} + optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-name@5.1.0: + resolution: {integrity: sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -2895,10 +5485,42 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-event@4.2.0: + resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} + engines: {node: '>=8'} + + p-event@5.0.1: + resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-event@6.0.1: + resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} + engines: {node: '>=16.17'} + + p-every@2.0.0: + resolution: {integrity: sha512-MCz9DqD5opPC48Zsd+BHm56O/HfhYIQQtupfDzhXoVgQdg/Ux4F8/JcdRuQ+arq7zD5fB6zP3axbH3d9Nr8dlw==} + engines: {node: '>=8'} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} + p-filter@3.0.0: + resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-filter@4.1.0: + resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} + engines: {node: '>=18'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -2907,6 +5529,10 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -2915,24 +5541,92 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} + p-map@5.5.0: + resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} + engines: {node: '>=12'} + + p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + engines: {node: '>=18'} + + p-reduce@3.0.0: + resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} + engines: {node: '>=12'} + + p-retry@5.1.2: + resolution: {integrity: sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-timeout@5.1.0: + resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} + engines: {node: '>=12'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + p-wait-for@5.0.2: + resolution: {integrity: sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==} + engines: {node: '>=12'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-json@10.0.1: + resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} + engines: {node: '>=18'} + package-manager-detector@0.2.8: resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} + parallel-transform@1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-github-url@1.0.3: + resolution: {integrity: sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==} + engines: {node: '>= 0.10'} + hasBin: true + + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + parse-ms@3.0.0: + resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} + engines: {node: '>=12'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -2940,10 +5634,22 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -2951,6 +5657,9 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -2958,6 +5667,13 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -2965,6 +5681,13 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + peek-readable@5.4.2: + resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} + engines: {node: '>=14.16'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2980,6 +5703,23 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + + pino@9.6.0: + resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} + hasBin: true + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + playwright-core@1.44.1: resolution: {integrity: sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==} engines: {node: '>=16'} @@ -3022,13 +5762,33 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} + postcss-values-parser@6.0.2: + resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} + engines: {node: '>=10'} + peerDependencies: + postcss: ^8.2.9 + postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + hasBin: true + + precinct@11.0.5: + resolution: {integrity: sha512-oHSWLC8cL/0znFhvln26D14KfCQFFn4KOLSw6hmLhd+LQ2SKt9Ljm89but76Pc7flM9Ty1TnXyrA2u16MfRV3w==} + engines: {node: ^14.14.0 || >=16.0.0} + hasBin: true + + precond@0.2.3: + resolution: {integrity: sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==} + engines: {node: '>= 0.6'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} prettier-plugin-svelte@3.2.7: resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} @@ -3046,29 +5806,165 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-ms@8.0.0: + resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} + engines: {node: '>=14.16'} + + prettyjson@1.2.5: + resolution: {integrity: sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==} + 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==} + + process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + + process-warning@4.0.1: + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + ps-list@8.1.1: + resolution: {integrity: sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + publint@0.3.0: resolution: {integrity: sha512-B7efom03c86OGqN1Jp2mDduiamb5apEuolvlbUeHaa14geCzJKz35oPIiKoXPMvM3tGABEZ1oLfY6xJNvOh69g==} engines: {node: '>=18'} hasBin: true + pump@1.0.3: + resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pupa@3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + quote-unquote@1.0.0: + resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + random-bytes@1.0.0: + resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} + engines: {node: '>= 0.8'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-pkg-up@9.1.0: + resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + read-pkg@7.1.0: + resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} + engines: {node: '>=12.20'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readable-web-to-node-stream@3.0.4: + resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} + engines: {node: '>=8'} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + readdirp@4.0.1: resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} engines: {node: '>= 14.16.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -3076,6 +5972,38 @@ packages: resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==} engines: {node: '>=8'} + registry-auth-token@5.1.0: + resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + engines: {node: '>=14'} + + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-package-name@2.0.1: + resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3091,43 +6019,135 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + ret@0.4.3: + resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==} + engines: {node: '>=10'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rollup@4.30.1: resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-json-stringify@1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + + safe-regex2@3.1.0: + resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + + seek-bzip@1.0.6: + resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} + hasBin: true + semiver@1.1.0: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} engines: {node: '>=6'} + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + semver@7.7.1: resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + server-side-dep@file:packages/adapter-cloudflare/test/apps/pages/server-side-dep: resolution: {directory: packages/adapter-cloudflare/test/apps/pages/server-side-dep, type: directory} 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-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + sharp@0.33.5: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3140,13 +6160,38 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -3163,10 +6208,32 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + + sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + + sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -3174,15 +6241,51 @@ packages: spawndamnit@3.0.1: resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + split2@1.1.1: + resolution: {integrity: sha512-cfurE2q8LamExY+lJ9Ex3ZfBwqAPduzOKVscPDXNCLLMvyaeD3DTz1yk7fVIs6Chco+12XeD0BB6HEoYzPYbXA==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + stacktracey@2.1.8: resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} @@ -3190,6 +6293,9 @@ packages: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} + streamx@2.22.0: + resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -3198,6 +6304,19 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi-control-characters@2.0.0: + resolution: {integrity: sha512-Q0/k5orrVGeaOlIOUn1gybGU0IcAbgHQT1faLo5hik4DqClKVSaka5xOhNNoRgtfztHVxCYxi7j71mrWom0bIw==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3210,18 +6329,52 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-dirs@3.0.0: + resolution: {integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-outer@2.0.0: + resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + strtok3@7.1.1: + resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==} + engines: {node: '>=16'} + + stubborn-fs@1.2.5: + resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3295,21 +6448,85 @@ packages: resolution: {integrity: sha512-DUu3e5tQDO+PtKffjqJ548YfeKtw2Rqc9/+nlP26DZ0AopWTJNylkNnTOP/wcgIt1JSnovyISxEZ/lDR1OhbOw==} engines: {node: '>=18'} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tar-fs@2.1.2: + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + + tar-fs@3.0.8: + resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} + terminal-link@3.0.0: + resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} + engines: {node: '>=12'} + + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + + through2-filter@4.0.0: + resolution: {integrity: sha512-P8IpQL19bSdXqGLvLdbidYRxERXgHEXGcQofPxbLpPkqS1ieOrUrocdYRTNv8YwSukaDJWr71s6F2kZ3bvgEhA==} + engines: {node: '>= 6'} + + through2-map@4.0.0: + resolution: {integrity: sha512-+rpmDB5yckiBGEuqJSsWYWMs9e1zdksypDKvByysEyN+knhsPXV9Z6O2mA9meczIa6AON7bi2G3xWk5T8UG4zQ==} + engines: {node: '>= 6'} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -3336,14 +6553,39 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toad-cache@3.7.0: + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} + engines: {node: '>=12'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + token-types@5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + tomlify-j0.4@3.0.0: + resolution: {integrity: sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -3351,6 +6593,14 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + trim-repeated@2.0.0: + resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} + engines: {node: '>=12'} + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + trouter@4.0.0: resolution: {integrity: sha512-bwwr76BThfiVwAFZqks5cJ+VoKNM3/2Yg1ZwJslkdmAUQ6S0UNoCoGYFDxdw+u1skfexggdmD2p35kW5Td4Cug==} engines: {node: '>=6'} @@ -3372,13 +6622,59 @@ packages: peerDependencies: typescript: '>=4.0.0' + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@4.39.1: + resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + typescript-eslint@8.26.0: resolution: {integrity: sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3394,6 +6690,20 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + uid-safe@2.1.5: + resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} + engines: {node: '>= 0.8'} + + ulid@2.3.0: + resolution: {integrity: sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==} + hasBin: true + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -3404,42 +6714,165 @@ packages: unenv@2.0.0-rc.14: resolution: {integrity: sha512-od496pShMen7nOy5VmVJCnq8rptd45vh6Nx/r2iPbrba6pa6p+tS2ywuIHRZ/OBvSbQZB0kWvpO9XBNVFXHD3Q==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} - urlpattern-polyfill@8.0.2: - resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + universal-user-agent@7.0.2: + resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true + unix-dgram@2.0.6: + resolution: {integrity: sha512-AURroAsb73BZ6CdAyMrTk/hYKNj3DuYYEuOaB8bYMOHGKupRNScw90Q5C71tWJc3uE7dIeXRyuwN0xLLq3vDTg==} + engines: {node: '>=0.10.48'} - vite-imagetools@7.0.1: - resolution: {integrity: sha512-23jnLhkTH0HR9Vd9LxMYnajOLeo0RJNEAHhtlsQP6kfPuOBoTzt54rWbEWB9jmhEXAOflLQpM+FrmilVPAoyGA==} - engines: {node: '>=18.0.0'} + unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} - vite-node@3.0.5: - resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - vite@6.0.11: - resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true + unstorage@1.15.0: + resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==} peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + + update-notifier@7.3.1: + resolution: {integrity: sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==} + engines: {node: '>=18'} + + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@11.0.5: + resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@4.0.0: + resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-imagetools@7.0.1: + resolution: {integrity: sha512-23jnLhkTH0HR9Vd9LxMYnajOLeo0RJNEAHhtlsQP6kfPuOBoTzt54rWbEWB9jmhEXAOflLQpM+FrmilVPAoyGA==} + engines: {node: '>=18.0.0'} + + vite-node@3.0.5: + resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.0.11: + resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' @@ -3507,12 +6940,27 @@ packages: jsdom: optional: true + wait-port@1.1.0: + resolution: {integrity: sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==} + engines: {node: '>=10'} + hasBin: true + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + when-exit@2.1.4: + resolution: {integrity: sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3523,6 +6971,25 @@ packages: engines: {node: '>=8'} hasBin: true + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + widest-line@5.0.0: + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + windows-release@5.1.1: + resolution: {integrity: sha512-NMD00arvqcq2nwqc5Q6KtrSRHK+fVD31erE5FEMahAw5PmVCgD7MUXodq3pdZSUkqA9Cda2iWx6s1XYwiJWRmw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} + engines: {node: '>= 12.0.0'} + + winston@3.17.0: + resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} + engines: {node: '>= 12.0.0'} + workerd@1.20250310.0: resolution: {integrity: sha512-bAaZ9Bmts3mArbIrXYAtr+ZRsAJAAUEsCtvwfBavIYXaZ5sgdEOJBEiBbvsHp6CsVObegOM85tIWpYLpbTxQrQ==} engines: {node: '>=16'} @@ -3542,6 +7009,10 @@ packages: '@cloudflare/workers-types': optional: true + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -3550,6 +7021,17 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -3562,6 +7044,38 @@ packages: utf-8-validate: optional: true + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + + xss@1.0.15: + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} + engines: {node: '>= 0.10.0'} + hasBin: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} @@ -3570,19 +7084,54 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + youch@3.2.3: resolution: {integrity: sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==} zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} @@ -3592,10 +7141,64 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + '@babel/runtime@7.26.10': dependencies: regenerator-runtime: 0.14.1 + '@babel/types@7.26.10': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bugsnag/browser@7.25.0': + dependencies: + '@bugsnag/core': 7.25.0 + + '@bugsnag/core@7.25.0': + dependencies: + '@bugsnag/cuid': 3.2.1 + '@bugsnag/safe-json-stringify': 6.0.0 + error-stack-parser: 2.1.4 + iserror: 0.0.2 + stack-generator: 2.0.10 + + '@bugsnag/cuid@3.2.1': {} + + '@bugsnag/js@7.25.0': + dependencies: + '@bugsnag/browser': 7.25.0 + '@bugsnag/node': 7.25.0 + + '@bugsnag/node@7.25.0': + dependencies: + '@bugsnag/core': 7.25.0 + byline: 5.0.0 + error-stack-parser: 2.1.4 + iserror: 0.0.2 + pump: 3.0.2 + stack-generator: 2.0.10 + + '@bugsnag/safe-json-stringify@6.0.0': {} + '@changesets/apply-release-plan@7.0.7': dependencies: '@changesets/config': 3.0.5 @@ -3772,87 +7375,238 @@ snapshots: '@cloudflare/workers-types@4.20250312.0': {} + '@colors/colors@1.6.0': {} + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@dabh/diagnostics@2.0.3': + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + + '@dependents/detective-less@4.1.0': + dependencies: + gonzales-pe: 4.3.0 + node-source-walk: 6.0.2 + '@emnapi/runtime@1.2.0': dependencies: tslib: 2.6.2 optional: true + '@esbuild/aix-ppc64@0.19.11': + optional: true + + '@esbuild/aix-ppc64@0.21.2': + optional: true + '@esbuild/aix-ppc64@0.24.2': optional: true + '@esbuild/android-arm64@0.19.11': + optional: true + + '@esbuild/android-arm64@0.21.2': + optional: true + '@esbuild/android-arm64@0.24.2': optional: true + '@esbuild/android-arm@0.19.11': + optional: true + + '@esbuild/android-arm@0.21.2': + optional: true + '@esbuild/android-arm@0.24.2': optional: true + '@esbuild/android-x64@0.19.11': + optional: true + + '@esbuild/android-x64@0.21.2': + optional: true + '@esbuild/android-x64@0.24.2': optional: true + '@esbuild/darwin-arm64@0.19.11': + optional: true + + '@esbuild/darwin-arm64@0.21.2': + optional: true + '@esbuild/darwin-arm64@0.24.2': optional: true + '@esbuild/darwin-x64@0.19.11': + optional: true + + '@esbuild/darwin-x64@0.21.2': + optional: true + '@esbuild/darwin-x64@0.24.2': optional: true + '@esbuild/freebsd-arm64@0.19.11': + optional: true + + '@esbuild/freebsd-arm64@0.21.2': + optional: true + '@esbuild/freebsd-arm64@0.24.2': optional: true + '@esbuild/freebsd-x64@0.19.11': + optional: true + + '@esbuild/freebsd-x64@0.21.2': + optional: true + '@esbuild/freebsd-x64@0.24.2': optional: true + '@esbuild/linux-arm64@0.19.11': + optional: true + + '@esbuild/linux-arm64@0.21.2': + optional: true + '@esbuild/linux-arm64@0.24.2': optional: true + '@esbuild/linux-arm@0.19.11': + optional: true + + '@esbuild/linux-arm@0.21.2': + optional: true + '@esbuild/linux-arm@0.24.2': optional: true + '@esbuild/linux-ia32@0.19.11': + optional: true + + '@esbuild/linux-ia32@0.21.2': + optional: true + '@esbuild/linux-ia32@0.24.2': optional: true + '@esbuild/linux-loong64@0.19.11': + optional: true + + '@esbuild/linux-loong64@0.21.2': + optional: true + '@esbuild/linux-loong64@0.24.2': optional: true + '@esbuild/linux-mips64el@0.19.11': + optional: true + + '@esbuild/linux-mips64el@0.21.2': + optional: true + '@esbuild/linux-mips64el@0.24.2': optional: true + '@esbuild/linux-ppc64@0.19.11': + optional: true + + '@esbuild/linux-ppc64@0.21.2': + optional: true + '@esbuild/linux-ppc64@0.24.2': optional: true + '@esbuild/linux-riscv64@0.19.11': + optional: true + + '@esbuild/linux-riscv64@0.21.2': + optional: true + '@esbuild/linux-riscv64@0.24.2': optional: true + '@esbuild/linux-s390x@0.19.11': + optional: true + + '@esbuild/linux-s390x@0.21.2': + optional: true + '@esbuild/linux-s390x@0.24.2': optional: true + '@esbuild/linux-x64@0.19.11': + optional: true + + '@esbuild/linux-x64@0.21.2': + optional: true + '@esbuild/linux-x64@0.24.2': optional: true '@esbuild/netbsd-arm64@0.24.2': optional: true + '@esbuild/netbsd-x64@0.19.11': + optional: true + + '@esbuild/netbsd-x64@0.21.2': + optional: true + '@esbuild/netbsd-x64@0.24.2': optional: true '@esbuild/openbsd-arm64@0.24.2': optional: true + '@esbuild/openbsd-x64@0.19.11': + optional: true + + '@esbuild/openbsd-x64@0.21.2': + optional: true + '@esbuild/openbsd-x64@0.24.2': optional: true + '@esbuild/sunos-x64@0.19.11': + optional: true + + '@esbuild/sunos-x64@0.21.2': + optional: true + '@esbuild/sunos-x64@0.24.2': optional: true + '@esbuild/win32-arm64@0.19.11': + optional: true + + '@esbuild/win32-arm64@0.21.2': + optional: true + '@esbuild/win32-arm64@0.24.2': optional: true + '@esbuild/win32-ia32@0.19.11': + optional: true + + '@esbuild/win32-ia32@0.21.2': + optional: true + '@esbuild/win32-ia32@0.24.2': optional: true + '@esbuild/win32-x64@0.19.11': + optional: true + + '@esbuild/win32-x64@0.21.2': + optional: true + '@esbuild/win32-x64@0.24.2': optional: true @@ -3866,7 +7620,7 @@ snapshots: '@eslint/config-array@0.17.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3874,7 +7628,7 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -3889,20 +7643,57 @@ snapshots: '@eslint/object-schema@2.1.4': {} - '@fastify/busboy@2.1.1': {} + '@fastify/accept-negotiator@1.1.0': {} - '@fontsource/libre-barcode-128-text@5.1.0': {} + '@fastify/ajv-compiler@3.6.0': + dependencies: + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + fast-uri: 2.4.0 - '@humanwhocodes/module-importer@1.0.1': {} + '@fastify/busboy@2.1.1': {} - '@humanwhocodes/retry@0.3.0': {} + '@fastify/error@3.4.1': {} - '@iarna/toml@2.2.5': {} + '@fastify/fast-json-stringify-compiler@4.3.0': + dependencies: + fast-json-stringify: 5.16.1 - '@img/sharp-darwin-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - optional: true + '@fastify/merge-json-schemas@0.1.1': + dependencies: + fast-deep-equal: 3.1.3 + + '@fastify/send@2.1.0': + dependencies: + '@lukeed/ms': 2.0.2 + escape-html: 1.0.3 + fast-decode-uri-component: 1.0.1 + http-errors: 2.0.0 + mime: 3.0.0 + + '@fastify/static@7.0.4': + dependencies: + '@fastify/accept-negotiator': 1.1.0 + '@fastify/send': 2.1.0 + content-disposition: 0.5.4 + fastify-plugin: 4.5.1 + fastq: 1.17.1 + glob: 10.4.5 + + '@fontsource/libre-barcode-128-text@5.1.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/momoa@2.0.4': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@iarna/toml@2.2.5': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true '@img/sharp-darwin-x64@0.33.5': optionalDependencies: @@ -3974,6 +7765,8 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@import-maps/resolve@1.0.1': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -3987,6 +7780,14 @@ snapshots: dependencies: minipass: 7.1.2 + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.50 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4014,6 +7815,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@lukeed/ms@2.0.2': {} + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.26.10 @@ -4030,6 +7833,21 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 + '@mapbox/node-pre-gyp@1.0.11(supports-color@9.4.0)': + dependencies: + detect-libc: 2.0.3 + https-proxy-agent: 5.0.1(supports-color@9.4.0) + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.7.1 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + '@mapbox/node-pre-gyp@2.0.0': dependencies: consola: 3.2.3 @@ -4043,19 +7861,365 @@ snapshots: - encoding - supports-color + '@netlify/binary-info@1.0.0': {} + + '@netlify/blobs@8.1.2': {} + + '@netlify/build-info@9.0.2': + dependencies: + '@bugsnag/js': 7.25.0 + '@iarna/toml': 2.2.5 + dot-prop: 7.2.0 + find-up: 6.3.0 + minimatch: 9.0.5 + read-pkg: 7.1.0 + semver: 7.7.1 + yaml: 2.7.1 + yargs: 17.7.2 + + '@netlify/build@30.1.1(@opentelemetry/api@1.8.0)(@types/node@18.19.50)(picomatch@4.0.2)(rollup@4.30.1)': + dependencies: + '@bugsnag/js': 7.25.0 + '@netlify/blobs': 8.1.2 + '@netlify/cache-utils': 5.2.0 + '@netlify/config': 21.0.7 + '@netlify/edge-bundler': 12.4.0(rollup@4.30.1)(supports-color@9.4.0) + '@netlify/framework-info': 9.9.3 + '@netlify/functions-utils': 5.3.14(rollup@4.30.1)(supports-color@9.4.0) + '@netlify/git-utils': 5.2.0 + '@netlify/opentelemetry-utils': 1.3.1(@opentelemetry/api@1.8.0) + '@netlify/plugins-list': 6.80.0 + '@netlify/run-utils': 5.2.0 + '@netlify/zip-it-and-ship-it': 10.0.4(rollup@4.30.1)(supports-color@9.4.0) + '@opentelemetry/api': 1.8.0 + '@sindresorhus/slugify': 2.2.1 + ansi-escapes: 6.2.1 + chalk: 5.4.1 + clean-stack: 5.2.0 + execa: 7.2.0 + fdir: 6.4.3(picomatch@4.0.2) + figures: 5.0.0 + filter-obj: 5.1.0 + got: 12.6.1 + hot-shots: 10.2.1 + indent-string: 5.0.0 + is-plain-obj: 4.1.0 + js-yaml: 4.1.0 + keep-func-props: 4.0.1 + locate-path: 7.2.0 + log-process-errors: 8.0.0 + map-obj: 5.0.2 + memoize-one: 6.0.0 + minimatch: 9.0.5 + node-fetch: 3.3.2 + os-name: 5.1.0 + p-event: 6.0.1 + p-every: 2.0.0 + p-filter: 4.1.0 + p-locate: 6.0.0 + p-map: 7.0.3 + p-reduce: 3.0.0 + path-exists: 5.0.0 + path-type: 5.0.0 + pkg-dir: 7.0.0 + pretty-ms: 8.0.0 + ps-list: 8.1.1 + read-package-up: 11.0.0 + readdirp: 3.6.0 + resolve: 2.0.0-next.5 + rfdc: 1.4.1 + safe-json-stringify: 1.2.0 + semver: 7.7.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + supports-color: 9.4.0 + terminal-link: 3.0.0 + ts-node: 10.9.2(@types/node@18.19.50)(typescript@5.6.3) + typescript: 5.6.3 + uuid: 9.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - encoding + - picomatch + - rollup + + '@netlify/cache-utils@5.2.0': + dependencies: + cpy: 9.0.1 + get-stream: 6.0.1 + globby: 13.2.2 + junk: 4.0.1 + locate-path: 7.2.0 + move-file: 3.1.0 + path-exists: 5.0.0 + readdirp: 3.6.0 + + '@netlify/config@21.0.7': + dependencies: + '@iarna/toml': 2.2.5 + '@netlify/headers-parser': 8.0.0 + '@netlify/redirect-parser': 14.5.1 + chalk: 5.4.1 + cron-parser: 4.9.0 + deepmerge: 4.3.1 + dot-prop: 7.2.0 + execa: 7.2.0 + fast-safe-stringify: 2.1.1 + figures: 5.0.0 + filter-obj: 5.1.0 + find-up: 6.3.0 + indent-string: 5.0.0 + is-plain-obj: 4.1.0 + js-yaml: 4.1.0 + map-obj: 5.0.2 + netlify: 13.3.4 + node-fetch: 3.3.2 + omit.js: 2.0.2 + p-locate: 6.0.0 + path-type: 5.0.0 + tomlify-j0.4: 3.0.0 + validate-npm-package-name: 4.0.0 + yargs: 17.7.2 + + '@netlify/edge-bundler@12.4.0(rollup@4.30.1)(supports-color@9.4.0)': + dependencies: + '@import-maps/resolve': 1.0.1 + '@vercel/nft': 0.27.7(rollup@4.30.1)(supports-color@9.4.0) + ajv: 8.17.1 + ajv-errors: 3.0.0(ajv@8.17.1) + better-ajv-errors: 1.2.0(ajv@8.17.1) + common-path-prefix: 3.0.0 + env-paths: 3.0.0 + esbuild: 0.21.2 + execa: 7.2.0 + find-up: 6.3.0 + get-package-name: 2.2.0 + get-port: 6.1.2 + is-path-inside: 4.0.0 + node-fetch: 3.3.2 + node-stream-zip: 1.15.0 + p-retry: 5.1.2 + p-wait-for: 5.0.2 + path-key: 4.0.0 + semver: 7.7.1 + tmp-promise: 3.0.3 + urlpattern-polyfill: 8.0.2 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + '@netlify/edge-functions@2.11.1': {} + '@netlify/framework-info@9.9.3': + dependencies: + ajv: 8.17.1 + filter-obj: 5.1.0 + find-up: 6.3.0 + is-plain-obj: 4.1.0 + locate-path: 7.2.0 + p-filter: 4.1.0 + p-locate: 6.0.0 + read-pkg-up: 9.1.0 + semver: 7.7.1 + + '@netlify/functions-utils@5.3.14(rollup@4.30.1)(supports-color@9.4.0)': + dependencies: + '@netlify/zip-it-and-ship-it': 10.0.5(rollup@4.30.1)(supports-color@9.4.0) + cpy: 9.0.1 + path-exists: 5.0.0 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + '@netlify/functions@3.0.0': dependencies: '@netlify/serverless-functions-api': 1.30.1 + '@netlify/git-utils@5.2.0': + dependencies: + execa: 6.1.0 + map-obj: 5.0.2 + micromatch: 4.0.8 + moize: 6.1.6 + path-exists: 5.0.0 + + '@netlify/headers-parser@8.0.0': + dependencies: + '@iarna/toml': 2.2.5 + escape-string-regexp: 5.0.0 + fast-safe-stringify: 2.1.1 + is-plain-obj: 4.1.0 + map-obj: 5.0.2 + path-exists: 5.0.0 + + '@netlify/local-functions-proxy-darwin-arm64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-darwin-x64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-freebsd-arm64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-freebsd-x64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-linux-arm64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-linux-arm@1.1.1': + optional: true + + '@netlify/local-functions-proxy-linux-ia32@1.1.1': + optional: true + + '@netlify/local-functions-proxy-linux-ppc64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-linux-x64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-openbsd-x64@1.1.1': + optional: true + + '@netlify/local-functions-proxy-win32-ia32@1.1.1': + optional: true + + '@netlify/local-functions-proxy-win32-x64@1.1.1': + optional: true + + '@netlify/local-functions-proxy@2.0.3': + optionalDependencies: + '@netlify/local-functions-proxy-darwin-arm64': 1.1.1 + '@netlify/local-functions-proxy-darwin-x64': 1.1.1 + '@netlify/local-functions-proxy-freebsd-arm64': 1.1.1 + '@netlify/local-functions-proxy-freebsd-x64': 1.1.1 + '@netlify/local-functions-proxy-linux-arm': 1.1.1 + '@netlify/local-functions-proxy-linux-arm64': 1.1.1 + '@netlify/local-functions-proxy-linux-ia32': 1.1.1 + '@netlify/local-functions-proxy-linux-ppc64': 1.1.1 + '@netlify/local-functions-proxy-linux-x64': 1.1.1 + '@netlify/local-functions-proxy-openbsd-x64': 1.1.1 + '@netlify/local-functions-proxy-win32-ia32': 1.1.1 + '@netlify/local-functions-proxy-win32-x64': 1.1.1 + '@netlify/node-cookies@0.1.0': {} + '@netlify/open-api@2.36.0': {} + + '@netlify/opentelemetry-utils@1.3.1(@opentelemetry/api@1.8.0)': + dependencies: + '@opentelemetry/api': 1.8.0 + + '@netlify/plugins-list@6.80.0': {} + + '@netlify/redirect-parser@14.5.1': + dependencies: + '@iarna/toml': 2.2.5 + fast-safe-stringify: 2.1.1 + filter-obj: 5.1.0 + is-plain-obj: 4.1.0 + path-exists: 5.0.0 + + '@netlify/run-utils@5.2.0': + dependencies: + execa: 6.1.0 + '@netlify/serverless-functions-api@1.30.1': dependencies: '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 + '@netlify/serverless-functions-api@1.37.0': {} + + '@netlify/zip-it-and-ship-it@10.0.4(rollup@4.30.1)(supports-color@9.4.0)': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.26.10 + '@netlify/binary-info': 1.0.0 + '@netlify/serverless-functions-api': 1.37.0 + '@vercel/nft': 0.27.7(rollup@4.30.1)(supports-color@9.4.0) + archiver: 7.0.1 + common-path-prefix: 3.0.0 + cp-file: 10.0.0 + es-module-lexer: 1.6.0 + esbuild: 0.19.11 + execa: 7.2.0 + fast-glob: 3.3.3 + filter-obj: 5.1.0 + find-up: 6.3.0 + glob: 8.1.0 + is-builtin-module: 3.2.1 + is-path-inside: 4.0.0 + junk: 4.0.1 + locate-path: 7.2.0 + merge-options: 3.0.4 + minimatch: 9.0.5 + normalize-path: 3.0.0 + p-map: 7.0.3 + path-exists: 5.0.0 + precinct: 11.0.5(supports-color@9.4.0) + require-package-name: 2.0.1 + resolve: 2.0.0-next.5 + semver: 7.7.1 + tmp-promise: 3.0.3 + toml: 3.0.0 + unixify: 1.0.0 + urlpattern-polyfill: 8.0.2 + yargs: 17.7.2 + zod: 3.24.2 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + + '@netlify/zip-it-and-ship-it@10.0.5(rollup@4.30.1)(supports-color@9.4.0)': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.26.10 + '@netlify/binary-info': 1.0.0 + '@netlify/serverless-functions-api': 1.37.0 + '@vercel/nft': 0.27.7(rollup@4.30.1)(supports-color@9.4.0) + archiver: 5.3.2 + common-path-prefix: 3.0.0 + cp-file: 10.0.0 + es-module-lexer: 1.6.0 + esbuild: 0.19.11 + execa: 7.2.0 + fast-glob: 3.3.3 + filter-obj: 5.1.0 + find-up: 6.3.0 + glob: 8.1.0 + is-builtin-module: 3.2.1 + is-path-inside: 4.0.0 + junk: 4.0.1 + locate-path: 7.2.0 + merge-options: 3.0.4 + minimatch: 9.0.5 + normalize-path: 3.0.0 + p-map: 7.0.3 + path-exists: 5.0.0 + precinct: 11.0.5(supports-color@9.4.0) + require-package-name: 2.0.1 + resolve: 2.0.0-next.5 + semver: 7.7.1 + tmp-promise: 3.0.3 + toml: 3.0.0 + unixify: 1.0.0 + urlpattern-polyfill: 8.0.2 + yargs: 17.7.2 + zod: 3.24.2 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4068,6 +8232,141 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@octokit/auth-token@5.1.2': {} + + '@octokit/core@6.1.5': + dependencies: + '@octokit/auth-token': 5.1.2 + '@octokit/graphql': 8.2.2 + '@octokit/request': 9.2.3 + '@octokit/request-error': 6.1.8 + '@octokit/types': 14.0.0 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.2 + + '@octokit/endpoint@10.1.4': + dependencies: + '@octokit/types': 14.0.0 + universal-user-agent: 7.0.2 + + '@octokit/graphql@8.2.2': + dependencies: + '@octokit/request': 9.2.3 + '@octokit/types': 14.0.0 + universal-user-agent: 7.0.2 + + '@octokit/openapi-types@24.2.0': {} + + '@octokit/openapi-types@25.0.0': {} + + '@octokit/plugin-paginate-rest@11.6.0(@octokit/core@6.1.5)': + dependencies: + '@octokit/core': 6.1.5 + '@octokit/types': 13.10.0 + + '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.5)': + dependencies: + '@octokit/core': 6.1.5 + + '@octokit/plugin-rest-endpoint-methods@13.5.0(@octokit/core@6.1.5)': + dependencies: + '@octokit/core': 6.1.5 + '@octokit/types': 13.10.0 + + '@octokit/request-error@6.1.8': + dependencies: + '@octokit/types': 14.0.0 + + '@octokit/request@9.2.3': + dependencies: + '@octokit/endpoint': 10.1.4 + '@octokit/request-error': 6.1.8 + '@octokit/types': 14.0.0 + fast-content-type-parse: 2.0.1 + universal-user-agent: 7.0.2 + + '@octokit/rest@21.1.1': + dependencies: + '@octokit/core': 6.1.5 + '@octokit/plugin-paginate-rest': 11.6.0(@octokit/core@6.1.5) + '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.5) + '@octokit/plugin-rest-endpoint-methods': 13.5.0(@octokit/core@6.1.5) + + '@octokit/types@13.10.0': + dependencies: + '@octokit/openapi-types': 24.2.0 + + '@octokit/types@14.0.0': + dependencies: + '@octokit/openapi-types': 25.0.0 + + '@opentelemetry/api@1.8.0': {} + + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-wasm@2.5.1': + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.8 + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + '@pkgjs/parseargs@0.11.0': optional: true @@ -4075,6 +8374,27 @@ snapshots: dependencies: playwright: 1.44.1 + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.3.1': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@pnpm/tabtab@0.5.4': + dependencies: + debug: 4.4.0(supports-color@9.4.0) + enquirer: 2.4.1 + minimist: 1.2.8 + untildify: 4.0.0 + transitivePeerDependencies: + - supports-color + '@polka/url@1.0.0-next.28': {} '@publint/pack@0.1.0': {} @@ -4182,6 +8502,17 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.30.1': optional: true + '@sindresorhus/is@5.6.0': {} + + '@sindresorhus/slugify@2.2.1': + dependencies: + '@sindresorhus/transliterate': 1.6.0 + escape-string-regexp: 5.0.0 + + '@sindresorhus/transliterate@1.6.0': + dependencies: + escape-string-regexp: 5.0.0 + '@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0)': dependencies: '@types/eslint': 8.56.12 @@ -4194,20 +8525,20 @@ snapshots: dependencies: acorn: 8.14.1 - '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.16.1(eslint@9.6.0)(typescript@5.6.3))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.23.1))(eslint@9.6.0)(typescript-eslint@8.26.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3)': + '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.16.1(eslint@9.6.0)(typescript@5.6.3))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.23.1)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)))(eslint@9.6.0)(typescript-eslint@8.26.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3)': dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.6.0) eslint: 9.6.0 eslint-config-prettier: 9.1.0(eslint@9.6.0) eslint-plugin-n: 17.16.1(eslint@9.6.0)(typescript@5.6.3) - eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.23.1) + eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.23.1)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)) globals: 15.15.0 typescript: 5.6.3 typescript-eslint: 8.26.0(eslint@9.6.0)(typescript@5.6.3) - '@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.0 @@ -4220,27 +8551,27 @@ snapshots: set-cookie-parser: 2.6.0 sirv: 3.0.0 svelte: 5.23.1 - vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.4.0 + '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) + debug: 4.4.0(supports-color@9.4.0) svelte: 5.23.1 - vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.4.0 + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)))(svelte@5.23.1)(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) + debug: 4.4.0(supports-color@9.4.0) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.23.1 - vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) - vitefu: 1.0.4(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + vite: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) + vitefu: 1.0.4(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) transitivePeerDependencies: - supports-color @@ -4251,6 +8582,22 @@ snapshots: transitivePeerDependencies: - encoding + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + + '@tokenizer/token@0.3.0': {} + + '@trysound/sax@0.2.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + '@types/connect@3.4.38': dependencies: '@types/node': 18.19.50 @@ -4266,6 +8613,22 @@ snapshots: '@types/estree@1.0.7': {} + '@types/http-cache-semantics@4.0.4': {} + + '@types/http-proxy@1.17.16': + dependencies: + '@types/node': 18.19.50 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + '@types/json-schema@7.0.15': {} '@types/node@12.20.55': {} @@ -4274,14 +8637,31 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/normalize-package-data@2.4.4': {} + '@types/resolve@1.20.2': {} + '@types/retry@0.12.1': {} + '@types/semver@7.5.8': {} '@types/set-cookie-parser@2.4.7': dependencies: '@types/node': 18.19.50 + '@types/triple-beam@1.3.5': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 18.19.50 + optional: true + '@typescript-eslint/eslint-plugin@8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.6.0)(typescript@5.6.3))(eslint@9.6.0)(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -4305,7 +8685,7 @@ snapshots: '@typescript-eslint/types': 8.26.0 '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.26.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) eslint: 9.6.0 typescript: 5.6.3 transitivePeerDependencies: @@ -4325,22 +8705,38 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.6.3) '@typescript-eslint/utils': 8.26.0(eslint@9.6.0)(typescript@5.6.3) - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) eslint: 9.6.0 ts-api-utils: 2.1.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color + '@typescript-eslint/types@5.62.0': {} + '@typescript-eslint/types@8.26.0': {} '@typescript-eslint/types@8.29.0': {} + '@typescript-eslint/typescript-estree@5.62.0(supports-color@9.4.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.0(supports-color@9.4.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.7.1 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.26.0(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 8.26.0 '@typescript-eslint/visitor-keys': 8.26.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -4354,7 +8750,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.29.0 '@typescript-eslint/visitor-keys': 8.29.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -4386,6 +8782,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.26.0': dependencies: '@typescript-eslint/types': 8.26.0 @@ -4398,16 +8799,35 @@ snapshots: '@vercel/edge@1.2.1': {} - '@vercel/nft@0.29.2(rollup@4.30.1)': + '@vercel/nft@0.27.7(rollup@4.30.1)(supports-color@9.4.0)': dependencies: - '@mapbox/node-pre-gyp': 2.0.0 + '@mapbox/node-pre-gyp': 1.0.11(supports-color@9.4.0) '@rollup/pluginutils': 5.1.3(rollup@4.30.1) acorn: 8.14.1 acorn-import-attributes: 1.9.5(acorn@8.14.1) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 - glob: 10.4.5 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + node-gyp-build: 4.8.0 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + + '@vercel/nft@0.29.2(rollup@4.30.1)': + dependencies: + '@mapbox/node-pre-gyp': 2.0.0 + '@rollup/pluginutils': 5.1.3(rollup@4.30.1) + acorn: 8.14.1 + acorn-import-attributes: 1.9.5(acorn@8.14.1) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 10.4.5 graceful-fs: 4.2.11 node-gyp-build: 4.8.0 picomatch: 4.0.2 @@ -4424,13 +8844,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.5(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1))': + '@vitest/mocker@3.0.5(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1))': dependencies: '@vitest/spy': 3.0.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) '@vitest/pretty-format@3.0.5': dependencies: @@ -4457,8 +8877,74 @@ snapshots: loupe: 3.1.3 tinyrainbow: 2.0.0 + '@xhmikosr/archive-type@6.0.1': + dependencies: + file-type: 18.7.0 + + '@xhmikosr/decompress-tar@7.0.0': + dependencies: + file-type: 18.7.0 + is-stream: 3.0.0 + tar-stream: 3.1.7 + + '@xhmikosr/decompress-tarbz2@7.0.0': + dependencies: + '@xhmikosr/decompress-tar': 7.0.0 + file-type: 18.7.0 + is-stream: 3.0.0 + seek-bzip: 1.0.6 + unbzip2-stream: 1.4.3 + + '@xhmikosr/decompress-targz@7.0.0': + dependencies: + '@xhmikosr/decompress-tar': 7.0.0 + file-type: 18.7.0 + is-stream: 3.0.0 + + '@xhmikosr/decompress-unzip@6.0.0': + dependencies: + file-type: 18.7.0 + get-stream: 6.0.1 + yauzl: 2.10.0 + + '@xhmikosr/decompress@9.0.1': + dependencies: + '@xhmikosr/decompress-tar': 7.0.0 + '@xhmikosr/decompress-tarbz2': 7.0.0 + '@xhmikosr/decompress-targz': 7.0.0 + '@xhmikosr/decompress-unzip': 6.0.0 + graceful-fs: 4.2.11 + make-dir: 4.0.0 + strip-dirs: 3.0.0 + + '@xhmikosr/downloader@13.0.1': + dependencies: + '@xhmikosr/archive-type': 6.0.1 + '@xhmikosr/decompress': 9.0.1 + content-disposition: 0.5.4 + ext-name: 5.0.0 + file-type: 18.7.0 + filenamify: 5.1.1 + get-stream: 6.0.1 + got: 12.6.1 + merge-options: 3.0.4 + p-event: 5.0.1 + + abbrev@1.1.1: {} + abbrev@2.0.0: {} + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + abstract-logging@2.0.1: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + acorn-import-attributes@1.9.5(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -4473,8 +8959,31 @@ snapshots: acorn@8.14.1: {} + agent-base@6.0.2(supports-color@9.4.0): + dependencies: + debug: 4.4.0(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + agent-base@7.1.3: {} + aggregate-error@4.0.1: + dependencies: + clean-stack: 4.2.0 + indent-string: 5.0.0 + + ajv-errors@3.0.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-formats@3.0.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -4482,8 +8991,33 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-escapes@6.2.1: {} + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -4492,8 +9026,84 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} + ansi-to-html@0.7.2: + dependencies: + entities: 2.2.0 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: {} + + archiver-utils@2.1.0: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + + archiver-utils@3.0.4: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + + archiver-utils@5.0.2: + dependencies: + glob: 10.4.5 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.17.21 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + archiver@5.3.2: + dependencies: + archiver-utils: 2.1.0 + async: 3.2.6 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.6 + buffer-crc32: 1.0.0 + readable-stream: 4.7.0 + readdir-glob: 1.1.3 + tar-stream: 3.1.7 + zip-stream: 6.0.1 + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + arg@4.1.3: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -4502,30 +9112,136 @@ snapshots: aria-query@5.3.2: {} + array-flatten@1.1.1: {} + + array-timsort@1.0.3: {} + array-union@2.1.0: {} + arrify@3.0.0: {} + as-table@1.0.55: dependencies: printable-characters: 1.0.42 + ascii-table@0.0.9: {} + assertion-error@2.0.1: {} + ast-module-types@5.0.0: {} + async-sema@3.1.1: {} + async@3.2.6: {} + + atomic-sleep@1.0.0: {} + + atomically@2.0.3: + dependencies: + stubborn-fs: 1.2.5 + when-exit: 2.1.4 + + avvio@8.4.0: + dependencies: + '@fastify/error': 3.4.1 + fastq: 1.17.1 + axobject-query@4.1.0: {} + b4a@1.6.7: {} + + backoff@2.5.0: + dependencies: + precond: 0.2.3 + balanced-match@1.0.2: {} + bare-events@2.5.4: + optional: true + + bare-fs@4.1.2: + dependencies: + bare-events: 2.5.4 + bare-path: 3.0.0 + bare-stream: 2.6.5(bare-events@2.5.4) + optional: true + + bare-os@3.6.1: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.1 + optional: true + + bare-stream@2.6.5(bare-events@2.5.4): + dependencies: + streamx: 2.22.0 + optionalDependencies: + bare-events: 2.5.4 + optional: true + + base64-js@1.5.1: {} + + before-after-hook@3.0.2: {} + + better-ajv-errors@1.2.0(ajv@8.17.1): + dependencies: + '@babel/code-frame': 7.26.2 + '@humanwhocodes/momoa': 2.0.4 + ajv: 8.17.1 + chalk: 4.1.2 + jsonpointer: 5.0.1 + leven: 3.1.0 + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 + binary-extensions@2.3.0: {} + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + blake3-wasm@2.1.5: {} + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + boxen@8.0.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 8.0.0 + chalk: 5.4.1 + cli-boxes: 3.0.0 + string-width: 7.2.0 + type-fest: 4.39.1 + widest-line: 5.0.0 + wrap-ansi: 9.0.0 + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -4539,10 +9255,70 @@ snapshots: dependencies: fill-range: 7.1.1 + buffer-crc32@0.2.13: {} + + buffer-crc32@1.0.0: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@3.3.0: {} + + builtins@5.1.0: + dependencies: + semver: 7.7.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + byline@5.0.0: {} + + bytes@3.1.2: {} + cac@6.7.14: {} + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsite@1.0.0: {} + callsites@3.1.0: {} + camelcase@6.3.0: {} + + camelcase@8.0.0: {} + chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -4556,24 +9332,96 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.4.1: {} + chardet@0.7.0: {} check-error@2.1.1: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@4.0.3: dependencies: readdirp: 4.0.1 + chownr@1.1.4: {} + + chownr@2.0.0: {} + chownr@3.0.0: {} ci-info@3.9.0: {} + ci-info@4.1.0: {} + + citty@0.1.6: + dependencies: + consola: 3.2.3 + + clean-deep@3.4.0: + dependencies: + lodash.isempty: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.transform: 4.6.0 + + clean-stack@4.2.0: + dependencies: + escape-string-regexp: 5.0.0 + + clean-stack@5.2.0: + dependencies: + escape-string-regexp: 5.0.0 + + cli-boxes@3.0.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-width@3.0.0: {} + + clipboardy@4.0.0: + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + clsx@2.1.1: {} + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} color-string@1.9.1: @@ -4581,79 +9429,362 @@ snapshots: color-name: 1.1.4 simple-swizzle: 0.2.2 + color-support@1.1.3: {} + + color@3.2.1: + dependencies: + 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 - commondir@1.0.1: {} + colors-option@3.0.0: + dependencies: + chalk: 5.4.1 + filter-obj: 3.0.0 + is-plain-obj: 4.1.0 + jest-validate: 27.5.1 - concat-map@0.0.1: {} + colors@1.4.0: {} - consola@3.2.3: {} + colorspace@1.1.4: + dependencies: + color: 3.2.1 + text-hex: 1.0.0 - console-clear@1.1.1: {} + commander@10.0.1: {} - cookie@0.5.0: {} + commander@12.1.0: {} - cookie@0.6.0: {} + commander@2.20.3: {} - cross-env@7.0.3: + commander@7.2.0: {} + + commander@9.5.0: {} + + comment-json@4.2.5: dependencies: - cross-spawn: 7.0.6 + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 - cross-spawn@7.0.6: + common-path-prefix@3.0.0: {} + + commondir@1.0.1: {} + + compress-commons@4.1.2: dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 - cssesc@3.0.0: {} + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 - data-uri-to-buffer@2.0.2: {} + concat-map@0.0.1: {} - dataloader@1.4.0: {} + confbox@0.1.8: {} - debug@4.4.0: + config-chain@1.1.13: dependencies: - ms: 2.1.3 + ini: 1.3.8 + proto-list: 1.2.4 - dedent-js@1.0.1: {} + configstore@7.0.0: + dependencies: + atomically: 2.0.3 + dot-prop: 9.0.0 + graceful-fs: 4.2.11 + xdg-basedir: 5.1.0 - deep-eql@5.0.2: {} + consola@3.2.3: {} - deep-is@0.1.4: {} + console-clear@1.1.1: {} - deepmerge@4.3.1: {} + console-control-strings@1.1.0: {} - defu@6.1.4: {} + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 - dequal@2.0.3: {} + content-type@1.0.5: {} - detect-indent@6.1.0: {} + cookie-es@1.2.2: {} - detect-libc@1.0.3: - optional: true + cookie-signature@1.0.6: {} - detect-libc@2.0.3: {} + cookie@0.5.0: {} - devalue@5.1.0: {} + cookie@0.6.0: {} - diff@5.2.0: {} + cookie@0.7.1: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 + cookie@0.7.2: {} - dotenv@16.4.5: {} + cookie@1.0.2: {} - dropcss@1.0.16: {} + core-util-is@1.0.3: {} - dts-buddy@0.5.5(typescript@5.6.3): + cp-file@10.0.0: dependencies: - '@jridgewell/source-map': 0.3.6 - '@jridgewell/sourcemap-codec': 1.5.0 - kleur: 4.1.5 + graceful-fs: 4.2.11 + nested-error-stacks: 2.1.1 + p-event: 5.0.1 + + cp-file@9.1.0: + dependencies: + graceful-fs: 4.2.11 + make-dir: 3.1.0 + nested-error-stacks: 2.1.1 + p-event: 4.2.0 + + cpy@9.0.1: + dependencies: + arrify: 3.0.0 + cp-file: 9.1.0 + globby: 13.2.2 + junk: 4.0.1 + micromatch: 4.0.8 + nested-error-stacks: 2.1.1 + p-filter: 3.0.0 + p-map: 5.5.0 + + crc-32@1.2.2: {} + + crc32-stream@4.0.3: + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.7.0 + + create-require@1.1.1: {} + + cron-parser@4.9.0: + dependencies: + luxon: 3.6.1 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.3.4: + dependencies: + uncrypto: 0.1.3 + + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssfilter@0.0.10: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + cyclist@1.0.2: {} + + data-uri-to-buffer@2.0.2: {} + + data-uri-to-buffer@4.0.1: {} + + dataloader@1.4.0: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.0(supports-color@9.4.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 9.4.0 + + decache@4.6.2: + dependencies: + callsite: 1.0.0 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent-js@1.0.1: {} + + deep-eql@5.0.2: {} + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@2.0.1: {} + + define-lazy-prop@3.0.0: {} + + defu@6.1.4: {} + + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-indent@6.1.0: {} + + detect-libc@1.0.3: {} + + detect-libc@2.0.3: {} + + detective-amd@5.0.2: + dependencies: + ast-module-types: 5.0.0 + escodegen: 2.1.0 + get-amd-module-type: 5.0.1 + node-source-walk: 6.0.2 + + detective-cjs@5.0.1: + dependencies: + ast-module-types: 5.0.0 + node-source-walk: 6.0.2 + + detective-es6@4.0.1: + dependencies: + node-source-walk: 6.0.2 + + detective-postcss@6.1.3: + dependencies: + is-url: 1.2.4 + postcss: 8.5.3 + postcss-values-parser: 6.0.2(postcss@8.5.3) + + detective-sass@5.0.3: + dependencies: + gonzales-pe: 4.3.0 + node-source-walk: 6.0.2 + + detective-scss@4.0.3: + dependencies: + gonzales-pe: 4.3.0 + node-source-walk: 6.0.2 + + detective-stylus@4.0.0: {} + + detective-typescript@11.2.0(supports-color@9.4.0): + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(supports-color@9.4.0)(typescript@5.6.3) + ast-module-types: 5.0.0 + node-source-walk: 6.0.2 + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + devalue@5.1.0: {} + + diff@4.0.2: {} + + diff@5.2.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@7.2.0: + dependencies: + type-fest: 2.19.0 + + dot-prop@9.0.0: + dependencies: + type-fest: 4.39.1 + + dotenv@16.4.5: {} + + dotenv@16.4.7: {} + + dropcss@1.0.16: {} + + dts-buddy@0.5.5(typescript@5.6.3): + dependencies: + '@jridgewell/source-map': 0.3.6 + '@jridgewell/sourcemap-codec': 1.5.0 + kleur: 4.1.5 locate-character: 3.0.0 magic-string: 0.30.17 sade: 1.8.1 @@ -4661,14 +9792,38 @@ snapshots: ts-api-utils: 1.3.0(typescript@5.6.3) typescript: 5.6.3 + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: {} eastasianwidth@0.2.0: {} + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + emoji-regex@10.4.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} + enabled@2.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -4679,8 +9834,86 @@ snapshots: ansi-colors: 4.1.3 strip-ansi: 6.0.1 + entities@2.2.0: {} + + entities@4.5.0: {} + + env-paths@3.0.0: {} + + envinfo@7.14.0: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + es-module-lexer@1.6.0: {} + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + esbuild@0.19.11: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 + + esbuild@0.21.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.2 + '@esbuild/android-arm': 0.21.2 + '@esbuild/android-arm64': 0.21.2 + '@esbuild/android-x64': 0.21.2 + '@esbuild/darwin-arm64': 0.21.2 + '@esbuild/darwin-x64': 0.21.2 + '@esbuild/freebsd-arm64': 0.21.2 + '@esbuild/freebsd-x64': 0.21.2 + '@esbuild/linux-arm': 0.21.2 + '@esbuild/linux-arm64': 0.21.2 + '@esbuild/linux-ia32': 0.21.2 + '@esbuild/linux-loong64': 0.21.2 + '@esbuild/linux-mips64el': 0.21.2 + '@esbuild/linux-ppc64': 0.21.2 + '@esbuild/linux-riscv64': 0.21.2 + '@esbuild/linux-s390x': 0.21.2 + '@esbuild/linux-x64': 0.21.2 + '@esbuild/netbsd-x64': 0.21.2 + '@esbuild/openbsd-x64': 0.21.2 + '@esbuild/sunos-x64': 0.21.2 + '@esbuild/win32-arm64': 0.21.2 + '@esbuild/win32-ia32': 0.21.2 + '@esbuild/win32-x64': 0.21.2 + esbuild@0.24.2: optionalDependencies: '@esbuild/aix-ppc64': 0.24.2 @@ -4709,8 +9942,26 @@ snapshots: '@esbuild/win32-ia32': 0.24.2 '@esbuild/win32-x64': 0.24.2 + escalade@3.2.0: {} + + escape-goat@4.0.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + eslint-compat-utils@0.5.1(eslint@9.6.0): dependencies: eslint: 9.6.0 @@ -4744,7 +9995,7 @@ snapshots: - supports-color - typescript - eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.23.1): + eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.23.1)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)): dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.6.0) '@jridgewell/sourcemap-codec': 1.5.0 @@ -4753,7 +10004,7 @@ snapshots: esutils: 2.0.3 known-css-properties: 0.34.0 postcss: 8.5.3 - postcss-load-config: 3.1.4(postcss@8.5.3) + postcss-load-config: 3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)) postcss-safe-parser: 6.0.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 semver: 7.7.1 @@ -4790,7 +10041,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.2.0 @@ -4854,12 +10105,119 @@ snapshots: esutils@2.0.3: {} + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@6.1.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + exit-hook@2.2.1: {} + expand-template@2.0.3: {} + expect-type@1.1.0: {} + express-logging@1.1.1: + dependencies: + on-headers: 1.0.2 + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + exsolve@1.0.4: {} + ext-list@2.2.2: + dependencies: + mime-db: 1.54.0 + + ext-name@5.0.0: + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + extendable-error@0.1.7: {} external-editor@3.1.0: @@ -4868,8 +10226,28 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extract-zip@2.0.1: + dependencies: + debug: 4.4.0(supports-color@9.4.0) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-content-type-parse@1.1.0: {} + + fast-content-type-parse@2.0.1: {} + + fast-decode-uri-component@1.0.1: {} + fast-deep-equal@3.1.3: {} + fast-equals@3.0.3: {} + + fast-fifo@1.3.2: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4880,26 +10258,134 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-json-stringify@5.16.1: + dependencies: + '@fastify/merge-json-schemas': 0.1.1 + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + fast-deep-equal: 3.1.3 + fast-uri: 2.4.0 + json-schema-ref-resolver: 1.0.1 + rfdc: 1.4.1 + fast-levenshtein@2.0.6: {} + fast-querystring@1.1.2: + dependencies: + fast-decode-uri-component: 1.0.1 + + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + + fast-uri@2.4.0: {} + + fast-uri@3.0.6: {} + + fastest-levenshtein@1.0.16: {} + + fastify-plugin@4.5.1: {} + + fastify@4.29.0: + dependencies: + '@fastify/ajv-compiler': 3.6.0 + '@fastify/error': 3.4.1 + '@fastify/fast-json-stringify-compiler': 4.3.0 + abstract-logging: 2.0.1 + avvio: 8.4.0 + fast-content-type-parse: 1.1.0 + fast-json-stringify: 5.16.1 + find-my-way: 8.2.2 + light-my-request: 5.14.0 + pino: 9.6.0 + process-warning: 3.0.0 + proxy-addr: 2.0.7 + rfdc: 1.4.1 + secure-json-parse: 2.7.0 + semver: 7.7.1 + toad-cache: 3.7.0 + fastq@1.17.1: dependencies: reusify: 1.0.4 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.4.3(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 + fecha@4.2.3: {} + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + figures@4.0.1: + dependencies: + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 + + figures@5.0.0: + dependencies: + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 + file-type@18.7.0: + dependencies: + readable-web-to-node-stream: 3.0.4 + strtok3: 7.1.1 + token-types: 5.0.1 + file-uri-to-path@1.0.0: {} + filename-reserved-regex@3.0.0: {} + + filenamify@5.1.1: + dependencies: + filename-reserved-regex: 3.0.0 + strip-outer: 2.0.0 + trim-repeated: 2.0.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + filter-obj@3.0.0: {} + + filter-obj@5.1.0: {} + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-my-way@8.2.2: + dependencies: + fast-deep-equal: 3.1.3 + fast-querystring: 1.1.2 + safe-regex2: 3.1.0 + + find-up-simple@1.0.1: {} + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -4910,18 +10396,65 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@4.0.1: + find-up@6.3.0: dependencies: - flatted: 3.3.1 - keyv: 4.5.4 + locate-path: 7.2.0 + path-exists: 5.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 flatted@3.3.1: {} + flush-write-stream@2.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + fn.name@1.1.0: {} + + folder-walker@3.2.0: + dependencies: + from2: 2.3.0 + + follow-redirects@1.15.9(debug@4.4.0): + optionalDependencies: + debug: 4.4.0(supports-color@9.4.0) + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 + form-data-encoder@2.1.4: {} + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + from2-array@0.0.4: + dependencies: + from2: 2.3.0 + + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + fs-constants@1.0.0: {} + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -4934,6 +10467,12 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + fsevents@2.3.2: optional: true @@ -4942,17 +10481,86 @@ snapshots: function-bind@1.1.2: {} + fuzzy@0.1.3: {} + + gauge@3.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + get-amd-module-type@5.0.1: + dependencies: + ast-module-types: 5.0.0 + node-source-walk: 6.0.2 + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-name@2.2.0: {} + + get-port-please@3.1.2: {} + get-port@5.1.1: {} + get-port@6.1.2: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + 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@6.0.1: {} + + get-stream@8.0.1: {} + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 + gh-release-fetch@4.0.3: + dependencies: + '@xhmikosr/downloader': 13.0.1 + node-fetch: 3.3.2 + semver: 7.7.1 + + git-repo-info@2.1.1: {} + + gitconfiglocal@2.1.0: + dependencies: + ini: 1.3.8 + + github-from-package@0.0.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4972,6 +10580,27 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + globals@14.0.0: {} globals@15.15.0: {} @@ -4985,31 +10614,157 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + + gonzales-pe@4.3.0: + dependencies: + minimist: 1.2.8 + + gopd@1.2.0: {} + + got@12.6.1: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + graceful-fs@4.2.10: {} + graceful-fs@4.2.11: {} graphemer@1.4.0: {} + h3@1.15.1: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.4 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.0 + radix3: 1.1.2 + ufo: 1.5.4 + uncrypto: 0.1.3 + has-flag@4.0.0: {} + has-own-prop@2.0.0: {} + + has-symbols@1.1.0: {} + + has-unicode@2.0.1: {} + hasown@2.0.2: dependencies: function-bind: 1.1.2 + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + hot-shots@10.2.1: + optionalDependencies: + unix-dgram: 2.0.6 + + http-cache-semantics@4.1.1: {} + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-middleware@2.0.7(debug@4.4.0): + dependencies: + '@types/http-proxy': 1.17.16 + http-proxy: 1.18.1(debug@4.4.0) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1(debug@4.4.0): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9(debug@4.4.0) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-shutdown@1.2.2: {} + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@5.0.1(supports-color@9.4.0): + dependencies: + agent-base: 6.0.2(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color human-id@1.0.2: {} + human-signals@2.1.0: {} + + human-signals@3.0.1: {} + + human-signals@4.3.1: {} + + human-signals@5.0.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + ignore@5.3.2: {} + image-meta@0.2.1: {} + imagetools-core@7.0.0: dependencies: sharp: 0.33.5 @@ -5023,26 +10778,156 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@5.0.0: {} + + index-to-position@1.1.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + inquirer-autocomplete-prompt@1.4.0(inquirer@8.2.6): + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + inquirer: 8.2.6 + run-async: 2.4.1 + rxjs: 6.6.7 + + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + inspect-with-kind@1.0.5: + dependencies: + kind-of: 6.0.3 + + ipaddr.js@1.9.1: {} + + ipx@2.1.0(@netlify/blobs@8.1.2): + dependencies: + '@fastify/accept-negotiator': 1.1.0 + citty: 0.1.6 + consola: 3.2.3 + defu: 6.1.4 + destr: 2.0.5 + etag: 1.8.1 + h3: 1.15.1 + image-meta: 0.2.1 + listhen: 1.9.0 + ofetch: 1.4.1 + pathe: 1.1.2 + sharp: 0.32.6 + svgo: 3.3.2 + ufo: 1.5.4 + unstorage: 1.15.0(@netlify/blobs@8.1.2) + xss: 1.0.15 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bare-buffer + - db0 + - idb-keyval + - ioredis + - uploadthing + + iron-webcrypto@1.2.1: {} + + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + is-core-module@2.13.1: dependencies: hasown: 2.0.2 + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 + is-in-ci@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-installed-globally@1.0.0: + dependencies: + global-directory: 4.0.1 + is-path-inside: 4.0.0 + + is-interactive@1.0.0: {} + is-module@1.0.0: {} + is-npm@6.0.0: {} + is-number@7.0.0: {} is-path-inside@3.0.3: {} + is-path-inside@4.0.0: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@2.1.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-obj@4.1.0: {} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.7 @@ -5051,20 +10936,63 @@ snapshots: dependencies: '@types/estree': 1.0.7 + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-stream@4.0.1: {} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 + is-unicode-supported@0.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-url-superb@4.0.0: {} + + is-url@1.2.4: {} + is-windows@1.0.2: {} + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + is64bit@2.0.0: + dependencies: + system-architecture: 0.1.0 + + isarray@1.0.0: {} + + iserror@0.0.2: {} + isexe@2.0.0: {} + isexe@3.1.1: {} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jest-get-type@27.5.1: {} + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -5076,27 +11004,97 @@ snapshots: json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + + json-schema-ref-resolver@1.0.1: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 + jsonpointer@5.0.1: {} + + jsonwebtoken@9.0.2: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.1 + + junk@4.0.1: {} + + jwa@1.4.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + + jwt-decode@4.0.0: {} + + keep-func-props@4.0.1: + dependencies: + mimic-fn: 4.0.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + kind-of@6.0.3: {} + kleur@4.1.5: {} known-css-properties@0.34.0: {} + kuler@2.0.0: {} + + ky@1.8.0: {} + + lambda-local@2.2.0: + dependencies: + commander: 10.0.1 + dotenv: 16.4.7 + winston: 3.17.0 + + latest-version@9.0.0: + dependencies: + package-json: 10.0.1 + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + light-my-request@5.14.0: + dependencies: + cookie: 0.7.2 + process-warning: 3.0.0 + set-cookie-parser: 2.6.0 + lightningcss-darwin-arm64@1.24.1: optional: true @@ -5139,108 +11137,600 @@ snapshots: lightningcss-win32-x64-msvc: 1.24.1 optional: true - lilconfig@2.1.0: {} + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + listhen@1.9.0: + dependencies: + '@parcel/watcher': 2.5.1 + '@parcel/watcher-wasm': 2.5.1 + citty: 0.1.6 + clipboardy: 4.0.0 + consola: 3.2.3 + crossws: 0.3.4 + defu: 6.1.4 + get-port-please: 3.1.2 + h3: 1.15.1 + http-shutdown: 1.2.2 + jiti: 2.4.2 + mlly: 1.7.4 + node-forge: 1.3.1 + pathe: 1.1.2 + std-env: 3.8.0 + ufo: 1.5.4 + untun: 0.1.3 + uqr: 0.1.2 + + local-access@1.1.0: {} + + locate-character@3.0.0: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.17.21: {} + + lodash.defaults@4.2.0: {} + + lodash.difference@4.5.0: {} + + lodash.flatten@4.4.0: {} + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isempty@4.4.0: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.transform@4.6.0: {} + + lodash.union@4.6.0: {} + + lodash@4.17.21: {} + + log-process-errors@8.0.0: + dependencies: + colors-option: 3.0.0 + figures: 4.0.1 + filter-obj: 3.0.0 + jest-validate: 27.5.1 + map-obj: 5.0.2 + moize: 6.1.6 + semver: 7.7.1 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + logform@2.7.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + + loupe@3.1.3: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.6.2 + + lowercase-keys@3.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + luxon@3.6.1: {} + + macos-release@3.3.0: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.1 + + make-error@1.3.6: {} + + map-obj@5.0.2: {} + + math-intrinsics@1.1.0: {} + + maxstache-stream@1.0.4: + dependencies: + maxstache: 1.0.7 + pump: 1.0.3 + split2: 1.1.1 + through2: 2.0.5 + + maxstache@1.0.7: {} + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + media-typer@0.3.0: {} + + memoize-one@6.0.0: {} + + merge-descriptors@1.0.3: {} + + merge-options@3.0.4: + dependencies: + is-plain-obj: 2.1.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micro-api-client@3.3.0: {} + + micro-memoize@4.1.3: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + + min-indent@1.0.1: {} + + miniflare@4.20250310.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.28.5 + workerd: 1.20250310.0 + ws: 8.18.0 + youch: 3.2.3 + zod: 3.22.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp-classic@0.5.3: {} + + mkdirp@1.0.4: {} + + mkdirp@3.0.1: {} + + mlly@1.7.4: + dependencies: + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.5.4 + + module-definition@5.0.1: + dependencies: + ast-module-types: 5.0.0 + node-source-walk: 6.0.2 + + moize@6.1.6: + dependencies: + fast-equals: 3.0.3 + micro-memoize: 4.1.3 + + move-file@3.1.0: + dependencies: + path-exists: 5.0.0 + + mri@1.2.0: {} + + mrmime@2.0.0: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + multiparty@4.2.3: + dependencies: + http-errors: 1.8.1 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + + mustache@4.2.0: {} + + mute-stream@0.0.8: {} + + nan@2.22.2: + optional: true + + nanoid@3.3.8: {} + + nanospinner@1.2.2: + dependencies: + picocolors: 1.1.1 + + napi-build-utils@2.0.0: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + nested-error-stacks@2.1.1: {} + + netlify-cli@20.0.0(@types/node@18.19.50)(picomatch@4.0.2)(rollup@4.30.1): + dependencies: + '@fastify/static': 7.0.4 + '@netlify/blobs': 8.1.2 + '@netlify/build': 30.1.1(@opentelemetry/api@1.8.0)(@types/node@18.19.50)(picomatch@4.0.2)(rollup@4.30.1) + '@netlify/build-info': 9.0.2 + '@netlify/config': 21.0.7 + '@netlify/edge-bundler': 12.4.0(rollup@4.30.1)(supports-color@9.4.0) + '@netlify/edge-functions': 2.11.1 + '@netlify/headers-parser': 8.0.0 + '@netlify/local-functions-proxy': 2.0.3 + '@netlify/redirect-parser': 14.5.1 + '@netlify/zip-it-and-ship-it': 10.0.4(rollup@4.30.1)(supports-color@9.4.0) + '@octokit/rest': 21.1.1 + '@opentelemetry/api': 1.8.0 + '@pnpm/tabtab': 0.5.4 + ansi-escapes: 7.0.0 + ansi-to-html: 0.7.2 + ascii-table: 0.0.9 + backoff: 2.5.0 + boxen: 8.0.1 + chalk: 5.4.1 + chokidar: 3.6.0 + ci-info: 4.1.0 + clean-deep: 3.4.0 + commander: 12.1.0 + comment-json: 4.2.5 + content-type: 1.0.5 + cookie: 1.0.2 + cron-parser: 4.9.0 + debug: 4.4.0(supports-color@9.4.0) + decache: 4.6.2 + dot-prop: 9.0.0 + dotenv: 16.4.7 + env-paths: 3.0.0 + envinfo: 7.14.0 + etag: 1.8.1 + execa: 5.1.1 + express: 4.21.2 + express-logging: 1.1.1 + extract-zip: 2.0.1 + fastest-levenshtein: 1.0.16 + fastify: 4.29.0 + find-up: 7.0.0 + flush-write-stream: 2.0.0 + folder-walker: 3.2.0 + from2-array: 0.0.4 + fuzzy: 0.1.3 + get-port: 5.1.1 + gh-release-fetch: 4.0.3 + git-repo-info: 2.1.1 + gitconfiglocal: 2.1.0 + http-proxy: 1.18.1(debug@4.4.0) + http-proxy-middleware: 2.0.7(debug@4.4.0) + https-proxy-agent: 7.0.6 + inquirer: 8.2.6 + inquirer-autocomplete-prompt: 1.4.0(inquirer@8.2.6) + ipx: 2.1.0(@netlify/blobs@8.1.2) + is-docker: 3.0.0 + is-stream: 4.0.1 + is-wsl: 3.1.0 + isexe: 3.1.1 + jsonwebtoken: 9.0.2 + jwt-decode: 4.0.0 + lambda-local: 2.2.0 + locate-path: 7.2.0 + lodash: 4.17.21 + log-update: 6.1.0 + maxstache: 1.0.7 + maxstache-stream: 1.0.4 + multiparty: 4.2.3 + nanospinner: 1.2.2 + netlify: 13.3.4 + netlify-redirector: 0.5.0 + node-fetch: 3.3.2 + normalize-package-data: 6.0.2 + open: 10.1.0 + p-filter: 4.1.0 + p-map: 7.0.3 + p-wait-for: 5.0.2 + parallel-transform: 1.2.0 + parse-github-url: 1.0.3 + parse-gitignore: 2.0.0 + prettyjson: 1.2.5 + raw-body: 3.0.0 + read-package-up: 11.0.0 + readdirp: 4.1.2 + semver: 7.7.1 + source-map-support: 0.5.21 + strip-ansi-control-characters: 2.0.0 + tempy: 3.1.0 + terminal-link: 3.0.0 + through2-filter: 4.0.0 + through2-map: 4.0.0 + toml: 3.0.0 + tomlify-j0.4: 3.0.0 + ulid: 2.3.0 + update-notifier: 7.3.1 + uuid: 11.0.5 + wait-port: 1.1.0 + write-file-atomic: 5.0.1 + ws: 8.18.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/opentelemetry-sdk-setup' + - '@planetscale/database' + - '@swc/core' + - '@swc/wasm' + - '@types/express' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bare-buffer + - bufferutil + - db0 + - encoding + - idb-keyval + - ioredis + - picomatch + - rollup + - supports-color + - uploadthing + - utf-8-validate + + netlify-redirector@0.5.0: {} + + netlify@13.3.4: + dependencies: + '@netlify/open-api': 2.36.0 + lodash-es: 4.17.21 + micro-api-client: 3.3.0 + node-fetch: 3.3.2 + p-wait-for: 5.0.2 + qs: 6.14.0 + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + + node-abi@3.74.0: + dependencies: + semver: 7.7.1 + + node-addon-api@6.1.0: {} - local-access@1.1.0: {} + node-addon-api@7.1.1: {} - locate-character@3.0.0: {} + node-domexception@1.0.0: {} - locate-path@5.0.0: + node-fetch-native@1.6.6: {} + + node-fetch@2.7.0: dependencies: - p-locate: 4.1.0 + whatwg-url: 5.0.0 - locate-path@6.0.0: + node-fetch@3.3.2: dependencies: - p-locate: 5.0.0 + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 - lodash.merge@4.6.2: {} + node-forge@1.3.1: {} - lodash.startcase@4.4.0: {} + node-gyp-build@4.8.0: {} - loupe@3.1.3: {} + node-mock-http@1.0.0: {} - lower-case@2.0.2: + node-source-walk@6.0.2: dependencies: - tslib: 2.6.2 + '@babel/parser': 7.27.0 - lru-cache@10.4.3: {} + node-stream-zip@1.15.0: {} - magic-string@0.30.17: + nopt@5.0.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + abbrev: 1.1.1 - merge2@1.4.1: {} - - micromatch@4.0.8: + nopt@8.0.0: dependencies: - braces: 3.0.3 - picomatch: 2.3.1 + abbrev: 2.0.0 - mime@3.0.0: {} + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.13.1 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 - min-indent@1.0.1: {} + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 - miniflare@4.20250310.0: + normalize-path@2.1.1: 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.28.5 - workerd: 1.20250310.0 - ws: 8.18.0 - youch: 3.2.3 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + remove-trailing-separator: 1.1.0 - minimatch@3.1.2: + normalize-path@3.0.0: {} + + normalize-url@8.0.1: {} + + npm-run-path@4.0.1: dependencies: - brace-expansion: 1.1.11 + path-key: 3.1.1 - minimatch@9.0.5: + npm-run-path@5.3.0: dependencies: - brace-expansion: 2.0.1 + path-key: 4.0.0 - minipass@7.1.2: {} + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 - minizlib@3.0.2: + nth-check@2.1.1: dependencies: - minipass: 7.1.2 + boolbase: 1.0.0 - mkdirp@3.0.1: {} + object-assign@4.1.1: {} - mri@1.2.0: {} + object-inspect@1.13.4: {} - mrmime@2.0.0: {} + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.6 + ufo: 1.5.4 - ms@2.1.3: {} + ohash@2.0.11: {} - mustache@4.2.0: {} + omit.js@2.0.2: {} - nanoid@3.3.8: {} + on-exit-leak-free@2.1.2: {} - natural-compare@1.4.0: {} + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 - no-case@3.0.4: + on-headers@1.0.2: {} + + once@1.4.0: dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 + wrappy: 1.0.2 - node-fetch@2.7.0: + one-time@1.0.0: dependencies: - whatwg-url: 5.0.0 + fn.name: 1.1.0 - node-gyp-build@4.8.0: {} + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 - nopt@8.0.0: + onetime@6.0.0: dependencies: - abbrev: 2.0.0 + mimic-fn: 4.0.0 - ohash@2.0.11: {} + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 optionator@0.9.3: dependencies: @@ -5251,14 +11741,59 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-name@5.1.0: + dependencies: + macos-release: 3.3.0 + windows-release: 5.1.1 + os-tmpdir@1.0.2: {} outdent@0.5.0: {} + p-cancelable@3.0.0: {} + + p-event@4.2.0: + dependencies: + p-timeout: 3.2.0 + + p-event@5.0.1: + dependencies: + p-timeout: 5.1.0 + + p-event@6.0.1: + dependencies: + p-timeout: 6.1.4 + + p-every@2.0.0: + dependencies: + p-map: 2.1.0 + p-filter@2.1.0: dependencies: p-map: 2.1.0 + p-filter@3.0.0: + dependencies: + p-map: 5.5.0 + + p-filter@4.1.0: + dependencies: + p-map: 7.0.3 + + p-finally@1.0.0: {} + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -5267,6 +11802,10 @@ snapshots: dependencies: yocto-queue: 0.1.0 + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -5275,18 +11814,81 @@ snapshots: dependencies: p-limit: 3.1.0 + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + p-map@2.1.0: {} + p-map@5.5.0: + dependencies: + aggregate-error: 4.0.1 + + p-map@7.0.3: {} + + p-reduce@3.0.0: {} + + p-retry@5.1.2: + dependencies: + '@types/retry': 0.12.1 + retry: 0.13.1 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-timeout@5.1.0: {} + + p-timeout@6.1.4: {} + p-try@2.2.0: {} + p-wait-for@5.0.2: + dependencies: + p-timeout: 6.1.4 + package-json-from-dist@1.0.1: {} + package-json@10.0.1: + dependencies: + ky: 1.8.0 + registry-auth-token: 5.1.0 + registry-url: 6.0.1 + semver: 7.7.1 + package-manager-detector@0.2.8: {} + parallel-transform@1.2.0: + dependencies: + cyclist: 1.0.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + parent-module@1.0.1: dependencies: callsites: 3.1.0 + parse-github-url@1.0.3: {} + + parse-gitignore@2.0.0: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 1.1.0 + type-fest: 4.39.1 + + parse-ms@3.0.0: {} + + parseurl@1.3.3: {} + pascal-case@3.1.2: dependencies: no-case: 3.0.4 @@ -5294,8 +11896,14 @@ snapshots: path-exists@4.0.0: {} + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -5303,14 +11911,24 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-to-regexp@0.1.12: {} + path-to-regexp@6.3.0: {} path-type@4.0.0: {} + path-type@5.0.0: {} + + pathe@1.1.2: {} + pathe@2.0.3: {} pathval@2.0.0: {} + peek-readable@5.4.2: {} + + pend@1.2.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5319,6 +11937,36 @@ snapshots: pify@4.0.1: {} + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-std-serializers@7.0.0: {} + + pino@9.6.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.1 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + + pkg-dir@7.0.0: + dependencies: + find-up: 6.3.0 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 + playwright-core@1.44.1: {} playwright@1.44.1: @@ -5332,12 +11980,13 @@ snapshots: '@polka/url': 1.0.0-next.28 trouter: 4.0.0 - postcss-load-config@3.1.4(postcss@8.5.3): + postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.3 + ts-node: 10.9.2(@types/node@18.19.50)(typescript@5.6.3) postcss-safe-parser@6.0.0(postcss@8.5.3): dependencies: @@ -5352,12 +12001,53 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-values-parser@6.0.2(postcss@8.5.3): + dependencies: + color-name: 1.1.4 + is-url-superb: 4.0.0 + postcss: 8.5.3 + quote-unquote: 1.0.0 + postcss@8.5.3: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.74.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.2 + tunnel-agent: 0.6.0 + + precinct@11.0.5(supports-color@9.4.0): + dependencies: + '@dependents/detective-less': 4.1.0 + commander: 10.0.1 + detective-amd: 5.0.2 + detective-cjs: 5.0.1 + detective-es6: 4.0.1 + detective-postcss: 6.1.3 + detective-sass: 5.0.3 + detective-scss: 4.0.3 + detective-stylus: 4.0.0 + detective-typescript: 11.2.0(supports-color@9.4.0) + module-definition: 5.0.1 + node-source-walk: 6.0.2 + transitivePeerDependencies: + - supports-color + + precond@0.2.3: {} + prelude-ls@1.2.1: {} prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.23.1): @@ -5369,8 +12059,40 @@ snapshots: prettier@3.3.3: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-ms@8.0.0: + dependencies: + parse-ms: 3.0.0 + + prettyjson@1.2.5: + dependencies: + colors: 1.4.0 + minimist: 1.2.8 + printable-characters@1.0.42: {} + process-nextick-args@2.0.1: {} + + process-warning@3.0.0: {} + + process-warning@4.0.1: {} + + process@0.11.10: {} + + proto-list@1.2.4: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + ps-list@8.1.1: {} + publint@0.3.0: dependencies: '@publint/pack': 0.1.0 @@ -5378,10 +12100,94 @@ snapshots: picocolors: 1.1.1 sade: 1.8.1 + pump@1.0.3: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@2.3.1: {} + pupa@3.1.0: + dependencies: + escape-goat: 4.0.0 + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + + quick-lru@5.1.1: {} + + quote-unquote@1.0.0: {} + + radix3@1.1.2: {} + + random-bytes@1.0.0: {} + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-is@17.0.2: {} + + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 9.0.1 + type-fest: 4.39.1 + + read-pkg-up@9.1.0: + dependencies: + find-up: 6.3.0 + read-pkg: 7.1.0 + type-fest: 2.19.0 + + read-pkg@7.1.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 3.0.3 + parse-json: 5.2.0 + type-fest: 2.19.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.39.1 + unicorn-magic: 0.1.0 + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -5389,12 +12195,74 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readable-web-to-node-stream@3.0.4: + dependencies: + readable-stream: 4.7.0 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.6 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + readdirp@4.0.1: {} + readdirp@4.1.2: {} + + real-require@0.2.0: {} + regenerator-runtime@0.14.1: {} regexparam@3.0.0: {} + registry-auth-token@5.1.0: + dependencies: + '@pnpm/npm-conf': 2.3.1 + + registry-url@6.0.1: + dependencies: + rc: 1.2.8 + + remove-trailing-separator@1.1.0: {} + + repeat-string@1.6.1: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-package-name@2.0.1: {} + + requires-port@1.0.0: {} + + resolve-alpn@1.2.1: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -5407,8 +12275,38 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + ret@0.4.3: {} + + retry@0.13.1: {} + reusify@1.0.4: {} + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + rollup@4.30.1: dependencies: '@types/estree': 1.0.6 @@ -5434,26 +12332,102 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.30.1 fsevents: 2.3.3 + run-applescript@7.0.0: {} + + run-async@2.4.1: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.2: + dependencies: + tslib: 2.6.2 + sade@1.8.1: dependencies: mri: 1.2.0 + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-json-stringify@1.2.0: {} + + safe-regex2@3.1.0: + dependencies: + ret: 0.4.3 + + safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: {} + secure-json-parse@2.7.0: {} + + seek-bzip@1.0.6: + dependencies: + commander: 2.20.3 + semiver@1.1.0: {} + semver@6.3.1: {} + semver@7.7.1: {} + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + server-side-dep@file:packages/adapter-cloudflare/test/apps/pages/server-side-dep: {} server-side-dep@file:packages/adapter-cloudflare/test/apps/workers/server-side-dep: {} + set-blocking@2.0.0: {} + set-cookie-parser@2.6.0: {} + setprototypeof@1.2.0: {} + + sharp@0.32.6: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + node-addon-api: 6.1.0 + prebuild-install: 7.1.3 + semver: 7.7.1 + simple-get: 4.0.1 + tar-fs: 3.0.8 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - bare-buffer + sharp@0.33.5: dependencies: color: 4.2.3 @@ -5486,10 +12460,48 @@ snapshots: shebang-regex@3.0.0: {} + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -5513,8 +12525,32 @@ snapshots: slash@3.0.0: {} + slash@4.0.0: {} + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + + sort-keys-length@1.0.1: + dependencies: + sort-keys: 1.1.2 + + sort-keys@1.1.2: + dependencies: + is-plain-obj: 1.1.0 + source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + source-map@0.6.1: {} spawndamnit@3.0.1: @@ -5522,19 +12558,58 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + split2@1.1.1: + dependencies: + through2: 2.0.5 + + split2@4.2.0: {} + sprintf-js@1.0.3: {} + stack-generator@2.0.10: + dependencies: + stackframe: 1.3.4 + + stack-trace@0.0.10: {} + stackback@0.0.2: {} + stackframe@1.3.4: {} + stacktracey@2.1.8: dependencies: as-table: 1.0.55 get-source: 2.0.12 + statuses@1.5.0: {} + + statuses@2.0.1: {} + std-env@3.8.0: {} stoppable@1.1.0: {} + streamx@2.22.0: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.5.4 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -5547,6 +12622,22 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi-control-characters@2.0.0: {} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -5557,16 +12648,43 @@ snapshots: strip-bom@3.0.0: {} + strip-dirs@3.0.0: + dependencies: + inspect-with-kind: 1.0.5 + is-plain-obj: 1.1.0 + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 + strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} + strip-outer@2.0.0: {} + + strtok3@7.1.1: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.4.2 + + stubborn-fs@1.2.5: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-color@9.4.0: {} + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.23.1)(typescript@5.6.3): @@ -5595,14 +12713,14 @@ snapshots: dependencies: svelte: 5.23.1 - svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.3))(postcss@8.5.3)(svelte@5.23.1)(typescript@5.6.3): + svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)))(postcss@8.5.3)(svelte@5.23.1)(typescript@5.6.3): dependencies: detect-indent: 6.1.0 strip-indent: 3.0.0 svelte: 5.23.1 optionalDependencies: postcss: 8.5.3 - postcss-load-config: 3.1.4(postcss@8.5.3) + postcss-load-config: 3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3)) typescript: 5.6.3 svelte2tsx@0.7.33(svelte@5.23.1)(typescript@5.6.3): @@ -5629,8 +12747,60 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + + system-architecture@0.1.0: {} + tapable@2.2.1: {} + tar-fs@2.1.2: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-fs@3.0.8: + dependencies: + pump: 3.0.2 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.1.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.22.0 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + tar@7.4.3: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -5640,10 +12810,53 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 + temp-dir@3.0.0: {} + + tempy@3.1.0: + dependencies: + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 + term-size@2.2.1: {} + terminal-link@3.0.0: + dependencies: + ansi-escapes: 5.0.0 + supports-hyperlinks: 2.3.0 + + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + + text-hex@1.0.0: {} + text-table@0.2.0: {} + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + + through2-filter@4.0.0: + dependencies: + through2: 4.0.2 + + through2-map@4.0.0: + dependencies: + through2: 4.0.2 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + tinybench@2.9.0: {} tinydate@1.3.0: {} @@ -5661,18 +12874,43 @@ snapshots: tinyspy@3.0.2: {} + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.3 + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 + tmp@0.2.3: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + toad-cache@3.7.0: {} + + toidentifier@1.0.1: {} + + token-types@5.0.1: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + + toml@3.0.0: {} + + tomlify-j0.4@3.0.0: {} + totalist@3.0.1: {} tr46@0.0.3: {} + trim-repeated@2.0.0: + dependencies: + escape-string-regexp: 5.0.0 + + triple-beam@1.4.1: {} + trouter@4.0.0: dependencies: regexparam: 3.0.0 @@ -5690,12 +12928,54 @@ snapshots: picomatch: 4.0.2 typescript: 5.6.3 + ts-node@10.9.2(@types/node@18.19.50)(typescript@5.6.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.50 + acorn: 8.14.1 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tslib@1.14.1: {} + tslib@2.6.2: {} + tsutils@3.21.0(typescript@5.6.3): + dependencies: + tslib: 1.14.1 + typescript: 5.6.3 + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 + type-fest@0.21.3: {} + + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + + type-fest@4.39.1: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + typescript-eslint@8.26.0(eslint@9.6.0)(typescript@5.6.3): dependencies: '@typescript-eslint/eslint-plugin': 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.6.0)(typescript@5.6.3))(eslint@9.6.0)(typescript@5.6.3) @@ -5710,6 +12990,19 @@ snapshots: ufo@1.5.4: {} + uid-safe@2.1.5: + dependencies: + random-bytes: 1.0.0 + + ulid@2.3.0: {} + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + uncrypto@0.1.3: {} + undici-types@5.26.5: {} undici@5.28.5: @@ -5724,8 +13017,64 @@ snapshots: pathe: 2.0.3 ufo: 1.5.4 + unicorn-magic@0.1.0: {} + + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + + universal-user-agent@7.0.2: {} + universalify@0.1.2: {} + unix-dgram@2.0.6: + dependencies: + bindings: 1.5.0 + nan: 2.22.2 + optional: true + + unixify@1.0.0: + dependencies: + normalize-path: 2.1.1 + + unpipe@1.0.0: {} + + unstorage@1.15.0(@netlify/blobs@8.1.2): + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.5 + h3: 1.15.1 + lru-cache: 10.4.3 + node-fetch-native: 1.6.6 + ofetch: 1.4.1 + ufo: 1.5.4 + optionalDependencies: + '@netlify/blobs': 8.1.2 + + untildify@4.0.0: {} + + untun@0.1.3: + dependencies: + citty: 0.1.6 + consola: 3.2.3 + pathe: 1.1.2 + + update-notifier@7.3.1: + dependencies: + boxen: 8.0.1 + chalk: 5.4.1 + configstore: 7.0.0 + is-in-ci: 1.0.0 + is-installed-globally: 1.0.0 + is-npm: 6.0.0 + latest-version: 9.0.0 + pupa: 3.1.0 + semver: 7.7.1 + xdg-basedir: 5.1.0 + + uqr@0.1.2: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -5734,6 +13083,12 @@ snapshots: util-deprecate@1.0.2: {} + utils-merge@1.0.1: {} + + uuid@11.0.5: {} + + uuid@9.0.1: {} + uvu@0.5.6: dependencies: dequal: 2.0.3 @@ -5741,6 +13096,19 @@ snapshots: kleur: 4.1.5 sade: 1.8.1 + v8-compile-cache-lib@3.0.1: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@4.0.0: + dependencies: + builtins: 5.1.0 + + vary@1.1.2: {} + vite-imagetools@7.0.1(rollup@4.30.1): dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.30.1) @@ -5748,13 +13116,13 @@ snapshots: transitivePeerDependencies: - rollup - vite-node@3.0.5(@types/node@18.19.50)(lightningcss@1.24.1): + vite-node@3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1): dependencies: cac: 6.7.14 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -5769,7 +13137,7 @@ snapshots: - tsx - yaml - vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1): + vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1): dependencies: esbuild: 0.24.2 postcss: 8.5.3 @@ -5777,23 +13145,25 @@ snapshots: optionalDependencies: '@types/node': 18.19.50 fsevents: 2.3.3 + jiti: 2.4.2 lightningcss: 1.24.1 + yaml: 2.7.1 - vitefu@1.0.4(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)): + vitefu@1.0.4(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)): optionalDependencies: - vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) - vitest@3.0.5(@types/node@18.19.50)(lightningcss@1.24.1): + vitest@3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1): dependencies: '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(vite@6.0.11(@types/node@18.19.50)(lightningcss@1.24.1)) + '@vitest/mocker': 3.0.5(vite@6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1)) '@vitest/pretty-format': 3.0.5 '@vitest/runner': 3.0.5 '@vitest/snapshot': 3.0.5 '@vitest/spy': 3.0.5 '@vitest/utils': 3.0.5 chai: 5.1.2 - debug: 4.4.0 + debug: 4.4.0(supports-color@9.4.0) expect-type: 1.1.0 magic-string: 0.30.17 pathe: 2.0.3 @@ -5802,8 +13172,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.0.11(@types/node@18.19.50)(lightningcss@1.24.1) - vite-node: 3.0.5(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 6.0.11(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) + vite-node: 3.0.5(@types/node@18.19.50)(jiti@2.4.2)(lightningcss@1.24.1)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.50 @@ -5821,6 +13191,20 @@ snapshots: - tsx - yaml + wait-port@1.1.0: + dependencies: + chalk: 4.1.2 + commander: 9.5.0 + debug: 4.4.0(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + web-streams-polyfill@3.3.3: {} + webidl-conversions@3.0.1: {} whatwg-url@5.0.0: @@ -5828,6 +13212,8 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + when-exit@2.1.4: {} + which@2.0.2: dependencies: isexe: 2.0.0 @@ -5837,6 +13223,38 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + widest-line@5.0.0: + dependencies: + string-width: 7.2.0 + + windows-release@5.1.1: + dependencies: + execa: 5.1.1 + + winston-transport@4.9.0: + dependencies: + logform: 2.7.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.17.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.7.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.9.0 + workerd@1.20250310.0: optionalDependencies: '@cloudflare/workerd-darwin-64': 1.20250310.0 @@ -5868,6 +13286,12 @@ snapshots: - bufferutil - utf-8-validate + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -5880,14 +13304,65 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + ws@8.18.0: {} + ws@8.18.1: {} + + xdg-basedir@5.1.0: {} + + xss@1.0.15: + dependencies: + commander: 2.20.3 + cssfilter: 0.0.10 + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@4.0.0: {} + yallist@5.0.0: {} yaml@1.10.2: {} + yaml@2.7.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yn@3.1.1: {} + yocto-queue@0.1.0: {} + yocto-queue@1.2.1: {} + youch@3.2.3: dependencies: cookie: 0.5.0 @@ -5896,4 +13371,18 @@ snapshots: zimmerframe@1.1.2: {} + zip-stream@4.1.1: + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 + + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.7.0 + zod@3.22.3: {} + + zod@3.24.2: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3ecf23a8fd4b..bb1d4bdd8f6e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,7 @@ packages: - 'packages/*' - 'packages/adapter-cloudflare/test/apps/*' + - 'packages/adapter-netlify/test/apps/*' - 'packages/adapter-static/test/apps/*' - 'packages/kit/test/apps/*' - 'packages/kit/test/prerendering/*' From 509a5d8b86a0b000fd2eaeb4d4fe9f9f8ecf722c Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 11 Apr 2025 18:39:43 +0800 Subject: [PATCH 61/73] format --- .prettierrc | 2 ++ packages/adapter-netlify/test/apps/split/package.json | 2 +- packages/adapter-netlify/test/apps/split/svelte.config.js | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.prettierrc b/.prettierrc index 0fd4cd0a2cc1..6f9b8b43cb94 100644 --- a/.prettierrc +++ b/.prettierrc @@ -26,6 +26,8 @@ "**/.custom-out-dir/**", "**/build/**", "**/test-results/**", + "**/.netlify/**", + "**/dist/**", "documentation/**/*.md", "packages/package/test/fixtures/**/expected/**/*", "packages/package/test/watch/expected/**/*", diff --git a/packages/adapter-netlify/test/apps/split/package.json b/packages/adapter-netlify/test/apps/split/package.json index d51b477f5fb0..967c7d98433d 100644 --- a/packages/adapter-netlify/test/apps/split/package.json +++ b/packages/adapter-netlify/test/apps/split/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", - "netlify-cli": "20.0.0", + "netlify-cli": "20.0.0", "svelte": "^5.23.1", "vite": "^6.0.11" }, diff --git a/packages/adapter-netlify/test/apps/split/svelte.config.js b/packages/adapter-netlify/test/apps/split/svelte.config.js index ee3217d21192..a4365e2ed6ad 100644 --- a/packages/adapter-netlify/test/apps/split/svelte.config.js +++ b/packages/adapter-netlify/test/apps/split/svelte.config.js @@ -4,8 +4,8 @@ import adapter from '../../../index.js'; const config = { kit: { adapter: adapter({ - split: true - }) + split: true + }) } }; From 6c99e040827ef81c12772ddd5f102966ce254848 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Mon, 14 Apr 2025 14:39:30 +0800 Subject: [PATCH 62/73] fix lint --- eslint.config.js | 5 +++++ packages/adapter-vercel/tsconfig.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/eslint.config.js b/eslint.config.js index 8673a848b2c6..69836318197a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -14,6 +14,9 @@ export default [ '**/test-results', '**/build', '**/.custom-out-dir', + '**/.wrangler', + '**/.netlify', + '**/dist', 'packages/adapter-*/files' ] }, @@ -32,9 +35,11 @@ export default [ ignores: [ 'packages/adapter-cloudflare/test/apps/**/*', 'packages/adapter-netlify/test/apps/**/*', + 'packages/adapter-netlify/rollup.config.js', 'packages/adapter-node/rollup.config.js', 'packages/adapter-node/tests/smoke.spec_disabled.js', 'packages/adapter-static/test/apps/**/*', + 'packages/adapter-vercel/rollup.config.js', 'packages/create-svelte/shared/**/*', 'packages/create-svelte/templates/**/*', 'packages/kit/src/core/sync/create_manifest_data/test/samples/**/*', diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 4f8cee472937..0507b926ee98 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -14,5 +14,5 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "exclude": ["src/edge", "files"] + "include": ["src/serverless.js", "index.js", "internal.d.ts", "utils.js", "test/**/*.js"] } From a284cdc227337b51a4df84c09073e1c995b8129d Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 18:25:45 +0800 Subject: [PATCH 63/73] clean up --- packages/adapter-netlify/package.json | 4 +- packages/adapter-vercel/.gitignore | 3 +- .../{src => files}/edge/edge.js | 6 +- .../{src => files}/edge/tsconfig.json | 1 + .../edge/reroute.js => files/middleware.js} | 5 +- .../{src => files}/serverless.js | 0 packages/adapter-vercel/package.json | 9 +- packages/adapter-vercel/rollup.config.js | 17 - packages/adapter-vercel/tsconfig.json | 9 +- packages/enhanced-img/package.json | 2 +- packages/kit/package.json | 2 +- pnpm-lock.yaml | 341 +++++++++++++++--- pnpm-workspace.yaml | 1 + 13 files changed, 314 insertions(+), 86 deletions(-) rename packages/adapter-vercel/{src => files}/edge/edge.js (92%) rename packages/adapter-vercel/{src => files}/edge/tsconfig.json (91%) rename packages/adapter-vercel/{src/edge/reroute.js => files/middleware.js} (58%) rename packages/adapter-vercel/{src => files}/serverless.js (100%) delete mode 100644 packages/adapter-vercel/rollup.config.js diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 82b0df45e7d6..f0f5b4d130af 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -60,11 +60,11 @@ "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", "@types/set-cookie-parser": "catalog:", - "rollup": "^4.14.2", + "rollup": "catalog:", "typescript": "^5.3.3", "vitest": "catalog:" }, "peerDependencies": { - "@sveltejs/kit": "^2.19.0" + "@sveltejs/kit": "^2.51.0" } } diff --git a/packages/adapter-vercel/.gitignore b/packages/adapter-vercel/.gitignore index 1f664acc2b82..91dfed8d4a8b 100644 --- a/packages/adapter-vercel/.gitignore +++ b/packages/adapter-vercel/.gitignore @@ -1,3 +1,2 @@ .DS_Store -node_modules -/files \ No newline at end of file +node_modules \ No newline at end of file diff --git a/packages/adapter-vercel/src/edge/edge.js b/packages/adapter-vercel/files/edge/edge.js similarity index 92% rename from packages/adapter-vercel/src/edge/edge.js rename to packages/adapter-vercel/files/edge/edge.js index 6d22459898ff..e35952d3cf0a 100644 --- a/packages/adapter-vercel/src/edge/edge.js +++ b/packages/adapter-vercel/files/edge/edge.js @@ -49,9 +49,8 @@ const initialized = server.init({ /** * @param {Request} request - * @param {import('@vercel/edge').RequestContext} context */ -export default async (request, context) => { +export default async (request) => { if (!origin) { origin = new URL(request.url).origin; await initialized; @@ -60,9 +59,6 @@ export default async (request, context) => { return server.respond(request, { getClientAddress() { return /** @type {string} */ (request.headers.get('x-forwarded-for')); - }, - platform: { - context } }); }; diff --git a/packages/adapter-vercel/src/edge/tsconfig.json b/packages/adapter-vercel/files/edge/tsconfig.json similarity index 91% rename from packages/adapter-vercel/src/edge/tsconfig.json rename to packages/adapter-vercel/files/edge/tsconfig.json index 111b433e9599..4112238c3faa 100644 --- a/packages/adapter-vercel/src/edge/tsconfig.json +++ b/packages/adapter-vercel/files/edge/tsconfig.json @@ -5,6 +5,7 @@ "strict": true, "noEmit": true, "noImplicitAny": true, + "strictNullChecks": true, "target": "es2022", "module": "es2022", "moduleResolution": "bundler", diff --git a/packages/adapter-vercel/src/edge/reroute.js b/packages/adapter-vercel/files/middleware.js similarity index 58% rename from packages/adapter-vercel/src/edge/reroute.js rename to packages/adapter-vercel/files/middleware.js index 595230dcb95f..4751f66dc683 100644 --- a/packages/adapter-vercel/src/edge/reroute.js +++ b/packages/adapter-vercel/files/middleware.js @@ -1,5 +1,4 @@ import { reroute } from '__HOOKS__'; -import { rewrite } from '@vercel/edge'; import { applyReroute } from '@sveltejs/kit/adapter'; /** @@ -8,5 +7,7 @@ import { applyReroute } from '@sveltejs/kit/adapter'; */ export default async function middleware(request) { const resolved_url = await applyReroute(request.url, reroute); - return rewrite(resolved_url); + // We have to use a fetch here because Vercel's edge rewrite discards query + // parameters without values. See https://github.com/vercel/vercel/issues/12902 + return fetch(resolved_url, request); } diff --git a/packages/adapter-vercel/src/serverless.js b/packages/adapter-vercel/files/serverless.js similarity index 100% rename from packages/adapter-vercel/src/serverless.js rename to packages/adapter-vercel/files/serverless.js diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index f48cd3898a41..d0f72d4a64c8 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -35,21 +35,16 @@ "ambient.d.ts" ], "scripts": { - "dev": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -cw", - "build": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -c && node -e \"fs.cpSync('src/serverless.js', 'files/serverless.js'); fs.cpSync('src/edge/edge.js', 'files/edge/edge.js')\"", "lint": "prettier --check .", "format": "pnpm lint --write", "check": "tsc", - "test": "vitest run", - "prepublishOnly": "pnpm build" + "test": "vitest run" }, "dependencies": { - "@vercel/edge": "^1.2.1", "@vercel/nft": "^1.0.0", "esbuild": "^0.25.4" }, "devDependencies": { - "@rollup/plugin-node-resolve": "^15.3.0", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "catalog:", "@types/node": "catalog:", @@ -57,7 +52,7 @@ "vitest": "catalog:" }, "peerDependencies": { - "@sveltejs/kit": "^2.19.0" + "@sveltejs/kit": "^2.51.0" }, "engines": { "node": ">=20.0" diff --git a/packages/adapter-vercel/rollup.config.js b/packages/adapter-vercel/rollup.config.js deleted file mode 100644 index 394510d7a56a..000000000000 --- a/packages/adapter-vercel/rollup.config.js +++ /dev/null @@ -1,17 +0,0 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; - -/** @type {import('rollup').RollupOptions} */ -const config = { - input: { - reroute: 'src/edge/reroute.js' - }, - output: { - dir: 'files/edge', - format: 'esm' - }, - plugins: [nodeResolve({ preferBuiltins: true })], - external: (id) => id === '__HOOKS__', - preserveEntrySignatures: 'exports-only' -}; - -export default config; diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 01e4b3f597d4..8b474bef592f 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -15,5 +15,12 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["src/serverless.js", "index.js", "internal.d.ts", "utils.js", "test/**/*.js"] + "include": [ + "files/serverless.js", + "files/middleware.js", + "index.js", + "internal.d.ts", + "utils.js", + "test/**/*.js" + ] } diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index fca5b03830c7..a05cfe6ebac2 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", + "rollup": "catalog:", "svelte": "catalog:", "typescript": "^5.6.3", "vite": "catalog:", diff --git a/packages/kit/package.json b/packages/kit/package.json index 4adfb60287f8..7c33b3e9e636 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -40,7 +40,7 @@ "@types/node": "catalog:", "@types/set-cookie-parser": "catalog:", "dts-buddy": "catalog:", - "rollup": "^4.14.2", + "rollup": "catalog:", "svelte": "catalog:", "svelte-preprocess": "catalog:", "typescript": "^5.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc54bdb43a6e..4bcb20f482a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,6 +87,9 @@ catalogs: publint: specifier: ^0.3.0 version: 0.3.0 + rollup: + specifier: ^4.57.1 + version: 4.57.1 sirv-cli: specifier: ^3.0.0 version: 3.0.0 @@ -249,7 +252,7 @@ importers: devDependencies: '@netlify/dev': specifier: 'catalog:' - version: 4.8.8(@netlify/api@14.0.12)(rollup@4.50.1) + version: 4.8.8(@netlify/api@14.0.12)(rollup@4.57.1) '@netlify/edge-functions': specifier: 'catalog:' version: 3.0.3 @@ -264,13 +267,13 @@ importers: version: 2.3.0 '@rollup/plugin-commonjs': specifier: 'catalog:' - version: 28.0.1(rollup@4.50.1) + version: 28.0.1(rollup@4.57.1) '@rollup/plugin-json': specifier: 'catalog:' - version: 6.1.0(rollup@4.50.1) + version: 6.1.0(rollup@4.57.1) '@rollup/plugin-node-resolve': specifier: 'catalog:' - version: 16.0.0(rollup@4.50.1) + version: 16.0.0(rollup@4.57.1) '@sveltejs/kit': specifier: workspace:^ version: link:../kit @@ -284,8 +287,8 @@ importers: specifier: 'catalog:' version: 2.4.7 rollup: - specifier: ^4.14.2 - version: 4.50.1 + specifier: 'catalog:' + version: 4.57.1 typescript: specifier: ^5.3.3 version: 5.8.3 @@ -443,19 +446,13 @@ importers: packages/adapter-vercel: dependencies: - '@vercel/edge': - specifier: ^1.2.1 - version: 1.2.2 '@vercel/nft': specifier: ^1.0.0 - version: 1.0.0(rollup@4.50.1) + version: 1.0.0(rollup@4.57.1) esbuild: specifier: ^0.25.4 version: 0.25.9 devDependencies: - '@rollup/plugin-node-resolve': - specifier: ^15.3.0 - version: 15.3.1(rollup@4.50.1) '@sveltejs/kit': specifier: workspace:^ version: link:../kit @@ -494,7 +491,7 @@ importers: version: 0.1.5(svelte@5.48.4) vite-imagetools: specifier: ^9.0.2 - version: 9.0.2(rollup@4.50.1) + version: 9.0.2(rollup@4.57.1) zimmerframe: specifier: ^1.1.2 version: 1.1.2 @@ -509,8 +506,8 @@ importers: specifier: 'catalog:' version: 18.19.119 rollup: - specifier: ^4.27.4 - version: 4.50.1 + specifier: 'catalog:' + version: 4.57.1 svelte: specifier: 'catalog:' version: 5.48.4 @@ -606,8 +603,8 @@ importers: specifier: 'catalog:' version: 0.6.2(typescript@5.8.3) rollup: - specifier: ^4.14.2 - version: 4.50.1 + specifier: 'catalog:' + version: 4.57.1 svelte: specifier: 'catalog:' version: 5.48.4 @@ -2964,15 +2961,6 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@15.3.1': - resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.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'} @@ -2996,51 +2984,111 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.57.1': + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.50.1': resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.57.1': + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.50.1': resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.57.1': + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.50.1': resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.57.1': + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.50.1': resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.57.1': + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.50.1': resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.57.1': + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.50.1': resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.50.1': resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.57.1': + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.50.1': resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.57.1': + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.57.1': + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.57.1': + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} cpu: [loong64] @@ -3051,51 +3099,116 @@ packages: cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.57.1': + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.50.1': resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-riscv64-musl@4.50.1': resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-musl@4.57.1': + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.50.1': resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.57.1': + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.50.1': resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.57.1': + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.50.1': resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.57.1': + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.57.1': + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} + cpu: [x64] + os: [openbsd] + '@rollup/rollup-openharmony-arm64@4.50.1': resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.57.1': + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.50.1': resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.57.1': + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.50.1': resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.57.1': + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.57.1': + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.50.1': resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.57.1': + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} + cpu: [x64] + os: [win32] + '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -3296,9 +3409,6 @@ packages: resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vercel/edge@1.2.2': - resolution: {integrity: sha512-1+y+f6rk0Yc9ss9bRDgz/gdpLimwoRteKHhrcgHvEpjbP1nyT3ByqEMWm2BTcpIO5UtDmIFXc8zdq4LR190PDA==} - '@vercel/nft@0.29.4': resolution: {integrity: sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==} engines: {node: '>=18'} @@ -5305,6 +5415,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.57.1: + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -6928,14 +7043,14 @@ snapshots: uuid: 13.0.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.8.8(@netlify/api@14.0.12)(rollup@4.50.1)': + '@netlify/dev@4.8.8(@netlify/api@14.0.12)(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/dev-utils': 4.3.3 '@netlify/edge-functions-dev': 1.0.8 - '@netlify/functions-dev': 1.1.8(rollup@4.50.1) + '@netlify/functions-dev': 1.1.8(rollup@4.57.1) '@netlify/headers': 2.1.3 '@netlify/images': 1.3.3(@netlify/blobs@10.5.0) '@netlify/redirects': 3.1.4 @@ -7003,12 +7118,12 @@ snapshots: dependencies: '@netlify/types': 2.3.0 - '@netlify/functions-dev@1.1.8(rollup@4.50.1)': + '@netlify/functions-dev@1.1.8(rollup@4.57.1)': dependencies: '@netlify/blobs': 10.5.0 '@netlify/dev-utils': 4.3.3 '@netlify/functions': 5.1.2 - '@netlify/zip-it-and-ship-it': 14.2.0(rollup@4.50.1) + '@netlify/zip-it-and-ship-it': 14.2.0(rollup@4.57.1) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -7111,13 +7226,13 @@ snapshots: '@netlify/types@2.3.0': {} - '@netlify/zip-it-and-ship-it@14.2.0(rollup@4.50.1)': + '@netlify/zip-it-and-ship-it@14.2.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 - '@vercel/nft': 0.29.4(rollup@4.50.1) + '@vercel/nft': 0.29.4(rollup@4.57.1) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.0.0 @@ -7557,13 +7672,31 @@ snapshots: optionalDependencies: rollup: 4.50.1 + '@rollup/plugin-commonjs@28.0.1(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.50.1)': dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.50.1) optionalDependencies: rollup: 4.50.1 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.50.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.50.1)': dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.50.1) '@types/resolve': 1.20.2 @@ -7573,15 +7706,15 @@ snapshots: optionalDependencies: rollup: 4.50.1 - '@rollup/plugin-node-resolve@16.0.0(rollup@4.50.1)': + '@rollup/plugin-node-resolve@16.0.0(rollup@4.57.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.50.1) + '@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.50.1 + rollup: 4.57.1 '@rollup/pluginutils@5.1.3(rollup@4.50.1)': dependencies: @@ -7591,69 +7724,152 @@ snapshots: optionalDependencies: rollup: 4.50.1 + '@rollup/pluginutils@5.1.3(rollup@4.57.1)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.57.1 + '@rollup/rollup-android-arm-eabi@4.50.1': optional: true + '@rollup/rollup-android-arm-eabi@4.57.1': + optional: true + '@rollup/rollup-android-arm64@4.50.1': optional: true + '@rollup/rollup-android-arm64@4.57.1': + optional: true + '@rollup/rollup-darwin-arm64@4.50.1': optional: true + '@rollup/rollup-darwin-arm64@4.57.1': + optional: true + '@rollup/rollup-darwin-x64@4.50.1': optional: true + '@rollup/rollup-darwin-x64@4.57.1': + optional: true + '@rollup/rollup-freebsd-arm64@4.50.1': optional: true + '@rollup/rollup-freebsd-arm64@4.57.1': + optional: true + '@rollup/rollup-freebsd-x64@4.50.1': optional: true + '@rollup/rollup-freebsd-x64@4.57.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.50.1': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.50.1': optional: true + '@rollup/rollup-linux-arm64-gnu@4.57.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.50.1': optional: true + '@rollup/rollup-linux-arm64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.57.1': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': optional: true '@rollup/rollup-linux-ppc64-gnu@4.50.1': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.57.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.50.1': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.50.1': optional: true + '@rollup/rollup-linux-riscv64-musl@4.57.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.50.1': optional: true + '@rollup/rollup-linux-s390x-gnu@4.57.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.50.1': optional: true + '@rollup/rollup-linux-x64-gnu@4.57.1': + optional: true + '@rollup/rollup-linux-x64-musl@4.50.1': optional: true + '@rollup/rollup-linux-x64-musl@4.57.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.57.1': + optional: true + '@rollup/rollup-openharmony-arm64@4.50.1': optional: true + '@rollup/rollup-openharmony-arm64@4.57.1': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.50.1': optional: true + '@rollup/rollup-win32-arm64-msvc@4.57.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.50.1': optional: true + '@rollup/rollup-win32-ia32-msvc@4.57.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.57.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.50.1': optional: true + '@rollup/rollup-win32-x64-msvc@4.57.1': + optional: true + '@standard-schema/spec@1.0.0': {} '@stylistic/eslint-plugin-js@2.1.0(eslint@9.34.0(jiti@2.4.2))': @@ -7910,12 +8126,10 @@ snapshots: '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 - '@vercel/edge@1.2.2': {} - - '@vercel/nft@0.29.4(rollup@4.50.1)': + '@vercel/nft@0.29.4(rollup@4.57.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.1.3(rollup@4.50.1) + '@rollup/pluginutils': 5.1.3(rollup@4.57.1) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -7931,10 +8145,10 @@ snapshots: - rollup - supports-color - '@vercel/nft@1.0.0(rollup@4.50.1)': + '@vercel/nft@1.0.0(rollup@4.57.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.1.3(rollup@4.50.1) + '@rollup/pluginutils': 5.1.3(rollup@4.57.1) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -10035,6 +10249,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.50.1 fsevents: 2.3.3 + rollup@4.57.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.57.1 + '@rollup/rollup-android-arm64': 4.57.1 + '@rollup/rollup-darwin-arm64': 4.57.1 + '@rollup/rollup-darwin-x64': 4.57.1 + '@rollup/rollup-freebsd-arm64': 4.57.1 + '@rollup/rollup-freebsd-x64': 4.57.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1 + '@rollup/rollup-linux-arm64-gnu': 4.57.1 + '@rollup/rollup-linux-arm64-musl': 4.57.1 + '@rollup/rollup-linux-loong64-gnu': 4.57.1 + '@rollup/rollup-linux-loong64-musl': 4.57.1 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1 + '@rollup/rollup-linux-ppc64-musl': 4.57.1 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1 + '@rollup/rollup-linux-riscv64-musl': 4.57.1 + '@rollup/rollup-linux-s390x-gnu': 4.57.1 + '@rollup/rollup-linux-x64-gnu': 4.57.1 + '@rollup/rollup-linux-x64-musl': 4.57.1 + '@rollup/rollup-openbsd-x64': 4.57.1 + '@rollup/rollup-openharmony-arm64': 4.57.1 + '@rollup/rollup-win32-arm64-msvc': 4.57.1 + '@rollup/rollup-win32-ia32-msvc': 4.57.1 + '@rollup/rollup-win32-x64-gnu': 4.57.1 + '@rollup/rollup-win32-x64-msvc': 4.57.1 + fsevents: 2.3.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -10513,9 +10758,9 @@ snapshots: validate-npm-package-name@5.0.1: {} - vite-imagetools@9.0.2(rollup@4.50.1): + vite-imagetools@9.0.2(rollup@4.57.1): dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.50.1) + '@rollup/pluginutils': 5.1.3(rollup@4.57.1) imagetools-core: 9.1.0 sharp: 0.34.4 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 786005a44403..19e32cc68fc4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -41,6 +41,7 @@ catalog: eslint: ^9.34.0 polka: ^1.0.0-next.28 publint: ^0.3.0 + rollup: ^4.57.1 semver: ^7.5.4 sirv-cli: ^3.0.0 svelte: ^5.48.4 From c0234f5d2f9f3147f5023c4d29ffbcbaed032bc9 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 19:06:41 +0800 Subject: [PATCH 64/73] re-add edge function rewrite --- eslint.config.js | 2 - packages/adapter-netlify/rollup.config.js | 2 +- packages/adapter-netlify/tsconfig.json | 2 +- packages/adapter-vercel/files/edge.js | 67 ++++++ packages/adapter-vercel/files/reroute.js | 226 ++++++++++++++++++ packages/adapter-vercel/files/serverless.js | 17 +- packages/adapter-vercel/package.json | 10 +- packages/adapter-vercel/rollup.config.js | 42 ++++ .../{files => src}/edge/edge.js | 0 .../{files => src}/edge/tsconfig.json | 0 .../{files/middleware.js => src/reroute.js} | 5 +- packages/adapter-vercel/src/serverless.js | 42 ++++ packages/adapter-vercel/tsconfig.json | 7 +- pnpm-lock.yaml | 34 +++ 14 files changed, 443 insertions(+), 13 deletions(-) create mode 100644 packages/adapter-vercel/files/edge.js create mode 100644 packages/adapter-vercel/files/reroute.js create mode 100644 packages/adapter-vercel/rollup.config.js rename packages/adapter-vercel/{files => src}/edge/edge.js (100%) rename packages/adapter-vercel/{files => src}/edge/tsconfig.json (100%) rename packages/adapter-vercel/{files/middleware.js => src/reroute.js} (58%) create mode 100644 packages/adapter-vercel/src/serverless.js diff --git a/eslint.config.js b/eslint.config.js index 88e35fcc33bc..dc2cf2594401 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -54,11 +54,9 @@ export default [ 'packages/adapter-cloudflare/test/apps/**/*', 'packages/adapter-netlify/test/preview.js', 'packages/adapter-netlify/test/apps/**/*', - 'packages/adapter-netlify/rollup.config.js', 'packages/adapter-node/rollup.config.js', 'packages/adapter-node/tests/smoke.spec_disabled.js', 'packages/adapter-static/test/apps/**/*', - 'packages/adapter-vercel/rollup.config.js', 'packages/kit/src/core/sync/create_manifest_data/test/samples/**/*', 'packages/kit/test/apps/**/*', 'packages/kit/test/build-errors/**/*', diff --git a/packages/adapter-netlify/rollup.config.js b/packages/adapter-netlify/rollup.config.js index 8edda279f2b5..e9f9528ccce0 100644 --- a/packages/adapter-netlify/rollup.config.js +++ b/packages/adapter-netlify/rollup.config.js @@ -28,7 +28,7 @@ const config = { serverless: 'src/serverless.js', shims: 'src/shims.js', edge: 'src/edge.js', - reroute: 'files/reroute.js' + reroute: 'src/reroute.js' }, output: { dir: 'files', diff --git a/packages/adapter-netlify/tsconfig.json b/packages/adapter-netlify/tsconfig.json index dea249a03366..698181052278 100644 --- a/packages/adapter-netlify/tsconfig.json +++ b/packages/adapter-netlify/tsconfig.json @@ -14,5 +14,5 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["index.js", "src/**/*.js", "internal.d.ts", "test/utils.js"] + "include": ["index.js", "src/**/*.js", "internal.d.ts", "test/utils.js", "rollup.config.js"] } diff --git a/packages/adapter-vercel/files/edge.js b/packages/adapter-vercel/files/edge.js new file mode 100644 index 000000000000..4e74d8ff1603 --- /dev/null +++ b/packages/adapter-vercel/files/edge.js @@ -0,0 +1,67 @@ +import { Server } from 'SERVER'; +import { manifest } from 'MANIFEST'; + +/* eslint-disable n/prefer-global/process -- + Vercel Edge Runtime does not support node:process */ + +const server = new Server(manifest); + +/** @type {HeadersInit | undefined} */ +let read_headers; +if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) { + read_headers = { + 'x-vercel-protection-bypass': process.env.VERCEL_AUTOMATION_BYPASS_SECRET + }; +} + +/** + * We don't know the origin until we receive a request, but + * that's guaranteed to happen before we call `read` + * @type {string} + */ +let origin; + +const initialized = server.init({ + env: /** @type {Record} */ (process.env), + read: async (file) => { + const url = `${origin}/${file}`; + const response = await fetch(url, { + // we need to add a bypass header if the user has deployment protection enabled + // see https://vercel.com/docs/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation + headers: read_headers + }); + + if (!response.ok) { + if (response.status === 401) { + throw new Error( + `Please enable Protection Bypass for Automation: https://svelte.dev/docs/kit/adapter-vercel#Troubleshooting-Deployment-protection` + ); + } + + // belt and braces — not sure how we could end up here + throw new Error( + `read(...) failed: could not fetch ${url} (${response.status} ${response.statusText})` + ); + } + + return response.body; + } +}); + +/** + * @param {Request} request + */ +var edge = async (request) => { + if (!origin) { + origin = new URL(request.url).origin; + await initialized; + } + + return server.respond(request, { + getClientAddress() { + return /** @type {string} */ (request.headers.get('x-forwarded-for')); + } + }); +}; + +export { edge as default }; diff --git a/packages/adapter-vercel/files/reroute.js b/packages/adapter-vercel/files/reroute.js new file mode 100644 index 000000000000..7b03a0e3c125 --- /dev/null +++ b/packages/adapter-vercel/files/reroute.js @@ -0,0 +1,226 @@ +import { reroute } from '__HOOKS__'; + +new TextEncoder(); +new TextDecoder(); + +/** @import { Transport } from '@sveltejs/kit' */ + +/** + * If an adapter enables running reroute early in its own server, the original + * pathname is stored in this query parameter + */ +const ORIGINAL_PATH_PARAM = 'x-sveltekit-original-path'; + +const DATA_SUFFIX = '/__data.json'; +const HTML_DATA_SUFFIX = '.html__data.json'; + +/** @param {string} pathname */ +function has_data_suffix(pathname) { + return pathname.endsWith(DATA_SUFFIX) || pathname.endsWith(HTML_DATA_SUFFIX); +} + +/** @param {string} pathname */ +function add_data_suffix(pathname) { + if (pathname.endsWith('.html')) return pathname.replace(/\.html$/, HTML_DATA_SUFFIX); + return pathname.replace(/\/$/, '') + DATA_SUFFIX; +} + +/** @param {string} pathname */ +function strip_data_suffix(pathname) { + if (pathname.endsWith(HTML_DATA_SUFFIX)) { + return pathname.slice(0, -HTML_DATA_SUFFIX.length) + '.html'; + } + + return pathname.slice(0, -DATA_SUFFIX.length); +} + +const ROUTE_SUFFIX = '/__route.js'; + +/** + * @param {string} pathname + * @returns {boolean} + */ +function has_resolution_suffix(pathname) { + return pathname.endsWith(ROUTE_SUFFIX); +} + +/** + * Convert a regular URL to a route to send to SvelteKit's server-side route resolution endpoint + * @param {string} pathname + * @returns {string} + */ +function add_resolution_suffix(pathname) { + return pathname.replace(/\/$/, '') + ROUTE_SUFFIX; +} + +/** + * @param {string} pathname + * @returns {string} + */ +function strip_resolution_suffix(pathname) { + return pathname.slice(0, -ROUTE_SUFFIX.length); +} + +/** @import { StandardSchemaV1 } from '@standard-schema/spec' */ + + +/** + * Strips possible SvelteKit-internal suffixes and trailing slashes from the URL pathname. + * Returns the normalized URL as well as a method for adding the potential suffix back + * based on a new pathname (possibly including search) or URL. + * ```js + * import { normalizeUrl } from '@sveltejs/kit'; + * + * const { url, denormalize } = normalizeUrl('/blog/post/__data.json'); + * console.log(url.pathname); // /blog/post + * console.log(denormalize('/blog/post/a')); // /blog/post/a/__data.json + * ``` + * @param {URL | string} url + * @returns {{ url: URL, wasNormalized: boolean, denormalize: (url?: string | URL) => URL }} + * @since 2.18.0 + */ +function normalizeUrl(url) { + url = new URL(url, 'http://internal'); + + const is_route_resolution = has_resolution_suffix(url.pathname); + const is_data_request = has_data_suffix(url.pathname); + const has_trailing_slash = url.pathname !== '/' && url.pathname.endsWith('/'); + + if (is_route_resolution) { + url.pathname = strip_resolution_suffix(url.pathname); + } else if (is_data_request) { + url.pathname = strip_data_suffix(url.pathname); + } else if (has_trailing_slash) { + url.pathname = url.pathname.slice(0, -1); + } + + return { + url, + wasNormalized: is_data_request || is_route_resolution || has_trailing_slash, + denormalize: (new_url = url) => { + new_url = new URL(new_url, url); + if (is_route_resolution) { + new_url.pathname = add_resolution_suffix(new_url.pathname); + } else if (is_data_request) { + new_url.pathname = add_data_suffix(new_url.pathname); + } else if (has_trailing_slash && !new_url.pathname.endsWith('/')) { + new_url.pathname += '/'; + } + return new_url; + } + }; +} + +/** + * If your deployment platform supports splitting your app into multiple functions, + * you should run this in a middleware that runs before the main handler + * to reroute the request to the correct function and [generate a server-side manifest](https://svelte.dev/docs/kit/@sveltejs-kit#Builder) + * with the `rerouteMiddleware` option set to `true`. + * @example + * ```js + * import { applyReroute } from '@sveltejs/kit/adapter'; + * // replace __HOOKS__ with the path to the reroute hook obtained from `builder.getReroutePath()` + * import { reroute } from '__HOOKS__'; + * + * export default function middleware(request) { + * return applyReroute(request.url, reroute); + * } + * ``` + * @param {string} url + * @param {import("@sveltejs/kit").Reroute} reroute + * @returns {Promise} + * @since 2.51.0 + */ +async function applyReroute(url, reroute) { + const url_copy = new URL(url); + url_copy.searchParams.set(ORIGINAL_PATH_PARAM, url_copy.pathname); + + const { url: normalized_url, denormalize } = normalizeUrl(url); + const resolved_path = await reroute({ url: normalized_url, fetch }); + + // bail out if there were no changes to the pathname + if (!resolved_path || resolved_path === url_copy.pathname) { + // we always return a URL with the x-sveltekit-original-path param set + // so that the requester can't fake it + return url_copy; + } + + url_copy.pathname = resolved_path; + return denormalize(url_copy); +} + +var middleware$1; +var hasRequiredMiddleware; + +function requireMiddleware () { + if (hasRequiredMiddleware) return middleware$1; + hasRequiredMiddleware = 1; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + var middleware_exports = {}; + __export(middleware_exports, { + next: () => next, + rewrite: () => rewrite + }); + middleware$1 = __toCommonJS(middleware_exports); + function handleMiddlewareField(init, headers) { + if (init?.request?.headers) { + if (!(init.request.headers instanceof Headers)) { + throw new Error("request.headers must be an instance of Headers"); + } + const keys = []; + for (const [key, value] of init.request.headers) { + headers.set("x-middleware-request-" + key, value); + keys.push(key); + } + headers.set("x-middleware-override-headers", keys.join(",")); + } + } + function rewrite(destination, init) { + const headers = new Headers(init?.headers ?? {}); + headers.set("x-middleware-rewrite", String(destination)); + handleMiddlewareField(init, headers); + return new Response(null, { + ...init, + headers + }); + } + function next(init) { + const headers = new Headers(init?.headers ?? {}); + headers.set("x-middleware-next", "1"); + handleMiddlewareField(init, headers); + return new Response(null, { + ...init, + headers + }); + } + return middleware$1; +} + +var middlewareExports = requireMiddleware(); + +/** + * @param {Request} request + * @returns {Promise} + */ +async function middleware(request) { + const resolved_url = await applyReroute(request.url, reroute); + return middlewareExports.rewrite(resolved_url); +} + +export { middleware as default }; diff --git a/packages/adapter-vercel/files/serverless.js b/packages/adapter-vercel/files/serverless.js index fb818ba067a5..3d6ab7c79353 100644 --- a/packages/adapter-vercel/files/serverless.js +++ b/packages/adapter-vercel/files/serverless.js @@ -1,8 +1,19 @@ -import { createReadableStream } from '@sveltejs/kit/node'; +import { createReadStream } from 'node:fs'; +import { Readable } from 'node:stream'; import { Server } from 'SERVER'; import { manifest } from 'MANIFEST'; import process from 'node:process'; +/** + * Converts a file on disk to a readable stream + * @param {string} file + * @returns {ReadableStream} + * @since 2.4.0 + */ +function createReadableStream(file) { + return /** @type {ReadableStream} */ (Readable.toWeb(createReadStream(file))); +} + const server = new Server(manifest); await server.init({ @@ -12,7 +23,7 @@ await server.init({ const DATA_SUFFIX = '/__data.json'; -export default { +var serverless = { /** * @param {Request} request * @returns {Promise} @@ -40,3 +51,5 @@ export default { }); } }; + +export { serverless as default }; diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index d0f72d4a64c8..4aa79d353bb3 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -35,10 +35,13 @@ "ambient.d.ts" ], "scripts": { + "dev": "rollup -cw", + "build": "rollup -c", "lint": "prettier --check .", "format": "pnpm lint --write", "check": "tsc", - "test": "vitest run" + "test": "vitest run", + "prepublishOnly": "pnpm build" }, "dependencies": { "@vercel/nft": "^1.0.0", @@ -47,7 +50,12 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "catalog:", + "@rollup/plugin-commonjs": "catalog:", + "@rollup/plugin-json": "catalog:", + "@rollup/plugin-node-resolve": "catalog:", "@types/node": "catalog:", + "@vercel/functions": "^3.4.0", + "rollup": "catalog:", "typescript": "^5.3.3", "vitest": "catalog:" }, diff --git a/packages/adapter-vercel/rollup.config.js b/packages/adapter-vercel/rollup.config.js new file mode 100644 index 000000000000..3486541709bb --- /dev/null +++ b/packages/adapter-vercel/rollup.config.js @@ -0,0 +1,42 @@ +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import json from '@rollup/plugin-json'; +import { rmSync } from 'node:fs'; + +const EXTERNAL = new Set(['SERVER', 'MANIFEST', '__HOOKS__']); + +/** + * @param {string} filepath + * @returns {import('rollup').Plugin} + */ +function clearOutput(filepath) { + return { + name: 'clear-output', + buildStart: { + order: 'pre', + sequential: true, + handler() { + rmSync(filepath, { recursive: true, force: true }); + } + } + }; +} + +/** @type {import('rollup').RollupOptions} */ +const config = { + input: { + serverless: 'src/serverless.js', + edge: 'src/edge/edge.js', + reroute: 'src/reroute.js' + }, + output: { + dir: 'files', + format: 'esm' + }, + // @ts-ignore https://github.com/rollup/plugins/issues/1329 + plugins: [clearOutput('files'), nodeResolve({ preferBuiltins: true }), commonjs(), json()], + external: (id) => EXTERNAL.has(id) || id.startsWith('node:'), + preserveEntrySignatures: 'exports-only' +}; + +export default config; diff --git a/packages/adapter-vercel/files/edge/edge.js b/packages/adapter-vercel/src/edge/edge.js similarity index 100% rename from packages/adapter-vercel/files/edge/edge.js rename to packages/adapter-vercel/src/edge/edge.js diff --git a/packages/adapter-vercel/files/edge/tsconfig.json b/packages/adapter-vercel/src/edge/tsconfig.json similarity index 100% rename from packages/adapter-vercel/files/edge/tsconfig.json rename to packages/adapter-vercel/src/edge/tsconfig.json diff --git a/packages/adapter-vercel/files/middleware.js b/packages/adapter-vercel/src/reroute.js similarity index 58% rename from packages/adapter-vercel/files/middleware.js rename to packages/adapter-vercel/src/reroute.js index 4751f66dc683..3273c3ae5b8b 100644 --- a/packages/adapter-vercel/files/middleware.js +++ b/packages/adapter-vercel/src/reroute.js @@ -1,5 +1,6 @@ import { reroute } from '__HOOKS__'; import { applyReroute } from '@sveltejs/kit/adapter'; +import { rewrite } from '@vercel/functions/middleware'; /** * @param {Request} request @@ -7,7 +8,5 @@ import { applyReroute } from '@sveltejs/kit/adapter'; */ export default async function middleware(request) { const resolved_url = await applyReroute(request.url, reroute); - // We have to use a fetch here because Vercel's edge rewrite discards query - // parameters without values. See https://github.com/vercel/vercel/issues/12902 - return fetch(resolved_url, request); + return rewrite(resolved_url); } diff --git a/packages/adapter-vercel/src/serverless.js b/packages/adapter-vercel/src/serverless.js new file mode 100644 index 000000000000..fb818ba067a5 --- /dev/null +++ b/packages/adapter-vercel/src/serverless.js @@ -0,0 +1,42 @@ +import { createReadableStream } from '@sveltejs/kit/node'; +import { Server } from 'SERVER'; +import { manifest } from 'MANIFEST'; +import process from 'node:process'; + +const server = new Server(manifest); + +await server.init({ + env: /** @type {Record} */ (process.env), + read: createReadableStream +}); + +const DATA_SUFFIX = '/__data.json'; + +export default { + /** + * @param {Request} request + * @returns {Promise} + */ + fetch(request) { + // If this is an ISR request, the requested pathname is encoded + // as a search parameter, so we need to extract it + const url = new URL(request.url); + let pathname = url.searchParams.get('__pathname'); + + if (pathname) { + // Optional routes' pathname replacements look like `/foo/$1/bar` which means we could end up with an url like /foo//bar + pathname = pathname.replace(/\/+/g, '/'); + + url.pathname = pathname + (url.pathname.endsWith(DATA_SUFFIX) ? DATA_SUFFIX : ''); + url.searchParams.delete('__pathname'); + + request = new Request(url, request); + } + + return server.respond(request, { + getClientAddress() { + return /** @type {string} */ (request.headers.get('x-forwarded-for')); + } + }); + } +}; diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 8b474bef592f..0e3783b47bea 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -16,11 +16,12 @@ } }, "include": [ - "files/serverless.js", - "files/middleware.js", + "src/serverless.js", + "src/reroute.js", "index.js", "internal.d.ts", "utils.js", - "test/**/*.js" + "test/**/*.js", + "rollup.config.js" ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37d4229a6b3e..3f2ebfed0273 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -453,6 +453,15 @@ importers: specifier: ^0.25.4 version: 0.25.9 devDependencies: + '@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 @@ -462,6 +471,12 @@ importers: '@types/node': specifier: 'catalog:' version: 18.19.119 + '@vercel/functions': + specifier: ^3.4.0 + version: 3.4.0 + rollup: + specifier: 'catalog:' + version: 4.57.1 typescript: specifier: ^5.3.3 version: 5.8.3 @@ -3409,6 +3424,15 @@ packages: resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vercel/functions@3.4.0': + resolution: {integrity: sha512-lKWDWEhFcpt/zL3ueWqII8W5BY73MC5WUuZyudditbbya6mP8jCLQEuXBxJetpEKgnEn+5xCyK962rw4v1RSVA==} + engines: {node: '>= 20'} + peerDependencies: + '@aws-sdk/credential-provider-web-identity': '*' + peerDependenciesMeta: + '@aws-sdk/credential-provider-web-identity': + optional: true + '@vercel/nft@0.29.4': resolution: {integrity: sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==} engines: {node: '>=18'} @@ -3419,6 +3443,10 @@ packages: engines: {node: '>=20'} hasBin: true + '@vercel/oidc@3.1.0': + resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==} + engines: {node: '>= 20'} + '@vitest/browser-playwright@4.0.16': resolution: {integrity: sha512-I2Fy/ANdphi1yI46d15o0M1M4M0UJrUiVKkH5oKeRZZCdPg0fw/cfTKZzv9Ge9eobtJYp4BGblMzXdXH0vcl5g==} peerDependencies: @@ -8126,6 +8154,10 @@ snapshots: '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 + '@vercel/functions@3.4.0': + dependencies: + '@vercel/oidc': 3.1.0 + '@vercel/nft@0.29.4(rollup@4.57.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 @@ -8164,6 +8196,8 @@ snapshots: - rollup - supports-color + '@vercel/oidc@3.1.0': {} + '@vitest/browser-playwright@4.0.16(playwright@1.56.0)(vite@6.3.6(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16)': dependencies: '@vitest/browser': 4.0.16(vite@6.3.6(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))(vitest@4.0.16) From 70bab35a31d4b35b3c322a2d132938edd6cbd754 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 19:08:46 +0800 Subject: [PATCH 65/73] git ignore --- packages/adapter-vercel/.gitignore | 3 +- packages/adapter-vercel/files/edge.js | 67 ------ packages/adapter-vercel/files/reroute.js | 226 -------------------- packages/adapter-vercel/files/serverless.js | 55 ----- 4 files changed, 2 insertions(+), 349 deletions(-) delete mode 100644 packages/adapter-vercel/files/edge.js delete mode 100644 packages/adapter-vercel/files/reroute.js delete mode 100644 packages/adapter-vercel/files/serverless.js diff --git a/packages/adapter-vercel/.gitignore b/packages/adapter-vercel/.gitignore index 91dfed8d4a8b..847a92e0c157 100644 --- a/packages/adapter-vercel/.gitignore +++ b/packages/adapter-vercel/.gitignore @@ -1,2 +1,3 @@ .DS_Store -node_modules \ No newline at end of file +node_modules +/files diff --git a/packages/adapter-vercel/files/edge.js b/packages/adapter-vercel/files/edge.js deleted file mode 100644 index 4e74d8ff1603..000000000000 --- a/packages/adapter-vercel/files/edge.js +++ /dev/null @@ -1,67 +0,0 @@ -import { Server } from 'SERVER'; -import { manifest } from 'MANIFEST'; - -/* eslint-disable n/prefer-global/process -- - Vercel Edge Runtime does not support node:process */ - -const server = new Server(manifest); - -/** @type {HeadersInit | undefined} */ -let read_headers; -if (process.env.VERCEL_AUTOMATION_BYPASS_SECRET) { - read_headers = { - 'x-vercel-protection-bypass': process.env.VERCEL_AUTOMATION_BYPASS_SECRET - }; -} - -/** - * We don't know the origin until we receive a request, but - * that's guaranteed to happen before we call `read` - * @type {string} - */ -let origin; - -const initialized = server.init({ - env: /** @type {Record} */ (process.env), - read: async (file) => { - const url = `${origin}/${file}`; - const response = await fetch(url, { - // we need to add a bypass header if the user has deployment protection enabled - // see https://vercel.com/docs/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation - headers: read_headers - }); - - if (!response.ok) { - if (response.status === 401) { - throw new Error( - `Please enable Protection Bypass for Automation: https://svelte.dev/docs/kit/adapter-vercel#Troubleshooting-Deployment-protection` - ); - } - - // belt and braces — not sure how we could end up here - throw new Error( - `read(...) failed: could not fetch ${url} (${response.status} ${response.statusText})` - ); - } - - return response.body; - } -}); - -/** - * @param {Request} request - */ -var edge = async (request) => { - if (!origin) { - origin = new URL(request.url).origin; - await initialized; - } - - return server.respond(request, { - getClientAddress() { - return /** @type {string} */ (request.headers.get('x-forwarded-for')); - } - }); -}; - -export { edge as default }; diff --git a/packages/adapter-vercel/files/reroute.js b/packages/adapter-vercel/files/reroute.js deleted file mode 100644 index 7b03a0e3c125..000000000000 --- a/packages/adapter-vercel/files/reroute.js +++ /dev/null @@ -1,226 +0,0 @@ -import { reroute } from '__HOOKS__'; - -new TextEncoder(); -new TextDecoder(); - -/** @import { Transport } from '@sveltejs/kit' */ - -/** - * If an adapter enables running reroute early in its own server, the original - * pathname is stored in this query parameter - */ -const ORIGINAL_PATH_PARAM = 'x-sveltekit-original-path'; - -const DATA_SUFFIX = '/__data.json'; -const HTML_DATA_SUFFIX = '.html__data.json'; - -/** @param {string} pathname */ -function has_data_suffix(pathname) { - return pathname.endsWith(DATA_SUFFIX) || pathname.endsWith(HTML_DATA_SUFFIX); -} - -/** @param {string} pathname */ -function add_data_suffix(pathname) { - if (pathname.endsWith('.html')) return pathname.replace(/\.html$/, HTML_DATA_SUFFIX); - return pathname.replace(/\/$/, '') + DATA_SUFFIX; -} - -/** @param {string} pathname */ -function strip_data_suffix(pathname) { - if (pathname.endsWith(HTML_DATA_SUFFIX)) { - return pathname.slice(0, -HTML_DATA_SUFFIX.length) + '.html'; - } - - return pathname.slice(0, -DATA_SUFFIX.length); -} - -const ROUTE_SUFFIX = '/__route.js'; - -/** - * @param {string} pathname - * @returns {boolean} - */ -function has_resolution_suffix(pathname) { - return pathname.endsWith(ROUTE_SUFFIX); -} - -/** - * Convert a regular URL to a route to send to SvelteKit's server-side route resolution endpoint - * @param {string} pathname - * @returns {string} - */ -function add_resolution_suffix(pathname) { - return pathname.replace(/\/$/, '') + ROUTE_SUFFIX; -} - -/** - * @param {string} pathname - * @returns {string} - */ -function strip_resolution_suffix(pathname) { - return pathname.slice(0, -ROUTE_SUFFIX.length); -} - -/** @import { StandardSchemaV1 } from '@standard-schema/spec' */ - - -/** - * Strips possible SvelteKit-internal suffixes and trailing slashes from the URL pathname. - * Returns the normalized URL as well as a method for adding the potential suffix back - * based on a new pathname (possibly including search) or URL. - * ```js - * import { normalizeUrl } from '@sveltejs/kit'; - * - * const { url, denormalize } = normalizeUrl('/blog/post/__data.json'); - * console.log(url.pathname); // /blog/post - * console.log(denormalize('/blog/post/a')); // /blog/post/a/__data.json - * ``` - * @param {URL | string} url - * @returns {{ url: URL, wasNormalized: boolean, denormalize: (url?: string | URL) => URL }} - * @since 2.18.0 - */ -function normalizeUrl(url) { - url = new URL(url, 'http://internal'); - - const is_route_resolution = has_resolution_suffix(url.pathname); - const is_data_request = has_data_suffix(url.pathname); - const has_trailing_slash = url.pathname !== '/' && url.pathname.endsWith('/'); - - if (is_route_resolution) { - url.pathname = strip_resolution_suffix(url.pathname); - } else if (is_data_request) { - url.pathname = strip_data_suffix(url.pathname); - } else if (has_trailing_slash) { - url.pathname = url.pathname.slice(0, -1); - } - - return { - url, - wasNormalized: is_data_request || is_route_resolution || has_trailing_slash, - denormalize: (new_url = url) => { - new_url = new URL(new_url, url); - if (is_route_resolution) { - new_url.pathname = add_resolution_suffix(new_url.pathname); - } else if (is_data_request) { - new_url.pathname = add_data_suffix(new_url.pathname); - } else if (has_trailing_slash && !new_url.pathname.endsWith('/')) { - new_url.pathname += '/'; - } - return new_url; - } - }; -} - -/** - * If your deployment platform supports splitting your app into multiple functions, - * you should run this in a middleware that runs before the main handler - * to reroute the request to the correct function and [generate a server-side manifest](https://svelte.dev/docs/kit/@sveltejs-kit#Builder) - * with the `rerouteMiddleware` option set to `true`. - * @example - * ```js - * import { applyReroute } from '@sveltejs/kit/adapter'; - * // replace __HOOKS__ with the path to the reroute hook obtained from `builder.getReroutePath()` - * import { reroute } from '__HOOKS__'; - * - * export default function middleware(request) { - * return applyReroute(request.url, reroute); - * } - * ``` - * @param {string} url - * @param {import("@sveltejs/kit").Reroute} reroute - * @returns {Promise} - * @since 2.51.0 - */ -async function applyReroute(url, reroute) { - const url_copy = new URL(url); - url_copy.searchParams.set(ORIGINAL_PATH_PARAM, url_copy.pathname); - - const { url: normalized_url, denormalize } = normalizeUrl(url); - const resolved_path = await reroute({ url: normalized_url, fetch }); - - // bail out if there were no changes to the pathname - if (!resolved_path || resolved_path === url_copy.pathname) { - // we always return a URL with the x-sveltekit-original-path param set - // so that the requester can't fake it - return url_copy; - } - - url_copy.pathname = resolved_path; - return denormalize(url_copy); -} - -var middleware$1; -var hasRequiredMiddleware; - -function requireMiddleware () { - if (hasRequiredMiddleware) return middleware$1; - hasRequiredMiddleware = 1; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - var middleware_exports = {}; - __export(middleware_exports, { - next: () => next, - rewrite: () => rewrite - }); - middleware$1 = __toCommonJS(middleware_exports); - function handleMiddlewareField(init, headers) { - if (init?.request?.headers) { - if (!(init.request.headers instanceof Headers)) { - throw new Error("request.headers must be an instance of Headers"); - } - const keys = []; - for (const [key, value] of init.request.headers) { - headers.set("x-middleware-request-" + key, value); - keys.push(key); - } - headers.set("x-middleware-override-headers", keys.join(",")); - } - } - function rewrite(destination, init) { - const headers = new Headers(init?.headers ?? {}); - headers.set("x-middleware-rewrite", String(destination)); - handleMiddlewareField(init, headers); - return new Response(null, { - ...init, - headers - }); - } - function next(init) { - const headers = new Headers(init?.headers ?? {}); - headers.set("x-middleware-next", "1"); - handleMiddlewareField(init, headers); - return new Response(null, { - ...init, - headers - }); - } - return middleware$1; -} - -var middlewareExports = requireMiddleware(); - -/** - * @param {Request} request - * @returns {Promise} - */ -async function middleware(request) { - const resolved_url = await applyReroute(request.url, reroute); - return middlewareExports.rewrite(resolved_url); -} - -export { middleware as default }; diff --git a/packages/adapter-vercel/files/serverless.js b/packages/adapter-vercel/files/serverless.js deleted file mode 100644 index 3d6ab7c79353..000000000000 --- a/packages/adapter-vercel/files/serverless.js +++ /dev/null @@ -1,55 +0,0 @@ -import { createReadStream } from 'node:fs'; -import { Readable } from 'node:stream'; -import { Server } from 'SERVER'; -import { manifest } from 'MANIFEST'; -import process from 'node:process'; - -/** - * Converts a file on disk to a readable stream - * @param {string} file - * @returns {ReadableStream} - * @since 2.4.0 - */ -function createReadableStream(file) { - return /** @type {ReadableStream} */ (Readable.toWeb(createReadStream(file))); -} - -const server = new Server(manifest); - -await server.init({ - env: /** @type {Record} */ (process.env), - read: createReadableStream -}); - -const DATA_SUFFIX = '/__data.json'; - -var serverless = { - /** - * @param {Request} request - * @returns {Promise} - */ - fetch(request) { - // If this is an ISR request, the requested pathname is encoded - // as a search parameter, so we need to extract it - const url = new URL(request.url); - let pathname = url.searchParams.get('__pathname'); - - if (pathname) { - // Optional routes' pathname replacements look like `/foo/$1/bar` which means we could end up with an url like /foo//bar - pathname = pathname.replace(/\/+/g, '/'); - - url.pathname = pathname + (url.pathname.endsWith(DATA_SUFFIX) ? DATA_SUFFIX : ''); - url.searchParams.delete('__pathname'); - - request = new Request(url, request); - } - - return server.respond(request, { - getClientAddress() { - return /** @type {string} */ (request.headers.get('x-forwarded-for')); - } - }); - } -}; - -export { serverless as default }; From b87a0d86643722e4b2bf45cd909feba32759b79f Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 19:12:46 +0800 Subject: [PATCH 66/73] remove unused allowed build dep --- package.json | 2 -- pnpm-workspace.yaml | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/package.json b/package.json index ff8b81c41778..678ab523ceef 100644 --- a/package.json +++ b/package.json @@ -44,9 +44,7 @@ "protobufjs", "rolldown", "sharp", - "unix-dgram", "svelte-preprocess", - "unix-dgram", "workerd" ] } diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3be34494d0f7..4105aa32bd81 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,9 +10,7 @@ packages: - packages/kit/test/build-errors/apps/* - '!.test-tmp/**' - playgrounds/* -# pnpm catalogs are currently only suitable for dependencies that -# wouldn't require publishing a new package version -# see https://github.com/changesets/changesets/issues/1707 + catalog: '@changesets/cli': ^2.29.6 '@fontsource/libre-barcode-128-text': ^5.1.0 From 913b369b7fb94997fa6478718c8abb911e5f813d Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 19:18:18 +0800 Subject: [PATCH 67/73] fix skip logic --- packages/kit/src/runtime/server/respond.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index 3bd5a40f0610..18bcc7e1ea8b 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -70,8 +70,6 @@ export async function internal_respond(request, options, manifest, state) { /** URL but stripped from the potential `/__data.json` suffix and its search param */ const url = new URL(request.url); - let resolved_path = url.pathname; - if (manifest._.reroute_middleware && url.searchParams.has(ORIGINAL_PATH_PARAM)) { url.pathname = /** @type {string} */ (url.searchParams.get(ORIGINAL_PATH_PARAM)); url.searchParams.delete(ORIGINAL_PATH_PARAM); @@ -227,8 +225,9 @@ export async function internal_respond(request, options, manifest, state) { }); } - // skip reroute if it already ran earlier in an edge middleware - if (!remote_id || !resolved_path) { + let resolved_path = url.pathname; + + if (!remote_id || !manifest._.reroute_middleware) { const prerendering_reroute_state = state.prerendering?.inside_reroute; try { // For the duration or a reroute, disable the prerendering state as reroute could call API endpoints From 41c6dc902686d69d0d8a36bd0cf75bb95785ff58 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 19:24:38 +0800 Subject: [PATCH 68/73] explain --- packages/kit/src/runtime/server/respond.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index 18bcc7e1ea8b..31b555af01a8 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -70,6 +70,10 @@ export async function internal_respond(request, options, manifest, state) { /** URL but stripped from the potential `/__data.json` suffix and its search param */ const url = new URL(request.url); + // If reroute ran in an edge middleware, it would have already resolved the URL + // pathname. So we save that and restore the original URL to invoke the correct route + let resolved_path = url.pathname; + if (manifest._.reroute_middleware && url.searchParams.has(ORIGINAL_PATH_PARAM)) { url.pathname = /** @type {string} */ (url.searchParams.get(ORIGINAL_PATH_PARAM)); url.searchParams.delete(ORIGINAL_PATH_PARAM); @@ -225,8 +229,6 @@ export async function internal_respond(request, options, manifest, state) { }); } - let resolved_path = url.pathname; - if (!remote_id || !manifest._.reroute_middleware) { const prerendering_reroute_state = state.prerendering?.inside_reroute; try { From 8e651b197bb135b9fb086a52eb14f3ce293af07f Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 19:31:19 +0800 Subject: [PATCH 69/73] remove deprecated context --- packages/adapter-vercel/ambient.d.ts | 14 ------- packages/adapter-vercel/index.d.ts | 58 ---------------------------- packages/adapter-vercel/package.json | 3 +- 3 files changed, 1 insertion(+), 74 deletions(-) delete mode 100644 packages/adapter-vercel/ambient.d.ts diff --git a/packages/adapter-vercel/ambient.d.ts b/packages/adapter-vercel/ambient.d.ts deleted file mode 100644 index 67464d3365d9..000000000000 --- a/packages/adapter-vercel/ambient.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { RequestContext } from './index.js'; - -declare global { - namespace App { - export interface Platform { - /** - * `context` is only available in Edge Functions - * - * @deprecated Vercel's context is deprecated. Use [`@vercel/functions`](https://vercel.com/docs/functions/functions-api-reference/vercel-functions-package) instead. - */ - context?: RequestContext; - } - } -} diff --git a/packages/adapter-vercel/index.d.ts b/packages/adapter-vercel/index.d.ts index e3333d04a88e..fbd1a8478c3a 100644 --- a/packages/adapter-vercel/index.d.ts +++ b/packages/adapter-vercel/index.d.ts @@ -103,61 +103,3 @@ export type Config = (EdgeConfig | ServerlessConfig) & { */ images?: ImagesConfig; }; - -// we copy the RequestContext interface from `@vercel/edge` because that package can't co-exist with `@types/node`. -// see https://github.com/sveltejs/kit/pull/9280#issuecomment-1452110035 - -/** - * An extension to the standard `Request` object that is passed to every Edge Function. - * - * @deprecated - use [`@vercel/functions`](https://vercel.com/docs/functions/functions-api-reference/vercel-functions-package) instead. - * - * @example - * ```ts - * import type { RequestContext } from '@vercel/edge'; - * - * export default async function handler(request: Request, ctx: RequestContext): Promise { - * // ctx is the RequestContext - * } - * ``` - */ -export interface RequestContext { - /** - * A method that can be used to keep the function running after a response has been sent. - * This is useful when you have an async task that you want to keep running even after the - * response has been sent and the request has ended. - * - * @example - * - * Sending an internal error to an error tracking service - * - * ```ts - * import type { RequestContext } from '@vercel/edge'; - * - * export async function handleRequest(request: Request, ctx: RequestContext): Promise { - * try { - * return await myFunctionThatReturnsResponse(); - * } catch (e) { - * ctx.waitUntil((async () => { - * // report this error to your error tracking service - * await fetch('https://my-error-tracking-service.com', { - * method: 'POST', - * body: JSON.stringify({ - * stack: e.stack, - * message: e.message, - * name: e.name, - * url: request.url, - * }), - * }); - * })()); - * return new Response('Internal Server Error', { status: 500 }); - * } - * } - * ``` - */ - waitUntil( - /** - * A promise that will be kept alive until it resolves or rejects. - */ promise: Promise - ): void; -} diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 4aa79d353bb3..11521dd7b8f5 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -31,8 +31,7 @@ "!files/edge/tsconfig.json", "index.js", "utils.js", - "index.d.ts", - "ambient.d.ts" + "index.d.ts" ], "scripts": { "dev": "rollup -cw", From 42ea5e5ec5ebece7470032d7a0671af742a79abb Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 22:36:53 +0800 Subject: [PATCH 70/73] fix test suite not picking up static dir --- packages/adapter-netlify/index.js | 2 +- packages/adapter-netlify/src/serverless.js | 4 +- .../test/apps/basic/netlify.toml | 2 +- .../apps/basic/netlify/functions/render.mjs | 3 +- .../test/apps/edge/netlify.toml | 4 +- .../test/apps/split/netlify.toml | 14 ++++++- .../apps/split/netlify/functions/render.mjs | 40 +++++++++++++++++++ packages/kit/src/runtime/server/respond.js | 4 +- 8 files changed, 61 insertions(+), 12 deletions(-) create mode 100644 packages/adapter-netlify/test/apps/split/netlify/functions/render.mjs diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 6ee8f6a4d961..1e75c4a18cc5 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -274,7 +274,7 @@ async function bundle_edge_function({ builder, name, reroute_middleware }) { { function: name, path: '/*', - excludedPath: /** @type {`/${string}`[]} */ (excluded) + excludedPath: /** @type {`/${string}`[]} */ (excluded), } ], version: 1 diff --git a/packages/adapter-netlify/src/serverless.js b/packages/adapter-netlify/src/serverless.js index 132de92b3295..3eb1d2ef07bd 100644 --- a/packages/adapter-netlify/src/serverless.js +++ b/packages/adapter-netlify/src/serverless.js @@ -57,7 +57,7 @@ export function init(manifest) { * @param {import('@netlify/functions').HandlerEvent} event * @returns {Request} */ -function to_request({ httpMethod, headers, rawUrl, body, isBase64Encoded }) { +function to_request({ httpMethod, headers, rawUrl, rawQuery, body, isBase64Encoded }) { /** @type {RequestInit} */ const init = { method: httpMethod, @@ -69,7 +69,7 @@ function to_request({ httpMethod, headers, rawUrl, body, isBase64Encoded }) { init.body = typeof body === 'string' ? Buffer.from(body, encoding) : body; } - return new Request(rawUrl, init); + return new Request(rawUrl + (rawQuery ? `?${rawQuery}` : ''), init); } const text_types = new Set([ diff --git a/packages/adapter-netlify/test/apps/basic/netlify.toml b/packages/adapter-netlify/test/apps/basic/netlify.toml index 75cbe2e5f61e..0183026741cd 100644 --- a/packages/adapter-netlify/test/apps/basic/netlify.toml +++ b/packages/adapter-netlify/test/apps/basic/netlify.toml @@ -1,2 +1,2 @@ -[dev] +[build] publish = "build" diff --git a/packages/adapter-netlify/test/apps/basic/netlify/functions/render.mjs b/packages/adapter-netlify/test/apps/basic/netlify/functions/render.mjs index 343db73977d2..fbad97b74960 100644 --- a/packages/adapter-netlify/test/apps/basic/netlify/functions/render.mjs +++ b/packages/adapter-netlify/test/apps/basic/netlify/functions/render.mjs @@ -35,5 +35,6 @@ export default async function (request, context) { } export const config = { - path: '/*' + path: '/*', + preferStatic: true }; diff --git a/packages/adapter-netlify/test/apps/edge/netlify.toml b/packages/adapter-netlify/test/apps/edge/netlify.toml index 0d9af7524b9d..522933727454 100644 --- a/packages/adapter-netlify/test/apps/edge/netlify.toml +++ b/packages/adapter-netlify/test/apps/edge/netlify.toml @@ -1,11 +1,9 @@ -[dev] -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 [build] # defaults to "netlify/edge-functions" (without the . prefix) edge_functions = ".netlify/edge-functions" +publish = "build" # the dev server doesn't read the manifest.json in edge-functions so we need # to explicitly declare this here diff --git a/packages/adapter-netlify/test/apps/split/netlify.toml b/packages/adapter-netlify/test/apps/split/netlify.toml index 4fa4a7e4621c..0cfa12126a53 100644 --- a/packages/adapter-netlify/test/apps/split/netlify.toml +++ b/packages/adapter-netlify/test/apps/split/netlify.toml @@ -1,2 +1,12 @@ -[dev] - publish = "build" \ No newline at end of file +# 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 +[build] +# defaults to "netlify/edge-functions" (without the . prefix) +edge_functions = ".netlify/edge-functions" +publish = "build" + +# the dev server doesn't read the manifest.json in edge-functions so we need +# to explicitly declare this here +[[edge_functions]] +path = "/*" +function = "reroute" +excludedPath = ["/_app/immutable/*", "/_app/version.json", "/.netlify/*"] diff --git a/packages/adapter-netlify/test/apps/split/netlify/functions/render.mjs b/packages/adapter-netlify/test/apps/split/netlify/functions/render.mjs new file mode 100644 index 000000000000..67c76da93a3f --- /dev/null +++ b/packages/adapter-netlify/test/apps/split/netlify/functions/render.mjs @@ -0,0 +1,40 @@ +// This is a temporary workaround to be compatible with Netlify's new dev server +// TODO: remove this once we overhaul the Netlify adapter to use Netlify's new serverless function format https://docs.netlify.com/build/functions/get-started/?data-tab=TypeScript#write-a-function + +import { handler } from '../../.netlify/functions-internal/sveltekit-reroute.mjs'; + +/** + * @param {Request} request + * @param {import('@netlify/functions').HandlerContext} context + */ +export default async function (request, context) { + const [rawUrl, rawQuery] = request.url.split('?'); + /** @type {import('@netlify/functions').HandlerEvent} */ + const event = { + rawUrl, + rawQuery: rawQuery || '', + headers: Object.fromEntries(request.headers), + httpMethod: request.method, + isBase64Encoded: false, + path: new URL(request.url).pathname, + queryStringParameters: Object.fromEntries(new URL(request.url).searchParams), + body: request.body && (await request.text()), + multiValueHeaders: {}, + multiValueQueryStringParameters: null + }; + const result = await handler(event, context); + if (result) { + return new Response(result.body, { + status: result.statusCode, + // @ts-ignore + headers: result.headers + }); + } + + return new Response('Not Found', { status: 404 }); +} + +export const config = { + path: '/*', + preferStatic: true +}; diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index 31b555af01a8..31173745901a 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -70,10 +70,10 @@ export async function internal_respond(request, options, manifest, state) { /** URL but stripped from the potential `/__data.json` suffix and its search param */ const url = new URL(request.url); - // If reroute ran in an edge middleware, it would have already resolved the URL - // pathname. So we save that and restore the original URL to invoke the correct route let resolved_path = url.pathname; + // If reroute ran in an edge middleware, Vercel doesn't change the request URL but Netlify does. + // So, we always restore the original URL pathname to ensure that the correct route is invoked if (manifest._.reroute_middleware && url.searchParams.has(ORIGINAL_PATH_PARAM)) { url.pathname = /** @type {string} */ (url.searchParams.get(ORIGINAL_PATH_PARAM)); url.searchParams.delete(ORIGINAL_PATH_PARAM); From 599016fcb99d6fde192db8468696f1aa824f04c3 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 3 Feb 2026 22:38:26 +0800 Subject: [PATCH 71/73] format --- packages/adapter-netlify/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 1e75c4a18cc5..6ee8f6a4d961 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -274,7 +274,7 @@ async function bundle_edge_function({ builder, name, reroute_middleware }) { { function: name, path: '/*', - excludedPath: /** @type {`/${string}`[]} */ (excluded), + excludedPath: /** @type {`/${string}`[]} */ (excluded) } ], version: 1 From 664fa98b2755e0f014c689b07f00089aebb25764 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 4 Feb 2026 01:14:25 +0800 Subject: [PATCH 72/73] add doc page --- documentation/docs/98-reference/15-@sveltejs-kit-adapter.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 documentation/docs/98-reference/15-@sveltejs-kit-adapter.md diff --git a/documentation/docs/98-reference/15-@sveltejs-kit-adapter.md b/documentation/docs/98-reference/15-@sveltejs-kit-adapter.md new file mode 100644 index 000000000000..8c3c72df9319 --- /dev/null +++ b/documentation/docs/98-reference/15-@sveltejs-kit-adapter.md @@ -0,0 +1,5 @@ +--- +title: @sveltejs/kit/adapter +--- + +> MODULE: @sveltejs/kit/adapter From 10f060b9244920bba45cce6be7f64aa5a754eb03 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 4 Feb 2026 01:22:28 +0800 Subject: [PATCH 73/73] capitalise id --- documentation/docs/25-build-and-deploy/80-adapter-netlify.md | 2 +- documentation/docs/25-build-and-deploy/90-adapter-vercel.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md index 38d2b4bcc5ec..ac9fa5076ec6 100644 --- a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md +++ b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md @@ -124,7 +124,7 @@ Additionally, you can add your own Netlify functions by creating a directory for ### Individual functions and `reroute` -If the `split` option is set to `true` in the adapter config, the [`reroute`](hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. +If the `split` option is set to `true` in the adapter config, the [`reroute`](hooks#Universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. ## Troubleshooting diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 30d71e17ac36..088005f40194 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -191,7 +191,7 @@ Projects created before a certain date may default to using an older Node versio ### Individual functions and `reroute` -If the `split` option is set to `true` for a route, or at the adapter level, the [`reroute`](hooks#universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. +If the `split` option is set to `true` for a route, or at the adapter level, the [`reroute`](hooks#Universal-hooks-reroute) function will be deployed as an edge middleware that runs before any individual function. ## Troubleshooting