diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f2aaba4..6773b0f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -32,8 +32,8 @@ Resolves: [^1]: - Please use these labels when submitting a review: - :question: #ask: Ask a question. - :bulb: #idea: Suggest an idea. - :warning: #issue: Strongly suggest a change. - :tada: #nice: Share a compliment. + Please use these labels when submitting a review: + :question: #ask: Ask a question. + :bulb: #idea: Suggest an idea. + :warning: #issue: Strongly suggest a change. + :tada: #nice: Share a compliment. diff --git a/.github/workflows/prerelease-canary.yml b/.github/workflows/prerelease-canary.yml index 2462d84..7d213de 100644 --- a/.github/workflows/prerelease-canary.yml +++ b/.github/workflows/prerelease-canary.yml @@ -15,6 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: 24 @@ -28,7 +29,7 @@ jobs: fi env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - run: npm ci + - run: pnpm install - name: "Generate new version" run: | SHORT_SHA=$(git rev-parse --short HEAD) diff --git a/.github/workflows/prerelease-pr-cleanup.yml b/.github/workflows/prerelease-pr-cleanup.yml index 4b9e956..3e648fe 100644 --- a/.github/workflows/prerelease-pr-cleanup.yml +++ b/.github/workflows/prerelease-pr-cleanup.yml @@ -14,6 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: 24 diff --git a/.github/workflows/prerelease-pr.yml b/.github/workflows/prerelease-pr.yml index 3c00ae2..284a11b 100644 --- a/.github/workflows/prerelease-pr.yml +++ b/.github/workflows/prerelease-pr.yml @@ -13,6 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: 24 @@ -27,7 +28,7 @@ jobs: fi env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - run: npm ci + - run: pnpm install - name: "Generate new version" run: | SHORT_SHA=$(git rev-parse --short HEAD) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c16e753..1214222 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,12 +21,14 @@ jobs: release-type: node - uses: actions/checkout@v6 if: ${{ steps.release.outputs.release_created }} + - uses: pnpm/action-setup@v4 + if: ${{ steps.release.outputs.release_created }} - uses: actions/setup-node@v6 if: ${{ steps.release.outputs.release_created }} with: node-version: 24 registry-url: "https://registry.npmjs.org" - - run: npm ci + - run: pnpm install if: ${{ steps.release.outputs.release_created }} - run: npm publish --provenance if: ${{ steps.release.outputs.release_created }} diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index f3c2da6..28ab101 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -7,22 +7,24 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: 24 - cache: npm - - run: npm ci + cache: pnpm + - run: pnpm install - run: npm run lint build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: 24 - cache: npm - - run: npm ci + cache: pnpm + - run: pnpm install - run: npm run build test: @@ -34,11 +36,12 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: ${{ matrix.node }} - cache: npm - - run: npm ci + cache: pnpm + - run: pnpm install - run: npm run unit env: E2E_PRISMIC_EMAIL: ${{ secrets.E2E_PRISMIC_EMAIL }} @@ -53,10 +56,11 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: 24 - cache: npm - - run: npm ci - - run: npm install --no-save typescript@${{ matrix.typescript }} && npx tsc --version + cache: pnpm + - run: pnpm install + - run: pnpm add typescript@${{ matrix.typescript }} && npx tsc --version - run: npm run types diff --git a/.nuxtrc b/.nuxtrc index f033419..2e8c43a 100644 --- a/.nuxtrc +++ b/.nuxtrc @@ -1,2 +1,3 @@ imports.autoImport=false typescript.includeWorkspace=true +setups.@nuxtjs/prismic="4.1.0" \ No newline at end of file diff --git a/LICENSE b/LICENSE index e91949b..4bd1aa7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 Nuxt.js Community +Copyright (c) 2026 Nuxt.js Community Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index ca9c45a..54f53cc 100644 --- a/README.md +++ b/README.md @@ -30,14 +30,14 @@ npx nuxi@latest module add prismic Then, configure your Prismic API endpoint: ```javascript -import { defineNuxtConfig } from 'nuxt' +import { defineNuxtConfig } from "nuxt" export default defineNuxtConfig({ - modules: ['@nuxtjs/prismic'], + modules: ["@nuxtjs/prismic"], prismic: { - endpoint: 'my-repository' + endpoint: "my-repository", }, -}); +}) ``` That's it! You can now use Prismic in your Nuxt app ✨ diff --git a/client/.nuxtrc b/client/.nuxtrc deleted file mode 100644 index 109361b..0000000 --- a/client/.nuxtrc +++ /dev/null @@ -1 +0,0 @@ -imports.autoImport=true diff --git a/client/app/app.vue b/client/app/app.vue deleted file mode 100644 index aa2fe74..0000000 --- a/client/app/app.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/client/app/components/SlicemachineStatusTip.vue b/client/app/components/SlicemachineStatusTip.vue deleted file mode 100644 index ab87d3f..0000000 --- a/client/app/components/SlicemachineStatusTip.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/client/app/composables/slicemachine.ts b/client/app/composables/slicemachine.ts deleted file mode 100644 index b5a4dd4..0000000 --- a/client/app/composables/slicemachine.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { RPCClientType } from '../../../src/devtools/types' - -export const useSliceMachineStatus = () => useState( - 'prismic-slice-machine-running', - () => ({ running: false }), -) - -export const useSlicemachine = async (rpc: RPCClientType) => { - const _status = useSliceMachineStatus() - _status.value.running = await rpc.isSliceMachineStarted() - const _config = await rpc.getSlicemachineConfig() - - return { - status: computed(() => _status.value), - start: rpc.startSliceMachine, - stop: rpc.stopSliceMachine, - config: ref(_config), - } -} diff --git a/client/app/pages/index.vue b/client/app/pages/index.vue deleted file mode 100644 index 07ae0b3..0000000 --- a/client/app/pages/index.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - diff --git a/client/nuxt.config.ts b/client/nuxt.config.ts deleted file mode 100644 index 6d0a364..0000000 --- a/client/nuxt.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { resolve } from 'pathe' - -export default defineNuxtConfig({ - modules: [ - '@nuxt/devtools-ui-kit', - ], - ssr: false, - app: { - baseURL: '/__prismic-client', - }, - devServer: { - port: 5173, - }, - future: { - compatibilityVersion: 4, - }, - nitro: { - output: { - publicDir: resolve(__dirname, '../dist/client'), - }, - }, -}) diff --git a/client/package.json b/client/package.json deleted file mode 100644 index d84eb24..0000000 --- a/client/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "private": true, - "name": "prismic-devtools-client" -} diff --git a/client/tsconfig.json b/client/tsconfig.json deleted file mode 100644 index 184570e..0000000 --- a/client/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./.nuxt/tsconfig.json" -} diff --git a/examples/minimal/app/pages/index.vue b/examples/minimal/app/pages/index.vue index be24457..f832a7b 100644 --- a/examples/minimal/app/pages/index.vue +++ b/examples/minimal/app/pages/index.vue @@ -1,11 +1,11 @@ diff --git a/examples/minimal/nuxt.config.ts b/examples/minimal/nuxt.config.ts index 1563b9d..af866f8 100644 --- a/examples/minimal/nuxt.config.ts +++ b/examples/minimal/nuxt.config.ts @@ -1,11 +1,12 @@ -// https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ - modules: ['@nuxtjs/prismic'], - devtools: { enabled: true }, - future: { - compatibilityVersion: 4, - }, + modules: ["@nuxtjs/prismic"], + + compatibilityDate: "2025-12-24", + prismic: { - endpoint: '200629-sms-hoy', + endpoint: "nuxtjs-prismic", + clientConfig: { + routes: [{ type: "kitchen_sink", path: "/kitchen-sink" }], + }, }, }) diff --git a/examples/minimal/package.json b/examples/minimal/package.json index dd048a9..ccf5b83 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -9,7 +9,7 @@ "postinstall": "nuxt prepare" }, "devDependencies": { - "@nuxtjs/prismic": "^3.4.7", - "nuxt": "^3.15.0" + "@nuxtjs/prismic": "^4.1.0", + "nuxt": "^4.2.2" } } diff --git a/package.json b/package.json index 0928203..1e9b590 100644 --- a/package.json +++ b/package.json @@ -27,12 +27,12 @@ }, "main": "./dist/module.mjs", "typesVersions": { - "*": { - ".": [ - "./dist/types.d.mts" - ] - } - }, + "*": { + ".": [ + "./dist/types.d.mts" + ] + } + }, "files": [ "./dist", "./src" @@ -52,40 +52,36 @@ "test": "npm run lint && npm run types && npm run unit && npm run build" }, "dependencies": { - "@nuxt/devtools-kit": "^3.1.1", "@nuxt/kit": "^4.2.2", - "@prismicio/client": "^7.21.1", "@prismicio/vue": "pr-89", - "birpc": "4.0.0", "defu": "^6.1.4", - "pathe": "^2.0.3", - "sirv": "^3.0.2", - "terminate": "^2.8.0" + "nypm": "^0.6.2", + "pkg-types": "^2.3.0" }, "devDependencies": { - "@iconify-json/carbon": "^1.2.15", - "@iconify-json/logos": "^1.2.10", - "@iconify-json/simple-icons": "^1.2.63", - "@nuxt/devtools-ui-kit": "^3.1.1", "@nuxt/module-builder": "^1.0.2", "@nuxt/schema": "^4.2.2", + "@nuxt/test-utils": "^3.21.0", + "@prismicio/client": "^7.21.1", "@trivago/prettier-plugin-sort-imports": "^6.0.0", - "@unocss/preset-icons": "^66.5.10", + "@types/node": "^25.0.3", "@vitest/coverage-v8": "^4.0.16", - "memfs": "^4.51.1", "nuxt": "^4.2.2", - "oxlint": "1.35.0", + "oxlint": "1.36.0", "prettier": "^3.7.4", "prettier-plugin-jsdoc": "^1.8.0", "typescript": "^5.9.3", "vitest": "^4.0.16", "vue-tsc": "^3.2.1" }, + "peerDependencies": { + "@prismicio/client": "^7" + }, "engines": { "node": ">=20.0.0" }, "publishConfig": { "access": "public" }, - "packageManager": "pnpm@10.26.1" + "packageManager": "pnpm@10.26.2" } diff --git a/playground/.env.example b/playground/.env.example deleted file mode 100644 index 59fd5ea..0000000 --- a/playground/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -# NUXT_PUBLIC_PRISMIC_ENDPOINT=200629-sms-hoy -# NUXT_PUBLIC_PRISMIC_ENVIRONMENT=200629-sms-hoy diff --git a/playground/.nuxtrc b/playground/.nuxtrc new file mode 100644 index 0000000..264c440 --- /dev/null +++ b/playground/.nuxtrc @@ -0,0 +1 @@ +setups.@nuxtjs/prismic="4.1.0" \ No newline at end of file diff --git a/playground/app/pages/index.vue b/playground/app/pages/index.vue index 8240f89..57d4c42 100644 --- a/playground/app/pages/index.vue +++ b/playground/app/pages/index.vue @@ -1,13 +1,20 @@ diff --git a/playground/app/prismic/disabled.client.ts b/playground/app/prismic/disabled.client.ts deleted file mode 100644 index 9abfd77..0000000 --- a/playground/app/prismic/disabled.client.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as prismic from '@prismicio/client' - -export default prismic.createClient('200629-sms-hoy') diff --git a/playground/app/prismic/linkResolver.ts b/playground/app/prismic/linkResolver.ts deleted file mode 100644 index 351304a..0000000 --- a/playground/app/prismic/linkResolver.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type * as prismic from '@prismicio/client' - -const linkResolver: prismic.LinkResolverFunction = (doc) => { - if (doc.isBroken) { - return '/404' - } - - if (doc.type === 'page') { - return `/${doc.uid}` - } - - return '/' -} - -export default linkResolver diff --git a/playground/app/prismic/richTextSerializer.ts b/playground/app/prismic/richTextSerializer.ts deleted file mode 100644 index 9733759..0000000 --- a/playground/app/prismic/richTextSerializer.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type * as prismic from '@prismicio/client' - -const richTextSerializer: prismic.HTMLRichTextMapSerializer = { - // Those are just examples, update them and add your own~ - heading1: ({ children }) => `

${children}

`, - paragraph: ({ children }) => `

${children}

