From 452604f512b81e8575528e5b687f55137f5787ea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 07:12:00 +0100 Subject: [PATCH 01/85] chore(deps): update ossf/scorecard-action action to v2.3.3 (main) (#27139) --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index e11e587645..2645f4128c 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -37,7 +37,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif From f465e4d7ebb997f2def8b40f37d8513fde5aebb0 Mon Sep 17 00:00:00 2001 From: Michael McAndrew Date: Sat, 11 May 2024 11:00:32 +0200 Subject: [PATCH 02/85] docs: improve testing component examples (#27138) --- docs/1.getting-started/11.testing.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/docs/1.getting-started/11.testing.md b/docs/1.getting-started/11.testing.md index f9eea6d0cd..01950066bc 100644 --- a/docs/1.getting-started/11.testing.md +++ b/docs/1.getting-started/11.testing.md @@ -160,21 +160,28 @@ export default defineVitestConfig({ `mountSuspended` allows you to mount any Vue component within the Nuxt environment, allowing async setup and access to injections from your Nuxt plugins. For example: ```ts twoslash -import type { Component } from 'vue' import { it, expect } from 'vitest' -declare const SomeComponent: Component -declare const App: Component // ---cut--- // tests/components/SomeComponents.nuxt.spec.ts import { mountSuspended } from '@nuxt/test-utils/runtime' +import { SomeComponent } from '#components' it('can mount some component', async () => { const component = await mountSuspended(SomeComponent) expect(component.text()).toMatchInlineSnapshot( - 'This is an auto-imported component' + '"This is an auto-imported component"' ) }) +``` + +```ts twoslash +import { it, expect } from 'vitest' +// ---cut--- +// tests/components/SomeComponents.nuxt.spec.ts +import { mountSuspended } from '@nuxt/test-utils/runtime' +import App from '~/app.vue' + // tests/App.nuxt.spec.ts it('can also mount an app', async () => { const component = await mountSuspended(App, { route: '/test' }) @@ -199,13 +206,11 @@ The passed in component will be rendered inside a `
Examples: ```ts twoslash -import type { Component } from 'vue' import { it, expect } from 'vitest' -declare const SomeComponent: Component -declare const App: Component // ---cut--- // tests/components/SomeComponents.nuxt.spec.ts import { renderSuspended } from '@nuxt/test-utils/runtime' +import { SomeComponent } from '#components' import { screen } from '@testing-library/vue' it('can render some component', async () => { @@ -215,13 +220,11 @@ it('can render some component', async () => { ``` ```ts twoslash -import type { Component } from 'vue' import { it, expect } from 'vitest' -declare const SomeComponent: Component -declare const App: Component // ---cut--- // tests/App.nuxt.spec.ts import { renderSuspended } from '@nuxt/test-utils/runtime' +import App from '~/app.vue' it('can also render an app', async () => { const html = await renderSuspended(App, { route: '/test' }) From bd07021405cb738b3139ac041696ab18dce5425d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 May 2024 10:00:46 +0100 Subject: [PATCH 03/85] chore(deps): update all non-major dependencies (main) (#27144) --- package.json | 6 +- packages/nuxt/package.json | 2 +- packages/schema/package.json | 2 +- packages/ui-templates/package.json | 2 +- pnpm-lock.yaml | 268 +++++++++++++++-------------- 5 files changed, 143 insertions(+), 137 deletions(-) diff --git a/package.json b/package.json index 07b5a76a7f..dda2e79e9c 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "eslint-plugin-no-only-tests": "3.1.0", "eslint-plugin-perfectionist": "2.10.0", "eslint-typegen": "0.2.4", - "execa": "9.0.1", + "execa": "9.0.2", "fs-extra": "11.2.0", "globby": "14.0.1", "h3": "1.11.1", @@ -79,7 +79,7 @@ "ofetch": "1.3.4", "pathe": "1.1.2", "playwright-core": "1.44.0", - "rimraf": "5.0.5", + "rimraf": "5.0.6", "semver": "7.6.2", "std-env": "3.7.0", "typescript": "5.4.5", @@ -88,7 +88,7 @@ "vitest-environment-nuxt": "1.0.0", "vue": "3.4.27", "vue-router": "4.3.2", - "vue-tsc": "2.0.16" + "vue-tsc": "2.0.17" }, "packageManager": "pnpm@9.1.0", "engines": { diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index ecb5f44470..a54ff0cc19 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -60,7 +60,7 @@ }, "dependencies": { "@nuxt/devalue": "^2.0.2", - "@nuxt/devtools": "^1.2.0", + "@nuxt/devtools": "^1.3.1", "@nuxt/kit": "workspace:*", "@nuxt/schema": "workspace:*", "@nuxt/telemetry": "^2.5.4", diff --git a/packages/schema/package.json b/packages/schema/package.json index 302afdfb4e..81b29ced82 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -44,7 +44,7 @@ "@vitejs/plugin-vue-jsx": "3.1.0", "@vue/compiler-core": "3.4.27", "@vue/compiler-sfc": "3.4.27", - "@vue/language-core": "2.0.16", + "@vue/language-core": "2.0.17", "c12": "1.10.0", "esbuild-loader": "4.1.0", "h3": "1.11.1", diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index fafe9bb718..5c00c31f50 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -22,7 +22,7 @@ "@types/html-minifier": "4.0.5", "@unocss/reset": "0.60.0", "critters": "0.0.22", - "execa": "9.0.1", + "execa": "9.0.2", "globby": "14.0.1", "html-minifier": "4.0.0", "jiti": "1.21.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a88c2e92a0..2975343e86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,8 +81,8 @@ importers: specifier: 0.2.4 version: 0.2.4(eslint@9.2.0) execa: - specifier: 9.0.1 - version: 9.0.1 + specifier: 9.0.2 + version: 9.0.2 fs-extra: specifier: 11.2.0 version: 11.2.0 @@ -123,8 +123,8 @@ importers: specifier: 1.44.0 version: 1.44.0 rimraf: - specifier: 5.0.5 - version: 5.0.5 + specifier: 5.0.6 + version: 5.0.6 semver: specifier: 7.6.2 version: 7.6.2 @@ -150,8 +150,8 @@ importers: specifier: 4.3.2 version: 4.3.2(vue@3.4.27(typescript@5.4.5)) vue-tsc: - specifier: 2.0.16 - version: 2.0.16(typescript@5.4.5) + specifier: 2.0.17 + version: 2.0.17(typescript@5.4.5) packages/kit: dependencies: @@ -250,8 +250,8 @@ importers: specifier: ^2.0.2 version: 2.0.2 '@nuxt/devtools': - specifier: ^1.2.0 - version: 1.2.0(@unocss/reset@0.60.0)(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.0(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)) + specifier: ^1.3.1 + version: 1.3.1(@unocss/reset@0.60.0)(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.0(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/kit': specifier: workspace:* version: link:../kit @@ -510,8 +510,8 @@ importers: specifier: 3.4.27 version: 3.4.27 '@vue/language-core': - specifier: 2.0.16 - version: 2.0.16(typescript@5.4.5) + specifier: 2.0.17 + version: 2.0.17(typescript@5.4.5) c12: specifier: 1.10.0 version: 1.10.0 @@ -573,8 +573,8 @@ importers: specifier: 0.0.22 version: 0.0.22 execa: - specifier: 9.0.1 - version: 9.0.1 + specifier: 9.0.2 + version: 9.0.2 globby: specifier: 14.0.1 version: 14.0.1 @@ -703,7 +703,7 @@ importers: version: 1.6.0(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) vite-plugin-checker: specifier: ^0.6.4 - version: 0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.16(typescript@5.4.5)) + version: 0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.17(typescript@5.4.5)) vue-bundle-renderer: specifier: ^2.1.0 version: 2.1.0 @@ -987,6 +987,9 @@ packages: '@antfu/utils@0.7.7': resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + '@antfu/utils@0.7.8': + resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} + '@apidevtools/json-schema-ref-parser@11.6.0': resolution: {integrity: sha512-I+d5/XrazqY86/kGsmjVercjjJ+w6MVXJj7vnHfUgXzaoLJAl0/tPk2WXVpHUeRqHqyJ6AGkXBqx6Dc3wJkrCQ==} engines: {node: '>= 16'} @@ -1903,14 +1906,18 @@ packages: resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@npmcli/package-json@5.0.3': - resolution: {integrity: sha512-cgsjCvld2wMqkUqvY+SZI+1ZJ7umGBYc9IAKfqJRKJCcs7hCQYxScUgdsyrRINk3VmdCYf9TXiLBHQ6ECTxhtg==} + '@npmcli/package-json@5.1.0': + resolution: {integrity: sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==} engines: {node: ^16.14.0 || >=18.0.0} '@npmcli/promise-spawn@7.0.0': resolution: {integrity: sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==} engines: {node: ^16.14.0 || >=18.0.0} + '@npmcli/redact@2.0.0': + resolution: {integrity: sha512-SEjCPAVHWYUIQR+Yn03kJmrJjZDtJLYpj300m3HV9OTRZNpC5YpbMsM3eTkECyT4aWj8lDr9WeY6TWefpubtYQ==} + engines: {node: ^16.14.0 || >=18.0.0} + '@npmcli/run-script@8.0.0': resolution: {integrity: sha512-5noc+eCQmX1W9nlFUe65n5MIteikd3vOA2sEPdXtlUv68KWyHNFZnT/LDRXu/E4nZ5yxjciP30pADr/GQ97W1w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -1918,18 +1925,18 @@ packages: '@nuxt/devalue@2.0.2': resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} - '@nuxt/devtools-kit@1.2.0': - resolution: {integrity: sha512-T81TQuaN6hbQFzgvQeRAMJjcL4mgWtYvlGTAvtuvd3TFuHV7bMK+tFZaxgJXzIu1/UPO7/aO4VLCB0xl5sSwZw==} + '@nuxt/devtools-kit@1.3.1': + resolution: {integrity: sha512-YckEiiTef3dMckwLLUb+feKV0O8pS9s8ujw/FQ600oQbOCbq6hpWY5HQYxVYc3E41wu87lFiIZ1rnHjO3nM9sw==} peerDependencies: nuxt: workspace:* vite: 5.2.11 - '@nuxt/devtools-wizard@1.2.0': - resolution: {integrity: sha512-qGepEgm7m1q9fmnwcrbijpRgdprPbczStmVlKcONYE/9PrGn+MHeHthJHD0im30FHBVQytbN11jor1sHEauGhA==} + '@nuxt/devtools-wizard@1.3.1': + resolution: {integrity: sha512-t6qTp573s1NWoS1nqOqKRld6wFWDiMzoFojBG8GeqTwPi2NYbjyPbQobmvMGiihkWPudMpChhAhYwTTyCPFE7Q==} hasBin: true - '@nuxt/devtools@1.2.0': - resolution: {integrity: sha512-pdEvZJqovqxJp9E1BJAaGeFdFPEpCKwuuy9l9k4exBvwvxjTfjLeyW7oPD5RUTCGGxhOswgbXwuDrO4k+x2zpA==} + '@nuxt/devtools@1.3.1': + resolution: {integrity: sha512-SuiuqtlN6OMPn7hYqbydcJmRF/L86yxi8ApcjNVnMURYBPaAAN9egkEFpQ6AjzjX+UnaG1hU8FE0w6pWKSRp3A==} hasBin: true peerDependencies: nuxt: workspace:* @@ -2258,6 +2265,9 @@ packages: '@shikijs/core@1.1.6': resolution: {integrity: sha512-kt9hhvrWTm0EPtRDIsoAZnSsFlIDBVBBI5CQewpA/NZCPin+MOKRXg+JiWc4y+8fZ/v0HzfDhu/UC+OTZGMt7A==} + '@shikijs/core@1.3.0': + resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} + '@shikijs/transformers@1.1.2': resolution: {integrity: sha512-tldkUMW7RBkU2F6eXbiRMw3ja+hQer1EjwhD2NGOv6K0pgZdVp3JKjU8uisRtg65tyBqrVHq7zlLHVk7EKmUZA==} @@ -2754,17 +2764,17 @@ packages: '@volar/language-core@1.11.1': resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} - '@volar/language-core@2.2.0': - resolution: {integrity: sha512-a8WG9+4OdeNDW4ywABZIM6S6UN7em8uIlM/BZ2pWQUYrVmX+m8sj/X+QadvO+Li/t/LjAqbWJQtVgxdpEWLALQ==} + '@volar/language-core@2.2.2': + resolution: {integrity: sha512-GuvEL4JdxbnLVhPLICncCGT+tVW4cIz9GxXNeDofNnJ4iNTKhr5suGVsA1GLOne9PbraSjn8PlLt+pvLxuRVeQ==} '@volar/source-map@1.11.1': resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} - '@volar/source-map@2.2.0': - resolution: {integrity: sha512-HQlPRlHOVqCCHK8wI76ZldHkEwKsjp7E6idUc36Ekni+KJDNrqgSqPvyHQixybXPHNU7CI9Uxd9/IkxO7LuNBw==} + '@volar/source-map@2.2.2': + resolution: {integrity: sha512-vUwvZuSW6iN4JI9QRinh9EjFasx1TUtnaWMKwgWx08xz1PyYuNkLlWlrZXBZ5GGBhML0u230M/7X+AHY2h9yKg==} - '@volar/typescript@2.2.0': - resolution: {integrity: sha512-wC6l4zLiiCLxF+FGaHCbWlQYf4vMsnRxYhcI6WgvaNppOD6r1g+Ef1RKRJUApALWU46Yy/JDU/TbdV6w/X6Liw==} + '@volar/typescript@2.2.2': + resolution: {integrity: sha512-WcwOREz7+uOrpjUrKhOMaOKKmyPdtqF95HWX7SE0d9hhBB1KkfahxhaAex5U9Bn43LfINHlycLoYCNEtfeKm0g==} '@vue-macros/common@1.10.1': resolution: {integrity: sha512-uftSpfwdwitcQT2lM8aVxcfe5rKQBzC9jMrtJM5sG4hEuFyfIvnJihpPpnaWxY+X4p64k+YYXtBFv+1O5Bq3dg==} @@ -2798,24 +2808,24 @@ packages: '@vue/devtools-api@6.5.1': resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} - '@vue/devtools-applet@7.0.27': - resolution: {integrity: sha512-ubNn/qIn5n3x7YCVSabfQfKL49GoJPJdYu4LfdNz/gZkgb1+djdATpKl/+xzQoOqtGzqnR9nMoCHApAJAgeMyg==} + '@vue/devtools-applet@7.1.3': + resolution: {integrity: sha512-525h17FzUF7ssko/U+yeP5jv0HaGm3eI4dVqncWPRCLTDtOy1V+srjoxYqr5qnzx6AdIU2icPQF2KNomd9FGZw==} peerDependencies: vue: 3.4.27 - '@vue/devtools-core@7.0.27': - resolution: {integrity: sha512-3rbtNGxFFFPfIObgTAPIw0h0rJy+y1PrbfgM9nXRf3/FIJkthfS19yj31pj9EWIqRsyiqK5u1Ni7SAJZ0vsQOA==} + '@vue/devtools-core@7.1.3': + resolution: {integrity: sha512-pVbWi8pf2Z/fZPioYOIgu+cv9pQG55k4D8bL31ec+Wfe+pQR0ImFDu0OhHfch1Ra8uvLLrAZTF4IKeGAkmzD4A==} - '@vue/devtools-kit@7.0.27': - resolution: {integrity: sha512-/A5xM38pPCFX5Yhl/lRFAzjyK6VNsH670nww2WbjFKWqlu3I+lMxWKzQkCW6A1V8bduITgl2kHORfg2gTw6QaA==} + '@vue/devtools-kit@7.1.3': + resolution: {integrity: sha512-NFskFSJMVCBXTkByuk2llzI3KD3Blcm7WqiRorWjD6nClHPgkH5BobDH08rfulqq5ocRt5xV+3qOT1Q9FXJrwQ==} peerDependencies: vue: 3.4.27 - '@vue/devtools-shared@7.0.27': - resolution: {integrity: sha512-4VxtmZ6yjhiSloqZZq2UYU0TBGxOJ8GxWvp5OlAH70zYqi0FIAyWGPkOhvfoZ7DKQyv2UU0mmKzFHjsEkelGyQ==} + '@vue/devtools-shared@7.1.3': + resolution: {integrity: sha512-KJ3AfgjTn3tJz/XKF+BlVShNPecim3G21oHRue+YQOsooW+0s+qXvm09U09aO7yBza5SivL1QgxSrzAbiKWjhQ==} - '@vue/devtools-ui@7.0.27': - resolution: {integrity: sha512-MVcQwqqGNW2poW29OkzOcpNLHb0R/VQECWYiDYvKqjWp3G8M/FS2E5mUnjXxZGpfqHjSEmJs+fFGY8exnYpNng==} + '@vue/devtools-ui@7.1.3': + resolution: {integrity: sha512-gO2EV3T0wO+HK884+m6UgTEirNOuf+k8U4PcR0vIYA97/A9nTzv9HheCRyFMiHMePYxnlBOsgD7K2fp1/M+EWA==} peerDependencies: '@unocss/reset': '>=0.50.0-0' floating-vue: '>=2.0.0-0' @@ -2830,8 +2840,8 @@ packages: typescript: optional: true - '@vue/language-core@2.0.16': - resolution: {integrity: sha512-Bc2sexRH99pznOph8mLw2BlRZ9edm7tW51kcBXgx8adAoOcZUWJj3UNSsdQ6H9Y8meGz7BoazVrVo/jUukIsPw==} + '@vue/language-core@2.0.17': + resolution: {integrity: sha512-tHw2J6G9yL4kn3jN5MftOHEq86Y6qnuohBQ1OHkJ73fAv3OYgwDI1cfX7ds0OEJEycOMG64BA3ql5bDgDa41zw==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3490,8 +3500,8 @@ packages: resolution: {integrity: sha512-Hq1+lXVgjJjcS/U+uk6+yVmtxami0r0b+xVtlGyABgdz110l/kOnHWvlSI7nVzrTl8GCdZHwZS4pbBFT7hSL/g==} engines: {node: '>=18.0'} - cronstrue@2.49.0: - resolution: {integrity: sha512-FWZBqdStQaPR8ZTBQGALh1EK9Hl1HcG70dyGvD1rKLPafFO3H73o38dz/e8YkIlbLn3JxmBI/f6Doe3Nh+DcEQ==} + cronstrue@2.50.0: + resolution: {integrity: sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==} hasBin: true cross-spawn@7.0.3: @@ -4055,8 +4065,8 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.0.1: - resolution: {integrity: sha512-U5ck8xJmf3sVebV1v+Hh436VWHVHUfzkdbKJynd3kCP9sQRDxCY5x2Tml5lGB7XM6lpj6ATfgWWqynDt2MBLJg==} + execa@9.0.2: + resolution: {integrity: sha512-oO281GF7ksH/Ogv1xyDf1prvFta/6/XkGKxRUvA3IB2MU1rCJGlFs86HRZhdooow1ISkR0Np0rOxUCIJVw36Rg==} engines: {node: '>=18'} exponential-backoff@3.1.1: @@ -5466,8 +5476,8 @@ packages: resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} engines: {node: ^16.14.0 || >=18.0.0} - npm-registry-fetch@16.1.0: - resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} + npm-registry-fetch@17.0.1: + resolution: {integrity: sha512-fLu9MTdZTlJAHUek/VLklE6EpIiP3VZpTiuN7OOMCt2Sd67NCpSEetMaxHHEZiZxllp8ZLsUpvbEszqTFEc+wA==} engines: {node: ^16.14.0 || >=18.0.0} npm-run-path@4.0.1: @@ -5604,8 +5614,8 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - pacote@18.0.0: - resolution: {integrity: sha512-ma7uVt/q3Sb3XbLwUjOeClz+7feHjMOFegHn5whw++x+GzikZkAq/2auklSbRuy6EI2iJh1/ZqCpVaUcxRaeqQ==} + pacote@18.0.6: + resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} engines: {node: ^16.14.0 || >=18.0.0} hasBin: true @@ -6106,14 +6116,6 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-package-json-fast@3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - read-package-json@7.0.0: - resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} - engines: {node: ^16.14.0 || >=18.0.0} - read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -6243,8 +6245,8 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - rimraf@5.0.5: - resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + rimraf@5.0.6: + resolution: {integrity: sha512-X72SgyOf+1lFnGM6gYcmZ4+jMOwuT4E4SajKQzUIlI7EoR5eFHMhS/wf8Ll0mN+w2bxcIVldrJQ6xT7HFQywjg==} engines: {node: '>=14'} hasBin: true @@ -6368,6 +6370,9 @@ packages: shiki@1.1.6: resolution: {integrity: sha512-j4pcpvaQWHb42cHeV+W6P+X/VcK7Y2ctvEham6zB8wsuRQroT6cEMIkiUmBU2Nqg2qnHZDH6ZyRdVldcy0l6xw==} + shiki@1.3.0: + resolution: {integrity: sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==} + side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -7021,8 +7026,8 @@ packages: vue-tsc: optional: true - vite-plugin-inspect@0.8.3: - resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} + vite-plugin-inspect@0.8.4: + resolution: {integrity: sha512-G0N3rjfw+AiiwnGw50KlObIHYWfulVwaCBUBLh2xTW9G1eM9ocE5olXkEYUbwyTmX+azM8duubi+9w5awdCz+g==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' @@ -7031,8 +7036,8 @@ packages: '@nuxt/kit': optional: true - vite-plugin-vue-inspector@4.0.2: - resolution: {integrity: sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg==} + vite-plugin-vue-inspector@5.1.0: + resolution: {integrity: sha512-yIw9dvBz9nQW7DPfbJtUVW6JTnt67hqTPRnTwT2CZWMqDvISyQHRjgKl32nlMh1DRH+92533Sv6t59pWMLUCWA==} peerDependencies: vite: 5.2.11 @@ -7201,8 +7206,8 @@ packages: vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} - vue-tsc@2.0.16: - resolution: {integrity: sha512-/gHAWJa216PeEhfxtAToIbxdWgw01wuQzo48ZUqMYVEyNqDp+OYV9xMO5HaPS2P3Ls0+EsjguMZLY4cGobX4Ew==} + vue-tsc@2.0.17: + resolution: {integrity: sha512-RRZsiCBD1hvATQb321xV+SkRDKsK5hgFQ4WXy5wuYsyyjz8xAK4DjxHkpH7PFoJKUbZTbeW8KzhejzXZS49Tzw==} hasBin: true peerDependencies: typescript: '*' @@ -7344,8 +7349,8 @@ packages: utf-8-validate: optional: true - ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7423,6 +7428,8 @@ snapshots: '@antfu/utils@0.7.7': {} + '@antfu/utils@0.7.8': {} + '@apidevtools/json-schema-ref-parser@11.6.0': dependencies: '@jsdevtools/ono': 7.1.3 @@ -8167,7 +8174,7 @@ snapshots: '@npmcli/node-gyp@3.0.0': {} - '@npmcli/package-json@5.0.3': + '@npmcli/package-json@5.1.0': dependencies: '@npmcli/git': 5.0.3 glob: 10.3.12 @@ -8183,10 +8190,12 @@ snapshots: dependencies: which: 4.0.0 + '@npmcli/redact@2.0.0': {} + '@npmcli/run-script@8.0.0': dependencies: '@npmcli/node-gyp': 3.0.0 - '@npmcli/package-json': 5.0.3 + '@npmcli/package-json': 5.1.0 '@npmcli/promise-spawn': 7.0.0 node-gyp: 10.1.0 proc-log: 4.2.0 @@ -8197,7 +8206,7 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.2.0(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.10)(sass@1.69.4)(terser@5.27.0))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema @@ -8205,7 +8214,7 @@ snapshots: nuxt: link:packages/nuxt vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - '@nuxt/devtools-wizard@1.2.0': + '@nuxt/devtools-wizard@1.3.1': dependencies: consola: 3.2.3 diff: 5.2.0 @@ -8218,18 +8227,18 @@ snapshots: rc9: 2.1.2 semver: 7.6.2 - '@nuxt/devtools@1.2.0(@unocss/reset@0.60.0)(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.0(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.0)(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.0(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))': dependencies: - '@antfu/utils': 0.7.7 - '@nuxt/devtools-kit': 1.2.0(nuxt@packages+nuxt)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-wizard': 1.2.0 + '@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-wizard': 1.3.1 '@nuxt/kit': link:packages/kit - '@vue/devtools-applet': 7.0.27(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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.0.27(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-kit': 7.0.27(vue@3.4.27(typescript@5.4.5)) + '@vue/devtools-applet': 7.1.3(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) birpc: 0.2.17 consola: 3.2.3 - cronstrue: 2.49.0 + cronstrue: 2.50.0 destr: 2.0.3 error-stack-parser-es: 0.1.1 execa: 7.2.0 @@ -8245,7 +8254,7 @@ snapshots: nuxt: link:packages/nuxt nypm: 0.3.8 ohash: 1.1.3 - pacote: 18.0.0 + pacote: 18.0.6 pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.1.1 @@ -8256,10 +8265,10 @@ snapshots: 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.3(@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: 4.0.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)) which: 3.0.1 - ws: 8.16.0 + ws: 8.17.0 transitivePeerDependencies: - '@unocss/reset' - '@vue/composition-api' @@ -8613,6 +8622,8 @@ snapshots: '@shikijs/core@1.1.6': {} + '@shikijs/core@1.3.0': {} + '@shikijs/transformers@1.1.2': dependencies: shiki: 1.1.2 @@ -9393,21 +9404,21 @@ snapshots: dependencies: '@volar/source-map': 1.11.1 - '@volar/language-core@2.2.0': + '@volar/language-core@2.2.2': dependencies: - '@volar/source-map': 2.2.0 + '@volar/source-map': 2.2.2 '@volar/source-map@1.11.1': dependencies: muggle-string: 0.3.1 - '@volar/source-map@2.2.0': + '@volar/source-map@2.2.2': dependencies: muggle-string: 0.4.1 - '@volar/typescript@2.2.0': + '@volar/typescript@2.2.2': dependencies: - '@volar/language-core': 2.2.0 + '@volar/language-core': 2.2.2 path-browserify: 1.0.1 '@vue-macros/common@1.10.1(rollup@4.17.2)(vue@3.4.27(typescript@5.4.5))': @@ -9472,13 +9483,15 @@ snapshots: '@vue/devtools-api@6.5.1': {} - '@vue/devtools-applet@7.0.27(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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))': dependencies: - '@vue/devtools-core': 7.0.27(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-kit': 7.0.27(vue@3.4.27(typescript@5.4.5)) - '@vue/devtools-shared': 7.0.27 - '@vue/devtools-ui': 7.0.27(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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-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-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.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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)) + lodash-es: 4.17.21 perfect-debounce: 1.0.0 + shiki: 1.3.0 splitpanes: 3.1.5 vue: 3.4.27(typescript@5.4.5) vue-virtual-scroller: 2.0.0-beta.8(vue@3.4.27(typescript@5.4.5)) @@ -9500,10 +9513,10 @@ snapshots: - unocss - vite - '@vue/devtools-core@7.0.27(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))': dependencies: - '@vue/devtools-kit': 7.0.27(vue@3.4.27(typescript@5.4.5)) - '@vue/devtools-shared': 7.0.27 + '@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 @@ -9512,22 +9525,23 @@ snapshots: - vite - vue - '@vue/devtools-kit@7.0.27(vue@3.4.27(typescript@5.4.5))': + '@vue/devtools-kit@7.1.3(vue@3.4.27(typescript@5.4.5))': dependencies: - '@vue/devtools-shared': 7.0.27 + '@vue/devtools-shared': 7.1.3 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 speakingurl: 14.0.1 vue: 3.4.27(typescript@5.4.5) - '@vue/devtools-shared@7.0.27': + '@vue/devtools-shared@7.1.3': dependencies: rfdc: 1.3.1 - '@vue/devtools-ui@7.0.27(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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))': dependencies: '@unocss/reset': 0.60.0 + '@vue/devtools-shared': 7.1.3 '@vueuse/components': 10.9.0(vue@3.4.27(typescript@5.4.5)) '@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.4.5)) '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.27(typescript@5.4.5)) @@ -9564,9 +9578,9 @@ snapshots: optionalDependencies: typescript: 5.4.5 - '@vue/language-core@2.0.16(typescript@5.4.5)': + '@vue/language-core@2.0.17(typescript@5.4.5)': dependencies: - '@volar/language-core': 2.2.0 + '@volar/language-core': 2.2.2 '@vue/compiler-dom': 3.4.27 '@vue/shared': 3.4.27 computeds: 0.0.1 @@ -10266,7 +10280,7 @@ snapshots: croner@8.0.1: {} - cronstrue@2.49.0: {} + cronstrue@2.50.0: {} cross-spawn@7.0.3: dependencies: @@ -10955,7 +10969,7 @@ snapshots: human-signals: 4.3.1 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: 3.0.7 strip-final-newline: 3.0.0 @@ -10972,7 +10986,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.0.1: + execa@9.0.2: dependencies: '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.3 @@ -12702,15 +12716,16 @@ snapshots: npm-package-arg: 11.0.1 semver: 7.6.2 - npm-registry-fetch@16.1.0: + npm-registry-fetch@17.0.1: dependencies: + '@npmcli/redact': 2.0.0 make-fetch-happen: 13.0.0 minipass: 7.0.4 minipass-fetch: 3.0.4 minipass-json-stream: 1.0.1 minizlib: 2.1.2 npm-package-arg: 11.0.1 - proc-log: 3.0.0 + proc-log: 4.2.0 transitivePeerDependencies: - supports-color @@ -12885,10 +12900,11 @@ snapshots: p-try@2.2.0: {} - pacote@18.0.0: + pacote@18.0.6: dependencies: '@npmcli/git': 5.0.3 '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/package-json': 5.1.0 '@npmcli/promise-spawn': 7.0.0 '@npmcli/run-script': 8.0.0 cacache: 18.0.0 @@ -12897,11 +12913,9 @@ snapshots: npm-package-arg: 11.0.1 npm-packlist: 8.0.0 npm-pick-manifest: 9.0.0 - npm-registry-fetch: 16.1.0 + npm-registry-fetch: 17.0.1 proc-log: 4.2.0 promise-retry: 2.0.1 - read-package-json: 7.0.0 - read-package-json-fast: 3.0.2 sigstore: 2.2.2 ssri: 10.0.5 tar: 6.2.0 @@ -13377,18 +13391,6 @@ snapshots: dependencies: pify: 2.3.0 - read-package-json-fast@3.0.2: - dependencies: - json-parse-even-better-errors: 3.0.0 - npm-normalize-package-bin: 3.0.1 - - read-package-json@7.0.0: - dependencies: - glob: 10.3.12 - json-parse-even-better-errors: 3.0.0 - normalize-package-data: 6.0.0 - npm-normalize-package-bin: 3.0.1 - read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 @@ -13583,7 +13585,7 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@5.0.5: + rimraf@5.0.6: dependencies: glob: 10.3.12 @@ -13747,6 +13749,10 @@ snapshots: dependencies: '@shikijs/core': 1.1.6 + shiki@1.3.0: + dependencies: + '@shikijs/core': 1.3.0 + side-channel@1.0.4: dependencies: call-bind: 1.0.7 @@ -14485,7 +14491,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.16(typescript@5.4.5)): + vite-plugin-checker@0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.17(typescript@5.4.5)): dependencies: '@babel/code-frame': 7.24.2 ansi-escapes: 4.3.2 @@ -14507,11 +14513,11 @@ snapshots: eslint: 9.2.0 optionator: 0.9.3 typescript: 5.4.5 - vue-tsc: 2.0.16(typescript@5.4.5) + vue-tsc: 2.0.17(typescript@5.4.5) - vite-plugin-inspect@0.8.3(@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.10)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@antfu/utils': 0.7.7 + '@antfu/utils': 0.7.8 '@rollup/pluginutils': 5.1.0(rollup@4.17.2) debug: 4.3.4 error-stack-parser-es: 0.1.1 @@ -14527,7 +14533,7 @@ snapshots: - rollup - supports-color - vite-plugin-vue-inspector@4.0.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)): dependencies: '@babel/core': 7.24.5 '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.24.5) @@ -14763,10 +14769,10 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - vue-tsc@2.0.16(typescript@5.4.5): + vue-tsc@2.0.17(typescript@5.4.5): dependencies: - '@volar/typescript': 2.2.0 - '@vue/language-core': 2.0.16(typescript@5.4.5) + '@volar/typescript': 2.2.2 + '@vue/language-core': 2.0.17(typescript@5.4.5) semver: 7.6.2 typescript: 5.4.5 @@ -14959,7 +14965,7 @@ snapshots: ws@7.5.9: {} - ws@8.16.0: {} + ws@8.17.0: {} xml-name-validator@4.0.0: {} From b5e35e3bd79388b73154e3502544f11c6ece9173 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 12 May 2024 09:47:15 +0100 Subject: [PATCH 04/85] docs: fix type checking of component testing blocks --- docs/1.getting-started/11.testing.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/1.getting-started/11.testing.md b/docs/1.getting-started/11.testing.md index 01950066bc..f6b40016bf 100644 --- a/docs/1.getting-started/11.testing.md +++ b/docs/1.getting-started/11.testing.md @@ -161,6 +161,10 @@ export default defineVitestConfig({ ```ts twoslash import { it, expect } from 'vitest' +import type { Component } from 'vue' +declare module '#components' { + export const SomeComponent: Component +} // ---cut--- // tests/components/SomeComponents.nuxt.spec.ts import { mountSuspended } from '@nuxt/test-utils/runtime' @@ -207,6 +211,10 @@ Examples: ```ts twoslash import { it, expect } from 'vitest' +import type { Component } from 'vue' +declare module '#components' { + export const SomeComponent: Component +} // ---cut--- // tests/components/SomeComponents.nuxt.spec.ts import { renderSuspended } from '@nuxt/test-utils/runtime' From dd6da1c61457191e299719a7733d5bd43d4805b0 Mon Sep 17 00:00:00 2001 From: Dominik Opyd Date: Sun, 12 May 2024 10:47:27 +0200 Subject: [PATCH 05/85] docs: add `app.config.ts` to nuxt 4 testing/migration (#27164) --- docs/1.getting-started/12.upgrade.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/1.getting-started/12.upgrade.md b/docs/1.getting-started/12.upgrade.md index 626d63ab42..9c0e79fd65 100644 --- a/docs/1.getting-started/12.upgrade.md +++ b/docs/1.getting-started/12.upgrade.md @@ -100,6 +100,7 @@ app/ pages/ plugins/ utils/ + app.config.ts app.vue router.options.ts modules/ @@ -126,7 +127,7 @@ nuxt.config.ts ##### Migration Steps 1. Create a new directory called `app/`. -1. Move your `assets/`, `components/`, `composables/`, `layouts/`, `middleware/`, `pages/`, `plugins/` and `utils/` folders under it, as well as `app.vue`, `error.vue`. If you have an `app/router-options.ts` or `app/spa-loading-template.html`, these paths remain the same. +1. Move your `assets/`, `components/`, `composables/`, `layouts/`, `middleware/`, `pages/`, `plugins/` and `utils/` folders under it, as well as `app.vue`, `error.vue`, `app.config.ts`. If you have an `app/router-options.ts` or `app/spa-loading-template.html`, these paths remain the same. 1. Make sure your `nuxt.config.ts`, `modules/`, `public/` and `server/` folders remain outside the `app/` folder, in the root of your project. However, migration is _not required_. If you wish to keep your current folder structure, Nuxt should auto-detect it. (If it does not, please raise an issue.) You can also force a v3 folder structure with the following configuration: From f415e9cd0ace4ac1234463dd23483c4028014b29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 May 2024 10:15:37 +0100 Subject: [PATCH 06/85] chore(deps): update all non-major dependencies (main) (#27170) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- packages/ui-templates/package.json | 4 +- pnpm-lock.yaml | 383 ++++++++++++++--------------- 3 files changed, 192 insertions(+), 197 deletions(-) diff --git a/package.json b/package.json index dda2e79e9c..2452551dbf 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "ofetch": "1.3.4", "pathe": "1.1.2", "playwright-core": "1.44.0", - "rimraf": "5.0.6", + "rimraf": "5.0.7", "semver": "7.6.2", "std-env": "3.7.0", "typescript": "5.4.5", diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index 5c00c31f50..a7389b18ae 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/html-minifier": "4.0.5", - "@unocss/reset": "0.60.0", + "@unocss/reset": "0.60.1", "critters": "0.0.22", "execa": "9.0.2", "globby": "14.0.1", @@ -30,7 +30,7 @@ "pathe": "1.1.2", "prettier": "3.2.5", "scule": "1.3.0", - "unocss": "0.60.0", + "unocss": "0.60.1", "vite": "5.2.11" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2975343e86..621aff2841 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,8 +123,8 @@ importers: specifier: 1.44.0 version: 1.44.0 rimraf: - specifier: 5.0.6 - version: 5.0.6 + specifier: 5.0.7 + version: 5.0.7 semver: specifier: 7.6.2 version: 7.6.2 @@ -251,7 +251,7 @@ importers: version: 2.0.2 '@nuxt/devtools': specifier: ^1.3.1 - version: 1.3.1(@unocss/reset@0.60.0)(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.0(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.1)(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.1(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/kit': specifier: workspace:* version: link:../kit @@ -567,8 +567,8 @@ importers: specifier: 4.0.5 version: 4.0.5 '@unocss/reset': - specifier: 0.60.0 - version: 0.60.0 + specifier: 0.60.1 + version: 0.60.1 critters: specifier: 0.0.22 version: 0.0.22 @@ -597,8 +597,8 @@ importers: specifier: 1.3.0 version: 1.3.0 unocss: - specifier: 0.60.0 - version: 0.60.0(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + specifier: 0.60.1 + version: 0.60.1(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) vite: specifier: 5.2.11 version: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) @@ -984,9 +984,6 @@ packages: '@antfu/install-pkg@0.1.1': resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} - '@antfu/utils@0.7.7': - resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} - '@antfu/utils@0.7.8': resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} @@ -2621,89 +2618,89 @@ packages: peerDependencies: vue: 3.4.27 - '@unocss/astro@0.60.0': - resolution: {integrity: sha512-clZuuNWFpNpr8OGm4vr/t3cD++S9rqK1jsZKkT0Wuu8/IKkZx/4x0BTn82KhaB4o5RJWwwtkfX65AePn6D+62g==} + '@unocss/astro@0.60.1': + resolution: {integrity: sha512-I9PQTJqtv4/9MK32W9RtPHAskpTXYAyshFAgGMdWQVA7gLVwSZoT2vuOnT32KEb1OqvW9fwwjJHiNRxSCn44ew==} peerDependencies: vite: 5.2.11 peerDependenciesMeta: vite: optional: true - '@unocss/cli@0.60.0': - resolution: {integrity: sha512-TzBhbOfd7Rl+NsqHjQSFLoc8aMJcfRRMZ3BXuIa3EhGuT0r4e1H7CENUQXl7ijNLVL9XL2SyrV68cDvEeQfMZA==} + '@unocss/cli@0.60.1': + resolution: {integrity: sha512-hNtlc7qhUh0ZxqIzxASMu7NyBwWdspEbQ/VgDPoqPErp+ipuLteW97GAUFG1p5AoSO/xJ5i1HuwGja760urt8w==} engines: {node: '>=14'} hasBin: true - '@unocss/config@0.60.0': - resolution: {integrity: sha512-y8zTM/qhZ5p2zhtgjsqL4BDjDXes1i72kNts/A85adNTx9ffZG+0dbrH2DLoBKp6aAb51AOo5OcG5cllSbNrDQ==} + '@unocss/config@0.60.1': + resolution: {integrity: sha512-9moB8hgEfJ5q7W8w40dANbdFZRlJdJbCIzTraUwpiTWjzYdct8XPNYmyterVt0LZ8b85LOk14PKPXjp1IiksSw==} engines: {node: '>=14'} - '@unocss/core@0.60.0': - resolution: {integrity: sha512-i1j5i/4xiCfogobaOdQCQUEy/Ch8mBtKgpfUIreJtElaF15uIjT2t/G0y7qUz87ZNl+wJoPcWkcSC92HVnjXwg==} + '@unocss/core@0.60.1': + resolution: {integrity: sha512-Ks+BZeJRlH+51sHfxZMYwlRnAy6Kl0nZGfhrU7NRjWCN9QhQDx99zRoo9mqOAZyT16Sj731j6+T0tT0pXHxpkg==} - '@unocss/extractor-arbitrary-variants@0.60.0': - resolution: {integrity: sha512-f6o2KsCP+BYzYRjeBkjiquh5eM1oRv/wNu1a1triNk9pmmD3nUWRY0ImaXRkSbgHpAjVEDloOpqPdMTO408ePg==} + '@unocss/extractor-arbitrary-variants@0.60.1': + resolution: {integrity: sha512-/HRBMU6AlQuozfYjg77GYF3lsdArM44ycEO6rDWw4QgBvNI6XFY9W3QKcuqI0ABVQdqAc3v4qkUaTNctFi+RAw==} - '@unocss/inspector@0.60.0': - resolution: {integrity: sha512-aw9wkEslDnuQNEQkffCVvYJEljB9y/jkNM/i/YBjDYsTYOa/p63NVju9Bn0l3+uUiH6Nsws2JJ1q3xIulhZEIw==} + '@unocss/inspector@0.60.1': + resolution: {integrity: sha512-SqEdmrLrzEaQpfiY/Cfo/4+JlIQ1i0A5ISsFQeJAUZo2BKndV3JM8UzwdMc1SI3+bWx7wKSFtFWxboXpHv5pRw==} - '@unocss/postcss@0.60.0': - resolution: {integrity: sha512-FlEAUWSywKZ55IJbhM0vJ39mDHWveT06Bu4l7TYLgdQ6BJHDIncatMg3GQ9L8RTEbXGGjhnOs3EJyd1ZHEzBUw==} + '@unocss/postcss@0.60.1': + resolution: {integrity: sha512-zGimdFqB+tFbcS0Xs4hauNB9HSxdB3Yzi4Ow7EDqYiO87SNS/lLAvAut9nsd4cVfkpm3bnkTc5R/vBmwY67o0g==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 - '@unocss/preset-attributify@0.60.0': - resolution: {integrity: sha512-FJZCKy6Wf6qc9EXFei4txy9nYkKotoPD/20NfA+beYS3XbVxAxQy6d454fe9DDK99QfJeEJd8xhaWJFCweiQWw==} + '@unocss/preset-attributify@0.60.1': + resolution: {integrity: sha512-nWsuMLXdAI+X9OP8iv/hEWRevE+7Rmet95O+A/O/75GmXcv6KRkTGnrkIse9ne2Mqfb1BG5g4OgvROpk+PFvYg==} - '@unocss/preset-icons@0.60.0': - resolution: {integrity: sha512-8DD9PURCfAtN5nlpOAz5ocV8NG1bb1u83WIGYu+uuVbmFUiMVP4RIEtS1+/dXBEtl0EA7rgN9qI5EmzPDrLd1Q==} + '@unocss/preset-icons@0.60.1': + resolution: {integrity: sha512-rev1cUvfdYG48avJaXuL7DPgFoSuTktL2L3uA0+V/zgcdxPLQ2dI/nO3gMnt1VCvz7mRWK6Lh3wRhiNzkUfGmw==} - '@unocss/preset-mini@0.60.0': - resolution: {integrity: sha512-N0XqjuMRjtRUYeE5ELxOcraEwUWkhQum+qIhr0ZZCCoGQpa/u1MRCkwNcBSEy70HZMoyesYVtxiOz0CgAWRSQw==} + '@unocss/preset-mini@0.60.1': + resolution: {integrity: sha512-X0V2wBZFRDxdRKkiC9t++7CsfkXtH0p6adVCoFzEi3fTy6XPTmBNZJ0VqLKj9Nm5hOm459x1CKn2gLEVIZkR3Q==} - '@unocss/preset-tagify@0.60.0': - resolution: {integrity: sha512-7uEnjqQN+zdfBpDwzfVB/rnriqa6jxImMv3g8nQ0A3boopaB+JBuqlSr3/sUmb8YJh9U+F5l8zShjLkPOz9gkg==} + '@unocss/preset-tagify@0.60.1': + resolution: {integrity: sha512-uJOx5y9ubvstiJInZoVWEVjbV9cMy60Fi9NQwLr/Z9umsp26wb3UNCxYyuDwA9OGYUgcwllieCr2CfleEohKJA==} - '@unocss/preset-typography@0.60.0': - resolution: {integrity: sha512-rHzAZa5MqJGpSxL3OhDQZ6Nk9jTDhiEKB3s7xR4bfwKtEuMiTZAzrOl6DDKnAgjH2H2cXfgFpQP+kLjoYgyNkA==} + '@unocss/preset-typography@0.60.1': + resolution: {integrity: sha512-KVlS3ToBHdtqKjOk584tPAkETqSUZ1Q+rEYUwW+go0+DLWo7FBttZD6pnsvyCimhebho+YfaLy6LVXzfFAyZGw==} - '@unocss/preset-uno@0.60.0': - resolution: {integrity: sha512-aMoja25jfz80N/TYysMe1RAy0yhONUgl3Eh3Z4EIJrdsHXxuBicO1Wa/EbI8Mc4dY+NPETTC/5JF1SH+yWihGA==} + '@unocss/preset-uno@0.60.1': + resolution: {integrity: sha512-yATReqn3CqGKMsR+0J8kRrE/nkxxPEreColHDURyiEJSpkL+oTtIlyx5E4DKuzs1Ih8GmVNIoIp6uTCKCfBi+w==} - '@unocss/preset-web-fonts@0.60.0': - resolution: {integrity: sha512-muiQSNq9TmidlMPb9dvX+u5DGNPWfuOKhTTPA2Ia/ZmOUo3SfX2LQq2af7QfjoDuAGnLo3ZZf0qyP1Ao9YsbrA==} + '@unocss/preset-web-fonts@0.60.1': + resolution: {integrity: sha512-LEzUCEfXiED/CGKfaFj9n3TW/vpiLQl4Qhjq56KVF2Ml3TWs3tt1ihT6MrxmmC7o4VjSSkJxgOa9n6ruSqvcGA==} - '@unocss/preset-wind@0.60.0': - resolution: {integrity: sha512-utfAJ15tfnPg9r5rfCnBwGRMvhtFiqp8f/YQdrREsnAJRqcfzA6E2Tdh67GyOjPRBjNusw+WmV4K2tltzKbdOQ==} + '@unocss/preset-wind@0.60.1': + resolution: {integrity: sha512-3RHDbVNyOWuRyt61XXqJ1jmHo6PV2LTrCbgEX0NvMBROfEP4p2G627t9fhls1cpNIe/HW5NFmiHjRZNFqCRdpA==} - '@unocss/reset@0.60.0': - resolution: {integrity: sha512-r4NUPb/je10ZUrdncSuHipeDqBn7gY5HEcdAx2Rse+O/yWJimVsBkb5sGU1na9fhUwxv0cYIiFiqoQaKzcnCpQ==} + '@unocss/reset@0.60.1': + resolution: {integrity: sha512-lOgbSVm8CDY11aEWusYrCcstvmm+Z/vc4/oYNcbECSAsbzsREPTmcMonhSFxav52jbmuTk5MP3cuHYVEJLuQ3A==} - '@unocss/rule-utils@0.60.0': - resolution: {integrity: sha512-YDXSUQceqMSVG51F5yTTPSadrV7YrbRX3VnaSE5NopyyYKRWT6/0dl68riTOjtJfVcm55vl7ZhwNFobAdtOfYA==} + '@unocss/rule-utils@0.60.1': + resolution: {integrity: sha512-UlP6Og/wOA00Uj3sZLlGVOAeP0XmwtBGBBBJp0OUskHDhXKOQyS4QqGa2hRhFPsINYEOBp+N5PeemuUxcYBrSQ==} engines: {node: '>=14'} - '@unocss/scope@0.60.0': - resolution: {integrity: sha512-BegakMMkFGWGTRro+CSZVEGS81k00HlYiT81bbDtjFifiJVv6K13U3S2YqBaUS7zlECCYhMr4Bpv8Rr78j66Bw==} + '@unocss/scope@0.60.1': + resolution: {integrity: sha512-yTR9a5v3ZqTecQX8yN4yjAmKJralxip8Robc16Kt7AnkZtrenMRefgXANNpOk2MFhT72Nkpk9jPJbE7t9hacgQ==} - '@unocss/transformer-attributify-jsx-babel@0.60.0': - resolution: {integrity: sha512-GpBqGZZ9+sja9JapQRBvlD1o3GFumsbAvd/HmnXyDH7WLYO/y/HPA8/4Ar2ieGqcE0IlVVoTj8B2ruf5umhaWQ==} + '@unocss/transformer-attributify-jsx-babel@0.60.1': + resolution: {integrity: sha512-NFOu8ErOUe9YPXTADSinoTSeZ0lZHrqGQoiXStMEQpAFUINb2wtgRsCJddK/T/0lHjO3gMdEt3SdIirH97zOSw==} - '@unocss/transformer-attributify-jsx@0.60.0': - resolution: {integrity: sha512-0uBTvcYLtkCHJ2491orUGpZ3Pw43NPZu/nn06P4FMyyudmCgBd5z9bl5bGiCY6MbIRDyGEGGMEWF87s80FnLPw==} + '@unocss/transformer-attributify-jsx@0.60.1': + resolution: {integrity: sha512-wpGQ1uylJ3JFu8TuEFSpPeNAxisG3ThnsAvZRHqRH7QPr3aWc9bxxZ+Zv1d3dsBHIr5KrHtuo2SKj9od/HawnA==} - '@unocss/transformer-compile-class@0.60.0': - resolution: {integrity: sha512-PEfz9q11KBQR1UP5NB2K4qcjh+LLCXIL4wBKz7qhKkjjyGr7rCRrfLtbZv/1QmgKST+WHbK7uKkRYm/kBbFdyA==} + '@unocss/transformer-compile-class@0.60.1': + resolution: {integrity: sha512-WGm17yibXbj3b+n3l4QsfDBVhT+r34l92yV5r/ZRdCpsUFIc1xknx3XtAwat3jMyC0I7162PuV7Qi8XC8v2Tmg==} - '@unocss/transformer-directives@0.60.0': - resolution: {integrity: sha512-ZG+TvpvimH5LkFkqz27BQryhF8oeM+mUkD9oV+DhtQBadV5pcMvi40NB5VEeDj3dsogHTMrl13dsHXdrINI7jQ==} + '@unocss/transformer-directives@0.60.1': + resolution: {integrity: sha512-rdR4SPjU6s8sX+rtyP7Ma0enK8P1Cn0VOmcv5eb//KqYuCP0shOkw/RAHkPm3qdcIr/swio3vsdZI0Ag5lkRLQ==} - '@unocss/transformer-variant-group@0.60.0': - resolution: {integrity: sha512-00PikfUfJN+LdTaoILA+iXbPB5J8/zX1RcJx1DwKF2iRfKNmSu9+jsyNN0zyQX2jOVXY4UuK3x8LJ1qtZl1edA==} + '@unocss/transformer-variant-group@0.60.1': + resolution: {integrity: sha512-SNDyLGgQa7WFLg+i6lfr8TV1sFTkOD58QI95DTcYOwzm2V1Bw5c/4CLKumKaDL/F2nElgSlnOUExsrn4Pla4Qg==} - '@unocss/vite@0.60.0': - resolution: {integrity: sha512-Xyqg+slwR+y5eggPZu74OwVZrIyYe+Ut3WzdmM3mgHBh+ty8Ci85ndm71K5wagyDNvbfLj5gA10h14n3OyB9RQ==} + '@unocss/vite@0.60.1': + resolution: {integrity: sha512-Uyarp5LJVU12FZ/YzD8av4UMbxy8O9EN5XVJRH6MOGSY8Hnjq8g5AUudDr2JH3zVIWVNe4mavcAU/vaLVEK6nA==} peerDependencies: vite: 5.2.11 @@ -6245,9 +6242,9 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - rimraf@5.0.6: - resolution: {integrity: sha512-X72SgyOf+1lFnGM6gYcmZ4+jMOwuT4E4SajKQzUIlI7EoR5eFHMhS/wf8Ll0mN+w2bxcIVldrJQ6xT7HFQywjg==} - engines: {node: '>=14'} + rimraf@5.0.7: + resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} + engines: {node: '>=14.18'} hasBin: true rollup-plugin-dts@6.1.0: @@ -6850,11 +6847,11 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - unocss@0.60.0: - resolution: {integrity: sha512-jVNrjjR9j/PQylfF1z8sz2L2sTnnmGRUTXKQmCTURBBnk2Q9VqoYIvShppPUn4dWvnOy5Xj2gPIXBMin56nt0Q==} + unocss@0.60.1: + resolution: {integrity: sha512-E7xlV7Kbe+Cgl/y2QHNI31IfdY3J7/XsptOJLaQCtfbejX/sJMgQ8GiFOL+MGyssqeMWWayUiBhCN2UX9GXsMg==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.60.0 + '@unocss/webpack': 0.60.1 vite: 5.2.11 peerDependenciesMeta: '@unocss/webpack': @@ -7426,8 +7423,6 @@ snapshots: execa: 5.1.1 find-up: 5.0.0 - '@antfu/utils@0.7.7': {} - '@antfu/utils@0.7.8': {} '@apidevtools/json-schema-ref-parser@11.6.0': @@ -8019,7 +8014,7 @@ snapshots: '@iconify/utils@2.1.23': dependencies: '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.7 + '@antfu/utils': 0.7.8 '@iconify/types': 2.0.0 debug: 4.3.4 kolorist: 1.8.0 @@ -8227,13 +8222,13 @@ snapshots: rc9: 2.1.2 semver: 7.6.2 - '@nuxt/devtools@1.3.1(@unocss/reset@0.60.0)(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.0(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.1)(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.1(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))': 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-wizard': 1.3.1 '@nuxt/kit': link:packages/kit - '@vue/devtools-applet': 7.1.3(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) birpc: 0.2.17 @@ -8419,7 +8414,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 scule: 1.3.0 - shiki: 1.1.6 + shiki: 1.3.0 ufo: 1.5.3 unified: 11.0.4 unist-builder: 4.0.0 @@ -9106,33 +9101,33 @@ snapshots: unhead: 1.9.10 vue: 3.4.27(typescript@5.4.5) - '@unocss/astro@0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.60.1(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.0 - '@unocss/reset': 0.60.0 - '@unocss/vite': 0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + '@unocss/core': 0.60.1 + '@unocss/reset': 0.60.1 + '@unocss/vite': 0.60.1(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.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': dependencies: - '@unocss/core': 0.60.0 - '@unocss/reset': 0.60.0 - '@unocss/vite': 0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + '@unocss/core': 0.60.1 + '@unocss/reset': 0.60.1 + '@unocss/vite': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: vite: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - '@unocss/cli@0.60.0(rollup@4.17.2)': + '@unocss/cli@0.60.1(rollup@4.17.2)': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - '@unocss/config': 0.60.0 - '@unocss/core': 0.60.0 - '@unocss/preset-uno': 0.60.0 + '@unocss/config': 0.60.1 + '@unocss/core': 0.60.1 + '@unocss/preset-uno': 0.60.1 cac: 6.7.14 chokidar: 3.6.0 colorette: 2.0.20 @@ -9144,124 +9139,124 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/config@0.60.0': + '@unocss/config@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 unconfig: 0.3.13 - '@unocss/core@0.60.0': {} + '@unocss/core@0.60.1': {} - '@unocss/extractor-arbitrary-variants@0.60.0': + '@unocss/extractor-arbitrary-variants@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 - '@unocss/inspector@0.60.0': + '@unocss/inspector@0.60.1': dependencies: - '@unocss/core': 0.60.0 - '@unocss/rule-utils': 0.60.0 + '@unocss/core': 0.60.1 + '@unocss/rule-utils': 0.60.1 gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/postcss@0.60.0(postcss@8.4.38)': + '@unocss/postcss@0.60.1(postcss@8.4.38)': dependencies: - '@unocss/config': 0.60.0 - '@unocss/core': 0.60.0 - '@unocss/rule-utils': 0.60.0 + '@unocss/config': 0.60.1 + '@unocss/core': 0.60.1 + '@unocss/rule-utils': 0.60.1 css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.10 postcss: 8.4.38 - '@unocss/preset-attributify@0.60.0': + '@unocss/preset-attributify@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 - '@unocss/preset-icons@0.60.0': + '@unocss/preset-icons@0.60.1': dependencies: '@iconify/utils': 2.1.23 - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 ofetch: 1.3.4 transitivePeerDependencies: - supports-color - '@unocss/preset-mini@0.60.0': + '@unocss/preset-mini@0.60.1': dependencies: - '@unocss/core': 0.60.0 - '@unocss/extractor-arbitrary-variants': 0.60.0 - '@unocss/rule-utils': 0.60.0 + '@unocss/core': 0.60.1 + '@unocss/extractor-arbitrary-variants': 0.60.1 + '@unocss/rule-utils': 0.60.1 - '@unocss/preset-tagify@0.60.0': + '@unocss/preset-tagify@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 - '@unocss/preset-typography@0.60.0': + '@unocss/preset-typography@0.60.1': dependencies: - '@unocss/core': 0.60.0 - '@unocss/preset-mini': 0.60.0 + '@unocss/core': 0.60.1 + '@unocss/preset-mini': 0.60.1 - '@unocss/preset-uno@0.60.0': + '@unocss/preset-uno@0.60.1': dependencies: - '@unocss/core': 0.60.0 - '@unocss/preset-mini': 0.60.0 - '@unocss/preset-wind': 0.60.0 - '@unocss/rule-utils': 0.60.0 + '@unocss/core': 0.60.1 + '@unocss/preset-mini': 0.60.1 + '@unocss/preset-wind': 0.60.1 + '@unocss/rule-utils': 0.60.1 - '@unocss/preset-web-fonts@0.60.0': + '@unocss/preset-web-fonts@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 ofetch: 1.3.4 - '@unocss/preset-wind@0.60.0': + '@unocss/preset-wind@0.60.1': dependencies: - '@unocss/core': 0.60.0 - '@unocss/preset-mini': 0.60.0 - '@unocss/rule-utils': 0.60.0 + '@unocss/core': 0.60.1 + '@unocss/preset-mini': 0.60.1 + '@unocss/rule-utils': 0.60.1 - '@unocss/reset@0.60.0': {} + '@unocss/reset@0.60.1': {} - '@unocss/rule-utils@0.60.0': + '@unocss/rule-utils@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 magic-string: 0.30.10 - '@unocss/scope@0.60.0': {} + '@unocss/scope@0.60.1': {} - '@unocss/transformer-attributify-jsx-babel@0.60.0': + '@unocss/transformer-attributify-jsx-babel@0.60.1': dependencies: '@babel/core': 7.24.5 '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 transitivePeerDependencies: - supports-color - '@unocss/transformer-attributify-jsx@0.60.0': + '@unocss/transformer-attributify-jsx@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 - '@unocss/transformer-compile-class@0.60.0': + '@unocss/transformer-compile-class@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 - '@unocss/transformer-directives@0.60.0': + '@unocss/transformer-directives@0.60.1': dependencies: - '@unocss/core': 0.60.0 - '@unocss/rule-utils': 0.60.0 + '@unocss/core': 0.60.1 + '@unocss/rule-utils': 0.60.1 css-tree: 2.3.1 - '@unocss/transformer-variant-group@0.60.0': + '@unocss/transformer-variant-group@0.60.1': dependencies: - '@unocss/core': 0.60.0 + '@unocss/core': 0.60.1 - '@unocss/vite@0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))': + '@unocss/vite@0.60.1(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.0 - '@unocss/core': 0.60.0 - '@unocss/inspector': 0.60.0 - '@unocss/scope': 0.60.0 - '@unocss/transformer-directives': 0.60.0 + '@unocss/config': 0.60.1 + '@unocss/core': 0.60.1 + '@unocss/inspector': 0.60.1 + '@unocss/scope': 0.60.1 + '@unocss/transformer-directives': 0.60.1 chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 @@ -9269,15 +9264,15 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/vite@0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': + '@unocss/vite@0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(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.0 - '@unocss/core': 0.60.0 - '@unocss/inspector': 0.60.0 - '@unocss/scope': 0.60.0 - '@unocss/transformer-directives': 0.60.0 + '@unocss/config': 0.60.1 + '@unocss/core': 0.60.1 + '@unocss/inspector': 0.60.1 + '@unocss/scope': 0.60.1 + '@unocss/transformer-directives': 0.60.1 chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 @@ -9483,12 +9478,12 @@ snapshots: '@vue/devtools-api@6.5.1': {} - '@vue/devtools-applet@7.1.3(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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))': 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-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.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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)) lodash-es: 4.17.21 perfect-debounce: 1.0.0 shiki: 1.3.0 @@ -9538,9 +9533,9 @@ snapshots: dependencies: rfdc: 1.3.1 - '@vue/devtools-ui@7.1.3(@unocss/reset@0.60.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.0(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.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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))': dependencies: - '@unocss/reset': 0.60.0 + '@unocss/reset': 0.60.1 '@vue/devtools-shared': 7.1.3 '@vueuse/components': 10.9.0(vue@3.4.27(typescript@5.4.5)) '@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.4.5)) @@ -9548,7 +9543,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.0(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.1(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) transitivePeerDependencies: - '@vue/composition-api' @@ -13585,7 +13580,7 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@5.0.6: + rimraf@5.0.7: dependencies: glob: 10.3.12 @@ -14149,7 +14144,7 @@ snapshots: unconfig@0.3.13: dependencies: - '@antfu/utils': 0.7.7 + '@antfu/utils': 0.7.8 defu: 6.1.4 jiti: 1.21.0 @@ -14252,28 +14247,28 @@ snapshots: universalify@2.0.0: {} - unocss@0.60.0(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.1(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.0(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.0(rollup@4.17.2) - '@unocss/core': 0.60.0 - '@unocss/extractor-arbitrary-variants': 0.60.0 - '@unocss/postcss': 0.60.0(postcss@8.4.38) - '@unocss/preset-attributify': 0.60.0 - '@unocss/preset-icons': 0.60.0 - '@unocss/preset-mini': 0.60.0 - '@unocss/preset-tagify': 0.60.0 - '@unocss/preset-typography': 0.60.0 - '@unocss/preset-uno': 0.60.0 - '@unocss/preset-web-fonts': 0.60.0 - '@unocss/preset-wind': 0.60.0 - '@unocss/reset': 0.60.0 - '@unocss/transformer-attributify-jsx': 0.60.0 - '@unocss/transformer-attributify-jsx-babel': 0.60.0 - '@unocss/transformer-compile-class': 0.60.0 - '@unocss/transformer-directives': 0.60.0 - '@unocss/transformer-variant-group': 0.60.0 - '@unocss/vite': 0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + '@unocss/astro': 0.60.1(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.1(rollup@4.17.2) + '@unocss/core': 0.60.1 + '@unocss/extractor-arbitrary-variants': 0.60.1 + '@unocss/postcss': 0.60.1(postcss@8.4.38) + '@unocss/preset-attributify': 0.60.1 + '@unocss/preset-icons': 0.60.1 + '@unocss/preset-mini': 0.60.1 + '@unocss/preset-tagify': 0.60.1 + '@unocss/preset-typography': 0.60.1 + '@unocss/preset-uno': 0.60.1 + '@unocss/preset-web-fonts': 0.60.1 + '@unocss/preset-wind': 0.60.1 + '@unocss/reset': 0.60.1 + '@unocss/transformer-attributify-jsx': 0.60.1 + '@unocss/transformer-attributify-jsx-babel': 0.60.1 + '@unocss/transformer-compile-class': 0.60.1 + '@unocss/transformer-directives': 0.60.1 + '@unocss/transformer-variant-group': 0.60.1 + '@unocss/vite': 0.60.1(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: @@ -14281,28 +14276,28 @@ snapshots: - rollup - supports-color - unocss@0.60.0(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)): + unocss@0.60.1(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) - '@unocss/cli': 0.60.0(rollup@4.17.2) - '@unocss/core': 0.60.0 - '@unocss/extractor-arbitrary-variants': 0.60.0 - '@unocss/postcss': 0.60.0(postcss@8.4.38) - '@unocss/preset-attributify': 0.60.0 - '@unocss/preset-icons': 0.60.0 - '@unocss/preset-mini': 0.60.0 - '@unocss/preset-tagify': 0.60.0 - '@unocss/preset-typography': 0.60.0 - '@unocss/preset-uno': 0.60.0 - '@unocss/preset-web-fonts': 0.60.0 - '@unocss/preset-wind': 0.60.0 - '@unocss/reset': 0.60.0 - '@unocss/transformer-attributify-jsx': 0.60.0 - '@unocss/transformer-attributify-jsx-babel': 0.60.0 - '@unocss/transformer-compile-class': 0.60.0 - '@unocss/transformer-directives': 0.60.0 - '@unocss/transformer-variant-group': 0.60.0 - '@unocss/vite': 0.60.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + '@unocss/astro': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + '@unocss/cli': 0.60.1(rollup@4.17.2) + '@unocss/core': 0.60.1 + '@unocss/extractor-arbitrary-variants': 0.60.1 + '@unocss/postcss': 0.60.1(postcss@8.4.38) + '@unocss/preset-attributify': 0.60.1 + '@unocss/preset-icons': 0.60.1 + '@unocss/preset-mini': 0.60.1 + '@unocss/preset-tagify': 0.60.1 + '@unocss/preset-typography': 0.60.1 + '@unocss/preset-uno': 0.60.1 + '@unocss/preset-web-fonts': 0.60.1 + '@unocss/preset-wind': 0.60.1 + '@unocss/reset': 0.60.1 + '@unocss/transformer-attributify-jsx': 0.60.1 + '@unocss/transformer-attributify-jsx-babel': 0.60.1 + '@unocss/transformer-compile-class': 0.60.1 + '@unocss/transformer-directives': 0.60.1 + '@unocss/transformer-variant-group': 0.60.1 + '@unocss/vite': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: vite: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: From 2417c044d3a3948723bb8d1f8a038c40abc7647b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 15:18:07 +0100 Subject: [PATCH 07/85] chore(deps): update all non-major dependencies (main) (#27173) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 4 +- .github/workflows/scorecards.yml | 2 +- package.json | 2 +- packages/nuxt/package.json | 2 +- packages/ui-templates/package.json | 4 +- packages/vite/package.json | 2 +- pnpm-lock.yaml | 558 ++++++++++++++--------------- 7 files changed, 287 insertions(+), 287 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7bcd0507e8..b2ebdcf602 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,7 +83,7 @@ jobs: run: pnpm install - name: Initialize CodeQL - uses: github/codeql-action/init@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/init@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 with: languages: javascript queries: +security-and-quality @@ -95,7 +95,7 @@ jobs: path: packages - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/analyze@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 with: category: "/language:javascript" diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 2645f4128c..61e0ca708e 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -68,7 +68,7 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 if: github.repository == 'nuxt/nuxt' && success() with: sarif_file: results.sarif diff --git a/package.json b/package.json index 2452551dbf..95c932c7e9 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "vue-router": "4.3.2", "vue-tsc": "2.0.17" }, - "packageManager": "pnpm@9.1.0", + "packageManager": "pnpm@9.1.1", "engines": { "node": "^16.10.0 || >=18.0.0" }, diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index a54ff0cc19..98d3ec9458 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -76,7 +76,7 @@ "defu": "^6.1.4", "destr": "^2.0.3", "devalue": "^5.0.0", - "esbuild": "^0.21.1", + "esbuild": "^0.21.2", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "fs-extra": "^11.2.0", diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index a7389b18ae..3be1cd8c1d 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/html-minifier": "4.0.5", - "@unocss/reset": "0.60.1", + "@unocss/reset": "0.60.2", "critters": "0.0.22", "execa": "9.0.2", "globby": "14.0.1", @@ -30,7 +30,7 @@ "pathe": "1.1.2", "prettier": "3.2.5", "scule": "1.3.0", - "unocss": "0.60.1", + "unocss": "0.60.2", "vite": "5.2.11" } } diff --git a/packages/vite/package.json b/packages/vite/package.json index 8f3db58325..c94a1a2d24 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -41,7 +41,7 @@ "consola": "^3.2.3", "cssnano": "^7.0.1", "defu": "^6.1.4", - "esbuild": "^0.21.1", + "esbuild": "^0.21.2", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "externality": "^1.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 621aff2841..9f1026d919 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -251,7 +251,7 @@ importers: version: 2.0.2 '@nuxt/devtools': specifier: ^1.3.1 - version: 1.3.1(@unocss/reset@0.60.1)(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.1(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.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/kit': specifier: workspace:* version: link:../kit @@ -301,8 +301,8 @@ importers: specifier: ^5.0.0 version: 5.0.0 esbuild: - specifier: ^0.21.1 - version: 0.21.1 + specifier: ^0.21.2 + version: 0.21.2 escape-string-regexp: specifier: ^5.0.0 version: 5.0.0 @@ -567,8 +567,8 @@ importers: specifier: 4.0.5 version: 4.0.5 '@unocss/reset': - specifier: 0.60.1 - version: 0.60.1 + specifier: 0.60.2 + version: 0.60.2 critters: specifier: 0.0.22 version: 0.0.22 @@ -597,8 +597,8 @@ importers: specifier: 1.3.0 version: 1.3.0 unocss: - specifier: 0.60.1 - version: 0.60.1(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + specifier: 0.60.2 + version: 0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) vite: specifier: 5.2.11 version: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) @@ -633,8 +633,8 @@ importers: specifier: ^6.1.4 version: 6.1.4 esbuild: - specifier: ^0.21.1 - version: 0.21.1 + specifier: ^0.21.2 + version: 0.21.2 escape-string-regexp: specifier: ^5.0.0 version: 5.0.0 @@ -1197,8 +1197,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.21.1': - resolution: {integrity: sha512-O7yppwipkXvnEPjzkSXJRk2g4bS8sUx9p9oXHq9MU/U7lxUzZVsnFZMDTmeeX9bfQxrFcvOacl/ENgOh0WP9pA==} + '@esbuild/aix-ppc64@0.21.2': + resolution: {integrity: sha512-/c7hocx0pm14bHQlqUVKmxwdT/e5/KkyoY1W8F9lk/8CkE037STDDz8PXUP/LE6faj2HqchvDs9GcShxFhI78Q==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -1221,8 +1221,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.21.1': - resolution: {integrity: sha512-jXhccq6es+onw7x8MxoFnm820mz7sGa9J14kLADclmiEUH4fyj+FjR6t0M93RgtlI/awHWhtF0Wgfhqgf9gDZA==} + '@esbuild/android-arm64@0.21.2': + resolution: {integrity: sha512-SGZKngoTWVUriO5bDjI4WDGsNx2VKZoXcds+ita/kVYB+8IkSCKDRDaK+5yu0b5S0eq6B3S7fpiEvpsa2ammlQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1245,8 +1245,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.21.1': - resolution: {integrity: sha512-hh3jKWikdnTtHCglDAeVO3Oyh8MaH8xZUaWMiCCvJ9/c3NtPqZq+CACOlGTxhddypXhl+8B45SeceYBfB/e8Ow==} + '@esbuild/android-arm@0.21.2': + resolution: {integrity: sha512-G1ve3b4FeyJeyCjB4MX1CiWyTaIJwT9wAYE+8+IRA53YoN/reC/Bf2GDRXAzDTnh69Fpl+1uIKg76DiB3U6vwQ==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1269,8 +1269,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.21.1': - resolution: {integrity: sha512-NPObtlBh4jQHE01gJeucqEhdoD/4ya2owSIS8lZYS58aR0x7oZo9lB2lVFxgTANSa5MGCBeoQtr+yA9oKCGPvA==} + '@esbuild/android-x64@0.21.2': + resolution: {integrity: sha512-1wzzNoj2QtNkAYwIcWJ66UTRA80+RTQ/kuPMtEuP0X6dp5Ar23Dn566q3aV61h4EYrrgGlOgl/HdcqN/2S/2vg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1293,8 +1293,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.21.1': - resolution: {integrity: sha512-BLT7TDzqsVlQRmJfO/FirzKlzmDpBWwmCUlyggfzUwg1cAxVxeA4O6b1XkMInlxISdfPAOunV9zXjvh5x99Heg==} + '@esbuild/darwin-arm64@0.21.2': + resolution: {integrity: sha512-ZyMkPWc5eTROcLOA10lEqdDSTc6ds6nuh3DeHgKip/XJrYjZDfnkCVSty8svWdy+SC1f77ULtVeIqymTzaB6/Q==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1317,8 +1317,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.21.1': - resolution: {integrity: sha512-D3h3wBQmeS/vp93O4B+SWsXB8HvRDwMyhTNhBd8yMbh5wN/2pPWRW5o/hM3EKgk9bdKd9594lMGoTCTiglQGRQ==} + '@esbuild/darwin-x64@0.21.2': + resolution: {integrity: sha512-K4ZdVq1zP9v51h/cKVna7im7G0zGTKKB6bP2yJiSmHjjOykbd8DdhrSi8V978sF69rkwrn8zCyL2t6I3ei6j9A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1341,8 +1341,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.21.1': - resolution: {integrity: sha512-/uVdqqpNKXIxT6TyS/oSK4XE4xWOqp6fh4B5tgAwozkyWdylcX+W4YF2v6SKsL4wCQ5h1bnaSNjWPXG/2hp8AQ==} + '@esbuild/freebsd-arm64@0.21.2': + resolution: {integrity: sha512-4kbOGdpA61CXqadD+Gb/Pw3YXamQGiz9mal/h93rFVSjr5cgMnmJd/gbfPRm+3BMifvnaOfS1gNWaIDxkE2A3A==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1365,8 +1365,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.1': - resolution: {integrity: sha512-paAkKN1n1jJitw+dAoR27TdCzxRl1FOEITx3h201R6NoXUojpMzgMLdkXVgCvaCSCqwYkeGLoe9UVNRDKSvQgw==} + '@esbuild/freebsd-x64@0.21.2': + resolution: {integrity: sha512-ShS+R09nuHzDBfPeMUliKZX27Wrmr8UFp93aFf/S8p+++x5BZ+D344CLKXxmY6qzgTL3mILSImPCNJOzD6+RRg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1389,8 +1389,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.21.1': - resolution: {integrity: sha512-G65d08YoH00TL7Xg4LaL3gLV21bpoAhQ+r31NUu013YB7KK0fyXIt05VbsJtpqh/6wWxoLJZOvQHYnodRrnbUQ==} + '@esbuild/linux-arm64@0.21.2': + resolution: {integrity: sha512-Hdu8BL+AmO+eCDvvT6kz/fPQhvuHL8YK4ExKZfANWsNe1kFGOHw7VJvS/FKSLFqheXmB3rTF3xFQIgUWPYsGnA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1413,8 +1413,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.21.1': - resolution: {integrity: sha512-tRHnxWJnvNnDpNVnsyDhr1DIQZUfCXlHSCDohbXFqmg9W4kKR7g8LmA3kzcwbuxbRMKeit8ladnCabU5f2traA==} + '@esbuild/linux-arm@0.21.2': + resolution: {integrity: sha512-nnGXjOAv+7cM3LYRx4tJsYdgy8dGDGkAzF06oIDGppWbUkUKN9SmgQA8H0KukpU0Pjrj9XmgbWqMVSX/U7eeTA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1437,8 +1437,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.21.1': - resolution: {integrity: sha512-tt/54LqNNAqCz++QhxoqB9+XqdsaZOtFD/srEhHYwBd3ZUOepmR1Eeot8bS+Q7BiEvy9vvKbtpHf+r6q8hF5UA==} + '@esbuild/linux-ia32@0.21.2': + resolution: {integrity: sha512-m73BOCW2V9lcj7RtEMi+gBfHC6n3+VHpwQXP5offtQMPLDkpVolYn1YGXxOZ9hp4h3UPRKuezL7WkBsw+3EB3Q==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1461,8 +1461,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.21.1': - resolution: {integrity: sha512-MhNalK6r0nZD0q8VzUBPwheHzXPr9wronqmZrewLfP7ui9Fv1tdPmg6e7A8lmg0ziQCziSDHxh3cyRt4YMhGnQ==} + '@esbuild/linux-loong64@0.21.2': + resolution: {integrity: sha512-84eYHwwWHq3myIY/6ikALMcnwkf6Qo7NIq++xH0x+cJuUNpdwh8mlpUtRY+JiGUc60yu7ElWBbVHGWTABTclGw==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1485,8 +1485,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.21.1': - resolution: {integrity: sha512-YCKVY7Zen5rwZV+nZczOhFmHaeIxR4Zn3jcmNH53LbgF6IKRwmrMywqDrg4SiSNApEefkAbPSIzN39FC8VsxPg==} + '@esbuild/linux-mips64el@0.21.2': + resolution: {integrity: sha512-9siSZngT0/ZKG+AH+/agwKF29LdCxw4ODi/PiE0F52B2rtLozlDP92umf8G2GPoVV611LN4pZ+nSTckebOscUA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1509,8 +1509,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.21.1': - resolution: {integrity: sha512-bw7bcQ+270IOzDV4mcsKAnDtAFqKO0jVv3IgRSd8iM0ac3L8amvCrujRVt1ajBTJcpDaFhIX+lCNRKteoDSLig==} + '@esbuild/linux-ppc64@0.21.2': + resolution: {integrity: sha512-y0T4aV2CA+ic04ULya1A/8M2RDpDSK2ckgTj6jzHKFJvCq0jQg8afQQIn4EM0G8u2neyOiNHgSF9YKPfuqKOVw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1533,8 +1533,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.21.1': - resolution: {integrity: sha512-ARmDRNkcOGOm1AqUBSwRVDfDeD9hGYRfkudP2QdoonBz1ucWVnfBPfy7H4JPI14eYtZruRSczJxyu7SRYDVOcg==} + '@esbuild/linux-riscv64@0.21.2': + resolution: {integrity: sha512-x5ssCdXmZC86L2Li1qQPF/VaC4VP20u/Zm8jlAu9IiVOVi79YsSz6cpPDYZl1rfKSHYCJW9XBfFCo66S5gVPSA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1557,8 +1557,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.21.1': - resolution: {integrity: sha512-o73TcUNMuoTZlhwFdsgr8SfQtmMV58sbgq6gQq9G1xUiYnHMTmJbwq65RzMx89l0iya69lR4bxBgtWiiOyDQZA==} + '@esbuild/linux-s390x@0.21.2': + resolution: {integrity: sha512-NP7fTpGSFWdXyvp8iAFU04uFh9ARoplFVM/m+8lTRpaYG+2ytHPZWyscSsMM6cvObSIK2KoPHXiZD4l99WaxbQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1581,8 +1581,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.21.1': - resolution: {integrity: sha512-da4/1mBJwwgJkbj4fMH7SOXq2zapgTo0LKXX1VUZ0Dxr+e8N0WbS80nSZ5+zf3lvpf8qxrkZdqkOqFfm57gXwA==} + '@esbuild/linux-x64@0.21.2': + resolution: {integrity: sha512-giZ/uOxWDKda44ZuyfKbykeXznfuVNkTgXOUOPJIjbayJV6FRpQ4zxUy9JMBPLaK9IJcdWtaoeQrYBMh3Rr4vQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1605,8 +1605,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.21.1': - resolution: {integrity: sha512-CPWs0HTFe5woTJN5eKPvgraUoRHrCtzlYIAv9wBC+FAyagBSaf+UdZrjwYyTGnwPGkThV4OCI7XibZOnPvONVw==} + '@esbuild/netbsd-x64@0.21.2': + resolution: {integrity: sha512-IeFMfGFSQfIj1d4XU+6lkbFzMR+mFELUUVYrZ+jvWzG4NGvs6o53ReEHLHpYkjRbdEjJy2W3lTekTxrFHW7YJg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1629,8 +1629,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.1': - resolution: {integrity: sha512-xxhTm5QtzNLc24R0hEkcH+zCx/o49AsdFZ0Cy5zSd/5tOj4X2g3/2AJB625NoadUuc4A8B3TenLJoYdWYOYCew==} + '@esbuild/openbsd-x64@0.21.2': + resolution: {integrity: sha512-48QhWD6WxcebNNaE4FCwgvQVUnAycuTd+BdvA/oZu+/MmbpU8pY2dMEYlYzj5uNHWIG5jvdDmFXu0naQeOWUoA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1653,8 +1653,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.21.1': - resolution: {integrity: sha512-CWibXszpWys1pYmbr9UiKAkX6x+Sxw8HWtw1dRESK1dLW5fFJ6rMDVw0o8MbadusvVQx1a8xuOxnHXT941Hp1A==} + '@esbuild/sunos-x64@0.21.2': + resolution: {integrity: sha512-90r3nTBLgdIgD4FCVV9+cR6Hq2Dzs319icVsln+NTmTVwffWcCqXGml8rAoocHuJ85kZK36DCteii96ba/PX8g==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1677,8 +1677,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.21.1': - resolution: {integrity: sha512-jb5B4k+xkytGbGUS4T+Z89cQJ9DJ4lozGRSV+hhfmCPpfJ3880O31Q1srPCimm+V6UCbnigqD10EgDNgjvjerQ==} + '@esbuild/win32-arm64@0.21.2': + resolution: {integrity: sha512-sNndlsBT8OeE/MZDSGpRDJlWuhjuUz/dn80nH0EP4ZzDUYvMDVa7G87DVpweBrn4xdJYyXS/y4CQNrf7R2ODXg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1701,8 +1701,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.21.1': - resolution: {integrity: sha512-PgyFvjJhXqHn1uxPhyN1wZ6dIomKjiLUQh1LjFvjiV1JmnkZ/oMPrfeEAZg5R/1ftz4LZWZr02kefNIQ5SKREQ==} + '@esbuild/win32-ia32@0.21.2': + resolution: {integrity: sha512-Ti2QChGNFzWhUNNVuU4w21YkYTErsNh3h+CzvlEhzgRbwsJ7TrWQqRzW3bllLKKvTppuF3DJ3XP1GEg11AfrEQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1725,8 +1725,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.21.1': - resolution: {integrity: sha512-W9NttRZQR5ehAiqHGDnvfDaGmQOm6Fi4vSlce8mjM75x//XKuVAByohlEX6N17yZnVXxQFuh4fDRunP8ca6bfA==} + '@esbuild/win32-x64@0.21.2': + resolution: {integrity: sha512-VEfTCZicoZnZ6sGkjFPGRFFJuL2fZn2bLhsekZl1CJslflp2cJS/VoKs1jMk+3pDfsGW6CfQVUckP707HwbXeQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2618,89 +2618,89 @@ packages: peerDependencies: vue: 3.4.27 - '@unocss/astro@0.60.1': - resolution: {integrity: sha512-I9PQTJqtv4/9MK32W9RtPHAskpTXYAyshFAgGMdWQVA7gLVwSZoT2vuOnT32KEb1OqvW9fwwjJHiNRxSCn44ew==} + '@unocss/astro@0.60.2': + resolution: {integrity: sha512-H8kJHj8aCQXksr0o7OpHqNkzm0RmpOm+qCt8vRcJJVFrdzQyaIQ/vyq3BUTV0Ex6OSzPirTe8fOaWoZdKtKf2Q==} peerDependencies: vite: 5.2.11 peerDependenciesMeta: vite: optional: true - '@unocss/cli@0.60.1': - resolution: {integrity: sha512-hNtlc7qhUh0ZxqIzxASMu7NyBwWdspEbQ/VgDPoqPErp+ipuLteW97GAUFG1p5AoSO/xJ5i1HuwGja760urt8w==} + '@unocss/cli@0.60.2': + resolution: {integrity: sha512-zX7eM95UI6LpKRfHTr8T2gSlFFXemPUswBxR5H4vPVlLeeCOhJWfc04vGdtSwoix5qFdnhQWIwzXGXAaB+kwoA==} engines: {node: '>=14'} hasBin: true - '@unocss/config@0.60.1': - resolution: {integrity: sha512-9moB8hgEfJ5q7W8w40dANbdFZRlJdJbCIzTraUwpiTWjzYdct8XPNYmyterVt0LZ8b85LOk14PKPXjp1IiksSw==} + '@unocss/config@0.60.2': + resolution: {integrity: sha512-EEgivE1xEnamAsYMcmjUmLJjOa9dBdV2zygT/blSFyX6rMfA4OuRlZ8hgfeWrHImZGiTXUU0jV2EaRmK9jEImQ==} engines: {node: '>=14'} - '@unocss/core@0.60.1': - resolution: {integrity: sha512-Ks+BZeJRlH+51sHfxZMYwlRnAy6Kl0nZGfhrU7NRjWCN9QhQDx99zRoo9mqOAZyT16Sj731j6+T0tT0pXHxpkg==} + '@unocss/core@0.60.2': + resolution: {integrity: sha512-9i+eAJAqvy9bv0vrQxUU7VtR+wO6Vfk6dqrPHKRV/vlbwRT18v/C++dQ2L6PLM1CKxgNTeld0iTlpo8J3xZlxQ==} - '@unocss/extractor-arbitrary-variants@0.60.1': - resolution: {integrity: sha512-/HRBMU6AlQuozfYjg77GYF3lsdArM44ycEO6rDWw4QgBvNI6XFY9W3QKcuqI0ABVQdqAc3v4qkUaTNctFi+RAw==} + '@unocss/extractor-arbitrary-variants@0.60.2': + resolution: {integrity: sha512-uO4ZPUcaYvyWshXnqzFnSWeh+Du6xVYwaz3oBKq4n7Ryw2Grc0IhiZe6n9MC8w6nkbopdo6ngr5LnFGp86horQ==} - '@unocss/inspector@0.60.1': - resolution: {integrity: sha512-SqEdmrLrzEaQpfiY/Cfo/4+JlIQ1i0A5ISsFQeJAUZo2BKndV3JM8UzwdMc1SI3+bWx7wKSFtFWxboXpHv5pRw==} + '@unocss/inspector@0.60.2': + resolution: {integrity: sha512-tc+TtTA7yNCS10oT7MfI2rEv1KErwLgEDRvBLCM1vsXmjzsGxkhqnT3vT5pqRkENYh/QhmIfpz1899GvH8WBMQ==} - '@unocss/postcss@0.60.1': - resolution: {integrity: sha512-zGimdFqB+tFbcS0Xs4hauNB9HSxdB3Yzi4Ow7EDqYiO87SNS/lLAvAut9nsd4cVfkpm3bnkTc5R/vBmwY67o0g==} + '@unocss/postcss@0.60.2': + resolution: {integrity: sha512-fGXzhx5bh1iYxQ0wThmUsu+KMxCTqZsQQZ/a2kbTNzmOIslX1/cCWaQ62BWsfER7rOnZVG6DzGR+3CzVcDzuXg==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 - '@unocss/preset-attributify@0.60.1': - resolution: {integrity: sha512-nWsuMLXdAI+X9OP8iv/hEWRevE+7Rmet95O+A/O/75GmXcv6KRkTGnrkIse9ne2Mqfb1BG5g4OgvROpk+PFvYg==} + '@unocss/preset-attributify@0.60.2': + resolution: {integrity: sha512-PQDObhVtopL/eEceAHX/pBmPQhm50l4yhTu/pMH31hL13DuRYODngWe00jjgmMRTwIAFpMpDVKk2GjxeD05+cQ==} - '@unocss/preset-icons@0.60.1': - resolution: {integrity: sha512-rev1cUvfdYG48avJaXuL7DPgFoSuTktL2L3uA0+V/zgcdxPLQ2dI/nO3gMnt1VCvz7mRWK6Lh3wRhiNzkUfGmw==} + '@unocss/preset-icons@0.60.2': + resolution: {integrity: sha512-knE4CKn4tgjvyZQSZTuC5FIO2/jcP1AWBvpWyJTax5kcKAIrL8IU4b7PhiPwPrQpe0LBTtyQKWCXqWXp7DhDwA==} - '@unocss/preset-mini@0.60.1': - resolution: {integrity: sha512-X0V2wBZFRDxdRKkiC9t++7CsfkXtH0p6adVCoFzEi3fTy6XPTmBNZJ0VqLKj9Nm5hOm459x1CKn2gLEVIZkR3Q==} + '@unocss/preset-mini@0.60.2': + resolution: {integrity: sha512-Vp5UWzD9FgxeYNhyJIXjMt8HyL7joGJWzmFa2zR8ZAYZ+WIIIJWtxa+9/H8gJgnGTWa2H9oyj9h3IqOYT/lmSg==} - '@unocss/preset-tagify@0.60.1': - resolution: {integrity: sha512-uJOx5y9ubvstiJInZoVWEVjbV9cMy60Fi9NQwLr/Z9umsp26wb3UNCxYyuDwA9OGYUgcwllieCr2CfleEohKJA==} + '@unocss/preset-tagify@0.60.2': + resolution: {integrity: sha512-M730DpoPJ8/uG7aKme9EYrzspr0WfKp7z3CTpb2hb4YHuiCXmiTjdxo5xa9vK3ZGQTZlUkG0rz3TLw8tRKqRDg==} - '@unocss/preset-typography@0.60.1': - resolution: {integrity: sha512-KVlS3ToBHdtqKjOk584tPAkETqSUZ1Q+rEYUwW+go0+DLWo7FBttZD6pnsvyCimhebho+YfaLy6LVXzfFAyZGw==} + '@unocss/preset-typography@0.60.2': + resolution: {integrity: sha512-QKJi1LbC/f8RwwSwV6yQCXu/8wlBcrNyKiUSe7o9I2NYP+mzINlp64pXEP43UtUQo6x8Dil/TuzpRqMFPG/pMA==} - '@unocss/preset-uno@0.60.1': - resolution: {integrity: sha512-yATReqn3CqGKMsR+0J8kRrE/nkxxPEreColHDURyiEJSpkL+oTtIlyx5E4DKuzs1Ih8GmVNIoIp6uTCKCfBi+w==} + '@unocss/preset-uno@0.60.2': + resolution: {integrity: sha512-ggOCehuBm6depGV+79heBlcYlwgcfbIMLnxbywZPIrLwPB/4YaTArBcG4giKILyu4p2PcodAZvfv4uYXrLaE5Q==} - '@unocss/preset-web-fonts@0.60.1': - resolution: {integrity: sha512-LEzUCEfXiED/CGKfaFj9n3TW/vpiLQl4Qhjq56KVF2Ml3TWs3tt1ihT6MrxmmC7o4VjSSkJxgOa9n6ruSqvcGA==} + '@unocss/preset-web-fonts@0.60.2': + resolution: {integrity: sha512-1lHZVOR6JHkPOvFBQeqZLoAwDk9spUxrX2WfLSVL+sCuBLLeo8voa/LnCxPxKiQwKZGEEoh+qM2MKsLnRd+P6w==} - '@unocss/preset-wind@0.60.1': - resolution: {integrity: sha512-3RHDbVNyOWuRyt61XXqJ1jmHo6PV2LTrCbgEX0NvMBROfEP4p2G627t9fhls1cpNIe/HW5NFmiHjRZNFqCRdpA==} + '@unocss/preset-wind@0.60.2': + resolution: {integrity: sha512-9Ml2Wyn7LAcKfqHMJmflT/jdz5eLZtm3SEZKH5Lfk5MOyeVm6NDXjXK140u3zaP5tGKqtO6akJZGtYktWJ6+WQ==} - '@unocss/reset@0.60.1': - resolution: {integrity: sha512-lOgbSVm8CDY11aEWusYrCcstvmm+Z/vc4/oYNcbECSAsbzsREPTmcMonhSFxav52jbmuTk5MP3cuHYVEJLuQ3A==} + '@unocss/reset@0.60.2': + resolution: {integrity: sha512-kM0DYAcbmzpAyHefa/W+cifBTScWeZGsNpKagMQ6vci6OlTUiDB1GcmhQZ6dC0Ks59GtPmRbzZLaK1MgG6ayrA==} - '@unocss/rule-utils@0.60.1': - resolution: {integrity: sha512-UlP6Og/wOA00Uj3sZLlGVOAeP0XmwtBGBBBJp0OUskHDhXKOQyS4QqGa2hRhFPsINYEOBp+N5PeemuUxcYBrSQ==} + '@unocss/rule-utils@0.60.2': + resolution: {integrity: sha512-pg3XbU0s0TmmRk0UkSV6wTlca+Zz5xe9V+Mk8a5QqVp0oJ2jNWHO9AfzF4NcvTzM2zV2a/WbpjSBgoK8iAz3zg==} engines: {node: '>=14'} - '@unocss/scope@0.60.1': - resolution: {integrity: sha512-yTR9a5v3ZqTecQX8yN4yjAmKJralxip8Robc16Kt7AnkZtrenMRefgXANNpOk2MFhT72Nkpk9jPJbE7t9hacgQ==} + '@unocss/scope@0.60.2': + resolution: {integrity: sha512-pdwNZzQBb6rllgCwirPPrydDZH2XL0DI8/W7iM1RKYiNeDYjoDAWdVD46CrRmxadiHesrhdIwDL6rQz7Q7bl0w==} - '@unocss/transformer-attributify-jsx-babel@0.60.1': - resolution: {integrity: sha512-NFOu8ErOUe9YPXTADSinoTSeZ0lZHrqGQoiXStMEQpAFUINb2wtgRsCJddK/T/0lHjO3gMdEt3SdIirH97zOSw==} + '@unocss/transformer-attributify-jsx-babel@0.60.2': + resolution: {integrity: sha512-mb66b39qsjyH7+XqC/0ciLdPatVKH5CfMDxUMvzczuFTQ/+V3VAN/Mm6Ru+oxMgbf7qPTALSnLgu6RUhEldTzA==} - '@unocss/transformer-attributify-jsx@0.60.1': - resolution: {integrity: sha512-wpGQ1uylJ3JFu8TuEFSpPeNAxisG3ThnsAvZRHqRH7QPr3aWc9bxxZ+Zv1d3dsBHIr5KrHtuo2SKj9od/HawnA==} + '@unocss/transformer-attributify-jsx@0.60.2': + resolution: {integrity: sha512-GZbtuZLz3COMhEqdc33zmn8cKupAzVeLcAV66EL+zj7hfZIvrIEs5RFajtzlkQa7RC5YOOjZfHxMccGBEP1RMQ==} - '@unocss/transformer-compile-class@0.60.1': - resolution: {integrity: sha512-WGm17yibXbj3b+n3l4QsfDBVhT+r34l92yV5r/ZRdCpsUFIc1xknx3XtAwat3jMyC0I7162PuV7Qi8XC8v2Tmg==} + '@unocss/transformer-compile-class@0.60.2': + resolution: {integrity: sha512-dZfkGsqd7mdyRRCG8om5lTxQ4CjaaDka8gPbVawbDkK4U53G2vnN3daVlE7UflUXS32hOPj16RfOcb8cH+pypw==} - '@unocss/transformer-directives@0.60.1': - resolution: {integrity: sha512-rdR4SPjU6s8sX+rtyP7Ma0enK8P1Cn0VOmcv5eb//KqYuCP0shOkw/RAHkPm3qdcIr/swio3vsdZI0Ag5lkRLQ==} + '@unocss/transformer-directives@0.60.2': + resolution: {integrity: sha512-p4ZtXoz1mZ125WfANFAD6pXwQJdA4lfff5abZfoDiTPLvtvYQFmwGCeBXUnEKAnBnTwwiBD2zsIwGfumWAsqrA==} - '@unocss/transformer-variant-group@0.60.1': - resolution: {integrity: sha512-SNDyLGgQa7WFLg+i6lfr8TV1sFTkOD58QI95DTcYOwzm2V1Bw5c/4CLKumKaDL/F2nElgSlnOUExsrn4Pla4Qg==} + '@unocss/transformer-variant-group@0.60.2': + resolution: {integrity: sha512-2eE2MZhFhNj+3fxO9VE1yC8LddUn9vetNZKrgGlegrBH/jOL9Pn/vygBmMAg1XFLEgC3DtvwdzCKMVttV30Ivw==} - '@unocss/vite@0.60.1': - resolution: {integrity: sha512-Uyarp5LJVU12FZ/YzD8av4UMbxy8O9EN5XVJRH6MOGSY8Hnjq8g5AUudDr2JH3zVIWVNe4mavcAU/vaLVEK6nA==} + '@unocss/vite@0.60.2': + resolution: {integrity: sha512-+gBjyT5z/aZgPIZxpUbiXyOt1diY9YQfIJStOhBG0MP6daMdDX78SnDuUq/zKMk9EJuZ3FxhbZF5dYSD4bhJmw==} peerDependencies: vite: 5.2.11 @@ -3895,8 +3895,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.21.1: - resolution: {integrity: sha512-GPqx+FX7mdqulCeQ4TsGZQ3djBJkx5k7zBGtqt9ycVlWNg8llJ4RO9n2vciu8BN2zAEs6lPbPl0asZsAh7oWzg==} + esbuild@0.21.2: + resolution: {integrity: sha512-LmHPAa5h4tSxz+g/D8IHY6wCjtIiFx8I7/Q0Aq+NmvtoYvyMnJU0KQJcqB6QH30X9x/W4CemgUtPgQDZFca5SA==} engines: {node: '>=12'} hasBin: true @@ -6847,11 +6847,11 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - unocss@0.60.1: - resolution: {integrity: sha512-E7xlV7Kbe+Cgl/y2QHNI31IfdY3J7/XsptOJLaQCtfbejX/sJMgQ8GiFOL+MGyssqeMWWayUiBhCN2UX9GXsMg==} + unocss@0.60.2: + resolution: {integrity: sha512-Cj1IXS+VZuiZtQxHn/ffAAN422gUusUEgF1RS83WyNB0kMsJyIxb9KK9N425QAvQvsKpL5GrZs5KoNtU3zGMog==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.60.1 + '@unocss/webpack': 0.60.2 vite: 5.2.11 peerDependenciesMeta: '@unocss/webpack': @@ -7679,7 +7679,7 @@ snapshots: '@esbuild/aix-ppc64@0.20.2': optional: true - '@esbuild/aix-ppc64@0.21.1': + '@esbuild/aix-ppc64@0.21.2': optional: true '@esbuild/android-arm64@0.18.20': @@ -7691,7 +7691,7 @@ snapshots: '@esbuild/android-arm64@0.20.2': optional: true - '@esbuild/android-arm64@0.21.1': + '@esbuild/android-arm64@0.21.2': optional: true '@esbuild/android-arm@0.18.20': @@ -7703,7 +7703,7 @@ snapshots: '@esbuild/android-arm@0.20.2': optional: true - '@esbuild/android-arm@0.21.1': + '@esbuild/android-arm@0.21.2': optional: true '@esbuild/android-x64@0.18.20': @@ -7715,7 +7715,7 @@ snapshots: '@esbuild/android-x64@0.20.2': optional: true - '@esbuild/android-x64@0.21.1': + '@esbuild/android-x64@0.21.2': optional: true '@esbuild/darwin-arm64@0.18.20': @@ -7727,7 +7727,7 @@ snapshots: '@esbuild/darwin-arm64@0.20.2': optional: true - '@esbuild/darwin-arm64@0.21.1': + '@esbuild/darwin-arm64@0.21.2': optional: true '@esbuild/darwin-x64@0.18.20': @@ -7739,7 +7739,7 @@ snapshots: '@esbuild/darwin-x64@0.20.2': optional: true - '@esbuild/darwin-x64@0.21.1': + '@esbuild/darwin-x64@0.21.2': optional: true '@esbuild/freebsd-arm64@0.18.20': @@ -7751,7 +7751,7 @@ snapshots: '@esbuild/freebsd-arm64@0.20.2': optional: true - '@esbuild/freebsd-arm64@0.21.1': + '@esbuild/freebsd-arm64@0.21.2': optional: true '@esbuild/freebsd-x64@0.18.20': @@ -7763,7 +7763,7 @@ snapshots: '@esbuild/freebsd-x64@0.20.2': optional: true - '@esbuild/freebsd-x64@0.21.1': + '@esbuild/freebsd-x64@0.21.2': optional: true '@esbuild/linux-arm64@0.18.20': @@ -7775,7 +7775,7 @@ snapshots: '@esbuild/linux-arm64@0.20.2': optional: true - '@esbuild/linux-arm64@0.21.1': + '@esbuild/linux-arm64@0.21.2': optional: true '@esbuild/linux-arm@0.18.20': @@ -7787,7 +7787,7 @@ snapshots: '@esbuild/linux-arm@0.20.2': optional: true - '@esbuild/linux-arm@0.21.1': + '@esbuild/linux-arm@0.21.2': optional: true '@esbuild/linux-ia32@0.18.20': @@ -7799,7 +7799,7 @@ snapshots: '@esbuild/linux-ia32@0.20.2': optional: true - '@esbuild/linux-ia32@0.21.1': + '@esbuild/linux-ia32@0.21.2': optional: true '@esbuild/linux-loong64@0.18.20': @@ -7811,7 +7811,7 @@ snapshots: '@esbuild/linux-loong64@0.20.2': optional: true - '@esbuild/linux-loong64@0.21.1': + '@esbuild/linux-loong64@0.21.2': optional: true '@esbuild/linux-mips64el@0.18.20': @@ -7823,7 +7823,7 @@ snapshots: '@esbuild/linux-mips64el@0.20.2': optional: true - '@esbuild/linux-mips64el@0.21.1': + '@esbuild/linux-mips64el@0.21.2': optional: true '@esbuild/linux-ppc64@0.18.20': @@ -7835,7 +7835,7 @@ snapshots: '@esbuild/linux-ppc64@0.20.2': optional: true - '@esbuild/linux-ppc64@0.21.1': + '@esbuild/linux-ppc64@0.21.2': optional: true '@esbuild/linux-riscv64@0.18.20': @@ -7847,7 +7847,7 @@ snapshots: '@esbuild/linux-riscv64@0.20.2': optional: true - '@esbuild/linux-riscv64@0.21.1': + '@esbuild/linux-riscv64@0.21.2': optional: true '@esbuild/linux-s390x@0.18.20': @@ -7859,7 +7859,7 @@ snapshots: '@esbuild/linux-s390x@0.20.2': optional: true - '@esbuild/linux-s390x@0.21.1': + '@esbuild/linux-s390x@0.21.2': optional: true '@esbuild/linux-x64@0.18.20': @@ -7871,7 +7871,7 @@ snapshots: '@esbuild/linux-x64@0.20.2': optional: true - '@esbuild/linux-x64@0.21.1': + '@esbuild/linux-x64@0.21.2': optional: true '@esbuild/netbsd-x64@0.18.20': @@ -7883,7 +7883,7 @@ snapshots: '@esbuild/netbsd-x64@0.20.2': optional: true - '@esbuild/netbsd-x64@0.21.1': + '@esbuild/netbsd-x64@0.21.2': optional: true '@esbuild/openbsd-x64@0.18.20': @@ -7895,7 +7895,7 @@ snapshots: '@esbuild/openbsd-x64@0.20.2': optional: true - '@esbuild/openbsd-x64@0.21.1': + '@esbuild/openbsd-x64@0.21.2': optional: true '@esbuild/sunos-x64@0.18.20': @@ -7907,7 +7907,7 @@ snapshots: '@esbuild/sunos-x64@0.20.2': optional: true - '@esbuild/sunos-x64@0.21.1': + '@esbuild/sunos-x64@0.21.2': optional: true '@esbuild/win32-arm64@0.18.20': @@ -7919,7 +7919,7 @@ snapshots: '@esbuild/win32-arm64@0.20.2': optional: true - '@esbuild/win32-arm64@0.21.1': + '@esbuild/win32-arm64@0.21.2': optional: true '@esbuild/win32-ia32@0.18.20': @@ -7931,7 +7931,7 @@ snapshots: '@esbuild/win32-ia32@0.20.2': optional: true - '@esbuild/win32-ia32@0.21.1': + '@esbuild/win32-ia32@0.21.2': optional: true '@esbuild/win32-x64@0.18.20': @@ -7943,7 +7943,7 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true - '@esbuild/win32-x64@0.21.1': + '@esbuild/win32-x64@0.21.2': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@9.2.0)': @@ -8222,13 +8222,13 @@ snapshots: rc9: 2.1.2 semver: 7.6.2 - '@nuxt/devtools@1.3.1(@unocss/reset@0.60.1)(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.1(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.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))': 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-wizard': 1.3.1 '@nuxt/kit': link:packages/kit - '@vue/devtools-applet': 7.1.3(@unocss/reset@0.60.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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.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-kit': 7.1.3(vue@3.4.27(typescript@5.4.5)) birpc: 0.2.17 @@ -9101,33 +9101,33 @@ snapshots: unhead: 1.9.10 vue: 3.4.27(typescript@5.4.5) - '@unocss/astro@0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))': + '@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.1 - '@unocss/reset': 0.60.1 - '@unocss/vite': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + '@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.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': dependencies: - '@unocss/core': 0.60.1 - '@unocss/reset': 0.60.1 - '@unocss/vite': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + '@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.11)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: vite: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - '@unocss/cli@0.60.1(rollup@4.17.2)': + '@unocss/cli@0.60.2(rollup@4.17.2)': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - '@unocss/config': 0.60.1 - '@unocss/core': 0.60.1 - '@unocss/preset-uno': 0.60.1 + '@unocss/config': 0.60.2 + '@unocss/core': 0.60.2 + '@unocss/preset-uno': 0.60.2 cac: 6.7.14 chokidar: 3.6.0 colorette: 2.0.20 @@ -9139,124 +9139,124 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/config@0.60.1': + '@unocss/config@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 unconfig: 0.3.13 - '@unocss/core@0.60.1': {} + '@unocss/core@0.60.2': {} - '@unocss/extractor-arbitrary-variants@0.60.1': + '@unocss/extractor-arbitrary-variants@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 - '@unocss/inspector@0.60.1': + '@unocss/inspector@0.60.2': dependencies: - '@unocss/core': 0.60.1 - '@unocss/rule-utils': 0.60.1 + '@unocss/core': 0.60.2 + '@unocss/rule-utils': 0.60.2 gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/postcss@0.60.1(postcss@8.4.38)': + '@unocss/postcss@0.60.2(postcss@8.4.38)': dependencies: - '@unocss/config': 0.60.1 - '@unocss/core': 0.60.1 - '@unocss/rule-utils': 0.60.1 + '@unocss/config': 0.60.2 + '@unocss/core': 0.60.2 + '@unocss/rule-utils': 0.60.2 css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.10 postcss: 8.4.38 - '@unocss/preset-attributify@0.60.1': + '@unocss/preset-attributify@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 - '@unocss/preset-icons@0.60.1': + '@unocss/preset-icons@0.60.2': dependencies: '@iconify/utils': 2.1.23 - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 ofetch: 1.3.4 transitivePeerDependencies: - supports-color - '@unocss/preset-mini@0.60.1': + '@unocss/preset-mini@0.60.2': dependencies: - '@unocss/core': 0.60.1 - '@unocss/extractor-arbitrary-variants': 0.60.1 - '@unocss/rule-utils': 0.60.1 + '@unocss/core': 0.60.2 + '@unocss/extractor-arbitrary-variants': 0.60.2 + '@unocss/rule-utils': 0.60.2 - '@unocss/preset-tagify@0.60.1': + '@unocss/preset-tagify@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 - '@unocss/preset-typography@0.60.1': + '@unocss/preset-typography@0.60.2': dependencies: - '@unocss/core': 0.60.1 - '@unocss/preset-mini': 0.60.1 + '@unocss/core': 0.60.2 + '@unocss/preset-mini': 0.60.2 - '@unocss/preset-uno@0.60.1': + '@unocss/preset-uno@0.60.2': dependencies: - '@unocss/core': 0.60.1 - '@unocss/preset-mini': 0.60.1 - '@unocss/preset-wind': 0.60.1 - '@unocss/rule-utils': 0.60.1 + '@unocss/core': 0.60.2 + '@unocss/preset-mini': 0.60.2 + '@unocss/preset-wind': 0.60.2 + '@unocss/rule-utils': 0.60.2 - '@unocss/preset-web-fonts@0.60.1': + '@unocss/preset-web-fonts@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 ofetch: 1.3.4 - '@unocss/preset-wind@0.60.1': + '@unocss/preset-wind@0.60.2': dependencies: - '@unocss/core': 0.60.1 - '@unocss/preset-mini': 0.60.1 - '@unocss/rule-utils': 0.60.1 + '@unocss/core': 0.60.2 + '@unocss/preset-mini': 0.60.2 + '@unocss/rule-utils': 0.60.2 - '@unocss/reset@0.60.1': {} + '@unocss/reset@0.60.2': {} - '@unocss/rule-utils@0.60.1': + '@unocss/rule-utils@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 magic-string: 0.30.10 - '@unocss/scope@0.60.1': {} + '@unocss/scope@0.60.2': {} - '@unocss/transformer-attributify-jsx-babel@0.60.1': + '@unocss/transformer-attributify-jsx-babel@0.60.2': dependencies: '@babel/core': 7.24.5 '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 transitivePeerDependencies: - supports-color - '@unocss/transformer-attributify-jsx@0.60.1': + '@unocss/transformer-attributify-jsx@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 - '@unocss/transformer-compile-class@0.60.1': + '@unocss/transformer-compile-class@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 - '@unocss/transformer-directives@0.60.1': + '@unocss/transformer-directives@0.60.2': dependencies: - '@unocss/core': 0.60.1 - '@unocss/rule-utils': 0.60.1 + '@unocss/core': 0.60.2 + '@unocss/rule-utils': 0.60.2 css-tree: 2.3.1 - '@unocss/transformer-variant-group@0.60.1': + '@unocss/transformer-variant-group@0.60.2': dependencies: - '@unocss/core': 0.60.1 + '@unocss/core': 0.60.2 - '@unocss/vite@0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0))': + '@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.1 - '@unocss/core': 0.60.1 - '@unocss/inspector': 0.60.1 - '@unocss/scope': 0.60.1 - '@unocss/transformer-directives': 0.60.1 + '@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 @@ -9264,15 +9264,15 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/vite@0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': + '@unocss/vite@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(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.1 - '@unocss/core': 0.60.1 - '@unocss/inspector': 0.60.1 - '@unocss/scope': 0.60.1 - '@unocss/transformer-directives': 0.60.1 + '@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 @@ -9478,12 +9478,12 @@ snapshots: '@vue/devtools-api@6.5.1': {} - '@vue/devtools-applet@7.1.3(@unocss/reset@0.60.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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.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))': 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-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.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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.10)(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 @@ -9533,9 +9533,9 @@ snapshots: dependencies: rfdc: 1.3.1 - '@vue/devtools-ui@7.1.3(@unocss/reset@0.60.1)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.27(typescript@5.4.5)))(unocss@0.60.1(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.10)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.27(typescript@5.4.5))': dependencies: - '@unocss/reset': 0.60.1 + '@unocss/reset': 0.60.2 '@vue/devtools-shared': 7.1.3 '@vueuse/components': 10.9.0(vue@3.4.27(typescript@5.4.5)) '@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.4.5)) @@ -9543,7 +9543,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.1(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.10)(sass@1.69.4)(terser@5.27.0)) vue: 3.4.27(typescript@5.4.5) transitivePeerDependencies: - '@vue/composition-api' @@ -10708,31 +10708,31 @@ snapshots: '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 - esbuild@0.21.1: + esbuild@0.21.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.1 - '@esbuild/android-arm': 0.21.1 - '@esbuild/android-arm64': 0.21.1 - '@esbuild/android-x64': 0.21.1 - '@esbuild/darwin-arm64': 0.21.1 - '@esbuild/darwin-x64': 0.21.1 - '@esbuild/freebsd-arm64': 0.21.1 - '@esbuild/freebsd-x64': 0.21.1 - '@esbuild/linux-arm': 0.21.1 - '@esbuild/linux-arm64': 0.21.1 - '@esbuild/linux-ia32': 0.21.1 - '@esbuild/linux-loong64': 0.21.1 - '@esbuild/linux-mips64el': 0.21.1 - '@esbuild/linux-ppc64': 0.21.1 - '@esbuild/linux-riscv64': 0.21.1 - '@esbuild/linux-s390x': 0.21.1 - '@esbuild/linux-x64': 0.21.1 - '@esbuild/netbsd-x64': 0.21.1 - '@esbuild/openbsd-x64': 0.21.1 - '@esbuild/sunos-x64': 0.21.1 - '@esbuild/win32-arm64': 0.21.1 - '@esbuild/win32-ia32': 0.21.1 - '@esbuild/win32-x64': 0.21.1 + '@esbuild/aix-ppc64': 0.21.2 + '@esbuild/android-arm': 0.21.2 + '@esbuild/android-arm64': 0.21.2 + '@esbuild/android-x64': 0.21.2 + '@esbuild/darwin-arm64': 0.21.2 + '@esbuild/darwin-x64': 0.21.2 + '@esbuild/freebsd-arm64': 0.21.2 + '@esbuild/freebsd-x64': 0.21.2 + '@esbuild/linux-arm': 0.21.2 + '@esbuild/linux-arm64': 0.21.2 + '@esbuild/linux-ia32': 0.21.2 + '@esbuild/linux-loong64': 0.21.2 + '@esbuild/linux-mips64el': 0.21.2 + '@esbuild/linux-ppc64': 0.21.2 + '@esbuild/linux-riscv64': 0.21.2 + '@esbuild/linux-s390x': 0.21.2 + '@esbuild/linux-x64': 0.21.2 + '@esbuild/netbsd-x64': 0.21.2 + '@esbuild/openbsd-x64': 0.21.2 + '@esbuild/sunos-x64': 0.21.2 + '@esbuild/win32-arm64': 0.21.2 + '@esbuild/win32-ia32': 0.21.2 + '@esbuild/win32-x64': 0.21.2 escalade@3.1.1: {} @@ -14247,28 +14247,28 @@ snapshots: universalify@2.0.0: {} - unocss@0.60.1(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.10)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.60.1(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.1(rollup@4.17.2) - '@unocss/core': 0.60.1 - '@unocss/extractor-arbitrary-variants': 0.60.1 - '@unocss/postcss': 0.60.1(postcss@8.4.38) - '@unocss/preset-attributify': 0.60.1 - '@unocss/preset-icons': 0.60.1 - '@unocss/preset-mini': 0.60.1 - '@unocss/preset-tagify': 0.60.1 - '@unocss/preset-typography': 0.60.1 - '@unocss/preset-uno': 0.60.1 - '@unocss/preset-web-fonts': 0.60.1 - '@unocss/preset-wind': 0.60.1 - '@unocss/reset': 0.60.1 - '@unocss/transformer-attributify-jsx': 0.60.1 - '@unocss/transformer-attributify-jsx-babel': 0.60.1 - '@unocss/transformer-compile-class': 0.60.1 - '@unocss/transformer-directives': 0.60.1 - '@unocss/transformer-variant-group': 0.60.1 - '@unocss/vite': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0)) + '@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: @@ -14276,28 +14276,28 @@ snapshots: - rollup - supports-color - unocss@0.60.1(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(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.11)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) - '@unocss/cli': 0.60.1(rollup@4.17.2) - '@unocss/core': 0.60.1 - '@unocss/extractor-arbitrary-variants': 0.60.1 - '@unocss/postcss': 0.60.1(postcss@8.4.38) - '@unocss/preset-attributify': 0.60.1 - '@unocss/preset-icons': 0.60.1 - '@unocss/preset-mini': 0.60.1 - '@unocss/preset-tagify': 0.60.1 - '@unocss/preset-typography': 0.60.1 - '@unocss/preset-uno': 0.60.1 - '@unocss/preset-web-fonts': 0.60.1 - '@unocss/preset-wind': 0.60.1 - '@unocss/reset': 0.60.1 - '@unocss/transformer-attributify-jsx': 0.60.1 - '@unocss/transformer-attributify-jsx-babel': 0.60.1 - '@unocss/transformer-compile-class': 0.60.1 - '@unocss/transformer-directives': 0.60.1 - '@unocss/transformer-variant-group': 0.60.1 - '@unocss/vite': 0.60.1(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + '@unocss/astro': 0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(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.11)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: vite: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: From 69860d952a72a95238b5dad8e82ecc3191d19122 Mon Sep 17 00:00:00 2001 From: Alexander Lichter Date: Mon, 13 May 2024 16:39:52 +0200 Subject: [PATCH 08/85] docs: add video links for more context (#27174) --- docs/1.getting-started/11.testing.md | 4 ++++ docs/1.getting-started/12.upgrade.md | 4 ++++ docs/1.getting-started/3.configuration.md | 4 ++++ docs/1.getting-started/6.data-fetching.md | 8 ++++++++ docs/1.getting-started/7.state-management.md | 8 ++++++++ docs/1.getting-started/8.server.md | 4 ++++ docs/1.getting-started/9.layers.md | 2 +- docs/2.guide/1.concepts/1.auto-imports.md | 8 ++++++++ docs/2.guide/1.concepts/8.typescript.md | 4 ++++ docs/2.guide/2.directory-structure/1.plugins.md | 4 ++++ docs/2.guide/3.going-further/1.experimental-features.md | 8 ++++++++ docs/2.guide/3.going-further/10.runtime-config.md | 4 ++++ docs/3.api/2.composables/use-fetch.md | 4 ++++ docs/3.api/2.composables/use-nuxt-app.md | 4 ++++ docs/3.api/2.composables/use-state.md | 4 ++++ 15 files changed, 73 insertions(+), 1 deletion(-) diff --git a/docs/1.getting-started/11.testing.md b/docs/1.getting-started/11.testing.md index f6b40016bf..3454b103bb 100644 --- a/docs/1.getting-started/11.testing.md +++ b/docs/1.getting-started/11.testing.md @@ -10,6 +10,10 @@ If you are a module author, you can find more specific information in the [Modul Nuxt offers first-class support for end-to-end and unit testing of your Nuxt application via `@nuxt/test-utils`, a library of test utilities and configuration that currently powers the [tests we use on Nuxt itself](https://github.com/nuxt/nuxt/tree/main/test) and tests throughout the module ecosystem. +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=yGzwk9xi9gU" target="_blank"} +Watch a video from Alexander Lichter about getting started with the `@nuxt/test-utils`. +:: + ## Installation In order to allow you to manage your other testing dependencies, `@nuxt/test-utils` ships with various optional peer dependencies. For example: diff --git a/docs/1.getting-started/12.upgrade.md b/docs/1.getting-started/12.upgrade.md index 9c0e79fd65..07a8f5294c 100644 --- a/docs/1.getting-started/12.upgrade.md +++ b/docs/1.getting-started/12.upgrade.md @@ -25,6 +25,10 @@ Nuxt 4 is planned to be released **on or before June 14** (though obviously this Until then, it is possible to test many of Nuxt 4's breaking changes on the nightly release channel. +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=r4wFKlcJK6c" target="_blank"} +Watch a video from Alexander Lichter showing how to opt in to Nuxt 4's breaking changes already. +:: + ### Opting in to Nuxt 4 First, opt in to the nightly release channel [following these steps](/docs/guide/going-further/nightly-release-channel#opting-in). diff --git a/docs/1.getting-started/3.configuration.md b/docs/1.getting-started/3.configuration.md index c14e01f2f4..49a0822ecb 100644 --- a/docs/1.getting-started/3.configuration.md +++ b/docs/1.getting-started/3.configuration.md @@ -46,6 +46,10 @@ export default defineNuxtConfig({ }) ``` +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=DFZI2iVCrNc" target="_blank"} +Watch a video from Alexander Lichter about the env-aware `nuxt.config.ts`. +:: + ::note If you're authoring layers, you can also use the `$meta` key to provide metadata that you or the consumers of your layer might use. :: diff --git a/docs/1.getting-started/6.data-fetching.md b/docs/1.getting-started/6.data-fetching.md index 3a26848aef..32976b1f29 100644 --- a/docs/1.getting-started/6.data-fetching.md +++ b/docs/1.getting-started/6.data-fetching.md @@ -54,6 +54,10 @@ const { data: count } = await useFetch('/api/count') This composable is a wrapper around the [`useAsyncData`](/docs/api/composables/use-async-data) composable and `$fetch` utility. +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=njsGVmcWviY" target="_blank"} +Watch the video from Alexander Lichter to avoid using `useFetch` the wrong way! +:: + :read-more{to="/docs/api/composables/use-fetch"} :link-example{to="/docs/examples/features/data-fetching"} @@ -93,6 +97,10 @@ The `useAsyncData` composable is responsible for wrapping async logic and return It's developer experience sugar for the most common use case. :: +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=0X-aOpSGabA" target="_blank"} +Watch a video from Alexander Lichter to dig deeper into the difference between `useFetch` and `useAsyncData`. +:: + There are some cases when using the [`useFetch`](/docs/api/composables/use-fetch) composable is not appropriate, for example when a CMS or a third-party provide their own query layer. In this case, you can use [`useAsyncData`](/docs/api/composables/use-async-data) to wrap your calls and still keep the benefits provided by the composable. ```vue [pages/users.vue] diff --git a/docs/1.getting-started/7.state-management.md b/docs/1.getting-started/7.state-management.md index d9edf3f161..4957fb4a14 100644 --- a/docs/1.getting-started/7.state-management.md +++ b/docs/1.getting-started/7.state-management.md @@ -8,6 +8,10 @@ Nuxt provides the [`useState`](/docs/api/composables/use-state) composable to cr [`useState`](/docs/api/composables/use-state) is an SSR-friendly [`ref`](https://vuejs.org/api/reactivity-core.html#ref) replacement. Its value will be preserved after server-side rendering (during client-side hydration) and shared across all components using a unique key. +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=mv0WcBABcIk" target="_blank"} +Watch a video from Alexander Lichter about why and when to use `useState()`. +:: + ::important Because the data inside [`useState`](/docs/api/composables/use-state) will be serialized to JSON, it is important that it does not contain anything that cannot be serialized, such as classes, functions or symbols. :: @@ -208,6 +212,10 @@ const color = useColor() // Same as useState('color') ``` +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=dZSNW07sO-A" target="_blank"} +Watch a video from Daniel Roe on how to deal with global state and SSR in Nuxt. +:: + ## Using third-party libraries Nuxt **used to rely** on the Vuex library to provide global state management. If you are migrating from Nuxt 2, please head to [the migration guide](/docs/migration/configuration#vuex). diff --git a/docs/1.getting-started/8.server.md b/docs/1.getting-started/8.server.md index 49e0f21464..2a67cc3945 100644 --- a/docs/1.getting-started/8.server.md +++ b/docs/1.getting-started/8.server.md @@ -20,6 +20,10 @@ Using Nitro gives Nuxt superpowers: Nitro is internally using [h3](https://github.com/unjs/h3), a minimal H(TTP) framework built for high performance and portability. +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=DkvgJa-X31k" target="_blank"} +Watch a video from Alexander Lichter to understand the responsibilities of Nuxt and Nitro in your application. +:: + ## Server Endpoints & Middleware You can easily manage the server-only part of your Nuxt app, from API endpoints to middleware. diff --git a/docs/1.getting-started/9.layers.md b/docs/1.getting-started/9.layers.md index 0c25507946..7e05dadaf6 100644 --- a/docs/1.getting-started/9.layers.md +++ b/docs/1.getting-started/9.layers.md @@ -51,7 +51,7 @@ Read more about layers in the **Layer Author Guide**. Watch a video from Learn Vue about Nuxt Layers. :: -::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=fr5yo3aVkfA&t=271s" target="_blank"} +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=fr5yo3aVkfA" target="_blank"} Watch a video from Alexander Lichter about Nuxt Layers. :: diff --git a/docs/2.guide/1.concepts/1.auto-imports.md b/docs/2.guide/1.concepts/1.auto-imports.md index 0fd8a3b63f..a7e24cd843 100644 --- a/docs/2.guide/1.concepts/1.auto-imports.md +++ b/docs/2.guide/1.concepts/1.auto-imports.md @@ -60,6 +60,10 @@ That means that (with very few exceptions) you cannot use them outside a Nuxt pl If you get an error message like `Nuxt instance is unavailable` then it probably means you are calling a Nuxt composable in the wrong place in the Vue or Nuxt lifecycle. +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=ofuKRZLtOdY" target="_blank"} +Watch a video from Alexander Lichter about handling async code in composables and fixing `Nuxt instance is unavailable` in your app. +:: + ::read-more{to="/docs/guide/going-further/experimental-features#asynccontext" icon="i-ph-star-duotone"} Checkout the `asyncContext` experimental feature to use Nuxt composables in async functions. :: @@ -168,3 +172,7 @@ export default defineNuxtConfig({ } }) ``` + +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=FT2LQJ2NvVI" target="_blank"} +Watch a video from Alexander Lichter on how to easily set up custom auto imports. +:: diff --git a/docs/2.guide/1.concepts/8.typescript.md b/docs/2.guide/1.concepts/8.typescript.md index 3c57bd7464..4e07f35631 100644 --- a/docs/2.guide/1.concepts/8.typescript.md +++ b/docs/2.guide/1.concepts/8.typescript.md @@ -65,6 +65,10 @@ This file contains the recommended basic TypeScript configuration for your proje [Read more about how to extend this configuration](/docs/guide/directory-structure/tsconfig). +::tip{icon="i-ph-video-duotone" to="https://youtu.be/umLI7SlPygY" target="_blank"} +Watch a video from Daniel Roe explaining built-in Nuxt aliases. +:: + ::note Nitro also [auto-generates types](/docs/guide/concepts/server-engine#typed-api-routes) for API routes. Plus, Nuxt also generates types for globally available components and [auto-imports from your composables](/docs/guide/directory-structure/composables), plus other core functionality. :: diff --git a/docs/2.guide/2.directory-structure/1.plugins.md b/docs/2.guide/2.directory-structure/1.plugins.md index 3753847b5b..b525b1f4c4 100644 --- a/docs/2.guide/2.directory-structure/1.plugins.md +++ b/docs/2.guide/2.directory-structure/1.plugins.md @@ -76,6 +76,10 @@ export default defineNuxtPlugin({ }) ``` +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=2aXZyXB1QGQ" target="_blank"} +Watch a video from Alexander Lichter about the Object Syntax for Nuxt plugins. +:: + ::note If you are using the object-syntax, the properties may be statically analyzed in future to produce a more optimized build. So you should not define them at runtime. :br For example, setting `enforce: import.meta.server ? 'pre' : 'post'` would defeat any future optimization Nuxt is able to do for your plugins. diff --git a/docs/2.guide/3.going-further/1.experimental-features.md b/docs/2.guide/3.going-further/1.experimental-features.md index fd6ad8d44a..1a45323bdf 100644 --- a/docs/2.guide/3.going-further/1.experimental-features.md +++ b/docs/2.guide/3.going-further/1.experimental-features.md @@ -306,6 +306,10 @@ Out of the box, this will enable typed usage of [`navigateTo`](/docs/api/utils/n You can even get typed params within a page by using `const route = useRoute('route-name')`. +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=SXk-L19gTZk" target="_blank"} +Watch a video from Daniel Roe explaining type-safe routing in Nuxt. +:: + ## watcher Set an alternative watcher that will be used as the watching service for Nuxt. @@ -340,6 +344,10 @@ export default defineNuxtConfig({ }) ``` +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=1jUupYHVvrU" target="_blank"} +Watch a video from Alexander Lichter about the experimental `sharedPrerenderData` setting. +:: + It is particularly important when enabling this feature to make sure that any unique key of your data is always resolvable to the same data. For example, if you are using `useAsyncData` to fetch data related to a particular page, you should provide a key that uniquely matches that data. (`useFetch` diff --git a/docs/2.guide/3.going-further/10.runtime-config.md b/docs/2.guide/3.going-further/10.runtime-config.md index e84823704c..9a1832ad50 100644 --- a/docs/2.guide/3.going-further/10.runtime-config.md +++ b/docs/2.guide/3.going-further/10.runtime-config.md @@ -61,6 +61,10 @@ Setting the default of `runtimeConfig` values to *differently named environment It is advised to use environment variables that match the structure of your `runtimeConfig` object. :: +::tip{icon="i-ph-video-duotone" to="https://youtu.be/_FYV5WfiWvs" target="_blank"} +Watch a video from Alexander Lichter showcasing the top mistake developers make using runtimeConfig. +:: + #### Example ```sh [.env] diff --git a/docs/3.api/2.composables/use-fetch.md b/docs/3.api/2.composables/use-fetch.md index e0149ce11f..82a55be72a 100644 --- a/docs/3.api/2.composables/use-fetch.md +++ b/docs/3.api/2.composables/use-fetch.md @@ -66,6 +66,10 @@ const { data, pending, error, refresh } = await useFetch('/api/auth/login', { `useFetch` is a reserved function name transformed by the compiler, so you should not name your own function `useFetch`. :: +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=njsGVmcWviY" target="_blank"} +Watch the video from Alexander Lichter to avoid using `useFetch` the wrong way! +:: + :link-example{to="/docs/examples/advanced/use-custom-fetch-composable"} :read-more{to="/docs/getting-started/data-fetching"} diff --git a/docs/3.api/2.composables/use-nuxt-app.md b/docs/3.api/2.composables/use-nuxt-app.md index 87c7be7418..860cb89c22 100644 --- a/docs/3.api/2.composables/use-nuxt-app.md +++ b/docs/3.api/2.composables/use-nuxt-app.md @@ -138,6 +138,10 @@ Nuxt exposes the following properties through `ssrContext`: Since [Nuxt v3.4](https://nuxt.com/blog/v3-4#payload-enhancements), it is possible to define your own reducer/reviver for types that are not supported by Nuxt. + ::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=8w6ffRBs8a4" target="_blank"} + Watch a video from Alexander Lichter about serializing payloads, especially with regards to classes. + :: + In the example below, we define a reducer (or a serializer) and a reviver (or deserializer) for the [Luxon](https://moment.github.io/luxon/#/) DateTime class, using a payload plugin. ```ts [plugins/date-time-payload.ts] diff --git a/docs/3.api/2.composables/use-state.md b/docs/3.api/2.composables/use-state.md index dccccae072..513bd407c6 100644 --- a/docs/3.api/2.composables/use-state.md +++ b/docs/3.api/2.composables/use-state.md @@ -25,6 +25,10 @@ Because the data inside `useState` will be serialized to JSON, it is important t `useState` is a reserved function name transformed by the compiler, so you should not name your own function `useState`. :: +::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=mv0WcBABcIk" target="_blank"} +Watch a video from Alexander Lichter about why and when to use `useState()`. +:: + ## Using `shallowRef` If you don't need your state to be deeply reactive, you can combine `useState` with [`shallowRef`](https://vuejs.org/api/reactivity-advanced.html#shallowref). This can improve performance when your state contains large objects and arrays. From 5c34676159b4ffdc4cb0d3012890f7b0cbfdc44c Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Mon, 13 May 2024 18:45:21 +0100 Subject: [PATCH 09/85] feat(schema): remove some experimental options for v4 (#27132) --- docs/1.getting-started/12.upgrade.md | 71 ++++++++++++++++++- .../1.experimental-features.md | 10 +++ packages/schema/src/config/experimental.ts | 54 ++++++++++++-- test/basic.test.ts | 23 +++--- 4 files changed, 140 insertions(+), 18 deletions(-) diff --git a/docs/1.getting-started/12.upgrade.md b/docs/1.getting-started/12.upgrade.md index 07a8f5294c..283fd68e52 100644 --- a/docs/1.getting-started/12.upgrade.md +++ b/docs/1.getting-started/12.upgrade.md @@ -35,7 +35,7 @@ First, opt in to the nightly release channel [following these steps](/docs/guide Then you can set your `compatibilityVersion` to match Nuxt 4 behavior: -```ts +```ts twoslash [nuxt.config.ts] export default defineNuxtConfig({ future: { compatibilityVersion: 4, @@ -46,6 +46,7 @@ export default defineNuxtConfig({ // app: 'app' // }, // experimental: { + // sharedPrerenderData: false, // compileTemplate: true, // templateUtils: true, // relativeWatchPaths: true, @@ -136,7 +137,7 @@ nuxt.config.ts However, migration is _not required_. If you wish to keep your current folder structure, Nuxt should auto-detect it. (If it does not, please raise an issue.) You can also force a v3 folder structure with the following configuration: -```ts +```ts [nuxt.config.ts] export default defineNuxtConfig({ // This reverts the new srcDir default from `app` back to your root directory srcDir: '.', @@ -147,6 +148,47 @@ export default defineNuxtConfig({ }) ``` +#### Shared Prerender Data + +🚦 **Impact Level**: Medium + +##### What Changed + +We enabled a previously experimental feature to share data from `useAsyncData` and `useFetch` calls, across different pages. See [original PR](https://github.com/nuxt/nuxt/pull/24894). + +##### Reasons for Change + +This feature automatically shares payload _data_ between pages that are prerendered. This can result in a significant performance improvement when prerendering sites that use `useAsyncData` or `useFetch` and fetch the same data in different pages. + +For example, if your site requires a `useFetch` call for every page (for example, to get navigation data for a menu, or site settings from a CMS), this data would only be fetched once when prerendering the first page that uses it, and then cached for use when prerendering other pages. + +##### Migration Steps + +Make sure that any unique key of your data is always resolvable to the same data. For example, if you are using `useAsyncData` to fetch data related to a particular page, you should provide a key that uniquely matches that data. (`useFetch` should do this automatically for you.) + +```ts [app/pages/test/[slug\\].vue] +// This would be unsafe in a dynamic page (e.g. `[slug].vue`) because the route slug makes a difference +// to the data fetched, but Nuxt can't know that because it's not reflected in the key. +const route = useRoute() +const { data } = await useAsyncData(async () => { + return await $fetch(`/api/my-page/${route.params.slug}`) +}) +// Instead, you should use a key that uniquely identifies the data fetched. +const { data } = await useAsyncData(route.params.slug, async () => { + return await $fetch(`/api/my-page/${route.params.slug}`) +}) +``` + +Alternatively, you can disable this feature with: + +```ts twoslash [nuxt.config.ts] +export default defineNuxtConfig({ + experimental: { + sharedPrerenderData: false + } +}) +``` + #### Shallow Data Reactivity in `useAsyncData` and `useFetch` 🚦 **Impact Level**: Minimal @@ -171,7 +213,7 @@ In most cases, no migration steps are required, but if you rely on the reactivit + const { data } = useFetch('/api/test', { deep: true }) ``` 1. You can change the default behavior on a project-wide basis (not recommended): - ```ts + ```ts twoslash [nuxt.config.ts] export default defineNuxtConfig({ experimental: { defaults: { @@ -270,6 +312,29 @@ const importSources = (sources: string | string[], { lazy = false } = {}) => { const importName = genSafeVariableName ``` +#### Removal of Experimental Features + +🚦 **Impact Level**: Minimal + +##### What Changed + +Four experimental features are no longer configurable in Nuxt 4: + +* `treeshakeClientOnly` will be `true` (default since v3.0) +* `configSchema` will be `true` (default since v3.3) +* `polyfillVueUseHead` will be `false` (default since v3.4) +* `respectNoSSRHeader` will be `false` (default since v3.4) + +##### Reasons for Change + +These options have been set to their current values for some time and we do not have a reason to believe that they need to remain configurable. + +##### Migration Steps + +* `polyfillVueUseHead` is implementable in user-land with [this plugin](https://github.com/nuxt/nuxt/blob/f209158352b09d1986aa320e29ff36353b91c358/packages/nuxt/src/head/runtime/plugins/vueuse-head-polyfill.ts#L10-L11) + +* `respectNoSSRHeader`is implementable in user-land with [server middleware](https://github.com/nuxt/nuxt/blob/c660b39447f0d5b8790c0826092638d321cd6821/packages/nuxt/src/core/runtime/nitro/no-ssr.ts#L8-L9) + ## Nuxt 2 vs Nuxt 3 In the table below, there is a quick comparison between 3 versions of Nuxt: diff --git a/docs/2.guide/3.going-further/1.experimental-features.md b/docs/2.guide/3.going-further/1.experimental-features.md index 1a45323bdf..691a2187c3 100644 --- a/docs/2.guide/3.going-further/1.experimental-features.md +++ b/docs/2.guide/3.going-further/1.experimental-features.md @@ -386,6 +386,16 @@ This option allows exposing some route metadata defined in `definePageMeta` at b This only works with static or strings/arrays rather than variables or conditional assignment. See [original issue](https://github.com/nuxt/nuxt/issues/24770) for more information and context. + + ## cookieStore Enables CookieStore support to listen for cookie updates (if supported by the browser) and refresh `useCookie` ref values. diff --git a/packages/schema/src/config/experimental.ts b/packages/schema/src/config/experimental.ts index b50629cbab..92c3d7a707 100644 --- a/packages/schema/src/config/experimental.ts +++ b/packages/schema/src/config/experimental.ts @@ -136,8 +136,18 @@ export default defineUntypedSchema({ /** * Tree shakes contents of client-only components from server bundle. * @see [Nuxt PR #5750](https://github.com/nuxt/framework/pull/5750) + * @deprecated This option will no longer be configurable in Nuxt v4 */ - treeshakeClientOnly: true, + treeshakeClientOnly: { + async $resolve (val, get) { + const isV4 = ((await get('future') as Record).compatibilityVersion === 4) + if (isV4 && val === false) { + console.warn('Enabling `experimental.treeshakeClientOnly` in v4 compatibility mode as it will no longer be configurable in Nuxt v4.') + return true + } + return val ?? true + }, + }, /** * Emit `app:chunkError` hook when there is an error loading vite/webpack @@ -246,19 +256,51 @@ export default defineUntypedSchema({ /** * Config schema support * @see [Nuxt Issue #15592](https://github.com/nuxt/nuxt/issues/15592) + * @deprecated This option will no longer be configurable in Nuxt v4 */ - configSchema: true, + configSchema: { + async $resolve (val, get) { + const isV4 = ((await get('future') as Record).compatibilityVersion === 4) + if (isV4 && val === false) { + console.warn('Enabling `experimental.configSchema` in v4 compatibility mode as it will no longer be configurable in Nuxt v4.') + return true + } + return val ?? true + }, + }, /** * Whether or not to add a compatibility layer for modules, plugins or user code relying on the old * `@vueuse/head` API. * - * This can be disabled for most Nuxt sites to reduce the client-side bundle by ~0.5kb. + * This is disabled to reduce the client-side bundle by ~0.5kb. + * @deprecated This feature will be removed in Nuxt v4. */ - polyfillVueUseHead: false, + polyfillVueUseHead: { + async $resolve (val, get) { + const isV4 = ((await get('future') as Record).compatibilityVersion === 4) + if (isV4 && val === true) { + console.warn('Disabling `experimental.polyfillVueUseHead` in v4 compatibility mode as it will no longer be configurable in Nuxt v4.') + return false + } + return val ?? false + }, + }, - /** Allow disabling Nuxt SSR responses by setting the `x-nuxt-no-ssr` header. */ - respectNoSSRHeader: false, + /** + * Allow disabling Nuxt SSR responses by setting the `x-nuxt-no-ssr` header. + * @deprecated This feature will be removed in Nuxt v4. + */ + respectNoSSRHeader: { + async $resolve (val, get) { + const isV4 = ((await get('future') as Record).compatibilityVersion === 4) + if (isV4 && val === true) { + console.warn('Disabling `experimental.respectNoSSRHeader` in v4 compatibility mode as it will no longer be configurable in Nuxt v4.') + return false + } + return val ?? false + }, + }, /** Resolve `~`, `~~`, `@` and `@@` aliases located within layers with respect to their layer source and root directories. */ localLayerAliases: true, diff --git a/test/basic.test.ts b/test/basic.test.ts index aa64efe29c..c2a1e887a1 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -13,6 +13,7 @@ import type { NuxtIslandResponse } from '#app' const isWebpack = process.env.TEST_BUILDER === 'webpack' const isTestingAppManifest = process.env.TEST_MANIFEST !== 'manifest-off' +const isV4 = process.env.TEST_V4 === 'true' await setup({ rootDir: fileURLToPath(new URL('./fixtures/basic', import.meta.url)), @@ -57,7 +58,14 @@ describe('server api', () => { describe('route rules', () => { it('should enable spa mode', async () => { - const { script, attrs } = parseData(await $fetch('/route-rules/spa')) + const headHtml = await $fetch('/route-rules/spa') + + // SPA should render appHead tags + expect(headHtml).toContain('') + expect(headHtml).toContain('') + expect(headHtml).toContain('') + + const { script, attrs } = parseData(headHtml) expect(script.serverRendered).toEqual(false) if (isRenderingJson) { expect(attrs['data-ssr']).toEqual('false') @@ -876,7 +884,7 @@ describe('head tags', () => { expect(headHtml).toContain('') }) - it('SPA should render appHead tags', async () => { + it.skipIf(isV4)('SPA should render appHead tags', async () => { const headHtml = await $fetch('/head', { headers: { 'x-nuxt-no-ssr': '1' } }) expect(headHtml).toContain('') @@ -884,7 +892,7 @@ describe('head tags', () => { expect(headHtml).toContain('') }) - it('legacy vueuse/head works', async () => { + it.skipIf(isV4)('legacy vueuse/head works', async () => { const headHtml = await $fetch('/vueuse-head') expect(headHtml).toContain('using provides usehead and updateDOM - VueUse head polyfill test') }) @@ -2187,7 +2195,6 @@ describe('component islands', () => { result.html = result.html.replace(/ data-island-uid="([^"]*)"/g, '') if (isDev()) { - result.head.link = result.head.link.filter(l => !l.href.includes('@nuxt+ui-templates')) const fixtureDir = normalize(fileURLToPath(new URL('./fixtures/basic', import.meta.url))) for (const link of result.head.link) { link.href = link.href.replace(fixtureDir, '/').replaceAll('//', '/') @@ -2210,14 +2217,12 @@ describe('component islands', () => { } `) } else if (isDev() && !isWebpack) { + // TODO: resolve dev bug triggered by earlier fetch of /vueuse-head page + // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/core/runtime/nitro/renderer.ts#L139 + result.head.link = result.head.link.filter(h => !h.href.includes('SharedComponent')) expect(result.head).toMatchInlineSnapshot(` { "link": [ - { - "href": "/_nuxt/components/SharedComponent.vue?vue&type=style&index=0&scoped=3ee84738&lang.css", - "key": "island-link", - "rel": "stylesheet", - }, { "href": "/_nuxt/components/islands/PureComponent.vue?vue&type=style&index=0&scoped=c0c0cf89&lang.css", "key": "island-link", From 41874cb35c804858e179a77f38c990e14258007c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 18:45:40 +0100 Subject: [PATCH 10/85] chore(deps): update devdependency execa to v9.1.0 (main) (#27192) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- packages/ui-templates/package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 95c932c7e9..8ba517cb93 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "eslint-plugin-no-only-tests": "3.1.0", "eslint-plugin-perfectionist": "2.10.0", "eslint-typegen": "0.2.4", - "execa": "9.0.2", + "execa": "9.1.0", "fs-extra": "11.2.0", "globby": "14.0.1", "h3": "1.11.1", diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index 3be1cd8c1d..cb7efc63c6 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -22,7 +22,7 @@ "@types/html-minifier": "4.0.5", "@unocss/reset": "0.60.2", "critters": "0.0.22", - "execa": "9.0.2", + "execa": "9.1.0", "globby": "14.0.1", "html-minifier": "4.0.0", "jiti": "1.21.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f1026d919..45fa3dd7f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,8 +81,8 @@ importers: specifier: 0.2.4 version: 0.2.4(eslint@9.2.0) execa: - specifier: 9.0.2 - version: 9.0.2 + specifier: 9.1.0 + version: 9.1.0 fs-extra: specifier: 11.2.0 version: 11.2.0 @@ -573,8 +573,8 @@ importers: specifier: 0.0.22 version: 0.0.22 execa: - specifier: 9.0.2 - version: 9.0.2 + specifier: 9.1.0 + version: 9.1.0 globby: specifier: 14.0.1 version: 14.0.1 @@ -4062,8 +4062,8 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.0.2: - resolution: {integrity: sha512-oO281GF7ksH/Ogv1xyDf1prvFta/6/XkGKxRUvA3IB2MU1rCJGlFs86HRZhdooow1ISkR0Np0rOxUCIJVw36Rg==} + execa@9.1.0: + resolution: {integrity: sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==} engines: {node: '>=18'} exponential-backoff@3.1.1: @@ -10981,7 +10981,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.0.2: + execa@9.1.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.3 From 89baee0493249719c3ae1552f83f4c3ceffacddb Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Mon, 13 May 2024 21:23:15 +0100 Subject: [PATCH 11/85] fix(nuxt): scan folder indices for middleware (#27187) --- docs/1.getting-started/12.upgrade.md | 28 ++++++++++++++++++++++++++++ packages/kit/src/plugin.ts | 7 ------- packages/nuxt/src/core/app.ts | 9 +++++++-- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/docs/1.getting-started/12.upgrade.md b/docs/1.getting-started/12.upgrade.md index 283fd68e52..87105806b4 100644 --- a/docs/1.getting-started/12.upgrade.md +++ b/docs/1.getting-started/12.upgrade.md @@ -252,6 +252,34 @@ However, if you are a module author using the `builder:watch` hook and wishing t }) ``` +#### Directory index scanning + +🚦 **Impact Level**: Medium + +##### What Changed + +Child folders in your `middleware/` folder are also scanned for `index` files and these are now also registered as middleware in your project. + +##### Reasons for Change + +Nuxt scans a number of folders automatically, including `middleware/` and `plugins/`. + +Child folders in your `plugins/` folder are scanned for `index` files and we wanted to make this behavior consistent between scanned directories. + +##### Migration Steps + +Probably no migration is necessary but if you wish to revert to previous behavior you can add a hook to filter out these middleware: + +```ts +export default defineNuxtConfig({ + hooks: { + 'app:resolve'(app) { + app.middleware = app.middleware.filter(mw => !/\/index\.[^/]+$/.test(mw.path)) + } + } +}) +``` + #### Template Compilation Changes 🚦 **Impact Level**: Minimal diff --git a/packages/kit/src/plugin.ts b/packages/kit/src/plugin.ts index 5421c3027f..8905c11274 100644 --- a/packages/kit/src/plugin.ts +++ b/packages/kit/src/plugin.ts @@ -3,7 +3,6 @@ import type { NuxtPlugin, NuxtPluginTemplate } from '@nuxt/schema' import { useNuxt } from './context' import { addTemplate } from './template' import { resolveAlias } from './resolve' -import { logger } from './logger' /** * Normalize a nuxt plugin object @@ -20,12 +19,6 @@ export function normalizePlugin (plugin: NuxtPlugin | string): NuxtPlugin { throw new Error('Invalid plugin. src option is required: ' + JSON.stringify(plugin)) } - // TODO: only scan top-level files #18418 - const nonTopLevelPlugin = plugin.src.match(/\/plugins\/[^/]+\/index\.[^/]+$/i) - if (nonTopLevelPlugin && nonTopLevelPlugin.length > 0 && !useNuxt().options.plugins.find(i => (typeof i === 'string' ? i : i.src).endsWith(nonTopLevelPlugin[0]))) { - logger.warn(`[deprecation] You are using a plugin that is within a subfolder of your plugins directory without adding it to your config explicitly. You can move it to the top-level plugins directory, or include the file '~${nonTopLevelPlugin[0]}' in your plugins config (https://nuxt.com/docs/api/nuxt-config#plugins-1) to remove this warning.`) - } - // Normalize full path to plugin plugin.src = normalize(resolveAlias(plugin.src)) diff --git a/packages/nuxt/src/core/app.ts b/packages/nuxt/src/core/app.ts index 8f694f035b..552015c40a 100644 --- a/packages/nuxt/src/core/app.ts +++ b/packages/nuxt/src/core/app.ts @@ -179,7 +179,12 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) { app.middleware = [] for (const config of reversedConfigs) { const middlewareDir = (config.rootDir === nuxt.options.rootDir ? nuxt.options : config).dir?.middleware || 'middleware' - const middlewareFiles = await resolveFiles(config.srcDir, `${middlewareDir}/*{${nuxt.options.extensions.join(',')}}`) + const middlewareFiles = await resolveFiles(config.srcDir, [ + `${middlewareDir}/*{${nuxt.options.extensions.join(',')}}`, + ...nuxt.options.future.compatibilityVersion === 4 + ? [`${middlewareDir}/*/index{${nuxt.options.extensions.join(',')}}`] + : [], + ]) for (const file of middlewareFiles) { const name = getNameFromPath(file) if (!name) { @@ -200,7 +205,7 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) { ...config.srcDir ? await resolveFiles(config.srcDir, [ `${pluginDir}/*{${nuxt.options.extensions.join(',')}}`, - `${pluginDir}/*/index{${nuxt.options.extensions.join(',')}}`, // TODO: remove, only scan top-level plugins #18418 + `${pluginDir}/*/index{${nuxt.options.extensions.join(',')}}`, ]) : [], ].map(plugin => normalizePlugin(plugin as NuxtPlugin))) From 341fbe60f90a6079a391d573569ac9f32552051c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Bedn=C3=A1r?= <33372892+jakubednar@users.noreply.github.com> Date: Mon, 13 May 2024 22:59:33 +0200 Subject: [PATCH 12/85] docs: add module execution order (#27178) --- docs/2.guide/2.directory-structure/1.modules.md | 6 +++++- packages/schema/src/config/common.ts | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/2.guide/2.directory-structure/1.modules.md b/docs/2.guide/2.directory-structure/1.modules.md index 2664e5601e..ce9de8f9f2 100644 --- a/docs/2.guide/2.directory-structure/1.modules.md +++ b/docs/2.guide/2.directory-structure/1.modules.md @@ -46,7 +46,11 @@ export default defineEventHandler(() => { When starting Nuxt, the `hello` module will be registered and the `/api/hello` route will be available. -Local modules are registered in alphabetical order. You can change the order by adding a number to the front of each directory name: +Modules are executed in the following sequence: +- First, the modules defined in [`nuxt.config.ts`](/docs/api/nuxt-config#modules-1) are loaded. +- Then, modules found in the `modules/` directory are executed, and they load in alphabetical order. + +You can change the order of local module by adding a number to the front of each directory name: ```bash [Directory structure] modules/ diff --git a/packages/schema/src/config/common.ts b/packages/schema/src/config/common.ts index 42191feace..b42b9a5e59 100644 --- a/packages/schema/src/config/common.ts +++ b/packages/schema/src/config/common.ts @@ -236,7 +236,8 @@ export default defineUntypedSchema({ * * Nuxt tries to resolve each item in the modules array using node require path * (in `node_modules`) and then will be resolved from project `srcDir` if `~` alias is used. - * @note Modules are executed sequentially so the order is important. + * @note Modules are executed sequentially so the order is important. First, the modules defined in `nuxt.config.ts` are loaded. Then, modules found in the `modules/` + * directory are executed, and they load in alphabetical order. * @example * ```js * modules: [ From 3fbd301e44a60d2ede8602c9975f0982f29a73ab Mon Sep 17 00:00:00 2001 From: Ryota Watanabe <43837308+wattanx@users.noreply.github.com> Date: Wed, 15 May 2024 00:29:41 +0900 Subject: [PATCH 13/85] docs: mark bridge as stable (#27212) --- docs/1.getting-started/12.upgrade.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/1.getting-started/12.upgrade.md b/docs/1.getting-started/12.upgrade.md index 87105806b4..e237f06eb9 100644 --- a/docs/1.getting-started/12.upgrade.md +++ b/docs/1.getting-started/12.upgrade.md @@ -370,7 +370,7 @@ In the table below, there is a quick comparison between 3 versions of Nuxt: Feature / Version | Nuxt 2 | Nuxt Bridge | Nuxt 3 -------------------------|-----------------|------------------|--------- Vue | 2 | 2 | 3 -Stability | 😊 Stable | 😌 Semi-stable | 😊 Stable +Stability | 😊 Stable | 😊 Stable | 😊 Stable Performance | 🏎 Fast | ✈️ Faster | 🚀 Fastest Nitro Engine | ❌ | ✅ | ✅ ESM support | 🌙 Partial | 👍 Better | ✅ From b90936b4f13ec71c6f2cfc33f63b7bce83d83b5d Mon Sep 17 00:00:00 2001 From: Martins Zeltins <34019878+martinszeltins@users.noreply.github.com> Date: Tue, 14 May 2024 18:55:35 +0300 Subject: [PATCH 14/85] docs: explain how environment variables work in production (#27189) --- docs/2.guide/2.directory-structure/2.env.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/2.guide/2.directory-structure/2.env.md b/docs/2.guide/2.directory-structure/2.env.md index 660a8138d5..0a39c625a3 100644 --- a/docs/2.guide/2.directory-structure/2.env.md +++ b/docs/2.guide/2.directory-structure/2.env.md @@ -33,11 +33,25 @@ npx nuxi dev --dotenv .env.local When updating `.env` in development mode, the Nuxt instance is automatically restarted to apply new values to the `process.env`. -## Production Preview +## Production **After your server is built**, you are responsible for setting environment variables when you run the server. -Your `.env` file will not be read at this point. How you do this is different for every environment. +Your `.env` files will not be read at this point. How you do this is different for every environment. + +This design decision was made to ensure compatibility across various deployment environments, some of which may not have a traditional file system available, such as serverless platforms or edge networks like Cloudflare Workers. + +Since `.env` files are not used in production, you must explicitly set environment variables using the tools and methods provided by your hosting environment. Here are some common approaches: + +* You can pass the environment variables as arguments using the terminal: + + `$ DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs` + +* You can set environment variables in shell configuration files like `.bashrc` or `.profile`. + +* Many cloud service providers, such as Vercel, Netlify, and AWS, provide interfaces for setting environment variables via their dashboards, CLI tools or configuration files. + +## Production Preview For local production preview purpose, we recommend using [`nuxi preview`](/docs/api/commands/preview) since using this command, the `.env` file will be loaded into `process.env` for convenience. Note that this command requires dependencies to be installed in the package directory. From 7189dafd263add882424df8360506421912f748c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 May 2024 11:43:40 -0500 Subject: [PATCH 15/85] chore(deps): update all non-major dependencies (main) (#27215) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release-pr.yml | 2 +- package.json | 4 +- pnpm-lock.yaml | 162 +++++++++++++++---------------- 4 files changed, 85 insertions(+), 85 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2ebdcf602..f27fa3e1ef 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -248,7 +248,7 @@ jobs: TEST_PAYLOAD: ${{ matrix.payload }} SKIP_BUNDLE_SIZE: ${{ github.event_name != 'push' || matrix.env == 'dev' || matrix.builder == 'webpack' || matrix.context == 'default' || runner.os == 'Windows' }} - - uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be # v4.3.1 + - uses: codecov/codecov-action@6d798873df2b1b8e5846dba6fb86631229fbcb17 # v4.4.0 if: github.event_name != 'push' && matrix.env == 'built' && matrix.builder == 'vite' && matrix.context == 'default' && matrix.os == 'ubuntu-latest' && matrix.manifest == 'manifest-on' with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 6558f9b7f8..6b1c713b40 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Ensure action is by maintainer - uses: octokit/request-action@21d174fc38ff59af9cf4d7e07347d29df6dbaa99 # v2.3.0 + uses: octokit/request-action@872c5c97b3c85c23516a572f02b31401ef82415d # v2.3.1 id: check_role with: route: GET /repos/nuxt/nuxt/collaborators/${{ github.event.comment.user.login }} diff --git a/package.json b/package.json index 8ba517cb93..a3e094b228 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@testing-library/vue": "8.0.3", "@types/eslint__js": "8.42.3", "@types/fs-extra": "11.0.4", - "@types/node": "20.12.11", + "@types/node": "20.12.12", "@types/semver": "7.5.8", "@vitest/coverage-v8": "1.6.0", "@vue/test-utils": "2.4.6", @@ -69,7 +69,7 @@ "fs-extra": "11.2.0", "globby": "14.0.1", "h3": "1.11.1", - "happy-dom": "14.10.1", + "happy-dom": "14.10.2", "jiti": "1.21.0", "markdownlint-cli": "0.40.0", "nitropack": "2.9.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45fa3dd7f9..1ed01153fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: link:packages/kit '@nuxt/test-utils': specifier: 3.12.1 - version: 3.12.1(@testing-library/vue@8.0.3(@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.10.1)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(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: 3.12.1(@testing-library/vue@8.0.3(@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.10.2)(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.10.2)(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 @@ -45,14 +45,14 @@ importers: specifier: 11.0.4 version: 11.0.4 '@types/node': - specifier: 20.12.11 - version: 20.12.11 + specifier: 20.12.12 + version: 20.12.12 '@types/semver': specifier: 7.5.8 version: 7.5.8 '@vitest/coverage-v8': specifier: 1.6.0 - version: 1.6.0(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0)) + version: 1.6.0(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0)) '@vue/test-utils': specifier: 2.4.6 version: 2.4.6 @@ -93,8 +93,8 @@ importers: specifier: 1.11.1 version: 1.11.1 happy-dom: - specifier: 14.10.1 - version: 14.10.1 + specifier: 14.10.2 + version: 14.10.2 jiti: specifier: 1.21.0 version: 1.21.0 @@ -139,10 +139,10 @@ importers: version: 1.5.3 vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0) vitest-environment-nuxt: specifier: 1.0.0 - version: 1.0.0(@testing-library/vue@8.0.3(@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.10.1)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(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.0.3(@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.10.2)(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.10.2)(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) @@ -236,10 +236,10 @@ importers: 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.11)(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.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0) webpack: specifier: 5.91.0 version: 5.91.0 @@ -441,7 +441,7 @@ importers: version: 5.2.11(@types/node@20.12.10)(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.10.1)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.12.10)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0) packages/schema: dependencies: @@ -499,10 +499,10 @@ importers: version: 1.9.10 '@vitejs/plugin-vue': specifier: 5.0.4 - version: 5.0.4(vite@5.2.11(@types/node@20.12.11)(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)) '@vitejs/plugin-vue-jsx': specifier: 3.1.0 - version: 3.1.0(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 3.1.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/compiler-core': specifier: 3.4.27 version: 3.4.27 @@ -541,7 +541,7 @@ importers: version: 1.9.0 vite: specifier: 5.2.11 - version: 5.2.11(@types/node@20.12.11)(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) vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -598,10 +598,10 @@ importers: version: 1.3.0 unocss: specifier: 0.60.2 - version: 0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + version: 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: specifier: 5.2.11 - version: 5.2.11(@types/node@20.12.11)(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) packages/vite: dependencies: @@ -613,10 +613,10 @@ importers: version: 5.0.5(rollup@4.17.2) '@vitejs/plugin-vue': specifier: ^5.0.4 - version: 5.0.4(vite@5.2.11(@types/node@20.12.11)(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)) '@vitejs/plugin-vue-jsx': specifier: ^3.1.0 - version: 3.1.0(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5)) + version: 3.1.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)) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) @@ -697,13 +697,13 @@ importers: version: 1.10.1 vite: specifier: 5.2.11 - version: 5.2.11(@types/node@20.12.11)(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) vite-node: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) vite-plugin-checker: specifier: ^0.6.4 - version: 0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.17(typescript@5.4.5)) + version: 0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.17(typescript@5.4.5)) vue-bundle-renderer: specifier: ^2.1.0 version: 2.1.0 @@ -926,7 +926,7 @@ importers: version: 1.3.4 vitest: specifier: 1.5.3 - version: 1.5.3(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0) + version: 1.5.3(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0) vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -2446,8 +2446,8 @@ packages: '@types/node@20.12.10': resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} - '@types/node@20.12.11': - resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} + '@types/node@20.12.12': + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -4346,8 +4346,8 @@ packages: h3@1.11.1: resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} - happy-dom@14.10.1: - resolution: {integrity: sha512-GRbrZYIezi8+tTtffF4v2QcF8bk1h2loUTO5VYQz3GZdrL08Vk0fI+bwf/vFEBf4C/qVf/easLJ/MY1wwdhytA==} + happy-dom@14.10.2: + resolution: {integrity: sha512-n9A1h5X4OCJ1ACjjrLQJQ10F02dkGj9wpPdtam/LsxPHfcpsRp55Kfrruz/LVbDuM4QLwgZ56jr4OSVImWZkhQ==} engines: {node: '>=16.0.0'} has-bigints@1.0.2: @@ -8045,7 +8045,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.5 '@types/istanbul-reports': 3.0.3 - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/yargs': 17.0.28 chalk: 4.1.2 @@ -8347,7 +8347,7 @@ snapshots: rc9: 2.1.2 std-env: 3.7.0 - '@nuxt/test-utils@3.12.1(@testing-library/vue@8.0.3(@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.10.1)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(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.12.1(@testing-library/vue@8.0.3(@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.10.2)(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.10.2)(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 @@ -8372,16 +8372,16 @@ snapshots: ufo: 1.5.3 unenv: 1.9.0 unplugin: 1.10.1 - vite: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) - vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.0.3(@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.10.1)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(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)) + 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.0.3(@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.10.2)(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.10.2)(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: '@testing-library/vue': 8.0.3(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.4.5)) '@vue/test-utils': 2.4.6 - happy-dom: 14.10.1 + happy-dom: 14.10.2 playwright-core: 1.44.0 - vitest: 1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0) + vitest: 1.6.0(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0) '@nuxtjs/mdc@0.5.0': dependencies: @@ -8765,14 +8765,14 @@ snapshots: '@types/clean-css@4.2.11': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 source-map: 0.6.1 '@types/clear@0.1.4': {} '@types/connect@3.4.37': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/debug@4.1.12': dependencies: @@ -8817,7 +8817,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/istanbul-lib-coverage@2.0.5': {} @@ -8833,7 +8833,7 @@ snapshots: '@types/jsonfile@6.1.2': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/lodash-es@4.17.12': dependencies: @@ -8849,13 +8849,13 @@ snapshots: '@types/node-sass@4.11.6': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/node@20.12.10': dependencies: undici-types: 5.26.5 - '@types/node@20.12.11': + '@types/node@20.12.12': dependencies: undici-types: 5.26.5 @@ -8916,7 +8916,7 @@ snapshots: '@types/webpack-sources@3.2.1': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/source-list-map': 0.1.4 source-map: 0.7.4 @@ -8926,7 +8926,7 @@ snapshots: '@types/webpack@4.41.34': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/tapable': 1.0.10 '@types/uglify-js': 3.17.3 '@types/webpack-sources': 3.2.1 @@ -9111,13 +9111,13 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/astro@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': + '@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 '@unocss/reset': 0.60.2 - '@unocss/vite': 0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + '@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)) optionalDependencies: - vite: 5.2.11(@types/node@20.12.11)(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: - rollup @@ -9264,7 +9264,7 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/vite@0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))': + '@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 '@rollup/pluginutils': 5.1.0(rollup@4.17.2) @@ -9276,7 +9276,7 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 5.2.11(@types/node@20.12.11)(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: - rollup @@ -9298,12 +9298,12 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue@3.4.27(typescript@5.4.5))': + '@vitejs/plugin-vue-jsx@3.1.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: '@babel/core': 7.24.5 '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.5) '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.24.5) - vite: 5.2.11(@types/node@20.12.11)(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) transitivePeerDependencies: - supports-color @@ -9313,12 +9313,12 @@ snapshots: 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.11)(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.11)(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) - '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0))': + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -9333,7 +9333,7 @@ snapshots: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0) + vitest: 1.6.0(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -11324,7 +11324,7 @@ snapshots: transitivePeerDependencies: - uWebSockets.js - happy-dom@14.10.1: + happy-dom@14.10.2: dependencies: entities: 4.5.0 webidl-conversions: 7.0.0 @@ -11761,7 +11761,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 20.12.12 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -11769,13 +11769,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14276,9 +14276,9 @@ snapshots: - rollup - supports-color - unocss@0.60.2(postcss@8.4.38)(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(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)): dependencies: - '@unocss/astro': 0.60.2(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0)) + '@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)) '@unocss/cli': 0.60.2(rollup@4.17.2) '@unocss/core': 0.60.2 '@unocss/extractor-arbitrary-variants': 0.60.2 @@ -14297,9 +14297,9 @@ snapshots: '@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.11)(sass@1.69.4)(terser@5.27.0)) + '@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)) optionalDependencies: - vite: 5.2.11(@types/node@20.12.11)(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: - postcss - rollup @@ -14435,13 +14435,13 @@ snapshots: dependencies: vite: 5.2.11(@types/node@20.12.10)(sass@1.69.4)(terser@5.27.0) - vite-node@1.5.3(@types/node@20.12.11)(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: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.11)(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: - '@types/node' - less @@ -14469,13 +14469,13 @@ snapshots: - supports-color - terser - vite-node@1.6.0(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0): + vite-node@1.6.0(@types/node@20.12.12)(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.11)(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: - '@types/node' - less @@ -14486,7 +14486,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.17(typescript@5.4.5)): + vite-plugin-checker@0.6.4(eslint@9.2.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.17(typescript@5.4.5)): dependencies: '@babel/code-frame': 7.24.2 ansi-escapes: 4.3.2 @@ -14499,7 +14499,7 @@ snapshots: semver: 7.6.2 strip-ansi: 6.0.1 tiny-invariant: 1.3.1 - vite: 5.2.11(@types/node@20.12.11)(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) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 @@ -14554,20 +14554,20 @@ snapshots: sass: 1.69.4 terser: 5.27.0 - vite@5.2.11(@types/node@20.12.11)(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 postcss: 8.4.38 rollup: 4.17.2 optionalDependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 fsevents: 2.3.3 sass: 1.69.4 terser: 5.27.0 - vitest-environment-nuxt@1.0.0(@testing-library/vue@8.0.3(@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.10.1)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(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.0.3(@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.10.2)(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.10.2)(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.0.3(@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.10.1)(playwright-core@1.44.0)(vite@5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(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.12.1(@testing-library/vue@8.0.3(@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.10.2)(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.10.2)(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' @@ -14584,7 +14584,7 @@ snapshots: - vue - vue-router - vitest@1.5.3(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0): + vitest@1.5.3(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0): dependencies: '@vitest/expect': 1.5.3 '@vitest/runner': 1.5.3 @@ -14603,12 +14603,12 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.5.1 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) - vite-node: 1.5.3(@types/node@20.12.11)(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) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.12.11 - happy-dom: 14.10.1 + '@types/node': 20.12.12 + happy-dom: 14.10.2 transitivePeerDependencies: - less - lightningcss @@ -14618,7 +14618,7 @@ snapshots: - supports-color - terser - vitest@1.6.0(@types/node@20.12.10)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0): + vitest@1.6.0(@types/node@20.12.10)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -14642,7 +14642,7 @@ snapshots: why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.12.10 - happy-dom: 14.10.1 + happy-dom: 14.10.2 transitivePeerDependencies: - less - lightningcss @@ -14652,7 +14652,7 @@ snapshots: - supports-color - terser - vitest@1.6.0(@types/node@20.12.11)(happy-dom@14.10.1)(sass@1.69.4)(terser@5.27.0): + vitest@1.6.0(@types/node@20.12.12)(happy-dom@14.10.2)(sass@1.69.4)(terser@5.27.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -14671,12 +14671,12 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.5.1 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.11)(sass@1.69.4)(terser@5.27.0) - vite-node: 1.6.0(@types/node@20.12.11)(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.6.0(@types/node@20.12.12)(sass@1.69.4)(terser@5.27.0) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.12.11 - happy-dom: 14.10.1 + '@types/node': 20.12.12 + happy-dom: 14.10.2 transitivePeerDependencies: - less - lightningcss From b96b62ecd2daf412ddc9b02cdc15f82a34a231ab Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 14 May 2024 19:54:37 +0200 Subject: [PATCH 16/85] refactor: improve regexp performance (#27207) --- eslint.config.mjs | 4 ++ package.json | 1 + packages/kit/src/compatibility.ts | 2 +- packages/kit/src/internal/template.ts | 2 +- packages/kit/src/runtime-config.ts | 2 +- packages/kit/src/template.ts | 4 +- .../src/components/client-fallback-auto-id.ts | 4 +- .../nuxt/src/components/islandsTransform.ts | 2 +- packages/nuxt/src/components/loader.ts | 2 +- packages/nuxt/src/components/module.ts | 2 +- packages/nuxt/src/components/scan.ts | 4 +- packages/nuxt/src/components/templates.ts | 4 +- packages/nuxt/src/components/tree-shake.ts | 2 +- packages/nuxt/src/core/builder.ts | 2 +- packages/nuxt/src/core/nitro.ts | 2 +- packages/nuxt/src/core/nuxt.ts | 2 +- .../src/core/plugins/import-protection.ts | 2 +- .../src/core/runtime/nitro/dev-server-logs.ts | 4 +- .../nuxt/src/core/runtime/nitro/renderer.ts | 2 +- packages/nuxt/src/core/templates.ts | 2 +- packages/nuxt/src/core/utils/plugins.ts | 2 +- .../pages/runtime/plugins/prerender.server.ts | 2 +- packages/nuxt/src/pages/utils.ts | 8 ++-- packages/nuxt/test/treeshake-client.test.ts | 2 +- packages/ui-templates/lib/dev.ts | 2 +- packages/ui-templates/lib/render.ts | 22 ++++----- packages/vite/src/plugins/composable-keys.ts | 6 +-- packages/vite/src/plugins/ssr-styles.ts | 2 +- packages/vite/src/utils/index.ts | 2 +- packages/webpack/src/configs/server.ts | 2 +- packages/webpack/src/plugins/vue/util.ts | 2 +- packages/webpack/src/utils/config.ts | 2 +- pnpm-lock.yaml | 47 +++++++++++++++++++ scripts/update-changelog.ts | 2 +- test/basic.test.ts | 18 +++---- test/utils.ts | 2 +- 36 files changed, 113 insertions(+), 61 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index c4e282b673..8f4fc6a467 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -5,6 +5,7 @@ import noOnlyTests from 'eslint-plugin-no-only-tests' import typegen from 'eslint-typegen' // @ts-expect-error missing types import perfectionist from 'eslint-plugin-perfectionist' +import regex from 'eslint-plugin-regexp' export default createConfigForNuxt({ features: { @@ -216,6 +217,9 @@ export default createConfigForNuxt({ 'vue/multi-word-component-names': 'off', }, }, + + // @ts-ignore types misaligned + regex.configs['flat/recommended'], ) // Generate type definitions for the eslint config diff --git a/package.json b/package.json index a3e094b228..0620a07d04 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "eslint": "9.2.0", "eslint-plugin-no-only-tests": "3.1.0", "eslint-plugin-perfectionist": "2.10.0", + "eslint-plugin-regexp": "^2.5.0", "eslint-typegen": "0.2.4", "execa": "9.1.0", "fs-extra": "11.2.0", diff --git a/packages/kit/src/compatibility.ts b/packages/kit/src/compatibility.ts index a03813dd48..b2720f05c9 100644 --- a/packages/kit/src/compatibility.ts +++ b/packages/kit/src/compatibility.ts @@ -4,7 +4,7 @@ import type { Nuxt, NuxtCompatibility, NuxtCompatibilityIssues } from '@nuxt/sch import { useNuxt } from './context' export function normalizeSemanticVersion (version: string) { - return version.replace(/-[0-9]+\.[0-9a-f]+/, '') // Remove edge prefix + return version.replace(/-\d+\.[0-9a-f]+/, '') // Remove edge prefix } const builderMap = { diff --git a/packages/kit/src/internal/template.ts b/packages/kit/src/internal/template.ts index 9349f704df..5b40a2a214 100644 --- a/packages/kit/src/internal/template.ts +++ b/packages/kit/src/internal/template.ts @@ -27,7 +27,7 @@ export async function compileTemplate (template: NuxtTemplate, ctx: any) { } /** @deprecated */ -const serialize = (data: any) => JSON.stringify(data, null, 2).replace(/"{(.+)}"(?=,?$)/gm, r => JSON.parse(r).replace(/^{(.*)}$/, '$1')) +const serialize = (data: any) => JSON.stringify(data, null, 2).replace(/"\{(.+)\}"(?=,?$)/gm, r => JSON.parse(r).replace(/^\{(.*)\}$/, '$1')) /** @deprecated */ const importSources = (sources: string | string[], { lazy = false } = {}) => { diff --git a/packages/kit/src/runtime-config.ts b/packages/kit/src/runtime-config.ts index a83358f11c..f6e014fd3e 100644 --- a/packages/kit/src/runtime-config.ts +++ b/packages/kit/src/runtime-config.ts @@ -94,7 +94,7 @@ function applyEnv ( return obj } -const envExpandRx = /{{(.*?)}}/g +const envExpandRx = /\{\{(.*?)\}\}/g function _expandFromEnv (value: string, env: Record = process.env) { return value.replace(envExpandRx, (match, key) => { diff --git a/packages/kit/src/template.ts b/packages/kit/src/template.ts index 9290e62fd5..4aa9ec147b 100644 --- a/packages/kit/src/template.ts +++ b/packages/kit/src/template.ts @@ -202,7 +202,7 @@ export async function _generateTypes (nuxt: Nuxt) { } else { const path = stats?.isFile() // remove extension - ? relativePath.replace(/(?<=\w)\.\w+$/g, '') + ? relativePath.replace(/\b\.\w+$/g, '') // non-existent file probably shouldn't be resolved : aliases[alias] @@ -230,7 +230,7 @@ export async function _generateTypes (nuxt: Nuxt) { tsConfig.compilerOptions!.paths[alias] = await Promise.all(paths.map(async (path: string) => { if (!isAbsolute(path)) { return path } const stats = await fsp.stat(path).catch(() => null /* file does not exist */) - return relativeWithDot(nuxt.options.buildDir, stats?.isFile() ? path.replace(/(?<=\w)\.\w+$/g, '') /* remove extension */ : path) + return relativeWithDot(nuxt.options.buildDir, stats?.isFile() ? path.replace(/\b\.\w+$/g, '') /* remove extension */ : path) })) } diff --git a/packages/nuxt/src/components/client-fallback-auto-id.ts b/packages/nuxt/src/components/client-fallback-auto-id.ts index 19b5a39984..7aa42f1d0a 100644 --- a/packages/nuxt/src/components/client-fallback-auto-id.ts +++ b/packages/nuxt/src/components/client-fallback-auto-id.ts @@ -10,7 +10,7 @@ interface LoaderOptions { transform?: ComponentsOptions['transform'] rootDir: string } -const CLIENT_FALLBACK_RE = /<(NuxtClientFallback|nuxt-client-fallback)( [^>]*)?>/ +const CLIENT_FALLBACK_RE = /<(?:NuxtClientFallback|nuxt-client-fallback)(?: [^>]*)?>/ const CLIENT_FALLBACK_GLOBAL_RE = /<(NuxtClientFallback|nuxt-client-fallback)( [^>]*)?>/g export const clientFallbackAutoIdPlugin = createUnplugin((options: LoaderOptions) => { const exclude = options.transform?.exclude || [] @@ -37,7 +37,7 @@ export const clientFallbackAutoIdPlugin = createUnplugin((options: LoaderOptions s.replace(CLIENT_FALLBACK_GLOBAL_RE, (full, name, attrs) => { count++ - if (/ :?uid=/g.test(attrs)) { return full } + if (/ :?uid=/.test(attrs)) { return full } return `<${name} :uid="'${hash(relativeID)}' + JSON.stringify($props) + '${count}'" ${attrs ?? ''}>` }) diff --git a/packages/nuxt/src/components/islandsTransform.ts b/packages/nuxt/src/components/islandsTransform.ts index 6e018dc167..ac5a954932 100644 --- a/packages/nuxt/src/components/islandsTransform.ts +++ b/packages/nuxt/src/components/islandsTransform.ts @@ -25,7 +25,7 @@ interface ComponentChunkOptions { } const SCRIPT_RE = /]*>/g -const HAS_SLOT_OR_CLIENT_RE = /(]*>)|(nuxt-client)/ +const HAS_SLOT_OR_CLIENT_RE = /]*>|nuxt-client/ const TEMPLATE_RE = / ``` +### Passing Params to Dynamic Routes + +In this example, we pass the `id` param to link to the route `~/pages/posts/[id].vue`. + +```vue [pages/index.vue] + +``` + +::tip +Check out the Pages panel in Nuxt DevTools to see the route name and the params it might take. +:: + ### Handling 404s When using `` for `/public` directory files or when pointing to a different app on the same domain, you should use the `external` prop. From b4002f37d1ffc934796b34ce8862a39970aa153b Mon Sep 17 00:00:00 2001 From: Julien Huang Date: Tue, 21 May 2024 10:18:36 +0200 Subject: [PATCH 40/85] feat(nuxt): check schema/kit versions when loading nuxt (#27224) --- docs/2.guide/3.going-further/4.kit.md | 4 ++ packages/nuxt/package.json | 1 + packages/nuxt/src/core/nuxt.ts | 19 ++++++++ packages/nuxt/test/load-nuxt.test.ts | 64 ++++++++++++++++++++++++++- pnpm-lock.yaml | 3 ++ 5 files changed, 90 insertions(+), 1 deletion(-) diff --git a/docs/2.guide/3.going-further/4.kit.md b/docs/2.guide/3.going-further/4.kit.md index 0610737513..226762b899 100644 --- a/docs/2.guide/3.going-further/4.kit.md +++ b/docs/2.guide/3.going-further/4.kit.md @@ -15,6 +15,10 @@ Discover all Nuxt Kit utilities. You can install the latest Nuxt Kit by adding it to the `dependencies` section of your `package.json`. However, please consider always explicitly installing the `@nuxt/kit` package even if it is already installed by Nuxt. +::note +`@nuxt/kit` and `@nuxt/schema` are key dependencies for Nuxt. If you are installing it separately, make sure that the versions of `@nuxt/kit` and `@nuxt/schema` are equal to or greater than your `nuxt` version to avoid any unexpected behavior. +:: + ```json [package.json] { "dependencies": { diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 6fffff3ad5..ab4a078a57 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -99,6 +99,7 @@ "pkg-types": "^1.1.1", "radix3": "^1.1.2", "scule": "^1.3.0", + "semver": "^7.6.2", "std-env": "^3.7.0", "strip-literal": "^2.1.0", "ufo": "^1.5.3", diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index 390683579d..e607ce4433 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -13,6 +13,7 @@ import fse from 'fs-extra' import { withTrailingSlash, withoutLeadingSlash } from 'ufo' import defu from 'defu' +import { gte } from 'semver' import pagesModule from '../pages/module' import metaModule from '../head/module' import componentsModule from '../components/module' @@ -63,6 +64,11 @@ const nightlies = { '@nuxt/kit': '@nuxt/kit-nightly', } +const keyDependencies = [ + '@nuxt/kit', + '@nuxt/schema', +] + async function initNuxt (nuxt: Nuxt) { // Register user hooks for (const config of nuxt.options._layers.map(layer => layer.config).reverse()) { @@ -616,6 +622,8 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise { const nuxt = createNuxt(options) + await Promise.all(keyDependencies.map(dependency => checkDependencyVersion(dependency, nuxt._version))) + // We register hooks layer-by-layer so any overrides need to be registered separately if (opts.overrides?.hooks) { nuxt.hooks.addHooks(opts.overrides.hooks) @@ -632,4 +640,15 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise { return nuxt } +async function checkDependencyVersion (name: string, nuxtVersion: string): Promise { + const path = await resolvePath(name).catch(() => null) + + if (!path) { return } + const { version } = await readPackageJSON(path) + + if (version && gte(nuxtVersion, version)) { + console.warn(`[nuxt] Expected \`${name}\` to be at least \`${nuxtVersion}\` but got \`${version}\`. This might lead to unexpected behavior. Check your package.json or refresh your lockfile.`) + } +} + const RESTART_RE = /^(?:app|error|app\.config)\.(?:js|ts|mjs|jsx|tsx|vue)$/i diff --git a/packages/nuxt/test/load-nuxt.test.ts b/packages/nuxt/test/load-nuxt.test.ts index d6207329c3..7efadc7e48 100644 --- a/packages/nuxt/test/load-nuxt.test.ts +++ b/packages/nuxt/test/load-nuxt.test.ts @@ -1,11 +1,32 @@ import { fileURLToPath } from 'node:url' -import { describe, expect, it } from 'vitest' +import { afterEach, describe, expect, it, vi } from 'vitest' import { normalize } from 'pathe' import { withoutTrailingSlash } from 'ufo' +import { readPackageJSON } from 'pkg-types' +import { inc } from 'semver' import { loadNuxt } from '../src' +import { version } from '../package.json' const repoRoot = withoutTrailingSlash(normalize(fileURLToPath(new URL('../../../', import.meta.url)))) +vi.stubGlobal('console', { + ...console, + error: vi.fn(console.error), + warn: vi.fn(console.warn), +}) + +vi.mock('pkg-types', async (og) => { + const originalPkgTypes = (await og()) + return { + ...originalPkgTypes, + readPackageJSON: vi.fn(originalPkgTypes.readPackageJSON), + } +}) + +afterEach(() => { + vi.clearAllMocks() +}) + describe('loadNuxt', () => { it('respects hook overrides', async () => { let hookRan = false @@ -24,3 +45,44 @@ describe('loadNuxt', () => { expect(hookRan).toBe(true) }) }) + +describe('dependency mismatch', () => { + it('expect mismatched dependency to log a warning', async () => { + vi.mocked(readPackageJSON).mockReturnValue(Promise.resolve({ + version: '3.0.0', + })) + + const nuxt = await loadNuxt({ + cwd: repoRoot, + }) + + expect(console.warn).toHaveBeenCalledWith(`[nuxt] Expected \`@nuxt/kit\` to be at least \`${version}\` but got \`3.0.0\`. This might lead to unexpected behavior. Check your package.json or refresh your lockfile.`) + expect(console.warn).toHaveBeenCalledWith(`[nuxt] Expected \`@nuxt/schema\` to be at least \`${version}\` but got \`3.0.0\`. This might lead to unexpected behavior. Check your package.json or refresh your lockfile.`) + + vi.mocked(readPackageJSON).mockRestore() + await nuxt.close() + }) + it.each([ + { + name: 'nuxt version is lower', + depVersion: inc(version, 'minor'), + }, + { + name: 'version matches', + depVersion: version, + }, + ])('expect no warning when $name.', async ({ depVersion }) => { + vi.mocked(readPackageJSON).mockReturnValue(Promise.resolve({ + depVersion, + })) + + const nuxt = await loadNuxt({ + cwd: repoRoot, + }) + + expect(console.warn).not.toHaveBeenCalled() + + await nuxt.close() + vi.mocked(readPackageJSON).mockRestore() + }) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2fa988d46e..2388ae56ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -369,6 +369,9 @@ importers: scule: specifier: ^1.3.0 version: 1.3.0 + semver: + specifier: ^7.6.2 + version: 7.6.2 std-env: specifier: ^3.7.0 version: 3.7.0 From c0b3d0329a3936f535966937c514ed7146194c08 Mon Sep 17 00:00:00 2001 From: yubo Date: Tue, 21 May 2024 16:27:32 +0800 Subject: [PATCH 41/85] docs: add additional example for setting `baseURL` and `cdnURL` (#27273) --- packages/schema/src/config/app.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/schema/src/config/app.ts b/packages/schema/src/config/app.ts index f9ad11e8c7..3b0feb2cd9 100644 --- a/packages/schema/src/config/app.ts +++ b/packages/schema/src/config/app.ts @@ -45,7 +45,17 @@ export default defineUntypedSchema({ /** * The base path of your Nuxt application. * - * This can be set at runtime by setting the NUXT_APP_BASE_URL environment variable. + * For example: + * @example + * ```ts + * export default defineNuxtConfig({ + * app: { + * baseURL: '/prefix/' + * } + * }) + * ``` + * + * This can also be set at runtime by setting the NUXT_APP_BASE_URL environment variable. * @example * ```bash * NUXT_APP_BASE_URL=/prefix/ node .output/server/index.mjs @@ -63,6 +73,16 @@ export default defineUntypedSchema({ /** * An absolute URL to serve the public folder from (production-only). * + * For example: + * @example + * ```ts + * export default defineNuxtConfig({ + * app: { + * cdnURL: 'https://mycdn.org/' + * } + * }) + * ``` + * * This can be set to a different value at runtime by setting the `NUXT_APP_CDN_URL` environment variable. * @example * ```bash From 2e25afdfb85d46ca523b60adad79612cdc93e5ce Mon Sep 17 00:00:00 2001 From: Nicolas Payot Date: Tue, 21 May 2024 15:42:19 +0200 Subject: [PATCH 42/85] feat(schema): add experimental `multiApp` flag (#27291) --- packages/schema/src/config/experimental.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/schema/src/config/experimental.ts b/packages/schema/src/config/experimental.ts index 92c3d7a707..ef3cde7759 100644 --- a/packages/schema/src/config/experimental.ts +++ b/packages/schema/src/config/experimental.ts @@ -45,6 +45,11 @@ export default defineUntypedSchema({ * @type {3 | 4} */ compatibilityVersion: 3, + /** + * This enables early access to the experimental multi-app support. + * @see [Nuxt Issue #21635](https://github.com/nuxt/nuxt/issues/21635) + */ + multiApp: false, /** * This enables 'Bundler' module resolution mode for TypeScript, which is the recommended setting * for frameworks like Nuxt and Vite. From d35e9cd3f5249ceef595ea57934f06161b13c6f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Tue, 21 May 2024 15:58:33 +0200 Subject: [PATCH 43/85] docs: update readme for Nuxt 2 NES and support --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index c054f7cfff..9570d902ed 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ It provides a number of features that make it easy to build fast, SEO-friendly, - ❤️ [Contribute](#contribute) - 🏠 [Local Development](#local-development) - ⛰️ [Nuxt 2](#nuxt-2) +- 🛟 [Professional Support](#professional-support) - 🔗 [Follow us](#follow-us) - ⚖️ [License](#license) @@ -104,6 +105,13 @@ Follow the docs to [Set Up Your Local Development Environment](https://nuxt.com/ You can find the code for Nuxt 2 on the [`2.x` branch](https://github.com/nuxt/nuxt/tree/2.x) and the documentation at [v2.nuxt.com](https://v2.nuxt.com). +If you expect to be using Nuxt 2 beyond the EOL (End of Life) date (June 30, 2024), and still need a maintained version that can satisfy security and browser compatibility requirements, make sure to check out [HeroDevs’ NES (Never-Ending Support) Nuxt 2](https://www.herodevs.com/support/nuxt-nes?utm_source=nuxt-github&utm_medium=nuxt-readme). + +## 🛟 Professional Support + +- Technical audit & consulting: [Nuxt Experts](https://nuxt.com/enterprise/support) +- Custom development & more: [Nuxt Agencies Partners](https://nuxt.com/enterprise/agencies) + ## 🔗 Follow us

From e5649613c7571a3343e70b7f7562ae392c71f0bf Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 21 May 2024 15:06:27 +0100 Subject: [PATCH 44/85] fix(nuxt): invert version check --- packages/nuxt/src/core/nuxt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index e607ce4433..f80bd11551 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -646,7 +646,7 @@ async function checkDependencyVersion (name: string, nuxtVersion: string): Promi if (!path) { return } const { version } = await readPackageJSON(path) - if (version && gte(nuxtVersion, version)) { + if (version && !gte(nuxtVersion, version)) { console.warn(`[nuxt] Expected \`${name}\` to be at least \`${nuxtVersion}\` but got \`${version}\`. This might lead to unexpected behavior. Check your package.json or refresh your lockfile.`) } } From a531e6f466371c5326a5f2d97434f682cef05d5f Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 21 May 2024 16:55:22 +0100 Subject: [PATCH 45/85] fix(nuxt): exempt equality check for kit/schema version --- packages/nuxt/src/core/nuxt.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index f80bd11551..e3aac36469 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -13,7 +13,7 @@ import fse from 'fs-extra' import { withTrailingSlash, withoutLeadingSlash } from 'ufo' import defu from 'defu' -import { gte } from 'semver' +import { gt } from 'semver' import pagesModule from '../pages/module' import metaModule from '../head/module' import componentsModule from '../components/module' @@ -646,7 +646,7 @@ async function checkDependencyVersion (name: string, nuxtVersion: string): Promi if (!path) { return } const { version } = await readPackageJSON(path) - if (version && !gte(nuxtVersion, version)) { + if (version && gt(nuxtVersion, version)) { console.warn(`[nuxt] Expected \`${name}\` to be at least \`${nuxtVersion}\` but got \`${version}\`. This might lead to unexpected behavior. Check your package.json or refresh your lockfile.`) } } From 8a759bc6fe402bb6fc8dc0ae25401992a16d5880 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 21 May 2024 23:58:38 +0100 Subject: [PATCH 46/85] fix(nuxt): use `undefined` rather than `null` for data fetching defaults (#27294) --- docs/1.getting-started/12.upgrade.md | 31 ++++++ packages/nuxt/index.d.ts | 6 ++ .../nuxt/src/app/composables/asyncData.ts | 54 ++++++----- packages/nuxt/src/app/composables/error.ts | 5 +- packages/nuxt/src/app/composables/fetch.ts | 21 ++-- packages/nuxt/src/app/defaults.js | 2 + packages/nuxt/src/app/nuxt.ts | 8 +- packages/nuxt/src/core/templates.ts | 13 ++- packages/schema/src/config/experimental.ts | 12 +++ test/basic.test.ts | 10 +- test/fixtures/basic-types/types.ts | 97 ++++++++++--------- .../immediate-remove-unmounted.vue | 8 +- test/nuxt/composables.test.ts | 25 ++--- 13 files changed, 188 insertions(+), 104 deletions(-) create mode 100644 packages/nuxt/src/app/defaults.js diff --git a/docs/1.getting-started/12.upgrade.md b/docs/1.getting-started/12.upgrade.md index e237f06eb9..4e0301db96 100644 --- a/docs/1.getting-started/12.upgrade.md +++ b/docs/1.getting-started/12.upgrade.md @@ -189,6 +189,37 @@ export default defineNuxtConfig({ }) ``` +#### Default `data` and `error` values in `useAsyncData` and `useFetch` + +🚦 **Impact Level**: Minimal + +##### What Changed + +`data` and `error` objects returned from `useAsyncData` will now default to `undefined`. + +##### Reasons for Change + +Previously `data` was initialized to `null` but reset in `clearNuxtData` to `undefined`. `error` was initialized to `null`. This change is to bring greater consistency. + +##### Migration Steps + +If you encounter any issues you can revert back to the previous behavior with: + +```ts twoslash [nuxt.config.ts] +export default defineNuxtConfig({ + experimental: { + defaults: { + useAsyncData: { + value: 'null', + errorValue: 'null' + } + } + } +}) +``` + +Please report an issue if you are doing this, as we do not plan to keep this as configurable. + #### Shallow Data Reactivity in `useAsyncData` and `useFetch` 🚦 **Impact Level**: Minimal diff --git a/packages/nuxt/index.d.ts b/packages/nuxt/index.d.ts index 2256348248..ba2935d80d 100644 --- a/packages/nuxt/index.d.ts +++ b/packages/nuxt/index.d.ts @@ -19,4 +19,10 @@ declare global { } } +declare module '#app/defaults' { + type DefaultAsyncDataErrorValue = undefined + type DefaultAsyncDataValue = undefined + type DefaultErrorValue = undefined +} + export {} diff --git a/packages/nuxt/src/app/composables/asyncData.ts b/packages/nuxt/src/app/composables/asyncData.ts index 5e9f9bf081..262a1ee54b 100644 --- a/packages/nuxt/src/app/composables/asyncData.ts +++ b/packages/nuxt/src/app/composables/asyncData.ts @@ -10,6 +10,9 @@ import { onNuxtReady } from './ready' // @ts-expect-error virtual file import { asyncDataDefaults } from '#build/nuxt.config.mjs' +// TODO: temporary module for backwards compatibility +import type { DefaultAsyncDataErrorValue, DefaultAsyncDataValue } from '#app/defaults' + export type AsyncDataRequestStatus = 'idle' | 'pending' | 'success' | 'error' export type _Transform = (input: Input) => Output | Promise @@ -42,7 +45,7 @@ export interface AsyncDataOptions< ResT, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > { /** * Whether to fetch on the server side. @@ -117,7 +120,7 @@ export interface _AsyncData { refresh: (opts?: AsyncDataExecuteOptions) => Promise execute: (opts?: AsyncDataExecuteOptions) => Promise clear: () => void - error: Ref + error: Ref status: Ref } @@ -138,11 +141,11 @@ export function useAsyncData< NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( handler: (ctx?: NuxtApp) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | DefaultAsyncDataErrorValue> /** * Provides access to data that resolves asynchronously in an SSR-friendly composable. * See {@link https://nuxt.com/docs/api/composables/use-async-data} @@ -158,7 +161,7 @@ export function useAsyncData< > ( handler: (ctx?: NuxtApp) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | DefaultAsyncDataErrorValue> /** * Provides access to data that resolves asynchronously in an SSR-friendly composable. * See {@link https://nuxt.com/docs/api/composables/use-async-data} @@ -171,12 +174,12 @@ export function useAsyncData< NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( key: string, handler: (ctx?: NuxtApp) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | DefaultAsyncDataErrorValue> /** * Provides access to data that resolves asynchronously in an SSR-friendly composable. * See {@link https://nuxt.com/docs/api/composables/use-async-data} @@ -194,14 +197,14 @@ export function useAsyncData< key: string, handler: (ctx?: NuxtApp) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | DefaultAsyncDataErrorValue> export function useAsyncData< ResT, NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, -> (...args: any[]): AsyncData, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> { + DefaultT = DefaultAsyncDataValue, +> (...args: any[]): AsyncData, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | DefaultAsyncDataErrorValue> { const autoKey = typeof args[args.length - 1] === 'string' ? args.pop() : undefined if (typeof args[0] !== 'string') { args.unshift(autoKey) } @@ -233,7 +236,7 @@ export function useAsyncData< } // Used to get default values - const getDefault = () => null + const getDefault = () => asyncDataDefaults.value const getDefaultCachedData = () => nuxtApp.isHydrating ? nuxtApp.payload.data[key] : nuxtApp.static.data[key] // Apply defaults @@ -250,11 +253,12 @@ export function useAsyncData< console.warn('[nuxt] `boolean` values are deprecated for the `dedupe` option of `useAsyncData` and will be removed in the future. Use \'cancel\' or \'defer\' instead.') } + // TODO: make more precise when v4 lands const hasCachedData = () => options.getCachedData!(key, nuxtApp) != null // Create or use a shared asyncData entity if (!nuxtApp._asyncData[key] || !options.immediate) { - nuxtApp.payload._errors[key] ??= null + nuxtApp.payload._errors[key] ??= asyncDataDefaults.errorValue const _ref = options.deep ? ref : shallowRef @@ -307,7 +311,7 @@ export function useAsyncData< nuxtApp.payload.data[key] = result asyncData.data.value = result - asyncData.error.value = null + asyncData.error.value = asyncDataDefaults.errorValue asyncData.status.value = 'success' }) .catch((error: any) => { @@ -404,11 +408,11 @@ export function useLazyAsyncData< DataE = Error, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( handler: (ctx?: NuxtApp) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, DataE | null> +): AsyncData | DefaultT, DataE | DefaultAsyncDataValue> export function useLazyAsyncData< ResT, DataE = Error, @@ -418,18 +422,18 @@ export function useLazyAsyncData< > ( handler: (ctx?: NuxtApp) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, DataE | null> +): AsyncData | DefaultT, DataE | DefaultAsyncDataValue> export function useLazyAsyncData< ResT, DataE = Error, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( key: string, handler: (ctx?: NuxtApp) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, DataE | null> +): AsyncData | DefaultT, DataE | DefaultAsyncDataValue> export function useLazyAsyncData< ResT, DataE = Error, @@ -440,15 +444,15 @@ export function useLazyAsyncData< key: string, handler: (ctx?: NuxtApp) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, DataE | null> +): AsyncData | DefaultT, DataE | DefaultAsyncDataValue> export function useLazyAsyncData< ResT, DataE = Error, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, -> (...args: any[]): AsyncData | DefaultT, DataE | null> { + DefaultT = DefaultAsyncDataValue, +> (...args: any[]): AsyncData | DefaultT, DataE | DefaultAsyncDataValue> { const autoKey = typeof args[args.length - 1] === 'string' ? args.pop() : undefined if (typeof args[0] !== 'string') { args.unshift(autoKey) } const [key, handler, options = {}] = args as [string, (ctx?: NuxtApp) => Promise, AsyncDataOptions] @@ -463,12 +467,12 @@ export function useLazyAsyncData< } /** @since 3.1.0 */ -export function useNuxtData (key: string): { data: Ref } { +export function useNuxtData (key: string): { data: Ref } { const nuxtApp = useNuxtApp() // Initialize value when key is not already set if (!(key in nuxtApp.payload.data)) { - nuxtApp.payload.data[key] = null + nuxtApp.payload.data[key] = asyncDataDefaults.value } return { @@ -520,12 +524,12 @@ function clearNuxtDataByKey (nuxtApp: NuxtApp, key: string): void { } if (key in nuxtApp.payload._errors) { - nuxtApp.payload._errors[key] = null + nuxtApp.payload._errors[key] = asyncDataDefaults.errorValue } if (nuxtApp._asyncData[key]) { nuxtApp._asyncData[key]!.data.value = undefined - nuxtApp._asyncData[key]!.error.value = null + nuxtApp._asyncData[key]!.error.value = asyncDataDefaults.errorValue nuxtApp._asyncData[key]!.pending.value = false nuxtApp._asyncData[key]!.status.value = 'idle' } diff --git a/packages/nuxt/src/app/composables/error.ts b/packages/nuxt/src/app/composables/error.ts index 2a76c389a0..69b56e1c2b 100644 --- a/packages/nuxt/src/app/composables/error.ts +++ b/packages/nuxt/src/app/composables/error.ts @@ -4,6 +4,9 @@ import { toRef } from 'vue' import { useNuxtApp } from '../nuxt' import { useRouter } from './router' +// @ts-expect-error virtual file +import { nuxtDefaultErrorValue } from '#build/nuxt.config.mjs' + export const NUXT_ERROR_SIGNATURE = '__nuxt_error' /** @since 3.0.0 */ @@ -47,7 +50,7 @@ export const clearError = async (options: { redirect?: string } = {}) => { await useRouter().replace(options.redirect) } - error.value = null + error.value = nuxtDefaultErrorValue } /** @since 3.0.0 */ diff --git a/packages/nuxt/src/app/composables/fetch.ts b/packages/nuxt/src/app/composables/fetch.ts index d7b50ab717..e06ec23309 100644 --- a/packages/nuxt/src/app/composables/fetch.ts +++ b/packages/nuxt/src/app/composables/fetch.ts @@ -8,6 +8,9 @@ import { useRequestFetch } from './ssr' import type { AsyncData, AsyncDataOptions, KeysOf, MultiWatchSources, PickFrom } from './asyncData' import { useAsyncData } from './asyncData' +// TODO: temporary module for backwards compatibility +import type { DefaultAsyncDataErrorValue, DefaultAsyncDataValue } from '#app/defaults' + // @ts-expect-error virtual file import { fetchDefaults } from '#build/nuxt.config.mjs' @@ -30,7 +33,7 @@ export interface UseFetchOptions< ResT, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, R extends NitroFetchRequest = string & {}, M extends AvailableRouterMethod = AvailableRouterMethod, > extends Omit, 'watch'>, ComputedFetchOptions { @@ -54,11 +57,11 @@ export function useFetch< _ResT = ResT extends void ? FetchResult : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( request: Ref | ReqT | (() => ReqT), opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method> -): AsyncData | DefaultT, ErrorT | null> +): AsyncData | DefaultT, ErrorT | DefaultAsyncDataErrorValue> /** * Fetch data from an API endpoint with an SSR-friendly composable. * See {@link https://nuxt.com/docs/api/composables/use-fetch} @@ -77,7 +80,7 @@ export function useFetch< > ( request: Ref | ReqT | (() => ReqT), opts?: UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method> -): AsyncData | DefaultT, ErrorT | null> +): AsyncData | DefaultT, ErrorT | DefaultAsyncDataErrorValue> export function useFetch< ResT = void, ErrorT = FetchError, @@ -86,7 +89,7 @@ export function useFetch< _ResT = ResT extends void ? FetchResult : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( request: Ref | ReqT | (() => ReqT), arg1?: string | UseFetchOptions<_ResT, DataT, PickKeys, DefaultT, ReqT, Method>, @@ -190,11 +193,11 @@ export function useLazyFetch< _ResT = ResT extends void ? FetchResult : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( request: Ref | ReqT | (() => ReqT), opts?: Omit, 'lazy'> -): AsyncData | DefaultT, ErrorT | null> +): AsyncData | DefaultT, ErrorT | DefaultAsyncDataErrorValue> export function useLazyFetch< ResT = void, ErrorT = FetchError, @@ -207,7 +210,7 @@ export function useLazyFetch< > ( request: Ref | ReqT | (() => ReqT), opts?: Omit, 'lazy'> -): AsyncData | DefaultT, ErrorT | null> +): AsyncData | DefaultT, ErrorT | DefaultAsyncDataErrorValue> export function useLazyFetch< ResT = void, ErrorT = FetchError, @@ -216,7 +219,7 @@ export function useLazyFetch< _ResT = ResT extends void ? FetchResult : ResT, DataT = _ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = DefaultAsyncDataValue, > ( request: Ref | ReqT | (() => ReqT), arg1?: string | Omit, 'lazy'>, diff --git a/packages/nuxt/src/app/defaults.js b/packages/nuxt/src/app/defaults.js new file mode 100644 index 0000000000..8a0e47a141 --- /dev/null +++ b/packages/nuxt/src/app/defaults.js @@ -0,0 +1,2 @@ +// TODO: temporary module for backwards compatibility +export {} diff --git a/packages/nuxt/src/app/nuxt.ts b/packages/nuxt/src/app/nuxt.ts index bc9cdcedaa..ae3137a7e2 100644 --- a/packages/nuxt/src/app/nuxt.ts +++ b/packages/nuxt/src/app/nuxt.ts @@ -23,6 +23,8 @@ import type { ViewTransition } from './plugins/view-transitions.client' // @ts-expect-error virtual file import { appId } from '#build/nuxt.config.mjs' +// TODO: temporary module for backwards compatibility +import type { DefaultAsyncDataErrorValue, DefaultErrorValue } from '#app/defaults' import type { NuxtAppLiterals } from '#app' function getNuxtAppCtx (appName = appId || 'nuxt-app') { @@ -92,8 +94,8 @@ export interface NuxtPayload { state: Record once: Set config?: Pick - error?: NuxtError | null - _errors: Record + error?: NuxtError | DefaultErrorValue + _errors: Record [key: string]: unknown } @@ -122,7 +124,7 @@ interface _NuxtApp { _asyncData: Record pending: Ref - error: Ref + error: Ref status: Ref } | undefined> diff --git a/packages/nuxt/src/core/templates.ts b/packages/nuxt/src/core/templates.ts index d3df9846aa..c7246f42ee 100644 --- a/packages/nuxt/src/core/templates.ts +++ b/packages/nuxt/src/core/templates.ts @@ -130,6 +130,12 @@ declare module '#app' { } } +declare module '#app/defaults' { + type DefaultAsyncDataErrorValue = ${ctx.nuxt.options.future.compatibilityVersion === 4 ? 'undefined' : 'null'} + type DefaultAsyncDataValue = ${ctx.nuxt.options.future.compatibilityVersion === 4 ? 'undefined' : 'null'} + type DefaultErrorValue = ${ctx.nuxt.options.future.compatibilityVersion === 4 ? 'undefined' : 'null'} +} + declare module 'vue' { interface ComponentCustomProperties extends NuxtAppInjections { } } @@ -393,7 +399,12 @@ export const nuxtConfigTemplate: NuxtTemplate = { `export const devRootDir = ${ctx.nuxt.options.dev ? JSON.stringify(ctx.nuxt.options.rootDir) : 'null'}`, `export const devLogs = ${JSON.stringify(ctx.nuxt.options.features.devLogs)}`, `export const nuxtLinkDefaults = ${JSON.stringify(ctx.nuxt.options.experimental.defaults.nuxtLink)}`, - `export const asyncDataDefaults = ${JSON.stringify(ctx.nuxt.options.experimental.defaults.useAsyncData)}`, + `export const asyncDataDefaults = ${JSON.stringify({ + ...ctx.nuxt.options.experimental.defaults.useAsyncData, + value: ctx.nuxt.options.experimental.defaults.useAsyncData.value === 'null' ? null : undefined, + errorValue: ctx.nuxt.options.experimental.defaults.useAsyncData.errorValue === 'null' ? null : undefined, + })}`, + `export const nuxtDefaultErrorValue = ${ctx.nuxt.options.future.compatibilityVersion === 4 ? 'undefined' : 'null'}`, `export const fetchDefaults = ${JSON.stringify(fetchDefaults)}`, `export const vueAppRootContainer = ${ctx.nuxt.options.app.rootId ? `'#${ctx.nuxt.options.app.rootId}'` : `'body > ${ctx.nuxt.options.app.rootTag}'`}`, `export const viewTransition = ${ctx.nuxt.options.experimental.viewTransition}`, diff --git a/packages/schema/src/config/experimental.ts b/packages/schema/src/config/experimental.ts index ef3cde7759..2d8b14d7e3 100644 --- a/packages/schema/src/config/experimental.ts +++ b/packages/schema/src/config/experimental.ts @@ -415,6 +415,18 @@ export default defineUntypedSchema({ * Options that apply to `useAsyncData` (and also therefore `useFetch`) */ useAsyncData: { + /** @type {'undefined' | 'null'} */ + value: { + async $resolve (val, get) { + return val ?? ((await get('future') as Record).compatibilityVersion === 4 ? 'undefined' : 'null') + }, + }, + /** @type {'undefined' | 'null'} */ + errorValue: { + async $resolve (val, get) { + return val ?? ((await get('future') as Record).compatibilityVersion === 4 ? 'undefined' : 'null') + }, + }, deep: { async $resolve (val, get) { return val ?? !((await get('future') as Record).compatibilityVersion === 4) diff --git a/test/basic.test.ts b/test/basic.test.ts index 9e4e0b6021..41bd0c5f11 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -2433,21 +2433,23 @@ describe.skipIf(isWindows)('useAsyncData', () => { }) it('data is null after navigation when immediate false', async () => { + const defaultValue = isV4 ? 'undefined' : 'null' + const { page } = await renderPage('/useAsyncData/immediate-remove-unmounted') - expect(await page.locator('#immediate-data').getByText('null').textContent()).toBe('null') + expect(await page.locator('#immediate-data').getByText(defaultValue).textContent()).toBe(defaultValue) await page.click('#execute-btn') - expect(await page.locator('#immediate-data').getByText(',').textContent()).not.toContain('null') + expect(await page.locator('#immediate-data').getByText(',').textContent()).not.toContain(defaultValue) await page.click('#to-index') await page.waitForFunction(() => window.useNuxtApp?.()._route.fullPath === '/') await page.click('#to-immediate-remove-unmounted') await page.waitForFunction(() => window.useNuxtApp?.()._route.fullPath === '/useAsyncData/immediate-remove-unmounted') - expect(await page.locator('#immediate-data').getByText('null').textContent()).toBe('null') + expect(await page.locator('#immediate-data').getByText(defaultValue).textContent()).toBe(defaultValue) await page.click('#execute-btn') - expect(await page.locator('#immediate-data').getByText(',').textContent()).not.toContain('null') + expect(await page.locator('#immediate-data').getByText(',').textContent()).not.toContain(defaultValue) await page.close() }) diff --git a/test/fixtures/basic-types/types.ts b/test/fixtures/basic-types/types.ts index 9ab1f42b24..586fb7c528 100644 --- a/test/fixtures/basic-types/types.ts +++ b/test/fixtures/basic-types/types.ts @@ -11,6 +11,9 @@ import type { NavigateToOptions } from '#app/composables/router' import { NuxtLayout, NuxtLink, NuxtPage, ServerComponent, WithTypes } from '#components' import { useRouter } from '#imports' +// TODO: temporary module for backwards compatibility +import type { DefaultAsyncDataErrorValue, DefaultAsyncDataValue } from '#app/defaults' + interface TestResponse { message: string } describe('API routes', () => { @@ -31,61 +34,61 @@ describe('API routes', () => { }) it('works with useAsyncData', () => { - expectTypeOf(useAsyncData('api-hello', () => $fetch('/api/hello')).data).toEqualTypeOf>() - expectTypeOf(useAsyncData('api-hey', () => $fetch('/api/hey')).data).toEqualTypeOf>() - expectTypeOf(useAsyncData('api-hey-with-pick', () => $fetch('/api/hey'), { pick: ['baz'] }).data).toEqualTypeOf>() - expectTypeOf(useAsyncData('api-union', () => $fetch('/api/union')).data).toEqualTypeOf>() - expectTypeOf(useAsyncData('api-union-with-pick', () => $fetch('/api/union'), { pick: ['type'] }).data).toEqualTypeOf>() + expectTypeOf(useAsyncData('api-hello', () => $fetch('/api/hello')).data).toEqualTypeOf>() + expectTypeOf(useAsyncData('api-hey', () => $fetch('/api/hey')).data).toEqualTypeOf>() + expectTypeOf(useAsyncData('api-hey-with-pick', () => $fetch('/api/hey'), { pick: ['baz'] }).data).toEqualTypeOf>() + expectTypeOf(useAsyncData('api-union', () => $fetch('/api/union')).data).toEqualTypeOf>() + expectTypeOf(useAsyncData('api-union-with-pick', () => $fetch('/api/union'), { pick: ['type'] }).data).toEqualTypeOf>() expectTypeOf(useAsyncData('api-other', () => $fetch('/api/other')).data).toEqualTypeOf>() - expectTypeOf(useAsyncData('api-generics', () => $fetch('/test')).data).toEqualTypeOf>() + expectTypeOf(useAsyncData('api-generics', () => $fetch('/test')).data).toEqualTypeOf>() - expectTypeOf(useAsyncData('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf | null>>() - expectTypeOf(useAsyncData('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf | null>>() + expectTypeOf(useAsyncData('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf | DefaultAsyncDataErrorValue>>() + expectTypeOf(useAsyncData('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf | DefaultAsyncDataErrorValue>>() // backwards compatibility - expectTypeOf(useAsyncData('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf>() - expectTypeOf(useAsyncData>('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf | null>>() + expectTypeOf(useAsyncData('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf>() + expectTypeOf(useAsyncData>('api-error-generics', () => $fetch('/error')).error).toEqualTypeOf | DefaultAsyncDataErrorValue>>() - expectTypeOf(useLazyAsyncData('lazy-api-hello', () => $fetch('/api/hello')).data).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData('lazy-api-hey', () => $fetch('/api/hey')).data).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData('lazy-api-hey-with-pick', () => $fetch('/api/hey'), { pick: ['baz'] }).data).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData('lazy-api-union', () => $fetch('/api/union')).data).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData('lazy-api-union-with-pick', () => $fetch('/api/union'), { pick: ['type'] }).data).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-api-hello', () => $fetch('/api/hello')).data).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-api-hey', () => $fetch('/api/hey')).data).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-api-hey-with-pick', () => $fetch('/api/hey'), { pick: ['baz'] }).data).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-api-union', () => $fetch('/api/union')).data).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-api-union-with-pick', () => $fetch('/api/union'), { pick: ['type'] }).data).toEqualTypeOf>() expectTypeOf(useLazyAsyncData('lazy-api-other', () => $fetch('/api/other')).data).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData('lazy-api-generics', () => $fetch('/test')).data).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-api-generics', () => $fetch('/test')).data).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData('lazy-error-generics', () => $fetch('/error')).error).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData('lazy-error-generics', () => $fetch('/error')).error).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-error-generics', () => $fetch('/error')).error).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData('lazy-error-generics', () => $fetch('/error')).error).toEqualTypeOf>() }) it('works with useFetch', () => { - expectTypeOf(useFetch('/api/hello').data).toEqualTypeOf>() - expectTypeOf(useFetch('/api/hey').data).toEqualTypeOf>() - expectTypeOf(useFetch('/api/hey', { method: 'GET' }).data).toEqualTypeOf>() - expectTypeOf(useFetch('/api/hey', { method: 'get' }).data).toEqualTypeOf>() - expectTypeOf(useFetch('/api/hey', { method: 'POST' }).data).toEqualTypeOf>() - expectTypeOf(useFetch('/api/hey', { method: 'post' }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hello').data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hey').data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hey', { method: 'GET' }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hey', { method: 'get' }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hey', { method: 'POST' }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hey', { method: 'post' }).data).toEqualTypeOf>() // @ts-expect-error not a valid method useFetch('/api/hey', { method: 'PATCH' }) - expectTypeOf(useFetch('/api/hey', { pick: ['baz'] }).data).toEqualTypeOf>() - expectTypeOf(useFetch('/api/union').data).toEqualTypeOf>() - expectTypeOf(useFetch('/api/union', { pick: ['type'] }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hey', { pick: ['baz'] }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/union').data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/union', { pick: ['type'] }).data).toEqualTypeOf>() expectTypeOf(useFetch('/api/other').data).toEqualTypeOf>() - expectTypeOf(useFetch('/test').data).toEqualTypeOf>() - expectTypeOf(useFetch('/test', { method: 'POST' }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/test').data).toEqualTypeOf>() + expectTypeOf(useFetch('/test', { method: 'POST' }).data).toEqualTypeOf>() - expectTypeOf(useFetch('/error').error).toEqualTypeOf>() - expectTypeOf(useFetch('/error').error).toEqualTypeOf>() + expectTypeOf(useFetch('/error').error).toEqualTypeOf>() + expectTypeOf(useFetch('/error').error).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/api/hello').data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/api/hey').data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/api/hey', { pick: ['baz'] }).data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/api/union').data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/api/union', { pick: ['type'] }).data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/api/hello').data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/api/hey').data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/api/hey', { pick: ['baz'] }).data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/api/union').data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/api/union', { pick: ['type'] }).data).toEqualTypeOf>() expectTypeOf(useLazyFetch('/api/other').data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/test').data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/test').data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/error').error).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/error').error).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/error').error).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/error').error).toEqualTypeOf>() }) }) @@ -421,10 +424,10 @@ describe('composables', () => { expectTypeOf(useLazyAsyncData(() => $fetch('/test'), { default: () => 'test' }).data).toEqualTypeOf>() // transform must match the explicit generic because of typescript limitations microsoft/TypeScript#14400 - expectTypeOf(useFetch('/test', { transform: () => 'transformed' }).data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/test', { transform: () => 'transformed' }).data).toEqualTypeOf>() - expectTypeOf(useAsyncData(() => $fetch('/test'), { transform: () => 'transformed' }).data).toEqualTypeOf>() - expectTypeOf(useLazyAsyncData(() => $fetch('/test'), { transform: () => 'transformed' }).data).toEqualTypeOf>() + expectTypeOf(useFetch('/test', { transform: () => 'transformed' }).data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/test', { transform: () => 'transformed' }).data).toEqualTypeOf>() + expectTypeOf(useAsyncData(() => $fetch('/test'), { transform: () => 'transformed' }).data).toEqualTypeOf>() + expectTypeOf(useLazyAsyncData(() => $fetch('/test'), { transform: () => 'transformed' }).data).toEqualTypeOf>() expectTypeOf(useFetch('/test', { default: () => 'test', transform: () => 'transformed' }).data).toEqualTypeOf>() expectTypeOf(useLazyFetch('/test', { default: () => 'test', transform: () => 'transformed' }).data).toEqualTypeOf>() @@ -439,7 +442,7 @@ describe('composables', () => { return data.foo }, }) - expectTypeOf(data).toEqualTypeOf>() + expectTypeOf(data).toEqualTypeOf>() }) it('infer request url string literal from server/api routes', () => { @@ -448,8 +451,8 @@ describe('composables', () => { expectTypeOf(useFetch(dynamicStringUrl).data).toEqualTypeOf>() // request param should infer string literal type / show auto-complete hint base on server routes, ex: '/api/hello' - expectTypeOf(useFetch('/api/hello').data).toEqualTypeOf>() - expectTypeOf(useLazyFetch('/api/hello').data).toEqualTypeOf>() + expectTypeOf(useFetch('/api/hello').data).toEqualTypeOf>() + expectTypeOf(useLazyFetch('/api/hello').data).toEqualTypeOf>() // request can accept string literal and Request object type expectTypeOf(useFetch('https://example.com/api').data).toEqualTypeOf>() @@ -519,7 +522,7 @@ describe('composables', () => { it('correctly types returns when using with getCachedData', () => { expectTypeOf(useAsyncData('test', () => Promise.resolve({ foo: 1 }), { getCachedData: key => useNuxtApp().payload.data[key], - }).data).toEqualTypeOf>() + }).data).toEqualTypeOf>() useAsyncData('test', () => Promise.resolve({ foo: 1 }), { // @ts-expect-error cached data should return the same as value of fetcher getCachedData: () => ({ bar: 2 }), diff --git a/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue b/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue index 8e6b5a2957..9ed0940264 100644 --- a/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue +++ b/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue @@ -2,7 +2,7 @@

immediate-remove-unmounted.vue
- {{ data === null ? "null" : data }} + {{ data === null ? "null" : (data === undefined ? 'undefined' : data) }}