diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 7de0a3890f..780ffed438 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -36,7 +36,7 @@ body: validations: required: true - type: textarea - id: additonal + id: additional attributes: label: Additional context description: If applicable, add any other context about the problem here diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09ced281ce..ec9d50d76a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -85,7 +85,7 @@ jobs: run: pnpm install - name: Initialize CodeQL - uses: github/codeql-action/init@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 + uses: github/codeql-action/init@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 with: languages: javascript queries: +security-and-quality @@ -97,7 +97,7 @@ jobs: path: packages - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 + uses: github/codeql-action/analyze@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 with: category: "/language:javascript" diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 39259a98f0..45790c40b8 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -68,7 +68,7 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f0f3afee809481da311ca3a6ff1ff51d81dbeb24 # v3.26.4 + uses: github/codeql-action/upload-sarif@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 if: github.repository == 'nuxt/nuxt' && success() with: sarif_file: results.sarif diff --git a/docs/1.getting-started/8.error-handling.md b/docs/1.getting-started/8.error-handling.md index 9f5624659b..e72484dcaf 100644 --- a/docs/1.getting-started/8.error-handling.md +++ b/docs/1.getting-started/8.error-handling.md @@ -55,7 +55,7 @@ This includes: You cannot currently define a server-side handler for these errors, but can render an error page, see the [Render an Error Page](#error-page) section. -## Errors with JS chunks +## Errors with JS Chunks You might encounter chunk loading errors due to a network connectivity failure or a new deployment (which invalidates your old, hashed JS chunk URLs). Nuxt provides built-in support for handling chunk loading errors by performing a hard reload when a chunk fails to load during route navigation. diff --git a/docs/2.guide/1.concepts/4.server-engine.md b/docs/2.guide/1.concepts/4.server-engine.md index 8d6b111caa..f721299477 100644 --- a/docs/2.guide/1.concepts/4.server-engine.md +++ b/docs/2.guide/1.concepts/4.server-engine.md @@ -7,7 +7,7 @@ While building Nuxt 3, we created a new server engine: [Nitro](https://nitro.unj It is shipped with many features: -- Cross-platform support for Node.js, Browsers, service-workers and more. +- Cross-platform support for Node.js, browsers, service workers and more. - Serverless support out-of-the-box. - API routes support. - Automatic code-splitting and async-loaded chunks. diff --git a/docs/2.guide/3.going-further/1.experimental-features.md b/docs/2.guide/3.going-further/1.experimental-features.md index fd9c065baf..136cadf805 100644 --- a/docs/2.guide/3.going-further/1.experimental-features.md +++ b/docs/2.guide/3.going-further/1.experimental-features.md @@ -359,3 +359,34 @@ export default defineNuxtConfig({ ::read-more{icon="i-simple-icons-mdnwebdocs" color="gray" to="https://developer.mozilla.org/en-US/docs/Web/API/CookieStore" target="_blank"} Read more about the **CookieStore**. :: + +## buildCache + +Caches Nuxt build artifacts based on a hash of the configuration and source files. + +```ts twoslash [nuxt.config.ts] +export default defineNuxtConfig({ + experimental: { + buildCache: true + } +}) +``` + +When enabled, changes to the following files will trigger a full rebuild: + +```bash [Directory structure] +.nuxtrc +.npmrc +package.json +package-lock.json +yarn.lock +pnpm-lock.yaml +tsconfig.json +bun.lockb +``` + +In addition, any changes to files within `srcDir` will trigger a rebuild of the Vue client/server bundle. Nitro will always be rebuilt (though work is in progress to allow Nitro to announce its cacheable artifacts and their hashes). + +::note +A maximum of 10 cache tarballs are kept. +:: diff --git a/docs/3.api/1.components/10.nuxt-picture.md b/docs/3.api/1.components/10.nuxt-picture.md index 85bdbb97a9..65f30ec043 100644 --- a/docs/3.api/1.components/10.nuxt-picture.md +++ b/docs/3.api/1.components/10.nuxt-picture.md @@ -4,7 +4,7 @@ description: "Nuxt provides a component to handle automatic image links: - label: Source icon: i-simple-icons-github - to: https://github.com/nuxt/image/blob/main/src/runtime/components/nuxt-picture.ts + to: https://github.com/nuxt/image/blob/main/src/runtime/components/NuxtPicture.vue size: xs --- diff --git a/docs/3.api/1.components/9.nuxt-img.md b/docs/3.api/1.components/9.nuxt-img.md index 8585db81f3..4b96442463 100644 --- a/docs/3.api/1.components/9.nuxt-img.md +++ b/docs/3.api/1.components/9.nuxt-img.md @@ -4,7 +4,7 @@ description: "Nuxt provides a component to handle automatic image opti links: - label: Source icon: i-simple-icons-github - to: https://github.com/nuxt/image/blob/main/src/runtime/components/nuxt-img.ts + to: https://github.com/nuxt/image/blob/main/src/runtime/components/NuxtImg.vue size: xs --- diff --git a/docs/3.api/2.composables/use-route.md b/docs/3.api/2.composables/use-route.md index 853fecf83c..cbaabb176c 100644 --- a/docs/3.api/2.composables/use-route.md +++ b/docs/3.api/2.composables/use-route.md @@ -38,6 +38,7 @@ Apart from dynamic parameters and query parameters, `useRoute()` also provides t - `fullPath`: encoded URL associated with the current route that contains path, query and hash - `hash`: decoded hash section of the URL that starts with a # +- `query`: access route query parameters - `matched`: array of normalized matched routes with current route location - `meta`: custom data attached to the record - `name`: unique name for the route record diff --git a/docs/3.api/6.advanced/1.hooks.md b/docs/3.api/6.advanced/1.hooks.md index d2b039ae3d..894f104728 100644 --- a/docs/3.api/6.advanced/1.hooks.md +++ b/docs/3.api/6.advanced/1.hooks.md @@ -34,7 +34,7 @@ Hook | Arguments | Environment | Description ## Nuxt Hooks (build time) -Check the [schema source code](https://github.com/nuxt/nuxt/blob/main/packages/schema/src/types/hooks.ts#L53) for all available hooks. +Check the [schema source code](https://github.com/nuxt/nuxt/blob/main/packages/schema/src/types/hooks.ts#L83) for all available hooks. Hook | Arguments | Description -------------------------|----------------------------|------------- diff --git a/nuxt.config.ts b/nuxt.config.ts index 694788ebb0..54f547026e 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,16 +1,21 @@ // For pnpm typecheck:docs to generate correct types -import { addPluginTemplate } from 'nuxt/kit' +import { addPluginTemplate, addRouteMiddleware } from 'nuxt/kit' export default defineNuxtConfig({ typescript: { shim: process.env.DOCS_TYPECHECK === 'true' }, pages: process.env.DOCS_TYPECHECK === 'true', modules: [ function () { + if (!process.env.DOCS_TYPECHECK) { return } addPluginTemplate({ filename: 'plugins/my-plugin.mjs', getContents: () => 'export default defineNuxtPlugin({ name: \'my-plugin\' })', }) + addRouteMiddleware({ + name: 'auth', + path: '#build/auth.js', + }) }, ], }) diff --git a/package.json b/package.json index 64aca25da3..91756f0786 100644 --- a/package.json +++ b/package.json @@ -39,28 +39,28 @@ "@nuxt/ui-templates": "workspace:*", "@nuxt/vite-builder": "workspace:*", "@nuxt/webpack-builder": "workspace:*", - "@types/node": "20.16.1", + "@types/node": "20.16.2", "c12": "2.0.0-beta.1", "h3": "npm:h3-nightly@2.0.0-1718872656.6765a6e", "jiti": "2.0.0-beta.3", "magic-string": "^0.30.11", "nitro": "npm:nitro-nightly@3.0.0-beta-28665895.e727afda", "nuxt": "workspace:*", - "rollup": "^4.21.0", + "rollup": "^4.21.1", "typescript": "5.5.4", "unbuild": "3.0.0-rc.7", "vite": "5.4.2", "vue": "3.4.38" }, "devDependencies": { - "@eslint/js": "9.9.0", - "@nuxt/eslint-config": "0.5.2", + "@eslint/js": "9.9.1", + "@nuxt/eslint-config": "0.5.3", "@nuxt/kit": "workspace:*", "@nuxt/test-utils": "3.14.1", "@nuxt/webpack-builder": "workspace:*", "@testing-library/vue": "8.1.0", "@types/eslint__js": "8.42.3", - "@types/node": "20.16.1", + "@types/node": "20.16.2", "@types/semver": "7.5.8", "@unhead/schema": "1.10.0", "@unhead/vue": "1.10.0", @@ -74,18 +74,16 @@ "cssnano": "7.0.5", "destr": "2.0.3", "devalue": "5.0.0", - "eslint": "9.9.0", + "eslint": "9.9.1", "eslint-plugin-no-only-tests": "3.3.0", - "eslint-plugin-perfectionist": "3.2.0", + "eslint-plugin-perfectionist": "3.3.0", "eslint-typegen": "0.3.1", - "execa": "9.3.1", - "globby": "14.0.2", "h3": "npm:h3-nightly@2.0.0-1718872656.6765a6e", "happy-dom": "15.0.0", "jiti": "2.0.0-beta.3", "markdownlint-cli": "0.41.0", "nitro": "npm:nitro-nightly@3.0.0-beta-28665895.e727afda", - "nuxi": "3.12.0", + "nuxi": "3.13.1", "nuxt": "workspace:*", "nuxt-content-twoslash": "0.1.1", "ofetch": "1.3.4", @@ -94,6 +92,8 @@ "rimraf": "6.0.1", "semver": "7.6.3", "std-env": "3.7.0", + "tinyexec": "0.3.0", + "tinyglobby": "0.2.5", "typescript": "5.5.4", "ufo": "1.5.4", "vitest": "2.0.5", @@ -102,7 +102,7 @@ "vue-router": "4.4.3", "vue-tsc": "2.0.29" }, - "packageManager": "pnpm@9.8.0", + "packageManager": "pnpm@9.9.0", "engines": { "node": "^16.10.0 || >=18.0.0" }, diff --git a/packages/kit/package.json b/packages/kit/package.json index 8c26e094d1..7feb0b7887 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -44,7 +44,7 @@ "semver": "^7.6.3", "ufo": "^1.5.4", "unctx": "^2.3.1", - "unimport": "^3.11.0", + "unimport": "^3.11.1", "untyped": "^1.4.2" }, "devDependencies": { diff --git a/packages/kit/src/loader/config.ts b/packages/kit/src/loader/config.ts index 444bf8c46c..80139fb015 100644 --- a/packages/kit/src/loader/config.ts +++ b/packages/kit/src/loader/config.ts @@ -1,3 +1,4 @@ +import { existsSync } from 'node:fs' import type { JSValue } from 'untyped' import { applyDefaults } from 'untyped' import type { ConfigLayer, ConfigLayerMeta, LoadConfigOptions } from 'c12' @@ -6,6 +7,7 @@ import type { NuxtConfig, NuxtOptions } from '@nuxt/schema' import { NuxtConfigSchema } from '@nuxt/schema' import { globby } from 'globby' import defu from 'defu' +import { join } from 'pathe' export interface LoadNuxtConfigOptions extends Omit, 'overrides'> { // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type @@ -47,6 +49,11 @@ export async function loadNuxtConfig (opts: LoadNuxtConfigOptions): Promise[] = [] const processedLayers = new Set() for (const layer of layers) { diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index dcd7753437..0f0feff8d5 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -60,7 +60,7 @@ }, "dependencies": { "@nuxt/devalue": "^2.0.2", - "@nuxt/devtools": "^1.3.14", + "@nuxt/devtools": "^1.4.1", "@nuxt/kit": "workspace:*", "@nuxt/schema": "workspace:*", "@nuxt/telemetry": "^2.5.4", @@ -75,6 +75,7 @@ "compatx": "^0.1.8", "consola": "^3.2.3", "cookie-es": "^1.2.2", + "impound": "^0.1.0", "defu": "^6.1.4", "destr": "^2.0.3", "devalue": "^5.0.0", @@ -91,9 +92,10 @@ "knitwork": "^1.1.0", "magic-string": "^0.30.11", "mlly": "^1.7.1", + "nanotar": "^0.1.1", "nitro": "npm:nitro-nightly@3.0.0-beta-28665895.e727afda", - "nuxi": "^3.12.0", - "nypm": "^0.3.9", + "nuxi": "^3.13.1", + "nypm": "^0.3.11", "ofetch": "^1.3.4", "ohash": "^1.1.3", "pathe": "^1.1.2", @@ -104,12 +106,13 @@ "semver": "^7.6.3", "std-env": "^3.7.0", "strip-literal": "^2.1.0", + "tinyglobby": "0.2.5", "ufo": "^1.5.4", "ultrahtml": "^1.5.3", "uncrypto": "^0.1.3", "unctx": "^2.3.1", "unenv": "^1.10.0", - "unimport": "^3.11.0", + "unimport": "^3.11.1", "unplugin": "^1.12.2", "unplugin-vue-router": "^0.10.7", "unstorage": "^1.10.2", diff --git a/packages/nuxt/src/app/components/nuxt-link.ts b/packages/nuxt/src/app/components/nuxt-link.ts index d2b9ad0d25..f38ddbd777 100644 --- a/packages/nuxt/src/app/components/nuxt-link.ts +++ b/packages/nuxt/src/app/components/nuxt-link.ts @@ -381,13 +381,15 @@ export function defineNuxtLink (options: NuxtLinkOptions) { replace: props.replace, ariaCurrentValue: props.ariaCurrentValue, custom: props.custom, - onPointerenter: shouldPrefetch('interaction') ? prefetch.bind(null, undefined) : undefined, - onFocus: shouldPrefetch('interaction') ? prefetch.bind(null, undefined) : undefined, } // `custom` API cannot support fallthrough attributes as the slot // may render fragment or text root nodes (#14897, #19375) if (!props.custom) { + if (shouldPrefetch('interaction')) { + routerLinkProps.onPointerenter = prefetch.bind(null, undefined) + routerLinkProps.onFocus = prefetch.bind(null, undefined) + } if (prefetched.value) { routerLinkProps.class = props.prefetchedClass || options.prefetchedClass } @@ -427,6 +429,7 @@ export function defineNuxtLink (options: NuxtLinkOptions) { return slots.default({ href: href.value, navigate, + prefetch, get route () { if (!href.value) { return undefined } diff --git a/packages/nuxt/src/core/builder.ts b/packages/nuxt/src/core/builder.ts index 92bd04270d..b414cbf081 100644 --- a/packages/nuxt/src/core/builder.ts +++ b/packages/nuxt/src/core/builder.ts @@ -8,6 +8,7 @@ import type { Nuxt, NuxtBuilder } from 'nuxt/schema' import { generateApp as _generateApp, createApp } from './app' import { checkForExternalConfigurationFiles } from './external-config-files' +import { cleanupCaches, getVueHash } from './cache' export async function build (nuxt: Nuxt) { const app = createApp(nuxt) @@ -40,16 +41,32 @@ export async function build (nuxt: Nuxt) { }) } - await nuxt.callHook('build:before') - if (!nuxt.options._prepare) { - await Promise.all([checkForExternalConfigurationFiles(), bundle(nuxt)]) - await nuxt.callHook('build:done') - - if (!nuxt.options.dev) { - await nuxt.callHook('close', nuxt) + if (!nuxt.options._prepare && !nuxt.options.dev && nuxt.options.experimental.buildCache) { + const { restoreCache, collectCache } = await getVueHash(nuxt) + if (await restoreCache()) { + await nuxt.callHook('build:done') + return await nuxt.callHook('close', nuxt) } - } else { + nuxt.hooks.hookOnce('nitro:build:before', () => collectCache()) + nuxt.hooks.hookOnce('close', () => cleanupCaches(nuxt)) + } + + await nuxt.callHook('build:before') + if (nuxt.options._prepare) { nuxt.hook('prepare:types', () => nuxt.close()) + return + } + + if (nuxt.options.dev) { + checkForExternalConfigurationFiles() + } + + await bundle(nuxt) + + await nuxt.callHook('build:done') + + if (!nuxt.options.dev) { + await nuxt.callHook('close', nuxt) } } diff --git a/packages/nuxt/src/core/cache.ts b/packages/nuxt/src/core/cache.ts new file mode 100644 index 0000000000..748d57bc79 --- /dev/null +++ b/packages/nuxt/src/core/cache.ts @@ -0,0 +1,275 @@ +import { mkdir, open, readFile, stat, unlink, writeFile } from 'node:fs/promises' +import type { FileHandle } from 'node:fs/promises' +import { resolve } from 'node:path' +import { existsSync } from 'node:fs' +import { isIgnored } from '@nuxt/kit' +import type { Nuxt, NuxtConfig, NuxtConfigLayer } from '@nuxt/schema' +import { hash, murmurHash, objectHash } from 'ohash' +import { glob } from 'tinyglobby' +import _consola, { consola } from 'consola' +import { dirname, join, relative } from 'pathe' +import { createTar, parseTar } from 'nanotar' +import type { TarFileInput } from 'nanotar' + +export async function getVueHash (nuxt: Nuxt) { + const id = 'vue' + + const { hash } = await getHashes(nuxt, { + id, + cwd: layer => layer.config?.srcDir, + patterns: layer => [ + join(relative(layer.cwd, layer.config.srcDir), '**'), + `!${relative(layer.cwd, layer.config.serverDir || join(layer.cwd, 'server'))}/**`, + `!${relative(layer.cwd, resolve(layer.config.srcDir || layer.cwd, layer.config.dir?.public || 'public'))}/**`, + `!${relative(layer.cwd, resolve(layer.config.srcDir || layer.cwd, layer.config.dir?.static || 'public'))}/**`, + '!node_modules/**', + '!nuxt.config.*', + ], + configOverrides: { + buildId: undefined, + serverDir: undefined, + nitro: undefined, + devServer: undefined, + runtimeConfig: undefined, + logLevel: undefined, + devServerHandlers: undefined, + generate: undefined, + devtools: undefined, + }, + }) + + const cacheFile = join(nuxt.options.workspaceDir, 'node_modules/.cache/nuxt/builds', id, hash + '.tar') + + return { + hash, + async collectCache () { + const start = Date.now() + await writeCache(nuxt.options.buildDir, nuxt.options.buildDir, cacheFile) + const elapsed = Date.now() - start + consola.success(`Cached Vue client and server builds in \`${elapsed}ms\`.`) + }, + async restoreCache () { + const start = Date.now() + const res = await restoreCache(nuxt.options.buildDir, cacheFile) + const elapsed = Date.now() - start + if (res) { + consola.success(`Restored Vue client and server builds from cache in \`${elapsed}ms\`.`) + } + return res + }, + } +} + +export async function cleanupCaches (nuxt: Nuxt) { + const start = Date.now() + const caches = await glob(['*/*.tar'], { + cwd: join(nuxt.options.workspaceDir, 'node_modules/.cache/nuxt/builds'), + absolute: true, + }) + if (caches.length >= 10) { + const cachesWithMeta = await Promise.all(caches.map(async (cache) => { + return [cache, await stat(cache).then(r => r.mtime.getTime()).catch(() => 0)] as const + })) + cachesWithMeta.sort((a, b) => a[1] - b[1]) + for (const [cache] of cachesWithMeta.slice(0, cachesWithMeta.length - 10)) { + await unlink(cache) + } + const elapsed = Date.now() - start + consola.success(`Cleaned up old build caches in \`${elapsed}ms\`.`) + } +} + +// internal + +type HashSource = { name: string, data: any } +type Hashes = { hash: string, sources: HashSource[] } + +interface GetHashOptions { + id: string + cwd: (layer: NuxtConfigLayer) => string + patterns: (layer: NuxtConfigLayer) => string[] + configOverrides: Partial> +} + +async function getHashes (nuxt: Nuxt, options: GetHashOptions): Promise { + if ((nuxt as any)[`_${options.id}BuildHash`]) { + return (nuxt as any)[`_${options.id}BuildHash`] + } + + const start = Date.now() + const hashSources: HashSource[] = [] + + // Layers + let layerCtr = 0 + for (const layer of nuxt.options._layers) { + if (layer.cwd.includes('node_modules')) { continue } + + const layerName = `layer#${layerCtr++}` + hashSources.push({ + name: `${layerName}:config`, + data: objectHash({ + ...layer.config, + ...options.configOverrides || {}, + }), + }) + + const normalizeFiles = (files: Awaited>) => files.map(f => ({ + name: f.name, + size: (f.attrs as any)?.size, + data: murmurHash(f.data as any /* ArrayBuffer */), + })) + + const sourceFiles = await readFilesRecursive(options.cwd(layer), { + shouldIgnore: isIgnored, // TODO: Validate if works with absolute paths + cwd: nuxt.options.rootDir, + patterns: options.patterns(layer), + }) + + hashSources.push({ + name: `${layerName}:src`, + data: normalizeFiles(sourceFiles), + }) + + const rootFiles = await readFilesRecursive(layer.config?.rootDir || layer.cwd, { + shouldIgnore: isIgnored, // TODO: Validate if works with absolute paths + cwd: nuxt.options.rootDir, + patterns: [ + '.nuxtrc', + '.npmrc', + 'package.json', + 'package-lock.json', + 'yarn.lock', + 'pnpm-lock.yaml', + 'tsconfig.json', + 'bun.lockb', + ], + }) + + hashSources.push({ + name: `${layerName}:root`, + data: normalizeFiles(rootFiles), + }) + } + + const res = ((nuxt as any)[`_${options.id}BuildHash`] = { + hash: hash(hashSources), + sources: hashSources, + }) + + const elapsed = Date.now() - start + consola.debug(`Computed \`${options.id}\` build hash in \`${elapsed}ms\`.`) + + return res +} + +type FileWithMeta = TarFileInput & { + attrs: { + mtime: number + size: number + } +} + +interface ReadFilesRecursiveOptions { + shouldIgnore?: (name: string) => boolean + patterns: string[] + cwd: string +} + +async function readFilesRecursive (dir: string | string[], opts: ReadFilesRecursiveOptions): Promise { + if (Array.isArray(dir)) { + return (await Promise.all(dir.map(d => readFilesRecursive(d, opts)))).flat() + } + + const files = await glob(opts.patterns, { cwd: dir }) + + const fileEntries = await Promise.all(files.map(async (fileName) => { + if (!opts.shouldIgnore?.(fileName)) { + const file = await readFileWithMeta(dir, fileName) + if (!file) { return } + return { + ...file, + name: relative(opts.cwd, join(dir, file.name)), + } + } + })) + + return fileEntries.filter(Boolean) as FileWithMeta[] +} + +async function readFileWithMeta (dir: string, fileName: string, count = 0): Promise { + let fd: FileHandle | undefined = undefined + + try { + fd = await open(resolve(dir, fileName)) + const stats = await fd.stat() + + if (!stats?.isFile()) { return } + + const mtime = stats.mtime.getTime() + const data = await fd.readFile() + + // retry if file has changed during read + if ((await fd.stat()).mtime.getTime() !== mtime) { + if (count < 5) { + return readFileWithMeta(dir, fileName, count + 1) + } + console.warn(`Failed to read file \`${fileName}\` as it changed during read.`) + return + } + + return { + name: fileName, + data, + attrs: { + mtime, + size: stats.size, + }, + } + } catch (err) { + console.warn(`Failed to read file \`${fileName}\`:`, err) + } finally { + await fd?.close() + } +} + +async function restoreCache (cwd: string, cacheFile: string) { + if (!existsSync(cacheFile)) { + return false + } + + const files = parseTar(await readFile(cacheFile)) + for (const file of files) { + let fd: FileHandle | undefined = undefined + try { + const filePath = resolve(cwd, file.name) + await mkdir(dirname(filePath), { recursive: true }) + + fd = await open(filePath, 'w') + + const stats = await fd.stat().catch(() => null) + if (stats?.isFile() && stats.size) { + const lastModified = Number.parseInt(file.attrs?.mtime?.toString().padEnd(13, '0') || '0') + if (stats.mtime.getTime() >= lastModified) { + consola.debug(`Skipping \`${file.name}\` (up to date or newer than cache)`) + continue + } + } + await fd.writeFile(file.data!) + } catch (err) { + console.error(err) + } finally { + await fd?.close() + } + } + return true +} + +async function writeCache (cwd: string, sources: string | string[], cacheFile: string) { + const fileEntries = await readFilesRecursive(sources, { + patterns: ['**/*', '!analyze/**'], + cwd, + }) + const tarData = createTar(fileEntries) + await mkdir(dirname(cacheFile), { recursive: true }) + await writeFile(cacheFile, tarData) +} diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts index 8ca845dce2..5738e1fcda 100644 --- a/packages/nuxt/src/core/nitro.ts +++ b/packages/nuxt/src/core/nitro.ts @@ -11,12 +11,13 @@ import escapeRE from 'escape-string-regexp' import { defu } from 'defu' import { dynamicEventHandler } from 'h3' import { isWindows } from 'std-env' +import { ImpoundPlugin } from 'impound' import type { Nuxt, NuxtOptions } from 'nuxt/schema' import { version as nuxtVersion } from '../../package.json' import { distDir } from '../dirs' import { toArray } from '../utils' import { template as defaultSpaLoadingTemplate } from '../../../ui-templates/dist/templates/spa-loading-icon' -import { ImportProtectionPlugin, nuxtImportProtections } from './plugins/import-protection' +import { nuxtImportProtections } from './plugins/import-protection' const logLevelMapReverse = { silent: 0, @@ -366,9 +367,8 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { nitroConfig.rollupConfig!.plugins = await nitroConfig.rollupConfig!.plugins || [] nitroConfig.rollupConfig!.plugins = toArray(nitroConfig.rollupConfig!.plugins) nitroConfig.rollupConfig!.plugins!.push( - ImportProtectionPlugin.rollup({ - rootDir: nuxt.options.rootDir, - modulesDir: nuxt.options.modulesDir, + ImpoundPlugin.rollup({ + cwd: nuxt.options.rootDir, patterns: nuxtImportProtections(nuxt, { isNitro: true }), exclude: [/core[\\/]runtime[\\/]nitro[\\/]renderer/], }), @@ -525,26 +525,30 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { }) } + async function symlinkDist () { + if (nitro.options.static) { + const distDir = resolve(nuxt.options.rootDir, 'dist') + if (!existsSync(distDir)) { + await fsp.symlink(nitro.options.output.publicDir, distDir, 'junction').catch(() => {}) + } + } + } + // nuxt build/dev nuxt.hook('build:done', async () => { await nuxt.callHook('nitro:build:before', nitro) if (nuxt.options.dev) { - await build(nitro) - } else { - await prepare(nitro) - await prerender(nitro) - - logger.restoreAll() - await build(nitro) - logger.wrapAll() - - if (nitro.options.static) { - const distDir = resolve(nuxt.options.rootDir, 'dist') - if (!existsSync(distDir)) { - await fsp.symlink(nitro.options.output.publicDir, distDir, 'junction').catch(() => {}) - } - } + return build(nitro) } + + await prepare(nitro) + await prerender(nitro) + + logger.restoreAll() + await build(nitro) + logger.wrapAll() + + await symlinkDist() }) // nuxt dev diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index aa5beabf92..a29c4f8314 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -15,13 +15,14 @@ import { colorize } from 'consola/utils' import { updateConfig } from 'c12/update' import { formatDate, resolveCompatibilityDatesFromEnv } from 'compatx' import type { DateString } from 'compatx' - import escapeRE from 'escape-string-regexp' import { withTrailingSlash, withoutLeadingSlash } from 'ufo' - +import { ImpoundPlugin } from 'impound' +import type { ImpoundOptions } from 'impound' import defu from 'defu' import { gt, satisfies } from 'semver' import { hasTTY, isCI } from 'std-env' + import pagesModule from '../pages/module' import metaModule from '../head/module' import componentsModule from '../components/module' @@ -31,7 +32,7 @@ import { distDir, pkgDir } from '../dirs' import { version } from '../../package.json' import { scriptsStubsPreset } from '../imports/presets' import { resolveTypePath } from './utils/types' -import { ImportProtectionPlugin, nuxtImportProtections } from './plugins/import-protection' +import { nuxtImportProtections } from './plugins/import-protection' import type { UnctxTransformPluginOptions } from './plugins/unctx' import { UnctxTransformPlugin } from './plugins/unctx' import type { TreeShakeComposablesPluginOptions } from './plugins/tree-shake' @@ -245,15 +246,15 @@ async function initNuxt (nuxt: Nuxt) { addBuildPlugin(RemovePluginMetadataPlugin(nuxt)) // Add import protection - const config = { - rootDir: nuxt.options.rootDir, + const config: ImpoundOptions = { + cwd: nuxt.options.rootDir, // Exclude top-level resolutions by plugins exclude: [join(nuxt.options.srcDir, 'index.html')], patterns: nuxtImportProtections(nuxt), - modulesDir: nuxt.options.modulesDir, } - addVitePlugin(() => ImportProtectionPlugin.vite(config)) - addWebpackPlugin(() => ImportProtectionPlugin.webpack(config)) + addVitePlugin(() => Object.assign(ImpoundPlugin.vite({ ...config, error: false }), { name: 'nuxt:import-protection' }), { client: false }) + addVitePlugin(() => Object.assign(ImpoundPlugin.vite({ ...config, error: true }), { name: 'nuxt:import-protection' }), { server: false }) + addWebpackPlugin(() => ImpoundPlugin.webpack(config)) // add resolver for modules used in virtual files addVitePlugin(() => resolveDeepImportsPlugin(nuxt)) diff --git a/packages/nuxt/src/core/plugins/import-protection.ts b/packages/nuxt/src/core/plugins/import-protection.ts index 5421ce06e9..0e6e7fa999 100644 --- a/packages/nuxt/src/core/plugins/import-protection.ts +++ b/packages/nuxt/src/core/plugins/import-protection.ts @@ -1,7 +1,4 @@ -import { createUnplugin } from 'unplugin' -import { logger } from '@nuxt/kit' -import { resolvePath } from 'mlly' -import { isAbsolute, join, relative, resolve } from 'pathe' +import { relative, resolve } from 'pathe' import escapeRE from 'escape-string-regexp' import type { NuxtOptions } from 'nuxt/schema' @@ -53,41 +50,3 @@ export const nuxtImportProtections = (nuxt: { options: NuxtOptions }, options: { return patterns } - -export const ImportProtectionPlugin = createUnplugin(function (options: ImportProtectionOptions) { - const cache: Record> = {} - const importersToExclude = options?.exclude || [] - const proxy = resolvePath('unenv/runtime/mock/proxy', { url: options.modulesDir }) - return { - name: 'nuxt:import-protection', - enforce: 'pre', - resolveId (id, importer) { - if (!importer) { return } - if (id[0] === '.') { - id = join(importer, '..', id) - } - if (isAbsolute(id)) { - id = relative(options.rootDir, id) - } - if (importersToExclude.some(p => typeof p === 'string' ? importer === p : p.test(importer))) { return } - - const invalidImports = options.patterns.filter(([pattern]) => pattern instanceof RegExp ? pattern.test(id) : pattern === id) - let matched = false - for (const match of invalidImports) { - cache[id] = cache[id] || new Map() - const [pattern, warning] = match - // Skip if already warned - if (cache[id].has(pattern)) { continue } - - const relativeImporter = isAbsolute(importer) ? relative(options.rootDir, importer) : importer - logger.error(warning || 'Invalid import', `[importing \`${id}\` from \`${relativeImporter}\`]`) - cache[id].set(pattern, true) - matched = true - } - if (matched) { - return proxy - } - return null - }, - } -}) diff --git a/packages/nuxt/src/core/plugins/resolve-deep-imports.ts b/packages/nuxt/src/core/plugins/resolve-deep-imports.ts index b965141196..0eb0e205ec 100644 --- a/packages/nuxt/src/core/plugins/resolve-deep-imports.ts +++ b/packages/nuxt/src/core/plugins/resolve-deep-imports.ts @@ -15,11 +15,13 @@ export function resolveDeepImportsPlugin (nuxt: Nuxt): Plugin { if (!importer || isAbsolute(id) || (!isAbsolute(importer) && !importer.startsWith('virtual:')) || exclude.some(e => id.startsWith(e))) { return } - id = normalize(id) - id = resolveAlias(id, nuxt.options.alias) - const { dir } = parseNodeModulePath(importer) - return await this.resolve?.(id, dir || pkgDir, { skipSelf: true }) ?? await resolvePath(id, { - url: [dir || pkgDir, ...nuxt.options.modulesDir], + + const normalisedId = resolveAlias(normalize(id), nuxt.options.alias) + const normalisedImporter = importer.replace(/^\0?virtual:(?:nuxt:)?/, '') + const dir = parseNodeModulePath(normalisedImporter).dir || pkgDir + + return await this.resolve?.(normalisedId, dir, { skipSelf: true }) ?? await resolvePath(id, { + url: [dir, ...nuxt.options.modulesDir], // TODO: respect nitro runtime conditions conditions: options.ssr ? ['node', 'import', 'require'] : ['import', 'require'], }).catch(() => { diff --git a/packages/nuxt/src/core/templates.ts b/packages/nuxt/src/core/templates.ts index d766d87f02..b02f650485 100644 --- a/packages/nuxt/src/core/templates.ts +++ b/packages/nuxt/src/core/templates.ts @@ -120,11 +120,21 @@ export const pluginsDeclaration: NuxtTemplate = { const relativePath = relative(typesDir, pluginPath) const correspondingDeclaration = pluginPath.replace(/\.(?[cm])?jsx?$/, '.d.$ts') + // if `.d.ts` file exists alongside a `.js` plugin, or if `.d.mts` file exists alongside a `.mjs` plugin, we can use the entire path if (correspondingDeclaration !== pluginPath && exists(correspondingDeclaration)) { tsImports.push(relativePath) continue } + const incorrectDeclaration = pluginPath.replace(/\.[cm]jsx?$/, '.d.ts') + // if `.d.ts` file exists, but plugin is `.mjs`, add `.js` extension to the import + // to hotfix issue until ecosystem updates to `@nuxt/module-builder@>=0.8.0` + if (incorrectDeclaration !== pluginPath && exists(incorrectDeclaration)) { + tsImports.push(relativePath.replace(/\.[cm](jsx?)$/, '.$1')) + continue + } + + // if there is no declaration we only want to remove the extension if it's a TypeScript file if (exists(pluginPath)) { if (TS_RE.test(pluginPath)) { tsImports.push(relativePath.replace(EXTENSION_RE, '')) @@ -181,7 +191,7 @@ export const schemaTemplate: NuxtTemplate = { } } - const moduleOptionsInterface = (jsdocTags: boolean) => [ + const moduleOptionsInterface = (options: { addJSDocTags: boolean, unresolved: boolean }) => [ ...modules.flatMap(([configKey, importName, mod]) => { let link: string | undefined @@ -211,30 +221,32 @@ export const schemaTemplate: NuxtTemplate = { return [ ` /**`, ` * Configuration for \`${importName}\``, - ...jsdocTags && link - ? [ - ` * @see ${link}`, - ] - : [], + ...options.addJSDocTags && link ? [` * @see ${link}`] : [], ` */`, - ` [${configKey}]?: typeof ${genDynamicImport(importName, { wrapper: false })}.default extends NuxtModule ? Partial : Record`, + ` [${configKey}]${options.unresolved ? '?' : ''}: typeof ${genDynamicImport(importName, { wrapper: false })}.default extends NuxtModule ? ${options.unresolved ? 'Partial' : 'O'} : Record`, ] }), - modules.length > 0 ? ` modules?: (undefined | null | false | NuxtModule | string | [NuxtModule | string, Record] | ${modules.map(([configKey, importName, mod]) => `[${genString(mod.meta?.rawPath || importName)}, Exclude]`).join(' | ')})[],` : '', + modules.length > 0 && options.unresolved ? ` modules?: (undefined | null | false | NuxtModule | string | [NuxtModule | string, Record] | ${modules.map(([configKey, importName, mod]) => `[${genString(mod.meta?.rawPath || importName)}, Exclude]`).join(' | ')})[],` : '', ].filter(Boolean) return [ 'import { NuxtModule, RuntimeConfig } from \'@nuxt/schema\'', 'declare module \'@nuxt/schema\' {', + ' interface NuxtOptions {', + ...moduleOptionsInterface({ addJSDocTags: false, unresolved: false }), + ' }', ' interface NuxtConfig {', // TypeScript will duplicate the jsdoc tags if we augment it twice // So here we only generate tags for `nuxt/schema` - ...moduleOptionsInterface(false), + ...moduleOptionsInterface({ addJSDocTags: false, unresolved: true }), ' }', '}', 'declare module \'nuxt/schema\' {', + ' interface NuxtOptions {', + ...moduleOptionsInterface({ addJSDocTags: true, unresolved: false }), + ' }', ' interface NuxtConfig {', - ...moduleOptionsInterface(true), + ...moduleOptionsInterface({ addJSDocTags: true, unresolved: true }), ' }', generateTypes(await resolveSchema(privateRuntimeConfig as Record), { diff --git a/packages/nuxt/src/pages/module.ts b/packages/nuxt/src/pages/module.ts index 35a6f10af8..5e79e31746 100644 --- a/packages/nuxt/src/pages/module.ts +++ b/packages/nuxt/src/pages/module.ts @@ -515,7 +515,7 @@ export default defineNuxtModule({ const namedMiddleware = app.middleware.filter(mw => !mw.global) return [ 'import type { NavigationGuard } from \'vue-router\'', - `export type MiddlewareKey = ${namedMiddleware.map(mw => genString(mw.name)).join(' | ') || 'string'}`, + `export type MiddlewareKey = ${namedMiddleware.map(mw => genString(mw.name)).join(' | ') || 'never'}`, `declare module ${genString(composablesFile)} {`, ' interface PageMeta {', ' middleware?: MiddlewareKey | NavigationGuard | Array', diff --git a/packages/nuxt/test/import-protection.test.ts b/packages/nuxt/test/import-protection.test.ts index d0ac2a0ccb..110f47dfb1 100644 --- a/packages/nuxt/test/import-protection.test.ts +++ b/packages/nuxt/test/import-protection.test.ts @@ -1,7 +1,7 @@ -import { fileURLToPath } from 'node:url' import { normalize } from 'pathe' import { describe, expect, it } from 'vitest' -import { ImportProtectionPlugin, nuxtImportProtections } from '../src/core/plugins/import-protection' +import { ImpoundPlugin } from 'impound' +import { nuxtImportProtections } from '../src/core/plugins/import-protection' import type { NuxtOptions } from '../schema' const testsToTriggerOn = [ @@ -39,9 +39,8 @@ describe('import protection', () => { }) const transformWithImportProtection = (id: string, importer: string) => { - const plugin = ImportProtectionPlugin.rollup({ - rootDir: '/root', - modulesDir: [fileURLToPath(new URL('..', import.meta.url))], + const plugin = ImpoundPlugin.rollup({ + cwd: '/root', patterns: nuxtImportProtections({ options: { modules: ['some-nuxt-module'], @@ -51,5 +50,5 @@ const transformWithImportProtection = (id: string, importer: string) => { }), }) - return (plugin as any).resolveId(id, importer) + return (plugin as any).resolveId.call({ error: () => {} }, id, importer) } diff --git a/packages/schema/package.json b/packages/schema/package.json index 8a55f72f09..6c78d9e33a 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -73,7 +73,7 @@ "std-env": "^3.7.0", "ufo": "^1.5.4", "uncrypto": "^0.1.3", - "unimport": "^3.11.0", + "unimport": "^3.11.1", "untyped": "^1.4.2" }, "engines": { diff --git a/packages/schema/src/config/common.ts b/packages/schema/src/config/common.ts index baaca9b4da..8431fc6a0d 100644 --- a/packages/schema/src/config/common.ts +++ b/packages/schema/src/config/common.ts @@ -1,7 +1,7 @@ import { existsSync } from 'node:fs' import { readdir } from 'node:fs/promises' import { defineUntypedSchema } from 'untyped' -import { basename, relative, resolve } from 'pathe' +import { basename, join, relative, resolve } from 'pathe' import { isDebug, isDevelopment, isTest } from 'std-env' import { defu } from 'defu' import { findWorkspaceDir } from 'pkg-types' @@ -156,9 +156,12 @@ export default defineUntypedSchema({ */ serverDir: { $resolve: async (val: string | undefined, get): Promise => { - const isV4 = ((await get('future') as Record).compatibilityVersion === 4) - - return resolve(isV4 ? await get('rootDir') as string : await get('srcDir') as string, val ?? 'server') + if (val) { + const rootDir = await get('rootDir') as string + return resolve(rootDir, val) + } + const isV4 = (await get('future') as Record).compatibilityVersion === 4 + return join(isV4 ? await get('rootDir') as string : await get('srcDir') as string, 'server') }, }, @@ -175,28 +178,9 @@ export default defineUntypedSchema({ * ``` */ buildDir: { - $resolve: async (val: string | undefined, get): Promise => { + $resolve: async (val: string | undefined, get) => { const rootDir = await get('rootDir') as string - - if (val) { - return resolve(rootDir, val) - } - - const defaultBuildDir = resolve(rootDir, '.nuxt') - - const isDev = await get('dev') as boolean - if (isDev) { - return defaultBuildDir - } - - // TODO: nuxi CLI should ensure .nuxt dir exists - if (!existsSync(defaultBuildDir)) { - // This is to ensure that types continue to work for CI builds - return defaultBuildDir - } - - // TODO: handle build caching + using buildId in directory - return resolve(rootDir, 'node_modules/.cache/nuxt/builds', 'production') + return resolve(rootDir, val ?? '.nuxt') }, }, diff --git a/packages/schema/src/config/experimental.ts b/packages/schema/src/config/experimental.ts index 1e5aaf6b8a..8f0249cc3d 100644 --- a/packages/schema/src/config/experimental.ts +++ b/packages/schema/src/config/experimental.ts @@ -382,5 +382,12 @@ export default defineUntypedSchema({ * It can reduce INP when navigating on prerendered routes. */ navigationRepaint: true, + + /** + * Cache Nuxt/Nitro build artifacts based on a hash of the configuration and source files. + * + * This only works for source files within `srcDir` and `serverDir` for the Vue/Nitro parts of your app. + */ + buildCache: false, }, }) diff --git a/packages/schema/src/config/nitro.ts b/packages/schema/src/config/nitro.ts index 8da7ca4b7e..58339db045 100644 --- a/packages/schema/src/config/nitro.ts +++ b/packages/schema/src/config/nitro.ts @@ -48,7 +48,7 @@ export default defineUntypedSchema({ * Each handler accepts the following options: * * - handler: The path to the file defining the handler. - * - route: The route under which the handler is available. This follows the conventions of [radix3](https://github.com/unjs/radix3.) + * - route: The route under which the handler is available. This follows the conventions of [rou3](https://github.com/unjs/rou3.) * - method: The HTTP method of requests that should be handled. * - middleware: Specifies whether it is a middleware handler. * - lazy: Specifies whether to use lazy loading to import the handler. diff --git a/packages/ui-templates/lib/prerender.ts b/packages/ui-templates/lib/prerender.ts index 2d1c4660c5..053de48927 100644 --- a/packages/ui-templates/lib/prerender.ts +++ b/packages/ui-templates/lib/prerender.ts @@ -1,14 +1,11 @@ -import { join, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { promises as fsp } from 'node:fs' -import { globby } from 'globby' +import { glob } from 'tinyglobby' const templatesRoot = fileURLToPath(new URL('..', import.meta.url)) -const r = (...path: string[]) => resolve(join(templatesRoot, ...path)) - async function main () { - const templates = await globby(r('dist/templates/*.js')) + const templates = await glob(['dist/templates/*.js'], { cwd: templatesRoot }) for (const file of templates) { const { template } = await import(file) const updated = template({ diff --git a/packages/ui-templates/lib/render.ts b/packages/ui-templates/lib/render.ts index 1542f9386f..0e55425b35 100644 --- a/packages/ui-templates/lib/render.ts +++ b/packages/ui-templates/lib/render.ts @@ -1,13 +1,13 @@ import { fileURLToPath } from 'node:url' import { readFileSync, rmdirSync, unlinkSync, writeFileSync } from 'node:fs' import { copyFile } from 'node:fs/promises' -import { basename, dirname, join, resolve } from 'pathe' +import { basename, dirname, join } from 'pathe' import type { Plugin } from 'vite' // @ts-expect-error https://github.com/GoogleChromeLabs/critters/pull/151 import Critters from 'critters' import { genObjectFromRawEntries } from 'knitwork' import htmlMinifier from 'html-minifier' -import { globby } from 'globby' +import { glob } from 'tinyglobby' import { camelCase } from 'scule' import { version } from '../../nuxt/package.json' @@ -26,7 +26,10 @@ export const RenderPlugin = () => { enforce: 'post', async writeBundle () { const critters = new Critters({ path: outputDir }) - const htmlFiles = await globby(resolve(outputDir, 'templates/**/*.html'), { absolute: true }) + const htmlFiles = await glob(['templates/**/*.html'], { + cwd: outputDir, + absolute: true, + }) const templateExports: Array<{ exportName: string diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index ec5fe100e2..d4b9307529 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -19,10 +19,8 @@ }, "devDependencies": { "@types/html-minifier": "4.0.5", - "@unocss/reset": "0.62.2", + "@unocss/reset": "0.62.3", "critters": "0.0.24", - "execa": "9.3.1", - "globby": "14.0.2", "html-minifier": "4.0.0", "html-validate": "8.21.0", "jiti": "2.0.0-beta.3", @@ -30,7 +28,9 @@ "pathe": "1.1.2", "prettier": "3.3.3", "scule": "1.3.0", - "unocss": "0.62.2", + "tinyexec": "0.3.0", + "tinyglobby": "0.2.5", + "unocss": "0.62.3", "vite": "5.4.2" } } diff --git a/packages/ui-templates/test/templates.spec.ts b/packages/ui-templates/test/templates.spec.ts index a4234d18c4..33aa989914 100644 --- a/packages/ui-templates/test/templates.spec.ts +++ b/packages/ui-templates/test/templates.spec.ts @@ -2,7 +2,7 @@ import { fileURLToPath } from 'node:url' import { readFileSync } from 'node:fs' import { rm } from 'node:fs/promises' import { afterAll, beforeAll, describe, expect, it } from 'vitest' -import { execaCommand } from 'execa' +import { exec } from 'tinyexec' import { format } from 'prettier' import { createJiti } from 'jiti' // @ts-expect-error types not valid for bundler resolution @@ -12,10 +12,12 @@ const distDir = fileURLToPath(new URL('../node_modules/.temp/dist/templates', im describe('template', () => { beforeAll(async () => { - await execaCommand('pnpm build', { - cwd: fileURLToPath(new URL('..', import.meta.url)), - env: { - OUTPUT_DIR: './node_modules/.temp/dist', + await exec('pnpm', ['build'], { + nodeOptions: { + cwd: fileURLToPath(new URL('..', import.meta.url)), + env: { + OUTPUT_DIR: './node_modules/.temp/dist', + }, }, }) }) diff --git a/packages/vite/package.json b/packages/vite/package.json index fa2c4220f6..3dc2f41b5c 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -27,7 +27,7 @@ "@nuxt/schema": "workspace:*", "@types/clear": "0.1.4", "@types/estree": "1.0.5", - "rollup": "4.21.0", + "rollup": "4.21.1", "unbuild": "3.0.0-rc.7", "vue": "3.4.38" }, diff --git a/packages/vite/src/server.ts b/packages/vite/src/server.ts index 84f34e74ee..56706bfdce 100644 --- a/packages/vite/src/server.ts +++ b/packages/vite/src/server.ts @@ -116,7 +116,7 @@ export async function buildServer (ctx: ViteBuildContext) { if (Array.isArray(serverConfig.ssr!.external)) { serverConfig.ssr!.external.push( // explicit dependencies we use in our ssr renderer - these can be inlined (if necessary) in the nitro build - 'unhead', '@unhead/ssr', 'unctx', 'h3', 'devalue', '@nuxt/devalue', 'radix3', 'unstorage', 'hookable', + 'unhead', '@unhead/ssr', 'unctx', 'h3', 'devalue', '@nuxt/devalue', 'radix3', 'rou3', 'unstorage', 'hookable', // dependencies we might share with nitro - these can be inlined (if necessary) in the nitro build ...runtimeDependencies, ) diff --git a/packages/webpack/package.json b/packages/webpack/package.json index 80d2bb44ee..0972dc686a 100644 --- a/packages/webpack/package.json +++ b/packages/webpack/package.json @@ -78,7 +78,7 @@ "@types/pify": "5.0.4", "@types/webpack-bundle-analyzer": "4.7.0", "@types/webpack-hot-middleware": "2.25.9", - "rollup": "4.21.0", + "rollup": "4.21.1", "unbuild": "3.0.0-rc.7", "vue": "3.4.38" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b7870c7b5..738e855146 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,14 +10,14 @@ overrides: '@nuxt/ui-templates': workspace:* '@nuxt/vite-builder': workspace:* '@nuxt/webpack-builder': workspace:* - '@types/node': 20.16.1 + '@types/node': 20.16.2 c12: 2.0.0-beta.1 h3: npm:h3-nightly@2.0.0-1718872656.6765a6e jiti: 2.0.0-beta.3 magic-string: ^0.30.11 nitro: npm:nitro-nightly@3.0.0-beta-28665895.e727afda nuxt: workspace:* - rollup: ^4.21.0 + rollup: ^4.21.1 typescript: 5.5.4 unbuild: 3.0.0-rc.7 vite: 5.4.2 @@ -33,17 +33,17 @@ importers: .: devDependencies: '@eslint/js': - specifier: 9.9.0 - version: 9.9.0 + specifier: 9.9.1 + version: 9.9.1 '@nuxt/eslint-config': - specifier: 0.5.2 - version: 0.5.2(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) + specifier: 0.5.3 + version: 0.5.3(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) '@nuxt/kit': specifier: workspace:* version: link:packages/kit '@nuxt/test-utils': specifier: 3.14.1 - version: 3.14.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + version: 3.14.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) '@nuxt/webpack-builder': specifier: workspace:* version: link:packages/webpack @@ -54,8 +54,8 @@ importers: specifier: 8.42.3 version: 8.42.3 '@types/node': - specifier: 20.16.1 - version: 20.16.1 + specifier: 20.16.2 + version: 20.16.2 '@types/semver': specifier: 7.5.8 version: 7.5.8 @@ -67,10 +67,10 @@ importers: version: 1.10.0(vue@3.4.38(typescript@5.5.4)) '@vitejs/plugin-vue': specifier: 5.1.2 - version: 5.1.2(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) + version: 5.1.2(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) '@vitest/coverage-v8': specifier: 2.0.5 - version: 2.0.5(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0)) + version: 2.0.5(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0)) '@vue/test-utils': specifier: 2.4.6 version: 2.4.6 @@ -96,23 +96,17 @@ importers: specifier: 5.0.0 version: 5.0.0 eslint: - specifier: 9.9.0 - version: 9.9.0(jiti@2.0.0-beta.3) + specifier: 9.9.1 + version: 9.9.1(jiti@2.0.0-beta.3) eslint-plugin-no-only-tests: specifier: 3.3.0 version: 3.3.0 eslint-plugin-perfectionist: - specifier: 3.2.0 - version: 3.2.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@2.0.0-beta.3))) + specifier: 3.3.0 + version: 3.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@2.0.0-beta.3))) eslint-typegen: specifier: 0.3.1 - version: 0.3.1(eslint@9.9.0(jiti@2.0.0-beta.3)) - execa: - specifier: 9.3.1 - version: 9.3.1 - globby: - specifier: 14.0.2 - version: 14.0.2 + version: 0.3.1(eslint@9.9.1(jiti@2.0.0-beta.3)) h3: specifier: npm:h3-nightly@2.0.0-1718872656.6765a6e version: h3-nightly@2.0.0-1718872656.6765a6e @@ -129,8 +123,8 @@ importers: specifier: npm:nitro-nightly@3.0.0-beta-28665895.e727afda version: nitro-nightly@3.0.0-beta-28665895.e727afda(@opentelemetry/api@1.9.0)(encoding@0.1.13)(typescript@5.5.4) nuxi: - specifier: 3.12.0 - version: 3.12.0 + specifier: 3.13.1 + version: 3.13.1 nuxt: specifier: workspace:* version: link:packages/nuxt @@ -155,6 +149,12 @@ importers: std-env: specifier: 3.7.0 version: 3.7.0 + tinyexec: + specifier: 0.3.0 + version: 0.3.0 + tinyglobby: + specifier: 0.2.5 + version: 0.2.5 typescript: specifier: 5.5.4 version: 5.5.4 @@ -163,10 +163,10 @@ importers: version: 1.5.4 vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) + version: 2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) vitest-environment-nuxt: specifier: 1.0.1 - version: 1.0.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + version: 1.0.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) vue: specifier: 3.4.38 version: 3.4.38(typescript@5.5.4) @@ -234,8 +234,8 @@ importers: specifier: ^2.3.1 version: 2.3.1 unimport: - specifier: ^3.11.0 - version: 3.11.0(rollup@4.21.0) + specifier: ^3.11.1 + version: 3.11.1(rollup@4.21.1) untyped: specifier: ^1.4.2 version: 1.4.2 @@ -254,10 +254,10 @@ importers: version: 3.0.0-rc.7(sass@1.69.4)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4)) vite: specifier: 5.4.2 - version: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + version: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) + version: 2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) webpack: specifier: 5.94.0 version: 5.94.0 @@ -268,8 +268,8 @@ importers: specifier: ^2.0.2 version: 2.0.2 '@nuxt/devtools': - specifier: ^1.3.14 - version: 1.3.14(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + specifier: ^1.4.1 + version: 1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) '@nuxt/kit': specifier: workspace:* version: link:../kit @@ -283,8 +283,8 @@ importers: specifier: workspace:* version: link:../vite '@types/node': - specifier: 20.16.1 - version: 20.16.1 + specifier: 20.16.2 + version: 20.16.2 '@unhead/dom': specifier: ^1.10.0 version: 1.10.0 @@ -348,6 +348,9 @@ importers: ignore: specifier: ^5.3.2 version: 5.3.2 + impound: + specifier: ^0.1.0 + version: 0.1.0(rollup@4.21.1) jiti: specifier: 2.0.0-beta.3 version: 2.0.0-beta.3 @@ -363,15 +366,18 @@ importers: mlly: specifier: ^1.7.1 version: 1.7.1 + nanotar: + specifier: ^0.1.1 + version: 0.1.1 nitro: specifier: npm:nitro-nightly@3.0.0-beta-28665895.e727afda version: nitro-nightly@3.0.0-beta-28665895.e727afda(@opentelemetry/api@1.9.0)(encoding@0.1.13)(typescript@5.5.4) nuxi: - specifier: ^3.12.0 - version: 3.12.0 + specifier: ^3.13.1 + version: 3.13.1 nypm: - specifier: ^0.3.9 - version: 0.3.9 + specifier: ^0.3.11 + version: 0.3.11 ofetch: specifier: ^1.3.4 version: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) @@ -402,6 +408,9 @@ importers: strip-literal: specifier: ^2.1.0 version: 2.1.0 + tinyglobby: + specifier: 0.2.5 + version: 0.2.5 ufo: specifier: ^1.5.4 version: 1.5.4 @@ -418,14 +427,14 @@ importers: specifier: ^1.10.0 version: 1.10.0 unimport: - specifier: ^3.11.0 - version: 3.11.0(rollup@4.21.0) + specifier: ^3.11.1 + version: 3.11.1(rollup@4.21.1) unplugin: specifier: ^1.12.2 version: 1.12.2 unplugin-vue-router: specifier: ^0.10.7 - version: 0.10.7(rollup@4.21.0)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + version: 0.10.7(rollup@4.21.1)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) unstorage: specifier: ^1.10.2 version: 1.10.2(ioredis@5.4.1) @@ -447,7 +456,7 @@ importers: devDependencies: '@nuxt/scripts': specifier: 0.7.1 - version: 0.7.1(@nuxt/devtools@1.3.14(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.0)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1)) + version: 0.7.1(@nuxt/devtools@1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.1)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1)) '@nuxt/ui-templates': specifier: workspace:* version: link:../ui-templates @@ -459,7 +468,7 @@ importers: version: 1.0.5 '@vitejs/plugin-vue': specifier: 5.1.2 - version: 5.1.2(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) + version: 5.1.2(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) '@vue/compiler-sfc': specifier: 3.4.38 version: 3.4.38 @@ -468,10 +477,10 @@ importers: version: 3.0.0-rc.7(sass@1.69.4)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4)) vite: specifier: 5.4.2 - version: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + version: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) + version: 2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) packages/schema: dependencies: @@ -506,8 +515,8 @@ importers: specifier: ^0.1.3 version: 0.1.3 unimport: - specifier: ^3.11.0 - version: 3.11.0(rollup@4.21.0) + specifier: ^3.11.1 + version: 3.11.1(rollup@4.21.1) untyped: specifier: ^1.4.2 version: 1.4.2 @@ -532,10 +541,10 @@ importers: version: 1.10.0 '@vitejs/plugin-vue': specifier: 5.1.2 - version: 5.1.2(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) + version: 5.1.2(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) '@vitejs/plugin-vue-jsx': specifier: 4.0.1 - version: 4.0.1(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) + version: 4.0.1(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) '@vue/compiler-core': specifier: 3.4.38 version: 3.4.38 @@ -574,7 +583,7 @@ importers: version: 1.10.0 vite: specifier: 5.4.2 - version: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + version: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vue: specifier: 3.4.38 version: 3.4.38(typescript@5.5.4) @@ -600,23 +609,17 @@ importers: specifier: 4.0.5 version: 4.0.5 '@unocss/reset': - specifier: 0.62.2 - version: 0.62.2 + specifier: 0.62.3 + version: 0.62.3 critters: specifier: 0.0.24 version: 0.0.24 - execa: - specifier: 9.3.1 - version: 9.3.1 - globby: - specifier: 14.0.2 - version: 14.0.2 html-minifier: specifier: 4.0.0 version: 4.0.0 html-validate: specifier: 8.21.0 - version: 8.21.0(vitest@1.6.0(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0)) + version: 8.21.0(vitest@1.6.0(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0)) jiti: specifier: 2.0.0-beta.3 version: 2.0.0-beta.3 @@ -632,12 +635,18 @@ importers: scule: specifier: 1.3.0 version: 1.3.0 + tinyexec: + specifier: 0.3.0 + version: 0.3.0 + tinyglobby: + specifier: 0.2.5 + version: 0.2.5 unocss: - specifier: 0.62.2 - version: 0.62.2(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + specifier: 0.62.3 + version: 0.62.3(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) vite: specifier: 5.4.2 - version: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + version: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) packages/vite: dependencies: @@ -646,13 +655,13 @@ importers: version: link:../kit '@rollup/plugin-replace': specifier: ^5.0.7 - version: 5.0.7(rollup@4.21.0) + version: 5.0.7(rollup@4.21.1) '@vitejs/plugin-vue': specifier: ^5.1.2 - version: 5.1.2(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) + version: 5.1.2(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.1 - version: 4.0.1(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) + version: 4.0.1(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.41) @@ -715,7 +724,7 @@ importers: version: 8.4.41 rollup-plugin-visualizer: specifier: ^5.12.0 - version: 5.12.0(rollup@4.21.0) + version: 5.12.0(rollup@4.21.1) std-env: specifier: ^3.7.0 version: 3.7.0 @@ -733,13 +742,13 @@ importers: version: 1.12.2 vite: specifier: 5.4.2 - version: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + version: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vite-node: specifier: ^2.0.5 - version: 2.0.5(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + version: 2.0.5(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vite-plugin-checker: specifier: ^0.7.2 - version: 0.7.2(eslint@9.9.0(jiti@2.0.0-beta.3))(optionator@0.9.3)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.29(typescript@5.5.4)) + version: 0.7.2(eslint@9.9.1(jiti@2.0.0-beta.3))(optionator@0.9.3)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.29(typescript@5.5.4)) vue-bundle-renderer: specifier: ^2.1.0 version: 2.1.0 @@ -754,8 +763,8 @@ importers: specifier: 1.0.5 version: 1.0.5 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.1 + version: 4.21.1 unbuild: specifier: 3.0.0-rc.7 version: 3.0.0-rc.7(sass@1.69.4)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4)) @@ -920,8 +929,8 @@ importers: specifier: 2.25.9 version: 2.25.9 rollup: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.1 + version: 4.21.1 unbuild: specifier: 3.0.0-rc.7 version: 3.0.0-rc.7(sass@1.69.4)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4)) @@ -998,10 +1007,10 @@ importers: version: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) unplugin-vue-router: specifier: ^0.10.0 - version: 0.10.7(rollup@4.21.0)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + version: 0.10.7(rollup@4.21.1)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) vue: specifier: 3.4.38 version: 3.4.38(typescript@5.5.4) @@ -1084,6 +1093,9 @@ packages: '@antfu/install-pkg@0.1.1': resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + '@antfu/install-pkg@0.4.0': + resolution: {integrity: sha512-vI73C0pFA9L+5v+djh0WSLXb8qYQGH5fX8nczaFe1OTI/8Fh03JS1Mov1V7urb6P3A2cBlBqZNjJIKv54+zVRw==} + '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} @@ -1716,16 +1728,16 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.1': - resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.9.0': - resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==} + '@eslint/js@9.9.1': + resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -1775,6 +1787,9 @@ packages: '@iconify/utils@2.1.30': resolution: {integrity: sha512-bY0IO5xLOlbzJBnjWLxknp6Sss3yla03sVY9VeUz9nT6dbc+EGKlLfCt+6uytJnWm5CUvTF/BNotsLWF7kI61A==} + '@iconify/utils@2.1.32': + resolution: {integrity: sha512-LeifFZPPKu28O3AEDpYJNdEbvS4/ojAPyIW+pF/vUpJTYnbTiXUHkCh0bwgFRzKvdpb8H4Fbfd/742++MF4fPQ==} + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -1878,28 +1893,33 @@ packages: peerDependencies: vite: 5.4.2 + '@nuxt/devtools-kit@1.4.1': + resolution: {integrity: sha512-6h7T9B0tSZVap13/hf7prEAgIzraj/kyux6/Iif455Trew96jHIFCCboBApUMastYEuCo3l17tgZKe0HW+jrtA==} + peerDependencies: + vite: 5.4.2 + '@nuxt/devtools-ui-kit@1.3.14': resolution: {integrity: sha512-4z8eo77MCDjeNQ8NUSVg3dmfh7QUFqFJZ9m6fdwLjPjjNrSvQn33g4blyQYWhvuRE22/uRGm5X0/HCHa4C5nTQ==} peerDependencies: '@nuxt/devtools': 1.3.14 - '@nuxt/devtools-wizard@1.3.14': - resolution: {integrity: sha512-5kLB53/7YUME6Y8byrOxRhl0hXWm05jPStJd1CJHKDcGrp+hjxYZaSgEwYtEIQ0A1GF04rfL4bJ+qIL+7e0+9Q==} + '@nuxt/devtools-wizard@1.4.1': + resolution: {integrity: sha512-X9uTh5rgt0pw3UjXcHyl8ZFYmCgw8ITRe9Nr2VLCtNROfKz9yol/ESEhYMwTFiFlqSyfJP6/qtogJBjUt6dzTw==} hasBin: true - '@nuxt/devtools@1.3.14': - resolution: {integrity: sha512-ebeVWBisXbhJ7begAZTgSDF8cPbExHv4RPDb9fWTMI1YoVVxX+elqUPw0K6T5Yi4atdGhyxRtGMqjikl7QKp9w==} + '@nuxt/devtools@1.4.1': + resolution: {integrity: sha512-BtmGRAr/pjSE3dBrM7iceNT6OZAQ/MHxq1brkHJDs2VdyZPnqqGS4n3/98saASoRdj0dddsuIElsqC/zIABhgg==} hasBin: true peerDependencies: vite: 5.4.2 - '@nuxt/eslint-config@0.5.2': - resolution: {integrity: sha512-InlT4s6dUaO7YGxz0J2yaW3pRiCbIPBH4Mc3OxUPFT5+BYYXASm/Os+Ssc0Ia/UDAjiofLwd0Ov+QforPOeQUg==} + '@nuxt/eslint-config@0.5.3': + resolution: {integrity: sha512-V/z6pvNLiUwh4Y2goaqIDA91rmglWujYyUTfm6e0uKillJPKyUXjPwlQyxtvfEtUyyaR/RnUswjzluL6xcZt2g==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@nuxt/eslint-plugin@0.5.2': - resolution: {integrity: sha512-Z7v+mVJp6ertuwyYSU5NQbPzAEjvNDI3W88jcRr6cM94SzlJCJWfgZgZtxumbISGT2SAIO4TqNC++wFxDC5Jgw==} + '@nuxt/eslint-plugin@0.5.3': + resolution: {integrity: sha512-Qcm33Jv+BIQNreSyG0Rold64iL0VBTaL6s+dh2/88UwKknnb5GWnkP19Op7+w1xkl74okky6LIPkHPSJq3Ue7A==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2141,7 +2161,7 @@ packages: resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2150,7 +2170,7 @@ packages: resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2159,7 +2179,7 @@ packages: resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2168,7 +2188,7 @@ packages: resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2177,7 +2197,7 @@ packages: resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2186,7 +2206,7 @@ packages: resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2195,7 +2215,7 @@ packages: resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2204,7 +2224,7 @@ packages: resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true @@ -2217,97 +2237,94 @@ packages: resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.21.0': - resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} + '@rollup/rollup-android-arm-eabi@4.21.1': + resolution: {integrity: sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.21.0': - resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} + '@rollup/rollup-android-arm64@4.21.1': + resolution: {integrity: sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.21.0': - resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} + '@rollup/rollup-darwin-arm64@4.21.1': + resolution: {integrity: sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.21.0': - resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} + '@rollup/rollup-darwin-x64@4.21.1': + resolution: {integrity: sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.21.0': - resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} + '@rollup/rollup-linux-arm-gnueabihf@4.21.1': + resolution: {integrity: sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.21.0': - resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} + '@rollup/rollup-linux-arm-musleabihf@4.21.1': + resolution: {integrity: sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.21.0': - resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} + '@rollup/rollup-linux-arm64-gnu@4.21.1': + resolution: {integrity: sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.21.0': - resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} + '@rollup/rollup-linux-arm64-musl@4.21.1': + resolution: {integrity: sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': - resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.21.1': + resolution: {integrity: sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.21.0': - resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} + '@rollup/rollup-linux-riscv64-gnu@4.21.1': + resolution: {integrity: sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.21.0': - resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} + '@rollup/rollup-linux-s390x-gnu@4.21.1': + resolution: {integrity: sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.21.0': - resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} + '@rollup/rollup-linux-x64-gnu@4.21.1': + resolution: {integrity: sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.21.0': - resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} + '@rollup/rollup-linux-x64-musl@4.21.1': + resolution: {integrity: sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.21.0': - resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} + '@rollup/rollup-win32-arm64-msvc@4.21.1': + resolution: {integrity: sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.21.0': - resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} + '@rollup/rollup-win32-ia32-msvc@4.21.1': + resolution: {integrity: sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.21.0': - resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} + '@rollup/rollup-win32-x64-msvc@4.21.1': + resolution: {integrity: sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==} cpu: [x64] os: [win32] '@rushstack/eslint-patch@1.10.4': resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/core@1.1.2': resolution: {integrity: sha512-ERVzNQz88ZkDqUpWeC57Kp+Kmx5RjqeDBR1M8AGWGom4yrkITiTfXCGmjchlDSw12MhDTuPYR4HVFW8uT61RaQ==} @@ -2343,10 +2360,6 @@ packages: resolution: {integrity: sha512-UTce8mUwUW0RikMb/eseJ7ys0BRkZVFB86orHzrfW12ZmFtym5zua8joZ4L7okH2dDFHkcFjqnZ5GocWBXOFtA==} engines: {node: '>=18'} - '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} - engines: {node: '>=18'} - '@stylistic/eslint-plugin-js@2.6.4': resolution: {integrity: sha512-kx1hS3xTvzxZLdr/DCU/dLBE++vcP97sHeEFX2QXhk1Ipa4K1rzPOLw1HCbf4mU3s+7kHP5eYpDe+QteEOFLug==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2463,8 +2476,8 @@ packages: '@types/node-sass@4.11.6': resolution: {integrity: sha512-Qkf5Fs9zzsXchenUY7oVdIHyv8FtPgqIXqOJzhh3FDqpYjqvc/gtZ3hlZVFmKQhl7wyI4+WkRbYufYC5pfY7iw==} - '@types/node@20.16.1': - resolution: {integrity: sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==} + '@types/node@20.16.2': + resolution: {integrity: sha512-91s/n4qUPV/wg8eE9KHYW1kouTfDk2FPGjXbBMfRWP/2vg1rCXNQL1OCabwGs0XSdukuK+MwCDXE30QpSeMUhQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2532,8 +2545,8 @@ packages: '@types/youtube@0.0.50': resolution: {integrity: sha512-d4GpH4uPYp9W07kc487tiq6V/EUHl18vZWFMbQoe4Sk9LXEWzFi/BMf9x7TI4m7/j7gU3KeX8H6M8aPBgykeLw==} - '@typescript-eslint/eslint-plugin@8.1.0': - resolution: {integrity: sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==} + '@typescript-eslint/eslint-plugin@8.3.0': + resolution: {integrity: sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -2543,8 +2556,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.1.0': - resolution: {integrity: sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==} + '@typescript-eslint/parser@8.3.0': + resolution: {integrity: sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2553,16 +2566,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.17.0': - resolution: {integrity: sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@8.1.0': - resolution: {integrity: sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==} + '@typescript-eslint/scope-manager@8.3.0': + resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.1.0': - resolution: {integrity: sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==} + '@typescript-eslint/type-utils@8.3.0': + resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2570,22 +2579,13 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.17.0': - resolution: {integrity: sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.1.0': resolution: {integrity: sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.17.0': - resolution: {integrity: sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/types@8.3.0': + resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.1.0': resolution: {integrity: sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==} @@ -2596,26 +2596,29 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.17.0': - resolution: {integrity: sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.3.0': + resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - '@typescript-eslint/utils@8.1.0': - resolution: {integrity: sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==} + '@typescript-eslint/utils@8.3.0': + resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.17.0': - resolution: {integrity: sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.1.0': resolution: {integrity: sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.3.0': + resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/vfs@1.5.0': resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} @@ -2647,24 +2650,50 @@ packages: vite: optional: true + '@unocss/astro@0.62.3': + resolution: {integrity: sha512-C6ZdyLbLDS0LebwmgwVItLNAOSkL/tvVWNRd1i3Jy5uj1vPxlrw+3lIYiHjEofn0GFpBiwlv5+OCvO1Xpq5MqA==} + peerDependencies: + vite: 5.4.2 + peerDependenciesMeta: + vite: + optional: true + '@unocss/cli@0.62.2': resolution: {integrity: sha512-M1Itw4CVTnoBS1rTLYZvEV5lhq3r711Dwes4GlCHmCwuwEJcp7b83Saim2x6+h1BZbMY3CxgendGNQAIJ9rHkw==} engines: {node: '>=14'} hasBin: true + '@unocss/cli@0.62.3': + resolution: {integrity: sha512-yEl1iNKkBVpo8+i8gzveM5/0/vOVe6m8+FmuSDuKeSPJnYMhI1mAn+OCKFb/I+qEeLbRPXebbJUUB1xZNzya+w==} + engines: {node: '>=14'} + hasBin: true + '@unocss/config@0.62.2': resolution: {integrity: sha512-TgWhO0hkTADnuSgcUZvFP3i4AVpaiMvr41hhQqCPQTaiLMRrroXFnqL33cpkEbHLIfbTh74pXrDxnzMLaEKVdQ==} engines: {node: '>=14'} + '@unocss/config@0.62.3': + resolution: {integrity: sha512-zYOvFE0HfGIbnP/AvsbAlJpPRx9CQyXzL11m/8zgsHW5SGlJIYxuTll83l/xu026G5mPiksy7quoEOEgCLslqw==} + engines: {node: '>=14'} + '@unocss/core@0.62.2': resolution: {integrity: sha512-86jEFUJ/PSwdb1qqiEi0lWlewfKLQwiH+JAfnh8c2hLjOPVmCkb0nnsYSMh8drmtN5kpk6E06mN0IrKMO7OnvQ==} + '@unocss/core@0.62.3': + resolution: {integrity: sha512-Pfyrj8S7jq9K1QXD6Z5BCeiQavaHpbMN5q958/kmdbNGp57hOg1e346fMJAvgPjLBR+lE/hgZEsDrijtRiZXnw==} + '@unocss/extractor-arbitrary-variants@0.62.2': resolution: {integrity: sha512-k0+QifbKe3Wp6dznQIhn1bQ/shR8yMk1ypfWQFOAr0ylXXlKMXFxfpRyxH3awbTDRBpi/SxIIaBTAzflGxBSgg==} + '@unocss/extractor-arbitrary-variants@0.62.3': + resolution: {integrity: sha512-9ZscWyXEwDZif+b56xZyJFHwJOjdMXmj+6x96jOsnRNBzwT9eW7YcGCErP1ih/q1S6KmuRrHM/JOXMBQ6H4qlw==} + '@unocss/inspector@0.62.2': resolution: {integrity: sha512-P2J8xx4MeB8VHCwjick+PzMyLPKvUNZBuUxuFVhh3xpMsbGlvSIKMH4PRCriwWih+7wqHlrI+fv1gAjoiGHe3Q==} + '@unocss/inspector@0.62.3': + resolution: {integrity: sha512-nTSXOf7YimFPxEYJo5VfP5wlMgYOCjlv3c5Ub/0fynCJXZNb89SFeU05ABXkEgg/FfiobVBTscikLc6guW8eHQ==} + '@unocss/nuxt@0.62.2': resolution: {integrity: sha512-W530iCuo9wtWcDNxROngg9jeazobZCLmZaQAVWpkb9zt9JPDv0kLCdPbQSW+jKCOUtfM8HutVEsxdtiPDWCz7w==} @@ -2674,60 +2703,120 @@ packages: peerDependencies: postcss: ^8.4.21 + '@unocss/postcss@0.62.3': + resolution: {integrity: sha512-CwL378ef0QazduXqlaGcWgKJAzemBUxdhapWWiRqI8sXC/eXht5xK6nS1JxqADDuxosgqsGdvcCGmP8ZFrEyiA==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + '@unocss/preset-attributify@0.62.2': resolution: {integrity: sha512-QBxm62Lq6O7pN47TBD25LrH6CXZGDyTORguKL+IvIxuf8/VTEwwLl1z9FJ10u+kTwHX11RDnAF7KmZsTpcezgA==} + '@unocss/preset-attributify@0.62.3': + resolution: {integrity: sha512-ORNwyLobGTwnn/tK5yHnMabdJU6Mr/C4LyFH7G8VSLit/aVS0fFa795kJXwxfbqQoQ7Gw0Zxs9oE5RXI0/0y7g==} + '@unocss/preset-icons@0.62.2': resolution: {integrity: sha512-cj5fhhgyMK2Wio2nsR4hJuorRtqrgeX8sApffCRxpdKb/rg0De7IzXlTRQvAivFingRLXxwMKcpR4hgw/kw/pA==} + '@unocss/preset-icons@0.62.3': + resolution: {integrity: sha512-Ie+5RTyac1Q5CNB/s/4aB4VTHAQgQqsI5hshMNLkJ0Jj1lWxodUdEbCRKjXDalRjAXOS9vsLjfJ35ozJ1RSTIQ==} + '@unocss/preset-mini@0.62.2': resolution: {integrity: sha512-NeyYGwGCmMbjzMMhQGzn4qk74LYIsLM4zpQru2Krt1snw1DgVpp3iV8hCWIH4y0Y+ud+K5SUFMAvIe18vq2OQw==} + '@unocss/preset-mini@0.62.3': + resolution: {integrity: sha512-dn/8ubeW2ry/ZF3iKxdQHnS0l3EBibt0rIOE/XVwx24ub6pRzclU4r7xHnXeqvAFOO9PoiKDGgFR92m6R2MxyQ==} + '@unocss/preset-tagify@0.62.2': resolution: {integrity: sha512-xfxyKqBxBFOtKRifpM+9co9GqXj5PmGNdLcoWoYninmtO1CvCc50IBIob2h85X18jsa6Vm3sATzEfgOSggcGzQ==} + '@unocss/preset-tagify@0.62.3': + resolution: {integrity: sha512-8BpUCZ5sjOZOzBKtu7ecfhRggwwPF78IqeqeNjI+XYRs8r7TBBcUVeF6zUkwhlX/TbtREkw2OZj0Iusa9CBO+A==} + '@unocss/preset-typography@0.62.2': resolution: {integrity: sha512-NnoblEZX+dDZeM537l6HcNfPJC8KPGcD5LimVO/HS7GuDarTXeu1JgnCqYc2d5q69OAbyfJfO9k1iKqnAHkqug==} + '@unocss/preset-typography@0.62.3': + resolution: {integrity: sha512-GjtDgQ1Jec/5RNmnyGMWMgyPdStWcFG/S+NUfOuroRsGSI8PDxihVOwFu5CwvOB2J2r6mRNLeUYMluE05jW3sw==} + '@unocss/preset-uno@0.62.2': resolution: {integrity: sha512-oMwSP3haSiyiSqI0KqrYkda8mnkWu9lJDdm4bZ5iO6v/rDxmcydBr7MEl8iEy9EdOy1lv3xsyzwMrRer392JEw==} + '@unocss/preset-uno@0.62.3': + resolution: {integrity: sha512-RlsrMlpEzoZqB0lr5VvlkHGpEgr0Vp6z4Q/7DjW5t7mi20Z2i8olaLGWM0TO1wKoRi8bxc6HP0RHUS7pHtZxBA==} + '@unocss/preset-web-fonts@0.62.2': resolution: {integrity: sha512-LawmODVu8jjluVGxCIFePkqHLPkhU6S3xJIq8harZAt/uzfkosO3ozzWrRHcVR7SQGPWdATie0ggTFcmVRxFzw==} + '@unocss/preset-web-fonts@0.62.3': + resolution: {integrity: sha512-rGEouncGFwcUY1cjkQ/ZoSmEzOeSi3Yk4YAfHGyS0ff5zKuTDWZgivB8hh/mTtvRzZunIL+FW1+1z5G9rUwjgQ==} + '@unocss/preset-wind@0.62.2': resolution: {integrity: sha512-1pohITLsjhUfEA774Ftz2EAaolbUmhM8yircxTaQEty9qYF1dEcLM2Fm6Y0+ZNhPOcKCAOYZkExuu6JEjbEACg==} + '@unocss/preset-wind@0.62.3': + resolution: {integrity: sha512-6+VNce1he1U5EXKlXRwTIPn8KeK6bZ2jAEgcCxk8mFy8SzOlLeYzXCI9lcdiWRTjIeIiK5iSaUqmsQFtKdTyQg==} + '@unocss/reset@0.62.2': resolution: {integrity: sha512-5hgxcBMMbw5tMSSd4kUX70H0pZK9SwRHtm8Q4VvDV6xOZJa2/fvFR4qyxbuAM9nhOwYUqAAX23lxfmY0bXX73A==} + '@unocss/reset@0.62.3': + resolution: {integrity: sha512-XVKPkbm8y9SGzRaG3x+HygGZURm50MvKLVHXsbxi67RbIir9Ouyt9hQTV6Xs3RicRZFWOpJx3wMRb8iKUOe5Zw==} + '@unocss/rule-utils@0.62.2': resolution: {integrity: sha512-0za00pkDHsGZhiXBiZfOuUyT+GjCInPxMXj+QsybRU4UrjJS+d3gAteC34BqNFfDAoKQb9G5q9etXztcNHXQbg==} engines: {node: '>=14'} + '@unocss/rule-utils@0.62.3': + resolution: {integrity: sha512-qI37jHH//XzyR5Y2aN3Kpo4lQrQO+CaiXpqPSwMLYh2bIypc2RQVpqGVtU736x0eA6IIx41XEkKzUW+VtvJvmg==} + engines: {node: '>=14'} + '@unocss/scope@0.62.2': resolution: {integrity: sha512-AEQ1CV8s8NAkBJPO1NCSjADoNyCOYiqkW1DXMvB9mA6lTff5SgmFqIiNmBtMsnBs7/dO0iOSMEDIpdgtDg/KhA==} + '@unocss/scope@0.62.3': + resolution: {integrity: sha512-TJGmFfsMrTo8DBJ7CJupIqObpgij+w4jCHMBf1uu0/9jbm63dH6WGcrl3zf5mm6UBTeLmB0RwJ8K4hs7LtrBDQ==} + '@unocss/transformer-attributify-jsx-babel@0.62.2': resolution: {integrity: sha512-t0/3TFc29vwurjRR0akGkYv1VdzqLXHJn6d+d4BSzYhsH0YIhNFxU7r7Gf9iea38IqW6av+OlPBgCZknbG9K+g==} + '@unocss/transformer-attributify-jsx-babel@0.62.3': + resolution: {integrity: sha512-3yFZPSoN8VLiAGUAFIyfDRv9HQYTKFGKawDdMM9ATZmSEYOecJnYjS2HayT1P9kzGwBwuKoFjcX50JH1PuNokg==} + '@unocss/transformer-attributify-jsx@0.62.2': resolution: {integrity: sha512-Lgv6OH3rtO7fn0DzBH8C2tEN4247d2Bsm9eP3jIU2w/jTxuv+1XEh8Wir67winLdn/ZNBzVxJb3popnNo9qhcA==} + '@unocss/transformer-attributify-jsx@0.62.3': + resolution: {integrity: sha512-AutidZj26QW1vLQzuW/aQigC/5ZnIeqGYIBeb/O+FKKt0bU411tHrHnA1iV4CoxIdWJTkw2sGAl6z6YvwAYG6w==} + '@unocss/transformer-compile-class@0.62.2': resolution: {integrity: sha512-Kjyt7+NYLBRUSY0OA8tC6CDTC0qh9HkNt+WEEWvtTcrWwRvTU0VUroTkndHI3Fmv/yczuwmPXI71J+jJeLBQ6w==} + '@unocss/transformer-compile-class@0.62.3': + resolution: {integrity: sha512-1hf+99wJXzQXQPz9xR0AiTB3vBXT5RiEyugIX95HFx7EvSE/P17RP90yKEKZtDZRUwGiz2vIyySlxcKTFak9Vg==} + '@unocss/transformer-directives@0.62.2': resolution: {integrity: sha512-5ZGTmsXkAkFd7pHjHkGy6LGgxhh6bPbZ3jLltf98OhgBZH558y9iui6LKq3n2LpUsSZox6ey3yh1AibvakQeeg==} + '@unocss/transformer-directives@0.62.3': + resolution: {integrity: sha512-HqHwFOA7DfxD/A1ROZIp8Dr8iZcE0z4w3VQtViWPQ89Fqmb7p2wCPGekk+8yW5PAltpynvHE4ahJEto5xjdg6w==} + '@unocss/transformer-variant-group@0.62.2': resolution: {integrity: sha512-WknoFYRAik2NJfo0AHoId912jzzZaOV9bKgoSh7Lpx7dMxgngfU027Gx7Wnd8mR+TSqQzsfYaXdPa+PqyTv6Xg==} + '@unocss/transformer-variant-group@0.62.3': + resolution: {integrity: sha512-oNX1SdfWemz0GWGSXACu8NevM0t2l44j2ancnooNkNz3l1+z1nbn4vFwfsJCOqOaoVm4ZqxaiQ8HIx81ZSiU1A==} + '@unocss/vite@0.62.2': resolution: {integrity: sha512-ES39SL7+0UDTM5IvIiDVodH4duUIzGXug/bhuDHHhhtUBoengH+Oe59jURzRChDj4Pf3cyqMtTwo5amoz3lV2Q==} peerDependencies: vite: 5.4.2 + '@unocss/vite@0.62.3': + resolution: {integrity: sha512-RrqF6Go8s0BGpwRfkOiLuO+n3CUE/CXxGqb0ipbUARhmNWJlekE3YPfayqImSEnCcImpaPgtVGv6Y0u3kLGG/w==} + peerDependencies: + vite: 5.4.2 + '@unocss/webpack@0.62.2': resolution: {integrity: sha512-JYBrI5p0+YMoEWzjAkNjVqWiBJq3tbKFvJMuYDw6EduwW03B4GKBT6Hca0Dj1P6AdE1nW/w940iTCP9mUhA+pw==} peerDependencies: @@ -3962,11 +4051,11 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-import-x@3.1.0: - resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} - engines: {node: '>=16'} + eslint-plugin-import-x@4.0.0: + resolution: {integrity: sha512-5bWZ+2p3DKlpLSP830cAUmRUoYEnnvuBmSOSlURffEUuXL68uQUX0v2JpoXxyoDRIQWApzbqhnFeHA0XoQWosA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 || ^9.0.0-0 + eslint: ^8.57.0 || ^9.0.0 eslint-plugin-jsdoc@50.2.2: resolution: {integrity: sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==} @@ -3978,8 +4067,8 @@ packages: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@3.2.0: - resolution: {integrity: sha512-cX1aztMbSfRWPKJH8CD+gadrbkS+RNH1OGWuNGws8J6rHzYYhawxWTU/yzMYjq2IRJCpBCfhgfa7BHRXQYxLHA==} + eslint-plugin-perfectionist@3.3.0: + resolution: {integrity: sha512-sGgShkEqDBqIZ3WlenGHwLe1cl3vHKTfeh9b1XXAamaxSC7AY4Os0jdNCXnGJW4l0TlpismT5t2r7CXY7sfKlw==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: astro-eslint-parser: ^1.0.2 @@ -4040,8 +4129,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.9.0: - resolution: {integrity: sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==} + eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4108,10 +4197,6 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.3.1: - resolution: {integrity: sha512-gdhefCCNy/8tpH/2+ajP9IQc14vXchNdd0weyzSJEFURhRMGncQ+zKFxwjAufIewPEJm9BPOaJnvg2UtlH2gPQ==} - engines: {node: ^18.19.0 || >=20.5.0} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -4156,10 +4241,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} - engines: {node: '>=18'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -4298,10 +4379,6 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} - engines: {node: '>=18'} - get-tsconfig@4.7.6: resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} @@ -4549,10 +4626,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - human-signals@8.0.0: - resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} - engines: {node: '>=18.18.0'} - hyperdyperid@1.2.0: resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} @@ -4591,6 +4664,9 @@ packages: importx@0.4.3: resolution: {integrity: sha512-x6E6OxmWq/SUaj7wDeDeSjyHP+rMUbEaqJ5fw0uEtC/FTX9ocxNMFJ+ONnpJIsRpFz3ya6qJAK4orwSKqw0BSQ==} + impound@0.1.0: + resolution: {integrity: sha512-F9nJgOsDc3tysjN74edE0vGPEQrU7DAje6g5nNAL5Jc9Tv4JW3mH7XMGne+EaadTniDXLeUrVR21opkNfWO1zQ==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -4771,10 +4847,6 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} - engines: {node: '>=18'} - is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -4787,10 +4859,6 @@ packages: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} - is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} - engines: {node: '>=18'} - is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -5407,6 +5475,9 @@ packages: engines: {node: ^18 || >=20} hasBin: true + nanotar@0.1.1: + resolution: {integrity: sha512-AiJsGsSF3O0havL1BydvI4+wR76sKT+okKRwWIaK96cZUnXqH0uNBOsHlbwZq3+m2BR1VKqHDVudl3gO4mYjpQ==} + natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -5508,8 +5579,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nuxi@3.12.0: - resolution: {integrity: sha512-6vRdiXTw9SajEQOUi6Ze/XaIXzy1q/sD5UqHQSv3yqTu7Pot5S7fEihNXV8LpcgLz+9HzjVt70r7jYe7R99c2w==} + nuxi@3.13.1: + resolution: {integrity: sha512-rhUfFCtIH8IxhfibVd26uGrC0ojUijGoU3bAhPQHrkl7mFlK+g+XeIttdsI8YAC7s/wPishrTpE9z1UssHY6eA==} engines: {node: ^16.10.0 || >=18.0.0} hasBin: true @@ -5519,8 +5590,8 @@ packages: peerDependencies: '@nuxtjs/mdc': '>=0.5.0' - nypm@0.3.9: - resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} + nypm@0.3.11: + resolution: {integrity: sha512-E5GqaAYSnbb6n1qZyik2wjPDZON43FqOJO59+3OkWrnmQtjggrMOVnsyzfjxp/tS6nlYJBA4zRA5jSM2YaadMg==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true @@ -5621,6 +5692,9 @@ packages: package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@0.1.2: + resolution: {integrity: sha512-iePyefLTOm2gEzbaZKSW+eBMjg+UYsQvUKxmvGXAQ987K16efBg10MxIjZs08iyX+DY2/owKY9DIdu193kX33w==} + param-case@2.1.1: resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} @@ -5651,10 +5725,6 @@ packages: resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} engines: {node: '>=18'} - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - parse-path@7.0.0: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} @@ -6005,10 +6075,6 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-ms@9.0.0: - resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} - engines: {node: '>=18'} - pretty-time@1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} @@ -6259,7 +6325,7 @@ packages: resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} engines: {node: '>=16'} peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 typescript: 5.5.4 rollup-plugin-visualizer@5.12.0: @@ -6267,13 +6333,13 @@ packages: engines: {node: '>=14'} hasBin: true peerDependencies: - rollup: ^4.21.0 + rollup: ^4.21.1 peerDependenciesMeta: rollup: optional: true - rollup@4.21.0: - resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} + rollup@4.21.1: + resolution: {integrity: sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -6533,10 +6599,6 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - strip-final-newline@4.0.0: - resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} - engines: {node: '>=18'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -6660,8 +6722,14 @@ packages: tinybench@2.8.0: resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - tinyglobby@0.2.2: - resolution: {integrity: sha512-mZ2sDMaySvi1PkTp4lTo1In2zjU+cY8OvZsfwrDrx3YGRbXPX1/cbPwCR9zkm3O/Fz9Jo0F1HNgIQ1b8BepqyQ==} + tinyexec@0.2.0: + resolution: {integrity: sha512-au8dwv4xKSDR+Fw52csDo3wcDztPdne2oM1o/7LFro4h6bdFmvyUAeAfX40pwDtzHgRFqz1XWaUqgKS2G83/ig==} + + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + + tinyglobby@0.2.5: + resolution: {integrity: sha512-Dlqgt6h0QkoHttG53/WGADNh9QhcjCAIZMTERAVhdpmIBEejSuLI9ZmGKWzB7tweBjlk30+s/ofi4SLmBeTYhw==} engines: {node: '>=12.0.0'} tinypool@0.8.4: @@ -6731,6 +6799,9 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tsx@4.16.5: resolution: {integrity: sha512-ArsiAQHEW2iGaqZ8fTA1nX0a+lN5mNTyuGRRO6OW3H/Yno1y9/t1f9YOI1Cfoqz63VAthn++ZYcbDP7jPflc+A==} engines: {node: '>=18.0.0'} @@ -6842,8 +6913,8 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unimport@3.11.0: - resolution: {integrity: sha512-mPrvWwy+li8TLUeglC7CIREFAbeEMkJ8X2Bhxg4iLdh+HraxjFyxqWv8V+4lzekoGHChx9ofv1qGOfvHBJBl0A==} + unimport@3.11.1: + resolution: {integrity: sha512-DuB1Uoq01LrrXTScxnwOoMSlTXxyKcULguFxbLrMDFcE/CO0ZWHpEiyhovN0mycPt7K6luAHe8laqvwvuoeUPg==} unist-builder@4.0.0: resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} @@ -6879,6 +6950,18 @@ packages: vite: optional: true + unocss@0.62.3: + resolution: {integrity: sha512-CLS6+JIlBobe/iPTz07pehyGDP8VqGJsiE+ZZ3Xkgib3hw76nCqAQF/4mJ8jVoV4C8KvGyVxmHaSSCFOkWmmZg==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.62.3 + vite: 5.4.2 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + unplugin-vue-router@0.10.7: resolution: {integrity: sha512-5KEh7Swc1L2Xh5WOD7yQLeB5bO3iTw+Hst7qMxwmwYcPm9qVrtrRTZUftn2Hj4is17oMKgqacyWadjQzwW5B/Q==} peerDependencies: @@ -7055,8 +7138,8 @@ packages: vue-tsc: optional: true - vite-plugin-inspect@0.8.6: - resolution: {integrity: sha512-iM/smnFRSuDq9UMVAN06fqBbHAofGDtB5yBucsl0QnPCFqQ2TmPIbsSgSR3gUv13qJ8oPE/FFhXlm9g1xX9nzg==} + vite-plugin-inspect@0.8.7: + resolution: {integrity: sha512-/XXou3MVc13A5O9/2Nd6xczjrUwt7ZyI9h8pTnUMkr5SshLcb0PJUOVq2V+XVkdeU4njsqAtmK87THZuO2coGA==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' @@ -7075,7 +7158,7 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -7110,7 +7193,7 @@ packages: hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@vitest/browser': 1.6.0 '@vitest/ui': 1.6.0 happy-dom: '*' @@ -7135,7 +7218,7 @@ packages: hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@vitest/browser': 2.0.5 '@vitest/ui': 2.0.5 happy-dom: '*' @@ -7416,10 +7499,6 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - yoctocolors@2.0.0: - resolution: {integrity: sha512-esbDnt0Z1zI1KgvOZU90hJbL6BkoUbrP9yy7ArNZ6TmxBxydMJTYMf9FZjmwwcA8ZgEQzriQ3hwZ0NYXhlFo8Q==} - engines: {node: '>=18'} - zhead@2.2.4: resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} @@ -7444,6 +7523,11 @@ snapshots: execa: 5.1.1 find-up: 5.0.0 + '@antfu/install-pkg@0.4.0': + dependencies: + package-manager-detector: 0.1.2 + tinyexec: 0.2.0 + '@antfu/utils@0.7.10': {} '@apidevtools/json-schema-ref-parser@11.7.0': @@ -7925,14 +8009,14 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0(jiti@2.0.0-beta.3))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@2.0.0-beta.3))': dependencies: - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.17.1': + '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 debug: 4.3.6(supports-color@9.4.0) @@ -7954,7 +8038,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.9.0': {} + '@eslint/js@9.9.1': {} '@eslint/object-schema@2.1.4': {} @@ -8008,6 +8092,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@iconify/utils@2.1.32': + dependencies: + '@antfu/install-pkg': 0.4.0 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.6(supports-color@9.4.0) + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.1 + transitivePeerDependencies: + - supports-color + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -8030,7 +8126,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.5 '@types/istanbul-reports': 3.0.3 - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@types/yargs': 17.0.28 chalk: 4.1.2 @@ -8131,35 +8227,42 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.3.14(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))': + '@nuxt/devtools-kit@1.3.14(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema execa: 7.2.0 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) - '@nuxt/devtools-ui-kit@1.3.14(@nuxt/devtools@1.3.14(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1))': + '@nuxt/devtools-kit@1.4.1(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': + dependencies: + '@nuxt/kit': link:packages/kit + '@nuxt/schema': link:packages/schema + execa: 7.2.0 + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + + '@nuxt/devtools-ui-kit@1.3.14(@nuxt/devtools@1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1))': dependencies: '@iconify-json/carbon': 1.1.37 '@iconify-json/logos': 1.1.44 '@iconify-json/ri': 1.1.22 '@iconify-json/tabler': 1.1.120 - '@nuxt/devtools': 1.3.14(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-kit': 1.3.14(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools': 1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-kit': 1.3.14(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) '@nuxt/kit': link:packages/kit '@unocss/core': 0.62.2 - '@unocss/nuxt': 0.62.2(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(webpack@5.94.0(esbuild@0.23.1)) + '@unocss/nuxt': 0.62.2(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.94.0(esbuild@0.23.1)) '@unocss/preset-attributify': 0.62.2 '@unocss/preset-icons': 0.62.2 '@unocss/preset-mini': 0.62.2 - '@unocss/reset': 0.62.2 + '@unocss/reset': 0.62.3 '@vueuse/core': 11.0.1(vue@3.4.38(typescript@5.5.4)) '@vueuse/integrations': 11.0.1(focus-trap@7.5.4)(vue@3.4.38(typescript@5.5.4)) '@vueuse/nuxt': 11.0.1(nuxt@packages+nuxt)(vue@3.4.38(typescript@5.5.4)) defu: 6.1.4 focus-trap: 7.5.4 splitpanes: 3.1.5 - unocss: 0.62.2(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.62.3(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) v-lazy-show: 0.2.4(@vue/compiler-core@3.4.38) transitivePeerDependencies: - '@unocss/webpack' @@ -8184,7 +8287,7 @@ snapshots: - vue - webpack - '@nuxt/devtools-wizard@1.3.14': + '@nuxt/devtools-wizard@1.4.1': dependencies: consola: 3.2.3 diff: 5.2.0 @@ -8197,13 +8300,13 @@ snapshots: rc9: 2.1.2 semver: 7.6.3 - '@nuxt/devtools@1.3.14(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))': + '@nuxt/devtools@1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.3.14(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-wizard': 1.3.14 + '@nuxt/devtools-kit': 1.4.1(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-wizard': 1.4.1 '@nuxt/kit': link:packages/kit - '@vue/devtools-core': 7.3.3(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + '@vue/devtools-core': 7.3.3(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) '@vue/devtools-kit': 7.3.3 birpc: 0.2.17 consola: 3.2.3 @@ -8211,7 +8314,6 @@ snapshots: destr: 2.0.3 error-stack-parser-es: 0.1.5 execa: 7.2.0 - fast-glob: 3.3.2 fast-npm-meta: 0.2.2 flatted: 3.3.1 get-port-please: 3.1.2 @@ -8221,7 +8323,7 @@ snapshots: launch-editor: 2.8.1 local-pkg: 0.5.0 magicast: 0.3.4 - nypm: 0.3.9 + nypm: 0.3.11 ohash: 1.1.3 pathe: 1.1.2 perfect-debounce: 1.0.0 @@ -8231,10 +8333,11 @@ snapshots: semver: 7.6.3 simple-git: 3.25.0 sirv: 2.0.4 - unimport: 3.11.0(rollup@4.21.0) - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) - vite-plugin-inspect: 0.8.6(@nuxt/kit@packages+kit)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) - vite-plugin-vue-inspector: 5.1.3(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + tinyglobby: 0.2.5 + unimport: 3.11.1(rollup@4.21.1) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + vite-plugin-inspect: 0.8.7(@nuxt/kit@packages+kit)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + vite-plugin-vue-inspector: 5.1.3(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) which: 3.0.1 ws: 8.18.0 transitivePeerDependencies: @@ -8243,36 +8346,36 @@ snapshots: - supports-color - utf-8-validate - '@nuxt/eslint-config@0.5.2(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': + '@nuxt/eslint-config@0.5.3(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': dependencies: - '@eslint/js': 9.9.0 - '@nuxt/eslint-plugin': 0.5.2(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@eslint/js': 9.9.1 + '@nuxt/eslint-plugin': 0.5.3(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) '@rushstack/eslint-patch': 1.10.4 - '@stylistic/eslint-plugin': 2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4))(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - eslint: 9.9.0(jiti@2.0.0-beta.3) + '@stylistic/eslint-plugin': 2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4))(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + eslint: 9.9.1(jiti@2.0.0-beta.3) eslint-config-flat-gitignore: 0.1.8 eslint-flat-config-utils: 0.3.1 - eslint-plugin-import-x: 3.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - eslint-plugin-jsdoc: 50.2.2(eslint@9.9.0(jiti@2.0.0-beta.3)) - eslint-plugin-regexp: 2.6.0(eslint@9.9.0(jiti@2.0.0-beta.3)) - eslint-plugin-unicorn: 55.0.0(eslint@9.9.0(jiti@2.0.0-beta.3)) - eslint-plugin-vue: 9.27.0(eslint@9.9.0(jiti@2.0.0-beta.3)) + eslint-plugin-import-x: 4.0.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + eslint-plugin-jsdoc: 50.2.2(eslint@9.9.1(jiti@2.0.0-beta.3)) + eslint-plugin-regexp: 2.6.0(eslint@9.9.1(jiti@2.0.0-beta.3)) + eslint-plugin-unicorn: 55.0.0(eslint@9.9.1(jiti@2.0.0-beta.3)) + eslint-plugin-vue: 9.27.0(eslint@9.9.1(jiti@2.0.0-beta.3)) globals: 15.9.0 local-pkg: 0.5.0 pathe: 1.1.2 - tslib: 2.6.3 - vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@2.0.0-beta.3)) + tslib: 2.7.0 + vue-eslint-parser: 9.4.3(eslint@9.9.1(jiti@2.0.0-beta.3)) transitivePeerDependencies: - supports-color - typescript - '@nuxt/eslint-plugin@0.5.2(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': + '@nuxt/eslint-plugin@0.5.3(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - eslint: 9.9.0(jiti@2.0.0-beta.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + eslint: 9.9.1(jiti@2.0.0-beta.3) transitivePeerDependencies: - supports-color - typescript @@ -8285,10 +8388,10 @@ snapshots: string-width: 4.2.3 webpack: 5.94.0 - '@nuxt/scripts@0.7.1(@nuxt/devtools@1.3.14(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.0)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1))': + '@nuxt/scripts@0.7.1(@nuxt/devtools@1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.1)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1))': dependencies: - '@nuxt/devtools-kit': 1.3.14(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-ui-kit': 1.3.14(@nuxt/devtools@1.3.14(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1)) + '@nuxt/devtools-kit': 1.3.14(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-ui-kit': 1.3.14(@nuxt/devtools@1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.4.38)(nuxt@packages+nuxt)(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))(webpack@5.94.0(esbuild@0.23.1)) '@nuxt/kit': link:packages/kit '@types/google.maps': 3.55.12 '@types/stripe-v3': 3.1.33 @@ -8311,7 +8414,7 @@ snapshots: std-env: 3.7.0 third-party-capital: 2.3.0 ufo: 1.5.4 - unimport: 3.11.0(rollup@4.21.0) + unimport: 3.11.1(rollup@4.21.1) unplugin: 1.12.2 unstorage: 1.10.2(ioredis@5.4.1) valibot: 0.38.0(typescript@5.5.4) @@ -8373,7 +8476,7 @@ snapshots: rc9: 2.1.2 std-env: 3.7.0 - '@nuxt/test-utils@3.14.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4))': + '@nuxt/test-utils@3.14.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema @@ -8399,8 +8502,8 @@ snapshots: ufo: 1.5.4 unenv: 1.10.0 unplugin: 1.12.2 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) - vitest-environment-nuxt: 1.0.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + vitest-environment-nuxt: 1.0.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) vue: 3.4.38(typescript@5.5.4) vue-router: 4.4.3(vue@3.4.38(typescript@5.5.4)) optionalDependencies: @@ -8408,7 +8511,7 @@ snapshots: '@vue/test-utils': 2.4.6 happy-dom: 15.0.0 playwright-core: 1.46.1 - vitest: 2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) + vitest: 2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - magicast @@ -8618,139 +8721,137 @@ snapshots: - encoding - supports-color - '@rollup/plugin-alias@5.1.0(rollup@4.21.0)': + '@rollup/plugin-alias@5.1.0(rollup@4.21.1)': dependencies: slash: 4.0.0 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/plugin-commonjs@25.0.7(rollup@4.21.0)': + '@rollup/plugin-commonjs@25.0.7(rollup@4.21.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/plugin-commonjs@26.0.1(rollup@4.21.0)': + '@rollup/plugin-commonjs@26.0.1(rollup@4.21.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 10.4.1 is-reference: 1.2.1 magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/plugin-inject@5.0.5(rollup@4.21.0)': + '@rollup/plugin-inject@5.0.5(rollup@4.21.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) estree-walker: 2.0.2 magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/plugin-json@6.1.0(rollup@4.21.0)': + '@rollup/plugin-json@6.1.0(rollup@4.21.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.0)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/plugin-replace@5.0.7(rollup@4.21.0)': + '@rollup/plugin-replace@5.0.7(rollup@4.21.1)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) magic-string: 0.30.11 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/plugin-terser@0.4.4(rollup@4.21.0)': + '@rollup/plugin-terser@0.4.4(rollup@4.21.1)': dependencies: serialize-javascript: 6.0.2 smob: 1.4.1 terser: 5.27.0 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.0(rollup@4.21.0)': + '@rollup/pluginutils@5.1.0(rollup@4.21.1)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - '@rollup/rollup-android-arm-eabi@4.21.0': + '@rollup/rollup-android-arm-eabi@4.21.1': optional: true - '@rollup/rollup-android-arm64@4.21.0': + '@rollup/rollup-android-arm64@4.21.1': optional: true - '@rollup/rollup-darwin-arm64@4.21.0': + '@rollup/rollup-darwin-arm64@4.21.1': optional: true - '@rollup/rollup-darwin-x64@4.21.0': + '@rollup/rollup-darwin-x64@4.21.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + '@rollup/rollup-linux-arm-gnueabihf@4.21.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.21.0': + '@rollup/rollup-linux-arm-musleabihf@4.21.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.21.0': + '@rollup/rollup-linux-arm64-gnu@4.21.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.21.0': + '@rollup/rollup-linux-arm64-musl@4.21.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.21.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.21.0': + '@rollup/rollup-linux-riscv64-gnu@4.21.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.21.0': + '@rollup/rollup-linux-s390x-gnu@4.21.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.21.0': + '@rollup/rollup-linux-x64-gnu@4.21.1': optional: true - '@rollup/rollup-linux-x64-musl@4.21.0': + '@rollup/rollup-linux-x64-musl@4.21.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.21.0': + '@rollup/rollup-win32-arm64-msvc@4.21.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.21.0': + '@rollup/rollup-win32-ia32-msvc@4.21.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.21.0': + '@rollup/rollup-win32-x64-msvc@4.21.1': optional: true '@rushstack/eslint-patch@1.10.4': {} - '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/core@1.1.2': {} '@shikijs/core@1.12.1': @@ -8801,49 +8902,47 @@ snapshots: '@sindresorhus/merge-streams@2.2.0': {} - '@sindresorhus/merge-streams@4.0.0': {} - - '@stylistic/eslint-plugin-js@2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3))': + '@stylistic/eslint-plugin-js@2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3))': dependencies: '@types/eslint': 9.6.0 acorn: 8.12.1 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) eslint-visitor-keys: 4.0.0 espree: 10.1.0 - '@stylistic/eslint-plugin-jsx@2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3))': + '@stylistic/eslint-plugin-jsx@2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3))': dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3)) + '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3)) '@types/eslint': 9.6.0 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) eslint-visitor-keys: 4.0.0 espree: 10.1.0 estraverse: 5.3.0 picomatch: 4.0.2 - '@stylistic/eslint-plugin-plus@2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3))': + '@stylistic/eslint-plugin-plus@2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3))': dependencies: '@types/eslint': 9.6.0 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) - '@stylistic/eslint-plugin-ts@2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': + '@stylistic/eslint-plugin-ts@2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3)) + '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3)) '@types/eslint': 9.6.0 - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - eslint: 9.9.0(jiti@2.0.0-beta.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + eslint: 9.9.1(jiti@2.0.0-beta.3) transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': + '@stylistic/eslint-plugin@2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3)) - '@stylistic/eslint-plugin-jsx': 2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3)) - '@stylistic/eslint-plugin-plus': 2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3)) - '@stylistic/eslint-plugin-ts': 2.6.4(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3)) + '@stylistic/eslint-plugin-jsx': 2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3)) + '@stylistic/eslint-plugin-plus': 2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3)) + '@stylistic/eslint-plugin-ts': 2.6.4(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) '@types/eslint': 9.6.0 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) transitivePeerDependencies: - supports-color - typescript @@ -8874,14 +8973,14 @@ snapshots: '@types/clean-css@4.2.11': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 source-map: 0.6.1 '@types/clear@0.1.4': {} '@types/connect@3.4.37': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@types/debug@4.1.12': dependencies: @@ -8918,7 +9017,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@types/istanbul-lib-coverage@2.0.5': {} @@ -8946,9 +9045,9 @@ snapshots: '@types/node-sass@4.11.6': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 - '@types/node@20.16.1': + '@types/node@20.16.2': dependencies: undici-types: 6.19.6 @@ -8964,7 +9063,7 @@ snapshots: '@types/sass-loader@8.0.9': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@types/node-sass': 4.11.6 '@types/webpack': 4.41.34 sass: 1.69.4 @@ -8991,7 +9090,7 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 tapable: 2.2.1 webpack: 5.94.0 transitivePeerDependencies: @@ -9013,13 +9112,13 @@ snapshots: '@types/webpack-sources@3.2.1': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@types/source-list-map': 0.1.4 source-map: 0.7.4 '@types/webpack@4.41.34': dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 '@types/tapable': 1.0.10 '@types/uglify-js': 3.17.3 '@types/webpack-sources': 3.2.1 @@ -9034,15 +9133,15 @@ snapshots: '@types/youtube@0.0.50': {} - '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4))(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4))(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/type-utils': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.1.0 - eslint: 9.9.0(jiti@2.0.0-beta.3) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.3.0 + eslint: 9.9.1(jiti@2.0.0-beta.3) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -9052,33 +9151,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': + '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.1.0 + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.3.0 debug: 4.3.6(supports-color@9.4.0) - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.17.0': + '@typescript-eslint/scope-manager@8.3.0': dependencies: - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/visitor-keys': 7.17.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/visitor-keys': 8.3.0 - '@typescript-eslint/scope-manager@8.1.0': + '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/visitor-keys': 8.1.0 - - '@typescript-eslint/type-utils@8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': - dependencies: - '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) debug: 4.3.6(supports-color@9.4.0) ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -9087,24 +9181,9 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@7.17.0': {} - '@typescript-eslint/types@8.1.0': {} - '@typescript-eslint/typescript-estree@7.17.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/visitor-keys': 7.17.0 - debug: 4.3.6(supports-color@9.4.0) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.3.0': {} '@typescript-eslint/typescript-estree@8.1.0(typescript@5.5.4)': dependencies: @@ -9121,38 +9200,42 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.17.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.3.0(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.0.0-beta.3)) - '@typescript-eslint/scope-manager': 7.17.0 - '@typescript-eslint/types': 7.17.0 - '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4) - eslint: 9.9.0(jiti@2.0.0-beta.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/visitor-keys': 8.3.0 + debug: 4.3.6(supports-color@9.4.0) + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@2.0.0-beta.3)) + '@typescript-eslint/scope-manager': 8.3.0 + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) + eslint: 9.9.1(jiti@2.0.0-beta.3) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.0.0-beta.3)) - '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - eslint: 9.9.0(jiti@2.0.0-beta.3) - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@7.17.0': - dependencies: - '@typescript-eslint/types': 7.17.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.1.0': dependencies: '@typescript-eslint/types': 8.1.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.3.0': + dependencies: + '@typescript-eslint/types': 8.3.0 + eslint-visitor-keys: 3.4.3 + '@typescript/vfs@1.5.0': dependencies: debug: 4.3.6(supports-color@9.4.0) @@ -9188,21 +9271,32 @@ snapshots: unhead: 1.10.0 vue: 3.4.38(typescript@5.5.4) - '@unocss/astro@0.62.2(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.62.2(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@unocss/core': 0.62.2 '@unocss/reset': 0.62.2 - '@unocss/vite': 0.62.2(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.62.2(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - supports-color - '@unocss/cli@0.62.2(rollup@4.21.0)': + '@unocss/astro@0.62.3(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/reset': 0.62.3 + '@unocss/vite': 0.62.3(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + optionalDependencies: + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/cli@0.62.2(rollup@4.21.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@unocss/config': 0.62.2 '@unocss/core': 0.62.2 '@unocss/preset-uno': 0.62.2 @@ -9213,7 +9307,26 @@ snapshots: magic-string: 0.30.11 pathe: 1.1.2 perfect-debounce: 1.0.0 - tinyglobby: 0.2.2 + tinyglobby: 0.2.5 + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/cli@0.62.3(rollup@4.21.1)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) + '@unocss/config': 0.62.3 + '@unocss/core': 0.62.3 + '@unocss/preset-uno': 0.62.3 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + magic-string: 0.30.11 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.5 transitivePeerDependencies: - rollup - supports-color @@ -9225,12 +9338,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/config@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + unconfig: 0.5.5 + transitivePeerDependencies: + - supports-color + '@unocss/core@0.62.2': {} + '@unocss/core@0.62.3': {} + '@unocss/extractor-arbitrary-variants@0.62.2': dependencies: '@unocss/core': 0.62.2 + '@unocss/extractor-arbitrary-variants@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/inspector@0.62.2': dependencies: '@unocss/core': 0.62.2 @@ -9238,7 +9364,14 @@ snapshots: gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/nuxt@0.62.2(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(webpack@5.94.0(esbuild@0.23.1))': + '@unocss/inspector@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/rule-utils': 0.62.3 + gzip-size: 6.0.0 + sirv: 2.0.4 + + '@unocss/nuxt@0.62.2(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.94.0(esbuild@0.23.1))': dependencies: '@nuxt/kit': link:packages/kit '@unocss/config': 0.62.2 @@ -9251,9 +9384,9 @@ snapshots: '@unocss/preset-web-fonts': 0.62.2 '@unocss/preset-wind': 0.62.2 '@unocss/reset': 0.62.2 - '@unocss/vite': 0.62.2(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) - '@unocss/webpack': 0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)) - unocss: 0.62.2(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.62.2(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/webpack': 0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)) + unocss: 0.62.2(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - postcss - rollup @@ -9269,7 +9402,19 @@ snapshots: css-tree: 2.3.1 magic-string: 0.30.11 postcss: 8.4.41 - tinyglobby: 0.2.2 + tinyglobby: 0.2.5 + transitivePeerDependencies: + - supports-color + + '@unocss/postcss@0.62.3(postcss@8.4.41)': + dependencies: + '@unocss/config': 0.62.3 + '@unocss/core': 0.62.3 + '@unocss/rule-utils': 0.62.3 + css-tree: 2.3.1 + magic-string: 0.30.11 + postcss: 8.4.41 + tinyglobby: 0.2.5 transitivePeerDependencies: - supports-color @@ -9277,6 +9422,10 @@ snapshots: dependencies: '@unocss/core': 0.62.2 + '@unocss/preset-attributify@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-icons@0.62.2': dependencies: '@iconify/utils': 2.1.30 @@ -9285,21 +9434,44 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/preset-icons@0.62.3': + dependencies: + '@iconify/utils': 2.1.32 + '@unocss/core': 0.62.3 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) + transitivePeerDependencies: + - supports-color + '@unocss/preset-mini@0.62.2': dependencies: '@unocss/core': 0.62.2 '@unocss/extractor-arbitrary-variants': 0.62.2 '@unocss/rule-utils': 0.62.2 + '@unocss/preset-mini@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/extractor-arbitrary-variants': 0.62.3 + '@unocss/rule-utils': 0.62.3 + '@unocss/preset-tagify@0.62.2': dependencies: '@unocss/core': 0.62.2 + '@unocss/preset-tagify@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-typography@0.62.2': dependencies: '@unocss/core': 0.62.2 '@unocss/preset-mini': 0.62.2 + '@unocss/preset-typography@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-mini': 0.62.3 + '@unocss/preset-uno@0.62.2': dependencies: '@unocss/core': 0.62.2 @@ -9307,26 +9479,53 @@ snapshots: '@unocss/preset-wind': 0.62.2 '@unocss/rule-utils': 0.62.2 + '@unocss/preset-uno@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-mini': 0.62.3 + '@unocss/preset-wind': 0.62.3 + '@unocss/rule-utils': 0.62.3 + '@unocss/preset-web-fonts@0.62.2': dependencies: '@unocss/core': 0.62.2 ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) + '@unocss/preset-web-fonts@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) + '@unocss/preset-wind@0.62.2': dependencies: '@unocss/core': 0.62.2 '@unocss/preset-mini': 0.62.2 '@unocss/rule-utils': 0.62.2 + '@unocss/preset-wind@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/preset-mini': 0.62.3 + '@unocss/rule-utils': 0.62.3 + '@unocss/reset@0.62.2': {} + '@unocss/reset@0.62.3': {} + '@unocss/rule-utils@0.62.2': dependencies: '@unocss/core': 0.62.2 magic-string: 0.30.11 + '@unocss/rule-utils@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + magic-string: 0.30.11 + '@unocss/scope@0.62.2': {} + '@unocss/scope@0.62.3': {} + '@unocss/transformer-attributify-jsx-babel@0.62.2': dependencies: '@babel/core': 7.25.2 @@ -9336,28 +9535,55 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/transformer-attributify-jsx-babel@0.62.3': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@unocss/core': 0.62.3 + transitivePeerDependencies: + - supports-color + '@unocss/transformer-attributify-jsx@0.62.2': dependencies: '@unocss/core': 0.62.2 + '@unocss/transformer-attributify-jsx@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/transformer-compile-class@0.62.2': dependencies: '@unocss/core': 0.62.2 + '@unocss/transformer-compile-class@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/transformer-directives@0.62.2': dependencies: '@unocss/core': 0.62.2 '@unocss/rule-utils': 0.62.2 css-tree: 2.3.1 + '@unocss/transformer-directives@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + '@unocss/rule-utils': 0.62.3 + css-tree: 2.3.1 + '@unocss/transformer-variant-group@0.62.2': dependencies: '@unocss/core': 0.62.2 - '@unocss/vite@0.62.2(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))': + '@unocss/transformer-variant-group@0.62.3': + dependencies: + '@unocss/core': 0.62.3 + + '@unocss/vite@0.62.2(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@unocss/config': 0.62.2 '@unocss/core': 0.62.2 '@unocss/inspector': 0.62.2 @@ -9365,21 +9591,38 @@ snapshots: '@unocss/transformer-directives': 0.62.2 chokidar: 3.6.0 magic-string: 0.30.11 - tinyglobby: 0.2.2 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + tinyglobby: 0.2.5 + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - supports-color - '@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1))': + '@unocss/vite@0.62.3(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) + '@unocss/config': 0.62.3 + '@unocss/core': 0.62.3 + '@unocss/inspector': 0.62.3 + '@unocss/scope': 0.62.3 + '@unocss/transformer-directives': 0.62.3 + chokidar: 3.6.0 + magic-string: 0.30.11 + tinyglobby: 0.2.5 + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + transitivePeerDependencies: + - rollup + - supports-color + + '@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@unocss/config': 0.62.2 '@unocss/core': 0.62.2 chokidar: 3.6.0 magic-string: 0.30.11 - tinyglobby: 0.2.2 + tinyglobby: 0.2.5 unplugin: 1.12.2 webpack: 5.94.0(esbuild@0.23.1) webpack-sources: 3.2.3 @@ -9423,22 +9666,22 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))': + '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vue: 3.4.38(typescript@5.5.4) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.2(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))': + '@vitejs/plugin-vue@5.1.2(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.38(typescript@5.5.4))': dependencies: - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vue: 3.4.38(typescript@5.5.4) - '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))': + '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -9452,7 +9695,7 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) + vitest: 2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -9530,10 +9773,10 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.0.8 - '@vue-macros/common@1.12.2(rollup@4.21.0)(vue@3.4.38(typescript@5.5.4))': + '@vue-macros/common@1.12.2(rollup@4.21.1)(vue@3.4.38(typescript@5.5.4))': dependencies: '@babel/types': 7.25.2 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@vue/compiler-sfc': 3.4.38 ast-kit: 1.0.1 local-pkg: 0.5.0 @@ -9609,14 +9852,14 @@ snapshots: '@vue/devtools-api@6.6.3': {} - '@vue/devtools-core@7.3.3(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))': + '@vue/devtools-core@7.3.3(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@vue/devtools-kit': 7.3.3 '@vue/devtools-shared': 7.3.4 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + vite-hot-client: 0.2.3(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - vite @@ -10801,31 +11044,32 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@3.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4): + eslint-plugin-import-x@4.0.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 7.17.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) debug: 4.3.6(supports-color@9.4.0) doctrine: 3.0.0 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.6 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.3 stable-hash: 0.0.4 - tslib: 2.6.3 + tslib: 2.7.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsdoc@50.2.2(eslint@9.9.0(jiti@2.0.0-beta.3)): + eslint-plugin-jsdoc@50.2.2(eslint@9.9.1(jiti@2.0.0-beta.3)): dependencies: '@es-joy/jsdoccomment': 0.48.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.6(supports-color@9.4.0) escape-string-regexp: 4.0.0 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 @@ -10837,38 +11081,38 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@3.2.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@2.0.0-beta.3))): + eslint-plugin-perfectionist@3.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@2.0.0-beta.3))): dependencies: - '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.0.0-beta.3))(typescript@5.5.4) - eslint: 9.9.0(jiti@2.0.0-beta.3) + '@typescript-eslint/types': 8.3.0 + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@2.0.0-beta.3))(typescript@5.5.4) + eslint: 9.9.1(jiti@2.0.0-beta.3) minimatch: 10.0.1 natural-compare-lite: 1.4.0 optionalDependencies: - vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@2.0.0-beta.3)) + vue-eslint-parser: 9.4.3(eslint@9.9.1(jiti@2.0.0-beta.3)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-regexp@2.6.0(eslint@9.9.0(jiti@2.0.0-beta.3)): + eslint-plugin-regexp@2.6.0(eslint@9.9.1(jiti@2.0.0-beta.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.0.0-beta.3)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@2.0.0-beta.3)) '@eslint-community/regexpp': 4.11.0 comment-parser: 1.4.1 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-unicorn@55.0.0(eslint@9.9.0(jiti@2.0.0-beta.3)): + eslint-plugin-unicorn@55.0.0(eslint@9.9.1(jiti@2.0.0-beta.3)): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.0.0-beta.3)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@2.0.0-beta.3)) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) esquery: 1.6.0 globals: 15.9.0 indent-string: 4.0.0 @@ -10881,16 +11125,16 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@2.0.0-beta.3)): + eslint-plugin-vue@9.27.0(eslint@9.9.1(jiti@2.0.0-beta.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.0.0-beta.3)) - eslint: 9.9.0(jiti@2.0.0-beta.3) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@2.0.0-beta.3)) + eslint: 9.9.1(jiti@2.0.0-beta.3) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.1 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@2.0.0-beta.3)) + vue-eslint-parser: 9.4.3(eslint@9.9.1(jiti@2.0.0-beta.3)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -10910,10 +11154,10 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-typegen@0.3.1(eslint@9.9.0(jiti@2.0.0-beta.3)): + eslint-typegen@0.3.1(eslint@9.9.1(jiti@2.0.0-beta.3)): dependencies: '@types/eslint': 9.6.0 - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) json-schema-to-typescript-lite: 14.1.0 ohash: 1.1.3 @@ -10921,13 +11165,13 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.9.0(jiti@2.0.0-beta.3): + eslint@9.9.1(jiti@2.0.0-beta.3): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.0.0-beta.3)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@2.0.0-beta.3)) '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.1 + '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.9.0 + '@eslint/js': 9.9.1 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -11036,21 +11280,6 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.3.1: - dependencies: - '@sindresorhus/merge-streams': 4.0.0 - cross-spawn: 7.0.3 - figures: 6.1.0 - get-stream: 9.0.1 - human-signals: 8.0.0 - is-plain-obj: 4.1.0 - is-stream: 4.0.1 - npm-run-path: 5.3.0 - pretty-ms: 9.0.0 - signal-exit: 4.1.0 - strip-final-newline: 4.0.0 - yoctocolors: 2.0.0 - extend@3.0.2: {} externality@1.0.2: @@ -11092,10 +11321,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - figures@6.1.0: - dependencies: - is-unicode-supported: 2.0.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -11236,11 +11461,6 @@ snapshots: get-stream@8.0.1: {} - get-stream@9.0.1: - dependencies: - '@sec-ant/readable-stream': 0.4.1 - is-stream: 4.0.1 - get-tsconfig@4.7.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -11251,7 +11471,7 @@ snapshots: consola: 3.2.3 defu: 6.1.4 node-fetch-native: 1.6.4 - nypm: 0.3.9 + nypm: 0.3.11 ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.0 @@ -11493,7 +11713,7 @@ snapshots: html-tags@3.3.1: {} - html-validate@8.21.0(vitest@1.6.0(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0)): + html-validate@8.21.0(vitest@1.6.0(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0)): dependencies: '@babel/code-frame': 7.24.7 '@html-validate/stylish': 4.2.0 @@ -11507,7 +11727,7 @@ snapshots: prompts: 2.4.2 semver: 7.6.3 optionalDependencies: - vitest: 1.6.0(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) + vitest: 1.6.0(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0) html-void-elements@3.0.0: {} @@ -11550,8 +11770,6 @@ snapshots: human-signals@5.0.0: {} - human-signals@8.0.0: {} - hyperdyperid@1.2.0: {} iconv-lite@0.6.3: @@ -11591,6 +11809,16 @@ snapshots: transitivePeerDependencies: - supports-color + impound@0.1.0(rollup@4.21.1): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) + mlly: 1.7.1 + pathe: 1.1.2 + unenv: 1.10.0 + unplugin: 1.12.2 + transitivePeerDependencies: + - rollup + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -11752,8 +11980,6 @@ snapshots: is-stream@3.0.0: {} - is-stream@4.0.1: {} - is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -11766,8 +11992,6 @@ snapshots: dependencies: which-typed-array: 1.1.14 - is-unicode-supported@2.0.0: {} - is-weakmap@2.0.1: {} is-weakset@2.0.2: @@ -11831,7 +12055,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.16.1 + '@types/node': 20.16.2 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -11839,13 +12063,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12548,6 +12772,8 @@ snapshots: nanoid@5.0.7: {} + nanotar@0.1.1: {} + natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} @@ -12558,14 +12784,14 @@ snapshots: dependencies: '@cloudflare/kv-asset-handler': 0.3.3 '@netlify/functions': 2.7.0(@opentelemetry/api@1.9.0) - '@rollup/plugin-alias': 5.1.0(rollup@4.21.0) - '@rollup/plugin-commonjs': 26.0.1(rollup@4.21.0) - '@rollup/plugin-inject': 5.0.5(rollup@4.21.0) - '@rollup/plugin-json': 6.1.0(rollup@4.21.0) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.21.0) - '@rollup/plugin-replace': 5.0.7(rollup@4.21.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.21.0) - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/plugin-alias': 5.1.0(rollup@4.21.1) + '@rollup/plugin-commonjs': 26.0.1(rollup@4.21.1) + '@rollup/plugin-inject': 5.0.5(rollup@4.21.1) + '@rollup/plugin-json': 6.1.0(rollup@4.21.1) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.21.1) + '@rollup/plugin-replace': 5.0.7(rollup@4.21.1) + '@rollup/plugin-terser': 0.4.4(rollup@4.21.1) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@types/http-proxy': 1.17.14 '@vercel/nft': 0.27.2(encoding@0.1.13) archiver: 7.0.1 @@ -12611,8 +12837,8 @@ snapshots: pkg-types: 1.2.0 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.21.0 - rollup-plugin-visualizer: 5.12.0(rollup@4.21.0) + rollup: 4.21.1 + rollup-plugin-visualizer: 5.12.0(rollup@4.21.1) scule: 1.3.0 semver: 7.6.3 serve-placeholder: 2.0.2 @@ -12622,7 +12848,7 @@ snapshots: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.10.0 - unimport: 3.11.0(rollup@4.21.0) + unimport: 3.11.1(rollup@4.21.1) unstorage: 1.10.2(ioredis@5.4.1) untyped: 1.4.2 unwasm: 0.3.9 @@ -12652,14 +12878,14 @@ snapshots: dependencies: '@cloudflare/kv-asset-handler': 0.3.3 '@netlify/functions': 2.7.0(@opentelemetry/api@1.9.0) - '@rollup/plugin-alias': 5.1.0(rollup@4.21.0) - '@rollup/plugin-commonjs': 25.0.7(rollup@4.21.0) - '@rollup/plugin-inject': 5.0.5(rollup@4.21.0) - '@rollup/plugin-json': 6.1.0(rollup@4.21.0) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.21.0) - '@rollup/plugin-replace': 5.0.7(rollup@4.21.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.21.0) - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/plugin-alias': 5.1.0(rollup@4.21.1) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.21.1) + '@rollup/plugin-inject': 5.0.5(rollup@4.21.1) + '@rollup/plugin-json': 6.1.0(rollup@4.21.1) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.21.1) + '@rollup/plugin-replace': 5.0.7(rollup@4.21.1) + '@rollup/plugin-terser': 0.4.4(rollup@4.21.1) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) '@types/http-proxy': 1.17.14 '@vercel/nft': 0.26.5(encoding@0.1.13) archiver: 7.0.1 @@ -12703,8 +12929,8 @@ snapshots: pkg-types: 1.2.0 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.21.0 - rollup-plugin-visualizer: 5.12.0(rollup@4.21.0) + rollup: 4.21.1 + rollup-plugin-visualizer: 5.12.0(rollup@4.21.1) scule: 1.3.0 semver: 7.6.3 serve-placeholder: 2.0.2 @@ -12714,7 +12940,7 @@ snapshots: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.10.0 - unimport: 3.11.0(rollup@4.21.0) + unimport: 3.11.1(rollup@4.21.1) unstorage: 1.10.2(ioredis@5.4.1) unwasm: 0.3.9 transitivePeerDependencies: @@ -12806,7 +13032,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nuxi@3.12.0: + nuxi@3.13.1: optionalDependencies: fsevents: 2.3.3 @@ -12830,7 +13056,7 @@ snapshots: transitivePeerDependencies: - supports-color - nypm@0.3.9: + nypm@0.3.11: dependencies: citty: 0.1.6 consola: 3.2.3 @@ -12956,6 +13182,8 @@ snapshots: package-json-from-dist@1.0.0: {} + package-manager-detector@0.1.2: {} + param-case@2.1.1: dependencies: no-case: 2.3.2 @@ -13000,8 +13228,6 @@ snapshots: index-to-position: 0.1.2 type-fest: 4.20.1 - parse-ms@4.0.0: {} - parse-path@7.0.0: dependencies: protocols: 2.0.1 @@ -13308,10 +13534,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 - pretty-ms@9.0.0: - dependencies: - parse-ms: 4.0.0 - pretty-time@1.1.0: {} process-nextick-args@2.0.1: {} @@ -13642,43 +13864,43 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.0 - rollup-plugin-dts@6.1.1(rollup@4.21.0)(typescript@5.5.4): + rollup-plugin-dts@6.1.1(rollup@4.21.1)(typescript@5.5.4): dependencies: magic-string: 0.30.11 - rollup: 4.21.0 + rollup: 4.21.1 typescript: 5.5.4 optionalDependencies: '@babel/code-frame': 7.24.7 - rollup-plugin-visualizer@5.12.0(rollup@4.21.0): + rollup-plugin-visualizer@5.12.0(rollup@4.21.1): dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.21.0 + rollup: 4.21.1 - rollup@4.21.0: + rollup@4.21.1: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.0 - '@rollup/rollup-android-arm64': 4.21.0 - '@rollup/rollup-darwin-arm64': 4.21.0 - '@rollup/rollup-darwin-x64': 4.21.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 - '@rollup/rollup-linux-arm-musleabihf': 4.21.0 - '@rollup/rollup-linux-arm64-gnu': 4.21.0 - '@rollup/rollup-linux-arm64-musl': 4.21.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 - '@rollup/rollup-linux-riscv64-gnu': 4.21.0 - '@rollup/rollup-linux-s390x-gnu': 4.21.0 - '@rollup/rollup-linux-x64-gnu': 4.21.0 - '@rollup/rollup-linux-x64-musl': 4.21.0 - '@rollup/rollup-win32-arm64-msvc': 4.21.0 - '@rollup/rollup-win32-ia32-msvc': 4.21.0 - '@rollup/rollup-win32-x64-msvc': 4.21.0 + '@rollup/rollup-android-arm-eabi': 4.21.1 + '@rollup/rollup-android-arm64': 4.21.1 + '@rollup/rollup-darwin-arm64': 4.21.1 + '@rollup/rollup-darwin-x64': 4.21.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.1 + '@rollup/rollup-linux-arm-musleabihf': 4.21.1 + '@rollup/rollup-linux-arm64-gnu': 4.21.1 + '@rollup/rollup-linux-arm64-musl': 4.21.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.1 + '@rollup/rollup-linux-riscv64-gnu': 4.21.1 + '@rollup/rollup-linux-s390x-gnu': 4.21.1 + '@rollup/rollup-linux-x64-gnu': 4.21.1 + '@rollup/rollup-linux-x64-musl': 4.21.1 + '@rollup/rollup-win32-arm64-msvc': 4.21.1 + '@rollup/rollup-win32-ia32-msvc': 4.21.1 + '@rollup/rollup-win32-x64-msvc': 4.21.1 fsevents: 2.3.3 run-applescript@5.0.0: @@ -13954,8 +14176,6 @@ snapshots: strip-final-newline@3.0.0: {} - strip-final-newline@4.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -14007,7 +14227,7 @@ snapshots: synckit@0.9.1: dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.3 + tslib: 2.7.0 system-architecture@0.1.0: {} @@ -14083,7 +14303,11 @@ snapshots: tinybench@2.8.0: {} - tinyglobby@0.2.2: + tinyexec@0.2.0: {} + + tinyexec@0.3.0: {} + + tinyglobby@0.2.5: dependencies: fdir: 6.2.0(picomatch@4.0.2) picomatch: 4.0.2 @@ -14128,6 +14352,8 @@ snapshots: tslib@2.6.3: {} + tslib@2.7.0: {} + tsx@4.16.5: dependencies: esbuild: 0.21.5 @@ -14184,12 +14410,12 @@ snapshots: unbuild@3.0.0-rc.7(sass@1.69.4)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4)): dependencies: - '@rollup/plugin-alias': 5.1.0(rollup@4.21.0) - '@rollup/plugin-commonjs': 26.0.1(rollup@4.21.0) - '@rollup/plugin-json': 6.1.0(rollup@4.21.0) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.21.0) - '@rollup/plugin-replace': 5.0.7(rollup@4.21.0) - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/plugin-alias': 5.1.0(rollup@4.21.1) + '@rollup/plugin-commonjs': 26.0.1(rollup@4.21.1) + '@rollup/plugin-json': 6.1.0(rollup@4.21.1) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.21.1) + '@rollup/plugin-replace': 5.0.7(rollup@4.21.1) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) citty: 0.1.6 consola: 3.2.3 defu: 6.1.4 @@ -14203,8 +14429,8 @@ snapshots: pathe: 1.1.2 pkg-types: 1.2.0 pretty-bytes: 6.1.1 - rollup: 4.21.0 - rollup-plugin-dts: 6.1.1(rollup@4.21.0)(typescript@5.5.4) + rollup: 4.21.1 + rollup-plugin-dts: 6.1.1(rollup@4.21.1)(typescript@5.5.4) scule: 1.3.0 ufo: 1.5.4 untyped: 1.4.2 @@ -14267,9 +14493,9 @@ snapshots: trough: 2.2.0 vfile: 6.0.1 - unimport@3.11.0(rollup@4.21.0): + unimport@3.11.1(rollup@4.21.1): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) acorn: 8.12.1 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 @@ -14314,10 +14540,10 @@ snapshots: universalify@2.0.0: {} - unocss@0.62.2(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)): + unocss@0.62.2(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.62.2(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) - '@unocss/cli': 0.62.2(rollup@4.21.0) + '@unocss/astro': 0.62.2(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/cli': 0.62.2(rollup@4.21.1) '@unocss/core': 0.62.2 '@unocss/extractor-arbitrary-variants': 0.62.2 '@unocss/postcss': 0.62.2(postcss@8.4.41) @@ -14335,20 +14561,50 @@ snapshots: '@unocss/transformer-compile-class': 0.62.2 '@unocss/transformer-directives': 0.62.2 '@unocss/transformer-variant-group': 0.62.2 - '@unocss/vite': 0.62.2(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.62.2(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - '@unocss/webpack': 0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)) - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + '@unocss/webpack': 0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - postcss - rollup - supports-color - unplugin-vue-router@0.10.7(rollup@4.21.0)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): + unocss@0.62.3(@unocss/webpack@0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)): + dependencies: + '@unocss/astro': 0.62.3(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/cli': 0.62.3(rollup@4.21.1) + '@unocss/core': 0.62.3 + '@unocss/extractor-arbitrary-variants': 0.62.3 + '@unocss/postcss': 0.62.3(postcss@8.4.41) + '@unocss/preset-attributify': 0.62.3 + '@unocss/preset-icons': 0.62.3 + '@unocss/preset-mini': 0.62.3 + '@unocss/preset-tagify': 0.62.3 + '@unocss/preset-typography': 0.62.3 + '@unocss/preset-uno': 0.62.3 + '@unocss/preset-web-fonts': 0.62.3 + '@unocss/preset-wind': 0.62.3 + '@unocss/reset': 0.62.3 + '@unocss/transformer-attributify-jsx': 0.62.3 + '@unocss/transformer-attributify-jsx-babel': 0.62.3 + '@unocss/transformer-compile-class': 0.62.3 + '@unocss/transformer-directives': 0.62.3 + '@unocss/transformer-variant-group': 0.62.3 + '@unocss/vite': 0.62.3(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)) + optionalDependencies: + '@unocss/webpack': 0.62.2(rollup@4.21.1)(webpack@5.94.0(esbuild@0.23.1)) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unplugin-vue-router@0.10.7(rollup@4.21.1)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): dependencies: '@babel/types': 7.25.2 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) - '@vue-macros/common': 1.12.2(rollup@4.21.0)(vue@3.4.38(typescript@5.5.4)) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) + '@vue-macros/common': 1.12.2(rollup@4.21.1)(vue@3.4.38(typescript@5.5.4)) ast-walker-scope: 0.6.2 chokidar: 3.6.0 fast-glob: 3.3.2 @@ -14475,17 +14731,17 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)): + vite-hot-client@0.2.3(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)): dependencies: - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) - vite-node@1.6.0(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0): + vite-node@1.6.0(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0): dependencies: cac: 6.7.14 debug: 4.3.6(supports-color@9.4.0) pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -14497,13 +14753,13 @@ snapshots: - supports-color - terser - vite-node@2.0.5(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0): + vite-node@2.0.5(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0): dependencies: cac: 6.7.14 debug: 4.3.6(supports-color@9.4.0) pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -14515,7 +14771,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.7.2(eslint@9.9.0(jiti@2.0.0-beta.3))(optionator@0.9.3)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.29(typescript@5.5.4)): + vite-plugin-checker@0.7.2(eslint@9.9.1(jiti@2.0.0-beta.3))(optionator@0.9.3)(typescript@5.5.4)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.29(typescript@5.5.4)): dependencies: '@babel/code-frame': 7.24.7 ansi-escapes: 4.3.2 @@ -14527,21 +14783,21 @@ snapshots: npm-run-path: 4.0.1 strip-ansi: 6.0.1 tiny-invariant: 1.3.1 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 optionalDependencies: - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) optionator: 0.9.3 typescript: 5.5.4 vue-tsc: 2.0.29(typescript@5.5.4) - vite-plugin-inspect@0.8.6(@nuxt/kit@packages+kit)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-inspect@0.8.7(@nuxt/kit@packages+kit)(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) debug: 4.3.6(supports-color@9.4.0) error-stack-parser-es: 0.1.5 fs-extra: 11.2.0 @@ -14549,14 +14805,14 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) optionalDependencies: '@nuxt/kit': link:packages/kit transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-inspector@5.1.3(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-vue-inspector@5.1.3(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0)): dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.25.2) @@ -14567,24 +14823,24 @@ snapshots: '@vue/compiler-dom': 3.4.38 kolorist: 1.8.0 magic-string: 0.30.11 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - supports-color - vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0): + vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0): dependencies: esbuild: 0.21.5 postcss: 8.4.41 - rollup: 4.21.0 + rollup: 4.21.1 optionalDependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 fsevents: 2.3.3 sass: 1.69.4 terser: 5.27.0 - vitest-environment-nuxt@1.0.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): + vitest-environment-nuxt@1.0.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): dependencies: - '@nuxt/test-utils': 3.14.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + '@nuxt/test-utils': 3.14.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.38)(vue@3.4.38(typescript@5.5.4)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@15.0.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.46.1)(vite@5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -14603,7 +14859,7 @@ snapshots: - vue - vue-router - vitest@1.6.0(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0): + vitest@1.6.0(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -14622,11 +14878,11 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) - vite-node: 1.6.0(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + vite-node: 1.6.0(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 happy-dom: 15.0.0 transitivePeerDependencies: - less @@ -14638,7 +14894,7 @@ snapshots: - supports-color - terser - vitest@2.0.5(@types/node@20.16.1)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0): + vitest@2.0.5(@types/node@20.16.2)(happy-dom@15.0.0)(sass@1.69.4)(terser@5.27.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -14656,11 +14912,11 @@ snapshots: tinybench: 2.8.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) - vite-node: 2.0.5(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0) + vite: 5.4.2(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) + vite-node: 2.0.5(@types/node@20.16.2)(sass@1.69.4)(terser@5.27.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.16.1 + '@types/node': 20.16.2 happy-dom: 15.0.0 transitivePeerDependencies: - less @@ -14709,10 +14965,10 @@ snapshots: vue-devtools-stub@0.1.0: {} - vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@2.0.0-beta.3)): + vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@2.0.0-beta.3)): dependencies: debug: 4.3.6(supports-color@9.4.0) - eslint: 9.9.0(jiti@2.0.0-beta.3) + eslint: 9.9.1(jiti@2.0.0-beta.3) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -14989,8 +15245,6 @@ snapshots: yocto-queue@1.0.0: {} - yoctocolors@2.0.0: {} - zhead@2.2.4: {} zip-stream@6.0.1: diff --git a/scripts/_utils.ts b/scripts/_utils.ts index 9e7737f506..fa28f92e25 100644 --- a/scripts/_utils.ts +++ b/scripts/_utils.ts @@ -1,9 +1,9 @@ -import { execSync } from 'node:child_process' import { promises as fsp } from 'node:fs' import { $fetch } from 'ofetch' import { resolve } from 'pathe' -import { globby } from 'globby' -import { execaSync } from 'execa' +import { compare } from 'semver' +import { glob } from 'tinyglobby' +import { exec } from 'tinyexec' import { determineSemverChange, getGitDiff, loadChangelogConfig, parseCommits } from 'changelogen' export interface Dep { @@ -43,7 +43,7 @@ export async function loadPackage (dir: string) { export async function loadWorkspace (dir: string) { const workspacePkg = await loadPackage(dir) - const pkgDirs = (await globby(['packages/*'], { onlyDirectories: true })).sort() + const pkgDirs = (await glob(['packages/*'], { onlyDirectories: true })).sort() const packages: Package[] = [] @@ -106,9 +106,27 @@ export async function determineBumpType () { return determineSemverChange(commits, config) } +export async function getLatestTag () { + const { stdout: latestTag } = await exec('git', ['describe', '--tags', '--abbrev=0']) + return latestTag.trim() +} + +export async function getLatestReleasedTag () { + const latestReleasedTag = await exec('git', ['tag', '-l']).then(r => r.stdout.trim().split('\n').filter(t => /v3\.\d+\.\d+/.test(t)).sort(compare)).then(r => r.pop()!.trim()) + return latestReleasedTag +} + +export async function getPreviousReleasedCommits () { + const config = await loadChangelogConfig(process.cwd()) + const latestTag = await getLatestTag() + const latestReleasedTag = await getLatestReleasedTag() + const commits = parseCommits(await getGitDiff(latestTag, latestReleasedTag), config) + return commits +} + export async function getLatestCommits () { const config = await loadChangelogConfig(process.cwd()) - const latestTag = execaSync('git', ['describe', '--tags', '--abbrev=0']).stdout + const latestTag = await getLatestTag() return parseCommits(await getGitDiff(latestTag), config) } @@ -116,7 +134,7 @@ export async function getLatestCommits () { export async function getContributors () { const contributors = [] as Array<{ name: string, username: string }> const emails = new Set() - const latestTag = execSync('git describe --tags --abbrev=0').toString().trim() + const latestTag = await getLatestTag() const rawCommits = await getGitDiff(latestTag) for (const commit of rawCommits) { if (emails.has(commit.author.email) || commit.author.name === 'renovate[bot]') { continue } diff --git a/scripts/update-changelog.ts b/scripts/update-changelog.ts index 7da75bb731..eb16f6c47c 100644 --- a/scripts/update-changelog.ts +++ b/scripts/update-changelog.ts @@ -3,15 +3,19 @@ import { $fetch } from 'ofetch' import { inc } from 'semver' import { generateMarkDown, getCurrentGitBranch, loadChangelogConfig } from 'changelogen' import { consola } from 'consola' -import { determineBumpType, getContributors, getLatestCommits, loadWorkspace } from './_utils' +import { determineBumpType, getContributors, getLatestCommits, getLatestReleasedTag, getLatestTag, getPreviousReleasedCommits, loadWorkspace } from './_utils' + +const handleSeparateBranch = true async function main () { const releaseBranch = await getCurrentGitBranch() const workspace = await loadWorkspace(process.cwd()) const config = await loadChangelogConfig(process.cwd(), {}) + const prevMessages = new Set(handleSeparateBranch ? await getPreviousReleasedCommits().then(r => r.map(c => c.message)) : []) + const commits = await getLatestCommits().then(commits => commits.filter( - c => config.types[c.type] && !(c.type === 'chore' && c.scope === 'deps'), + c => config.types[c.type] && !(c.type === 'chore' && c.scope === 'deps') && !prevMessages.has(c.message), )) const bumpType = await determineBumpType() || 'patch' @@ -38,6 +42,9 @@ async function main () { const [currentPR] = await $fetch(`https://api.github.com/repos/nuxt/nuxt/pulls?head=nuxt:v${newVersion}`) const contributors = await getContributors() + const latestTag = await getLatestTag() + const previousReleasedTag = handleSeparateBranch ? await getLatestReleasedTag() : latestTag + const releaseNotes = [ currentPR?.body.replace(/## 👉 Changelog[\s\S]*$/, '') || `> ${newVersion} is the next ${bumpType} release.\n>\n> **Timetable**: to be announced.`, '## 👉 Changelog', @@ -45,7 +52,8 @@ async function main () { .replace(/^## v.*\n/, '') .replace(`...${releaseBranch}`, `...v${newVersion}`) .replace(/### ❤️ Contributors[\s\S]*$/, '') - .replace(/[\n\r]+/g, '\n'), + .replace(/[\n\r]+/g, '\n') + .replace(latestTag, previousReleasedTag), '### ❤️ Contributors', contributors.map(c => `- ${c.name} (@${c.username})`).join('\n'), ].join('\n') diff --git a/test/bundle.test.ts b/test/bundle.test.ts index d61144460f..3f7ff98854 100644 --- a/test/bundle.test.ts +++ b/test/bundle.test.ts @@ -1,8 +1,8 @@ import { fileURLToPath } from 'node:url' import fsp from 'node:fs/promises' import { beforeAll, describe, expect, it } from 'vitest' -import { execaCommand } from 'execa' -import { globby } from 'globby' +import { exec } from 'tinyexec' +import { glob } from 'tinyglobby' import { join } from 'pathe' describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM_CI)('minimal nuxt application', () => { @@ -10,15 +10,15 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM beforeAll(async () => { await Promise.all([ - execaCommand(`pnpm nuxi build ${rootDir}`, { env: { EXTERNAL_VUE: 'false' } }), - execaCommand(`pnpm nuxi build ${rootDir}`, { env: { EXTERNAL_VUE: 'true' } }), + exec('pnpm', ['nuxi', 'build', rootDir], { nodeOptions: { env: { EXTERNAL_VUE: 'false' } } }), + exec('pnpm', ['nuxi', 'build', rootDir], { nodeOptions: { env: { EXTERNAL_VUE: 'true' } } }), ]) }, 120 * 1000) // Identical behaviour between inline/external vue options as this should only affect the server build for (const outputDir of ['.output', '.output-inline']) { it('default client bundle size', async () => { - const clientStats = await analyzeSizes('**/*.js', join(rootDir, outputDir, 'public')) + const clientStats = await analyzeSizes(['**/*.js'], join(rootDir, outputDir, 'public')) expect.soft(roundToKilobytes(clientStats.totalBytes)).toMatchInlineSnapshot(`"108k"`) expect(clientStats.files.map(f => f.replace(/\..*\.js/, '.js'))).toMatchInlineSnapshot(` [ @@ -34,7 +34,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"205k"`) - const modules = await analyzeSizes('node_modules/**/*', serverDir) + const modules = await analyzeSizes(['node_modules/**/*'], serverDir) expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"1355k"`) const packages = modules.files @@ -75,7 +75,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"529k"`) - const modules = await analyzeSizes('node_modules/**/*', serverDir) + const modules = await analyzeSizes(['node_modules/**/*'], serverDir) expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"86.1k"`) const packages = modules.files @@ -96,8 +96,8 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM }) }) -async function analyzeSizes (pattern: string | string[], rootDir: string) { - const files: string[] = await globby(pattern, { cwd: rootDir }) +async function analyzeSizes (pattern: string[], rootDir: string) { + const files: string[] = await glob(pattern, { cwd: rootDir }) let totalBytes = 0 for (const file of files) { const path = join(rootDir, file) diff --git a/test/prepare.ts b/test/prepare.ts index e4442a18ac..891ebdd497 100644 --- a/test/prepare.ts +++ b/test/prepare.ts @@ -1,12 +1,11 @@ import { fileURLToPath } from 'node:url' import { rm } from 'node:fs/promises' -import { globby } from 'globby' - -import { execa } from 'execa' +import { glob } from 'tinyglobby' +import { exec } from 'tinyexec' async function initTesting () { - const dirs = await globby('*', { + const dirs = await glob(['*'], { onlyDirectories: true, cwd: fileURLToPath(new URL('./fixtures', import.meta.url)), absolute: true, @@ -20,7 +19,7 @@ async function initTesting () { ]) await Promise.all( - dirs.map(dir => execa('pnpm', ['nuxi', 'prepare'], { cwd: dir })), + dirs.map(dir => exec('pnpm', ['nuxi', 'prepare'], { nodeOptions: { cwd: dir } })), ) }