From 7f381b64ea0b5aaf2ca31ee54b3d4e24125b8778 Mon Sep 17 00:00:00 2001 From: jycouet Date: Sat, 8 Mar 2025 10:00:25 +0100 Subject: [PATCH 01/14] deps: replace pascal-case with change-case (maintained & lighter) --- packages/svelte2tsx/package.json | 2 +- packages/svelte2tsx/rollup.config.mjs | 2 +- .../src/svelte2tsx/addComponentExport.ts | 4 +-- pnpm-lock.yaml | 34 +++++-------------- 4 files changed, 12 insertions(+), 30 deletions(-) diff --git a/packages/svelte2tsx/package.json b/packages/svelte2tsx/package.json index 376e6ac33..98d835e43 100644 --- a/packages/svelte2tsx/package.json +++ b/packages/svelte2tsx/package.json @@ -66,6 +66,6 @@ ], "dependencies": { "dedent-js": "^1.0.1", - "pascal-case": "^3.1.1" + "change-case": "^5.4.4" } } diff --git a/packages/svelte2tsx/rollup.config.mjs b/packages/svelte2tsx/rollup.config.mjs index ccd67376d..40dd7d67a 100644 --- a/packages/svelte2tsx/rollup.config.mjs +++ b/packages/svelte2tsx/rollup.config.mjs @@ -107,7 +107,7 @@ export default [ 'svelte', 'svelte/compiler', 'dedent-js', - 'pascal-case' + 'change-case' ] } ]; diff --git a/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts b/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts index 9e9454773..c5508d131 100644 --- a/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts +++ b/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts @@ -1,4 +1,4 @@ -import { pascalCase } from 'pascal-case'; +import { pascalCase } from 'change-case'; import path from 'path'; import MagicString from 'magic-string'; import { ExportedNames } from './nodes/ExportedNames'; @@ -356,7 +356,7 @@ function classNameFromFilename(filename: string, appendSuffix: boolean): string const withoutExtensions = path.parse(filename).name?.split('.')[0]; const withoutInvalidCharacters = withoutExtensions .split('') - // Although "-" is invalid, we leave it in, pascal-case-handling will throw it out later + // Although "-" is invalid, we leave it in, change-case-handling (pascalCase) will throw it out later .filter((char) => /[A-Za-z$_\d-]/.test(char)) .join(''); const firstValidCharIdx = withoutInvalidCharacters diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 905264a94..be35f42d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -225,12 +225,12 @@ importers: packages/svelte2tsx: dependencies: + change-case: + specifier: ^5.4.4 + version: 5.4.4 dedent-js: specifier: ^1.0.1 version: 1.0.1 - pascal-case: - specifier: ^3.1.1 - version: 3.1.2 devDependencies: '@jridgewell/sourcemap-codec': specifier: ^1.5.0 @@ -625,6 +625,9 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -971,9 +974,6 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -1036,9 +1036,6 @@ packages: nise@5.1.4: resolution: {integrity: sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==} - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -1058,9 +1055,6 @@ packages: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1691,6 +1685,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + change-case@5.4.4: {} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 @@ -2023,10 +2019,6 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - lower-case@2.0.2: - dependencies: - tslib: 2.5.2 - lru-cache@6.0.0: dependencies: yallist: 4.0.0 @@ -2109,11 +2101,6 @@ snapshots: just-extend: 4.2.1 path-to-regexp: 1.8.0 - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.5.2 - normalize-path@3.0.0: {} once@1.4.0: @@ -2132,11 +2119,6 @@ snapshots: dependencies: aggregate-error: 3.1.0 - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.5.2 - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} From 204ebb9d09d64188f5bfb158415dc15ee0f07cdf Mon Sep 17 00:00:00 2001 From: jycouet Date: Sat, 8 Mar 2025 13:50:25 +0100 Subject: [PATCH 02/14] re-trigger --- .../src/svelte2tsx/addComponentExport.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts b/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts index c5508d131..295e0520b 100644 --- a/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts +++ b/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts @@ -142,8 +142,7 @@ class __sveltets_Render${genericsDef} { `export type ${PropsName}${genericsDef} = ${returnType('props')};\n` + `export type ${EventsName}${genericsDef} = ${returnType('events')};\n` + `export type ${SlotsName}${genericsDef} = ${returnType('slots')};\n` + - `\n${doc}export default class${ - className ? ` ${className}` : '' + `\n${doc}export default class${className ? ` ${className}` : '' }${genericsDef} extends ${svelteComponentClass}<${PropsName}${genericsRef}, ${EventsName}${genericsRef}, ${SlotsName}${genericsRef}> {` + exportedNames.createClassGetters(genericsRef) + (usesAccessors ? exportedNames.createClassAccessors() : '') + @@ -151,8 +150,7 @@ class __sveltets_Render${genericsDef} { } else { statement += `\n\nimport { ${svelteComponentClass} as __SvelteComponentTyped__ } from "svelte" \n` + - `${doc}export default class${ - className ? ` ${className}` : '' + `${doc}export default class${className ? ` ${className}` : '' }${genericsDef} extends __SvelteComponentTyped__<${returnType('props')}, ${returnType( 'events' )}, ${returnType('slots')}> {` + @@ -236,8 +234,7 @@ declare function $$__sveltets_2_isomorphic_component< PropsExport + EventsExport + SlotsExport + - `\n${doc}export default class${ - className ? ` ${className}` : '' + `\n${doc}export default class${className ? ` ${className}` : '' } extends ${svelteComponentClass}<${PropsName}, ${EventsName}, ${SlotsName}> {` + exportedNames.createClassGetters() + (usesAccessors ? exportedNames.createClassAccessors() : '') + @@ -248,8 +245,7 @@ declare function $$__sveltets_2_isomorphic_component< `/** @typedef {typeof __propDef.props} ${className}Props */\n` + `/** @typedef {typeof __propDef.events} ${className}Events */\n` + `/** @typedef {typeof __propDef.slots} ${className}Slots */\n` + - `\n${doc}export default class${ - className ? ` ${className}` : '' + `\n${doc}export default class${className ? ` ${className}` : '' } extends __sveltets_2_createSvelte2TsxComponent(${propDef}) {` + exportedNames.createClassGetters() + (usesAccessors ? exportedNames.createClassAccessors() : '') + @@ -272,8 +268,7 @@ declare function $$__sveltets_2_isomorphic_component< } } else { statement = - `\n\n${doc}export default class${ - className ? ` ${className}` : '' + `\n\n${doc}export default class${className ? ` ${className}` : '' } extends __sveltets_2_createSvelte2TsxComponent(${propDef}) {` + exportedNames.createClassGetters() + (usesAccessors ? exportedNames.createClassAccessors() : '') + @@ -356,7 +351,7 @@ function classNameFromFilename(filename: string, appendSuffix: boolean): string const withoutExtensions = path.parse(filename).name?.split('.')[0]; const withoutInvalidCharacters = withoutExtensions .split('') - // Although "-" is invalid, we leave it in, change-case-handling (pascalCase) will throw it out later + // Although "-" is invalid, we leave it in, change-case-handling will throw it out later .filter((char) => /[A-Za-z$_\d-]/.test(char)) .join(''); const firstValidCharIdx = withoutInvalidCharacters From f13190e870bcbfe8a20d48660e0ba56c04e83ad6 Mon Sep 17 00:00:00 2001 From: jycouet Date: Mon, 10 Mar 2025 10:57:44 +0100 Subject: [PATCH 03/14] linting --- .../src/svelte2tsx/addComponentExport.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts b/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts index 295e0520b..92f26b4c7 100644 --- a/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts +++ b/packages/svelte2tsx/src/svelte2tsx/addComponentExport.ts @@ -142,7 +142,8 @@ class __sveltets_Render${genericsDef} { `export type ${PropsName}${genericsDef} = ${returnType('props')};\n` + `export type ${EventsName}${genericsDef} = ${returnType('events')};\n` + `export type ${SlotsName}${genericsDef} = ${returnType('slots')};\n` + - `\n${doc}export default class${className ? ` ${className}` : '' + `\n${doc}export default class${ + className ? ` ${className}` : '' }${genericsDef} extends ${svelteComponentClass}<${PropsName}${genericsRef}, ${EventsName}${genericsRef}, ${SlotsName}${genericsRef}> {` + exportedNames.createClassGetters(genericsRef) + (usesAccessors ? exportedNames.createClassAccessors() : '') + @@ -150,7 +151,8 @@ class __sveltets_Render${genericsDef} { } else { statement += `\n\nimport { ${svelteComponentClass} as __SvelteComponentTyped__ } from "svelte" \n` + - `${doc}export default class${className ? ` ${className}` : '' + `${doc}export default class${ + className ? ` ${className}` : '' }${genericsDef} extends __SvelteComponentTyped__<${returnType('props')}, ${returnType( 'events' )}, ${returnType('slots')}> {` + @@ -234,7 +236,8 @@ declare function $$__sveltets_2_isomorphic_component< PropsExport + EventsExport + SlotsExport + - `\n${doc}export default class${className ? ` ${className}` : '' + `\n${doc}export default class${ + className ? ` ${className}` : '' } extends ${svelteComponentClass}<${PropsName}, ${EventsName}, ${SlotsName}> {` + exportedNames.createClassGetters() + (usesAccessors ? exportedNames.createClassAccessors() : '') + @@ -245,7 +248,8 @@ declare function $$__sveltets_2_isomorphic_component< `/** @typedef {typeof __propDef.props} ${className}Props */\n` + `/** @typedef {typeof __propDef.events} ${className}Events */\n` + `/** @typedef {typeof __propDef.slots} ${className}Slots */\n` + - `\n${doc}export default class${className ? ` ${className}` : '' + `\n${doc}export default class${ + className ? ` ${className}` : '' } extends __sveltets_2_createSvelte2TsxComponent(${propDef}) {` + exportedNames.createClassGetters() + (usesAccessors ? exportedNames.createClassAccessors() : '') + @@ -268,7 +272,8 @@ declare function $$__sveltets_2_isomorphic_component< } } else { statement = - `\n\n${doc}export default class${className ? ` ${className}` : '' + `\n\n${doc}export default class${ + className ? ` ${className}` : '' } extends __sveltets_2_createSvelte2TsxComponent(${propDef}) {` + exportedNames.createClassGetters() + (usesAccessors ? exportedNames.createClassAccessors() : '') + From 492ab75aa1f94491c2e9e0769a5e53a700544e11 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 16:15:50 +0100 Subject: [PATCH 04/14] add vitest for svelte2tsx (initial step) --- packages/svelte2tsx/package.json | 12 +- packages/svelte2tsx/test/svelte2tsx/index.ts | 3 +- .../test/vitest/svelte2tsx/index.test.ts | 46 + packages/svelte2tsx/test/vitest/tsconfig.json | 11 + packages/svelte2tsx/vitest.config.ts | 15 + pnpm-lock.yaml | 822 ++++++++++++++++++ 6 files changed, 904 insertions(+), 5 deletions(-) create mode 100644 packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts create mode 100644 packages/svelte2tsx/test/vitest/tsconfig.json create mode 100644 packages/svelte2tsx/vitest.config.ts diff --git a/packages/svelte2tsx/package.json b/packages/svelte2tsx/package.json index 98d835e43..3da5a78d4 100644 --- a/packages/svelte2tsx/package.json +++ b/packages/svelte2tsx/package.json @@ -40,7 +40,8 @@ "svelte": "~4.2.19", "tiny-glob": "^0.2.6", "tslib": "^2.4.0", - "typescript": "^5.8.2" + "typescript": "^5.8.2", + "vitest": "^3.0.8" }, "peerDependencies": { "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", @@ -50,7 +51,10 @@ "build": "rollup -c", "prepublishOnly": "npm run build", "dev": "rollup -c -w", - "test": "mocha test/test.ts" + "test": "npm run test:mocha && npm run test:vitest", + "test:mocha": "mocha test/test.ts", + "test:vitest": "vitest run", + "test:vitest:watch": "vitest" }, "files": [ "index.mjs", @@ -65,7 +69,7 @@ "svelte-shims-v4.d.ts" ], "dependencies": { - "dedent-js": "^1.0.1", - "change-case": "^5.4.4" + "change-case": "^5.4.4", + "dedent-js": "^1.0.1" } } diff --git a/packages/svelte2tsx/test/svelte2tsx/index.ts b/packages/svelte2tsx/test/svelte2tsx/index.ts index d1b66c1f0..e925b1306 100644 --- a/packages/svelte2tsx/test/svelte2tsx/index.ts +++ b/packages/svelte2tsx/test/svelte2tsx/index.ts @@ -1,7 +1,8 @@ import { svelte2tsx } from '../build'; import { get_svelte2tsx_config, test_samples } from '../helpers'; -describe('svelte2tsx', () => { +// done in vitest now +describe.skip('svelte2tsx', () => { test_samples( __dirname, (input, config) => { diff --git a/packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts b/packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts new file mode 100644 index 000000000..d50d52221 --- /dev/null +++ b/packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts @@ -0,0 +1,46 @@ +import path from 'path'; +import { svelte2tsx } from '../../build'; +import { get_svelte2tsx_config, test_samples } from '../../helpers'; + +describe('svelte2tsx basic tests', () => { + it('should transform a simple component', () => { + const input = ` + + + + `; + + const { code } = svelte2tsx(input, { + filename: 'Test.svelte', + isTsFile: false, + emitOnTemplateError: false, + namespace: null, + mode: 'ts', + accessors: false, + typingsNamespace: 'svelteHTML' + }); + + // Basic assertions to verify transformation worked + expect(code).toContain('let count = 0'); + expect(code).toContain('function increment()'); + expect(code).toContain('on:click'); + }); +}); + +describe('svelte2tsx', () => { + const dir = path.join(__dirname, '../../svelte2tsx'); + test_samples( + dir, + (input, config) => { + return svelte2tsx(input, get_svelte2tsx_config(config, config.sampleName)); + }, + 'ts' + ); +}); diff --git a/packages/svelte2tsx/test/vitest/tsconfig.json b/packages/svelte2tsx/test/vitest/tsconfig.json new file mode 100644 index 000000000..7898cf882 --- /dev/null +++ b/packages/svelte2tsx/test/vitest/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "types": ["@types/node", "vitest/globals"], + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true + }, + "exclude": ["samples/**"], + "include": ["**/*.ts"] +} diff --git a/packages/svelte2tsx/vitest.config.ts b/packages/svelte2tsx/vitest.config.ts new file mode 100644 index 000000000..131301dd5 --- /dev/null +++ b/packages/svelte2tsx/vitest.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vitest/config'; +import { resolve } from 'path'; + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + include: ['test/vitest/**/*.test.ts'] + }, + resolve: { + alias: { + svelte2tsx: resolve(__dirname, 'src') + } + } +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be35f42d6..21a753dcb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -301,6 +301,9 @@ importers: typescript: specifier: ^5.8.2 version: 5.8.2 + vitest: + specifier: ^3.0.8 + version: 3.0.8(@types/node@18.19.46) packages/typescript-plugin: dependencies: @@ -340,6 +343,156 @@ packages: '@emmetio/scanner@1.0.4': resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + '@esbuild/aix-ppc64@0.25.1': + resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.1': + resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.1': + resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.1': + resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.1': + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.1': + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.1': + resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.1': + resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.1': + resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.1': + resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.1': + resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.1': + resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.1': + resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.1': + resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.1': + resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.1': + resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.1': + resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.1': + resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.1': + resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.1': + resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.1': + resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.1': + resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.1': + resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.1': + resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.1': + resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + 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 +587,101 @@ packages: rollup: optional: true + '@rollup/rollup-android-arm-eabi@4.35.0': + resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.35.0': + resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.35.0': + resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.35.0': + resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.35.0': + resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.35.0': + resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.35.0': + resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.35.0': + resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.35.0': + resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.35.0': + resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.35.0': + resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.35.0': + resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.35.0': + resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.35.0': + resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.35.0': + resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.35.0': + resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} + cpu: [x64] + os: [win32] + '@sinonjs/commons@1.8.6': resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} @@ -473,6 +721,9 @@ packages: '@types/estree@1.0.1': resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/fs-extra@8.1.2': resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==} @@ -522,6 +773,35 @@ packages: '@ungap/promise-all-settled@1.1.2': resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} + '@vitest/expect@3.0.8': + resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==} + + '@vitest/mocker@3.0.8': + resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.0.8': + resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==} + + '@vitest/runner@3.0.8': + resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==} + + '@vitest/snapshot@3.0.8': + resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==} + + '@vitest/spy@3.0.8': + resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==} + + '@vitest/utils@3.0.8': + resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} + '@vscode/emmet-helper@2.8.4': resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==} @@ -582,6 +862,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 +897,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.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -628,6 +920,10 @@ packages: change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + 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'} @@ -696,6 +992,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + 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'} @@ -703,6 +1008,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'} @@ -737,6 +1046,14 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + esbuild@0.25.1: + resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -763,6 +1080,10 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + expect-type@1.2.0: + resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} + engines: {node: '>=12.0.0'} + fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -974,6 +1295,9 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -988,6 +1312,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 +1360,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.9: + resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nise@5.1.4: resolution: {integrity: sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==} @@ -1077,6 +1409,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.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + perf-regexes@1.0.1: resolution: {integrity: sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==} engines: {node: '>=6.14'} @@ -1090,10 +1429,17 @@ 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'} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + prettier-plugin-svelte@3.3.0: resolution: {integrity: sha512-iNoYiQUx4zwqbQDW/bk0WR75w+QiY4fHJQpGQ5v8Yr7X5m7YoSvs2buUnhoYFXNAL32ULVmrjPSc0vVOHJsO0Q==} peerDependencies: @@ -1157,6 +1503,11 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true + rollup@4.35.0: + resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -1183,6 +1534,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==} @@ -1198,6 +1552,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==} @@ -1212,6 +1570,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.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -1247,6 +1611,24 @@ 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==} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + 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@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -1296,6 +1678,79 @@ packages: vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + vite-node@3.0.8: + resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.2.1: + resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + 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.0.8: + resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} + 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.0.8 + '@vitest/ui': 3.0.8 + 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.2: resolution: {integrity: sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==} @@ -1361,6 +1816,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==} @@ -1419,6 +1879,81 @@ snapshots: '@emmetio/scanner@1.0.4': {} + '@esbuild/aix-ppc64@0.25.1': + optional: true + + '@esbuild/android-arm64@0.25.1': + optional: true + + '@esbuild/android-arm@0.25.1': + optional: true + + '@esbuild/android-x64@0.25.1': + optional: true + + '@esbuild/darwin-arm64@0.25.1': + optional: true + + '@esbuild/darwin-x64@0.25.1': + optional: true + + '@esbuild/freebsd-arm64@0.25.1': + optional: true + + '@esbuild/freebsd-x64@0.25.1': + optional: true + + '@esbuild/linux-arm64@0.25.1': + optional: true + + '@esbuild/linux-arm@0.25.1': + optional: true + + '@esbuild/linux-ia32@0.25.1': + optional: true + + '@esbuild/linux-loong64@0.25.1': + optional: true + + '@esbuild/linux-mips64el@0.25.1': + optional: true + + '@esbuild/linux-ppc64@0.25.1': + optional: true + + '@esbuild/linux-riscv64@0.25.1': + optional: true + + '@esbuild/linux-s390x@0.25.1': + optional: true + + '@esbuild/linux-x64@0.25.1': + optional: true + + '@esbuild/netbsd-arm64@0.25.1': + optional: true + + '@esbuild/netbsd-x64@0.25.1': + optional: true + + '@esbuild/openbsd-arm64@0.25.1': + optional: true + + '@esbuild/openbsd-x64@0.25.1': + optional: true + + '@esbuild/sunos-x64@0.25.1': + optional: true + + '@esbuild/win32-arm64@0.25.1': + optional: true + + '@esbuild/win32-ia32@0.25.1': + optional: true + + '@esbuild/win32-x64@0.25.1': + optional: true + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -1507,6 +2042,63 @@ snapshots: optionalDependencies: rollup: 3.7.5 + '@rollup/rollup-android-arm-eabi@4.35.0': + optional: true + + '@rollup/rollup-android-arm64@4.35.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.35.0': + optional: true + + '@rollup/rollup-darwin-x64@4.35.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.35.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.35.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.35.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.35.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.35.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.35.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.35.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.35.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.35.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.35.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.35.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.35.0': + optional: true + '@sinonjs/commons@1.8.6': dependencies: type-detect: 4.0.8 @@ -1547,6 +2139,8 @@ snapshots: '@types/estree@1.0.1': {} + '@types/estree@1.0.6': {} + '@types/fs-extra@8.1.2': dependencies: '@types/node': 18.19.46 @@ -1594,6 +2188,46 @@ snapshots: '@ungap/promise-all-settled@1.1.2': {} + '@vitest/expect@3.0.8': + dependencies: + '@vitest/spy': 3.0.8 + '@vitest/utils': 3.0.8 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.0.8(vite@6.2.1(@types/node@18.19.46))': + dependencies: + '@vitest/spy': 3.0.8 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.2.1(@types/node@18.19.46) + + '@vitest/pretty-format@3.0.8': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.0.8': + dependencies: + '@vitest/utils': 3.0.8 + pathe: 2.0.3 + + '@vitest/snapshot@3.0.8': + dependencies: + '@vitest/pretty-format': 3.0.8 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.0.8': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.0.8': + dependencies: + '@vitest/pretty-format': 3.0.8 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + '@vscode/emmet-helper@2.8.4': dependencies: emmet: 2.4.4 @@ -1647,6 +2281,8 @@ snapshots: array-union@2.1.0: {} + assertion-error@2.0.1: {} + axobject-query@4.1.0: {} balanced-match@1.0.2: {} @@ -1672,8 +2308,18 @@ snapshots: builtin-modules@3.3.0: {} + cac@6.7.14: {} + camelcase@6.3.0: {} + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -1687,6 +2333,8 @@ snapshots: change-case@5.4.4: {} + check-error@2.1.1: {} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 @@ -1762,10 +2410,16 @@ snapshots: optionalDependencies: supports-color: 8.1.1 + debug@4.4.0: + 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: @@ -1798,6 +2452,36 @@ snapshots: emoji-regex@8.0.0: {} + es-module-lexer@1.6.0: {} + + esbuild@0.25.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.1 + '@esbuild/android-arm': 0.25.1 + '@esbuild/android-arm64': 0.25.1 + '@esbuild/android-x64': 0.25.1 + '@esbuild/darwin-arm64': 0.25.1 + '@esbuild/darwin-x64': 0.25.1 + '@esbuild/freebsd-arm64': 0.25.1 + '@esbuild/freebsd-x64': 0.25.1 + '@esbuild/linux-arm': 0.25.1 + '@esbuild/linux-arm64': 0.25.1 + '@esbuild/linux-ia32': 0.25.1 + '@esbuild/linux-loong64': 0.25.1 + '@esbuild/linux-mips64el': 0.25.1 + '@esbuild/linux-ppc64': 0.25.1 + '@esbuild/linux-riscv64': 0.25.1 + '@esbuild/linux-s390x': 0.25.1 + '@esbuild/linux-x64': 0.25.1 + '@esbuild/netbsd-arm64': 0.25.1 + '@esbuild/netbsd-x64': 0.25.1 + '@esbuild/openbsd-arm64': 0.25.1 + '@esbuild/openbsd-x64': 0.25.1 + '@esbuild/sunos-x64': 0.25.1 + '@esbuild/win32-arm64': 0.25.1 + '@esbuild/win32-ia32': 0.25.1 + '@esbuild/win32-x64': 0.25.1 + escalade@3.1.1: {} escape-string-regexp@1.0.5: {} @@ -1814,6 +2498,8 @@ snapshots: dependencies: '@types/estree': 1.0.1 + expect-type@1.2.0: {} + fast-glob@3.2.12: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2019,6 +2705,8 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + loupe@3.1.3: {} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 @@ -2035,6 +2723,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: {} @@ -2093,6 +2785,8 @@ snapshots: nanoid@3.3.1: {} + nanoid@3.3.9: {} + nise@5.1.4: dependencies: '@sinonjs/commons': 2.0.0 @@ -2133,6 +2827,10 @@ snapshots: path-type@4.0.0: {} + pathe@2.0.3: {} + + pathval@2.0.0: {} + perf-regexes@1.0.1: {} periscopic@2.0.3: @@ -2148,8 +2846,16 @@ snapshots: picocolors@1.0.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} + postcss@8.5.3: + dependencies: + nanoid: 3.3.9 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prettier-plugin-svelte@3.3.0(prettier@3.3.3)(svelte@4.2.19): dependencies: prettier: 3.3.3 @@ -2209,6 +2915,31 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + rollup@4.35.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.35.0 + '@rollup/rollup-android-arm64': 4.35.0 + '@rollup/rollup-darwin-arm64': 4.35.0 + '@rollup/rollup-darwin-x64': 4.35.0 + '@rollup/rollup-freebsd-arm64': 4.35.0 + '@rollup/rollup-freebsd-x64': 4.35.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 + '@rollup/rollup-linux-arm-musleabihf': 4.35.0 + '@rollup/rollup-linux-arm64-gnu': 4.35.0 + '@rollup/rollup-linux-arm64-musl': 4.35.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 + '@rollup/rollup-linux-riscv64-gnu': 4.35.0 + '@rollup/rollup-linux-s390x-gnu': 4.35.0 + '@rollup/rollup-linux-x64-gnu': 4.35.0 + '@rollup/rollup-linux-x64-musl': 4.35.0 + '@rollup/rollup-win32-arm64-msvc': 4.35.0 + '@rollup/rollup-win32-ia32-msvc': 4.35.0 + '@rollup/rollup-win32-x64-msvc': 4.35.0 + fsevents: 2.3.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -2233,6 +2964,8 @@ snapshots: shebang-regex@3.0.0: {} + siginfo@2.0.0: {} + sinon@11.1.2: dependencies: '@sinonjs/commons': 1.8.6 @@ -2248,6 +2981,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 @@ -2259,6 +2994,10 @@ snapshots: sprintf-js@1.0.3: {} + stackback@0.0.2: {} + + std-env@3.8.1: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -2307,6 +3046,16 @@ snapshots: globalyzer: 0.1.0 globrex: 0.1.2 + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -2354,6 +3103,74 @@ snapshots: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.3 + vite-node@3.0.8(@types/node@18.19.46): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.2.1(@types/node@18.19.46) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.2.1(@types/node@18.19.46): + dependencies: + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.35.0 + optionalDependencies: + '@types/node': 18.19.46 + fsevents: 2.3.3 + + vitest@3.0.8(@types/node@18.19.46): + dependencies: + '@vitest/expect': 3.0.8 + '@vitest/mocker': 3.0.8(vite@6.2.1(@types/node@18.19.46)) + '@vitest/pretty-format': 3.0.8 + '@vitest/runner': 3.0.8 + '@vitest/snapshot': 3.0.8 + '@vitest/spy': 3.0.8 + '@vitest/utils': 3.0.8 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.1 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.2.1(@types/node@18.19.46) + vite-node: 3.0.8(@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.2: dependencies: '@vscode/l10n': 0.0.18 @@ -2425,6 +3242,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: From 19307209592893b741ed2aecda85b5bcae446aeb Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 18:20:32 +0100 Subject: [PATCH 05/14] Let just replace all tests one by one by vitest (don't skip) --- .../svelte2tsx/test/svelte2tsx/index.test.ts | 12 +++++ packages/svelte2tsx/test/svelte2tsx/index.ts | 13 ------ .../test/vitest/svelte2tsx/index.test.ts | 46 ------------------- packages/svelte2tsx/test/vitest/tsconfig.json | 11 ----- packages/svelte2tsx/vitest.config.ts | 2 +- 5 files changed, 13 insertions(+), 71 deletions(-) create mode 100644 packages/svelte2tsx/test/svelte2tsx/index.test.ts delete mode 100644 packages/svelte2tsx/test/svelte2tsx/index.ts delete mode 100644 packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts delete mode 100644 packages/svelte2tsx/test/vitest/tsconfig.json diff --git a/packages/svelte2tsx/test/svelte2tsx/index.test.ts b/packages/svelte2tsx/test/svelte2tsx/index.test.ts new file mode 100644 index 000000000..4225dfe72 --- /dev/null +++ b/packages/svelte2tsx/test/svelte2tsx/index.test.ts @@ -0,0 +1,12 @@ +import { svelte2tsx } from '../build'; +import { get_svelte2tsx_config, test_samples } from '../helpers'; + +describe('svelte2tsx', () => { + test_samples( + __dirname, + (input, config) => { + return svelte2tsx(input, get_svelte2tsx_config(config, config.sampleName)); + }, + 'ts' + ); +}); diff --git a/packages/svelte2tsx/test/svelte2tsx/index.ts b/packages/svelte2tsx/test/svelte2tsx/index.ts deleted file mode 100644 index e925b1306..000000000 --- a/packages/svelte2tsx/test/svelte2tsx/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { svelte2tsx } from '../build'; -import { get_svelte2tsx_config, test_samples } from '../helpers'; - -// done in vitest now -describe.skip('svelte2tsx', () => { - test_samples( - __dirname, - (input, config) => { - return svelte2tsx(input, get_svelte2tsx_config(config, config.sampleName)); - }, - 'ts' - ); -}); diff --git a/packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts b/packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts deleted file mode 100644 index d50d52221..000000000 --- a/packages/svelte2tsx/test/vitest/svelte2tsx/index.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import path from 'path'; -import { svelte2tsx } from '../../build'; -import { get_svelte2tsx_config, test_samples } from '../../helpers'; - -describe('svelte2tsx basic tests', () => { - it('should transform a simple component', () => { - const input = ` - - - - `; - - const { code } = svelte2tsx(input, { - filename: 'Test.svelte', - isTsFile: false, - emitOnTemplateError: false, - namespace: null, - mode: 'ts', - accessors: false, - typingsNamespace: 'svelteHTML' - }); - - // Basic assertions to verify transformation worked - expect(code).toContain('let count = 0'); - expect(code).toContain('function increment()'); - expect(code).toContain('on:click'); - }); -}); - -describe('svelte2tsx', () => { - const dir = path.join(__dirname, '../../svelte2tsx'); - test_samples( - dir, - (input, config) => { - return svelte2tsx(input, get_svelte2tsx_config(config, config.sampleName)); - }, - 'ts' - ); -}); diff --git a/packages/svelte2tsx/test/vitest/tsconfig.json b/packages/svelte2tsx/test/vitest/tsconfig.json deleted file mode 100644 index 7898cf882..000000000 --- a/packages/svelte2tsx/test/vitest/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "types": ["@types/node", "vitest/globals"], - "target": "es6", - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true - }, - "exclude": ["samples/**"], - "include": ["**/*.ts"] -} diff --git a/packages/svelte2tsx/vitest.config.ts b/packages/svelte2tsx/vitest.config.ts index 131301dd5..67fb71f53 100644 --- a/packages/svelte2tsx/vitest.config.ts +++ b/packages/svelte2tsx/vitest.config.ts @@ -5,7 +5,7 @@ export default defineConfig({ test: { globals: true, environment: 'node', - include: ['test/vitest/**/*.test.ts'] + include: ['test/**/*.test.ts'] }, resolve: { alias: { From f424b87d1c7b6497936909580ead93b2cfb9e5a6 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 18:22:46 +0100 Subject: [PATCH 06/14] htmlxparser --- packages/svelte2tsx/test/htmlxparser/{index.ts => index.test.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/svelte2tsx/test/htmlxparser/{index.ts => index.test.ts} (100%) diff --git a/packages/svelte2tsx/test/htmlxparser/index.ts b/packages/svelte2tsx/test/htmlxparser/index.test.ts similarity index 100% rename from packages/svelte2tsx/test/htmlxparser/index.ts rename to packages/svelte2tsx/test/htmlxparser/index.test.ts From 9da4670c5bac2c25b9e33075e730530aab5456ca Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 18:24:20 +0100 Subject: [PATCH 07/14] internal --- packages/svelte2tsx/test/helpers/{index.ts => index.test.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/svelte2tsx/test/helpers/{index.ts => index.test.ts} (100%) diff --git a/packages/svelte2tsx/test/helpers/index.ts b/packages/svelte2tsx/test/helpers/index.test.ts similarity index 100% rename from packages/svelte2tsx/test/helpers/index.ts rename to packages/svelte2tsx/test/helpers/index.test.ts From e973db97f97f27cd5d8e5953f28d615d5456b981 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 18:25:51 +0100 Subject: [PATCH 08/14] html2jsx --- packages/svelte2tsx/test/htmlx2jsx/{index.ts => index.test.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/svelte2tsx/test/htmlx2jsx/{index.ts => index.test.ts} (100%) diff --git a/packages/svelte2tsx/test/htmlx2jsx/index.ts b/packages/svelte2tsx/test/htmlx2jsx/index.test.ts similarity index 100% rename from packages/svelte2tsx/test/htmlx2jsx/index.ts rename to packages/svelte2tsx/test/htmlx2jsx/index.test.ts From 3e1ec1abd205c374f3aa74779f057c52d09bc83e Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 18:29:40 +0100 Subject: [PATCH 09/14] emitDts --- .../svelte2tsx/test/emitDts/{index.ts => index.test.ts} | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) rename packages/svelte2tsx/test/emitDts/{index.ts => index.test.ts} (91%) diff --git a/packages/svelte2tsx/test/emitDts/index.ts b/packages/svelte2tsx/test/emitDts/index.test.ts similarity index 91% rename from packages/svelte2tsx/test/emitDts/index.ts rename to packages/svelte2tsx/test/emitDts/index.test.ts index 50ce050e8..37249e932 100644 --- a/packages/svelte2tsx/test/emitDts/index.ts +++ b/packages/svelte2tsx/test/emitDts/index.test.ts @@ -3,6 +3,7 @@ import * as fs from 'fs'; import { join } from 'path'; import { emitDts } from '../../src'; import { VERSION } from 'svelte/compiler'; +import { describe, it } from 'vitest'; function rimraf(path: string) { ((fs as any).rmSync || fs.rmdirSync)(path, { recursive: true, force: true }); @@ -36,9 +37,9 @@ async function testEmitDts(sample: string) { actual_files.length, expectedFiles.length, 'Contains a different number of files. Expected ' + - expectedFiles.join(',') + - ' , got ' + - actual_files.join(',') + expectedFiles.join(',') + + ' , got ' + + actual_files.join(',') ); for (const file of actual_files) { @@ -69,6 +70,6 @@ describe('emitDts', async () => { let samplesToTest = samples.filter((s) => s.endsWith('.solo')); samplesToTest = samplesToTest.length ? samplesToTest : samples; for (const sample of samplesToTest) { - it(sample, async () => await testEmitDts(sample)).timeout(10000); + it(sample, { timeout: 10000 }, async () => await testEmitDts(sample)); } }); From 8c6128422db974b82025a8b66543b8499cdec775 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 18:36:25 +0100 Subject: [PATCH 10/14] middle --- packages/svelte2tsx/test/helpers.ts | 22 +++++++++---------- .../svelte2tsx/test/htmlx2jsx/index.test.ts | 1 + .../svelte2tsx/test/htmlxparser/index.test.ts | 2 +- packages/svelte2tsx/test/sourcemaps/index.ts | 21 +++++++++--------- .../svelte2tsx/test/svelte2tsx/index.test.ts | 1 + packages/svelte2tsx/vitest.config.ts | 2 +- 6 files changed, 25 insertions(+), 24 deletions(-) diff --git a/packages/svelte2tsx/test/helpers.ts b/packages/svelte2tsx/test/helpers.ts index 9b50f5774..3322bc35c 100644 --- a/packages/svelte2tsx/test/helpers.ts +++ b/packages/svelte2tsx/test/helpers.ts @@ -3,7 +3,8 @@ import assert, { AssertionError } from 'assert'; import { TestFunction } from 'mocha'; import { htmlx2jsx, svelte2tsx } from './build'; import path from 'path'; -import { VERSION } from 'svelte/compiler'; +import { VERSION, parse } from 'svelte/compiler'; +import { describe, it } from 'vitest'; let update_count = 0; let all_tests_skipped = false; @@ -101,17 +102,12 @@ export class Sample { } it(fn: () => void) { - let _it = it; - - if (this.name.startsWith('.')) { - _it = it.skip as TestFunction; - } else if (this.name.endsWith('.solo')) { - _it = it.only as TestFunction; - } + let skip = this.name.startsWith('.') + let only = this.name.endsWith('.solo') const sample = this; - _it(this.name + (this.emitOnTemplateError ? ' (loose parser mode)' : ''), function () { + it(this.name + (this.emitOnTemplateError ? ' (loose parser mode)' : ''), { skip, only }, function () { try { fn(); if (sample.skipped) this.skip(); @@ -276,11 +272,11 @@ export function test_samples(dir: string, transform: TransformSampleFn, js: 'js' const { message, actual } = err; switch (message) { case TestError.WrongExpected: { - generate(expectedFile, actual); + generate(expectedFile, actual as string); break; } case TestError.WrongError: { - generate('expected.error.json', print_error(actual)); + generate('expected.error.json', print_error(actual as Error)); break; } } @@ -376,7 +372,9 @@ export function get_svelte2tsx_config(base: BaseConfig, sampleName: string): Sve typingsNamespace: 'svelteHTML', mode: sampleName.endsWith('-dts') ? 'dts' : 'ts', accessors: sampleName.startsWith('accessors-config'), - version: VERSION + version: VERSION, + parse, + noSvelteComponentTyped: true }; } diff --git a/packages/svelte2tsx/test/htmlx2jsx/index.test.ts b/packages/svelte2tsx/test/htmlx2jsx/index.test.ts index f8439d2ea..154f5f678 100644 --- a/packages/svelte2tsx/test/htmlx2jsx/index.test.ts +++ b/packages/svelte2tsx/test/htmlx2jsx/index.test.ts @@ -1,6 +1,7 @@ import { VERSION, parse } from 'svelte/compiler'; import { htmlx2jsx } from '../build'; import { test_samples } from '../helpers'; +import { describe } from 'vitest'; describe('htmlx2jsx', () => { test_samples( diff --git a/packages/svelte2tsx/test/htmlxparser/index.test.ts b/packages/svelte2tsx/test/htmlxparser/index.test.ts index 9301f1389..8f8dc6a2e 100644 --- a/packages/svelte2tsx/test/htmlxparser/index.test.ts +++ b/packages/svelte2tsx/test/htmlxparser/index.test.ts @@ -2,7 +2,7 @@ import { htmlx2jsx } from '../build'; import assert from 'assert'; import { benchmark } from '../helpers'; import { parse } from 'svelte/compiler'; - +import { describe, it } from 'vitest'; describe('htmlxparser', () => { it('parses in a reasonable time', () => { let random = ''; diff --git a/packages/svelte2tsx/test/sourcemaps/index.ts b/packages/svelte2tsx/test/sourcemaps/index.ts index 08b2f62c4..dad0f25bf 100644 --- a/packages/svelte2tsx/test/sourcemaps/index.ts +++ b/packages/svelte2tsx/test/sourcemaps/index.ts @@ -14,6 +14,7 @@ import { validate_test_file } from './process'; import { VERSION } from 'svelte/compiler'; +import { describe } from 'vitest'; // TODO figure out what to do with those now that we have the new transformation const isSvelte5Plus = Number(VERSION[0]) >= 5; @@ -47,10 +48,10 @@ const isSvelte5Plus = Number(VERSION[0]) >= 5; function (ranges) { throw new Error( `Could not find the following snippets in generated output\n` + - ranges.map((range) => `\t"${print_string(range[2])}"`).join('\n') + - (process.env.CI - ? '' - : `\nTo edit ranges : ${sample.cmd('test.edit.jsx')}`) + ranges.map((range) => `\t"${print_string(range[2])}"`).join('\n') + + (process.env.CI + ? '' + : `\nTo edit ranges : ${sample.cmd('test.edit.jsx')}`) ); } ); @@ -114,9 +115,9 @@ function maybe_generate(sample: Sample, regenerate: (generate: GenerateFn) => vo const err = edit_changed ? 'apply changes made to' : 'generate "test.jsx" from'; throw new Error( '' + - `Failed to ${err} "test.edit.jsx" as it is based on a stale output.\n` + - `\tEither reverse output changes or delete "test.edit.jsx" manually before running tests again\n` + - `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` + `Failed to ${err} "test.edit.jsx" as it is based on a stale output.\n` + + `\tEither reverse output changes or delete "test.edit.jsx" manually before running tests again\n` + + `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` ); }); } @@ -146,9 +147,9 @@ function maybe_generate(sample: Sample, regenerate: (generate: GenerateFn) => vo } throw new Error( '' + - `Test input at "${svelteFile}" changed, thus making "test.jsx" invalid.\n` + - `\tEither manually re-select all tested ranges in the newly generated "test.edit.jsx", delete "test.jsx" or undo input changes.\n` + - `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` + `Test input at "${svelteFile}" changed, thus making "test.jsx" invalid.\n` + + `\tEither manually re-select all tested ranges in the newly generated "test.edit.jsx", delete "test.jsx" or undo input changes.\n` + + `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` ); }); } diff --git a/packages/svelte2tsx/test/svelte2tsx/index.test.ts b/packages/svelte2tsx/test/svelte2tsx/index.test.ts index 4225dfe72..1086b5119 100644 --- a/packages/svelte2tsx/test/svelte2tsx/index.test.ts +++ b/packages/svelte2tsx/test/svelte2tsx/index.test.ts @@ -1,5 +1,6 @@ import { svelte2tsx } from '../build'; import { get_svelte2tsx_config, test_samples } from '../helpers'; +import { describe } from 'vitest'; describe('svelte2tsx', () => { test_samples( diff --git a/packages/svelte2tsx/vitest.config.ts b/packages/svelte2tsx/vitest.config.ts index 67fb71f53..c395bce29 100644 --- a/packages/svelte2tsx/vitest.config.ts +++ b/packages/svelte2tsx/vitest.config.ts @@ -3,7 +3,7 @@ import { resolve } from 'path'; export default defineConfig({ test: { - globals: true, + // globals: true, environment: 'node', include: ['test/**/*.test.ts'] }, From 12dd501db4eef53f87c650271072b1f114ac9eb2 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 18:58:57 +0100 Subject: [PATCH 11/14] middle 2 --- packages/svelte2tsx/package.json | 8 ++------ packages/svelte2tsx/test/helpers.ts | 13 +++++++------ packages/svelte2tsx/test/helpers/index.test.ts | 1 + .../test/sourcemaps/{index.ts => index.test.ts} | 0 packages/svelte2tsx/test/tsconfig.json | 3 +-- pnpm-lock.yaml | 6 ------ 6 files changed, 11 insertions(+), 20 deletions(-) rename packages/svelte2tsx/test/sourcemaps/{index.ts => index.test.ts} (100%) diff --git a/packages/svelte2tsx/package.json b/packages/svelte2tsx/package.json index 3da5a78d4..809dec1c5 100644 --- a/packages/svelte2tsx/package.json +++ b/packages/svelte2tsx/package.json @@ -25,14 +25,12 @@ "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/plugin-typescript": "^10.0.0", "@types/estree": "^0.0.42", - "@types/mocha": "^9.1.0", "@types/node": "^18.0.0", "@types/unist": "^2.0.3", "@types/vfile": "^3.0.2", "builtin-modules": "^3.3.0", "estree-walker": "^2.0.1", "magic-string": "^0.30.11", - "mocha": "^9.2.0", "periscopic": "^2.0.2", "rollup": "3.7.5", "rollup-plugin-delete": "^2.0.0", @@ -51,10 +49,8 @@ "build": "rollup -c", "prepublishOnly": "npm run build", "dev": "rollup -c -w", - "test": "npm run test:mocha && npm run test:vitest", - "test:mocha": "mocha test/test.ts", - "test:vitest": "vitest run", - "test:vitest:watch": "vitest" + "test": "vitest run", + "test:watch": "vitest" }, "files": [ "index.mjs", diff --git a/packages/svelte2tsx/test/helpers.ts b/packages/svelte2tsx/test/helpers.ts index 3322bc35c..6fad2a8b7 100644 --- a/packages/svelte2tsx/test/helpers.ts +++ b/packages/svelte2tsx/test/helpers.ts @@ -1,10 +1,9 @@ import fs from 'fs'; import assert, { AssertionError } from 'assert'; -import { TestFunction } from 'mocha'; import { htmlx2jsx, svelte2tsx } from './build'; import path from 'path'; import { VERSION, parse } from 'svelte/compiler'; -import { describe, it } from 'vitest'; +import { it, afterEach } from 'vitest'; let update_count = 0; let all_tests_skipped = false; @@ -114,15 +113,17 @@ export class Sample { } catch (err) { if (sample.on_error) sample.on_error(sample.generate.bind(sample), err); if (sample.skipped) this.skip(); - this.test.title = sample.cmd(''); + console.log(`sample.cmd('')`, sample.cmd('')) + // TODO JYC + // this.test.title = sample.cmd(''); throw err; } }); } log(...arr: string[]) { - after(function () { - after(function () { + afterEach(function () { + afterEach(function () { console.log(...arr); }); }); @@ -191,7 +192,7 @@ export class Sample { if (action === 'updated' && !can_auto_update()) return; this.skipped = true; } - after(() => { + afterEach(() => { console.log(`\t[${action}] ${color.cyan(file)} ${color.grey(this.cmd(file))}`); writeFileSync(this.at(file), content); }); diff --git a/packages/svelte2tsx/test/helpers/index.test.ts b/packages/svelte2tsx/test/helpers/index.test.ts index 3501429b7..f8d07f6c5 100644 --- a/packages/svelte2tsx/test/helpers/index.test.ts +++ b/packages/svelte2tsx/test/helpers/index.test.ts @@ -1,6 +1,7 @@ import * as assert from 'assert'; import ts from 'typescript'; import { internalHelpers } from '../../src'; +import { describe, it } from 'vitest'; describe('Internal Helpers - upsertKitFile', () => { function upsert(file: string, source: string, expected: string) { diff --git a/packages/svelte2tsx/test/sourcemaps/index.ts b/packages/svelte2tsx/test/sourcemaps/index.test.ts similarity index 100% rename from packages/svelte2tsx/test/sourcemaps/index.ts rename to packages/svelte2tsx/test/sourcemaps/index.test.ts diff --git a/packages/svelte2tsx/test/tsconfig.json b/packages/svelte2tsx/test/tsconfig.json index 1d4d62082..bb65013f3 100644 --- a/packages/svelte2tsx/test/tsconfig.json +++ b/packages/svelte2tsx/test/tsconfig.json @@ -1,11 +1,10 @@ { "compilerOptions": { - "types": ["@types/node", "@types/mocha"], + "types": ["@types/node", "vitest"], "target": "es6", "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true }, - "exclude": ["samples/**"], "include": ["*.ts"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 21a753dcb..13ab3619a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -253,9 +253,6 @@ importers: '@types/estree': specifier: ^0.0.42 version: 0.0.42 - '@types/mocha': - specifier: ^9.1.0 - version: 9.1.1 '@types/node': specifier: ^18.0.0 version: 18.19.46 @@ -274,9 +271,6 @@ importers: magic-string: specifier: ^0.30.11 version: 0.30.11 - mocha: - specifier: ^9.2.0 - version: 9.2.2 periscopic: specifier: ^2.0.2 version: 2.0.3 From 626f0ac037b9bdbc0ed1ead766dc569e5dfa45a6 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 19:03:57 +0100 Subject: [PATCH 12/14] add msg --- packages/svelte2tsx/test/helpers.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/svelte2tsx/test/helpers.ts b/packages/svelte2tsx/test/helpers.ts index 6fad2a8b7..2c1d2b4a6 100644 --- a/packages/svelte2tsx/test/helpers.ts +++ b/packages/svelte2tsx/test/helpers.ts @@ -113,9 +113,9 @@ export class Sample { } catch (err) { if (sample.on_error) sample.on_error(sample.generate.bind(sample), err); if (sample.skipped) this.skip(); - console.log(`sample.cmd('')`, sample.cmd('')) - // TODO JYC - // this.test.title = sample.cmd(''); + if (err instanceof Error) { + err.message = `${sample.cmd('')}\n${err.message}`; + } throw err; } }); From 888b3511f50edea348a5c5366c963f7014930f34 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 19:05:49 +0100 Subject: [PATCH 13/14] linting --- .../svelte2tsx/test/emitDts/index.test.ts | 6 ++-- packages/svelte2tsx/test/helpers.ts | 30 +++++++++++-------- .../svelte2tsx/test/sourcemaps/index.test.ts | 20 ++++++------- .../svelte2tsx/test/svelte2tsx/index.test.ts | 14 ++++----- 4 files changed, 37 insertions(+), 33 deletions(-) diff --git a/packages/svelte2tsx/test/emitDts/index.test.ts b/packages/svelte2tsx/test/emitDts/index.test.ts index 37249e932..4d04f8446 100644 --- a/packages/svelte2tsx/test/emitDts/index.test.ts +++ b/packages/svelte2tsx/test/emitDts/index.test.ts @@ -37,9 +37,9 @@ async function testEmitDts(sample: string) { actual_files.length, expectedFiles.length, 'Contains a different number of files. Expected ' + - expectedFiles.join(',') + - ' , got ' + - actual_files.join(',') + expectedFiles.join(',') + + ' , got ' + + actual_files.join(',') ); for (const file of actual_files) { diff --git a/packages/svelte2tsx/test/helpers.ts b/packages/svelte2tsx/test/helpers.ts index 2c1d2b4a6..1c5d75f0f 100644 --- a/packages/svelte2tsx/test/helpers.ts +++ b/packages/svelte2tsx/test/helpers.ts @@ -101,24 +101,28 @@ export class Sample { } it(fn: () => void) { - let skip = this.name.startsWith('.') - let only = this.name.endsWith('.solo') + let skip = this.name.startsWith('.'); + let only = this.name.endsWith('.solo'); const sample = this; - it(this.name + (this.emitOnTemplateError ? ' (loose parser mode)' : ''), { skip, only }, function () { - try { - fn(); - if (sample.skipped) this.skip(); - } catch (err) { - if (sample.on_error) sample.on_error(sample.generate.bind(sample), err); - if (sample.skipped) this.skip(); - if (err instanceof Error) { - err.message = `${sample.cmd('')}\n${err.message}`; + it( + this.name + (this.emitOnTemplateError ? ' (loose parser mode)' : ''), + { skip, only }, + function () { + try { + fn(); + if (sample.skipped) this.skip(); + } catch (err) { + if (sample.on_error) sample.on_error(sample.generate.bind(sample), err); + if (sample.skipped) this.skip(); + if (err instanceof Error) { + err.message = `${sample.cmd('')}\n${err.message}`; + } + throw err; } - throw err; } - }); + ); } log(...arr: string[]) { diff --git a/packages/svelte2tsx/test/sourcemaps/index.test.ts b/packages/svelte2tsx/test/sourcemaps/index.test.ts index dad0f25bf..8f74bc79c 100644 --- a/packages/svelte2tsx/test/sourcemaps/index.test.ts +++ b/packages/svelte2tsx/test/sourcemaps/index.test.ts @@ -48,10 +48,10 @@ const isSvelte5Plus = Number(VERSION[0]) >= 5; function (ranges) { throw new Error( `Could not find the following snippets in generated output\n` + - ranges.map((range) => `\t"${print_string(range[2])}"`).join('\n') + - (process.env.CI - ? '' - : `\nTo edit ranges : ${sample.cmd('test.edit.jsx')}`) + ranges.map((range) => `\t"${print_string(range[2])}"`).join('\n') + + (process.env.CI + ? '' + : `\nTo edit ranges : ${sample.cmd('test.edit.jsx')}`) ); } ); @@ -115,9 +115,9 @@ function maybe_generate(sample: Sample, regenerate: (generate: GenerateFn) => vo const err = edit_changed ? 'apply changes made to' : 'generate "test.jsx" from'; throw new Error( '' + - `Failed to ${err} "test.edit.jsx" as it is based on a stale output.\n` + - `\tEither reverse output changes or delete "test.edit.jsx" manually before running tests again\n` + - `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` + `Failed to ${err} "test.edit.jsx" as it is based on a stale output.\n` + + `\tEither reverse output changes or delete "test.edit.jsx" manually before running tests again\n` + + `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` ); }); } @@ -147,9 +147,9 @@ function maybe_generate(sample: Sample, regenerate: (generate: GenerateFn) => vo } throw new Error( '' + - `Test input at "${svelteFile}" changed, thus making "test.jsx" invalid.\n` + - `\tEither manually re-select all tested ranges in the newly generated "test.edit.jsx", delete "test.jsx" or undo input changes.\n` + - `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` + `Test input at "${svelteFile}" changed, thus making "test.jsx" invalid.\n` + + `\tEither manually re-select all tested ranges in the newly generated "test.edit.jsx", delete "test.jsx" or undo input changes.\n` + + `\tcmd-click : ${sample.cmd('test.edit.jsx')}\n` ); }); } diff --git a/packages/svelte2tsx/test/svelte2tsx/index.test.ts b/packages/svelte2tsx/test/svelte2tsx/index.test.ts index 1086b5119..973d1c432 100644 --- a/packages/svelte2tsx/test/svelte2tsx/index.test.ts +++ b/packages/svelte2tsx/test/svelte2tsx/index.test.ts @@ -3,11 +3,11 @@ import { get_svelte2tsx_config, test_samples } from '../helpers'; import { describe } from 'vitest'; describe('svelte2tsx', () => { - test_samples( - __dirname, - (input, config) => { - return svelte2tsx(input, get_svelte2tsx_config(config, config.sampleName)); - }, - 'ts' - ); + test_samples( + __dirname, + (input, config) => { + return svelte2tsx(input, get_svelte2tsx_config(config, config.sampleName)); + }, + 'ts' + ); }); From 9274de1e7a20c3059beb747ec165e5145b7bfc29 Mon Sep 17 00:00:00 2001 From: jycouet Date: Tue, 11 Mar 2025 19:09:02 +0100 Subject: [PATCH 14/14] noSvelteComponentTyped: false --- packages/svelte2tsx/test/helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte2tsx/test/helpers.ts b/packages/svelte2tsx/test/helpers.ts index 1c5d75f0f..3a55ad137 100644 --- a/packages/svelte2tsx/test/helpers.ts +++ b/packages/svelte2tsx/test/helpers.ts @@ -379,7 +379,7 @@ export function get_svelte2tsx_config(base: BaseConfig, sampleName: string): Sve accessors: sampleName.startsWith('accessors-config'), version: VERSION, parse, - noSvelteComponentTyped: true + noSvelteComponentTyped: false }; }