From c4dcfc963118772781bc071017acaa2dfd9bbc5e Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Tue, 17 Jun 2025 12:31:07 -0600 Subject: [PATCH 1/2] feat: Add tracing to `load`, server actions, and `handle`/`resolve` --- packages/kit/src/core/config/index.spec.js | 74 ++++++ packages/kit/src/core/config/options.js | 6 + .../src/core/sync/write_client_manifest.js | 2 + packages/kit/src/core/sync/write_server.js | 1 + packages/kit/src/exports/public.d.ts | 10 + packages/kit/src/runtime/client/client.js | 25 +- packages/kit/src/runtime/client/types.d.ts | 5 + packages/kit/src/runtime/server/data/index.js | 1 + .../kit/src/runtime/server/page/actions.js | 37 ++- packages/kit/src/runtime/server/page/index.js | 8 +- .../kit/src/runtime/server/page/load_data.js | 222 ++++++++++-------- .../runtime/server/page/respond_with_error.js | 4 +- packages/kit/src/runtime/server/respond.js | 89 +++++-- packages/kit/src/types/internal.d.ts | 1 + packages/kit/types/index.d.ts | 10 + 15 files changed, 365 insertions(+), 130 deletions(-) diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 419f30416d9c..d88ceaca4a1c 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -101,6 +101,7 @@ const get_defaults = (prefix = '') => ({ serviceWorker: { register: true }, + tracing: false, typescript: {}, paths: { base: '', @@ -404,3 +405,76 @@ test('errors on loading config with incorrect default export', async () => { 'The Svelte config file must have a configuration object as its default export. See https://svelte.dev/docs/kit/configuration' ); }); + +test('accepts valid tracing values', () => { + // Test boolean values + assert.doesNotThrow(() => { + validate_config({ + kit: { + tracing: true + } + }); + }); + + assert.doesNotThrow(() => { + validate_config({ + kit: { + tracing: false + } + }); + }); + + // Test string values + assert.doesNotThrow(() => { + validate_config({ + kit: { + tracing: 'server' + } + }); + }); + + assert.doesNotThrow(() => { + validate_config({ + kit: { + tracing: 'client' + } + }); + }); + + assert.doesNotThrow(() => { + validate_config({ + kit: { + tracing: undefined + } + }); + }); +}); + +test('errors on invalid tracing values', () => { + assert.throws(() => { + validate_config({ + kit: { + // @ts-expect-error - given value expected to throw + tracing: 'invalid' + } + }); + }, /^config\.kit\.tracing should be true, false, "server", or "client"$/); + + assert.throws(() => { + validate_config({ + kit: { + // @ts-expect-error - given value expected to throw + tracing: 42 + } + }); + }, /^config\.kit\.tracing should be true, false, "server", or "client"$/); + + assert.throws(() => { + validate_config({ + kit: { + // @ts-expect-error - given value expected to throw + tracing: null + } + }); + }, /^config\.kit\.tracing should be true, false, "server", or "client"$/); +}); diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index a2b9bb81759d..dd8d2ba3a985 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -270,6 +270,12 @@ const options = object( files: fun((filename) => !/\.DS_Store/.test(filename)) }), + tracing: validate(false, (input, keypath) => { + if (typeof input === 'boolean') return input; + if (input === 'server' || input === 'client') return input; + throw new Error(`${keypath} should be true, false, "server", or "client"`); + }), + typescript: object({ config: fun((config) => config) }), diff --git a/packages/kit/src/core/sync/write_client_manifest.js b/packages/kit/src/core/sync/write_client_manifest.js index c27c61add43c..71c13659864f 100644 --- a/packages/kit/src/core/sync/write_client_manifest.js +++ b/packages/kit/src/core/sync/write_client_manifest.js @@ -174,6 +174,8 @@ export function write_client_manifest(kit, manifest_data, output, metadata) { export const hash = ${s(kit.router.type === 'hash')}; + export const tracing = ${s(kit.tracing === true || kit.tracing === 'client')}; + export const decode = (type, value) => decoders[type](value); export { default as root } from '../root.${isSvelte5Plus() ? 'js' : 'svelte'}'; diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index 5e93d5c1cd25..f9ac6215ae44 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -60,6 +60,7 @@ export const options = { .replace(/%sveltekit\.status%/g, '" + status + "') .replace(/%sveltekit\.error\.message%/g, '" + message + "')} }, + tracing: ${config.kit.tracing === true || config.kit.tracing === 'server'}, version_hash: ${s(hash(config.kit.version.name))} }; diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 0b8c245ab2d7..501340afe025 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -686,6 +686,16 @@ export interface KitConfig { */ files?(filepath: string): boolean; }; + /** + * Whether to enable OpenTelemetry tracing for SvelteKit operations including handle hooks, load functions, and form actions. + * - `true` - Enable tracing for both server and client + * - `false` - Disable tracing + * - `'server'` - Enable tracing only on the server side + * - `'client'` - Enable tracing only on the client side + * @default false + * @since 2.22.0 + */ + tracing?: boolean | 'server' | 'client'; typescript?: { /** * A function that allows you to edit the generated `tsconfig.json`. You can mutate the config (recommended) or return a new one. diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 4a4ac7777ea2..0babdba9a672 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -44,6 +44,8 @@ import { get_message, get_status } from '../../utils/error.js'; import { writable } from 'svelte/store'; import { page, update, navigating } from './state.svelte.js'; import { add_data_suffix, add_resolution_suffix } from '../pathname.js'; +import { record_span } from '../telemetry/record_span.js'; +import { get_tracer } from '../telemetry/get_tracer.js'; export { load_css }; @@ -759,13 +761,30 @@ async function load_node({ loader, parent, url, params, route, server_data_node } }; + async function traced_load() { + const tracer = await get_tracer({ is_enabled: app.tracing }); + + return record_span({ + name: 'sveltekit.load.universal', + tracer, + attributes: { + 'sveltekit.load.node_id': node.universal_id || 'unknown', + 'sveltekit.load.type': 'universal', + 'sveltekit.load.environment': 'client', + 'sveltekit.route.id': route.id || 'unknown' + }, + fn: async () => (await node.universal?.load?.call(null, load_input)) ?? null + }); + } + if (DEV) { try { lock_fetch(); - data = (await node.universal.load.call(null, load_input)) ?? null; + data = await traced_load(); + if (data != null && Object.getPrototypeOf(data) !== Object.prototype) { throw new Error( - `a load function related to route '${route.id}' returned ${ + `the load function located in ${node.universal_id} returned ${ typeof data !== 'object' ? `a ${typeof data}` : data instanceof Response @@ -780,7 +799,7 @@ async function load_node({ loader, parent, url, params, route, server_data_node unlock_fetch(); } } else { - data = (await node.universal.load.call(null, load_input)) ?? null; + data = await traced_load(); } } diff --git a/packages/kit/src/runtime/client/types.d.ts b/packages/kit/src/runtime/client/types.d.ts index 4b32f56b7350..a293a0e9c043 100644 --- a/packages/kit/src/runtime/client/types.d.ts +++ b/packages/kit/src/runtime/client/types.d.ts @@ -56,6 +56,11 @@ export interface SvelteKitApp { */ hash: boolean; + /** + * Whether OpenTelemetry tracing is enabled (config.tracing === true || config.tracing === 'client') + */ + tracing: boolean; + root: typeof SvelteComponent; } diff --git a/packages/kit/src/runtime/server/data/index.js b/packages/kit/src/runtime/server/data/index.js index 0c5d8f1d0ecf..a6cb1dfcbb1b 100644 --- a/packages/kit/src/runtime/server/data/index.js +++ b/packages/kit/src/runtime/server/data/index.js @@ -63,6 +63,7 @@ export async function render_data( event: new_event, state, node, + tracing: options.tracing, parent: async () => { /** @type {Record} */ const data = {}; diff --git a/packages/kit/src/runtime/server/page/actions.js b/packages/kit/src/runtime/server/page/actions.js index bd44060bfd2a..c87ed0d7756f 100644 --- a/packages/kit/src/runtime/server/page/actions.js +++ b/packages/kit/src/runtime/server/page/actions.js @@ -6,6 +6,8 @@ import { get_status, normalize_error } from '../../../utils/error.js'; import { is_form_content_type, negotiate } from '../../../utils/http.js'; import { handle_error_and_jsonify } from '../utils.js'; import { with_event } from '../../app/server/event.js'; +import { record_span } from '../../telemetry/record_span.js'; +import { get_tracer } from '../../telemetry/get_tracer.js'; /** @param {import('@sveltejs/kit').RequestEvent} event */ export function is_action_json_request(event) { @@ -51,7 +53,7 @@ export async function handle_action_json_request(event, options, server) { check_named_default_separate(actions); try { - const data = await call_action(event, actions); + const data = await call_action(event, actions, options.tracing); if (__SVELTEKIT_DEV__) { validate_action_return(data); @@ -139,9 +141,10 @@ export function is_action_request(event) { /** * @param {import('@sveltejs/kit').RequestEvent} event * @param {import('types').SSRNode['server'] | undefined} server + * @param {boolean} tracing * @returns {Promise} */ -export async function handle_action_request(event, server) { +export async function handle_action_request(event, server, tracing) { const actions = server?.actions; if (!actions) { @@ -164,7 +167,7 @@ export async function handle_action_request(event, server) { check_named_default_separate(actions); try { - const data = await call_action(event, actions); + const data = await call_action(event, actions, tracing); if (__SVELTEKIT_DEV__) { validate_action_return(data); @@ -216,9 +219,10 @@ function check_named_default_separate(actions) { /** * @param {import('@sveltejs/kit').RequestEvent} event * @param {NonNullable} actions + * @param {boolean} tracing * @throws {Redirect | HttpError | SvelteKitError | Error} */ -async function call_action(event, actions) { +async function call_action(event, actions, tracing) { const url = new URL(event.request.url); let name = 'default'; @@ -247,7 +251,30 @@ async function call_action(event, actions) { ); } - return with_event(event, () => action(event)); + const tracer = await get_tracer({ is_enabled: tracing }); + + return record_span({ + name: 'sveltekit.action', + tracer, + attributes: { + 'sveltekit.action.name': name, + 'sveltekit.route.id': event.route.id || 'unknown' + }, + fn: async (action_span) => { + const result = await with_event(event, () => action(event)); + if (result instanceof ActionFailure) { + action_span.setAttributes({ + 'sveltekit.action.result.type': 'failure', + 'sveltekit.action.result.status': result.status + }); + } else { + action_span.setAttributes({ + 'sveltekit.action.result.type': 'success' + }); + } + return result; + } + }); } /** @param {any} data */ diff --git a/packages/kit/src/runtime/server/page/index.js b/packages/kit/src/runtime/server/page/index.js index de17e7666b0d..4d79e6f60278 100644 --- a/packages/kit/src/runtime/server/page/index.js +++ b/packages/kit/src/runtime/server/page/index.js @@ -56,7 +56,7 @@ export async function render_page(event, page, options, manifest, state, nodes, if (is_action_request(event)) { // for action requests, first call handler in +page.server.js // (this also determines status code) - action_result = await handle_action_request(event, leaf_node.server); + action_result = await handle_action_request(event, leaf_node.server, options.tracing); if (action_result?.type === 'redirect') { return redirect_response(action_result.status, action_result.location); } @@ -166,7 +166,8 @@ export async function render_page(event, page, options, manifest, state, nodes, if (parent) Object.assign(data, parent.data); } return data; - } + }, + tracing: options.tracing }); } catch (e) { load_error = /** @type {Error} */ (e); @@ -194,7 +195,8 @@ export async function render_page(event, page, options, manifest, state, nodes, resolve_opts, server_data_promise: server_promises[i], state, - csr + csr, + tracing: options.tracing }); } catch (e) { load_error = /** @type {Error} */ (e); diff --git a/packages/kit/src/runtime/server/page/load_data.js b/packages/kit/src/runtime/server/page/load_data.js index 74bd7444af4f..cfbcfd88a38e 100644 --- a/packages/kit/src/runtime/server/page/load_data.js +++ b/packages/kit/src/runtime/server/page/load_data.js @@ -3,6 +3,8 @@ import { disable_search, make_trackable } from '../../../utils/url.js'; import { validate_depends } from '../../shared.js'; import { b64_encode } from '../../utils.js'; import { with_event } from '../../app/server/event.js'; +import { record_span } from '../../telemetry/record_span.js'; +import { get_tracer } from '../../telemetry/get_tracer.js'; /** * Calls the user's server `load` function. @@ -11,10 +13,11 @@ import { with_event } from '../../app/server/event.js'; * state: import('types').SSRState; * node: import('types').SSRNode | undefined; * parent: () => Promise>; + * tracing: boolean; * }} opts * @returns {Promise} */ -export async function load_server_data({ event, state, node, parent }) { +export async function load_server_data({ event, state, node, parent, tracing }) { if (!node?.server) return null; let is_tracking = true; @@ -68,94 +71,109 @@ export async function load_server_data({ event, state, node, parent }) { let done = false; - const result = await with_event(event, () => - load.call(null, { - ...event, - fetch: (info, init) => { - const url = new URL(info instanceof Request ? info.url : info, event.url); + const tracer = await get_tracer({ is_enabled: tracing }); - if (DEV && done && !uses.dependencies.has(url.href)) { - console.warn( - `${node.server_id}: Calling \`event.fetch(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated` - ); - } - - // Note: server fetches are not added to uses.depends due to security concerns - return event.fetch(info, init); - }, - /** @param {string[]} deps */ - depends: (...deps) => { - for (const dep of deps) { - const { href } = new URL(dep, event.url); - - if (DEV) { - validate_depends(node.server_id || 'missing route ID', dep); - - if (done && !uses.dependencies.has(href)) { + const result = await record_span({ + name: 'sveltekit.load.server', + tracer, + attributes: { + 'sveltekit.load.node_id': node.server_id || 'unknown', + 'sveltekit.load.type': 'server', + 'sveltekit.route.id': event.route.id || 'unknown' + }, + fn: async () => { + const result = await with_event(event, () => + load.call(null, { + ...event, + fetch: (info, init) => { + const url = new URL(info instanceof Request ? info.url : info, event.url); + + if (DEV && done && !uses.dependencies.has(url.href)) { console.warn( - `${node.server_id}: Calling \`depends(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated` + `${node.server_id}: Calling \`event.fetch(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated` ); } - } - - uses.dependencies.add(href); - } - }, - params: new Proxy(event.params, { - get: (target, key) => { - if (DEV && done && typeof key === 'string' && !uses.params.has(key)) { - console.warn( - `${node.server_id}: Accessing \`params.${String( - key - )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the param changes` - ); - } - if (is_tracking) { - uses.params.add(key); - } - return target[/** @type {string} */ (key)]; - } - }), - parent: async () => { - if (DEV && done && !uses.parent) { - console.warn( - `${node.server_id}: Calling \`parent(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when parent data changes` - ); - } + // Note: server fetches are not added to uses.depends due to security concerns + return event.fetch(info, init); + }, + /** @param {string[]} deps */ + depends: (...deps) => { + for (const dep of deps) { + const { href } = new URL(dep, event.url); + + if (DEV) { + validate_depends(node.server_id || 'missing route ID', dep); + + if (done && !uses.dependencies.has(href)) { + console.warn( + `${node.server_id}: Calling \`depends(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated` + ); + } + } + + uses.dependencies.add(href); + } + }, + params: new Proxy(event.params, { + get: (target, key) => { + if (DEV && done && typeof key === 'string' && !uses.params.has(key)) { + console.warn( + `${node.server_id}: Accessing \`params.${String( + key + )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the param changes` + ); + } + + if (is_tracking) { + uses.params.add(key); + } + return target[/** @type {string} */ (key)]; + } + }), + parent: async () => { + if (DEV && done && !uses.parent) { + console.warn( + `${node.server_id}: Calling \`parent(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when parent data changes` + ); + } - if (is_tracking) { - uses.parent = true; - } - return parent(); - }, - route: new Proxy(event.route, { - get: (target, key) => { - if (DEV && done && typeof key === 'string' && !uses.route) { - console.warn( - `${node.server_id}: Accessing \`route.${String( - key - )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the route changes` - ); + if (is_tracking) { + uses.parent = true; + } + return parent(); + }, + route: new Proxy(event.route, { + get: (target, key) => { + if (DEV && done && typeof key === 'string' && !uses.route) { + console.warn( + `${node.server_id}: Accessing \`route.${String( + key + )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the route changes` + ); + } + + if (is_tracking) { + uses.route = true; + } + return target[/** @type {'id'} */ (key)]; + } + }), + url, + untrack(fn) { + is_tracking = false; + try { + return fn(); + } finally { + is_tracking = true; + } } + }) + ); - if (is_tracking) { - uses.route = true; - } - return target[/** @type {'id'} */ (key)]; - } - }), - url, - untrack(fn) { - is_tracking = false; - try { - return fn(); - } finally { - is_tracking = true; - } - } - }) - ); + return result; + } + }); if (__SVELTEKIT_DEV__) { validate_load_response(result, node.server_id); @@ -182,6 +200,7 @@ export async function load_server_data({ event, state, node, parent }) { * server_data_promise: Promise; * state: import('types').SSRState; * csr: boolean; + * tracing: boolean; * }} opts * @returns {Promise> | null>} */ @@ -193,7 +212,8 @@ export async function load_data({ server_data_promise, state, resolve_opts, - csr + csr, + tracing }) { const server_data_node = await server_data_promise; @@ -201,16 +221,34 @@ export async function load_data({ return server_data_node?.data ?? null; } - const result = await node.universal.load.call(null, { - url: event.url, - params: event.params, - data: server_data_node?.data ?? null, - route: event.route, - fetch: create_universal_fetch(event, state, fetched, csr, resolve_opts), - setHeaders: event.setHeaders, - depends: () => {}, - parent, - untrack: (fn) => fn() + const { load } = node.universal; + + const tracer = await get_tracer({ is_enabled: tracing }); + + const result = await record_span({ + name: 'sveltekit.load.universal', + tracer, + attributes: { + 'sveltekit.load.node_id': node.universal_id || 'unknown', + 'sveltekit.load.type': 'universal', + 'sveltekit.load.environment': 'server', + 'sveltekit.route.id': event.route.id || 'unknown' + }, + fn: async () => { + const result = await load.call(null, { + url: event.url, + params: event.params, + data: server_data_node?.data ?? null, + route: event.route, + fetch: create_universal_fetch(event, state, fetched, csr, resolve_opts), + setHeaders: event.setHeaders, + depends: () => {}, + parent, + untrack: (fn) => fn() + }); + + return result; + } }); if (__SVELTEKIT_DEV__) { diff --git a/packages/kit/src/runtime/server/page/respond_with_error.js b/packages/kit/src/runtime/server/page/respond_with_error.js index bb3e99054507..ded87ba9dd8d 100644 --- a/packages/kit/src/runtime/server/page/respond_with_error.js +++ b/packages/kit/src/runtime/server/page/respond_with_error.js @@ -51,6 +51,7 @@ export async function respond_with_error({ event, state, node: default_layout, + tracing: options.tracing, // eslint-disable-next-line @typescript-eslint/require-await parent: async () => ({}) }); @@ -66,7 +67,8 @@ export async function respond_with_error({ resolve_opts, server_data_promise, state, - csr + csr, + tracing: options.tracing }); branch.push( diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index d37659cf899b..99889a23d4e7 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -34,6 +34,8 @@ import { strip_resolution_suffix } from '../pathname.js'; import { with_event } from '../app/server/event.js'; +import { record_span } from '../telemetry/record_span.js'; +import { get_tracer } from '../telemetry/get_tracer.js'; /* global __SVELTEKIT_ADAPTER_NAME__ */ /* global __SVELTEKIT_DEV__ */ @@ -362,32 +364,67 @@ export async function respond(request, options, manifest, state) { disable_search(url); } - const response = await with_event(event, () => - options.hooks.handle({ - event, - resolve: (event, opts) => - // counter-intuitively, we need to clear the event, so that it's not - // e.g. accessible when loading modules needed to handle the request - with_event(null, () => - resolve(event, page_nodes, opts).then((response) => { - // add headers/cookies here, rather than inside `resolve`, so that we - // can do it once for all responses instead of once per `return` - for (const key in headers) { - const value = headers[key]; - response.headers.set(key, /** @type {string} */ (value)); - } - - add_cookies_to_headers(response.headers, Object.values(new_cookies)); - - if (state.prerendering && event.route.id !== null) { - response.headers.set('x-sveltekit-routeid', encodeURI(event.route.id)); - } - - return response; - }) - ) - }) - ); + const tracer = await get_tracer({ is_enabled: options.tracing }); + + const response = await record_span({ + name: 'sveltekit.handle', + tracer, + attributes: { + 'sveltekit.route.id': event.route.id || 'unknown', + 'http.method': event.request.method, + 'http.url': event.url.href, + 'sveltekit.is_data_request': is_data_request, + 'sveltekit.is_sub_request': event.isSubRequest + }, + fn: async () => { + return await with_event(event, () => + options.hooks.handle({ + event, + resolve: (event, opts) => { + return record_span({ + name: 'sveltekit.resolve', + tracer, + attributes: { + 'sveltekit.route.id': event.route.id || 'unknown', + 'sveltekit.resolve.transform_page_chunk': !!opts?.transformPageChunk, + 'sveltekit.resolve.filter_serialized_response_headers': + !!opts?.filterSerializedResponseHeaders, + 'sveltekit.resolve.preload': !!opts?.preload + }, + fn: async (resolveSpan) => { + // counter-intuitively, we need to clear the event, so that it's not + // e.g. accessible when loading modules needed to handle the request + return with_event(null, () => + resolve(event, page_nodes, opts).then((response) => { + // add headers/cookies here, rather than inside `resolve`, so that we + // can do it once for all responses instead of once per `return` + for (const key in headers) { + const value = headers[key]; + response.headers.set(key, /** @type {string} */ (value)); + } + + add_cookies_to_headers(response.headers, Object.values(new_cookies)); + + if (state.prerendering && event.route.id !== null) { + response.headers.set('x-sveltekit-routeid', encodeURI(event.route.id)); + } + + resolveSpan.setAttributes({ + 'http.response.status_code': response.status, + 'http.response.body.size': + response.headers.get('content-length') || 'unknown' + }); + + return response; + }) + ); + } + }); + } + }) + ); + } + }); // respond with 304 if etag matches if (response.status === 200 && response.headers.has('etag')) { diff --git a/packages/kit/src/types/internal.d.ts b/packages/kit/src/types/internal.d.ts index 17e2425e3c17..75116570830e 100644 --- a/packages/kit/src/types/internal.d.ts +++ b/packages/kit/src/types/internal.d.ts @@ -435,6 +435,7 @@ export interface SSROptions { }): string; error(values: { message: string; status: number }): string; }; + tracing: boolean; version_hash: string; } diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index b220ce4dc2fa..e4e39812c3d8 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -668,6 +668,16 @@ declare module '@sveltejs/kit' { */ files?(filepath: string): boolean; }; + /** + * Whether to enable OpenTelemetry tracing for SvelteKit operations including handle hooks, load functions, and form actions. + * - `true` - Enable tracing for both server and client + * - `false` - Disable tracing + * - `'server'` - Enable tracing only on the server side + * - `'client'` - Enable tracing only on the client side + * @default false + * @since 2.22.0 + */ + tracing?: boolean | 'server' | 'client'; typescript?: { /** * A function that allows you to edit the generated `tsconfig.json`. You can mutate the config (recommended) or return a new one. From 904a4ccf939a2f99c434a26ae8a84bfb7228058a Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Tue, 17 Jun 2025 12:24:57 -0600 Subject: [PATCH 2/2] feat: add universal IDs to client nodes --- packages/kit/src/core/config/index.spec.js | 62 +- packages/kit/src/core/config/options.js | 15 +- .../src/core/sync/write_client_manifest.js | 2 - packages/kit/src/core/sync/write_server.js | 7 +- packages/kit/src/exports/hooks/sequence.js | 91 +- .../kit/src/exports/hooks/sequence.spec.js | 19 +- packages/kit/src/exports/public.d.ts | 50 +- packages/kit/src/runtime/client/client.js | 46 +- packages/kit/src/runtime/client/types.d.ts | 5 - packages/kit/src/runtime/server/data/index.js | 2 +- .../kit/src/runtime/server/page/actions.js | 50 +- packages/kit/src/runtime/server/page/index.js | 6 +- .../kit/src/runtime/server/page/load_data.js | 66 +- .../runtime/server/page/respond_with_error.js | 5 +- packages/kit/src/runtime/server/respond.js | 28 +- packages/kit/src/runtime/server/utils.js | 12 + packages/kit/src/runtime/shared.js | 20 + .../kit/src/runtime/telemetry/get_tracer.js | 17 +- .../src/runtime/telemetry/get_tracer.spec.js | 11 +- packages/kit/src/types/internal.d.ts | 3 +- packages/kit/test/apps/basics/.gitignore | 3 +- packages/kit/test/apps/basics/package.json | 3 + .../kit/test/apps/basics/src/hooks.server.js | 8 + .../apps/basics/src/lib/tracing-config.js | 48 + .../routes/tracing/http-error/+page.server.js | 5 + .../routes/tracing/http-error/+page.svelte | 1 + .../tracing/non-error-object/+page.server.js | 3 + .../one/two/three/[...four]/+page.svelte | 1 + .../routes/tracing/redirect/+page.server.js | 5 + .../tracing/regular-error/+page.server.js | 3 + .../kit/test/apps/basics/svelte.config.js | 5 +- .../kit/test/apps/basics/test/server.test.js | 467 +++++ packages/kit/test/types.d.ts | 21 + packages/kit/test/utils.d.ts | 2 + packages/kit/test/utils.js | 35 + packages/kit/types/index.d.ts | 61 +- packages/package/src/filesystem.js | 2 +- pnpm-lock.yaml | 1719 ++++++++++------- 38 files changed, 2012 insertions(+), 897 deletions(-) create mode 100644 packages/kit/test/apps/basics/src/lib/tracing-config.js create mode 100644 packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/tracing/non-error-object/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/tracing/one/two/three/[...four]/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/tracing/redirect/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/tracing/regular-error/+page.server.js create mode 100644 packages/kit/test/types.d.ts diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index d88ceaca4a1c..d1a954ac2f87 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -76,6 +76,9 @@ const get_defaults = (prefix = '') => ({ publicPrefix: 'PUBLIC_', privatePrefix: '' }, + experimental: { + tracing: undefined + }, files: { assets: join(prefix, 'static'), hooks: { @@ -101,7 +104,6 @@ const get_defaults = (prefix = '') => ({ serviceWorker: { register: true }, - tracing: false, typescript: {}, paths: { base: '', @@ -407,36 +409,12 @@ test('errors on loading config with incorrect default export', async () => { }); test('accepts valid tracing values', () => { - // Test boolean values assert.doesNotThrow(() => { validate_config({ kit: { - tracing: true - } - }); - }); - - assert.doesNotThrow(() => { - validate_config({ - kit: { - tracing: false - } - }); - }); - - // Test string values - assert.doesNotThrow(() => { - validate_config({ - kit: { - tracing: 'server' - } - }); - }); - - assert.doesNotThrow(() => { - validate_config({ - kit: { - tracing: 'client' + experimental: { + tracing: 'server' + } } }); }); @@ -444,7 +422,9 @@ test('accepts valid tracing values', () => { assert.doesNotThrow(() => { validate_config({ kit: { - tracing: undefined + experimental: { + tracing: undefined + } } }); }); @@ -454,27 +434,33 @@ test('errors on invalid tracing values', () => { assert.throws(() => { validate_config({ kit: { - // @ts-expect-error - given value expected to throw - tracing: 'invalid' + experimental: { + // @ts-expect-error - given value expected to throw + tracing: true + } } }); - }, /^config\.kit\.tracing should be true, false, "server", or "client"$/); + }, /^config\.kit\.experimental\.tracing should be undefined or "server"$/); assert.throws(() => { validate_config({ kit: { - // @ts-expect-error - given value expected to throw - tracing: 42 + experimental: { + // @ts-expect-error - given value expected to throw + tracing: false + } } }); - }, /^config\.kit\.tracing should be true, false, "server", or "client"$/); + }, /^config\.kit\.experimental\.tracing should be undefined or "server"$/); assert.throws(() => { validate_config({ kit: { - // @ts-expect-error - given value expected to throw - tracing: null + experimental: { + // @ts-expect-error - given value expected to throw + tracing: 'client' + } } }); - }, /^config\.kit\.tracing should be true, false, "server", or "client"$/); + }, /^config\.kit\.experimental\.tracing should be undefined or "server"$/); }); diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index dd8d2ba3a985..cd937a5af528 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -120,6 +120,15 @@ const options = object( privatePrefix: string('') }), + experimental: object({ + tracing: validate(undefined, (input, keypath) => { + if (input !== 'server') { + throw new Error(`${keypath} should be undefined or "server"`); + } + return input; + }) + }), + files: object({ assets: string('static'), hooks: object({ @@ -270,12 +279,6 @@ const options = object( files: fun((filename) => !/\.DS_Store/.test(filename)) }), - tracing: validate(false, (input, keypath) => { - if (typeof input === 'boolean') return input; - if (input === 'server' || input === 'client') return input; - throw new Error(`${keypath} should be true, false, "server", or "client"`); - }), - typescript: object({ config: fun((config) => config) }), diff --git a/packages/kit/src/core/sync/write_client_manifest.js b/packages/kit/src/core/sync/write_client_manifest.js index 71c13659864f..c27c61add43c 100644 --- a/packages/kit/src/core/sync/write_client_manifest.js +++ b/packages/kit/src/core/sync/write_client_manifest.js @@ -174,8 +174,6 @@ export function write_client_manifest(kit, manifest_data, output, metadata) { export const hash = ${s(kit.router.type === 'hash')}; - export const tracing = ${s(kit.tracing === true || kit.tracing === 'client')}; - export const decode = (type, value) => decoders[type](value); export { default as root } from '../root.${isSvelte5Plus() ? 'js' : 'svelte'}'; diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index f9ac6215ae44..a2d6f3b99eb3 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -33,6 +33,11 @@ import { set_building, set_prerendering } from '__sveltekit/environment'; import { set_assets } from '__sveltekit/paths'; import { set_manifest, set_read_implementation } from '__sveltekit/server'; import { set_private_env, set_public_env, set_safe_public_env } from '${runtime_directory}/shared-server.js'; +import { get_tracer, enable_tracing } from '${runtime_directory}/telemetry/get_tracer.js'; + +if (${s(config.kit.experimental.tracing === 'server')}) { + enable_tracing(); +} export const options = { app_template_contains_nonce: ${template.includes('%sveltekit.nonce%')}, @@ -60,7 +65,7 @@ export const options = { .replace(/%sveltekit\.status%/g, '" + status + "') .replace(/%sveltekit\.error\.message%/g, '" + message + "')} }, - tracing: ${config.kit.tracing === true || config.kit.tracing === 'server'}, + tracer: get_tracer(), version_hash: ${s(hash(config.kit.version.name))} }; diff --git a/packages/kit/src/exports/hooks/sequence.js b/packages/kit/src/exports/hooks/sequence.js index 2c0fc3460007..443be6c24cd4 100644 --- a/packages/kit/src/exports/hooks/sequence.js +++ b/packages/kit/src/exports/hooks/sequence.js @@ -1,3 +1,9 @@ +/** @import { Handle, RequestEvent, ResolveOptions } from '@sveltejs/kit' */ +/** @import { MaybePromise } from 'types' */ +import { with_event } from '../../runtime/app/server/event.js'; +import { get_tracer } from '../../runtime/telemetry/get_tracer.js'; +import { record_span } from '../../runtime/telemetry/record_span.js'; + /** * A helper function for sequencing multiple `handle` calls in a middleware-like manner. * The behavior for the `handle` options is as follows: @@ -66,56 +72,77 @@ * first post-processing * ``` * - * @param {...import('@sveltejs/kit').Handle} handlers The chain of `handle` functions - * @returns {import('@sveltejs/kit').Handle} + * @param {...Handle} handlers The chain of `handle` functions + * @returns {Handle} */ export function sequence(...handlers) { const length = handlers.length; if (!length) return ({ event, resolve }) => resolve(event); - return ({ event, resolve }) => { + return async ({ event, resolve }) => { + // there's an assumption here that people aren't doing something insane like sequence(() => {}, sequence(() => {})) + // worst case there is that future spans get a lower-down span as their root span -- the tracing would still work, + // it'd just look a little weird + const { rootSpan } = event.tracing; + const tracer = await get_tracer(); return apply_handle(0, event, {}); /** * @param {number} i - * @param {import('@sveltejs/kit').RequestEvent} event - * @param {import('@sveltejs/kit').ResolveOptions | undefined} parent_options - * @returns {import('types').MaybePromise} + * @param {RequestEvent} event + * @param {ResolveOptions | undefined} parent_options + * @returns {MaybePromise} */ function apply_handle(i, event, parent_options) { const handle = handlers[i]; - return handle({ - event, - resolve: (event, options) => { - /** @type {import('@sveltejs/kit').ResolveOptions['transformPageChunk']} */ - const transformPageChunk = async ({ html, done }) => { - if (options?.transformPageChunk) { - html = (await options.transformPageChunk({ html, done })) ?? ''; - } + return record_span({ + tracer, + name: 'sveltekit.handle.child', + attributes: { + 'sveltekit.handle.child.index': i + }, + fn: async (span) => { + const traced_event = { ...event, tracing: { rootSpan, currentSpan: span } }; + return await with_event(traced_event, () => + handle({ + event: traced_event, + resolve: (event, options) => { + /** @type {ResolveOptions['transformPageChunk']} */ + const transformPageChunk = async ({ html, done }) => { + if (options?.transformPageChunk) { + html = (await options.transformPageChunk({ html, done })) ?? ''; + } - if (parent_options?.transformPageChunk) { - html = (await parent_options.transformPageChunk({ html, done })) ?? ''; - } + if (parent_options?.transformPageChunk) { + html = (await parent_options.transformPageChunk({ html, done })) ?? ''; + } - return html; - }; + return html; + }; - /** @type {import('@sveltejs/kit').ResolveOptions['filterSerializedResponseHeaders']} */ - const filterSerializedResponseHeaders = - parent_options?.filterSerializedResponseHeaders ?? - options?.filterSerializedResponseHeaders; + /** @type {ResolveOptions['filterSerializedResponseHeaders']} */ + const filterSerializedResponseHeaders = + parent_options?.filterSerializedResponseHeaders ?? + options?.filterSerializedResponseHeaders; - /** @type {import('@sveltejs/kit').ResolveOptions['preload']} */ - const preload = parent_options?.preload ?? options?.preload; + /** @type {ResolveOptions['preload']} */ + const preload = parent_options?.preload ?? options?.preload; - return i < length - 1 - ? apply_handle(i + 1, event, { - transformPageChunk, - filterSerializedResponseHeaders, - preload - }) - : resolve(event, { transformPageChunk, filterSerializedResponseHeaders, preload }); + return i < length - 1 + ? apply_handle(i + 1, event, { + transformPageChunk, + filterSerializedResponseHeaders, + preload + }) + : resolve(event, { + transformPageChunk, + filterSerializedResponseHeaders, + preload + }); + } + }) + ); } }); } diff --git a/packages/kit/src/exports/hooks/sequence.spec.js b/packages/kit/src/exports/hooks/sequence.spec.js index 0829e90a92e6..79a9eee95aa7 100644 --- a/packages/kit/src/exports/hooks/sequence.spec.js +++ b/packages/kit/src/exports/hooks/sequence.spec.js @@ -4,6 +4,10 @@ import { installPolyfills } from '../node/polyfills.js'; installPolyfills(); +const dummy_event = /** @type {import('@sveltejs/kit').RequestEvent} */ ({ + tracing: { rootSpan: {} } +}); + test('applies handlers in sequence', async () => { /** @type {string[]} */ const order = []; @@ -29,10 +33,9 @@ test('applies handlers in sequence', async () => { } ); - const event = /** @type {import('@sveltejs/kit').RequestEvent} */ ({}); const response = new Response(); - assert.equal(await handler({ event, resolve: () => response }), response); + assert.equal(await handler({ event: dummy_event, resolve: () => response }), response); expect(order).toEqual(['1a', '2a', '3a', '3b', '2b', '1b']); }); @@ -47,9 +50,8 @@ test('uses transformPageChunk option passed to non-terminal handle function', as async ({ event, resolve }) => resolve(event) ); - const event = /** @type {import('@sveltejs/kit').RequestEvent} */ ({}); const response = await handler({ - event, + event: dummy_event, resolve: async (_event, opts = {}) => { let html = ''; @@ -84,9 +86,8 @@ test('merges transformPageChunk option', async () => { } ); - const event = /** @type {import('@sveltejs/kit').RequestEvent} */ ({}); const response = await handler({ - event, + event: dummy_event, resolve: async (_event, opts = {}) => { let html = ''; @@ -117,9 +118,8 @@ test('uses first defined preload option', async () => { } ); - const event = /** @type {import('@sveltejs/kit').RequestEvent} */ ({}); const response = await handler({ - event, + event: dummy_event, resolve: (_event, opts = {}) => { let html = ''; @@ -150,9 +150,8 @@ test('uses first defined filterSerializedResponseHeaders option', async () => { } ); - const event = /** @type {import('@sveltejs/kit').RequestEvent} */ ({}); const response = await handler({ - event, + event: dummy_event, resolve: (_event, opts = {}) => { let html = ''; diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 501340afe025..e13eb328c4bd 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -18,6 +18,7 @@ import { } from '../types/private.js'; import { BuildData, SSRNodeLoader, SSRRoute, ValidatedConfig } from 'types'; import type { SvelteConfig } from '@sveltejs/vite-plugin-svelte'; +import { Span } from '@opentelemetry/api'; export { PrerenderOption } from '../types/private.js'; @@ -401,6 +402,15 @@ export interface KitConfig { */ privatePrefix?: string; }; + /** Experimental features. Here be dragons. Breaking changes may occur in minor releases. */ + experimental?: { + /** + * Whether to enable serverside OpenTelemetry tracing for SvelteKit operations including handle hooks, load functions, and form actions. + * @default undefined + * @since 2.22.0 // TODO: update this before publishing + */ + tracing?: 'server'; + }; /** * Where to find various files within your project. */ @@ -686,16 +696,6 @@ export interface KitConfig { */ files?(filepath: string): boolean; }; - /** - * Whether to enable OpenTelemetry tracing for SvelteKit operations including handle hooks, load functions, and form actions. - * - `true` - Enable tracing for both server and client - * - `false` - Disable tracing - * - `'server'` - Enable tracing only on the server side - * - `'client'` - Enable tracing only on the client side - * @default false - * @since 2.22.0 - */ - tracing?: boolean | 'server' | 'client'; typescript?: { /** * A function that allows you to edit the generated `tsconfig.json`. You can mutate the config (recommended) or return a new one. @@ -977,6 +977,16 @@ export interface LoadEvent< * ``` */ untrack: (fn: () => T) => T; + + /** + * Access to spans for tracing. If tracing is not enabled or the function is being run in the browser, these spans will do nothing. + */ + tracing: { + /** The root span for the request. This span is named `sveltekit.handle.root`. */ + rootSpan: Span; + /** The span associated with the current `load` function. */ + currentSpan: Span; + }; } export interface NavigationEvent< @@ -1252,6 +1262,16 @@ export interface RequestEvent< * `true` for `+server.js` calls coming from SvelteKit without the overhead of actually making an HTTP request. This happens when you make same-origin `fetch` requests on the server. */ isSubRequest: boolean; + + /** + * Access to spans for tracing. If tracing is not enabled, these spans will do nothing. + */ + tracing: { + /** The root span for the request. This span is named `sveltekit.handle.root`. */ + rootSpan: Span; + /** The span associated with the current `handle` hook, `load` function, or server action. */ + currentSpan: Span; + }; } /** @@ -1408,6 +1428,16 @@ export interface ServerLoadEvent< * ``` */ untrack: (fn: () => T) => T; + + /** + * Access to spans for tracing. If tracing is not enabled, these spans will do nothing. + */ + tracing: { + /** The root span for the request. This span is named `sveltekit.handle.root`. */ + rootSpan: Span; + /** The span associated with the current `load` function. */ + currentSpan: Span; + }; } /** diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 0babdba9a672..2a5867a9489e 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -39,13 +39,17 @@ import { } from './constants.js'; import { validate_page_exports } from '../../utils/exports.js'; import { compact } from '../../utils/array.js'; -import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM, validate_depends } from '../shared.js'; +import { + INVALIDATED_PARAM, + TRAILING_SLASH_PARAM, + validate_depends, + validate_load_response +} from '../shared.js'; import { get_message, get_status } from '../../utils/error.js'; import { writable } from 'svelte/store'; import { page, update, navigating } from './state.svelte.js'; import { add_data_suffix, add_resolution_suffix } from '../pathname.js'; -import { record_span } from '../telemetry/record_span.js'; -import { get_tracer } from '../telemetry/get_tracer.js'; +import { noop_span } from '../telemetry/noop.js'; export { load_css }; @@ -673,6 +677,7 @@ async function load_node({ loader, parent, url, params, route, server_data_node /** @type {import('@sveltejs/kit').LoadEvent} */ const load_input = { + tracing: { rootSpan: noop_span, currentSpan: noop_span }, route: new Proxy(route, { get: (target, key) => { if (is_tracking) { @@ -761,45 +766,16 @@ async function load_node({ loader, parent, url, params, route, server_data_node } }; - async function traced_load() { - const tracer = await get_tracer({ is_enabled: app.tracing }); - - return record_span({ - name: 'sveltekit.load.universal', - tracer, - attributes: { - 'sveltekit.load.node_id': node.universal_id || 'unknown', - 'sveltekit.load.type': 'universal', - 'sveltekit.load.environment': 'client', - 'sveltekit.route.id': route.id || 'unknown' - }, - fn: async () => (await node.universal?.load?.call(null, load_input)) ?? null - }); - } - if (DEV) { try { lock_fetch(); - data = await traced_load(); - - if (data != null && Object.getPrototypeOf(data) !== Object.prototype) { - throw new Error( - `the load function located in ${node.universal_id} returned ${ - typeof data !== 'object' - ? `a ${typeof data}` - : data instanceof Response - ? 'a Response object' - : Array.isArray(data) - ? 'an array' - : 'a non-plain object' - }, but must return a plain object at the top level (i.e. \`return {...}\`)` - ); - } + data = (await node.universal.load.call(null, load_input)) ?? null; + validate_load_response(data, `related to route '${route.id}'`); } finally { unlock_fetch(); } } else { - data = await traced_load(); + data = (await node.universal.load.call(null, load_input)) ?? null; } } diff --git a/packages/kit/src/runtime/client/types.d.ts b/packages/kit/src/runtime/client/types.d.ts index a293a0e9c043..4b32f56b7350 100644 --- a/packages/kit/src/runtime/client/types.d.ts +++ b/packages/kit/src/runtime/client/types.d.ts @@ -56,11 +56,6 @@ export interface SvelteKitApp { */ hash: boolean; - /** - * Whether OpenTelemetry tracing is enabled (config.tracing === true || config.tracing === 'client') - */ - tracing: boolean; - root: typeof SvelteComponent; } diff --git a/packages/kit/src/runtime/server/data/index.js b/packages/kit/src/runtime/server/data/index.js index a6cb1dfcbb1b..c63fc8654256 100644 --- a/packages/kit/src/runtime/server/data/index.js +++ b/packages/kit/src/runtime/server/data/index.js @@ -63,7 +63,7 @@ export async function render_data( event: new_event, state, node, - tracing: options.tracing, + tracer: await options.tracer, parent: async () => { /** @type {Record} */ const data = {}; diff --git a/packages/kit/src/runtime/server/page/actions.js b/packages/kit/src/runtime/server/page/actions.js index c87ed0d7756f..0c032030404c 100644 --- a/packages/kit/src/runtime/server/page/actions.js +++ b/packages/kit/src/runtime/server/page/actions.js @@ -1,3 +1,4 @@ +/** @import { RequestEvent, ActionResult, Actions } from '@sveltejs/kit' */ import * as devalue from 'devalue'; import { DEV } from 'esm-env'; import { json } from '@sveltejs/kit'; @@ -7,9 +8,8 @@ import { is_form_content_type, negotiate } from '../../../utils/http.js'; import { handle_error_and_jsonify } from '../utils.js'; import { with_event } from '../../app/server/event.js'; import { record_span } from '../../telemetry/record_span.js'; -import { get_tracer } from '../../telemetry/get_tracer.js'; -/** @param {import('@sveltejs/kit').RequestEvent} event */ +/** @param {RequestEvent} event */ export function is_action_json_request(event) { const accept = negotiate(event.request.headers.get('accept') ?? '*/*', [ 'application/json', @@ -20,7 +20,7 @@ export function is_action_json_request(event) { } /** - * @param {import('@sveltejs/kit').RequestEvent} event + * @param {RequestEvent} event * @param {import('types').SSROptions} options * @param {import('types').SSRNode['server'] | undefined} server */ @@ -53,7 +53,7 @@ export async function handle_action_json_request(event, options, server) { check_named_default_separate(actions); try { - const data = await call_action(event, actions, options.tracing); + const data = await call_action(event, actions, await options.tracer); if (__SVELTEKIT_DEV__) { validate_action_return(data); @@ -113,7 +113,7 @@ function check_incorrect_fail_use(error) { } /** - * @param {import('@sveltejs/kit').Redirect} redirect + * @param {Redirect} redirect */ export function action_json_redirect(redirect) { return action_json({ @@ -124,7 +124,7 @@ export function action_json_redirect(redirect) { } /** - * @param {import('@sveltejs/kit').ActionResult} data + * @param {ActionResult} data * @param {ResponseInit} [init] */ function action_json(data, init) { @@ -132,19 +132,19 @@ function action_json(data, init) { } /** - * @param {import('@sveltejs/kit').RequestEvent} event + * @param {RequestEvent} event */ export function is_action_request(event) { return event.request.method === 'POST'; } /** - * @param {import('@sveltejs/kit').RequestEvent} event + * @param {RequestEvent} event * @param {import('types').SSRNode['server'] | undefined} server - * @param {boolean} tracing - * @returns {Promise} + * @param {import('@opentelemetry/api').Tracer} tracer + * @returns {Promise} */ -export async function handle_action_request(event, server, tracing) { +export async function handle_action_request(event, server, tracer) { const actions = server?.actions; if (!actions) { @@ -167,7 +167,7 @@ export async function handle_action_request(event, server, tracing) { check_named_default_separate(actions); try { - const data = await call_action(event, actions, tracing); + const data = await call_action(event, actions, tracer); if (__SVELTEKIT_DEV__) { validate_action_return(data); @@ -206,7 +206,7 @@ export async function handle_action_request(event, server, tracing) { } /** - * @param {import('@sveltejs/kit').Actions} actions + * @param {Actions} actions */ function check_named_default_separate(actions) { if (actions.default && Object.keys(actions).length > 1) { @@ -217,12 +217,12 @@ function check_named_default_separate(actions) { } /** - * @param {import('@sveltejs/kit').RequestEvent} event + * @param {RequestEvent} event * @param {NonNullable} actions - * @param {boolean} tracing + * @param {import('@opentelemetry/api').Tracer} tracer * @throws {Redirect | HttpError | SvelteKitError | Error} */ -async function call_action(event, actions, tracing) { +async function call_action(event, actions, tracer) { const url = new URL(event.request.url); let name = 'default'; @@ -251,27 +251,29 @@ async function call_action(event, actions, tracing) { ); } - const tracer = await get_tracer({ is_enabled: tracing }); - return record_span({ name: 'sveltekit.action', tracer, attributes: { 'sveltekit.action.name': name, - 'sveltekit.route.id': event.route.id || 'unknown' + 'http.route': event.route.id || 'unknown' }, fn: async (action_span) => { - const result = await with_event(event, () => action(event)); + const traced_event = { + ...event, + tracing: { + rootSpan: event.tracing.rootSpan, + currentSpan: action_span + } + }; + const result = await with_event(traced_event, () => action(traced_event)); if (result instanceof ActionFailure) { action_span.setAttributes({ 'sveltekit.action.result.type': 'failure', 'sveltekit.action.result.status': result.status }); - } else { - action_span.setAttributes({ - 'sveltekit.action.result.type': 'success' - }); } + return result; } }); diff --git a/packages/kit/src/runtime/server/page/index.js b/packages/kit/src/runtime/server/page/index.js index 4d79e6f60278..3283e836ef37 100644 --- a/packages/kit/src/runtime/server/page/index.js +++ b/packages/kit/src/runtime/server/page/index.js @@ -56,7 +56,7 @@ export async function render_page(event, page, options, manifest, state, nodes, if (is_action_request(event)) { // for action requests, first call handler in +page.server.js // (this also determines status code) - action_result = await handle_action_request(event, leaf_node.server, options.tracing); + action_result = await handle_action_request(event, leaf_node.server, await options.tracer); if (action_result?.type === 'redirect') { return redirect_response(action_result.status, action_result.location); } @@ -167,7 +167,7 @@ export async function render_page(event, page, options, manifest, state, nodes, } return data; }, - tracing: options.tracing + tracer: await options.tracer }); } catch (e) { load_error = /** @type {Error} */ (e); @@ -196,7 +196,7 @@ export async function render_page(event, page, options, manifest, state, nodes, server_data_promise: server_promises[i], state, csr, - tracing: options.tracing + tracer: await options.tracer }); } catch (e) { load_error = /** @type {Error} */ (e); diff --git a/packages/kit/src/runtime/server/page/load_data.js b/packages/kit/src/runtime/server/page/load_data.js index cfbcfd88a38e..45ec2209b7cd 100644 --- a/packages/kit/src/runtime/server/page/load_data.js +++ b/packages/kit/src/runtime/server/page/load_data.js @@ -1,10 +1,10 @@ import { DEV } from 'esm-env'; import { disable_search, make_trackable } from '../../../utils/url.js'; -import { validate_depends } from '../../shared.js'; +import { validate_depends, validate_load_response } from '../../shared.js'; import { b64_encode } from '../../utils.js'; import { with_event } from '../../app/server/event.js'; import { record_span } from '../../telemetry/record_span.js'; -import { get_tracer } from '../../telemetry/get_tracer.js'; +import { get_node_type } from '../utils.js'; /** * Calls the user's server `load` function. @@ -13,11 +13,11 @@ import { get_tracer } from '../../telemetry/get_tracer.js'; * state: import('types').SSRState; * node: import('types').SSRNode | undefined; * parent: () => Promise>; - * tracing: boolean; + * tracer: import('@opentelemetry/api').Tracer; * }} opts * @returns {Promise} */ -export async function load_server_data({ event, state, node, parent, tracing }) { +export async function load_server_data({ event, state, node, parent, tracer }) { if (!node?.server) return null; let is_tracking = true; @@ -71,20 +71,21 @@ export async function load_server_data({ event, state, node, parent, tracing }) let done = false; - const tracer = await get_tracer({ is_enabled: tracing }); - const result = await record_span({ - name: 'sveltekit.load.server', + name: 'sveltekit.load', tracer, attributes: { 'sveltekit.load.node_id': node.server_id || 'unknown', - 'sveltekit.load.type': 'server', - 'sveltekit.route.id': event.route.id || 'unknown' + 'sveltekit.load.node_type': get_node_type(node.server_id), + 'sveltekit.load.environment': 'server', + 'http.route': event.route.id || 'unknown' }, - fn: async () => { - const result = await with_event(event, () => + fn: async (span) => { + const rootSpan = event.tracing.rootSpan; + const traced_event = { ...event, tracing: { rootSpan, currentSpan: span } }; + const result = await with_event(traced_event, () => load.call(null, { - ...event, + ...traced_event, fetch: (info, init) => { const url = new URL(info instanceof Request ? info.url : info, event.url); @@ -176,7 +177,7 @@ export async function load_server_data({ event, state, node, parent, tracing }) }); if (__SVELTEKIT_DEV__) { - validate_load_response(result, node.server_id); + validate_load_response(result, `in ${node.server_id}`); } done = true; @@ -200,7 +201,7 @@ export async function load_server_data({ event, state, node, parent, tracing }) * server_data_promise: Promise; * state: import('types').SSRState; * csr: boolean; - * tracing: boolean; + * tracer: import('@opentelemetry/api').Tracer; * }} opts * @returns {Promise> | null>} */ @@ -213,7 +214,7 @@ export async function load_data({ state, resolve_opts, csr, - tracing + tracer }) { const server_data_node = await server_data_promise; @@ -223,19 +224,20 @@ export async function load_data({ const { load } = node.universal; - const tracer = await get_tracer({ is_enabled: tracing }); - const result = await record_span({ - name: 'sveltekit.load.universal', + name: 'sveltekit.load', tracer, attributes: { 'sveltekit.load.node_id': node.universal_id || 'unknown', - 'sveltekit.load.type': 'universal', + 'sveltekit.load.node_type': get_node_type(node.universal_id), 'sveltekit.load.environment': 'server', - 'sveltekit.route.id': event.route.id || 'unknown' + 'http.route': event.route.id || 'unknown' }, - fn: async () => { + fn: async (span) => { + const rootSpan = event.tracing.rootSpan; + const tracing = { rootSpan, currentSpan: span }; const result = await load.call(null, { + tracing, url: event.url, params: event.params, data: server_data_node?.data ?? null, @@ -252,7 +254,7 @@ export async function load_data({ }); if (__SVELTEKIT_DEV__) { - validate_load_response(result, node.universal_id); + validate_load_response(result, `in ${node.universal_id}`); } return result ?? null; @@ -436,23 +438,3 @@ async function stream_to_string(stream) { } return result; } - -/** - * @param {any} data - * @param {string} [id] - */ -function validate_load_response(data, id) { - if (data != null && Object.getPrototypeOf(data) !== Object.prototype) { - throw new Error( - `a load function in ${id} returned ${ - typeof data !== 'object' - ? `a ${typeof data}` - : data instanceof Response - ? 'a Response object' - : Array.isArray(data) - ? 'an array' - : 'a non-plain object' - }, but must return a plain object at the top level (i.e. \`return {...}\`)` - ); - } -} diff --git a/packages/kit/src/runtime/server/page/respond_with_error.js b/packages/kit/src/runtime/server/page/respond_with_error.js index ded87ba9dd8d..670870a35291 100644 --- a/packages/kit/src/runtime/server/page/respond_with_error.js +++ b/packages/kit/src/runtime/server/page/respond_with_error.js @@ -46,12 +46,13 @@ export async function respond_with_error({ if (ssr) { state.error = true; + const tracer = await options.tracer; const server_data_promise = load_server_data({ event, state, node: default_layout, - tracing: options.tracing, + tracer, // eslint-disable-next-line @typescript-eslint/require-await parent: async () => ({}) }); @@ -68,7 +69,7 @@ export async function respond_with_error({ server_data_promise, state, csr, - tracing: options.tracing + tracer }); branch.push( diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index 99889a23d4e7..38e71af812bf 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -35,7 +35,6 @@ import { } from '../pathname.js'; import { with_event } from '../app/server/event.js'; import { record_span } from '../telemetry/record_span.js'; -import { get_tracer } from '../telemetry/get_tracer.js'; /* global __SVELTEKIT_ADAPTER_NAME__ */ /* global __SVELTEKIT_DEV__ */ @@ -364,38 +363,39 @@ export async function respond(request, options, manifest, state) { disable_search(url); } - const tracer = await get_tracer({ is_enabled: options.tracing }); + const tracer = await options.tracer; const response = await record_span({ - name: 'sveltekit.handle', + name: 'sveltekit.handle.root', tracer, attributes: { - 'sveltekit.route.id': event.route.id || 'unknown', + 'http.route': event.route.id || 'unknown', 'http.method': event.request.method, 'http.url': event.url.href, 'sveltekit.is_data_request': is_data_request, 'sveltekit.is_sub_request': event.isSubRequest }, - fn: async () => { - return await with_event(event, () => + fn: async (rootSpan) => { + const traced_event = { ...event, tracing: { rootSpan, currentSpan: rootSpan } }; + return await with_event(traced_event, () => options.hooks.handle({ - event, + event: traced_event, resolve: (event, opts) => { return record_span({ - name: 'sveltekit.resolve', + name: 'sveltekit.resolve.root', tracer, attributes: { - 'sveltekit.route.id': event.route.id || 'unknown', - 'sveltekit.resolve.transform_page_chunk': !!opts?.transformPageChunk, - 'sveltekit.resolve.filter_serialized_response_headers': - !!opts?.filterSerializedResponseHeaders, - 'sveltekit.resolve.preload': !!opts?.preload + 'http.route': event.route.id || 'unknown' }, fn: async (resolveSpan) => { // counter-intuitively, we need to clear the event, so that it's not // e.g. accessible when loading modules needed to handle the request return with_event(null, () => - resolve(event, page_nodes, opts).then((response) => { + resolve( + { ...event, tracing: { rootSpan, currentSpan: resolveSpan } }, + page_nodes, + opts + ).then((response) => { // add headers/cookies here, rather than inside `resolve`, so that we // can do it once for all responses instead of once per `return` for (const key in headers) { diff --git a/packages/kit/src/runtime/server/utils.js b/packages/kit/src/runtime/server/utils.js index 663584760dd7..dbd3d5477db7 100644 --- a/packages/kit/src/runtime/server/utils.js +++ b/packages/kit/src/runtime/server/utils.js @@ -183,3 +183,15 @@ export function has_prerendered_path(manifest, pathname) { (pathname.at(-1) === '/' && manifest._.prerendered_routes.has(pathname.slice(0, -1))) ); } + +/** + * @param {string | undefined} node_id + * @returns {string} + */ +export function get_node_type(node_id) { + const parts = node_id?.split('/'); + const filename = parts?.at(-1); + if (!filename) return 'unknown'; + const dot_parts = filename.split('.'); + return dot_parts.slice(0, -1).join('.'); +} diff --git a/packages/kit/src/runtime/shared.js b/packages/kit/src/runtime/shared.js index b5c559b4292c..fc88526fa442 100644 --- a/packages/kit/src/runtime/shared.js +++ b/packages/kit/src/runtime/shared.js @@ -14,3 +14,23 @@ export function validate_depends(route_id, dep) { export const INVALIDATED_PARAM = 'x-sveltekit-invalidated'; export const TRAILING_SLASH_PARAM = 'x-sveltekit-trailing-slash'; + +/** + * @param {any} data + * @param {string} [location_description] + */ +export function validate_load_response(data, location_description) { + if (data != null && Object.getPrototypeOf(data) !== Object.prototype) { + throw new Error( + `a load function ${location_description} returned ${ + typeof data !== 'object' + ? `a ${typeof data}` + : data instanceof Response + ? 'a Response object' + : Array.isArray(data) + ? 'an array' + : 'a non-plain object' + }, but must return a plain object at the top level (i.e. \`return {...}\`)` + ); + } +} diff --git a/packages/kit/src/runtime/telemetry/get_tracer.js b/packages/kit/src/runtime/telemetry/get_tracer.js index 5c7fac29b412..d4198b9330ea 100644 --- a/packages/kit/src/runtime/telemetry/get_tracer.js +++ b/packages/kit/src/runtime/telemetry/get_tracer.js @@ -3,12 +3,23 @@ import { DEV } from 'esm-env'; import { noop_tracer } from './noop.js'; import { load_otel } from './load_otel.js'; +// this is controlled via a global flag because we need to access it in locations where we don't have access to the config +// (specifically, in `sequence`-d handle functions) +// since this is a global flag with a static value, it's safe to set it during server initialization +let is_enabled = false; + +export function enable_tracing() { + is_enabled = true; +} + +export function disable_tracing() { + is_enabled = false; +} + /** - * @param {Object} [options={}] - Configuration options - * @param {boolean} [options.is_enabled=false] - Whether tracing is enabled * @returns {Promise} The tracer instance */ -export async function get_tracer({ is_enabled = false } = {}) { +export async function get_tracer() { if (!is_enabled) { return noop_tracer; } diff --git a/packages/kit/src/runtime/telemetry/get_tracer.spec.js b/packages/kit/src/runtime/telemetry/get_tracer.spec.js index 01a8dc74a9b1..1452527f47f8 100644 --- a/packages/kit/src/runtime/telemetry/get_tracer.spec.js +++ b/packages/kit/src/runtime/telemetry/get_tracer.spec.js @@ -1,23 +1,25 @@ import { describe, test, expect, beforeEach, vi } from 'vitest'; -import { get_tracer } from './get_tracer.js'; +import { disable_tracing, enable_tracing, get_tracer } from './get_tracer.js'; import { noop_tracer } from './noop.js'; import * as load_otel from './load_otel.js'; describe('get_tracer', () => { beforeEach(() => { vi.resetAllMocks(); + disable_tracing(); }); test('returns noop tracer if tracing is disabled', async () => { - const tracer = await get_tracer({ is_enabled: false }); + const tracer = await get_tracer(); expect(tracer).toBe(noop_tracer); }); test('returns noop tracer if @opentelemetry/api is not installed, warning', async () => { + enable_tracing(); vi.spyOn(load_otel, 'load_otel').mockResolvedValue(null); const console_warn_spy = vi.spyOn(console, 'warn'); - const tracer = await get_tracer({ is_enabled: true }); + const tracer = await get_tracer(); expect(tracer).toBe(noop_tracer); expect(console_warn_spy).toHaveBeenCalledWith( 'Tracing is enabled, but `@opentelemetry/api` is not available. Have you installed it?' @@ -25,7 +27,8 @@ describe('get_tracer', () => { }); test('returns otel tracer if @opentelemetry/api is installed', async () => { - const tracer = await get_tracer({ is_enabled: true }); + enable_tracing(); + const tracer = await get_tracer(); expect(tracer).not.toBe(noop_tracer); }); }); diff --git a/packages/kit/src/types/internal.d.ts b/packages/kit/src/types/internal.d.ts index 75116570830e..4354fa2fe055 100644 --- a/packages/kit/src/types/internal.d.ts +++ b/packages/kit/src/types/internal.d.ts @@ -29,6 +29,7 @@ import { RequestOptions, TrailingSlash } from './private.js'; +import { Tracer } from '@opentelemetry/api'; export interface ServerModule { Server: typeof InternalServer; @@ -435,7 +436,7 @@ export interface SSROptions { }): string; error(values: { message: string; status: number }): string; }; - tracing: boolean; + tracer: Promise; version_hash: string; } diff --git a/packages/kit/test/apps/basics/.gitignore b/packages/kit/test/apps/basics/.gitignore index fad4d3e1518d..7bc5d5fff974 100644 --- a/packages/kit/test/apps/basics/.gitignore +++ b/packages/kit/test/apps/basics/.gitignore @@ -1,3 +1,4 @@ /test/errors.json !/.env -/src/routes/routing/symlink-from \ No newline at end of file +/src/routes/routing/symlink-from +/test/spans.jsonl \ No newline at end of file diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index fb8fa5350dd8..bcd7c3973834 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -17,6 +17,9 @@ "test:server-side-route-resolution:build": "node test/setup.js && node -e \"fs.rmSync('test/errors.json', { force: true })\" && cross-env PUBLIC_PRERENDERING=false ROUTER_RESOLUTION=server playwright test" }, "devDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/sdk-trace-node": "^2.0.1", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "catalog:", "cross-env": "catalog:", diff --git a/packages/kit/test/apps/basics/src/hooks.server.js b/packages/kit/test/apps/basics/src/hooks.server.js index 5976df3f5763..4c13cf54da2b 100644 --- a/packages/kit/test/apps/basics/src/hooks.server.js +++ b/packages/kit/test/apps/basics/src/hooks.server.js @@ -5,6 +5,7 @@ import fs from 'node:fs'; import { COOKIE_NAME } from './routes/cookies/shared'; import { _set_from_init } from './routes/init-hooks/+page.server'; import { getRequestEvent } from '$app/server'; +import '$lib/tracing-config'; /** * Transform an error into a POJO, by copying its `name`, `message` @@ -49,6 +50,13 @@ export const handleError = ({ event, error: e, status, message }) => { }; export const handle = sequence( + ({ event, resolve }) => { + const test_id = !building && event.url.searchParams.get('test_id'); + if (test_id) { + event.tracing.rootSpan.setAttribute('test_id', test_id); + } + return resolve(event); + }, ({ event, resolve }) => { event.locals.key = event.route.id; event.locals.params = event.params; diff --git a/packages/kit/test/apps/basics/src/lib/tracing-config.js b/packages/kit/test/apps/basics/src/lib/tracing-config.js new file mode 100644 index 000000000000..b944279edecc --- /dev/null +++ b/packages/kit/test/apps/basics/src/lib/tracing-config.js @@ -0,0 +1,48 @@ +/** @import {SpanExporter} from '@opentelemetry/sdk-trace-node' */ +/** @import {SpanData} from '../../../../types' */ +import { NodeSDK } from '@opentelemetry/sdk-node'; +import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node'; +import fs from 'node:fs'; + +/** @implements {SpanExporter} */ +class FilesystemSpanExporter { + #path; + + constructor(path) { + fs.rmSync(path, { force: true }); + this.#path = path; + } + + /** @param {import('@opentelemetry/sdk-trace-node').ReadableSpan[]} spans */ + export(spans) { + // spans have circular references so they can't be naively json-ified + const serialized_spans = spans.map((span) => { + const span_context = span.spanContext(); + /** @type {SpanData} */ + const span_data = { + name: span.name, + status: span.status, + start_time: span.startTime, + end_time: span.endTime, + attributes: span.attributes, + links: span.links, + trace_id: span_context.traceId, + span_id: span_context.spanId, + parent_span_id: span.parentSpanContext?.spanId + }; + return JSON.stringify(span_data); + }); + + fs.appendFileSync(this.#path, serialized_spans.join('\n') + '\n'); + } + shutdown() { + return Promise.resolve(); + } +} + +const filesystemSpanExporter = new FilesystemSpanExporter('test/spans.jsonl'); +const spanProcessor = new SimpleSpanProcessor(filesystemSpanExporter); +export const sdk = new NodeSDK({ + spanProcessor +}); +sdk.start(); diff --git a/packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.server.js b/packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.server.js new file mode 100644 index 000000000000..cdb7c46a0e31 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.server.js @@ -0,0 +1,5 @@ +import { error } from '@sveltejs/kit'; + +export async function load() { + error(500, 'Internal server error from tracing test'); +} diff --git a/packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.svelte b/packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.svelte new file mode 100644 index 000000000000..f32044fa6f36 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/tracing/http-error/+page.svelte @@ -0,0 +1 @@ +

This should not render due to load error

diff --git a/packages/kit/test/apps/basics/src/routes/tracing/non-error-object/+page.server.js b/packages/kit/test/apps/basics/src/routes/tracing/non-error-object/+page.server.js new file mode 100644 index 000000000000..1d678adad533 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/tracing/non-error-object/+page.server.js @@ -0,0 +1,3 @@ +export async function load() { + throw 'string error from tracing test'; +} diff --git a/packages/kit/test/apps/basics/src/routes/tracing/one/two/three/[...four]/+page.svelte b/packages/kit/test/apps/basics/src/routes/tracing/one/two/three/[...four]/+page.svelte new file mode 100644 index 000000000000..13c34178c381 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/tracing/one/two/three/[...four]/+page.svelte @@ -0,0 +1 @@ +

Tracing

diff --git a/packages/kit/test/apps/basics/src/routes/tracing/redirect/+page.server.js b/packages/kit/test/apps/basics/src/routes/tracing/redirect/+page.server.js new file mode 100644 index 000000000000..42f1a7375b87 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/tracing/redirect/+page.server.js @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export async function load({ url }) { + redirect(307, `/tracing/one/two/three/four/five${url.search}`); +} diff --git a/packages/kit/test/apps/basics/src/routes/tracing/regular-error/+page.server.js b/packages/kit/test/apps/basics/src/routes/tracing/regular-error/+page.server.js new file mode 100644 index 000000000000..209e1233ac85 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/tracing/regular-error/+page.server.js @@ -0,0 +1,3 @@ +export async function load() { + throw new Error('Regular error from tracing test'); +} diff --git a/packages/kit/test/apps/basics/svelte.config.js b/packages/kit/test/apps/basics/svelte.config.js index d2193940f0ab..12f8ebb08a6b 100644 --- a/packages/kit/test/apps/basics/svelte.config.js +++ b/packages/kit/test/apps/basics/svelte.config.js @@ -37,9 +37,12 @@ const config = { version: { name: 'TEST_VERSION' }, + router: { resolution: /** @type {'client' | 'server'} */ (process.env.ROUTER_RESOLUTION) || 'client' - } + }, + + experimental: { tracing: 'server' } } }; diff --git a/packages/kit/test/apps/basics/test/server.test.js b/packages/kit/test/apps/basics/test/server.test.js index e265115c53c2..148a2a821b74 100644 --- a/packages/kit/test/apps/basics/test/server.test.js +++ b/packages/kit/test/apps/basics/test/server.test.js @@ -768,3 +768,470 @@ test.describe('$app/environment', () => { expect(code).not.toContain('browser'); }); }); + +test.describe('tracing', () => { + // Helper function to find the resolve.root span deep in the handle.child chain + /** @param {import('@opentelemetry/sdk-trace-node').ReadableSpan} span */ + /** @returns {import('@opentelemetry/sdk-trace-node').ReadableSpan | null} */ + function findResolveRootSpan(span) { + if (span.name === 'sveltekit.resolve.root') { + return span; + } + for (const child of span.children || []) { + const found = findResolveRootSpan(child); + if (found) return found; + } + return null; + } + + function rand() { + // node 18 doesn't have crypto.randomUUID() and we run tests in node 18 + return Math.random().toString(36).substring(2, 15); + } + + test('correct spans are created for a regular navigation', async ({ page, read_traces }) => { + const test_id = rand(); + await page.goto(`/tracing/one/two/three/four/five?test_id=${test_id}`); + const traces = read_traces(test_id); + expect(traces.length).toBeGreaterThan(0); + + const trace = traces[0]; + const trace_id = trace.trace_id; + + // Verify root span structure + expect(trace).toEqual({ + name: 'sveltekit.handle.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/one/two/three/[...four]', + 'http.method': 'GET', + 'http.url': expect.stringContaining(`/tracing/one/two/three/four/five?test_id=${test_id}`), + 'sveltekit.is_data_request': false, + 'sveltekit.is_sub_request': false, + test_id + }, + links: [], + trace_id, + span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.handle.child', + attributes: expect.objectContaining({ + 'sveltekit.handle.child.index': 0 + }) + }) + ]) + }); + + // Find and verify the resolve.root span + const resolveRootSpan = findResolveRootSpan(trace); + expect(resolveRootSpan).not.toBeNull(); + expect(resolveRootSpan).toEqual({ + name: 'sveltekit.resolve.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/one/two/three/[...four]', + 'http.response.status_code': 200, + 'http.response.body.size': expect.stringMatching(/^\d+$/) + }, + links: [], + trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: [ + { + name: 'sveltekit.load', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'sveltekit.load.node_id': 'src/routes/+layout.server.js', + 'sveltekit.load.node_type': '+layout.server', + 'sveltekit.load.environment': 'server', + 'http.route': '/tracing/one/two/three/[...four]' + }, + links: [], + trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: [] + }, + { + name: 'sveltekit.load', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'sveltekit.load.node_id': 'src/routes/+layout.js', + 'sveltekit.load.node_type': '+layout', + 'sveltekit.load.environment': 'server', + 'http.route': '/tracing/one/two/three/[...four]' + }, + links: [], + trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: [] + } + ] + }); + }); + + test('correct spans are created for HttpError', async ({ page, read_traces }) => { + const test_id = rand(); + const response = await page.goto(`/tracing/http-error?test_id=${test_id}`); + expect(response?.status()).toBe(500); + + const traces = read_traces(test_id); + const trace_id = traces[0].trace_id; + const trace = traces[0]; + + // Verify root span structure + expect(trace).toEqual({ + name: 'sveltekit.handle.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/http-error', + 'http.method': 'GET', + 'http.url': expect.stringContaining(`/tracing/http-error?test_id=${test_id}`), + 'sveltekit.is_data_request': false, + 'sveltekit.is_sub_request': false, + test_id + }, + links: [], + trace_id, + span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.handle.child', + attributes: expect.objectContaining({ + 'sveltekit.handle.child.index': 0 + }) + }) + ]) + }); + + // Find and verify the resolve.root span + const resolveRootSpan = findResolveRootSpan(trace); + expect(resolveRootSpan).not.toBeNull(); + expect(resolveRootSpan).toEqual({ + name: 'sveltekit.resolve.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/http-error', + 'http.response.status_code': 500, + 'http.response.body.size': expect.stringMatching(/^\d+$/) + }, + links: [], + trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.load', + status: { code: 2, message: 'Internal server error from tracing test' }, + attributes: expect.objectContaining({ + 'sveltekit.load.node_id': 'src/routes/tracing/http-error/+page.server.js', + 'sveltekit.load.result.type': 'known_error', + 'sveltekit.load.result.status': 500, + 'sveltekit.load.result.message': 'Internal server error from tracing test' + }) + }) + ]) + }); + }); + + test('correct spans are created for Redirect', async ({ page, read_traces }) => { + const test_id = rand(); + const response = await page.goto(`/tracing/redirect?test_id=${test_id}`); + expect(response?.status()).toBe(200); + + const traces = read_traces(test_id); + expect(traces).toHaveLength(2); + const redirect_trace_id = traces[0].trace_id; + const destination_trace_id = traces[1].trace_id; + + const redirectTrace = traces[0]; + const destinationTrace = traces[1]; + + // Verify redirect trace root span structure + expect(redirectTrace).toEqual({ + name: 'sveltekit.handle.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/redirect', + 'http.method': 'GET', + 'http.url': expect.stringContaining(`/tracing/redirect?test_id=${test_id}`), + 'sveltekit.is_data_request': false, + 'sveltekit.is_sub_request': false, + test_id + }, + links: [], + trace_id: redirect_trace_id, + span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.handle.child', + attributes: expect.objectContaining({ + 'sveltekit.handle.child.index': 0 + }) + }) + ]) + }); + + // Find and verify the redirect resolve.root span + const redirectResolveRootSpan = findResolveRootSpan(redirectTrace); + expect(redirectResolveRootSpan).not.toBeNull(); + expect(redirectResolveRootSpan).toEqual({ + name: 'sveltekit.resolve.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/redirect', + 'http.response.status_code': 307, + 'http.response.body.size': expect.stringMatching(/^\d+$|^unknown$/) + }, + links: [], + trace_id: redirect_trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.load', + status: { code: 0 }, + attributes: expect.objectContaining({ + 'sveltekit.load.node_id': 'src/routes/tracing/redirect/+page.server.js', + 'sveltekit.load.result.type': 'redirect', + 'sveltekit.load.result.status': 307, + 'sveltekit.load.result.location': `/tracing/one/two/three/four/five?test_id=${test_id}` + }) + }) + ]) + }); + + // Verify destination trace root span structure + expect(destinationTrace).toEqual({ + name: 'sveltekit.handle.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/one/two/three/[...four]', + 'http.method': 'GET', + 'http.url': expect.stringContaining(`/tracing/one/two/three/four/five?test_id=${test_id}`), + 'sveltekit.is_data_request': false, + 'sveltekit.is_sub_request': false, + test_id + }, + links: [], + trace_id: destination_trace_id, + span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.handle.child', + attributes: expect.objectContaining({ + 'sveltekit.handle.child.index': 0 + }) + }) + ]) + }); + + // Find and verify the destination resolve.root span + const destinationResolveRootSpan = findResolveRootSpan(destinationTrace); + expect(destinationResolveRootSpan).not.toBeNull(); + expect(destinationResolveRootSpan).toEqual({ + name: 'sveltekit.resolve.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/one/two/three/[...four]', + 'http.response.status_code': 200, + 'http.response.body.size': expect.stringMatching(/^\d+$/) + }, + links: [], + trace_id: destination_trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: [ + { + name: 'sveltekit.load', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'sveltekit.load.node_id': 'src/routes/+layout.server.js', + 'sveltekit.load.node_type': '+layout.server', + 'sveltekit.load.environment': 'server', + 'http.route': '/tracing/one/two/three/[...four]' + }, + links: [], + trace_id: destination_trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: [] + }, + { + name: 'sveltekit.load', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'sveltekit.load.node_id': 'src/routes/+layout.js', + 'sveltekit.load.node_type': '+layout', + 'sveltekit.load.environment': 'server', + 'http.route': '/tracing/one/two/three/[...four]' + }, + links: [], + trace_id: destination_trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: [] + } + ] + }); + }); + + test('correct spans are created for regular Error', async ({ page, read_traces }) => { + const test_id = rand(); + const response = await page.goto(`/tracing/regular-error?test_id=${test_id}`); + expect(response?.status()).toBe(500); + + const traces = read_traces(test_id); + const trace_id = traces[0].trace_id; + const trace = traces[0]; + + // Verify root span structure + expect(trace).toEqual({ + name: 'sveltekit.handle.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/regular-error', + 'http.method': 'GET', + 'http.url': expect.stringContaining(`/tracing/regular-error?test_id=${test_id}`), + 'sveltekit.is_data_request': false, + 'sveltekit.is_sub_request': false, + test_id + }, + links: [], + trace_id, + span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.handle.child', + attributes: expect.objectContaining({ + 'sveltekit.handle.child.index': 0 + }) + }) + ]) + }); + + // Find and verify the resolve.root span + const resolveRootSpan = findResolveRootSpan(trace); + expect(resolveRootSpan).not.toBeNull(); + expect(resolveRootSpan).toEqual({ + name: 'sveltekit.resolve.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/regular-error', + 'http.response.status_code': 500, + 'http.response.body.size': expect.stringMatching(/^\d+$/) + }, + links: [], + trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.load', + status: { code: 2, message: 'Regular error from tracing test' }, + attributes: expect.objectContaining({ + 'sveltekit.load.node_id': 'src/routes/tracing/regular-error/+page.server.js', + 'sveltekit.load.result.type': 'unknown_error' + }) + }) + ]) + }); + }); + + test('correct spans are created for non-error object', async ({ page, read_traces }) => { + const test_id = rand(); + const response = await page.goto(`/tracing/non-error-object?test_id=${test_id}`); + expect(response?.status()).toBe(500); + + const traces = read_traces(test_id); + const trace_id = traces[0].trace_id; + const trace = traces[0]; + + // Verify root span structure + expect(trace).toEqual({ + name: 'sveltekit.handle.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/non-error-object', + 'http.method': 'GET', + 'http.url': expect.stringContaining(`/tracing/non-error-object?test_id=${test_id}`), + 'sveltekit.is_data_request': false, + 'sveltekit.is_sub_request': false, + test_id + }, + links: [], + trace_id, + span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.handle.child', + attributes: expect.objectContaining({ + 'sveltekit.handle.child.index': 0 + }) + }) + ]) + }); + + // Find and verify the resolve.root span + const resolveRootSpan = findResolveRootSpan(trace); + expect(resolveRootSpan).not.toBeNull(); + expect(resolveRootSpan).toEqual({ + name: 'sveltekit.resolve.root', + status: { code: 0 }, + start_time: [expect.any(Number), expect.any(Number)], + end_time: [expect.any(Number), expect.any(Number)], + attributes: { + 'http.route': '/tracing/non-error-object', + 'http.response.status_code': 500, + 'http.response.body.size': expect.stringMatching(/^\d+$/) + }, + links: [], + trace_id, + span_id: expect.any(String), + parent_span_id: expect.any(String), + children: expect.arrayContaining([ + expect.objectContaining({ + name: 'sveltekit.load', + status: { code: 2 }, + attributes: expect.objectContaining({ + 'sveltekit.load.node_id': 'src/routes/tracing/non-error-object/+page.server.js', + 'sveltekit.load.result.type': 'unknown_error' + }) + }) + ]) + }); + }); +}); diff --git a/packages/kit/test/types.d.ts b/packages/kit/test/types.d.ts new file mode 100644 index 000000000000..24083ce19bf3 --- /dev/null +++ b/packages/kit/test/types.d.ts @@ -0,0 +1,21 @@ +export interface SpanData { + name: string; + status: { + code: number; + message?: string; + }; + start_time: [number, number]; // HrTime tuple: [seconds, nanoseconds] + end_time: [number, number]; // HrTime tuple: [seconds, nanoseconds] + attributes: Record>; + links: Array<{ + context: any; + attributes?: Record>; + }>; + trace_id: string; + span_id: string; + parent_span_id: string | undefined; +} + +export type SpanTree = Omit & { + children: SpanTree[]; +}; diff --git a/packages/kit/test/utils.d.ts b/packages/kit/test/utils.d.ts index de03974f5baa..95a3f7f11c21 100644 --- a/packages/kit/test/utils.d.ts +++ b/packages/kit/test/utils.d.ts @@ -10,6 +10,7 @@ import { import { IncomingMessage, ServerResponse } from 'node:http'; import '../types/index'; import { AfterNavigate, BeforeNavigate } from '@sveltejs/kit'; +import { SpanTree } from './types'; export const test: TestType< PlaywrightTestArgs & @@ -30,6 +31,7 @@ export const test: TestType< * `handleError` defines the shape */ read_errors(href: string): Record; + read_traces(test_id: string): SpanTree[]; start_server( handler: (req: IncomingMessage, res: ServerResponse) => void ): Promise<{ port: number }>; diff --git a/packages/kit/test/utils.js b/packages/kit/test/utils.js index e7c84a51069c..eba4a5fd1a03 100644 --- a/packages/kit/test/utils.js +++ b/packages/kit/test/utils.js @@ -1,3 +1,4 @@ +/** @import {SpanData, SpanTree} from './types' */ import fs from 'node:fs'; import http from 'node:http'; import path from 'node:path'; @@ -144,6 +145,27 @@ export const test = base.extend({ await use(read_errors); }, + // eslint-disable-next-line no-empty-pattern -- Playwright doesn't let us use `_` as a parameter name. It must be a destructured object + read_traces: async ({}, use) => { + /** @param {string} test_id */ + function read_traces(test_id) { + const raw = fs.readFileSync('test/spans.jsonl', 'utf8').split('\n').filter(Boolean); + const traces = /** @type {SpanData[]} */ (raw.map((line) => JSON.parse(line))); + const root_traces = traces.filter( + (trace) => trace.parent_span_id === undefined && trace.attributes.test_id === test_id + ); + if (root_traces.length === 0) { + return []; + } + return root_traces.map((root_trace) => { + const child_traces = traces.filter((span) => span.trace_id === root_trace.trace_id); + return build_span_tree(root_trace, child_traces); + }); + } + + await use(read_traces); + }, + // eslint-disable-next-line no-empty-pattern -- Playwright doesn't let us use `_` as a parameter name. It must be a destructured object start_server: async ({}, use) => { /** @@ -288,3 +310,16 @@ export const config = { testDir: 'test', testMatch: /(.+\.)?(test|spec)\.[jt]s/ }; + +/** + * @param {SpanData} current_span + * @param {SpanData[]} child_spans + * @returns {SpanTree} + */ +function build_span_tree(current_span, child_spans) { + const children = child_spans.filter((span) => span.parent_span_id === current_span.span_id); + return { + ...current_span, + children: children.map((child) => build_span_tree(child, child_spans)) + }; +} diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index e4e39812c3d8..49af73058520 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -3,6 +3,7 @@ declare module '@sveltejs/kit' { import type { SvelteConfig } from '@sveltejs/vite-plugin-svelte'; + import type { Span } from '@opentelemetry/api'; /** * [Adapters](https://svelte.dev/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing. */ @@ -383,6 +384,15 @@ declare module '@sveltejs/kit' { */ privatePrefix?: string; }; + /** Experimental features. Here be dragons. Breaking changes may occur in minor releases. */ + experimental?: { + /** + * Whether to enable serverside OpenTelemetry tracing for SvelteKit operations including handle hooks, load functions, and form actions. + * @default undefined + * @since 2.22.0 // TODO: update this before publishing + */ + tracing?: 'server'; + }; /** * Where to find various files within your project. */ @@ -668,16 +678,6 @@ declare module '@sveltejs/kit' { */ files?(filepath: string): boolean; }; - /** - * Whether to enable OpenTelemetry tracing for SvelteKit operations including handle hooks, load functions, and form actions. - * - `true` - Enable tracing for both server and client - * - `false` - Disable tracing - * - `'server'` - Enable tracing only on the server side - * - `'client'` - Enable tracing only on the client side - * @default false - * @since 2.22.0 - */ - tracing?: boolean | 'server' | 'client'; typescript?: { /** * A function that allows you to edit the generated `tsconfig.json`. You can mutate the config (recommended) or return a new one. @@ -959,6 +959,16 @@ declare module '@sveltejs/kit' { * ``` */ untrack: (fn: () => T) => T; + + /** + * Access to spans for tracing. If tracing is not enabled or the function is being run in the browser, these spans will do nothing. + */ + tracing: { + /** The root span for the request. This span is named `sveltekit.handle.root`. */ + rootSpan: Span; + /** The span associated with the current `load` function. */ + currentSpan: Span; + }; } export interface NavigationEvent< @@ -1234,6 +1244,16 @@ declare module '@sveltejs/kit' { * `true` for `+server.js` calls coming from SvelteKit without the overhead of actually making an HTTP request. This happens when you make same-origin `fetch` requests on the server. */ isSubRequest: boolean; + + /** + * Access to spans for tracing. If tracing is not enabled, these spans will do nothing. + */ + tracing: { + /** The root span for the request. This span is named `sveltekit.handle.root`. */ + rootSpan: Span; + /** The span associated with the current `handle` hook, `load` function, or server action. */ + currentSpan: Span; + }; } /** @@ -1390,6 +1410,16 @@ declare module '@sveltejs/kit' { * ``` */ untrack: (fn: () => T) => T; + + /** + * Access to spans for tracing. If tracing is not enabled, these spans will do nothing. + */ + tracing: { + /** The root span for the request. This span is named `sveltekit.handle.root`. */ + rootSpan: Span; + /** The span associated with the current `load` function. */ + currentSpan: Span; + }; } /** @@ -1965,7 +1995,7 @@ declare module '@sveltejs/kit' { * Checks whether this is an error thrown by {@link error}. * @param status The status to filter for. * */ - export function isHttpError(e: unknown, status?: T): e is (HttpError_1 & { + export function isHttpError(e: unknown, status?: T | undefined): e is (HttpError_1 & { status: T extends undefined ? never : T; }); /** @@ -1995,13 +2025,13 @@ declare module '@sveltejs/kit' { * @param data The value that will be serialized as JSON. * @param init Options such as `status` and `headers` that will be added to the response. `Content-Type: application/json` and `Content-Length` headers will be added automatically. */ - export function json(data: any, init?: ResponseInit): Response; + export function json(data: any, init?: ResponseInit | undefined): Response; /** * Create a `Response` object from the supplied body. * @param body The value that will be used as-is. * @param init Options such as `status` and `headers` that will be added to the response. A `Content-Length` header will be added automatically. */ - export function text(body: string, init?: ResponseInit): Response; + export function text(body: string, init?: ResponseInit | undefined): Response; /** * Create an `ActionFailure` object. Call when form submission fails. * @param status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. @@ -2059,6 +2089,7 @@ declare module '@sveltejs/kit' { } declare module '@sveltejs/kit/hooks' { + import type { Handle } from '@sveltejs/kit'; /** * A helper function for sequencing multiple `handle` calls in a middleware-like manner. * The behavior for the `handle` options is as follows: @@ -2129,7 +2160,7 @@ declare module '@sveltejs/kit/hooks' { * * @param handlers The chain of `handle` functions * */ - export function sequence(...handlers: import("@sveltejs/kit").Handle[]): import("@sveltejs/kit").Handle; + export function sequence(...handlers: Handle[]): Handle; export {}; } @@ -2300,7 +2331,7 @@ declare module '$app/navigation' { invalidateAll?: boolean | undefined; invalidate?: (string | URL | ((url: URL) => boolean))[] | undefined; state?: App.PageState | undefined; - }): Promise; + } | undefined): Promise; /** * Causes any `load` functions belonging to the currently active page to re-run if they depend on the `url` in question, via `fetch` or `depends`. Returns a `Promise` that resolves when the page is subsequently updated. * diff --git a/packages/package/src/filesystem.js b/packages/package/src/filesystem.js index 0a0b737728ac..04efd95a46cf 100644 --- a/packages/package/src/filesystem.js +++ b/packages/package/src/filesystem.js @@ -46,7 +46,7 @@ export function walk(cwd, dirs = false) { } } - return (walk_dir(''), all_files); + return walk_dir(''), all_files; } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e69cb7d49fcf..849a4c022b8e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,13 +34,13 @@ importers: version: 1.51.1 '@sveltejs/eslint-config': specifier: ^8.2.0 - version: 8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.29.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.29.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.29.0(jiti@2.4.2))(svelte@5.35.5)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.29.0(jiti@2.4.2))(typescript-eslint@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3) + version: 8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.29.0))(eslint-config-prettier@9.1.0(eslint@9.29.0))(eslint-plugin-n@17.16.1(eslint@9.29.0)(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.29.0)(svelte@5.35.5))(eslint@9.29.0)(typescript-eslint@8.35.0(eslint@9.29.0)(typescript@5.8.3))(typescript@5.8.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.2.0 version: 1.2.0 eslint: specifier: ^9.29.0 - version: 9.29.0(jiti@2.4.2) + version: 9.29.0 prettier: specifier: ^3.6.0 version: 3.6.0 @@ -49,7 +49,7 @@ importers: version: 3.4.0(prettier@3.6.0)(svelte@5.35.5) typescript-eslint: specifier: ^8.35.0 - version: 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.35.0(eslint@9.29.0)(typescript@5.8.3) packages/adapter-auto: devDependencies: @@ -58,16 +58,16 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/node': specifier: ^18.19.119 version: 18.19.119 typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/adapter-cloudflare: dependencies: @@ -95,10 +95,10 @@ importers: version: 0.25.5 typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/adapter-cloudflare/test/apps/pages: devDependencies: @@ -107,7 +107,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) server-side-dep: specifier: file:server-side-dep version: file:packages/adapter-cloudflare/test/apps/pages/server-side-dep @@ -116,7 +116,7 @@ importers: version: 5.35.5 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) wrangler: specifier: ^4.14.3 version: 4.14.4(@cloudflare/workers-types@4.20250508.0) @@ -128,7 +128,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -140,7 +140,7 @@ importers: version: 5.35.5 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) wrangler: specifier: ^4.14.3 version: 4.14.4(@cloudflare/workers-types@4.20250508.0) @@ -159,22 +159,22 @@ importers: devDependencies: '@netlify/functions': specifier: ^4.0.0 - version: 4.1.4(rollup@4.44.0) + version: 4.1.4(rollup@4.40.1) '@rollup/plugin-commonjs': specifier: ^28.0.1 - version: 28.0.1(rollup@4.44.0) + version: 28.0.1(rollup@4.40.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.44.0) + version: 6.1.0(rollup@4.40.1) '@rollup/plugin-node-resolve': specifier: ^16.0.0 - version: 16.0.0(rollup@4.44.0) + version: 16.0.0(rollup@4.40.1) '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/node': specifier: ^18.19.119 version: 18.19.119 @@ -183,28 +183,28 @@ importers: version: 2.4.7 rollup: specifier: ^4.14.2 - version: 4.44.0 + version: 4.40.1 typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/adapter-node: dependencies: '@rollup/plugin-commonjs': specifier: ^28.0.1 - version: 28.0.1(rollup@4.44.0) + version: 28.0.1(rollup@4.40.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.44.0) + version: 6.1.0(rollup@4.40.1) '@rollup/plugin-node-resolve': specifier: ^16.0.0 - version: 16.0.0(rollup@4.44.0) + version: 16.0.0(rollup@4.40.1) rollup: specifier: ^4.9.5 - version: 4.44.0 + version: 4.40.1 devDependencies: '@polka/url': specifier: ^1.0.0-next.28 @@ -214,7 +214,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/node': specifier: ^18.19.119 version: 18.19.119 @@ -226,10 +226,10 @@ importers: version: 3.0.0 typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/adapter-static: devDependencies: @@ -241,7 +241,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/node': specifier: ^18.19.119 version: 18.19.119 @@ -253,10 +253,10 @@ importers: version: 5.35.5 typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -265,7 +265,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) sirv-cli: specifier: ^3.0.0 version: 3.0.0 @@ -274,7 +274,7 @@ importers: version: 5.35.5 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/adapter-static/test/apps/spa: devDependencies: @@ -286,7 +286,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) sirv-cli: specifier: ^3.0.0 version: 3.0.0 @@ -295,13 +295,13 @@ importers: version: 5.35.5 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/adapter-vercel: dependencies: '@vercel/nft': specifier: ^0.29.2 - version: 0.29.4(rollup@4.44.0) + version: 0.29.4(rollup@4.40.1) esbuild: specifier: ^0.25.4 version: 0.25.5 @@ -311,26 +311,26 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/node': specifier: ^18.19.119 version: 18.19.119 typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/amp: dependencies: '@sveltejs/kit': specifier: ^1.0.0 || ^2.0.0 - version: link:../kit + version: 2.24.0(@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)))(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) devDependencies: typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 packages/create-svelte: {} @@ -347,47 +347,47 @@ importers: version: 0.1.5(svelte@5.35.5) vite-imagetools: specifier: ^7.1.0 - version: 7.1.0(rollup@4.44.0) + version: 7.1.0(rollup@4.40.1) zimmerframe: specifier: ^1.1.2 version: 1.1.2 devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/estree': specifier: ^1.0.5 - version: 1.0.8 + version: 1.0.7 '@types/node': specifier: ^18.19.119 version: 18.19.119 rollup: specifier: ^4.27.4 - version: 4.44.0 + version: 4.40.1 svelte: specifier: ^5.35.5 version: 5.35.5 typescript: specifier: ^5.6.3 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit: dependencies: '@sveltejs/acorn-typescript': specifier: ^1.0.5 - version: 1.0.5(acorn@8.15.0) + version: 1.0.5(acorn@8.14.1) '@types/cookie': specifier: ^0.6.0 version: 0.6.0 acorn: specifier: ^8.14.1 - version: 8.15.0 + version: 8.14.1 cookie: specifier: ^0.6.0 version: 0.6.0 @@ -424,7 +424,7 @@ importers: version: 1.51.1 '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/connect': specifier: ^3.4.38 version: 3.4.38 @@ -436,25 +436,25 @@ importers: version: 2.4.7 dts-buddy: specifier: ^0.6.1 - version: 0.6.1(typescript@5.8.3) + version: 0.6.1(typescript@5.6.3) rollup: specifier: ^4.14.2 - version: 4.44.0 + version: 4.40.1 svelte: specifier: ^5.35.5 version: 5.35.5 svelte-preprocess: specifier: ^6.0.0 - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.35.5)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6))(postcss@8.5.6)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/amp: devDependencies: @@ -466,7 +466,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -478,22 +478,31 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/basics: devDependencies: + '@opentelemetry/api': + specifier: ^1.9.0 + version: 1.9.0 + '@opentelemetry/sdk-node': + specifier: ^0.203.0 + version: 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': + specifier: ^2.0.1 + version: 2.0.1(@opentelemetry/api@1.9.0) '@sveltejs/kit': specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -502,16 +511,16 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) test-redirect-importer: specifier: workspace:* version: link:../../../../test-redirect-importer typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/dev-only: devDependencies: @@ -520,7 +529,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -559,13 +568,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/embed: devDependencies: @@ -574,7 +583,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -583,13 +592,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/hash-based-routing: devDependencies: @@ -598,7 +607,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -607,13 +616,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/no-ssr: devDependencies: @@ -622,7 +631,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -631,13 +640,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/options: devDependencies: @@ -649,7 +658,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -658,13 +667,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/options-2: devDependencies: @@ -676,7 +685,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -685,13 +694,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/prerendered-app-error-pages: devDependencies: @@ -700,7 +709,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -709,13 +718,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/apps/writes: devDependencies: @@ -724,7 +733,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -733,19 +742,19 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors: devDependencies: vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: devDependencies: @@ -757,19 +766,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -781,19 +790,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -805,19 +814,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -826,19 +835,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -847,19 +856,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -868,7 +877,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) cross-env: specifier: 'catalog:' version: 7.0.3 @@ -877,13 +886,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -892,19 +901,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -913,19 +922,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -934,19 +943,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -955,19 +964,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -976,19 +985,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -997,19 +1006,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -1018,19 +1027,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -1039,19 +1048,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/prerendering/basics: devDependencies: @@ -1060,22 +1069,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/prerendering/options: devDependencies: @@ -1084,22 +1093,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1108,22 +1117,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) svelte: specifier: ^5.35.5 version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.4 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) vitest: specifier: 'catalog:' - version: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) packages/package: dependencies: @@ -1138,14 +1147,14 @@ importers: version: 1.8.1 semver: specifier: ^7.5.4 - version: 7.7.2 + version: 7.7.1 svelte2tsx: specifier: ~0.7.33 - version: 0.7.33(svelte@5.35.5)(typescript@5.8.3) + version: 0.7.33(svelte@5.35.5)(typescript@5.6.3) devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@types/node': specifier: ^18.19.119 version: 18.19.119 @@ -1154,16 +1163,16 @@ importers: version: 7.5.8 prettier: specifier: ^3.1.1 - version: 3.6.0 + version: 3.3.3 svelte: specifier: ^5.35.5 version: 5.35.5 svelte-preprocess: specifier: ^6.0.0 - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.35.5)(typescript@5.8.3) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.5.6))(postcss@8.5.6)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.3.3 - version: 5.8.3 + version: 5.6.3 uvu: specifier: ^0.5.6 version: 0.5.6 @@ -1208,13 +1217,13 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: 'catalog:' - version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + version: 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) prettier: specifier: ^3.3.2 - version: 3.6.0 + version: 3.3.3 prettier-plugin-svelte: specifier: ^3.2.6 - version: 3.4.0(prettier@3.6.0)(svelte@5.35.5) + version: 3.2.7(prettier@3.3.3)(svelte@5.35.5) publint: specifier: ^0.3.0 version: 0.3.0 @@ -1223,13 +1232,13 @@ importers: version: 5.35.5 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3) + version: 4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3) typescript: specifier: ^5.5.0 - version: 5.8.3 + version: 5.6.3 vite: specifier: 'catalog:' - version: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + version: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) packages: @@ -1744,6 +1753,15 @@ packages: '@fontsource/libre-barcode-128-text@5.1.0': resolution: {integrity: sha512-MC7foQFRT0NDcsqBWQua2T3gs/fh/uTowTxfoPqGQWjqroiMxRZhQh7jerjnpcI+Xi3yR5bwCo6W2uwCza1FRw==} + '@grpc/grpc-js@1.13.4': + resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.15': + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + engines: {node: '>=6'} + hasBin: true + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -2005,8 +2023,8 @@ packages: '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -2014,6 +2032,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -2065,10 +2086,168 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@opentelemetry/api-logs@0.203.0': + resolution: {integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==} + engines: {node: '>=8.0.0'} + '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + '@opentelemetry/context-async-hooks@2.0.1': + resolution: {integrity: sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@2.0.1': + resolution: {integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/exporter-logs-otlp-grpc@0.203.0': + resolution: {integrity: sha512-g/2Y2noc/l96zmM+g0LdeuyYKINyBwN6FJySoU15LHPLcMN/1a0wNk2SegwKcxrRdE7Xsm7fkIR5n6XFe3QpPw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-http@0.203.0': + resolution: {integrity: sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-proto@0.203.0': + resolution: {integrity: sha512-nl/7S91MXn5R1aIzoWtMKGvqxgJgepB/sH9qW0rZvZtabnsjbf8OQ1uSx3yogtvLr0GzwD596nQKz2fV7q2RBw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-grpc@0.203.0': + resolution: {integrity: sha512-FCCj9nVZpumPQSEI57jRAA89hQQgONuoC35Lt+rayWY/mzCAc6BQT7RFyFaZKJ2B7IQ8kYjOCPsF/HGFWjdQkQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-http@0.203.0': + resolution: {integrity: sha512-HFSW10y8lY6BTZecGNpV3GpoSy7eaO0Z6GATwZasnT4bEsILp8UJXNG5OmEsz4SdwCSYvyCbTJdNbZP3/8LGCQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-proto@0.203.0': + resolution: {integrity: sha512-OZnhyd9npU7QbyuHXFEPVm3LnjZYifuKpT3kTnF84mXeEQ84pJJZgyLBpU4FSkSwUkt/zbMyNAI7y5+jYTWGIg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-prometheus@0.203.0': + resolution: {integrity: sha512-2jLuNuw5m4sUj/SncDf/mFPabUxMZmmYetx5RKIMIQyPnl6G6ooFzfeE8aXNRf8YD1ZXNlCnRPcISxjveGJHNg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-grpc@0.203.0': + resolution: {integrity: sha512-322coOTf81bm6cAA8+ML6A+m4r2xTCdmAZzGNTboPXRzhwPt4JEmovsFAs+grpdarObd68msOJ9FfH3jxM6wqA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-http@0.203.0': + resolution: {integrity: sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-proto@0.203.0': + resolution: {integrity: sha512-1xwNTJ86L0aJmWRwENCJlH4LULMG2sOXWIVw+Szta4fkqKVY50Eo4HoVKKq6U9QEytrWCr8+zjw0q/ZOeXpcAQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-zipkin@2.0.1': + resolution: {integrity: sha512-a9eeyHIipfdxzCfc2XPrE+/TI3wmrZUDFtG2RRXHSbZZULAny7SyybSvaDvS77a7iib5MPiAvluwVvbGTsHxsw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/instrumentation@0.203.0': + resolution: {integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-exporter-base@0.203.0': + resolution: {integrity: sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-grpc-exporter-base@0.203.0': + resolution: {integrity: sha512-te0Ze1ueJF+N/UOFl5jElJW4U0pZXQ8QklgSfJ2linHN0JJsuaHG8IabEUi2iqxY8ZBDlSiz1Trfv5JcjWWWwQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-transformer@0.203.0': + resolution: {integrity: sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/propagator-b3@2.0.1': + resolution: {integrity: sha512-Hc09CaQ8Tf5AGLmf449H726uRoBNGPBL4bjr7AnnUpzWMvhdn61F78z9qb6IqB737TffBsokGAK1XykFEZ1igw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/propagator-jaeger@2.0.1': + resolution: {integrity: sha512-7PMdPBmGVH2eQNb/AtSJizQNgeNTfh6jQFqys6lfhd6P4r+m/nTh3gKPPpaCXVdRQ+z93vfKk+4UGty390283w==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/resources@2.0.1': + resolution: {integrity: sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.203.0': + resolution: {integrity: sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-metrics@2.0.1': + resolution: {integrity: sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.9.0 <1.10.0' + + '@opentelemetry/sdk-node@0.203.0': + resolution: {integrity: sha512-zRMvrZGhGVMvAbbjiNQW3eKzW/073dlrSiAKPVWmkoQzah9wfynpVPeL55f9fVIm0GaBxTLcPeukWGy0/Wj7KQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@2.0.1': + resolution: {integrity: sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-node@2.0.1': + resolution: {integrity: sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.36.0': + resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} + engines: {node: '>=14'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -2081,6 +2260,36 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@publint/pack@0.1.0': resolution: {integrity: sha512-NvV5jPAQIMCoHvaJ0ZhfouBJ2woFYYf+o6B7dCHGh/tLKSPVoxhjffi35xPuMHgOv65aTOKUzML5XwQF9EkDAA==} engines: {node: '>=18'} @@ -2121,103 +2330,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.44.0': - resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==} + '@rollup/rollup-android-arm-eabi@4.40.1': + resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.44.0': - resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==} + '@rollup/rollup-android-arm64@4.40.1': + resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.44.0': - resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==} + '@rollup/rollup-darwin-arm64@4.40.1': + resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.44.0': - resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==} + '@rollup/rollup-darwin-x64@4.40.1': + resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.44.0': - resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==} + '@rollup/rollup-freebsd-arm64@4.40.1': + resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.44.0': - resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==} + '@rollup/rollup-freebsd-x64@4.40.1': + resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.44.0': - resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.44.0': - resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==} + '@rollup/rollup-linux-arm-musleabihf@4.40.1': + resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.44.0': - resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==} + '@rollup/rollup-linux-arm64-gnu@4.40.1': + resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.44.0': - resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==} + '@rollup/rollup-linux-arm64-musl@4.40.1': + resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.44.0': - resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': - resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.44.0': - resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==} + '@rollup/rollup-linux-riscv64-gnu@4.40.1': + resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.44.0': - resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==} + '@rollup/rollup-linux-riscv64-musl@4.40.1': + resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.44.0': - resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==} + '@rollup/rollup-linux-s390x-gnu@4.40.1': + resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.44.0': - resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==} + '@rollup/rollup-linux-x64-gnu@4.40.1': + resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.44.0': - resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==} + '@rollup/rollup-linux-x64-musl@4.40.1': + resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.44.0': - resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==} + '@rollup/rollup-win32-arm64-msvc@4.40.1': + resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.44.0': - resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==} + '@rollup/rollup-win32-ia32-msvc@4.40.1': + resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.44.0': - resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==} + '@rollup/rollup-win32-x64-msvc@4.40.1': + resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} cpu: [x64] os: [win32] @@ -2243,6 +2452,15 @@ packages: typescript: '>= 5' typescript-eslint: '>= 8' + '@sveltejs/kit@2.24.0': + resolution: {integrity: sha512-6aCsU6PwxB4CQBJEvLnOoSv8hoviZWDVTKDTzQoERG6vpIHeXJufVWQlyaOXrdSlqBiwknHm0nQT/S/Nn3518A==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 + '@sveltejs/vite-plugin-svelte-inspector@5.0.0-next.0': resolution: {integrity: sha512-G++kR34xZSd3cT6VVOB781Pa2KOS756/ZKK7urSyXmrhK/D/mPiUvjZwWKNVTDOXkwrvVt/Y3cLecbR6Qm66Kw==} engines: {node: ^20.19 || ^22.12 || >=24} @@ -2262,18 +2480,6 @@ packages: resolution: {integrity: sha512-08eKiDAjj4zLug1taXSIJ0kGL5cawjVCyJkBb6EWSg5fEPX6L+Wtr0CH2If4j5KYylz85iaZiFlUItvgJvll5g==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} - '@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/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -2289,8 +2495,8 @@ packages: '@types/eslint@8.56.12': resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2340,32 +2546,16 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.37.0': - resolution: {integrity: sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.35.0': resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.37.0': - resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.35.0': resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/tsconfig-utils@8.37.0': - resolution: {integrity: sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.35.0': resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2373,22 +2563,22 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/types@8.31.1': + resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.35.0': resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.37.0': - resolution: {integrity: sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.35.0': - resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} + '@typescript-eslint/typescript-estree@8.31.1': + resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.37.0': - resolution: {integrity: sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==} + '@typescript-eslint/typescript-estree@8.35.0': + resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' @@ -2400,21 +2590,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.37.0': - resolution: {integrity: sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==} + '@typescript-eslint/visitor-keys@8.31.1': + resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' '@typescript-eslint/visitor-keys@8.35.0': resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.37.0': - resolution: {integrity: sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vercel/nft@0.29.4': resolution: {integrity: sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==} engines: {node: '>=18'} @@ -2506,15 +2689,16 @@ packages: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -2559,9 +2743,6 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -2684,6 +2865,9 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2771,9 +2955,6 @@ packages: 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'} @@ -2835,8 +3016,8 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} detective-amd@6.0.1: @@ -2885,10 +3066,6 @@ packages: 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'} @@ -2932,8 +3109,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.18.2: - resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -3016,6 +3193,10 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@4.2.1: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3224,8 +3405,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -3250,8 +3431,8 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@16.3.0: - resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} + globals@16.2.0: + resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} engines: {node: '>=18'} globby@11.1.0: @@ -3321,6 +3502,9 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + import-in-the-middle@1.14.2: + resolution: {integrity: sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3411,10 +3595,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} @@ -3568,6 +3748,9 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -3584,6 +3767,9 @@ packages: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + loupe@3.1.3: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} @@ -3600,9 +3786,6 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - merge-options@3.0.4: resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} engines: {node: '>=10'} @@ -3668,6 +3851,9 @@ packages: engines: {node: '>=18'} hasBin: true + module-details-from-path@1.0.4: + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -3872,8 +4058,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} pify@4.0.1: @@ -3941,6 +4127,12 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier-plugin-svelte@3.2.7: + resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier-plugin-svelte@3.4.0: resolution: {integrity: sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==} peerDependencies: @@ -3952,6 +4144,11 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + prettier@3.6.0: resolution: {integrity: sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==} engines: {node: '>=14'} @@ -3967,6 +4164,10 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + protobufjs@7.5.3: + resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} + engines: {node: '>=12.0.0'} + publint@0.3.0: resolution: {integrity: sha512-B7efom03c86OGqN1Jp2mDduiamb5apEuolvlbUeHaa14geCzJKz35oPIiKoXPMvM3tGABEZ1oLfY6xJNvOh69g==} engines: {node: '>=18'} @@ -4029,6 +4230,10 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + require-in-the-middle@7.5.2: + resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} + engines: {node: '>=8.6.0'} + require-package-name@2.0.1: resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} @@ -4055,8 +4260,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.44.0: - resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==} + rollup@4.40.1: + resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4084,8 +4289,8 @@ packages: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} engines: {node: '>=6'} - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true @@ -4303,8 +4508,8 @@ packages: resolution: {integrity: sha512-KuRvI82rhh0RMz1EKsUJD96gZyHJ+h2+8zrwO8iqE/p/CmcNKvIItDUAeUePhuCDgtegDJmF8IKThbHIfmTgTA==} engines: {node: '>=18'} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} tar-stream@3.1.7: @@ -4400,20 +4605,6 @@ 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@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -4432,6 +4623,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -4483,9 +4679,6 @@ packages: 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==} @@ -4656,11 +4849,6 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} - engines: {node: '>= 14.6'} - hasBin: true - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -4672,10 +4860,6 @@ packages: 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'} @@ -4746,7 +4930,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.1 '@changesets/assemble-release-plan@6.0.9': dependencies: @@ -4755,7 +4939,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.2 + semver: 7.7.1 '@changesets/changelog-git@0.2.1': dependencies: @@ -4788,7 +4972,7 @@ snapshots: package-manager-detector: 0.2.8 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.1 spawndamnit: 3.0.1 term-size: 2.2.1 @@ -4811,7 +4995,7 @@ snapshots: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.2 + semver: 7.7.1 '@changesets/get-github-info@0.6.0': dependencies: @@ -5085,9 +5269,9 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0)': dependencies: - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.29.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -5139,6 +5323,18 @@ snapshots: '@fontsource/libre-barcode-128-text@5.1.0': {} + '@grpc/grpc-js@1.13.4': + dependencies: + '@grpc/proto-loader': 0.7.15 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.15': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.3 + yargs: 17.7.2 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -5323,7 +5519,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} @@ -5335,17 +5531,19 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@js-sdsl/ordered-map@4.4.2': {} '@manypkg/find-root@1.1.0': dependencies: @@ -5366,11 +5564,11 @@ snapshots: '@mapbox/node-pre-gyp@2.0.0': dependencies: consola: 3.2.3 - detect-libc: 2.0.4 + detect-libc: 2.0.3 https-proxy-agent: 7.0.6 node-fetch: 2.7.0 nopt: 8.0.0 - semver: 7.7.2 + semver: 7.7.1 tar: 7.4.3 transitivePeerDependencies: - encoding @@ -5399,12 +5597,12 @@ snapshots: uuid: 11.1.0 write-file-atomic: 5.0.1 - '@netlify/functions@4.1.4(rollup@4.44.0)': + '@netlify/functions@4.1.4(rollup@4.40.1)': dependencies: '@netlify/blobs': 9.1.6 '@netlify/dev-utils': 3.2.0 '@netlify/serverless-functions-api': 2.1.1 - '@netlify/zip-it-and-ship-it': 12.1.4(rollup@4.44.0) + '@netlify/zip-it-and-ship-it': 12.1.4(rollup@4.40.1) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -5422,13 +5620,13 @@ snapshots: '@netlify/serverless-functions-api@2.1.1': {} - '@netlify/zip-it-and-ship-it@12.1.4(rollup@4.44.0)': + '@netlify/zip-it-and-ship-it@12.1.4(rollup@4.40.1)': dependencies: '@babel/parser': 7.27.5 '@babel/types': 7.27.6 '@netlify/binary-info': 1.0.0 '@netlify/serverless-functions-api': 2.1.1 - '@vercel/nft': 0.29.4(rollup@4.44.0) + '@vercel/nft': 0.29.4(rollup@4.40.1) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.0.0 @@ -5450,7 +5648,7 @@ snapshots: precinct: 12.2.0 require-package-name: 2.0.1 resolve: 2.0.0-next.5 - semver: 7.7.2 + semver: 7.7.1 tmp-promise: 3.0.3 toml: 3.0.0 unixify: 1.0.0 @@ -5474,8 +5672,233 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@opentelemetry/api-logs@0.203.0': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api@1.9.0': {} + '@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/exporter-logs-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-prometheus@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-proto@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-zipkin@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + import-in-the-middle: 1.14.2 + require-in-the-middle: 7.5.2 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/otlp-exporter-base@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-grpc-exporter-base@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.13.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-transformer@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + protobufjs: 7.5.3 + + '@opentelemetry/propagator-b3@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/propagator-jaeger@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/sdk-logs@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-node@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-prometheus': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-zipkin': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/sdk-trace-node@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/semantic-conventions@1.36.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -5485,146 +5908,191 @@ snapshots: '@polka/url@1.0.0-next.28': {} + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + '@publint/pack@0.1.0': {} - '@rollup/plugin-commonjs@28.0.1(rollup@4.44.0)': + '@rollup/plugin-commonjs@28.0.1(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.44.0) + '@rollup/pluginutils': 5.1.3(rollup@4.40.1) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.4.6(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.17 - picomatch: 4.0.3 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.44.0 + rollup: 4.40.1 - '@rollup/plugin-json@6.1.0(rollup@4.44.0)': + '@rollup/plugin-json@6.1.0(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.44.0) + '@rollup/pluginutils': 5.1.3(rollup@4.40.1) optionalDependencies: - rollup: 4.44.0 + rollup: 4.40.1 - '@rollup/plugin-node-resolve@16.0.0(rollup@4.44.0)': + '@rollup/plugin-node-resolve@16.0.0(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.44.0) + '@rollup/pluginutils': 5.1.3(rollup@4.40.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.44.0 + rollup: 4.40.1 - '@rollup/pluginutils@5.1.3(rollup@4.44.0)': + '@rollup/pluginutils@5.1.3(rollup@4.40.1)': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.44.0 + rollup: 4.40.1 - '@rollup/rollup-android-arm-eabi@4.44.0': + '@rollup/rollup-android-arm-eabi@4.40.1': optional: true - '@rollup/rollup-android-arm64@4.44.0': + '@rollup/rollup-android-arm64@4.40.1': optional: true - '@rollup/rollup-darwin-arm64@4.44.0': + '@rollup/rollup-darwin-arm64@4.40.1': optional: true - '@rollup/rollup-darwin-x64@4.44.0': + '@rollup/rollup-darwin-x64@4.40.1': optional: true - '@rollup/rollup-freebsd-arm64@4.44.0': + '@rollup/rollup-freebsd-arm64@4.40.1': optional: true - '@rollup/rollup-freebsd-x64@4.44.0': + '@rollup/rollup-freebsd-x64@4.40.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.44.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.44.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.44.0': + '@rollup/rollup-linux-arm64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.44.0': + '@rollup/rollup-linux-arm64-musl@4.40.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.44.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.44.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.44.0': + '@rollup/rollup-linux-riscv64-musl@4.40.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.44.0': + '@rollup/rollup-linux-s390x-gnu@4.40.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.44.0': + '@rollup/rollup-linux-x64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-x64-musl@4.44.0': + '@rollup/rollup-linux-x64-musl@4.40.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.44.0': + '@rollup/rollup-win32-arm64-msvc@4.40.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.44.0': + '@rollup/rollup-win32-ia32-msvc@4.40.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.44.0': + '@rollup/rollup-win32-x64-msvc@4.40.1': optional: true - '@stylistic/eslint-plugin-js@2.1.0(eslint@9.29.0(jiti@2.4.2))': + '@stylistic/eslint-plugin-js@2.1.0(eslint@9.29.0)': dependencies: '@types/eslint': 8.56.12 acorn: 8.15.0 - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.29.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 + '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)': + dependencies: + acorn: 8.14.1 + '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': dependencies: acorn: 8.15.0 - '@sveltejs/eslint-config@8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.29.0(jiti@2.4.2)))(eslint-config-prettier@9.1.0(eslint@9.29.0(jiti@2.4.2)))(eslint-plugin-n@17.16.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.29.0(jiti@2.4.2))(svelte@5.35.5)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(eslint@9.29.0(jiti@2.4.2))(typescript-eslint@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3)': + '@sveltejs/eslint-config@8.2.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.29.0))(eslint-config-prettier@9.1.0(eslint@9.29.0))(eslint-plugin-n@17.16.1(eslint@9.29.0)(typescript@5.8.3))(eslint-plugin-svelte@3.9.3(eslint@9.29.0)(svelte@5.35.5))(eslint@9.29.0)(typescript-eslint@8.35.0(eslint@9.29.0)(typescript@5.8.3))(typescript@5.8.3)': dependencies: - '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.29.0(jiti@2.4.2)) - eslint: 9.29.0(jiti@2.4.2) - eslint-config-prettier: 9.1.0(eslint@9.29.0(jiti@2.4.2)) - eslint-plugin-n: 17.16.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-svelte: 3.9.3(eslint@9.29.0(jiti@2.4.2))(svelte@5.35.5)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) + '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.29.0) + eslint: 9.29.0 + eslint-config-prettier: 9.1.0(eslint@9.29.0) + eslint-plugin-n: 17.16.1(eslint@9.29.0)(typescript@5.8.3) + eslint-plugin-svelte: 3.9.3(eslint@9.29.0)(svelte@5.35.5) globals: 15.15.0 typescript: 5.8.3 - typescript-eslint: 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + typescript-eslint: 8.35.0(eslint@9.29.0)(typescript@5.8.3) - '@sveltejs/vite-plugin-svelte-inspector@5.0.0-next.0(@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/kit@2.24.0(@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)))(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@sveltejs/vite-plugin-svelte': 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) + '@types/cookie': 0.6.0 + acorn: 8.15.0 + cookie: 0.6.0 + devalue: 5.1.0 + esm-env: 1.2.2 + 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.35.5 + vite: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) + + '@sveltejs/vite-plugin-svelte-inspector@5.0.0-next.0(@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)))(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) debug: 4.4.1 svelte: 5.35.5 - vite: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.0-next.0(@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)))(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.0-next.0(@sveltejs/vite-plugin-svelte@6.0.0-next.3(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)))(svelte@5.35.5)(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.35.5 - vite: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - vitefu: 1.1.1(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + vite: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) + vitefu: 1.1.1(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) transitivePeerDependencies: - supports-color @@ -5635,18 +6103,6 @@ snapshots: transitivePeerDependencies: - encoding - '@tsconfig/node10@1.0.11': - optional: true - - '@tsconfig/node12@1.0.11': - optional: true - - '@tsconfig/node14@1.0.3': - optional: true - - '@tsconfig/node16@1.0.4': - optional: true - '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -5661,10 +6117,10 @@ snapshots: '@types/eslint@8.56.12': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 - '@types/estree@1.0.8': {} + '@types/estree@1.0.7': {} '@types/json-schema@7.0.15': {} @@ -5691,15 +6147,15 @@ snapshots: '@types/node': 18.19.119 optional: true - '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.0(eslint@9.29.0)(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.35.0 - '@typescript-eslint/type-utils': 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.35.0(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.29.0)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.35.0 - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.29.0 graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -5708,31 +6164,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.35.0(eslint@9.29.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.35.0 '@typescript-eslint/types': 8.35.0 '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.35.0 debug: 4.4.1 - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) - '@typescript-eslint/types': 8.37.0 - debug: 4.4.1 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.37.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) - '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: @@ -5743,111 +6190,89 @@ snapshots: '@typescript-eslint/types': 8.35.0 '@typescript-eslint/visitor-keys': 8.35.0 - '@typescript-eslint/scope-manager@8.37.0': - dependencies: - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 - '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.8.3)': - dependencies: - typescript: 5.8.3 - - '@typescript-eslint/type-utils@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.35.0(eslint@9.29.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.29.0)(typescript@5.8.3) debug: 4.4.1 - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.29.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.35.0': {} + '@typescript-eslint/types@8.31.1': {} - '@typescript-eslint/types@8.37.0': {} + '@typescript-eslint/types@8.35.0': {} - '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/visitor-keys': 8.31.1 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.1 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.37.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.37.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/visitor-keys': 8.35.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.1 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.35.0(eslint@9.29.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) '@typescript-eslint/scope-manager': 8.35.0 '@typescript-eslint/types': 8.35.0 '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.37.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/visitor-keys@8.31.1': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) - eslint: 9.29.0(jiti@2.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types': 8.31.1 + eslint-visitor-keys: 4.2.0 '@typescript-eslint/visitor-keys@8.35.0': dependencies: '@typescript-eslint/types': 8.35.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.37.0': - dependencies: - '@typescript-eslint/types': 8.37.0 - eslint-visitor-keys: 4.2.1 - - '@vercel/nft@0.29.4(rollup@4.44.0)': + '@vercel/nft@0.29.4(rollup@4.40.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.1.3(rollup@4.44.0) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + '@rollup/pluginutils': 5.1.3(rollup@4.40.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.3 + picomatch: 4.0.2 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -5862,13 +6287,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.3(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0))': + '@vitest/mocker@3.2.3(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1))': dependencies: '@vitest/spy': 3.2.3 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) '@vitest/pretty-format@3.2.3': dependencies: @@ -5963,6 +6388,10 @@ snapshots: dependencies: event-target-shim: 5.0.1 + acorn-import-attributes@1.9.5(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -5973,13 +6402,10 @@ snapshots: acorn-walk@8.3.2: {} - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 - optional: true - acorn@8.14.0: {} + acorn@8.14.1: {} + acorn@8.15.0: {} agent-base@7.1.3: {} @@ -6025,9 +6451,6 @@ snapshots: tar-stream: 3.1.7 zip-stream: 6.0.1 - arg@4.1.3: - optional: true - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -6128,6 +6551,8 @@ snapshots: ci-info@3.9.0: {} + cjs-module-lexer@1.4.3: {} + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -6208,9 +6633,6 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 - create-require@1.1.1: - optional: true - cron-parser@4.9.0: dependencies: luxon: 3.6.1 @@ -6253,7 +6675,7 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@2.0.4: {} + detect-libc@2.0.3: {} detective-amd@6.0.1: dependencies: @@ -6291,7 +6713,7 @@ snapshots: detective-typescript@14.0.0(typescript@5.8.3): dependencies: - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) ast-module-types: 6.0.1 node-source-walk: 7.0.1 typescript: 5.8.3 @@ -6313,9 +6735,6 @@ snapshots: devalue@5.1.0: {} - diff@4.0.2: - optional: true - diff@5.2.0: {} dir-glob@3.0.1: @@ -6330,17 +6749,17 @@ snapshots: dropcss@1.0.16: {} - dts-buddy@0.6.1(typescript@5.8.3): + dts-buddy@0.6.1(typescript@5.6.3): dependencies: '@jridgewell/source-map': 0.3.6 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 kleur: 4.1.5 locate-character: 3.0.0 magic-string: 0.30.17 sade: 1.8.1 tinyglobby: 0.2.14 - ts-api-utils: 1.3.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + typescript: 5.6.3 e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: {} @@ -6356,10 +6775,10 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.18.2: + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.2.1 enquirer@2.4.1: dependencies: @@ -6440,51 +6859,51 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@9.29.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.29.0): dependencies: - eslint: 9.29.0(jiti@2.4.2) - semver: 7.7.2 + eslint: 9.29.0 + semver: 7.7.1 - eslint-config-prettier@9.1.0(eslint@9.29.0(jiti@2.4.2)): + eslint-config-prettier@9.1.0(eslint@9.29.0): dependencies: - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.29.0 - eslint-plugin-es-x@7.8.0(eslint@9.29.0(jiti@2.4.2)): + eslint-plugin-es-x@7.8.0(eslint@9.29.0): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) '@eslint-community/regexpp': 4.12.1 - eslint: 9.29.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.29.0(jiti@2.4.2)) + eslint: 9.29.0 + eslint-compat-utils: 0.5.1(eslint@9.29.0) - eslint-plugin-n@17.16.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-n@17.16.1(eslint@9.29.0)(typescript@5.8.3): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) - '@typescript-eslint/utils': 8.37.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - enhanced-resolve: 5.18.2 - eslint: 9.29.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.29.0(jiti@2.4.2)) - get-tsconfig: 4.10.1 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) + '@typescript-eslint/utils': 8.35.0(eslint@9.29.0)(typescript@5.8.3) + enhanced-resolve: 5.18.1 + eslint: 9.29.0 + eslint-plugin-es-x: 7.8.0(eslint@9.29.0) + get-tsconfig: 4.10.0 globals: 15.15.0 ignore: 5.3.2 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.1 ts-declaration-location: 1.0.7(typescript@5.8.3) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-svelte@3.9.3(eslint@9.29.0(jiti@2.4.2))(svelte@5.35.5)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)): + eslint-plugin-svelte@3.9.3(eslint@9.29.0)(svelte@5.35.5): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) - '@jridgewell/sourcemap-codec': 1.5.4 - eslint: 9.29.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) + '@jridgewell/sourcemap-codec': 1.5.0 + eslint: 9.29.0 esutils: 2.0.3 - globals: 16.3.0 + globals: 16.2.0 known-css-properties: 0.37.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) + postcss-load-config: 3.1.4(postcss@8.5.6) postcss-safe-parser: 7.0.1(postcss@8.5.6) - semver: 7.7.2 + semver: 7.7.1 svelte-eslint-parser: 1.2.0(svelte@5.35.5) optionalDependencies: svelte: 5.35.5 @@ -6498,11 +6917,13 @@ snapshots: eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} - eslint@9.29.0(jiti@2.4.2): + eslint@9.29.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.1 '@eslint/config-helpers': 0.2.3 @@ -6513,7 +6934,7 @@ snapshots: '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 @@ -6537,8 +6958,6 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.3 - optionalDependencies: - jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -6558,7 +6977,7 @@ snapshots: esrap@2.1.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 esrecurse@4.3.0: dependencies: @@ -6570,7 +6989,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 esutils@2.0.3: {} @@ -6638,9 +7057,9 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.6(picomatch@4.0.3): + fdir@6.4.6(picomatch@4.0.2): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.2 fecha@4.2.3: {} @@ -6728,7 +7147,7 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.10.1: + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -6755,7 +7174,7 @@ snapshots: globals@15.15.0: {} - globals@16.3.0: {} + globals@16.2.0: {} globby@11.1.0: dependencies: @@ -6814,6 +7233,13 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-in-the-middle@1.14.2: + dependencies: + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + cjs-module-lexer: 1.4.3 + module-details-from-path: 1.0.4 + imurmurhash@0.1.4: {} index-to-position@1.1.0: {} @@ -6848,11 +7274,11 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 is-reference@3.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 is-stream@2.0.1: {} @@ -6880,9 +7306,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@2.4.2: - optional: true - jpeg-js@0.4.4: {} js-image-generator@1.0.4: @@ -6973,7 +7396,7 @@ snapshots: lightningcss@1.30.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.0.3 optionalDependencies: lightningcss-darwin-arm64: 1.30.1 lightningcss-darwin-x64: 1.30.1 @@ -7005,6 +7428,8 @@ snapshots: dependencies: p-locate: 6.0.0 + lodash.camelcase@4.3.0: {} + lodash.debounce@4.0.8: {} lodash.merge@4.6.2: {} @@ -7022,6 +7447,8 @@ snapshots: safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 + long@5.3.2: {} + loupe@3.1.3: {} lower-case@2.0.2: @@ -7034,10 +7461,7 @@ snapshots: magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - - make-error@1.3.6: - optional: true + '@jridgewell/sourcemap-codec': 1.5.0 merge-options@3.0.4: dependencies: @@ -7102,6 +7526,8 @@ snapshots: ast-module-types: 6.0.1 node-source-walk: 7.0.1 + module-details-from-path@1.0.4: {} + mri@1.2.0: {} mrmime@2.0.0: {} @@ -7136,7 +7562,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.1 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -7266,7 +7692,7 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.3: {} + picomatch@4.0.2: {} pify@4.0.1: {} @@ -7283,13 +7709,12 @@ snapshots: '@polka/url': 1.0.0-next.28 trouter: 4.0.0 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)): + postcss-load-config@3.1.4(postcss@8.5.6): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@types/node@18.19.119)(typescript@5.8.3) postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: @@ -7339,6 +7764,11 @@ snapshots: prelude-ls@1.2.1: {} + prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.35.5): + dependencies: + prettier: 3.3.3 + svelte: 5.35.5 + prettier-plugin-svelte@3.4.0(prettier@3.6.0)(svelte@5.35.5): dependencies: prettier: 3.6.0 @@ -7346,6 +7776,8 @@ snapshots: prettier@2.8.8: {} + prettier@3.3.3: {} + prettier@3.6.0: {} printable-characters@1.0.42: {} @@ -7354,6 +7786,21 @@ snapshots: process@0.11.10: {} + protobufjs@7.5.3: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 18.19.119 + long: 5.3.2 + publint@0.3.0: dependencies: '@publint/pack': 0.1.0 @@ -7431,6 +7878,14 @@ snapshots: require-directory@2.1.1: {} + require-in-the-middle@7.5.2: + dependencies: + debug: 4.4.1 + module-details-from-path: 1.0.4 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + require-package-name@2.0.1: {} resolve-from@4.0.0: {} @@ -7453,30 +7908,30 @@ snapshots: reusify@1.0.4: {} - rollup@4.44.0: + rollup@4.40.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.44.0 - '@rollup/rollup-android-arm64': 4.44.0 - '@rollup/rollup-darwin-arm64': 4.44.0 - '@rollup/rollup-darwin-x64': 4.44.0 - '@rollup/rollup-freebsd-arm64': 4.44.0 - '@rollup/rollup-freebsd-x64': 4.44.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.44.0 - '@rollup/rollup-linux-arm-musleabihf': 4.44.0 - '@rollup/rollup-linux-arm64-gnu': 4.44.0 - '@rollup/rollup-linux-arm64-musl': 4.44.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.44.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0 - '@rollup/rollup-linux-riscv64-gnu': 4.44.0 - '@rollup/rollup-linux-riscv64-musl': 4.44.0 - '@rollup/rollup-linux-s390x-gnu': 4.44.0 - '@rollup/rollup-linux-x64-gnu': 4.44.0 - '@rollup/rollup-linux-x64-musl': 4.44.0 - '@rollup/rollup-win32-arm64-msvc': 4.44.0 - '@rollup/rollup-win32-ia32-msvc': 4.44.0 - '@rollup/rollup-win32-x64-msvc': 4.44.0 + '@rollup/rollup-android-arm-eabi': 4.40.1 + '@rollup/rollup-android-arm64': 4.40.1 + '@rollup/rollup-darwin-arm64': 4.40.1 + '@rollup/rollup-darwin-x64': 4.40.1 + '@rollup/rollup-freebsd-arm64': 4.40.1 + '@rollup/rollup-freebsd-x64': 4.40.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 + '@rollup/rollup-linux-arm-musleabihf': 4.40.1 + '@rollup/rollup-linux-arm64-gnu': 4.40.1 + '@rollup/rollup-linux-arm64-musl': 4.40.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-musl': 4.40.1 + '@rollup/rollup-linux-s390x-gnu': 4.40.1 + '@rollup/rollup-linux-x64-gnu': 4.40.1 + '@rollup/rollup-linux-x64-musl': 4.40.1 + '@rollup/rollup-win32-arm64-msvc': 4.40.1 + '@rollup/rollup-win32-ia32-msvc': 4.40.1 + '@rollup/rollup-win32-x64-msvc': 4.40.1 fsevents: 2.3.3 run-parallel@1.2.0: @@ -7497,7 +7952,7 @@ snapshots: semiver@1.1.0: {} - semver@7.7.2: {} + semver@7.7.1: {} server-side-dep@file:packages/adapter-cloudflare/test/apps/pages/server-side-dep: {} @@ -7508,8 +7963,8 @@ snapshots: sharp@0.33.5: dependencies: color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 + detect-libc: 2.0.3 + semver: 7.7.1 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -7535,8 +7990,8 @@ snapshots: sharp@0.34.1: dependencies: color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 + detect-libc: 2.0.3 + semver: 7.7.1 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.1 '@img/sharp-darwin-x64': 0.34.1 @@ -7690,15 +8145,15 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.1.1(picomatch@4.0.3)(svelte@5.35.5)(typescript@5.8.3): + svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.35.5)(typescript@5.6.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.4.6(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 svelte: 5.35.5 - typescript: 5.8.3 + typescript: 5.6.3 transitivePeerDependencies: - picomatch @@ -7717,29 +8172,29 @@ snapshots: dependencies: svelte: 5.35.5 - svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)))(postcss@8.5.6)(svelte@5.35.5)(typescript@5.8.3): + svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.5.6))(postcss@8.5.6)(svelte@5.35.5)(typescript@5.6.3): dependencies: detect-indent: 6.1.0 strip-indent: 3.0.0 svelte: 5.35.5 optionalDependencies: postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.3)) - typescript: 5.8.3 + postcss-load-config: 3.1.4(postcss@8.5.6) + typescript: 5.6.3 - svelte2tsx@0.7.33(svelte@5.35.5)(typescript@5.8.3): + svelte2tsx@0.7.33(svelte@5.35.5)(typescript@5.6.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 svelte: 5.35.5 - typescript: 5.8.3 + typescript: 5.6.3 svelte@5.35.5: dependencies: '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -7751,7 +8206,7 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 - tapable@2.2.2: {} + tapable@2.2.1: {} tar-stream@3.1.7: dependencies: @@ -7784,8 +8239,8 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 tinypool@1.1.0: {} @@ -7819,9 +8274,9 @@ snapshots: dependencies: regexparam: 3.0.0 - ts-api-utils@1.3.0(typescript@5.8.3): + ts-api-utils@1.3.0(typescript@5.6.3): dependencies: - typescript: 5.8.3 + typescript: 5.6.3 ts-api-utils@2.1.0(typescript@5.8.3): dependencies: @@ -7829,27 +8284,8 @@ snapshots: ts-declaration-location@1.0.7(typescript@5.8.3): dependencies: - picomatch: 4.0.3 - typescript: 5.8.3 - - ts-node@10.9.2(@types/node@18.19.119)(typescript@5.8.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.119 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 + picomatch: 4.0.2 typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true tslib@2.8.1: {} @@ -7859,16 +8295,18 @@ snapshots: type-fest@4.41.0: {} - typescript-eslint@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.35.0(eslint@9.29.0)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.29.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.0(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.29.0)(typescript@5.8.3) + eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color + typescript@5.6.3: {} + typescript@5.8.3: {} ufo@1.6.1: {} @@ -7914,29 +8352,26 @@ snapshots: kleur: 4.1.5 sade: 1.8.1 - v8-compile-cache-lib@3.0.1: - optional: true - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-imagetools@7.1.0(rollup@4.44.0): + vite-imagetools@7.1.0(rollup@4.40.1): dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.44.0) + '@rollup/pluginutils': 5.1.3(rollup@4.40.1) imagetools-core: 7.1.0 sharp: 0.34.1 transitivePeerDependencies: - rollup - vite-node@3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): + vite-node@3.2.3(@types/node@18.19.119)(lightningcss@1.30.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) transitivePeerDependencies: - '@types/node' - jiti @@ -7951,30 +8386,28 @@ snapshots: - tsx - yaml - vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): + vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1): dependencies: esbuild: 0.25.5 - fdir: 6.4.6(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 postcss: 8.5.6 - rollup: 4.44.0 + rollup: 4.40.1 tinyglobby: 0.2.14 optionalDependencies: '@types/node': 18.19.119 fsevents: 2.3.3 - jiti: 2.4.2 lightningcss: 1.30.1 - yaml: 2.8.0 - vitefu@1.1.1(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)): + vitefu@1.1.1(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)): optionalDependencies: - vite: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) - vitest@3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0): + vitest@3.2.3(@types/node@18.19.119)(lightningcss@1.30.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.3 - '@vitest/mocker': 3.2.3(vite@6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0)) + '@vitest/mocker': 3.2.3(vite@6.3.5(@types/node@18.19.119)(lightningcss@1.30.1)) '@vitest/pretty-format': 3.2.3 '@vitest/runner': 3.2.3 '@vitest/snapshot': 3.2.3 @@ -7985,15 +8418,15 @@ snapshots: expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.2 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.14 tinypool: 1.1.0 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) - vite-node: 3.2.3(@types/node@18.19.119)(jiti@2.4.2)(lightningcss@1.30.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@18.19.119)(lightningcss@1.30.1) + vite-node: 3.2.3(@types/node@18.19.119)(lightningcss@1.30.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.119 @@ -8105,9 +8538,6 @@ snapshots: yaml@1.10.2: {} - yaml@2.8.0: - optional: true - yargs-parser@21.1.1: {} yargs@17.7.2: @@ -8125,9 +8555,6 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - yn@3.1.1: - optional: true - yocto-queue@0.1.0: {} yocto-queue@1.2.1: {}