diff --git a/examples/app-vitest-workspace/app3/app.vue b/examples/app-vitest-workspace/app3/app/app.vue similarity index 100% rename from examples/app-vitest-workspace/app3/app.vue rename to examples/app-vitest-workspace/app3/app/app.vue diff --git a/examples/app-vitest-workspace/app3/test/nuxt/mountSuspended.spec.ts b/examples/app-vitest-workspace/app3/test/nuxt/mountSuspended.spec.ts index fce094e2c..c1fba732a 100644 --- a/examples/app-vitest-workspace/app3/test/nuxt/mountSuspended.spec.ts +++ b/examples/app-vitest-workspace/app3/test/nuxt/mountSuspended.spec.ts @@ -2,7 +2,7 @@ import { afterEach, describe, expect, it } from 'vitest' import { enableAutoUnmount } from '@vue/test-utils' import { mountSuspended } from '@nuxt/test-utils/runtime' -import App from '~~/app.vue' +import App from '~/app.vue' import { Counter } from '#components' describe('mountSuspended', () => { diff --git a/examples/app-vitest-workspace/app3/test/nuxt/renderSuspended.spec.ts b/examples/app-vitest-workspace/app3/test/nuxt/renderSuspended.spec.ts index 77806254d..370855e5f 100644 --- a/examples/app-vitest-workspace/app3/test/nuxt/renderSuspended.spec.ts +++ b/examples/app-vitest-workspace/app3/test/nuxt/renderSuspended.spec.ts @@ -2,7 +2,7 @@ import { afterEach, describe, expect, it } from 'vitest' import { fireEvent, cleanup } from '@testing-library/vue' import { renderSuspended } from '@nuxt/test-utils/runtime' -import App from '~~/app.vue' +import App from '~/app.vue' import { Counter } from '#components' describe('renderSuspended', () => { diff --git a/examples/multi-app/app/app.vue b/examples/multi-app/app/app.vue new file mode 100644 index 000000000..f8eacfa73 --- /dev/null +++ b/examples/multi-app/app/app.vue @@ -0,0 +1,5 @@ + diff --git a/examples/multi-app/app/components/Counter.vue b/examples/multi-app/app/components/Counter.vue new file mode 100644 index 000000000..aa788e0a2 --- /dev/null +++ b/examples/multi-app/app/components/Counter.vue @@ -0,0 +1,28 @@ + + + diff --git a/examples/multi-app/app/composables/useCounter.ts b/examples/multi-app/app/composables/useCounter.ts new file mode 100644 index 000000000..e9f598981 --- /dev/null +++ b/examples/multi-app/app/composables/useCounter.ts @@ -0,0 +1,11 @@ +import { ref } from '#imports' + +export function useCounter() { + const count = ref(0) + + function increment() { + count.value++ + } + + return { count, increment } +} diff --git a/examples/multi-app/app/pages/counter.vue b/examples/multi-app/app/pages/counter.vue new file mode 100644 index 000000000..77907e924 --- /dev/null +++ b/examples/multi-app/app/pages/counter.vue @@ -0,0 +1,3 @@ + diff --git a/examples/multi-app/app/pages/index.vue b/examples/multi-app/app/pages/index.vue new file mode 100644 index 000000000..94bb0e7c5 --- /dev/null +++ b/examples/multi-app/app/pages/index.vue @@ -0,0 +1,6 @@ + diff --git a/examples/multi-app/nuxt.config.ts b/examples/multi-app/nuxt.config.ts new file mode 100644 index 000000000..30605b418 --- /dev/null +++ b/examples/multi-app/nuxt.config.ts @@ -0,0 +1,12 @@ +export default defineNuxtConfig({ + appId: 'main-app', + future: { + multiApp: true, + }, + compatibilityDate: '2024-04-03', + typescript: { + tsConfig: { + include: ['../test/browser/**/*.spec.ts'], + }, + }, +}) diff --git a/examples/multi-app/package.json b/examples/multi-app/package.json new file mode 100644 index 000000000..d203e77d5 --- /dev/null +++ b/examples/multi-app/package.json @@ -0,0 +1,26 @@ +{ + "name": "example-multi-app", + "private": true, + "type": "module", + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "generate": "nuxt generate", + "preview": "nuxt preview", + "postinstall": "nuxt prepare", + "test": "vitest run" + }, + "dependencies": { + "nuxt": "^4.5.1" + }, + "devDependencies": { + "@nuxt/test-utils": "latest", + "@vitest/browser-playwright": "4.1.10", + "@vitest/browser": "4.1.10", + "@vue/test-utils": "2.4.11", + "happy-dom": "20.11.1", + "nuxt": "4.5.1", + "typescript": "6.0.3", + "vitest": "4.1.10" + } +} diff --git a/examples/multi-app/test/browser/mount.spec.ts b/examples/multi-app/test/browser/mount.spec.ts new file mode 100644 index 000000000..03342f8cf --- /dev/null +++ b/examples/multi-app/test/browser/mount.spec.ts @@ -0,0 +1,34 @@ +import { afterEach, describe, expect, it } from 'vitest' +import { enableAutoUnmount } from '@vue/test-utils' +import { mountSuspended } from '@nuxt/test-utils/runtime' + +import App from '~/app.vue' +import { Counter } from '#components' + +describe('mount', () => { + enableAutoUnmount(afterEach) + + it('should mount page', async () => { + const wrapper = await mountSuspended(App, { + route: '/', + }) + + const title = wrapper.find('h1') + expect(title.text()).toBe('Index') + + const link = wrapper.find('a[href="/counter"]') + expect(link.exists()).toBe(true) + }) + + it('should mount component', async () => { + const wrapper = await mountSuspended(Counter) + + const title = wrapper.find('h2') + expect(title.exists()).toBe(true) + expect(title.text()).toBe('Counter Component') + + const input = wrapper.find('input') + expect(input.exists()).toBe(true) + expect(input.element.value).toBe('0') + }) +}) diff --git a/examples/multi-app/test/nuxt/mount.spec.ts b/examples/multi-app/test/nuxt/mount.spec.ts new file mode 100644 index 000000000..03342f8cf --- /dev/null +++ b/examples/multi-app/test/nuxt/mount.spec.ts @@ -0,0 +1,34 @@ +import { afterEach, describe, expect, it } from 'vitest' +import { enableAutoUnmount } from '@vue/test-utils' +import { mountSuspended } from '@nuxt/test-utils/runtime' + +import App from '~/app.vue' +import { Counter } from '#components' + +describe('mount', () => { + enableAutoUnmount(afterEach) + + it('should mount page', async () => { + const wrapper = await mountSuspended(App, { + route: '/', + }) + + const title = wrapper.find('h1') + expect(title.text()).toBe('Index') + + const link = wrapper.find('a[href="/counter"]') + expect(link.exists()).toBe(true) + }) + + it('should mount component', async () => { + const wrapper = await mountSuspended(Counter) + + const title = wrapper.find('h2') + expect(title.exists()).toBe(true) + expect(title.text()).toBe('Counter Component') + + const input = wrapper.find('input') + expect(input.exists()).toBe(true) + expect(input.element.value).toBe('0') + }) +}) diff --git a/examples/multi-app/tsconfig.json b/examples/multi-app/tsconfig.json new file mode 100644 index 000000000..6ae5970c7 --- /dev/null +++ b/examples/multi-app/tsconfig.json @@ -0,0 +1,17 @@ +{ + "files": [], + "references": [ + { + "path": "./.nuxt/tsconfig.app.json" + }, + { + "path": "./.nuxt/tsconfig.server.json" + }, + { + "path": "./.nuxt/tsconfig.shared.json" + }, + { + "path": "./.nuxt/tsconfig.node.json" + } + ] +} diff --git a/examples/multi-app/vitest.config.ts b/examples/multi-app/vitest.config.ts new file mode 100644 index 000000000..8d2e3e43c --- /dev/null +++ b/examples/multi-app/vitest.config.ts @@ -0,0 +1,34 @@ +import { defineConfig } from 'vitest/config' +import { defineVitestProject } from '@nuxt/test-utils/config' +import { playwright } from '@vitest/browser-playwright' + +export default defineConfig({ + test: { + projects: [ + await defineVitestProject({ + test: { + name: 'nuxt', + dir: './test/nuxt', + }, + }), + await defineVitestProject({ + test: { + name: 'browser', + dir: './test/browser', + browser: { + enabled: true, + provider: playwright(), + instances: [{ browser: 'chromium' }], + headless: true, + screenshotFailures: false, + }, + }, + }), + ], + onConsoleLog(log) { + if (log.includes(' is an experimental feature')) { + return false + } + }, + }, +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32fade944..210701272 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -486,6 +486,34 @@ importers: specifier: 4.5.1 version: 4.5.1(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(@parcel/watcher@2.5.6)(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vue/compiler-sfc@3.5.40)(better-sqlite3@13.0.2)(cac@7.0.0)(commander@14.0.2)(db0@0.3.4(better-sqlite3@13.0.2))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@8.1.1))(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.3)(optionator@0.9.4)(oxc-parser@0.142.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(rollup@4.62.4)(srvx@0.12.5)(supports-color@10.2.2)(terser@5.44.1)(typescript@6.0.3)(vite@8.2.0)(vue-tsc@3.3.9(typescript@6.0.3))(yaml@2.9.0) + examples/multi-app: + dependencies: + nuxt: + specifier: ^4.5.1 + version: 4.5.1(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(@parcel/watcher@2.5.6)(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vue/compiler-sfc@3.5.40)(better-sqlite3@13.0.2)(cac@7.0.0)(commander@14.0.2)(db0@0.3.4(better-sqlite3@13.0.2))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@8.1.1))(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(lightningcss@1.33.0)(magicast@0.5.3)(optionator@0.9.4)(oxc-parser@0.142.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(rollup@4.62.4)(srvx@0.12.5)(supports-color@10.2.2)(terser@5.44.1)(typescript@6.0.3)(vite@8.2.0)(vue-tsc@3.3.9(typescript@6.0.3))(yaml@2.9.0) + devDependencies: + '@nuxt/test-utils': + specifier: workspace:* + version: link:../.. + '@vitest/browser': + specifier: 4.1.10 + version: 4.1.10(vite@8.2.0)(vitest@4.1.10) + '@vitest/browser-playwright': + specifier: 4.1.10 + version: 4.1.10(playwright@1.62.1)(vite@8.2.0)(vitest@4.1.10) + '@vue/test-utils': + specifier: 2.4.11 + version: 2.4.11(@vue/compiler-dom@3.5.40)(@vue/server-renderer@3.5.40)(vue@3.5.40(typescript@6.0.3)) + happy-dom: + specifier: 20.11.1 + version: 20.11.1 + typescript: + specifier: 6.0.3 + version: 6.0.3 + vitest: + specifier: 4.1.10 + version: 4.1.10(@types/node@24.13.3)(@vitest/browser-playwright@4.1.10)(@vitest/ui@4.1.10)(happy-dom@20.11.1)(jsdom@30.0.1)(vite@8.2.0) + examples/nitro-v3: dependencies: h3: @@ -493,10 +521,10 @@ importers: version: 2.0.1-rc.22(crossws@0.4.10(srvx@0.11.22)) nitro: specifier: 3.0.260610-beta - version: 3.0.260610-beta(better-sqlite3@13.0.2)(chokidar@5.0.0)(dotenv@17.4.1)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lru-cache@11.5.2)(rollup@4.62.4)(vite@8.2.0) + version: 3.0.260610-beta(better-sqlite3@13.0.2)(chokidar@5.0.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lru-cache@11.5.2)(rollup@4.62.4)(vite@8.2.0) nuxt: specifier: npm:nuxt-nightly@5x - version: nuxt-nightly@5.0.0-29760455.e6509fdd(6836773016d094aefdb8ad727d66d74d) + version: nuxt-nightly@5.0.0-29761125.c6a7d2b6(933c931eb1baefd92bac44a996ec6500) devDependencies: '@nuxt/test-utils': specifier: workspace:* @@ -521,7 +549,7 @@ importers: dependencies: nuxt: specifier: npm:nuxt-nightly@5x - version: nuxt-nightly@5.0.0-29760455.e6509fdd(51093f95e5fd3077ec5449e9fa66faf7) + version: nuxt-nightly@5.0.0-29761125.c6a7d2b6(03708d28d399480e1bfbce98d67a78d4) devDependencies: '@nuxt/test-utils': specifier: workspace:* @@ -1914,8 +1942,8 @@ packages: resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@nuxt/cli-nightly@4.0.0-20260803-090215-e80f9d0': - resolution: {integrity: sha512-zhTMsYVIAMHnnY/fE1kjAOtQhrCCLz5l4UxGedUyiFVGbABiR/bcnOb9aYhmwQ16JBAmFXOUQG27caEyx0lymw==} + '@nuxt/cli-nightly@4.0.0-20260803-092501-e80f9d0': + resolution: {integrity: sha512-sE/UMAqoq/HGT/QkzJSfDBQoBhXw8OlktTo2uyIGWI1Dpk17aFRwQargxpNt+bgS9N+Zy2CDW6+ZB/SxyLGPTQ==} engines: {node: ^22.19.0 || ^24.11.0 || >=26.0.0} hasBin: true peerDependencies: @@ -2027,9 +2055,20 @@ packages: '@nuxt/icon@2.3.1': resolution: {integrity: sha512-ebx7Zp08eR0Mw3zFAh3aT+t5zC4RoI0Xf0wLEfbv23LIPUQ9fvxYpofNiNZdG9m96Fvc3pQu6v+NaCRbRYRRog==} - '@nuxt/kit-nightly@5.0.0-29760455.e6509fdd': - resolution: {integrity: sha512-LI+P1jtTeDinuEqIr6sHO4oVGHdw1qMp18TuIVhlvGm4n40xbuog2MLv4WE/4WMCUYvLZL9QUNOwKKIl8GiQBw==} + '@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6': + resolution: {integrity: sha512-RcZrgzk8egYzF0vnIXINJ03IJxySGT4/a4/547CxyTWPQJaSOwOvGxV2VyJcU0x3BID8SIbZpo0zBNV8o1A8tQ==} engines: {node: '>=18.12.0'} + peerDependencies: + dotenv: ^17.4.2 + giget: ^3.3.0 + jiti: ^2.7.0 + peerDependenciesMeta: + dotenv: + optional: true + giget: + optional: true + jiti: + optional: true '@nuxt/kit@3.21.10': resolution: {integrity: sha512-zs1+BZlRK1VlHo37TTzaMXQ+SemS1WeGRtcjWbW1ZoXpL3/ctn2VQu6nFpu6JqsJRd0QAPNS4GYmxGwLK8EHNw==} @@ -2047,14 +2086,14 @@ packages: '@nuxt/cli': ^3.37.0 typescript: ^5.9.3 - '@nuxt/nitro-server-nightly@5.0.0-29760455.e6509fdd': - resolution: {integrity: sha512-kXaMZTYsILpwVWcgw1C9YYa4yScRomgp0VlJYhvi4cgjA6SyErZNMqBibZUWFHFZH8nVcg7Zl9omZkrCfcx54A==} + '@nuxt/nitro-server-nightly@5.0.0-29761125.c6a7d2b6': + resolution: {integrity: sha512-a+R1Q0JsGdW3OaHQChGOCtdYBVeDS1cMHKnUeGhrzjUJXgE+nupD1iqhmc3EsWaZFZWk1fGU+753hUPNumztbQ==} engines: {node: ^22.19.0 || ^24.11.0 || >=26.0.0} peerDependencies: '@babel/plugin-proposal-decorators': ^7.25.0 || ^8.0.0 '@babel/plugin-syntax-typescript': ^7.25.0 || ^8.0.0 '@rollup/plugin-babel': ^6.0.0 || ^7.0.0 - nuxt: npm:nuxt-nightly@5.0.0-29760455.e6509fdd + nuxt: npm:nuxt-nightly@5.0.0-29761125.c6a7d2b6 peerDependenciesMeta: '@babel/plugin-proposal-decorators': optional: true @@ -2149,8 +2188,8 @@ packages: zod: optional: true - '@nuxt/vite-builder-nightly@5.0.0-29760455.e6509fdd': - resolution: {integrity: sha512-nvH2KOP9MCDRxWrlowpfiwMe4uUGj5DptP/SCkwEMhUANv3ZG20yJrcibyuh+9aY1iaNI3rsHVwC3fQo/i1juA==} + '@nuxt/vite-builder-nightly@5.0.0-29761125.c6a7d2b6': + resolution: {integrity: sha512-mrPnx5ys8u4PcBh0Tx91M5wtXpdwiUGAdZuYZ+X9LwSobxQNh7yumEJiRKYd4bK+XEkhGy5L3VduxFeK7O9f/w==} engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} peerDependencies: '@babel/plugin-proposal-decorators': ^7.25.0 || ^8.0.0 @@ -2158,7 +2197,7 @@ packages: '@vitejs/plugin-vue-jsx': ^5.1.5 autoprefixer: ^10.4.27 cssnano: ^7.1.3 || ^8.0.0 - nuxt: npm:nuxt-nightly@5.0.0-29760455.e6509fdd + nuxt: npm:nuxt-nightly@5.0.0-29761125.c6a7d2b6 rollup-plugin-visualizer: ^6.0.0 || ^7.0.1 vue: ^3.5.40 peerDependenciesMeta: @@ -7522,8 +7561,8 @@ packages: nuxt-define@1.0.0: resolution: {integrity: sha512-CYZ2WjU+KCyCDVzjYUM4eEpMF0rkPmkpiFrybTqqQCRpUbPt2h3snswWIpFPXTi+osRCY6Og0W/XLAQgDL4FfQ==} - nuxt-nightly@5.0.0-29760455.e6509fdd: - resolution: {integrity: sha512-wemtw5Ad8fe8hLOtsfG3zY6Ykkrk27YdHG3WDPqglI/PVOaykX3Md9o45sQ0GQwX/g1tksrGIKfN2+1ZgGegTA==} + nuxt-nightly@5.0.0-29761125.c6a7d2b6: + resolution: {integrity: sha512-xUXTcukBQoLKsLjo7nYHmWZ25B5ytBy6wL6nIXrf6RFDpxb80LRBONJJ2PafA4/877AbkSlEmiTfrrC8SzQNNw==} engines: {node: ^22.19.0 || ^24.11.0 || >=26.0.0} hasBin: true peerDependencies: @@ -11877,7 +11916,7 @@ snapshots: '@npmcli/name-from-folder@2.0.0': {} - '@nuxt/cli-nightly@4.0.0-20260803-090215-e80f9d0(@nuxt/schema@4.5.1)(cac@7.0.0)(commander@14.0.2)(jiti@2.7.0)(oxc-parser@0.142.0)(rolldown@1.2.0)': + '@nuxt/cli-nightly@4.0.0-20260803-092501-e80f9d0(@nuxt/schema@4.5.1)(cac@7.0.0)(commander@14.0.2)(jiti@2.7.0)(oxc-parser@0.142.0)(rolldown@1.2.0)': dependencies: '@bomb.sh/tab': 0.0.21(cac@7.0.0)(citty@0.2.2)(commander@14.0.2) '@clack/prompts': 1.7.0 @@ -12822,16 +12861,15 @@ snapshots: - vite - vue - '@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))': + '@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))': dependencies: - c12: 3.3.4(magicast@0.5.3) + confbox: 0.2.4 consola: 3.4.2 defu: 6.1.7 destr: 2.0.5 errx: 0.1.2 exsolve: 1.1.1 ignore: 7.0.6 - jiti: 2.7.0 klona: 2.0.6 mlly: 1.8.2 nostics: 1.2.0 @@ -12845,11 +12883,12 @@ snapshots: tinyglobby: 0.2.17 ufo: 1.6.4 unctx: 3.0.0(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0)) - untyped: 2.0.0 verkit: 0.3.1 + optionalDependencies: + giget: 3.3.1 + jiti: 2.7.0 transitivePeerDependencies: - magic-string - - magicast - oxc-parser - rolldown - unplugin @@ -13093,10 +13132,10 @@ snapshots: - vue-tsc - webpack - '@nuxt/nitro-server-nightly@5.0.0-29760455.e6509fdd(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(better-sqlite3@13.0.2)(cac@7.0.0)(chokidar@5.0.0)(db0@0.3.4(better-sqlite3@13.0.2))(dotenv@17.4.1)(esbuild@0.28.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magicast@0.5.3)(nuxt-nightly@5.0.0-29760455.e6509fdd)(ofetch@2.0.0-alpha.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vite@8.2.0)': + '@nuxt/nitro-server-nightly@5.0.0-29761125.c6a7d2b6(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(better-sqlite3@13.0.2)(cac@7.0.0)(chokidar@5.0.0)(db0@0.3.4(better-sqlite3@13.0.2))(esbuild@0.28.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(nuxt-nightly@5.0.0-29761125.c6a7d2b6)(ofetch@2.0.0-alpha.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vite@8.2.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' + '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' '@unhead/vue': 3.2.3(@oxc-project/types@0.142.0)(cac@7.0.0)(esbuild@0.28.0)(lightningcss@1.33.0)(rolldown@1.2.0)(rollup@4.62.4)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)) '@vue/shared': 3.5.40 consola: 3.4.2 @@ -13112,9 +13151,9 @@ snapshots: magic-string: 1.1.0 mlly: 1.8.2 mocked-exports: 0.1.1 - nitro: 3.0.260610-beta(better-sqlite3@13.0.2)(chokidar@5.0.0)(dotenv@17.4.1)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lru-cache@11.5.2)(rollup@4.62.4)(vite@8.2.0) + nitro: 3.0.260610-beta(better-sqlite3@13.0.2)(chokidar@5.0.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lru-cache@11.5.2)(rollup@4.62.4)(vite@8.2.0) nostics: 1.2.0 - nuxt: nuxt-nightly@5.0.0-29760455.e6509fdd(6836773016d094aefdb8ad727d66d74d) + nuxt: nuxt-nightly@5.0.0-29761125.c6a7d2b6(933c931eb1baefd92bac44a996ec6500) ohash: 2.0.11 pathe: 2.0.3 srvx: 0.11.22 @@ -13166,7 +13205,6 @@ snapshots: - ioredis - jiti - lightningcss - - magicast - miniflare - mongodb - mysql2 @@ -13624,9 +13662,9 @@ snapshots: pkg-types: 2.3.1 std-env: 4.2.0 - '@nuxt/telemetry@2.8.0(@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0)))': + '@nuxt/telemetry@2.8.0(@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0)))': dependencies: - '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' + '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' citty: 0.2.2 consola: 3.4.2 ofetch: 2.0.0-alpha.3 @@ -13791,9 +13829,9 @@ snapshots: - vue - webpack - '@nuxt/vite-builder-nightly@5.0.0-29760455.e6509fdd(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)))(autoprefixer@10.5.4(postcss@8.5.23))(cssnano@8.0.2(postcss@8.5.23))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(magic-string@1.1.0)(magicast@0.5.3)(nuxt-nightly@5.0.0-29760455.e6509fdd)(optionator@0.9.4)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(terser@5.44.1)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vue-tsc@3.3.9(typescript@6.0.3))(vue@3.5.40(typescript@6.0.3))(yaml@2.9.0)': + '@nuxt/vite-builder-nightly@5.0.0-29761125.c6a7d2b6(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)))(autoprefixer@10.5.4(postcss@8.5.23))(cssnano@8.0.2(postcss@8.5.23))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(magic-string@1.1.0)(nuxt-nightly@5.0.0-29761125.c6a7d2b6)(optionator@0.9.4)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(terser@5.44.1)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vue-tsc@3.3.9(typescript@6.0.3))(vue@3.5.40(typescript@6.0.3))(yaml@2.9.0)': dependencies: - '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' + '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' '@vitejs/plugin-vue': 6.0.8(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)) clickable-path: 0.0.1 consola: 3.4.2 @@ -13807,7 +13845,7 @@ snapshots: knitwork: 1.3.0 mlly: 1.8.2 mocked-exports: 0.1.1 - nuxt: nuxt-nightly@5.0.0-29760455.e6509fdd(6836773016d094aefdb8ad727d66d74d) + nuxt: nuxt-nightly@5.0.0-29761125.c6a7d2b6(933c931eb1baefd92bac44a996ec6500) pathe: 2.0.3 pkg-types: 2.3.1 rolldown-string: 0.3.1(rolldown@1.2.0) @@ -13830,11 +13868,12 @@ snapshots: - '@biomejs/biome' - '@types/node' - '@vitejs/devtools' + - dotenv - esbuild - eslint + - giget - less - magic-string - - magicast - meow - optionator - oxc-parser @@ -20157,7 +20196,7 @@ snapshots: nf3@0.3.17: {} - nitro@3.0.260610-beta(better-sqlite3@13.0.2)(chokidar@5.0.0)(dotenv@17.4.1)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lru-cache@11.5.2)(rollup@4.62.4)(vite@8.2.0): + nitro@3.0.260610-beta(better-sqlite3@13.0.2)(chokidar@5.0.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lru-cache@11.5.2)(rollup@4.62.4)(vite@8.2.0): dependencies: consola: 3.4.2 crossws: 0.4.10(srvx@0.11.22) @@ -20174,7 +20213,6 @@ snapshots: unenv: 2.0.0-rc.24 unstorage: 2.0.0-alpha.7(chokidar@5.0.0)(db0@0.3.4(better-sqlite3@13.0.2))(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(lru-cache@11.5.2)(ofetch@2.0.0-alpha.3) optionalDependencies: - dotenv: 17.4.1 giget: 3.3.1 jiti: 2.7.0 rollup: 4.62.4 @@ -20871,16 +20909,16 @@ snapshots: nuxt-define@1.0.0: {} - nuxt-nightly@5.0.0-29760455.e6509fdd(51093f95e5fd3077ec5449e9fa66faf7): + nuxt-nightly@5.0.0-29761125.c6a7d2b6(03708d28d399480e1bfbce98d67a78d4): dependencies: '@dxup/nuxt': 0.5.5(esbuild@0.28.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0) - '@nuxt/cli': '@nuxt/cli-nightly@4.0.0-20260803-090215-e80f9d0(@nuxt/schema@4.5.1)(cac@7.0.0)(commander@14.0.2)(jiti@2.7.0)(oxc-parser@0.142.0)(rolldown@1.2.0)' + '@nuxt/cli': '@nuxt/cli-nightly@4.0.0-20260803-092501-e80f9d0(@nuxt/schema@4.5.1)(cac@7.0.0)(commander@14.0.2)(jiti@2.7.0)(oxc-parser@0.142.0)(rolldown@1.2.0)' '@nuxt/devtools': 4.0.0-alpha.9(cac@7.0.0)(crossws@0.4.10(srvx@0.12.5))(db0@0.3.4(better-sqlite3@13.0.2))(devframe@0.7.14(cac@7.0.0)(srvx@0.12.5)(typescript@6.0.3))(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(srvx@0.12.5)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(valibot@1.4.2(typescript@6.0.3))(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)) - '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' - '@nuxt/nitro-server': '@nuxt/nitro-server-nightly@5.0.0-29760455.e6509fdd(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(better-sqlite3@13.0.2)(cac@7.0.0)(chokidar@5.0.0)(db0@0.3.4(better-sqlite3@13.0.2))(dotenv@17.4.1)(esbuild@0.28.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magicast@0.5.3)(nuxt-nightly@5.0.0-29760455.e6509fdd)(ofetch@2.0.0-alpha.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vite@8.2.0)' + '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' + '@nuxt/nitro-server': '@nuxt/nitro-server-nightly@5.0.0-29761125.c6a7d2b6(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(better-sqlite3@13.0.2)(cac@7.0.0)(chokidar@5.0.0)(db0@0.3.4(better-sqlite3@13.0.2))(esbuild@0.28.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(nuxt-nightly@5.0.0-29761125.c6a7d2b6)(ofetch@2.0.0-alpha.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vite@8.2.0)' '@nuxt/schema': 4.5.1 - '@nuxt/telemetry': 2.8.0(@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))) - '@nuxt/vite-builder': '@nuxt/vite-builder-nightly@5.0.0-29760455.e6509fdd(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)))(autoprefixer@10.5.4(postcss@8.5.23))(cssnano@8.0.2(postcss@8.5.23))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(magic-string@1.1.0)(magicast@0.5.3)(nuxt-nightly@5.0.0-29760455.e6509fdd)(optionator@0.9.4)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(terser@5.44.1)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vue-tsc@3.3.9(typescript@6.0.3))(vue@3.5.40(typescript@6.0.3))(yaml@2.9.0)' + '@nuxt/telemetry': 2.8.0(@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))) + '@nuxt/vite-builder': '@nuxt/vite-builder-nightly@5.0.0-29761125.c6a7d2b6(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)))(autoprefixer@10.5.4(postcss@8.5.23))(cssnano@8.0.2(postcss@8.5.23))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(magic-string@1.1.0)(nuxt-nightly@5.0.0-29761125.c6a7d2b6)(optionator@0.9.4)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(terser@5.44.1)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vue-tsc@3.3.9(typescript@6.0.3))(vue@3.5.40(typescript@6.0.3))(yaml@2.9.0)' '@unhead/vue': 3.2.3(@oxc-project/types@0.142.0)(cac@7.0.0)(esbuild@0.28.0)(lightningcss@1.33.0)(rolldown@1.2.0)(rollup@4.62.4)(srvx@0.12.5)(typescript@6.0.3)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)) '@vue/shared': 3.5.40 chokidar: 5.0.0 @@ -21027,16 +21065,16 @@ snapshots: - yaml - zephyr-agent - nuxt-nightly@5.0.0-29760455.e6509fdd(6836773016d094aefdb8ad727d66d74d): + nuxt-nightly@5.0.0-29761125.c6a7d2b6(933c931eb1baefd92bac44a996ec6500): dependencies: '@dxup/nuxt': 0.5.5(esbuild@0.28.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0) - '@nuxt/cli': '@nuxt/cli-nightly@4.0.0-20260803-090215-e80f9d0(@nuxt/schema@4.5.1)(cac@7.0.0)(commander@14.0.2)(jiti@2.7.0)(oxc-parser@0.142.0)(rolldown@1.2.0)' + '@nuxt/cli': '@nuxt/cli-nightly@4.0.0-20260803-092501-e80f9d0(@nuxt/schema@4.5.1)(cac@7.0.0)(commander@14.0.2)(jiti@2.7.0)(oxc-parser@0.142.0)(rolldown@1.2.0)' '@nuxt/devtools': 4.0.0-alpha.9(cac@7.0.0)(crossws@0.4.10(srvx@0.11.22))(db0@0.3.4(better-sqlite3@13.0.2))(devframe@0.7.14(cac@7.0.0)(srvx@0.11.22)(typescript@6.0.3))(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(srvx@0.11.22)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(valibot@1.4.2(typescript@6.0.3))(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)) - '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' - '@nuxt/nitro-server': '@nuxt/nitro-server-nightly@5.0.0-29760455.e6509fdd(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(better-sqlite3@13.0.2)(cac@7.0.0)(chokidar@5.0.0)(db0@0.3.4(better-sqlite3@13.0.2))(dotenv@17.4.1)(esbuild@0.28.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magicast@0.5.3)(nuxt-nightly@5.0.0-29760455.e6509fdd)(ofetch@2.0.0-alpha.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vite@8.2.0)' + '@nuxt/kit': '@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))' + '@nuxt/nitro-server': '@nuxt/nitro-server-nightly@5.0.0-29761125.c6a7d2b6(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2)))(@oxc-project/types@0.142.0)(better-sqlite3@13.0.2)(cac@7.0.0)(chokidar@5.0.0)(db0@0.3.4(better-sqlite3@13.0.2))(esbuild@0.28.0)(giget@3.3.1)(idb-keyval@6.3.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(nuxt-nightly@5.0.0-29761125.c6a7d2b6)(ofetch@2.0.0-alpha.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup@4.62.4)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vite@8.2.0)' '@nuxt/schema': 4.5.1 - '@nuxt/telemetry': 2.8.0(@nuxt/kit-nightly@5.0.0-29760455.e6509fdd(magic-string@1.1.0)(magicast@0.5.3)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))) - '@nuxt/vite-builder': '@nuxt/vite-builder-nightly@5.0.0-29760455.e6509fdd(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)))(autoprefixer@10.5.4(postcss@8.5.23))(cssnano@8.0.2(postcss@8.5.23))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(magic-string@1.1.0)(magicast@0.5.3)(nuxt-nightly@5.0.0-29760455.e6509fdd)(optionator@0.9.4)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(terser@5.44.1)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vue-tsc@3.3.9(typescript@6.0.3))(vue@3.5.40(typescript@6.0.3))(yaml@2.9.0)' + '@nuxt/telemetry': 2.8.0(@nuxt/kit-nightly@5.0.0-29761125.c6a7d2b6(giget@3.3.1)(jiti@2.7.0)(magic-string@1.1.0)(oxc-parser@0.142.0)(rolldown@1.2.0)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))) + '@nuxt/vite-builder': '@nuxt/vite-builder-nightly@5.0.0-29761125.c6a7d2b6(@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0(supports-color@10.2.2)))(@types/node@24.13.3)(@vitejs/devtools@0.4.8)(@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)))(autoprefixer@10.5.4(postcss@8.5.23))(cssnano@8.0.2(postcss@8.5.23))(esbuild@0.28.0)(eslint@10.8.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(magic-string@1.1.0)(nuxt-nightly@5.0.0-29761125.c6a7d2b6)(optionator@0.9.4)(oxc-parser@0.142.0)(rolldown@1.2.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.0)(rollup@4.62.4))(terser@5.44.1)(typescript@6.0.3)(unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.0)(rollup@4.62.4)(vite@8.2.0))(vue-tsc@3.3.9(typescript@6.0.3))(vue@3.5.40(typescript@6.0.3))(yaml@2.9.0)' '@unhead/vue': 3.2.3(@oxc-project/types@0.142.0)(cac@7.0.0)(esbuild@0.28.0)(lightningcss@1.33.0)(rolldown@1.2.0)(rollup@4.62.4)(srvx@0.11.22)(typescript@6.0.3)(vite@8.2.0)(vue@3.5.40(typescript@6.0.3)) '@vue/shared': 3.5.40 chokidar: 5.0.0 diff --git a/src/config.ts b/src/config.ts index cd857f139..c7cf2924b 100644 --- a/src/config.ts +++ b/src/config.ts @@ -192,6 +192,8 @@ export async function getVitestConfigFromNuxt( }, test: { environmentOptions: { + nuxtAppId: options.nuxt.options.appId, + nuxtFuture: defu({}, options.nuxt.options.future), nuxtRuntimeConfig: applyEnv(structuredClone(options.nuxt.options.runtimeConfig), { prefix: 'NUXT_', env: await setupDotenv(defu(loadNuxtOptions.dotenv, { @@ -511,6 +513,8 @@ export interface NuxtEnvironmentResolvedOptions { NonNullable, 'rootAttrs' | 'rootTag' | 'teleportTag' | 'teleportAttrs' > + nuxtAppId?: NuxtConfig['appId'] + nuxtFuture?: NuxtConfig['future'] } declare module 'vitest/node' { diff --git a/src/runtime/shared/environment.ts b/src/runtime/shared/environment.ts index 11b5c06e4..55f108763 100644 --- a/src/runtime/shared/environment.ts +++ b/src/runtime/shared/environment.ts @@ -9,7 +9,7 @@ import { createFetchForH3V2 } from './h3-v2.ts' export async function setupWindow(win: NuxtWindow, environmentOptions: NuxtEnvironmentResolvedOptions) { win.__NUXT_VITEST_ENVIRONMENT__ = true - win.__NUXT__ = { + const __NUXT__ = { serverRendered: false, config: { public: {}, @@ -20,6 +20,17 @@ export async function setupWindow(win: NuxtWindow, environmentOptions: NuxtEnvir state: {}, } + const multiApp = environmentOptions.nuxtFuture?.multiApp || false + if (!multiApp) { + win.__NUXT__ = __NUXT__ + } + else { + const appId = environmentOptions?.nuxtAppId || 'nuxt-app' + win.__NUXT__ = { + [appId]: __NUXT__, + } + } + const consoleInfo = console.info console.info = (...args) => { if (args[0] === ' is an experimental feature and its API will likely change.') { @@ -78,8 +89,7 @@ export async function setupWindow(win: NuxtWindow, environmentOptions: NuxtEnvir ) const manifestBaseRoutePath = joinURL('/_', manifestOutputPath) - // @ts-expect-error untyped property - const buildId = win.__NUXT__.config?.app.buildId || 'test' + const buildId = __NUXT__.config?.app.buildId || 'test' res.h3App.use( `${manifestBaseRoutePath}/latest.json`,