diff --git a/package.json b/package.json index bab6cc7fdd..a5d8c4c5bb 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@types/node": "20.14.9", "@types/semver": "7.5.8", "@unhead/schema": "1.9.14", - "@vitejs/plugin-vue": "5.0.4", + "@vitejs/plugin-vue": "5.0.5", "@vitest/coverage-v8": "1.6.0", "@vue/test-utils": "2.4.6", "case-police": "0.6.1", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 8941d334fd..37868d2be6 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -123,7 +123,7 @@ "@nuxt/ui-templates": "1.3.4", "@parcel/watcher": "2.4.1", "@types/estree": "1.0.5", - "@vitejs/plugin-vue": "5.0.4", + "@vitejs/plugin-vue": "5.0.5", "@vue/compiler-sfc": "3.4.30", "unbuild": "latest", "vite": "5.3.1", diff --git a/packages/nuxt/test/__snapshots__/treeshake-client.test.ts.snap b/packages/nuxt/test/__snapshots__/treeshake-client.test.ts.snap index d34f990205..dc32c7380b 100644 Binary files a/packages/nuxt/test/__snapshots__/treeshake-client.test.ts.snap and b/packages/nuxt/test/__snapshots__/treeshake-client.test.ts.snap differ diff --git a/packages/nuxt/test/treeshake-client.test.ts b/packages/nuxt/test/treeshake-client.test.ts index e0b076d950..27a54baf87 100644 --- a/packages/nuxt/test/treeshake-client.test.ts +++ b/packages/nuxt/test/treeshake-client.test.ts @@ -67,10 +67,19 @@ const treeshake = async (source: string): Promise => { } async function SFCCompile (name: string, source: string, options: Options, ssr = false): Promise { - const result = await (vuePlugin({ + const plugin = vuePlugin({ compiler: VueCompilerSFC, ...options, - }).transform! as Function).call({ + }) + // @ts-expect-error Types are not correct as they are too generic + plugin.configResolved!({ + isProduction: options.isProduction, + command: 'build', + root: process.cwd(), + build: { sourcemap: false }, + define: {}, + }) + const result = await (plugin.transform! as Function).call({ parse: (code: string, opts: any = {}) => Parser.parse(code, { sourceType: 'module', ecmaVersion: 'latest', @@ -84,14 +93,16 @@ async function SFCCompile (name: string, source: string, options: Options, ssr = return typeof result === 'string' ? result : result?.code } -const stateToTest: { name: string, options: Partial }[] = [ +const stateToTest: { index: number, name: string, options: Partial }[] = [ { + index: 0, name: 'prod', options: { isProduction: true, }, }, { + index: 1, name: 'dev', options: { isProduction: false, @@ -107,93 +118,91 @@ const stateToTest: { name: string, options: Partial { vi.spyOn(process, 'cwd').mockImplementation(() => '') - for (const [index, state] of stateToTest.entries()) { - it(`should treeshake ClientOnly correctly in ${state.name}`, async () => { - // add index to avoid using vite vue plugin cache - const clientResult = await SFCCompile(`SomeComponent${index}.vue`, WithClientOnly, state.options) + it.each(stateToTest)(`should treeshake ClientOnly correctly in $name`, async (state) => { + // add index to avoid using vite vue plugin cache + const clientResult = await SFCCompile(`SomeComponent${state.index}.vue`, WithClientOnly, state.options) - const ssrResult = await SFCCompile(`SomeComponent${index}.vue`, WithClientOnly, state.options, true) + const ssrResult = await SFCCompile(`SomeComponent${state.index}.vue`, WithClientOnly, state.options, true) - const treeshaken = await treeshake(ssrResult) - const [_, scopeId] = clientResult.match(/_pushScopeId\("(.*)"\)/)! + const treeshaken = await treeshake(ssrResult) + const [_, scopeId] = clientResult.match(/_pushScopeId\("(.*)"\)/)! - // ensure the id is correctly passed between server and client - expect(clientResult).toContain(`pushScopeId("${scopeId}")`) - expect(treeshaken).toContain(`
`) + // ensure the id is correctly passed between server and client + expect(clientResult).toContain(`pushScopeId("${scopeId}")`) + expect(treeshaken).toContain(`
`) - expect(clientResult).toContain('should-be-treeshaken') - expect(treeshaken).not.toContain('should-be-treeshaken') + expect(clientResult).toContain('should-be-treeshaken') + expect(treeshaken).not.toContain('should-be-treeshaken') - expect(treeshaken).not.toContain('import HelloWorld from \'../HelloWorld.vue\'') - expect(clientResult).toContain('import HelloWorld from \'../HelloWorld.vue\'') + expect(treeshaken).not.toContain('import HelloWorld from \'../HelloWorld.vue\'') + expect(clientResult).toContain('import HelloWorld from \'../HelloWorld.vue\'') - expect(treeshaken).not.toContain('import { Treeshaken } from \'somepath\'') - expect(clientResult).toContain('import { Treeshaken } from \'somepath\'') + expect(treeshaken).not.toContain('import { Treeshaken } from \'somepath\'') + expect(clientResult).toContain('import { Treeshaken } from \'somepath\'') - // remove resolved import - expect(treeshaken).not.toContain('const _component_ResolvedImport =') - expect(clientResult).toContain('const _component_ResolvedImport =') + // remove resolved import + expect(treeshaken).not.toContain('const _component_ResolvedImport =') + expect(clientResult).toContain('const _component_ResolvedImport =') - // treeshake multi line variable declaration - expect(clientResult).toContain('const SomeIsland = defineAsyncComponent(async () => {') - expect(treeshaken).not.toContain('const SomeIsland = defineAsyncComponent(async () => {') - expect(treeshaken).not.toContain('return (await import(\'./../some.island.vue\'))') - expect(treeshaken).toContain('const NotToBeTreeShaken = defineAsyncComponent(async () => {') + // treeshake multi line variable declaration + expect(clientResult).toContain('const SomeIsland = defineAsyncComponent(async () => {') + expect(treeshaken).not.toContain('const SomeIsland = defineAsyncComponent(async () => {') + expect(treeshaken).not.toContain('return (await import(\'./../some.island.vue\'))') + expect(treeshaken).toContain('const NotToBeTreeShaken = defineAsyncComponent(async () => {') - // treeshake object and array declaration - expect(treeshaken).not.toContain('const { ObjectPattern } = await import(\'nuxt.com\')') - expect(treeshaken).not.toContain('const { ObjectPattern: ObjectPatternDeclaration } = await import(\'nuxt.com\')') - expect(treeshaken).toContain('const { ButShouldNotBeTreeShaken } = defineAsyncComponent(async () => {') - expect(treeshaken).toContain('const [ { Dont, }, That] = defineAsyncComponent(async () => {') + // treeshake object and array declaration + expect(treeshaken).not.toContain('const { ObjectPattern } = await import(\'nuxt.com\')') + expect(treeshaken).not.toContain('const { ObjectPattern: ObjectPatternDeclaration } = await import(\'nuxt.com\')') + expect(treeshaken).toContain('const { ButShouldNotBeTreeShaken } = defineAsyncComponent(async () => {') + expect(treeshaken).toContain('const [ { Dont, }, That] = defineAsyncComponent(async () => {') - // treeshake object that has an assignment pattern - expect(treeshaken).toContain('const { woooooo, } = defineAsyncComponent(async () => {') - expect(treeshaken).not.toContain('const { Deep, assignment: { Pattern = ofComponent } } = defineAsyncComponent(async () => {') + // treeshake object that has an assignment pattern + expect(treeshaken).toContain('const { woooooo, } = defineAsyncComponent(async () => {') + expect(treeshaken).not.toContain('const { Deep, assignment: { Pattern = ofComponent } } = defineAsyncComponent(async () => {') - // expect no empty ObjectPattern on treeshaking - expect(treeshaken).not.toContain('const { } = defineAsyncComponent') - expect(treeshaken).not.toContain('import { } from') + // expect no empty ObjectPattern on treeshaking + expect(treeshaken).not.toContain('const { } = defineAsyncComponent') + expect(treeshaken).not.toContain('import { } from') - // expect components used in setup to not be removed - expect(treeshaken).toContain('import DontRemoveThisSinceItIsUsedInSetup from \'./ComponentWithProps.vue\'') + // expect components used in setup to not be removed + expect(treeshaken).toContain('import DontRemoveThisSinceItIsUsedInSetup from \'./ComponentWithProps.vue\'') - // expect import of ClientImport to be treeshaken but not Glob since it is also used outside - expect(treeshaken).not.toContain('ClientImport') - expect(treeshaken).toContain('import { Glob } from \'#components\'') + // expect import of ClientImport to be treeshaken but not Glob since it is also used outside + expect(treeshaken).not.toContain('ClientImport') + expect(treeshaken).toContain('import { Glob } from \'#components\'') - // treeshake .client slot - expect(treeshaken).not.toContain('ByeBye') - // don't treeshake variables that has the same name as .client components - expect(treeshaken).toContain('NotDotClientComponent') - expect(treeshaken).not.toContain('(DotClientComponent') + // treeshake .client slot + expect(treeshaken).not.toContain('ByeBye') + // don't treeshake variables that has the same name as .client components + expect(treeshaken).toContain('NotDotClientComponent') + expect(treeshaken).not.toContain('(DotClientComponent') - expect(treeshaken).not.toContain('AutoImportedComponent') - expect(treeshaken).toContain('AutoImportedNotTreeShakenComponent') + expect(treeshaken).not.toContain('AutoImportedComponent') + expect(treeshaken).toContain('AutoImportedNotTreeShakenComponent') - expect(treeshaken).not.toContain('Both') - expect(treeshaken).not.toContain('AreTreeshaken') + expect(treeshaken).not.toContain('Both') + expect(treeshaken).not.toContain('AreTreeshaken') - if (state.options.isProduction === false) { - // treeshake at inlined template - expect(treeshaken).not.toContain('ssrRenderComponent($setup["HelloWorld"]') - expect(treeshaken).toContain('ssrRenderComponent($setup["Glob"]') - } else { - // treeshake unref - expect(treeshaken).not.toContain('ssrRenderComponent(_unref(HelloWorld') - expect(treeshaken).toContain('ssrRenderComponent(_unref(Glob') - } - expect(treeshaken.replace(/data-v-\w{8}/g, 'data-v-one-hash').replace(/scoped=\w{8}/g, 'scoped=one-hash')).toMatchSnapshot() - }) - } + if (state.options.isProduction === false) { + // treeshake at inlined template + expect(treeshaken).not.toContain('ssrRenderComponent($setup["HelloWorld"]') + expect(treeshaken).toContain('ssrRenderComponent($setup["Glob"]') + } else { + // treeshake unref + expect(treeshaken).not.toContain('ssrRenderComponent(_unref(HelloWorld') + expect(treeshaken).toContain('ssrRenderComponent(_unref(Glob') + } + expect(treeshaken.replace(/data-v-\w{8}/g, 'data-v-one-hash').replace(/scoped=\w{8}/g, 'scoped=one-hash')).toMatchSnapshot() + }) it('should not treeshake reused component #26137', async () => { const treeshaken = await treeshake(`import { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode } from "vue" import { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttrs as _ssrRenderAttrs } from "vue/server-renderer" - + export function ssrRender(_ctx, _push, _parent, _attrs) { const _component_AppIcon = _resolveComponent("AppIcon") const _component_ClientOnly = _resolveComponent("ClientOnly") - + _push(\`\`) _push(_ssrRenderComponent(_component_AppIcon, { name: "caret-left" }, null, _parent)) _push(_ssrRenderComponent(_component_ClientOnly, null, { diff --git a/packages/schema/package.json b/packages/schema/package.json index a08eaa35c8..4b8aaddd63 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -40,7 +40,7 @@ "@types/pug": "2.0.10", "@types/sass-loader": "8.0.8", "@unhead/schema": "1.9.14", - "@vitejs/plugin-vue": "5.0.4", + "@vitejs/plugin-vue": "5.0.5", "@vitejs/plugin-vue-jsx": "4.0.0", "@vue/compiler-core": "3.4.30", "@vue/compiler-sfc": "3.4.30", diff --git a/packages/vite/package.json b/packages/vite/package.json index 670a3f4c55..0e72c0f504 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -34,7 +34,7 @@ "dependencies": { "@nuxt/kit": "workspace:*", "@rollup/plugin-replace": "^5.0.7", - "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue": "^5.0.5", "@vitejs/plugin-vue-jsx": "^4.0.0", "autoprefixer": "^10.4.19", "clear": "^0.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c60547d35..f01606f8df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: link:packages/kit '@nuxt/test-utils': specifier: 3.13.1 - version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) + version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) '@nuxt/webpack-builder': specifier: workspace:* version: link:packages/webpack @@ -51,8 +51,8 @@ importers: specifier: 1.9.14 version: 1.9.14 '@vitejs/plugin-vue': - specifier: 5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) + specifier: 5.0.5 + version: 5.0.5(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) '@vitest/coverage-v8': specifier: 1.6.0 version: 1.6.0(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0)) @@ -103,7 +103,7 @@ importers: version: 0.41.0 nitropack: specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + version: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) nuxi: specifier: 3.12.0 version: 3.12.0 @@ -142,7 +142,7 @@ importers: version: 1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0) vitest-environment-nuxt: specifier: 1.0.0 - version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) + version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) vue: specifier: 3.4.30 version: 3.4.30(typescript@5.5.2) @@ -230,7 +230,7 @@ importers: version: 4.17.21 nitropack: specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + version: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) unbuild: specifier: latest version: 2.0.0(sass@1.69.4)(typescript@5.5.2) @@ -278,7 +278,7 @@ importers: version: 1.9.14(vue@3.4.30(typescript@5.5.2)) '@vue/shared': specifier: ^3.4.30 - version: 3.4.30 + version: 3.4.31 acorn: specifier: 8.12.0 version: 8.12.0 @@ -344,7 +344,7 @@ importers: version: 1.7.1 nitropack: specifier: ^2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + version: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) nuxi: specifier: ^3.12.0 version: 3.12.0 @@ -401,13 +401,13 @@ importers: version: 3.7.2(rollup@4.18.0) unplugin: specifier: ^1.10.1 - version: 1.10.1 + version: 1.10.2 unplugin-vue-router: specifier: ^0.10.0 version: 0.10.0(rollup@4.18.0)(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) unstorage: specifier: ^1.10.2 - version: 1.10.2(ioredis@5.3.2) + version: 1.10.2(ioredis@5.4.1) untyped: specifier: ^1.4.2 version: 1.4.2 @@ -426,7 +426,7 @@ importers: devDependencies: '@nuxt/scripts': specifier: 0.5.1 - version: 0.5.1(@nuxt/devtools@1.3.6(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.21.5)))(@vue/compiler-core@3.4.30)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2))(webpack@5.92.1(esbuild@0.21.5)) + version: 0.5.1(@nuxt/devtools@1.3.6(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.21.5)))(@vue/compiler-core@3.4.30)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2))(webpack@5.92.1(esbuild@0.21.5)) '@nuxt/ui-templates': specifier: workspace:* version: link:../ui-templates @@ -437,8 +437,8 @@ importers: specifier: 1.0.5 version: 1.0.5 '@vitejs/plugin-vue': - specifier: 5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) + specifier: 5.0.5 + version: 5.0.5(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) '@vue/compiler-sfc': specifier: 3.4.30 version: 3.4.30 @@ -510,8 +510,8 @@ importers: specifier: 1.9.14 version: 1.9.14 '@vitejs/plugin-vue': - specifier: 5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) + specifier: 5.0.5 + version: 5.0.5(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) '@vitejs/plugin-vue-jsx': specifier: 4.0.0 version: 4.0.0(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) @@ -538,7 +538,7 @@ importers: version: 5.3.1 nitropack: specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + version: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) ofetch: specifier: 1.3.4 version: 1.3.4 @@ -630,8 +630,8 @@ importers: specifier: ^5.0.7 version: 5.0.7(rollup@4.18.0) '@vitejs/plugin-vue': - specifier: ^5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) + specifier: ^5.0.5 + version: 5.0.5(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.0 version: 4.0.0(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2)) @@ -709,7 +709,7 @@ importers: version: 1.9.0 unplugin: specifier: ^1.10.1 - version: 1.10.1 + version: 1.10.2 vite: specifier: 5.3.1 version: 5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) @@ -842,7 +842,7 @@ importers: version: 1.9.0 unplugin: specifier: ^1.10.1 - version: 1.10.1 + version: 1.10.2 url-loader: specifier: ^4.1.1 version: 4.1.1(file-loader@6.2.0(webpack@5.92.1))(webpack@5.92.1) @@ -906,7 +906,7 @@ importers: version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.30 + version: 3.4.31 nuxt: specifier: workspace:* version: link:../packages/nuxt @@ -937,7 +937,7 @@ importers: version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.30 + version: 3.4.31 iron-webcrypto: specifier: latest version: 1.2.1 @@ -949,7 +949,7 @@ importers: version: 1.9.14 unplugin: specifier: latest - version: 1.10.1 + version: 1.10.2 vue: specifier: 3.4.30 version: 3.4.30(typescript@5.5.2) @@ -1008,7 +1008,7 @@ importers: version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.30 + version: 3.4.31 unhead: specifier: latest version: 1.9.14 @@ -1030,7 +1030,7 @@ importers: version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.30 + version: 3.4.31 typescript: specifier: latest version: 5.5.2 @@ -1245,8 +1245,9 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@cloudflare/kv-asset-handler@0.3.1': - resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} + '@cloudflare/kv-asset-handler@0.3.3': + resolution: {integrity: sha512-wpE+WiWW2kUNwNE0xyl4CtTAs+STjGtouHGiZPGRaisGB7eXXdbvfZdOrQJQVKgTxZiNAgVgmc7fj0sUmd8zyA==} + engines: {node: '>=16.13'} '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} @@ -1938,17 +1939,17 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@netlify/functions@2.6.0': - resolution: {integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==} + '@netlify/functions@2.7.0': + resolution: {integrity: sha512-4pXC/fuj3eGQ86wbgPiM4zY8+AsNrdz6vcv6FEdUJnZW+LqF8IWjQcY3S0d1hLeLKODYOqq4CkrzGyCpce63Nw==} engines: {node: '>=14.0.0'} '@netlify/node-cookies@0.1.0': resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/serverless-functions-api@1.14.0': - resolution: {integrity: sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q==} - engines: {node: ^14.18.0 || >=16.0.0} + '@netlify/serverless-functions-api@1.18.1': + resolution: {integrity: sha512-DrSvivchuwsuQW03zbVPT3nxCQa5tn7m4aoPOsQKibuJXIuSbfxzCBxPLz0+LchU5ds7YyOaCc9872Y32ngYzg==} + engines: {node: '>=18.0.0'} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2101,6 +2102,77 @@ packages: '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + '@opentelemetry/api-logs@0.50.0': + resolution: {integrity: sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==} + engines: {node: '>=14'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/core@1.23.0': + resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + + '@opentelemetry/core@1.25.1': + resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/otlp-transformer@0.50.0': + resolution: {integrity: sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.9.0' + + '@opentelemetry/resources@1.23.0': + resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + + '@opentelemetry/resources@1.25.1': + resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.50.0': + resolution: {integrity: sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.9.0' + '@opentelemetry/api-logs': '>=0.39.1' + + '@opentelemetry/sdk-metrics@1.23.0': + resolution: {integrity: sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.9.0' + + '@opentelemetry/sdk-trace-base@1.23.0': + resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + + '@opentelemetry/sdk-trace-base@1.25.1': + resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.23.0': + resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==} + engines: {node: '>=14'} + + '@opentelemetry/semantic-conventions@1.25.1': + resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==} + engines: {node: '>=14'} + '@parcel/watcher-android-arm64@2.4.1': resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} engines: {node: '>= 10.0.0'} @@ -2866,8 +2938,8 @@ packages: peerDependencies: webpack: ^4 || ^5 - '@vercel/nft@0.26.4': - resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==} + '@vercel/nft@0.26.5': + resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==} engines: {node: '>=16'} hasBin: true @@ -2878,8 +2950,8 @@ packages: vite: 5.3.1 vue: 3.4.30 - '@vitejs/plugin-vue@5.0.4': - resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + '@vitejs/plugin-vue@5.0.5': + resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: 5.3.1 @@ -3002,6 +3074,9 @@ packages: '@vue/shared@3.4.30': resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==} + '@vue/shared@3.4.31': + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} + '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} @@ -3657,8 +3732,8 @@ packages: critters@0.0.24: resolution: {integrity: sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==} - croner@8.0.1: - resolution: {integrity: sha512-Hq1+lXVgjJjcS/U+uk6+yVmtxami0r0b+xVtlGyABgdz110l/kOnHWvlSI7nVzrTl8GCdZHwZS4pbBFT7hSL/g==} + croner@8.0.2: + resolution: {integrity: sha512-HgSdlSUX8mIgDTTiQpWUP4qY4IFRMsduPCYdca34Pelt8MVdxdaDOzreFtCscA6R+cRZd7UbD1CD3uyx6J3X1A==} engines: {node: '>=18.0'} cronstrue@2.50.0: @@ -4725,8 +4800,8 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} - ioredis@5.3.2: - resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} + ioredis@5.4.1: + resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} engines: {node: '>=12.22.0'} ip@2.0.1: @@ -5387,8 +5462,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - mime@4.0.1: - resolution: {integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==} + mime@4.0.3: + resolution: {integrity: sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==} engines: {node: '>=16'} hasBin: true @@ -5731,8 +5806,8 @@ packages: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} - openapi-typescript@6.7.5: - resolution: {integrity: sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==} + openapi-typescript@6.7.6: + resolution: {integrity: sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==} hasBin: true opener@1.5.2: @@ -6510,8 +6585,8 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-placeholder@2.0.1: - resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} + serve-placeholder@2.0.2: + resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} @@ -6979,8 +7054,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} unenv@1.9.0: @@ -7065,8 +7140,8 @@ packages: vue-router: optional: true - unplugin@1.10.1: - resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} + unplugin@1.10.2: + resolution: {integrity: sha512-KuPqnjU4HBcrSwmQatfdc5hU4xzaQrhoKqCKylwmLnbBvqj5udXL8cHrkOuYDoI4ESCwJIiAIKMujroIUKLgow==} engines: {node: '>=14.0.0'} unstorage@1.10.2: @@ -7857,7 +7932,7 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@cloudflare/kv-asset-handler@0.3.1': + '@cloudflare/kv-asset-handler@0.3.3': dependencies: mime: 3.0.0 @@ -8313,16 +8388,25 @@ snapshots: - encoding - supports-color - '@netlify/functions@2.6.0': + '@netlify/functions@2.7.0(@opentelemetry/api@1.9.0)': dependencies: - '@netlify/serverless-functions-api': 1.14.0 + '@netlify/serverless-functions-api': 1.18.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - '@opentelemetry/api' '@netlify/node-cookies@0.1.0': {} - '@netlify/serverless-functions-api@1.14.0': + '@netlify/serverless-functions-api@1.18.1(@opentelemetry/api@1.9.0)': dependencies: '@netlify/node-cookies': 0.1.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.50.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 urlpattern-polyfill: 8.0.2 + transitivePeerDependencies: + - '@opentelemetry/api' '@nodelib/fs.scandir@2.1.5': dependencies: @@ -8565,7 +8649,7 @@ snapshots: string-width: 4.2.3 webpack: 5.92.1 - '@nuxt/scripts@0.5.1(@nuxt/devtools@1.3.6(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.21.5)))(@vue/compiler-core@3.4.30)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2))(webpack@5.92.1(esbuild@0.21.5))': + '@nuxt/scripts@0.5.1(@nuxt/devtools@1.3.6(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.21.5)))(@vue/compiler-core@3.4.30)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2))(webpack@5.92.1(esbuild@0.21.5))': dependencies: '@nuxt/devtools-kit': 1.3.6(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) '@nuxt/devtools-ui-kit': 1.3.3(@nuxt/devtools@1.3.6(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.21.5)))(@vue/compiler-core@3.4.30)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2))(webpack@5.92.1(esbuild@0.21.5)) @@ -8593,8 +8677,8 @@ snapshots: third-party-capital: 1.0.30 ufo: 1.5.3 unimport: 3.7.2(rollup@4.18.0) - unplugin: 1.10.1 - unstorage: 1.10.2(ioredis@5.3.2) + unplugin: 1.10.2 + unstorage: 1.10.2(ioredis@5.4.1) valibot: 0.31.1 transitivePeerDependencies: - '@azure/app-configuration' @@ -8653,7 +8737,7 @@ snapshots: rc9: 2.1.2 std-env: 3.7.0 - '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2))': + '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema @@ -8668,7 +8752,7 @@ snapshots: h3: 1.12.0 local-pkg: 0.5.0 magic-string: 0.30.10 - nitropack: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + nitropack: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) node-fetch-native: 1.6.4 ofetch: 1.3.4 pathe: 1.1.2 @@ -8678,9 +8762,9 @@ snapshots: std-env: 3.7.0 ufo: 1.5.3 unenv: 1.9.0 - unplugin: 1.10.1 + unplugin: 1.10.2 vite: 5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) - vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) + vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) vue: 3.4.30(typescript@5.5.2) vue-router: 4.4.0(vue@3.4.30(typescript@5.5.2)) optionalDependencies: @@ -8741,6 +8825,76 @@ snapshots: '@one-ini/wasm@0.1.1': {} + '@opentelemetry/api-logs@0.50.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/core@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.23.0 + + '@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.25.1 + + '@opentelemetry/otlp-transformer@0.50.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.50.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.50.0(@opentelemetry/api-logs@0.50.0)(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/resources@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.23.0 + + '@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + + '@opentelemetry/sdk-logs@0.50.0(@opentelemetry/api-logs@0.50.0)(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.50.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + lodash.merge: 4.6.2 + + '@opentelemetry/sdk-trace-base@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.23.0 + + '@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + + '@opentelemetry/semantic-conventions@1.23.0': {} + + '@opentelemetry/semantic-conventions@1.25.1': {} + '@parcel/watcher-android-arm64@2.4.1': optional: true @@ -9700,13 +9854,13 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - unplugin: 1.10.1 + unplugin: 1.10.2 webpack: 5.92.1(esbuild@0.21.5) webpack-sources: 3.2.3 transitivePeerDependencies: - rollup - '@vercel/nft@0.26.4(encoding@0.1.13)': + '@vercel/nft@0.26.5(encoding@0.1.13)': dependencies: '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) '@rollup/pluginutils': 4.2.1 @@ -9734,7 +9888,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.4(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2))': + '@vitejs/plugin-vue@5.0.5(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.30(typescript@5.5.2))': dependencies: vite: 5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) vue: 3.4.30(typescript@5.5.2) @@ -9911,7 +10065,7 @@ snapshots: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 '@vue/compiler-dom': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/shared': 3.4.31 computeds: 0.0.1 minimatch: 9.0.4 muggle-string: 0.3.1 @@ -9924,7 +10078,7 @@ snapshots: dependencies: '@volar/language-core': 2.3.3 '@vue/compiler-dom': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/shared': 3.4.31 computeds: 0.0.1 minimatch: 9.0.4 muggle-string: 0.4.1 @@ -9957,6 +10111,8 @@ snapshots: '@vue/shared@3.4.30': {} + '@vue/shared@3.4.31': {} + '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.14.9 @@ -10656,7 +10812,7 @@ snapshots: postcss: 8.4.38 postcss-media-query-parser: 0.2.3 - croner@8.0.1: {} + croner@8.0.2: {} cronstrue@2.50.0: {} @@ -11940,7 +12096,7 @@ snapshots: has: 1.0.4 side-channel: 1.0.4 - ioredis@5.3.2: + ioredis@5.4.1: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 @@ -12782,7 +12938,7 @@ snapshots: mime@3.0.0: {} - mime@4.0.1: {} + mime@4.0.3: {} mimic-fn@2.1.0: {} @@ -12912,10 +13068,10 @@ snapshots: neo-async@2.6.2: {} - nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4): + nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4): dependencies: - '@cloudflare/kv-asset-handler': 0.3.1 - '@netlify/functions': 2.6.0 + '@cloudflare/kv-asset-handler': 0.3.3 + '@netlify/functions': 2.7.0(@opentelemetry/api@1.9.0) '@rollup/plugin-alias': 5.1.0(rollup@4.18.0) '@rollup/plugin-commonjs': 25.0.7(rollup@4.18.0) '@rollup/plugin-inject': 5.0.5(rollup@4.18.0) @@ -12925,7 +13081,7 @@ snapshots: '@rollup/plugin-terser': 0.4.4(rollup@4.18.0) '@rollup/pluginutils': 5.1.0(rollup@4.18.0) '@types/http-proxy': 1.17.14 - '@vercel/nft': 0.26.4(encoding@0.1.13) + '@vercel/nft': 0.26.5(encoding@0.1.13) archiver: 7.0.1 c12: 1.11.1(magicast@0.3.4) chalk: 5.3.0 @@ -12933,7 +13089,7 @@ snapshots: citty: 0.1.6 consola: 3.2.3 cookie-es: 1.1.0 - croner: 8.0.1 + croner: 8.0.2 crossws: 0.2.4 db0: 0.1.4 defu: 6.1.4 @@ -12948,20 +13104,20 @@ snapshots: h3: 1.12.0 hookable: 5.5.3 httpxy: 0.1.5 - ioredis: 5.3.2 + ioredis: 5.4.1 is-primitive: 3.0.1 jiti: 1.21.6 klona: 2.0.6 knitwork: 1.1.0 listhen: 1.7.2 magic-string: 0.30.10 - mime: 4.0.1 + mime: 4.0.3 mlly: 1.7.1 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 ohash: 1.1.3 - openapi-typescript: 6.7.5 + openapi-typescript: 6.7.6 pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.1.1 @@ -12971,7 +13127,7 @@ snapshots: rollup-plugin-visualizer: 5.12.0(rollup@4.18.0) scule: 1.3.0 semver: 7.6.2 - serve-placeholder: 2.0.1 + serve-placeholder: 2.0.2 serve-static: 1.15.0 std-env: 3.7.0 ufo: 1.5.3 @@ -12979,7 +13135,7 @@ snapshots: unctx: 2.3.1 unenv: 1.9.0 unimport: 3.7.2(rollup@4.18.0) - unstorage: 1.10.2(ioredis@5.3.2) + unstorage: 1.10.2(ioredis@5.4.1) unwasm: 0.3.9 transitivePeerDependencies: - '@azure/app-configuration' @@ -12991,6 +13147,7 @@ snapshots: - '@capacitor/preferences' - '@libsql/client' - '@netlify/blobs' + - '@opentelemetry/api' - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' @@ -13230,13 +13387,13 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 2.2.0 - openapi-typescript@6.7.5: + openapi-typescript@6.7.6: dependencies: ansi-colors: 4.1.3 fast-glob: 3.3.2 js-yaml: 4.1.0 supports-color: 9.4.0 - undici: 5.28.3 + undici: 5.28.4 yargs-parser: 21.1.1 opener@1.5.2: {} @@ -14102,7 +14259,7 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-placeholder@2.0.1: + serve-placeholder@2.0.2: dependencies: defu: 6.1.4 @@ -14576,11 +14733,11 @@ snapshots: acorn: 8.12.0 estree-walker: 3.0.3 magic-string: 0.30.10 - unplugin: 1.10.1 + unplugin: 1.10.2 undici-types@5.26.5: {} - undici@5.28.3: + undici@5.28.4: dependencies: '@fastify/busboy': 2.0.0 @@ -14627,7 +14784,7 @@ snapshots: pkg-types: 1.1.1 scule: 1.3.0 strip-literal: 2.1.0 - unplugin: 1.10.1 + unplugin: 1.10.2 transitivePeerDependencies: - rollup @@ -14740,7 +14897,7 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 scule: 1.3.0 - unplugin: 1.10.1 + unplugin: 1.10.2 yaml: 2.4.5 optionalDependencies: vue-router: 4.4.0(vue@3.4.30(typescript@5.5.2)) @@ -14748,14 +14905,14 @@ snapshots: - rollup - vue - unplugin@1.10.1: + unplugin@1.10.2: dependencies: acorn: 8.12.0 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.2 - unstorage@1.10.2(ioredis@5.3.2): + unstorage@1.10.2(ioredis@5.4.1): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 @@ -14768,7 +14925,7 @@ snapshots: ofetch: 1.3.4 ufo: 1.5.3 optionalDependencies: - ioredis: 5.3.2 + ioredis: 5.4.1 transitivePeerDependencies: - uWebSockets.js @@ -14799,7 +14956,7 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 pkg-types: 1.1.1 - unplugin: 1.10.1 + unplugin: 1.10.2 update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: @@ -14948,9 +15105,9 @@ snapshots: sass: 1.69.4 terser: 5.27.0 - vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)): + vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)): dependencies: - '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) + '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.30)(vue@3.4.30(typescript@5.5.2)))(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.0)(vite@5.3.1(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' diff --git a/renovate.json b/renovate.json index fb67a0cddc..662845b7b1 100644 --- a/renovate.json +++ b/renovate.json @@ -27,7 +27,6 @@ "3.x" ], "ignoreDeps": [ - "@vitejs/plugin-vue", "nitro", "h3", "nuxt", diff --git a/test/basic.test.ts b/test/basic.test.ts index b1369805f1..1a14db61de 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -22,9 +22,17 @@ await setup({ browser: true, setupTimeout: (isWindows ? 360 : 120) * 1000, nuxtConfig: { + hooks: { + 'modules:done' () { + // TODO: investigate whether to upstream a fix to vite-plugin-vue or nuxt/test-utils + // Vite reads its `isProduction` value from NODE_ENV and passes this to some plugins + // like vite-plugin-vue + if (process.env.TEST_ENV !== 'dev') { + process.env.NODE_ENV = 'production' + } + }, + }, builder: isWebpack ? 'webpack' : 'vite', - buildDir: process.env.NITRO_BUILD_DIR, - nitro: { output: { dir: process.env.NITRO_OUTPUT_DIR } }, }, }) diff --git a/test/bundle.test.ts b/test/bundle.test.ts index 4b8fa7990d..ad30228ff7 100644 --- a/test/bundle.test.ts +++ b/test/bundle.test.ts @@ -32,7 +32,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverDir = join(rootDir, '.output/server') const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) - expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"210k"`) + expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"205k"`) const modules = await analyzeSizes('node_modules/**/*', serverDir) expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"1341k"`) @@ -72,7 +72,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverDir = join(rootDir, '.output-inline/server') const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) - expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"532k"`) + expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"527k"`) const modules = await analyzeSizes('node_modules/**/*', serverDir) expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"76.2k"`)