diff --git a/CHANGELOG.md b/CHANGELOG.md index cabdbe0e486..f02d36ce6a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [3.5.6](https://github.com/vuejs/core/compare/v3.5.5...v3.5.6) (2024-09-16) + + +### Bug Fixes + +* **compile-dom:** should be able to stringify mathML ([#11891](https://github.com/vuejs/core/issues/11891)) ([85c138c](https://github.com/vuejs/core/commit/85c138ced108268f7656b568dfd3036a1e0aae34)) +* **compiler-sfc:** preserve old behavior when using withDefaults with desutructure ([8492c3c](https://github.com/vuejs/core/commit/8492c3c49a922363d6c77ef192c133a8fbce6514)), closes [#11930](https://github.com/vuejs/core/issues/11930) +* **reactivity:** avoid exponential perf cost and reduce call stack depth for deeply chained computeds ([#11944](https://github.com/vuejs/core/issues/11944)) ([c74bb8c](https://github.com/vuejs/core/commit/c74bb8c2dd9e82aaabb0a2a2b368e900929b513b)), closes [#11928](https://github.com/vuejs/core/issues/11928) +* **reactivity:** rely on dirty check only when computed has deps ([#11931](https://github.com/vuejs/core/issues/11931)) ([aa5dafd](https://github.com/vuejs/core/commit/aa5dafd2b55d42d6a29316a3bc91aea85c676a0b)), closes [#11929](https://github.com/vuejs/core/issues/11929) +* **watch:** `once` option should be ignored by watchEffect ([#11884](https://github.com/vuejs/core/issues/11884)) ([49fa673](https://github.com/vuejs/core/commit/49fa673493d93b77ddba2165ab6545bae84fd1ae)) +* **watch:** unwatch should be callable during SSR ([#11925](https://github.com/vuejs/core/issues/11925)) ([2d6adf7](https://github.com/vuejs/core/commit/2d6adf78a047eed091db277ffbd9df0822fb0bdd)), closes [#11924](https://github.com/vuejs/core/issues/11924) + + + ## [3.5.5](https://github.com/vuejs/core/compare/v3.5.4...v3.5.5) (2024-09-13) diff --git a/package.json b/package.json index b54cd4817f1..9f5737565d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "3.5.5", + "version": "3.5.6", "packageManager": "pnpm@9.10.0", "type": "module", "scripts": { @@ -17,11 +17,11 @@ "format": "prettier --write --cache .", "format-check": "prettier --check --cache .", "test": "vitest", - "test-unit": "vitest -c vitest.unit.config.ts", - "test-e2e": "node scripts/build.js vue -f global -d && vitest -c vitest.e2e.config.ts", + "test-unit": "vitest --project unit", + "test-e2e": "node scripts/build.js vue -f global -d && vitest --project e2e", "test-dts": "run-s build-dts test-dts-only", "test-dts-only": "tsc -p packages-private/dts-built-test/tsconfig.json && tsc -p ./packages-private/dts-test/tsconfig.test.json", - "test-coverage": "vitest run -c vitest.unit.config.ts --coverage", + "test-coverage": "vitest run --project unit --coverage", "test-bench": "vitest bench", "release": "node scripts/release.js", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", @@ -66,19 +66,19 @@ "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "5.0.4", - "@swc/core": "^1.7.24", + "@swc/core": "^1.7.26", "@types/hash-sum": "^1.0.2", "@types/node": "^20.16.5", "@types/semver": "^7.5.8", "@types/serve-handler": "^6.1.4", - "@vitest/coverage-v8": "^2.0.5", + "@vitest/coverage-v8": "^2.1.1", "@vue/consolidate": "1.0.0", "conventional-changelog-cli": "^5.0.0", "enquirer": "^2.4.1", "esbuild": "^0.23.1", "esbuild-plugin-polyfill-node": "^0.3.0", - "eslint": "^9.9.1", - "eslint-plugin-import-x": "^3.1.0", + "eslint": "^9.10.0", + "eslint-plugin-import-x": "^4.2.1", "eslint-plugin-vitest": "^0.5.4", "estree-walker": "catalog:", "jsdom": "^25.0.0", @@ -87,14 +87,14 @@ "magic-string": "^0.30.11", "markdown-table": "^3.0.3", "marked": "13.0.3", - "npm-run-all2": "^6.2.2", + "npm-run-all2": "^6.2.3", "picocolors": "^1.1.0", "prettier": "^3.3.3", "pretty-bytes": "^6.1.1", "pug": "^3.0.3", "puppeteer": "~23.3.0", "rimraf": "^6.0.1", - "rollup": "^4.21.2", + "rollup": "^4.21.3", "rollup-plugin-dts": "^6.1.1", "rollup-plugin-esbuild": "^6.1.1", "rollup-plugin-polyfill-node": "^0.13.0", @@ -105,9 +105,9 @@ "todomvc-app-css": "^2.4.3", "tslib": "^2.7.0", "typescript": "~5.6.2", - "typescript-eslint": "^8.4.0", + "typescript-eslint": "^8.5.0", "vite": "catalog:", - "vitest": "^2.0.5" + "vitest": "^2.1.1" }, "pnpm": { "peerDependencyRules": { diff --git a/packages-private/dts-test/appDirective.test-d.ts b/packages-private/dts-test/appDirective.test-d.ts index 1ac5f64d19a..fb655a039d5 100644 --- a/packages-private/dts-test/appDirective.test-d.ts +++ b/packages-private/dts-test/appDirective.test-d.ts @@ -3,12 +3,17 @@ import { expectType } from './utils' const app = createApp({}) -app.directive('custom', { - mounted(el, binding) { - expectType(el) - expectType(binding.value) +app.directive( + 'custom', + { + mounted(el, binding) { + expectType(el) + expectType(binding.value) + expectType<{ prevent: boolean; stop: boolean }>(binding.modifiers) + expectType<'arg1' | 'arg2'>(binding.arg!) - // @ts-expect-error not any - expectType(binding.value) + // @ts-expect-error not any + expectType(binding.value) + }, }, -}) +) diff --git a/packages-private/global.d.ts b/packages-private/global.d.ts new file mode 100644 index 00000000000..ebc2367f396 --- /dev/null +++ b/packages-private/global.d.ts @@ -0,0 +1,8 @@ +/// + +// Global compile-time constants +declare var __COMMIT__: string + +declare module 'file-saver' { + export function saveAs(blob: any, name: any): void +} diff --git a/packages-private/sfc-playground/package.json b/packages-private/sfc-playground/package.json index 2d1db99fab2..51175417ddf 100644 --- a/packages-private/sfc-playground/package.json +++ b/packages-private/sfc-playground/package.json @@ -13,7 +13,7 @@ "vite": "catalog:" }, "dependencies": { - "@vue/repl": "^4.4.0", + "@vue/repl": "^4.4.2", "file-saver": "^2.0.5", "jszip": "^3.10.1", "vue": "workspace:*" diff --git a/packages-private/sfc-playground/src/download/template/package.json b/packages-private/sfc-playground/src/download/template/package.json index c67f6c35a20..662ac5da8c9 100644 --- a/packages-private/sfc-playground/src/download/template/package.json +++ b/packages-private/sfc-playground/src/download/template/package.json @@ -12,6 +12,6 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^5.1.3", - "vite": "^5.4.3" + "vite": "^5.4.5" } } diff --git a/packages-private/template-explorer/package.json b/packages-private/template-explorer/package.json index 03260c964ab..a5ad38c1ad8 100644 --- a/packages-private/template-explorer/package.json +++ b/packages-private/template-explorer/package.json @@ -12,6 +12,6 @@ }, "dependencies": { "monaco-editor": "^0.51.0", - "source-map-js": "^1.2.0" + "source-map-js": "^1.2.1" } } diff --git a/packages/compiler-core/package.json b/packages/compiler-core/package.json index 7ccc2efb194..8388512c656 100644 --- a/packages/compiler-core/package.json +++ b/packages/compiler-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-core", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/compiler-core", "main": "index.js", "module": "dist/compiler-core.esm-bundler.js", diff --git a/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts b/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts index 7530a59fa4f..a35b5223198 100644 --- a/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts +++ b/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts @@ -389,6 +389,24 @@ describe('stringify static html', () => { ]) }) + test('should stringify mathML', () => { + const math = `` + const repeated = `1` + const { ast } = compileWithStringify( + `
${math}${repeat( + repeated, + StringifyThresholds.NODE_COUNT, + )}
`, + ) + + expect(ast.cached).toMatchObject([ + cachedArrayStaticNodeMatcher( + `${math}${repeat(repeated, StringifyThresholds.NODE_COUNT)}`, + 1, + ), + ]) + }) + // #5439 test('stringify v-html', () => { const { code } = compileWithStringify(` diff --git a/packages/compiler-dom/package.json b/packages/compiler-dom/package.json index 37bc4c6b13a..650bdce3aeb 100644 --- a/packages/compiler-dom/package.json +++ b/packages/compiler-dom/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-dom", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/compiler-dom", "main": "index.js", "module": "dist/compiler-dom.esm-bundler.js", diff --git a/packages/compiler-dom/src/transforms/stringifyStatic.ts b/packages/compiler-dom/src/transforms/stringifyStatic.ts index bb3d26e817b..a608ea3c4b3 100644 --- a/packages/compiler-dom/src/transforms/stringifyStatic.ts +++ b/packages/compiler-dom/src/transforms/stringifyStatic.ts @@ -24,6 +24,7 @@ import { isArray, isBooleanAttr, isKnownHtmlAttr, + isKnownMathMLAttr, isKnownSvgAttr, isString, isSymbol, @@ -190,7 +191,9 @@ const isStringifiableAttr = (name: string, ns: Namespaces) => { ? isKnownHtmlAttr(name) : ns === Namespaces.SVG ? isKnownSvgAttr(name) - : false) || dataAriaRE.test(name) + : ns === Namespaces.MATH_ML + ? isKnownMathMLAttr(name) + : false) || dataAriaRE.test(name) ) } diff --git a/packages/compiler-sfc/__tests__/compileScript/definePropsDestructure.spec.ts b/packages/compiler-sfc/__tests__/compileScript/definePropsDestructure.spec.ts index 6202f427b52..106e469f188 100644 --- a/packages/compiler-sfc/__tests__/compileScript/definePropsDestructure.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/definePropsDestructure.spec.ts @@ -378,14 +378,15 @@ describe('sfc reactive props destructure', () => { ).toThrow(`destructure cannot use computed key`) }) - test('should error when used with withDefaults', () => { - expect(() => - compile( - ``, - ), - ).toThrow(`withDefaults() is unnecessary when using destructure`) + test('should warn when used with withDefaults', () => { + compile( + ``, + ) + expect( + `withDefaults() is unnecessary when using destructure`, + ).toHaveBeenWarned() }) test('should error if destructure reference local vars', () => { diff --git a/packages/compiler-sfc/package.json b/packages/compiler-sfc/package.json index 52ba641b328..3c0ff76e3ff 100644 --- a/packages/compiler-sfc/package.json +++ b/packages/compiler-sfc/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-sfc", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/compiler-sfc", "main": "dist/compiler-sfc.cjs.js", "module": "dist/compiler-sfc.esm-browser.js", @@ -49,7 +49,7 @@ "@vue/shared": "workspace:*", "estree-walker": "catalog:", "magic-string": "catalog:", - "postcss": "^8.4.44", + "postcss": "^8.4.47", "source-map-js": "catalog:" }, "devDependencies": { diff --git a/packages/compiler-sfc/src/script/context.ts b/packages/compiler-sfc/src/script/context.ts index 91ba0d74884..47b6b442a49 100644 --- a/packages/compiler-sfc/src/script/context.ts +++ b/packages/compiler-sfc/src/script/context.ts @@ -8,6 +8,7 @@ import type { ModelDecl } from './defineModel' import type { BindingMetadata } from '../../../compiler-core/src' import MagicString from 'magic-string' import type { TypeScope } from './resolveType' +import { warn } from '../warn' export class ScriptCompileContext { isJS: boolean @@ -145,20 +146,31 @@ export class ScriptCompileContext { return block.content.slice(node.start!, node.end!) } + warn(msg: string, node: Node, scope?: TypeScope): void { + warn(generateError(msg, node, this, scope)) + } + error(msg: string, node: Node, scope?: TypeScope): never { - const offset = scope ? scope.offset : this.startOffset! throw new Error( - `[@vue/compiler-sfc] ${msg}\n\n${ - (scope || this.descriptor).filename - }\n${generateCodeFrame( - (scope || this.descriptor).source, - node.start! + offset, - node.end! + offset, - )}`, + `[@vue/compiler-sfc] ${generateError(msg, node, this, scope)}`, ) } } +function generateError( + msg: string, + node: Node, + ctx: ScriptCompileContext, + scope?: TypeScope, +) { + const offset = scope ? scope.offset : ctx.startOffset! + return `${msg}\n\n${(scope || ctx.descriptor).filename}\n${generateCodeFrame( + (scope || ctx.descriptor).source, + node.start! + offset, + node.end! + offset, + )}` +} + export function resolveParserPlugins( lang: string, userPlugins?: ParserPlugin[], diff --git a/packages/compiler-sfc/src/script/defineProps.ts b/packages/compiler-sfc/src/script/defineProps.ts index 6e2032c415a..9a4880a1a54 100644 --- a/packages/compiler-sfc/src/script/defineProps.ts +++ b/packages/compiler-sfc/src/script/defineProps.ts @@ -48,6 +48,7 @@ export function processDefineProps( ctx: ScriptCompileContext, node: Node, declId?: LVal, + isWithDefaults = false, ): boolean { if (!isCallOf(node, DEFINE_PROPS)) { return processWithDefaults(ctx, node, declId) @@ -81,7 +82,7 @@ export function processDefineProps( } // handle props destructure - if (declId && declId.type === 'ObjectPattern') { + if (!isWithDefaults && declId && declId.type === 'ObjectPattern') { processPropsDestructure(ctx, declId) } @@ -99,7 +100,14 @@ function processWithDefaults( if (!isCallOf(node, WITH_DEFAULTS)) { return false } - if (!processDefineProps(ctx, node.arguments[0], declId)) { + if ( + !processDefineProps( + ctx, + node.arguments[0], + declId, + true /* isWithDefaults */, + ) + ) { ctx.error( `${WITH_DEFAULTS}' first argument must be a ${DEFINE_PROPS} call.`, node.arguments[0] || node, @@ -113,10 +121,11 @@ function processWithDefaults( node, ) } - if (ctx.propsDestructureDecl) { - ctx.error( + if (declId && declId.type === 'ObjectPattern') { + ctx.warn( `${WITH_DEFAULTS}() is unnecessary when using destructure with ${DEFINE_PROPS}().\n` + - `Prefer using destructure default values, e.g. const { foo = 1 } = defineProps(...).`, + `Reactive destructure will be disabled when using withDefaults().\n` + + `Prefer using destructure default values, e.g. const { foo = 1 } = defineProps(...). `, node.callee, ) } diff --git a/packages/compiler-ssr/package.json b/packages/compiler-ssr/package.json index e4bc5891b1d..8dece634be2 100644 --- a/packages/compiler-ssr/package.json +++ b/packages/compiler-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-ssr", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/compiler-ssr", "main": "dist/compiler-ssr.cjs.js", "types": "dist/compiler-ssr.d.ts", diff --git a/packages/global.d.ts b/packages/global.d.ts index 79b55171384..8b627d2e556 100644 --- a/packages/global.d.ts +++ b/packages/global.d.ts @@ -1,5 +1,3 @@ -/// - // Global compile-time constants declare var __DEV__: boolean declare var __TEST__: boolean @@ -9,7 +7,6 @@ declare var __ESM_BUNDLER__: boolean declare var __ESM_BROWSER__: boolean declare var __CJS__: boolean declare var __SSR__: boolean -declare var __COMMIT__: string declare var __VERSION__: string declare var __COMPAT__: boolean @@ -21,10 +18,6 @@ declare var __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__: boolean declare module '*.vue' {} -declare module 'file-saver' { - export function saveAs(blob: any, name: any): void -} - declare module 'estree-walker' { export function walk( root: T, diff --git a/packages/reactivity/__tests__/computed.spec.ts b/packages/reactivity/__tests__/computed.spec.ts index e0b47cf56eb..543c9c6e770 100644 --- a/packages/reactivity/__tests__/computed.spec.ts +++ b/packages/reactivity/__tests__/computed.spec.ts @@ -23,6 +23,7 @@ import { ref, shallowRef, toRaw, + triggerRef, } from '../src' import { EffectFlags, pauseTracking, resetTracking } from '../src/effect' import type { ComputedRef, ComputedRefImpl } from '../src/computed' @@ -1004,4 +1005,10 @@ describe('reactivity/computed', () => { await nextTick() expect(serializeInner(root)).toBe(`

Step 2

`) }) + + it('manual trigger computed', () => { + const cValue = computed(() => 1) + triggerRef(cValue) + expect(cValue.value).toBe(1) + }) }) diff --git a/packages/reactivity/__tests__/watch.spec.ts b/packages/reactivity/__tests__/watch.spec.ts index c8d48543fb1..b3d18e19f71 100644 --- a/packages/reactivity/__tests__/watch.spec.ts +++ b/packages/reactivity/__tests__/watch.spec.ts @@ -193,4 +193,20 @@ describe('watch', () => { scope.stop() expect(calls).toEqual(['sync 2', 'post 2']) }) + + test('once option should be ignored by simple watch', async () => { + let dummy: any + const source = ref(0) + watch( + () => { + dummy = source.value + }, + null, + { once: true }, + ) + expect(dummy).toBe(0) + + source.value++ + expect(dummy).toBe(1) + }) }) diff --git a/packages/reactivity/package.json b/packages/reactivity/package.json index 599a5456819..1f13447352b 100644 --- a/packages/reactivity/package.json +++ b/packages/reactivity/package.json @@ -1,6 +1,6 @@ { "name": "@vue/reactivity", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/reactivity", "main": "index.js", "module": "dist/reactivity.esm-bundler.js", diff --git a/packages/reactivity/src/computed.ts b/packages/reactivity/src/computed.ts index a5f8e5a3c2b..b16b011c5b7 100644 --- a/packages/reactivity/src/computed.ts +++ b/packages/reactivity/src/computed.ts @@ -5,6 +5,7 @@ import { EffectFlags, type Subscriber, activeSub, + batch, refreshComputed, } from './effect' import type { Ref } from './ref' @@ -109,11 +110,15 @@ export class ComputedRefImpl implements Subscriber { /** * @internal */ - notify(): void { + notify(): true | void { this.flags |= EffectFlags.DIRTY - // avoid infinite self recursion - if (activeSub !== this) { - this.dep.notify() + if ( + !(this.flags & EffectFlags.NOTIFIED) && + // avoid infinite self recursion + activeSub !== this + ) { + batch(this) + return true } else if (__DEV__) { // TODO warn } diff --git a/packages/reactivity/src/dep.ts b/packages/reactivity/src/dep.ts index 8e4ad1e649e..c24f123ded4 100644 --- a/packages/reactivity/src/dep.ts +++ b/packages/reactivity/src/dep.ts @@ -163,11 +163,7 @@ export class Dep { // original order at the end of the batch, but onTrigger hooks should // be invoked in original order here. for (let head = this.subsHead; head; head = head.nextSub) { - if ( - __DEV__ && - head.sub.onTrigger && - !(head.sub.flags & EffectFlags.NOTIFIED) - ) { + if (head.sub.onTrigger && !(head.sub.flags & EffectFlags.NOTIFIED)) { head.sub.onTrigger( extend( { @@ -180,7 +176,12 @@ export class Dep { } } for (let link = this.subs; link; link = link.prevSub) { - link.sub.notify() + if (link.sub.notify()) { + // if notify() returns `true`, this is a computed. Also call notify + // on its dep - it's called here instead of inside computed's notify + // in order to reduce call stack depth. + ;(link.sub as ComputedRefImpl).dep.notify() + } } } finally { endBatch() diff --git a/packages/reactivity/src/effect.ts b/packages/reactivity/src/effect.ts index 0c05e060755..b8dd62a0f6e 100644 --- a/packages/reactivity/src/effect.ts +++ b/packages/reactivity/src/effect.ts @@ -39,6 +39,9 @@ export interface ReactiveEffectRunner { export let activeSub: Subscriber | undefined export enum EffectFlags { + /** + * ReactiveEffect only + */ ACTIVE = 1 << 0, RUNNING = 1 << 1, TRACKING = 1 << 2, @@ -69,7 +72,13 @@ export interface Subscriber extends DebuggerOptions { /** * @internal */ - notify(): void + next?: Subscriber + /** + * returning `true` indicates it's a computed that needs to call notify + * on its dep too + * @internal + */ + notify(): true | void } const pausedQueueEffects = new WeakSet() @@ -92,7 +101,7 @@ export class ReactiveEffect /** * @internal */ - nextEffect?: ReactiveEffect = undefined + next?: Subscriber = undefined /** * @internal */ @@ -134,9 +143,7 @@ export class ReactiveEffect return } if (!(this.flags & EffectFlags.NOTIFIED)) { - this.flags |= EffectFlags.NOTIFIED - this.nextEffect = batchedEffect - batchedEffect = this + batch(this) } } @@ -226,7 +233,13 @@ export class ReactiveEffect // } let batchDepth = 0 -let batchedEffect: ReactiveEffect | undefined +let batchedSub: Subscriber | undefined + +export function batch(sub: Subscriber): void { + sub.flags |= EffectFlags.NOTIFIED + sub.next = batchedSub + batchedSub = sub +} /** * @internal @@ -245,16 +258,17 @@ export function endBatch(): void { } let error: unknown - while (batchedEffect) { - let e: ReactiveEffect | undefined = batchedEffect - batchedEffect = undefined + while (batchedSub) { + let e: Subscriber | undefined = batchedSub + batchedSub = undefined while (e) { - const next: ReactiveEffect | undefined = e.nextEffect - e.nextEffect = undefined + const next: Subscriber | undefined = e.next + e.next = undefined e.flags &= ~EffectFlags.NOTIFIED if (e.flags & EffectFlags.ACTIVE) { try { - e.trigger() + // ACTIVE flag is effect-only + ;(e as ReactiveEffect).trigger() } catch (err) { if (!error) error = err } @@ -311,8 +325,9 @@ function isDirty(sub: Subscriber): boolean { for (let link = sub.deps; link; link = link.nextDep) { if ( link.dep.version !== link.version || - (link.dep.computed && refreshComputed(link.dep.computed)) || - link.dep.version !== link.version + (link.dep.computed && + (refreshComputed(link.dep.computed) || + link.dep.version !== link.version)) ) { return true } @@ -351,7 +366,12 @@ export function refreshComputed(computed: ComputedRefImpl): undefined { // and therefore tracks no deps, thus we cannot rely on the dirty check. // Instead, computed always re-evaluate and relies on the globalVersion // fast path above for caching. - if (dep.version > 0 && !computed.isSSR && !isDirty(computed)) { + if ( + dep.version > 0 && + !computed.isSSR && + computed.deps && + !isDirty(computed) + ) { computed.flags &= ~EffectFlags.RUNNING return } diff --git a/packages/reactivity/src/watch.ts b/packages/reactivity/src/watch.ts index ceda454a568..073bf88b93f 100644 --- a/packages/reactivity/src/watch.ts +++ b/packages/reactivity/src/watch.ts @@ -218,19 +218,11 @@ export function watch( } } - if (once) { - if (cb) { - const _cb = cb - cb = (...args) => { - _cb(...args) - watchHandle() - } - } else { - const _getter = getter - getter = () => { - _getter() - watchHandle() - } + if (once && cb) { + const _cb = cb + cb = (...args) => { + _cb(...args) + watchHandle() } } diff --git a/packages/runtime-core/__tests__/apiWatch.spec.ts b/packages/runtime-core/__tests__/apiWatch.spec.ts index 7a800949eea..082d585b852 100644 --- a/packages/runtime-core/__tests__/apiWatch.spec.ts +++ b/packages/runtime-core/__tests__/apiWatch.spec.ts @@ -37,6 +37,7 @@ import { toRef, triggerRef, } from '@vue/reactivity' +import { renderToString } from '@vue/server-renderer' describe('api: watch', () => { it('effect', async () => { @@ -373,6 +374,43 @@ describe('api: watch', () => { expect(dummy).toBe(0) }) + it('stopping the watcher (SSR)', async () => { + let dummy = 0 + const count = ref(1) + const captureValue = (value: number) => { + dummy = value + } + const watchCallback = vi.fn(newValue => { + captureValue(newValue) + }) + const Comp = defineComponent({ + created() { + const getter = () => this.count + captureValue(getter()) // sets dummy to 1 + const stop = this.$watch(getter, watchCallback) + stop() + this.count = 2 // shouldn't trigger side effect + }, + render() { + return h('div', this.count) + }, + setup() { + return { count } + }, + }) + let html + html = await renderToString(h(Comp)) + // should not throw here + expect(html).toBe(`
2
`) + expect(watchCallback).not.toHaveBeenCalled() + expect(dummy).toBe(1) + await nextTick() + count.value = 3 // shouldn't trigger side effect + await nextTick() + expect(watchCallback).not.toHaveBeenCalled() + expect(dummy).toBe(1) + }) + it('stopping the watcher (with source)', async () => { const state = reactive({ count: 0 }) let dummy diff --git a/packages/runtime-core/__tests__/components/Teleport.spec.ts b/packages/runtime-core/__tests__/components/Teleport.spec.ts index d2532a6db7c..5dc333ad690 100644 --- a/packages/runtime-core/__tests__/components/Teleport.spec.ts +++ b/packages/runtime-core/__tests__/components/Teleport.spec.ts @@ -111,12 +111,10 @@ describe('renderer: teleport', () => { root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) + expect(serializeInner(target)).toBe(`
teleported
`) }) test('should work with SVG', async () => { @@ -142,8 +140,8 @@ describe('renderer: teleport', () => { await nextTick() - expect(root.innerHTML).toMatchInlineSnapshot( - `""`, + expect(root.innerHTML).toBe( + ``, ) expect(svg.value.namespaceURI).toBe('http://www.w3.org/2000/svg') @@ -164,24 +162,20 @@ describe('renderer: teleport', () => { root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) - expect(serializeInner(targetA)).toMatchInlineSnapshot( - `"
teleported
"`, - ) - expect(serializeInner(targetB)).toMatchInlineSnapshot(`""`) + expect(serializeInner(targetA)).toBe(`
teleported
`) + expect(serializeInner(targetB)).toBe(``) target.value = targetB await nextTick() - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, - ) - expect(serializeInner(targetA)).toMatchInlineSnapshot(`""`) - expect(serializeInner(targetB)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) + expect(serializeInner(targetA)).toBe(``) + expect(serializeInner(targetB)).toBe(`
teleported
`) }) test('should update children', async () => { @@ -193,19 +187,17 @@ describe('renderer: teleport', () => { h(() => h(Teleport, { to: target }, children.value)), root, ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
"`, - ) + expect(serializeInner(target)).toBe(`
teleported
`) children.value = [] await nextTick() - expect(serializeInner(target)).toMatchInlineSnapshot(`""`) + expect(serializeInner(target)).toBe(``) children.value = [createVNode(Text, null, 'teleported')] await nextTick() - expect(serializeInner(target)).toMatchInlineSnapshot(`"teleported"`) + expect(serializeInner(target)).toBe(`teleported`) }) test('should remove children when unmounted', () => { @@ -220,8 +212,8 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(target)).toMatchInlineSnapshot( - props.disabled ? `""` : `"
teleported
"`, + expect(serializeInner(target)).toBe( + props.disabled ? `` : `
teleported
`, ) render(null, root) @@ -248,7 +240,7 @@ describe('renderer: teleport', () => { h(() => [h(Teleport, { to: target }, h(Comp)), h('div', 'root')]), root, ) - expect(serializeInner(target)).toMatchInlineSnapshot(`"

"`) + expect(serializeInner(target)).toBe(`

`) render(null, root) expect(serializeInner(target)).toBe('') @@ -291,12 +283,10 @@ describe('renderer: teleport', () => { root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
one
two"`, + expect(serializeInner(root)).toBe( + `
`, ) + expect(serializeInner(target)).toBe(`
one
two`) // update existing content render( @@ -306,16 +296,14 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
one
two
three"`, - ) + expect(serializeInner(target)).toBe(`
one
two
three`) // toggling render(h('div', [null, h(Teleport, { to: target }, 'three')]), root) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
"`, + expect(serializeInner(root)).toBe( + `
`, ) - expect(serializeInner(target)).toMatchInlineSnapshot(`"three"`) + expect(serializeInner(target)).toBe(`three`) // toggle back render( @@ -325,13 +313,11 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
"`, + expect(serializeInner(root)).toBe( + `
`, ) // should append - expect(serializeInner(target)).toMatchInlineSnapshot( - `"three
one
two
"`, - ) + expect(serializeInner(target)).toBe(`three
one
two
`) // toggle the other teleport render( @@ -341,12 +327,10 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
one
two
"`, + expect(serializeInner(root)).toBe( + `
`, ) + expect(serializeInner(target)).toBe(`
one
two
`) }) test('should work when using template ref as target', async () => { @@ -368,14 +352,14 @@ describe('renderer: teleport', () => { }, } render(h(App), root) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
teleported
`, ) disabled.value = false await nextTick() - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
teleported
`, ) }) @@ -391,27 +375,23 @@ describe('renderer: teleport', () => { } render(renderWithDisabled(false), root) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) + expect(serializeInner(target)).toBe(`
teleported
`) render(renderWithDisabled(true), root) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
teleported
root
"`, + expect(serializeInner(root)).toBe( + `
teleported
root
`, ) expect(serializeInner(target)).toBe(``) // toggle back render(renderWithDisabled(false), root) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) + expect(serializeInner(target)).toBe(`
teleported
`) }) test('moving teleport while enabled', () => { @@ -425,12 +405,10 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) + expect(serializeInner(target)).toBe(`
teleported
`) render( h(Fragment, [ @@ -439,12 +417,10 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) + expect(serializeInner(target)).toBe(`
teleported
`) render( h(Fragment, [ @@ -453,12 +429,10 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, - ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) + expect(serializeInner(target)).toBe(`
teleported
`) }) test('moving teleport while disabled', () => { @@ -472,8 +446,8 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
teleported
root
"`, + expect(serializeInner(root)).toBe( + `
teleported
root
`, ) expect(serializeInner(target)).toBe('') @@ -484,8 +458,8 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
teleported
"`, + expect(serializeInner(root)).toBe( + `
root
teleported
`, ) expect(serializeInner(target)).toBe('') @@ -496,8 +470,8 @@ describe('renderer: teleport', () => { ]), root, ) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
teleported
root
"`, + expect(serializeInner(root)).toBe( + `
teleported
root
`, ) expect(serializeInner(target)).toBe('') }) @@ -522,28 +496,28 @@ describe('renderer: teleport', () => { `), } render(h(App), root) - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
false"`, + expect(serializeInner(target)).toBe( + `
teleported
false`, ) disabled.value = true await nextTick() - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
teleported
true
root
"`, + expect(serializeInner(root)).toBe( + `
teleported
true
root
`, ) expect(serializeInner(target)).toBe(``) // toggle back disabled.value = false await nextTick() - expect(serializeInner(root)).toMatchInlineSnapshot( - `"
root
"`, + expect(serializeInner(root)).toBe( + `
root
`, ) - expect(serializeInner(target)).toMatchInlineSnapshot( - `"
teleported
false"`, + expect(serializeInner(target)).toBe( + `
teleported
false`, ) }) @@ -570,18 +544,18 @@ describe('renderer: teleport', () => { }) app.mount(root) - expect(serializeInner(root)).toMatchInlineSnapshot( - `""`, + expect(serializeInner(root)).toBe( + ``, ) - expect(serializeInner(target)).toMatchInlineSnapshot(`"
foo
"`) + expect(serializeInner(target)).toBe(`
foo
`) await nextTick() expect(dir.mounted).toHaveBeenCalledTimes(1) expect(dir.unmounted).toHaveBeenCalledTimes(0) toggle.value = false await nextTick() - expect(serializeInner(root)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target)).toMatchInlineSnapshot(`""`) + expect(serializeInner(root)).toBe(``) + expect(serializeInner(target)).toBe(``) expect(dir.mounted).toHaveBeenCalledTimes(1) expect(dir.unmounted).toHaveBeenCalledTimes(1) }) @@ -610,33 +584,29 @@ describe('renderer: teleport', () => { render(h(App), root) disabled.value = false await nextTick() - expect(serializeInner(target1)).toMatchInlineSnapshot( - `"
teleported
"`, - ) - expect(serializeInner(target2)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target3)).toMatchInlineSnapshot(`""`) + expect(serializeInner(target1)).toBe(`
teleported
`) + expect(serializeInner(target2)).toBe(``) + expect(serializeInner(target3)).toBe(``) disabled.value = true await nextTick() target.value = target2 await nextTick() - expect(serializeInner(target1)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target2)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target3)).toMatchInlineSnapshot(`""`) + expect(serializeInner(target1)).toBe(``) + expect(serializeInner(target2)).toBe(``) + expect(serializeInner(target3)).toBe(``) target.value = target3 await nextTick() - expect(serializeInner(target1)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target2)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target3)).toMatchInlineSnapshot(`""`) + expect(serializeInner(target1)).toBe(``) + expect(serializeInner(target2)).toBe(``) + expect(serializeInner(target3)).toBe(``) disabled.value = false await nextTick() - expect(serializeInner(target1)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target2)).toMatchInlineSnapshot(`""`) - expect(serializeInner(target3)).toMatchInlineSnapshot( - `"
teleported
"`, - ) + expect(serializeInner(target1)).toBe(``) + expect(serializeInner(target2)).toBe(``) + expect(serializeInner(target3)).toBe(`
teleported
`) }) //#9071 @@ -654,19 +624,19 @@ describe('renderer: teleport', () => { }) domRender(h(App), root) - expect(root.innerHTML).toMatchInlineSnapshot('"
foo
"') + expect(root.innerHTML).toBe('
foo
') show.value = true await nextTick() - expect(root.innerHTML).toMatchInlineSnapshot( - '"
teleported
"', + expect(root.innerHTML).toBe( + '
teleported
', ) show.value = false await nextTick() - expect(root.innerHTML).toMatchInlineSnapshot('"
foo
"') + expect(root.innerHTML).toBe('
foo
') }) test('unmount previous sibling node inside target node', async () => { @@ -693,17 +663,17 @@ describe('renderer: teleport', () => { }) domRender(h(App), root) - expect(root.innerHTML).toMatchInlineSnapshot('""') + expect(root.innerHTML).toBe('') parentShow.value = true await nextTick() - expect(root.innerHTML).toMatchInlineSnapshot( - '"
foo
"', + expect(root.innerHTML).toBe( + '
foo
', ) parentShow.value = false await nextTick() - expect(root.innerHTML).toMatchInlineSnapshot('""') + expect(root.innerHTML).toBe('') }) test('accessing template refs inside teleport', async () => { diff --git a/packages/runtime-core/package.json b/packages/runtime-core/package.json index ce16bc2b912..1e27c134bfc 100644 --- a/packages/runtime-core/package.json +++ b/packages/runtime-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/runtime-core", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/runtime-core", "main": "index.js", "module": "dist/runtime-core.esm-bundler.js", diff --git a/packages/runtime-core/src/apiCreateApp.ts b/packages/runtime-core/src/apiCreateApp.ts index 7c016e12fcf..3d53716de08 100644 --- a/packages/runtime-core/src/apiCreateApp.ts +++ b/packages/runtime-core/src/apiCreateApp.ts @@ -46,8 +46,23 @@ export interface App { name: string, component: T, ): this - directive(name: string): Directive | undefined - directive(name: string, directive: Directive): this + directive< + HostElement = any, + Value = any, + Modifiers extends string = string, + Arg extends string = string, + >( + name: string, + ): Directive | undefined + directive< + HostElement = any, + Value = any, + Modifiers extends string = string, + Arg extends string = string, + >( + name: string, + directive: Directive, + ): this mount( rootContainer: HostElement | string, /** diff --git a/packages/runtime-core/src/apiWatch.ts b/packages/runtime-core/src/apiWatch.ts index a14823beb62..798b6e7261b 100644 --- a/packages/runtime-core/src/apiWatch.ts +++ b/packages/runtime-core/src/apiWatch.ts @@ -179,11 +179,11 @@ function doWatch( // immediately watch or watchEffect baseWatchOptions.once = true } else { - return { - stop: NOOP, - resume: NOOP, - pause: NOOP, - } as WatchHandle + const watchStopHandle = () => {} + watchStopHandle.stop = NOOP + watchStopHandle.resume = NOOP + watchStopHandle.pause = NOOP + return watchStopHandle } } diff --git a/packages/runtime-dom/package.json b/packages/runtime-dom/package.json index 1665bedf77d..3a08374b3f2 100644 --- a/packages/runtime-dom/package.json +++ b/packages/runtime-dom/package.json @@ -1,6 +1,6 @@ { "name": "@vue/runtime-dom", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/runtime-dom", "main": "index.js", "module": "dist/runtime-dom.esm-bundler.js", diff --git a/packages/server-renderer/package.json b/packages/server-renderer/package.json index a287dd48cc2..17620341791 100644 --- a/packages/server-renderer/package.json +++ b/packages/server-renderer/package.json @@ -1,6 +1,6 @@ { "name": "@vue/server-renderer", - "version": "3.5.5", + "version": "3.5.6", "description": "@vue/server-renderer", "main": "index.js", "module": "dist/server-renderer.esm-bundler.js", diff --git a/packages/shared/package.json b/packages/shared/package.json index 0e4b646bdbc..9fd392c2f90 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@vue/shared", - "version": "3.5.5", + "version": "3.5.6", "description": "internal utils shared across @vue packages", "main": "index.js", "module": "dist/shared.esm-bundler.js", diff --git a/packages/shared/src/domAttrConfig.ts b/packages/shared/src/domAttrConfig.ts index e62a3c2ef49..b5f0166327f 100644 --- a/packages/shared/src/domAttrConfig.ts +++ b/packages/shared/src/domAttrConfig.ts @@ -123,6 +123,25 @@ export const isKnownSvgAttr: (key: string) => boolean = /*@__PURE__*/ makeMap( `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`, ) +/** + * Generated from https://developer.mozilla.org/en-US/docs/Web/MathML/Attribute + */ +export const isKnownMathMLAttr: (key: string) => boolean = + /*@__PURE__*/ makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,` + + `altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,` + + `columnspan,denomalign,depth,dir,display,displaystyle,encoding,` + + `equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,` + + `groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,` + + `indentshift,indentshiftfirst,indentshiftlast,indextype,justify,` + + `largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,` + + `mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,` + + `rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,` + + `scriptsizemultiplier,selection,separator,separators,shift,side,` + + `src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,` + + `voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`, + ) + /** * Shared between server-renderer and runtime-core hydration logic */ diff --git a/packages/vue-compat/package.json b/packages/vue-compat/package.json index 3ad7eb28786..64916af6e48 100644 --- a/packages/vue-compat/package.json +++ b/packages/vue-compat/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compat", - "version": "3.5.5", + "version": "3.5.6", "description": "Vue 3 compatibility build for Vue 2", "main": "index.js", "module": "dist/vue.runtime.esm-bundler.js", diff --git a/packages/vue/package.json b/packages/vue/package.json index b987ce3a7de..ae971603f2a 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "vue", - "version": "3.5.5", + "version": "3.5.6", "description": "The progressive JavaScript framework for building modern web UI.", "main": "index.js", "module": "dist/vue.runtime.esm-bundler.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9fea8228a1..5b9eba0248e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,22 +40,22 @@ importers: version: 7.25.2 '@rollup/plugin-alias': specifier: ^5.1.0 - version: 5.1.0(rollup@4.21.2) + version: 5.1.0(rollup@4.21.3) '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.21.2) + version: 26.0.1(rollup@4.21.3) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.21.2) + version: 6.1.0(rollup@4.21.3) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.21.2) + version: 15.2.3(rollup@4.21.3) '@rollup/plugin-replace': specifier: 5.0.4 - version: 5.0.4(rollup@4.21.2) + version: 5.0.4(rollup@4.21.3) '@swc/core': - specifier: ^1.7.24 - version: 1.7.24 + specifier: ^1.7.26 + version: 1.7.26 '@types/hash-sum': specifier: ^1.0.2 version: 1.0.2 @@ -69,8 +69,8 @@ importers: specifier: ^6.1.4 version: 6.1.4 '@vitest/coverage-v8': - specifier: ^2.0.5 - version: 2.0.5(vitest@2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0)) + specifier: ^2.1.1 + version: 2.1.1(vitest@2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0)) '@vue/consolidate': specifier: 1.0.0 version: 1.0.0 @@ -87,14 +87,14 @@ importers: specifier: ^0.3.0 version: 0.3.0(esbuild@0.23.1) eslint: - specifier: ^9.9.1 - version: 9.9.1 + specifier: ^9.10.0 + version: 9.10.0 eslint-plugin-import-x: - specifier: ^3.1.0 - version: 3.1.0(eslint@9.9.1)(typescript@5.6.2) + specifier: ^4.2.1 + version: 4.2.1(eslint@9.10.0)(typescript@5.6.2) eslint-plugin-vitest: specifier: ^0.5.4 - version: 0.5.4(eslint@9.9.1)(typescript@5.6.2)(vitest@2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0)) + version: 0.5.4(eslint@9.10.0)(typescript@5.6.2)(vitest@2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0)) estree-walker: specifier: 'catalog:' version: 2.0.2 @@ -117,8 +117,8 @@ importers: specifier: 13.0.3 version: 13.0.3 npm-run-all2: - specifier: ^6.2.2 - version: 6.2.2 + specifier: ^6.2.3 + version: 6.2.3 picocolors: specifier: ^1.1.0 version: 1.1.0 @@ -138,17 +138,17 @@ importers: specifier: ^6.0.1 version: 6.0.1 rollup: - specifier: ^4.21.2 - version: 4.21.2 + specifier: ^4.21.3 + version: 4.21.3 rollup-plugin-dts: specifier: ^6.1.1 - version: 6.1.1(rollup@4.21.2)(typescript@5.6.2) + version: 6.1.1(rollup@4.21.3)(typescript@5.6.2) rollup-plugin-esbuild: specifier: ^6.1.1 - version: 6.1.1(esbuild@0.23.1)(rollup@4.21.2) + version: 6.1.1(esbuild@0.23.1)(rollup@4.21.3) rollup-plugin-polyfill-node: specifier: ^0.13.0 - version: 0.13.0(rollup@4.21.2) + version: 0.13.0(rollup@4.21.3) semver: specifier: ^7.6.3 version: 7.6.3 @@ -171,14 +171,14 @@ importers: specifier: ~5.6.2 version: 5.6.2 typescript-eslint: - specifier: ^8.4.0 - version: 8.4.0(eslint@9.9.1)(typescript@5.6.2) + specifier: ^8.5.0 + version: 8.5.0(eslint@9.10.0)(typescript@5.6.2) vite: specifier: 'catalog:' version: 5.4.0(@types/node@20.16.5)(sass@1.78.0) vitest: - specifier: ^2.0.5 - version: 2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0) + specifier: ^2.1.1 + version: 2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0) packages-private/dts-built-test: dependencies: @@ -204,8 +204,8 @@ importers: packages-private/sfc-playground: dependencies: '@vue/repl': - specifier: ^4.4.0 - version: 4.4.0 + specifier: ^4.4.2 + version: 4.4.2 file-saver: specifier: ^2.0.5 version: 2.0.5 @@ -229,8 +229,8 @@ importers: specifier: ^0.51.0 version: 0.51.0 source-map-js: - specifier: ^1.2.0 - version: 1.2.0 + specifier: ^1.2.1 + version: 1.2.1 packages-private/vite-debug: devDependencies: @@ -299,8 +299,8 @@ importers: specifier: 'catalog:' version: 0.30.11 postcss: - specifier: ^8.4.44 - version: 8.4.44 + specifier: ^8.4.47 + version: 8.4.47 source-map-js: specifier: 'catalog:' version: 1.2.0 @@ -325,7 +325,7 @@ importers: version: 9.0.5 postcss-modules: specifier: ^6.0.0 - version: 6.0.0(postcss@8.4.44) + version: 6.0.0(postcss@8.4.47) postcss-selector-parser: specifier: ^6.1.2 version: 6.1.2 @@ -784,14 +784,18 @@ packages: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.9.1': - resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + '@eslint/js@9.10.0': + resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.1.0': + resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -922,8 +926,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.21.2': - resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} + '@rollup/rollup-android-arm-eabi@4.21.3': + resolution: {integrity: sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==} cpu: [arm] os: [android] @@ -932,8 +936,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.21.2': - resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} + '@rollup/rollup-android-arm64@4.21.3': + resolution: {integrity: sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==} cpu: [arm64] os: [android] @@ -942,8 +946,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.21.2': - resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} + '@rollup/rollup-darwin-arm64@4.21.3': + resolution: {integrity: sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==} cpu: [arm64] os: [darwin] @@ -952,8 +956,8 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.21.2': - resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} + '@rollup/rollup-darwin-x64@4.21.3': + resolution: {integrity: sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==} cpu: [x64] os: [darwin] @@ -961,99 +965,117 @@ packages: resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': - resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} + '@rollup/rollup-linux-arm-gnueabihf@4.21.3': + resolution: {integrity: sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.20.0': resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.21.2': - resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} + '@rollup/rollup-linux-arm-musleabihf@4.21.3': + resolution: {integrity: sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.20.0': resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.21.2': - resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} + '@rollup/rollup-linux-arm64-gnu@4.21.3': + resolution: {integrity: sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.20.0': resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} cpu: [arm64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.21.2': - resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} + '@rollup/rollup-linux-arm64-musl@4.21.3': + resolution: {integrity: sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} cpu: [ppc64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': - resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.21.3': + resolution: {integrity: sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.20.0': resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.21.2': - resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} + '@rollup/rollup-linux-riscv64-gnu@4.21.3': + resolution: {integrity: sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.20.0': resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.21.2': - resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} + '@rollup/rollup-linux-s390x-gnu@4.21.3': + resolution: {integrity: sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.20.0': resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.21.2': - resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} + '@rollup/rollup-linux-x64-gnu@4.21.3': + resolution: {integrity: sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.20.0': resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} cpu: [x64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-x64-musl@4.21.2': - resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} + '@rollup/rollup-linux-x64-musl@4.21.3': + resolution: {integrity: sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.20.0': resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.21.2': - resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} + '@rollup/rollup-win32-arm64-msvc@4.21.3': + resolution: {integrity: sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==} cpu: [arm64] os: [win32] @@ -1062,8 +1084,8 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.21.2': - resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} + '@rollup/rollup-win32-ia32-msvc@4.21.3': + resolution: {integrity: sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==} cpu: [ia32] os: [win32] @@ -1072,73 +1094,77 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.21.2': - resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} + '@rollup/rollup-win32-x64-msvc@4.21.3': + resolution: {integrity: sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==} cpu: [x64] os: [win32] - '@swc/core-darwin-arm64@1.7.24': - resolution: {integrity: sha512-s0k09qAcsoa8jIncwgRRd43VApYqXu28R4OmICtDffV4S01HtsRLRarXsMuLutoZk3tbxqitep+A8MPBuqNgdg==} + '@swc/core-darwin-arm64@1.7.26': + resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.7.24': - resolution: {integrity: sha512-1dlsulJ/fiOoJoJyQgaCewIEaZ7Sh6aJN4r5Uhl4lIZuNWa27XOb28A3K29/6HDO9JML3IJrvXPnl5o0vxDQuQ==} + '@swc/core-darwin-x64@1.7.26': + resolution: {integrity: sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.7.24': - resolution: {integrity: sha512-2ft1NmxyvHCu5CY4r2rNVybPqZtJaxpRSzvCcPlVjN/2D5Q3QgM5kBoo1t+0RCFfk4TS2V0KWJhtqKz0CNX62Q==} + '@swc/core-linux-arm-gnueabihf@1.7.26': + resolution: {integrity: sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.24': - resolution: {integrity: sha512-v/Z8I9tUUNkNHKa1Sw4r1Q7Wp66ezbRhe6xMIxvPNKVJQFaMOsRpe0t8T5qbk5sV2hJGOCKpQynSpZqQXLcJDQ==} + '@swc/core-linux-arm64-gnu@1.7.26': + resolution: {integrity: sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [glibc] - '@swc/core-linux-arm64-musl@1.7.24': - resolution: {integrity: sha512-0jJx0IcajcyOXaJsx1jXy86lYVrbupyy2VUj/OiJux/ic4oBJLjfL+WOuc8T8/hZj2p6X0X4jvfSCqWSuic4kA==} + '@swc/core-linux-arm64-musl@1.7.26': + resolution: {integrity: sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [musl] - '@swc/core-linux-x64-gnu@1.7.24': - resolution: {integrity: sha512-2+3aKQpSGjVnWKDTKUPuJzitQlTQrGorg+PVFMRkv6l+RcNCHZQNe/8VYpMhyBhxDMb3LUlbp7776FRevcruxg==} + '@swc/core-linux-x64-gnu@1.7.26': + resolution: {integrity: sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [glibc] - '@swc/core-linux-x64-musl@1.7.24': - resolution: {integrity: sha512-PMQ6SkCtMoj0Ks77DiishpEmIuHpYjFLDuVOzzJCzGeGoii0yRP5lKy/VeglFYLPqJzmhK9BHlpVehVf/8ZpvA==} + '@swc/core-linux-x64-musl@1.7.26': + resolution: {integrity: sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [musl] - '@swc/core-win32-arm64-msvc@1.7.24': - resolution: {integrity: sha512-SNdCa4DtGXNWrPVHqctVUxgEVZVETuqERpqF50KFHO0Bvf5V/m1IJ4hFr2BxXlrzgnIW4t1Dpi6YOJbcGbEmnA==} + '@swc/core-win32-arm64-msvc@1.7.26': + resolution: {integrity: sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.24': - resolution: {integrity: sha512-5p3olHqwibMfrVFg2yVuSIPh9HArDYYlJXNZ9JKqeZk23A19J1pl9MuPmXDw+sxsiPfYJ/nUedIGeUHPF/+EDw==} + '@swc/core-win32-ia32-msvc@1.7.26': + resolution: {integrity: sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.7.24': - resolution: {integrity: sha512-gRyPIxDznS8d2ClfmWbytjp2d48bij6swHnDLWhukNuOvXdQkEmaIzjEsionFG/zhcFLnz8zKfTvjEjInAMzxg==} + '@swc/core-win32-x64-msvc@1.7.26': + resolution: {integrity: sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.7.24': - resolution: {integrity: sha512-FzJaai6z6DYdICAY1UKNN5pzTn296ksK2zzEjjaXlpZtoMkGktWT0ttS7hbdBCPGhLOu5Q9TA2zdPejKUFjgig==} + '@swc/core@1.7.26': + resolution: {integrity: sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -1182,8 +1208,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.4.0': - resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} + '@typescript-eslint/eslint-plugin@8.5.0': + resolution: {integrity: sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1193,8 +1219,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.4.0': - resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} + '@typescript-eslint/parser@8.5.0': + resolution: {integrity: sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1207,12 +1233,12 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.4.0': - resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} + '@typescript-eslint/scope-manager@8.5.0': + resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.4.0': - resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} + '@typescript-eslint/type-utils@8.5.0': + resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1224,8 +1250,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.4.0': - resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} + '@typescript-eslint/types@8.5.0': + resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@7.18.0': @@ -1237,8 +1263,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.4.0': - resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} + '@typescript-eslint/typescript-estree@8.5.0': + resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1252,8 +1278,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.4.0': - resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} + '@typescript-eslint/utils@8.5.0': + resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1262,8 +1288,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.4.0': - resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} + '@typescript-eslint/visitor-keys@8.5.0': + resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-vue@5.1.2': @@ -1273,35 +1299,51 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/coverage-v8@2.0.5': - resolution: {integrity: sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==} + '@vitest/coverage-v8@2.1.1': + resolution: {integrity: sha512-md/A7A3c42oTT8JUHSqjP5uKTWJejzUW4jalpvs+rZ27gsURsMU8DEb+8Jf8C6Kj2gwfSHJqobDNBuoqlm0cFw==} peerDependencies: - vitest: 2.0.5 + '@vitest/browser': 2.1.1 + vitest: 2.1.1 + peerDependenciesMeta: + '@vitest/browser': + optional: true - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@vitest/expect@2.1.1': + resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + '@vitest/mocker@2.1.1': + resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} + peerDependencies: + '@vitest/spy': 2.1.1 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@2.1.1': + resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} - '@vitest/runner@2.0.5': - resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} + '@vitest/runner@2.1.1': + resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} - '@vitest/snapshot@2.0.5': - resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} + '@vitest/snapshot@2.1.1': + resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + '@vitest/spy@2.1.1': + resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + '@vitest/utils@2.1.1': + resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} '@vue/consolidate@1.0.0': resolution: {integrity: sha512-oTyUE+QHIzLw2PpV14GD/c7EohDyP64xCniWTcqcEmTd699eFqTIwOmtDYjcO1j3QgdXoJEoWv1/cCdLrRoOfg==} engines: {node: '>= 0.12.0'} - '@vue/repl@4.4.0': - resolution: {integrity: sha512-caOSbxYOIY7AOYYqc0SJe8BKaFhwmLy3v3wpxWyzumCMH3W2rk6/j0MjZ+9D8dK0zefhJ2dWl+oetg6HmDQqxg==} + '@vue/repl@4.4.2': + resolution: {integrity: sha512-MEAsBK/YzMFGINOBzqM40XTeIYAUsg7CqvXvD5zi0rhYEQrPfEUIdexmMjdm7kVKsKmcvIHxrFK2DFC35m9kHw==} '@zeit/schemas@2.36.0': resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} @@ -1850,11 +1892,11 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-import-x@3.1.0: - resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} - engines: {node: '>=16'} + eslint-plugin-import-x@4.2.1: + resolution: {integrity: sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 || ^9.0.0-0 + eslint: ^8.57.0 || ^9.0.0 eslint-plugin-vitest@0.5.4: resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} @@ -1881,8 +1923,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.9.1: - resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + eslint@9.10.0: + resolution: {integrity: sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2467,10 +2509,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -2571,8 +2609,8 @@ packages: resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-run-all2@6.2.2: - resolution: {integrity: sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==} + npm-run-all2@6.2.3: + resolution: {integrity: sha512-5RsxC7jEc/RjxOYBVdEfrJf5FsJ0pHA7jr2/OxrThXknajETCTYjigOCG3iaGjdYIKEQlDuCG0ir0T1HTva8pg==} engines: {node: ^14.18.0 || ^16.13.0 || >=18.0.0, npm: '>= 8'} hasBin: true @@ -2749,8 +2787,8 @@ packages: resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.44: - resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2946,8 +2984,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.21.2: - resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} + rollup@4.21.3: + resolution: {integrity: sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3055,6 +3093,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@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -3177,6 +3219,9 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinypool@1.0.0: resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3236,8 +3281,8 @@ packages: typed-query-selector@2.12.0: resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} - typescript-eslint@8.4.0: - resolution: {integrity: sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==} + typescript-eslint@8.5.0: + resolution: {integrity: sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -3300,8 +3345,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-node@2.0.5: - resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} + vite-node@2.1.1: + resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3336,15 +3381,15 @@ packages: terser: optional: true - vitest@2.0.5: - resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} + vitest@2.1.1: + resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.0.5 - '@vitest/ui': 2.0.5 + '@vitest/browser': 2.1.1 + '@vitest/ui': 2.1.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3655,9 +3700,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0)': dependencies: - eslint: 9.9.1 + eslint: 9.10.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} @@ -3684,10 +3729,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.9.1': {} + '@eslint/js@9.10.0': {} '@eslint/object-schema@2.1.4': {} + '@eslint/plugin-kit@0.1.0': + dependencies: + levn: 0.4.1 + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.0': {} @@ -3752,204 +3801,204 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-alias@5.1.0(rollup@4.21.2)': + '@rollup/plugin-alias@5.1.0(rollup@4.21.3)': dependencies: slash: 4.0.0 optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 - '@rollup/plugin-commonjs@26.0.1(rollup@4.21.2)': + '@rollup/plugin-commonjs@26.0.1(rollup@4.21.3)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) commondir: 1.0.1 estree-walker: 2.0.2 glob: 10.4.5 is-reference: 1.2.1 magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 - '@rollup/plugin-inject@5.0.5(rollup@4.21.2)': + '@rollup/plugin-inject@5.0.5(rollup@4.21.3)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) estree-walker: 2.0.2 magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 - '@rollup/plugin-json@6.1.0(rollup@4.21.2)': + '@rollup/plugin-json@6.1.0(rollup@4.21.3)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.2)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.3)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 - '@rollup/plugin-replace@5.0.4(rollup@4.21.2)': + '@rollup/plugin-replace@5.0.4(rollup@4.21.3)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 - '@rollup/pluginutils@5.1.0(rollup@4.21.2)': + '@rollup/pluginutils@5.1.0(rollup@4.21.3)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.21.2 + rollup: 4.21.3 '@rollup/rollup-android-arm-eabi@4.20.0': optional: true - '@rollup/rollup-android-arm-eabi@4.21.2': + '@rollup/rollup-android-arm-eabi@4.21.3': optional: true '@rollup/rollup-android-arm64@4.20.0': optional: true - '@rollup/rollup-android-arm64@4.21.2': + '@rollup/rollup-android-arm64@4.21.3': optional: true '@rollup/rollup-darwin-arm64@4.20.0': optional: true - '@rollup/rollup-darwin-arm64@4.21.2': + '@rollup/rollup-darwin-arm64@4.21.3': optional: true '@rollup/rollup-darwin-x64@4.20.0': optional: true - '@rollup/rollup-darwin-x64@4.21.2': + '@rollup/rollup-darwin-x64@4.21.3': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.20.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + '@rollup/rollup-linux-arm-gnueabihf@4.21.3': optional: true '@rollup/rollup-linux-arm-musleabihf@4.20.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.21.2': + '@rollup/rollup-linux-arm-musleabihf@4.21.3': optional: true '@rollup/rollup-linux-arm64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.21.2': + '@rollup/rollup-linux-arm64-gnu@4.21.3': optional: true '@rollup/rollup-linux-arm64-musl@4.20.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.21.2': + '@rollup/rollup-linux-arm64-musl@4.21.3': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.21.3': optional: true '@rollup/rollup-linux-riscv64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.21.2': + '@rollup/rollup-linux-riscv64-gnu@4.21.3': optional: true '@rollup/rollup-linux-s390x-gnu@4.20.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.21.2': + '@rollup/rollup-linux-s390x-gnu@4.21.3': optional: true '@rollup/rollup-linux-x64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.21.2': + '@rollup/rollup-linux-x64-gnu@4.21.3': optional: true '@rollup/rollup-linux-x64-musl@4.20.0': optional: true - '@rollup/rollup-linux-x64-musl@4.21.2': + '@rollup/rollup-linux-x64-musl@4.21.3': optional: true '@rollup/rollup-win32-arm64-msvc@4.20.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.21.2': + '@rollup/rollup-win32-arm64-msvc@4.21.3': optional: true '@rollup/rollup-win32-ia32-msvc@4.20.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.21.2': + '@rollup/rollup-win32-ia32-msvc@4.21.3': optional: true '@rollup/rollup-win32-x64-msvc@4.20.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.21.2': + '@rollup/rollup-win32-x64-msvc@4.21.3': optional: true - '@swc/core-darwin-arm64@1.7.24': + '@swc/core-darwin-arm64@1.7.26': optional: true - '@swc/core-darwin-x64@1.7.24': + '@swc/core-darwin-x64@1.7.26': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.24': + '@swc/core-linux-arm-gnueabihf@1.7.26': optional: true - '@swc/core-linux-arm64-gnu@1.7.24': + '@swc/core-linux-arm64-gnu@1.7.26': optional: true - '@swc/core-linux-arm64-musl@1.7.24': + '@swc/core-linux-arm64-musl@1.7.26': optional: true - '@swc/core-linux-x64-gnu@1.7.24': + '@swc/core-linux-x64-gnu@1.7.26': optional: true - '@swc/core-linux-x64-musl@1.7.24': + '@swc/core-linux-x64-musl@1.7.26': optional: true - '@swc/core-win32-arm64-msvc@1.7.24': + '@swc/core-win32-arm64-msvc@1.7.26': optional: true - '@swc/core-win32-ia32-msvc@1.7.24': + '@swc/core-win32-ia32-msvc@1.7.26': optional: true - '@swc/core-win32-x64-msvc@1.7.24': + '@swc/core-win32-x64-msvc@1.7.26': optional: true - '@swc/core@1.7.24': + '@swc/core@1.7.26': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.12 optionalDependencies: - '@swc/core-darwin-arm64': 1.7.24 - '@swc/core-darwin-x64': 1.7.24 - '@swc/core-linux-arm-gnueabihf': 1.7.24 - '@swc/core-linux-arm64-gnu': 1.7.24 - '@swc/core-linux-arm64-musl': 1.7.24 - '@swc/core-linux-x64-gnu': 1.7.24 - '@swc/core-linux-x64-musl': 1.7.24 - '@swc/core-win32-arm64-msvc': 1.7.24 - '@swc/core-win32-ia32-msvc': 1.7.24 - '@swc/core-win32-x64-msvc': 1.7.24 + '@swc/core-darwin-arm64': 1.7.26 + '@swc/core-darwin-x64': 1.7.26 + '@swc/core-linux-arm-gnueabihf': 1.7.26 + '@swc/core-linux-arm64-gnu': 1.7.26 + '@swc/core-linux-arm64-musl': 1.7.26 + '@swc/core-linux-x64-gnu': 1.7.26 + '@swc/core-linux-x64-musl': 1.7.26 + '@swc/core-win32-arm64-msvc': 1.7.26 + '@swc/core-win32-ia32-msvc': 1.7.26 + '@swc/core-win32-x64-msvc': 1.7.26 '@swc/counter@0.1.3': {} @@ -3984,15 +4033,15 @@ snapshots: '@types/node': 20.16.5 optional: true - '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.6.2))(eslint@9.9.1)(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.4.0 - eslint: 9.9.1 + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 + eslint: 9.10.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -4002,14 +4051,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.6.2)': + '@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.6 - eslint: 9.9.1 + eslint: 9.10.0 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -4020,15 +4069,15 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.4.0': + '@typescript-eslint/scope-manager@8.5.0': dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 - '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1)(typescript@5.6.2)': + '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -4039,7 +4088,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.4.0': {} + '@typescript-eslint/types@8.5.0': {} '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2)': dependencies: @@ -4056,10 +4105,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.4.0(typescript@5.6.2)': + '@typescript-eslint/typescript-estree@8.5.0(typescript@5.6.2)': dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.6 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -4071,24 +4120,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.9.1)(typescript@5.6.2)': + '@typescript-eslint/utils@7.18.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) - eslint: 9.9.1 + eslint: 9.10.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.4.0(eslint@9.9.1)(typescript@5.6.2)': + '@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.2) - eslint: 9.9.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + eslint: 9.10.0 transitivePeerDependencies: - supports-color - typescript @@ -4098,9 +4147,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.4.0': + '@typescript-eslint/visitor-keys@8.5.0': dependencies: - '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/types': 8.5.0 eslint-visitor-keys: 3.4.3 '@vitejs/plugin-vue@5.1.2(vite@5.4.0(@types/node@20.16.5)(sass@1.78.0))(vue@packages+vue)': @@ -4108,7 +4157,7 @@ snapshots: vite: 5.4.0(@types/node@20.16.5)(sass@1.78.0) vue: link:packages/vue - '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0))': + '@vitest/coverage-v8@2.1.1(vitest@2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -4122,46 +4171,53 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0) + vitest: 2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0) transitivePeerDependencies: - supports-color - '@vitest/expect@2.0.5': + '@vitest/expect@2.1.1': dependencies: - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.0.5': + '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.0(@types/node@20.16.5)(sass@1.78.0))': + dependencies: + '@vitest/spy': 2.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.11 + optionalDependencies: + vite: 5.4.0(@types/node@20.16.5)(sass@1.78.0) + + '@vitest/pretty-format@2.1.1': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.0.5': + '@vitest/runner@2.1.1': dependencies: - '@vitest/utils': 2.0.5 + '@vitest/utils': 2.1.1 pathe: 1.1.2 - '@vitest/snapshot@2.0.5': + '@vitest/snapshot@2.1.1': dependencies: - '@vitest/pretty-format': 2.0.5 + '@vitest/pretty-format': 2.1.1 magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@2.0.5': + '@vitest/spy@2.1.1': dependencies: tinyspy: 3.0.0 - '@vitest/utils@2.0.5': + '@vitest/utils@2.1.1': dependencies: - '@vitest/pretty-format': 2.0.5 - estree-walker: 3.0.3 + '@vitest/pretty-format': 2.1.1 loupe: 3.1.1 tinyrainbow: 1.2.0 '@vue/consolidate@1.0.0': {} - '@vue/repl@4.4.0': {} + '@vue/repl@4.4.2': {} '@zeit/schemas@2.36.0': {} @@ -4744,12 +4800,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@3.1.0(eslint@9.9.1)(typescript@5.6.2): + eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) debug: 4.3.6 doctrine: 3.0.0 - eslint: 9.9.1 + eslint: 9.10.0 eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.6 is-glob: 4.0.3 @@ -4761,12 +4817,12 @@ snapshots: - supports-color - typescript - eslint-plugin-vitest@0.5.4(eslint@9.9.1)(typescript@5.6.2)(vitest@2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0)): + eslint-plugin-vitest@0.5.4(eslint@9.10.0)(typescript@5.6.2)(vitest@2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0)): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.9.1)(typescript@5.6.2) - eslint: 9.9.1 + '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + eslint: 9.10.0 optionalDependencies: - vitest: 2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0) + vitest: 2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0) transitivePeerDependencies: - supports-color - typescript @@ -4780,13 +4836,14 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.9.1: + eslint@9.10.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.9.1 + '@eslint/js': 9.10.0 + '@eslint/plugin-kit': 0.1.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -4809,7 +4866,6 @@ snapshots: is-glob: 4.0.3 is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 @@ -4891,7 +4947,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} @@ -5118,9 +5174,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.4.44): + icss-utils@5.1.0(postcss@8.4.47): dependencies: - postcss: 8.4.44 + postcss: 8.4.47 ieee754@1.2.1: {} @@ -5402,7 +5458,7 @@ snapshots: dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 make-dir@4.0.0: dependencies: @@ -5424,11 +5480,6 @@ snapshots: merge2@1.4.1: {} - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -5500,7 +5551,7 @@ snapshots: npm-normalize-package-bin@3.0.1: {} - npm-run-all2@6.2.2: + npm-run-all2@6.2.3: dependencies: ansi-styles: 6.2.1 cross-spawn: 7.0.3 @@ -5638,37 +5689,37 @@ snapshots: pidtree@0.6.0: {} - postcss-modules-extract-imports@3.1.0(postcss@8.4.44): + postcss-modules-extract-imports@3.1.0(postcss@8.4.47): dependencies: - postcss: 8.4.44 + postcss: 8.4.47 - postcss-modules-local-by-default@4.0.5(postcss@8.4.44): + postcss-modules-local-by-default@4.0.5(postcss@8.4.47): dependencies: - icss-utils: 5.1.0(postcss@8.4.44) - postcss: 8.4.44 + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.4.44): + postcss-modules-scope@3.2.0(postcss@8.4.47): dependencies: - postcss: 8.4.44 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 - postcss-modules-values@4.0.0(postcss@8.4.44): + postcss-modules-values@4.0.0(postcss@8.4.47): dependencies: - icss-utils: 5.1.0(postcss@8.4.44) - postcss: 8.4.44 + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 - postcss-modules@6.0.0(postcss@8.4.44): + postcss-modules@6.0.0(postcss@8.4.47): dependencies: generic-names: 4.0.0 - icss-utils: 5.1.0(postcss@8.4.44) + icss-utils: 5.1.0(postcss@8.4.47) lodash.camelcase: 4.3.0 - postcss: 8.4.44 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.44) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.44) - postcss-modules-scope: 3.2.0(postcss@8.4.44) - postcss-modules-values: 4.0.0(postcss@8.4.44) + postcss: 8.4.47 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.47) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.47) + postcss-modules-scope: 3.2.0(postcss@8.4.47) + postcss-modules-values: 4.0.0(postcss@8.4.47) string-hash: 1.1.3 postcss-selector-parser@6.1.2: @@ -5682,13 +5733,13 @@ snapshots: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 - source-map-js: 1.2.0 + source-map-js: 1.2.1 - postcss@8.4.44: + postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 + picocolors: 1.1.0 + source-map-js: 1.2.1 prelude-ls@1.2.1: {} @@ -5911,29 +5962,29 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.0 - rollup-plugin-dts@6.1.1(rollup@4.21.2)(typescript@5.6.2): + rollup-plugin-dts@6.1.1(rollup@4.21.3)(typescript@5.6.2): dependencies: magic-string: 0.30.11 - rollup: 4.21.2 + rollup: 4.21.3 typescript: 5.6.2 optionalDependencies: '@babel/code-frame': 7.24.7 - rollup-plugin-esbuild@6.1.1(esbuild@0.23.1)(rollup@4.21.2): + rollup-plugin-esbuild@6.1.1(esbuild@0.23.1)(rollup@4.21.3): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@rollup/pluginutils': 5.1.0(rollup@4.21.3) debug: 4.3.6 es-module-lexer: 1.5.4 esbuild: 0.23.1 get-tsconfig: 4.7.6 - rollup: 4.21.2 + rollup: 4.21.3 transitivePeerDependencies: - supports-color - rollup-plugin-polyfill-node@0.13.0(rollup@4.21.2): + rollup-plugin-polyfill-node@0.13.0(rollup@4.21.3): dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.21.2) - rollup: 4.21.2 + '@rollup/plugin-inject': 5.0.5(rollup@4.21.3) + rollup: 4.21.3 rollup@4.20.0: dependencies: @@ -5957,26 +6008,26 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.20.0 fsevents: 2.3.3 - rollup@4.21.2: + rollup@4.21.3: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.2 - '@rollup/rollup-android-arm64': 4.21.2 - '@rollup/rollup-darwin-arm64': 4.21.2 - '@rollup/rollup-darwin-x64': 4.21.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 - '@rollup/rollup-linux-arm-musleabihf': 4.21.2 - '@rollup/rollup-linux-arm64-gnu': 4.21.2 - '@rollup/rollup-linux-arm64-musl': 4.21.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 - '@rollup/rollup-linux-riscv64-gnu': 4.21.2 - '@rollup/rollup-linux-s390x-gnu': 4.21.2 - '@rollup/rollup-linux-x64-gnu': 4.21.2 - '@rollup/rollup-linux-x64-musl': 4.21.2 - '@rollup/rollup-win32-arm64-msvc': 4.21.2 - '@rollup/rollup-win32-ia32-msvc': 4.21.2 - '@rollup/rollup-win32-x64-msvc': 4.21.2 + '@rollup/rollup-android-arm-eabi': 4.21.3 + '@rollup/rollup-android-arm64': 4.21.3 + '@rollup/rollup-darwin-arm64': 4.21.3 + '@rollup/rollup-darwin-x64': 4.21.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.3 + '@rollup/rollup-linux-arm-musleabihf': 4.21.3 + '@rollup/rollup-linux-arm64-gnu': 4.21.3 + '@rollup/rollup-linux-arm64-musl': 4.21.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.3 + '@rollup/rollup-linux-riscv64-gnu': 4.21.3 + '@rollup/rollup-linux-s390x-gnu': 4.21.3 + '@rollup/rollup-linux-x64-gnu': 4.21.3 + '@rollup/rollup-linux-x64-musl': 4.21.3 + '@rollup/rollup-win32-arm64-msvc': 4.21.3 + '@rollup/rollup-win32-ia32-msvc': 4.21.3 + '@rollup/rollup-win32-x64-msvc': 4.21.3 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} @@ -5997,7 +6048,7 @@ snapshots: dependencies: chokidar: 3.6.0 immutable: 4.3.7 - source-map-js: 1.2.0 + source-map-js: 1.2.1 saxes@6.0.0: dependencies: @@ -6090,6 +6141,8 @@ snapshots: source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map@0.6.1: {} spdx-correct@3.2.0: @@ -6212,6 +6265,8 @@ snapshots: tinybench@2.9.0: {} + tinyexec@0.3.0: {} + tinypool@1.0.0: {} tinyrainbow@1.2.0: {} @@ -6255,11 +6310,11 @@ snapshots: typed-query-selector@2.12.0: {} - typescript-eslint@8.4.0(eslint@9.9.1)(typescript@5.6.2): + typescript-eslint@8.5.0(eslint@9.10.0)(typescript@5.6.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.6.2))(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1)(typescript@5.6.2) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -6311,12 +6366,11 @@ snapshots: vary@1.1.2: {} - vite-node@2.0.5(@types/node@20.16.5)(sass@1.78.0): + vite-node@2.1.1(@types/node@20.16.5)(sass@1.78.0): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 - tinyrainbow: 1.2.0 vite: 5.4.0(@types/node@20.16.5)(sass@1.78.0) transitivePeerDependencies: - '@types/node' @@ -6339,26 +6393,26 @@ snapshots: fsevents: 2.3.3 sass: 1.78.0 - vitest@2.0.5(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0): + vitest@2.1.1(@types/node@20.16.5)(jsdom@25.0.0)(sass@1.78.0): dependencies: - '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.5 - '@vitest/pretty-format': 2.0.5 - '@vitest/runner': 2.0.5 - '@vitest/snapshot': 2.0.5 - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 + '@vitest/expect': 2.1.1 + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.0(@types/node@20.16.5)(sass@1.78.0)) + '@vitest/pretty-format': 2.1.1 + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 chai: 5.1.1 debug: 4.3.6 - execa: 8.0.1 magic-string: 0.30.11 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.9.0 + tinyexec: 0.3.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 vite: 5.4.0(@types/node@20.16.5)(sass@1.78.0) - vite-node: 2.0.5(@types/node@20.16.5)(sass@1.78.0) + vite-node: 2.1.1(@types/node@20.16.5)(sass@1.78.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.16.5 @@ -6366,6 +6420,7 @@ snapshots: transitivePeerDependencies: - less - lightningcss + - msw - sass - sass-embedded - stylus diff --git a/vitest.e2e.config.ts b/vitest.e2e.config.ts index 90a67d229d8..622bda0bd57 100644 --- a/vitest.e2e.config.ts +++ b/vitest.e2e.config.ts @@ -3,6 +3,7 @@ import config from './vitest.config' export default mergeConfig(config, { test: { + name: 'e2e', poolOptions: { threads: { singleThread: !!process.env.CI, diff --git a/vitest.unit.config.ts b/vitest.unit.config.ts index 80549766c50..0082997e0d1 100644 --- a/vitest.unit.config.ts +++ b/vitest.unit.config.ts @@ -3,6 +3,7 @@ import config from './vitest.config' export default mergeConfig(config, { test: { + name: 'unit', exclude: [...configDefaults.exclude, '**/e2e/**'], }, })