diff --git a/package.json b/package.json index 8c2ff01299..b74991f310 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@eslint/js": "9.3.0", "@nuxt/eslint-config": "0.3.13", "@nuxt/kit": "workspace:*", - "@nuxt/test-utils": "3.12.1", + "@nuxt/test-utils": "3.13.1", "@nuxt/webpack-builder": "workspace:*", "@testing-library/vue": "8.1.0", "@types/eslint__js": "8.42.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb52a3bb36..32b3662e20 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: workspace:* version: link:packages/kit '@nuxt/test-utils': - specifier: 3.12.1 - version: 3.12.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + specifier: 3.13.1 + version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) '@nuxt/webpack-builder': specifier: workspace:* version: link:packages/webpack @@ -142,7 +142,7 @@ importers: version: 1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(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.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -251,7 +251,7 @@ importers: version: 2.0.2 '@nuxt/devtools': specifier: ^1.3.1 - version: 1.3.1(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.17.2)(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 1.3.1(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.17.2)(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@nuxt/kit': specifier: workspace:* version: link:../kit @@ -266,7 +266,7 @@ importers: version: link:../vite '@types/node': specifier: ^14.18.0 || >=16.10.0 - version: 20.12.10 + version: 20.12.12 '@unhead/dom': specifier: ^1.9.10 version: 1.9.10 @@ -432,16 +432,16 @@ importers: version: 11.0.4 '@vitejs/plugin-vue': specifier: 5.0.4 - version: 5.0.4(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 5.0.4(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) unbuild: specifier: latest version: 2.0.0(sass@1.69.4)(typescript@5.4.5) vite: specifier: 5.2.11 - version: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) + version: 5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.12.10)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0) packages/schema: dependencies: @@ -1741,10 +1741,6 @@ packages: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@3.0.2': - resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1959,20 +1955,21 @@ packages: resolution: {integrity: sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==} hasBin: true - '@nuxt/test-utils@3.12.1': - resolution: {integrity: sha512-VRLNcDz9Ad/4pjHdNRVLPs5DVIO5IJ0ij81PLmsE/lt+5oeeIQld+AgHgcqM4BM1YKsXTBuavbk1mEBqj7h/+A==} - engines: {node: ^14.18.0 || >=16.10.0} + '@nuxt/test-utils@3.13.1': + resolution: {integrity: sha512-rqNnjArhFUU8qMHtpEZzjfF6fGTzeXxZsreNLUy9X5AoUuS37HgnobNJIirTrA0xzlzitKVm/mB9r4gXZGzWdQ==} + engines: {node: '>=18.20.2'} peerDependencies: '@cucumber/cucumber': ^10.3.1 '@jest/globals': ^29.5.0 - '@playwright/test': ^1.42.1 + '@playwright/test': ^1.43.1 '@testing-library/vue': ^7.0.0 || ^8.0.1 '@vitest/ui': ^0.34.6 || ^1.0.0 '@vue/test-utils': ^2.4.2 h3: '*' happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0 - playwright-core: ^1.34.3 + nitropack: '*' + playwright-core: ^1.43.1 vite: 5.2.11 vitest: ^0.34.6 || ^1.0.0 vue: 3.4.27 @@ -2443,9 +2440,6 @@ packages: '@types/node-sass@4.11.6': resolution: {integrity: sha512-Qkf5Fs9zzsXchenUY7oVdIHyv8FtPgqIXqOJzhh3FDqpYjqvc/gtZ3hlZVFmKQhl7wyI4+WkRbYufYC5pfY7iw==} - '@types/node@20.12.10': - resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} - '@types/node@20.12.12': resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} @@ -2531,14 +2525,6 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.7.1': - resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@7.8.0': - resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@7.9.0': resolution: {integrity: sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -2553,36 +2539,10 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.7.1': - resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@7.8.0': - resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@7.9.0': resolution: {integrity: sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.7.1': - resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.8.0': - resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@7.9.0': resolution: {integrity: sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -2592,32 +2552,12 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.7.1': - resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/utils@7.8.0': - resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - '@typescript-eslint/utils@7.9.0': resolution: {integrity: sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.7.1': - resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@7.8.0': - resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@7.9.0': resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5514,10 +5454,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7716,7 +7652,7 @@ snapshots: dependencies: '@types/eslint': 8.56.10 '@types/estree': 1.0.5 - '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/types': 7.9.0 comment-parser: 1.4.1 esquery: 1.5.0 jsdoc-type-pratt-parser: 4.0.0 @@ -8001,20 +7937,6 @@ snapshots: '@eslint-community/regexpp@4.10.0': {} - '@eslint/eslintrc@3.0.2': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 10.0.1 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 @@ -8249,13 +8171,13 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.3.1(nuxt@packages+nuxt)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))': + '@nuxt/devtools-kit@1.3.1(nuxt@packages+nuxt)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema execa: 7.2.0 nuxt: link:packages/nuxt - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) + vite: 5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) '@nuxt/devtools-wizard@1.3.1': dependencies: @@ -8270,14 +8192,14 @@ snapshots: rc9: 2.1.2 semver: 7.6.2 - '@nuxt/devtools@1.3.1(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.17.2)(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@nuxt/devtools@1.3.1(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.17.2)(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: '@antfu/utils': 0.7.8 - '@nuxt/devtools-kit': 1.3.1(nuxt@packages+nuxt)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-kit': 1.3.1(nuxt@packages+nuxt)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)) '@nuxt/devtools-wizard': 1.3.1 '@nuxt/kit': link:packages/kit - '@vue/devtools-applet': 7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) - '@vue/devtools-core': 7.1.3(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-applet': 7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-core': 7.1.3(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) birpc: 0.2.17 consola: 3.2.3 @@ -8307,9 +8229,9 @@ snapshots: simple-git: 3.24.0 sirv: 2.0.4 unimport: 3.7.1(rollup@4.17.2) - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - vite-plugin-inspect: 0.8.4(@nuxt/kit@packages+kit)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) - vite-plugin-vue-inspector: 5.1.0(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + vite: 5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) + vite-plugin-inspect: 0.8.4(@nuxt/kit@packages+kit)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)) + vite-plugin-vue-inspector: 5.1.0(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)) which: 3.0.1 ws: 8.17.0 transitivePeerDependencies: @@ -8396,7 +8318,7 @@ snapshots: rc9: 2.1.2 std-env: 3.7.0 - '@nuxt/test-utils@3.12.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5))': + '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema @@ -8411,6 +8333,7 @@ snapshots: h3: 1.11.1 local-pkg: 0.5.0 magic-string: 0.30.10 + nitropack: 2.9.6(encoding@0.1.13) node-fetch-native: 1.6.4 ofetch: 1.3.4 pathe: 1.1.2 @@ -8422,7 +8345,7 @@ snapshots: unenv: 1.9.0 unplugin: 1.10.1 vite: 5.2.11(@types/node@20.12.12)(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.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) vue: 3.4.27(typescript@5.4.5) vue-router: 4.3.2(vue@3.4.27(typescript@5.4.5)) optionalDependencies: @@ -8753,7 +8676,7 @@ snapshots: '@stylistic/eslint-plugin-plus@2.1.0(eslint@9.3.0)(typescript@5.4.5)': dependencies: '@types/eslint': 8.56.10 - '@typescript-eslint/utils': 7.8.0(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) eslint: 9.3.0 transitivePeerDependencies: - supports-color @@ -8763,7 +8686,7 @@ snapshots: dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.3.0) '@types/eslint': 8.56.10 - '@typescript-eslint/utils': 7.8.0(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) eslint: 9.3.0 transitivePeerDependencies: - supports-color @@ -8850,7 +8773,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.2 - '@types/node': 20.12.10 + '@types/node': 20.12.12 '@types/hash-sum@1.0.2': {} @@ -8900,10 +8823,6 @@ snapshots: dependencies: '@types/node': 20.12.12 - '@types/node@20.12.10': - dependencies: - undici-types: 5.26.5 - '@types/node@20.12.12': dependencies: undici-types: 5.26.5 @@ -8920,7 +8839,7 @@ snapshots: '@types/sass-loader@8.0.8': dependencies: - '@types/node': 20.12.10 + '@types/node': 20.12.12 '@types/node-sass': 4.11.6 '@types/webpack': 4.41.34 sass: 1.69.4 @@ -8943,7 +8862,7 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0': dependencies: - '@types/node': 20.12.10 + '@types/node': 20.12.12 tapable: 2.2.1 webpack: 5.91.0 transitivePeerDependencies: @@ -9019,16 +8938,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.7.1': - dependencies: - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/visitor-keys': 7.7.1 - - '@typescript-eslint/scope-manager@7.8.0': - dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 - '@typescript-eslint/scope-manager@7.9.0': dependencies: '@typescript-eslint/types': 7.9.0 @@ -9046,42 +8955,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.7.1': {} - - '@typescript-eslint/types@7.8.0': {} - '@typescript-eslint/types@7.9.0': {} - '@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5)': - dependencies: - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)': - dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.9.0 @@ -9097,34 +8972,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.7.1(eslint@9.3.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) - eslint: 9.3.0 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.8.0(eslint@9.3.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - eslint: 9.3.0 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/utils@7.9.0(eslint@9.3.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) @@ -9136,16 +8983,6 @@ snapshots: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.7.1': - dependencies: - '@typescript-eslint/types': 7.7.1 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@7.8.0': - dependencies: - '@typescript-eslint/types': 7.8.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.9.0': dependencies: '@typescript-eslint/types': 7.9.0 @@ -9186,16 +9023,6 @@ snapshots: unhead: 1.9.10 vue: 3.4.27(typescript@5.4.5) - '@unocss/astro@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))': - dependencies: - '@unocss/core': 0.60.2 - '@unocss/reset': 0.60.2 - '@unocss/vite': 0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) - optionalDependencies: - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - rollup - '@unocss/astro@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))': dependencies: '@unocss/core': 0.60.2 @@ -9333,22 +9160,6 @@ snapshots: dependencies: '@unocss/core': 0.60.2 - '@unocss/vite@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - '@unocss/config': 0.60.2 - '@unocss/core': 0.60.2 - '@unocss/inspector': 0.60.2 - '@unocss/scope': 0.60.2 - '@unocss/transformer-directives': 0.60.2 - chokidar: 3.6.0 - fast-glob: 3.3.2 - magic-string: 0.30.10 - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - rollup - '@unocss/vite@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 @@ -9393,11 +9204,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': - dependencies: - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - vue: 3.4.27(typescript@5.4.5) - '@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: vite: 5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) @@ -9563,12 +9369,12 @@ snapshots: '@vue/devtools-api@6.5.1': {} - '@vue/devtools-applet@7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-applet@7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)))(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: - '@vue/devtools-core': 7.1.3(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-core': 7.1.3(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-shared': 7.1.3 - '@vue/devtools-ui': 7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-ui': 7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5)) lodash-es: 4.17.21 perfect-debounce: 1.0.0 shiki: 1.3.0 @@ -9593,14 +9399,14 @@ snapshots: - unocss - vite - '@vue/devtools-core@7.1.3(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-core@7.1.3(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': dependencies: '@vue/devtools-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) '@vue/devtools-shared': 7.1.3 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + vite-hot-client: 0.2.3(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - vite - vue @@ -9618,7 +9424,7 @@ snapshots: dependencies: rfdc: 1.3.1 - '@vue/devtools-ui@7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-ui@7.1.3(@unocss/reset@0.60.2)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5))': dependencies: '@unocss/reset': 0.60.2 '@vue/devtools-shared': 7.1.3 @@ -9628,7 +9434,7 @@ snapshots: colord: 2.9.3 floating-vue: 5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)) focus-trap: 7.5.4 - unocss: 0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + unocss: 0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)) vue: 3.4.27(typescript@5.4.5) transitivePeerDependencies: - '@vue/composition-api' @@ -10849,7 +10655,7 @@ snapshots: eslint-plugin-import-x@0.5.0(eslint@9.3.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 7.8.0(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) debug: 4.3.4 doctrine: 3.0.0 eslint: 9.3.0 @@ -10881,7 +10687,7 @@ snapshots: eslint-plugin-perfectionist@2.10.0(eslint@9.3.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.3.0)): dependencies: - '@typescript-eslint/utils': 7.7.1(eslint@9.3.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.4.5) eslint: 9.3.0 minimatch: 9.0.4 natural-compare-lite: 1.4.0 @@ -10906,7 +10712,7 @@ snapshots: dependencies: '@babel/helper-validator-identifier': 7.24.5 '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) - '@eslint/eslintrc': 3.0.2 + '@eslint/eslintrc': 3.1.0 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 @@ -11072,7 +10878,7 @@ snapshots: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -12824,10 +12630,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.1.0: - dependencies: - path-key: 4.0.0 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -12859,7 +12661,7 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.0 remark-parse: 11.0.0 - shiki: 1.1.6 + shiki: 1.3.0 twoslash: 0.2.4(typescript@5.4.5) typescript: 5.4.5 unified: 11.0.4 @@ -14358,35 +14160,6 @@ snapshots: universalify@2.0.0: {} - unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)): - dependencies: - '@unocss/astro': 0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) - '@unocss/cli': 0.60.2(rollup@4.17.2) - '@unocss/core': 0.60.2 - '@unocss/extractor-arbitrary-variants': 0.60.2 - '@unocss/postcss': 0.60.2(postcss@8.4.38) - '@unocss/preset-attributify': 0.60.2 - '@unocss/preset-icons': 0.60.2 - '@unocss/preset-mini': 0.60.2 - '@unocss/preset-tagify': 0.60.2 - '@unocss/preset-typography': 0.60.2 - '@unocss/preset-uno': 0.60.2 - '@unocss/preset-web-fonts': 0.60.2 - '@unocss/preset-wind': 0.60.2 - '@unocss/reset': 0.60.2 - '@unocss/transformer-attributify-jsx': 0.60.2 - '@unocss/transformer-attributify-jsx-babel': 0.60.2 - '@unocss/transformer-compile-class': 0.60.2 - '@unocss/transformer-directives': 0.60.2 - '@unocss/transformer-variant-group': 0.60.2 - '@unocss/vite': 0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) - optionalDependencies: - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - postcss - - rollup - - supports-color - unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)): dependencies: '@unocss/astro': 0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)) @@ -14542,9 +14315,9 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)): + vite-hot-client@0.2.3(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)): dependencies: - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) + vite: 5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) vite-node@1.5.3(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0): dependencies: @@ -14563,23 +14336,6 @@ snapshots: - supports-color - terser - vite-node@1.6.0(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - vite-node@1.6.0(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0): dependencies: cac: 6.7.14 @@ -14621,7 +14377,7 @@ snapshots: typescript: 5.4.5 vue-tsc: 2.0.19(typescript@5.4.5) - vite-plugin-inspect@0.8.4(@nuxt/kit@packages+kit)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-inspect@0.8.4(@nuxt/kit@packages+kit)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)): dependencies: '@antfu/utils': 0.7.8 '@rollup/pluginutils': 5.1.0(rollup@4.17.2) @@ -14632,14 +14388,14 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) + vite: 5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) optionalDependencies: '@nuxt/kit': link:packages/kit transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-inspector@5.1.0(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-vue-inspector@5.1.0(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0)): dependencies: '@babel/core': 7.24.5 '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.24.5) @@ -14650,21 +14406,10 @@ snapshots: '@vue/compiler-dom': 3.4.27 kolorist: 1.8.0 magic-string: 0.30.10 - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) + vite: 5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - supports-color - vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0): - dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.17.2 - optionalDependencies: - '@types/node': 20.12.10 - fsevents: 2.3.3 - sass: 1.69.4 - terser: 5.27.0 - vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0): dependencies: esbuild: 0.20.2 @@ -14676,9 +14421,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.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)): + vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)): dependencies: - '@nuxt/test-utils': 3.12.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) + '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.11.0)(nitropack@2.9.6(encoding@0.1.13))(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.2(vue@3.4.27(typescript@5.4.5)))(vue@3.4.27(typescript@5.4.5)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -14689,6 +14434,7 @@ snapshots: - h3 - happy-dom - jsdom + - nitropack - playwright-core - vite - vitest @@ -14729,40 +14475,6 @@ snapshots: - supports-color - terser - vitest@1.6.0(@types/node@20.12.10)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0): - dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.3.10 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.5.1 - tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - vite-node: 1.6.0(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.12.10 - happy-dom: 14.11.0 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.11.0)(sass@1.69.4)(terser@5.27.0): dependencies: '@vitest/expect': 1.6.0 diff --git a/test/basic.test.ts b/test/basic.test.ts index f2882135ad..7d0b11552a 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -30,22 +30,22 @@ await setup({ describe('server api', () => { it('should serialize', async () => { - expect(await $fetch('/api/hello')).toBe('Hello API') - expect(await $fetch('/api/hey')).toEqual({ + expect(await $fetch('/api/hello')).toBe('Hello API') + expect(await $fetch('/api/hey')).toEqual({ foo: 'bar', baz: 'qux', }) }) it('should preserve states', async () => { - expect(await $fetch('/api/counter')).toEqual({ count: 0 }) - expect(await $fetch('/api/counter')).toEqual({ count: 1 }) - expect(await $fetch('/api/counter')).toEqual({ count: 2 }) - expect(await $fetch('/api/counter')).toEqual({ count: 3 }) + expect(await $fetch('/api/counter')).toEqual({ count: 0 }) + expect(await $fetch('/api/counter')).toEqual({ count: 1 }) + expect(await $fetch('/api/counter')).toEqual({ count: 2 }) + expect(await $fetch('/api/counter')).toEqual({ count: 3 }) }) it('should auto-import', async () => { - const res = await $fetch('/api/auto-imports') + const res = await $fetch('/api/auto-imports') expect(res).toMatchInlineSnapshot(` { "autoImported": "utils", @@ -58,7 +58,7 @@ describe('server api', () => { describe('route rules', () => { it('should enable spa mode', async () => { - const headHtml = await $fetch('/route-rules/spa') + const headHtml = await $fetch('/route-rules/spa') // SPA should render appHead tags expect(headHtml).toContain('') @@ -74,7 +74,7 @@ describe('route rules', () => { }) it('should not render loading template in spa mode if it is not enabled', async () => { - const html = await $fetch('/route-rules/spa') + const html = await $fetch('/route-rules/spa') expect(html).toContain('
') }) @@ -85,26 +85,26 @@ describe('route rules', () => { }) it('test noScript routeRules', async () => { - const html = await $fetch('/no-scripts') + const html = await $fetch('/no-scripts') expect(html).not.toContain(' { - const html = await $fetch('/route-rules/middleware') + const html = await $fetch('/route-rules/middleware') expect(html).toContain('Hello from routeRules!') }) }) describe('modules', () => { it('should auto-register modules in ~/modules', async () => { - const result = await $fetch('/auto-registered-module') + const result = await $fetch('/auto-registered-module') expect(result).toEqual('handler added by auto-registered module') }) }) describe('pages', () => { it('render index', async () => { - const html = await $fetch('/') + const html = await $fetch('/') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -137,7 +137,7 @@ describe('pages', () => { // TODO: support jsx with webpack it.runIf(!isWebpack)('supports jsx', async () => { - const html = await $fetch('/jsx') + const html = await $fetch('/jsx') // should import JSX/TSX components with custom elements expect(html).toContain('TSX component') @@ -146,7 +146,7 @@ describe('pages', () => { }) it('respects aliases in page metadata', async () => { - const html = await $fetch('/some-alias') + const html = await $fetch('/some-alias') expect(html).toContain('Hello Nuxt 3!') }) @@ -156,7 +156,7 @@ describe('pages', () => { }) it('allows routes to be added dynamically', async () => { - const html = await $fetch('/add-route-test') + const html = await $fetch('/add-route-test') expect(html).toContain('Hello Nuxt 3!') }) @@ -218,7 +218,7 @@ describe('pages', () => { }) it('preserves query', async () => { - const html = await $fetch('/?test=true') + const html = await $fetch('/?test=true') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -230,7 +230,7 @@ describe('pages', () => { }) it('/nested/[foo]/[bar].vue', async () => { - const html = await $fetch('/nested/one/two') + const html = await $fetch('/nested/one/two') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -241,10 +241,10 @@ describe('pages', () => { }) it('/nested/[foo]/index.vue', async () => { - const html = await $fetch('/nested/foobar') + const html = await $fetch('/nested/foobar') // TODO: should resolved to same entry - // const html2 = await $fetch('/nested/foobar/index') + // const html2 = await $fetch('/nested/foobar/index') // expect(html).toEqual(html2) // Snapshot @@ -257,7 +257,7 @@ describe('pages', () => { }) it('/nested/[foo]/user-[group].vue', async () => { - const html = await $fetch('/nested/foobar/user-admin') + const html = await $fetch('/nested/foobar/user-admin') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -270,14 +270,14 @@ describe('pages', () => { }) it('/parent', async () => { - const html = await $fetch('/parent') + const html = await $fetch('/parent') expect(html).toContain('parent/index') await expectNoClientErrors('/parent') }) it('/another-parent', async () => { - const html = await $fetch('/another-parent') + const html = await $fetch('/another-parent') expect(html).toContain('another-parent/index') await expectNoClientErrors('/another-parent') @@ -302,7 +302,7 @@ describe('pages', () => { }) it('/client-only-components', async () => { - const html = await $fetch('/client-only-components') + const html = await $fetch('/client-only-components') // ensure fallbacks with classes and arbitrary attributes are rendered expect(html).toContain('
') expect(html).toContain('
') @@ -407,7 +407,7 @@ describe('pages', () => { }) it('/client-only-explicit-import', async () => { - const html = await $fetch('/client-only-explicit-import') + const html = await $fetch('/client-only-explicit-import') // ensure fallbacks with classes and arbitrary attributes are rendered expect(html).toContain('
') @@ -439,7 +439,7 @@ describe('pages', () => { 'clientfallback-stateful', 'clientfallback-async-setup', ] - const html = await $fetch('/client-fallback') + const html = await $fetch('/client-fallback') // ensure failed components are not rendered server-side expect(html).not.toContain('This breaks in server-side setup.') classes.forEach(c => expect(html).not.toContain(c)) @@ -546,7 +546,7 @@ describe('pages', () => { describe('nuxt composables', () => { it('has useRequestURL()', async () => { - const html = await $fetch('/url') + const html = await $fetch('/url') expect(html).toContain('path: /url') }) it('sets cookies correctly', async () => { @@ -586,7 +586,7 @@ describe('nuxt composables', () => { }) it('supports onPrehydrate', async () => { - const html = await $fetch('/composables/on-prehydrate') as string + const html = await $fetch('/composables/on-prehydrate') as string /** * Should look something like this: * @@ -670,7 +670,7 @@ describe('nuxt composables', () => { describe('rich payloads', () => { it('correctly serializes and revivifies complex types', async () => { - const html = await $fetch('/json-payload') + const html = await $fetch('/json-payload') for (const test of [ 'Date: true', 'BigInt: true', @@ -690,7 +690,7 @@ describe('rich payloads', () => { describe('nuxt links', () => { it('handles trailing slashes', async () => { - const html = await $fetch('/nuxt-link/trailing-slash') + const html = await $fetch('/nuxt-link/trailing-slash') const data: Record = {} for (const selector of ['nuxt-link', 'router-link', 'link-with-trailing-slash', 'link-without-trailing-slash']) { data[selector] = [] @@ -808,7 +808,7 @@ describe('nuxt links', () => { }) it('useLink works', async () => { - const html = await $fetch('/nuxt-link/use-link') + const html = await $fetch('/nuxt-link/use-link') expect(html).toContain('
useLink in NuxtLink: true
') expect(html).toContain('
route using useLink: /nuxt-link/trailing-slash
') expect(html).toContain('
href using useLink: /nuxt-link/trailing-slash
') @@ -847,21 +847,21 @@ describe('nuxt links', () => { describe('head tags', () => { it('SSR should render tags', async () => { - const headHtml = await $fetch('/head') + const headHtml = await $fetch('/head') expect(headHtml).toContain('Using a dynamic component - Title Template Fn Change') expect(headHtml).not.toContain('') expect(headHtml).toContain('') - expect(headHtml.match('meta charset').length).toEqual(1) + expect(headHtml.match('meta charset')!.length).toEqual(1) expect(headHtml).toContain('') - expect(headHtml.match('meta name="viewport"').length).toEqual(1) + expect(headHtml.match('meta name="viewport"')!.length).toEqual(1) expect(headHtml).not.toContain('') expect(headHtml).toContain('') expect(headHtml).toMatch(/]*class="html-attrs-test"/) expect(headHtml).toMatch(/]*class="body-attrs-test"/) expect(headHtml).toContain('') - const indexHtml = await $fetch('/') + const indexHtml = await $fetch('/') // should render charset by default expect(indexHtml).toContain('') // should render components @@ -869,7 +869,7 @@ describe('head tags', () => { }) it('SSR script setup should render tags', async () => { - const headHtml = await $fetch('/head-script-setup') + const headHtml = await $fetch('/head-script-setup') // useHead - title & titleTemplate are working expect(headHtml).toContain('head script setup - Nuxt Playground') @@ -885,7 +885,7 @@ describe('head tags', () => { }) it.skipIf(isV4)('SPA should render appHead tags', async () => { - const headHtml = await $fetch('/head', { headers: { 'x-nuxt-no-ssr': '1' } }) + const headHtml = await $fetch('/head', { headers: { 'x-nuxt-no-ssr': '1' } }) expect(headHtml).toContain('') expect(headHtml).toContain('') @@ -893,26 +893,26 @@ describe('head tags', () => { }) it.skipIf(isV4)('legacy vueuse/head works', async () => { - const headHtml = await $fetch('/vueuse-head') + const headHtml = await $fetch('/vueuse-head') expect(headHtml).toContain('using provides usehead and updateDOM - VueUse head polyfill test') }) it('should render http-equiv correctly', async () => { - const html = await $fetch('/head') + const html = await $fetch('/head') // http-equiv should be rendered kebab case expect(html).toContain('') }) // TODO: Doesn't adds header in test environment // it.todo('should render stylesheet link tag (SPA mode)', async () => { - // const html = await $fetch('/head', { headers: { 'x-nuxt-no-ssr': '1' } }) + // const html = await $fetch('/head', { headers: { 'x-nuxt-no-ssr': '1' } }) // expect(html).toMatch(/ { it('should work with defineNuxtComponent', async () => { - const html = await $fetch('/legacy/async-data') + const html = await $fetch('/legacy/async-data') expect(html).toContain('
Hello API
') expect(html).toContain('
fooChild
') expect(html).toContain('
fooParent
') @@ -978,12 +978,12 @@ describe('preserves current instance', () => { // TODO: it's unclear why there's an error here but it must be an upstream issue it.todo('should not return getCurrentInstance when there\'s an error in data', async () => { await fetch('/instance/error') - const html = await $fetch('/instance/next-request') + const html = await $fetch('/instance/next-request') expect(html).toContain('This should be false: false') }) // TODO: re-enable when https://github.com/nuxt/nuxt/issues/15164 is resolved it.skipIf(isWindows)('should not lose current nuxt app after await in vue component', async () => { - const requests = await Promise.all(Array.from({ length: 100 }).map(() => $fetch('/instance/next-request'))) + const requests = await Promise.all(Array.from({ length: 100 }).map(() => $fetch('/instance/next-request'))) for (const html of requests) { expect(html).toContain('This should be true: true') } @@ -1035,7 +1035,7 @@ describe('errors', () => { }) it('should not recursively throw an error when there is an error rendering the error page', async () => { - const res = await $fetch('/', { + const res = await $fetch('/', { headers: { 'x-test-recurse-error': 'true', 'accept': 'text/html', @@ -1078,7 +1078,7 @@ describe('navigate external', () => { describe('composables', () => { it('`callOnce` should run code once', async () => { - const html = await $fetch('/once') + const html = await $fetch('/once') expect(html).toContain('once.vue') expect(html).toContain('once: 2') @@ -1088,11 +1088,11 @@ describe('composables', () => { }) it('`useId` should generate unique ids', async () => { // TODO: work around interesting Vue bug where async components are loaded in a different order on first import - await $fetch('/use-id') + await $fetch('/use-id') const sanitiseHTML = (html: string) => html.replace(/ data-[^= ]+="[^"]+"/g, '').replace(//, '') - const serverHTML = await $fetch('/use-id').then(html => sanitiseHTML(html.match(//)![0])) + const serverHTML = await $fetch('/use-id').then(html => sanitiseHTML(html.match(//)![0])) const ids = serverHTML.match(/id="[^"]*"/g)?.map(id => id.replace(/id="([^"]*)"/, '$1')) as string[] const renderedForm = [ `

id: ${ids[0]}

`, @@ -1130,7 +1130,7 @@ describe('composables', () => { describe('middlewares', () => { it('should redirect to index with global middleware', async () => { - const html = await $fetch('/redirect/') + const html = await $fetch('/redirect/') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -1148,7 +1148,7 @@ describe('middlewares', () => { }) it('should allow aborting navigation fatally on client-side', async () => { - const html = await $fetch('/middleware-abort') + const html = await $fetch('/middleware-abort') expect(html).not.toContain('This is the error page') const { page } = await renderPage('/middleware-abort') expect(await page.innerHTML('body')).toContain('This is the error page') @@ -1156,7 +1156,7 @@ describe('middlewares', () => { }) it('should inject auth', async () => { - const html = await $fetch('/auth') + const html = await $fetch('/auth') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -1166,7 +1166,7 @@ describe('middlewares', () => { }) it('should not inject auth', async () => { - const html = await $fetch('/no-auth') + const html = await $fetch('/no-auth') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -1185,12 +1185,12 @@ describe('middlewares', () => { describe('plugins', () => { it('basic plugin', async () => { - const html = await $fetch('/plugins') + const html = await $fetch('/plugins') expect(html).toContain('myPlugin: Injected by my-plugin') }) it('async plugin', async () => { - const html = await $fetch('/plugins') + const html = await $fetch('/plugins') expect(html).toContain('asyncPlugin: Async plugin works! 123') expect(html).toContain('useFetch works!') }) @@ -1198,7 +1198,7 @@ describe('plugins', () => { describe('layouts', () => { it('should apply custom layout', async () => { - const html = await $fetch('/with-layout') + const html = await $fetch('/with-layout') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -1207,7 +1207,7 @@ describe('layouts', () => { expect(html).toContain('Custom Layout:') }) it('should work with a dynamically set layout', async () => { - const html = await $fetch('/with-dynamic-layout') + const html = await $fetch('/with-dynamic-layout') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -1217,7 +1217,7 @@ describe('layouts', () => { await expectNoClientErrors('/with-dynamic-layout') }) it('should work with a computed layout', async () => { - const html = await $fetch('/with-computed-layout') + const html = await $fetch('/with-computed-layout') // Snapshot // expect(html).toMatchInlineSnapshot() @@ -1227,7 +1227,7 @@ describe('layouts', () => { await expectNoClientErrors('/with-computed-layout') }) it('should allow passing custom props to a layout', async () => { - const html = await $fetch('/layouts/with-props') + const html = await $fetch('/layouts/with-props') expect(html).toContain('some prop was passed') await expectNoClientErrors('/layouts/with-props') }) @@ -1235,7 +1235,7 @@ describe('layouts', () => { describe('composable tree shaking', () => { it('should work', async () => { - const html = await $fetch('/tree-shake') + const html = await $fetch('/tree-shake') expect(html).toContain('Tree Shake Example') @@ -1251,22 +1251,22 @@ describe('composable tree shaking', () => { describe('ignore list', () => { it('should ignore composable files in .nuxtignore', async () => { - const html = await $fetch('/ignore/composables') + const html = await $fetch('/ignore/composables') expect(html).toContain('was import ignored: true') }) it('should ignore scanned nitro handlers in .nuxtignore', async () => { - const html = await $fetch('/ignore/scanned') + const html = await $fetch('/ignore/scanned') expect(html).not.toContain('this should be ignored') }) it.skipIf(isDev())('should ignore public assets in .nuxtignore', async () => { - const html = await $fetch('/ignore/public-asset') + const html = await $fetch('/ignore/public-asset') expect(html).not.toContain('this should be ignored') }) }) describe('server tree shaking', () => { it('should work', async () => { - const html = await $fetch('/client') + const html = await $fetch('/client') expect(html).toContain('This page should not crash when rendered') expect(html).toContain('fallback for ClientOnly') @@ -1287,13 +1287,13 @@ describe('server tree shaking', () => { describe('extends support', () => { describe('layouts & pages', () => { it('extends foo/layouts/default & foo/pages/index', async () => { - const html = await $fetch('/foo') + const html = await $fetch('/foo') expect(html).toContain('Extended layout from foo') expect(html).toContain('Extended page from foo') }) it('extends [bar/layouts/override & bar/pages/override] over [foo/layouts/override & foo/pages/override]', async () => { - const html = await $fetch('/override') + const html = await $fetch('/override') expect(html).toContain('Extended layout from bar') expect(html).toContain('Extended page from bar') expect(html).toContain('This child page should not be overridden by bar') @@ -1302,62 +1302,62 @@ describe('extends support', () => { describe('components', () => { it('extends foo/components/ExtendsFoo', async () => { - const html = await $fetch('/foo') + const html = await $fetch('/foo') expect(html).toContain('Extended component from foo') }) it('extends bar/components/ExtendsOverride over foo/components/ExtendsOverride', async () => { - const html = await $fetch('/override') + const html = await $fetch('/override') expect(html).toContain('Extended component from bar') }) }) describe('middlewares', () => { it('works with layer aliases', async () => { - const html = await $fetch('/foo') + const html = await $fetch('/foo') expect(html).toContain('from layer alias') }) it('extends foo/middleware/foo', async () => { - const html = await $fetch('/foo') + const html = await $fetch('/foo') expect(html).toContain('Middleware | foo: Injected by extended middleware from foo') }) it('extends bar/middleware/override over foo/middleware/override', async () => { - const html = await $fetch('/override') + const html = await $fetch('/override') expect(html).toContain('Middleware | override: Injected by extended middleware from bar') }) it('global middlewares sorting', async () => { - const html = await $fetch('/middleware/ordering') + const html = await $fetch('/middleware/ordering') expect(html).toContain('catchall at middleware') }) }) describe('composables', () => { it('extends foo/composables/foo', async () => { - const html = await $fetch('/foo') + const html = await $fetch('/foo') expect(html).toContain('Composable | useExtendsFoo: foo') }) it('allows overriding composables', async () => { - const html = await $fetch('/extends') + const html = await $fetch('/extends') expect(html).toContain('test from project') }) }) describe('plugins', () => { it('extends foo/plugins/foo', async () => { - const html = await $fetch('/foo') + const html = await $fetch('/foo') expect(html).toContain('Plugin | foo: String generated from foo plugin!') }) it('respects plugin ordering within layers', async () => { - const html = await $fetch('/plugins/ordering') + const html = await $fetch('/plugins/ordering') expect(html).toContain('catchall at plugins') }) }) describe('server', () => { it('extends foo/server/api/foo', async () => { - expect(await $fetch('/api/foo')).toBe('foo') + expect(await $fetch('/api/foo')).toBe('foo') }) it('extends foo/server/middleware/foo', async () => { @@ -1368,7 +1368,7 @@ describe('extends support', () => { describe('app', () => { it('extends foo/app/router.options & bar/app/router.options', async () => { - const html: string = await $fetch('/') + const html: string = await $fetch('/') const routerLinkClasses = html.match(/href="\/" class="([^"]*)"/)?.[1].split(' ') expect(routerLinkClasses).toContain('foo-active-class') expect(routerLinkClasses).toContain('bar-exact-active-class') @@ -1607,7 +1607,7 @@ describe('layout switching', () => { describe('automatically keyed composables', () => { it('should automatically generate keys', async () => { - const html = await $fetch('/keyed-composables') + const html = await $fetch('/keyed-composables') expect(html).toContain('true') expect(html).not.toContain('false') }) @@ -1616,7 +1616,7 @@ describe('automatically keyed composables', () => { }) it('should not automatically generate keys', async () => { await expectNoClientErrors('/keyed-composables/local') - const html = await $fetch('/keyed-composables/local') + const html = await $fetch('/keyed-composables/local') expect(html).toContain('true') expect(html).not.toContain('false') }) @@ -1624,7 +1624,7 @@ describe('automatically keyed composables', () => { describe.runIf(isDev() && !isWebpack)('css links', () => { it('should not inject links to CSS files that are inlined', async () => { - const html = await $fetch('/inline-only-css') + const html = await $fetch('/inline-only-css') expect(html).toContain('--inline-only') expect(html).not.toContain('inline-only.css') expect(html).toContain('assets/plugin.css') @@ -1648,7 +1648,7 @@ describe.skipIf(isDev() || isWebpack)('inlining component styles', () => { ] it('should inline styles', async () => { - const html = await $fetch('/styles') + const html = await $fetch('/styles') for (const style of inlinedCSS) { expect.soft(html).toContain(style) } @@ -1659,7 +1659,7 @@ describe.skipIf(isDev() || isWebpack)('inlining component styles', () => { '{--plugin:"plugin"}', // CSS imported ambiently in JS/TS '{--global:"global";', // global css from nuxt.config ] - const html = await $fetch('/route-rules/spa') + const html = await $fetch('/route-rules/spa') for (const style of globalCSS) { expect.soft(html).toContain(style) } @@ -1673,11 +1673,11 @@ describe.skipIf(isDev() || isWebpack)('inlining component styles', () => { }) it('should not include inlined CSS in generated CSS file', async () => { - const html: string = await $fetch('/styles') + const html: string = await $fetch('/styles') const cssFiles = new Set([...html.matchAll(/]*href="([^"]*\.css)">/g)].map(m => m[1])) let css = '' for (const file of cssFiles || []) { - css += await $fetch(file) + css += await $fetch(file) } // should not include inlined CSS in generated CSS files @@ -1694,7 +1694,7 @@ describe.skipIf(isDev() || isWebpack)('inlining component styles', () => { }) it('does not load stylesheet for page styles', async () => { - const html: string = await $fetch('/styles') + const html: string = await $fetch('/styles') expect(html.match(/]*href="[^"]*\.css">/g)?.filter(m => m.includes('entry'))?.map(m => m.replace(/\.[^.]*\.css/, '.css'))).toMatchInlineSnapshot(` [ "", @@ -1710,7 +1710,7 @@ describe.skipIf(isDev() || isWebpack)('inlining component styles', () => { }) it.todo('renders client-only styles only', async () => { - const html = await $fetch('/styles') + const html = await $fetch('/styles') expect(html).toContain('{--client-only:"client-only"}') }) }) @@ -1865,7 +1865,7 @@ describe.skipIf(isDev() || isWindows || !isRenderingJson)('prefetching', () => { }) it('should not prefetch certain dynamic imports by default', async () => { - const html = await $fetch('/auth') + const html = await $fetch('/auth') // should not prefetch global components expect(html).not.toMatch(/]*\/_nuxt\/TestGlobal[^>]*\.js"/) // should not prefetch all other pages @@ -1901,7 +1901,7 @@ describe.runIf(isDev() && (!isWindows || !isCI))('detecting invalid root nodes', describe('public directories', () => { it('should directly return public directory paths', async () => { - const html = await $fetch('/assets-custom') + const html = await $fetch('/assets-custom') expect(html).toContain('"/public.svg"') expect(html).toContain('"/custom/file.svg"') }) @@ -1910,7 +1910,7 @@ describe('public directories', () => { // TODO: dynamic paths in dev describe.skipIf(isDev())('dynamic paths', () => { it('should work with no overrides', async () => { - const html: string = await $fetch('/assets') + const html: string = await $fetch('/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { const url = match[2] || match[3] expect(url.startsWith('/_nuxt/') || url === '/public.svg').toBeTruthy() @@ -1919,11 +1919,11 @@ describe.skipIf(isDev())('dynamic paths', () => { // webpack injects CSS differently it.skipIf(isWebpack)('adds relative paths to CSS', async () => { - const html: string = await $fetch('/assets') + const html: string = await $fetch('/assets') const urls = Array.from(html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)).map(m => m[2] || m[3]) const cssURL = urls.find(u => /_nuxt\/assets.*\.css$/.test(u)) expect(cssURL).toBeDefined() - const css: string = await $fetch(cssURL!) + const css: string = await $fetch(cssURL!) const imageUrls = Array.from(css.matchAll(/url\(([^)]*)\)/g)).map(m => m[1].replace(/[-.]\w{8}\./g, '.')) expect(imageUrls).toMatchInlineSnapshot(` [ @@ -1943,7 +1943,7 @@ describe.skipIf(isDev())('dynamic paths', () => { }, }) - const html = await $fetch('/foo/assets') + const html = await $fetch('/foo/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { const url = match[2] || match[3] expect( @@ -1954,7 +1954,7 @@ describe.skipIf(isDev())('dynamic paths', () => { ).toBeTruthy() } - expect(await $fetch('/foo/url')).toContain('path: /foo/url') + expect(await $fetch('/foo/url')).toContain('path: /foo/url') }) it('should allow setting relative baseURL', async () => { @@ -1964,7 +1964,7 @@ describe.skipIf(isDev())('dynamic paths', () => { }, }) - const html = await $fetch('/assets') + const html = await $fetch('/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { const url = match[2] || match[3] expect( @@ -1998,7 +1998,7 @@ describe.skipIf(isDev())('dynamic paths', () => { }, }) - const html = await $fetch('/foo/assets') + const html = await $fetch('/foo/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { const url = match[2] || match[3] expect( @@ -2017,7 +2017,7 @@ describe.skipIf(isDev())('dynamic paths', () => { describe('app config', () => { it('should work', async () => { - const html = await $fetch('/app-config') + const html = await $fetch('/app-config') const expectedAppConfig: Record = { fromNuxtConfig: true, @@ -2030,14 +2030,14 @@ describe('app config', () => { } expect.soft(html).toContain(JSON.stringify(expectedAppConfig)) - const serverAppConfig = await $fetch('/api/app-config') + const serverAppConfig = await $fetch>('/api/app-config') expect(serverAppConfig).toMatchObject({ appConfig: expectedAppConfig }) }) }) describe('component islands', () => { it('renders components with route', async () => { - const result: NuxtIslandResponse = await $fetch('/__nuxt_island/RouteComponent.json?url=/foo') + const result = await $fetch('/__nuxt_island/RouteComponent.json?url=/foo') result.html = result.html.replace(/ data-island-uid="[^"]*"/g, '') if (isDev()) { @@ -2057,7 +2057,7 @@ describe('component islands', () => { }) it('render async component', async () => { - const result: NuxtIslandResponse = await $fetch(withQuery('/__nuxt_island/LongAsyncComponent.json', { + const result = await $fetch(withQuery('/__nuxt_island/LongAsyncComponent.json', { props: JSON.stringify({ count: 3, }), @@ -2115,7 +2115,7 @@ describe('component islands', () => { }) it('render .server async component', async () => { - const result: NuxtIslandResponse = await $fetch(withQuery('/__nuxt_island/AsyncServerComponent.json', { + const result = await $fetch(withQuery('/__nuxt_island/AsyncServerComponent.json', { props: JSON.stringify({ count: 2, }), @@ -2144,7 +2144,7 @@ describe('component islands', () => { if (!isWebpack) { it('render server component with selective client hydration', async () => { - const result: NuxtIslandResponse = await $fetch('/__nuxt_island/ServerWithClient') + const result = await $fetch('/__nuxt_island/ServerWithClient') if (isDev()) { result.head.link = result.head.link.filter(l => !l.href.includes('@nuxt+ui-templates') && (l.href.startsWith('_nuxt/components/islands/') && l.href.includes('_nuxt/components/islands/AsyncServerComponent'))) } @@ -2178,7 +2178,7 @@ describe('component islands', () => { } it('renders pure components', async () => { - const result: NuxtIslandResponse = await $fetch(withQuery('/__nuxt_island/PureComponent.json', { + const result = await $fetch(withQuery('/__nuxt_island/PureComponent.json', { props: JSON.stringify({ bool: false, number: 3487, @@ -2305,17 +2305,17 @@ describe('component islands', () => { describe.runIf(isDev() && !isWebpack)('vite plugins', () => { it('does not override vite plugins', async () => { - expect(await $fetch('/vite-plugin-without-path')).toBe('vite-plugin without path') - expect(await $fetch('/__nuxt-test')).toBe('vite-plugin with __nuxt prefix') + expect(await $fetch('/vite-plugin-without-path')).toBe('vite-plugin without path') + expect(await $fetch('/__nuxt-test')).toBe('vite-plugin with __nuxt prefix') }) it('does not allow direct access to nuxt source folder', async () => { - expect(await $fetch('/app.config')).toContain('catchall at') + expect(await $fetch('/app.config')).toContain('catchall at') }) }) describe.skipIf(isDev() || isWindows || !isRenderingJson)('payload rendering', () => { it('renders a payload', async () => { - const payload = await $fetch('/random/a/_payload.json', { responseType: 'text' }) + const payload = await $fetch('/random/a/_payload.json', { responseType: 'text' }) const data = parsePayload(payload) expect(typeof data.prerenderedAt).toEqual('number') @@ -2370,7 +2370,7 @@ describe.skipIf(isDev() || isWindows || !isRenderingJson)('payload rendering', ( }) it.skipIf(!isRenderingJson)('should not include server-component HTML in payload', async () => { - const payload = await $fetch('/prefetch/server-components/_payload.json', { responseType: 'text' }) + const payload = await $fetch('/prefetch/server-components/_payload.json', { responseType: 'text' }) const entries = Object.entries(parsePayload(payload)) const [key, serializedComponent] = entries.find(([key]) => key.startsWith('AsyncServerComponent')) || [] expect(serializedComponent).toEqual(key) @@ -2379,13 +2379,13 @@ describe.skipIf(isDev() || isWindows || !isRenderingJson)('payload rendering', ( describe.skipIf(process.env.TEST_CONTEXT !== 'async')('Async context', () => { it('should be available', async () => { - expect(await $fetch('/async-context')).toContain('"hasApp": true') + expect(await $fetch('/async-context')).toContain('"hasApp": true') }) }) describe.skipIf(process.env.TEST_CONTEXT === 'async')('Async context', () => { it('should be unavailable', async () => { - expect(await $fetch('/async-context')).toContain('"hasApp": false') + expect(await $fetch('/async-context')).toContain('"hasApp": false') }) }) @@ -2405,7 +2405,7 @@ describe.skipIf(isWindows)('useAsyncData', () => { }) it('two requests resolve and sync', async () => { - await $fetch('/useAsyncData/refresh') + await $fetch('/useAsyncData/refresh') }) it('requests can be cancelled/overridden', async () => { @@ -2417,7 +2417,7 @@ describe.skipIf(isWindows)('useAsyncData', () => { }) it('requests status can be used', async () => { - const html = await $fetch('/useAsyncData/status') + const html = await $fetch('/useAsyncData/status') expect(html).toContain('true') expect(html).not.toContain('false') @@ -2542,7 +2542,7 @@ describe('keepalive', () => { describe('teleports', () => { it('should append teleports to body', async () => { - const html = await $fetch('/teleport') + const html = await $fetch('/teleport') // Teleport is prepended to body, before the __nuxt div expect(html).toContain('
Teleport
') @@ -2550,7 +2550,7 @@ describe('teleports', () => { expect(html).toContain('

Normal content

') }) it('should render teleports to app teleports element', async () => { - const html = await $fetch('/nuxt-teleport') + const html = await $fetch('/nuxt-teleport') // Teleport is appended to body, after the __nuxt div expect(html).toContain('

Normal content

Nuxt Teleport
{ let html = '' it.sequential('fetch import-components page', async () => { - html = await $fetch('/import-components') + html = await $fetch('/import-components') }) it('load default component with mode all', () => { @@ -2616,7 +2616,7 @@ describe('lazy import components', () => { let html = '' it.sequential('fetch lazy-import-components page', async () => { - html = await $fetch('/lazy-import-components') + html = await $fetch('/lazy-import-components') }) it('lazy load named component with mode all', () => { diff --git a/test/hmr.test.ts b/test/hmr.test.ts index 55cc3caf6d..c1e8963cf9 100644 --- a/test/hmr.test.ts +++ b/test/hmr.test.ts @@ -71,7 +71,7 @@ if (process.env.TEST_ENV !== 'built' && !isWindows) { it('should detect new routes', async () => { await expectWithPolling( - () => $fetch('/some-404').then(r => r.includes('catchall at some-404')).catch(() => null), + () => $fetch('/some-404').then(r => r.includes('catchall at some-404')).catch(() => null), true, ) @@ -80,7 +80,7 @@ if (process.env.TEST_ENV !== 'built' && !isWindows) { await fsp.writeFile(join(fixturePath, 'pages/some-404.vue'), indexVue) await expectWithPolling( - () => $fetch('/some-404').then(r => r.includes('Hello Nuxt 3')).catch(() => null), + () => $fetch('/some-404').then(r => r.includes('Hello Nuxt 3')).catch(() => null), true, ) }) diff --git a/vitest.nuxt.config.ts b/vitest.nuxt.config.ts index 31e4896d3f..6c0ef9cabc 100644 --- a/vitest.nuxt.config.ts +++ b/vitest.nuxt.config.ts @@ -13,7 +13,11 @@ export default defineVitestConfig({ environmentOptions: { nuxt: { overrides: { - buildId: 'override', + runtimeConfig: { + app: { + buildId: 'override', + }, + }, experimental: { appManifest: process.env.TEST_MANIFEST !== 'manifest-off', },