From 7ae12ce84d1c56f3dfe547b64d53496c014fbf12 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Mon, 13 Jan 2025 17:22:47 +1100 Subject: [PATCH] chore: legacy exports and misc tech debt (#457) * chore: fix legacy exports * chore: fix legacy exports * chore: bump lock * chore: broken tests * chore: script legacy exports * chore: tidy up * chore: tidy up * chore: bump * chore: bump --- docs/package.json | 8 +- examples/vite-ssr-react/package.json | 8 +- examples/vite-ssr-vue/package.json | 12 +- package.json | 11 +- packages/addons/export-size-report.json | 37 - packages/addons/package.json | 7 +- packages/addons/src/index.ts | 2 +- packages/schema/src/head.ts | 11 +- packages/schema/src/hooks.ts | 8 +- packages/schema/src/index.ts | 1 + packages/schema/src/plugins.ts | 10 + packages/scripts/build.config.ts | 20 +- packages/scripts/legacy.d.ts | 1 - packages/scripts/package.json | 30 +- packages/scripts/src/legacy.ts | 95 -- packages/scripts/vue-legacy.d.ts | 1 - packages/shared/export-size-report.json | 239 --- packages/shared/package.json | 3 +- packages/unhead/build.config.ts | 2 +- packages/unhead/export-size-report.json | 108 -- packages/unhead/optionalPlugins.d.ts | 1 - packages/unhead/package.json | 18 +- packages/unhead/plugins.d.ts | 1 + packages/unhead/src/client/createHead.ts | 6 +- packages/unhead/src/client/debounced.ts | 12 +- packages/unhead/src/client/index.ts | 1 + .../unhead/src/client/plugins/domPlugin.ts | 6 +- packages/unhead/src/client/renderDOMHead.ts | 8 +- packages/unhead/src/createHead.ts | 8 +- packages/unhead/src/legacy.ts | 44 - packages/unhead/src/legacy/index.ts | 116 ++ packages/unhead/src/legacy/useScript.ts | 342 ++++ packages/unhead/src/optionalPlugins/index.ts | 3 - packages/unhead/src/plugins/dedupe.ts | 2 +- .../deprecations.ts | 0 packages/unhead/src/plugins/index.ts | 9 + .../inferSeoMetaPlugin.ts | 0 packages/unhead/src/plugins/normalize.ts | 19 + .../{optionalPlugins => plugins}/promises.ts | 3 +- packages/unhead/src/plugins/sort.ts | 2 +- packages/unhead/src/plugins/templateParams.ts | 2 +- packages/unhead/src/plugins/titleTemplate.ts | 2 +- packages/unhead/src/plugins/xss.ts | 2 +- packages/vue/build.config.ts | 5 +- packages/vue/export-size-report.json | 130 -- packages/vue/legacy.d.ts | 1 + packages/vue/package.json | 3 +- .../src/{plugins => }/VueReactivityPlugin.ts | 4 +- packages/vue/src/client.ts | 24 + packages/vue/src/client/index.ts | 14 - packages/vue/src/composables/injectHead.ts | 3 +- packages/vue/src/composables/useHeadSafe.ts | 2 +- packages/vue/src/composables/useSeoMeta.ts | 2 +- packages/vue/src/composables/useServerHead.ts | 6 +- .../vue/src/composables/useServerHeadSafe.ts | 3 +- .../vue/src/composables/useServerSeoMeta.ts | 2 +- packages/vue/src/index.ts | 11 +- .../vue/src/{createHead.ts => install.ts} | 0 packages/vue/src/legacy/index.ts | 128 ++ .../src/legacy/useScript.ts} | 11 +- .../vue/src/{server/index.ts => server.ts} | 16 +- packages/vue/test/promises.test.ts | 2 +- pnpm-lock.yaml | 1495 ++++++++++------- test/unhead/plugins/infer-seo-meta.test.ts | 2 +- test/unhead/promises.test.ts | 2 +- test/unhead/ssr/deduping.test.ts | 2 +- test/unhead/ssr/tagPosition.test.ts | 2 +- tsconfig.json | 4 +- 68 files changed, 1676 insertions(+), 1419 deletions(-) delete mode 100644 packages/addons/export-size-report.json create mode 100644 packages/schema/src/plugins.ts delete mode 100644 packages/scripts/legacy.d.ts delete mode 100644 packages/scripts/src/legacy.ts delete mode 100644 packages/scripts/vue-legacy.d.ts delete mode 100644 packages/shared/export-size-report.json delete mode 100644 packages/unhead/export-size-report.json delete mode 100644 packages/unhead/optionalPlugins.d.ts create mode 100644 packages/unhead/plugins.d.ts delete mode 100644 packages/unhead/src/legacy.ts create mode 100644 packages/unhead/src/legacy/index.ts create mode 100644 packages/unhead/src/legacy/useScript.ts delete mode 100644 packages/unhead/src/optionalPlugins/index.ts rename packages/unhead/src/{optionalPlugins => plugins}/deprecations.ts (100%) create mode 100644 packages/unhead/src/plugins/index.ts rename packages/unhead/src/{optionalPlugins => plugins}/inferSeoMetaPlugin.ts (100%) create mode 100644 packages/unhead/src/plugins/normalize.ts rename packages/unhead/src/{optionalPlugins => plugins}/promises.ts (86%) delete mode 100644 packages/vue/export-size-report.json create mode 100644 packages/vue/legacy.d.ts rename packages/vue/src/{plugins => }/VueReactivityPlugin.ts (67%) create mode 100644 packages/vue/src/client.ts delete mode 100644 packages/vue/src/client/index.ts rename packages/vue/src/{createHead.ts => install.ts} (100%) create mode 100644 packages/vue/src/legacy/index.ts rename packages/{scripts/src/vue-legacy.ts => vue/src/legacy/useScript.ts} (94%) rename packages/vue/src/{server/index.ts => server.ts} (60%) diff --git a/docs/package.json b/docs/package.json index 7c2b8ed4..a0d5b824 100755 --- a/docs/package.json +++ b/docs/package.json @@ -9,19 +9,19 @@ }, "devDependencies": { "@iconify-json/heroicons": "^1.2.2", - "@iconify-json/lucide": "^1.2.21", + "@iconify-json/lucide": "^1.2.22", "@iconify-json/noto": "^1.2.2", "@iconify-json/ph": "^1.2.2", - "@iconify-json/simple-icons": "^1.2.18", + "@iconify-json/simple-icons": "^1.2.19", "@nuxt/content": "^2.13.4", "@nuxt/devtools": "^1.7.0", "@nuxt/fonts": "0.10.3", - "@nuxt/image": "^1.8.1", + "@nuxt/image": "^1.9.0", "@nuxt/scripts": "^0.9.5", "@nuxt/ui": "2.20.0", "@nuxt/ui-pro": "1.6.0", "@nuxtjs/seo": "2.0.2", - "@vueuse/nuxt": "^12.3.0", + "@vueuse/nuxt": "^12.4.0", "nuxt": "3.15.1", "nuxt-icon": "0.6.10", "nuxt-lego": "^0.0.14", diff --git a/examples/vite-ssr-react/package.json b/examples/vite-ssr-react/package.json index 0ccd8bc4..d98fa41a 100644 --- a/examples/vite-ssr-react/package.json +++ b/examples/vite-ssr-react/package.json @@ -13,14 +13,14 @@ "debug": "node --inspect-brk server" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-router-dom": "^7.0.1" + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-router-dom": "^7.1.1" }, "devDependencies": { "@vitejs/plugin-react": "latest", "compression": "^1.7.5", - "express": "^4.21.1", + "express": "^4.21.2", "serve-static": "^1.16.2" } } diff --git a/examples/vite-ssr-vue/package.json b/examples/vite-ssr-vue/package.json index 11917a5e..0241514d 100644 --- a/examples/vite-ssr-vue/package.json +++ b/examples/vite-ssr-vue/package.json @@ -16,20 +16,20 @@ }, "dependencies": { "@unhead/dom": "workspace:*", - "unhead": "workspace:*", "@unhead/schema-org": "workspace:*", "@unhead/shared": "workspace:*", "@unhead/vue": "workspace:*", - "pinia": "^2.2.6", - "unplugin-auto-import": "^0.18.5", - "vite": "^5.4.11", - "vue-router": "^4.4.5" + "pinia": "^2.3.0", + "unhead": "workspace:*", + "unplugin-auto-import": "^19.0.0", + "vite": "^6.0.7", + "vue-router": "^4.5.0" }, "devDependencies": { "@vitejs/plugin-vue": "latest", "@vitejs/plugin-vue-jsx": "latest", "compression": "^1.7.5", - "express": "^4.21.1", + "express": "^4.21.2", "serve-static": "^1.16.2", "vue": "^3.5.13" } diff --git a/package.json b/package.json index c52d76cf..31d6fbf4 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "stub": "pnpm -r --parallel --filter=./packages/** run stub", "test": "vitest", "test:memory": "vitest --expose-gc run memory", - "export:sizes": "pnpm -r --parallel --filter=./packages/** run export:sizes", "bump": "bumpp package.json packages/*/package.json --commit --push --tag", "release": "pnpm build && pnpm bump && pnpm -r publish --no-git-checks", "release:beta": "pnpm build && pnpm bump && pnpm -r publish --no-git-checks --tag beta", @@ -23,16 +22,16 @@ "benchmark": "vitest bench" }, "devDependencies": { - "@antfu/eslint-config": "^3.12.1", + "@antfu/eslint-config": "^3.14.0", "@types/fs-extra": "^11.0.4", "@types/jsdom": "^21.1.7", "acorn-loose": "^8.4.0", - "bumpp": "^9.9.2", - "eslint": "^9.17.0", + "bumpp": "^9.10.0", + "eslint": "^9.18.0", "fs-extra": "^11.2.0", - "jsdom": "^25.0.1", + "jsdom": "^26.0.0", "typescript": "5.7.2", - "unbuild": "^3.2.0", + "unbuild": "^3.3.0", "utility-types": "^3.11.0", "vitest": "^2.1.8", "vue": "^3.5.13" diff --git a/packages/addons/export-size-report.json b/packages/addons/export-size-report.json deleted file mode 100644 index d078e656..00000000 --- a/packages/addons/export-size-report.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "meta": { - "name": "@unhead/addons", - "dependencies": [ - "@rollup/pluginutils", - "@unhead/schema", - "@unhead/shared", - "magic-string", - "mlly", - "ufo", - "unplugin", - "unplugin-ast", - "@babel/types", - "estree-walker" - ], - "versions": { - "export-size": "0.7.0", - "esbuild": "^0.19.5" - } - }, - "exports": [ - { - "name": "InferSeoMetaPlugin", - "path": "dist/index.mjs", - "minified": 1113, - "minzipped": 434, - "bundled": 3004 - }, - { - "name": "DefaultCriticalTags", - "path": "dist/index.mjs", - "minified": 158, - "minzipped": 112, - "bundled": 309 - } - ] -} diff --git a/packages/addons/package.json b/packages/addons/package.json index d428b956..e95bb702 100644 --- a/packages/addons/package.json +++ b/packages/addons/package.json @@ -50,8 +50,7 @@ ], "scripts": { "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" + "stub": "unbuild . --stub" }, "peerDependencies": { "unhead": "workspace:*" @@ -62,12 +61,12 @@ "@unhead/shared": "workspace:*", "estree-walker": "^3.0.3", "magic-string": "^0.30.17", - "mlly": "^1.7.3", + "mlly": "^1.7.4", "ufo": "^1.5.4", "unplugin": "^2.1.2", "unplugin-ast": "^0.13.1" }, "devDependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.5" } } diff --git a/packages/addons/src/index.ts b/packages/addons/src/index.ts index 1672f0b6..014378dc 100644 --- a/packages/addons/src/index.ts +++ b/packages/addons/src/index.ts @@ -1,3 +1,3 @@ export * from './constants' -export { InferSeoMetaPlugin } from 'unhead/optionalPlugins' +export { InferSeoMetaPlugin } from 'unhead/plugins' diff --git a/packages/schema/src/head.ts b/packages/schema/src/head.ts index c3df1bc7..9303ae4b 100644 --- a/packages/schema/src/head.ts +++ b/packages/schema/src/head.ts @@ -1,5 +1,6 @@ import type { Hookable, NestedHooks } from 'hookable' import type { HeadHooks } from './hooks' +import type { DomPluginOptions } from './plugins' import type { Head } from './schema' import type { HeadTag, ProcessesTemplateParams, ResolvesDuplicates, TagPosition, TagPriority, TemplateParams } from './tags' @@ -32,7 +33,7 @@ export interface HeadEntry { * * @internal */ - transform?: (input: Input) => Promise | Input + transform?: (input: Input) => Input /** * Head entry index * @@ -77,7 +78,6 @@ export interface ActiveHeadEntry { } export interface CreateHeadOptions { - domDelayFn?: (fn: () => void) => void document?: Document plugins?: HeadPluginInput[] hooks?: NestedHooks @@ -89,6 +89,13 @@ export interface CreateHeadOptions { disableCapoSorting?: boolean } +export interface CreateClientHeadOptions extends CreateHeadOptions { + /** + * Options to pass to the DomPlugin. + */ + domOptions?: DomPluginOptions +} + export interface HeadEntryOptions extends TagPosition, TagPriority, ProcessesTemplateParams, ResolvesDuplicates { mode?: RuntimeMode transform?: (input: unknown) => unknown diff --git a/packages/schema/src/hooks.ts b/packages/schema/src/hooks.ts index cb38f232..aa8a32c6 100644 --- a/packages/schema/src/hooks.ts +++ b/packages/schema/src/hooks.ts @@ -1,4 +1,4 @@ -import type { CreateHeadOptions, HeadEntry, Unhead } from './head' +import type { CreateClientHeadOptions, HeadEntry, Unhead } from './head' import type { HeadTag } from './tags' export type HookResult = Promise | void @@ -38,17 +38,17 @@ export interface HeadHooks { 'init': (ctx: Unhead) => HookResult 'entries:updated': (ctx: Unhead) => HookResult 'entries:resolve': (ctx: EntryResolveCtx) => HookResult - 'tag:normalise': (ctx: { tag: HeadTag, entry: HeadEntry, resolvedOptions: CreateHeadOptions }) => HookResult + 'tag:normalise': (ctx: { tag: HeadTag, entry: HeadEntry, resolvedOptions: CreateClientHeadOptions }) => HookResult 'tags:beforeResolve': (ctx: { tags: HeadTag[] }) => HookResult 'tags:resolve': (ctx: { tags: HeadTag[] }) => HookResult 'tags:afterResolve': (ctx: { tags: HeadTag[] }) => HookResult - // @unhead/dom + // client 'dom:beforeRender': (ctx: DomBeforeRenderCtx) => HookResult 'dom:renderTag': (ctx: DomRenderTagContext, document: Document, track: any) => HookResult 'dom:rendered': (ctx: { renders: DomRenderTagContext[] }) => HookResult - // @unhead/ssr + // server 'ssr:beforeRender': (ctx: ShouldRenderContext) => HookResult 'ssr:render': (ctx: { tags: HeadTag[] }) => HookResult 'ssr:rendered': (ctx: SSRRenderContext) => HookResult diff --git a/packages/schema/src/index.ts b/packages/schema/src/index.ts index 1a9b69b4..787accc3 100644 --- a/packages/schema/src/index.ts +++ b/packages/schema/src/index.ts @@ -1,5 +1,6 @@ export * from './head' export * from './hooks' +export * from './plugins' export * from './safeSchema' export * from './schema' export * from './tags' diff --git a/packages/schema/src/plugins.ts b/packages/schema/src/plugins.ts new file mode 100644 index 00000000..2922a1f6 --- /dev/null +++ b/packages/schema/src/plugins.ts @@ -0,0 +1,10 @@ +export interface RenderDomHeadOptions { + /** + * Document to use for rendering. Allows stubbing for testing. + */ + document?: Document +} + +export interface DomPluginOptions extends RenderDomHeadOptions { + delayFn?: (fn: () => void) => void +} diff --git a/packages/scripts/build.config.ts b/packages/scripts/build.config.ts index ae6d6d86..9bf42db9 100644 --- a/packages/scripts/build.config.ts +++ b/packages/scripts/build.config.ts @@ -9,24 +9,6 @@ export default defineBuildConfig({ entries: [ { input: 'src/index' }, { input: 'src/vue/index', name: 'vue' }, - { input: 'src/legacy', name: 'legacy' }, - { input: 'src/vue-legacy', name: 'vue-legacy' }, - ], - externals: [ - 'vue', - '@vue/runtime-core', - 'unplugin-vue-components', - 'unhead', - '@unhead/vue', - '@unhead/schema', - 'vite', - 'vue-router', - '@unhead/vue', - '@unhead/schema', - 'unplugin-ast', - 'unplugin', - 'unplugin-vue-components', - 'vue', - '@vue/runtime-core', ], + externals: ['vue'], }) diff --git a/packages/scripts/legacy.d.ts b/packages/scripts/legacy.d.ts deleted file mode 100644 index 39833cfa..00000000 --- a/packages/scripts/legacy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/legacy' diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 3c3eab1e..a0f51aad 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -31,16 +31,6 @@ "types": "./dist/vue.d.ts", "import": "./dist/vue.mjs", "require": "./dist/vue.cjs" - }, - "./legacy": { - "types": "./dist/legacy.d.ts", - "import": "./dist/legacy.mjs", - "require": "./dist/legacy.cjs" - }, - "./vue-legacy": { - "types": "./dist/vue-legacy.d.ts", - "import": "./dist/vue-legacy.mjs", - "require": "./dist/vue-legacy.cjs" } }, "main": "dist/index.cjs", @@ -50,18 +40,11 @@ "*": { "vue": [ "dist/vue" - ], - "legacy": [ - "dist/legacy" - ], - "vue-legacy": [ - "dist/vue-legacy" ] } }, "files": [ "dist", - "legacy.d.ts", "overrides.d.ts", "vue.d.ts" ], @@ -73,7 +56,6 @@ "lint": "eslint \"{src,test}/**/*.{ts,vue,json,yml}\" --fix" }, "peerDependencies": { - "@unhead/shared": "workspace:*", "@unhead/vue": "workspace:*", "unhead": "workspace:*" }, @@ -82,16 +64,8 @@ "optional": true } }, - "build": { - "external": [ - "vue" - ] - }, - "devDependencies": { + "dependencies": { "@unhead/schema": "workspace:*", - "@unhead/shared": "workspace:*", - "@unhead/vue": "workspace:*", - "unhead": "workspace:*", - "unplugin-vue-components": "^0.27.5" + "@unhead/shared": "workspace:*" } } diff --git a/packages/scripts/src/legacy.ts b/packages/scripts/src/legacy.ts deleted file mode 100644 index e20c624e..00000000 --- a/packages/scripts/src/legacy.ts +++ /dev/null @@ -1,95 +0,0 @@ -import type { UseScriptOptions as CurrentUseScriptOptions, ScriptInstance, UseFunctionType, UseScriptInput } from './types' -import { useUnhead } from 'unhead' -import { useScript as _useScript } from './useScript' - -export interface UseScriptOptions> extends CurrentUseScriptOptions { - /** - * Stub the script instance. Useful for SSR or testing. - */ - stub?: ((ctx: { script: ScriptInstance, fn: string | symbol }) => any) -} - -type BaseScriptApi = Record - -export type AsAsyncFunctionValues = { - [key in keyof T]: - T[key] extends any[] ? T[key] : - T[key] extends (...args: infer A) => infer R ? (...args: A) => R extends Promise ? R : Promise : - T[key] extends Record ? AsAsyncFunctionValues : - never -} - -export type UseScriptContext> = - (Promise & ScriptInstance) - & AsAsyncFunctionValues - & { - /** - * @deprecated Use top-level functions instead. - */ - $script: Promise & ScriptInstance - } - -const ScriptProxyTarget = Symbol('ScriptProxyTarget') -function scriptProxy() {} -scriptProxy[ScriptProxyTarget] = true - -export function useScript = Record>(_input: UseScriptInput, _options?: UseScriptOptions): UseScriptContext, T>> { - const head = _options?.head || useUnhead() - const script = _useScript(_input, _options) as any as UseScriptContext - // support deprecated behavior - script.$script = script - const proxyChain = (instance: any, accessor?: string | symbol, accessors?: (string | symbol)[]) => { - return new Proxy((!accessor ? instance : instance?.[accessor]) || scriptProxy, { - get(_, k, r) { - // @ts-expect-error untyped - head.hooks.callHook('script:instance-fn', { script, fn: k, exists: k in _ }) - if (!accessor) { - const stub = _options?.stub?.({ script, fn: k }) - if (stub) - return stub - } - if (_ && k in _ && typeof _[k] !== 'undefined') { - return Reflect.get(_, k, r) - } - if (k === Symbol.iterator) { - return [][Symbol.iterator] - } - return proxyChain(accessor ? instance?.[accessor] : instance, k, accessors || [k]) - }, - async apply(_, _this, args) { - // we are faking, just return, avoid promise handles - if (head.ssr && _[ScriptProxyTarget]) - return - let instance: any - const access = (fn?: T) => { - instance = fn || instance - for (let i = 0; i < (accessors || []).length; i++) { - const k = (accessors || [])[i] - fn = fn?.[k] - } - return fn - } - let fn = access(script.instance) - if (!fn) { - fn = await (new Promise((resolve) => { - script.onLoaded((api) => { - resolve(access(api)) - }) - })) - } - return typeof fn === 'function' ? Reflect.apply(fn, instance, args) : fn - }, - }) - } - script.proxy = proxyChain(script.instance) - return new Proxy(Object.assign(script._loadPromise, script), { - get(_, k) { - // _ keys are reserved for internal overrides - const target = (k in script || String(k)[0] === '_') ? script : script.proxy - if (k === 'then' || k === 'catch') { - return script[k].bind(script) - } - return Reflect.get(target, k, target) - }, - }) -} diff --git a/packages/scripts/vue-legacy.d.ts b/packages/scripts/vue-legacy.d.ts deleted file mode 100644 index 39833cfa..00000000 --- a/packages/scripts/vue-legacy.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/legacy' diff --git a/packages/shared/export-size-report.json b/packages/shared/export-size-report.json deleted file mode 100644 index c026602f..00000000 --- a/packages/shared/export-size-report.json +++ /dev/null @@ -1,239 +0,0 @@ -{ - "meta": { - "name": "@unhead/shared", - "dependencies": [ - "@unhead/schema", - "packrup" - ], - "versions": { - "export-size": "0.7.0", - "esbuild": "^0.19.5" - } - }, - "exports": [ - { - "name": "unpackMeta", - "path": "dist/index.mjs", - "minified": 3881, - "minzipped": 1398, - "bundled": 6931 - }, - { - "name": "normaliseEntryTags", - "path": "dist/index.mjs", - "minified": 3539, - "minzipped": 1292, - "bundled": 5590 - }, - { - "name": "normaliseTag", - "path": "dist/index.mjs", - "minified": 3072, - "minzipped": 1113, - "bundled": 4801 - }, - { - "name": "whitelistSafeInput", - "path": "dist/index.mjs", - "minified": 3200, - "minzipped": 1053, - "bundled": 5913 - }, - { - "name": "packMeta", - "path": "dist/index.mjs", - "minified": 2608, - "minzipped": 1028, - "bundled": 4524 - }, - { - "name": "processTemplateParams", - "path": "dist/index.mjs", - "minified": 2248, - "minzipped": 868, - "bundled": 3462 - }, - { - "name": "resolvePackedMetaObjectValue", - "path": "dist/index.mjs", - "minified": 2370, - "minzipped": 858, - "bundled": 3901 - }, - { - "name": "normaliseProps", - "path": "dist/index.mjs", - "minified": 2261, - "minzipped": 850, - "bundled": 3464 - }, - { - "name": "tagDedupeKey", - "path": "dist/index.mjs", - "minified": 1965, - "minzipped": 743, - "bundled": 2941 - }, - { - "name": "tagWeight", - "path": "dist/index.mjs", - "minified": 1949, - "minzipped": 727, - "bundled": 3085 - }, - { - "name": "hashTag", - "path": "dist/index.mjs", - "minified": 1875, - "minzipped": 720, - "bundled": 2682 - }, - { - "name": "normaliseStyleClassProps", - "path": "dist/index.mjs", - "minified": 1830, - "minzipped": 663, - "bundled": 2649 - }, - { - "name": "hashCode", - "path": "dist/index.mjs", - "minified": 1719, - "minzipped": 638, - "bundled": 2466 - }, - { - "name": "ValidHeadTags", - "path": "dist/index.mjs", - "minified": 1687, - "minzipped": 597, - "bundled": 2443 - }, - { - "name": "composableNames", - "path": "dist/index.mjs", - "minified": 1681, - "minzipped": 590, - "bundled": 2429 - }, - { - "name": "TagConfigKeys", - "path": "dist/index.mjs", - "minified": 1685, - "minzipped": 588, - "bundled": 2413 - }, - { - "name": "UniqueTags", - "path": "dist/index.mjs", - "minified": 1645, - "minzipped": 580, - "bundled": 2366 - }, - { - "name": "resolveTitleTemplate", - "path": "dist/index.mjs", - "minified": 1636, - "minzipped": 576, - "bundled": 2465 - }, - { - "name": "NetworkEvents", - "path": "dist/index.mjs", - "minified": 1633, - "minzipped": 574, - "bundled": 2355 - }, - { - "name": "resolveMetaKeyType", - "path": "dist/index.mjs", - "minified": 1664, - "minzipped": 574, - "bundled": 2477 - }, - { - "name": "TAG_ALIASES", - "path": "dist/index.mjs", - "minified": 1606, - "minzipped": 573, - "bundled": 2378 - }, - { - "name": "HasElementTags", - "path": "dist/index.mjs", - "minified": 1622, - "minzipped": 572, - "bundled": 2365 - }, - { - "name": "TagsWithInnerContent", - "path": "dist/index.mjs", - "minified": 1625, - "minzipped": 572, - "bundled": 2365 - }, - { - "name": "SortModifiers", - "path": "dist/index.mjs", - "minified": 1633, - "minzipped": 571, - "bundled": 2362 - }, - { - "name": "asArray", - "path": "dist/index.mjs", - "minified": 1613, - "minzipped": 567, - "bundled": 2347 - }, - { - "name": "ScriptNetworkEvents", - "path": "dist/index.mjs", - "minified": 1596, - "minzipped": 566, - "bundled": 2327 - }, - { - "name": "TAG_WEIGHTS", - "path": "dist/index.mjs", - "minified": 1595, - "minzipped": 565, - "bundled": 2328 - }, - { - "name": "resolveMetaKeyValue", - "path": "dist/index.mjs", - "minified": 1611, - "minzipped": 562, - "bundled": 2378 - }, - { - "name": "IsBrowser", - "path": "dist/index.mjs", - "minified": 1589, - "minzipped": 557, - "bundled": 2315 - }, - { - "name": "SelfClosingTags", - "path": "dist/index.mjs", - "minified": 1594, - "minzipped": 556, - "bundled": 2322 - }, - { - "name": "TagEntityBits", - "path": "dist/index.mjs", - "minified": 1578, - "minzipped": 555, - "bundled": 2296 - }, - { - "name": "defineHeadPlugin", - "path": "dist/index.mjs", - "minified": 1592, - "minzipped": 552, - "bundled": 2330 - } - ] -} diff --git a/packages/shared/package.json b/packages/shared/package.json index 6091f55c..f5729f31 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -35,8 +35,7 @@ ], "scripts": { "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" + "stub": "unbuild . --stub" }, "dependencies": { "@unhead/schema": "workspace:*", diff --git a/packages/unhead/build.config.ts b/packages/unhead/build.config.ts index 896862c8..163f4494 100644 --- a/packages/unhead/build.config.ts +++ b/packages/unhead/build.config.ts @@ -8,7 +8,7 @@ export default defineBuildConfig({ }, entries: [ { input: 'src/index', name: 'index' }, - { input: 'src/optionalPlugins/index', name: 'optionalPlugins' }, + { input: 'src/plugins/index', name: 'plugins' }, { input: 'src/server/index', name: 'server' }, { input: 'src/client/index', name: 'client' }, { input: 'src/legacy', name: 'legacy' }, diff --git a/packages/unhead/export-size-report.json b/packages/unhead/export-size-report.json deleted file mode 100644 index 2914415f..00000000 --- a/packages/unhead/export-size-report.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "meta": { - "name": "unhead", - "dependencies": [ - "@unhead/dom", - "@unhead/schema", - "@unhead/shared", - "hookable" - ], - "versions": { - "export-size": "0.7.0", - "esbuild": "^0.19.5" - } - }, - "exports": [ - { - "name": "useScript", - "path": "dist/index.mjs", - "minified": 6187, - "minzipped": 2430, - "bundled": 12180 - }, - { - "name": "createHead", - "path": "dist/index.mjs", - "minified": 5671, - "minzipped": 2172, - "bundled": 11602 - }, - { - "name": "createServerHead", - "path": "dist/index.mjs", - "minified": 5630, - "minzipped": 2164, - "bundled": 11568 - }, - { - "name": "createHeadCore", - "path": "dist/index.mjs", - "minified": 5597, - "minzipped": 2151, - "bundled": 11435 - }, - { - "name": "useServerSeoMeta", - "path": "dist/index.mjs", - "minified": 4594, - "minzipped": 1757, - "bundled": 9421 - }, - { - "name": "useSeoMeta", - "path": "dist/index.mjs", - "minified": 4541, - "minzipped": 1742, - "bundled": 9293 - }, - { - "name": "useServerHeadSafe", - "path": "dist/index.mjs", - "minified": 4464, - "minzipped": 1704, - "bundled": 9051 - }, - { - "name": "useHeadSafe", - "path": "dist/index.mjs", - "minified": 4412, - "minzipped": 1698, - "bundled": 8932 - }, - { - "name": "useServerHead", - "path": "dist/index.mjs", - "minified": 4386, - "minzipped": 1680, - "bundled": 8905 - }, - { - "name": "useHead", - "path": "dist/index.mjs", - "minified": 4334, - "minzipped": 1668, - "bundled": 8794 - }, - { - "name": "unheadComposablesImports", - "path": "dist/index.mjs", - "minified": 4311, - "minzipped": 1663, - "bundled": 8711 - }, - { - "name": "getActiveHead", - "path": "dist/index.mjs", - "minified": 4284, - "minzipped": 1644, - "bundled": 8673 - }, - { - "name": "composableNames", - "path": "dist/index.mjs", - "minified": 4286, - "minzipped": 1643, - "bundled": 8610 - } - ] -} diff --git a/packages/unhead/optionalPlugins.d.ts b/packages/unhead/optionalPlugins.d.ts deleted file mode 100644 index e065b711..00000000 --- a/packages/unhead/optionalPlugins.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/optionalPlugins' diff --git a/packages/unhead/package.json b/packages/unhead/package.json index 35fc067d..389e8fa2 100644 --- a/packages/unhead/package.json +++ b/packages/unhead/package.json @@ -25,10 +25,10 @@ "import": "./dist/index.mjs", "require": "./dist/index.cjs" }, - "./optionalPlugins": { - "types": "./dist/optionalPlugins.d.ts", - "import": "./dist/optionalPlugins.mjs", - "require": "./dist/optionalPlugins.cjs" + "./plugins": { + "types": "./dist/plugins.d.ts", + "import": "./dist/plugins.mjs", + "require": "./dist/plugins.cjs" }, "./server": { "types": "./dist/server.d.ts", @@ -46,8 +46,8 @@ "types": "dist/index.d.ts", "optionalPlugins": { "*": { - "optionalPlugins": [ - "dist/optionalPlugins" + "plugins": [ + "dist/plugins" ], "server": [ "dist/server" @@ -64,16 +64,16 @@ "client.d.ts", "dist", "legacy.d.ts", - "optionalPlugins.d.ts", + "plugins.d.ts", "server.d.ts" ], "scripts": { "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" + "stub": "unbuild . --stub" }, "dependencies": { "@unhead/schema": "workspace:*", + "@unhead/scripts": "workspace:*", "@unhead/shared": "workspace:*", "hookable": "^5.5.3", "unctx": "^2.4.1" diff --git a/packages/unhead/plugins.d.ts b/packages/unhead/plugins.d.ts new file mode 100644 index 00000000..6acc16c9 --- /dev/null +++ b/packages/unhead/plugins.d.ts @@ -0,0 +1 @@ +export * from './dist/plugins' diff --git a/packages/unhead/src/client/createHead.ts b/packages/unhead/src/client/createHead.ts index 5f0a863a..a633d3c6 100644 --- a/packages/unhead/src/client/createHead.ts +++ b/packages/unhead/src/client/createHead.ts @@ -1,17 +1,17 @@ -import type { CreateHeadOptions, Head } from '@unhead/schema' +import type { CreateClientHeadOptions, Head } from '@unhead/schema' import { IsBrowser } from '@unhead/shared' import { unheadCtx } from '../context' import { createHeadCore } from '../createHead' import { DomPlugin } from './plugins/domPlugin' import { ClientEventHandlerPlugin } from './plugins/eventHandlers' -export function createHead = Head>(options: CreateHeadOptions = {}) { +export function createHead = Head>(options: CreateClientHeadOptions = {}) { const head = createHeadCore({ document: (IsBrowser ? document : undefined), ...options, plugins: [ ...(options.plugins || []), - DomPlugin(), + DomPlugin(options.domOptions), ClientEventHandlerPlugin, ], }) diff --git a/packages/unhead/src/client/debounced.ts b/packages/unhead/src/client/debounced.ts index 73a4b3ef..207217f2 100644 --- a/packages/unhead/src/client/debounced.ts +++ b/packages/unhead/src/client/debounced.ts @@ -1,18 +1,10 @@ -import type { Unhead } from '@unhead/schema' -import type { RenderDomHeadOptions } from './renderDOMHead' +import type { DomPluginOptions, Unhead } from '@unhead/schema' import { renderDOMHead } from './renderDOMHead' -export interface DebouncedRenderDomHeadOptions extends RenderDomHeadOptions { - /** - * Specify a custom delay function for delaying the render. - */ - delayFn?: (fn: () => void) => void -} - /** * Queue a debounced update of the DOM head. */ -export function debouncedRenderDOMHead>(head: T, options: DebouncedRenderDomHeadOptions = {}) { +export function debouncedRenderDOMHead>(head: T, options: DomPluginOptions = {}) { const fn = options.delayFn || (fn => setTimeout(fn, 10)) return head._domDebouncedUpdatePromise = head._domDebouncedUpdatePromise || new Promise(resolve => fn(() => { return renderDOMHead(head, options) diff --git a/packages/unhead/src/client/index.ts b/packages/unhead/src/client/index.ts index f0d3c880..bd17b9e7 100644 --- a/packages/unhead/src/client/index.ts +++ b/packages/unhead/src/client/index.ts @@ -1,4 +1,5 @@ export * from './createHead' export * from './debounced' export * from './plugins/domPlugin' +export * from './plugins/eventHandlers' export * from './renderDOMHead' diff --git a/packages/unhead/src/client/plugins/domPlugin.ts b/packages/unhead/src/client/plugins/domPlugin.ts index 7dd0dc2f..212950d2 100644 --- a/packages/unhead/src/client/plugins/domPlugin.ts +++ b/packages/unhead/src/client/plugins/domPlugin.ts @@ -1,11 +1,7 @@ -import type { RenderDomHeadOptions } from '../renderDOMHead' +import type { DomPluginOptions } from '@unhead/schema' import { defineHeadPlugin } from '@unhead/shared' import { debouncedRenderDOMHead } from '../debounced' -export interface DomPluginOptions extends RenderDomHeadOptions { - delayFn?: (fn: () => void) => void -} - export function DomPlugin(options?: DomPluginOptions) { return defineHeadPlugin((head) => { // restore initial entry from payload (titleTemplate and templateParams) diff --git a/packages/unhead/src/client/renderDOMHead.ts b/packages/unhead/src/client/renderDOMHead.ts index b02386ac..28149772 100644 --- a/packages/unhead/src/client/renderDOMHead.ts +++ b/packages/unhead/src/client/renderDOMHead.ts @@ -3,17 +3,11 @@ import type { DomRenderTagContext, DomState, HeadTag, + RenderDomHeadOptions, Unhead, } from '@unhead/schema' import { HasElementTags, hashTag, normaliseProps, tagDedupeKey } from '@unhead/shared' -export interface RenderDomHeadOptions { - /** - * Document to use for rendering. Allows stubbing for testing. - */ - document?: Document -} - /** * Render the head tags to the DOM. */ diff --git a/packages/unhead/src/createHead.ts b/packages/unhead/src/createHead.ts index 078c2f85..e56dd383 100644 --- a/packages/unhead/src/createHead.ts +++ b/packages/unhead/src/createHead.ts @@ -11,11 +11,7 @@ import type { } from '@unhead/schema' import { normaliseEntryTags } from '@unhead/shared' import { createHooks } from 'hookable' -import DedupePlugin from './plugins/dedupe' -import SortPlugin from './plugins/sort' -import TemplateParamsPlugin from './plugins/templateParams' -import TitleTemplatePlugin from './plugins/titleTemplate' -import XSSPlugin from './plugins/xss' +import { DedupePlugin, SortPlugin, TemplateParamsPlugin, TitleTemplatePlugin, XSSPlugin } from './plugins' function filterMode(mode: RuntimeMode | undefined, ssr: boolean) { return !mode || (mode === 'server' && ssr) || (mode === 'client' && !ssr) @@ -46,6 +42,7 @@ export function createHeadCore = Head>(options: Cr dirty: false, resolvedOptions: options, hooks, + ssr, headEntries() { return entries }, @@ -108,7 +105,6 @@ export function createHeadCore = Head>(options: Cr await hooks.callHook('tags:afterResolve', resolveCtx) return resolveCtx.tags }, - ssr, } ;[ DedupePlugin, diff --git a/packages/unhead/src/legacy.ts b/packages/unhead/src/legacy.ts deleted file mode 100644 index 0cb1641c..00000000 --- a/packages/unhead/src/legacy.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { CreateHeadOptions, Head } from '@unhead/schema' -import { IsBrowser } from '@unhead/shared' -import { DomPlugin } from './client/plugins/domPlugin' -import { ClientEventHandlerPlugin } from './client/plugins/eventHandlers' -import { unheadCtx } from './context' -import { createHeadCore } from './createHead' -import { DeprecationsPlugin } from './optionalPlugins/deprecations' -import { PromisesPlugin } from './optionalPlugins/promises' -import { ServerEventHandlerPlugin } from './server/plugins/eventHandlers' -import { PayloadPlugin } from './server/plugins/payload' - -export function createServerHead = Head>(options: CreateHeadOptions = {}) { - return createHeadCore({ - disableCapoSorting: true, - ...options, - // @ts-expect-error untyped - document: false, - plugins: [ - ...(options.plugins || []), - DomPlugin(), - DeprecationsPlugin, - PromisesPlugin, - ServerEventHandlerPlugin, - PayloadPlugin, - ], - }) -} - -export function createHead = Head>(options: CreateHeadOptions = {}) { - const head = createHeadCore({ disableCapoSorting: true, ...options, plugins: [ - ...(options.plugins || []), - DomPlugin(), - DeprecationsPlugin, - PromisesPlugin, - ClientEventHandlerPlugin, - ] }) - // should only be one instance client-side - if (!head.ssr && IsBrowser) { - unheadCtx.set(head, true) - } - return head -} - -export { createHeadCore } diff --git a/packages/unhead/src/legacy/index.ts b/packages/unhead/src/legacy/index.ts new file mode 100644 index 00000000..1a177305 --- /dev/null +++ b/packages/unhead/src/legacy/index.ts @@ -0,0 +1,116 @@ +import type { + ActiveHeadEntry, + CreateHeadOptions, + Head, + HeadEntryOptions, + HeadSafe, + MergeHead, + Unhead, + UseSeoMetaInput, +} from '@unhead/schema' +import { IsBrowser, unpackMeta, whitelistSafeInput } from '@unhead/shared' +import { DomPlugin } from '../client/plugins/domPlugin' +import { ClientEventHandlerPlugin } from '../client/plugins/eventHandlers' +import { tryUseUnhead, unheadCtx } from '../context' +import { createHeadCore } from '../createHead' +import { DeprecationsPlugin } from '../plugins/deprecations' +import { PromisesPlugin } from '../plugins/promises' +import { ServerEventHandlerPlugin } from '../server/plugins/eventHandlers' +import { PayloadPlugin } from '../server/plugins/payload' + +export * from '../context' +export * from './useScript' + +export function createServerHead = Head>(options: CreateHeadOptions = {}) { + return createHeadCore({ + disableCapoSorting: true, + ...options, + // @ts-expect-error untyped + document: false, + plugins: [ + ...(options.plugins || []), + DomPlugin(), + DeprecationsPlugin, + PromisesPlugin, + ServerEventHandlerPlugin, + PayloadPlugin, + ], + }) +} + +export function createHead = Head>(options: CreateHeadOptions = {}) { + const head = createHeadCore({ disableCapoSorting: true, ...options, plugins: [ + ...(options.plugins || []), + DomPlugin(), + DeprecationsPlugin, + PromisesPlugin, + ClientEventHandlerPlugin, + ] }) + // should only be one instance client-side + if (!head.ssr && IsBrowser) { + unheadCtx.set(head, true) + } + return head +} + +export function getActiveHead() { + return tryUseUnhead() +} + +export type UseHeadInput = Head + +export function useHead(input: UseHeadInput, options: HeadEntryOptions = {}): ActiveHeadEntry> | void { + const head = (options.head || getActiveHead()) as any as Unhead> + if (head) { + return head.push(input, options) + } +} + +export function useHeadSafe(input: HeadSafe, options?: HeadEntryOptions): ActiveHeadEntry | void { + // @ts-expect-error untyped + return useHead(input, { + ...options, + transform: whitelistSafeInput, + }) +} + +export function useSeoMeta(input: UseSeoMetaInput, options?: HeadEntryOptions): ActiveHeadEntry | void { + const { title, titleTemplate, ...meta } = input + return useHead({ + title, + titleTemplate, + // we need to input the meta so the reactivity will be resolved + // @ts-expect-error runtime type + _flatMeta: meta, + }, { + ...options, + transform(t) { + // @ts-expect-error runtime type + const meta = unpackMeta({ ...t._flatMeta }) + // @ts-expect-error runtime type + delete t._flatMeta + return { + // @ts-expect-error runtime type + ...t, + meta, + } + }, + }) +} + +export function useServerHead(input: UseHeadInput, options: HeadEntryOptions = {}): ActiveHeadEntry> | void { + return useHead(input, { ...options, mode: 'server' }) +} + +export function useServerHeadSafe(input: T, options: HeadEntryOptions = {}): ActiveHeadEntry | void { + return useHeadSafe(input, { ...options, mode: 'server' }) +} + +export function useServerSeoMeta(input: UseSeoMetaInput, options?: HeadEntryOptions): ActiveHeadEntry | void { + return useSeoMeta(input, { + ...options, + mode: 'server', + }) +} + +export { createHeadCore } diff --git a/packages/unhead/src/legacy/useScript.ts b/packages/unhead/src/legacy/useScript.ts new file mode 100644 index 00000000..4dbc7189 --- /dev/null +++ b/packages/unhead/src/legacy/useScript.ts @@ -0,0 +1,342 @@ +import type { ActiveHeadEntry, Head, HeadEntryOptions, Script } from '@unhead/schema' +import { hashCode, ScriptNetworkEvents } from '@unhead/shared' +import { getActiveHead } from './index' + +export type UseScriptInput = string | (Omit & { src: string }) +export type UseScriptResolvedInput = Omit & { src: string } + +export function resolveScriptKey(input: UseScriptResolvedInput) { + return input.key || hashCode(input.src || (typeof input.innerHTML === 'string' ? input.innerHTML : '')) +} + +export type UseScriptStatus = 'awaitingLoad' | 'loading' | 'loaded' | 'error' | 'removed' + +export interface ScriptInstance { + proxy: AsAsyncFunctionValues + instance?: T + id: string + status: UseScriptStatus + entry?: ActiveHeadEntry + load: () => Promise + remove: () => boolean + setupTriggerHandler: (trigger: UseScriptOptions['trigger']) => void + // cbs + onLoaded: (fn: (instance: T) => void | Promise) => void + onError: (fn: (err?: Error) => void | Promise) => void + /** + * @internal + */ + _triggerAbortController?: AbortController | null + /** + * @internal + */ + _triggerAbortPromise?: Promise + /** + * @internal + */ + _triggerPromises?: Promise[] + /** + * @internal + */ + _cbs: { + loaded: null | ((instance: T) => void | Promise)[] + error: null | ((err?: Error) => void | Promise)[] + } +} + +export interface UseScriptOptions> extends HeadEntryOptions { + /** + * Resolve the script instance from the window. + */ + use?: () => T | undefined | null + /** + * Stub the script instance. Useful for SSR or testing. + */ + stub?: ((ctx: { script: ScriptInstance, fn: string | symbol }) => any) + /** + * The trigger to load the script: + * - `undefined` | `client` - (Default) Load the script on the client when this js is loaded. + * - `manual` - Load the script manually by calling `$script.load()`, exists only on the client. + * - `Promise` - Load the script when the promise resolves, exists only on the client. + * - `Function` - Register a callback function to load the script, exists only on the client. + * - `server` - Have the script injected on the server. + */ + trigger?: 'client' | 'server' | 'manual' | Promise | ((fn: any) => any) | null + /** + * Context to run events with. This is useful in Vue to attach the current instance context before + * calling the event, allowing the event to be reactive. + */ + eventContext?: any + /** + * Called before the script is initialized. Will not be triggered when the script is already loaded. This means + * this is guaranteed to be called only once, unless the script is removed and re-added. + */ + beforeInit?: () => void +} + +type BaseScriptApi = Record + +export type AsAsyncFunctionValues = { + [key in keyof T]: + T[key] extends any[] ? T[key] : + T[key] extends (...args: infer A) => infer R ? (...args: A) => R extends Promise ? R : Promise : + T[key] extends Record ? AsAsyncFunctionValues : + never +} + +export type UseScriptContext> = + (Promise & ScriptInstance) + & AsAsyncFunctionValues + & { + /** + * @deprecated Use top-level functions instead. + */ + $script: Promise & ScriptInstance + } + +export type UseFunctionType = T extends { + use: infer V +} ? V extends (...args: any) => any ? ReturnType : U : U + +const ScriptProxyTarget = Symbol('ScriptProxyTarget') +function scriptProxy() {} +scriptProxy[ScriptProxyTarget] = true + +/** + * Load third-party scripts with SSR support and a proxied API. + * + * @see https://unhead.unjs.io/usage/composables/use-script + */ +export function useScript = Record>(_input: UseScriptInput, _options?: UseScriptOptions): UseScriptContext, T>> { + const input: UseScriptResolvedInput = typeof _input === 'string' ? { src: _input } : _input + const options = _options || {} + const head = options.head || getActiveHead() + if (!head) + throw new Error('Missing Unhead context.') + const id = resolveScriptKey(input) + const prevScript = head._scripts?.[id] as undefined | UseScriptContext, T>> + if (prevScript) { + prevScript.setupTriggerHandler(options.trigger) + return prevScript + } + options.beforeInit?.() + const syncStatus = (s: ScriptInstance['status']) => { + // eslint-disable-next-line ts/no-use-before-define + script.status = s + // eslint-disable-next-line ts/no-use-before-define + head.hooks.callHook(`script:updated`, hookCtx) + } + ScriptNetworkEvents + .forEach((fn) => { + const _fn = typeof input[fn] === 'function' ? input[fn].bind(options.eventContext) : null + input[fn] = (e: Event) => { + syncStatus(fn === 'onload' ? 'loaded' : fn === 'onerror' ? 'error' : 'loading') + _fn?.(e) + } + }) + + const _cbs: ScriptInstance['_cbs'] = { loaded: [], error: [] } + const _registerCb = (key: 'loaded' | 'error', cb: any) => { + if (_cbs[key]) { + const i: number = _cbs[key].push(cb) + return () => _cbs[key]?.splice(i - 1, 1) + } + // the event has already happened, run immediately + // eslint-disable-next-line ts/no-use-before-define + cb(script.instance) + return () => {} + } + const loadPromise = new Promise((resolve) => { + // promise never resolves + if (head.ssr) + return + const emit = (api: T) => requestAnimationFrame(() => resolve(api)) + const _ = head.hooks.hook('script:updated', ({ script }) => { + // vue augmentation... not ideal + const status = script.status + if (script.id === id && (status === 'loaded' || status === 'error')) { + if (status === 'loaded') { + if (typeof options.use === 'function') { + const api = options.use() + if (api) { + emit(api) + } + } + else { + emit({} as T) + } + } + else if (status === 'error') { + resolve(false) // failed to load + } + _() + } + }) + }) + + const script = Object.assign(loadPromise, >> { + instance: (!head.ssr && options?.use?.()) || null, + proxy: null, + id, + status: 'awaitingLoad', + remove() { + // cancel any pending triggers as we've started loading + script._triggerAbortController?.abort() + script._triggerPromises = [] // clear any pending promises + if (script.entry) { + script.entry.dispose() + script.entry = undefined + syncStatus('removed') + delete head._scripts?.[id] + return true + } + return false + }, + load(cb?: () => void | Promise) { + // cancel any pending triggers as we've started loading + script._triggerAbortController?.abort() + script._triggerPromises = [] // clear any pending promises + if (!script.entry) { + syncStatus('loading') + const defaults: Required['script'][0] = { + defer: true, + fetchpriority: 'low', + } + // is absolute, add privacy headers + if (input.src && (input.src.startsWith('http') || input.src.startsWith('//'))) { + defaults.crossorigin = 'anonymous' + defaults.referrerpolicy = 'no-referrer' + } + // status should get updated from script events + script.entry = head.push({ + script: [{ ...defaults, ...input, key: `script.${id}` }], + }, options) + } + if (cb) + _registerCb('loaded', cb) + return loadPromise + }, + onLoaded(cb: (instance: T) => void | Promise) { + return _registerCb('loaded', cb) + }, + onError(cb: (err?: Error) => void | Promise) { + return _registerCb('error', cb) + }, + setupTriggerHandler(trigger: UseScriptOptions['trigger']) { + if (script.status !== 'awaitingLoad') { + return + } + if (((typeof trigger === 'undefined' || trigger === 'client') && !head.ssr) || trigger === 'server') { + script.load() + } + else if (trigger instanceof Promise) { + // promise triggers only work client side + if (head.ssr) { + return + } + if (!script._triggerAbortController) { + script._triggerAbortController = new AbortController() + script._triggerAbortPromise = new Promise((resolve) => { + script._triggerAbortController!.signal.addEventListener('abort', () => { + script._triggerAbortController = null + resolve() + }) + }) + } + script._triggerPromises = script._triggerPromises || [] + const idx = script._triggerPromises.push(Promise.race([ + trigger.then(v => typeof v === 'undefined' || v ? script.load : undefined), + script._triggerAbortPromise, + ]) + // OK + .catch(() => {}) + .then((res) => { + res?.() + }) + .finally(() => { + // remove the promise from the list + script._triggerPromises?.splice(idx, 1) + })) + } + else if (typeof trigger === 'function') { + trigger(script.load) + } + }, + _cbs, + }) as UseScriptContext + // script is ready + loadPromise + .then((api) => { + if (api !== false) { + script.instance = api + _cbs.loaded?.forEach(cb => cb(api)) + _cbs.loaded = null + } + else { + _cbs.error?.forEach(cb => cb()) + _cbs.error = null + } + }) + const hookCtx = { script } + + script.setupTriggerHandler(options.trigger) + // support deprecated behavior + script.$script = script + const proxyChain = (instance: any, accessor?: string | symbol, accessors?: (string | symbol)[]) => { + return new Proxy((!accessor ? instance : instance?.[accessor]) || scriptProxy, { + get(_, k, r) { + // @ts-expect-error untyped + head.hooks.callHook('script:instance-fn', { script, fn: k, exists: k in _ }) + if (!accessor) { + const stub = options.stub?.({ script, fn: k }) + if (stub) + return stub + } + if (_ && k in _ && typeof _[k] !== 'undefined') { + return Reflect.get(_, k, r) + } + if (k === Symbol.iterator) { + return [][Symbol.iterator] + } + return proxyChain(accessor ? instance?.[accessor] : instance, k, accessors || [k]) + }, + async apply(_, _this, args) { + // we are faking, just return, avoid promise handles + if (head.ssr && _[ScriptProxyTarget]) + return + let instance: any + const access = (fn?: T) => { + instance = fn || instance + for (let i = 0; i < (accessors || []).length; i++) { + const k = (accessors || [])[i] + fn = fn?.[k] + } + return fn + } + let fn = access(script.instance) + if (!fn) { + fn = await (new Promise((resolve) => { + script.onLoaded((api) => { + resolve(access(api)) + }) + })) + } + return typeof fn === 'function' ? Reflect.apply(fn, instance, args) : fn + }, + }) + } + script.proxy = proxyChain(script.instance) + // remove in v2, just return the script + const res = new Proxy(script, { + get(_, k) { + // _ keys are reserved for internal overrides + const target = (k in script || String(k)[0] === '_') ? script : script.proxy + if (k === 'then' || k === 'catch') { + return script[k].bind(script) + } + return Reflect.get(target, k, target) + }, + }) + head._scripts = Object.assign(head._scripts || {}, { [id]: res }) + return res +} diff --git a/packages/unhead/src/optionalPlugins/index.ts b/packages/unhead/src/optionalPlugins/index.ts deleted file mode 100644 index 114efa77..00000000 --- a/packages/unhead/src/optionalPlugins/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './deprecations' -export * from './inferSeoMetaPlugin' -export * from './promises' diff --git a/packages/unhead/src/plugins/dedupe.ts b/packages/unhead/src/plugins/dedupe.ts index 431d386c..6ec6278b 100644 --- a/packages/unhead/src/plugins/dedupe.ts +++ b/packages/unhead/src/plugins/dedupe.ts @@ -3,7 +3,7 @@ import { defineHeadPlugin, HasElementTags, hashTag, tagWeight } from '@unhead/sh const UsesMergeStrategy = new Set(['templateParams', 'htmlAttrs', 'bodyAttrs']) -export default defineHeadPlugin(head => ({ +export const DedupePlugin = defineHeadPlugin(head => ({ hooks: { 'tags:resolve': (ctx) => { // 1. Dedupe tags diff --git a/packages/unhead/src/optionalPlugins/deprecations.ts b/packages/unhead/src/plugins/deprecations.ts similarity index 100% rename from packages/unhead/src/optionalPlugins/deprecations.ts rename to packages/unhead/src/plugins/deprecations.ts diff --git a/packages/unhead/src/plugins/index.ts b/packages/unhead/src/plugins/index.ts new file mode 100644 index 00000000..9bffca82 --- /dev/null +++ b/packages/unhead/src/plugins/index.ts @@ -0,0 +1,9 @@ +export * from './dedupe' +export * from './deprecations' // optional +export * from './inferSeoMetaPlugin' // optional +export * from './normalize' +export * from './promises' // optional +export * from './sort' +export * from './templateParams' +export * from './titleTemplate' +export * from './xss' diff --git a/packages/unhead/src/optionalPlugins/inferSeoMetaPlugin.ts b/packages/unhead/src/plugins/inferSeoMetaPlugin.ts similarity index 100% rename from packages/unhead/src/optionalPlugins/inferSeoMetaPlugin.ts rename to packages/unhead/src/plugins/inferSeoMetaPlugin.ts diff --git a/packages/unhead/src/plugins/normalize.ts b/packages/unhead/src/plugins/normalize.ts new file mode 100644 index 00000000..563209ef --- /dev/null +++ b/packages/unhead/src/plugins/normalize.ts @@ -0,0 +1,19 @@ +import { defineHeadPlugin, normaliseEntryTags } from '@unhead/shared' + +export const NormalizePlugin = defineHeadPlugin(head => ({ + hooks: { + 'entries:resolve': async (ctx) => { + for (const entry of ctx.entries) { + // apply any custom transformers applied to the entry + const resolved = entry.resolvedInput || entry.input + entry.resolvedInput = (entry.transform ? entry.transform(resolved) : resolved) + if (entry.resolvedInput) { + for (const tag of normaliseEntryTags(entry)) { + const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions } + ctx.tags.push(tagCtx.tag) + } + } + } + }, + }, +})) diff --git a/packages/unhead/src/optionalPlugins/promises.ts b/packages/unhead/src/plugins/promises.ts similarity index 86% rename from packages/unhead/src/optionalPlugins/promises.ts rename to packages/unhead/src/plugins/promises.ts index c4ef77b4..086b58d6 100644 --- a/packages/unhead/src/optionalPlugins/promises.ts +++ b/packages/unhead/src/plugins/promises.ts @@ -28,8 +28,7 @@ export const PromisesPlugin = defineHeadPlugin({ hooks: { 'entries:resolve': async (ctx) => { for (const k in ctx.entries) { - const resolved = await resolvePromisesRecursively(ctx.entries[k].input) - ctx.entries[k].input = resolved + ctx.entries[k].input = await resolvePromisesRecursively(ctx.entries[k].input) } }, }, diff --git a/packages/unhead/src/plugins/sort.ts b/packages/unhead/src/plugins/sort.ts index d441f38a..0094ac39 100644 --- a/packages/unhead/src/plugins/sort.ts +++ b/packages/unhead/src/plugins/sort.ts @@ -1,6 +1,6 @@ import { defineHeadPlugin, SortModifiers, tagWeight } from '@unhead/shared' -export default defineHeadPlugin(head => ({ +export const SortPlugin = defineHeadPlugin(head => ({ hooks: { 'tags:resolve': (ctx) => { // 2a. Sort based on priority diff --git a/packages/unhead/src/plugins/templateParams.ts b/packages/unhead/src/plugins/templateParams.ts index a0b5486f..c8d33977 100644 --- a/packages/unhead/src/plugins/templateParams.ts +++ b/packages/unhead/src/plugins/templateParams.ts @@ -9,7 +9,7 @@ const SupportedAttrs = { const contentAttrs = ['innerHTML', 'textContent'] -export default defineHeadPlugin(head => ({ +export const TemplateParamsPlugin = defineHeadPlugin(head => ({ hooks: { 'tags:resolve': (ctx) => { const { tags } = ctx diff --git a/packages/unhead/src/plugins/titleTemplate.ts b/packages/unhead/src/plugins/titleTemplate.ts index 235111a6..7f1d1764 100644 --- a/packages/unhead/src/plugins/titleTemplate.ts +++ b/packages/unhead/src/plugins/titleTemplate.ts @@ -1,7 +1,7 @@ import type { HeadTag } from '@unhead/schema' import { defineHeadPlugin, resolveTitleTemplate } from '@unhead/shared' -export default defineHeadPlugin({ +export const TitleTemplatePlugin = defineHeadPlugin({ hooks: { 'tags:resolve': (ctx) => { const { tags } = ctx diff --git a/packages/unhead/src/plugins/xss.ts b/packages/unhead/src/plugins/xss.ts index 852b60ef..bf36588e 100644 --- a/packages/unhead/src/plugins/xss.ts +++ b/packages/unhead/src/plugins/xss.ts @@ -1,6 +1,6 @@ import { defineHeadPlugin } from '@unhead/shared' -export default defineHeadPlugin({ +export const XSSPlugin = defineHeadPlugin({ hooks: { 'tags:afterResolve': (ctx) => { for (const tag of ctx.tags) { diff --git a/packages/vue/build.config.ts b/packages/vue/build.config.ts index 1afa17f6..b5e080d5 100644 --- a/packages/vue/build.config.ts +++ b/packages/vue/build.config.ts @@ -10,7 +10,8 @@ export default defineBuildConfig({ entries: [ { input: 'src/index', name: 'index' }, { input: 'src/components/index', name: 'components' }, - { input: 'src/server/index', name: 'server' }, - { input: 'src/client/index', name: 'client' }, + { input: 'src/server', name: 'server' }, + { input: 'src/client', name: 'client' }, + { input: 'src/legacy/index', name: 'legacy' }, ], }) diff --git a/packages/vue/export-size-report.json b/packages/vue/export-size-report.json deleted file mode 100644 index ee1f785c..00000000 --- a/packages/vue/export-size-report.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "meta": { - "name": "@unhead/vue", - "dependencies": [ - "@unhead/schema", - "@unhead/shared", - "hookable", - "unhead", - "vue" - ], - "versions": { - "export-size": "0.7.0", - "esbuild": "^0.19.5" - } - }, - "exports": [ - { - "name": "VueHeadMixin", - "path": "dist/index.mjs", - "minified": 1782, - "minzipped": 823, - "bundled": 3775 - }, - { - "name": "useServerSeoMeta", - "path": "dist/index.mjs", - "minified": 1769, - "minzipped": 820, - "bundled": 3758 - }, - { - "name": "useSeoMeta", - "path": "dist/index.mjs", - "minified": 1715, - "minzipped": 800, - "bundled": 3640 - }, - { - "name": "useServerHeadSafe", - "path": "dist/index.mjs", - "minified": 1635, - "minzipped": 770, - "bundled": 3450 - }, - { - "name": "useHeadSafe", - "path": "dist/index.mjs", - "minified": 1582, - "minzipped": 749, - "bundled": 3331 - }, - { - "name": "useScript", - "path": "dist/index.mjs", - "minified": 1553, - "minzipped": 748, - "bundled": 3074 - }, - { - "name": "useHead", - "path": "dist/index.mjs", - "minified": 1508, - "minzipped": 745, - "bundled": 3209 - }, - { - "name": "useServerHead", - "path": "dist/index.mjs", - "minified": 1191, - "minzipped": 575, - "bundled": 2395 - }, - { - "name": "injectHead", - "path": "dist/index.mjs", - "minified": 1095, - "minzipped": 529, - "bundled": 2203 - }, - { - "name": "createHead", - "path": "dist/index.mjs", - "minified": 991, - "minzipped": 482, - "bundled": 2163 - }, - { - "name": "createServerHead", - "path": "dist/index.mjs", - "minified": 922, - "minzipped": 446, - "bundled": 2083 - }, - { - "name": "Vue2ProvideUnheadPlugin", - "path": "dist/index.mjs", - "minified": 870, - "minzipped": 433, - "bundled": 2161 - }, - { - "name": "setHeadInjectionHandler", - "path": "dist/index.mjs", - "minified": 851, - "minzipped": 420, - "bundled": 1932 - }, - { - "name": "resolveUnrefHeadInput", - "path": "dist/index.mjs", - "minified": 688, - "minzipped": 356, - "bundled": 1618 - }, - { - "name": "createHeadCore", - "path": "dist/index.mjs", - "minified": 183, - "minzipped": 127, - "bundled": 464 - }, - { - "name": "unheadVueComposablesImports", - "path": "dist/index.mjs", - "minified": 158, - "minzipped": 111, - "bundled": 477 - } - ] -} diff --git a/packages/vue/legacy.d.ts b/packages/vue/legacy.d.ts new file mode 100644 index 00000000..ecf941a4 --- /dev/null +++ b/packages/vue/legacy.d.ts @@ -0,0 +1 @@ +export * from './dist/server' diff --git a/packages/vue/package.json b/packages/vue/package.json index aa833d1c..644a7bad 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -60,8 +60,7 @@ ], "scripts": { "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" + "stub": "unbuild . --stub" }, "peerDependencies": { "vue": ">=3" diff --git a/packages/vue/src/plugins/VueReactivityPlugin.ts b/packages/vue/src/VueReactivityPlugin.ts similarity index 67% rename from packages/vue/src/plugins/VueReactivityPlugin.ts rename to packages/vue/src/VueReactivityPlugin.ts index 95ecb080..0fd2550a 100644 --- a/packages/vue/src/plugins/VueReactivityPlugin.ts +++ b/packages/vue/src/VueReactivityPlugin.ts @@ -1,7 +1,7 @@ import { defineHeadPlugin } from '@unhead/shared' -import { resolveUnrefHeadInput } from '../utils' +import { resolveUnrefHeadInput } from './utils' -export default defineHeadPlugin({ +export const VueReactivityPlugin = defineHeadPlugin({ hooks: { 'entries:resolve': (ctx) => { for (const entry of ctx.entries) diff --git a/packages/vue/src/client.ts b/packages/vue/src/client.ts new file mode 100644 index 00000000..aab495cd --- /dev/null +++ b/packages/vue/src/client.ts @@ -0,0 +1,24 @@ +import type { CreateClientHeadOptions, MergeHead } from '@unhead/schema' +import type { MaybeComputedRef, ReactiveHead, VueHeadClient } from '@unhead/vue' +import { createHead as _createHead } from 'unhead/client' +import { nextTick } from 'vue' +import { vueInstall } from './install' +import { VueReactivityPlugin } from './VueReactivityPlugin' + +export { VueHeadMixin } from './VueHeadMixin' +export * from 'unhead/client' + +export function createHead(options: CreateClientHeadOptions = {}): VueHeadClient { + const head = _createHead>>({ + domOptions: { + delayFn: fn => nextTick(() => setTimeout(() => fn(), 0)), + }, + ...options, + plugins: [ + ...(options.plugins || []), + VueReactivityPlugin, + ], + }) as VueHeadClient + head.install = vueInstall(head) + return head +} diff --git a/packages/vue/src/client/index.ts b/packages/vue/src/client/index.ts deleted file mode 100644 index 602c989f..00000000 --- a/packages/vue/src/client/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { CreateHeadOptions, MergeHead } from '@unhead/schema' -import type { MaybeComputedRef, ReactiveHead, VueHeadClient } from '@unhead/vue' -import { createHead as _createHead } from 'unhead/client' -import { nextTick } from 'vue' -import { vueInstall } from '../createHead' -import VueReactivityPlugin from '../plugins/VueReactivityPlugin' - -export function createHead(options: CreateHeadOptions = {}): VueHeadClient { - options.domDelayFn = options.domDelayFn || (fn => nextTick(() => setTimeout(() => fn(), 0))) - const head = _createHead>>(options) as VueHeadClient - head.use(VueReactivityPlugin) - head.install = vueInstall(head) - return head -} diff --git a/packages/vue/src/composables/injectHead.ts b/packages/vue/src/composables/injectHead.ts index cfdaf265..5aa17073 100644 --- a/packages/vue/src/composables/injectHead.ts +++ b/packages/vue/src/composables/injectHead.ts @@ -1,7 +1,8 @@ import type { Unhead } from '@unhead/schema' import { tryUseUnhead } from 'unhead' import { inject } from 'vue' -import { headSymbol } from '../createHead' + +import { headSymbol } from '../install' export function injectHead() { // allow custom context setting diff --git a/packages/vue/src/composables/useHeadSafe.ts b/packages/vue/src/composables/useHeadSafe.ts index 5c1a2ecd..7ed65126 100644 --- a/packages/vue/src/composables/useHeadSafe.ts +++ b/packages/vue/src/composables/useHeadSafe.ts @@ -3,7 +3,7 @@ import type { UseHeadOptions, UseHeadSafeInput } from '../' import { whitelistSafeInput } from '@unhead/shared' import { useHead } from './useHead' -export function useHeadSafe(input: UseHeadSafeInput, options: UseHeadOptions = {}): ActiveHeadEntry | void { +export function useHeadSafe(input: UseHeadSafeInput, options: UseHeadOptions = {}): ActiveHeadEntry { // @ts-expect-error untyped return useHead(input, { ...options, transform: whitelistSafeInput }) } diff --git a/packages/vue/src/composables/useSeoMeta.ts b/packages/vue/src/composables/useSeoMeta.ts index 15212879..e2c75da1 100644 --- a/packages/vue/src/composables/useSeoMeta.ts +++ b/packages/vue/src/composables/useSeoMeta.ts @@ -3,7 +3,7 @@ import type { UseHeadOptions, UseSeoMetaInput } from '../types' import { unpackMeta } from '@unhead/shared' import { useHead } from './useHead' -export function useSeoMeta(input: UseSeoMetaInput, options?: UseHeadOptions): ActiveHeadEntry | void { +export function useSeoMeta(input: UseSeoMetaInput, options?: UseHeadOptions): ActiveHeadEntry { const { title, titleTemplate, ...meta } = input return useHead({ title, diff --git a/packages/vue/src/composables/useServerHead.ts b/packages/vue/src/composables/useServerHead.ts index 6f6ace62..3953f985 100644 --- a/packages/vue/src/composables/useServerHead.ts +++ b/packages/vue/src/composables/useServerHead.ts @@ -1,7 +1,7 @@ -import type { MergeHead } from '@unhead/schema' +import type { ActiveHeadEntry, MergeHead } from '@unhead/schema' import type { UseHeadInput, UseHeadOptions } from '../types' import { useHead } from './useHead' -export function useServerHead(input: UseHeadInput, options: UseHeadOptions = {}) { - return useHead(input, { ...options, mode: 'server' }) +export function useServerHead(input: UseHeadInput, options: UseHeadOptions = {}): ActiveHeadEntry { + return useHead(input, { ...options, mode: 'server' }) } diff --git a/packages/vue/src/composables/useServerHeadSafe.ts b/packages/vue/src/composables/useServerHeadSafe.ts index b53a0e03..f7df17c7 100644 --- a/packages/vue/src/composables/useServerHeadSafe.ts +++ b/packages/vue/src/composables/useServerHeadSafe.ts @@ -1,6 +1,7 @@ +import type { ActiveHeadEntry } from '@unhead/schema' import type { UseHeadOptions, UseHeadSafeInput } from '../types' import { useHeadSafe } from './useHeadSafe' -export function useServerHeadSafe(input: UseHeadSafeInput, options: UseHeadOptions = {}) { +export function useServerHeadSafe(input: UseHeadSafeInput, options: UseHeadOptions = {}): ActiveHeadEntry { return useHeadSafe(input, { ...options, mode: 'server' }) } diff --git a/packages/vue/src/composables/useServerSeoMeta.ts b/packages/vue/src/composables/useServerSeoMeta.ts index ec9dfcfc..e5919136 100644 --- a/packages/vue/src/composables/useServerSeoMeta.ts +++ b/packages/vue/src/composables/useServerSeoMeta.ts @@ -2,6 +2,6 @@ import type { ActiveHeadEntry } from '@unhead/schema' import type { UseHeadOptions, UseSeoMetaInput } from '../types' import { useSeoMeta } from './useSeoMeta' -export function useServerSeoMeta(input: UseSeoMetaInput, options?: UseHeadOptions): ActiveHeadEntry | void { +export function useServerSeoMeta(input: UseSeoMetaInput, options?: UseHeadOptions): ActiveHeadEntry { return useSeoMeta(input, { ...options, mode: 'server' }) } diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 629a6c12..e44762c7 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -1,8 +1,15 @@ -import { unheadCtx } from 'unhead' +import { defineHeadPlugin } from '@unhead/shared' +import { createHeadCore, unheadCtx } from 'unhead' import { resolveUnrefHeadInput } from './utils' -// create +/** + * @deprecated TODO remove + */ +export const CapoPlugin = () => defineHeadPlugin({}) + +// core export { + createHeadCore, unheadCtx, } diff --git a/packages/vue/src/createHead.ts b/packages/vue/src/install.ts similarity index 100% rename from packages/vue/src/createHead.ts rename to packages/vue/src/install.ts diff --git a/packages/vue/src/legacy/index.ts b/packages/vue/src/legacy/index.ts new file mode 100644 index 00000000..468b5fc6 --- /dev/null +++ b/packages/vue/src/legacy/index.ts @@ -0,0 +1,128 @@ +import type { ActiveHeadEntry, HeadEntryOptions, MergeHead, Unhead } from '@unhead/schema' +import type { + Ref, +} from 'vue' +import type { + ReactiveHead, + UseHeadInput, + UseHeadOptions, + UseHeadSafeInput, + UseSeoMetaInput, + VueHeadClient, +} from '../types' +import { defineHeadPlugin, unpackMeta, whitelistSafeInput } from '@unhead/shared' +import { tryUseUnhead, unheadCtx } from 'unhead' +import { + getCurrentInstance, + inject, + onActivated, + onBeforeUnmount, + onDeactivated, + ref, + watch, + watchEffect, +} from 'vue' +import { createHead } from '../client' +import { headSymbol } from '../install' +import { createHead as createServerHead } from '../server' +import { resolveUnrefHeadInput } from '../utils' + +export * from './useScript' +export { createServerHead } +export { createHead } + +export const CapoPlugin = () => defineHeadPlugin({}) + +/** + * @deprecated Please switch to non-legacy version + */ +export function setHeadInjectionHandler(handler: () => VueHeadClient | undefined) { + unheadCtx.set(handler(), true) +} + +export function injectHead() { + // allow custom context setting + const ctx = tryUseUnhead() + if (ctx) { + return ctx + } + // fallback to vue context + return inject(headSymbol) +} + +export function useHead(input: UseHeadInput, options: UseHeadOptions = {}): ActiveHeadEntry> | void { + const head = options.head || injectHead() + if (head) { + // @ts-expect-error untyped + return head.ssr ? head.push(input, options as HeadEntryOptions) : clientUseHead(head, input, options as HeadEntryOptions) + } +} + +function clientUseHead(head: VueHeadClient, input: UseHeadInput, options: HeadEntryOptions = {}): ActiveHeadEntry> | void { + const deactivated = ref(false) + + const resolvedInput: Ref = ref({}) + watchEffect(() => { + resolvedInput.value = deactivated.value + ? {} + : resolveUnrefHeadInput(input) + }) + const entry: ActiveHeadEntry> = head.push(resolvedInput.value, options) + watch(resolvedInput, (e) => { + entry.patch(e) + }) + + const vm = getCurrentInstance() + if (vm) { + onBeforeUnmount(() => { + entry.dispose() + }) + onDeactivated(() => { + deactivated.value = true + }) + onActivated(() => { + deactivated.value = false + }) + } + return entry +} + +export function useHeadSafe(input: UseHeadSafeInput, options: UseHeadOptions = {}): ActiveHeadEntry | void { + // @ts-expect-error untyped + return useHead(input, { ...options, transform: whitelistSafeInput }) +} + +export function useSeoMeta(input: UseSeoMetaInput, options?: UseHeadOptions): ActiveHeadEntry | void { + const { title, titleTemplate, ...meta } = input + return useHead({ + title, + titleTemplate, + // @ts-expect-error runtime type + _flatMeta: meta, + }, { + ...options, + transform(t) { + // @ts-expect-error runtime type + const meta = unpackMeta({ ...t._flatMeta }) + // @ts-expect-error runtime type + delete t._flatMeta + return { + // @ts-expect-error runtime type + ...t, + meta, + } + }, + }) +} + +export function useServerHead(input: UseHeadInput, options: UseHeadOptions = {}): ActiveHeadEntry | void { + return useHead(input, { ...options, mode: 'server' }) +} + +export function useServerHeadSafe(input: UseHeadSafeInput, options: UseHeadOptions = {}): ActiveHeadEntry | void { + return useHeadSafe(input, { ...options, mode: 'server' }) +} + +export function useServerSeoMeta(input: UseSeoMetaInput, options?: UseHeadOptions): ActiveHeadEntry | void { + return useSeoMeta(input, { ...options, mode: 'server' }) +} diff --git a/packages/scripts/src/vue-legacy.ts b/packages/vue/src/legacy/useScript.ts similarity index 94% rename from packages/scripts/src/vue-legacy.ts rename to packages/vue/src/legacy/useScript.ts index 62c8ce99..2b9ec45c 100644 --- a/packages/scripts/src/vue-legacy.ts +++ b/packages/vue/src/legacy/useScript.ts @@ -5,11 +5,15 @@ import type { ScriptBase, } from '@unhead/schema' import type { MaybeComputedRefEntriesOnly } from '@unhead/vue' +import type { UseScriptOptions as BaseUseScriptOptions, ScriptInstance, UseFunctionType, UseScriptStatus } from 'unhead/legacy' import type { ComponentInternalInstance, Ref, WatchHandle } from 'vue' -import type { UseScriptOptions as BaseUseScriptOptions, ScriptInstance, UseFunctionType, UseScriptStatus } from './types' -import { injectHead } from '@unhead/vue' +import { useScript as _useScript } from 'unhead/legacy' import { getCurrentInstance, isRef, onMounted, onScopeDispose, ref, watch } from 'vue' -import { useScript as _useScript } from './legacy' +import { injectHead } from './index' + +export { resolveScriptKey } from 'unhead/legacy' + +export type { UseFunctionType } export interface VueScriptInstance> extends Omit, 'status'> { status: Ref @@ -96,6 +100,7 @@ export function useScript = Record(script.status) // Note: we don't remove scripts on unmount as it's not a common use case and reloading the script may be expensive // @ts-expect-error untyped diff --git a/packages/vue/src/server/index.ts b/packages/vue/src/server.ts similarity index 60% rename from packages/vue/src/server/index.ts rename to packages/vue/src/server.ts index dc27eb5c..23a65c70 100644 --- a/packages/vue/src/server/index.ts +++ b/packages/vue/src/server.ts @@ -1,12 +1,20 @@ import type { CreateHeadOptions, MergeHead } from '@unhead/schema' import type { MaybeComputedRef, ReactiveHead, VueHeadClient } from '@unhead/vue' import { createHead as _createServerHead } from 'unhead/server' -import { vueInstall } from '../createHead' -import VueReactivityPlugin from '../plugins/VueReactivityPlugin' +import { vueInstall } from './install' +import { VueReactivityPlugin } from './VueReactivityPlugin' + +export { VueHeadMixin } from './VueHeadMixin' +export * from 'unhead/server' export function createHead(options: Omit = {}): VueHeadClient { - const head = _createServerHead>>(options) as VueHeadClient - head.use(VueReactivityPlugin) + const head = _createServerHead>>({ + ...options, + plugins: [ + ...(options.plugins || []), + VueReactivityPlugin, + ], + }) as VueHeadClient head.install = vueInstall(head) return head } diff --git a/packages/vue/test/promises.test.ts b/packages/vue/test/promises.test.ts index 8d0584f7..1e9c7210 100644 --- a/packages/vue/test/promises.test.ts +++ b/packages/vue/test/promises.test.ts @@ -1,6 +1,6 @@ import { useHead } from '@unhead/vue' import { describe, it } from 'vitest' -import { PromisesPlugin } from '../../unhead/src/optionalPlugins/promises' +import { PromisesPlugin } from '../../unhead/src/plugins/promises' import { ssrVueAppWithUnhead } from './util' describe('vue promises', () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 910d20a4..f92dafb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: .: devDependencies: '@antfu/eslint-config': - specifier: ^3.12.1 - version: 3.12.1(@typescript-eslint/utils@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.13)(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1)) + specifier: ^3.14.0 + version: 3.14.0(@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1)) '@types/fs-extra': specifier: ^11.0.4 version: 11.0.4 @@ -39,29 +39,29 @@ importers: specifier: ^8.4.0 version: 8.4.0 bumpp: - specifier: ^9.9.2 - version: 9.9.2(magicast@0.3.5) + specifier: ^9.10.0 + version: 9.10.0(magicast@0.3.5) eslint: - specifier: ^9.17.0 - version: 9.17.0(jiti@2.4.2) + specifier: ^9.18.0 + version: 9.18.0(jiti@2.4.2) fs-extra: specifier: ^11.2.0 version: 11.2.0 jsdom: - specifier: ^25.0.1 - version: 25.0.1 + specifier: ^26.0.0 + version: 26.0.0 typescript: specifier: 5.7.2 version: 5.7.2 unbuild: - specifier: ^3.2.0 - version: 3.2.0(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2)) + specifier: ^3.3.0 + version: 3.3.0(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2)) utility-types: specifier: ^3.11.0 version: 3.11.0 vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) + version: 2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) vue: specifier: ^3.5.13 version: 3.5.13(typescript@5.7.2) @@ -72,8 +72,8 @@ importers: specifier: ^1.2.2 version: 1.2.2 '@iconify-json/lucide': - specifier: ^1.2.21 - version: 1.2.21 + specifier: ^1.2.22 + version: 1.2.22 '@iconify-json/noto': specifier: ^1.2.2 version: 1.2.2 @@ -81,11 +81,11 @@ importers: specifier: ^1.2.2 version: 1.2.2 '@iconify-json/simple-icons': - specifier: ^1.2.18 - version: 1.2.18 + specifier: ^1.2.19 + version: 1.2.19 '@nuxt/content': specifier: ^2.13.4 - version: 2.13.4(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) + version: 2.13.4(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) '@nuxt/devtools': specifier: ^1.7.0 version: 1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)) @@ -93,11 +93,11 @@ importers: specifier: 0.10.3 version: 0.10.3(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1)) '@nuxt/image': - specifier: ^1.8.1 - version: 1.8.1(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.29.1) + specifier: ^1.9.0 + version: 1.9.0(db0@0.2.1)(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.29.1) '@nuxt/scripts': specifier: ^0.9.5 - version: 0.9.5(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1)) + version: 0.9.5(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1)) '@nuxt/ui': specifier: 2.20.0 version: 2.20.0(change-case@5.4.4)(focus-trap@7.6.0)(magicast@0.3.5)(rollup@4.29.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)) @@ -108,17 +108,17 @@ importers: specifier: 2.0.2 version: 2.0.2(h3@1.13.0)(magicast@0.3.5)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)) '@vueuse/nuxt': - specifier: ^12.3.0 - version: 12.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(typescript@5.7.2) + specifier: ^12.4.0 + version: 12.4.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(typescript@5.7.2) nuxt: specifier: 3.15.1 - version: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) + version: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) nuxt-icon: specifier: 0.6.10 version: 0.6.10(magicast@0.3.5)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)) nuxt-lego: specifier: ^0.0.14 - version: 0.0.14(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) + version: 0.0.14(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) vue: specifier: ^3.5.13 version: 3.5.13(typescript@5.7.2) @@ -126,14 +126,14 @@ importers: examples/vite-ssr-react: dependencies: react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) react-router-dom: - specifier: ^7.0.1 - version: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.1.1 + version: 7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@vitejs/plugin-react': specifier: latest @@ -142,8 +142,8 @@ importers: specifier: ^1.7.5 version: 1.7.5 express: - specifier: ^4.21.1 - version: 4.21.1 + specifier: ^4.21.2 + version: 4.21.2 serve-static: specifier: ^1.16.2 version: 1.16.2 @@ -163,20 +163,20 @@ importers: specifier: workspace:* version: link:../../packages/vue pinia: - specifier: ^2.2.6 - version: 2.2.6(typescript@5.7.2)(vue@3.5.13(typescript@5.7.2)) + specifier: ^2.3.0 + version: 2.3.0(typescript@5.7.2)(vue@3.5.13(typescript@5.7.2)) unhead: specifier: workspace:* version: link:../../packages/unhead unplugin-auto-import: - specifier: ^0.18.5 - version: 0.18.5(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.29.1))(@vueuse/core@12.3.0(typescript@5.7.2))(rollup@4.29.1) + specifier: ^19.0.0 + version: 19.0.0(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.30.1))(@vueuse/core@12.4.0(typescript@5.7.2))(rollup@4.30.1) vite: specifier: 6.0.7 version: 6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) vue-router: - specifier: ^4.4.5 - version: 4.4.5(vue@3.5.13(typescript@5.7.2)) + specifier: ^4.5.0 + version: 4.5.0(vue@3.5.13(typescript@5.7.2)) devDependencies: '@vitejs/plugin-vue': specifier: latest @@ -188,8 +188,8 @@ importers: specifier: ^1.7.5 version: 1.7.5 express: - specifier: ^4.21.1 - version: 4.21.1 + specifier: ^4.21.2 + version: 4.21.2 serve-static: specifier: ^1.16.2 version: 1.16.2 @@ -201,7 +201,7 @@ importers: dependencies: '@rollup/pluginutils': specifier: ^5.1.4 - version: 5.1.4(rollup@4.29.1) + version: 5.1.4(rollup@4.30.1) '@unhead/schema': specifier: workspace:* version: link:../schema @@ -215,8 +215,8 @@ importers: specifier: ^0.30.17 version: 0.30.17 mlly: - specifier: ^1.7.3 - version: 1.7.3 + specifier: ^1.7.4 + version: 1.7.4 ufo: specifier: ^1.5.4 version: 1.5.4 @@ -228,11 +228,11 @@ importers: version: 2.1.2 unplugin-ast: specifier: ^0.13.1 - version: 0.13.1(rollup@4.29.1) + version: 0.13.1(rollup@4.30.1) devDependencies: '@babel/types': - specifier: ^7.26.3 - version: 7.26.3 + specifier: ^7.26.5 + version: 7.26.5 packages/dom: dependencies: @@ -275,10 +275,10 @@ importers: devDependencies: unplugin-vue-components: specifier: ^28.0.0 - version: 28.0.0(@babel/parser@7.26.3)(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) + version: 28.0.0(@babel/parser@7.26.3)(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.30.1))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.2)) packages/scripts: - devDependencies: + dependencies: '@unhead/schema': specifier: workspace:* version: link:../schema @@ -291,9 +291,6 @@ importers: unhead: specifier: workspace:* version: link:../unhead - unplugin-vue-components: - specifier: ^0.27.5 - version: 0.27.5(@babel/parser@7.26.3)(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) packages/shared: dependencies: @@ -315,6 +312,9 @@ importers: '@unhead/schema': specifier: workspace:* version: link:../schema + '@unhead/scripts': + specifier: workspace:* + version: link:../scripts '@unhead/shared': specifier: workspace:* version: link:../shared @@ -353,8 +353,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/eslint-config@3.12.1': - resolution: {integrity: sha512-6sRgO4u63GK75xeZ2MfCSRT9GcfLti4ZN3Xw+bIu39oo6HY50fBY+rXnWvgwNimzHBOh3yV5xUHfTqcHq1M5AA==} + '@antfu/eslint-config@3.14.0': + resolution: {integrity: sha512-SBQOFrF/d2aqsVhxcHZ6g5DAoUaNyaV3Vd+lGNJx4CfSuwk9EuC8sRUF819GkNdCMbH5wNdFoJ4+Tsd9sr/NBw==} hasBin: true peerDependencies: '@eslint-react/eslint-plugin': ^1.19.0 @@ -402,12 +402,15 @@ packages: '@antfu/install-pkg@0.4.1': resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} - '@antfu/install-pkg@0.5.0': - resolution: {integrity: sha512-dKnk2xlAyC7rvTkpkHmu+Qy/2Zc3Vm/l8PtNyIOGDBtXPY3kThfU4ORNEp3V7SXw5XSOb+tOJaUYpfquPzL/Tg==} + '@antfu/install-pkg@1.0.0': + resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@asamuzakjp/css-color@2.8.2': + resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -565,8 +568,8 @@ packages: resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} '@capsizecss/metrics@2.2.0': @@ -575,16 +578,44 @@ packages: '@capsizecss/unpack@2.3.0': resolution: {integrity: sha512-qkf9IoFIVTOkkpr8oZtCNSmubyWFCuPU4EOWO6J/rFPP5Ks2b1k1EHDSQRLwfokh6nCd7mJgBT2lhcuDCE6w4w==} - '@clack/core@0.4.0': - resolution: {integrity: sha512-YJCYBsyJfNDaTbvDUVSJ3SgSuPrcujarRgkJ5NLjexDZKvaOiVVJvAQYx8lIgG0qRT8ff0fPgqyBCVivanIZ+A==} + '@clack/core@0.4.1': + resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} - '@clack/prompts@0.9.0': - resolution: {integrity: sha512-nGsytiExgUr4FL0pR/LeqxA28nz3E0cW7eLTSh3Iod9TGrbBt8Y7BHbV3mmkNC4G0evdYyQ3ZsbiBkk7ektArA==} + '@clack/prompts@0.9.1': + resolution: {integrity: sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==} '@cloudflare/kv-asset-handler@0.3.4': resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} + '@csstools/color-helpers@5.0.1': + resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.1': + resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.7': + resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + '@csstools/selector-resolve-nested@3.0.0': resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} engines: {node: '>=18'} @@ -601,6 +632,10 @@ packages: resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} engines: {node: '>=16'} + '@es-joy/jsdoccomment@0.50.0': + resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} + engines: {node: '>=18'} + '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} @@ -1055,24 +1090,29 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.1.1': - resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + '@eslint/compat@1.2.5': + resolution: {integrity: sha512-5iuG/StT+7OfvhoBHPlmxkPA9om6aDUFgmD4+mWKAGsYt4vCe8rypneG03AuseyRHBmcCLXQtIH5S26tIoggLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true '@eslint/config-array@0.19.0': resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.9.0': - resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.2.0': resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + '@eslint/js@9.18.0': + resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/markdown@6.2.1': @@ -1087,6 +1127,10 @@ packages: resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fastify/accept-negotiator@1.1.0': resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} engines: {node: '>=14'} @@ -1132,8 +1176,8 @@ packages: '@iconify-json/logos@1.2.0': resolution: {integrity: sha512-VkU9QSqeZR2guWbecdqkcoZEAJfgJJTUm6QAsypuZQ7Cve6zy39wOXDjp2H31I8QyQy4O3Cz96+pNji6UQFg4w==} - '@iconify-json/lucide@1.2.21': - resolution: {integrity: sha512-Oi9bVtaDaiUg4DpmuFWO4bihwXvxFW47KYFUWEGRsqAWijnODTXIO24F2YNlz+k9WvdIr3RsOFiuNIoEzMPsRQ==} + '@iconify-json/lucide@1.2.22': + resolution: {integrity: sha512-sHRN/UFVTPTKCA9dVdO34OydvAf5d3CmT16a/U2+VzogI1uIsBXoYILU5oHGFMMq12aMJ65zgr1YOJCI0glxeg==} '@iconify-json/noto@1.2.2': resolution: {integrity: sha512-nVyjbd3CJ1AhSXdvzlPyku1hZ4cQPzXEgZh65rDUdZi2sEgvHJHdiDcr//6ynoCbFnWb8o1ck6x/s/HND4mWFA==} @@ -1144,8 +1188,8 @@ packages: '@iconify-json/ri@1.2.0': resolution: {integrity: sha512-br8It3uRHylNhEH72aU9VF6gIdL4BAi6JMdcxsCaVbAyWBJ0jd4RxfmsYnil6TmEfP5wxihiCKbtbQmIHZdqKg==} - '@iconify-json/simple-icons@1.2.18': - resolution: {integrity: sha512-ae4ig7fxNXME1wl5og7Ocp82TM4jyz6IsOyI8GrteSbvHR9gaPu2Z01Amn5V/xo1Y7A7/+EH/3Ovpy2az/gYbg==} + '@iconify-json/simple-icons@1.2.19': + resolution: {integrity: sha512-5ntmhLBUEKiakX3quPPXft+WfXIVfDINzTm3djZzzewah9ACxsCVaxoa4QVxlW8PMoF8jndXOqyHYZGCxwxoZw==} '@iconify-json/tabler@1.2.4': resolution: {integrity: sha512-8sUrdJQpNaX3ZfJ5Po4hhA6n+JougMZeRg3AFvh5OuAvhZ8hEAOzPHuY8OB96x6cZCqY/j5idsbZWqKDinxRbQ==} @@ -1285,9 +1329,9 @@ packages: '@nuxt/icon@1.9.1': resolution: {integrity: sha512-kxhNAFRhjZuANy4vkPhRu2EG8MHLitBc3l/MY4vrUHzuaBRb8fyYZvOuMkligovLn0fsfhivWS2WG3yawCzBEA==} - '@nuxt/image@1.8.1': - resolution: {integrity: sha512-qNj7OCNsoGcutGOo1R2PYp4tQ/6uD77aSakyDoVAmLSRJBmhFTnT2+gIqVD95JMmkSHgYhmSX4gGxnaQK/t1cw==} - engines: {node: ^14.16.0 || >=16.11.0} + '@nuxt/image@1.9.0': + resolution: {integrity: sha512-kuuePx/jtlmsuG/G8mTMELntw4p8MLD4tu9f4A064xor/ks29oEoBmFRzvfFwxqZ7cqfG2M4LZfTZFjQz5St+Q==} + engines: {node: '>=18.20.5'} '@nuxt/kit@3.13.2': resolution: {integrity: sha512-KvRw21zU//wdz25IeE1E5m/aFSzhJloBRAQtv+evcFeZvuroIxpIQuUqhbzuwznaUwpiWbmwlcsp5uOWmi4vwA==} @@ -1622,15 +1666,6 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.1.3': - resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -1645,96 +1680,191 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.30.1': + resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.29.1': resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.30.1': + resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.29.1': resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.30.1': + resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.29.1': resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.30.1': + resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.29.1': resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.30.1': + resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.29.1': resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.30.1': + resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': + resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.29.1': resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.30.1': + resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.29.1': resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.30.1': + resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.29.1': resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.30.1': + resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} cpu: [loong64] os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.29.1': resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.30.1': + resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.29.1': resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.30.1': + resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.29.1': resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.30.1': + resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.29.1': resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.30.1': + resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.29.1': resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.30.1': + resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.29.1': resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.30.1': + resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.29.1': resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.30.1': + resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} + cpu: [x64] + os: [win32] + '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -1786,8 +1916,8 @@ packages: resolution: {integrity: sha512-+4Cb0bVHlV4BJXxkJ3cCLSLuWxm3pXKtgcRacox146EuugjCzRRII5T5gUMgL4HpzrBLVwVxjKaZqntNWAXawQ==} engines: {node: '>=12.16'} - '@stylistic/eslint-plugin@2.12.1': - resolution: {integrity: sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==} + '@stylistic/eslint-plugin@2.13.0': + resolution: {integrity: sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -1848,6 +1978,9 @@ packages: '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -1911,49 +2044,43 @@ packages: '@types/youtube@0.1.0': resolution: {integrity: sha512-Pg33m3X2mFgdmhtvzOlAfUfgOa3341N3/2JCrVY/mXVxb4hagcqqEG6w4vGCfB64StQNWHSj/T8Eotb1Rko/FQ==} - '@typescript-eslint/eslint-plugin@8.18.2': - resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} + '@typescript-eslint/eslint-plugin@8.19.1': + resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 - '@typescript-eslint/parser@8.18.2': - resolution: {integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==} + '@typescript-eslint/parser@8.19.1': + resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 - '@typescript-eslint/scope-manager@8.18.1': - resolution: {integrity: sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.18.2': resolution: {integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.18.2': - resolution: {integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==} + '@typescript-eslint/scope-manager@8.19.1': + resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.19.1': + resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 - '@typescript-eslint/types@8.18.1': - resolution: {integrity: sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.18.2': resolution: {integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.18.1': - resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} + '@typescript-eslint/types@8.19.1': + resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: 5.7.2 '@typescript-eslint/typescript-estree@8.18.2': resolution: {integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==} @@ -1961,11 +2088,10 @@ packages: peerDependencies: typescript: 5.7.2 - '@typescript-eslint/utils@8.18.1': - resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} + '@typescript-eslint/typescript-estree@8.19.1': + resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 '@typescript-eslint/utils@8.18.2': @@ -1975,14 +2101,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 - '@typescript-eslint/visitor-keys@8.18.1': - resolution: {integrity: sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==} + '@typescript-eslint/utils@8.19.1': + resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: 5.7.2 '@typescript-eslint/visitor-keys@8.18.2': resolution: {integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.19.1': + resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -2115,8 +2248,8 @@ packages: vite: 6.0.7 vue: ^3.5.13 - '@vitest/eslint-plugin@1.1.20': - resolution: {integrity: sha512-2eLsgUm+GVOpDfNyH2do//MiNO/WZkXrPi+EjDmXEdUt6Jwnziq4H221L8vJE0aJys+l1FRfSkm4QbaIyDCfBg==} + '@vitest/eslint-plugin@1.1.25': + resolution: {integrity: sha512-u8DpDnMbPcqBmJOB4PeEtn6q7vKmLVTLFMpzoxSAo0hjYdl4iYSHRleqwPQo0ywc7UV0S6RKIahYRQ3BnZdMVw==} peerDependencies: '@typescript-eslint/utils': '>= 8.0' eslint: '>= 8.57.0' @@ -2257,8 +2390,8 @@ packages: '@vueuse/core@12.0.0': resolution: {integrity: sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==} - '@vueuse/core@12.3.0': - resolution: {integrity: sha512-cnV8QDKZrsyKC7tWjPbeEUz2cD9sa9faxF2YkR8QqNwfofgbOhmfIgvSYmkp+ttSvfOw4E6hLcQx15mRPr0yBA==} + '@vueuse/core@12.4.0': + resolution: {integrity: sha512-XnjQYcJwCsyXyIafyA6SvyN/OBtfPnjvJmbxNxQjCcyWD198urwm5TYvIUUyAxEAN0K7HJggOgT15cOlWFyLeA==} '@vueuse/head@2.0.0': resolution: {integrity: sha512-ykdOxTGs95xjD4WXE4na/umxZea2Itl0GWBILas+O4oqS7eXIods38INvk3XkJKjqMdWPcpCyLX/DioLQxU1KA==} @@ -2362,8 +2495,8 @@ packages: '@vueuse/metadata@12.0.0': resolution: {integrity: sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==} - '@vueuse/metadata@12.3.0': - resolution: {integrity: sha512-M/iQHHjMffOv2npsw2ihlUx1CTiBwPEgb7DzByLq7zpg1+Ke8r7s9p5ybUWc5OIeGewtpY4Xy0R2cKqFqM8hFg==} + '@vueuse/metadata@12.4.0': + resolution: {integrity: sha512-AhPuHs/qtYrKHUlEoNO6zCXufu8OgbR8S/n2oMw1OQuBQJ3+HOLQ+EpvXs+feOlZMa0p8QVvDWNlmcJJY8rW2g==} '@vueuse/nuxt@10.11.1': resolution: {integrity: sha512-UiaYSIwOkmUVn8Gl1AqtLWYR12flO+8sEu9X0Y1fNjSR7EWy9jMuiCvOGqwtoeTsqfHrivl0d5HfMzr11GFnMA==} @@ -2375,8 +2508,8 @@ packages: peerDependencies: nuxt: 3.15.1 - '@vueuse/nuxt@12.3.0': - resolution: {integrity: sha512-xlpYIroHvdrwyZRHvXKekdFLH0IIPaOLKkt8VcVFZLHC3CgPiiwqGDK2Uvea8Hb51zhTWodYpd5Y2jCcsjZmBw==} + '@vueuse/nuxt@12.4.0': + resolution: {integrity: sha512-3T4YTIxbScSfYPF6+EodL04b54CtaKwaPg+BQcod1BDa3j0afxbDlhqWv7uobacLR5xYWy+hITnmgT+TJQsdWA==} peerDependencies: nuxt: 3.15.1 @@ -2392,8 +2525,8 @@ packages: '@vueuse/shared@12.0.0': resolution: {integrity: sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==} - '@vueuse/shared@12.3.0': - resolution: {integrity: sha512-X3YD35GUeW0d5Gajcwv9jdLAJTV2Jdb/Ll6Ii2JIYcKLYZqv5wxyLeKtiQkqWmHg3v0J0ZWjDUMVOw2E7RCXfA==} + '@vueuse/shared@12.4.0': + resolution: {integrity: sha512-9yLgbHVIF12OSCojnjTIoZL1+UA10+O4E1aD6Hpfo/DKVm5o3SZIwz6CupqGy3+IcKI8d6Jnl26EQj/YucnW0Q==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -2489,6 +2622,10 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -2689,8 +2826,8 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - bumpp@9.9.2: - resolution: {integrity: sha512-ggRxRV1rWHEyWXnf55UqYzGvttS/Vpkl1zxcNdE5xoYMTHlSgRA0Td4nKn3ckCcMuC+MTgaGQrbKBeyr0V9+Hg==} + bumpp@9.10.0: + resolution: {integrity: sha512-gNY3tYEGKyqW8+qtpeLQ2UfQW7G81d/vhCWNGrMlvy0Toq1LZPRs8wk9woAw8o9Tzv7pvjaF/Gno+UN3qiqNxA==} engines: {node: '>=10'} hasBin: true @@ -3101,8 +3238,8 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssstyle@4.1.0: - resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} + cssstyle@4.2.1: + resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} engines: {node: '>=18'} csstype@3.1.3: @@ -3438,13 +3575,13 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-flat-gitignore@0.3.0: - resolution: {integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==} + eslint-config-flat-gitignore@1.0.0: + resolution: {integrity: sha512-EWpSLrAP80IdcYK5sIhq/qAY0pmUdBnbzqzpE3QAn6H6wLBN26cMRoMNU9Di8upTzUSL6TXeYRxWhTYuz8+UQA==} peerDependencies: eslint: ^9.5.0 - eslint-flat-config-utils@0.4.0: - resolution: {integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==} + eslint-flat-config-utils@1.0.0: + resolution: {integrity: sha512-tmzcXeCsa24/u3glyw1Mo7KfC/r9a5Vsu1nPCkX7uefD7C5Z4x922Q2KP/drhTLbOI5lcFHYpfXjKhqqnUWObw==} eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -3460,8 +3597,8 @@ packages: '@eslint/json': optional: true - eslint-merge-processors@0.1.0: - resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} + eslint-merge-processors@1.0.0: + resolution: {integrity: sha512-4GybyHmhXtT7/W8RAouQzNM0791sYasJCTYHIAYjuiJvbNFY0jMKkoESREhX+mjX37dxiN6v4EqhZ1nc0tJF7A==} peerDependencies: eslint: '*' @@ -3470,8 +3607,8 @@ packages: peerDependencies: eslint: '*' - eslint-plugin-command@0.2.7: - resolution: {integrity: sha512-UXJ/1R6kdKDcHhiRqxHJ9RZ3juMR1IWQuSrnwt56qCjxt/am+5+YDt6GKs1FJPnppe6/geEYsO3CR9jc63i0xw==} + eslint-plugin-command@2.1.0: + resolution: {integrity: sha512-S3gvDSCRHLdRG7NYaevLvGA0g/txOju7NEB2di7SE80NtbCwsvpi/fft045YuTZpOzqCRUfuye39raldmpXXYQ==} peerDependencies: eslint: '*' @@ -3509,8 +3646,8 @@ packages: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@4.4.0: - resolution: {integrity: sha512-B78pWxCsA2sClourpWEmWziCcjEsAEyxsNV5G6cxxteu/NI0/2en9XZUONf5e/+O+dgoLZsEPHQEhnIxJcnUvA==} + eslint-plugin-perfectionist@4.6.0: + resolution: {integrity: sha512-kOswTebUK0LlYExRwqz7YQtvyTUIRsKfp8XrwBBeHGh2e8MBOS6K+7VvG6HpmNckyKySi1I96uPeAlptMFGcRQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: eslint: '>=8.0.0' @@ -3554,8 +3691,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-processor-vue-blocks@0.1.2: - resolution: {integrity: sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==} + eslint-processor-vue-blocks@1.0.0: + resolution: {integrity: sha512-q+Wn9bCml65NwYtuINVCE5dUqZa/uVoY4jfc8qEDwWbcGqdRyfJJmAONNZsreA4Q9EJqjYGjk8Hk1QuwAktgkw==} peerDependencies: '@vue/compiler-sfc': ^3.3.0 eslint: ^8.50.0 || ^9.0.0 @@ -3580,8 +3717,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.17.0: - resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + eslint@9.18.0: + resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3656,8 +3793,8 @@ packages: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} - express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} extend@3.0.2: @@ -3759,8 +3896,8 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} forwarded@0.2.0: @@ -4076,6 +4213,10 @@ packages: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + httpxy@0.1.5: resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} @@ -4355,11 +4496,11 @@ packages: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} - jsdom@25.0.1: - resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} + jsdom@26.0.0: + resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} engines: {node: '>=18'} peerDependencies: - canvas: ^2.11.2 + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true @@ -4490,6 +4631,10 @@ packages: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} + local-pkg@1.0.0: + resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} + engines: {node: '>=14'} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -4528,16 +4673,16 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -4548,9 +4693,6 @@ packages: resolution: {integrity: sha512-C9sgUzVZtUtzCBoMdYtwrIRQ4IucGRFGgdhkjL7PXsVfPYmTuWtewqzk7dlipaCMWH/gOYehW9rgMoa4Oebtpw==} engines: {node: '>=16.14.0'} - magic-string@0.30.14: - resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} - magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -4851,8 +4993,8 @@ packages: vue-tsc: optional: true - mlly@1.7.3: - resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -5036,8 +5178,8 @@ packages: '@types/node': optional: true - nwsapi@2.2.13: - resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} + nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} nypm@0.3.12: resolution: {integrity: sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==} @@ -5136,9 +5278,6 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.6: - resolution: {integrity: sha512-9vPH3qooBlYRJdmdYP00nvjZOulm40r5dhtal8st18ctf+6S1k7pi5yIHLvI4w5D70x0Y+xdVD9qITH0QO/A8A==} - package-manager-detector@0.2.8: resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} @@ -5231,8 +5370,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -5247,6 +5386,9 @@ packages: pathe@2.0.0: resolution: {integrity: sha512-G7n4uhtk9qJt2hlD+UFfsIGY854wpF+zs2bUbQ3CQEUTcn7v25LRsrmurOxTo4bJgjE4qkyshd9ldsEuY9M6xg==} + pathe@2.0.1: + resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -5269,15 +5411,12 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pinia@2.2.6: - resolution: {integrity: sha512-vIsR8JkDN5Ga2vAxqOE2cJj4VtsHnzpR1Fz30kClxlh0yCHfec6uoMeM3e/ddqmwFUejK3NlrcQa/shnpyT4hA==} + pinia@2.3.0: + resolution: {integrity: sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==} peerDependencies: - '@vue/composition-api': ^1.4.0 typescript: 5.7.2 vue: ^3.5.13 peerDependenciesMeta: - '@vue/composition-api': - optional: true typescript: optional: true @@ -5609,24 +5748,24 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: - react: ^18.3.1 + react: ^19.0.0 react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-router-dom@7.0.1: - resolution: {integrity: sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng==} + react-router-dom@7.1.1: + resolution: {integrity: sha512-vSrQHWlJ5DCfyrhgo0k6zViOe9ToK8uT5XGSmnuC2R3/g261IdIMpZVqfjD6vWSXdnf5Czs4VA/V60oVR6/jnA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.0.1: - resolution: {integrity: sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==} + react-router@7.1.1: + resolution: {integrity: sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -5635,8 +5774,8 @@ packages: react-dom: optional: true - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -5827,8 +5966,13 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + rollup@4.30.1: + resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} @@ -5857,8 +6001,8 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} @@ -6262,6 +6406,9 @@ packages: tinyexec@0.3.1: resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.10: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} @@ -6327,6 +6474,12 @@ packages: peerDependencies: typescript: 5.7.2 + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: 5.7.2 + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -6390,8 +6543,8 @@ packages: ultrahtml@1.5.3: resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} - unbuild@3.2.0: - resolution: {integrity: sha512-9XO8Yh0r2a0Aid8beiPXJQ5vaT3KdnNPnV5WDnAZljOX1rfp0/O75oruwiZtU5qCqb7lYVsBg9iOgG2+0VGwVw==} + unbuild@3.3.0: + resolution: {integrity: sha512-DRBK6KpMo4A2gAkQglItfLWbjJtiBfNfS87UCLf0yoDsxUUwU4AgQJru0dGoX0vW8bfMaBynvWgTUtzr4CJcbQ==} hasBin: true peerDependencies: typescript: 5.7.2 @@ -6448,9 +6601,6 @@ packages: unimport@3.13.1: resolution: {integrity: sha512-nNrVzcs93yrZQOW77qnyOVHtb68LegvhYFwxFMfuuWScmwQmyVCG/NBuN8tYsaGzgQUVYv34E/af+Cc9u4og4A==} - unimport@3.14.3: - resolution: {integrity: sha512-yEJps4GW7jBdoQlxEV0ElBCJsJmH8FdZtk4oog0y++8hgLh0dGnDpE4oaTc0Lfx4N5rRJiGFUWHrBqC8CyUBmQ==} - unimport@3.14.5: resolution: {integrity: sha512-tn890SwFFZxqaJSKQPPd+yygfKSATbM8BZWW1aCR2TJBTs1SDrmLamBueaFtYsGjHtQaRgqEbQflOjN2iW12gA==} @@ -6499,8 +6649,8 @@ packages: resolution: {integrity: sha512-Fhrj4mOAnQYy/bfcDbTNcTSJuBDo+Ayl/cud1sfh3RoNYQtOn0zBBUD081L1xm1SkGniB+3kcp/PN4PbQxzWxw==} engines: {node: '>=18.12.0'} - unplugin-auto-import@0.18.5: - resolution: {integrity: sha512-ZUnayBRlOwNuN9hrM1PymSZK5qDEI8heDD0E3U8Tq4FS6bUxd9VMfJ8tCwWTG5ir6g1yThe/4SVHbFUZQwplOw==} + unplugin-auto-import@19.0.0: + resolution: {integrity: sha512-TREXtXqCM6YLy3rE2tjvKZEaCiPlP2e5bmnRKaS8AM2MlNgjV7UP4RPieWIfs4Isv0GoeHmov956PIIvJYdqpQ==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': ^3.2.2 @@ -6511,19 +6661,6 @@ packages: '@vueuse/core': optional: true - unplugin-vue-components@0.27.5: - resolution: {integrity: sha512-m9j4goBeNwXyNN8oZHHxvIIYiG8FQ9UfmKWeNllpDvhU7btKNNELGPt+o3mckQKuPwrE7e0PvCsx+IWuDSD9Vg==} - engines: {node: '>=14'} - peerDependencies: - '@babel/parser': ^7.15.8 - '@nuxt/kit': ^3.2.2 - vue: ^3.5.13 - peerDependenciesMeta: - '@babel/parser': - optional: true - '@nuxt/kit': - optional: true - unplugin-vue-components@28.0.0: resolution: {integrity: sha512-vYe0wSyqTVhyNFIad1iiGyQGhG++tDOMgohqenMDOAooMJP9vvzCdXTqCVx20A0rCQXFNjgoRbSeDAioLPH36Q==} engines: {node: '>=14'} @@ -6944,11 +7081,6 @@ packages: peerDependencies: eslint: '>=6.0.0' - vue-router@4.4.5: - resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} - peerDependencies: - vue: ^3.5.13 - vue-router@4.5.0: resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} peerDependencies: @@ -7016,8 +7148,8 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + whatwg-url@14.1.0: + resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} engines: {node: '>=18'} whatwg-url@5.0.0: @@ -7164,42 +7296,42 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@3.12.1(@typescript-eslint/utils@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.13)(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))': + '@antfu/eslint-config@3.14.0(@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))': dependencies: - '@antfu/install-pkg': 0.5.0 - '@clack/prompts': 0.9.0 - '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@antfu/install-pkg': 1.0.0 + '@clack/prompts': 0.9.1 + '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@eslint/markdown': 6.2.1 - '@stylistic/eslint-plugin': 2.12.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/eslint-plugin': 8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/parser': 8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@vitest/eslint-plugin': 1.1.20(@typescript-eslint/utils@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1)) - eslint: 9.17.0(jiti@2.4.2) - eslint-config-flat-gitignore: 0.3.0(eslint@9.17.0(jiti@2.4.2)) - eslint-flat-config-utils: 0.4.0 - eslint-merge-processors: 0.1.0(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-antfu: 2.7.0(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-command: 0.2.7(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.6.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint-plugin-jsdoc: 50.6.1(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-jsonc: 2.18.2(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-n: 17.15.1(eslint@9.17.0(jiti@2.4.2)) + '@stylistic/eslint-plugin': 2.13.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + '@vitest/eslint-plugin': 1.1.25(@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1)) + eslint: 9.18.0(jiti@2.4.2) + eslint-config-flat-gitignore: 1.0.0(eslint@9.18.0(jiti@2.4.2)) + eslint-flat-config-utils: 1.0.0 + eslint-merge-processors: 1.0.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-antfu: 2.7.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-command: 2.1.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + eslint-plugin-jsdoc: 50.6.1(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-jsonc: 2.18.2(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-n: 17.15.1(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 4.4.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint-plugin-regexp: 2.7.0(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-toml: 0.12.0(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-unicorn: 56.0.1(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-vue: 9.32.0(eslint@9.17.0(jiti@2.4.2)) - eslint-plugin-yml: 1.16.0(eslint@9.17.0(jiti@2.4.2)) - eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.13)(eslint@9.17.0(jiti@2.4.2)) + eslint-plugin-perfectionist: 4.6.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + eslint-plugin-regexp: 2.7.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-toml: 0.12.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-unicorn: 56.0.1(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-vue: 9.32.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-yml: 1.16.0(eslint@9.18.0(jiti@2.4.2)) + eslint-processor-vue-blocks: 1.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2)) globals: 15.14.0 jsonc-eslint-parser: 2.4.0 - local-pkg: 0.5.1 + local-pkg: 1.0.0 parse-gitignore: 2.0.0 picocolors: 1.1.1 toml-eslint-parser: 0.10.0 - vue-eslint-parser: 9.4.3(eslint@9.17.0(jiti@2.4.2)) + vue-eslint-parser: 9.4.3(eslint@9.18.0(jiti@2.4.2)) yaml-eslint-parser: 1.2.3 yargs: 17.7.2 transitivePeerDependencies: @@ -7212,16 +7344,24 @@ snapshots: '@antfu/install-pkg@0.4.1': dependencies: - package-manager-detector: 0.2.6 + package-manager-detector: 0.2.8 tinyexec: 0.3.1 - '@antfu/install-pkg@0.5.0': + '@antfu/install-pkg@1.0.0': dependencies: - package-manager-detector: 0.2.6 - tinyexec: 0.3.1 + package-manager-detector: 0.2.8 + tinyexec: 0.3.2 '@antfu/utils@0.7.10': {} + '@asamuzakjp/css-color@2.8.2': + dependencies: + '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 11.0.2 + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -7241,7 +7381,7 @@ snapshots: '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 convert-source-map: 2.0.0 debug: 4.4.0(supports-color@9.4.0) gensync: 1.0.0-beta.2 @@ -7253,7 +7393,7 @@ snapshots: '@babel/generator@7.26.2': dependencies: '@babel/parser': 7.26.2 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -7261,14 +7401,14 @@ snapshots: '@babel/generator@7.26.3': dependencies: '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/helper-compilation-targets@7.25.9': dependencies: @@ -7294,14 +7434,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: '@babel/traverse': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.9': dependencies: '@babel/traverse': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -7316,7 +7456,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/helper-plugin-utils@7.25.9': {} @@ -7332,7 +7472,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: '@babel/traverse': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -7345,15 +7485,15 @@ snapshots: '@babel/helpers@7.26.0': dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/parser@7.26.2': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/parser@7.26.3': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.26.0)': dependencies: @@ -7416,7 +7556,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/parser': 7.26.2 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/traverse@7.25.9': dependencies: @@ -7424,13 +7564,13 @@ snapshots: '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 debug: 4.4.0(supports-color@9.4.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.3': + '@babel/types@7.26.5': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -7445,14 +7585,14 @@ snapshots: transitivePeerDependencies: - encoding - '@clack/core@0.4.0': + '@clack/core@0.4.1': dependencies: picocolors: 1.1.1 sisteransi: 1.0.5 - '@clack/prompts@0.9.0': + '@clack/prompts@0.9.1': dependencies: - '@clack/core': 0.4.0 + '@clack/core': 0.4.1 picocolors: 1.1.1 sisteransi: 1.0.5 @@ -7460,6 +7600,26 @@ snapshots: dependencies: mime: 3.0.0 + '@csstools/color-helpers@5.0.1': {} + + '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.1 + '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)': dependencies: postcss-selector-parser: 7.0.0 @@ -7474,6 +7634,15 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 + '@es-joy/jsdoccomment@0.50.0': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + '@typescript-eslint/types': 8.18.2 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + '@esbuild/aix-ppc64@0.23.1': optional: true @@ -7693,20 +7862,22 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.17.0(jiti@2.4.2))': + '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.18.0(jiti@2.4.2))': dependencies: escape-string-regexp: 4.0.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) ignore: 5.3.2 - '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.1.1': {} + '@eslint/compat@1.2.5(eslint@9.18.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.18.0(jiti@2.4.2) '@eslint/config-array@0.19.0': dependencies: @@ -7716,7 +7887,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/core@0.9.0': {} + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 '@eslint/eslintrc@3.2.0': dependencies: @@ -7732,7 +7905,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.17.0': {} + '@eslint/js@9.18.0': {} '@eslint/markdown@6.2.1': dependencies: @@ -7749,6 +7922,11 @@ snapshots: dependencies: levn: 0.4.1 + '@eslint/plugin-kit@0.2.5': + dependencies: + '@eslint/core': 0.10.0 + levn: 0.4.1 + '@fastify/accept-negotiator@1.1.0': optional: true @@ -7786,7 +7964,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/lucide@1.2.21': + '@iconify-json/lucide@1.2.22': dependencies: '@iconify/types': 2.0.0 @@ -7802,7 +7980,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.18': + '@iconify-json/simple-icons@1.2.19': dependencies: '@iconify/types': 2.0.0 @@ -7828,7 +8006,7 @@ snapshots: debug: 4.4.0(supports-color@9.4.0) kolorist: 1.8.0 local-pkg: 0.5.1 - mlly: 1.7.3 + mlly: 1.7.4 transitivePeerDependencies: - supports-color @@ -7931,13 +8109,13 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nuxt/content@2.13.4(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2))': + '@nuxt/content@2.13.4(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2))': dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.29.1) '@nuxtjs/mdc': 0.12.0(magicast@0.3.5)(rollup@4.29.1) '@vueuse/core': 11.1.0(vue@3.5.13(typescript@5.7.2)) '@vueuse/head': 2.0.0(vue@3.5.13(typescript@5.7.2)) - '@vueuse/nuxt': 11.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) + '@vueuse/nuxt': 11.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) consola: 3.2.3 defu: 6.1.4 destr: 2.0.3 @@ -8030,7 +8208,7 @@ snapshots: - rollup - supports-color - '@nuxt/devtools-ui-kit@1.5.1(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1))': + '@nuxt/devtools-ui-kit@1.5.1(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1))': dependencies: '@iconify-json/carbon': 1.2.1 '@iconify-json/logos': 1.2.0 @@ -8047,7 +8225,7 @@ snapshots: '@unocss/reset': 0.62.4 '@vueuse/core': 11.1.0(vue@3.5.13(typescript@5.7.2)) '@vueuse/integrations': 11.1.0(change-case@5.4.4)(focus-trap@7.6.0)(fuse.js@7.0.0)(vue@3.5.13(typescript@5.7.2)) - '@vueuse/nuxt': 11.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) + '@vueuse/nuxt': 11.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) defu: 6.1.4 focus-trap: 7.6.0 splitpanes: 3.1.5 @@ -8190,7 +8368,7 @@ snapshots: '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.29.1) consola: 3.3.3 local-pkg: 0.5.1 - mlly: 1.7.3 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 std-env: 3.8.0 @@ -8202,20 +8380,19 @@ snapshots: - vite - vue - '@nuxt/image@1.8.1(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.29.1)': + '@nuxt/image@1.9.0(db0@0.2.1)(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.29.1)': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.29.1) - consola: 3.2.3 + '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.29.1) + consola: 3.3.3 defu: 6.1.4 - h3: 1.12.0 + h3: 1.13.0 image-meta: 0.2.1 - node-fetch-native: 1.6.4 ohash: 1.1.4 - pathe: 1.1.2 - std-env: 3.7.0 + pathe: 2.0.0 + std-env: 3.8.0 ufo: 1.5.4 optionalDependencies: - ipx: 2.1.0(ioredis@5.4.1) + ipx: 2.1.0(db0@0.2.1)(ioredis@5.4.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -8224,16 +8401,21 @@ snapshots: - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@capacitor/preferences' + - '@deno/kv' - '@netlify/blobs' - '@planetscale/database' - '@upstash/redis' + - '@vercel/blob' - '@vercel/kv' + - aws4fetch + - db0 - idb-keyval - ioredis - magicast - rollup - supports-color - uWebSockets.js + - uploadthing '@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@4.29.1)': dependencies: @@ -8248,9 +8430,9 @@ snapshots: jiti: 1.21.6 klona: 2.0.6 knitwork: 1.1.0 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.3.0 scule: 1.3.0 semver: 7.6.3 ufo: 1.5.4 @@ -8275,7 +8457,7 @@ snapshots: jiti: 2.4.2 klona: 2.0.6 knitwork: 1.1.0 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-types: 1.2.1 scule: 1.3.0 @@ -8301,7 +8483,7 @@ snapshots: jiti: 2.4.2 klona: 2.0.6 knitwork: 1.2.0 - mlly: 1.7.3 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 pkg-types: 1.2.1 @@ -8328,7 +8510,7 @@ snapshots: jiti: 2.4.2 klona: 2.0.6 knitwork: 1.2.0 - mlly: 1.7.3 + mlly: 1.7.4 ohash: 1.1.4 pathe: 2.0.0 pkg-types: 1.3.0 @@ -8343,6 +8525,34 @@ snapshots: - rollup - supports-color + '@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.30.1)': + dependencies: + '@nuxt/schema': 3.15.1 + c12: 2.0.1(magicast@0.3.5) + consola: 3.3.3 + defu: 6.1.4 + destr: 2.0.3 + globby: 14.0.2 + ignore: 7.0.0 + jiti: 2.4.2 + klona: 2.0.6 + knitwork: 1.2.0 + mlly: 1.7.4 + ohash: 1.1.4 + pathe: 2.0.0 + pkg-types: 1.3.0 + scule: 1.3.0 + semver: 7.6.3 + ufo: 1.5.4 + unctx: 2.4.1 + unimport: 3.14.5(rollup@4.30.1) + untyped: 1.5.2 + transitivePeerDependencies: + - magicast + - rollup + - supports-color + optional: true + '@nuxt/schema@3.13.2(rollup@4.29.1)': dependencies: compatx: 0.1.8 @@ -8350,7 +8560,7 @@ snapshots: defu: 6.1.4 hookable: 5.5.3 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.3.0 scule: 1.3.0 std-env: 3.8.0 ufo: 1.5.4 @@ -8389,7 +8599,7 @@ snapshots: defu: 6.1.4 hookable: 5.5.3 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.3.0 scule: 1.3.0 std-env: 3.8.0 ufo: 1.5.4 @@ -8408,10 +8618,10 @@ snapshots: pathe: 2.0.0 std-env: 3.8.0 - '@nuxt/scripts@0.9.5(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1))': + '@nuxt/scripts@0.9.5(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(ioredis@5.4.1)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1))': dependencies: '@nuxt/devtools-kit': 1.5.1(magicast@0.3.5)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1)) - '@nuxt/devtools-ui-kit': 1.5.1(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1)) + '@nuxt/devtools-ui-kit': 1.5.1(@nuxt/devtools@1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)))(@unocss/webpack@0.62.4(rollup@4.29.1)(webpack@5.95.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.13)(change-case@5.4.4)(fuse.js@7.0.0)(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(postcss@8.4.49)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))(webpack@5.95.0(esbuild@0.23.1)) '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.29.1) '@stripe/stripe-js': 4.8.0 '@types/google.maps': 3.58.1 @@ -8423,7 +8633,7 @@ snapshots: defu: 6.1.4 h3: 1.12.0 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 ofetch: 1.4.0 ohash: 1.1.4 pathe: 1.1.2 @@ -8575,7 +8785,7 @@ snapshots: - vite - vue - '@nuxt/vite-builder@3.15.1(@types/node@22.10.1)(eslint@9.17.0(jiti@2.4.2))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2))(yaml@2.6.1)': + '@nuxt/vite-builder@3.15.1(@types/node@22.10.1)(eslint@9.18.0(jiti@2.4.2))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2))(yaml@2.6.1)': dependencies: '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.29.1) '@rollup/plugin-replace': 6.0.2(rollup@4.29.1) @@ -8593,7 +8803,7 @@ snapshots: jiti: 2.4.2 knitwork: 1.2.0 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 ohash: 1.1.4 pathe: 2.0.0 perfect-debounce: 1.0.0 @@ -8606,7 +8816,7 @@ snapshots: unplugin: 2.1.2 vite: 6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) vite-node: 2.1.8(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) - vite-plugin-checker: 0.8.0(eslint@9.17.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2)) + vite-plugin-checker: 0.8.0(eslint@9.18.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2)) vue: 3.5.13(typescript@5.7.2) vue-bundle-renderer: 2.1.1 transitivePeerDependencies: @@ -8928,6 +9138,10 @@ snapshots: optionalDependencies: rollup: 4.29.1 + '@rollup/plugin-alias@5.1.1(rollup@4.30.1)': + optionalDependencies: + rollup: 4.30.1 + '@rollup/plugin-commonjs@28.0.2(rollup@4.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.29.1) @@ -8940,6 +9154,18 @@ snapshots: optionalDependencies: rollup: 4.29.1 + '@rollup/plugin-commonjs@28.0.2(rollup@4.30.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.4.2(picomatch@4.0.2) + is-reference: 1.2.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.30.1 + '@rollup/plugin-inject@5.0.5(rollup@4.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.29.1) @@ -8954,6 +9180,12 @@ snapshots: optionalDependencies: rollup: 4.29.1 + '@rollup/plugin-json@6.1.0(rollup@4.30.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) + optionalDependencies: + rollup: 4.30.1 + '@rollup/plugin-node-resolve@15.3.0(rollup@4.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.29.1) @@ -8964,15 +9196,15 @@ snapshots: optionalDependencies: rollup: 4.29.1 - '@rollup/plugin-node-resolve@16.0.0(rollup@4.29.1)': + '@rollup/plugin-node-resolve@16.0.0(rollup@4.30.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.29.1 + rollup: 4.30.1 '@rollup/plugin-replace@6.0.2(rollup@4.29.1)': dependencies: @@ -8981,6 +9213,13 @@ snapshots: optionalDependencies: rollup: 4.29.1 + '@rollup/plugin-replace@6.0.2(rollup@4.30.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) + magic-string: 0.30.17 + optionalDependencies: + rollup: 4.30.1 + '@rollup/plugin-terser@0.4.4(rollup@4.29.1)': dependencies: serialize-javascript: 6.0.2 @@ -8994,7 +9233,7 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.3(rollup@4.29.1)': + '@rollup/pluginutils@5.1.4(rollup@4.29.1)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 @@ -9002,71 +9241,128 @@ snapshots: optionalDependencies: rollup: 4.29.1 - '@rollup/pluginutils@5.1.4(rollup@4.29.1)': + '@rollup/pluginutils@5.1.4(rollup@4.30.1)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.29.1 + rollup: 4.30.1 '@rollup/rollup-android-arm-eabi@4.29.1': optional: true + '@rollup/rollup-android-arm-eabi@4.30.1': + optional: true + '@rollup/rollup-android-arm64@4.29.1': optional: true + '@rollup/rollup-android-arm64@4.30.1': + optional: true + '@rollup/rollup-darwin-arm64@4.29.1': optional: true + '@rollup/rollup-darwin-arm64@4.30.1': + optional: true + '@rollup/rollup-darwin-x64@4.29.1': optional: true + '@rollup/rollup-darwin-x64@4.30.1': + optional: true + '@rollup/rollup-freebsd-arm64@4.29.1': optional: true + '@rollup/rollup-freebsd-arm64@4.30.1': + optional: true + '@rollup/rollup-freebsd-x64@4.29.1': optional: true + '@rollup/rollup-freebsd-x64@4.30.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.29.1': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.30.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.29.1': optional: true + '@rollup/rollup-linux-arm64-gnu@4.30.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.29.1': optional: true + '@rollup/rollup-linux-arm64-musl@4.30.1': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.29.1': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.30.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.29.1': optional: true + '@rollup/rollup-linux-s390x-gnu@4.30.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.29.1': optional: true + '@rollup/rollup-linux-x64-gnu@4.30.1': + optional: true + '@rollup/rollup-linux-x64-musl@4.29.1': optional: true + '@rollup/rollup-linux-x64-musl@4.30.1': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.29.1': optional: true + '@rollup/rollup-win32-arm64-msvc@4.30.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.29.1': optional: true + '@rollup/rollup-win32-ia32-msvc@4.30.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.29.1': optional: true + '@rollup/rollup-win32-x64-msvc@4.30.1': + optional: true + '@sec-ant/readable-stream@0.4.1': {} '@shikijs/core@1.26.1': @@ -9123,10 +9419,10 @@ snapshots: '@stripe/stripe-js@4.8.0': {} - '@stylistic/eslint-plugin@2.12.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@stylistic/eslint-plugin@2.13.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@typescript-eslint/utils': 8.18.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.18.2(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.18.0(jiti@2.4.2) eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -9172,23 +9468,23 @@ snapshots: '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.26.2 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.26.2 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/cookie@0.6.0': {} @@ -9198,6 +9494,11 @@ snapshots: '@types/doctrine@0.0.9': {} + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + '@types/estree@1.0.6': {} '@types/fs-extra@11.0.4': @@ -9259,66 +9560,66 @@ snapshots: '@types/youtube@0.1.0': {} - '@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/type-utils': 8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.2 - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 + eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.2 + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0(supports-color@9.4.0) - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.18.1': - dependencies: - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/visitor-keys': 8.18.1 - '@typescript-eslint/scope-manager@8.18.2': dependencies: '@typescript-eslint/types': 8.18.2 '@typescript-eslint/visitor-keys': 8.18.2 - '@typescript-eslint/type-utils@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/scope-manager@8.19.1': dependencies: - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 + + '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) debug: 4.4.0(supports-color@9.4.0) - eslint: 9.17.0(jiti@2.4.2) - ts-api-utils: 1.3.0(typescript@5.7.2) + eslint: 9.18.0(jiti@2.4.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.18.1': {} - '@typescript-eslint/types@8.18.2': {} - '@typescript-eslint/typescript-estree@8.18.1(typescript@5.7.2)': + '@typescript-eslint/types@8.19.1': {} + + '@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 debug: 4.4.0(supports-color@9.4.0) - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -9327,50 +9628,50 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/visitor-keys': 8.18.2 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0(supports-color@9.4.0) - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/utils@8.18.2(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + eslint: 9.18.0(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + eslint: 9.18.0(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.18.1': + '@typescript-eslint/visitor-keys@8.18.2': dependencies: - '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/types': 8.18.2 eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.18.2': + '@typescript-eslint/visitor-keys@8.19.1': dependencies: - '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/types': 8.19.1 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.2.0': {} @@ -9628,13 +9929,13 @@ snapshots: vite: 6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) vue: 3.5.13(typescript@5.7.2) - '@vitest/eslint-plugin@1.1.20(@typescript-eslint/utils@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))': + '@vitest/eslint-plugin@1.1.25(@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))': dependencies: - '@typescript-eslint/utils': 8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.18.0(jiti@2.4.2) optionalDependencies: typescript: 5.7.2 - vitest: 2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) + vitest: 2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1) '@vitest/expect@2.1.8': dependencies: @@ -9693,7 +9994,7 @@ snapshots: '@vue-macros/common@1.15.1(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2))': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@rollup/pluginutils': 5.1.4(rollup@4.29.1) '@vue/compiler-sfc': 3.5.13 ast-kit: 1.3.2 @@ -9713,7 +10014,7 @@ snapshots: '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.0) '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@vue/babel-helper-vue-transform-on': 1.2.5 '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0) html-tags: 3.3.1 @@ -9875,11 +10176,11 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/core@12.3.0(typescript@5.7.2)': + '@vueuse/core@12.4.0(typescript@5.7.2)': dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 12.3.0 - '@vueuse/shared': 12.3.0(typescript@5.7.2) + '@vueuse/metadata': 12.4.0 + '@vueuse/shared': 12.4.0(typescript@5.7.2) vue: 3.5.13(typescript@5.7.2) transitivePeerDependencies: - typescript @@ -9932,15 +10233,15 @@ snapshots: '@vueuse/metadata@12.0.0': {} - '@vueuse/metadata@12.3.0': {} + '@vueuse/metadata@12.4.0': {} - '@vueuse/nuxt@10.11.1(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2))': + '@vueuse/nuxt@10.11.1(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2))': dependencies: '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.29.1) '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.2)) '@vueuse/metadata': 10.11.1 local-pkg: 0.5.1 - nuxt: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) + nuxt: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) transitivePeerDependencies: - '@vue/composition-api' @@ -9949,13 +10250,13 @@ snapshots: - supports-color - vue - '@vueuse/nuxt@11.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2))': + '@vueuse/nuxt@11.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2))': dependencies: '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.29.1) '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.7.2)) '@vueuse/metadata': 11.3.0 local-pkg: 0.5.1 - nuxt: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) + nuxt: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) transitivePeerDependencies: - '@vue/composition-api' @@ -9964,13 +10265,13 @@ snapshots: - supports-color - vue - '@vueuse/nuxt@12.3.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(typescript@5.7.2)': + '@vueuse/nuxt@12.4.0(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(typescript@5.7.2)': dependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) - '@vueuse/core': 12.3.0(typescript@5.7.2) - '@vueuse/metadata': 12.3.0 - local-pkg: 0.5.1 - nuxt: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) + '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.29.1) + '@vueuse/core': 12.4.0(typescript@5.7.2) + '@vueuse/metadata': 12.4.0 + local-pkg: 1.0.0 + nuxt: 3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1) vue: 3.5.13(typescript@5.7.2) transitivePeerDependencies: - magicast @@ -10005,7 +10306,7 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/shared@12.3.0(typescript@5.7.2)': + '@vueuse/shared@12.4.0(typescript@5.7.2)': dependencies: vue: 3.5.13(typescript@5.7.2) transitivePeerDependencies: @@ -10130,6 +10431,8 @@ snapshots: transitivePeerDependencies: - supports-color + agent-base@7.1.3: {} + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -10354,16 +10657,17 @@ snapshots: builtin-modules@3.3.0: {} - bumpp@9.9.2(magicast@0.3.5): + bumpp@9.10.0(magicast@0.3.5): dependencies: c12: 2.0.1(magicast@0.3.5) cac: 6.7.14 escalade: 3.2.0 js-yaml: 4.1.0 jsonc-parser: 3.3.1 + package-manager-detector: 0.2.8 prompts: 2.4.2 semver: 7.6.3 - tinyexec: 0.3.1 + tinyexec: 0.3.2 tinyglobby: 0.2.10 transitivePeerDependencies: - magicast @@ -10387,11 +10691,11 @@ snapshots: dotenv: 16.4.5 giget: 1.2.3 jiti: 1.21.6 - mlly: 1.7.3 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.1 + pkg-types: 1.3.0 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -10404,11 +10708,11 @@ snapshots: dotenv: 16.4.5 giget: 1.2.3 jiti: 2.4.1 - mlly: 1.7.3 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.1 + pkg-types: 1.3.0 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -10801,16 +11105,17 @@ snapshots: dependencies: css-tree: 2.2.1 - cssstyle@4.1.0: + cssstyle@4.2.1: dependencies: - rrweb-cssom: 0.7.1 + '@asamuzakjp/css-color': 2.8.2 + rrweb-cssom: 0.8.0 csstype@3.1.3: {} data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.1.0 db0@0.2.1: {} @@ -11107,25 +11412,25 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.17.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) semver: 7.6.3 - eslint-compat-utils@0.6.3(eslint@9.17.0(jiti@2.4.2)): + eslint-compat-utils@0.6.3(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) semver: 7.6.3 - eslint-config-flat-gitignore@0.3.0(eslint@9.17.0(jiti@2.4.2)): + eslint-config-flat-gitignore@1.0.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint/compat': 1.1.1 - eslint: 9.17.0(jiti@2.4.2) + '@eslint/compat': 1.2.5(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) find-up-simple: 1.0.0 - eslint-flat-config-utils@0.4.0: + eslint-flat-config-utils@1.0.0: dependencies: - pathe: 1.1.2 + pathe: 2.0.0 eslint-import-resolver-node@0.3.9: dependencies: @@ -11135,42 +11440,42 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.1(eslint@9.17.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): + eslint-json-compat-utils@0.2.1(eslint@9.18.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) esquery: 1.6.0 jsonc-eslint-parser: 2.4.0 - eslint-merge-processors@0.1.0(eslint@9.17.0(jiti@2.4.2)): + eslint-merge-processors@1.0.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-antfu@2.7.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-antfu@2.7.0(eslint@9.18.0(jiti@2.4.2)): dependencies: '@antfu/utils': 0.7.10 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-command@0.2.7(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-command@2.1.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@es-joy/jsdoccomment': 0.49.0 - eslint: 9.17.0(jiti@2.4.2) + '@es-joy/jsdoccomment': 0.50.0 + eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-es-x@7.8.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-es-x@7.8.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.17.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-import-x@4.6.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2): + eslint-plugin-import-x@4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2): dependencies: '@types/doctrine': 0.0.9 - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/utils': 8.18.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/utils': 8.18.2(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) debug: 4.4.0(supports-color@9.4.0) doctrine: 3.0.0 enhanced-resolve: 5.17.1 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.8.1 is-glob: 4.0.3 @@ -11182,14 +11487,14 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@50.6.1(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-jsdoc@50.6.1(eslint@9.18.0(jiti@2.4.2)): dependencies: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.0(supports-color@9.4.0) escape-string-regexp: 4.0.0 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) espree: 10.3.0 esquery: 1.6.0 parse-imports: 2.2.1 @@ -11199,12 +11504,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.18.2(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-jsonc@2.18.2(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) - eslint: 9.17.0(jiti@2.4.2) - eslint-compat-utils: 0.6.3(eslint@9.17.0(jiti@2.4.2)) - eslint-json-compat-utils: 0.2.1(eslint@9.17.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-compat-utils: 0.6.3(eslint@9.18.0(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.18.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 @@ -11213,12 +11518,12 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-n@17.15.1(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-n@17.15.1(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) enhanced-resolve: 5.17.1 - eslint: 9.17.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.18.0(jiti@2.4.2)) get-tsconfig: 4.8.1 globals: 15.14.0 ignore: 5.3.2 @@ -11227,45 +11532,45 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@4.4.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2): + eslint-plugin-perfectionist@4.6.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2): dependencies: - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/utils': 8.18.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.18.0(jiti@2.4.2) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-regexp@2.7.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-regexp@2.7.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-toml@0.12.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-toml@0.12.0(eslint@9.18.0(jiti@2.4.2)): dependencies: debug: 4.4.0(supports-color@9.4.0) - eslint: 9.17.0(jiti@2.4.2) - eslint-compat-utils: 0.6.3(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-compat-utils: 0.6.3(eslint@9.18.0(jiti@2.4.2)) lodash: 4.17.21 toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@56.0.1(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-unicorn@56.0.1(eslint@9.18.0(jiti@2.4.2)): dependencies: '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.38.1 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) esquery: 1.6.0 globals: 15.14.0 indent-string: 4.0.0 @@ -11278,41 +11583,41 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.2) - eslint-plugin-vue@9.32.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-vue@9.32.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) - eslint: 9.17.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.17.0(jiti@2.4.2)) + vue-eslint-parser: 9.4.3(eslint@9.18.0(jiti@2.4.2)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-yml@1.16.0(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-yml@1.16.0(eslint@9.18.0(jiti@2.4.2)): dependencies: debug: 4.4.0(supports-color@9.4.0) - eslint: 9.17.0(jiti@2.4.2) - eslint-compat-utils: 0.6.3(eslint@9.17.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) + eslint-compat-utils: 0.6.3(eslint@9.18.0(jiti@2.4.2)) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.13)(eslint@9.17.0(jiti@2.4.2)): + eslint-processor-vue-blocks@1.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2)): dependencies: '@vue/compiler-sfc': 3.5.13 - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-scope@5.1.1: dependencies: @@ -11333,15 +11638,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.17.0(jiti@2.4.2): + eslint@9.18.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.0 - '@eslint/core': 0.9.0 + '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.17.0 - '@eslint/plugin-kit': 0.2.3 + '@eslint/js': 9.18.0 + '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.1 @@ -11456,7 +11761,7 @@ snapshots: expect-type@1.1.0: {} - express@4.21.1: + express@4.21.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -11477,7 +11782,7 @@ snapshots: methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.10 + path-to-regexp: 0.1.12 proxy-addr: 2.0.7 qs: 6.13.0 range-parser: 1.2.1 @@ -11497,7 +11802,7 @@ snapshots: externality@1.0.2: dependencies: enhanced-resolve: 5.17.1 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 ufo: 1.5.4 @@ -11617,7 +11922,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.0: + form-data@4.0.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -12064,6 +12369,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + httpxy@0.1.5: {} human-signals@4.3.1: {} @@ -12114,7 +12426,7 @@ snapshots: impound@0.2.0(rollup@4.29.1): dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.29.1) - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 unenv: 1.10.0 unplugin: 1.16.0 @@ -12156,7 +12468,7 @@ snapshots: ipaddr.js@1.9.1: {} - ipx@2.1.0(ioredis@5.4.1): + ipx@2.1.0(db0@0.2.1)(ioredis@5.4.1): dependencies: '@fastify/accept-negotiator': 1.1.0 citty: 0.1.6 @@ -12164,15 +12476,15 @@ snapshots: defu: 6.1.4 destr: 2.0.3 etag: 1.8.1 - h3: 1.12.0 + h3: 1.13.0 image-meta: 0.2.1 - listhen: 1.8.0 - ofetch: 1.4.0 + listhen: 1.9.0 + ofetch: 1.4.1 pathe: 1.1.2 sharp: 0.32.6 svgo: 3.3.2 ufo: 1.5.4 - unstorage: 1.12.0(ioredis@5.4.1) + unstorage: 1.14.4(db0@0.2.1)(ioredis@5.4.1) xss: 1.0.15 transitivePeerDependencies: - '@azure/app-configuration' @@ -12182,13 +12494,18 @@ snapshots: - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@capacitor/preferences' + - '@deno/kv' - '@netlify/blobs' - '@planetscale/database' - '@upstash/redis' + - '@vercel/blob' - '@vercel/kv' + - aws4fetch + - db0 - idb-keyval - ioredis - uWebSockets.js + - uploadthing optional: true iron-webcrypto@1.2.1: {} @@ -12328,19 +12645,19 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: {} - jsdom@25.0.1: + jsdom@26.0.0: dependencies: - cssstyle: 4.1.0 + cssstyle: 4.2.1 data-urls: 5.0.0 decimal.js: 10.4.3 - form-data: 4.0.0 + form-data: 4.0.1 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5(supports-color@9.4.0) + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.13 - parse5: 7.1.2 - rrweb-cssom: 0.7.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 5.0.0 @@ -12348,7 +12665,7 @@ snapshots: webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.1.0 ws: 8.18.0 xml-name-validator: 5.0.0 transitivePeerDependencies: @@ -12498,7 +12815,7 @@ snapshots: h3: 1.13.0 http-shutdown: 1.2.2 jiti: 2.4.2 - mlly: 1.7.3 + mlly: 1.7.4 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.8.0 @@ -12521,7 +12838,7 @@ snapshots: h3: 1.12.0 http-shutdown: 1.2.2 jiti: 2.4.2 - mlly: 1.7.3 + mlly: 1.7.4 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.8.0 @@ -12537,9 +12854,14 @@ snapshots: local-pkg@0.5.1: dependencies: - mlly: 1.7.3 + mlly: 1.7.4 pkg-types: 1.2.1 + local-pkg@1.0.0: + dependencies: + mlly: 1.7.4 + pkg-types: 1.3.0 + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -12568,14 +12890,12 @@ snapshots: longest-streak@3.1.0: {} - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - loupe@3.1.2: {} lru-cache@10.4.3: {} + lru-cache@11.0.2: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -12584,7 +12904,7 @@ snapshots: dependencies: estree-walker: 3.0.3 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 regexp-tree: 0.1.27 type-level-regexp: 0.1.17 ufo: 1.5.4 @@ -12594,10 +12914,6 @@ snapshots: dependencies: magic-string: 0.30.17 - magic-string@0.30.14: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -12605,7 +12921,7 @@ snapshots: magicast@0.3.5: dependencies: '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 source-map-js: 1.2.1 make-dir@3.1.0: @@ -13081,7 +13397,7 @@ snapshots: defu: 6.1.4 esbuild: 0.24.2 jiti: 1.21.7 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-types: 1.3.0 postcss: 8.4.49 @@ -13093,11 +13409,11 @@ snapshots: vue: 3.5.13(typescript@5.7.2) vue-tsc: 2.1.10(typescript@5.7.2) - mlly@1.7.3: + mlly@1.7.4: dependencies: acorn: 8.14.0 - pathe: 1.1.2 - pkg-types: 1.2.1 + pathe: 2.0.1 + pkg-types: 1.3.0 ufo: 1.5.4 mri@1.2.0: {} @@ -13181,7 +13497,7 @@ snapshots: magic-string: 0.30.17 magicast: 0.3.5 mime: 4.0.4 - mlly: 1.7.3 + mlly: 1.7.4 node-fetch-native: 1.6.4 ofetch: 1.4.1 ohash: 1.1.4 @@ -13326,10 +13642,10 @@ snapshots: - vite - vue - nuxt-lego@0.0.14(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)): + nuxt-lego@0.0.14(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)): dependencies: '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.2)) - '@vueuse/nuxt': 10.11.1(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) + '@vueuse/nuxt': 10.11.1(magicast@0.3.5)(nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) nuxt-icon: 0.4.2(magicast@0.3.5)(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) transitivePeerDependencies: - '@vue/composition-api' @@ -13425,7 +13741,7 @@ snapshots: escape-string-regexp: 5.0.0 fast-glob: 3.3.2 image-size: 1.1.1 - mlly: 1.7.3 + mlly: 1.7.4 nuxt-site-config: 3.0.4(magicast@0.3.5)(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)) pathe: 1.1.2 scule: 1.3.0 @@ -13469,14 +13785,14 @@ snapshots: - vite - vue - nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.17.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1): + nuxt@3.15.1(@parcel/watcher@2.4.1)(@types/node@22.10.1)(db0@0.2.1)(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2))(yaml@2.6.1): dependencies: '@nuxt/devalue': 2.0.2 '@nuxt/devtools': 1.7.0(rollup@4.29.1)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)) '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.29.1) '@nuxt/schema': 3.15.1 '@nuxt/telemetry': 2.6.2(magicast@0.3.5)(rollup@4.29.1) - '@nuxt/vite-builder': 3.15.1(@types/node@22.10.1)(eslint@9.17.0(jiti@2.4.2))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2))(yaml@2.6.1) + '@nuxt/vite-builder': 3.15.1(@types/node@22.10.1)(eslint@9.18.0(jiti@2.4.2))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.29.1)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2))(yaml@2.6.1) '@unhead/dom': link:packages/dom '@unhead/shared': link:packages/shared '@unhead/ssr': link:packages/ssr @@ -13504,7 +13820,7 @@ snapshots: klona: 2.0.6 knitwork: 1.2.0 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 nanotar: 0.1.1 nitropack: 2.10.4(typescript@5.7.2) nuxi: 3.17.2 @@ -13591,7 +13907,7 @@ snapshots: - xml2js - yaml - nwsapi@2.2.13: {} + nwsapi@2.2.16: {} nypm@0.3.12: dependencies: @@ -13712,8 +14028,6 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.6: {} - package-manager-detector@0.2.8: {} packrup@0.1.2: {} @@ -13813,7 +14127,7 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@0.1.10: {} + path-to-regexp@0.1.12: {} path-to-regexp@6.3.0: {} @@ -13823,6 +14137,8 @@ snapshots: pathe@2.0.0: {} + pathe@2.0.1: {} + pathval@2.0.0: {} perfect-debounce@1.0.0: {} @@ -13835,32 +14151,34 @@ snapshots: pify@2.3.0: {} - pinia@2.2.6(typescript@5.7.2)(vue@3.5.13(typescript@5.7.2)): + pinia@2.3.0(typescript@5.7.2)(vue@3.5.13(typescript@5.7.2)): dependencies: '@vue/devtools-api': 6.6.4 vue: 3.5.13(typescript@5.7.2) vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) optionalDependencies: typescript: 5.7.2 + transitivePeerDependencies: + - '@vue/composition-api' pirates@4.0.6: {} pkg-types@1.2.0: dependencies: confbox: 0.1.7 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-types@1.2.1: dependencies: confbox: 0.1.8 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-types@1.3.0: dependencies: confbox: 0.1.8 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 playwright-core@1.49.0: {} @@ -14173,33 +14491,30 @@ snapshots: strip-json-comments: 2.0.1 optional: true - react-dom@18.3.1(react@18.3.1): + react-dom@19.0.0(react@19.0.0): dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 + react: 19.0.0 + scheduler: 0.25.0 react-refresh@0.14.2: {} - react-router-dom@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-router: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-router: 7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router@7.1.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@types/cookie': 0.6.0 cookie: 1.0.2 - react: 18.3.1 + react: 19.0.0 set-cookie-parser: 2.7.1 turbo-stream: 2.4.0 optionalDependencies: - react-dom: 18.3.1(react@18.3.1) + react-dom: 19.0.0(react@19.0.0) - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react@19.0.0: {} read-cache@1.0.0: dependencies: @@ -14433,10 +14748,10 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-dts@6.1.1(rollup@4.29.1)(typescript@5.7.2): + rollup-plugin-dts@6.1.1(rollup@4.30.1)(typescript@5.7.2): dependencies: magic-string: 0.30.17 - rollup: 4.29.1 + rollup: 4.30.1 typescript: 5.7.2 optionalDependencies: '@babel/code-frame': 7.26.2 @@ -14484,7 +14799,32 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.29.1 fsevents: 2.3.3 - rrweb-cssom@0.7.1: {} + rollup@4.30.1: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.30.1 + '@rollup/rollup-android-arm64': 4.30.1 + '@rollup/rollup-darwin-arm64': 4.30.1 + '@rollup/rollup-darwin-x64': 4.30.1 + '@rollup/rollup-freebsd-arm64': 4.30.1 + '@rollup/rollup-freebsd-x64': 4.30.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 + '@rollup/rollup-linux-arm-musleabihf': 4.30.1 + '@rollup/rollup-linux-arm64-gnu': 4.30.1 + '@rollup/rollup-linux-arm64-musl': 4.30.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 + '@rollup/rollup-linux-riscv64-gnu': 4.30.1 + '@rollup/rollup-linux-s390x-gnu': 4.30.1 + '@rollup/rollup-linux-x64-gnu': 4.30.1 + '@rollup/rollup-linux-x64-musl': 4.30.1 + '@rollup/rollup-win32-arm64-msvc': 4.30.1 + '@rollup/rollup-win32-ia32-msvc': 4.30.1 + '@rollup/rollup-win32-x64-msvc': 4.30.1 + fsevents: 2.3.3 + + rrweb-cssom@0.8.0: {} run-applescript@7.0.0: {} @@ -14520,9 +14860,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 + scheduler@0.25.0: {} schema-utils@3.3.0: dependencies: @@ -15015,6 +15353,8 @@ snapshots: tinyexec@0.3.1: {} + tinyexec@0.3.2: {} + tinyglobby@0.2.10: dependencies: fdir: 6.4.2(picomatch@4.0.2) @@ -15064,6 +15404,10 @@ snapshots: dependencies: typescript: 5.7.2 + ts-api-utils@2.0.0(typescript@5.7.2): + dependencies: + typescript: 5.7.2 + ts-interface-checker@0.1.13: {} tslib@2.7.0: {} @@ -15111,14 +15455,14 @@ snapshots: ultrahtml@1.5.3: {} - unbuild@3.2.0(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2)): + unbuild@3.3.0(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.29.1) - '@rollup/plugin-commonjs': 28.0.2(rollup@4.29.1) - '@rollup/plugin-json': 6.1.0(rollup@4.29.1) - '@rollup/plugin-node-resolve': 16.0.0(rollup@4.29.1) - '@rollup/plugin-replace': 6.0.2(rollup@4.29.1) - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/plugin-alias': 5.1.1(rollup@4.30.1) + '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.1) + '@rollup/plugin-json': 6.1.0(rollup@4.30.1) + '@rollup/plugin-node-resolve': 16.0.0(rollup@4.30.1) + '@rollup/plugin-replace': 6.0.2(rollup@4.30.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) citty: 0.1.6 consola: 3.3.3 defu: 6.1.4 @@ -15127,15 +15471,14 @@ snapshots: jiti: 2.4.2 magic-string: 0.30.17 mkdist: 2.2.0(typescript@5.7.2)(vue-tsc@2.1.10(typescript@5.7.2))(vue@3.5.13(typescript@5.7.2)) - mlly: 1.7.3 - pathe: 1.1.2 + mlly: 1.7.4 + pathe: 2.0.1 pkg-types: 1.3.0 pretty-bytes: 6.1.1 - rollup: 4.29.1 - rollup-plugin-dts: 6.1.1(rollup@4.29.1)(typescript@5.7.2) + rollup: 4.30.1 + rollup-plugin-dts: 6.1.1(rollup@4.30.1)(typescript@5.7.2) scule: 1.3.0 tinyglobby: 0.2.10 - ufo: 1.5.4 untyped: 1.5.2 optionalDependencies: typescript: 5.7.2 @@ -15216,44 +15559,44 @@ snapshots: fast-glob: 3.3.2 local-pkg: 0.5.1 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.3.0 scule: 1.3.0 strip-literal: 2.1.0 unplugin: 1.16.0 transitivePeerDependencies: - rollup - unimport@3.14.3(rollup@4.29.1): + unimport@3.14.5(rollup@4.29.1): dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.29.1) acorn: 8.14.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 + fast-glob: 3.3.2 local-pkg: 0.5.1 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 picomatch: 4.0.2 pkg-types: 1.2.1 scule: 1.3.0 strip-literal: 2.1.1 - tinyglobby: 0.2.10 unplugin: 1.16.0 transitivePeerDependencies: - rollup - unimport@3.14.5(rollup@4.29.1): + unimport@3.14.5(rollup@4.30.1): dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) acorn: 8.14.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.1 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 picomatch: 4.0.2 pkg-types: 1.2.1 @@ -15326,76 +15669,55 @@ snapshots: unpipe@1.0.0: {} - unplugin-ast@0.13.1(rollup@4.29.1): + unplugin-ast@0.13.1(rollup@4.30.1): dependencies: '@antfu/utils': 0.7.10 '@babel/generator': 7.26.3 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) ast-kit: 1.3.2 magic-string-ast: 0.6.3 unplugin: 2.1.2 transitivePeerDependencies: - rollup - unplugin-auto-import@0.18.5(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.29.1))(@vueuse/core@12.3.0(typescript@5.7.2))(rollup@4.29.1): + unplugin-auto-import@19.0.0(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.30.1))(@vueuse/core@12.4.0(typescript@5.7.2))(rollup@4.30.1): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.3(rollup@4.29.1) - fast-glob: 3.3.2 - local-pkg: 0.5.1 - magic-string: 0.30.14 - minimatch: 9.0.5 - unimport: 3.14.3(rollup@4.29.1) - unplugin: 1.16.0 - optionalDependencies: - '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.29.1) - '@vueuse/core': 12.3.0(typescript@5.7.2) - transitivePeerDependencies: - - rollup - - unplugin-vue-components@0.27.5(@babel/parser@7.26.3)(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)): - dependencies: - '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) - chokidar: 3.6.0 - debug: 4.4.0(supports-color@9.4.0) - fast-glob: 3.3.3 + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) local-pkg: 0.5.1 magic-string: 0.30.17 - minimatch: 9.0.5 - mlly: 1.7.3 - unplugin: 1.16.0 - vue: 3.5.13(typescript@5.7.2) + picomatch: 4.0.2 + unimport: 3.14.5(rollup@4.30.1) + unplugin: 2.1.2 optionalDependencies: - '@babel/parser': 7.26.3 - '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.30.1) + '@vueuse/core': 12.4.0(typescript@5.7.2) transitivePeerDependencies: - rollup - - supports-color - unplugin-vue-components@28.0.0(@babel/parser@7.26.3)(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)): + unplugin-vue-components@28.0.0(@babel/parser@7.26.3)(@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.30.1))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.2)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) chokidar: 3.6.0 debug: 4.4.0(supports-color@9.4.0) fast-glob: 3.3.3 local-pkg: 0.5.1 magic-string: 0.30.17 minimatch: 9.0.5 - mlly: 1.7.3 + mlly: 1.7.4 unplugin: 2.1.2 vue: 3.5.13(typescript@5.7.2) optionalDependencies: '@babel/parser': 7.26.3 - '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.30.1) transitivePeerDependencies: - rollup - supports-color unplugin-vue-router@0.10.9(rollup@4.29.1)(vue-router@4.5.0(vue@3.5.13(typescript@5.7.2)))(vue@3.5.13(typescript@5.7.2)): dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@rollup/pluginutils': 5.1.4(rollup@4.29.1) '@vue-macros/common': 1.15.1(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) ast-walker-scope: 0.6.2 @@ -15404,7 +15726,7 @@ snapshots: json5: 2.2.3 local-pkg: 0.5.1 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 scule: 1.3.0 unplugin: 2.0.0-beta.1 @@ -15488,7 +15810,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/standalone': 7.26.4 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 citty: 0.1.6 defu: 6.1.4 jiti: 2.4.2 @@ -15501,7 +15823,7 @@ snapshots: dependencies: knitwork: 1.2.0 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-types: 1.2.1 unplugin: 1.16.0 @@ -15589,7 +15911,7 @@ snapshots: - tsx - yaml - vite-plugin-checker@0.8.0(eslint@9.17.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2)): + vite-plugin-checker@0.8.0(eslint@9.18.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1))(vue-tsc@2.1.10(typescript@5.7.2)): dependencies: '@babel/code-frame': 7.26.2 ansi-escapes: 4.3.2 @@ -15607,7 +15929,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) optionator: 0.9.4 typescript: 5.7.2 vue-tsc: 2.1.10(typescript@5.7.2) @@ -15658,7 +15980,7 @@ snapshots: tsx: 4.19.1 yaml: 2.6.1 - vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1): + vitest@2.1.8(@types/node@22.10.1)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1): dependencies: '@vitest/expect': 2.1.8 '@vitest/mocker': 2.1.8(vite@6.0.7(@types/node@22.10.1)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.1)(yaml@2.6.1)) @@ -15682,7 +16004,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.1 - jsdom: 25.0.1 + jsdom: 26.0.0 transitivePeerDependencies: - jiti - less @@ -15730,10 +16052,10 @@ snapshots: vue-devtools-stub@0.1.0: {} - vue-eslint-parser@9.4.3(eslint@9.17.0(jiti@2.4.2)): + vue-eslint-parser@9.4.3(eslint@9.18.0(jiti@2.4.2)): dependencies: debug: 4.4.0(supports-color@9.4.0) - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.18.0(jiti@2.4.2) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -15743,11 +16065,6 @@ snapshots: transitivePeerDependencies: - supports-color - vue-router@4.4.5(vue@3.5.13(typescript@5.7.2)): - dependencies: - '@vue/devtools-api': 6.6.4 - vue: 3.5.13(typescript@5.7.2) - vue-router@4.5.0(vue@3.5.13(typescript@5.7.2)): dependencies: '@vue/devtools-api': 6.6.4 @@ -15831,7 +16148,7 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-url@14.0.0: + whatwg-url@14.1.0: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 diff --git a/test/unhead/plugins/infer-seo-meta.test.ts b/test/unhead/plugins/infer-seo-meta.test.ts index 5331420d..a8475d95 100644 --- a/test/unhead/plugins/infer-seo-meta.test.ts +++ b/test/unhead/plugins/infer-seo-meta.test.ts @@ -1,5 +1,5 @@ import { renderSSRHead } from '@unhead/ssr' -import { InferSeoMetaPlugin } from 'unhead/optionalPlugins' +import { InferSeoMetaPlugin } from 'unhead/plugins' import { createHead } from 'unhead/server' import { describe, it } from 'vitest' diff --git a/test/unhead/promises.test.ts b/test/unhead/promises.test.ts index 89b67061..a95e19a2 100644 --- a/test/unhead/promises.test.ts +++ b/test/unhead/promises.test.ts @@ -1,5 +1,5 @@ import { describe, it } from 'vitest' -import { PromisesPlugin } from '../../packages/unhead/src/optionalPlugins/promises' +import { PromisesPlugin } from '../../packages/unhead/src/plugins/promises' import { createHeadWithContext } from '../util' describe('promises', () => { diff --git a/test/unhead/ssr/deduping.test.ts b/test/unhead/ssr/deduping.test.ts index d1f7d4e5..470e5d96 100644 --- a/test/unhead/ssr/deduping.test.ts +++ b/test/unhead/ssr/deduping.test.ts @@ -1,6 +1,6 @@ import { renderSSRHead } from '@unhead/ssr' import { useHead } from 'unhead' -import { DeprecationsPlugin } from 'unhead/optionalPlugins' +import { DeprecationsPlugin } from 'unhead/plugins' import { describe, it } from 'vitest' import { createHeadWithContext } from '../../util' diff --git a/test/unhead/ssr/tagPosition.test.ts b/test/unhead/ssr/tagPosition.test.ts index e4a20275..0bbd6fcf 100644 --- a/test/unhead/ssr/tagPosition.test.ts +++ b/test/unhead/ssr/tagPosition.test.ts @@ -1,5 +1,5 @@ import { renderSSRHead } from '@unhead/ssr' -import { DeprecationsPlugin } from 'unhead/optionalPlugins' +import { DeprecationsPlugin } from 'unhead/plugins' import { createHeadWithContext } from '../../util' describe('tagPosition', () => { diff --git a/tsconfig.json b/tsconfig.json index e8d111e2..5e60b21f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,13 +9,15 @@ "moduleResolution": "node", "paths": { "unhead": ["packages/unhead/src"], + "unhead/*": ["packages/unhead/src/*"], "@unhead/dom": ["packages/dom/src"], "@unhead/ssr": ["packages/ssr/src"], "@unhead/schema-org": ["packages/schema-org/src"], "@unhead/vue": ["packages/vue/src"], + "@unhead/scripts": ["packages/scripts/src"], + "@unhead/scripts/*": ["packages/scripts/*"], "@unhead/addons": ["packages/addons/src"], "@unhead/addons/*": ["packages/addons/*"], - "unhead/*": ["packages/unhead/*"], "@unhead/schema": ["packages/schema/src"], "@unhead/schema/*": ["packages/schema/*"], "@unhead/shared": ["packages/shared/src"],