diff --git a/CHANGELOG.md b/CHANGELOG.md index df937563e..7137878dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +## [3.4.30](https://github.com/vuejs/core/compare/v3.4.29...v3.4.30) (2024-06-22) + + +### Bug Fixes + +* **compiler-core:** should not remove slot node with `v-else` ([#11150](https://github.com/vuejs/core/issues/11150)) ([e102670](https://github.com/vuejs/core/commit/e102670bde00417c3a5b0262c855b297c0e4169e)) +* **hydration:** fix css vars hydration mismatch false positive on attr-fallthrough ([#11190](https://github.com/vuejs/core/issues/11190)) ([7ad67ce](https://github.com/vuejs/core/commit/7ad67ced26e5f53a47cb42f4834496e4958cb53b)), closes [#11188](https://github.com/vuejs/core/issues/11188) +* **hydration:** skip prop mismatch check for directives that mutate DOM in created ([3169c91](https://github.com/vuejs/core/commit/3169c914939d02a013b2938aff30dac8525923f8)), closes [#11189](https://github.com/vuejs/core/issues/11189) +* **reactivity:** fix side effect computed dirty level ([#11183](https://github.com/vuejs/core/issues/11183)) ([3bd79e3](https://github.com/vuejs/core/commit/3bd79e3e5ed960fc42cbf77bc61a97d2c03557c0)), closes [#11181](https://github.com/vuejs/core/issues/11181) [#11169](https://github.com/vuejs/core/issues/11169) +* **runtime-core:** ensure unmount dynamic components in optimized mode ([#11171](https://github.com/vuejs/core/issues/11171)) ([220fe24](https://github.com/vuejs/core/commit/220fe247484209e62c7f4991902c5335e29c5007)), closes [#11168](https://github.com/vuejs/core/issues/11168) +* **runtime-core:** update devtool __vnode on patch, avoid memory leak during dev ([a959781](https://github.com/vuejs/core/commit/a959781dd6f609dcb6f16dd7fa47d3b16895e5ca)), closes [#11192](https://github.com/vuejs/core/issues/11192) +* **runtime-dom:** ensure only symbols are explicitly stringified during attribute patching ([#11182](https://github.com/vuejs/core/issues/11182)) ([a2e35d6](https://github.com/vuejs/core/commit/a2e35d682db15a592f4270bb0cde70a0e7bdc4a6)), closes [#11177](https://github.com/vuejs/core/issues/11177) +* **runtime-dom:** prevent setting state as attribute for custom elements ([#11165](https://github.com/vuejs/core/issues/11165)) ([8ae4c29](https://github.com/vuejs/core/commit/8ae4c293adcec28f18114cb6016230a86787e6a9)), closes [#11163](https://github.com/vuejs/core/issues/11163) + + +### Performance Improvements + +* **reactivity:** cache tracking value ([#11145](https://github.com/vuejs/core/issues/11145)) ([7936dae](https://github.com/vuejs/core/commit/7936daebceab2ae9461c3b8f256e51020fb7d3ed)) + + + ## [3.4.29](https://github.com/vuejs/core/compare/v3.4.28...v3.4.29) (2024-06-14) diff --git a/package.json b/package.json index 0385ab26d..3783aa997 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "version": "3.0.0-vapor", - "packageManager": "pnpm@9.2.0", + "packageManager": "pnpm@9.3.0", "type": "module", "scripts": { "dev": "node scripts/dev.js vue vue-vapor", @@ -67,25 +67,25 @@ "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "5.0.4", - "@rollup/plugin-terser": "^0.4.4", + "@swc/core": "^1.6.1", "@types/hash-sum": "^1.0.2", "@types/minimist": "^1.2.5", "@types/node": "^20.14.2", "@types/semver": "^7.5.8", - "@vitest/coverage-istanbul": "^1.5.2", - "@vitest/ui": "^1.5.2", + "@vitest/coverage-istanbul": "^1.6.0", + "@vitest/ui": "^1.6.0", "@vue/consolidate": "1.0.0", "conventional-changelog-cli": "^4.1.0", "enquirer": "^2.4.1", "esbuild": "^0.21.5", "esbuild-plugin-polyfill-node": "^0.3.0", - "eslint": "^9.4.0", + "eslint": "^9.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-vitest": "^0.5.4", "estree-walker": "^2.0.2", "execa": "^9.2.0", - "jsdom": "^24.0.0", - "lint-staged": "^15.2.5", + "jsdom": "^24.1.0", + "lint-staged": "^15.2.7", "lodash": "^4.17.21", "magic-string": "^0.30.10", "markdown-table": "^3.0.3", @@ -93,10 +93,10 @@ "minimist": "^1.2.8", "npm-run-all2": "^6.2.0", "picocolors": "^1.0.1", - "prettier": "^3.3.1", + "prettier": "^3.3.2", "pretty-bytes": "^6.1.1", "pug": "^3.0.3", - "puppeteer": "~22.7.1", + "puppeteer": "~22.11.0", "rimraf": "^5.0.7", "rollup": "^4.18.0", "rollup-plugin-dts": "^6.1.1", @@ -108,11 +108,11 @@ "terser": "^5.31.1", "todomvc-app-css": "^2.4.3", "tslib": "^2.6.3", - "tsx": "^4.15.1", + "tsx": "^4.15.5", "typescript": "~5.4.5", - "typescript-eslint": "^7.12.0", - "vite": "^5.2.13", - "vitest": "^1.5.2" + "typescript-eslint": "^7.13.0", + "vite": "^5.3.1", + "vitest": "^1.6.0" }, "pnpm": { "peerDependencyRules": { diff --git a/packages/compiler-core/__tests__/transforms/vSlot.spec.ts b/packages/compiler-core/__tests__/transforms/vSlot.spec.ts index aa7b600cc..3afcf0fc0 100644 --- a/packages/compiler-core/__tests__/transforms/vSlot.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vSlot.spec.ts @@ -696,6 +696,7 @@ describe('compiler: transform component slots', () => { expect((root as any).children[0].codegenNode.patchFlag).toMatch( PatchFlags.DYNAMIC_SLOTS + '', ) + expect((root as any).children[0].children.length).toBe(3) expect(generate(root).code).toMatchSnapshot() }) diff --git a/packages/compiler-core/src/compat/transformFilter.ts b/packages/compiler-core/src/compat/transformFilter.ts index 52b381567..4791e6754 100644 --- a/packages/compiler-core/src/compat/transformFilter.ts +++ b/packages/compiler-core/src/compat/transformFilter.ts @@ -25,9 +25,7 @@ export const transformFilter: NodeTransform = (node, context) => { // filter rewrite is applied before expression transform so only // simple expressions are possible at this stage rewriteFilter(node.content, context) - } - - if (node.type === NodeTypes.ELEMENT) { + } else if (node.type === NodeTypes.ELEMENT) { node.props.forEach((prop: AttributeNode | DirectiveNode) => { if ( prop.type === NodeTypes.DIRECTIVE && diff --git a/packages/compiler-core/src/transforms/vSlot.ts b/packages/compiler-core/src/transforms/vSlot.ts index 1b95e6f71..db367f39c 100644 --- a/packages/compiler-core/src/transforms/vSlot.ts +++ b/packages/compiler-core/src/transforms/vSlot.ts @@ -226,10 +226,7 @@ export function buildSlots( break } } - if (prev && isTemplateNode(prev) && findDir(prev, 'if')) { - // remove node - children.splice(i, 1) - i-- + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { __TEST__ && assert(dynamicSlots.length > 0) // attach this slot to previous conditional let conditional = dynamicSlots[ diff --git a/packages/compiler-sfc/package.json b/packages/compiler-sfc/package.json index 7b23b5f00..7f421b1fa 100644 --- a/packages/compiler-sfc/package.json +++ b/packages/compiler-sfc/package.json @@ -63,6 +63,6 @@ "postcss-modules": "^6.0.0", "postcss-selector-parser": "^6.1.0", "pug": "^3.0.3", - "sass": "^1.77.4" + "sass": "^1.77.5" } } diff --git a/packages/reactivity/__tests__/computed.spec.ts b/packages/reactivity/__tests__/computed.spec.ts index dc3df3eaa..fbe321dca 100644 --- a/packages/reactivity/__tests__/computed.spec.ts +++ b/packages/reactivity/__tests__/computed.spec.ts @@ -853,6 +853,57 @@ describe('reactivity/computed', () => { expect(calls).toMatchObject(['b eval', 'mounted', 'b eval']) }) + it('should chained computeds keep reactivity when computed effect happens', async () => { + const v = ref('Hello') + const c = computed(() => { + v.value += ' World' + return v.value + }) + const d = computed(() => c.value) + const e = computed(() => d.value) + const Comp = { + setup: () => { + return () => d.value + ' | ' + e.value + }, + } + const root = nodeOps.createElement('div') + + render(h(Comp), root) + await nextTick() + expect(serializeInner(root)).toBe('Hello World | Hello World') + + v.value += ' World' + await nextTick() + expect(serializeInner(root)).toBe( + 'Hello World World World | Hello World World World', + ) + }) + + it('should keep dirty level when side effect computed value changed', () => { + const v = ref(0) + const c = computed(() => { + v.value += 1 + return v.value + }) + const d = computed(() => { + return { d: c.value } + }) + + const Comp = { + setup: () => { + return () => { + return [d.value.d, d.value.d] + } + }, + } + + const root = nodeOps.createElement('div') + render(h(Comp), root) + + expect(d.value.d).toBe(1) + expect(serializeInner(root)).toBe('11') + }) + it('debug: onTrigger (ref)', () => { let events: DebuggerEvent[] = [] const onTrigger = vi.fn((e: DebuggerEvent) => { diff --git a/packages/runtime-core/__tests__/apiInject.spec.ts b/packages/runtime-core/__tests__/apiInject.spec.ts index 485e688b1..e5c9267e5 100644 --- a/packages/runtime-core/__tests__/apiInject.spec.ts +++ b/packages/runtime-core/__tests__/apiInject.spec.ts @@ -13,7 +13,6 @@ import { } from '../src/index' import { createApp, nodeOps, render, serialize } from '@vue/runtime-test' -// reference: https://vue-composition-api-rfc.netlify.com/api.html#provide-inject describe('api: provide/inject', () => { it('string keys', () => { const Provider = { diff --git a/packages/runtime-core/__tests__/apiLifecycle.spec.ts b/packages/runtime-core/__tests__/apiLifecycle.spec.ts index 5a0da4d67..45ea3ac39 100644 --- a/packages/runtime-core/__tests__/apiLifecycle.spec.ts +++ b/packages/runtime-core/__tests__/apiLifecycle.spec.ts @@ -24,8 +24,6 @@ import { TriggerOpTypes, } from '@vue/reactivity' -// reference: https://vue-composition-api-rfc.netlify.com/api.html#lifecycle-hooks - describe('api: lifecycle hooks', () => { it('onBeforeMount', () => { const root = nodeOps.createElement('div') diff --git a/packages/runtime-core/__tests__/apiSetupContext.spec.ts b/packages/runtime-core/__tests__/apiSetupContext.spec.ts index c4a32a067..d3aab9ab2 100644 --- a/packages/runtime-core/__tests__/apiSetupContext.spec.ts +++ b/packages/runtime-core/__tests__/apiSetupContext.spec.ts @@ -12,8 +12,6 @@ import { watchEffect, } from '@vue/runtime-test' -// reference: https://vue-composition-api-rfc.netlify.com/api.html#setup - describe('api: setup context', () => { it('should expose return values to template render context', () => { const Comp = defineComponent({ diff --git a/packages/runtime-core/__tests__/apiWatch.spec.ts b/packages/runtime-core/__tests__/apiWatch.spec.ts index 8edc75239..db06f9c58 100644 --- a/packages/runtime-core/__tests__/apiWatch.spec.ts +++ b/packages/runtime-core/__tests__/apiWatch.spec.ts @@ -37,8 +37,6 @@ import { triggerRef, } from '@vue/reactivity' -// reference: https://vue-composition-api-rfc.netlify.com/api.html#watch - describe('api: watch', () => { it('effect', async () => { const state = reactive({ count: 0 }) diff --git a/packages/runtime-core/__tests__/hydration.spec.ts b/packages/runtime-core/__tests__/hydration.spec.ts index 241d7b394..0f37fe929 100644 --- a/packages/runtime-core/__tests__/hydration.spec.ts +++ b/packages/runtime-core/__tests__/hydration.spec.ts @@ -3,6 +3,7 @@ */ import { + type ObjectDirective, Suspense, Teleport, Transition, @@ -1674,5 +1675,45 @@ describe('SSR hydration', () => { app.mount(container) expect(`Hydration style mismatch`).not.toHaveBeenWarned() }) + + // #11188 + test('css vars support fallthrough', () => { + const container = document.createElement('div') + container.innerHTML = `
` + const app = createSSRApp({ + setup() { + useCssVars(() => ({ + foo: 'red', + })) + return () => h(Child) + }, + }) + const Child = { + setup() { + return () => h('div', { style: 'padding: 4px' }) + }, + } + app.mount(container) + expect(`Hydration style mismatch`).not.toHaveBeenWarned() + }) + + // #11189 + test('should not warn for directives that mutate DOM in created', () => { + const container = document.createElement('div') + container.innerHTML = `
` + const vColor: ObjectDirective = { + created(el, binding) { + el.classList.add(binding.value) + }, + } + const app = createSSRApp({ + setup() { + return () => + withDirectives(h('div', { class: 'test' }), [[vColor, 'red']]) + }, + }) + app.mount(container) + expect(`Hydration style mismatch`).not.toHaveBeenWarned() + }) }) }) diff --git a/packages/runtime-core/__tests__/rendererOptimizedMode.spec.ts b/packages/runtime-core/__tests__/rendererOptimizedMode.spec.ts index ef5bdbe01..556ab7520 100644 --- a/packages/runtime-core/__tests__/rendererOptimizedMode.spec.ts +++ b/packages/runtime-core/__tests__/rendererOptimizedMode.spec.ts @@ -487,6 +487,32 @@ describe('renderer: optimized mode', () => { expect(spy).toHaveBeenCalledTimes(1) }) + test('should call onUnmounted hook for dynamic components receiving an existing vnode w/ component children', async () => { + const spy = vi.fn() + const show = ref(1) + const Child = { + setup() { + onUnmounted(spy) + return () => 'child' + }, + } + const foo = h('div', null, h(Child)) + const app = createApp({ + render() { + return show.value + ? (openBlock(), + createBlock('div', null, [(openBlock(), createBlock(foo))])) + : createCommentVNode('v-if', true) + }, + }) + + app.mount(root) + show.value = 0 + await nextTick() + + expect(spy).toHaveBeenCalledTimes(1) + }) + // #2444 // `KEYED_FRAGMENT` and `UNKEYED_FRAGMENT` always need to diff its children test('non-stable Fragment always need to diff its children', () => { diff --git a/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts b/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts index 9f26bf9bd..799108dca 100644 --- a/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts +++ b/packages/runtime-core/__tests__/rendererTemplateRef.spec.ts @@ -10,8 +10,6 @@ import { shallowRef, } from '@vue/runtime-test' -// reference: https://vue-composition-api-rfc.netlify.com/api.html#template-refs - describe('api: template refs', () => { it('string ref mount', () => { const root = nodeOps.createElement('div') diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts index 7c3c75a6f..e9723f236 100644 --- a/packages/runtime-core/src/components/Suspense.ts +++ b/packages/runtime-core/src/components/Suspense.ts @@ -123,7 +123,6 @@ export const SuspenseImpl = { } }, hydrate: hydrateSuspense, - create: createSuspenseBoundary, normalize: normalizeSuspenseChildren, } diff --git a/packages/runtime-core/src/components/Teleport.ts b/packages/runtime-core/src/components/Teleport.ts index 8d174e202..a10ae84d4 100644 --- a/packages/runtime-core/src/components/Teleport.ts +++ b/packages/runtime-core/src/components/Teleport.ts @@ -250,7 +250,6 @@ export const TeleportImpl = { vnode: VNode, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, - optimized: boolean, { um: unmount, o: { remove: hostRemove } }: RendererInternals, doRemove: boolean, ) { diff --git a/packages/runtime-core/src/hydration.ts b/packages/runtime-core/src/hydration.ts index 4e8b9cdb9..aae87df84 100644 --- a/packages/runtime-core/src/hydration.ts +++ b/packages/runtime-core/src/hydration.ts @@ -17,6 +17,7 @@ import { warn } from './warning' import { PatchFlags, ShapeFlags, + def, includeBooleanAttr, isBooleanAttr, isKnownHtmlAttr, @@ -141,18 +142,8 @@ export function createHydrationFunctions( vnode.el = node if (__DEV__ || __FEATURE_PROD_DEVTOOLS__) { - if (!('__vnode' in node)) { - Object.defineProperty(node, '__vnode', { - value: vnode, - enumerable: false, - }) - } - if (!('__vueParentComponent' in node)) { - Object.defineProperty(node, '__vueParentComponent', { - value: parentComponent, - enumerable: false, - }) - } + def(node, '__vnode', vnode, true) + def(node, '__vueParentComponent', parentComponent, true) } if (patchFlag === PatchFlags.BAIL) { @@ -459,6 +450,9 @@ export function createHydrationFunctions( // check hydration mismatch if ( (__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && + // #11189 skip if this node has directives that have created hooks + // as it could have mutated the DOM in any possible way + !(dirs && dirs.some(d => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent) ) { logMismatchError() @@ -766,18 +760,8 @@ function propHasMismatch( } } - // eslint-disable-next-line no-restricted-syntax - const root = instance?.subTree - if ( - vnode === root || - // eslint-disable-next-line no-restricted-syntax - (root?.type === Fragment && (root.children as VNode[]).includes(vnode)) - ) { - // eslint-disable-next-line no-restricted-syntax - const cssVars = instance?.getCssVars?.() - for (const key in cssVars) { - expectedMap.set(`--${key}`, String(cssVars[key])) - } + if (instance) { + resolveCssVars(instance, vnode, expectedMap) } if (!isMapEqual(actualMap, expectedMap)) { @@ -854,10 +838,8 @@ function toStyleMap(str: string): Map { const styleMap: Map = new Map() for (const item of str.split(';')) { let [key, value] = item.split(':') - // eslint-disable-next-line no-restricted-syntax - key = key?.trim() - // eslint-disable-next-line no-restricted-syntax - value = value?.trim() + key = key.trim() + value = value && value.trim() if (key && value) { styleMap.set(key, value) } @@ -876,3 +858,26 @@ function isMapEqual(a: Map, b: Map): boolean { } return true } + +function resolveCssVars( + instance: ComponentInternalInstance, + vnode: VNode, + expectedMap: Map, +) { + const root = instance.subTree + if ( + instance.getCssVars && + (vnode === root || + (root && + root.type === Fragment && + (root.children as VNode[]).includes(vnode))) + ) { + const cssVars = instance.getCssVars() + for (const key in cssVars) { + expectedMap.set(`--${key}`, String(cssVars[key])) + } + } + if (vnode === root && instance.parent) { + resolveCssVars(instance.parent, instance.vnode, expectedMap) + } +} diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index 5a78885b1..b96996895 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -32,6 +32,7 @@ import { NOOP, PatchFlags, ShapeFlags, + def, getGlobalThis, invokeArrayFns, isArray, @@ -715,15 +716,10 @@ function baseCreateRenderer( } if (__DEV__ || __FEATURE_PROD_DEVTOOLS__) { - Object.defineProperty(el, '__vnode', { - value: vnode, - enumerable: false, - }) - Object.defineProperty(el, '__vueParentComponent', { - value: parentComponent, - enumerable: false, - }) + def(el, '__vnode', vnode, true) + def(el, '__vueParentComponent', parentComponent, true) } + if (dirs) { invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount') } @@ -824,6 +820,9 @@ function baseCreateRenderer( optimized: boolean, ) => { const el = (n2.el = n1.el!) + if (__DEV__ || __FEATURE_PROD_DEVTOOLS__) { + el.__vnode = n2 + } let { patchFlag, dynamicChildren, dirs } = n2 // #1426 take the old vnode's patch flag into account since user may clone a // compiler-generated vnode, which de-opts to FULL_PROPS @@ -2126,6 +2125,11 @@ function baseCreateRenderer( dirs, memoIndex, } = vnode + + if (patchFlag === PatchFlags.BAIL) { + optimized = false + } + // unset ref if (ref != null) { setRef(ref, null, parentSuspense, vnode, true) @@ -2169,7 +2173,6 @@ function baseCreateRenderer( vnode, parentComponent, parentSuspense, - optimized, internals, doRemove, ) diff --git a/packages/runtime-dom/__tests__/customElement.spec.ts b/packages/runtime-dom/__tests__/customElement.spec.ts index d8aad9c0a..f503b2c02 100644 --- a/packages/runtime-dom/__tests__/customElement.spec.ts +++ b/packages/runtime-dom/__tests__/customElement.spec.ts @@ -9,6 +9,7 @@ import { inject, nextTick, ref, + render, renderSlot, } from '../src' @@ -141,6 +142,7 @@ describe('defineCustomElement', () => { foo: [String, null], bar: Object, bazQux: null, + value: null, }, render() { return [ @@ -151,6 +153,12 @@ describe('defineCustomElement', () => { }) customElements.define('my-el-props', E) + test('renders custom element w/ correct object prop value', () => { + render(h('my-el-props', { value: { x: 1 } }), container) + const el = container.children[0] + expect((el as any).value).toEqual({ x: 1 }) + }) + test('props via attribute', async () => { // bazQux should map to `baz-qux` attribute container.innerHTML = `` diff --git a/packages/runtime-dom/__tests__/patchAttrs.spec.ts b/packages/runtime-dom/__tests__/patchAttrs.spec.ts index 8436bbb4f..393b685b0 100644 --- a/packages/runtime-dom/__tests__/patchAttrs.spec.ts +++ b/packages/runtime-dom/__tests__/patchAttrs.spec.ts @@ -69,4 +69,23 @@ describe('runtime-dom: attrs patching', () => { patchProp(el, 'value', null, symbol) expect(el.value).toBe(symbol.toString()) }) + + // #11177 + test('should allow setting value to object, leaving stringification to the element/browser', () => { + // normal behavior + const el = document.createElement('div') + const obj = { toString: () => 'foo' } + patchProp(el, 'data-test', null, obj) + expect(el.dataset.test).toBe('foo') + + const el2 = document.createElement('div') + let testvalue: null | typeof obj = null + // simulating a web component that implements its own setAttribute handler + el2.setAttribute = (name, value) => { + testvalue = value + } + patchProp(el2, 'data-test', null, obj) + expect(el2.dataset.test).toBe(undefined) + expect(testvalue).toBe(obj) + }) }) diff --git a/packages/runtime-dom/src/modules/attrs.ts b/packages/runtime-dom/src/modules/attrs.ts index 3cc3468a7..6e411f5b2 100644 --- a/packages/runtime-dom/src/modules/attrs.ts +++ b/packages/runtime-dom/src/modules/attrs.ts @@ -2,6 +2,7 @@ import { NOOP, includeBooleanAttr, isSpecialBooleanAttr, + isSymbol, makeMap, } from '@vue/shared' import { @@ -37,7 +38,10 @@ export function patchAttr( el.removeAttribute(key) } else { // attribute value is a string https://html.spec.whatwg.org/multipage/dom.html#attributes - el.setAttribute(key, isBoolean ? '' : String(value)) + el.setAttribute( + key, + isBoolean ? '' : isSymbol(value) ? String(value) : value, + ) } } } diff --git a/packages/runtime-dom/src/patchProp.ts b/packages/runtime-dom/src/patchProp.ts index 3af9be6b6..eff4dd75b 100644 --- a/packages/runtime-dom/src/patchProp.ts +++ b/packages/runtime-dom/src/patchProp.ts @@ -53,7 +53,11 @@ export const patchProp: DOMRendererOptions['patchProp'] = ( ) // #6007 also set form state as attributes so they work with // or libs / extensions that expect attributes - if (key === 'value' || key === 'checked' || key === 'selected') { + // #11163 custom elements may use value as an prop and set it as object + if ( + !el.tagName.includes('-') && + (key === 'value' || key === 'checked' || key === 'selected') + ) { patchAttr(el, key, nextValue, isSVG, parentComponent, key !== 'value') } } else { diff --git a/packages/sfc-playground/package.json b/packages/sfc-playground/package.json index bad9962d0..98f2a0012 100644 --- a/packages/sfc-playground/package.json +++ b/packages/sfc-playground/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^5.0.5", - "vite": "^5.2.13" + "vite": "^5.3.1" }, "dependencies": { "@vue/repl": "^4.2.1", diff --git a/packages/sfc-playground/src/download/template/package.json b/packages/sfc-playground/src/download/template/package.json index 128ed6f1e..540a5087c 100644 --- a/packages/sfc-playground/src/download/template/package.json +++ b/packages/sfc-playground/src/download/template/package.json @@ -12,6 +12,6 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^5.0.5", - "vite": "^5.2.13" + "vite": "^5.3.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c53c02b3f..7dd88e9f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 7.24.7 '@codspeed/vitest-plugin': specifier: ^3.1.0 - version: 3.1.0(vite@5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1))(vitest@1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1)) + version: 3.1.0(vite@5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1))(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1)) '@rollup/plugin-alias': specifier: ^5.1.0 version: 5.1.0(rollup@4.18.0) @@ -32,9 +32,9 @@ importers: '@rollup/plugin-replace': specifier: 5.0.4 version: 5.0.4(rollup@4.18.0) - '@rollup/plugin-terser': - specifier: ^0.4.4 - version: 0.4.4(rollup@4.18.0) + '@swc/core': + specifier: ^1.6.1 + version: 1.6.5 '@types/hash-sum': specifier: ^1.0.2 version: 1.0.2 @@ -48,11 +48,11 @@ importers: specifier: ^7.5.8 version: 7.5.8 '@vitest/coverage-istanbul': - specifier: ^1.5.2 - version: 1.5.2(vitest@1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1)) + specifier: ^1.6.0 + version: 1.6.0(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1)) '@vitest/ui': - specifier: ^1.5.2 - version: 1.6.0(vitest@1.5.2) + specifier: ^1.6.0 + version: 1.6.0(vitest@1.6.0) '@vue/consolidate': specifier: 1.0.0 version: 1.0.0 @@ -69,14 +69,14 @@ importers: specifier: ^0.3.0 version: 0.3.0(esbuild@0.21.5) eslint: - specifier: ^9.4.0 - version: 9.4.0 + specifier: ^9.5.0 + version: 9.5.0 eslint-plugin-import-x: specifier: ^0.5.1 - version: 0.5.1(eslint@9.4.0)(typescript@5.4.5) + version: 0.5.1(eslint@9.5.0)(typescript@5.4.5) eslint-plugin-vitest: specifier: ^0.5.4 - version: 0.5.4(eslint@9.4.0)(typescript@5.4.5)(vitest@1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1)) + version: 0.5.4(eslint@9.5.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1)) estree-walker: specifier: ^2.0.2 version: 2.0.2 @@ -84,11 +84,11 @@ importers: specifier: ^9.2.0 version: 9.2.0 jsdom: - specifier: ^24.0.0 - version: 24.0.0 + specifier: ^24.1.0 + version: 24.1.0 lint-staged: - specifier: ^15.2.5 - version: 15.2.5 + specifier: ^15.2.7 + version: 15.2.7 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -111,8 +111,8 @@ importers: specifier: ^1.0.1 version: 1.0.1 prettier: - specifier: ^3.3.1 - version: 3.3.1 + specifier: ^3.3.2 + version: 3.3.2 pretty-bytes: specifier: ^6.1.1 version: 6.1.1 @@ -120,8 +120,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 puppeteer: - specifier: ~22.7.1 - version: 22.7.1(typescript@5.4.5) + specifier: ~22.11.0 + version: 22.11.2(typescript@5.4.5) rimraf: specifier: ^5.0.7 version: 5.0.7 @@ -156,20 +156,20 @@ importers: specifier: ^2.6.3 version: 2.6.3 tsx: - specifier: ^4.15.1 - version: 4.15.1 + specifier: ^4.15.5 + version: 4.15.7 typescript: specifier: ~5.4.5 version: 5.4.5 typescript-eslint: - specifier: ^7.12.0 - version: 7.12.0(eslint@9.4.0)(typescript@5.4.5) + specifier: ^7.13.0 + version: 7.13.1(eslint@9.5.0)(typescript@5.4.5) vite: - specifier: ^5.2.13 - version: 5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + specifier: ^5.3.1 + version: 5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) vitest: - specifier: ^1.5.2 - version: 1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1) + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1) packages/compiler-core: dependencies: @@ -263,8 +263,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 sass: - specifier: ^1.77.4 - version: 1.77.4 + specifier: ^1.77.5 + version: 1.77.6 packages/compiler-ssr: dependencies: @@ -393,10 +393,10 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.0.5 - version: 5.0.5(vite@5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1))(vue@packages+vue) + version: 5.0.5(vite@5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1))(vue@packages+vue) vite: - specifier: ^5.2.13 - version: 5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + specifier: ^5.3.1 + version: 5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) packages/shared: {} @@ -471,16 +471,16 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: npm:@vue-vapor/vite-plugin-vue@0.0.0-alpha.4 - version: '@vue-vapor/vite-plugin-vue@0.0.0-alpha.4(vite@5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1))(vue@packages+vue)' + version: '@vue-vapor/vite-plugin-vue@0.0.0-alpha.4(vite@5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1))(vue@packages+vue)' vite: specifier: ^5.0.12 - version: 5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + version: 5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) vite-hyper-config: specifier: ^0.2.1 - version: 0.2.1(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1)) + version: 0.2.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1)) vite-plugin-inspect: specifier: ^0.7.42 - version: 0.7.42(rollup@4.18.0)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1)) + version: 0.7.42(rollup@4.18.0)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1)) packages: @@ -881,20 +881,20 @@ packages: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.15.1': - resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==} + '@eslint/config-array@0.16.0': + resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.4.0': - resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==} + '@eslint/js@9.5.0': + resolution: {integrity: sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.3': - resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==} + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanwhocodes/module-importer@1.0.1': @@ -1023,15 +1023,6 @@ packages: rollup: optional: true - '@rollup/plugin-terser@0.4.4': - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -1131,6 +1122,81 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} + '@swc/core-darwin-arm64@1.6.5': + resolution: {integrity: sha512-RGQhMdni2v1/ANQ/2K+F+QYdzaucekYBewZcX1ogqJ8G5sbPaBdYdDN1qQ4kHLCIkPtGP6qC7c71qPEqL2RidQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.6.5': + resolution: {integrity: sha512-/pSN0/Jtcbbb9+ovS9rKxR3qertpFAM3OEJr/+Dh/8yy7jK5G5EFPIrfsw/7Q5987ERPIJIH6BspK2CBB2tgcg==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.6.5': + resolution: {integrity: sha512-B0g/dROCE747RRegs/jPHuKJgwXLracDhnqQa80kFdgWEMjlcb7OMCgs5OX86yJGRS4qcYbiMGD0Pp7Kbqn3yw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.6.5': + resolution: {integrity: sha512-W8meapgXTq8AOtSvDG4yKR8ant2WWD++yOjgzAleB5VAC+oC+aa8YJROGxj8HepurU8kurqzcialwoMeq5SZZQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.6.5': + resolution: {integrity: sha512-jyCKqoX50Fg8rJUQqh4u5PqnE7nqYKXHjVH2WcYr114/MU21zlsI+YL6aOQU1XP8bJQ2gPQ1rnlnGJdEHiKS/w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.6.5': + resolution: {integrity: sha512-G6HmUn/RRIlXC0YYFfBz2qh6OZkHS/KUPkhoG4X9ADcgWXXjOFh6JrefwsYj8VBAJEnr5iewzjNfj+nztwHaeA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.6.5': + resolution: {integrity: sha512-AQpBjBnelQDSbeTJA50AXdS6+CP66LsXIMNTwhPSgUfE7Bx1ggZV11Fsi4Q5SGcs6a8Qw1cuYKN57ZfZC5QOuA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.6.5': + resolution: {integrity: sha512-MZTWM8kUwS30pVrtbzSGEXtek46aXNb/mT9D6rsS7NvOuv2w+qZhjR1rzf4LNbbn5f8VnR4Nac1WIOYZmfC5ng==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.6.5': + resolution: {integrity: sha512-WZdu4gISAr3yOm1fVwKhhk6+MrP7kVX0KMP7+ZQFTN5zXQEiDSDunEJKVgjMVj3vlR+6mnAqa/L0V9Qa8+zKlQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.6.5': + resolution: {integrity: sha512-ezXgucnMTzlFIxQZw7ls/5r2hseFaRoDL04cuXUOs97E8r+nJSmFsRQm/ygH5jBeXNo59nyZCalrjJAjwfgACA==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.6.5': + resolution: {integrity: sha512-tyVvUK/HDOUUsK6/GmWvnqUtD9oDpPUA4f7f7JCOV8hXxtfjMtAZeBKf93yrB1XZet69TDR7EN0hFC6i4MF0Ig==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.9': + resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} + '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -1164,8 +1230,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@7.12.0': - resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==} + '@typescript-eslint/eslint-plugin@7.13.1': + resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1175,8 +1241,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.12.0': - resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} + '@typescript-eslint/parser@7.13.1': + resolution: {integrity: sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1185,16 +1251,16 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.12.0': - resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} + '@typescript-eslint/scope-manager@7.13.1': + resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/scope-manager@7.8.0': resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.12.0': - resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==} + '@typescript-eslint/type-utils@7.13.1': + resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1203,16 +1269,16 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.12.0': - resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + '@typescript-eslint/types@7.13.1': + resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/types@7.8.0': resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.12.0': - resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + '@typescript-eslint/typescript-estree@7.13.1': + resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1229,8 +1295,8 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.12.0': - resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==} + '@typescript-eslint/utils@7.13.1': + resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1241,8 +1307,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.12.0': - resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + '@typescript-eslint/visitor-keys@7.13.1': + resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/visitor-keys@7.8.0': @@ -1256,31 +1322,28 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/coverage-istanbul@1.5.2': - resolution: {integrity: sha512-YGC+QSWOL8cQ2HQaTEFttmG9v3DGLy7lMZIGdqjtTgaW6omW17/uZPxuh6m2t69T0rFLqImduVthm5o/gYYWTQ==} + '@vitest/coverage-istanbul@1.6.0': + resolution: {integrity: sha512-h/BwpXehkkS0qsNCS00QxiupAqVkNi0WT19BR0dQvlge5oHghoSVLx63fABYFoKxVb7Ue7+k6V2KokmQ1zdMpg==} peerDependencies: - vitest: 1.5.2 + vitest: 1.6.0 - '@vitest/expect@1.5.2': - resolution: {integrity: sha512-rf7MTD1WCoDlN3FfYJ9Llfp0PbdtOMZ3FIF0AVkDnKbp3oiMW1c8AmvRZBcqbAhDUAvF52e9zx4WQM1r3oraVA==} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/runner@1.5.2': - resolution: {integrity: sha512-7IJ7sJhMZrqx7HIEpv3WrMYcq8ZNz9L6alo81Y6f8hV5mIE6yVZsFoivLZmr0D777klm1ReqonE9LyChdcmw6g==} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - '@vitest/snapshot@1.5.2': - resolution: {integrity: sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/spy@1.5.2': - resolution: {integrity: sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} '@vitest/ui@1.6.0': resolution: {integrity: sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==} peerDependencies: vitest: 1.6.0 - '@vitest/utils@1.5.2': - resolution: {integrity: sha512-sWOmyofuXLJ85VvXNsroZur7mOJGiQeM0JN3/0D1uU8U9bGFM69X1iqHaRXl6R8BwaLY6yPCogP257zxTzkUdA==} - '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} @@ -1558,8 +1621,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chromium-bidi@0.5.19: - resolution: {integrity: sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==} + chromium-bidi@0.5.23: + resolution: {integrity: sha512-1o/gLU9wDqbN5nL2MtfjykjOuighGXc3/hnWueO1haiEoFgX8h5vbvcA4tgdQfjw1mkZ1OEF4x/+HVeqEX6NoA==} peerDependencies: devtools-protocol: '*' @@ -1769,6 +1832,15 @@ packages: supports-color: optional: true + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -1811,8 +1883,8 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - devtools-protocol@0.0.1273771: - resolution: {integrity: sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og==} + devtools-protocol@0.0.1299070: + resolution: {integrity: sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==} diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -1946,8 +2018,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.4.0: - resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==} + eslint@9.5.0: + resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -2470,8 +2542,8 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@24.0.0: - resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + jsdom@24.1.0: + resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -2548,8 +2620,8 @@ packages: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lint-staged@15.2.5: - resolution: {integrity: sha512-j+DfX7W9YUvdzEZl3Rk47FhDF6xwDBV5wwsCPw6BwWZVPYJemusQmvb9bRsW23Sqsaa+vRloAWogbK4BUuU2zA==} + lint-staged@15.2.7: + resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==} engines: {node: '>=18.12.0'} hasBin: true @@ -2763,8 +2835,8 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -2948,8 +3020,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.3.1: - resolution: {integrity: sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==} + prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} engines: {node: '>=14'} hasBin: true @@ -3034,12 +3106,12 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@22.7.1: - resolution: {integrity: sha512-jD7T7yN7PWGuJmNT0TAEboA26s0VVnvbgCxqgQIF+eNQW2u71ENaV2JwzSJiCHO+e72H4Ue6AgKD9USQ8xAcOQ==} + puppeteer-core@22.11.2: + resolution: {integrity: sha512-vQo+YDuePyvj+92Z9cdtxi/HalKf+k/R4tE80nGtQqJRNqU81eHaHkbVfnLszdaLlvwFF5tipnnSCzqWlEddtw==} engines: {node: '>=18'} - puppeteer@22.7.1: - resolution: {integrity: sha512-JBCBCwQ9+dyPp5haqeecgv0N0vgWFx44woUeKJaPeJT8CU3RXrd8F/tqJQbuAmcWlbMhYJSlTJkIFrwVAs6BNA==} + puppeteer@22.11.2: + resolution: {integrity: sha512-8fjdQSgW0sq7471ftca24J7sXK+jXZ7OW7Gx+NEBFNyXrcTiBfukEI46gNq6hiMhbLEDT30NeylK/1ZoPdlKSA==} engines: {node: '>=18'} hasBin: true @@ -3052,9 +3124,6 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} @@ -3157,6 +3226,9 @@ packages: rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -3173,8 +3245,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.77.4: - resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==} + sass@1.77.6: + resolution: {integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==} engines: {node: '>=14.0.0'} hasBin: true @@ -3196,9 +3268,6 @@ packages: engines: {node: '>=10'} hasBin: true - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} @@ -3263,9 +3332,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smob@1.5.0: - resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} - socks-proxy-agent@8.0.3: resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} engines: {node: '>= 14'} @@ -3448,8 +3514,8 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} tr46@5.0.0: @@ -3465,8 +3531,8 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsx@4.15.1: - resolution: {integrity: sha512-k/6h17jA1KfUR7SpcteOa880zGmF56s8gMIcSqUR5avyNFi9nlCEKpMiHLrzrqyARGr52A/JablmGey1DEWbCA==} + tsx@4.15.7: + resolution: {integrity: sha512-u3H0iSFDZM3za+VxkZ1kywdCeHCn+8/qHQS1MNoO2sONDgD95HlWtt8aB23OzeTmFP9IU4/8bZUdg58Uu5J4cg==} engines: {node: '>=18.0.0'} hasBin: true @@ -3490,8 +3556,8 @@ packages: resolution: {integrity: sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==} engines: {node: '>=16'} - typescript-eslint@7.12.0: - resolution: {integrity: sha512-D6HKNbQcnNu3BaN4HkQCR16tgG8Q2AMUWPgvhrJksOXu+d6ys07yC06ONiV2kcsEfWC22voB6C3PvK2MqlBZ7w==} + typescript-eslint@7.13.1: + resolution: {integrity: sha512-pvLEuRs8iS9s3Cnp/Wt//hpK8nKc8hVa3cLljHqzaJJQYP8oys8GUyIFqtlev+2lT/fqMPcyQko+HJ6iYK3nFA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3570,8 +3636,8 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-node@1.5.2: - resolution: {integrity: sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==} + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3585,62 +3651,6 @@ packages: '@nuxt/kit': optional: true - vite@5.2.10: - resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vite@5.2.13: - resolution: {integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.2.9: resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3669,15 +3679,43 @@ packages: terser: optional: true - vitest@1.5.2: - resolution: {integrity: sha512-l9gwIkq16ug3xY7BxHwcBQovLZG75zZL0PlsiYQbf76Rz6QGs54416UWMtC0jXeihvHvcHrf2ROEjkQRVpoZYw==} + vite@5.3.1: + resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} 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.2 - '@vitest/ui': 1.5.2 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3765,8 +3803,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3822,8 +3860,8 @@ packages: resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==} engines: {node: '>=18'} - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} snapshots: @@ -3900,7 +3938,7 @@ snapshots: '@babel/helper-module-imports': 7.24.3 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-validator-identifier': 7.24.7 '@babel/helper-simple-access@7.22.5': dependencies: @@ -3973,11 +4011,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.0(vite@5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1))(vitest@1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1))': + '@codspeed/vitest-plugin@3.1.0(vite@5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1))(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1))': dependencies: '@codspeed/core': 3.1.0 - vite: 5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) - vitest: 1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1) + vite: 5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - debug @@ -4119,16 +4157,16 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.5.0)': dependencies: - eslint: 9.4.0 + eslint: 9.5.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} - '@eslint/config-array@0.15.1': + '@eslint/config-array@0.16.0': dependencies: - '@eslint/object-schema': 2.1.3 + '@eslint/object-schema': 2.1.4 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -4148,9 +4186,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.4.0': {} + '@eslint/js@9.5.0': {} - '@eslint/object-schema@2.1.3': {} + '@eslint/object-schema@2.1.4': {} '@humanwhocodes/module-importer@1.0.1': {} @@ -4276,14 +4314,6 @@ snapshots: optionalDependencies: rollup: 4.18.0 - '@rollup/plugin-terser@0.4.4(rollup@4.18.0)': - dependencies: - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.31.1 - optionalDependencies: - rollup: 4.18.0 - '@rollup/pluginutils@5.1.0(rollup@4.18.0)': dependencies: '@types/estree': 1.0.5 @@ -4346,6 +4376,58 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} + '@swc/core-darwin-arm64@1.6.5': + optional: true + + '@swc/core-darwin-x64@1.6.5': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.6.5': + optional: true + + '@swc/core-linux-arm64-gnu@1.6.5': + optional: true + + '@swc/core-linux-arm64-musl@1.6.5': + optional: true + + '@swc/core-linux-x64-gnu@1.6.5': + optional: true + + '@swc/core-linux-x64-musl@1.6.5': + optional: true + + '@swc/core-win32-arm64-msvc@1.6.5': + optional: true + + '@swc/core-win32-ia32-msvc@1.6.5': + optional: true + + '@swc/core-win32-x64-msvc@1.6.5': + optional: true + + '@swc/core@1.6.5': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.9 + optionalDependencies: + '@swc/core-darwin-arm64': 1.6.5 + '@swc/core-darwin-x64': 1.6.5 + '@swc/core-linux-arm-gnueabihf': 1.6.5 + '@swc/core-linux-arm64-gnu': 1.6.5 + '@swc/core-linux-arm64-musl': 1.6.5 + '@swc/core-linux-x64-gnu': 1.6.5 + '@swc/core-linux-x64-musl': 1.6.5 + '@swc/core-win32-arm64-msvc': 1.6.5 + '@swc/core-win32-ia32-msvc': 1.6.5 + '@swc/core-win32-x64-msvc': 1.6.5 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.9': + dependencies: + '@swc/counter': 0.1.3 + '@tootallnate/quickjs-emscripten@0.23.0': {} '@types/estree@1.0.5': {} @@ -4373,15 +4455,15 @@ snapshots: '@types/node': 20.14.2 optional: true - '@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.12.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/type-utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.12.0 - eslint: 9.4.0 + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.13.1 + eslint: 9.5.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -4391,49 +4473,49 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.12.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.13.1 debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.5.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.12.0': + '@typescript-eslint/scope-manager@7.13.1': dependencies: - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 '@typescript-eslint/scope-manager@7.8.0': dependencies: '@typescript-eslint/types': 7.8.0 '@typescript-eslint/visitor-keys': 7.8.0 - '@typescript-eslint/type-utils@7.12.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.13.1(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.5.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.12.0': {} + '@typescript-eslint/types@7.13.1': {} '@typescript-eslint/types@7.8.0': {} - '@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.13.1(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/visitor-keys': 7.12.0 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4460,34 +4542,34 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.12.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.13.1(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) - '@typescript-eslint/scope-manager': 7.12.0 - '@typescript-eslint/types': 7.12.0 - '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) - eslint: 9.4.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.8.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.8.0(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.8.0 '@typescript-eslint/types': 7.8.0 '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - eslint: 9.4.0 + eslint: 9.5.0 semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.12.0': + '@typescript-eslint/visitor-keys@7.13.1': dependencies: - '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/types': 7.13.1 eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@7.8.0': @@ -4495,12 +4577,12 @@ snapshots: '@typescript-eslint/types': 7.8.0 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-vue@5.0.5(vite@5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1))(vue@packages+vue)': + '@vitejs/plugin-vue@5.0.5(vite@5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1))(vue@packages+vue)': dependencies: - vite: 5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + vite: 5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) vue: link:packages/vue - '@vitest/coverage-istanbul@1.5.2(vitest@1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1))': + '@vitest/coverage-istanbul@1.6.0(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1))': dependencies: debug: 4.3.4 istanbul-lib-coverage: 3.2.2 @@ -4511,33 +4593,33 @@ snapshots: magicast: 0.3.4 picocolors: 1.0.1 test-exclude: 6.0.0 - vitest: 1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - supports-color - '@vitest/expect@1.5.2': + '@vitest/expect@1.6.0': dependencies: - '@vitest/spy': 1.5.2 - '@vitest/utils': 1.5.2 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 - '@vitest/runner@1.5.2': + '@vitest/runner@1.6.0': dependencies: - '@vitest/utils': 1.5.2 + '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 - '@vitest/snapshot@1.5.2': + '@vitest/snapshot@1.6.0': dependencies: magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 - '@vitest/spy@1.5.2': + '@vitest/spy@1.6.0': dependencies: tinyspy: 2.2.1 - '@vitest/ui@1.6.0(vitest@1.5.2)': + '@vitest/ui@1.6.0(vitest@1.6.0)': dependencies: '@vitest/utils': 1.6.0 fast-glob: 3.3.2 @@ -4546,14 +4628,7 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.1 sirv: 2.0.4 - vitest: 1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1) - - '@vitest/utils@1.5.2': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1) '@vitest/utils@1.6.0': dependencies: @@ -4562,9 +4637,9 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@vue-vapor/vite-plugin-vue@0.0.0-alpha.4(vite@5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1))(vue@packages+vue)': + '@vue-vapor/vite-plugin-vue@0.0.0-alpha.4(vite@5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1))(vue@packages+vue)': dependencies: - vite: 5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + vite: 5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) vue: link:packages/vue '@vue/consolidate@1.0.0': {} @@ -4844,12 +4919,12 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chromium-bidi@0.5.19(devtools-protocol@0.0.1273771): + chromium-bidi@0.5.23(devtools-protocol@0.0.1299070): dependencies: - devtools-protocol: 0.0.1273771 + devtools-protocol: 0.0.1299070 mitt: 3.0.1 urlpattern-polyfill: 10.0.0 - zod: 3.22.4 + zod: 3.23.8 cli-boxes@3.0.0: {} @@ -5054,6 +5129,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.5: + dependencies: + ms: 2.1.2 + decimal.js@10.4.3: {} deep-eql@4.1.3: @@ -5094,7 +5173,7 @@ snapshots: delayed-stream@1.0.0: {} - devtools-protocol@0.0.1273771: {} + devtools-protocol@0.0.1299070: {} diff-sequences@29.6.3: {} @@ -5229,12 +5308,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@0.5.1(eslint@9.4.0)(typescript@5.4.5): + eslint-plugin-import-x@0.5.1(eslint@9.5.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@9.5.0)(typescript@5.4.5) debug: 4.3.4 doctrine: 3.0.0 - eslint: 9.4.0 + eslint: 9.5.0 eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.5 is-glob: 4.0.3 @@ -5245,12 +5324,12 @@ snapshots: - supports-color - typescript - eslint-plugin-vitest@0.5.4(eslint@9.4.0)(typescript@5.4.5)(vitest@1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1)): + eslint-plugin-vitest@0.5.4(eslint@9.5.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1)): dependencies: - '@typescript-eslint/utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/utils': 7.8.0(eslint@9.5.0)(typescript@5.4.5) + eslint: 9.5.0 optionalDependencies: - vitest: 1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - supports-color - typescript @@ -5264,13 +5343,13 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.4.0: + eslint@9.5.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/config-array': 0.15.1 + '@eslint/config-array': 0.16.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.4.0 + '@eslint/js': 9.5.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -5827,7 +5906,7 @@ snapshots: jsbn@1.1.0: {} - jsdom@24.0.0: + jsdom@24.1.0: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -5837,18 +5916,18 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 + nwsapi: 2.2.10 parse5: 7.1.2 - rrweb-cssom: 0.6.0 + rrweb-cssom: 0.7.1 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.16.0 + ws: 8.17.1 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -5914,7 +5993,7 @@ snapshots: lines-and-columns@2.0.4: {} - lint-staged@15.2.5: + lint-staged@15.2.7: dependencies: chalk: 5.3.0 commander: 12.1.0 @@ -6114,7 +6193,7 @@ snapshots: dependencies: path-key: 4.0.0 - nwsapi@2.2.7: {} + nwsapi@2.2.10: {} object-assign@4.1.1: {} @@ -6302,7 +6381,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.3.1: {} + prettier@3.3.2: {} pretty-bytes@6.1.1: {} @@ -6419,24 +6498,24 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@22.7.1: + puppeteer-core@22.11.2: dependencies: '@puppeteer/browsers': 2.2.3 - chromium-bidi: 0.5.19(devtools-protocol@0.0.1273771) - debug: 4.3.4 - devtools-protocol: 0.0.1273771 - ws: 8.16.0 + chromium-bidi: 0.5.23(devtools-protocol@0.0.1299070) + debug: 4.3.5 + devtools-protocol: 0.0.1299070 + ws: 8.17.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - puppeteer@22.7.1(typescript@5.4.5): + puppeteer@22.11.2(typescript@5.4.5): dependencies: '@puppeteer/browsers': 2.2.3 cosmiconfig: 9.0.0(typescript@5.4.5) - devtools-protocol: 0.0.1273771 - puppeteer-core: 22.7.1 + devtools-protocol: 0.0.1299070 + puppeteer-core: 22.11.2 transitivePeerDependencies: - bufferutil - supports-color @@ -6449,10 +6528,6 @@ snapshots: queue-tick@1.0.1: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - range-parser@1.2.0: {} rc@1.2.8: @@ -6582,6 +6657,8 @@ snapshots: rrweb-cssom@0.6.0: {} + rrweb-cssom@0.7.1: {} + run-applescript@5.0.0: dependencies: execa: 5.1.1 @@ -6596,7 +6673,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.77.4: + sass@1.77.6: dependencies: chokidar: 3.6.0 immutable: 4.3.5 @@ -6614,10 +6691,6 @@ snapshots: semver@7.6.2: {} - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - serve-handler@6.1.5: dependencies: bytes: 3.0.0 @@ -6694,8 +6767,6 @@ snapshots: smart-buffer@4.2.0: {} - smob@1.5.0: {} - socks-proxy-agent@8.0.3: dependencies: agent-base: 7.1.1 @@ -6866,7 +6937,7 @@ snapshots: totalist@3.0.1: {} - tough-cookie@4.1.3: + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 @@ -6883,7 +6954,7 @@ snapshots: tslib@2.6.3: {} - tsx@4.15.1: + tsx@4.15.7: dependencies: esbuild: 0.21.5 get-tsconfig: 4.7.5 @@ -6902,12 +6973,12 @@ snapshots: type-fest@4.15.0: {} - typescript-eslint@7.12.0(eslint@9.4.0)(typescript@5.4.5): + typescript-eslint@7.13.1(eslint@9.5.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.12.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.4.5) + eslint: 9.5.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -6964,12 +7035,12 @@ snapshots: vary@1.1.2: {} - vite-hyper-config@0.2.1(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1)): + vite-hyper-config@0.2.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1)): dependencies: cac: 6.7.14 picocolors: 1.0.1 - vite: 5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) - vite-node: 1.5.0(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + vite: 5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) + vite-node: 1.5.0(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -6980,13 +7051,13 @@ snapshots: - supports-color - terser - vite-node@1.5.0(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1): + vite-node@1.5.0(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.2.10(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + vite: 5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -6997,13 +7068,13 @@ snapshots: - supports-color - terser - vite-node@1.5.2(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1): + vite-node@1.6.0(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + vite: 5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -7014,7 +7085,7 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.7.42(rollup@4.18.0)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1)): + vite-plugin-inspect@0.7.42(rollup@4.18.0)(vite@5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1)): dependencies: '@antfu/utils': 0.7.7 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -7024,12 +7095,12 @@ snapshots: open: 9.1.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + vite: 5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - rollup - supports-color - vite@5.2.10(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1): + vite@5.2.9(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1): dependencies: esbuild: 0.20.2 postcss: 8.4.38 @@ -7037,38 +7108,27 @@ snapshots: optionalDependencies: '@types/node': 20.14.2 fsevents: 2.3.3 - sass: 1.77.4 + sass: 1.77.6 terser: 5.31.1 - vite@5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1): + vite@5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1): dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 postcss: 8.4.38 rollup: 4.18.0 optionalDependencies: '@types/node': 20.14.2 fsevents: 2.3.3 - sass: 1.77.4 + sass: 1.77.6 terser: 5.31.1 - vite@5.2.9(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1): + vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.6)(terser@5.31.1): dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 20.14.2 - fsevents: 2.3.3 - sass: 1.77.4 - terser: 5.31.1 - - vitest@1.5.2(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.0.0)(sass@1.77.4)(terser@5.31.1): - dependencies: - '@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 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 @@ -7081,13 +7141,13 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.7.0 tinypool: 0.8.4 - vite: 5.2.13(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) - vite-node: 1.5.2(@types/node@20.14.2)(sass@1.77.4)(terser@5.31.1) + vite: 5.3.1(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) + vite-node: 1.6.0(@types/node@20.14.2)(sass@1.77.6)(terser@5.31.1) why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.14.2 - '@vitest/ui': 1.6.0(vitest@1.5.2) - jsdom: 24.0.0 + '@vitest/ui': 1.6.0(vitest@1.6.0) + jsdom: 24.1.0 transitivePeerDependencies: - less - lightningcss @@ -7162,7 +7222,7 @@ snapshots: wrappy@1.0.2: {} - ws@8.16.0: {} + ws@8.17.1: {} xml-name-validator@5.0.0: {} @@ -7199,4 +7259,4 @@ snapshots: yoctocolors@2.0.2: {} - zod@3.22.4: {} + zod@3.23.8: {} diff --git a/rollup.config.js b/rollup.config.js index 34a2710c4..d32472b71 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -9,11 +9,11 @@ import pico from 'picocolors' import commonJS from '@rollup/plugin-commonjs' import polyfillNode from 'rollup-plugin-polyfill-node' import { nodeResolve } from '@rollup/plugin-node-resolve' -import terser from '@rollup/plugin-terser' import esbuild from 'rollup-plugin-esbuild' import alias from '@rollup/plugin-alias' import { entries } from './scripts/aliases.js' import { inlineEnums } from './scripts/inline-enums.js' +import { minify as minifySwc } from '@swc/core' /** * @template T @@ -366,14 +366,25 @@ function createMinifiedConfig(/** @type {PackageFormat} */ format) { file: outputConfigs[format].file.replace(/\.js$/, '.prod.js'), }, [ - terser({ - module: /^esm/.test(format), - compress: { - ecma: 2016, - pure_getters: true, + { + name: 'swc-minify', + + async renderChunk( + contents, + _, + { format, sourcemap, sourcemapExcludeSources }, + ) { + const { code, map } = await minifySwc(contents, { + module: format === 'es', + compress: true, + mangle: true, + sourceMap: !!sourcemap, + inlineSourcesContent: !sourcemapExcludeSources, + }) + + return { code, map: map || null } }, - safari10: true, - }), + }, ], ) } diff --git a/scripts/verify-treeshaking.js b/scripts/verify-treeshaking.js index a93b8bbbd..f19fea92d 100644 --- a/scripts/verify-treeshaking.js +++ b/scripts/verify-treeshaking.js @@ -14,7 +14,7 @@ execa('pnpm', ['build', 'vue', '-f', 'global-runtime']).then(() => { errors.push( 'dev build contains unexpected esbuild object spread helper.\n' + 'This means { ...obj } syntax is used in runtime code. This should be ' + - 'refactoed to use the `extend` helper to avoid the extra code.', + 'refactored to use the `extend` helper to avoid the extra code.', ) }