`, -} - -export default richTextSerializer diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index c21176e..c865232 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -1,79 +1,12 @@ -import { resolve } from 'node:path' - -import { defineNuxtModule } from '@nuxt/kit' -import { startSubprocess } from '@nuxt/devtools-kit' - -// https://v3.nuxtjs.org/docs/directory-structure/nuxt.config export default defineNuxtConfig({ - modules: [ - '../src/module', - /** - * Start a sub Nuxt Server for developing the client - * - * The terminal output can be found in the Terminals tab of the devtools. - */ - defineNuxtModule({ - setup(_, nuxt) { - if (!nuxt.options.dev) { - return - } - - const subprocess = startSubprocess( - { - command: 'npx', - args: ['nuxi', 'dev'], - cwd: resolve(__dirname, '../client'), - }, - { - id: 'prismic:client', - name: 'Prismic Client Dev', - }, - ) - subprocess.getProcess().stdout?.on('data', (data) => { - console.log(` - devtools: ${data.toString()}`) - }) - subprocess.getProcess().stderr?.on('data', (data) => { - console.error(` - devtools: ${data.toString()}`) - }) - - process.on('exit', () => { - subprocess.terminate() - }) - }, - }), - ], - - devtools: { enabled: true }, - - runtimeConfig: { - public: { - prismic: { - endpoint: '200629-sms-hoy', - }, - }, - }, - - future: { - compatibilityVersion: 4, - }, - - compatibilityDate: '2025-01-02', + modules: ["../src/module"], - typescript: { strict: true }, + compatibilityDate: "2026-01-05", prismic: { - // endpoint: '200629-sms-hoy', + endpoint: 'nuxtjs-prismic', clientConfig: { - routes: [ - { - type: 'kitchen_sink_2', - path: '/', - }, - { - type: 'page', - path: '/', - }, - ], + routes: [{ type: "kitchen_sink", path: "/kitchen-sink" }], }, }, }) diff --git a/playground/package.json b/playground/package.json index 40cd863..e91da84 100644 --- a/playground/package.json +++ b/playground/package.json @@ -1,4 +1,5 @@ { "private": true, - "name": "@nuxtjs/prismic.playground" + "name": "@nuxtjs/prismic.playground", + "type": "module" } diff --git a/playground/slicemachine.config.json b/playground/slicemachine.config.json deleted file mode 100644 index 95f06ed..0000000 --- a/playground/slicemachine.config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "repositoryName": "nextjs-starter-prismic-blog" -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7779c9c..b3a7e1d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,70 +8,49 @@ importers: .: dependencies: - '@nuxt/devtools-kit': - specifier: ^3.1.1 - version: 3.1.1(magicast@0.5.1)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) '@nuxt/kit': specifier: ^4.2.2 version: 4.2.2(magicast@0.5.1) - '@prismicio/client': - specifier: ^7.21.1 - version: 7.21.1 '@prismicio/vue': specifier: pr-89 - version: 5.3.0-pr.89.235a3d3(@prismicio/client@7.21.1)(vue@3.5.26(typescript@5.9.3)) - birpc: - specifier: 4.0.0 - version: 4.0.0 + version: 5.3.0-pr.89.33291fc(@prismicio/client@7.21.1)(vue@3.5.26(typescript@5.9.3)) defu: specifier: ^6.1.4 version: 6.1.4 - pathe: - specifier: ^2.0.3 - version: 2.0.3 - sirv: - specifier: ^3.0.2 - version: 3.0.2 - terminate: - specifier: ^2.8.0 - version: 2.8.0 + nypm: + specifier: ^0.6.2 + version: 0.6.2 + pkg-types: + specifier: ^2.3.0 + version: 2.3.0 devDependencies: - '@iconify-json/carbon': - specifier: ^1.2.15 - version: 1.2.15 - '@iconify-json/logos': - specifier: ^1.2.10 - version: 1.2.10 - '@iconify-json/simple-icons': - specifier: ^1.2.63 - version: 1.2.63 - '@nuxt/devtools-ui-kit': - specifier: ^3.1.1 - version: 3.1.1(@nuxt/devtools@3.1.1(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)))(@unocss/webpack@66.5.10(webpack@5.97.0(esbuild@0.27.2)))(@vue/compiler-core@3.5.26)(change-case@5.4.4)(fuse.js@7.1.0)(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(postcss@8.5.6)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))(webpack@5.97.0(esbuild@0.27.2)) '@nuxt/module-builder': specifier: ^1.0.2 version: 1.0.2(@nuxt/cli@3.31.3(cac@6.7.14)(magicast@0.5.1))(@vue/compiler-core@3.5.26)(esbuild@0.27.2)(typescript@5.9.3)(vue-tsc@3.2.1(typescript@5.9.3))(vue@3.5.26(typescript@5.9.3)) '@nuxt/schema': specifier: ^4.2.2 version: 4.2.2 + '@nuxt/test-utils': + specifier: ^3.21.0 + version: 3.21.0(magicast@0.5.1)(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + '@prismicio/client': + specifier: ^7.21.1 + version: 7.21.1 '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.0 version: 6.0.0(@vue/compiler-sfc@3.5.26)(prettier@3.7.4) - '@unocss/preset-icons': - specifier: ^66.5.10 - version: 66.5.10 + '@types/node': + specifier: ^25.0.3 + version: 25.0.3 '@vitest/coverage-v8': specifier: ^4.0.16 - version: 4.0.16(vitest@4.0.16(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - memfs: - specifier: ^4.51.1 - version: 4.51.1 + version: 4.0.16(vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) nuxt: specifier: ^4.2.2 - version: 4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2) + version: 4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2) oxlint: - specifier: 1.35.0 - version: 1.35.0 + specifier: 1.36.0 + version: 1.36.0 prettier: specifier: ^3.7.4 version: 3.7.4 @@ -83,13 +62,11 @@ importers: version: 5.9.3 vitest: specifier: ^4.0.16 - version: 4.0.16(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + version: 4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) vue-tsc: specifier: ^3.2.1 version: 3.2.1(typescript@5.9.3) - client: {} - playground: {} packages: @@ -98,9 +75,6 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/install-pkg@1.1.0': - resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -278,10 +252,6 @@ packages: resolution: {integrity: sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.7': - resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} @@ -944,14 +914,14 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/config-array@0.21.1': @@ -986,43 +956,18 @@ packages: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@iconify-json/carbon@1.2.15': - resolution: {integrity: sha512-9tW0nZY5QtKkMhuYzW09BM1345SyXNuA+gx2ub0j/fnfHOD5XVimMJ/D76H3tTez25NJbPYCLIQoFhvJc1HVBQ==} - - '@iconify-json/logos@1.2.10': - resolution: {integrity: sha512-qxaXKJ6fu8jzTMPQdHtNxlfx6tBQ0jXRbHZIYy5Ilh8Lx9US9FsAdzZWUR8MXV8PnWTKGDFO4ZZee9VwerCyMA==} - - '@iconify-json/ri@1.2.6': - resolution: {integrity: sha512-tGXRmXtb8oFu8DNg9MsS1pywKFgs9QZ4U6LBzUamBHaw3ePSiPd7ouE64gzHzfEcR16hgVaXoUa+XxD3BB0XOg==} - - '@iconify-json/simple-icons@1.2.63': - resolution: {integrity: sha512-xZl2UWCwE58VlqZ+pDPmaUhE2tq8MVSTJRr4/9nzzHlDdjJ0Ud1VxNXPrwTSgESKY29iCQw3S0r2nJTSNNngHw==} - - '@iconify-json/tabler@1.2.24': - resolution: {integrity: sha512-W1GIC36ckaQvr0fpQeyqC62HWyF3/r0yjJHtCByZmxA3qTMqLv0wJDdz/BffnmoCMulaBbxgjbTptFfKyn5e/g==} - - '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - - '@iconify/utils@3.1.0': - resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} - '@ioredis/commands@1.4.0': resolution: {integrity: sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==} @@ -1067,42 +1012,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/buffers@1.2.1': - resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/codegen@1.0.0': - resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@1.21.0': - resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pointer@1.0.2': - resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@1.9.0': - resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - '@kwsites/file-exists@1.1.1': resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} @@ -1142,11 +1051,6 @@ packages: peerDependencies: vite: '>=6.0' - '@nuxt/devtools-ui-kit@3.1.1': - resolution: {integrity: sha512-lhWg0JsUMyPEd3ZmHZXeh2T+WUl7OtlGwBPOKwofVABuaPeErLL8i6VRXzRzkMdwiYkmAwS3nfYd/uYw4QQAEg==} - peerDependencies: - '@nuxt/devtools': 3.1.1 - '@nuxt/devtools-wizard@3.1.1': resolution: {integrity: sha512-6UORjapNKko2buv+3o57DQp69n5Z91TeJ75qdtNKcTvOfCTJrO78Ew0nZSgMMGrjbIJ4pFsHQEqXfgYLw3pNxg==} hasBin: true @@ -1165,6 +1069,10 @@ packages: resolution: {integrity: sha512-dr7I7eZOoRLl4uxdxeL2dQsH0OrbEiVPIyBHnBpA4co24CBnoJoF+JINuP9l3PAM3IhUzc5JIVq3/YY3lEc3Hw==} engines: {node: '>=18.12.0'} + '@nuxt/kit@3.20.2': + resolution: {integrity: sha512-laqfmMcWWNV1FsVmm1+RQUoGY8NIJvCRl0z0K8ikqPukoEry0LXMqlQ+xaf8xJRvoH2/78OhZmsEEsUBTXipcw==} + engines: {node: '>=18.12.0'} + '@nuxt/kit@4.2.2': resolution: {integrity: sha512-ZAgYBrPz/yhVgDznBNdQj2vhmOp31haJbO0I0iah/P9atw+OHH7NJLUZ3PK+LOz/0fblKTN1XJVSi8YQ1TQ0KA==} engines: {node: '>=18.12.0'} @@ -1192,6 +1100,42 @@ packages: engines: {node: '>=18.12.0'} hasBin: true + '@nuxt/test-utils@3.21.0': + resolution: {integrity: sha512-A6XExfgHq88+XuXAU4MMr5QBHS2mWA5qRVSvsMPP2U+YSsnk+Vt7P7dxbvJPE4+n6LHbC1IM0QjTVteo+VCxOA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@cucumber/cucumber': ^10.3.1 || >=11.0.0 + '@jest/globals': ^29.5.0 || >=30.0.0 + '@playwright/test': ^1.43.1 + '@testing-library/vue': ^7.0.0 || ^8.0.1 + '@vitest/ui': '*' + '@vue/test-utils': ^2.4.2 + happy-dom: '*' + jsdom: '*' + playwright-core: ^1.43.1 + vitest: ^3.2.0 + peerDependenciesMeta: + '@cucumber/cucumber': + optional: true + '@jest/globals': + optional: true + '@playwright/test': + optional: true + '@testing-library/vue': + optional: true + '@vitest/ui': + optional: true + '@vue/test-utils': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright-core: + optional: true + vitest: + optional: true + '@nuxt/vite-builder@4.2.2': resolution: {integrity: sha512-Bot8fpJNtHZrM4cS1iSR7bEAZ1mFLAtJvD/JOSQ6kT62F4hSFWfMubMXOwDkLK2tnn3bnAdSqGy1nLNDBCahpQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1473,43 +1417,43 @@ packages: cpu: [x64] os: [win32] - '@oxlint/darwin-arm64@1.35.0': - resolution: {integrity: sha512-ieiYVHkNZPo77Hgrxav595wGS4rRNKuDNrljf+4xhwpJsddrxMpM64IQUf2IvR3MhK4FxdGzhhB6OVmGVHY5/w==} + '@oxlint/darwin-arm64@1.36.0': + resolution: {integrity: sha512-MJkj82GH+nhvWKJhSIM6KlZ8tyGKdogSQXtNdpIyP02r/tTayFJQaAEWayG2Jhsn93kske+nimg5MYFhwO/rlg==} cpu: [arm64] os: [darwin] - '@oxlint/darwin-x64@1.35.0': - resolution: {integrity: sha512-1jNHu3j66X5jKySvgtE+jGtjx4ye+xioAucVTi2IuROZO6keK2YG74pnD+9FT+DpWZAtWRZGoW0r0x6aN9sEEg==} + '@oxlint/darwin-x64@1.36.0': + resolution: {integrity: sha512-VvEhfkqj/99dCTqOcfkyFXOSbx4lIy5u2m2GHbK4WCMDySokOcMTNRHGw8fH/WgQ5cDrDMSTYIGQTmnBGi9tiQ==} cpu: [x64] os: [darwin] - '@oxlint/linux-arm64-gnu@1.35.0': - resolution: {integrity: sha512-T1lc0UaYbTxZyqVpLfC7eipbauNG8pBpkaZEW4JGz8Y68rxTH7d9s+CF0zxUxNr5RCtcmT669RLVjQT7VrKVLg==} + '@oxlint/linux-arm64-gnu@1.36.0': + resolution: {integrity: sha512-EMx92X5q+hHc3olTuj/kgkx9+yP0p/AVs4yvHbUfzZhBekXNpUWxWvg4hIKmQWn+Ee2j4o80/0ACGO0hDYJ9mg==} cpu: [arm64] os: [linux] - '@oxlint/linux-arm64-musl@1.35.0': - resolution: {integrity: sha512-7Wv5Pke9kwWKFycUziSHsmi3EM0389TLzraB0KE/MArrKxx30ycwfJ5PYoMj9ERoW+Ybs0txdaOF/xJy/XyYkg==} + '@oxlint/linux-arm64-musl@1.36.0': + resolution: {integrity: sha512-7YCxtrPIctVYLqWrWkk8pahdCxch6PtsaucfMLC7TOlDt4nODhnQd4yzEscKqJ8Gjrw1bF4g+Ngob1gB+Qr9Fw==} cpu: [arm64] os: [linux] - '@oxlint/linux-x64-gnu@1.35.0': - resolution: {integrity: sha512-HDMPOzyVVy+rQl3H7UOq8oGHt7m1yaiWCanlhAu4jciK8dvXeO9OG/OQd74lD/h05IcJh93pCLEJ3wWOG8hTiQ==} + '@oxlint/linux-x64-gnu@1.36.0': + resolution: {integrity: sha512-lnaJVlx5r3NWmoOMesfQXJSf78jHTn8Z+sdAf795Kgteo72+qGC1Uax2SToCJVN2J8PNG3oRV5bLriiCNR2i6Q==} cpu: [x64] os: [linux] - '@oxlint/linux-x64-musl@1.35.0': - resolution: {integrity: sha512-kAPBBsUOM3HQQ6n3nnZauvFR9EoXqCSoj4O3OSXXarzsRTiItNrHabVUwxeswZEc+xMzQNR0FHEWg/d4QAAWLw==} + '@oxlint/linux-x64-musl@1.36.0': + resolution: {integrity: sha512-AhuEU2Qdl66lSfTGu/Htirq8r/8q2YnZoG3yEXLMQWnPMn7efy8spD/N1NA7kH0Hll+cdfwgQkQqC2G4MS2lPQ==} cpu: [x64] os: [linux] - '@oxlint/win32-arm64@1.35.0': - resolution: {integrity: sha512-qrpBkkOASS0WT8ra9xmBRXOEliN6D/MV9JhI/68lFHrtLhfFuRwg4AjzjxrCWrQCnQ0WkvAVpJzu73F4ICLYZw==} + '@oxlint/win32-arm64@1.36.0': + resolution: {integrity: sha512-GlWCBjUJY2QgvBFuNRkiRJu7K/djLmM0UQKfZV8IN+UXbP/JbjZHWKRdd4LXlQmzoz7M5Hd6p+ElCej8/90FCg==} cpu: [arm64] os: [win32] - '@oxlint/win32-x64@1.35.0': - resolution: {integrity: sha512-yPFcj6umrhusnG/kMS5wh96vblsqZ0kArQJS+7kEOSJDrH+DsFWaDCsSRF8U6gmSmZJ26KVMU3C3TMpqDN4M1g==} + '@oxlint/win32-x64@1.36.0': + resolution: {integrity: sha512-J+Vc00Utcf8p77lZPruQgb0QnQXuKnFogN88kCnOqs2a83I+vTBB8ILr0+L9sTwVRvIDMSC0pLdeQH4svWGFZg==} cpu: [x64] os: [win32] @@ -1621,16 +1565,13 @@ packages: resolution: {integrity: sha512-2VnOsz0DTUuZ6zNEPa42t3D/ykxtq5eORjpXF5+okkH/atfMU4tzuZnI55p8CWB/5mLXz5ajNFkZqlMlciJATA==} engines: {node: '>=14.15.0'} - '@prismicio/vue@5.3.0-pr.89.235a3d3': - resolution: {integrity: sha512-tkGKGNQEHC/h2/Ry7WuH585Q4BARrGSmob1qXWYPzZoBX2JmfdgDqIyHoJ90LXXX0vsZJVcApFPLKlwdcCmzNA==} + '@prismicio/vue@5.3.0-pr.89.33291fc': + resolution: {integrity: sha512-OGMZD5xlPYKG5sUgSB7IBLe/AOngp6H4Fmja9QowEj40AQR3qx4VDXCdM+/zJaHNR+47uBZ/E1KTzhSKIV6b/Q==} engines: {node: '>=20'} peerDependencies: '@prismicio/client': ^7 vue: ^3 - '@quansync/fs@1.0.0': - resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@rolldown/pluginutils@1.0.0-beta.53': resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} @@ -1981,12 +1922,6 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -2002,8 +1937,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@22.10.1': - resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} + '@types/node@25.0.3': + resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} '@types/parse-path@7.0.3': resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==} @@ -2014,108 +1949,11 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/web-bluetooth@0.0.21': - resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@unhead/vue@2.0.19': resolution: {integrity: sha512-7BYjHfOaoZ9+ARJkT10Q2TjnTUqDXmMpfakIAsD/hXiuff1oqWg1xeXT5+MomhNcC15HbiABpbbBmITLSHxdKg==} peerDependencies: vue: '>=3.5.18' - '@unocss/astro@66.5.10': - resolution: {integrity: sha512-R1UU8lfIqcuorGpiuU+9pQEmK8uBBk1sf5re1db9kr23924Ia/aBCmfs4W2xyVCwJ0cGBv9C3ywDgOsgkHFCbQ==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - peerDependenciesMeta: - vite: - optional: true - - '@unocss/cli@66.5.10': - resolution: {integrity: sha512-3tGBTGLLTtwGEwXGWsL77K4bTvNG115VJvYPPit68Z7uXnA6S8xpkwaFFDJ3kbrsWtgXBpIgM06HhtT6/3MILg==} - engines: {node: '>=14'} - hasBin: true - - '@unocss/config@66.5.10': - resolution: {integrity: sha512-udBhfMe+2MU70ZdjnRLnwLQ+0EHYJ4f5JjjvHsfmQ0If4KeYmSStWBuX+/LHNQidhl487JiwW1lBDQ8pKHmbiw==} - engines: {node: '>=14'} - - '@unocss/core@66.5.10': - resolution: {integrity: sha512-SEmPE4pWNn9VcCvZqovPwFGuG/j69W3zh+x1Ky4z/I2pnyoB0Y0lBmq22KVu/dwExe+ZKKTQpxa0j5rbE27rDQ==} - - '@unocss/extractor-arbitrary-variants@66.5.10': - resolution: {integrity: sha512-9JsAY1a68WZaIbSiwQa7LLAO+t4T5nnhgmNxY3MGaK58k6Qa9ayZb4AG4fqOpw+Zn8tmKd7yXJ0s+27sx1n2BA==} - - '@unocss/inspector@66.5.10': - resolution: {integrity: sha512-L/Nvi4bkXFxbGNOi7TPNnIIDfY1zKghfJ+cF7To/WrXplP1Y4nEZa2kGwcVBcsaysACri0whU19Dh3yf+bG+Pg==} - - '@unocss/nuxt@66.5.10': - resolution: {integrity: sha512-/2b/1d6EMET2RB+xLwDd8Hgz8ycfxAMOz5Cn0LYpEXoNzZEp9RhxP5lZmscCtheCYUug5RxwdFyDdnXu0esE+Q==} - - '@unocss/postcss@66.5.10': - resolution: {integrity: sha512-Hp9k+1AB0qxc6b7Sh7JPKwYgcklIvRhleYtQldFbdU5eAY5InOy9m7gSZxRsz2WQb6IzliqO7Or34PbhnMlcFQ==} - engines: {node: '>=14'} - peerDependencies: - postcss: ^8.4.21 - - '@unocss/preset-attributify@66.5.10': - resolution: {integrity: sha512-dEFs8kXC9xoqolQBFvtgXvdzWQqHoWqSj/eosX2oDmy8REk7UErpBvMmqR4pCP7mqdtG8yZ2l34Gtb42hDM3JA==} - - '@unocss/preset-icons@66.5.10': - resolution: {integrity: sha512-zf4Sev/F2QQgVjGjKBCw3BKc15HQAtvUrNX2zymXXbAjt83Lf27ofYzTAUVUO9mi/oQhXcP5sQrIGIe7iQX3hw==} - - '@unocss/preset-mini@66.5.10': - resolution: {integrity: sha512-jRmweaPhaTGBSDKFuhEGayGyuGr66rTRRqzv5EAdHH4x43TFlJ1RO5SVlzzJdo1zJy4vyGSINIVKeI49FYhEKQ==} - - '@unocss/preset-tagify@66.5.10': - resolution: {integrity: sha512-SLfMhNQCFEXspp/zREZv61dmuvRQ+CVI04zcpGpg4LnqvMKkLVyPPetlhgJwW1hd9D7OWkUGoQm9JA0O4+9XJA==} - - '@unocss/preset-typography@66.5.10': - resolution: {integrity: sha512-GMchTwywSA6vwiZ2w8svBY9U9br/OW7vIjwyYis0c9kp4h8apKCrLtAv2LjmlKyg12IDy9d8jp/hZ1zP9umung==} - - '@unocss/preset-uno@66.5.10': - resolution: {integrity: sha512-O3R99td+Jt3XAJh1pVbOSTu3z7jUosg80y90iu6JQIpvXI/pGanWJEhoEz95SgJmRV+vXNEn4f6tIvfUXkTd/w==} - - '@unocss/preset-web-fonts@66.5.10': - resolution: {integrity: sha512-rA9pjL+CuDpyEekawX54pkWHc4n+kfhoYsAFBWBtNHl4akDYsbnSA+2EF/XiEbRvz1YVFYDucZ9KpUiaq9+xtQ==} - - '@unocss/preset-wind3@66.5.10': - resolution: {integrity: sha512-N2Wgu+AnTSr4jIEAfajOfUtwESE/Zzr0GxwW88+MHIw6Tzj6tZeCEKNNKFzsgwfGkoNjvwIeIbkaIrIGJ7SveA==} - - '@unocss/preset-wind4@66.5.10': - resolution: {integrity: sha512-PXLxEcYJUsysQvK4xj3iA7plvq5RcAt9S1vLlOmBtl2X66dWU6XqiGEu7lLfqoypip1bPCOGlRB7HbfMuQpftQ==} - - '@unocss/preset-wind@66.5.10': - resolution: {integrity: sha512-tR8JaXHnL006qcIEbD4lalZoqvW78SE+OvD7Sv5yj6s5FjwLZTiaJP8/0RTlx8SvhM6bw+NDxKQq678ntiZdiA==} - - '@unocss/reset@66.5.10': - resolution: {integrity: sha512-xlydsCqbmVtA8QbVWv8+R66v4MJzeDXYsdoGDz7xsa2r65RD4UvJFZuyueY7+/bhzns9QhNOxltEiPi06j3Gvw==} - - '@unocss/rule-utils@66.5.10': - resolution: {integrity: sha512-497GPWZpArNG25cto0Yq3/Yw+i0x7/N/ySq1HHeE3lB43sdmCv6+m6QEv14I/9/e5WJhQOmrY5LmHZYXC7xxMw==} - engines: {node: '>=14'} - - '@unocss/transformer-attributify-jsx@66.5.10': - resolution: {integrity: sha512-WAAVWWx/BVQ9dk1W9FCP7UL9dLScmNDrRwBRah5WJMtKaV890RaL4wLItfQH0SN31C+quTwuaU0Hi6BiBsc9qw==} - - '@unocss/transformer-compile-class@66.5.10': - resolution: {integrity: sha512-NFXf5qTVJXZNnZTpnCSQmNwJhQrmCQv/tgmX69rwNDYKmYcBufpaKfwKzO+EkVQz4A6ySv09Q9PaNBCH5N0FTQ==} - - '@unocss/transformer-directives@66.5.10': - resolution: {integrity: sha512-EDak3DGW+rSYjoZNwU8xJIXbwif+q9e3cjhCZy48ll1nfyg2E1Znqtwv/X8vLRr8fJ0gWn75P2uGi4jfGLZzMg==} - - '@unocss/transformer-variant-group@66.5.10': - resolution: {integrity: sha512-9DWi9bLOGwdw6whCTdywVD9+lA5lkeqcgy9sMoizfUa4CfT1bSdMT27VoAbYhxeEznV92BCW2jCYt0I8M00phw==} - - '@unocss/vite@66.5.10': - resolution: {integrity: sha512-GegFDmcWe0V2CR/uN1f+iQuDh2R1vA6EAwSvl1nyL+6ue0/zLyF9yhdVnypIVlJnS6RK/xaLPOP6vWJnqRGhZg==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - - '@unocss/webpack@66.5.10': - resolution: {integrity: sha512-g8PIF7LHXDfI6M4roFGuZOpc+e7F5TsN1eEaeHkGiqPKHHzfu5KE1UBafJmnqDvuu5GsZAJt8ExKUxJNVjy11w==} - peerDependencies: - webpack: ^4 || ^5 - '@vercel/nft@0.30.4': resolution: {integrity: sha512-wE6eAGSXScra60N2l6jWvNtVK0m+sh873CpfZW4KI2v8EHuUQp+mSEi4T+IcdPCSEDgCdAS/7bizbhQlkjzrSA==} engines: {node: '>=18'} @@ -2262,118 +2100,6 @@ packages: '@vue/shared@3.5.26': resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==} - '@vueuse/core@14.1.0': - resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} - peerDependencies: - vue: ^3.5.0 - - '@vueuse/integrations@14.1.0': - resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} - peerDependencies: - async-validator: ^4 - axios: ^1 - change-case: ^5 - drauu: ^0.4 - focus-trap: ^7 - fuse.js: ^7 - idb-keyval: ^6 - jwt-decode: ^4 - nprogress: ^0.2 - qrcode: ^1.5 - sortablejs: ^1 - universal-cookie: ^7 || ^8 - vue: ^3.5.0 - peerDependenciesMeta: - async-validator: - optional: true - axios: - optional: true - change-case: - optional: true - drauu: - optional: true - focus-trap: - optional: true - fuse.js: - optional: true - idb-keyval: - optional: true - jwt-decode: - optional: true - nprogress: - optional: true - qrcode: - optional: true - sortablejs: - optional: true - universal-cookie: - optional: true - - '@vueuse/metadata@14.1.0': - resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} - - '@vueuse/nuxt@14.1.0': - resolution: {integrity: sha512-zw8WSgRrdtsA1daqlFl5ojoTJnvWad/IbMIcHw4EN8Wci09koeFfh5/oKbkKeIQ3gzihvr9x0bu8BVz8Z2auSg==} - peerDependencies: - nuxt: ^3.0.0 || ^4.0.0-0 - vue: ^3.5.0 - - '@vueuse/shared@14.1.0': - resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} - peerDependencies: - vue: ^3.5.0 - - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - abbrev@3.0.1: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2406,11 +2132,6 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -2496,10 +2217,6 @@ packages: resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} hasBin: true - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - binary-searching@2.0.5: resolution: {integrity: sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==} @@ -2509,14 +2226,11 @@ packages: birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} - birpc@4.0.0: - resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -2581,14 +2295,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001686: - resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} - - caniuse-lite@1.0.30001701: - resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==} - - caniuse-lite@1.0.30001761: - resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} + caniuse-lite@1.0.30001762: + resolution: {integrity: sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==} chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} @@ -2598,16 +2306,9 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -2624,10 +2325,6 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} @@ -2653,9 +2350,6 @@ packages: colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -2686,10 +2380,6 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} - engines: {node: ^14.18.0 || >=16.10.0} - consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -2950,10 +2640,6 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -3006,10 +2692,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3039,18 +2721,14 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3069,9 +2747,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - event-stream@3.3.4: - resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} - event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -3091,6 +2766,10 @@ packages: exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + fake-indexeddb@6.2.5: + resolution: {integrity: sha512-CGnyrvbhPlWYMngksqrSSUT1BAVP49dZocrHuK0SvtR0D5TMs5wP0o3j7jexDJW01KSadjBp1M/71o/KR3nD1w==} + engines: {node: '>=18'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3152,11 +2831,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - - focus-trap@7.7.0: - resolution: {integrity: sha512-DJJDHpEgoSbP8ZE1MNeU2IzCpfFyFdNZZRilqmfH2XiQsPK6PtD8AfJqWzEBudUQB2yHwZc5iq54rjTaGQ+ljw==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} @@ -3169,9 +2845,6 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - from@0.1.7: - resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} - fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -3231,15 +2904,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regex.js@1.2.0: - resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -3271,10 +2935,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - gzip-size@7.0.0: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3318,10 +2978,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -3348,8 +3004,8 @@ packages: resolution: {integrity: sha512-lFVbvaE9vMck8qz9j+y6o7vsyc1vZhdqzWu+Wp/nlnOCi9zAErc31QMkZKYUGMNLLzxOO4YIBAUPndTPah8HFg==} engines: {node: '>=12.7.0'} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} impound@1.0.0: @@ -3373,10 +3029,6 @@ packages: iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-core-module@2.15.1: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} @@ -3485,10 +3137,6 @@ packages: javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true @@ -3524,9 +3172,6 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -3578,10 +3223,6 @@ packages: resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} hasBin: true - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - local-pkg@1.0.0: resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} engines: {node: '>=14'} @@ -3641,9 +3282,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - map-stream@0.1.0: - resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - mdast-util-from-markdown@2.0.2: resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} @@ -3656,9 +3294,6 @@ packages: mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - memfs@4.51.1: - resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3733,18 +3368,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - mime-types@3.0.2: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} @@ -3863,9 +3490,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - nitropack@2.12.9: resolution: {integrity: sha512-t6qqNBn2UDGMWogQuORjbL2UPevB8PvIPsPHmqvWpeGOlPr4P8Oc5oA8t3wFwGmaolM2M/s2SwT23nx9yARmOg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4016,8 +3640,8 @@ packages: peerDependencies: oxc-parser: '>=0.98.0' - oxlint@1.35.0: - resolution: {integrity: sha512-QDX1aUgaiqznkGfTM2qHwva2wtKqhVoqPSVXrnPz+yLUhlNadikD3QRuRtppHl7WGuy3wG6nKAuR8lash3aWSg==} + oxlint@1.36.0: + resolution: {integrity: sha512-IicUdXfXgI8OKrDPnoSjvBfeEF8PkKtm+CoLlg4LYe4ypc8U+T4r7730XYshdBGZdelg+JRw8GtCb2w/KaaZvw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4097,9 +3721,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pause-stream@0.0.11: - resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} - perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -4343,11 +3964,6 @@ packages: protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - ps-tree@1.2.0: - resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} - engines: {node: '>= 0.10'} - hasBin: true - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -4355,9 +3971,6 @@ packages: quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - quansync@1.0.0: - resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4387,10 +4000,6 @@ packages: readdir-glob@1.1.3: resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - readdirp@4.0.2: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} @@ -4486,10 +4095,6 @@ packages: sax@1.4.3: resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -4592,14 +4197,6 @@ packages: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} - split@0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - - splitpanes@4.0.4: - resolution: {integrity: sha512-RbysugZhjbCw5fgplvk3hOXr41stahQDtZhHVkhnnJI6H4wlGDhM2kIpbehy7v92duy9GnMa8zIhHigIV1TWtg==} - peerDependencies: - vue: ^3.2.0 - srvx@0.9.8: resolution: {integrity: sha512-RZaxTKJEE/14HYn8COLuUOJAt0U55N9l1Xf6jj+T0GoA01EUH1Xz5JtSUOI+EHn+AEgPCVn7gk6jHJffrr06fQ==} engines: {node: '>=20.16.0'} @@ -4621,9 +4218,6 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - stream-combiner@0.0.4: - resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} - streamx@2.21.0: resolution: {integrity: sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==} @@ -4684,10 +4278,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -4701,17 +4291,10 @@ packages: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - tabbable@6.3.0: - resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} - tagged-tag@1.0.0: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -4723,26 +4306,6 @@ packages: resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} - terminate@2.8.0: - resolution: {integrity: sha512-bcbjJEg0wY5nuJXvGxxHfmoEPkyHLCctUKO6suwtxy7jVSgGcgPeGwpbLDLELFhIaxCGRr3dPvyNg1yuz2V0eg==} - engines: {node: '>=12'} - - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser@5.36.0: resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} engines: {node: '>=10'} @@ -4751,15 +4314,6 @@ packages: text-decoder@1.2.1: resolution: {integrity: sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==} - thingies@2.5.0: - resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} - engines: {node: '>=10.18'} - peerDependencies: - tslib: ^2 - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -4797,12 +4351,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tree-dump@1.1.0: - resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} @@ -4855,20 +4403,14 @@ packages: typescript: optional: true - unconfig-core@7.4.2: - resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} - - unconfig@7.4.2: - resolution: {integrity: sha512-nrMlWRQ1xdTjSnSUqvYqJzbTBFugoqHobQj58B2bc8qxHKBBHMNNsWQFP3Cd3/JZK907voM2geYPWqD4VK3MPQ==} - uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} unctx@2.4.1: resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==} - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} @@ -4895,18 +4437,6 @@ packages: unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unocss@66.5.10: - resolution: {integrity: sha512-h3OjHVKsYFiet7ZSgxD6+odC1bpx+N0JYP2bWy/vcqjrApaZmYg4CKmvxCFNxw1+qVoxyfhhjcVZHGUpf9jaKA==} - engines: {node: '>=14'} - peerDependencies: - '@unocss/webpack': 66.5.10 - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - peerDependenciesMeta: - '@unocss/webpack': - optional: true - vite: - optional: true - unplugin-utils@0.2.4: resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} engines: {node: '>=18.12.0'} @@ -5034,11 +4564,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - v-lazy-show@0.3.0: - resolution: {integrity: sha512-xpVALnvzB+RoDkI/5gqzVC2bL/Mh0Mw5/cPpSWJTTS6K4yDwFE2hZr5OsgFS74c6IHV6/k0jzSkAFXJttnhufg==} - peerDependencies: - '@vue/compiler-core': ^3.5 - vite-dev-rpc@1.1.0: resolution: {integrity: sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==} peerDependencies: @@ -5187,6 +4712,9 @@ packages: yaml: optional: true + vitest-environment-nuxt@1.0.1: + resolution: {integrity: sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==} + vitest@4.0.16: resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -5230,9 +4758,6 @@ packages: vue-devtools-stub@0.1.0: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} - vue-flow-layout@0.2.0: - resolution: {integrity: sha512-zKgsWWkXq0xrus7H4Mc+uFs1ESrmdTXlO0YNbR6wMdPaFvosL3fMB8N7uTV308UhGy9UvTrGhIY7mVz9eN+L0Q==} - vue-router@4.6.4: resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} peerDependencies: @@ -5260,30 +4785,12 @@ packages: typescript: optional: true - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} - engines: {node: '>=10.13.0'} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.97.0: - resolution: {integrity: sha512-CWT8v7ShSfj7tGs4TLRtaOLmOCPWhoKEvp+eA7FVx8Xrjb3XfT0aXdxDItnRZmE8sHcH+a8ayDrJCOjXKxVFfQ==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -5378,11 +4885,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/install-pkg@1.1.0': - dependencies: - package-manager-detector: 1.6.0 - tinyexec: 1.0.2 - '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -5632,18 +5134,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.27.7': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/parser': 7.27.7 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 @@ -6019,13 +5509,13 @@ snapshots: '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 optional: true - '@eslint-community/regexpp@4.12.1': + '@eslint-community/regexpp@4.12.2': optional: true '@eslint/config-array@0.21.1': @@ -6054,7 +5544,7 @@ snapshots: espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 @@ -6077,52 +5567,21 @@ snapshots: '@humanfs/core@0.19.1': optional: true - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 optional: true '@humanwhocodes/module-importer@1.0.1': optional: true - '@humanwhocodes/retry@0.3.1': + '@humanwhocodes/retry@0.4.3': optional: true - '@humanwhocodes/retry@0.4.2': - optional: true + '@ioredis/commands@1.4.0': {} - '@iconify-json/carbon@1.2.15': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/logos@1.2.10': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/ri@1.2.6': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/simple-icons@1.2.63': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/tabler@1.2.24': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify/types@2.0.0': {} - - '@iconify/utils@3.1.0': - dependencies: - '@antfu/install-pkg': 1.1.0 - '@iconify/types': 2.0.0 - mlly: 1.8.0 - - '@ioredis/commands@1.4.0': {} - - '@isaacs/cliui@8.0.2': + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 @@ -6174,42 +5633,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - hyperdyperid: 1.2.0 - thingies: 2.5.0(tslib@2.8.1) - tree-dump: 1.1.0(tslib@2.8.1) - tslib: 2.8.1 - - '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - tslib: 2.8.1 - - '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - tslib: 2.8.1 - '@kwsites/file-exists@1.1.1': dependencies: debug: 4.4.0 @@ -6287,59 +5710,14 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@3.1.1(magicast@0.5.1)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': + '@nuxt/devtools-kit@3.1.1(magicast@0.5.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': dependencies: '@nuxt/kit': 4.2.2(magicast@0.5.1) execa: 8.0.1 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) transitivePeerDependencies: - magicast - '@nuxt/devtools-ui-kit@3.1.1(@nuxt/devtools@3.1.1(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)))(@unocss/webpack@66.5.10(webpack@5.97.0(esbuild@0.27.2)))(@vue/compiler-core@3.5.26)(change-case@5.4.4)(fuse.js@7.1.0)(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(postcss@8.5.6)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))(webpack@5.97.0(esbuild@0.27.2))': - dependencies: - '@iconify-json/carbon': 1.2.15 - '@iconify-json/logos': 1.2.10 - '@iconify-json/ri': 1.2.6 - '@iconify-json/tabler': 1.2.24 - '@nuxt/devtools': 3.1.1(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) - '@nuxt/devtools-kit': 3.1.1(magicast@0.5.1)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - '@nuxt/kit': 4.2.2(magicast@0.5.1) - '@unocss/core': 66.5.10 - '@unocss/nuxt': 66.5.10(magicast@0.5.1)(postcss@8.5.6)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(webpack@5.97.0(esbuild@0.27.2)) - '@unocss/preset-attributify': 66.5.10 - '@unocss/preset-icons': 66.5.10 - '@unocss/preset-mini': 66.5.10 - '@unocss/reset': 66.5.10 - '@vueuse/core': 14.1.0(vue@3.5.26(typescript@5.9.3)) - '@vueuse/integrations': 14.1.0(change-case@5.4.4)(focus-trap@7.7.0)(fuse.js@7.1.0)(vue@3.5.26(typescript@5.9.3)) - '@vueuse/nuxt': 14.1.0(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) - defu: 6.1.4 - focus-trap: 7.7.0 - splitpanes: 4.0.4(vue@3.5.26(typescript@5.9.3)) - unocss: 66.5.10(@unocss/webpack@66.5.10(webpack@5.97.0(esbuild@0.27.2)))(postcss@8.5.6)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - v-lazy-show: 0.3.0(@vue/compiler-core@3.5.26) - transitivePeerDependencies: - - '@unocss/webpack' - - '@vue/compiler-core' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - magicast - - nprogress - - nuxt - - postcss - - qrcode - - sortablejs - - supports-color - - universal-cookie - - vite - - vue - - webpack - '@nuxt/devtools-wizard@3.1.1': dependencies: consola: 3.4.2 @@ -6351,12 +5729,12 @@ snapshots: prompts: 2.4.2 semver: 7.7.3 - '@nuxt/devtools@3.1.1(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@nuxt/devtools@3.1.1(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: - '@nuxt/devtools-kit': 3.1.1(magicast@0.5.1)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + '@nuxt/devtools-kit': 3.1.1(magicast@0.5.1)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) '@nuxt/devtools-wizard': 3.1.1 '@nuxt/kit': 4.2.2(magicast@0.5.1) - '@vue/devtools-core': 8.0.5(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + '@vue/devtools-core': 8.0.5(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) '@vue/devtools-kit': 8.0.5 birpc: 2.9.0 consola: 3.4.2 @@ -6381,9 +5759,9 @@ snapshots: sirv: 3.0.2 structured-clone-es: 1.0.0 tinyglobby: 0.2.15 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - vite-plugin-inspect: 11.3.3(@nuxt/kit@4.2.2(magicast@0.5.1))(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - vite-plugin-vue-tracer: 1.2.0(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite-plugin-inspect: 11.3.3(@nuxt/kit@4.2.2(magicast@0.5.1))(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + vite-plugin-vue-tracer: 1.2.0(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) which: 5.0.0 ws: 8.18.3 transitivePeerDependencies: @@ -6395,7 +5773,7 @@ snapshots: '@nuxt/kit@3.15.4(magicast@0.5.1)': dependencies: c12: 2.0.1(magicast@0.5.1) - consola: 3.4.0 + consola: 3.4.2 defu: 6.1.4 destr: 2.0.3 globby: 14.0.2 @@ -6418,6 +5796,32 @@ snapshots: - magicast - supports-color + '@nuxt/kit@3.20.2(magicast@0.5.1)': + dependencies: + c12: 3.3.3(magicast@0.5.1) + consola: 3.4.2 + defu: 6.1.4 + destr: 2.0.5 + errx: 0.1.0 + exsolve: 1.0.8 + ignore: 7.0.5 + jiti: 2.6.1 + klona: 2.0.6 + knitwork: 1.3.0 + mlly: 1.8.0 + ohash: 2.0.11 + pathe: 2.0.3 + pkg-types: 2.3.0 + rc9: 2.1.2 + scule: 1.3.0 + semver: 7.7.3 + tinyglobby: 0.2.15 + ufo: 1.6.1 + unctx: 2.4.1 + untyped: 2.0.0 + transitivePeerDependencies: + - magicast + '@nuxt/kit@4.2.2(magicast@0.5.1)': dependencies: c12: 3.3.3(magicast@0.5.1) @@ -6466,7 +5870,7 @@ snapshots: - vue - vue-tsc - '@nuxt/nitro-server@4.2.2(db0@0.3.4)(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(typescript@5.9.3)': + '@nuxt/nitro-server@4.2.2(db0@0.3.4)(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(typescript@5.9.3)': dependencies: '@nuxt/devalue': 2.0.2 '@nuxt/kit': 4.2.2(magicast@0.5.1) @@ -6484,7 +5888,7 @@ snapshots: klona: 2.0.6 mocked-exports: 0.1.1 nitropack: 2.12.9 - nuxt: 4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2) + nuxt: 4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2) pathe: 2.0.3 pkg-types: 2.3.0 radix3: 1.1.2 @@ -6554,12 +5958,45 @@ snapshots: - magicast - supports-color - '@nuxt/vite-builder@4.2.2(eslint@9.39.2(jiti@2.6.1))(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vue-tsc@3.2.1(typescript@5.9.3))(vue@3.5.26(typescript@5.9.3))(yaml@2.8.2)': + '@nuxt/test-utils@3.21.0(magicast@0.5.1)(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': + dependencies: + '@nuxt/kit': 3.20.2(magicast@0.5.1) + c12: 3.3.3(magicast@0.5.1) + consola: 3.4.2 + defu: 6.1.4 + destr: 2.0.5 + estree-walker: 3.0.3 + exsolve: 1.0.8 + fake-indexeddb: 6.2.5 + get-port-please: 3.2.0 + h3: 1.15.4 + local-pkg: 1.1.2 + magic-string: 0.30.21 + node-fetch-native: 1.6.7 + node-mock-http: 1.0.4 + ofetch: 1.5.1 + pathe: 2.0.3 + perfect-debounce: 2.0.0 + radix3: 1.1.2 + scule: 1.3.0 + std-env: 3.10.0 + tinyexec: 1.0.2 + ufo: 1.6.1 + unplugin: 2.3.11 + vitest-environment-nuxt: 1.0.1(magicast@0.5.1)(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + vue: 3.5.26(typescript@5.9.3) + optionalDependencies: + vitest: 4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + transitivePeerDependencies: + - magicast + - typescript + + '@nuxt/vite-builder@4.2.2(@types/node@25.0.3)(eslint@9.39.2(jiti@2.6.1))(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vue-tsc@3.2.1(typescript@5.9.3))(vue@3.5.26(typescript@5.9.3))(yaml@2.8.2)': dependencies: '@nuxt/kit': 4.2.2(magicast@0.5.1) '@rollup/plugin-replace': 6.0.3(rollup@4.54.0) - '@vitejs/plugin-vue': 6.0.3(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) - '@vitejs/plugin-vue-jsx': 5.1.2(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + '@vitejs/plugin-vue': 6.0.3(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + '@vitejs/plugin-vue-jsx': 5.1.2(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) autoprefixer: 10.4.23(postcss@8.5.6) consola: 3.4.2 cssnano: 7.1.2(postcss@8.5.6) @@ -6574,7 +6011,7 @@ snapshots: magic-string: 0.30.21 mlly: 1.8.0 mocked-exports: 0.1.1 - nuxt: 4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2) + nuxt: 4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2) pathe: 2.0.3 pkg-types: 2.3.0 postcss: 8.5.6 @@ -6583,9 +6020,9 @@ snapshots: std-env: 3.10.0 ufo: 1.6.1 unenv: 2.0.0-rc.24 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - vite-node: 5.2.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - vite-plugin-checker: 0.12.0(eslint@9.39.2(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.35.0)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3)) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite-node: 5.2.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite-plugin-checker: 0.12.0(eslint@9.39.2(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.36.0)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3)) vue: 3.5.26(typescript@5.9.3) vue-bundle-renderer: 2.2.0 transitivePeerDependencies: @@ -6756,28 +6193,28 @@ snapshots: '@oxc-transform/binding-win32-x64-msvc@0.102.0': optional: true - '@oxlint/darwin-arm64@1.35.0': + '@oxlint/darwin-arm64@1.36.0': optional: true - '@oxlint/darwin-x64@1.35.0': + '@oxlint/darwin-x64@1.36.0': optional: true - '@oxlint/linux-arm64-gnu@1.35.0': + '@oxlint/linux-arm64-gnu@1.36.0': optional: true - '@oxlint/linux-arm64-musl@1.35.0': + '@oxlint/linux-arm64-musl@1.36.0': optional: true - '@oxlint/linux-x64-gnu@1.35.0': + '@oxlint/linux-x64-gnu@1.36.0': optional: true - '@oxlint/linux-x64-musl@1.35.0': + '@oxlint/linux-x64-musl@1.36.0': optional: true - '@oxlint/win32-arm64@1.35.0': + '@oxlint/win32-arm64@1.36.0': optional: true - '@oxlint/win32-x64@1.35.0': + '@oxlint/win32-x64@1.36.0': optional: true '@parcel/watcher-android-arm64@2.5.0': @@ -6866,16 +6303,12 @@ snapshots: dependencies: imgix-url-builder: 0.0.6 - '@prismicio/vue@5.3.0-pr.89.235a3d3(@prismicio/client@7.21.1)(vue@3.5.26(typescript@5.9.3))': + '@prismicio/vue@5.3.0-pr.89.33291fc(@prismicio/client@7.21.1)(vue@3.5.26(typescript@5.9.3))': dependencies: '@prismicio/client': 7.21.1 esm-env: 1.2.2 vue: 3.5.26(typescript@5.9.3) - '@quansync/fs@1.0.0': - dependencies: - quansync: 1.0.0 - '@rolldown/pluginutils@1.0.0-beta.53': {} '@rolldown/pluginutils@1.0.0-beta.56': {} @@ -7123,21 +6556,12 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@types/estree@1.0.6': {} '@types/estree@1.0.8': {} - '@types/json-schema@7.0.15': {} + '@types/json-schema@7.0.15': + optional: true '@types/mdast@4.0.4': dependencies: @@ -7145,9 +6569,9 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@22.10.1': + '@types/node@25.0.3': dependencies: - undici-types: 6.20.0 + undici-types: 7.16.0 '@types/parse-path@7.0.3': {} @@ -7155,198 +6579,12 @@ snapshots: '@types/unist@3.0.3': {} - '@types/web-bluetooth@0.0.21': {} - '@unhead/vue@2.0.19(vue@3.5.26(typescript@5.9.3))': dependencies: hookable: 5.5.3 unhead: 2.0.19 vue: 3.5.26(typescript@5.9.3) - '@unocss/astro@66.5.10(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/reset': 66.5.10 - '@unocss/vite': 66.5.10(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - optionalDependencies: - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - - '@unocss/cli@66.5.10': - dependencies: - '@jridgewell/remapping': 2.3.5 - '@unocss/config': 66.5.10 - '@unocss/core': 66.5.10 - '@unocss/preset-uno': 66.5.10 - cac: 6.7.14 - chokidar: 3.6.0 - colorette: 2.0.20 - consola: 3.4.2 - magic-string: 0.30.21 - pathe: 2.0.3 - perfect-debounce: 1.0.0 - tinyglobby: 0.2.15 - unplugin-utils: 0.3.1 - - '@unocss/config@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - unconfig: 7.4.2 - - '@unocss/core@66.5.10': {} - - '@unocss/extractor-arbitrary-variants@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - - '@unocss/inspector@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/rule-utils': 66.5.10 - colorette: 2.0.20 - gzip-size: 6.0.0 - sirv: 3.0.2 - vue-flow-layout: 0.2.0 - - '@unocss/nuxt@66.5.10(magicast@0.5.1)(postcss@8.5.6)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(webpack@5.97.0(esbuild@0.27.2))': - dependencies: - '@nuxt/kit': 4.2.2(magicast@0.5.1) - '@unocss/config': 66.5.10 - '@unocss/core': 66.5.10 - '@unocss/preset-attributify': 66.5.10 - '@unocss/preset-icons': 66.5.10 - '@unocss/preset-tagify': 66.5.10 - '@unocss/preset-typography': 66.5.10 - '@unocss/preset-web-fonts': 66.5.10 - '@unocss/preset-wind3': 66.5.10 - '@unocss/preset-wind4': 66.5.10 - '@unocss/reset': 66.5.10 - '@unocss/vite': 66.5.10(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - '@unocss/webpack': 66.5.10(webpack@5.97.0(esbuild@0.27.2)) - unocss: 66.5.10(@unocss/webpack@66.5.10(webpack@5.97.0(esbuild@0.27.2)))(postcss@8.5.6)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - transitivePeerDependencies: - - magicast - - postcss - - supports-color - - vite - - webpack - - '@unocss/postcss@66.5.10(postcss@8.5.6)': - dependencies: - '@unocss/config': 66.5.10 - '@unocss/core': 66.5.10 - '@unocss/rule-utils': 66.5.10 - css-tree: 3.1.0 - postcss: 8.5.6 - tinyglobby: 0.2.15 - - '@unocss/preset-attributify@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - - '@unocss/preset-icons@66.5.10': - dependencies: - '@iconify/utils': 3.1.0 - '@unocss/core': 66.5.10 - ofetch: 1.5.1 - - '@unocss/preset-mini@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/extractor-arbitrary-variants': 66.5.10 - '@unocss/rule-utils': 66.5.10 - - '@unocss/preset-tagify@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - - '@unocss/preset-typography@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/rule-utils': 66.5.10 - - '@unocss/preset-uno@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/preset-wind3': 66.5.10 - - '@unocss/preset-web-fonts@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - ofetch: 1.5.1 - - '@unocss/preset-wind3@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/preset-mini': 66.5.10 - '@unocss/rule-utils': 66.5.10 - - '@unocss/preset-wind4@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/extractor-arbitrary-variants': 66.5.10 - '@unocss/rule-utils': 66.5.10 - - '@unocss/preset-wind@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/preset-wind3': 66.5.10 - - '@unocss/reset@66.5.10': {} - - '@unocss/rule-utils@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - magic-string: 0.30.21 - - '@unocss/transformer-attributify-jsx@66.5.10': - dependencies: - '@babel/parser': 7.27.7 - '@babel/traverse': 7.27.7 - '@unocss/core': 66.5.10 - transitivePeerDependencies: - - supports-color - - '@unocss/transformer-compile-class@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - - '@unocss/transformer-directives@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - '@unocss/rule-utils': 66.5.10 - css-tree: 3.1.0 - - '@unocss/transformer-variant-group@66.5.10': - dependencies: - '@unocss/core': 66.5.10 - - '@unocss/vite@66.5.10(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': - dependencies: - '@jridgewell/remapping': 2.3.5 - '@unocss/config': 66.5.10 - '@unocss/core': 66.5.10 - '@unocss/inspector': 66.5.10 - chokidar: 3.6.0 - magic-string: 0.30.21 - pathe: 2.0.3 - tinyglobby: 0.2.15 - unplugin-utils: 0.3.1 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - - '@unocss/webpack@66.5.10(webpack@5.97.0(esbuild@0.27.2))': - dependencies: - '@jridgewell/remapping': 2.3.5 - '@unocss/config': 66.5.10 - '@unocss/core': 66.5.10 - chokidar: 3.6.0 - magic-string: 0.30.21 - pathe: 2.0.3 - tinyglobby: 0.2.15 - unplugin: 2.3.11 - unplugin-utils: 0.3.1 - webpack: 5.97.0(esbuild@0.27.2) - webpack-sources: 3.3.3 - '@vercel/nft@0.30.4(rollup@4.54.0)': dependencies: '@mapbox/node-pre-gyp': 2.0.3 @@ -7366,25 +6604,25 @@ snapshots: - rollup - supports-color - '@vitejs/plugin-vue-jsx@5.1.2(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue-jsx@5.1.2(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) '@rolldown/pluginutils': 1.0.0-beta.56 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.28.5) - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) vue: 3.5.26(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.3(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.3(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.53 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) vue: 3.5.26(typescript@5.9.3) - '@vitest/coverage-v8@4.0.16(vitest@4.0.16(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.16 @@ -7397,7 +6635,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vitest: 4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -7410,13 +6648,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@6.2.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': + '@vitest/mocker@4.0.16(vite@6.2.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.2.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 6.2.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) '@vitest/pretty-format@4.0.16': dependencies: @@ -7536,14 +6774,14 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/devtools-core@8.0.5(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@vue/devtools-core@8.0.5(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: '@vue/devtools-kit': 8.0.5 '@vue/devtools-shared': 8.0.5 mitt: 3.0.1 nanoid: 5.1.6 pathe: 2.0.3 - vite-hot-client: 2.1.0(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + vite-hot-client: 2.1.0(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) vue: 3.5.26(typescript@5.9.3) transitivePeerDependencies: - vite @@ -7598,120 +6836,6 @@ snapshots: '@vue/shared@3.5.26': {} - '@vueuse/core@14.1.0(vue@3.5.26(typescript@5.9.3))': - dependencies: - '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.1.0 - '@vueuse/shared': 14.1.0(vue@3.5.26(typescript@5.9.3)) - vue: 3.5.26(typescript@5.9.3) - - '@vueuse/integrations@14.1.0(change-case@5.4.4)(focus-trap@7.7.0)(fuse.js@7.1.0)(vue@3.5.26(typescript@5.9.3))': - dependencies: - '@vueuse/core': 14.1.0(vue@3.5.26(typescript@5.9.3)) - '@vueuse/shared': 14.1.0(vue@3.5.26(typescript@5.9.3)) - vue: 3.5.26(typescript@5.9.3) - optionalDependencies: - change-case: 5.4.4 - focus-trap: 7.7.0 - fuse.js: 7.1.0 - - '@vueuse/metadata@14.1.0': {} - - '@vueuse/nuxt@14.1.0(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': - dependencies: - '@nuxt/kit': 4.2.2(magicast@0.5.1) - '@vueuse/core': 14.1.0(vue@3.5.26(typescript@5.9.3)) - '@vueuse/metadata': 14.1.0 - local-pkg: 1.1.2 - nuxt: 4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2) - vue: 3.5.26(typescript@5.9.3) - transitivePeerDependencies: - - magicast - - '@vueuse/shared@14.1.0(vue@3.5.26(typescript@5.9.3))': - dependencies: - vue: 3.5.26(typescript@5.9.3) - - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - abbrev@3.0.1: {} abort-controller@3.0.0: @@ -7737,16 +6861,13 @@ snapshots: transitivePeerDependencies: - supports-color - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + optional: true alien-signals@3.1.1: {} @@ -7815,7 +6936,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001761 + caniuse-lite: 1.0.30001762 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -7832,8 +6953,6 @@ snapshots: baseline-browser-mapping@2.9.11: {} - binary-extensions@2.3.0: {} - binary-searching@2.0.5: {} bindings@1.5.0: @@ -7842,11 +6961,9 @@ snapshots: birpc@2.9.0: {} - birpc@4.0.0: {} - boolbase@1.0.0: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -7862,14 +6979,14 @@ snapshots: browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001686 + caniuse-lite: 1.0.30001762 electron-to-chromium: 1.5.70 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001701 + caniuse-lite: 1.0.30001762 electron-to-chromium: 1.5.109 node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.4) @@ -7877,7 +6994,7 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.11 - caniuse-lite: 1.0.30001761 + caniuse-lite: 1.0.30001762 electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -7937,15 +7054,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.24.2 - caniuse-lite: 1.0.30001686 + caniuse-lite: 1.0.30001762 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001686: {} - - caniuse-lite@1.0.30001701: {} - - caniuse-lite@1.0.30001761: {} + caniuse-lite@1.0.30001762: {} chai@6.2.2: {} @@ -7955,23 +7068,8 @@ snapshots: supports-color: 7.2.0 optional: true - change-case@5.4.4: - optional: true - character-entities@2.0.2: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - chokidar@4.0.3: dependencies: readdirp: 4.0.2 @@ -7984,11 +7082,9 @@ snapshots: chownr@3.0.0: {} - chrome-trace-event@1.0.4: {} - citty@0.1.6: dependencies: - consola: 3.4.0 + consola: 3.4.2 clipboardy@4.0.0: dependencies: @@ -8012,8 +7108,6 @@ snapshots: colord@2.9.3: {} - colorette@2.0.20: {} - commander@11.1.0: {} commander@2.20.3: {} @@ -8039,8 +7133,6 @@ snapshots: confbox@0.2.2: {} - consola@3.4.0: {} - consola@3.4.2: {} convert-source-map@2.0.0: {} @@ -8260,11 +7352,6 @@ snapshots: encodeurl@2.0.0: {} - enhanced-resolve@5.17.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - entities@4.5.0: {} entities@7.0.0: {} @@ -8398,11 +7485,6 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -8417,17 +7499,17 @@ snapshots: eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.39.2 '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.6 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 + '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.12.6 chalk: 4.1.2 @@ -8437,7 +7519,7 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -8466,7 +7548,7 @@ snapshots: eslint-visitor-keys: 4.2.1 optional: true - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 optional: true @@ -8474,10 +7556,10 @@ snapshots: esrecurse@4.3.0: dependencies: estraverse: 5.3.0 + optional: true - estraverse@4.3.0: {} - - estraverse@5.3.0: {} + estraverse@5.3.0: + optional: true estree-walker@2.0.2: {} @@ -8490,16 +7572,6 @@ snapshots: etag@1.8.1: {} - event-stream@3.3.4: - dependencies: - duplexer: 0.1.2 - from: 0.1.7 - map-stream: 0.1.0 - pause-stream: 0.0.11 - split: 0.3.3 - stream-combiner: 0.0.4 - through: 2.3.8 - event-target-shim@5.0.1: {} events@3.3.0: {} @@ -8520,7 +7592,10 @@ snapshots: exsolve@1.0.8: {} - fast-deep-equal@3.1.3: {} + fake-indexeddb@6.2.5: {} + + fast-deep-equal@3.1.3: + optional: true fast-fifo@1.3.2: {} @@ -8532,7 +7607,8 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} + fast-json-stable-stringify@2.1.0: + optional: true fast-levenshtein@2.0.6: optional: true @@ -8576,17 +7652,13 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.2 + flatted: 3.3.3 keyv: 4.5.4 optional: true - flatted@3.3.2: + flatted@3.3.3: optional: true - focus-trap@7.7.0: - dependencies: - tabbable: 6.3.0 - foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 @@ -8596,8 +7668,6 @@ snapshots: fresh@2.0.0: {} - from@0.1.7: {} - fs-minipass@2.1.0: dependencies: minipass: 3.3.6 @@ -8627,7 +7697,7 @@ snapshots: giget@1.2.3: dependencies: citty: 0.1.6 - consola: 3.4.0 + consola: 3.4.2 defu: 6.1.4 node-fetch-native: 1.6.4 nypm: 0.3.12 @@ -8662,12 +7732,6 @@ snapshots: is-glob: 4.0.3 optional: true - glob-to-regex.js@1.2.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - glob-to-regexp@0.4.1: {} - glob@10.4.5: dependencies: foreground-child: 3.3.0 @@ -8715,10 +7779,6 @@ snapshots: graceful-fs@4.2.11: {} - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - gzip-size@7.0.0: dependencies: duplexer: 0.1.2 @@ -8778,8 +7838,6 @@ snapshots: human-signals@5.0.0: {} - hyperdyperid@1.2.0: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -8796,7 +7854,7 @@ snapshots: imgix-url-builder@0.0.6: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -8833,10 +7891,6 @@ snapshots: iron-webcrypto@1.2.1: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -8929,12 +7983,6 @@ snapshots: javascript-natural-sort@0.7.1: {} - jest-worker@27.5.1: - dependencies: - '@types/node': 22.10.1 - merge-stream: 2.0.0 - supports-color: 8.1.1 - jiti@1.21.7: {} jiti@2.4.2: {} @@ -8957,9 +8005,8 @@ snapshots: json-buffer@3.0.1: optional: true - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} + json-schema-traverse@0.4.1: + optional: true json-stable-stringify-without-jsonify@1.0.1: optional: true @@ -9004,7 +8051,7 @@ snapshots: '@parcel/watcher-wasm': 2.5.0 citty: 0.1.6 clipboardy: 4.0.0 - consola: 3.4.0 + consola: 3.4.2 crossws: 0.3.1 defu: 6.1.4 get-port-please: 3.1.2 @@ -9019,8 +8066,6 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - loader-runner@4.3.0: {} - local-pkg@1.0.0: dependencies: mlly: 1.7.4 @@ -9090,8 +8135,6 @@ snapshots: dependencies: semver: 7.7.1 - map-stream@0.1.0: {} - mdast-util-from-markdown@2.0.2: dependencies: '@types/mdast': 4.0.4 @@ -9117,15 +8160,6 @@ snapshots: mdn-data@2.12.2: {} - memfs@4.51.1: - dependencies: - '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - glob-to-regex.js: 1.2.0(tslib@2.8.1) - thingies: 2.5.0(tslib@2.8.1) - tree-dump: 1.1.0(tslib@2.8.1) - tslib: 2.8.1 - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -9268,14 +8302,8 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -9288,7 +8316,7 @@ snapshots: minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 optional: true minimatch@5.1.6: @@ -9374,8 +8402,6 @@ snapshots: natural-compare@1.4.0: optional: true - neo-async@2.6.2: {} - nitropack@2.12.9: dependencies: '@cloudflare/kv-asset-handler': 0.4.1 @@ -9521,16 +8547,16 @@ snapshots: dependencies: boolbase: 1.0.0 - nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2): + nuxt@4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2): dependencies: '@dxup/nuxt': 0.2.2(magicast@0.5.1) '@nuxt/cli': 3.31.3(cac@6.7.14)(magicast@0.5.1) - '@nuxt/devtools': 3.1.1(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + '@nuxt/devtools': 3.1.1(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) '@nuxt/kit': 4.2.2(magicast@0.5.1) - '@nuxt/nitro-server': 4.2.2(db0@0.3.4)(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(typescript@5.9.3) + '@nuxt/nitro-server': 4.2.2(db0@0.3.4)(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(typescript@5.9.3) '@nuxt/schema': 4.2.2 '@nuxt/telemetry': 2.6.6(magicast@0.5.1) - '@nuxt/vite-builder': 4.2.2(eslint@9.39.2(jiti@2.6.1))(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(optionator@0.9.4)(oxlint@1.35.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vue-tsc@3.2.1(typescript@5.9.3))(vue@3.5.26(typescript@5.9.3))(yaml@2.8.2) + '@nuxt/vite-builder': 4.2.2(@types/node@25.0.3)(eslint@9.39.2(jiti@2.6.1))(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.0)(@types/node@25.0.3)(@vue/compiler-sfc@3.5.26)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3))(yaml@2.8.2))(optionator@0.9.4)(oxlint@1.36.0)(rollup@4.54.0)(terser@5.36.0)(tsx@4.19.2)(typescript@5.9.3)(vue-tsc@3.2.1(typescript@5.9.3))(vue@3.5.26(typescript@5.9.3))(yaml@2.8.2) '@unhead/vue': 2.0.19(vue@3.5.26(typescript@5.9.3)) '@vue/shared': 3.5.26 c12: 3.3.3(magicast@0.5.1) @@ -9582,6 +8608,7 @@ snapshots: vue-router: 4.6.4(vue@3.5.26(typescript@5.9.3)) optionalDependencies: '@parcel/watcher': 2.5.0 + '@types/node': 25.0.3 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9644,7 +8671,7 @@ snapshots: nypm@0.3.12: dependencies: citty: 0.1.6 - consola: 3.4.0 + consola: 3.4.2 execa: 8.0.1 pathe: 1.1.2 pkg-types: 1.3.1 @@ -9764,16 +8791,16 @@ snapshots: magic-regexp: 0.10.0 oxc-parser: 0.102.0 - oxlint@1.35.0: + oxlint@1.36.0: optionalDependencies: - '@oxlint/darwin-arm64': 1.35.0 - '@oxlint/darwin-x64': 1.35.0 - '@oxlint/linux-arm64-gnu': 1.35.0 - '@oxlint/linux-arm64-musl': 1.35.0 - '@oxlint/linux-x64-gnu': 1.35.0 - '@oxlint/linux-x64-musl': 1.35.0 - '@oxlint/win32-arm64': 1.35.0 - '@oxlint/win32-x64': 1.35.0 + '@oxlint/darwin-arm64': 1.36.0 + '@oxlint/darwin-x64': 1.36.0 + '@oxlint/linux-arm64-gnu': 1.36.0 + '@oxlint/linux-arm64-musl': 1.36.0 + '@oxlint/linux-x64-gnu': 1.36.0 + '@oxlint/linux-x64-musl': 1.36.0 + '@oxlint/win32-arm64': 1.36.0 + '@oxlint/win32-x64': 1.36.0 p-limit@3.1.0: dependencies: @@ -9835,10 +8862,6 @@ snapshots: pathe@2.0.3: {} - pause-stream@0.0.11: - dependencies: - through: 2.3.8 - perfect-debounce@1.0.0: {} perfect-debounce@2.0.0: {} @@ -10063,16 +9086,11 @@ snapshots: protocols@2.0.1: {} - ps-tree@1.2.0: - dependencies: - event-stream: 3.3.4 - - punycode@2.3.1: {} + punycode@2.3.1: + optional: true quansync@0.2.11: {} - quansync@1.0.0: {} - queue-microtask@1.2.3: {} queue-tick@1.0.1: {} @@ -10112,10 +9130,6 @@ snapshots: dependencies: minimatch: 5.1.6 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - readdirp@4.0.2: {} readdirp@5.0.0: {} @@ -10232,12 +9246,6 @@ snapshots: sax@1.4.3: {} - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - scule@1.3.0: {} semver@6.3.1: {} @@ -10332,14 +9340,6 @@ snapshots: speakingurl@14.0.1: {} - split@0.3.3: - dependencies: - through: 2.3.8 - - splitpanes@4.0.4(vue@3.5.26(typescript@5.9.3)): - dependencies: - vue: 3.5.26(typescript@5.9.3) - srvx@0.9.8: {} stackback@0.0.2: {} @@ -10352,10 +9352,6 @@ snapshots: std-env@3.8.0: {} - stream-combiner@0.0.4: - dependencies: - duplexer: 0.1.2 - streamx@2.21.0: dependencies: fast-fifo: 1.3.2 @@ -10423,10 +9419,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} svgo@4.0.0: @@ -10441,12 +9433,8 @@ snapshots: system-architecture@0.1.0: {} - tabbable@6.3.0: {} - tagged-tag@1.0.0: {} - tapable@2.2.1: {} - tar-stream@3.1.7: dependencies: b4a: 1.6.7 @@ -10470,21 +9458,6 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - terminate@2.8.0: - dependencies: - ps-tree: 1.2.0 - - terser-webpack-plugin@5.3.10(esbuild@0.27.2)(webpack@5.97.0(esbuild@0.27.2)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.97.0(esbuild@0.27.2) - optionalDependencies: - esbuild: 0.27.2 - terser@5.36.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -10494,12 +9467,6 @@ snapshots: text-decoder@1.2.1: {} - thingies@2.5.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - through@2.3.8: {} - tiny-invariant@1.3.3: {} tinybench@2.9.0: {} @@ -10528,15 +9495,12 @@ snapshots: tr46@0.0.3: {} - tree-dump@1.1.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 - tslib@2.8.1: {} + tslib@2.8.1: + optional: true tsx@4.19.2: dependencies: @@ -10599,19 +9563,6 @@ snapshots: - vue-sfc-transformer - vue-tsc - unconfig-core@7.4.2: - dependencies: - '@quansync/fs': 1.0.0 - quansync: 1.0.0 - - unconfig@7.4.2: - dependencies: - '@quansync/fs': 1.0.0 - defu: 6.1.4 - jiti: 2.6.1 - quansync: 1.0.0 - unconfig-core: 7.4.2 - uncrypto@0.1.3: {} unctx@2.4.1: @@ -10621,7 +9572,7 @@ snapshots: magic-string: 0.30.17 unplugin: 2.1.2 - undici-types@6.20.0: {} + undici-types@7.16.0: {} unenv@2.0.0-rc.24: dependencies: @@ -10673,34 +9624,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unocss@66.5.10(@unocss/webpack@66.5.10(webpack@5.97.0(esbuild@0.27.2)))(postcss@8.5.6)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): - dependencies: - '@unocss/astro': 66.5.10(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - '@unocss/cli': 66.5.10 - '@unocss/core': 66.5.10 - '@unocss/postcss': 66.5.10(postcss@8.5.6) - '@unocss/preset-attributify': 66.5.10 - '@unocss/preset-icons': 66.5.10 - '@unocss/preset-mini': 66.5.10 - '@unocss/preset-tagify': 66.5.10 - '@unocss/preset-typography': 66.5.10 - '@unocss/preset-uno': 66.5.10 - '@unocss/preset-web-fonts': 66.5.10 - '@unocss/preset-wind': 66.5.10 - '@unocss/preset-wind3': 66.5.10 - '@unocss/preset-wind4': 66.5.10 - '@unocss/transformer-attributify-jsx': 66.5.10 - '@unocss/transformer-compile-class': 66.5.10 - '@unocss/transformer-directives': 66.5.10 - '@unocss/transformer-variant-group': 66.5.10 - '@unocss/vite': 66.5.10(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - optionalDependencies: - '@unocss/webpack': 66.5.10(webpack@5.97.0(esbuild@0.27.2)) - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - transitivePeerDependencies: - - postcss - - supports-color - unplugin-utils@0.2.4: dependencies: pathe: 2.0.3 @@ -10770,7 +9693,7 @@ snapshots: untun@0.1.3: dependencies: citty: 0.1.6 - consola: 3.4.0 + consola: 3.4.2 pathe: 1.1.2 untyped@1.5.2: @@ -10826,30 +9749,27 @@ snapshots: uri-js@4.4.1: dependencies: punycode: 2.3.1 + optional: true util-deprecate@1.0.2: {} - v-lazy-show@0.3.0(@vue/compiler-core@3.5.26): - dependencies: - '@vue/compiler-core': 3.5.26 - - vite-dev-rpc@1.1.0(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): + vite-dev-rpc@1.1.0(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): dependencies: birpc: 2.9.0 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - vite-hot-client: 2.1.0(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite-hot-client: 2.1.0(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) - vite-hot-client@2.1.0(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): + vite-hot-client@2.1.0(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): dependencies: - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - vite-node@5.2.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): + vite-node@5.2.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): dependencies: cac: 6.7.14 es-module-lexer: 1.7.0 obug: 2.1.1 pathe: 2.0.3 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -10863,7 +9783,7 @@ snapshots: - tsx - yaml - vite-plugin-checker@0.12.0(eslint@9.39.2(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.35.0)(typescript@5.9.3)(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3)): + vite-plugin-checker@0.12.0(eslint@9.39.2(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.36.0)(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue-tsc@3.2.1(typescript@5.9.3)): dependencies: '@babel/code-frame': 7.27.1 chokidar: 4.0.3 @@ -10872,16 +9792,16 @@ snapshots: picomatch: 4.0.3 tiny-invariant: 1.3.3 tinyglobby: 0.2.15 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) vscode-uri: 3.1.0 optionalDependencies: eslint: 9.39.2(jiti@2.6.1) optionator: 0.9.4 - oxlint: 1.35.0 + oxlint: 1.36.0 typescript: 5.9.3 vue-tsc: 3.2.1(typescript@5.9.3) - vite-plugin-inspect@11.3.3(@nuxt/kit@4.2.2(magicast@0.5.1))(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): + vite-plugin-inspect@11.3.3(@nuxt/kit@4.2.2(magicast@0.5.1))(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): dependencies: ansis: 4.2.0 debug: 4.4.3 @@ -10891,36 +9811,37 @@ snapshots: perfect-debounce: 2.0.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) - vite-dev-rpc: 1.1.0(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite-dev-rpc: 1.1.0(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) optionalDependencies: '@nuxt/kit': 4.2.2(magicast@0.5.1) transitivePeerDependencies: - supports-color - vite-plugin-vue-tracer@1.2.0(vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)): + vite-plugin-vue-tracer@1.2.0(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)): dependencies: estree-walker: 3.0.3 exsolve: 1.0.8 magic-string: 0.30.21 pathe: 2.0.3 source-map-js: 1.2.1 - vite: 7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) vue: 3.5.26(typescript@5.9.3) - vite@6.2.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): + vite@6.2.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): dependencies: esbuild: 0.25.0 postcss: 8.5.3 rollup: 4.34.9 optionalDependencies: + '@types/node': 25.0.3 fsevents: 2.3.3 jiti: 2.6.1 terser: 5.36.0 tsx: 4.19.2 yaml: 2.8.2 - vite@7.3.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): + vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10929,16 +9850,34 @@ snapshots: rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: + '@types/node': 25.0.3 fsevents: 2.3.3 jiti: 2.6.1 terser: 5.36.0 tsx: 4.19.2 yaml: 2.8.2 - vitest@4.0.16(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): + vitest-environment-nuxt@1.0.1(magicast@0.5.1)(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)): + dependencies: + '@nuxt/test-utils': 3.21.0(magicast@0.5.1)(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + transitivePeerDependencies: + - '@cucumber/cucumber' + - '@jest/globals' + - '@playwright/test' + - '@testing-library/vue' + - '@vitest/ui' + - '@vue/test-utils' + - happy-dom + - jsdom + - magicast + - playwright-core + - typescript + - vitest + + vitest@4.0.16(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@6.2.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) + '@vitest/mocker': 4.0.16(vite@6.2.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -10955,8 +9894,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 6.2.0(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) + vite: 6.2.0(@types/node@25.0.3)(jiti@2.6.1)(terser@5.36.0)(tsx@4.19.2)(yaml@2.8.2) why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.0.3 transitivePeerDependencies: - jiti - less @@ -10978,8 +9919,6 @@ snapshots: vue-devtools-stub@0.1.0: {} - vue-flow-layout@0.2.0: {} - vue-router@4.6.4(vue@3.5.26(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 @@ -11008,47 +9947,10 @@ snapshots: optionalDependencies: typescript: 5.9.3 - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - webidl-conversions@3.0.1: {} - webpack-sources@3.3.3: {} - webpack-virtual-modules@0.6.2: {} - webpack@5.97.0(esbuild@0.27.2): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - browserslist: 4.28.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.27.2)(webpack@5.97.0(esbuild@0.27.2)) - watchpack: 2.4.2 - webpack-sources: 3.3.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 diff --git a/src/devtools/index.ts b/src/devtools/index.ts deleted file mode 100644 index 8adef18..0000000 --- a/src/devtools/index.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { existsSync } from 'node:fs' -import { readFile } from 'node:fs/promises' - -import { extendServerRpc, onDevToolsInitialized, startSubprocess } from '@nuxt/devtools-kit' -import type { Resolver } from '@nuxt/kit' -import { extendViteConfig } from '@nuxt/kit' -import type { Nuxt } from 'nuxt/schema' -import { resolve } from 'pathe' -import terminate from 'terminate' - -import { - RPC_NAMESPACE, - SliceMachineStatus, - type ISlicemachineServerFunctions, - type ISlicemachineClientFunctions, -} from './types' - -const DEVTOOLS_UI_ROUTE = '/__prismic-client' -const DEVTOOLS_UI_LOCAL_PORT = 5173 - -let subProcess: null | ReturnType = null - -const stopSubprocess = () => { - if (subProcess) { - const pid = subProcess.getProcess().pid - if (pid) { - terminate(pid) - } - subProcess.terminate() - subProcess = null - } -} - -export const setupDevToolsUI = (nuxt: Nuxt, resolver: Resolver) => { - const clientPath = resolver.resolve('./client') - const isProductionBuild = existsSync(clientPath) - - if (isProductionBuild) { - // Serve production-built client (used when package is published) - nuxt.hook('vite:serverCreated', async (server) => { - const sirv = await import('sirv').then(r => r.default || r) - server.middlewares.use( - DEVTOOLS_UI_ROUTE, - sirv(clientPath, { dev: true, single: true }), - ) - }) - } - else { - // In local development, start a separate Nuxt Server and proxy to serve the client - extendViteConfig((config) => { - config.server = config.server || {} - config.server.proxy = config.server.proxy || {} - config.server.proxy[DEVTOOLS_UI_ROUTE] = { - target: `http://localhost:${DEVTOOLS_UI_LOCAL_PORT}${DEVTOOLS_UI_ROUTE}`, - changeOrigin: true, - followRedirects: true, - ws: true, - rewrite: path => path.replace(DEVTOOLS_UI_ROUTE, ''), - } - }) - } - - nuxt.hooks.hook('close', () => { - stopSubprocess() - }) - process.on('exit', () => { - stopSubprocess() - }) - - onDevToolsInitialized(() => { - const rpc = extendServerRpc( - RPC_NAMESPACE, - { - async getSlicemachineConfig() { - const configPath = resolve(nuxt.options.rootDir, 'slicemachine.config.json') - - if (existsSync(configPath)) { - return JSON.parse(await readFile(configPath, 'utf-8')) - } - - return null - }, - - isSliceMachineStarted() { - return subProcess !== null - }, - - startSliceMachine() { - stopSubprocess() - - subProcess = startSubprocess({ - command: 'npx', - args: ['start-slicemachine'], - cwd: nuxt.options.rootDir, - }, { - id: 'slicemachine', - name: 'SliceMachine', - icon: 'i-simple-icons-prismic', - }, nuxt) - - rpc.broadcast.updateStatus(SliceMachineStatus.STARTED) - return SliceMachineStatus.STARTED - }, - stopSliceMachine() { - stopSubprocess() - - rpc.broadcast.updateStatus(SliceMachineStatus.STOPPED) - return SliceMachineStatus.STOPPED - }, - }) - }) - - nuxt.hook('devtools:customTabs', (tabs) => { - tabs.push({ - // unique identifier - name: 'prismic', - // title to display in the tab - title: 'Prismic', - // any icon from Iconify, or a URL to an image - icon: 'i-simple-icons-prismic', - // iframe view - view: { - type: 'iframe', - src: DEVTOOLS_UI_ROUTE, - }, - }) - }) -} diff --git a/src/devtools/types.ts b/src/devtools/types.ts deleted file mode 100644 index 362ef19..0000000 --- a/src/devtools/types.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { BirpcReturn } from 'birpc' - -export const RPC_NAMESPACE = 'prismic-slicemachine-rpc' - -export enum SliceMachineStatus { - STARTED, - STOPPED, -} - -export interface ISlicemachineClientFunctions { - updateStatus(status: SliceMachineStatus): void -} - -export interface ISlicemachineServerFunctions { - getSlicemachineConfig(): Promise - isSliceMachineStarted(): boolean - startSliceMachine(): SliceMachineStatus - stopSliceMachine(): SliceMachineStatus -} - -export type RPCServerType = BirpcReturn -export type RPCClientType = BirpcReturn diff --git a/src/lib/fileExists.ts b/src/lib/fileExists.ts deleted file mode 100644 index 39e2c60..0000000 --- a/src/lib/fileExists.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { existsSync } from 'node:fs' - -export const fileExists = (path?: string, extensions = ['js', 'ts']): string | null => { - if (!path) { - return null - } - else if (existsSync(path)) { - // If path already contains/forces the extension - return path - } - - const extension = extensions.find(extension => existsSync(`${path}.${extension}`)) - - return extension ? `${path}.${extension}` : null -} diff --git a/src/lib/index.ts b/src/lib/index.ts deleted file mode 100644 index f6399a4..0000000 --- a/src/lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { logger } from './logger' -export { fileExists } from './fileExists' diff --git a/src/lib/logger.ts b/src/lib/logger.ts deleted file mode 100644 index 7a58577..0000000 --- a/src/lib/logger.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { useLogger } from '@nuxt/kit' - -export const logger = useLogger('nuxt:prismic') as ReturnType diff --git a/src/module.ts b/src/module.ts index dfe4802..3bdf59b 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1,115 +1,259 @@ -import { join } from 'node:path' -import { readFile } from 'node:fs/promises' -import { existsSync } from 'node:fs' +import { existsSync } from "node:fs" +import { readFile } from "node:fs/promises" +import { join } from "node:path" -import { defu } from 'defu' import { - defineNuxtModule, - createResolver, - addTemplate, - addPlugin, - addImports, addComponent, + addImports, + addPlugin, + addTemplate, + createResolver, + defineNuxtModule, extendPages, getNuxtVersion, -} from '@nuxt/kit' + useLogger, +} from "@nuxt/kit" +import type { ClientConfig } from "@prismicio/client" +import { defu } from "defu" +import { addDependency } from "nypm" +import { readPackage } from "pkg-types" -import * as prismicVue from '@prismicio/vue' -import { setupDevToolsUI } from './devtools' +import { name, version } from "../package.json" -import { logger, fileExists } from './lib' -import type { PrismicModuleOptions } from './types' +/** + * Prismic Nuxt module options. + * + * @see {@link https://prismic.io/docs/nuxt} + * @see {@link https://prismic.io/docs/technical-reference/nuxtjs-prismic} + */ +export type PrismicModuleOptions = { + /** + * The Prismic repository name or full Content API endpoint to init the + * module's client instance used to fetch content from a Prismic repository + * with. + * + * @example + * + * ```typescript + * // With a repository name + * createClient("my-repo") + * + * // With a full Prismic Content API endpoint + * createClient("https://my-repo.cdn.prismic.io/api/v2") + * ``` + * + * @see {@link https://prismic.io/docs/technical-reference/prismicio-client} + */ + endpoint?: string -// Options export -export type { PrismicModuleOptions, PrismicModuleOptions as ModuleOptions } from './types' + /** + * The Prismic environment in use by Slice Machine configured through + * environment variables. + * + * @defaultValue `endpoint` value. + * + * @internal + */ + environment?: string -declare module '@nuxt/schema' { - interface PublicRuntimeConfig { + /** + * Configuration options that determines how content will be queries from the + * Prismic repository. + * + * @see {@link https://prismic.io/docs/technical-reference/prismicio-client} + */ + clientConfig?: ClientConfig + + /** + * An optional path to a file exporting a Prismic client instance used to + * fetch content from a Prismic repository to configure the module with. + * + * @remarks + * When provided, it takes precedence over the `endpoint` and `clientConfig` + * options. + * + * @see {@link https://prismic.io/docs/technical-reference/prismicio-client} + */ + client?: string + + /** + * The path to a file exporting a default link resolver used to resolve links + * when route resolvers cannot be used. + * + * @see {@link https://prismic.io/docs/routes} + */ + linkResolver?: string + + /** + * Desired path of the preview page used by Prismic to enter preview session. + * + * @remarks + * `false` can be used to disable the preview page. + * + * @defaultValue `"/preview"` + */ + preview?: string | false + + /** + * Whether to inject Prismic toolbar script. + * + * @remarks + * The toolbar script is required for previews to work. + * + * @defaultValue `true` + */ + toolbar?: boolean + + /** Options used by Prismic Vue components. */ + components?: { /** - * `@nuxtjs/prismic` module options. + * The path to a file exporting default components or shorthand definitions + * for rich text and table components. * - * @see Module documentation: {@link https://prismic.nuxtjs.org} - * @see Prismic documentation: {@link https://prismic.io/docs/nuxt-3-setup} + * @see {@link https://prismic.io/docs/fields/rich-text} + * @see {@link https://prismic.io/docs/fields/table} */ + richTextComponents?: string + } +} + +/** + * Prismic Nuxt module options. + * + * @see {@link https://prismic.io/docs/nuxt} + * @see {@link https://prismic.io/docs/technical-reference/nuxtjs-prismic} + */ +export type ModuleOptions = PrismicModuleOptions + +declare module "@nuxt/schema" { + interface PublicRuntimeConfig { + /** The Prismic Nuxt module options. */ prismic: PrismicModuleOptions } } -// Module export +const logger = useLogger("nuxt:prismic") + +async function addPrismicClient() { + try { + const pkg = await readPackage() + + if ( + !pkg.dependencies?.["@prismicio/client"] && + !pkg.devDependencies?.["@prismicio/client"] + ) { + await addDependency("@prismicio/client") + logger.info("Added `@prismicio/client` required peer dependency") + } + } catch { + // noop + } +} + export default defineNuxtModule({ meta: { - name: '@nuxtjs/prismic', - configKey: 'prismic', - compatibility: { nuxt: '>=3.7.0' }, + name, + version, + configKey: "prismic", + compatibility: { nuxt: ">=3.7.0" }, }, - defaults: (nuxt) => { - let prismicFiles = { - client: '~/app/prismic/client', - linkResolver: '~/app/prismic/linkResolver', - richTextSerializer: '~/app/prismic/richTextSerializer', - } - - let prismicComponentsFiles = { - linkRel: '~/app/prismic/linkRel', - richTextComponents: '~/app/prismic/richTextComponents', - sliceZoneDefaultComponent: '~/app/prismic/sliceZoneDefaultComponent', + onInstall() { + return addPrismicClient() + }, + onUpgrade(_options: unknown, _nuxt: unknown, previousVersion: string) { + const previousMajor = parseInt(previousVersion.split(".")[0]!) + if (previousMajor < 4) { + return addPrismicClient() } + }, + defaults: (nuxt): Required => { + const nuxt3flavor = + getNuxtVersion(nuxt).startsWith("3") && + !nuxt.options?.future?.compatibilityVersion - // Nuxt 4 sets `app` as its `srcDir`, so we're just using the `prismic` folder there. - if ( - nuxt.options?.future?.compatibilityVersion === 4 - || getNuxtVersion(nuxt).startsWith('4') - ) { - prismicFiles = { - client: '~/prismic/client', - linkResolver: '~/prismic/linkResolver', - richTextSerializer: '~/prismic/richTextSerializer', - } - prismicComponentsFiles = { - linkRel: '~/prismic/linkRel', - richTextComponents: '~/prismic/richTextComponents', - sliceZoneDefaultComponent: '~/prismic/sliceZoneDefaultComponent', + if (nuxt3flavor) { + return { + endpoint: "", + environment: "", + clientConfig: {}, + client: "~/app/prismic/client", + linkResolver: "~/app/prismic/linkResolver", + preview: "/preview", + toolbar: true, + components: { + richTextComponents: "~/app/prismic/richTextComponents ", + }, } } return { - endpoint: '', - environment: '', + endpoint: "", + environment: "", + client: "~/prismic/client", + linkResolver: "~/prismic/linkResolver", clientConfig: {}, - ...prismicFiles, - injectComponents: true, - components: prismicComponentsFiles, - preview: '/preview', + preview: "/preview", toolbar: true, - devtools: true, + components: { + richTextComponents: "~/prismic/richTextComponents", + }, } }, - hooks: {}, setup(options, nuxt) { - // Expose options through public runtime config - nuxt.options.runtimeConfig.public ||= {} as typeof nuxt.options.runtimeConfig.public - const moduleOptions: PrismicModuleOptions = defu(nuxt.options.runtimeConfig.public.prismic, options) - nuxt.options.runtimeConfig.public.prismic = moduleOptions - - // Runtime dir boilerplate const resolver = createResolver(import.meta.url) - if (nuxt.options.devtools && options.devtools) { - setupDevToolsUI(nuxt, resolver) + + const moduleOptions: PrismicModuleOptions = defu( + nuxt.options.runtimeConfig.public?.prismic, + options, + ) + + exposeRuntimeConfig() + transpileDependencies() + const ok = proxyUserFiles() + if (!ok) return + addRuntimePlugins() + addAutoImports() + addPreviewRoute() + extendESLintConfig() + + function exposeRuntimeConfig() { + nuxt.options.runtimeConfig.public ||= + {} as typeof nuxt.options.runtimeConfig.public + nuxt.options.runtimeConfig.public.prismic = moduleOptions + } + + function transpileDependencies() { + nuxt.options.build.transpile.push( + resolver.resolve("runtime"), + "@nuxtjs/prismic", + "@prismicio/vue", + ) + nuxt.options.vite.optimizeDeps ||= {} + nuxt.options.vite.optimizeDeps.exclude ||= [] + nuxt.options.vite.optimizeDeps.exclude.push("@prismicio/vue") } - // Add runtime user code - const proxyUserFileWithUndefinedFallback - = (filename: string, path: string, deprecated?: boolean | string): boolean => { + function proxyUserFiles() { + const proxyUserFileWithUndefinedFallback = ( + filename: string, + path: string, + ): boolean => { const resolvedFilename = `prismic/proxy/${filename}.ts` - const resolvedPath = path.replace(/^(~~|@@)/, nuxt.options.rootDir).replace(/^(~|@)/, nuxt.options.srcDir) - const maybeUserFile = fileExists(resolvedPath, ['js', 'mjs', 'ts', 'vue']) + const resolvedPath = path + .replace(/^(~~|@@)/, nuxt.options.rootDir) + .replace(/^(~|@)/, nuxt.options.srcDir) + const maybeUserFile = fileExists(resolvedPath, [ + "js", + "mjs", + "ts", + "vue", + ]) if (maybeUserFile) { - // If user file exists, proxy it with vfs - logger.info(`Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, '~').replace(nuxt.options.rootDir, '~~').replace(/\\/g, '/')}\``) - if (deprecated) { - logger.warn(`\`${filename}\` is deprecated and will be removed in a future version.${typeof deprecated === 'string' ? ` ${deprecated}` : ''}`) - } + // If user file exists, proxy it with vfs + logger.info( + `Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, "~").replace(nuxt.options.rootDir, "~~").replace(/\\/g, "/")}\``, + ) addTemplate({ filename: resolvedFilename, @@ -117,142 +261,190 @@ export default defineNuxtModule({ }) return true - } - else { - // Else provide `undefined` fallback + } else { + // Else provide `undefined` fallback addTemplate({ filename: resolvedFilename, - getContents: () => 'export default undefined', + getContents: () => "export default undefined", }) return false } } - const proxiedUserClient = proxyUserFileWithUndefinedFallback('client', moduleOptions.client!) - if (!moduleOptions.endpoint && !proxiedUserClient && !process.env.NUXT_PUBLIC_PRISMIC_ENDPOINT) { - logger.warn(`\`endpoint\` option is missing and \`${moduleOptions.client}\` was not found. At least one of them is required for the module to run. Disabling module...`) - return + const proxiedUserClient = proxyUserFileWithUndefinedFallback( + "client", + moduleOptions.client!, + ) + if ( + !moduleOptions.endpoint && + !proxiedUserClient && + !process.env.NUXT_PUBLIC_PRISMIC_ENDPOINT + ) { + logger.warn( + `\`endpoint\` option is missing and \`${moduleOptions.client}\` was not found. At least one of them is required for the module to run. Disabling module...`, + ) + return false + } + proxyUserFileWithUndefinedFallback( + "linkResolver", + moduleOptions.linkResolver!, + ) + proxyUserFileWithUndefinedFallback( + "richTextComponents", + moduleOptions.components!.richTextComponents!, + ) + + return true } - proxyUserFileWithUndefinedFallback('linkResolver', moduleOptions.linkResolver!) - proxyUserFileWithUndefinedFallback('richTextSerializer', moduleOptions.richTextSerializer!, 'Use `components.richTextComponents` instead.') - - // Components - proxyUserFileWithUndefinedFallback('linkRel', moduleOptions.components!.linkRel!) - proxyUserFileWithUndefinedFallback('richTextComponents', moduleOptions.components!.richTextComponents!) - proxyUserFileWithUndefinedFallback('sliceZoneDefaultComponent', moduleOptions.components!.sliceZoneDefaultComponent!) - - nuxt.options.build.transpile.push(resolver.resolve('runtime'), '@nuxtjs/prismic', '@prismicio/vue') - nuxt.options.vite.optimizeDeps ||= {} - nuxt.options.vite.optimizeDeps.exclude ||= [] - nuxt.options.vite.optimizeDeps.exclude.push('@prismicio/vue') - - // Add plugin - addPlugin(resolver.resolve('runtime/plugin')) - addPlugin(resolver.resolve('runtime/plugin.client')) - - // Add components auto import - if (moduleOptions.injectComponents) { - [ - 'PrismicEmbed', - 'PrismicImage', - 'PrismicLink', - 'PrismicText', - 'PrismicRichText', - 'PrismicTable', - 'SliceZone', - ].forEach((component) => { + + function addRuntimePlugins() { + addPlugin(resolver.resolve("runtime/plugin")) + addPlugin(resolver.resolve("runtime/plugin.client")) + } + + function addAutoImports() { + // Components + ;[ + "PrismicImage", + "PrismicLink", + "PrismicText", + "PrismicRichText", + "PrismicTable", + "SliceZone", + ].forEach((entry) => { addComponent({ - name: component, - export: component, - filePath: '@prismicio/vue', + name: entry, + export: entry, + filePath: "@prismicio/vue", }) }) - } - // Add auto imports - const prismicVueAutoImports = Object - .keys(prismicVue) - .filter(key => key.startsWith('use')) - .concat( - 'getSliceComponentProps', - 'defineSliceZoneComponents', - 'getRichTextComponentProps', - 'getTableComponentProps', + // Composables and utils + addImports( + [ + "usePrismic", + "getSliceComponentProps", + "defineSliceZoneComponents", + "getRichTextComponentProps", + "getTableComponentProps", + ].map((entry) => ({ name: entry, as: entry, from: "@prismicio/vue" })), ) - .map((key) => { - return { - name: key, - as: key, - from: '@prismicio/vue', - } + addImports({ + name: "usePrismicPreview", + as: "usePrismicPreview", + from: resolver.resolve("runtime/usePrismicPreview"), }) - addImports(prismicVueAutoImports) - addImports({ - name: 'usePrismicPreview', - as: 'usePrismicPreview', - from: resolver.resolve('runtime/usePrismicPreview'), - }) - - // Add preview route - if (moduleOptions.preview) { - const maybeUserPreviewPage = fileExists(join(nuxt.options.srcDir, nuxt.options.dir.pages, moduleOptions.preview), ['js', 'ts', 'vue']) - - if (maybeUserPreviewPage) { - logger.info(`Using user-defined preview page at \`${maybeUserPreviewPage.replace(join(nuxt.options.srcDir), '~').replace(nuxt.options.rootDir, '~~').replace(/\\/g, '/') - }\`, available at \`${moduleOptions.preview}\``) - } - else { - logger.info(`Using default preview page, available at \`${moduleOptions.preview}\``) - - extendPages((pages) => { - pages.unshift({ - name: 'prismic-preview', - path: moduleOptions.preview as string, // Checked before - file: resolver.resolve('runtime/PrismicPreview.vue'), + } + + function addPreviewRoute() { + if (moduleOptions.preview) { + const maybeUserPreviewPage = fileExists( + join( + nuxt.options.srcDir, + nuxt.options.dir.pages, + moduleOptions.preview, + ), + ["js", "ts", "vue"], + ) + + if (maybeUserPreviewPage) { + logger.info( + `Using user-defined preview page at \`${maybeUserPreviewPage + .replace(join(nuxt.options.srcDir), "~") + .replace(nuxt.options.rootDir, "~~") + .replace( + /\\/g, + "/", + )}\`, available at \`${moduleOptions.preview}\``, + ) + } else { + logger.info( + `Using default preview page, available at \`${moduleOptions.preview}\``, + ) + + extendPages((pages) => { + pages.unshift({ + name: "prismic-preview", + path: moduleOptions.preview as string, // Checked before + file: resolver.resolve("runtime/PrismicPreview.vue"), + }) }) - }) - } + } - if (!moduleOptions.toolbar) { - logger.warn('`toolbar` option is disabled but `preview` is enabled. Previews won\'t work unless you manually load the toolbar.') + if (!moduleOptions.toolbar) { + logger.warn( + "`toolbar` option is disabled but `preview` is enabled. Previews won't work unless you manually load the toolbar.", + ) + } } } - // Integrate with @nuxt/eslint - // @ts-expect-error 3rd party hook - nuxt.hook('eslint:config:addons', (addons: { - name: string - getConfigs: () => Promise<{ configs: string[] }> - }[]) => { - addons.push({ - name: '@nuxtjs/prismic', - async getConfigs() { - const configPath = resolver.resolve(nuxt.options.rootDir, 'slicemachine.config.json') - - const configs: string[] = [] - - try { - if (existsSync(configPath)) { - const config = JSON.parse(await readFile(configPath, 'utf-8')) - - if (config && 'libraries' in config && Array.isArray(config.libraries)) { - configs.push(JSON.stringify({ - files: config.libraries.map((library: string) => `${library.replace('./', '')}/**/index.vue`), - rules: { - 'vue/multi-word-component-names': 'off', - }, - })) + function extendESLintConfig() { + nuxt.hook( + // @ts-expect-error 3rd party hook + "eslint:config:addons", + ( + addons: { + name: string + getConfigs: () => Promise<{ configs: string[] }> + }[], + ) => { + addons.push({ + name: "@nuxtjs/prismic", + async getConfigs() { + const configPath = resolver.resolve( + nuxt.options.rootDir, + "slicemachine.config.json", + ) + + const configs: string[] = [] + + try { + if (existsSync(configPath)) { + const config = JSON.parse(await readFile(configPath, "utf-8")) + + if ( + config && + "libraries" in config && + Array.isArray(config.libraries) + ) { + configs.push( + JSON.stringify({ + files: config.libraries.map( + (library: string) => + `${library.replace("./", "")}/**/index.vue`, + ), + rules: { + "vue/multi-word-component-names": "off", + }, + }), + ) + } + } + } catch { + // noop } - } - } - catch { - // noop - } - return { configs } + return { configs } + }, + }) }, - }) - }) + ) + } }, }) + +function fileExists(path?: string, extensions = ["js", "ts"]): string | null { + if (!path) { + return null + } else if (existsSync(path)) { + return path + } + + const extension = extensions.find((extension) => + existsSync(`${path}.${extension}`), + ) + + return extension ? `${path}.${extension}` : null +} diff --git a/src/runtime/PrismicPreview.vue b/src/runtime/PrismicPreview.vue index 9ce7594..99bbb95 100644 --- a/src/runtime/PrismicPreview.vue +++ b/src/runtime/PrismicPreview.vue @@ -1,46 +1,15 @@ - - - + diff --git a/src/runtime/plugin.client.ts b/src/runtime/plugin.client.ts index 1200a92..c007936 100644 --- a/src/runtime/plugin.client.ts +++ b/src/runtime/plugin.client.ts @@ -1,15 +1,15 @@ -import type { PrismicModuleOptions } from '../types' -import { defineNuxtPlugin } from '#app' -import { refreshNuxtData, useRuntimeConfig } from '#imports' +import { defineNuxtPlugin } from "#app" +import { refreshNuxtData, useRuntimeConfig } from "#imports" -export default defineNuxtPlugin((_nuxtApp) => { - const options: PrismicModuleOptions = useRuntimeConfig().public.prismic - - // Hot reload preview updates - if (options.preview) { - window.addEventListener('prismicPreviewUpdate', (event) => { - event.preventDefault() - refreshNuxtData() - }) - } +export default defineNuxtPlugin({ + name: "prismic:plugin:client", + parallel: true, + setup() { + if (useRuntimeConfig().public.prismic?.preview) { + window.addEventListener("prismicPreviewUpdate", (event) => { + event.preventDefault() + refreshNuxtData() + }) + } + }, }) diff --git a/src/runtime/plugin.ts b/src/runtime/plugin.ts index d2b3bf9..9e7838a 100644 --- a/src/runtime/plugin.ts +++ b/src/runtime/plugin.ts @@ -1,127 +1,138 @@ -import { createClient, type Client } from '@prismicio/client' -import { createPrismic } from '@prismicio/vue' - -import type { PrismicModuleOptions } from '../types' -import { defineNuxtPlugin } from '#app' -import NuxtLink from '#app/components/nuxt-link' -import { useCookie, useRequestEvent, onNuxtReady, refreshNuxtData, useHead, useRuntimeConfig, useRouter } from '#imports' - -// @ts-expect-error vfs cannot be resolved here -import _client from '#build/prismic/proxy/client' -// @ts-expect-error vfs cannot be resolved here -import linkResolver from '#build/prismic/proxy/linkResolver' -// @ts-expect-error vfs cannot be resolved here -import richTextSerializer from '#build/prismic/proxy/richTextSerializer' -// @ts-expect-error vfs cannot be resolved here -import linkRel from '#build/prismic/proxy/linkRel' -// @ts-expect-error vfs cannot be resolved here -import richTextComponents from '#build/prismic/proxy/richTextComponents' -// @ts-expect-error vfs cannot be resolved here -import sliceZoneDefaultComponent from '#build/prismic/proxy/sliceZoneDefaultComponent' +import { defineNuxtPlugin } from "#app" +import NuxtLink from "#app/components/nuxt-link" +import _client from "#build/prismic/proxy/client" +// @ts-expect-error - Proxy file +import linkResolver from "#build/prismic/proxy/linkResolver" +// @ts-expect-error - Proxy file +import richTextComponents from "#build/prismic/proxy/richTextComponents" +import { + onNuxtReady, + refreshNuxtData, + useCookie, + useHead, + useRequestEvent, + useRouter, + useRuntimeConfig, +} from "#imports" +import { Client, cookie, createClient, getToolbarSrc } from "@prismicio/client" +import { createPrismic } from "@prismicio/vue" export default defineNuxtPlugin({ - name: 'prismic:setup', + name: "prismic:setup", parallel: true, async setup(nuxtApp) { - const options: PrismicModuleOptions = useRuntimeConfig().public.prismic - let client: Client | undefined - if (typeof _client === 'function') { - try { - client = await nuxtApp.runWithContext(() => _client()) - } - catch (error) { - console.error('[@nuxtjs/prismic] An error happened while resolving your Prismic custom client, disabling Prismic module gracefully...', error) + const options = useRuntimeConfig().public.prismic - // The Vue plugin still requires a client to work, we're providing an obviously broken one. - client = createClient( - 'error-resolving-custom-client', - { ...options, documentAPIEndpoint: undefined }, + const client = await resolveClient() + handlePreview() + addToolbar() + + async function resolveClient() { + if ((_client as unknown) instanceof Client) { + return _client! + } else if (typeof _client === "function") { + try { + return await nuxtApp.runWithContext(() => + (_client as unknown as () => Client)(), + ) + } catch (error) { + console.error( + "[@nuxtjs/prismic] An error happened while resolving your Prismic custom client, disabling Prismic module gracefully...", + error, + ) + + // The Vue plugin still requires a client to work, we're providing an obviously broken one. + return createClient( + "error-resolving-custom-client", + options.clientConfig, + ) + } + } else { + return createClient( + options.environment || options.endpoint || "endpoint-not-provided", + options.clientConfig, ) } } - else { - client = _client - } - - const endpoint = options.environment || options.endpoint || client?.documentAPIEndpoint || '' - - const prismicPlugin = createPrismic({ - ...options, - endpoint, - // TypeScript expects either an endpoint of a client, not both - client: client as undefined, - linkResolver, - richTextSerializer, - injectComponents: false, // Handled at module level - components: { - linkInternalComponent: NuxtLink, - linkExternalComponent: NuxtLink, - ...options.components, - linkRel, - richTextComponents, - sliceZoneDefaultComponent, - }, - }) - nuxtApp.vueApp.use(prismicPlugin) - - if (options.preview) { - const previewCookie = useCookie('io.prismic.preview').value + function handlePreview() { + if (options.preview) { + const previewCookie = useCookie("io.prismic.preview").value - // Update client with req when running server side - if (import.meta.server) { - const req = useRequestEvent()?.node.req - if (req) { - prismicPlugin.client.enableAutoPreviewsFromReq(req) + // Update client with req when running server side + if (import.meta.server) { + const req = useRequestEvent()?.node.req + if (req) { + client.enableAutoPreviewsFromReq(req) + } } - } - if (previewCookie) { - try { - const session = typeof previewCookie === 'string' ? JSON.parse(decodeURIComponent(previewCookie)) : previewCookie + if (previewCookie) { + try { + const session = + typeof previewCookie === "string" + ? JSON.parse(decodeURIComponent(previewCookie)) + : previewCookie - if (Object.keys(session).some(key => - key in session - && typeof session[key] === 'object' - && session[key] !== null - && 'preview' in session[key] - && session[key].preview) - ) { - let afterEachCalled = false - onNuxtReady(() => { - if (!afterEachCalled) { + if ( + Object.keys(session).some( + (key) => + key in session && + typeof session[key] === "object" && + session[key] !== null && + "preview" in session[key] && + session[key].preview, + ) + ) { + let afterEachCalled = false + onNuxtReady(() => { + if (!afterEachCalled) { + refreshNuxtData() + } + }) + useRouter().afterEach(() => { + afterEachCalled = true refreshNuxtData() - } - }) - useRouter().afterEach(() => { - afterEachCalled = true - refreshNuxtData() - }) + }) + } + } catch (error) { + console.warn("Failed to parse Prismic preview cookie", error) } } - catch (error) { - console.warn('Failed to parse Prismic preview cookie', error) - } } } - if (options.toolbar && prismicPlugin.client?.repositoryName) { - // Add toolbar - useHead({ - script: [{ - key: 'prismic-preview', - src: `https://static.cdn.prismic.io/prismic.min.js?repo=${prismicPlugin.client.repositoryName}&new=true`, - async: true, - defer: true, - crossorigin: 'anonymous', - }], - }) - } - else { - // TODO: We might want to let user disable this behavior because it might have unexpected side effects - useCookie('io.prismic.preview').value = null + function addToolbar() { + if (options.toolbar) { + // Add toolbar + useHead({ + script: [ + { + key: "prismic-preview", + src: getToolbarSrc(client.repositoryName), + async: true, + defer: true, + crossorigin: "anonymous", + }, + ], + }) + } else { + // TODO: We might want to let user disable this behavior because it might have unexpected side effects + useCookie(cookie.preview).value = null + } } + const prismicPlugin = createPrismic({ + client, + linkResolver, + components: { + linkInternalComponent: NuxtLink, + linkExternalComponent: NuxtLink, + richTextComponents, + }, + }) + + nuxtApp.vueApp.use(prismicPlugin) return { provide: { prismic: prismicPlugin }, } diff --git a/src/runtime/usePrismicPreview.ts b/src/runtime/usePrismicPreview.ts index 3276d52..29d0d7e 100644 --- a/src/runtime/usePrismicPreview.ts +++ b/src/runtime/usePrismicPreview.ts @@ -1,14 +1,10 @@ -import { onMounted } from 'vue' +// @ts-expect-error - Proxy file +import { usePrismic, useRouter } from "#imports" +import { onMounted } from "vue" -import { useRouter, usePrismic } from '#imports' - -/** - * Resolves Prismic previews on the preview entry page (`/preview`) - * - * @param defaultURL - The default URL to redirect to if the previewed document doesn't map to one. - */ -export const usePrismicPreview = (defaultURL = '/'): void => { - const { client, options: { linkResolver } } = usePrismic() +/** Resolves Prismic previews on the preview entry page (`/preview`) */ +export const usePrismicPreview = (defaultURL = "/"): void => { + const { client, linkResolver } = usePrismic() const { push } = useRouter() onMounted(async () => { const redirectURL = await client.resolvePreviewURL({ diff --git a/src/types.ts b/src/types.ts deleted file mode 100644 index e80303a..0000000 --- a/src/types.ts +++ /dev/null @@ -1,137 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import type { PrismicPluginConfig, SliceComponentProps, TODOSliceComponent } from '@prismicio/vue' - -/** - * `@nuxtjs/prismic` module options. - * - * @see Module documentation: {@link https://prismic.nuxtjs.org} - * @see Prismic documentation: {@link https://prismic.io/docs/nuxt-3-setup} - */ -export type PrismicModuleOptions = Omit< - PrismicPluginConfig, - 'endpoint' | 'client' | 'linkResolver' | 'richTextSerializer' | 'components' -> & { - /** - * A Prismic repository endpoint to init the module's `@prismicio/client` - * instance used to fetch content from a Prismic repository with. - * - * @remarks - * Said client will be used exposed through `this.$prismic.client` and - * `usePrismic().client`. - * @example - * - * ```javascript - * // A repository ID - * "my-repo"; - * - * //A full repository endpoint - * "https://my-repo.cdn.prismic.io/api/v2"; - * ``` - * - * @see Prismic client documentation {@link https://prismic.io/docs/technical-reference/prismicio-client} - */ - endpoint?: string - - /** - * The Prismic environment in use by Slice Machine configured through - * environment variables. - * - * @defaultValue `endpoint` value. - * - * @internal - */ - environment?: string - - /** - * An optional path to a file exporting a `@prismicio/client` instance used - * to fetch content from a Prismic repository to configure the module with. - * - * @remarks - * Said client will be used exposed through `this.$prismic.client` and - * `usePrismic().client`. - * @see Prismic client documentation {@link https://prismic.io/docs/technical-reference/prismicio-client} - */ - client?: string - - /** - * An optional path to a file exporting a link resolver function used to - * resolve links to Prismic documents when not using the route resolver - * parameter with `@prismicio/client`. - * - * @see Link resolver documentation {@link https://prismic.io/docs/route-resolver#link-resolver} - */ - linkResolver?: string - - /** - * An optional path to a file exporting an HTML serializer to customize - * the way rich text fields are rendered. - * - * @deprecated Use `components.richTextComponents` instead. - * - * @see HTML serializer documentation {@link https://prismic.io/docs/rich-text} - */ - richTextSerializer?: string - - /** - * Desired path of the preview page used by Prismic to enter preview - * session. - * - * @remarks - * `false` can be used to disable the preview page. - * - * @defaultValue `"/preview"` - */ - preview?: string | false - - /** - * Whether to inject Prismic toolbar script. - * - * @remarks - * The toolbar script is required for previews to work. - * - * @defaultValue `true` - */ - toolbar?: boolean - - /** - * Whether to enable Prismic Nuxt DevTools integration. - * - * @defaultValue `true` - */ - devtools?: boolean - - /** - * Options used by Prismic Vue components. - */ - components?: Omit< - Required['components'], - 'richTextComponents' | 'linkRel' | 'sliceZoneDefaultComponent' | 'linkInternalComponent' | 'linkExternalComponent' - > & { - /** - * An optional path to a file exporting the `rel` attribute to apply on links. - * It can export a function to use the link's metadata to determine the `rel` value. - * - * @defaultValue `"noreferrer"` for external links. - */ - linkRel?: string - - /** - * An optional path to a file exporting a map of Rich Text block types to Vue Components. - * It is used to render Rich Text or title fields. - * - * @see Templating Rich Text and title fields from Prismic {@link https://prismic.io/docs/rich-text} - */ - richTextComponents?: string - - /** - * An optional path to a file exporting a component or a functional component rendered - * if a component mapping from the `components` prop cannot be found. - * - * @remarks - * Components will be rendered using the {@link SliceComponentProps} interface. - * - * @defaultValue `null` when `process.env.NODE_ENV === "production"` else {@link TODOSliceComponent} - */ - sliceZoneDefaultComponent?: string - } -} diff --git a/test/__setup__.ts b/test/__setup__.ts deleted file mode 100644 index 407a670..0000000 --- a/test/__setup__.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { afterEach, vi } from 'vitest' -import { vol } from 'memfs' - -vi.mock('fs', async () => { - const memfs: typeof import('memfs') = await vi.importActual('memfs') - - return { - ...memfs.fs, - default: memfs.fs, - } -}) - -vi.mock('fs/promises', async () => { - const memfs: typeof import('memfs') = await vi.importActual('memfs') - - return { - ...memfs.fs.promises, - default: memfs.fs.promises, - } -}) - -afterEach(async () => { - vi.clearAllMocks() - vol.reset() -}) diff --git a/test/__testutils__/mockModule.ts b/test/__testutils__/mockModule.ts deleted file mode 100644 index 5eec603..0000000 --- a/test/__testutils__/mockModule.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Nuxt, NuxtModule } from '@nuxt/schema' - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const mockModule = >( - moduleDefinition: NuxtModule, -): (options?: Partial) => { nuxt: Nuxt } => { - return moduleDefinition as unknown as (options?: Partial) => { nuxt: Nuxt } -} diff --git a/test/__testutils__/mockedNuxtKit.ts b/test/__testutils__/mockedNuxtKit.ts deleted file mode 100644 index b1ee3f9..0000000 --- a/test/__testutils__/mockedNuxtKit.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { vi } from 'vitest' - -import type { Nuxt } from '@nuxt/schema' - -export const mockedNuxtKit = async (mockOptions?: { nuxt4?: boolean }) => { - const kit: Record = await vi.importActual('@nuxt/kit') - - return { - ...kit, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - defineNuxtModule: (definition: any) => (options = {}) => { - let mockedNuxt = { - options: { - rootDir: '/tmp/nuxt', - srcDir: '/tmp/nuxt', - dir: { app: 'app', pages: 'pages' }, - build: { transpile: [] }, - vite: {}, - runtimeConfig: {}, - app: { head: {} }, - alias: {}, - }, - version: '3.0.0', - hook: () => {}, - } as unknown as Nuxt - - if (mockOptions?.nuxt4) { - mockedNuxt = { - options: { - future: { compatibilityVersion: 4 }, - rootDir: '/tmp/nuxt', - srcDir: '/tmp/nuxt/app', - dir: { app: 'app', pages: 'pages' }, - build: { transpile: [] }, - vite: {}, - runtimeConfig: {}, - app: { head: {} }, - alias: {}, - }, - version: '3.0.0', - hook: () => {}, - } as unknown as Nuxt - } - - const mergedOptions = { - ...definition.defaults(mockedNuxt), - ...options, - } - - definition.setup(mergedOptions, mockedNuxt) - - return { nuxt: mockedNuxt } - }, - addTemplate: vi.fn(() => ({})), - addPlugin: vi.fn(), - addImports: vi.fn(), - addComponent: vi.fn(), - extendPages: vi.fn((extendPagesHook: (pages: string[]) => void) => { - const pages: string[] = [] - - extendPagesHook(pages) - - return pages - }), - useLogger: vi.fn(() => ({ info: vi.fn(), warn: vi.fn() })), - } -} diff --git a/test/client.test.ts b/test/client.test.ts new file mode 100644 index 0000000..32379a2 --- /dev/null +++ b/test/client.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, it } from "vitest" + +import { fileURLToPath } from "node:url" + +import { $fetch, setup } from "@nuxt/test-utils/e2e" + +describe("config", async () => { + await setup({ + rootDir: fileURLToPath(new URL("./fixtures/basic", import.meta.url)), + }) + + it("configures a client with the provided repository name", async () => { + const html = await $fetch("/") + expect(html).toContain(`
nuxtjs-prismic
`) + }) +}) diff --git a/test/components.test.ts b/test/components.test.ts new file mode 100644 index 0000000..f96476e --- /dev/null +++ b/test/components.test.ts @@ -0,0 +1,46 @@ +import { describe, expect, it } from "vitest" + +import { fileURLToPath } from "node:url" + +import { $fetch, setup } from "@nuxt/test-utils/e2e" + +describe("components", async () => { + await setup({ + rootDir: fileURLToPath(new URL("./fixtures/basic", import.meta.url)), + }) + + describe("renders rich text", () => { + it("as plain text", async () => { + const html = await $fetch("/") + expect(html).toContain(`
Hello world
`) + }) + + it("as rich text", async () => { + const html = await $fetch("/") + expect(html.replace(//g, "")).toContain( + `

Lorem ipsum dolor sit amet,`, + ) + }) + }) + + it("renders images", async () => { + const html = await $fetch("/") + expect(html).toContain( + `

`, + ) + }) + + it("renders links", async () => { + const html = await $fetch("/") + expect(html.replace(//g, "")).toContain( + `