diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 16c6c9c5c..d93510607 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -24,4 +24,5 @@ jobs: with: tag_name: ${{ github.ref }} body: | - Please refer to [CHANGELOG.md](https://github.com/vuejs/core/blob/main/CHANGELOG.md) for details. + For stable releases, please refer to [CHANGELOG.md](https://github.com/vuejs/core/blob/main/CHANGELOG.md) for details. + For pre-releases, please refer to [CHANGELOG.md](https://github.com/vuejs/core/blob/minor/CHANGELOG.md) of the `minor` branch. diff --git a/CHANGELOG.md b/CHANGELOG.md index 032a5f3a0..fbeb2bfc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [3.4.26](https://github.com/vuejs/core/compare/v3.4.25...v3.4.26) (2024-04-29) + + +### Bug Fixes + +* **compiler-core:** fix bail constant for globals ([fefce06](https://github.com/vuejs/core/commit/fefce06b41e3b75de3d748dc6399628ec5056e78)) +* **compiler-core:** remove unnecessary constant bail check ([09b4df8](https://github.com/vuejs/core/commit/09b4df809e59ef5f4bc91acfc56dc8f82a8e243a)), closes [#10807](https://github.com/vuejs/core/issues/10807) +* **runtime-core:** attrs should be readonly in functional components ([#10767](https://github.com/vuejs/core/issues/10767)) ([e8fd644](https://github.com/vuejs/core/commit/e8fd6446d14a6899e5e8ab1ee394d90088e01844)) +* **runtime-core:** ensure slot compiler marker writable ([#10825](https://github.com/vuejs/core/issues/10825)) ([9c2de62](https://github.com/vuejs/core/commit/9c2de6244cd44bc5fbfd82b5850c710ce725044f)), closes [#10818](https://github.com/vuejs/core/issues/10818) +* **runtime-core:** properly handle inherit transition during clone VNode ([#10809](https://github.com/vuejs/core/issues/10809)) ([638a79f](https://github.com/vuejs/core/commit/638a79f64a7e184f2a2c65e21d764703f4bda561)), closes [#3716](https://github.com/vuejs/core/issues/3716) [#10497](https://github.com/vuejs/core/issues/10497) [#4091](https://github.com/vuejs/core/issues/4091) +* **Transition:** re-fix [#10620](https://github.com/vuejs/core/issues/10620) ([#10832](https://github.com/vuejs/core/issues/10832)) ([accf839](https://github.com/vuejs/core/commit/accf8396ae1c9dd49759ba0546483f1d2c70c9bc)), closes [#10632](https://github.com/vuejs/core/issues/10632) [#10827](https://github.com/vuejs/core/issues/10827) + + + # [3.5.0-alpha.1](https://github.com/vuejs/core/compare/v3.4.25...v3.5.0-alpha.1) (2024-04-29) diff --git a/package.json b/package.json index 7bf2a2c14..38510be0b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "version": "3.5.0-alpha.1", - "packageManager": "pnpm@9.0.5", + "packageManager": "pnpm@9.0.6", "type": "module", "scripts": { "dev": "node scripts/dev.js", @@ -72,15 +72,15 @@ "@types/minimist": "^1.2.5", "@types/node": "^20.12.7", "@types/semver": "^7.5.8", - "@vitest/coverage-istanbul": "^1.5.0", + "@vitest/coverage-istanbul": "^1.5.2", "@vue/consolidate": "1.0.0", "conventional-changelog-cli": "^4.1.0", "enquirer": "^2.4.1", "esbuild": "^0.20.2", "esbuild-plugin-polyfill-node": "^0.3.0", - "eslint": "^9.0.0", + "eslint": "^9.1.1", "eslint-plugin-import-x": "^0.5.0", - "eslint-plugin-vitest": "^0.5.3", + "eslint-plugin-vitest": "^0.5.4", "estree-walker": "^2.0.2", "execa": "^8.0.1", "jsdom": "^24.0.0", @@ -95,23 +95,23 @@ "prettier": "^3.2.5", "pretty-bytes": "^6.1.1", "pug": "^3.0.2", - "puppeteer": "~22.6.5", + "puppeteer": "~22.7.1", "rimraf": "^5.0.5", - "rollup": "^4.16.1", + "rollup": "^4.17.1", "rollup-plugin-dts": "^6.1.0", "rollup-plugin-esbuild": "^6.1.1", "rollup-plugin-polyfill-node": "^0.13.0", "semver": "^7.6.0", - "serve": "^14.2.1", + "serve": "^14.2.3", "simple-git-hooks": "^2.11.1", - "terser": "^5.30.3", + "terser": "^5.30.4", "todomvc-app-css": "^2.4.3", "tslib": "^2.6.2", - "tsx": "^4.7.2", + "tsx": "^4.7.3", "typescript": "~5.4.5", - "typescript-eslint": "^7.6.0", + "typescript-eslint": "^7.7.1", "vite": "^5.2.10", - "vitest": "^1.5.0" + "vitest": "^1.5.2" }, "pnpm": { "peerDependencyRules": { diff --git a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts index 4f08aeb9b..ffd93d791 100644 --- a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts +++ b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts @@ -421,6 +421,31 @@ describe('compiler: expression transform', () => { }) }) + // #10807 + test('should not bail constant on strings w/ ()', () => { + const node = parseWithExpressionTransform( + `{{ { foo: 'ok()' } }}`, + ) as InterpolationNode + expect(node.content).toMatchObject({ + constType: ConstantTypes.CAN_STRINGIFY, + }) + }) + + test('should bail constant for global identifiers w/ new or call expressions', () => { + const node = parseWithExpressionTransform( + `{{ new Date().getFullYear() }}`, + ) as InterpolationNode + expect(node.content).toMatchObject({ + children: [ + 'new ', + { constType: ConstantTypes.NOT_CONSTANT }, + '().', + { constType: ConstantTypes.NOT_CONSTANT }, + '()', + ], + }) + }) + describe('ES Proposals support', () => { test('bigInt', () => { const node = parseWithExpressionTransform( diff --git a/packages/compiler-core/src/babelUtils.ts b/packages/compiler-core/src/babelUtils.ts index b12a6d9b4..d3812f84c 100644 --- a/packages/compiler-core/src/babelUtils.ts +++ b/packages/compiler-core/src/babelUtils.ts @@ -10,6 +10,9 @@ import type { } from '@babel/types' import { walk } from 'estree-walker' +/** + * Return value indicates whether the AST walked can be a constant + */ export function walkIdentifiers( root: Node, onIdentifier: ( diff --git a/packages/compiler-core/src/parser.ts b/packages/compiler-core/src/parser.ts index da8861b92..cac943dd6 100644 --- a/packages/compiler-core/src/parser.ts +++ b/packages/compiler-core/src/parser.ts @@ -179,7 +179,7 @@ const tokenizer = new Tokenizer(stack, { const name = currentOpenTag!.tag currentOpenTag!.isSelfClosing = true endOpenTag(end) - if (stack[0]?.tag === name) { + if (stack[0] && stack[0].tag === name) { onCloseTag(stack.shift()!, end) } }, @@ -587,14 +587,14 @@ function endOpenTag(end: number) { function onText(content: string, start: number, end: number) { if (__BROWSER__) { - const tag = stack[0]?.tag + const tag = stack[0] && stack[0].tag if (tag !== 'script' && tag !== 'style' && content.includes('&')) { content = currentOptions.decodeEntities!(content, false) } } const parent = stack[0] || currentRoot const lastNode = parent.children[parent.children.length - 1] - if (lastNode?.type === NodeTypes.TEXT) { + if (lastNode && lastNode.type === NodeTypes.TEXT) { // merge lastNode.content += content setLocEnd(lastNode.loc, end) @@ -771,7 +771,8 @@ function isComponent({ tag, props }: ElementNode): boolean { tag === 'component' || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || - currentOptions.isBuiltInComponent?.(tag) || + (currentOptions.isBuiltInComponent && + currentOptions.isBuiltInComponent(tag)) || (currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) ) { return true @@ -828,8 +829,8 @@ function condenseWhitespace( if (node.type === NodeTypes.TEXT) { if (!inPre) { if (isAllWhitespace(node.content)) { - const prev = nodes[i - 1]?.type - const next = nodes[i + 1]?.type + const prev = nodes[i - 1] && nodes[i - 1].type + const next = nodes[i + 1] && nodes[i + 1].type // Remove if: // - the whitespace is the first or last node, or: // - (condense mode) the whitespace is between two comments, or: @@ -1063,7 +1064,7 @@ export function baseParse(input: string, options?: ParserOptions): RootNode { currentOptions.ns === Namespaces.SVG || currentOptions.ns === Namespaces.MATH_ML - const delimiters = options?.delimiters + const delimiters = options && options.delimiters if (delimiters) { tokenizer.delimiterOpen = toCharCodes(delimiters[0]) tokenizer.delimiterClose = toCharCodes(delimiters[1]) diff --git a/packages/compiler-core/src/transforms/transformExpression.ts b/packages/compiler-core/src/transforms/transformExpression.ts index 53a4bc592..35aa9a373 100644 --- a/packages/compiler-core/src/transforms/transformExpression.ts +++ b/packages/compiler-core/src/transforms/transformExpression.ts @@ -46,10 +46,6 @@ import { BindingTypes } from '../options' const isLiteralWhitelisted = /*#__PURE__*/ makeMap('true,false,null,this') -// a heuristic safeguard to bail constant expressions on presence of -// likely function invocation and member access -const constantBailRE = /\w\s*\(|\.[^\d]/ - export const transformExpression: NodeTransform = (node, context) => { if (node.type === NodeTypes.INTERPOLATION) { node.content = processExpression( @@ -226,8 +222,6 @@ export function processExpression( // fast path if expression is a simple identifier. const rawExp = node.content - // bail constant on parens (function invocation) and dot (member access) - const bailConstant = constantBailRE.test(rawExp) let ast = node.ast @@ -317,7 +311,12 @@ export function processExpression( } else { // The identifier is considered constant unless it's pointing to a // local scope variable (a v-for alias, or a v-slot prop) - if (!(needPrefix && isLocal) && !bailConstant) { + if ( + !(needPrefix && isLocal) && + parent.type !== 'CallExpression' && + parent.type !== 'NewExpression' && + parent.type !== 'MemberExpression' + ) { ;(node as QualifiedId).isConstant = true } // also generate sub-expressions for other identifiers for better @@ -371,9 +370,7 @@ export function processExpression( ret.ast = ast } else { ret = node - ret.constType = bailConstant - ? ConstantTypes.NOT_CONSTANT - : ConstantTypes.CAN_STRINGIFY + ret.constType = ConstantTypes.CAN_STRINGIFY } ret.identifiers = Object.keys(knownIds) return ret diff --git a/packages/runtime-core/__tests__/componentProps.spec.ts b/packages/runtime-core/__tests__/componentProps.spec.ts index 04fa42063..1cc43c91b 100644 --- a/packages/runtime-core/__tests__/componentProps.spec.ts +++ b/packages/runtime-core/__tests__/componentProps.spec.ts @@ -17,7 +17,6 @@ import { ref, render, serializeInner, - toRaw, toRefs, watch, } from '@vue/runtime-test' @@ -129,12 +128,12 @@ describe('component props', () => { render(h(Comp, { foo: 1 }), root) expect(props).toEqual({ foo: 1 }) expect(attrs).toEqual({ foo: 1 }) - expect(toRaw(props)).toBe(attrs) + expect(props).toBe(attrs) render(h(Comp, { bar: 2 }), root) expect(props).toEqual({ bar: 2 }) expect(attrs).toEqual({ bar: 2 }) - expect(toRaw(props)).toBe(attrs) + expect(props).toBe(attrs) }) test('boolean casting', () => { diff --git a/packages/runtime-core/__tests__/components/BaseTransition.spec.ts b/packages/runtime-core/__tests__/components/BaseTransition.spec.ts index 1923d1618..aaeae3fb4 100644 --- a/packages/runtime-core/__tests__/components/BaseTransition.spec.ts +++ b/packages/runtime-core/__tests__/components/BaseTransition.spec.ts @@ -7,7 +7,6 @@ import { h, nextTick, nodeOps, - onUnmounted, ref, render, serialize, @@ -769,42 +768,6 @@ describe('BaseTransition', () => { test('w/ KeepAlive', async () => { await runTestWithKeepAlive(testOutIn) }) - - test('w/ KeepAlive + unmount innerChild', async () => { - const unmountSpy = vi.fn() - const includeRef = ref(['TrueBranch']) - const trueComp = { - name: 'TrueBranch', - setup() { - onUnmounted(unmountSpy) - const count = ref(0) - return () => h('div', count.value) - }, - } - - const toggle = ref(true) - const { props } = mockProps({ mode: 'out-in' }, true /*withKeepAlive*/) - const root = nodeOps.createElement('div') - const App = { - render() { - return h(BaseTransition, props, () => { - return h( - KeepAlive, - { include: includeRef.value }, - toggle.value ? h(trueComp) : h('div'), - ) - }) - }, - } - render(h(App), root) - - // trigger toggle - toggle.value = false - includeRef.value = [] - - await nextTick() - expect(unmountSpy).toHaveBeenCalledTimes(1) - }) }) // #6835 diff --git a/packages/runtime-core/__tests__/hmr.spec.ts b/packages/runtime-core/__tests__/hmr.spec.ts index 000fbf40b..619147d55 100644 --- a/packages/runtime-core/__tests__/hmr.spec.ts +++ b/packages/runtime-core/__tests__/hmr.spec.ts @@ -356,7 +356,7 @@ describe('hot module replacement', () => { triggerEvent(root.children[1] as TestElement, 'click') await nextTick() await new Promise(r => setTimeout(r, 0)) - expect(serializeInner(root)).toBe(``) + expect(serializeInner(root)).toBe(``) expect(unmountSpy).toHaveBeenCalledTimes(1) expect(mountSpy).toHaveBeenCalledTimes(1) expect(activeSpy).toHaveBeenCalledTimes(1) diff --git a/packages/runtime-core/src/apiWatch.ts b/packages/runtime-core/src/apiWatch.ts index 4f69e3068..825a4a7a4 100644 --- a/packages/runtime-core/src/apiWatch.ts +++ b/packages/runtime-core/src/apiWatch.ts @@ -472,39 +472,32 @@ export function createPathGetter(ctx: any, path: string) { export function traverse( value: unknown, - depth?: number, - currentDepth = 0, + depth = Infinity, seen?: Set, ) { - if (!isObject(value) || (value as any)[ReactiveFlags.SKIP]) { + if (depth <= 0 || !isObject(value) || (value as any)[ReactiveFlags.SKIP]) { return value } - if (depth && depth > 0) { - if (currentDepth >= depth) { - return value - } - currentDepth++ - } - seen = seen || new Set() if (seen.has(value)) { return value } seen.add(value) + depth-- if (isRef(value)) { - traverse(value.value, depth, currentDepth, seen) + traverse(value.value, depth, seen) } else if (isArray(value)) { for (let i = 0; i < value.length; i++) { - traverse(value[i], depth, currentDepth, seen) + traverse(value[i], depth, seen) } } else if (isSet(value) || isMap(value)) { value.forEach((v: any) => { - traverse(v, depth, currentDepth, seen) + traverse(v, depth, seen) }) } else if (isPlainObject(value)) { for (const key in value) { - traverse(value[key], depth, currentDepth, seen) + traverse(value[key], depth, seen) } } return value diff --git a/packages/runtime-core/src/compat/global.ts b/packages/runtime-core/src/compat/global.ts index 1c633ed52..22f7b5213 100644 --- a/packages/runtime-core/src/compat/global.ts +++ b/packages/runtime-core/src/compat/global.ts @@ -77,7 +77,12 @@ export type CompatVue = Pick & { nextTick: typeof nextTick - use(plugin: Plugin, ...options: any[]): CompatVue + use( + plugin: Plugin, + ...options: Options + ): CompatVue + use(plugin: Plugin, options: Options): CompatVue + mixin(mixin: ComponentOptions): CompatVue component(name: string): Component | undefined @@ -176,11 +181,11 @@ export function createCompatVue( Vue.version = `2.6.14-compat:${__VERSION__}` Vue.config = singletonApp.config - Vue.use = (p, ...options) => { - if (p && isFunction(p.install)) { - p.install(Vue as any, ...options) - } else if (isFunction(p)) { - p(Vue as any, ...options) + Vue.use = (plugin: Plugin, ...options: any[]) => { + if (plugin && isFunction(plugin.install)) { + plugin.install(Vue as any, ...options) + } else if (isFunction(plugin)) { + plugin(Vue as any, ...options) } return Vue } diff --git a/packages/runtime-core/src/componentRenderUtils.ts b/packages/runtime-core/src/componentRenderUtils.ts index 31a1a5fa1..eb9b896c7 100644 --- a/packages/runtime-core/src/componentRenderUtils.ts +++ b/packages/runtime-core/src/componentRenderUtils.ts @@ -116,7 +116,7 @@ export function renderComponentRoot( ? { get attrs() { markAttrsAccessed() - return attrs + return shallowReadonly(attrs) }, slots, emit, @@ -166,7 +166,7 @@ export function renderComponentRoot( propsOptions, ) } - root = cloneVNode(root, fallthroughAttrs) + root = cloneVNode(root, fallthroughAttrs, false, true) } else if (__DEV__ && !accessedAttrs && root.type !== Comment) { const allAttrs = Object.keys(attrs) const eventAttrs: string[] = [] @@ -221,10 +221,15 @@ export function renderComponentRoot( getComponentName(instance.type), ) } - root = cloneVNode(root, { - class: cls, - style: style, - }) + root = cloneVNode( + root, + { + class: cls, + style: style, + }, + false, + true, + ) } } @@ -237,7 +242,7 @@ export function renderComponentRoot( ) } // clone before mutating since the root may be a hoisted vnode - root = cloneVNode(root) + root = cloneVNode(root, null, false, true) root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs } // inherit transition data diff --git a/packages/runtime-core/src/componentSlots.ts b/packages/runtime-core/src/componentSlots.ts index aeba4d5c6..2bc3466c4 100644 --- a/packages/runtime-core/src/componentSlots.ts +++ b/packages/runtime-core/src/componentSlots.ts @@ -171,7 +171,7 @@ export const initSlots = ( if (type) { extend(slots, children as InternalSlots) // make compiler marker non-enumerable - def(slots, '_', type) + def(slots, '_', type, true) } else { normalizeObjectSlots(children as RawSlots, slots, instance) } diff --git a/packages/runtime-core/src/components/BaseTransition.ts b/packages/runtime-core/src/components/BaseTransition.ts index 38fa44551..377b0d32b 100644 --- a/packages/runtime-core/src/components/BaseTransition.ts +++ b/packages/runtime-core/src/components/BaseTransition.ts @@ -206,7 +206,7 @@ const BaseTransitionImpl: ComponentOptions = { // update old tree's hooks in case of dynamic transition setTransitionHooks(oldInnerChild, leavingHooks) // switching between different views - if (mode === 'out-in') { + if (mode === 'out-in' && innerChild.type !== Comment) { state.isLeaving = true // return placeholder node and queue update when leave finishes leavingHooks.afterLeave = () => { diff --git a/packages/runtime-core/src/components/KeepAlive.ts b/packages/runtime-core/src/components/KeepAlive.ts index 7697096bc..db6088cf5 100644 --- a/packages/runtime-core/src/components/KeepAlive.ts +++ b/packages/runtime-core/src/components/KeepAlive.ts @@ -254,7 +254,7 @@ const KeepAliveImpl: ComponentOptions = { pendingCacheKey = null if (!slots.default) { - return (current = null) + return null } const children = slots.default() diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts index 670654074..5914e891c 100644 --- a/packages/runtime-core/src/components/Suspense.ts +++ b/packages/runtime-core/src/components/Suspense.ts @@ -479,7 +479,7 @@ function createSuspenseBoundary( let parentSuspenseId: number | undefined const isSuspensible = isVNodeSuspensible(vnode) if (isSuspensible) { - if (parentSuspense?.pendingBranch) { + if (parentSuspense && parentSuspense.pendingBranch) { parentSuspenseId = parentSuspense.pendingId parentSuspense.deps++ } @@ -898,5 +898,6 @@ function setActiveBranch(suspense: SuspenseBoundary, branch: VNode) { } function isVNodeSuspensible(vnode: VNode) { - return vnode.props?.suspensible != null && vnode.props.suspensible !== false + const suspensible = vnode.props && vnode.props.suspensible + return suspensible != null && suspensible !== false } diff --git a/packages/runtime-core/src/vnode.ts b/packages/runtime-core/src/vnode.ts index a1a6a908d..0e2a4bafc 100644 --- a/packages/runtime-core/src/vnode.ts +++ b/packages/runtime-core/src/vnode.ts @@ -624,10 +624,11 @@ export function cloneVNode( vnode: VNode, extraProps?: (Data & VNodeProps) | null, mergeRef = false, + cloneTransition = false, ): VNode { // This is intentionally NOT using spread or extend to avoid the runtime // key enumeration cost. - const { props, ref, patchFlag, children } = vnode + const { props, ref, patchFlag, children, transition } = vnode const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props const cloned: VNode = { __v_isVNode: true, @@ -670,7 +671,7 @@ export function cloneVNode( dynamicChildren: vnode.dynamicChildren, appContext: vnode.appContext, dirs: vnode.dirs, - transition: vnode.transition, + transition, // These should technically only be non-null on mounted VNodes. However, // they *should* be copied for kept-alive vnodes. So we just always copy @@ -685,9 +686,18 @@ export function cloneVNode( ctx: vnode.ctx, ce: vnode.ce, } + + // if the vnode will be replaced by the cloned one, it is necessary + // to clone the transition to ensure that the vnode referenced within + // the transition hooks is fresh. + if (transition && cloneTransition) { + cloned.transition = transition.clone(cloned as VNode) + } + if (__COMPAT__) { defineLegacyVNodeProperties(cloned as VNode) } + return cloned } diff --git a/packages/sfc-playground/package.json b/packages/sfc-playground/package.json index 89859e817..72b042dbe 100644 --- a/packages/sfc-playground/package.json +++ b/packages/sfc-playground/package.json @@ -13,7 +13,7 @@ "vite": "^5.2.10" }, "dependencies": { - "@vue/repl": "^4.1.1", + "@vue/repl": "^4.1.2", "file-saver": "^2.0.5", "jszip": "^3.10.1", "vue": "workspace:*" diff --git a/packages/shared/src/general.ts b/packages/shared/src/general.ts index 47ab02292..fb884695d 100644 --- a/packages/shared/src/general.ts +++ b/packages/shared/src/general.ts @@ -139,10 +139,16 @@ export const invokeArrayFns = (fns: Function[], arg?: any) => { } } -export const def = (obj: object, key: string | symbol, value: any) => { +export const def = ( + obj: object, + key: string | symbol, + value: any, + writable = false, +) => { Object.defineProperty(obj, key, { configurable: true, enumerable: false, + writable, value, }) } diff --git a/packages/vue/__tests__/e2e/Transition.spec.ts b/packages/vue/__tests__/e2e/Transition.spec.ts index d52af21ce..d81b94cda 100644 --- a/packages/vue/__tests__/e2e/Transition.spec.ts +++ b/packages/vue/__tests__/e2e/Transition.spec.ts @@ -1214,6 +1214,111 @@ describe('e2e: Transition', () => { }, E2E_TIMEOUT, ) + + // #3716 + test( + 'wrapping transition + fallthrough attrs', + async () => { + await page().goto(baseUrl) + await page().waitForSelector('#app') + await page().evaluate(() => { + const { createApp, ref } = (window as any).Vue + createApp({ + components: { + 'my-transition': { + template: ` + + + + `, + }, + }, + template: ` +
+ +
content
+
+
+ + `, + setup: () => { + const toggle = ref(true) + const click = () => (toggle.value = !toggle.value) + return { toggle, click } + }, + }).mount('#app') + }) + expect(await html('#container')).toBe('
content
') + + await click('#toggleBtn') + // toggle again before leave finishes + await nextTick() + await click('#toggleBtn') + + await transitionFinish() + expect(await html('#container')).toBe( + '
content
', + ) + }, + E2E_TIMEOUT, + ) + + test( + 'w/ KeepAlive + unmount innerChild', + async () => { + const unmountSpy = vi.fn() + await page().exposeFunction('unmountSpy', unmountSpy) + await page().evaluate(() => { + const { unmountSpy } = window as any + const { createApp, ref, h, onUnmounted } = (window as any).Vue + createApp({ + template: ` +
+ + + + + +
+ + `, + components: { + TrueBranch: { + name: 'TrueBranch', + setup() { + onUnmounted(unmountSpy) + const count = ref(0) + return () => h('div', count.value) + }, + }, + }, + setup: () => { + const includeRef = ref(['TrueBranch']) + const toggle = ref(true) + const click = () => { + toggle.value = !toggle.value + if (toggle.value) { + includeRef.value = ['TrueBranch'] + } else { + includeRef.value = [] + } + } + return { toggle, click, unmountSpy, includeRef } + }, + }).mount('#app') + }) + + await transitionFinish() + expect(await html('#container')).toBe('
0
') + + await click('#toggleBtn') + + await transitionFinish() + expect(await html('#container')).toBe('') + expect(unmountSpy).toBeCalledTimes(1) + }, + E2E_TIMEOUT, + ) }) describe('transition with Suspense', () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4f2e0480..83f1c6c8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,25 +16,25 @@ importers: version: 7.24.0 '@codspeed/vitest-plugin': specifier: ^3.1.0 - version: 3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3)) + version: 3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4))(vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4)) '@rollup/plugin-alias': specifier: ^5.1.0 - version: 5.1.0(rollup@4.16.1) + version: 5.1.0(rollup@4.17.1) '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.16.1) + version: 25.0.7(rollup@4.17.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.16.1) + version: 6.1.0(rollup@4.17.1) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.16.1) + version: 15.2.3(rollup@4.17.1) '@rollup/plugin-replace': specifier: 5.0.4 - version: 5.0.4(rollup@4.16.1) + version: 5.0.4(rollup@4.17.1) '@rollup/plugin-terser': specifier: ^0.4.4 - version: 0.4.4(rollup@4.16.1) + version: 0.4.4(rollup@4.17.1) '@types/hash-sum': specifier: ^1.0.2 version: 1.0.2 @@ -48,8 +48,8 @@ importers: specifier: ^7.5.8 version: 7.5.8 '@vitest/coverage-istanbul': - specifier: ^1.5.0 - version: 1.5.0(vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3)) + specifier: ^1.5.2 + version: 1.5.2(vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4)) '@vue/consolidate': specifier: 1.0.0 version: 1.0.0 @@ -66,14 +66,14 @@ importers: specifier: ^0.3.0 version: 0.3.0(esbuild@0.20.2) eslint: - specifier: ^9.0.0 - version: 9.0.0 + specifier: ^9.1.1 + version: 9.1.1 eslint-plugin-import-x: specifier: ^0.5.0 - version: 0.5.0(eslint@9.0.0)(typescript@5.4.5) + version: 0.5.0(eslint@9.1.1)(typescript@5.4.5) eslint-plugin-vitest: - specifier: ^0.5.3 - version: 0.5.3(eslint@9.0.0)(typescript@5.4.5)(vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3)) + specifier: ^0.5.4 + version: 0.5.4(eslint@9.1.1)(typescript@5.4.5)(vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4)) estree-walker: specifier: ^2.0.2 version: 2.0.2 @@ -117,35 +117,35 @@ importers: specifier: ^3.0.2 version: 3.0.2 puppeteer: - specifier: ~22.6.5 - version: 22.6.5(typescript@5.4.5) + specifier: ~22.7.1 + version: 22.7.1(typescript@5.4.5) rimraf: specifier: ^5.0.5 version: 5.0.5 rollup: - specifier: ^4.16.1 - version: 4.16.1 + specifier: ^4.17.1 + version: 4.17.1 rollup-plugin-dts: specifier: ^6.1.0 - version: 6.1.0(rollup@4.16.1)(typescript@5.4.5) + version: 6.1.0(rollup@4.17.1)(typescript@5.4.5) rollup-plugin-esbuild: specifier: ^6.1.1 - version: 6.1.1(esbuild@0.20.2)(rollup@4.16.1) + version: 6.1.1(esbuild@0.20.2)(rollup@4.17.1) rollup-plugin-polyfill-node: specifier: ^0.13.0 - version: 0.13.0(rollup@4.16.1) + version: 0.13.0(rollup@4.17.1) semver: specifier: ^7.6.0 version: 7.6.0 serve: - specifier: ^14.2.1 - version: 14.2.1 + specifier: ^14.2.3 + version: 14.2.3 simple-git-hooks: specifier: ^2.11.1 version: 2.11.1 terser: - specifier: ^5.30.3 - version: 5.30.3 + specifier: ^5.30.4 + version: 5.30.4 todomvc-app-css: specifier: ^2.4.3 version: 2.4.3 @@ -153,20 +153,20 @@ importers: specifier: ^2.6.2 version: 2.6.2 tsx: - specifier: ^4.7.2 - version: 4.7.2 + specifier: ^4.7.3 + version: 4.7.3 typescript: specifier: ~5.4.5 version: 5.4.5 typescript-eslint: - specifier: ^7.6.0 - version: 7.7.0(eslint@9.0.0)(typescript@5.4.5) + specifier: ^7.7.1 + version: 7.7.1(eslint@9.1.1)(typescript@5.4.5) vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3) + version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) vitest: - specifier: ^1.5.0 - version: 1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3) + specifier: ^1.5.2 + version: 1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4) packages/compiler-core: dependencies: @@ -341,8 +341,8 @@ importers: packages/sfc-playground: dependencies: '@vue/repl': - specifier: ^4.1.1 - version: 4.1.1 + specifier: ^4.1.2 + version: 4.1.2 file-saver: specifier: ^2.0.5 version: 2.0.5 @@ -355,10 +355,10 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.0.4 - version: 5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vue@packages+vue) + version: 5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4))(vue@packages+vue) vite: specifier: ^5.2.10 - version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3) + version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) packages/shared: {} @@ -803,12 +803,12 @@ packages: resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.0.0': - resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + '@eslint/js@9.1.1': + resolution: {integrity: sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@humanwhocodes/config-array@0.12.3': - resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} '@humanwhocodes/module-importer@1.0.1': @@ -818,6 +818,10 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + '@humanwhocodes/retry@0.2.3': + resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==} + engines: {node: '>=18.18'} + '@hutson/parse-repository-url@5.0.0': resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} engines: {node: '>=10.13.0'} @@ -874,8 +878,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@puppeteer/browsers@2.2.2': - resolution: {integrity: sha512-hZ/JhxPIceWaGSEzUZp83/8M49CoxlkuThfTR7t4AoCu5+ZvJ3vktLm60Otww2TXeROB5igiZ8D9oPQh6ckBVg==} + '@puppeteer/browsers@2.2.3': + resolution: {integrity: sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==} engines: {node: '>=18'} hasBin: true @@ -956,81 +960,161 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.17.1': + resolution: {integrity: sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.16.1': resolution: {integrity: sha512-ttWB6ZCfRLuDIUiE0yiu5gcqOsYjA5F7kEV1ggHMj20FwLZ8A1FMeahZJFl/pnOmcnD2QL0z4AcDuo27utGU8A==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.17.1': + resolution: {integrity: sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.16.1': resolution: {integrity: sha512-QLDvPLetbqjHojTGFw9+nuSP3YY/iz2k1cep6crYlr97sS+ZJ0W43b8Z0zC00+lnFZj6JSNxiA4DjboNQMuh1A==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.17.1': + resolution: {integrity: sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.16.1': resolution: {integrity: sha512-TAUK/D8khRrRIa1KwRzo8JNKk3tcqaeXWdtsiLgA8zmACWwlWLjPCJ4DULGHQrMkeBjp1Cd3Yuwx04lZgFx5Vg==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.17.1': + resolution: {integrity: sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.16.1': resolution: {integrity: sha512-KO+WGZjrh6zyFTD1alIFkfdtxf8B4BC+hqd3kBZHscPLvE5FR/6QKsyuCT0JlERxxYBSUKNUQ/UHyX5uwO1x2A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.17.1': + resolution: {integrity: sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.16.1': resolution: {integrity: sha512-NqxbllzIB1WoAo4ThUXVtd21iiM5IHMTTXmXySKBLVcZvkU0HIZmatlP7hLzb5yQubcmdIeWmncd2NdsjocEiw==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.17.1': + resolution: {integrity: sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.16.1': resolution: {integrity: sha512-snma5NvV8y7IECQ5rq0sr0f3UUu+92NVmG/913JXJMcXo84h9ak9TA5UI9Cl2XRM9j3m37QwDBtEYnJzRkSmxA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.17.1': + resolution: {integrity: sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.16.1': resolution: {integrity: sha512-KOvqGprlD84ueivhCi2flvcUwDRD20mAsE3vxQNVEI2Di9tnPGAfEu6UcrSPZbM+jG2w1oSr43hrPo0RNg6GGg==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.17.1': + resolution: {integrity: sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.16.1': resolution: {integrity: sha512-/gsNwtiGLqYwN4vP+EIdUC6Q6LTlpupWqokqIndvZcjn9ig/5P01WyaYCU2wvfL/2Z82jp5kX8c1mDBOvCP3zg==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.17.1': + resolution: {integrity: sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.16.1': resolution: {integrity: sha512-uU8zuGkQfGqfD9w6VRJZI4IuG4JIfNxxJgEmLMAmPVHREKGsxFVfgHy5c6CexQF2vOfgjB33OsET3Vdn2lln9A==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.17.1': + resolution: {integrity: sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.16.1': resolution: {integrity: sha512-lsjLtDgtcGFEuBP6yrXwkRN5/wKlvUZtfbKZZu0yaoNpiBL4epgnO21osAALIspVRnl4qZgyLFd8xjCYYWgwfw==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.17.1': + resolution: {integrity: sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.16.1': resolution: {integrity: sha512-N2ZizKhUryqqrMfdCnjhJhZRgv61C6gK+hwVtCIKC8ts8J+go+vqENnGexwg21nHIOvLN5mBM8a7DI2vlyIOPg==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.17.1': + resolution: {integrity: sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.16.1': resolution: {integrity: sha512-5ICeMxqg66FrOA2AbnBQ2TJVxfvZsKLxmof0ibvPLaYtbsJqnTUtJOofgWb46Gjd4uZcA4rdsp4JCxegzQPqCg==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.17.1': + resolution: {integrity: sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.16.1': resolution: {integrity: sha512-1vIP6Ce02L+qWD7uZYRiFiuAJo3m9kARatWmFSnss0gZnVj2Id7OPUU9gm49JPGasgcR3xMqiH3fqBJ8t00yVg==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.17.1': + resolution: {integrity: sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.16.1': resolution: {integrity: sha512-Y3M92DcVsT6LoP+wrKpoUWPaazaP1fzbNkp0a0ZSj5Y//+pQVfVe/tQdsYQQy7dwXR30ZfALUIc9PCh9Izir6w==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.17.1': + resolution: {integrity: sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.16.1': resolution: {integrity: sha512-x0fvpHMuF7fK5r8oZxSi8VYXkrVmRgubXpO/wcf15Lk3xZ4Jvvh5oG+u7Su1776A7XzVKZhD2eRc4t7H50gL3w==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.17.1': + resolution: {integrity: sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==} + cpu: [x64] + os: [win32] + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -1064,8 +1148,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@7.7.0': - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} + '@typescript-eslint/eslint-plugin@7.7.1': + resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1075,8 +1159,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.7.0': - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + '@typescript-eslint/parser@7.7.1': + resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1089,8 +1173,12 @@ packages: resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.7.0': - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} + '@typescript-eslint/scope-manager@7.7.1': + resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.7.1': + resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1103,6 +1191,10 @@ packages: resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@7.7.1': + resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@7.7.0': resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1112,16 +1204,35 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@7.7.1': + resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@7.7.0': resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 + '@typescript-eslint/utils@7.7.1': + resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + '@typescript-eslint/visitor-keys@7.7.0': resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@7.7.1': + resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} + engines: {node: ^18.18.0 || >=20.0.0} + '@vitejs/plugin-vue@5.0.4': resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1129,35 +1240,35 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/coverage-istanbul@1.5.0': - resolution: {integrity: sha512-mEbVTIAPKhMkszO0lwOwWiG8Cvkj7rdMgdmCNUDnmcSZYUWGIqM8+4O1bcQ1WMHkejpcwvED5oU6ZFm3syVb6A==} + '@vitest/coverage-istanbul@1.5.2': + resolution: {integrity: sha512-YGC+QSWOL8cQ2HQaTEFttmG9v3DGLy7lMZIGdqjtTgaW6omW17/uZPxuh6m2t69T0rFLqImduVthm5o/gYYWTQ==} peerDependencies: - vitest: 1.5.0 + vitest: 1.5.2 - '@vitest/expect@1.5.0': - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} + '@vitest/expect@1.5.2': + resolution: {integrity: sha512-rf7MTD1WCoDlN3FfYJ9Llfp0PbdtOMZ3FIF0AVkDnKbp3oiMW1c8AmvRZBcqbAhDUAvF52e9zx4WQM1r3oraVA==} - '@vitest/runner@1.5.0': - resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} + '@vitest/runner@1.5.2': + resolution: {integrity: sha512-7IJ7sJhMZrqx7HIEpv3WrMYcq8ZNz9L6alo81Y6f8hV5mIE6yVZsFoivLZmr0D777klm1ReqonE9LyChdcmw6g==} - '@vitest/snapshot@1.5.0': - resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + '@vitest/snapshot@1.5.2': + resolution: {integrity: sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==} - '@vitest/spy@1.5.0': - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + '@vitest/spy@1.5.2': + resolution: {integrity: sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==} - '@vitest/utils@1.5.0': - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + '@vitest/utils@1.5.2': + resolution: {integrity: sha512-sWOmyofuXLJ85VvXNsroZur7mOJGiQeM0JN3/0D1uU8U9bGFM69X1iqHaRXl6R8BwaLY6yPCogP257zxTzkUdA==} '@vue/consolidate@1.0.0': resolution: {integrity: sha512-oTyUE+QHIzLw2PpV14GD/c7EohDyP64xCniWTcqcEmTd699eFqTIwOmtDYjcO1j3QgdXoJEoWv1/cCdLrRoOfg==} engines: {node: '>= 0.12.0'} - '@vue/repl@4.1.1': - resolution: {integrity: sha512-gkbnU+rM01/ILdnDJbsWS8+PW6qMAzprBo/U2+7eVci0kx6VAR26fL/qrcEPwEYa6q0vzzptZ4il0SaUGGqZKw==} + '@vue/repl@4.1.2': + resolution: {integrity: sha512-h5JQ5NRN9HOCNfE4QCbZsFgAFS7/A21V3zrltxV2Uag1JIvtQb68qfmj795CPFjMBnRNpCddOBi34AKlq5yHbg==} - '@zeit/schemas@2.29.0': - resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} + '@zeit/schemas@2.36.0': + resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -1196,8 +1307,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -1395,8 +1506,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chromium-bidi@0.5.17: - resolution: {integrity: sha512-BqOuIWUgTPj8ayuBFJUYCCuwIcwjBsb3/614P7tt1bEPJ4i1M0kCdIl0Wi9xhtswBXnfO2bTpTMkHD71H8rJMg==} + chromium-bidi@0.5.19: + resolution: {integrity: sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==} peerDependencies: devtools-protocol: '*' @@ -1636,8 +1747,8 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - devtools-protocol@0.0.1262051: - resolution: {integrity: sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g==} + devtools-protocol@0.0.1273771: + resolution: {integrity: sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og==} diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -1743,8 +1854,8 @@ packages: peerDependencies: eslint: ^8.56.0 || ^9.0.0-0 - eslint-plugin-vitest@0.5.3: - resolution: {integrity: sha512-D0iu6ppP6FmNSZP4cdhEXqyI+fuW6JwwWdECRrNymd1jiVgUmDgSvtryytonNxHQQWhGNmZM3V/qvpXttH1rRQ==} + eslint-plugin-vitest@0.5.4: + resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': '*' @@ -1768,8 +1879,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.0.0: - resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + eslint@9.1.1: + resolution: {integrity: sha512-b4cRQ0BeZcSEzPpY2PjFY70VbO32K7BStTGtBsnIGdTSEEQzBi8hPBcGQmTG2zUvFr9uLe0TK42bw8YszuHEqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -2785,12 +2896,12 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@22.6.5: - resolution: {integrity: sha512-s0/5XkAWe0/dWISiljdrybjwDCHhgN31Nu/wznOZPKeikgcJtZtbvPKBz0t802XWqfSQnQDt3L6xiAE5JLlfuw==} + puppeteer-core@22.7.1: + resolution: {integrity: sha512-jD7T7yN7PWGuJmNT0TAEboA26s0VVnvbgCxqgQIF+eNQW2u71ENaV2JwzSJiCHO+e72H4Ue6AgKD9USQ8xAcOQ==} engines: {node: '>=18'} - puppeteer@22.6.5: - resolution: {integrity: sha512-YuoRKGj3MxHhUwrey7vmNvU4odGdUdNsj1ee8pfcqQlLWIXfMOXZCAXh8xdzpZESHH3tCGWp2xmPZE8E6iUEWg==} + puppeteer@22.7.1: + resolution: {integrity: sha512-JBCBCwQ9+dyPp5haqeecgv0N0vgWFx44woUeKJaPeJT8CU3RXrd8F/tqJQbuAmcWlbMhYJSlTJkIFrwVAs6BNA==} engines: {node: '>=18'} hasBin: true @@ -2905,6 +3016,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.17.1: + resolution: {integrity: sha512-0gG94inrUtg25sB2V/pApwiv1lUb0bQ25FPNuzO89Baa+B+c0ccaaBKM5zkZV/12pUUdH+lWCSm9wmHqyocuVQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -2944,8 +3060,8 @@ packages: serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} - serve@14.2.1: - resolution: {integrity: sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA==} + serve@14.2.3: + resolution: {integrity: sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==} engines: {node: '>= 14'} hasBin: true @@ -3129,8 +3245,8 @@ packages: resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==} engines: {node: '>=14.18'} - terser@5.30.3: - resolution: {integrity: sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==} + terser@5.30.4: + resolution: {integrity: sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==} engines: {node: '>=10'} hasBin: true @@ -3191,8 +3307,8 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - tsx@4.7.2: - resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==} + tsx@4.7.3: + resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -3216,8 +3332,8 @@ packages: resolution: {integrity: sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==} engines: {node: '>=16'} - typescript-eslint@7.7.0: - resolution: {integrity: sha512-wZZ+7mTQJCn4mGAvzdERtL4vwKGM/mF9cMSMeKUllz3Hgbd1Mdd5L60Q+nJmCio9RB4OyMMr0EX4Ry2Q7jiAyw==} + typescript-eslint@7.7.1: + resolution: {integrity: sha512-ykEBfa3xx3odjZy6GRED4SCPrjo0rgHwstLlEgLX4EMEuv7QeIDSmfV+S6Kk+XkbsYn4BDEcPvsci1X26lRpMQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3281,8 +3397,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-node@1.5.0: - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + vite-node@1.5.2: + resolution: {integrity: sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3314,15 +3430,15 @@ packages: terser: optional: true - vitest@1.5.0: - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + vitest@1.5.2: + resolution: {integrity: sha512-l9gwIkq16ug3xY7BxHwcBQovLZG75zZL0PlsiYQbf76Rz6QGs54416UWMtC0jXeihvHvcHrf2ROEjkQRVpoZYw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 + '@vitest/browser': 1.5.2 + '@vitest/ui': 1.5.2 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3598,11 +3714,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))': + '@codspeed/vitest-plugin@3.1.0(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4))(vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4))': dependencies: '@codspeed/core': 3.1.0 - vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3) - vitest: 1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3) + vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + vitest: 1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4) transitivePeerDependencies: - debug @@ -3744,9 +3860,9 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.0.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.1.1)': dependencies: - eslint: 9.0.0 + eslint: 9.1.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} @@ -3765,9 +3881,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.0.0': {} + '@eslint/js@9.1.1': {} - '@humanwhocodes/config-array@0.12.3': + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 @@ -3779,6 +3895,8 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.2.3': {} + '@hutson/parse-repository-url@5.0.0': {} '@isaacs/cliui@8.0.2': @@ -3835,7 +3953,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@puppeteer/browsers@2.2.2': + '@puppeteer/browsers@2.2.3': dependencies: debug: 4.3.4 extract-zip: 2.0.1 @@ -3848,119 +3966,167 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-alias@5.1.0(rollup@4.16.1)': + '@rollup/plugin-alias@5.1.0(rollup@4.17.1)': dependencies: slash: 4.0.0 optionalDependencies: - rollup: 4.16.1 + rollup: 4.17.1 - '@rollup/plugin-commonjs@25.0.7(rollup@4.16.1)': + '@rollup/plugin-commonjs@25.0.7(rollup@4.17.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.16.1) + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.10 optionalDependencies: - rollup: 4.16.1 + rollup: 4.17.1 - '@rollup/plugin-inject@5.0.5(rollup@4.16.1)': + '@rollup/plugin-inject@5.0.5(rollup@4.17.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.16.1) + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) estree-walker: 2.0.2 magic-string: 0.30.10 optionalDependencies: - rollup: 4.16.1 + rollup: 4.17.1 - '@rollup/plugin-json@6.1.0(rollup@4.16.1)': + '@rollup/plugin-json@6.1.0(rollup@4.17.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.16.1) + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) optionalDependencies: - rollup: 4.16.1 + rollup: 4.17.1 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.16.1)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.17.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.16.1) + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) '@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.16.1 + rollup: 4.17.1 - '@rollup/plugin-replace@5.0.4(rollup@4.16.1)': + '@rollup/plugin-replace@5.0.4(rollup@4.17.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.16.1) + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) magic-string: 0.30.10 optionalDependencies: - rollup: 4.16.1 + rollup: 4.17.1 - '@rollup/plugin-terser@0.4.4(rollup@4.16.1)': + '@rollup/plugin-terser@0.4.4(rollup@4.17.1)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.30.3 + terser: 5.30.4 optionalDependencies: - rollup: 4.16.1 + rollup: 4.17.1 - '@rollup/pluginutils@5.1.0(rollup@4.16.1)': + '@rollup/pluginutils@5.1.0(rollup@4.17.1)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.16.1 + rollup: 4.17.1 '@rollup/rollup-android-arm-eabi@4.16.1': optional: true + '@rollup/rollup-android-arm-eabi@4.17.1': + optional: true + '@rollup/rollup-android-arm64@4.16.1': optional: true + '@rollup/rollup-android-arm64@4.17.1': + optional: true + '@rollup/rollup-darwin-arm64@4.16.1': optional: true + '@rollup/rollup-darwin-arm64@4.17.1': + optional: true + '@rollup/rollup-darwin-x64@4.16.1': optional: true + '@rollup/rollup-darwin-x64@4.17.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.16.1': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.17.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.16.1': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.17.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.16.1': optional: true + '@rollup/rollup-linux-arm64-gnu@4.17.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.16.1': optional: true + '@rollup/rollup-linux-arm64-musl@4.17.1': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.16.1': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.17.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.16.1': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.17.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.16.1': optional: true + '@rollup/rollup-linux-s390x-gnu@4.17.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.16.1': optional: true + '@rollup/rollup-linux-x64-gnu@4.17.1': + optional: true + '@rollup/rollup-linux-x64-musl@4.16.1': optional: true + '@rollup/rollup-linux-x64-musl@4.17.1': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.16.1': optional: true + '@rollup/rollup-win32-arm64-msvc@4.17.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.16.1': optional: true + '@rollup/rollup-win32-ia32-msvc@4.17.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.16.1': optional: true + '@rollup/rollup-win32-x64-msvc@4.17.1': + optional: true + '@sinclair/typebox@0.27.8': {} '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -3988,16 +4154,16 @@ snapshots: '@types/node': 20.12.7 optional: true - '@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@9.0.0)(typescript@5.4.5))(eslint@9.0.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1(eslint@9.1.1)(typescript@5.4.5))(eslint@9.1.1)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/type-utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 - eslint: 9.0.0 + eslint: 9.1.1 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -4008,14 +4174,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.7.0(eslint@9.0.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.7.1(eslint@9.1.1)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 - eslint: 9.0.0 + eslint: 9.1.1 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -4026,12 +4192,17 @@ snapshots: '@typescript-eslint/types': 7.7.0 '@typescript-eslint/visitor-keys': 7.7.0 - '@typescript-eslint/type-utils@7.7.0(eslint@9.0.0)(typescript@5.4.5)': + '@typescript-eslint/scope-manager@7.7.1': dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 + + '@typescript-eslint/type-utils@7.7.1(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) debug: 4.3.4 - eslint: 9.0.0 + eslint: 9.1.1 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -4040,6 +4211,8 @@ snapshots: '@typescript-eslint/types@7.7.0': {} + '@typescript-eslint/types@7.7.1': {} + '@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.7.0 @@ -4055,15 +4228,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.7.0(eslint@9.0.0)(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.7.0(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.7.0 '@typescript-eslint/types': 7.7.0 '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - eslint: 9.0.0 + eslint: 9.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.7.1(eslint@9.1.1)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + eslint: 9.1.1 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -4074,12 +4276,17 @@ snapshots: '@typescript-eslint/types': 7.7.0 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3))(vue@packages+vue)': + '@typescript-eslint/visitor-keys@7.7.1': dependencies: - vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3) + '@typescript-eslint/types': 7.7.1 + eslint-visitor-keys: 3.4.3 + + '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4))(vue@packages+vue)': + dependencies: + vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) vue: link:packages/vue - '@vitest/coverage-istanbul@1.5.0(vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3))': + '@vitest/coverage-istanbul@1.5.2(vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4))': dependencies: debug: 4.3.4 istanbul-lib-coverage: 3.2.2 @@ -4090,33 +4297,33 @@ snapshots: magicast: 0.3.4 picocolors: 1.0.0 test-exclude: 6.0.0 - vitest: 1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3) + vitest: 1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4) transitivePeerDependencies: - supports-color - '@vitest/expect@1.5.0': + '@vitest/expect@1.5.2': dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/spy': 1.5.2 + '@vitest/utils': 1.5.2 chai: 4.4.1 - '@vitest/runner@1.5.0': + '@vitest/runner@1.5.2': dependencies: - '@vitest/utils': 1.5.0 + '@vitest/utils': 1.5.2 p-limit: 5.0.0 pathe: 1.1.2 - '@vitest/snapshot@1.5.0': + '@vitest/snapshot@1.5.2': dependencies: magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 - '@vitest/spy@1.5.0': + '@vitest/spy@1.5.2': dependencies: tinyspy: 2.2.1 - '@vitest/utils@1.5.0': + '@vitest/utils@1.5.2': dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -4125,9 +4332,9 @@ snapshots: '@vue/consolidate@1.0.0': {} - '@vue/repl@4.1.1': {} + '@vue/repl@4.1.2': {} - '@zeit/schemas@2.29.0': {} + '@zeit/schemas@2.36.0': {} JSONStream@1.3.5: dependencies: @@ -4164,7 +4371,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.11.0: + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -4266,7 +4473,7 @@ snapshots: dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 - chalk: 5.0.1 + chalk: 5.3.0 cli-boxes: 3.0.0 string-width: 5.1.2 type-fest: 2.19.0 @@ -4371,9 +4578,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chromium-bidi@0.5.17(devtools-protocol@0.0.1262051): + chromium-bidi@0.5.19(devtools-protocol@0.0.1273771): dependencies: - devtools-protocol: 0.0.1262051 + devtools-protocol: 0.0.1273771 mitt: 3.0.1 urlpattern-polyfill: 10.0.0 zod: 3.22.4 @@ -4607,7 +4814,7 @@ snapshots: delayed-stream@1.0.0: {} - devtools-protocol@0.0.1262051: {} + devtools-protocol@0.0.1273771: {} diff-sequences@29.6.3: {} @@ -4740,12 +4947,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@0.5.0(eslint@9.0.0)(typescript@5.4.5): + eslint-plugin-import-x@0.5.0(eslint@9.1.1)(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.1.1)(typescript@5.4.5) debug: 4.3.4 doctrine: 3.0.0 - eslint: 9.0.0 + eslint: 9.1.1 eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.3 is-glob: 4.0.3 @@ -4755,12 +4962,12 @@ snapshots: - supports-color - typescript - eslint-plugin-vitest@0.5.3(eslint@9.0.0)(typescript@5.4.5)(vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3)): + eslint-plugin-vitest@0.5.4(eslint@9.1.1)(typescript@5.4.5)(vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4)): dependencies: - '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - eslint: 9.0.0 + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + eslint: 9.1.1 optionalDependencies: - vitest: 1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3) + vitest: 1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4) transitivePeerDependencies: - supports-color - typescript @@ -4774,14 +4981,15 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.0.0: + eslint@9.1.1: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 3.0.2 - '@eslint/js': 9.0.0 - '@humanwhocodes/config-array': 0.12.3 + '@eslint/js': 9.1.1 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.2.3 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 @@ -4797,7 +5005,6 @@ snapshots: file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -5858,24 +6065,24 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@22.6.5: + puppeteer-core@22.7.1: dependencies: - '@puppeteer/browsers': 2.2.2 - chromium-bidi: 0.5.17(devtools-protocol@0.0.1262051) + '@puppeteer/browsers': 2.2.3 + chromium-bidi: 0.5.19(devtools-protocol@0.0.1273771) debug: 4.3.4 - devtools-protocol: 0.0.1262051 + devtools-protocol: 0.0.1273771 ws: 8.16.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - puppeteer@22.6.5(typescript@5.4.5): + puppeteer@22.7.1(typescript@5.4.5): dependencies: - '@puppeteer/browsers': 2.2.2 + '@puppeteer/browsers': 2.2.3 cosmiconfig: 9.0.0(typescript@5.4.5) - devtools-protocol: 0.0.1262051 - puppeteer-core: 22.6.5 + devtools-protocol: 0.0.1273771 + puppeteer-core: 22.7.1 transitivePeerDependencies: - bufferutil - supports-color @@ -5973,29 +6180,29 @@ snapshots: dependencies: glob: 10.3.12 - rollup-plugin-dts@6.1.0(rollup@4.16.1)(typescript@5.4.5): + rollup-plugin-dts@6.1.0(rollup@4.17.1)(typescript@5.4.5): dependencies: magic-string: 0.30.10 - rollup: 4.16.1 + rollup: 4.17.1 typescript: 5.4.5 optionalDependencies: '@babel/code-frame': 7.24.2 - rollup-plugin-esbuild@6.1.1(esbuild@0.20.2)(rollup@4.16.1): + rollup-plugin-esbuild@6.1.1(esbuild@0.20.2)(rollup@4.17.1): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.16.1) + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) debug: 4.3.4 es-module-lexer: 1.5.0 esbuild: 0.20.2 get-tsconfig: 4.7.3 - rollup: 4.16.1 + rollup: 4.17.1 transitivePeerDependencies: - supports-color - rollup-plugin-polyfill-node@0.13.0(rollup@4.16.1): + rollup-plugin-polyfill-node@0.13.0(rollup@4.17.1): dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.16.1) - rollup: 4.16.1 + '@rollup/plugin-inject': 5.0.5(rollup@4.17.1) + rollup: 4.17.1 rollup@4.16.1: dependencies: @@ -6019,6 +6226,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.16.1 fsevents: 2.3.3 + rollup@4.17.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.17.1 + '@rollup/rollup-android-arm64': 4.17.1 + '@rollup/rollup-darwin-arm64': 4.17.1 + '@rollup/rollup-darwin-x64': 4.17.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.17.1 + '@rollup/rollup-linux-arm-musleabihf': 4.17.1 + '@rollup/rollup-linux-arm64-gnu': 4.17.1 + '@rollup/rollup-linux-arm64-musl': 4.17.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.17.1 + '@rollup/rollup-linux-riscv64-gnu': 4.17.1 + '@rollup/rollup-linux-s390x-gnu': 4.17.1 + '@rollup/rollup-linux-x64-gnu': 4.17.1 + '@rollup/rollup-linux-x64-musl': 4.17.1 + '@rollup/rollup-win32-arm64-msvc': 4.17.1 + '@rollup/rollup-win32-ia32-msvc': 4.17.1 + '@rollup/rollup-win32-x64-msvc': 4.17.1 + fsevents: 2.3.3 + rrweb-cssom@0.6.0: {} run-parallel@1.2.0: @@ -6062,10 +6291,10 @@ snapshots: path-to-regexp: 2.2.1 range-parser: 1.2.0 - serve@14.2.1: + serve@14.2.3: dependencies: - '@zeit/schemas': 2.29.0 - ajv: 8.11.0 + '@zeit/schemas': 2.36.0 + ajv: 8.12.0 arg: 5.0.2 boxen: 7.0.0 chalk: 5.0.1 @@ -6252,7 +6481,7 @@ snapshots: dependencies: temp-dir: 3.0.0 - terser@5.30.3: + terser@5.30.4: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.11.3 @@ -6304,7 +6533,7 @@ snapshots: tslib@2.6.2: {} - tsx@4.7.2: + tsx@4.7.3: dependencies: esbuild: 0.19.12 get-tsconfig: 4.7.3 @@ -6323,12 +6552,12 @@ snapshots: type-fest@4.15.0: {} - typescript-eslint@7.7.0(eslint@9.0.0)(typescript@5.4.5): + typescript-eslint@7.7.1(eslint@9.1.1)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 7.7.0(@typescript-eslint/parser@7.7.0(eslint@9.0.0)(typescript@5.4.5))(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) - eslint: 9.0.0 + '@typescript-eslint/eslint-plugin': 7.7.1(@typescript-eslint/parser@7.7.1(eslint@9.1.1)(typescript@5.4.5))(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + eslint: 9.1.1 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -6383,13 +6612,13 @@ snapshots: vary@1.1.2: {} - vite-node@1.5.0(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3): + vite-node@1.5.2(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3) + vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) transitivePeerDependencies: - '@types/node' - less @@ -6400,7 +6629,7 @@ snapshots: - supports-color - terser - vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3): + vite@5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4): dependencies: esbuild: 0.20.2 postcss: 8.4.38 @@ -6409,15 +6638,15 @@ snapshots: '@types/node': 20.12.7 fsevents: 2.3.3 sass: 1.75.0 - terser: 5.30.3 + terser: 5.30.4 - vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.3): + vitest@1.5.2(@types/node@20.12.7)(jsdom@24.0.0)(sass@1.75.0)(terser@5.30.4): dependencies: - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/expect': 1.5.2 + '@vitest/runner': 1.5.2 + '@vitest/snapshot': 1.5.2 + '@vitest/spy': 1.5.2 + '@vitest/utils': 1.5.2 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 @@ -6430,8 +6659,8 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.7.0 tinypool: 0.8.4 - vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3) - vite-node: 1.5.0(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.3) + vite: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + vite-node: 1.5.2(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.12.7