diff --git a/.github/contributing.md b/.github/contributing.md index 5b9206a85..3ed1de4e0 100644 --- a/.github/contributing.md +++ b/.github/contributing.md @@ -82,7 +82,7 @@ Hi! I'm really excited that you are interested in contributing to Vue.js. Before ## Development Setup -You will need [Node.js](https://nodejs.org) **version 18.12+**, and [PNPM](https://pnpm.io) **version 8+**. +You will need [Node.js](https://nodejs.org) with minimum version as specified in the [`.node-version`](https://github.com/vuejs/core/blob/main/.node-version) file, and [PNPM](https://pnpm.io) with minimum version as specified in the [`"packageManager"` field in `package.json`](https://github.com/vuejs/core/blob/main/package.json#L4). We also recommend installing [@antfu/ni](https://github.com/antfu/ni) to help switching between repos using different package managers. `ni` also provides the handy `nr` command which running npm scripts easier. diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 8daee2ed5..d5c31beff 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -31,4 +31,4 @@ jobs: - name: Run prettier run: pnpm run format - - uses: autofix-ci/action@2891949f3779a1cafafae1523058501de3d4e944 + - uses: autofix-ci/action@ff86a557419858bb967097bfc916833f5647fa8c diff --git a/CHANGELOG.md b/CHANGELOG.md index a286eab0c..08328b165 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,31 @@ -# [3.5.0-alpha.4](https://github.com/vuejs/core/compare/v3.4.34...v3.5.0-alpha.4) (2024-07-24) +# [3.5.0-alpha.5](https://github.com/vuejs/core/compare/v3.4.35...v3.5.0-alpha.5) (2024-07-31) +### Features + +* **hydration:** support suppressing hydration mismatch via data-allow-mismatch ([94fb2b8](https://github.com/vuejs/core/commit/94fb2b8106a66bcca1a3f922a246a29fdd1274b1)) +* lazy hydration strategies for async components ([#11458](https://github.com/vuejs/core/issues/11458)) ([d14a11c](https://github.com/vuejs/core/commit/d14a11c1cdcee88452f17ce97758743c863958f4)) + + + +## [3.4.35](https://github.com/vuejs/core/compare/v3.4.34...v3.4.35) (2024-07-31) + + +### Bug Fixes + +* **teleport/ssr:** fix Teleport hydration regression due to targetStart anchor addition ([7b18cdb](https://github.com/vuejs/core/commit/7b18cdb0b53a94007ca6a3675bf41b5d3153fec6)) +* **teleport/ssr:** ensure targetAnchor and targetStart not null during hydration ([#11456](https://github.com/vuejs/core/issues/11456)) ([12667da](https://github.com/vuejs/core/commit/12667da4879f980dcf2c50e36f3642d085a87d71)), closes [#11400](https://github.com/vuejs/core/issues/11400) +* **types/ref:** allow getter and setter types to be unrelated ([#11442](https://github.com/vuejs/core/issues/11442)) ([e0b2975](https://github.com/vuejs/core/commit/e0b2975ef65ae6a0be0aa0a0df43fb887c665251)) + + +### Performance Improvements + +* **runtime-core:** improve efficiency of normalizePropsOptions ([#11409](https://github.com/vuejs/core/issues/11409)) ([5680142](https://github.com/vuejs/core/commit/5680142e68096c42e66da9f4c6220d040d7c56ba)), closes [#9739](https://github.com/vuejs/core/issues/9739) + + + +# [3.5.0-alpha.4](https://github.com/vuejs/core/compare/v3.4.34...v3.5.0-alpha.4) (2024-07-24) + ### Bug Fixes * **suspense/hydration:** fix hydration timing of async component inside suspense ([1b8e197](https://github.com/vuejs/core/commit/1b8e197a5b65d67a9703b8511786fb81df9aa7cc)), closes [#6638](https://github.com/vuejs/core/issues/6638) diff --git a/package.json b/package.json index c32cf886d..e32bd6e46 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, - "version": "3.5.0-alpha.4", - "packageManager": "pnpm@9.5.0", + "version": "3.5.0-alpha.5", + "packageManager": "pnpm@9.6.0", "type": "module", "scripts": { "dev": "node scripts/dev.js vue vue-vapor", @@ -66,22 +66,22 @@ "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "5.0.4", - "@swc/core": "^1.6.13", + "@swc/core": "^1.7.3", "@types/hash-sum": "^1.0.2", - "@types/node": "^20.14.10", + "@types/node": "^20.14.13", "@types/semver": "^7.5.8", "@vitest/coverage-istanbul": "^1.6.0", "@vitest/ui": "^1.6.0", "@vue/consolidate": "1.0.0", - "conventional-changelog-cli": "^4.1.0", + "conventional-changelog-cli": "^5.0.0", "enquirer": "^2.4.1", "esbuild": "^0.23.0", "esbuild-plugin-polyfill-node": "^0.3.0", - "eslint": "^9.6.0", - "eslint-plugin-import-x": "^0.5.3", + "eslint": "^9.8.0", + "eslint-plugin-import-x": "^3.1.0", "eslint-plugin-vitest": "^0.5.4", "estree-walker": "catalog:", - "jsdom": "^24.1.0", + "jsdom": "^24.1.1", "lint-staged": "^15.2.7", "lodash": "^4.17.21", "magic-string": "^0.30.10", @@ -89,23 +89,23 @@ "marked": "^12.0.2", "npm-run-all2": "^6.2.2", "picocolors": "^1.0.1", - "prettier": "^3.3.2", + "prettier": "^3.3.3", "pretty-bytes": "^6.1.1", "pug": "^3.0.3", - "puppeteer": "~22.12.1", + "puppeteer": "~22.14.0", "rimraf": "^5.0.9", - "rollup": "^4.18.1", + "rollup": "^4.19.1", "rollup-plugin-dts": "^6.1.1", "rollup-plugin-esbuild": "^6.1.1", "rollup-plugin-polyfill-node": "^0.13.0", - "semver": "^7.6.2", + "semver": "^7.6.3", "serve": "^14.2.3", "simple-git-hooks": "^2.11.1", "todomvc-app-css": "^2.4.3", "tslib": "^2.6.3", "tsx": "^4.16.2", "typescript": "~5.4.5", - "typescript-eslint": "^7.15.0", + "typescript-eslint": "^7.17.0", "vite": "catalog:", "vitest": "^1.6.0" }, diff --git a/packages/compiler-core/package.json b/packages/compiler-core/package.json index 0829affb9..5c4c9a93c 100644 --- a/packages/compiler-core/package.json +++ b/packages/compiler-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-core", - "version": "3.5.0-alpha.4", + "version": "3.5.0-alpha.5", "description": "@vue/compiler-core", "main": "index.js", "module": "dist/compiler-core.esm-bundler.js", diff --git a/packages/compiler-dom/package.json b/packages/compiler-dom/package.json index 51c606f3a..83bca0382 100644 --- a/packages/compiler-dom/package.json +++ b/packages/compiler-dom/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-dom", - "version": "3.5.0-alpha.4", + "version": "3.5.0-alpha.5", "description": "@vue/compiler-dom", "main": "index.js", "module": "dist/compiler-dom.esm-bundler.js", diff --git a/packages/compiler-sfc/package.json b/packages/compiler-sfc/package.json index bb2263f67..476df8fd5 100644 --- a/packages/compiler-sfc/package.json +++ b/packages/compiler-sfc/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-sfc", - "version": "3.5.0-alpha.4", + "version": "3.5.0-alpha.5", "description": "@vue/compiler-sfc", "main": "dist/compiler-sfc.cjs.js", "module": "dist/compiler-sfc.esm-browser.js", @@ -50,7 +50,7 @@ "@vue/shared": "workspace:*", "estree-walker": "catalog:", "magic-string": "catalog:", - "postcss": "^8.4.39", + "postcss": "^8.4.40", "source-map-js": "catalog:" }, "devDependencies": { @@ -61,7 +61,7 @@ "merge-source-map": "^1.1.0", "minimatch": "^9.0.5", "postcss-modules": "^6.0.0", - "postcss-selector-parser": "^6.1.0", + "postcss-selector-parser": "^6.1.1", "pug": "^3.0.3", "sass": "^1.77.8" } diff --git a/packages/compiler-ssr/package.json b/packages/compiler-ssr/package.json index e1a073d9c..7ed6a6aa4 100644 --- a/packages/compiler-ssr/package.json +++ b/packages/compiler-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-ssr", - "version": "3.5.0-alpha.4", + "version": "3.5.0-alpha.5", "description": "@vue/compiler-ssr", "main": "dist/compiler-ssr.cjs.js", "types": "dist/compiler-ssr.d.ts", diff --git a/packages/dts-test/ref.test-d.ts b/packages/dts-test/ref.test-d.ts index 9de9f3f0a..0d3764fb7 100644 --- a/packages/dts-test/ref.test-d.ts +++ b/packages/dts-test/ref.test-d.ts @@ -173,6 +173,16 @@ describe('ref with generic', () => { expectType(ss.value.name) }) +describe('allow getter and setter types to be unrelated', () => { + const a = { b: ref(0) } + const c = ref(a) + c.value = a + + const d = {} as T + const e = ref(d) + e.value = d +}) + // shallowRef type Status = 'initial' | 'ready' | 'invalidating' const shallowStatus = shallowRef('initial') diff --git a/packages/dts-test/watch.test-d.ts b/packages/dts-test/watch.test-d.ts index 45c898ef6..6c8576f0c 100644 --- a/packages/dts-test/watch.test-d.ts +++ b/packages/dts-test/watch.test-d.ts @@ -1,5 +1,6 @@ import { type ComputedRef, + type MaybeRef, type Ref, computed, defineComponent, @@ -203,3 +204,10 @@ defineComponent({ expectType<{ foo: string }>(value) }) } + +{ + const css: MaybeRef = '' + watch(ref(css), value => { + expectType(value) + }) +} diff --git a/packages/reactivity/package.json b/packages/reactivity/package.json index 506cb0a2a..c24f07cf9 100644 --- a/packages/reactivity/package.json +++ b/packages/reactivity/package.json @@ -1,6 +1,6 @@ { "name": "@vue/reactivity", - "version": "3.5.0-alpha.4", + "version": "3.5.0-alpha.5", "description": "@vue/reactivity", "main": "index.js", "module": "dist/reactivity.esm-bundler.js", diff --git a/packages/reactivity/src/arrayInstrumentations.ts b/packages/reactivity/src/arrayInstrumentations.ts index f77c5723a..69f08d6c5 100644 --- a/packages/reactivity/src/arrayInstrumentations.ts +++ b/packages/reactivity/src/arrayInstrumentations.ts @@ -54,16 +54,14 @@ export const arrayInstrumentations: Record = { fn: (item: unknown, index: number, array: unknown[]) => unknown, thisArg?: unknown, ) { - const result = apply(this, 'filter', fn, thisArg) - return isProxy(this) && !isShallow(this) ? result.map(toReactive) : result + return apply(this, 'filter', fn, thisArg, v => v.map(toReactive)) }, find( fn: (item: unknown, index: number, array: unknown[]) => boolean, thisArg?: unknown, ) { - const result = apply(this, 'find', fn, thisArg) - return isProxy(this) && !isShallow(this) ? toReactive(result) : result + return apply(this, 'find', fn, thisArg, toReactive) }, findIndex( @@ -77,8 +75,7 @@ export const arrayInstrumentations: Record = { fn: (item: unknown, index: number, array: unknown[]) => boolean, thisArg?: unknown, ) { - const result = apply(this, 'findLast', fn, thisArg) - return isProxy(this) && !isShallow(this) ? toReactive(result) : result + return apply(this, 'findLast', fn, thisArg, toReactive) }, findLastIndex( @@ -237,11 +234,14 @@ function apply( method: ArrayMethods, fn: (item: unknown, index: number, array: unknown[]) => unknown, thisArg?: unknown, + wrappedRetFn?: (result: any) => unknown, ) { const arr = shallowReadArray(self) + let needsWrap = false let wrappedFn = fn if (arr !== self) { - if (!isShallow(self)) { + needsWrap = !isShallow(self) + if (needsWrap) { wrappedFn = function (this: unknown, item, index) { return fn.call(this, toReactive(item), index, self) } @@ -252,7 +252,8 @@ function apply( } } // @ts-expect-error our code is limited to es2016 but user code is not - return arr[method](wrappedFn, thisArg) + const result = arr[method](wrappedFn, thisArg) + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result } // instrument reduce and reduceRight to take ARRAY_ITERATE dependency diff --git a/packages/reactivity/src/collectionHandlers.ts b/packages/reactivity/src/collectionHandlers.ts index 79ec333dd..0b7d93be6 100644 --- a/packages/reactivity/src/collectionHandlers.ts +++ b/packages/reactivity/src/collectionHandlers.ts @@ -169,19 +169,6 @@ function createForEach(isReadonly: boolean, isShallow: boolean) { } } -interface Iterable { - [Symbol.iterator](): Iterator -} - -interface Iterator { - next(value?: any): IterationResult -} - -interface IterationResult { - value: any - done: boolean -} - function createIterableMethod( method: string | symbol, isReadonly: boolean, @@ -190,7 +177,7 @@ function createIterableMethod( return function ( this: IterableCollections, ...args: unknown[] - ): Iterable & Iterator { + ): Iterable & Iterator { const target = this[ReactiveFlags.RAW] const rawTarget = toRaw(target) const targetIsMap = isMap(rawTarget) diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index a478ff464..ce6fded56 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -23,8 +23,9 @@ import { warn } from './warning' declare const RefSymbol: unique symbol export declare const RawSymbol: unique symbol -export interface Ref { - value: T +export interface Ref { + get value(): T + set value(_: S) /** * Type differentiator only. * We need this to be in public d.ts but don't want it to show up in IDE @@ -51,7 +52,7 @@ export function isRef(r: any): r is Ref { * @param value - The object to wrap in the ref. * @see {@link https://vuejs.org/api/reactivity-core.html#ref} */ -export function ref(value: T): Ref> +export function ref(value: T): Ref, UnwrapRef | T> export function ref(): Ref export function ref(value?: unknown) { return createRef(value, false) diff --git a/packages/runtime-core/__tests__/hydration.spec.ts b/packages/runtime-core/__tests__/hydration.spec.ts index ed1e228c4..c738ff297 100644 --- a/packages/runtime-core/__tests__/hydration.spec.ts +++ b/packages/runtime-core/__tests__/hydration.spec.ts @@ -265,7 +265,7 @@ describe('SSR hydration', () => { const fn = vi.fn() const teleportContainer = document.createElement('div') teleportContainer.id = 'teleport' - teleportContainer.innerHTML = `foo` + teleportContainer.innerHTML = `foo` document.body.appendChild(teleportContainer) const { vnode, container } = mountWithHydration( @@ -281,13 +281,14 @@ describe('SSR hydration', () => { expect(vnode.anchor).toBe(container.lastChild) expect(vnode.target).toBe(teleportContainer) + expect(vnode.targetStart).toBe(teleportContainer.childNodes[0]) expect((vnode.children as VNode[])[0].el).toBe( - teleportContainer.childNodes[0], - ) - expect((vnode.children as VNode[])[1].el).toBe( teleportContainer.childNodes[1], ) - expect(vnode.targetAnchor).toBe(teleportContainer.childNodes[2]) + expect((vnode.children as VNode[])[1].el).toBe( + teleportContainer.childNodes[2], + ) + expect(vnode.targetAnchor).toBe(teleportContainer.childNodes[3]) // event handler triggerEvent('click', teleportContainer.querySelector('.foo')!) @@ -296,7 +297,7 @@ describe('SSR hydration', () => { msg.value = 'bar' await nextTick() expect(teleportContainer.innerHTML).toBe( - `bar`, + `bar`, ) }) @@ -326,7 +327,7 @@ describe('SSR hydration', () => { const teleportHtml = ctx.teleports!['#teleport2'] expect(teleportHtml).toMatchInlineSnapshot( - `"foofoo2"`, + `"foofoo2"`, ) teleportContainer.innerHTML = teleportHtml @@ -342,16 +343,18 @@ describe('SSR hydration', () => { expect(teleportVnode2.anchor).toBe(container.childNodes[4]) expect(teleportVnode1.target).toBe(teleportContainer) + expect(teleportVnode1.targetStart).toBe(teleportContainer.childNodes[0]) expect((teleportVnode1 as any).children[0].el).toBe( - teleportContainer.childNodes[0], + teleportContainer.childNodes[1], ) - expect(teleportVnode1.targetAnchor).toBe(teleportContainer.childNodes[2]) + expect(teleportVnode1.targetAnchor).toBe(teleportContainer.childNodes[3]) expect(teleportVnode2.target).toBe(teleportContainer) + expect(teleportVnode2.targetStart).toBe(teleportContainer.childNodes[4]) expect((teleportVnode2 as any).children[0].el).toBe( - teleportContainer.childNodes[3], + teleportContainer.childNodes[5], ) - expect(teleportVnode2.targetAnchor).toBe(teleportContainer.childNodes[5]) + expect(teleportVnode2.targetAnchor).toBe(teleportContainer.childNodes[7]) // // event handler triggerEvent('click', teleportContainer.querySelector('.foo')!) @@ -363,7 +366,7 @@ describe('SSR hydration', () => { msg.value = 'bar' await nextTick() expect(teleportContainer.innerHTML).toMatchInlineSnapshot( - `"barbar2"`, + `"barbar2"`, ) }) @@ -390,7 +393,9 @@ describe('SSR hydration', () => { ) const teleportHtml = ctx.teleports!['#teleport3'] - expect(teleportHtml).toMatchInlineSnapshot(`""`) + expect(teleportHtml).toMatchInlineSnapshot( + `""`, + ) teleportContainer.innerHTML = teleportHtml document.body.appendChild(teleportContainer) @@ -413,7 +418,8 @@ describe('SSR hydration', () => { expect(children[2].el).toBe(container.childNodes[6]) expect(teleportVnode.target).toBe(teleportContainer) - expect(teleportVnode.targetAnchor).toBe(teleportContainer.childNodes[0]) + expect(teleportVnode.targetStart).toBe(teleportContainer.childNodes[0]) + expect(teleportVnode.targetAnchor).toBe(teleportContainer.childNodes[1]) // // event handler triggerEvent('click', container.querySelector('.foo')!) @@ -454,7 +460,7 @@ describe('SSR hydration', () => { test('Teleport (as component root)', () => { const teleportContainer = document.createElement('div') teleportContainer.id = 'teleport4' - teleportContainer.innerHTML = `hello` + teleportContainer.innerHTML = `hello` document.body.appendChild(teleportContainer) const wrapper = { @@ -483,7 +489,7 @@ describe('SSR hydration', () => { test('Teleport (nested)', () => { const teleportContainer = document.createElement('div') teleportContainer.id = 'teleport5' - teleportContainer.innerHTML = `
child
` + teleportContainer.innerHTML = `
child
` document.body.appendChild(teleportContainer) const { vnode, container } = mountWithHydration( @@ -498,7 +504,7 @@ describe('SSR hydration', () => { expect(vnode.anchor).toBe(container.lastChild) const childDivVNode = (vnode as any).children[0] - const div = teleportContainer.firstChild + const div = teleportContainer.childNodes[1] expect(childDivVNode.el).toBe(div) expect(vnode.targetAnchor).toBe(div?.nextSibling) @@ -512,6 +518,178 @@ describe('SSR hydration', () => { ) }) + test('Teleport unmount (full integration)', async () => { + const Comp1 = { + template: ` + + Teleported Comp1 + + `, + } + const Comp2 = { + template: ` +
Comp2
+ `, + } + + const toggle = ref(true) + const App = { + template: ` +
+ + +
+ `, + components: { + Comp1, + Comp2, + }, + setup() { + return { toggle } + }, + } + + const container = document.createElement('div') + const teleportContainer = document.createElement('div') + teleportContainer.id = 'target' + document.body.appendChild(teleportContainer) + + // server render + const ctx: SSRContext = {} + container.innerHTML = await renderToString(h(App), ctx) + expect(container.innerHTML).toBe( + '
', + ) + teleportContainer.innerHTML = ctx.teleports!['#target'] + + // hydrate + createSSRApp(App).mount(container) + expect(container.innerHTML).toBe( + '
', + ) + expect(teleportContainer.innerHTML).toBe( + 'Teleported Comp1', + ) + expect(`Hydration children mismatch`).not.toHaveBeenWarned() + + toggle.value = false + await nextTick() + expect(container.innerHTML).toBe('
Comp2
') + expect(teleportContainer.innerHTML).toBe('') + }) + + test('Teleport unmount (mismatch + full integration)', async () => { + const Comp1 = { + template: ` + + Teleported Comp1 + + `, + } + const Comp2 = { + template: ` +
Comp2
+ `, + } + + const toggle = ref(true) + const App = { + template: ` +
+ + +
+ `, + components: { + Comp1, + Comp2, + }, + setup() { + return { toggle } + }, + } + + const container = document.createElement('div') + const teleportContainer = document.createElement('div') + teleportContainer.id = 'target' + document.body.appendChild(teleportContainer) + + // server render + container.innerHTML = await renderToString(h(App)) + expect(container.innerHTML).toBe( + '
', + ) + expect(teleportContainer.innerHTML).toBe('') + + // hydrate + createSSRApp(App).mount(container) + expect(container.innerHTML).toBe( + '
', + ) + expect(teleportContainer.innerHTML).toBe('Teleported Comp1') + expect(`Hydration children mismatch`).toHaveBeenWarned() + + toggle.value = false + await nextTick() + expect(container.innerHTML).toBe('
Comp2
') + expect(teleportContainer.innerHTML).toBe('') + }) + + test('Teleport target change (mismatch + full integration)', async () => { + const target = ref('#target1') + const Comp = { + template: ` + + Teleported + + `, + setup() { + return { target } + }, + } + + const App = { + template: ` +
+ +
+ `, + components: { + Comp, + }, + } + + const container = document.createElement('div') + const teleportContainer1 = document.createElement('div') + teleportContainer1.id = 'target1' + const teleportContainer2 = document.createElement('div') + teleportContainer2.id = 'target2' + document.body.appendChild(teleportContainer1) + document.body.appendChild(teleportContainer2) + + // server render + container.innerHTML = await renderToString(h(App)) + expect(container.innerHTML).toBe( + '
', + ) + expect(teleportContainer1.innerHTML).toBe('') + expect(teleportContainer2.innerHTML).toBe('') + + // hydrate + createSSRApp(App).mount(container) + expect(container.innerHTML).toBe( + '
', + ) + expect(teleportContainer1.innerHTML).toBe('Teleported') + expect(teleportContainer2.innerHTML).toBe('') + expect(`Hydration children mismatch`).toHaveBeenWarned() + + target.value = '#target2' + await nextTick() + expect(teleportContainer1.innerHTML).toBe('') + expect(teleportContainer2.innerHTML).toBe('Teleported') + }) + // compile SSR + client render fn from the same template & hydrate test('full compiler integration', async () => { const mounted: string[] = [] @@ -1824,4 +2002,136 @@ describe('SSR hydration', () => { expect(`Hydration style mismatch`).not.toHaveBeenWarned() }) }) + + describe('data-allow-mismatch', () => { + test('element text content', () => { + const { container } = mountWithHydration( + `
foo
`, + () => h('div', 'bar'), + ) + expect(container.innerHTML).toBe( + '
bar
', + ) + expect(`Hydration text content mismatch`).not.toHaveBeenWarned() + }) + + test('not enough children', () => { + const { container } = mountWithHydration( + `
`, + () => h('div', [h('span', 'foo'), h('span', 'bar')]), + ) + expect(container.innerHTML).toBe( + '
foobar
', + ) + expect(`Hydration children mismatch`).not.toHaveBeenWarned() + }) + + test('too many children', () => { + const { container } = mountWithHydration( + `
foobar
`, + () => h('div', [h('span', 'foo')]), + ) + expect(container.innerHTML).toBe( + '
foo
', + ) + expect(`Hydration children mismatch`).not.toHaveBeenWarned() + }) + + test('complete mismatch', () => { + const { container } = mountWithHydration( + `
foobar
`, + () => h('div', [h('div', 'foo'), h('p', 'bar')]), + ) + expect(container.innerHTML).toBe( + '
foo

bar

', + ) + expect(`Hydration node mismatch`).not.toHaveBeenWarned() + }) + + test('fragment mismatch removal', () => { + const { container } = mountWithHydration( + `
foo
bar
`, + () => h('div', [h('span', 'replaced')]), + ) + expect(container.innerHTML).toBe( + '
replaced
', + ) + expect(`Hydration node mismatch`).not.toHaveBeenWarned() + }) + + test('fragment not enough children', () => { + const { container } = mountWithHydration( + `
foo
baz
`, + () => h('div', [[h('div', 'foo'), h('div', 'bar')], h('div', 'baz')]), + ) + expect(container.innerHTML).toBe( + '
foo
bar
baz
', + ) + expect(`Hydration node mismatch`).not.toHaveBeenWarned() + }) + + test('fragment too many children', () => { + const { container } = mountWithHydration( + `
foo
bar
baz
`, + () => h('div', [[h('div', 'foo')], h('div', 'baz')]), + ) + expect(container.innerHTML).toBe( + '
foo
baz
', + ) + // fragment ends early and attempts to hydrate the extra
bar
+ // as 2nd fragment child. + expect(`Hydration text content mismatch`).not.toHaveBeenWarned() + // excessive children removal + expect(`Hydration children mismatch`).not.toHaveBeenWarned() + }) + + test('comment mismatch (element)', () => { + const { container } = mountWithHydration( + `
`, + () => h('div', [createCommentVNode('hi')]), + ) + expect(container.innerHTML).toBe( + '
', + ) + expect(`Hydration node mismatch`).not.toHaveBeenWarned() + }) + + test('comment mismatch (text)', () => { + const { container } = mountWithHydration( + `
foobar
`, + () => h('div', [createCommentVNode('hi')]), + ) + expect(container.innerHTML).toBe( + '
', + ) + expect(`Hydration node mismatch`).not.toHaveBeenWarned() + }) + + test('class mismatch', () => { + mountWithHydration( + `
`, + () => h('div', { class: 'foo' }), + ) + expect(`Hydration class mismatch`).not.toHaveBeenWarned() + }) + + test('style mismatch', () => { + mountWithHydration( + `
`, + () => h('div', { style: { color: 'green' } }), + ) + expect(`Hydration style mismatch`).not.toHaveBeenWarned() + }) + + test('attr mismatch', () => { + mountWithHydration(`
`, () => + h('div', { id: 'foo' }), + ) + mountWithHydration( + `
`, + () => h('div', { id: 'foo' }), + ) + expect(`Hydration attribute mismatch`).not.toHaveBeenWarned() + }) + }) }) diff --git a/packages/runtime-core/package.json b/packages/runtime-core/package.json index 2799df0f4..f10a6d825 100644 --- a/packages/runtime-core/package.json +++ b/packages/runtime-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/runtime-core", - "version": "3.5.0-alpha.4", + "version": "3.5.0-alpha.5", "description": "@vue/runtime-core", "main": "index.js", "module": "dist/runtime-core.esm-bundler.js", diff --git a/packages/runtime-core/src/apiAsyncComponent.ts b/packages/runtime-core/src/apiAsyncComponent.ts index dc1d3ae11..e1c9a0ce0 100644 --- a/packages/runtime-core/src/apiAsyncComponent.ts +++ b/packages/runtime-core/src/apiAsyncComponent.ts @@ -16,6 +16,7 @@ import { ErrorCodes, handleError } from './errorHandling' import { isKeepAlive } from './components/KeepAlive' import { queueJob } from './scheduler' import { markAsyncBoundary } from './helpers/useId' +import { type HydrationStrategy, forEachElement } from './hydrationStrategies' export type AsyncComponentResolveResult = T | { default: T } // es modules @@ -30,6 +31,7 @@ export interface AsyncComponentOptions { delay?: number timeout?: number suspensible?: boolean + hydrate?: HydrationStrategy onError?: ( error: Error, retry: () => void, @@ -54,6 +56,7 @@ export function defineAsyncComponent< loadingComponent, errorComponent, delay = 200, + hydrate: hydrateStrategy, timeout, // undefined = never times out suspensible = true, onError: userOnError, @@ -118,6 +121,24 @@ export function defineAsyncComponent< __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + const doHydrate = hydrateStrategy + ? () => { + const teardown = hydrateStrategy(hydrate, cb => + forEachElement(el, cb), + ) + if (teardown) { + ;(instance.bum || (instance.bum = [])).push(teardown) + } + } + : hydrate + if (resolvedComp) { + doHydrate() + } else { + load().then(() => !instance.isUnmounted && doHydrate()) + } + }, + get __asyncResolved() { return resolvedComp }, diff --git a/packages/runtime-core/src/apiWatch.ts b/packages/runtime-core/src/apiWatch.ts index 4c41776ac..4a34eec0b 100644 --- a/packages/runtime-core/src/apiWatch.ts +++ b/packages/runtime-core/src/apiWatch.ts @@ -35,7 +35,7 @@ import { useSSRContext } from './helpers/useSsrContext' export type WatchEffect = (onCleanup: OnCleanup) => void -export type WatchSource = Ref | ComputedRef | (() => T) +export type WatchSource = Ref | ComputedRef | (() => T) export type WatchCallback = ( value: V, diff --git a/packages/runtime-core/src/componentOptions.ts b/packages/runtime-core/src/componentOptions.ts index 189bff8e6..4f499316b 100644 --- a/packages/runtime-core/src/componentOptions.ts +++ b/packages/runtime-core/src/componentOptions.ts @@ -200,6 +200,15 @@ export interface ComponentOptionsBase< * @internal */ __asyncResolved?: ConcreteComponent + /** + * Exposed for lazy hydration + * @internal + */ + __asyncHydrate?: ( + el: Element, + instance: ComponentInternalInstance, + hydrate: () => void, + ) => void // Type differentiators ------------------------------------------------------ diff --git a/packages/runtime-core/src/componentProps.ts b/packages/runtime-core/src/componentProps.ts index 6fcb9fd77..b6e44c32c 100644 --- a/packages/runtime-core/src/componentProps.ts +++ b/packages/runtime-core/src/componentProps.ts @@ -176,12 +176,10 @@ export type ExtractDefaultPropTypes = O extends object { [K in keyof Pick>]: InferPropType } : {} -type NormalizedProp = - | null - | (PropOptions & { - [BooleanFlags.shouldCast]?: boolean - [BooleanFlags.shouldCastTrue]?: boolean - }) +type NormalizedProp = PropOptions & { + [BooleanFlags.shouldCast]?: boolean + [BooleanFlags.shouldCastTrue]?: boolean +} // normalized value is a tuple of the actual normalized options // and an array of prop keys that need value casting (booleans and defaults) @@ -566,16 +564,36 @@ export function normalizePropsOptions( const opt = raw[key] const prop: NormalizedProp = (normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt)) - if (prop) { - const booleanIndex = getTypeIndex(Boolean, prop.type) - const stringIndex = getTypeIndex(String, prop.type) - prop[BooleanFlags.shouldCast] = booleanIndex > -1 - prop[BooleanFlags.shouldCastTrue] = - stringIndex < 0 || booleanIndex < stringIndex - // if the prop needs boolean casting or default value - if (booleanIndex > -1 || hasOwn(prop, 'default')) { - needCastKeys.push(normalizedKey) + const propType = prop.type + let shouldCast = false + let shouldCastTrue = true + + if (isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index] + const typeName = isFunction(type) && type.name + + if (typeName === 'Boolean') { + shouldCast = true + break + } else if (typeName === 'String') { + // If we find `String` before `Boolean`, e.g. `[String, Boolean]`, + // we need to handle the casting slightly differently. Props + // passed as `` or `` + // will either be treated as strings or converted to a boolean + // `true`, depending on the order of the types. + shouldCastTrue = false + } } + } else { + shouldCast = isFunction(propType) && propType.name === 'Boolean' + } + + prop[BooleanFlags.shouldCast] = shouldCast + prop[BooleanFlags.shouldCastTrue] = shouldCastTrue + // if the prop needs boolean casting or default value + if (shouldCast || hasOwn(prop, 'default')) { + needCastKeys.push(normalizedKey) } } } @@ -597,6 +615,7 @@ function validatePropName(key: string) { return false } +// dev only // use function string name to check type constructors // so that it works across vms / iframes. function getType(ctor: Prop | null): string { @@ -619,22 +638,6 @@ function getType(ctor: Prop | null): string { return '' } -function isSameType(a: Prop | null, b: Prop | null): boolean { - return getType(a) === getType(b) -} - -function getTypeIndex( - type: Prop, - expectedTypes: PropType | void | null | true, -): number { - if (isArray(expectedTypes)) { - return expectedTypes.findIndex(t => isSameType(t, type)) - } else if (isFunction(expectedTypes)) { - return isSameType(expectedTypes, type) ? 0 : -1 - } - return -1 -} - /** * dev only */ diff --git a/packages/runtime-core/src/components/Teleport.ts b/packages/runtime-core/src/components/Teleport.ts index 997b83cc5..1aa3ba6c4 100644 --- a/packages/runtime-core/src/components/Teleport.ts +++ b/packages/runtime-core/src/components/Teleport.ts @@ -112,13 +112,8 @@ export const TeleportImpl = { const mainAnchor = (n2.anchor = __DEV__ ? createComment('teleport end') : createText('')) - const targetStart = (n2.targetStart = createText('')) - const targetAnchor = (n2.targetAnchor = createText('')) insert(placeholder, container, anchor) insert(mainAnchor, container, anchor) - // attach a special property so we can skip teleported content in - // renderer's nextSibling search - targetStart[TeleportEndKey] = targetAnchor const mount = (container: RendererElement, anchor: RendererNode) => { // Teleport *always* has Array children. This is enforced in both the @@ -139,9 +134,8 @@ export const TeleportImpl = { const mountToTarget = () => { const target = (n2.target = resolveTarget(n2.props, querySelector)) + const targetAnchor = prepareAnchor(target, n2, createText, insert) if (target) { - insert(targetStart, target) - insert(targetAnchor, target) // #2652 we could be teleporting from a non-SVG tree into an SVG tree if (namespace !== 'svg' && isTargetSVG(target)) { namespace = 'svg' @@ -375,7 +369,7 @@ function hydrateTeleport( slotScopeIds: string[] | null, optimized: boolean, { - o: { nextSibling, parentNode, querySelector }, + o: { nextSibling, parentNode, querySelector, insert, createText }, }: RendererInternals, hydrateChildren: ( node: Node | null, @@ -407,7 +401,8 @@ function hydrateTeleport( slotScopeIds, optimized, ) - vnode.targetAnchor = targetNode + vnode.targetStart = targetNode + vnode.targetAnchor = targetNode && nextSibling(targetNode) } else { vnode.anchor = nextSibling(node) @@ -416,21 +411,29 @@ function hydrateTeleport( // could be nested teleports let targetAnchor = targetNode while (targetAnchor) { - targetAnchor = nextSibling(targetAnchor) - if ( - targetAnchor && - targetAnchor.nodeType === 8 && - (targetAnchor as Comment).data === 'teleport anchor' - ) { - vnode.targetAnchor = targetAnchor - ;(target as TeleportTargetElement)._lpa = - vnode.targetAnchor && nextSibling(vnode.targetAnchor as Node) - break + if (targetAnchor && targetAnchor.nodeType === 8) { + if ((targetAnchor as Comment).data === 'teleport start anchor') { + vnode.targetStart = targetAnchor + } else if ((targetAnchor as Comment).data === 'teleport anchor') { + vnode.targetAnchor = targetAnchor + ;(target as TeleportTargetElement)._lpa = + vnode.targetAnchor && nextSibling(vnode.targetAnchor as Node) + break + } } + targetAnchor = nextSibling(targetAnchor) + } + + // #11400 if the HTML corresponding to Teleport is not embedded in the + // correct position on the final page during SSR. the targetAnchor will + // always be null, we need to manually add targetAnchor to ensure + // Teleport it can properly unmount or move + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert) } hydrateChildren( - targetNode, + targetNode && nextSibling(targetNode), vnode, target, parentComponent, @@ -469,3 +472,24 @@ function updateCssVars(vnode: VNode) { ctx.ut() } } + +function prepareAnchor( + target: RendererElement | null, + vnode: TeleportVNode, + createText: RendererOptions['createText'], + insert: RendererOptions['insert'], +) { + const targetStart = (vnode.targetStart = createText('')) + const targetAnchor = (vnode.targetAnchor = createText('')) + + // attach a special property, so we can skip teleported content in + // renderer's nextSibling search + targetStart[TeleportEndKey] = targetAnchor + + if (target) { + insert(targetStart, target) + insert(targetAnchor, target) + } + + return targetAnchor +} diff --git a/packages/runtime-core/src/helpers/renderList.ts b/packages/runtime-core/src/helpers/renderList.ts index 09f369bf2..12b0317bd 100644 --- a/packages/runtime-core/src/helpers/renderList.ts +++ b/packages/runtime-core/src/helpers/renderList.ts @@ -60,9 +60,9 @@ export function renderList( let ret: VNodeChild[] const cached = (cache && cache[index!]) as VNode[] | undefined const sourceIsArray = isArray(source) - const sourceIsReactiveArray = sourceIsArray && isReactive(source) if (sourceIsArray || isString(source)) { + const sourceIsReactiveArray = sourceIsArray && isReactive(source) if (sourceIsReactiveArray) { source = shallowReadArray(source) } diff --git a/packages/runtime-core/src/hydration.ts b/packages/runtime-core/src/hydration.ts index cfb7703ce..27a9a7d58 100644 --- a/packages/runtime-core/src/hydration.ts +++ b/packages/runtime-core/src/hydration.ts @@ -46,7 +46,7 @@ export type RootHydrateFunction = ( container: (Element | ShadowRoot) & { _vnode?: VNode }, ) => void -enum DOMNodeTypes { +export enum DOMNodeTypes { ELEMENT = 1, TEXT = 3, COMMENT = 8, @@ -75,7 +75,7 @@ const getContainerType = (container: Element): 'svg' | 'mathml' | undefined => { return undefined } -const isComment = (node: Node): node is Comment => +export const isComment = (node: Node): node is Comment => node.nodeType === DOMNodeTypes.COMMENT // Note: hydration is DOM-specific @@ -405,18 +405,20 @@ export function createHydrationFunctions( ) let hasWarned = false while (next) { - if ( - (__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && - !hasWarned - ) { - warn( - `Hydration children mismatch on`, - el, - `\nServer rendered element contains more child nodes than client vdom.`, - ) - hasWarned = true + if (!isMismatchAllowed(el, MismatchTypes.CHILDREN)) { + if ( + (__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && + !hasWarned + ) { + warn( + `Hydration children mismatch on`, + el, + `\nServer rendered element contains more child nodes than client vdom.`, + ) + hasWarned = true + } + logMismatchError() } - logMismatchError() // The SSRed DOM contains more nodes than it should. Remove them. const cur = next @@ -425,14 +427,16 @@ export function createHydrationFunctions( } } else if (shapeFlag & ShapeFlags.TEXT_CHILDREN) { if (el.textContent !== vnode.children) { - ;(__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && - warn( - `Hydration text content mismatch on`, - el, - `\n - rendered on server: ${el.textContent}` + - `\n - expected on client: ${vnode.children as string}`, - ) - logMismatchError() + if (!isMismatchAllowed(el, MismatchTypes.TEXT)) { + ;(__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && + warn( + `Hydration text content mismatch on`, + el, + `\n - rendered on server: ${el.textContent}` + + `\n - expected on client: ${vnode.children as string}`, + ) + logMismatchError() + } el.textContent = vnode.children as string } @@ -562,18 +566,20 @@ export function createHydrationFunctions( // because server rendered HTML won't contain a text node insert((vnode.el = createText('')), container) } else { - if ( - (__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && - !hasWarned - ) { - warn( - `Hydration children mismatch on`, - container, - `\nServer rendered element contains fewer child nodes than client vdom.`, - ) - hasWarned = true + if (!isMismatchAllowed(container, MismatchTypes.CHILDREN)) { + if ( + (__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && + !hasWarned + ) { + warn( + `Hydration children mismatch on`, + container, + `\nServer rendered element contains fewer child nodes than client vdom.`, + ) + hasWarned = true + } + logMismatchError() } - logMismatchError() // the SSRed DOM didn't contain enough nodes. Mount the missing ones. patch( @@ -637,19 +643,21 @@ export function createHydrationFunctions( slotScopeIds: string[] | null, isFragment: boolean, ): Node | null => { - ;(__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && - warn( - `Hydration node mismatch:\n- rendered on server:`, - node, - node.nodeType === DOMNodeTypes.TEXT - ? `(text)` - : isComment(node) && node.data === '[' - ? `(start of fragment)` - : ``, - `\n- expected on client:`, - vnode.type, - ) - logMismatchError() + if (!isMismatchAllowed(node.parentElement!, MismatchTypes.CHILDREN)) { + ;(__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) && + warn( + `Hydration node mismatch:\n- rendered on server:`, + node, + node.nodeType === DOMNodeTypes.TEXT + ? `(text)` + : isComment(node) && node.data === '[' + ? `(start of fragment)` + : ``, + `\n- expected on client:`, + vnode.type, + ) + logMismatchError() + } vnode.el = null @@ -747,7 +755,7 @@ function propHasMismatch( vnode: VNode, instance: ComponentInternalInstance | null, ): boolean { - let mismatchType: string | undefined + let mismatchType: MismatchTypes | undefined let mismatchKey: string | undefined let actual: string | boolean | null | undefined let expected: string | boolean | null | undefined @@ -757,7 +765,8 @@ function propHasMismatch( actual = el.getAttribute('class') expected = normalizeClass(clientValue) if (!isSetEqual(toClassSet(actual || ''), toClassSet(expected))) { - mismatchType = mismatchKey = `class` + mismatchType = MismatchTypes.CLASS + mismatchKey = `class` } } else if (key === 'style') { // style might be in different order, but that doesn't affect cascade @@ -782,7 +791,8 @@ function propHasMismatch( } if (!isMapEqual(actualMap, expectedMap)) { - mismatchType = mismatchKey = 'style' + mismatchType = MismatchTypes.STYLE + mismatchKey = 'style' } } else if ( (el instanceof SVGElement && isKnownSvgAttr(key)) || @@ -808,15 +818,15 @@ function propHasMismatch( : false } if (actual !== expected) { - mismatchType = `attribute` + mismatchType = MismatchTypes.ATTRIBUTE mismatchKey = key } } - if (mismatchType) { + if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) { const format = (v: any) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"` - const preSegment = `Hydration ${mismatchType} mismatch on` + const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on` const postSegment = `\n - rendered on server: ${format(actual)}` + `\n - expected on client: ${format(expected)}` + @@ -898,3 +908,48 @@ function resolveCssVars( resolveCssVars(instance.parent, instance.vnode, expectedMap) } } + +const allowMismatchAttr = 'data-allow-mismatch' + +enum MismatchTypes { + TEXT = 0, + CHILDREN = 1, + CLASS = 2, + STYLE = 3, + ATTRIBUTE = 4, +} + +const MismatchTypeString: Record = { + [MismatchTypes.TEXT]: 'text', + [MismatchTypes.CHILDREN]: 'children', + [MismatchTypes.CLASS]: 'class', + [MismatchTypes.STYLE]: 'style', + [MismatchTypes.ATTRIBUTE]: 'attribute', +} as const + +function isMismatchAllowed( + el: Element | null, + allowedType: MismatchTypes, +): boolean { + if ( + allowedType === MismatchTypes.TEXT || + allowedType === MismatchTypes.CHILDREN + ) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr) + if (allowedAttr == null) { + return false + } else if (allowedAttr === '') { + return true + } else { + const list = allowedAttr.split(',') + // text is a subset of children + if (allowedType === MismatchTypes.TEXT && list.includes('children')) { + return true + } + return allowedAttr.split(',').includes(MismatchTypeString[allowedType]) + } +} diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts new file mode 100644 index 000000000..4f0a2d23e --- /dev/null +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -0,0 +1,111 @@ +import { isString } from '@vue/shared' +import { DOMNodeTypes, isComment } from './hydration' + +/** + * A lazy hydration strategy for async components. + * @param hydrate - call this to perform the actual hydration. + * @param forEachElement - iterate through the root elements of the component's + * non-hydrated DOM, accounting for possible fragments. + * @returns a teardown function to be called if the async component is unmounted + * before it is hydrated. This can be used to e.g. remove DOM event + * listeners. + */ +export type HydrationStrategy = ( + hydrate: () => void, + forEachElement: (cb: (el: Element) => any) => void, +) => (() => void) | void + +export type HydrationStrategyFactory = ( + options?: Options, +) => HydrationStrategy + +export const hydrateOnIdle: HydrationStrategyFactory = () => hydrate => { + const id = requestIdleCallback(hydrate) + return () => cancelIdleCallback(id) +} + +export const hydrateOnVisible: HydrationStrategyFactory = + (margin = 0) => + (hydrate, forEach) => { + const ob = new IntersectionObserver( + entries => { + for (const e of entries) { + if (!e.isIntersecting) continue + ob.disconnect() + hydrate() + break + } + }, + { + rootMargin: isString(margin) ? margin : margin + 'px', + }, + ) + forEach(el => ob.observe(el)) + return () => ob.disconnect() + } + +export const hydrateOnMediaQuery: HydrationStrategyFactory = + query => hydrate => { + if (query) { + const mql = matchMedia(query) + if (mql.matches) { + hydrate() + } else { + mql.addEventListener('change', hydrate, { once: true }) + return () => mql.removeEventListener('change', hydrate) + } + } + } + +export const hydrateOnInteraction: HydrationStrategyFactory< + string | string[] +> = + (interactions = []) => + (hydrate, forEach) => { + if (isString(interactions)) interactions = [interactions] + let hasHydrated = false + const doHydrate = (e: Event) => { + if (!hasHydrated) { + hasHydrated = true + teardown() + hydrate() + // replay event + e.target!.dispatchEvent(new (e.constructor as any)(e.type, e)) + } + } + const teardown = () => { + forEach(el => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate) + } + }) + } + forEach(el => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }) + } + }) + return teardown + } + +export function forEachElement(node: Node, cb: (el: Element) => void) { + // fragment + if (isComment(node) && node.data === '[') { + let depth = 1 + let next = node.nextSibling + while (next) { + if (next.nodeType === DOMNodeTypes.ELEMENT) { + cb(next as Element) + } else if (isComment(next)) { + if (next.data === ']') { + if (--depth === 0) break + } else if (next.data === '[') { + depth++ + } + } + next = next.nextSibling + } + } else { + cb(node as Element) + } +} diff --git a/packages/runtime-core/src/index.ts b/packages/runtime-core/src/index.ts index e9903d4ce..033c87b48 100644 --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@ -65,6 +65,12 @@ export { useAttrs, useSlots } from './apiSetupHelpers' export { useModel } from './helpers/useModel' export { useTemplateRef } from './helpers/useTemplateRef' export { useId } from './helpers/useId' +export { + hydrateOnIdle, + hydrateOnVisible, + hydrateOnMediaQuery, + hydrateOnInteraction, +} from './hydrationStrategies' // + +
click here to hydrate
+
+ + diff --git a/packages/vue/__tests__/e2e/hydration-strat-idle.html b/packages/vue/__tests__/e2e/hydration-strat-idle.html new file mode 100644 index 000000000..560171312 --- /dev/null +++ b/packages/vue/__tests__/e2e/hydration-strat-idle.html @@ -0,0 +1,36 @@ + + +
+ + diff --git a/packages/vue/__tests__/e2e/hydration-strat-interaction.html b/packages/vue/__tests__/e2e/hydration-strat-interaction.html new file mode 100644 index 000000000..9f4f44d99 --- /dev/null +++ b/packages/vue/__tests__/e2e/hydration-strat-interaction.html @@ -0,0 +1,48 @@ + + +
click to hydrate
+
+ + + diff --git a/packages/vue/__tests__/e2e/hydration-strat-media.html b/packages/vue/__tests__/e2e/hydration-strat-media.html new file mode 100644 index 000000000..f8d30a09b --- /dev/null +++ b/packages/vue/__tests__/e2e/hydration-strat-media.html @@ -0,0 +1,36 @@ + + +
resize the window width to < 500px to hydrate
+
+ + diff --git a/packages/vue/__tests__/e2e/hydration-strat-visible.html b/packages/vue/__tests__/e2e/hydration-strat-visible.html new file mode 100644 index 000000000..863455c84 --- /dev/null +++ b/packages/vue/__tests__/e2e/hydration-strat-visible.html @@ -0,0 +1,49 @@ + + +
scroll to the bottom to hydrate
+
+ + + diff --git a/packages/vue/__tests__/e2e/hydrationStrategies.spec.ts b/packages/vue/__tests__/e2e/hydrationStrategies.spec.ts new file mode 100644 index 000000000..58e3784ba --- /dev/null +++ b/packages/vue/__tests__/e2e/hydrationStrategies.spec.ts @@ -0,0 +1,118 @@ +import path from 'node:path' +import { setupPuppeteer } from './e2eUtils' +import type { Ref } from '../../src/runtime' + +declare const window: Window & { + isHydrated: boolean + isRootMounted: boolean + teardownCalled?: boolean + show: Ref +} + +describe('async component hydration strategies', () => { + const { page, click, text, count } = setupPuppeteer(['--window-size=800,600']) + + async function goToCase(name: string, query = '') { + const file = `file://${path.resolve(__dirname, `./hydration-strat-${name}.html${query}`)}` + await page().goto(file) + } + + async function assertHydrationSuccess(n = '1') { + await click('button') + expect(await text('button')).toBe(n) + } + + test('idle', async () => { + const messages: string[] = [] + page().on('console', e => messages.push(e.text())) + + await goToCase('idle') + // not hydrated yet + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + // wait for hydration + await page().waitForFunction(() => window.isHydrated) + // assert message order: hyration should happen after already queued main thread work + expect(messages.slice(1)).toMatchObject(['resolve', 'busy', 'hydrated']) + await assertHydrationSuccess() + }) + + test('visible', async () => { + await goToCase('visible') + await page().waitForFunction(() => window.isRootMounted) + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + // scroll down + await page().evaluate(() => window.scrollTo({ top: 1000 })) + await page().waitForFunction(() => window.isHydrated) + await assertHydrationSuccess() + }) + + test('visible (with rootMargin)', async () => { + await goToCase('visible', '?rootMargin=1000') + await page().waitForFunction(() => window.isRootMounted) + // should hydrate without needing to scroll + await page().waitForFunction(() => window.isHydrated) + await assertHydrationSuccess() + }) + + test('visible (fragment)', async () => { + await goToCase('visible', '?fragment') + await page().waitForFunction(() => window.isRootMounted) + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + expect(await count('span')).toBe(2) + // scroll down + await page().evaluate(() => window.scrollTo({ top: 1000 })) + await page().waitForFunction(() => window.isHydrated) + await assertHydrationSuccess() + }) + + test('media query', async () => { + await goToCase('media') + await page().waitForFunction(() => window.isRootMounted) + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + // resize + await page().setViewport({ width: 400, height: 600 }) + await page().waitForFunction(() => window.isHydrated) + await assertHydrationSuccess() + }) + + test('interaction', async () => { + await goToCase('interaction') + await page().waitForFunction(() => window.isRootMounted) + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + await click('button') + await page().waitForFunction(() => window.isHydrated) + // should replay event + expect(await text('button')).toBe('1') + await assertHydrationSuccess('2') + }) + + test('interaction (fragment)', async () => { + await goToCase('interaction', '?fragment') + await page().waitForFunction(() => window.isRootMounted) + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + await click('button') + await page().waitForFunction(() => window.isHydrated) + // should replay event + expect(await text('button')).toBe('1') + await assertHydrationSuccess('2') + }) + + test('custom', async () => { + await goToCase('custom') + await page().waitForFunction(() => window.isRootMounted) + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + await click('#custom-trigger') + await page().waitForFunction(() => window.isHydrated) + await assertHydrationSuccess() + }) + + test('custom teardown', async () => { + await goToCase('custom') + await page().waitForFunction(() => window.isRootMounted) + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + await page().evaluate(() => (window.show.value = false)) + expect(await text('#app')).toBe('off') + expect(await page().evaluate(() => window.isHydrated)).toBe(false) + expect(await page().evaluate(() => window.teardownCalled)).toBe(true) + }) +}) diff --git a/packages/vue/package.json b/packages/vue/package.json index 5ace58718..e465254cc 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "vue", - "version": "3.5.0-alpha.4", + "version": "3.5.0-alpha.5", "description": "The progressive JavaScript framework for building modern web UI.", "main": "index.js", "module": "dist/vue.runtime.esm-bundler.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9818ca084..de71a6eb4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,34 +37,34 @@ importers: version: 7.24.7 '@rollup/plugin-alias': specifier: ^5.1.0 - version: 5.1.0(rollup@4.18.1) + version: 5.1.0(rollup@4.19.1) '@rollup/plugin-commonjs': specifier: ^26.0.1 - version: 26.0.1(rollup@4.18.1) + version: 26.0.1(rollup@4.19.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.18.1) + version: 6.1.0(rollup@4.19.1) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.18.1) + version: 15.2.3(rollup@4.19.1) '@rollup/plugin-replace': specifier: 5.0.4 - version: 5.0.4(rollup@4.18.1) + version: 5.0.4(rollup@4.19.1) '@swc/core': - specifier: ^1.6.13 - version: 1.6.13 + specifier: ^1.7.3 + version: 1.7.3 '@types/hash-sum': specifier: ^1.0.2 version: 1.0.2 '@types/node': - specifier: ^20.14.10 - version: 20.14.10 + specifier: ^20.14.13 + version: 20.14.13 '@types/semver': specifier: ^7.5.8 version: 7.5.8 '@vitest/coverage-istanbul': specifier: ^1.6.0 - version: 1.6.0(vitest@1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1)) + version: 1.6.0(vitest@1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1)) '@vitest/ui': specifier: ^1.6.0 version: 1.6.0(vitest@1.6.0) @@ -72,8 +72,8 @@ importers: specifier: 1.0.0 version: 1.0.0 conventional-changelog-cli: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^5.0.0 + version: 5.0.0(conventional-commits-filter@5.0.0) enquirer: specifier: ^2.4.1 version: 2.4.1 @@ -84,20 +84,20 @@ importers: specifier: ^0.3.0 version: 0.3.0(esbuild@0.23.0) eslint: - specifier: ^9.6.0 - version: 9.6.0 + specifier: ^9.8.0 + version: 9.8.0 eslint-plugin-import-x: - specifier: ^0.5.3 - version: 0.5.3(eslint@9.6.0)(typescript@5.4.5) + specifier: ^3.1.0 + version: 3.1.0(eslint@9.8.0)(typescript@5.4.5) eslint-plugin-vitest: specifier: ^0.5.4 - version: 0.5.4(eslint@9.6.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1)) + version: 0.5.4(eslint@9.8.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1)) estree-walker: specifier: 'catalog:' version: 2.0.2 jsdom: - specifier: ^24.1.0 - version: 24.1.0 + specifier: ^24.1.1 + version: 24.1.1 lint-staged: specifier: ^15.2.7 version: 15.2.7 @@ -120,8 +120,8 @@ importers: specifier: ^1.0.1 version: 1.0.1 prettier: - specifier: ^3.3.2 - version: 3.3.2 + specifier: ^3.3.3 + version: 3.3.3 pretty-bytes: specifier: ^6.1.1 version: 6.1.1 @@ -129,26 +129,26 @@ importers: specifier: ^3.0.3 version: 3.0.3 puppeteer: - specifier: ~22.12.1 - version: 22.12.1(typescript@5.4.5) + specifier: ~22.14.0 + version: 22.14.0(typescript@5.4.5) rimraf: specifier: ^5.0.9 version: 5.0.9 rollup: - specifier: ^4.18.1 - version: 4.18.1 + specifier: ^4.19.1 + version: 4.19.1 rollup-plugin-dts: specifier: ^6.1.1 - version: 6.1.1(rollup@4.18.1)(typescript@5.4.5) + version: 6.1.1(rollup@4.19.1)(typescript@5.4.5) rollup-plugin-esbuild: specifier: ^6.1.1 - version: 6.1.1(esbuild@0.23.0)(rollup@4.18.1) + version: 6.1.1(esbuild@0.23.0)(rollup@4.19.1) rollup-plugin-polyfill-node: specifier: ^0.13.0 - version: 0.13.0(rollup@4.18.1) + version: 0.13.0(rollup@4.19.1) semver: - specifier: ^7.6.2 - version: 7.6.2 + specifier: ^7.6.3 + version: 7.6.3 serve: specifier: ^14.2.3 version: 14.2.3 @@ -168,14 +168,14 @@ importers: specifier: ~5.4.5 version: 5.4.5 typescript-eslint: - specifier: ^7.15.0 - version: 7.15.0(eslint@9.6.0)(typescript@5.4.5) + specifier: ^7.17.0 + version: 7.17.0(eslint@9.8.0)(typescript@5.4.5) vite: specifier: 'catalog:' - version: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + version: 5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1) + version: 1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1) packages/compiler-core: dependencies: @@ -235,8 +235,8 @@ importers: specifier: 'catalog:' version: 0.30.10 postcss: - specifier: ^8.4.39 - version: 8.4.39 + specifier: ^8.4.40 + version: 8.4.40 source-map-js: specifier: 'catalog:' version: 1.2.0 @@ -261,10 +261,10 @@ importers: version: 9.0.5 postcss-modules: specifier: ^6.0.0 - version: 6.0.0(postcss@8.4.39) + version: 6.0.0(postcss@8.4.40) postcss-selector-parser: - specifier: ^6.1.0 - version: 6.1.0 + specifier: ^6.1.1 + version: 6.1.1 pug: specifier: ^3.0.3 version: 3.0.3 @@ -398,11 +398,11 @@ importers: version: link:../vue devDependencies: '@vitejs/plugin-vue': - specifier: ^5.0.5 - version: 5.0.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1))(vue@packages+vue) + specifier: ^5.1.1 + version: 5.1.1(vite@5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1))(vue@packages+vue) vite: specifier: 'catalog:' - version: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + version: 5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) packages/shared: {} @@ -477,16 +477,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.10)(sass@1.77.8)(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.13)(sass@1.77.8)(terser@5.31.1))(vue@packages+vue)' vite: specifier: ^5.0.12 - version: 5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + version: 5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) vite-hyper-config: specifier: ^0.2.1 - version: 0.2.1(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1)) + version: 0.2.1(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1)) vite-plugin-inspect: specifier: ^0.7.42 - version: 0.7.42(rollup@4.18.1)(vite@5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1)) + version: 0.7.42(rollup@4.19.1)(vite@5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1)) packages: @@ -584,6 +584,18 @@ packages: resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} + '@conventional-changelog/git-client@1.0.1': + resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.0.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + '@esbuild/aix-ppc64@0.20.2': resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -1014,16 +1026,16 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.0': - resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} + '@eslint/config-array@0.17.1': + resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} 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.6.0': - resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} + '@eslint/js@9.8.0': + resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -1097,8 +1109,8 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - '@puppeteer/browsers@2.2.3': - resolution: {integrity: sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==} + '@puppeteer/browsers@2.3.0': + resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} engines: {node: '>=18'} hasBin: true @@ -1170,8 +1182,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.18.1': - resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} + '@rollup/rollup-android-arm-eabi@4.19.1': + resolution: {integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==} cpu: [arm] os: [android] @@ -1180,8 +1192,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.18.1': - resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} + '@rollup/rollup-android-arm64@4.19.1': + resolution: {integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==} cpu: [arm64] os: [android] @@ -1190,8 +1202,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.18.1': - resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} + '@rollup/rollup-darwin-arm64@4.19.1': + resolution: {integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==} cpu: [arm64] os: [darwin] @@ -1200,8 +1212,8 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.18.1': - resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} + '@rollup/rollup-darwin-x64@4.19.1': + resolution: {integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==} cpu: [x64] os: [darwin] @@ -1210,8 +1222,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.18.1': - resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + resolution: {integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==} cpu: [arm] os: [linux] @@ -1220,8 +1232,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.18.1': - resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} + '@rollup/rollup-linux-arm-musleabihf@4.19.1': + resolution: {integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==} cpu: [arm] os: [linux] @@ -1230,8 +1242,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.18.1': - resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} + '@rollup/rollup-linux-arm64-gnu@4.19.1': + resolution: {integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==} cpu: [arm64] os: [linux] @@ -1240,8 +1252,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.18.1': - resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} + '@rollup/rollup-linux-arm64-musl@4.19.1': + resolution: {integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==} cpu: [arm64] os: [linux] @@ -1250,8 +1262,8 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': - resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': + resolution: {integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==} cpu: [ppc64] os: [linux] @@ -1260,8 +1272,8 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.18.1': - resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} + '@rollup/rollup-linux-riscv64-gnu@4.19.1': + resolution: {integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==} cpu: [riscv64] os: [linux] @@ -1270,8 +1282,8 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.18.1': - resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} + '@rollup/rollup-linux-s390x-gnu@4.19.1': + resolution: {integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==} cpu: [s390x] os: [linux] @@ -1280,8 +1292,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.18.1': - resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} + '@rollup/rollup-linux-x64-gnu@4.19.1': + resolution: {integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==} cpu: [x64] os: [linux] @@ -1290,8 +1302,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.18.1': - resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} + '@rollup/rollup-linux-x64-musl@4.19.1': + resolution: {integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==} cpu: [x64] os: [linux] @@ -1300,8 +1312,8 @@ packages: cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.18.1': - resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} + '@rollup/rollup-win32-arm64-msvc@4.19.1': + resolution: {integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==} cpu: [arm64] os: [win32] @@ -1310,8 +1322,8 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.18.1': - resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} + '@rollup/rollup-win32-ia32-msvc@4.19.1': + resolution: {integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==} cpu: [ia32] os: [win32] @@ -1320,76 +1332,76 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.18.1': - resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} + '@rollup/rollup-win32-x64-msvc@4.19.1': + resolution: {integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==} cpu: [x64] os: [win32] '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@swc/core-darwin-arm64@1.6.13': - resolution: {integrity: sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ==} + '@swc/core-darwin-arm64@1.7.3': + resolution: {integrity: sha512-CTkHa6MJdov9t41vuV2kmQIMu+Q19LrEHGIR/UiJYH06SC/sOu35ZZH8DyfLp9ZoaCn21gwgWd61ixOGQlwzTw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.6.13': - resolution: {integrity: sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag==} + '@swc/core-darwin-x64@1.7.3': + resolution: {integrity: sha512-mun623y6rCoZ2EFIYfIRqXYRFufJOopoYSJcxYhZUrfTpAvQ1zLngjQpWCUU1krggXR2U0PQj+ls0DfXUTraNg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.6.13': - resolution: {integrity: sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg==} + '@swc/core-linux-arm-gnueabihf@1.7.3': + resolution: {integrity: sha512-4Jz4UcIcvZNMp9qoHbBx35bo3rjt8hpYLPqnR4FFq6gkAsJIMFC56UhRZwdEQoDuYiOFMBnnrsg31Fyo6YQypA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.6.13': - resolution: {integrity: sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg==} + '@swc/core-linux-arm64-gnu@1.7.3': + resolution: {integrity: sha512-p+U/M/oqV7HC4erQ5TVWHhJU1984QD+wQBPxslAYq751bOQGm0R/mXK42GjugqjnR6yYrAiwKKbpq4iWVXNePA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.6.13': - resolution: {integrity: sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg==} + '@swc/core-linux-arm64-musl@1.7.3': + resolution: {integrity: sha512-s6VzyaJwaRGTi2mz2h6Ywxfmgpkc69IxhuMzl+sl34plH0V0RgnZDm14HoCGIKIzRk4+a2EcBV1ZLAfWmPACQg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.6.13': - resolution: {integrity: sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ==} + '@swc/core-linux-x64-gnu@1.7.3': + resolution: {integrity: sha512-IrFY48C356Z2dU2pjYg080yvMXzmSV3Lmm/Wna4cfcB1nkVLjWsuYwwRAk9CY7E19c+q8N1sMNggubAUDYoX2g==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.6.13': - resolution: {integrity: sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA==} + '@swc/core-linux-x64-musl@1.7.3': + resolution: {integrity: sha512-qoLgxBlBnnyUEDu5vmRQqX90h9jldU1JXI96e6eh2d1gJyKRA0oSK7xXmTzorv1fGHiHulv9qiJOUG+g6uzJWg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.6.13': - resolution: {integrity: sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg==} + '@swc/core-win32-arm64-msvc@1.7.3': + resolution: {integrity: sha512-OAd7jVVJ7nb0Ev80VAa1aeK+FldPeC4eZ35H4Qn6EICzIz0iqJo2T33qLKkSZiZEBKSoF4KcwrqYfkjLOp5qWg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.6.13': - resolution: {integrity: sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA==} + '@swc/core-win32-ia32-msvc@1.7.3': + resolution: {integrity: sha512-31+Le1NyfSnILFV9+AhxfFOG0DK0272MNhbIlbcv4w/iqpjkhaOnNQnLsYJD1Ow7lTX1MtIZzTjOhRlzSviRWg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.6.13': - resolution: {integrity: sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ==} + '@swc/core-win32-x64-msvc@1.7.3': + resolution: {integrity: sha512-jVQPbYrwcuueI4QB0fHC29SVrkFOBcfIspYDlgSoHnEz6tmLMqUy+txZUypY/ZH/KaK0HEY74JkzgbRC1S6LFQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.6.13': - resolution: {integrity: sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw==} + '@swc/core@1.7.3': + resolution: {integrity: sha512-HHAlbXjWI6Kl9JmmUW1LSygT1YbblXgj2UvvDzMkTBPRzYMhW6xchxdO8HbtMPtFYRt/EQq9u1z7j4ttRSrFsA==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -1400,8 +1412,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/types@0.1.9': - resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -1412,8 +1424,8 @@ packages: '@types/hash-sum@1.0.2': resolution: {integrity: sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==} - '@types/node@20.14.10': - resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} + '@types/node@20.14.13': + resolution: {integrity: sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1430,8 +1442,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@7.15.0': - resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} + '@typescript-eslint/eslint-plugin@7.17.0': + resolution: {integrity: sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1441,8 +1453,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.15.0': - resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} + '@typescript-eslint/parser@7.17.0': + resolution: {integrity: sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1455,8 +1467,12 @@ packages: resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.15.0': - resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} + '@typescript-eslint/scope-manager@7.17.0': + resolution: {integrity: sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.17.0': + resolution: {integrity: sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1469,6 +1485,10 @@ packages: resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@7.17.0': + resolution: {integrity: sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@7.15.0': resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1478,18 +1498,37 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@7.17.0': + resolution: {integrity: sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@7.15.0': resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 + '@typescript-eslint/utils@7.17.0': + resolution: {integrity: sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + '@typescript-eslint/visitor-keys@7.15.0': resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} engines: {node: ^18.18.0 || >=20.0.0} - '@vitejs/plugin-vue@5.0.5': - resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} + '@typescript-eslint/visitor-keys@7.17.0': + resolution: {integrity: sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@vitejs/plugin-vue@5.1.1': + resolution: {integrity: sha512-sDckXxlHpMsjRQbAH9WanangrfrblsOd3pNifePs+FOHjJg1jfWq5L/P0PsBRndEt3nmdUnmvieP8ULDeX5AvA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 @@ -1546,10 +1585,6 @@ packages: '@zeit/schemas@2.36.0': resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -1794,8 +1829,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chromium-bidi@0.5.24: - resolution: {integrity: sha512-5xQNN2SVBdZv4TxeMLaI+PelrnZsHDhn8h2JtyriLr+0qHcZS8BMuo93qN6J1VmtmrgYP+rmcLHcbpnA8QJh+w==} + chromium-bidi@0.6.2: + resolution: {integrity: sha512-4WVBa6ijmUTVr9cZD4eicQD8Mdy/HCX3bzEIYYpmk0glqYLoWH+LqQEvV9RpDRzoQSbY1KJHloYXbDMXMbDPhg==} peerDependencies: devtools-protocol: '*' @@ -1873,71 +1908,71 @@ packages: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} + conventional-changelog-angular@8.0.0: + resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} + engines: {node: '>=18'} - conventional-changelog-atom@4.0.0: - resolution: {integrity: sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==} - engines: {node: '>=16'} + conventional-changelog-atom@5.0.0: + resolution: {integrity: sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==} + engines: {node: '>=18'} - conventional-changelog-cli@4.1.0: - resolution: {integrity: sha512-MscvILWZ6nWOoC+p/3Nn3D2cVLkjeQjyZPUr0bQ+vUORE/SPrkClJh8BOoMNpS4yk+zFJ5LlgXACxH6XGQoRXA==} - engines: {node: '>=16'} + conventional-changelog-cli@5.0.0: + resolution: {integrity: sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==} + engines: {node: '>=18'} hasBin: true - conventional-changelog-codemirror@4.0.0: - resolution: {integrity: sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==} - engines: {node: '>=16'} + conventional-changelog-codemirror@5.0.0: + resolution: {integrity: sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==} + engines: {node: '>=18'} - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} + conventional-changelog-conventionalcommits@8.0.0: + resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} + engines: {node: '>=18'} - conventional-changelog-core@7.0.0: - resolution: {integrity: sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==} - engines: {node: '>=16'} + conventional-changelog-core@8.0.0: + resolution: {integrity: sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==} + engines: {node: '>=18'} - conventional-changelog-ember@4.0.0: - resolution: {integrity: sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==} - engines: {node: '>=16'} + conventional-changelog-ember@5.0.0: + resolution: {integrity: sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==} + engines: {node: '>=18'} - conventional-changelog-eslint@5.0.0: - resolution: {integrity: sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==} - engines: {node: '>=16'} + conventional-changelog-eslint@6.0.0: + resolution: {integrity: sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==} + engines: {node: '>=18'} - conventional-changelog-express@4.0.0: - resolution: {integrity: sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==} - engines: {node: '>=16'} + conventional-changelog-express@5.0.0: + resolution: {integrity: sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==} + engines: {node: '>=18'} - conventional-changelog-jquery@5.0.0: - resolution: {integrity: sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==} - engines: {node: '>=16'} + conventional-changelog-jquery@6.0.0: + resolution: {integrity: sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==} + engines: {node: '>=18'} - conventional-changelog-jshint@4.0.0: - resolution: {integrity: sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==} - engines: {node: '>=16'} + conventional-changelog-jshint@5.0.0: + resolution: {integrity: sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==} + engines: {node: '>=18'} - conventional-changelog-preset-loader@4.1.0: - resolution: {integrity: sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==} - engines: {node: '>=16'} + conventional-changelog-preset-loader@5.0.0: + resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} + engines: {node: '>=18'} - conventional-changelog-writer@7.0.1: - resolution: {integrity: sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==} - engines: {node: '>=16'} + conventional-changelog-writer@8.0.0: + resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} + engines: {node: '>=18'} hasBin: true - conventional-changelog@5.1.0: - resolution: {integrity: sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==} - engines: {node: '>=16'} + conventional-changelog@6.0.0: + resolution: {integrity: sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==} + engines: {node: '>=18'} - conventional-commits-filter@4.0.0: - resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==} - engines: {node: '>=16'} + conventional-commits-filter@5.0.0: + resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} + engines: {node: '>=18'} - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} + conventional-commits-parser@6.0.0: + resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==} + engines: {node: '>=18'} hasBin: true convert-source-map@2.0.0: @@ -1971,10 +2006,6 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} - data-uri-to-buffer@6.0.2: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} @@ -1999,15 +2030,6 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.5: resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} @@ -2059,8 +2081,8 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - devtools-protocol@0.0.1299070: - resolution: {integrity: sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==} + devtools-protocol@0.0.1312386: + resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -2168,8 +2190,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-import-x@0.5.3: - resolution: {integrity: sha512-hJ/wkMcsLQXAZL3+txXIDpbW5cqwdm1rLTqV4VRY03aIbzE3zWE7rPZKW6Gzf7xyl1u3V1iYC6tOG77d9NF4GQ==} + eslint-plugin-import-x@3.1.0: + resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} engines: {node: '>=16'} peerDependencies: eslint: ^8.56.0 || ^9.0.0-0 @@ -2187,8 +2209,8 @@ packages: vitest: optional: true - eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: @@ -2199,8 +2221,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.6.0: - resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} + eslint@9.8.0: + resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -2294,14 +2316,14 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -2373,14 +2395,14 @@ packages: resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} engines: {node: '>= 14'} - git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} + git-raw-commits@5.0.0: + resolution: {integrity: sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==} + engines: {node: '>=18'} hasBin: true - git-semver-tags@7.0.1: - resolution: {integrity: sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==} - engines: {node: '>=16'} + git-semver-tags@8.0.0: + resolution: {integrity: sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==} + engines: {node: '>=18'} hasBin: true glob-parent@5.1.2: @@ -2521,6 +2543,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -2628,10 +2654,6 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -2682,8 +2704,8 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@24.1.0: - resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} + jsdom@24.1.1: + resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -2715,9 +2737,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -2726,10 +2745,6 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - jstransformer@1.0.0: resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} @@ -2753,10 +2768,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lines-and-columns@2.0.4: - resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lint-staged@15.2.7: resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==} engines: {node: '>=18.12.0'} @@ -2778,10 +2789,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -2809,10 +2816,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} @@ -2839,9 +2842,9 @@ packages: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} merge-source-map@1.1.0: resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} @@ -2964,8 +2967,8 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nwsapi@2.2.10: - resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} + nwsapi@2.2.12: + resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -2998,10 +3001,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} @@ -3010,10 +3009,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - pac-proxy-agent@7.0.2: resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} engines: {node: '>= 14'} @@ -3036,9 +3031,9 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-json@7.1.1: - resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} - engines: {node: '>=16'} + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -3047,10 +3042,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -3133,23 +3124,23 @@ packages: peerDependencies: postcss: ^8.0.0 - postcss-selector-parser@6.1.0: - resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + postcss-selector-parser@6.1.1: + resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true @@ -3227,12 +3218,12 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@22.12.1: - resolution: {integrity: sha512-XmqeDPVdC5/3nGJys1jbgeoZ02wP0WV1GBlPtr/ULRbGXJFuqgXMcKQ3eeNtFpBzGRbpeoCGWHge1ZWKWl0Exw==} + puppeteer-core@22.14.0: + resolution: {integrity: sha512-rl4tOY5LcA3e374GAlsGGHc05HL3eGNf5rZ+uxkl6id9zVZKcwcp1Z+Nd6byb6WPiPeecT/dwz8f/iUm+AZQSw==} engines: {node: '>=18'} - puppeteer@22.12.1: - resolution: {integrity: sha512-1GxY8dnEnHr1SLzdSDr0FCjM6JQfAh2E2I/EqzeF8a58DbGVk9oVjj4lFdqNoVbpgFSpAbz7VER9St7S1wDpNg==} + puppeteer@22.14.0: + resolution: {integrity: sha512-MGTR6/pM8zmWbTdazb6FKnwIihzsSEXBPH49mFFU96DNZpQOevCAZMnjBZGlZRGRzRK6aADCavR6SQtrbv5dQw==} engines: {node: '>=18'} hasBin: true @@ -3260,13 +3251,13 @@ packages: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - read-pkg-up@10.1.0: - resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==} - engines: {node: '>=16'} + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} - read-pkg@8.1.0: - resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} - engines: {node: '>=16'} + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -3344,8 +3335,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.18.1: - resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} + rollup@4.19.1: + resolution: {integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3384,13 +3375,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -3489,10 +3475,6 @@ packages: spdx-license-ids@3.0.18: resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} @@ -3572,8 +3554,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tar-fs@3.0.5: - resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} + tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -3598,10 +3580,6 @@ packages: text-decoder@1.1.1: resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -3676,16 +3654,12 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - type-fest@4.21.0: resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==} engines: {node: '>=16'} - typescript-eslint@7.15.0: - resolution: {integrity: sha512-Ta40FhMXBCwHura4X4fncaCVkVcnJ9jnOq5+Lp4lN8F4DzHZtOwZdRvVBiNUGznUDHPwdGnrnwxmUOU2fFQqFA==} + typescript-eslint@7.17.0: + resolution: {integrity: sha512-spQxsQvPguduCUfyUvLItvKqK3l8KJ/kqs5Pb/URtzQ5AC53Z6us32St37rpmlt2uESG23lOFpV4UErrmy4dZQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3713,6 +3687,10 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -3961,9 +3939,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.4.5: resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} @@ -4020,7 +3995,7 @@ snapshots: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.5 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -4122,7 +4097,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - debug: 4.3.4 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4133,6 +4108,14 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)': + dependencies: + '@types/semver': 7.5.8 + semver: 7.6.3 + optionalDependencies: + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.0.0 + '@esbuild/aix-ppc64@0.20.2': optional: true @@ -4343,17 +4326,17 @@ snapshots: '@esbuild/win32-x64@0.23.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.6.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': dependencies: - eslint: 9.6.0 + eslint: 9.8.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.17.0': + '@eslint/config-array@0.17.1': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.4 + debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -4372,7 +4355,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.6.0': {} + '@eslint/js@9.8.0': {} '@eslint/object-schema@2.1.4': {} @@ -4439,223 +4422,223 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@puppeteer/browsers@2.2.3': + '@puppeteer/browsers@2.3.0': dependencies: - debug: 4.3.4 + debug: 4.3.5 extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.4.0 - semver: 7.6.0 - tar-fs: 3.0.5 + semver: 7.6.3 + tar-fs: 3.0.6 unbzip2-stream: 1.4.3 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@rollup/plugin-alias@5.1.0(rollup@4.18.1)': + '@rollup/plugin-alias@5.1.0(rollup@4.19.1)': dependencies: slash: 4.0.0 optionalDependencies: - rollup: 4.18.1 + rollup: 4.19.1 - '@rollup/plugin-commonjs@26.0.1(rollup@4.18.1)': + '@rollup/plugin-commonjs@26.0.1(rollup@4.19.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 10.4.3 is-reference: 1.2.1 magic-string: 0.30.10 optionalDependencies: - rollup: 4.18.1 + rollup: 4.19.1 - '@rollup/plugin-inject@5.0.5(rollup@4.18.1)': + '@rollup/plugin-inject@5.0.5(rollup@4.19.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) estree-walker: 2.0.2 magic-string: 0.30.10 optionalDependencies: - rollup: 4.18.1 + rollup: 4.19.1 - '@rollup/plugin-json@6.1.0(rollup@4.18.1)': + '@rollup/plugin-json@6.1.0(rollup@4.19.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) optionalDependencies: - rollup: 4.18.1 + rollup: 4.19.1 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.18.1)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.19.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@rollup/pluginutils': 5.1.0(rollup@4.19.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.18.1 + rollup: 4.19.1 - '@rollup/plugin-replace@5.0.4(rollup@4.18.1)': + '@rollup/plugin-replace@5.0.4(rollup@4.19.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) magic-string: 0.30.10 optionalDependencies: - rollup: 4.18.1 + rollup: 4.19.1 - '@rollup/pluginutils@5.1.0(rollup@4.18.1)': + '@rollup/pluginutils@5.1.0(rollup@4.19.1)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.18.1 + rollup: 4.19.1 '@rollup/rollup-android-arm-eabi@4.18.0': optional: true - '@rollup/rollup-android-arm-eabi@4.18.1': + '@rollup/rollup-android-arm-eabi@4.19.1': optional: true '@rollup/rollup-android-arm64@4.18.0': optional: true - '@rollup/rollup-android-arm64@4.18.1': + '@rollup/rollup-android-arm64@4.19.1': optional: true '@rollup/rollup-darwin-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-arm64@4.18.1': + '@rollup/rollup-darwin-arm64@4.19.1': optional: true '@rollup/rollup-darwin-x64@4.18.0': optional: true - '@rollup/rollup-darwin-x64@4.18.1': + '@rollup/rollup-darwin-x64@4.19.1': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': optional: true '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.18.1': + '@rollup/rollup-linux-arm-musleabihf@4.19.1': optional: true '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.18.1': + '@rollup/rollup-linux-arm64-gnu@4.19.1': optional: true '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.18.1': + '@rollup/rollup-linux-arm64-musl@4.19.1': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': optional: true '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.18.1': + '@rollup/rollup-linux-riscv64-gnu@4.19.1': optional: true '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.18.1': + '@rollup/rollup-linux-s390x-gnu@4.19.1': optional: true '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.18.1': + '@rollup/rollup-linux-x64-gnu@4.19.1': optional: true '@rollup/rollup-linux-x64-musl@4.18.0': optional: true - '@rollup/rollup-linux-x64-musl@4.18.1': + '@rollup/rollup-linux-x64-musl@4.19.1': optional: true '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.18.1': + '@rollup/rollup-win32-arm64-msvc@4.19.1': optional: true '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.18.1': + '@rollup/rollup-win32-ia32-msvc@4.19.1': optional: true '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.18.1': + '@rollup/rollup-win32-x64-msvc@4.19.1': optional: true '@sinclair/typebox@0.27.8': {} - '@swc/core-darwin-arm64@1.6.13': + '@swc/core-darwin-arm64@1.7.3': optional: true - '@swc/core-darwin-x64@1.6.13': + '@swc/core-darwin-x64@1.7.3': optional: true - '@swc/core-linux-arm-gnueabihf@1.6.13': + '@swc/core-linux-arm-gnueabihf@1.7.3': optional: true - '@swc/core-linux-arm64-gnu@1.6.13': + '@swc/core-linux-arm64-gnu@1.7.3': optional: true - '@swc/core-linux-arm64-musl@1.6.13': + '@swc/core-linux-arm64-musl@1.7.3': optional: true - '@swc/core-linux-x64-gnu@1.6.13': + '@swc/core-linux-x64-gnu@1.7.3': optional: true - '@swc/core-linux-x64-musl@1.6.13': + '@swc/core-linux-x64-musl@1.7.3': optional: true - '@swc/core-win32-arm64-msvc@1.6.13': + '@swc/core-win32-arm64-msvc@1.7.3': optional: true - '@swc/core-win32-ia32-msvc@1.6.13': + '@swc/core-win32-ia32-msvc@1.7.3': optional: true - '@swc/core-win32-x64-msvc@1.6.13': + '@swc/core-win32-x64-msvc@1.7.3': optional: true - '@swc/core@1.6.13': + '@swc/core@1.7.3': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.9 + '@swc/types': 0.1.12 optionalDependencies: - '@swc/core-darwin-arm64': 1.6.13 - '@swc/core-darwin-x64': 1.6.13 - '@swc/core-linux-arm-gnueabihf': 1.6.13 - '@swc/core-linux-arm64-gnu': 1.6.13 - '@swc/core-linux-arm64-musl': 1.6.13 - '@swc/core-linux-x64-gnu': 1.6.13 - '@swc/core-linux-x64-musl': 1.6.13 - '@swc/core-win32-arm64-msvc': 1.6.13 - '@swc/core-win32-ia32-msvc': 1.6.13 - '@swc/core-win32-x64-msvc': 1.6.13 + '@swc/core-darwin-arm64': 1.7.3 + '@swc/core-darwin-x64': 1.7.3 + '@swc/core-linux-arm-gnueabihf': 1.7.3 + '@swc/core-linux-arm64-gnu': 1.7.3 + '@swc/core-linux-arm64-musl': 1.7.3 + '@swc/core-linux-x64-gnu': 1.7.3 + '@swc/core-linux-x64-musl': 1.7.3 + '@swc/core-win32-arm64-msvc': 1.7.3 + '@swc/core-win32-ia32-msvc': 1.7.3 + '@swc/core-win32-x64-msvc': 1.7.3 '@swc/counter@0.1.3': {} - '@swc/types@0.1.9': + '@swc/types@0.1.12': dependencies: '@swc/counter': 0.1.3 @@ -4665,7 +4648,7 @@ snapshots: '@types/hash-sum@1.0.2': {} - '@types/node@20.14.10': + '@types/node@20.14.13': dependencies: undici-types: 5.26.5 @@ -4679,18 +4662,18 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.13 optional: true - '@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.4.5))(eslint@9.8.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.15.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/type-utils': 7.15.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.15.0 - eslint: 9.6.0 + '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.17.0 + '@typescript-eslint/type-utils': 7.17.0(eslint@9.8.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.17.0 + eslint: 9.8.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -4700,14 +4683,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.15.0(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.15.0 - '@typescript-eslint/types': 7.15.0 - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.15.0 + '@typescript-eslint/scope-manager': 7.17.0 + '@typescript-eslint/types': 7.17.0 + '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.17.0 debug: 4.3.5 - eslint: 9.6.0 + eslint: 9.8.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -4718,12 +4701,17 @@ snapshots: '@typescript-eslint/types': 7.15.0 '@typescript-eslint/visitor-keys': 7.15.0 - '@typescript-eslint/type-utils@7.15.0(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/scope-manager@7.17.0': dependencies: - '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/types': 7.17.0 + '@typescript-eslint/visitor-keys': 7.17.0 + + '@typescript-eslint/type-utils@7.17.0(eslint@9.8.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.4.5) debug: 4.3.5 - eslint: 9.6.0 + eslint: 9.8.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -4732,6 +4720,8 @@ snapshots: '@typescript-eslint/types@7.15.0': {} + '@typescript-eslint/types@7.17.0': {} + '@typescript-eslint/typescript-estree@7.15.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.15.0 @@ -4740,20 +4730,46 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.15.0(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.17.0(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@typescript-eslint/types': 7.17.0 + '@typescript-eslint/visitor-keys': 7.17.0 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.15.0(eslint@9.8.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@typescript-eslint/scope-manager': 7.15.0 '@typescript-eslint/types': 7.15.0 '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.4.5) - eslint: 9.6.0 + eslint: 9.8.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.17.0(eslint@9.8.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + '@typescript-eslint/scope-manager': 7.17.0 + '@typescript-eslint/types': 7.17.0 + '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.4.5) + eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript @@ -4763,12 +4779,17 @@ snapshots: '@typescript-eslint/types': 7.15.0 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-vue@5.0.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1))(vue@packages+vue)': + '@typescript-eslint/visitor-keys@7.17.0': dependencies: - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + '@typescript-eslint/types': 7.17.0 + eslint-visitor-keys: 3.4.3 + + '@vitejs/plugin-vue@5.1.1(vite@5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1))(vue@packages+vue)': + dependencies: + vite: 5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) vue: link:packages/vue - '@vitest/coverage-istanbul@1.6.0(vitest@1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1))': + '@vitest/coverage-istanbul@1.6.0(vitest@1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1))': dependencies: debug: 4.3.5 istanbul-lib-coverage: 3.2.2 @@ -4779,7 +4800,7 @@ snapshots: magicast: 0.3.4 picocolors: 1.0.1 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1) + vitest: 1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1) transitivePeerDependencies: - supports-color @@ -4814,7 +4835,7 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.1 sirv: 2.0.4 - vitest: 1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1) + vitest: 1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1) '@vitest/utils@1.6.0': dependencies: @@ -4823,9 +4844,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.10)(sass@1.77.8)(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.13)(sass@1.77.8)(terser@5.31.1))(vue@packages+vue)': dependencies: - vite: 5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + vite: 5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) vue: link:packages/vue '@vue/consolidate@1.0.0': {} @@ -4853,11 +4874,6 @@ snapshots: '@zeit/schemas@2.36.0': {} - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -4879,7 +4895,7 @@ snapshots: agent-base@7.1.1: dependencies: - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -5105,9 +5121,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chromium-bidi@0.5.24(devtools-protocol@0.0.1299070): + chromium-bidi@0.6.2(devtools-protocol@0.0.1312386): dependencies: - devtools-protocol: 0.0.1299070 + devtools-protocol: 0.0.1312386 mitt: 3.0.1 urlpattern-polyfill: 10.0.0 zod: 3.23.8 @@ -5192,83 +5208,85 @@ snapshots: content-disposition@0.5.2: {} - conventional-changelog-angular@7.0.0: + conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 - conventional-changelog-atom@4.0.0: {} + conventional-changelog-atom@5.0.0: {} - conventional-changelog-cli@4.1.0: + conventional-changelog-cli@5.0.0(conventional-commits-filter@5.0.0): dependencies: add-stream: 1.0.0 - conventional-changelog: 5.1.0 - meow: 12.1.1 + conventional-changelog: 6.0.0(conventional-commits-filter@5.0.0) + meow: 13.2.0 tempfile: 5.0.0 + transitivePeerDependencies: + - conventional-commits-filter - conventional-changelog-codemirror@4.0.0: {} + conventional-changelog-codemirror@5.0.0: {} - conventional-changelog-conventionalcommits@7.0.2: + conventional-changelog-conventionalcommits@8.0.0: dependencies: compare-func: 2.0.0 - conventional-changelog-core@7.0.0: + conventional-changelog-core@8.0.0(conventional-commits-filter@5.0.0): dependencies: '@hutson/parse-repository-url': 5.0.0 add-stream: 1.0.0 - conventional-changelog-writer: 7.0.1 - conventional-commits-parser: 5.0.0 - git-raw-commits: 4.0.0 - git-semver-tags: 7.0.1 + conventional-changelog-writer: 8.0.0 + conventional-commits-parser: 6.0.0 + git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) hosted-git-info: 7.0.2 normalize-package-data: 6.0.2 - read-pkg: 8.1.0 - read-pkg-up: 10.1.0 + read-package-up: 11.0.0 + read-pkg: 9.0.1 + transitivePeerDependencies: + - conventional-commits-filter - conventional-changelog-ember@4.0.0: {} + conventional-changelog-ember@5.0.0: {} - conventional-changelog-eslint@5.0.0: {} + conventional-changelog-eslint@6.0.0: {} - conventional-changelog-express@4.0.0: {} + conventional-changelog-express@5.0.0: {} - conventional-changelog-jquery@5.0.0: {} + conventional-changelog-jquery@6.0.0: {} - conventional-changelog-jshint@4.0.0: + conventional-changelog-jshint@5.0.0: dependencies: compare-func: 2.0.0 - conventional-changelog-preset-loader@4.1.0: {} + conventional-changelog-preset-loader@5.0.0: {} - conventional-changelog-writer@7.0.1: + conventional-changelog-writer@8.0.0: dependencies: - conventional-commits-filter: 4.0.0 + '@types/semver': 7.5.8 + conventional-commits-filter: 5.0.0 handlebars: 4.7.8 - json-stringify-safe: 5.0.1 - meow: 12.1.1 - semver: 7.6.2 - split2: 4.2.0 + meow: 13.2.0 + semver: 7.6.3 - conventional-changelog@5.1.0: + conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): dependencies: - conventional-changelog-angular: 7.0.0 - conventional-changelog-atom: 4.0.0 - conventional-changelog-codemirror: 4.0.0 - conventional-changelog-conventionalcommits: 7.0.2 - conventional-changelog-core: 7.0.0 - conventional-changelog-ember: 4.0.0 - conventional-changelog-eslint: 5.0.0 - conventional-changelog-express: 4.0.0 - conventional-changelog-jquery: 5.0.0 - conventional-changelog-jshint: 4.0.0 - conventional-changelog-preset-loader: 4.1.0 + conventional-changelog-angular: 8.0.0 + conventional-changelog-atom: 5.0.0 + conventional-changelog-codemirror: 5.0.0 + conventional-changelog-conventionalcommits: 8.0.0 + conventional-changelog-core: 8.0.0(conventional-commits-filter@5.0.0) + conventional-changelog-ember: 5.0.0 + conventional-changelog-eslint: 6.0.0 + conventional-changelog-express: 5.0.0 + conventional-changelog-jquery: 6.0.0 + conventional-changelog-jshint: 5.0.0 + conventional-changelog-preset-loader: 5.0.0 + transitivePeerDependencies: + - conventional-commits-filter - conventional-commits-filter@4.0.0: {} + conventional-commits-filter@5.0.0: {} - conventional-commits-parser@5.0.0: + conventional-commits-parser@6.0.0: dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 + meow: 13.2.0 convert-source-map@2.0.0: {} @@ -5297,8 +5315,6 @@ snapshots: csstype@3.1.3: {} - dargs@8.1.0: {} - data-uri-to-buffer@6.0.2: {} data-urls@5.0.0: @@ -5314,10 +5330,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.4: - dependencies: - ms: 2.1.2 - debug@4.3.5: dependencies: ms: 2.1.2 @@ -5362,7 +5374,7 @@ snapshots: delayed-stream@1.0.0: {} - devtools-protocol@0.0.1299070: {} + devtools-protocol@0.0.1312386: {} diff-sequences@29.6.3: {} @@ -5524,34 +5536,34 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@0.5.3(eslint@9.6.0)(typescript@5.4.5): + eslint-plugin-import-x@3.1.0(eslint@9.8.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.4.5) debug: 4.3.5 doctrine: 3.0.0 - eslint: 9.6.0 + eslint: 9.8.0 eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.5 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.2 + semver: 7.6.3 stable-hash: 0.0.4 tslib: 2.6.3 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-vitest@0.5.4(eslint@9.6.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1)): + eslint-plugin-vitest@0.5.4(eslint@9.8.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1)): dependencies: - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.4.5) - eslint: 9.6.0 + '@typescript-eslint/utils': 7.15.0(eslint@9.8.0)(typescript@5.4.5) + eslint: 9.8.0 optionalDependencies: - vitest: 1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1) + vitest: 1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1) transitivePeerDependencies: - supports-color - typescript - eslint-scope@8.0.1: + eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -5560,22 +5572,22 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.6.0: + eslint@9.8.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.0 + '@eslint/config-array': 0.17.1 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.6.0 + '@eslint/js': 9.8.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 + eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 espree: 10.1.0 esquery: 1.5.0 @@ -5713,16 +5725,13 @@ snapshots: dependencies: to-regex-range: 5.0.1 + find-up-simple@1.0.0: {} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - flat-cache@4.0.1: dependencies: flatted: 3.3.1 @@ -5795,16 +5804,21 @@ snapshots: transitivePeerDependencies: - supports-color - git-raw-commits@4.0.0: + git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): dependencies: - dargs: 8.1.0 - meow: 12.1.1 - split2: 4.2.0 + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser - git-semver-tags@7.0.1: + git-semver-tags@8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): dependencies: - meow: 12.1.1 - semver: 7.6.2 + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser glob-parent@5.1.2: dependencies: @@ -5897,14 +5911,14 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -5918,9 +5932,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.4.39): + icss-utils@5.1.0(postcss@8.4.40): dependencies: - postcss: 8.4.39 + postcss: 8.4.40 ieee754@1.2.1: {} @@ -5939,6 +5953,8 @@ snapshots: imurmurhash@0.1.4: {} + index-to-position@0.1.2: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -6021,10 +6037,6 @@ snapshots: is-stream@3.0.0: {} - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -6041,7 +6053,7 @@ snapshots: '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -6082,7 +6094,7 @@ snapshots: jsbn@1.1.0: {} - jsdom@24.1.0: + jsdom@24.1.1: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -6092,7 +6104,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.10 + nwsapi: 2.2.12 parse5: 7.1.2 rrweb-cssom: 0.7.1 saxes: 6.0.0 @@ -6124,8 +6136,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-stringify-safe@5.0.1: {} - json5@2.2.3: {} jsonfile@6.1.0: @@ -6134,8 +6144,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonparse@1.3.1: {} - jstransformer@1.0.0: dependencies: is-promise: 2.2.2 @@ -6165,13 +6173,11 @@ snapshots: lines-and-columns@1.2.4: {} - lines-and-columns@2.0.4: {} - lint-staged@15.2.7: dependencies: chalk: 5.3.0 commander: 12.1.0 - debug: 4.3.4 + debug: 4.3.5 execa: 8.0.1 lilconfig: 3.1.2 listr2: 8.2.3 @@ -6202,10 +6208,6 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - lodash.camelcase@4.3.0: {} lodash.merge@4.6.2: {} @@ -6232,10 +6234,6 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lru-cache@7.18.3: {} magic-string@0.30.10: @@ -6250,7 +6248,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.2 + semver: 7.6.3 markdown-table@3.0.3: {} @@ -6258,7 +6256,7 @@ snapshots: memorystream@0.3.1: {} - meow@12.1.1: {} + meow@13.2.0: {} merge-source-map@1.1.0: dependencies: @@ -6335,7 +6333,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.6.2 + semver: 7.6.3 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -6360,7 +6358,7 @@ snapshots: dependencies: path-key: 4.0.0 - nwsapi@2.2.10: {} + nwsapi@2.2.12: {} object-assign@4.1.1: {} @@ -6398,10 +6396,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.1.1 - p-limit@5.0.0: dependencies: yocto-queue: 1.1.1 @@ -6410,10 +6404,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - pac-proxy-agent@7.0.2: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -6447,13 +6437,11 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-json@7.1.1: + parse-json@8.1.0: dependencies: '@babel/code-frame': 7.24.7 - error-ex: 1.3.2 - json-parse-even-better-errors: 3.0.2 - lines-and-columns: 2.0.4 - type-fest: 3.13.1 + index-to-position: 0.1.2 + type-fest: 4.21.0 parse5@7.1.2: dependencies: @@ -6461,8 +6449,6 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-is-inside@1.0.2: {} @@ -6500,47 +6486,47 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 - postcss-modules-extract-imports@3.1.0(postcss@8.4.39): + postcss-modules-extract-imports@3.1.0(postcss@8.4.40): dependencies: - postcss: 8.4.39 + postcss: 8.4.40 - postcss-modules-local-by-default@4.0.5(postcss@8.4.39): + postcss-modules-local-by-default@4.0.5(postcss@8.4.40): dependencies: - icss-utils: 5.1.0(postcss@8.4.39) - postcss: 8.4.39 - postcss-selector-parser: 6.1.0 + icss-utils: 5.1.0(postcss@8.4.40) + postcss: 8.4.40 + postcss-selector-parser: 6.1.1 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.4.39): + postcss-modules-scope@3.2.0(postcss@8.4.40): dependencies: - postcss: 8.4.39 - postcss-selector-parser: 6.1.0 + postcss: 8.4.40 + postcss-selector-parser: 6.1.1 - postcss-modules-values@4.0.0(postcss@8.4.39): + postcss-modules-values@4.0.0(postcss@8.4.40): dependencies: - icss-utils: 5.1.0(postcss@8.4.39) - postcss: 8.4.39 + icss-utils: 5.1.0(postcss@8.4.40) + postcss: 8.4.40 - postcss-modules@6.0.0(postcss@8.4.39): + postcss-modules@6.0.0(postcss@8.4.40): dependencies: generic-names: 4.0.0 - icss-utils: 5.1.0(postcss@8.4.39) + icss-utils: 5.1.0(postcss@8.4.40) lodash.camelcase: 4.3.0 - postcss: 8.4.39 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.39) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.39) - postcss-modules-scope: 3.2.0(postcss@8.4.39) - postcss-modules-values: 4.0.0(postcss@8.4.39) + postcss: 8.4.40 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.40) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.40) + postcss-modules-scope: 3.2.0(postcss@8.4.40) + postcss-modules-values: 4.0.0(postcss@8.4.40) string-hash: 1.1.3 - postcss-selector-parser@6.1.0: + postcss-selector-parser@6.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 postcss-value-parser@4.2.0: {} - postcss@8.4.39: + postcss@8.4.40: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -6548,7 +6534,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.3.2: {} + prettier@3.3.3: {} pretty-bytes@6.1.1: {} @@ -6659,24 +6645,24 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@22.12.1: + puppeteer-core@22.14.0: dependencies: - '@puppeteer/browsers': 2.2.3 - chromium-bidi: 0.5.24(devtools-protocol@0.0.1299070) + '@puppeteer/browsers': 2.3.0 + chromium-bidi: 0.6.2(devtools-protocol@0.0.1312386) debug: 4.3.5 - devtools-protocol: 0.0.1299070 + devtools-protocol: 0.0.1312386 ws: 8.18.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - puppeteer@22.12.1(typescript@5.4.5): + puppeteer@22.14.0(typescript@5.4.5): dependencies: - '@puppeteer/browsers': 2.2.3 + '@puppeteer/browsers': 2.3.0 cosmiconfig: 9.0.0(typescript@5.4.5) - devtools-protocol: 0.0.1299070 - puppeteer-core: 22.12.1 + devtools-protocol: 0.0.1312386 + puppeteer-core: 22.14.0 transitivePeerDependencies: - bufferutil - supports-color @@ -6705,18 +6691,19 @@ snapshots: json-parse-even-better-errors: 3.0.2 npm-normalize-package-bin: 3.0.1 - read-pkg-up@10.1.0: + read-package-up@11.0.0: dependencies: - find-up: 6.3.0 - read-pkg: 8.1.0 + find-up-simple: 1.0.0 + read-pkg: 9.0.1 type-fest: 4.21.0 - read-pkg@8.1.0: + read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 - parse-json: 7.1.1 + parse-json: 8.1.0 type-fest: 4.21.0 + unicorn-magic: 0.1.0 readable-stream@2.3.8: dependencies: @@ -6770,29 +6757,29 @@ snapshots: dependencies: glob: 10.4.3 - rollup-plugin-dts@6.1.1(rollup@4.18.1)(typescript@5.4.5): + rollup-plugin-dts@6.1.1(rollup@4.19.1)(typescript@5.4.5): dependencies: magic-string: 0.30.10 - rollup: 4.18.1 + rollup: 4.19.1 typescript: 5.4.5 optionalDependencies: '@babel/code-frame': 7.24.7 - rollup-plugin-esbuild@6.1.1(esbuild@0.23.0)(rollup@4.18.1): + rollup-plugin-esbuild@6.1.1(esbuild@0.23.0)(rollup@4.19.1): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) debug: 4.3.5 es-module-lexer: 1.5.4 esbuild: 0.23.0 get-tsconfig: 4.7.5 - rollup: 4.18.1 + rollup: 4.19.1 transitivePeerDependencies: - supports-color - rollup-plugin-polyfill-node@0.13.0(rollup@4.18.1): + rollup-plugin-polyfill-node@0.13.0(rollup@4.19.1): dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.18.1) - rollup: 4.18.1 + '@rollup/plugin-inject': 5.0.5(rollup@4.19.1) + rollup: 4.19.1 rollup@4.18.0: dependencies: @@ -6816,26 +6803,26 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 - rollup@4.18.1: + rollup@4.19.1: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.1 - '@rollup/rollup-android-arm64': 4.18.1 - '@rollup/rollup-darwin-arm64': 4.18.1 - '@rollup/rollup-darwin-x64': 4.18.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 - '@rollup/rollup-linux-arm-musleabihf': 4.18.1 - '@rollup/rollup-linux-arm64-gnu': 4.18.1 - '@rollup/rollup-linux-arm64-musl': 4.18.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 - '@rollup/rollup-linux-riscv64-gnu': 4.18.1 - '@rollup/rollup-linux-s390x-gnu': 4.18.1 - '@rollup/rollup-linux-x64-gnu': 4.18.1 - '@rollup/rollup-linux-x64-musl': 4.18.1 - '@rollup/rollup-win32-arm64-msvc': 4.18.1 - '@rollup/rollup-win32-ia32-msvc': 4.18.1 - '@rollup/rollup-win32-x64-msvc': 4.18.1 + '@rollup/rollup-android-arm-eabi': 4.19.1 + '@rollup/rollup-android-arm64': 4.19.1 + '@rollup/rollup-darwin-arm64': 4.19.1 + '@rollup/rollup-darwin-x64': 4.19.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.19.1 + '@rollup/rollup-linux-arm-musleabihf': 4.19.1 + '@rollup/rollup-linux-arm64-gnu': 4.19.1 + '@rollup/rollup-linux-arm64-musl': 4.19.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1 + '@rollup/rollup-linux-riscv64-gnu': 4.19.1 + '@rollup/rollup-linux-s390x-gnu': 4.19.1 + '@rollup/rollup-linux-x64-gnu': 4.19.1 + '@rollup/rollup-linux-x64-musl': 4.19.1 + '@rollup/rollup-win32-arm64-msvc': 4.19.1 + '@rollup/rollup-win32-ia32-msvc': 4.19.1 + '@rollup/rollup-win32-x64-msvc': 4.19.1 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} @@ -6868,11 +6855,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.2: {} + semver@7.6.3: {} serve-handler@6.1.5: dependencies: @@ -6987,8 +6970,6 @@ snapshots: spdx-license-ids@3.0.18: {} - split2@4.2.0: {} - sprintf-js@1.1.3: {} stable-hash@0.0.4: {} @@ -7063,7 +7044,7 @@ snapshots: symbol-tree@3.2.4: {} - tar-fs@3.0.5: + tar-fs@3.0.6: dependencies: pump: 3.0.0 tar-stream: 3.1.7 @@ -7101,8 +7082,6 @@ snapshots: dependencies: b4a: 1.6.6 - text-extensions@2.4.0: {} - text-table@0.2.0: {} through@2.3.8: {} @@ -7159,16 +7138,14 @@ snapshots: type-fest@2.19.0: {} - type-fest@3.13.1: {} - type-fest@4.21.0: {} - typescript-eslint@7.15.0(eslint@9.6.0)(typescript@5.4.5): + typescript-eslint@7.17.0(eslint@9.8.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 7.15.0(@typescript-eslint/parser@7.15.0(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.15.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.4.5) - eslint: 9.6.0 + '@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.4.5))(eslint@9.8.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.4.5) + eslint: 9.8.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -7188,6 +7165,8 @@ snapshots: undici-types@5.26.5: {} + unicorn-magic@0.1.0: {} + universalify@0.2.0: {} universalify@2.0.1: {} @@ -7225,12 +7204,12 @@ snapshots: vary@1.1.2: {} - vite-hyper-config@0.2.1(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1)): + vite-hyper-config@0.2.1(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1)(vite@5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1)): dependencies: cac: 6.7.14 picocolors: 1.0.1 - vite: 5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) - vite-node: 1.5.0(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + vite: 5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) + vite-node: 1.5.0(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -7241,30 +7220,13 @@ snapshots: - supports-color - terser - vite-node@1.5.0(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-node@1.6.0(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1): + vite-node@1.5.0(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1): dependencies: cac: 6.7.14 debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + vite: 5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -7275,44 +7237,61 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.7.42(rollup@4.18.1)(vite@5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1)): + vite-node@1.6.0(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1): + dependencies: + cac: 6.7.14 + debug: 4.3.5 + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-plugin-inspect@0.7.42(rollup@4.19.1)(vite@5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1)): dependencies: '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) - debug: 4.3.4 + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) + debug: 4.3.5 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 open: 9.1.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + vite: 5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) transitivePeerDependencies: - rollup - supports-color - vite@5.2.9(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1): + vite@5.2.9(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1): dependencies: esbuild: 0.20.2 - postcss: 8.4.39 + postcss: 8.4.40 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.13 fsevents: 2.3.3 sass: 1.77.8 terser: 5.31.1 - vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1): + vite@5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1): dependencies: esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.18.1 + postcss: 8.4.40 + rollup: 4.19.1 optionalDependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.13 fsevents: 2.3.3 sass: 1.77.8 terser: 5.31.1 - vitest@1.6.0(@types/node@20.14.10)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.8)(terser@5.31.1): + vitest@1.6.0(@types/node@20.14.13)(@vitest/ui@1.6.0)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -7331,13 +7310,13 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) - vite-node: 1.6.0(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.1) + vite: 5.3.3(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) + vite-node: 1.6.0(@types/node@20.14.13)(sass@1.77.8)(terser@5.31.1) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.14.10 + '@types/node': 20.14.13 '@vitest/ui': 1.6.0(vitest@1.6.0) - jsdom: 24.1.0 + jsdom: 24.1.1 transitivePeerDependencies: - less - lightningcss @@ -7424,8 +7403,6 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - yaml@2.4.5: {} yargs-parser@21.1.1: {}