diff --git a/README.md b/README.md
index 4e16cd35c..49f42a3b1 100644
--- a/README.md
+++ b/README.md
@@ -25,14 +25,14 @@ A `.svelte` file would look something like this:
let count = $state(1);
let doubled = $derived(count * 2);
- let quadrupled = $derived(doubled * 2);
+ let quadrupled = $derived(doubled * 2);
function handleClick() {
count += 1;
}
-
+
{count} * 2 = {doubled}
{doubled} * 2 = {quadrupled}
diff --git a/packages/svelte-vscode/package.json b/packages/svelte-vscode/package.json
index 6ad7151b1..574715f96 100644
--- a/packages/svelte-vscode/package.json
+++ b/packages/svelte-vscode/package.json
@@ -9,7 +9,7 @@
"build": "npm run build:ts && npm run build:grammar",
"vscode:prepublish": "npm install && npm run build && npm prune --production",
"watch": "npm run build:grammar && tsc -w -p ./",
- "test": "npm run build:grammar && node test/grammar/test.js"
+ "test": "npm run build:grammar && node test/grammar/test.js && vitest --run"
},
"repository": {
"type": "git",
@@ -745,6 +745,7 @@
"js-yaml": "^3.14.0",
"tslib": "^2.4.0",
"typescript": "^5.8.2",
+ "vitest": "^3.2.4",
"vscode-tmgrammar-test": "^0.0.11"
},
"dependencies": {
diff --git a/packages/svelte-vscode/src/sveltekit/generateFiles/index.ts b/packages/svelte-vscode/src/sveltekit/generateFiles/index.ts
index 10184a85b..6e0a3b23c 100644
--- a/packages/svelte-vscode/src/sveltekit/generateFiles/index.ts
+++ b/packages/svelte-vscode/src/sveltekit/generateFiles/index.ts
@@ -3,8 +3,8 @@ import { commands, ExtensionContext, ProgressLocation, Uri, window, workspace }
import { addResourceCommandMap } from './commands';
import { generateResources } from './generate';
import { resourcesMap } from './resources';
-import { FileType, ResourceType, GenerateConfig, CommandType, ProjectType } from './types';
-import { checkProjectType } from '../utils';
+import { FileType, ResourceType, GenerateConfig, CommandType } from './types';
+import { checkProjectKind } from '../utils';
class GenerateError extends Error {}
@@ -38,7 +38,7 @@ async function handleSingle(uri: Uri | undefined, resourceType: ResourceType) {
}
const resources = [resource];
- const { type, rootPath, scriptExtension } = await getCommonConfig(uri);
+ const { kind, rootPath, scriptExtension } = await getCommonConfig(uri);
const itemPath = await promptResourcePath();
@@ -48,7 +48,7 @@ async function handleSingle(uri: Uri | undefined, resourceType: ResourceType) {
await generate({
path: path.join(rootPath, itemPath),
- type,
+ kind,
pageExtension: 'svelte',
scriptExtension,
resources
@@ -56,7 +56,7 @@ async function handleSingle(uri: Uri | undefined, resourceType: ResourceType) {
}
async function handleMultiple(uri: Uri | undefined) {
- const { type, rootPath, scriptExtension } = await getCommonConfig(uri);
+ const { kind, rootPath, scriptExtension } = await getCommonConfig(uri);
const itemPath = await promptResourcePath();
if (!itemPath) {
@@ -92,7 +92,7 @@ async function handleMultiple(uri: Uri | undefined) {
await generate({
path: path.join(rootPath, itemPath),
- type,
+ kind,
pageExtension: 'svelte',
scriptExtension,
resources: result.map((res) => res.value)
@@ -125,17 +125,17 @@ async function getCommonConfig(uri: Uri | undefined) {
);
}
- const type = await checkProjectType(rootPath);
- const scriptExtension = getScriptExtension(type);
+ const kind = await checkProjectKind(rootPath);
+ const scriptExtension = getScriptExtension(kind);
return {
- type,
+ kind,
scriptExtension,
rootPath
} as const;
}
-function getScriptExtension(type: ProjectType) {
- return type === ProjectType.JS || type === ProjectType.JS_SV5 ? 'js' : 'ts';
+function getScriptExtension(kind: GenerateConfig['kind']) {
+ return kind.withTs ? 'ts' : 'js';
}
function getRootPath(uri: Uri | undefined) {
diff --git a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/error.ts b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/error.ts
index 5727bd010..1a6407cc6 100644
--- a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/error.ts
+++ b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/error.ts
@@ -1,4 +1,4 @@
-import { GenerateConfig, ProjectType, Resource } from '../types';
+import { GenerateConfig, Resource } from '../types';
const defaultScriptTemplate = `
+
+{@render children()}
+`;
+
const tsScriptTemplate = `
+
+{@render children()}
+`;
export default async function (config: GenerateConfig): ReturnType {
- return (scriptTemplate.get(config.type) ?? defaultScriptTemplate).trim();
+ const { withRunes, withTs, withProps } = config.kind;
+ let template = defaultScriptTemplate;
+
+ if (withRunes && withTs && withProps) {
+ template = tsSv5ScriptTemplateProps;
+ } else if (withRunes && withTs && !withProps) {
+ template = tsSv5ScriptTemplate;
+ } else if (withRunes && !withTs && withProps) {
+ template = jsSv5ScriptTemplateProps;
+ } else if (withRunes && !withTs && !withProps) {
+ template = jsSv5ScriptTemplate;
+ } else if (!withRunes && withTs) {
+ template = tsScriptTemplate;
+ } else if (!withRunes && !withTs) {
+ template = defaultScriptTemplate;
+ }
+
+ return template.trim();
}
diff --git a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-load.ts b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-load.ts
index 95049f786..7d73155ef 100644
--- a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-load.ts
+++ b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-load.ts
@@ -1,4 +1,4 @@
-import { GenerateConfig, ProjectType, Resource } from '../types';
+import { GenerateConfig, Resource } from '../types';
const defaultScriptTemplate = `
/** @type {import('./$types').PageLoad} */
@@ -23,15 +23,15 @@ export const load = (async () => {
}) satisfies PageLoad;
`;
-const scriptTemplate: ReadonlyMap = new Map([
- [ProjectType.TS_SV5, tsScriptTemplate],
- [ProjectType.TS_SATISFIES_SV5, tsSatisfiesScriptTemplate],
- [ProjectType.JS_SV5, defaultScriptTemplate],
- [ProjectType.TS, tsScriptTemplate],
- [ProjectType.TS_SATISFIES, tsSatisfiesScriptTemplate],
- [ProjectType.JS, defaultScriptTemplate]
-]);
-
export default async function (config: GenerateConfig): ReturnType {
- return (scriptTemplate.get(config.type) ?? defaultScriptTemplate).trim();
+ const { withTs, withSatisfies } = config.kind;
+ let template = defaultScriptTemplate;
+
+ if (withTs && withSatisfies) {
+ template = tsSatisfiesScriptTemplate;
+ } else if (withTs && !withSatisfies) {
+ template = tsScriptTemplate;
+ }
+
+ return template.trim();
}
diff --git a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-server.ts b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-server.ts
index 56394222c..90dec1405 100644
--- a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-server.ts
+++ b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page-server.ts
@@ -1,4 +1,4 @@
-import { GenerateConfig, ProjectType, Resource } from '../types';
+import { GenerateConfig, Resource } from '../types';
const defaultScriptTemplate = `
/** @type {import('./$types').PageServerLoad} */
@@ -23,15 +23,15 @@ export const load = (async () => {
}) satisfies PageServerLoad;
`;
-const scriptTemplate: ReadonlyMap = new Map([
- [ProjectType.TS_SV5, tsScriptTemplate],
- [ProjectType.TS_SATISFIES_SV5, tsSatisfiesScriptTemplate],
- [ProjectType.JS_SV5, defaultScriptTemplate],
- [ProjectType.TS, tsScriptTemplate],
- [ProjectType.TS_SATISFIES, tsSatisfiesScriptTemplate],
- [ProjectType.JS, defaultScriptTemplate]
-]);
-
export default async function (config: GenerateConfig): ReturnType {
- return (scriptTemplate.get(config.type) ?? defaultScriptTemplate).trim();
+ const { withTs, withSatisfies } = config.kind;
+ let template = defaultScriptTemplate;
+
+ if (withTs && withSatisfies) {
+ template = tsSatisfiesScriptTemplate;
+ } else if (withTs && !withSatisfies) {
+ template = tsScriptTemplate;
+ }
+
+ return template.trim();
}
diff --git a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page.ts b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page.ts
index ecbbfa57f..55375a255 100644
--- a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page.ts
+++ b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/page.ts
@@ -1,4 +1,4 @@
-import { GenerateConfig, ProjectType, Resource } from '../types';
+import { GenerateConfig, Resource } from '../types';
const defaultScriptTemplate = `
`;
-const tsSv5ScriptTemplate = `
-
+`;
- let { data }: { data: PageData } = $props();
+const jsSv5ScriptTemplateProps = `
+
`;
@@ -23,22 +29,39 @@ const tsScriptTemplate = `
`;
-const jsSv5ScriptTemplate = `
-
`;
-const scriptTemplate: ReadonlyMap = new Map([
- [ProjectType.TS_SV5, tsSv5ScriptTemplate],
- [ProjectType.TS_SATISFIES_SV5, tsSv5ScriptTemplate],
- [ProjectType.JS_SV5, jsSv5ScriptTemplate],
- [ProjectType.TS, tsScriptTemplate],
- [ProjectType.TS_SATISFIES, tsScriptTemplate],
- [ProjectType.JS, defaultScriptTemplate]
-]);
+const tsSv5ScriptTemplateProps = `
+
+`;
export default async function (config: GenerateConfig): ReturnType {
- return (scriptTemplate.get(config.type) ?? defaultScriptTemplate).trim();
+ const { withProps, withRunes, withTs } = config.kind;
+ let template = defaultScriptTemplate;
+
+ if (withRunes && withTs && withProps) {
+ template = tsSv5ScriptTemplateProps;
+ } else if (withRunes && withTs && !withProps) {
+ template = tsSv5ScriptTemplate;
+ } else if (withRunes && !withTs && withProps) {
+ template = jsSv5ScriptTemplateProps;
+ } else if (withRunes && !withTs && !withProps) {
+ template = jsSv5ScriptTemplate;
+ } else if (!withRunes && withTs) {
+ template = tsScriptTemplate;
+ } else if (!withRunes && !withTs) {
+ template = defaultScriptTemplate;
+ }
+
+ return template.trim();
}
diff --git a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/server.ts b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/server.ts
index 6ea832b97..778ef43f9 100644
--- a/packages/svelte-vscode/src/sveltekit/generateFiles/templates/server.ts
+++ b/packages/svelte-vscode/src/sveltekit/generateFiles/templates/server.ts
@@ -1,4 +1,4 @@
-import { GenerateConfig, ProjectType, Resource } from '../types';
+import { GenerateConfig, Resource } from '../types';
const defaultScriptTemplate = `
/** @type {import('./$types').RequestHandler} */
@@ -15,15 +15,13 @@ export const GET: RequestHandler = async () => {
};
`;
-const scriptTemplate: ReadonlyMap = new Map([
- [ProjectType.TS_SV5, tsScriptTemplate],
- [ProjectType.TS_SATISFIES_SV5, tsScriptTemplate],
- [ProjectType.JS_SV5, defaultScriptTemplate],
- [ProjectType.TS, tsScriptTemplate],
- [ProjectType.TS_SATISFIES, tsScriptTemplate],
- [ProjectType.JS, defaultScriptTemplate]
-]);
-
export default async function (config: GenerateConfig): ReturnType {
- return (scriptTemplate.get(config.type) ?? defaultScriptTemplate).trim();
+ const { withTs } = config.kind;
+ let template = defaultScriptTemplate;
+
+ if (withTs) {
+ template = tsScriptTemplate;
+ }
+
+ return template.trim();
}
diff --git a/packages/svelte-vscode/src/sveltekit/generateFiles/types.ts b/packages/svelte-vscode/src/sveltekit/generateFiles/types.ts
index 4f6fc2ce3..978e4dc2c 100644
--- a/packages/svelte-vscode/src/sveltekit/generateFiles/types.ts
+++ b/packages/svelte-vscode/src/sveltekit/generateFiles/types.ts
@@ -32,25 +32,14 @@ export type Resource = {
generate: (config: GenerateConfig) => Promise;
};
-export enum ProjectType {
- TS_SV5 = 'ts-sv5',
- JS_SV5 = 'js-sv5',
- TS_SATISFIES_SV5 = 'ts-satisfies-sv5',
- TS = 'ts',
- JS = 'js',
- TS_SATISFIES = 'ts-satisfies'
-}
-
-export type IsSvelte5Plus = boolean;
-
-export const IsSvelte5Plus: Record = {
- yes: true,
- no: false
-};
-
export interface GenerateConfig {
path: string;
- type: ProjectType;
+ kind: {
+ withTs: boolean;
+ withSatisfies: boolean;
+ withRunes: boolean;
+ withProps: boolean;
+ };
pageExtension: string;
scriptExtension: string;
resources: Resource[];
diff --git a/packages/svelte-vscode/src/sveltekit/utils.ts b/packages/svelte-vscode/src/sveltekit/utils.ts
index 5a68d6733..6ca33f796 100644
--- a/packages/svelte-vscode/src/sveltekit/utils.ts
+++ b/packages/svelte-vscode/src/sveltekit/utils.ts
@@ -1,7 +1,7 @@
import { TextDecoder } from 'util';
import * as path from 'path';
import { Uri, workspace } from 'vscode';
-import { IsSvelte5Plus, ProjectType } from './generateFiles/types';
+import type { GenerateConfig } from './generateFiles/types';
export async function fileExists(file: string) {
try {
@@ -26,39 +26,47 @@ export async function findFile(searchPath: string, fileName: string) {
}
}
-export async function checkProjectType(path: string): Promise {
+export async function checkProjectKind(path: string): Promise {
const tsconfig = await findFile(path, 'tsconfig.json');
const jsconfig = await findFile(path, 'jsconfig.json');
- const svelteVersion = await getSvelteVersionFromPackageJson();
- const isSv5Plus = isSvelte5Plus(svelteVersion);
- const isTs = !!tsconfig && (!jsconfig || tsconfig.length >= jsconfig.length);
- if (isTs) {
+
+ const svelteVersion = await getVersionFromPackageJson('svelte');
+ const withRunes = svelteVersion ? versionAtLeast(svelteVersion, 5) : true;
+
+ const svelteKitVersion = await getVersionFromPackageJson('@sveltejs/kit');
+ let withProps = svelteKitVersion ? versionAtLeast(svelteKitVersion, 2, 16) : true;
+
+ const withTs = !!tsconfig && (!jsconfig || tsconfig.length >= jsconfig.length);
+ let withSatisfies = false;
+ if (withTs) {
try {
const packageJSONPath = require.resolve('typescript/package.json', {
paths: [tsconfig]
});
const { version } = require(packageJSONPath);
- const [major, minor] = version.split('.');
- if ((Number(major) === 4 && Number(minor) >= 9) || Number(major) > 4) {
- return isSv5Plus ? ProjectType.TS_SATISFIES_SV5 : ProjectType.TS_SATISFIES;
- } else {
- return isSv5Plus ? ProjectType.TS_SV5 : ProjectType.TS;
- }
+ withSatisfies = version ? versionAtLeast(version, 4, 9) : true;
} catch (e) {
- return isSv5Plus ? ProjectType.TS_SV5 : ProjectType.TS;
+ withSatisfies = true;
}
- } else {
- return isSv5Plus ? ProjectType.JS_SV5 : ProjectType.JS;
}
-}
-export function isSvelte5Plus(version: string | undefined): IsSvelte5Plus {
- if (!version) return IsSvelte5Plus.no;
+ return {
+ withTs,
+ withSatisfies,
+ withRunes,
+ withProps
+ };
+}
- return version.split('.')[0] >= '5';
+function versionAtLeast(version: string, major: number, minor?: number): boolean {
+ const [majorVersion, minorVersion] = version.split('.');
+ return (
+ (Number(majorVersion) === major && Number(minorVersion) >= (minor ?? 0)) ||
+ Number(majorVersion) > major
+ );
}
-export async function getSvelteVersionFromPackageJson(): Promise {
+export async function getVersionFromPackageJson(packageName: string): Promise {
const packageJsonList = await workspace.findFiles('**/package.json', '**/node_modules/**');
if (packageJsonList.length === 0) {
@@ -69,7 +77,8 @@ export async function getSvelteVersionFromPackageJson(): Promise ({
+ Uri: { file: vi.fn((path) => ({ path })) },
+ workspace: {
+ fs: {
+ stat: vi.fn().mockImplementation((uri) => {
+ const path = uri.path || uri.toString();
+
+ // Mock config file existence based on configuration
+ if (path.endsWith('tsconfig.json') && tsconfig) {
+ return Promise.resolve({ type: 1 }); // File exists
+ }
+ if (path.endsWith('jsconfig.json') && jsconfig) {
+ return Promise.resolve({ type: 1 }); // File exists
+ }
+ return Promise.reject(new Error('File not found'));
+ }),
+ readFile: vi
+ .fn()
+ .mockResolvedValue(new TextEncoder().encode(JSON.stringify(defaultPackageJson)))
+ },
+ findFiles: vi.fn().mockReturnValue([{ path: '/fake/package.json' }])
+ }
+ }));
+}
+
+describe('checkProjectKind', () => {
+ beforeEach(() => {
+ vi.clearAllMocks();
+ vi.resetModules();
+ });
+
+ const combinations: [string, MockConfig, keyof GenerateConfig['kind'], boolean][] = [
+ // by default
+ ['default to js', {}, 'withTs', false],
+ ['default to runes', {}, 'withRunes', true],
+ ['default to not satisfies', {}, 'withSatisfies', false],
+ ['default to withProps', {}, 'withProps', true],
+
+ ['js', { jsconfig: true }, 'withTs', false],
+
+ ['ts', { tsconfig: true }, 'withTs', true],
+ ['ts satisfies (default)', { tsconfig: true }, 'withSatisfies', true],
+ ['ts not satisfies', { tsconfig: true, tsVersion: '3.0' }, 'withSatisfies', false],
+ ['ts satisfies', { tsconfig: true, tsVersion: '4.9' }, 'withSatisfies', true],
+ ['ts not satisfies major', { tsconfig: true, tsVersion: '4' }, 'withSatisfies', false],
+ ['ts not satisfies minor', { tsconfig: true, tsVersion: '4.8' }, 'withSatisfies', false],
+
+ ['no runes 1', { svelteVersion: '1' }, 'withRunes', false],
+ ['no runes 4', { svelteVersion: '4.99' }, 'withRunes', false],
+ ['runes 12', { svelteVersion: '12' }, 'withRunes', true],
+ ['runes 12', { svelteVersion: '5.0' }, 'withRunes', true],
+
+ ['no sveltekit', { svelteKitVersion: '1' }, 'withProps', false],
+ ['no sveltekit', { svelteKitVersion: '2' }, 'withProps', false],
+ ['sveltekit', { svelteKitVersion: '2.15' }, 'withProps', false],
+ ['sveltekit', { svelteKitVersion: '2.16' }, 'withProps', true],
+ ['sveltekit', { svelteKitVersion: '3' }, 'withProps', true]
+ ];
+
+ for (const [name, config, ex, toBe] of combinations) {
+ it(name, async () => {
+ setupMocks(config);
+
+ const utils = await import('../../src/sveltekit/utils');
+ const result = await utils.checkProjectKind('/test/path');
+
+ expect(result[ex]).toBe(toBe);
+ });
+ }
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3e3f793a7..29ea244d6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -38,7 +38,7 @@ importers:
version: 2.0.2
fdir:
specifier: ^6.2.0
- version: 6.2.0
+ version: 6.2.0(picomatch@4.0.3)
globrex:
specifier: ^0.1.2
version: 0.1.2
@@ -123,7 +123,7 @@ importers:
version: 4.0.1
fdir:
specifier: ^6.2.0
- version: 6.2.0
+ version: 6.2.0(picomatch@4.0.3)
picocolors:
specifier: ^1.0.0
version: 1.0.0
@@ -219,6 +219,9 @@ importers:
typescript:
specifier: ^5.8.2
version: 5.8.2
+ vitest:
+ specifier: ^3.2.4
+ version: 3.2.4(@types/node@18.19.46)
vscode-tmgrammar-test:
specifier: ^0.0.11
version: 0.0.11
@@ -340,6 +343,162 @@ packages:
'@emmetio/scanner@1.0.4':
resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==}
+ '@esbuild/aix-ppc64@0.25.6':
+ resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.25.6':
+ resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.25.6':
+ resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.25.6':
+ resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.25.6':
+ resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.25.6':
+ resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.25.6':
+ resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.25.6':
+ resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.25.6':
+ resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.25.6':
+ resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.25.6':
+ resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.25.6':
+ resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.25.6':
+ resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.25.6':
+ resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.25.6':
+ resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.25.6':
+ resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.25.6':
+ resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.25.6':
+ resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.25.6':
+ resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.25.6':
+ resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.25.6':
+ resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.25.6':
+ resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/sunos-x64@0.25.6':
+ resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.25.6':
+ resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.25.6':
+ resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.25.6':
+ resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
@@ -434,6 +593,106 @@ packages:
rollup:
optional: true
+ '@rollup/rollup-android-arm-eabi@4.45.1':
+ resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.45.1':
+ resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.45.1':
+ resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.45.1':
+ resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.45.1':
+ resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.45.1':
+ resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
+ resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.45.1':
+ resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.45.1':
+ resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.45.1':
+ resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
+ resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
+ resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.45.1':
+ resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-musl@4.45.1':
+ resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.45.1':
+ resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.45.1':
+ resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.45.1':
+ resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-win32-arm64-msvc@4.45.1':
+ resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.45.1':
+ resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.45.1':
+ resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==}
+ cpu: [x64]
+ os: [win32]
+
'@sinonjs/commons@1.8.6':
resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==}
@@ -467,12 +726,21 @@ packages:
'@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==}
+
+ '@types/deep-eql@4.0.2':
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+
'@types/estree@0.0.42':
resolution: {integrity: sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ==}
'@types/estree@1.0.1':
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
'@types/fs-extra@8.1.2':
resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==}
@@ -522,6 +790,35 @@ packages:
'@ungap/promise-all-settled@1.1.2':
resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==}
+ '@vitest/expect@3.2.4':
+ resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
+
+ '@vitest/mocker@3.2.4':
+ resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
+ '@vitest/pretty-format@3.2.4':
+ resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
+
+ '@vitest/runner@3.2.4':
+ resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
+
+ '@vitest/snapshot@3.2.4':
+ resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
+
+ '@vitest/spy@3.2.4':
+ resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
+
+ '@vitest/utils@3.2.4':
+ resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
+
'@vscode/emmet-helper@2.8.4':
resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==}
@@ -582,6 +879,10 @@ packages:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
+
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
@@ -613,10 +914,18 @@ packages:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
+ cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+
camelcase@6.3.0:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
+ chai@5.2.1:
+ resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==}
+ engines: {node: '>=18'}
+
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -625,6 +934,10 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
+ check-error@2.1.1:
+ resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
+ engines: {node: '>= 16'}
+
chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
@@ -693,6 +1006,15 @@ packages:
supports-color:
optional: true
+ debug@4.4.1:
+ resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decamelize@4.0.0:
resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==}
engines: {node: '>=10'}
@@ -700,6 +1022,10 @@ packages:
dedent-js@1.0.1:
resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
+ deep-eql@5.0.2:
+ resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
+ engines: {node: '>=6'}
+
deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
@@ -734,6 +1060,14 @@ packages:
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ es-module-lexer@1.7.0:
+ resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+
+ esbuild@0.25.6:
+ resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@@ -760,6 +1094,10 @@ packages:
estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+ expect-type@1.2.2:
+ resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
+ engines: {node: '>=12.0.0'}
+
fast-glob@3.2.12:
resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'}
@@ -775,6 +1113,14 @@ packages:
picomatch:
optional: true
+ fdir@6.4.6:
+ resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
@@ -937,6 +1283,9 @@ packages:
resolution: {integrity: sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==}
engines: {node: ^10.14.2 || >=12.0.0}
+ js-tokens@9.0.1:
+ resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
+
js-yaml@3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
hasBin: true
@@ -971,6 +1320,9 @@ packages:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
engines: {node: '>=10'}
+ loupe@3.1.4:
+ resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==}
+
lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
@@ -988,6 +1340,9 @@ packages:
magic-string@0.30.11:
resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
+ magic-string@0.30.17:
+ resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
@@ -1033,6 +1388,11 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
nise@5.1.4:
resolution: {integrity: sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==}
@@ -1083,6 +1443,13 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
+ pathval@2.0.1:
+ resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
+ engines: {node: '>= 14.16'}
+
perf-regexes@1.0.1:
resolution: {integrity: sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==}
engines: {node: '>=6.14'}
@@ -1096,10 +1463,21 @@ packages:
picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
+
prettier-plugin-svelte@3.4.0:
resolution: {integrity: sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==}
peerDependencies:
@@ -1163,6 +1541,11 @@ packages:
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
+ rollup@4.45.1:
+ resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -1189,6 +1572,9 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
sinon@11.1.2:
resolution: {integrity: sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw==}
@@ -1204,6 +1590,10 @@ packages:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
@@ -1218,6 +1608,12 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
+ std-env@3.9.0:
+ resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
+
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -1230,6 +1626,9 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ strip-literal@3.0.0:
+ resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
+
supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -1253,6 +1652,28 @@ packages:
tiny-glob@0.2.9:
resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
+ tinybench@2.9.0:
+ resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+
+ tinyexec@0.3.2:
+ resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+
+ tinyglobby@0.2.14:
+ resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
+ engines: {node: '>=12.0.0'}
+
+ tinypool@1.1.1:
+ resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+
+ tinyrainbow@2.0.0:
+ resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
+ engines: {node: '>=14.0.0'}
+
+ tinyspy@4.0.3:
+ resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==}
+ engines: {node: '>=14.0.0'}
+
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -1302,6 +1723,79 @@ packages:
vfile-message@3.1.4:
resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
+ vite-node@3.2.4:
+ resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+
+ vite@7.0.4:
+ resolution: {integrity: sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ lightningcss: ^1.21.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vitest@3.2.4:
+ resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@types/debug': ^4.1.12
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ '@vitest/browser': 3.2.4
+ '@vitest/ui': 3.2.4
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@types/debug':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
vscode-css-languageservice@6.3.5:
resolution: {integrity: sha512-ehEIMXYPYEz/5Svi2raL9OKLpBt5dSAdoCFoLpo0TVFKrVpDemyuQwS3c3D552z/qQCg3pMp8oOLMObY6M3ajQ==}
@@ -1367,6 +1861,11 @@ packages:
engines: {node: '>= 8'}
hasBin: true
+ why-is-node-running@2.3.0:
+ resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
+ engines: {node: '>=8'}
+ hasBin: true
+
workerpool@6.2.0:
resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==}
@@ -1425,6 +1924,84 @@ snapshots:
'@emmetio/scanner@1.0.4': {}
+ '@esbuild/aix-ppc64@0.25.6':
+ optional: true
+
+ '@esbuild/android-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/android-arm@0.25.6':
+ optional: true
+
+ '@esbuild/android-x64@0.25.6':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/darwin-x64@0.25.6':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.25.6':
+ optional: true
+
+ '@esbuild/linux-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/linux-arm@0.25.6':
+ optional: true
+
+ '@esbuild/linux-ia32@0.25.6':
+ optional: true
+
+ '@esbuild/linux-loong64@0.25.6':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.25.6':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.25.6':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.25.6':
+ optional: true
+
+ '@esbuild/linux-s390x@0.25.6':
+ optional: true
+
+ '@esbuild/linux-x64@0.25.6':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.25.6':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.25.6':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/sunos-x64@0.25.6':
+ optional: true
+
+ '@esbuild/win32-arm64@0.25.6':
+ optional: true
+
+ '@esbuild/win32-ia32@0.25.6':
+ optional: true
+
+ '@esbuild/win32-x64@0.25.6':
+ optional: true
+
'@jridgewell/gen-mapping@0.3.5':
dependencies:
'@jridgewell/set-array': 1.2.1
@@ -1513,6 +2090,66 @@ snapshots:
optionalDependencies:
rollup: 3.7.5
+ '@rollup/rollup-android-arm-eabi@4.45.1':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.45.1':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.45.1':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.45.1':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.45.1':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.45.1':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.45.1':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.45.1':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.45.1':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.45.1':
+ optional: true
+
'@sinonjs/commons@1.8.6':
dependencies:
type-detect: 4.0.8
@@ -1549,10 +2186,18 @@ snapshots:
'@tsconfig/node16@1.0.4': {}
+ '@types/chai@5.2.2':
+ dependencies:
+ '@types/deep-eql': 4.0.2
+
+ '@types/deep-eql@4.0.2': {}
+
'@types/estree@0.0.42': {}
'@types/estree@1.0.1': {}
+ '@types/estree@1.0.8': {}
+
'@types/fs-extra@8.1.2':
dependencies:
'@types/node': 18.19.46
@@ -1600,6 +2245,48 @@ snapshots:
'@ungap/promise-all-settled@1.1.2': {}
+ '@vitest/expect@3.2.4':
+ dependencies:
+ '@types/chai': 5.2.2
+ '@vitest/spy': 3.2.4
+ '@vitest/utils': 3.2.4
+ chai: 5.2.1
+ tinyrainbow: 2.0.0
+
+ '@vitest/mocker@3.2.4(vite@7.0.4(@types/node@18.19.46))':
+ dependencies:
+ '@vitest/spy': 3.2.4
+ estree-walker: 3.0.3
+ magic-string: 0.30.17
+ optionalDependencies:
+ vite: 7.0.4(@types/node@18.19.46)
+
+ '@vitest/pretty-format@3.2.4':
+ dependencies:
+ tinyrainbow: 2.0.0
+
+ '@vitest/runner@3.2.4':
+ dependencies:
+ '@vitest/utils': 3.2.4
+ pathe: 2.0.3
+ strip-literal: 3.0.0
+
+ '@vitest/snapshot@3.2.4':
+ dependencies:
+ '@vitest/pretty-format': 3.2.4
+ magic-string: 0.30.17
+ pathe: 2.0.3
+
+ '@vitest/spy@3.2.4':
+ dependencies:
+ tinyspy: 4.0.3
+
+ '@vitest/utils@3.2.4':
+ dependencies:
+ '@vitest/pretty-format': 3.2.4
+ loupe: 3.1.4
+ tinyrainbow: 2.0.0
+
'@vscode/emmet-helper@2.8.4':
dependencies:
emmet: 2.4.4
@@ -1653,6 +2340,8 @@ snapshots:
array-union@2.1.0: {}
+ assertion-error@2.0.1: {}
+
axobject-query@4.1.0: {}
balanced-match@1.0.2: {}
@@ -1678,8 +2367,18 @@ snapshots:
builtin-modules@3.3.0: {}
+ cac@6.7.14: {}
+
camelcase@6.3.0: {}
+ chai@5.2.1:
+ dependencies:
+ assertion-error: 2.0.1
+ check-error: 2.1.1
+ deep-eql: 5.0.2
+ loupe: 3.1.4
+ pathval: 2.0.1
+
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -1691,6 +2390,8 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ check-error@2.1.1: {}
+
chokidar@3.5.3:
dependencies:
anymatch: 3.1.3
@@ -1766,10 +2467,16 @@ snapshots:
optionalDependencies:
supports-color: 8.1.1
+ debug@4.4.1:
+ dependencies:
+ ms: 2.1.3
+
decamelize@4.0.0: {}
dedent-js@1.0.1: {}
+ deep-eql@5.0.2: {}
+
deepmerge@4.3.1: {}
del@5.1.0:
@@ -1802,6 +2509,37 @@ snapshots:
emoji-regex@8.0.0: {}
+ es-module-lexer@1.7.0: {}
+
+ esbuild@0.25.6:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.6
+ '@esbuild/android-arm': 0.25.6
+ '@esbuild/android-arm64': 0.25.6
+ '@esbuild/android-x64': 0.25.6
+ '@esbuild/darwin-arm64': 0.25.6
+ '@esbuild/darwin-x64': 0.25.6
+ '@esbuild/freebsd-arm64': 0.25.6
+ '@esbuild/freebsd-x64': 0.25.6
+ '@esbuild/linux-arm': 0.25.6
+ '@esbuild/linux-arm64': 0.25.6
+ '@esbuild/linux-ia32': 0.25.6
+ '@esbuild/linux-loong64': 0.25.6
+ '@esbuild/linux-mips64el': 0.25.6
+ '@esbuild/linux-ppc64': 0.25.6
+ '@esbuild/linux-riscv64': 0.25.6
+ '@esbuild/linux-s390x': 0.25.6
+ '@esbuild/linux-x64': 0.25.6
+ '@esbuild/netbsd-arm64': 0.25.6
+ '@esbuild/netbsd-x64': 0.25.6
+ '@esbuild/openbsd-arm64': 0.25.6
+ '@esbuild/openbsd-x64': 0.25.6
+ '@esbuild/openharmony-arm64': 0.25.6
+ '@esbuild/sunos-x64': 0.25.6
+ '@esbuild/win32-arm64': 0.25.6
+ '@esbuild/win32-ia32': 0.25.6
+ '@esbuild/win32-x64': 0.25.6
+
escalade@3.1.1: {}
escape-string-regexp@1.0.5: {}
@@ -1818,6 +2556,8 @@ snapshots:
dependencies:
'@types/estree': 1.0.1
+ expect-type@1.2.2: {}
+
fast-glob@3.2.12:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -1830,7 +2570,13 @@ snapshots:
dependencies:
reusify: 1.0.4
- fdir@6.2.0: {}
+ fdir@6.2.0(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
+
+ fdir@6.4.6(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
fill-range@7.0.1:
dependencies:
@@ -1991,6 +2737,8 @@ snapshots:
perf-regexes: 1.0.1
skip-regex: 1.0.2
+ js-tokens@9.0.1: {}
+
js-yaml@3.14.1:
dependencies:
argparse: 1.0.10
@@ -2023,6 +2771,8 @@ snapshots:
chalk: 4.1.2
is-unicode-supported: 0.1.0
+ loupe@3.1.4: {}
+
lower-case@2.0.2:
dependencies:
tslib: 2.5.2
@@ -2043,6 +2793,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ magic-string@0.30.17:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
make-error@1.3.6: {}
mdn-data@2.0.30: {}
@@ -2101,6 +2855,8 @@ snapshots:
nanoid@3.3.1: {}
+ nanoid@3.3.11: {}
+
nise@5.1.4:
dependencies:
'@sinonjs/commons': 2.0.0
@@ -2151,6 +2907,10 @@ snapshots:
path-type@4.0.0: {}
+ pathe@2.0.3: {}
+
+ pathval@2.0.1: {}
+
perf-regexes@1.0.1: {}
periscopic@2.0.3:
@@ -2166,8 +2926,18 @@ snapshots:
picocolors@1.0.0: {}
+ picocolors@1.1.1: {}
+
picomatch@2.3.1: {}
+ picomatch@4.0.3: {}
+
+ postcss@8.5.6:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
prettier-plugin-svelte@3.4.0(prettier@3.3.3)(svelte@4.2.19):
dependencies:
prettier: 3.3.3
@@ -2227,6 +2997,32 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ rollup@4.45.1:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.45.1
+ '@rollup/rollup-android-arm64': 4.45.1
+ '@rollup/rollup-darwin-arm64': 4.45.1
+ '@rollup/rollup-darwin-x64': 4.45.1
+ '@rollup/rollup-freebsd-arm64': 4.45.1
+ '@rollup/rollup-freebsd-x64': 4.45.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.45.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.45.1
+ '@rollup/rollup-linux-arm64-gnu': 4.45.1
+ '@rollup/rollup-linux-arm64-musl': 4.45.1
+ '@rollup/rollup-linux-loongarch64-gnu': 4.45.1
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.45.1
+ '@rollup/rollup-linux-riscv64-musl': 4.45.1
+ '@rollup/rollup-linux-s390x-gnu': 4.45.1
+ '@rollup/rollup-linux-x64-gnu': 4.45.1
+ '@rollup/rollup-linux-x64-musl': 4.45.1
+ '@rollup/rollup-win32-arm64-msvc': 4.45.1
+ '@rollup/rollup-win32-ia32-msvc': 4.45.1
+ '@rollup/rollup-win32-x64-msvc': 4.45.1
+ fsevents: 2.3.3
+
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
@@ -2251,6 +3047,8 @@ snapshots:
shebang-regex@3.0.0: {}
+ siginfo@2.0.0: {}
+
sinon@11.1.2:
dependencies:
'@sinonjs/commons': 1.8.6
@@ -2266,6 +3064,8 @@ snapshots:
source-map-js@1.2.0: {}
+ source-map-js@1.2.1: {}
+
source-map-support@0.5.21:
dependencies:
buffer-from: 1.1.2
@@ -2277,6 +3077,10 @@ snapshots:
sprintf-js@1.0.3: {}
+ stackback@0.0.2: {}
+
+ std-env@3.9.0: {}
+
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -2289,6 +3093,10 @@ snapshots:
strip-json-comments@3.1.1: {}
+ strip-literal@3.0.0:
+ dependencies:
+ js-tokens: 9.0.1
+
supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
@@ -2325,6 +3133,21 @@ snapshots:
globalyzer: 0.1.0
globrex: 0.1.2
+ tinybench@2.9.0: {}
+
+ tinyexec@0.3.2: {}
+
+ tinyglobby@0.2.14:
+ dependencies:
+ fdir: 6.4.6(picomatch@4.0.3)
+ picomatch: 4.0.3
+
+ tinypool@1.1.1: {}
+
+ tinyrainbow@2.0.0: {}
+
+ tinyspy@4.0.3: {}
+
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
@@ -2372,6 +3195,80 @@ snapshots:
'@types/unist': 2.0.6
unist-util-stringify-position: 3.0.3
+ vite-node@3.2.4(@types/node@18.19.46):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.1
+ es-module-lexer: 1.7.0
+ pathe: 2.0.3
+ vite: 7.0.4(@types/node@18.19.46)
+ transitivePeerDependencies:
+ - '@types/node'
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ vite@7.0.4(@types/node@18.19.46):
+ dependencies:
+ esbuild: 0.25.6
+ fdir: 6.4.6(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.45.1
+ tinyglobby: 0.2.14
+ optionalDependencies:
+ '@types/node': 18.19.46
+ fsevents: 2.3.3
+
+ vitest@3.2.4(@types/node@18.19.46):
+ dependencies:
+ '@types/chai': 5.2.2
+ '@vitest/expect': 3.2.4
+ '@vitest/mocker': 3.2.4(vite@7.0.4(@types/node@18.19.46))
+ '@vitest/pretty-format': 3.2.4
+ '@vitest/runner': 3.2.4
+ '@vitest/snapshot': 3.2.4
+ '@vitest/spy': 3.2.4
+ '@vitest/utils': 3.2.4
+ chai: 5.2.1
+ debug: 4.4.1
+ expect-type: 1.2.2
+ magic-string: 0.30.17
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.9.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.2
+ tinyglobby: 0.2.14
+ tinypool: 1.1.1
+ tinyrainbow: 2.0.0
+ vite: 7.0.4(@types/node@18.19.46)
+ vite-node: 3.2.4(@types/node@18.19.46)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 18.19.46
+ transitivePeerDependencies:
+ - jiti
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
vscode-css-languageservice@6.3.5:
dependencies:
'@vscode/l10n': 0.0.18
@@ -2443,6 +3340,11 @@ snapshots:
dependencies:
isexe: 2.0.0
+ why-is-node-running@2.3.0:
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+
workerpool@6.2.0: {}
wrap-ansi@7.0.0: