diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index ad059c3630..7de0a3890f 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -1,6 +1,6 @@ name: "\U0001F41E Bug report" description: Create a report to help us improve Nuxt -labels: ["pending triage", "3.x"] +labels: ["pending triage"] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index ff8f4c2377..3527bf128b 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,11 +1,8 @@ blank_issues_enabled: true contact_links: - - name: ๐Ÿ“š Nuxt 3 Documentation + - name: ๐Ÿ“š Nuxt Documentation url: https://nuxt.com/docs - about: Check the documentation for usage of Nuxt 3 - - name: ๐Ÿ“š Nuxt 2 Documentation - url: https://v2.nuxt.com - about: Check the documentation for usage of Nuxt 2 + about: Check the documentation for usage of Nuxt - name: ๐Ÿ’ฌ Discussions url: https://github.com/nuxt/nuxt/discussions about: Use discussions if you have another issue, an idea for improvement or for asking questions. diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index a5614e9304..b155f19563 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -1,6 +1,6 @@ name: "๐Ÿš€ Feature request" description: Suggest a feature that will improve Nuxt -labels: ["pending triage", "3.x"] +labels: ["pending triage"] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/z-bug-report-2.yml b/.github/ISSUE_TEMPLATE/z-bug-report-2.yml deleted file mode 100644 index d4124367b2..0000000000 --- a/.github/ISSUE_TEMPLATE/z-bug-report-2.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: "\U0001F41E Bug report (Nuxt 2)" -description: Create a report to help us improve Nuxt -labels: ["pending triage", "2.x"] -body: - - type: markdown - attributes: - value: | - Please carefully read the contribution docs before creating a bug report - ๐Ÿ‘‰ https://nuxt.com/docs/community/reporting-bugs - - Please use a template below to create a minimal reproduction - ๐Ÿ‘‰ https://stackblitz.com/github/nuxt/starter/tree/v2 - ๐Ÿ‘‰ https://codesandbox.io/s/github/nuxt/starter/v2 - - type: textarea - id: bug-env - attributes: - label: Environment - description: You can use `npx envinfo --system --npmPackages '{nuxt,@nuxt/*}' --binaries --browsers` to fill this section - placeholder: Environment - validations: - required: true - - type: textarea - id: reproduction - attributes: - label: Reproduction - description: Please provide a link to a repo that can reproduce the problem you ran into. A [**minimal reproduction**](https://nuxt.com/docs/community/reporting-bugs#create-a-minimal-reproduction) is required unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided we might close it. - placeholder: Reproduction - validations: - required: true - - type: textarea - id: bug-description - attributes: - label: Describe the bug - description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks! - placeholder: Bug description - validations: - required: true - - type: textarea - id: additonal - attributes: - label: Additional context - description: If applicable, add any other context about the problem here - - type: textarea - id: logs - attributes: - label: Logs - description: | - Optional if provided reproduction. Please try not to insert an image but copy paste the log text. - render: shell-script diff --git a/.github/workflows/autofix-docs.yml b/.github/workflows/autofix-docs.yml index d90a8e2f9e..4e1823a27f 100644 --- a/.github/workflows/autofix-docs.yml +++ b/.github/workflows/autofix-docs.yml @@ -30,4 +30,4 @@ jobs: - name: Lint (docs) run: pnpm lint:docs:fix - - uses: autofix-ci/action@ea32e3a12414e6d3183163c3424a7d7a8631ad84 + - uses: autofix-ci/action@2891949f3779a1cafafae1523058501de3d4e944 diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 03d5a654f3..d82ef9100d 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -52,4 +52,4 @@ jobs: - name: Lint (code) run: pnpm lint:fix - - uses: autofix-ci/action@ea32e3a12414e6d3183163c3424a7d7a8631ad84 + - uses: autofix-ci/action@2891949f3779a1cafafae1523058501de3d4e944 diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 50759cfff1..a3ce6dbb55 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -5,7 +5,6 @@ on: branches: - main - 3.x - - 2.x permissions: pull-requests: write diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml index 14a3db9075..f07aa5b898 100644 --- a/.github/workflows/check-links.yml +++ b/.github/workflows/check-links.yml @@ -7,6 +7,7 @@ on: - "*.md" branches: - main + - 3.x # Remove default permissions of GITHUB_TOKEN for security # https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c4c56cfc2..7ac71ff970 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,12 +7,14 @@ on: - "*.md" branches: - main + - 3.x pull_request: paths-ignore: - "docs/**" - "*.md" branches: - main + - 3.x - "!v[0-9]*" # https://github.com/vitejs/vite/blob/main/.github/workflows/ci.yml @@ -83,7 +85,7 @@ jobs: run: pnpm install - name: Initialize CodeQL - uses: github/codeql-action/init@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/init@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 with: languages: javascript queries: +security-and-quality @@ -95,7 +97,7 @@ jobs: path: packages - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 with: category: "/language:javascript" @@ -198,7 +200,6 @@ jobs: builder: ["vite", "webpack"] context: ["async", "default"] manifest: ["manifest-on", "manifest-off"] - version: ["v4", "v3"] payload: ["json", "js"] node: [18] exclude: @@ -244,7 +245,6 @@ jobs: TEST_BUILDER: ${{ matrix.builder }} TEST_MANIFEST: ${{ matrix.manifest }} TEST_CONTEXT: ${{ matrix.context }} - TEST_V4: ${{ matrix.version == 'v4' }} TEST_PAYLOAD: ${{ matrix.payload }} SKIP_BUNDLE_SIZE: ${{ github.event_name != 'push' || matrix.env == 'dev' || matrix.builder == 'webpack' || matrix.context == 'default' || matrix.payload == 'js' || runner.os == 'Windows' }} @@ -254,6 +254,8 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} build-release: + concurrency: + group: release permissions: id-token: write if: | @@ -289,12 +291,14 @@ jobs: path: packages - name: Release Edge - run: ./scripts/release-edge.sh + run: ./scripts/release-edge.sh ${{ github.ref == 'refs/heads/main' && 'latest' || '3x' }} env: NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN}} NPM_CONFIG_PROVENANCE: true release-pr: + concurrency: + group: release permissions: id-token: write pull-requests: write diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 624cafa244..b6ce923d60 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -9,6 +9,7 @@ on: # autofix workflow will be triggered instead for PRs branches: - main + - 3.x - "!v[0-9]*" # Remove default permissions of GITHUB_TOKEN for security diff --git a/.github/workflows/introspect.yml b/.github/workflows/introspect.yml index 6b7f4fd586..0820e5407f 100644 --- a/.github/workflows/introspect.yml +++ b/.github/workflows/introspect.yml @@ -6,11 +6,13 @@ on: - ".github/workflows/**" branches: - main + - 3.x pull_request: paths: - ".github/workflows/**" branches: - main + - 3.x - "!v[0-9]*" permissions: diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml index 9d462f9f8c..c173cee01d 100644 --- a/.github/workflows/label-pr.yml +++ b/.github/workflows/label-pr.yml @@ -6,6 +6,7 @@ on: - opened branches: - main + - 3.x jobs: add-pr-labels: diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 7a45a29223..3509c8075b 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -14,6 +14,8 @@ permissions: jobs: release-pr: if: github.repository == 'nuxt/nuxt' && github.event.issue.pull_request && github.event.comment.body == '/trigger release' + concurrency: + group: release permissions: id-token: write pull-requests: write @@ -29,10 +31,27 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Get PR Info + id: pr + env: + PR_NUMBER: ${{ github.event.issue.number }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + COMMENT_AT: ${{ github.event.comment.created_at }} + run: | + pr="$(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/${GH_REPO}/pulls/${PR_NUMBER})" + head_sha="$(echo "$pr" | jq -r .head.sha)" + updated_at="$(echo "$pr" | jq -r .updated_at)" + + if [[ $(date -d "$updated_at" +%s) -gt $(date -d "$COMMENT_AT" +%s) ]]; then + exit 1 + fi + + echo "head_sha=$head_sha" >> $GITHUB_OUTPUT - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: - ref: ${{ github.event.issue.pull_request.head.sha }} - fetch-depth: 0 + ref: ${{ steps.pr.outputs.head_sha }} + fetch-depth: 1 - run: corepack enable - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d43ba94276..7d3d86ce06 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,8 @@ permissions: {} jobs: release: if: github.repository == 'nuxt/nuxt' && (startsWith(github.event.head_commit.message, 'v3.') || startsWith(github.event.head_commit.message, 'v4.')) + concurrency: + group: release permissions: id-token: write runs-on: ubuntu-latest diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index fb0b7dc233..c468dc8cd9 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@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 if: github.repository == 'nuxt/nuxt' && success() with: sarif_file: results.sarif diff --git a/.github/workflows/semantic-pull-requests.yml b/.github/workflows/semantic-pull-requests.yml index 3bf40386bf..927a2b41a7 100644 --- a/.github/workflows/semantic-pull-requests.yml +++ b/.github/workflows/semantic-pull-requests.yml @@ -20,7 +20,7 @@ jobs: name: Semantic pull request steps: - name: Validate PR title - uses: amannn/action-semantic-pull-request@cfb60706e18bc85e8aec535e3c577abe8f70378e # v5.5.2 + uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3 with: scopes: | kit diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000000..fc78d099a7 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @danielroe diff --git a/README.md b/README.md index a9df118209..090f9318dd 100644 --- a/README.md +++ b/README.md @@ -101,12 +101,6 @@ Here are a few ways you can get involved: Follow the docs to [Set Up Your Local Development Environment](https://nuxt.com/docs/community/framework-contribution#setup) to contribute to the framework and documentation. -## โ›ฐ๏ธ Nuxt 2 - -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) diff --git a/docs/1.getting-started/1.introduction.md b/docs/1.getting-started/1.introduction.md index 47bfdb0bc4..d092c50579 100644 --- a/docs/1.getting-started/1.introduction.md +++ b/docs/1.getting-started/1.introduction.md @@ -76,7 +76,6 @@ Nuxt is composed of different [core packages](https://github.com/nuxt/nuxt/tree/ - Command line interface: [nuxi](https://github.com/nuxt/nuxt/tree/main/packages/nuxi) - Server engine: [nitro](https://github.com/unjs/nitro) - Development kit: [@nuxt/kit](https://github.com/nuxt/nuxt/tree/main/packages/kit) -- Nuxt 2 Bridge: [@nuxt/bridge](https://github.com/nuxt/bridge) We recommend reading each concept to have a full vision of Nuxt capabilities and the scope of each package. diff --git a/docs/1.getting-started/10.deployment.md b/docs/1.getting-started/10.deployment.md index 582a24d14a..9043f0035c 100644 --- a/docs/1.getting-started/10.deployment.md +++ b/docs/1.getting-started/10.deployment.md @@ -85,13 +85,13 @@ export default defineNuxtConfig({ ## Hosting Providers -Nuxt 3 can be deployed to several cloud providers with a minimal amount of configuration: +Nuxt can be deployed to several cloud providers with a minimal amount of configuration: :read-more{to="/deploy"} ## Presets -In addition to Node.js servers and static hosting services, a Nuxt 3 project can be deployed with several well-tested presets and minimal amount of configuration. +In addition to Node.js servers and static hosting services, a Nuxt project can be deployed with several well-tested presets and minimal amount of configuration. You can explicitly set the desired preset in the [`nuxt.config.ts`](/docs/guide/directory-structure/nuxt-config) file: @@ -125,5 +125,5 @@ Accordingly, you should make sure that the following options are unchecked / dis With these settings, you can be sure that Cloudflare won't inject scripts into your Nuxt application that may cause unwanted side effects. ::tip -Their location on the Cloudfalre dashboard sometimes changes so don't hesitate to look around. +Their location on the Cloudflare dashboard sometimes changes so don't hesitate to look around. :: diff --git a/docs/1.getting-started/12.upgrade.md b/docs/1.getting-started/12.upgrade.md index 3017305c77..0aa50fd46b 100644 --- a/docs/1.getting-started/12.upgrade.md +++ b/docs/1.getting-started/12.upgrade.md @@ -11,19 +11,41 @@ navigation.icon: i-ph-arrow-circle-up-duotone To upgrade Nuxt to the [latest release](https://github.com/nuxt/nuxt/releases), use the `nuxi upgrade` command. -```bash [Terminal] +::code-group + +```bash [npm] npx nuxi upgrade ``` +```bash [yarn] +yarn dlx nuxi upgrade +``` + +```bash [pnpm] +pnpm dlx nuxi upgrade +``` + +```bash [bun] +bunx nuxi upgrade +``` + +:: + ### Nightly Release Channel To use the latest Nuxt build and test features before their release, read about the [nightly release channel](/docs/guide/going-further/nightly-release-channel) guide. +::alert{type="warning"} +The nightly release channel `latest` tag is currently tracking the Nuxt v4 branch, meaning that it is particularly likely to have breaking changes right now - be careful! + +You can opt in to the 3.x branch nightly releases with `"nuxt": "npm:nuxt-nightly@3x"`. +:: + ## Testing Nuxt 4 Nuxt 4 is planned to be released **on or before June 14** (though obviously this is dependent on having enough time after Nitro's major release to be properly tested in the community, so be aware that this is not an exact date). -Until then, it is possible to test many of Nuxt 4's breaking changes from Nuxt version 3.12 or via the nightly release channel. +Until then, it is possible to test many of Nuxt 4's breaking changes from Nuxt version 3.12+. ::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. @@ -31,7 +53,7 @@ Watch a video from Alexander Lichter showing how to opt in to Nuxt 4's breaking ### 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). +First, upgrade Nuxt to the [latest release](https://github.com/nuxt/nuxt/releases). Then you can set your `compatibilityVersion` to match Nuxt 4 behavior: @@ -87,7 +109,7 @@ Nuxt now defaults to a new directory structure, with backwards compatibility (so * the new Nuxt default `srcDir` is `app/` by default, and most things are resolved from there. * `serverDir` now defaults to `/server` rather than `/server` -* `modules` and `public` are resolved relative to `` by default +* `layers`, `modules` and `public` are resolved relative to `` by default * a new `dir.app` is added, which is the directory we look for `router.options.ts` and `spa-loading-template.html` - this defaults to `/`
@@ -109,6 +131,7 @@ app/ app.config.ts app.vue router.options.ts +layers/ modules/ node_modules/ public/ @@ -209,6 +232,7 @@ Previously `data` was initialized to `null` but reset in `clearNuxtData` to `und If you encounter any issues you can revert back to the previous behavior with: ```ts twoslash [nuxt.config.ts] +// @errors: 2353 export default defineNuxtConfig({ experimental: { defaults: { @@ -232,6 +256,7 @@ Please report an issue if you are doing this, as we do not plan to keep this as Previously it was possible to pass `dedupe: boolean` to `refresh`. These were aliases of `cancel` (`true`) and `defer` (`false`). ```ts twoslash [app.vue] +// @errors: 2322 const { refresh } = await useAsyncData(async () => ({ message: 'Hello, Nuxt 3!' })) async function refreshData () { @@ -280,6 +305,7 @@ Often users set an appropriately empty value, such as an empty array, to avoid t If you encounter any issues you can revert back to the previous behavior, for now, with: ```ts twoslash [nuxt.config.ts] +// @errors: 2353 export default defineNuxtConfig({ experimental: { resetAsyncDataToUndefined: true, @@ -352,6 +378,25 @@ However, if you are a module author using the `builder:watch` hook and wishing t }) ``` +#### Removal of `window.__NUXT__` object + +##### What Changed + +We are removing the global `window.__NUXT__` object after the app finishes hydration. + +##### Reasons for Change + +This opens the way to multi-app patterns ([#21635](https://github.com/nuxt/nuxt/issues/21635)) and enables us to focus on a single way to access Nuxt app data - `useNuxtApp()`. + +##### Migration Steps + +The data is still available, but can be accessed with `useNuxtApp().payload`: + +```diff +- console.log(window.__NUXT__) ++ console.log(useNuxtApp().payload) +``` + #### Directory index scanning ๐Ÿšฆ **Impact Level**: Medium @@ -448,10 +493,11 @@ const importName = genSafeVariableName 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) +* `experimental.treeshakeClientOnly` will be `true` (default since v3.0) +* `experimental.configSchema` will be `true` (default since v3.3) +* `experimental.polyfillVueUseHead` will be `false` (default since v3.4) +* `experimental.respectNoSSRHeader` will be `false` (default since v3.4) +* `vite.devBundler` is no longer configurable - it will use `vite-node` by default ##### Reasons for Change @@ -463,11 +509,35 @@ These options have been set to their current values for some time and we do not * `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 +#### Removal of Deprecated Internal CJS Utils + +๐Ÿšฆ **Impact Level**: Minimal + +##### What Changed + +We have now removed the following utils exported from `@nuxt/kit`: + +* `resolveModule` +* `requireModule` +* `importModule` +* `tryImportModule` +* `tryRequireModule` + +They were previously marked as deprecated and relied on CJS resolutions. + +##### Reasons for Change + +We now use [jiti](https://github.com/unjs/jiti) to resolve modules and other imports internally. It supports native ESM resolution where possible and should be less buggy. + +##### Migration Steps + +You can use [jiti](https://github.com/unjs/jiti) or [mlly](https://github.com/unjs/mlly) to do the same job in your own projects if you were relying on these utilities. + +## Nuxt 2 vs Nuxt 3+ In the table below, there is a quick comparison between 3 versions of Nuxt: -Feature / Version | Nuxt 2 | Nuxt Bridge | Nuxt 3 +Feature / Version | Nuxt 2 | Nuxt Bridge | Nuxt 3+ -------------------------|-----------------|------------------|--------- Vue | 2 | 2 | 3 Stability | ๐Ÿ˜Š Stable | ๐Ÿ˜Š Stable | ๐Ÿ˜Š Stable @@ -485,9 +555,9 @@ Vite | โš ๏ธ Partial | ๐Ÿšง Partial | โœ… Nuxi CLI | โŒ Old | โœ… nuxi | โœ… nuxi Static sites | โœ… | โœ… | โœ… -## Nuxt 2 to Nuxt 3 +## Nuxt 2 to Nuxt 3+ -The migration guide provides a step-by-step comparison of Nuxt 2 features to Nuxt 3 features and guidance to adapt your current application. +The migration guide provides a step-by-step comparison of Nuxt 2 features to Nuxt 3+ features and guidance to adapt your current application. ::read-more{to="/docs/migration/overview"} Check out the **guide to migrating from Nuxt 2 to Nuxt 3**. @@ -495,7 +565,7 @@ Check out the **guide to migrating from Nuxt 2 to Nuxt 3**. ## Nuxt 2 to Nuxt Bridge -If you prefer to progressively migrate your Nuxt 2 application to Nuxt 3, you can use Nuxt Bridge. Nuxt Bridge is a compatibility layer that allows you to use Nuxt 3 features in Nuxt 2 with an opt-in mechanism. +If you prefer to progressively migrate your Nuxt 2 application to Nuxt 3, you can use Nuxt Bridge. Nuxt Bridge is a compatibility layer that allows you to use Nuxt 3+ features in Nuxt 2 with an opt-in mechanism. ::read-more{to="/docs/bridge/overview"} **Migrate from Nuxt 2 to Nuxt Bridge** diff --git a/docs/1.getting-started/2.installation.md b/docs/1.getting-started/2.installation.md index 1af58ad887..32e8eb7f29 100644 --- a/docs/1.getting-started/2.installation.md +++ b/docs/1.getting-started/2.installation.md @@ -37,10 +37,14 @@ Open a terminal (if you're using [Visual Studio Code](https://code.visualstudio. ::code-group -```bash [npx] +```bash [npm] npx nuxi@latest init ``` +```bash [yarn] +yarn dlx nuxi@latest init +``` + ```bash [pnpm] pnpm dlx nuxi@latest init ``` @@ -96,6 +100,6 @@ Well done! A browser window should automatically open for +from.params.id ? 'slide-left' : 'slide-right' + to.meta.pageTransition.name = +to.params.id! > +from.params.id! ? 'slide-left' : 'slide-right' } }) diff --git a/docs/1.getting-started/6.data-fetching.md b/docs/1.getting-started/6.data-fetching.md index 61d02693ef..b508e51e34 100644 --- a/docs/1.getting-started/6.data-fetching.md +++ b/docs/1.getting-started/6.data-fetching.md @@ -494,7 +494,7 @@ onMounted(() => console.log(document.cookie)) ## Options API support -Nuxt 3 provides a way to perform `asyncData` fetching within the Options API. You must wrap your component definition within `defineNuxtComponent` for this to work. +Nuxt provides a way to perform `asyncData` fetching within the Options API. You must wrap your component definition within `defineNuxtComponent` for this to work. ```vue ``` -The goal of Nuxt 3 is to provide a great developer experience around the Composition API. +The goal of Nuxt is to provide a great developer experience around the Composition API. -- Use auto-imported [Reactivity functions](https://vuejs.org/api/reactivity-core.html) from Vue and Nuxt 3 [built-in composables](/docs/api/composables/use-async-data). +- Use auto-imported [Reactivity functions](https://vuejs.org/api/reactivity-core.html) from Vue and Nuxt [built-in composables](/docs/api/composables/use-async-data). - Write your own auto-imported reusable functions in the [`composables/` directory](/docs/guide/directory-structure/composables). ### TypeScript Support -Both Vue 3 and Nuxt 3 are written in TypeScript. A fully typed codebase prevents mistakes and documents APIs usage. This doesnโ€™t mean that you have to write your application in TypeScript to take advantage of it. With Nuxt 3, you can opt-in by renaming your file from `.js` to `.ts` , or add ` ``` +::note +This example demonstrates how to use a custom `useFetch`, but the same structure is identical for a custom `useAsyncData`. +:: + ::callout{icon="i-simple-icons-youtube" color="red" to="https://www.youtube.com/watch?v=jXH8Tr-exhI"} Watch a video about custom `$fetch` and Repository Pattern in Nuxt. :: diff --git a/docs/3.api/1.components/4.nuxt-link.md b/docs/3.api/1.components/4.nuxt-link.md index b623d1ce5a..79e069c21d 100644 --- a/docs/3.api/1.components/4.nuxt-link.md +++ b/docs/3.api/1.components/4.nuxt-link.md @@ -111,7 +111,7 @@ When you need to overwrite this behavior you can use the `rel` and `noRel` props When not using `external`, `` supports all Vue Router's [`RouterLink` props](https://router.vuejs.org/api/interfaces/RouterLinkProps.html) -- `to`: Any URL or a [route location object](https://router.vuejs.org/api/interfaces/RouteLocation.html) from Vue Router +- `to`: Any URL or a [route location object](https://router.vuejs.org/api/#RouteLocation) from Vue Router - `custom`: Whether `` should wrap its content in an `` element. It allows taking full control of how a link is rendered and how navigation works when it is clicked. Works the same as [Vue Router's `custom` prop](https://router.vuejs.org/api/interfaces/RouterLinkProps.html#Properties-custom) - `exactActiveClass`: A class to apply on exact active links. Works the same as [Vue Router's `exact-active-class` prop](https://router.vuejs.org/api/interfaces/RouterLinkProps.html#Properties-exactActiveClass) on internal links. Defaults to Vue Router's default `"router-link-exact-active"`) - `replace`: Works the same as [Vue Router's `replace` prop](https://router.vuejs.org/api/interfaces/RouteLocationOptions.html#Properties-replace) on internal links @@ -140,7 +140,7 @@ Defaults can be overwritten, see [overwriting defaults](#overwriting-defaults) i ### In Nuxt Config -You can overwrite some `` defaults in your [`nuxt.config`](https://nuxt.com/docs/api/nuxt-config#defaults) +You can overwrite some `` defaults in your [`nuxt.config`](/docs/api/nuxt-config#defaults) ::important These options will likely be moved elsewhere in the future, such as into `app.config` or into the `app/` directory. diff --git a/docs/3.api/2.composables/use-async-data.md b/docs/3.api/2.composables/use-async-data.md index b839fb1d08..24b35bb497 100644 --- a/docs/3.api/2.composables/use-async-data.md +++ b/docs/3.api/2.composables/use-async-data.md @@ -25,6 +25,10 @@ const { data, pending, error, refresh, clear } = await useAsyncData( ``` +::warning +If you're using a custom useAsyncData wrapper, do not await it in the composable, as that can cause unexpected behavior. Please follow [this recipe](/docs/guide/recipes/custom-usefetch#custom-usefetch) for more information on how to make a custom async data fetcher. +:: + ::note `data`, `pending`, `status` and `error` are Vue refs and they should be accessed with `.value` when used within the ` ``` +::warning +If you're using a custom useFetch wrapper, do not await it in the composable, as that can cause unexpected behavior. Please follow [this recipe](/docs/guide/recipes/custom-usefetch#custom-usefetch) for more information on how to make a custom async data fetcher. +:: + ::note `data`, `pending`, `status` and `error` are Vue refs and they should be accessed with `.value` when used within the ` + `, filePath) + + expect(meta).toMatchInlineSnapshot(` + { + "meta": { + "__nuxt_dynamic_meta_key": Set { + "meta", + }, + }, + } + `) + }) }) describe('normalizeRoutes', () => { diff --git a/packages/nuxt/test/treeshake-client.test.ts b/packages/nuxt/test/treeshake-client.test.ts index e0b076d950..27a54baf87 100644 --- a/packages/nuxt/test/treeshake-client.test.ts +++ b/packages/nuxt/test/treeshake-client.test.ts @@ -67,10 +67,19 @@ const treeshake = async (source: string): Promise => { } async function SFCCompile (name: string, source: string, options: Options, ssr = false): Promise { - const result = await (vuePlugin({ + const plugin = vuePlugin({ compiler: VueCompilerSFC, ...options, - }).transform! as Function).call({ + }) + // @ts-expect-error Types are not correct as they are too generic + plugin.configResolved!({ + isProduction: options.isProduction, + command: 'build', + root: process.cwd(), + build: { sourcemap: false }, + define: {}, + }) + const result = await (plugin.transform! as Function).call({ parse: (code: string, opts: any = {}) => Parser.parse(code, { sourceType: 'module', ecmaVersion: 'latest', @@ -84,14 +93,16 @@ async function SFCCompile (name: string, source: string, options: Options, ssr = return typeof result === 'string' ? result : result?.code } -const stateToTest: { name: string, options: Partial }[] = [ +const stateToTest: { index: number, name: string, options: Partial }[] = [ { + index: 0, name: 'prod', options: { isProduction: true, }, }, { + index: 1, name: 'dev', options: { isProduction: false, @@ -107,93 +118,91 @@ const stateToTest: { name: string, options: Partial { vi.spyOn(process, 'cwd').mockImplementation(() => '') - for (const [index, state] of stateToTest.entries()) { - it(`should treeshake ClientOnly correctly in ${state.name}`, async () => { - // add index to avoid using vite vue plugin cache - const clientResult = await SFCCompile(`SomeComponent${index}.vue`, WithClientOnly, state.options) + it.each(stateToTest)(`should treeshake ClientOnly correctly in $name`, async (state) => { + // add index to avoid using vite vue plugin cache + const clientResult = await SFCCompile(`SomeComponent${state.index}.vue`, WithClientOnly, state.options) - const ssrResult = await SFCCompile(`SomeComponent${index}.vue`, WithClientOnly, state.options, true) + const ssrResult = await SFCCompile(`SomeComponent${state.index}.vue`, WithClientOnly, state.options, true) - const treeshaken = await treeshake(ssrResult) - const [_, scopeId] = clientResult.match(/_pushScopeId\("(.*)"\)/)! + const treeshaken = await treeshake(ssrResult) + const [_, scopeId] = clientResult.match(/_pushScopeId\("(.*)"\)/)! - // ensure the id is correctly passed between server and client - expect(clientResult).toContain(`pushScopeId("${scopeId}")`) - expect(treeshaken).toContain(`
`) + // ensure the id is correctly passed between server and client + expect(clientResult).toContain(`pushScopeId("${scopeId}")`) + expect(treeshaken).toContain(`
`) - expect(clientResult).toContain('should-be-treeshaken') - expect(treeshaken).not.toContain('should-be-treeshaken') + expect(clientResult).toContain('should-be-treeshaken') + expect(treeshaken).not.toContain('should-be-treeshaken') - expect(treeshaken).not.toContain('import HelloWorld from \'../HelloWorld.vue\'') - expect(clientResult).toContain('import HelloWorld from \'../HelloWorld.vue\'') + expect(treeshaken).not.toContain('import HelloWorld from \'../HelloWorld.vue\'') + expect(clientResult).toContain('import HelloWorld from \'../HelloWorld.vue\'') - expect(treeshaken).not.toContain('import { Treeshaken } from \'somepath\'') - expect(clientResult).toContain('import { Treeshaken } from \'somepath\'') + expect(treeshaken).not.toContain('import { Treeshaken } from \'somepath\'') + expect(clientResult).toContain('import { Treeshaken } from \'somepath\'') - // remove resolved import - expect(treeshaken).not.toContain('const _component_ResolvedImport =') - expect(clientResult).toContain('const _component_ResolvedImport =') + // remove resolved import + expect(treeshaken).not.toContain('const _component_ResolvedImport =') + expect(clientResult).toContain('const _component_ResolvedImport =') - // treeshake multi line variable declaration - expect(clientResult).toContain('const SomeIsland = defineAsyncComponent(async () => {') - expect(treeshaken).not.toContain('const SomeIsland = defineAsyncComponent(async () => {') - expect(treeshaken).not.toContain('return (await import(\'./../some.island.vue\'))') - expect(treeshaken).toContain('const NotToBeTreeShaken = defineAsyncComponent(async () => {') + // treeshake multi line variable declaration + expect(clientResult).toContain('const SomeIsland = defineAsyncComponent(async () => {') + expect(treeshaken).not.toContain('const SomeIsland = defineAsyncComponent(async () => {') + expect(treeshaken).not.toContain('return (await import(\'./../some.island.vue\'))') + expect(treeshaken).toContain('const NotToBeTreeShaken = defineAsyncComponent(async () => {') - // treeshake object and array declaration - expect(treeshaken).not.toContain('const { ObjectPattern } = await import(\'nuxt.com\')') - expect(treeshaken).not.toContain('const { ObjectPattern: ObjectPatternDeclaration } = await import(\'nuxt.com\')') - expect(treeshaken).toContain('const { ButShouldNotBeTreeShaken } = defineAsyncComponent(async () => {') - expect(treeshaken).toContain('const [ { Dont, }, That] = defineAsyncComponent(async () => {') + // treeshake object and array declaration + expect(treeshaken).not.toContain('const { ObjectPattern } = await import(\'nuxt.com\')') + expect(treeshaken).not.toContain('const { ObjectPattern: ObjectPatternDeclaration } = await import(\'nuxt.com\')') + expect(treeshaken).toContain('const { ButShouldNotBeTreeShaken } = defineAsyncComponent(async () => {') + expect(treeshaken).toContain('const [ { Dont, }, That] = defineAsyncComponent(async () => {') - // treeshake object that has an assignment pattern - expect(treeshaken).toContain('const { woooooo, } = defineAsyncComponent(async () => {') - expect(treeshaken).not.toContain('const { Deep, assignment: { Pattern = ofComponent } } = defineAsyncComponent(async () => {') + // treeshake object that has an assignment pattern + expect(treeshaken).toContain('const { woooooo, } = defineAsyncComponent(async () => {') + expect(treeshaken).not.toContain('const { Deep, assignment: { Pattern = ofComponent } } = defineAsyncComponent(async () => {') - // expect no empty ObjectPattern on treeshaking - expect(treeshaken).not.toContain('const { } = defineAsyncComponent') - expect(treeshaken).not.toContain('import { } from') + // expect no empty ObjectPattern on treeshaking + expect(treeshaken).not.toContain('const { } = defineAsyncComponent') + expect(treeshaken).not.toContain('import { } from') - // expect components used in setup to not be removed - expect(treeshaken).toContain('import DontRemoveThisSinceItIsUsedInSetup from \'./ComponentWithProps.vue\'') + // expect components used in setup to not be removed + expect(treeshaken).toContain('import DontRemoveThisSinceItIsUsedInSetup from \'./ComponentWithProps.vue\'') - // expect import of ClientImport to be treeshaken but not Glob since it is also used outside - expect(treeshaken).not.toContain('ClientImport') - expect(treeshaken).toContain('import { Glob } from \'#components\'') + // expect import of ClientImport to be treeshaken but not Glob since it is also used outside + expect(treeshaken).not.toContain('ClientImport') + expect(treeshaken).toContain('import { Glob } from \'#components\'') - // treeshake .client slot - expect(treeshaken).not.toContain('ByeBye') - // don't treeshake variables that has the same name as .client components - expect(treeshaken).toContain('NotDotClientComponent') - expect(treeshaken).not.toContain('(DotClientComponent') + // treeshake .client slot + expect(treeshaken).not.toContain('ByeBye') + // don't treeshake variables that has the same name as .client components + expect(treeshaken).toContain('NotDotClientComponent') + expect(treeshaken).not.toContain('(DotClientComponent') - expect(treeshaken).not.toContain('AutoImportedComponent') - expect(treeshaken).toContain('AutoImportedNotTreeShakenComponent') + expect(treeshaken).not.toContain('AutoImportedComponent') + expect(treeshaken).toContain('AutoImportedNotTreeShakenComponent') - expect(treeshaken).not.toContain('Both') - expect(treeshaken).not.toContain('AreTreeshaken') + expect(treeshaken).not.toContain('Both') + expect(treeshaken).not.toContain('AreTreeshaken') - if (state.options.isProduction === false) { - // treeshake at inlined template - expect(treeshaken).not.toContain('ssrRenderComponent($setup["HelloWorld"]') - expect(treeshaken).toContain('ssrRenderComponent($setup["Glob"]') - } else { - // treeshake unref - expect(treeshaken).not.toContain('ssrRenderComponent(_unref(HelloWorld') - expect(treeshaken).toContain('ssrRenderComponent(_unref(Glob') - } - expect(treeshaken.replace(/data-v-\w{8}/g, 'data-v-one-hash').replace(/scoped=\w{8}/g, 'scoped=one-hash')).toMatchSnapshot() - }) - } + if (state.options.isProduction === false) { + // treeshake at inlined template + expect(treeshaken).not.toContain('ssrRenderComponent($setup["HelloWorld"]') + expect(treeshaken).toContain('ssrRenderComponent($setup["Glob"]') + } else { + // treeshake unref + expect(treeshaken).not.toContain('ssrRenderComponent(_unref(HelloWorld') + expect(treeshaken).toContain('ssrRenderComponent(_unref(Glob') + } + expect(treeshaken.replace(/data-v-\w{8}/g, 'data-v-one-hash').replace(/scoped=\w{8}/g, 'scoped=one-hash')).toMatchSnapshot() + }) it('should not treeshake reused component #26137', async () => { const treeshaken = await treeshake(`import { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode } from "vue" import { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttrs as _ssrRenderAttrs } from "vue/server-renderer" - + export function ssrRender(_ctx, _push, _parent, _attrs) { const _component_AppIcon = _resolveComponent("AppIcon") const _component_ClientOnly = _resolveComponent("ClientOnly") - + _push(\`\`) _push(_ssrRenderComponent(_component_AppIcon, { name: "caret-left" }, null, _parent)) _push(_ssrRenderComponent(_component_ClientOnly, null, { diff --git a/packages/nuxt/types.d.mts b/packages/nuxt/types.d.mts index b1b7ec3047..f027f93b6a 100644 --- a/packages/nuxt/types.d.mts +++ b/packages/nuxt/types.d.mts @@ -1,4 +1,5 @@ -/// +/// +/// import type { DefineNuxtConfig } from 'nuxt/config' import type { RuntimeConfig, SchemaDefinition } from 'nuxt/schema' @@ -14,7 +15,28 @@ declare global { } // Note: Keep in sync with packages/nuxt/src/core/templates.ts -declare module 'nitropack' { +declare module 'nitro/types' { + interface NitroRuntimeConfigApp { + buildAssetsDir: string + cdnURL: string + } + interface NitroRuntimeConfig extends RuntimeConfig {} + interface NitroRouteConfig { + ssr?: boolean + experimentalNoScripts?: boolean + } + interface NitroRouteRules { + ssr?: boolean + experimentalNoScripts?: boolean + appMiddleware?: Record + } + interface NitroRuntimeHooks { + 'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise + 'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise + 'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise + } +} +declare module 'nitropack/types' { interface NitroRuntimeConfigApp { buildAssetsDir: string cdnURL: string diff --git a/packages/nuxt/types.d.ts b/packages/nuxt/types.d.ts index 1733bdec62..2ecb9dc72e 100644 --- a/packages/nuxt/types.d.ts +++ b/packages/nuxt/types.d.ts @@ -1,4 +1,6 @@ -/// +/// +/// + import type { DefineNuxtConfig } from 'nuxt/config' import type { RuntimeConfig, SchemaDefinition } from 'nuxt/schema' import type { H3Event } from 'h3' @@ -13,7 +15,28 @@ declare global { } // Note: Keep in sync with packages/nuxt/src/core/templates.ts -declare module 'nitropack' { +declare module 'nitro/types' { + interface NitroRuntimeConfigApp { + buildAssetsDir: string + cdnURL: string + } + interface NitroRuntimeConfig extends RuntimeConfig {} + interface NitroRouteConfig { + ssr?: boolean + experimentalNoScripts?: boolean + } + interface NitroRouteRules { + ssr?: boolean + experimentalNoScripts?: boolean + appMiddleware?: Record + } + interface NitroRuntimeHooks { + 'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise + 'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise + 'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise + } +} +declare module 'nitropack/types' { interface NitroRuntimeConfigApp { buildAssetsDir: string cdnURL: string diff --git a/packages/schema/build.config.ts b/packages/schema/build.config.ts index e7179a174f..22f17cbef8 100644 --- a/packages/schema/build.config.ts +++ b/packages/schema/build.config.ts @@ -23,6 +23,8 @@ export default defineBuildConfig({ externals: [ // Type imports '#app/components/nuxt-link', + 'cssnano', + 'autoprefixer', 'ofetch', 'vue-router', '@nuxt/telemetry', @@ -31,6 +33,7 @@ export default defineBuildConfig({ 'vue', 'unctx', 'hookable', + 'nitro', 'nitropack', 'webpack', 'webpack-bundle-analyzer', diff --git a/packages/schema/package.json b/packages/schema/package.json index 1bc0147c36..b2c75ee42a 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -39,28 +39,28 @@ "@types/file-loader": "5.0.4", "@types/pug": "2.0.10", "@types/sass-loader": "8.0.8", - "@unhead/schema": "1.9.13", - "@vitejs/plugin-vue": "5.0.4", + "@unhead/schema": "1.9.14", + "@vitejs/plugin-vue": "5.0.5", "@vitejs/plugin-vue-jsx": "4.0.0", - "@vue/compiler-core": "3.4.29", - "@vue/compiler-sfc": "3.4.29", - "@vue/language-core": "2.0.21", - "c12": "1.11.1", - "esbuild": "0.21.5", + "@vue/compiler-core": "3.4.31", + "@vue/compiler-sfc": "3.4.31", + "@vue/language-core": "2.0.24", + "c12": "2.0.0-beta.1", + "esbuild": "0.23.0", "esbuild-loader": "4.2.0", - "h3": "1.11.1", + "h3": "npm:h3-nightly@2.0.0-1718872656.6765a6e", "ignore": "5.3.1", - "nitropack": "2.9.6", + "nitro": "npm:nitro-nightly@3.0.0-beta-28659787.859de2d6", "ofetch": "1.3.4", - "unbuild": "latest", + "unbuild": "3.0.0-rc.6", "unctx": "2.3.1", "unenv": "1.9.0", - "vite": "5.3.1", - "vue": "3.4.29", + "vite": "5.3.3", + "vue": "3.4.31", "vue-bundle-renderer": "2.1.0", "vue-loader": "17.4.2", - "vue-router": "4.3.3", - "webpack": "5.92.0", + "vue-router": "4.4.0", + "webpack": "5.92.1", "webpack-dev-middleware": "7.2.1" }, "dependencies": { @@ -69,7 +69,7 @@ "defu": "^6.1.4", "hookable": "^5.5.3", "pathe": "^1.1.2", - "pkg-types": "^1.1.1", + "pkg-types": "^1.1.3", "scule": "^1.3.0", "std-env": "^3.7.0", "ufo": "^1.5.3", diff --git a/packages/schema/src/config/adhoc.ts b/packages/schema/src/config/adhoc.ts index b6a849b853..4328909a32 100644 --- a/packages/schema/src/config/adhoc.ts +++ b/packages/schema/src/config/adhoc.ts @@ -23,7 +23,7 @@ export default defineUntypedSchema({ /** * Configure how Nuxt auto-imports composables into your application. - * @see [Nuxt 3 documentation](https://nuxt.com/docs/guide/directory-structure/composables) + * @see [Nuxt documentation](https://nuxt.com/docs/guide/directory-structure/composables) * @type {typeof import('../src/types/imports').ImportsOptions} */ imports: { diff --git a/packages/schema/src/config/common.ts b/packages/schema/src/config/common.ts index 152a76a3ca..5940f1c2a9 100644 --- a/packages/schema/src/config/common.ts +++ b/packages/schema/src/config/common.ts @@ -1,7 +1,7 @@ import { existsSync } from 'node:fs' import { readdir } from 'node:fs/promises' import { defineUntypedSchema } from 'untyped' -import { join, relative, resolve } from 'pathe' +import { basename, join, relative, resolve } from 'pathe' import { isDebug, isDevelopment, isTest } from 'std-env' import { defu } from 'defu' import { findWorkspaceDir } from 'pkg-types' @@ -301,7 +301,8 @@ export default defineUntypedSchema({ $resolve: async (val: string | undefined, get) => { const isV4 = (await get('future') as Record).compatibilityVersion === 4 if (isV4) { - return resolve(await get('srcDir') as string, val || '.') + const [srcDir, rootDir] = await Promise.all([get('srcDir') as Promise, get('rootDir') as Promise]) + return resolve(await get('srcDir') as string, val || (srcDir === rootDir ? 'app' : '.')) } return val || 'app' }, @@ -419,8 +420,8 @@ export default defineUntypedSchema({ '@': srcDir, '~~': rootDir, '@@': rootDir, - [assetsDir]: join(srcDir, assetsDir), - [publicDir]: join(srcDir, publicDir), + [basename(assetsDir)]: join(srcDir, assetsDir), + [basename(publicDir)]: resolve(srcDir, publicDir), ...val, } }, diff --git a/packages/schema/src/config/experimental.ts b/packages/schema/src/config/experimental.ts index d33390a0be..83fbc5177f 100644 --- a/packages/schema/src/config/experimental.ts +++ b/packages/schema/src/config/experimental.ts @@ -7,45 +7,12 @@ export default defineUntypedSchema({ */ future: { /** - * Enable early access to Nuxt v4 features or flags. + * Enable early access to future features or flags. * - * Setting `compatibilityVersion` to `4` changes defaults throughout your - * Nuxt configuration, but you can granularly re-enable Nuxt v3 behaviour - * when testing (see example). Please file issues if so, so that we can - * address in Nuxt or in the ecosystem. - * - * @example - * ```ts - * export default defineNuxtConfig({ - * future: { - * compatibilityVersion: 4, - * }, - * // To re-enable _all_ Nuxt v3 behaviour, set the following options: - * srcDir: '.', - * dir: { - * app: 'app' - * }, - * experimental: { - * compileTemplate: true, - * templateUtils: true, - * relativeWatchPaths: true, - * resetAsyncDataToUndefined: true, - * defaults: { - * useAsyncData: { - * deep: true - * } - * } - * }, - * unhead: { - * renderSSRHeadOptions: { - * omitLineBreaks: false - * } - * } - * }) - * ``` - * @type {3 | 4} + * It is currently not configurable but may be in future. + * @type {4} */ - compatibilityVersion: 3, + compatibilityVersion: 4, /** * This enables early access to the experimental multi-app support. * @see [Nuxt Issue #21635](https://github.com/nuxt/nuxt/issues/21635) @@ -146,21 +113,11 @@ export default defineUntypedSchema({ externalVue: true, /** - * 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 + * Enable accessing `appConfig` from server routes. + * + * @deprecated This option is not recommended. */ - 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 - }, - }, - + serverAppConfig: false, /** * Emit `app:chunkError` hook when there is an error loading vite/webpack * chunks. @@ -265,55 +222,6 @@ 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: { - 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 is disabled to reduce the client-side bundle by ~0.5kb. - * @deprecated This feature will be removed in Nuxt v4. - */ - 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. - * @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, @@ -336,8 +244,9 @@ export default defineUntypedSchema({ /** * Set an alternative watcher that will be used as the watching service for Nuxt. * - * Nuxt uses 'chokidar-granular' by default, which will ignore top-level directories - * (like `node_modules` and `.git`) that are excluded from watching. + * Nuxt uses 'chokidar-granular' if your source directory is the same as your root + * directory . This will ignore top-level directories (like `node_modules` and `.git`) + * that are excluded from watching. * * You can set this instead to `parcel` to use `@parcel/watcher`, which may improve * performance in large projects or on Windows platforms. @@ -347,7 +256,18 @@ export default defineUntypedSchema({ * @see [Parcel watcher](https://github.com/parcel-bundler/watcher) * @type {'chokidar' | 'parcel' | 'chokidar-granular'} */ - watcher: 'chokidar-granular', + watcher: { + $resolve: async (val, get) => { + if (val) { + return val + } + const [srcDir, rootDir] = await Promise.all([get('srcDir'), get('rootDir')]) as [string, string] + if (srcDir === rootDir) { + return 'chokidar-granular' + } + return 'chokidar' + }, + }, /** * Enable native async context to be accessible for nested composables @@ -436,23 +356,7 @@ 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) - }, - }, + deep: false, }, /** @type {Pick} */ useFetch: {}, @@ -474,50 +378,11 @@ export default defineUntypedSchema({ clientNodeCompat: false, /** - * Whether to use `lodash.template` to compile Nuxt templates. + * Wait for a single animation frame before navigation, which gives an opportunity + * for the browser to repaint, acknowledging user interaction. * - * This flag will be removed with the release of v4 and exists only for - * advance testing within Nuxt v3.12+ or in [the nightly release channel](/docs/guide/going-further/nightly-release-channel). + * It can reduce INP when navigating on prerendered routes. */ - compileTemplate: { - async $resolve (val, get) { - return val ?? ((await get('future') as Record).compatibilityVersion !== 4) - }, - }, - - /** - * Whether to provide a legacy `templateUtils` object (with `serialize`, - * `importName` and `importSources`) when compiling Nuxt templates. - * - * This flag will be removed with the release of v4 and exists only for - * advance testing within Nuxt v3.12+ or in [the nightly release channel](/docs/guide/going-further/nightly-release-channel). - */ - templateUtils: { - async $resolve (val, get) { - return val ?? ((await get('future') as Record).compatibilityVersion !== 4) - }, - }, - - /** - * Whether to provide relative paths in the `builder:watch` hook. - * - * This flag will be removed with the release of v4 and exists only for - * advance testing within Nuxt v3.12+ or in [the nightly release channel](/docs/guide/going-further/nightly-release-channel). - */ - relativeWatchPaths: { - async $resolve (val, get) { - return val ?? ((await get('future') as Record).compatibilityVersion !== 4) - }, - }, - - /** - * Whether `clear` and `clearNuxtData` should reset async data to its _default_ value or update - * it to `null`/`undefined`. - */ - resetAsyncDataToUndefined: { - async $resolve (val, get) { - return val ?? ((await get('future') as Record).compatibilityVersion !== 4) - }, - }, + navigationRepaint: true, }, }) diff --git a/packages/schema/src/config/internal.ts b/packages/schema/src/config/internal.ts index 346beff214..77c79bd5bc 100644 --- a/packages/schema/src/config/internal.ts +++ b/packages/schema/src/config/internal.ts @@ -2,7 +2,7 @@ import { defineUntypedSchema } from 'untyped' export default defineUntypedSchema({ /** @private */ - _majorVersion: 3, + _majorVersion: 4, /** @private */ _legacyGenerate: false, /** @private */ diff --git a/packages/schema/src/config/nitro.ts b/packages/schema/src/config/nitro.ts index f937bb2f20..855fec69a4 100644 --- a/packages/schema/src/config/nitro.ts +++ b/packages/schema/src/config/nitro.ts @@ -5,7 +5,7 @@ export default defineUntypedSchema({ /** * Configuration for Nitro. * @see https://nitro.unjs.io/config/ - * @type {typeof import('nitropack')['NitroConfig']} + * @type {typeof import('nitro/types')['NitroConfig']} */ nitro: { runtimeConfig: { @@ -38,7 +38,7 @@ export default defineUntypedSchema({ * Global route options applied to matching server routes. * @experimental This is an experimental feature and API may change in the future. * @see https://nitro.unjs.io/config/#routerules - * @type {typeof import('nitropack')['NitroConfig']['routeRules']} + * @type {typeof import('nitro/types')['NitroConfig']['routeRules']} */ routeRules: {}, @@ -61,14 +61,14 @@ export default defineUntypedSchema({ * { route: '/path/foo/**:name', handler: '~/server/foohandler.ts' } * ] * ``` - * @type {typeof import('nitropack')['NitroEventHandler'][]} + * @type {typeof import('nitro/types')['NitroEventHandler'][]} */ serverHandlers: [], /** * Nitro development-only server handlers. * @see https://nitro.unjs.io/guide/routing - * @type {typeof import('nitropack')['NitroDevEventHandler'][]} + * @type {typeof import('nitro/types')['NitroDevEventHandler'][]} */ devServerHandlers: [], }) diff --git a/packages/schema/src/config/postcss.ts b/packages/schema/src/config/postcss.ts index 83694cfd18..56f02c1227 100644 --- a/packages/schema/src/config/postcss.ts +++ b/packages/schema/src/config/postcss.ts @@ -1,12 +1,45 @@ import { defineUntypedSchema } from 'untyped' +const ensureItemIsLast = (item: string) => (arr: string[]) => { + const index = arr.indexOf(item) + if (index !== -1) { + arr.splice(index, 1) + arr.push(item) + } + return arr +} + +const orderPresets = { + cssnanoLast: ensureItemIsLast('cssnano'), + autoprefixerLast: ensureItemIsLast('autoprefixer'), + autoprefixerAndCssnanoLast (names: string[]) { + return orderPresets.cssnanoLast(orderPresets.autoprefixerLast(names)) + }, +} + export default defineUntypedSchema({ postcss: { + /** + * A strategy for ordering PostCSS plugins. + * + * @type {'cssnanoLast' | 'autoprefixerLast' | 'autoprefixerAndCssnanoLast' | string[] | ((names: string[]) => string[])} + */ + order: { + $resolve: (val: string | string[] | ((plugins: string[]) => string[])): string[] | ((plugins: string[]) => string[]) => { + if (typeof val === 'string') { + if (!(val in orderPresets)) { + throw new Error(`[nuxt] Unknown PostCSS order preset: ${val}`) + } + return orderPresets[val as keyof typeof orderPresets] + } + return val ?? orderPresets.autoprefixerAndCssnanoLast + }, + }, /** * Options for configuring PostCSS plugins. * * https://postcss.org/ - * @type {Record & { autoprefixer?: any; cssnano?: any }} + * @type {Record | false> & { autoprefixer?: typeof import('autoprefixer').Options; cssnano?: typeof import('cssnano').Options }} */ plugins: { /** diff --git a/packages/schema/src/config/typescript.ts b/packages/schema/src/config/typescript.ts index 7dd1c26368..eb6ff76108 100644 --- a/packages/schema/src/config/typescript.ts +++ b/packages/schema/src/config/typescript.ts @@ -35,7 +35,7 @@ export default defineUntypedSchema({ $resolve: (val) => { const defaults = [ // Nitro auto-imported/augmented dependencies - 'nitropack', + 'nitro/types', 'defu', 'h3', 'consola', @@ -48,6 +48,8 @@ export default defineUntypedSchema({ '@vue/compiler-sfc', '@vue/runtime-dom', 'vue-router', + 'vue-router/auto-routes', + 'unplugin-vue-router/client', '@nuxt/schema', 'nuxt', ] diff --git a/packages/schema/src/index.ts b/packages/schema/src/index.ts index eebdb6e56b..0eb5c1588f 100644 --- a/packages/schema/src/index.ts +++ b/packages/schema/src/index.ts @@ -1,13 +1,13 @@ // Types -export * from './types/compatibility' -export * from './types/components' -export * from './types/config' -export * from './types/hooks' -export * from './types/imports' -export * from './types/head' -export * from './types/module' -export * from './types/nuxt' -export * from './types/router' +export type { NuxtCompatibility, NuxtCompatibilityIssue, NuxtCompatibilityIssues } from './types/compatibility' +export type { Component, ComponentMeta, ComponentsDir, ComponentsOptions, ScanDir } from './types/components' +export type { AppConfig, AppConfigInput, CustomAppConfig, NuxtAppConfig, NuxtBuilder, NuxtConfig, NuxtConfigLayer, NuxtOptions, PublicRuntimeConfig, RuntimeConfig, RuntimeValue, SchemaDefinition, UpperSnakeCase, ViteConfig } from './types/config' +export type { GenerateAppOptions, HookResult, ImportPresetWithDeprecation, NuxtAnalyzeMeta, NuxtHookName, NuxtHooks, NuxtLayout, NuxtMiddleware, NuxtPage, TSReference, VueTSConfig, WatchEvent } from './types/hooks' +export type { ImportsOptions } from './types/imports' +export type { AppHeadMetaObject, MetaObject, MetaObjectRaw, HeadAugmentations } from './types/head' +export type { ModuleDefinition, ModuleMeta, ModuleOptions, ModuleSetupInstallResult, ModuleSetupReturn, NuxtModule, ResolvedModuleOptions } from './types/module' +export type { Nuxt, NuxtApp, NuxtPlugin, NuxtPluginTemplate, NuxtTemplate, NuxtTypeTemplate, ResolvedNuxtTemplate } from './types/nuxt' +export type { RouterConfig, RouterConfigSerializable, RouterOptions } from './types/router' // Schema export { default as NuxtConfigSchema } from './config/index' diff --git a/packages/schema/src/types/config.ts b/packages/schema/src/types/config.ts index 44a1390734..c89e261fe1 100644 --- a/packages/schema/src/types/config.ts +++ b/packages/schema/src/types/config.ts @@ -3,7 +3,7 @@ import type { ServerOptions as ViteServerOptions, UserConfig as ViteUserConfig } import type { Options as VuePluginOptions } from '@vitejs/plugin-vue' import type { Options as VueJsxPluginOptions } from '@vitejs/plugin-vue-jsx' import type { SchemaDefinition } from 'untyped' -import type { NitroRuntimeConfig, NitroRuntimeConfigApp } from 'nitropack' +import type { NitroRuntimeConfig, NitroRuntimeConfigApp } from 'nitro/types' import type { SnakeCase } from 'scule' import type { ConfigSchema } from '../../schema/config' import type { Nuxt } from './nuxt' @@ -75,9 +75,10 @@ export interface NuxtBuilder { } // Normalized Nuxt options available as `nuxt.options.*` -export interface NuxtOptions extends Omit { +export interface NuxtOptions extends Omit { sourcemap: Required> builder: '@nuxt/vite-builder' | '@nuxt/webpack-builder' | NuxtBuilder + postcss: Omit & { order: Exclude } webpack: ConfigSchema['webpack'] & { $client: ConfigSchema['webpack'] $server: ConfigSchema['webpack'] @@ -101,12 +102,6 @@ export interface ViteConfig extends Omit { */ vueJsx?: VueJsxPluginOptions - /** - * Bundler for dev time server-side rendering. - * @default 'vite-node' - */ - devBundler?: 'vite-node' | 'legacy' - /** * Warmup vite entrypoint caches on dev startup. */ diff --git a/packages/schema/src/types/hooks.ts b/packages/schema/src/types/hooks.ts index 1c4fde5fad..34b5528960 100644 --- a/packages/schema/src/types/hooks.ts +++ b/packages/schema/src/types/hooks.ts @@ -6,7 +6,7 @@ import type { Manifest } from 'vue-bundle-renderer' import type { EventHandler } from 'h3' import type { Import, InlinePreset, Unimport } from 'unimport' import type { Compiler, Configuration, Stats } from 'webpack' -import type { Nitro, NitroConfig } from 'nitropack' +import type { Nitro, NitroConfig } from 'nitro/types' import type { Schema, SchemaDefinition } from 'untyped' import type { RouteLocationRaw } from 'vue-router' import type { VueCompilerOptions } from '@vue/language-core' diff --git a/packages/schema/src/types/module.ts b/packages/schema/src/types/module.ts index 9b92d6a93e..1879678923 100644 --- a/packages/schema/src/types/module.ts +++ b/packages/schema/src/types/module.ts @@ -1,3 +1,4 @@ +import type { Defu } from 'defu' import type { NuxtHooks } from './hooks' import type { Nuxt } from './nuxt' import type { NuxtCompatibility } from './compatibility' @@ -26,8 +27,7 @@ export interface ModuleMeta { /** The options received. */ export type ModuleOptions = Record -/** Optional result for nuxt modules */ -export interface ModuleSetupReturn { +export type ModuleSetupInstallResult = { /** * Timing information for the initial setup */ @@ -39,19 +39,62 @@ export interface ModuleSetupReturn { } type Awaitable = T | Promise -type _ModuleSetupReturn = Awaitable -/** Input module passed to defineNuxtModule. */ -export interface ModuleDefinition { +type Prettify = { + [K in keyof T]: T[K]; +} & {} + +export type ModuleSetupReturn = Awaitable + +export type ResolvedModuleOptions< + TOptions extends ModuleOptions, + TOptionsDefaults extends Partial, +> = + Prettify< + Defu< + Partial, + [Partial, TOptionsDefaults] + > + > + +/** Module definition passed to 'defineNuxtModule(...)' or 'defineNuxtModule().with(...)'. */ +export interface ModuleDefinition< + TOptions extends ModuleOptions, + TOptionsDefaults extends Partial, + TWith extends boolean, +> { meta?: ModuleMeta - defaults?: T | ((nuxt: Nuxt) => T) - schema?: T + defaults?: TOptionsDefaults | ((nuxt: Nuxt) => TOptionsDefaults) + schema?: TOptions hooks?: Partial - setup?: (this: void, resolvedOptions: T, nuxt: Nuxt) => _ModuleSetupReturn + setup?: ( + this: void, + resolvedOptions: TWith extends true + ? ResolvedModuleOptions + : TOptions, + nuxt: Nuxt + ) => ModuleSetupReturn } -export interface NuxtModule { - (this: void, inlineOptions: T, nuxt: Nuxt): _ModuleSetupReturn - getOptions?: (inlineOptions?: T, nuxt?: Nuxt) => Promise +export interface NuxtModule< + TOptions extends ModuleOptions = ModuleOptions, + TOptionsDefaults extends Partial = Partial, + TWith extends boolean = false, +> { + ( + this: void, + resolvedOptions: TWith extends true + ? ResolvedModuleOptions + : TOptions, + nuxt: Nuxt + ): ModuleSetupReturn + getOptions?: ( + inlineOptions?: Partial, + nuxt?: Nuxt + ) => Promise< + TWith extends true + ? ResolvedModuleOptions + : TOptions + > getMeta?: () => Promise } diff --git a/packages/schema/src/types/router.ts b/packages/schema/src/types/router.ts index 76abc6acb8..c7cb0ce850 100644 --- a/packages/schema/src/types/router.ts +++ b/packages/schema/src/types/router.ts @@ -2,7 +2,7 @@ import type { RouterHistory, RouterOptions as _RouterOptions } from 'vue-router' export type RouterOptions = Partial> & { history?: (baseURL?: string) => RouterHistory - routes?: (_routes: _RouterOptions['routes']) => _RouterOptions['routes'] + routes?: (_routes: _RouterOptions['routes']) => _RouterOptions['routes'] | Promise<_RouterOptions['routes']> hashMode?: boolean scrollBehaviorType?: 'smooth' | 'auto' } diff --git a/packages/schema/test/folder-structure.spec.ts b/packages/schema/test/folder-structure.spec.ts index 1f59c8f908..d9cb857f2c 100644 --- a/packages/schema/test/folder-structure.spec.ts +++ b/packages/schema/test/folder-structure.spec.ts @@ -11,13 +11,13 @@ describe('nuxt folder structure', () => { expect(getDirs(result as unknown as NuxtOptions)).toMatchInlineSnapshot(` { "dir": { - "app": "app", - "modules": "modules", - "public": "public", + "app": "/app", + "modules": "/modules", + "public": "/public", }, "rootDir": "", "serverDir": "/server", - "srcDir": "", + "srcDir": "/app", "workspaceDir": "", } `) @@ -28,12 +28,12 @@ describe('nuxt folder structure', () => { expect(getDirs(result as unknown as NuxtOptions)).toMatchInlineSnapshot(` { "dir": { - "app": "app", - "modules": "modules", - "public": "public", + "app": "/test/src", + "modules": "/test/modules", + "public": "/test/public", }, "rootDir": "/test", - "serverDir": "/test/src/server", + "serverDir": "/test/server", "srcDir": "/test/src", "workspaceDir": "/test", } diff --git a/packages/ui-templates/lib/dev.ts b/packages/ui-templates/lib/dev.ts index 75e431f66c..8c2624dbfe 100644 --- a/packages/ui-templates/lib/dev.ts +++ b/packages/ui-templates/lib/dev.ts @@ -1,9 +1,10 @@ +import { runInNewContext } from 'node:vm' import { join, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { promises as fsp } from 'node:fs' import type { Plugin } from 'vite' -import { template } from 'lodash-es' import genericMessages from '../templates/messages.json' +import { version } from '../../nuxt/package.json' const templatesRoot = fileURLToPath(new URL('..', import.meta.url)) @@ -15,6 +16,8 @@ export const DevRenderingPlugin = () => { async transformIndexHtml (html: string, context) { const page = context.originalUrl || '/' + if (page.endsWith('.png')) { return } + if (page === '/') { const templateNames = await fsp.readdir(r('templates')) const serializedData = JSON.stringify({ templateNames }) @@ -25,11 +28,20 @@ export const DevRenderingPlugin = () => { const messages = JSON.parse(await fsp.readFile(r(page, 'messages.json'), 'utf-8')) - return template(contents, { - interpolate: /\{\{\{?([\s\S]+?)\}?\}\}/g, - })({ - messages: { ...genericMessages, ...messages }, - }) + const chunks = contents.split(/\{{2,3}[^{}]+\}{2,3}/g) + let templateString = chunks.shift() + for (const expression of contents.matchAll(/\{{2,3}([^{}]+)\}{2,3}/g)) { + const value = runInNewContext(expression[1].trim(), { + version, + messages: { ...genericMessages, ...messages }, + }) + templateString += `${value}${chunks.shift()}` + } + if (chunks.length > 0) { + templateString += chunks.join('') + } + + return templateString }, } } diff --git a/packages/ui-templates/lib/render.ts b/packages/ui-templates/lib/render.ts index c9d5986c4f..ea444ed059 100644 --- a/packages/ui-templates/lib/render.ts +++ b/packages/ui-templates/lib/render.ts @@ -10,6 +10,7 @@ import htmlMinifier from 'html-minifier' import { globby } from 'globby' import { camelCase } from 'scule' +import { version } from '../../nuxt/package.json' import genericMessages from '../templates/messages.json' const r = (path: string) => fileURLToPath(new URL(join('..', path), import.meta.url)) @@ -89,6 +90,8 @@ export const RenderPlugin = () => { html = html.replace('', '') } + html = html.replace(/\{\{ version \}\}/g, version) + // Load messages const messages = JSON.parse(readFileSync(r(`templates/${templateName}/messages.json`), 'utf-8')) @@ -136,9 +139,14 @@ export const RenderPlugin = () => { } return lastChar || '' }).replace(/@media[^{]*\{\}/g, '') - const inlineScripts = Array.from(html.matchAll(/ - - -
-
-

{{ messages.statusCode }}

-

{{ messages.description }}

+ +
+

{{ messages.statusCode }}

+

{{ messages.statusMessage }}

+

{{ messages.description }}

diff --git a/packages/ui-templates/templates/error-404/messages.json b/packages/ui-templates/templates/error-404/messages.json index 262941b2fe..1cd5a5e62e 100644 --- a/packages/ui-templates/templates/error-404/messages.json +++ b/packages/ui-templates/templates/error-404/messages.json @@ -1,6 +1,6 @@ { "statusCode": 404, - "statusMessage": "Not Found", + "statusMessage": "Page not found", "description": "Sorry, the page you are looking for could not be found.", "backHome": "Go back home" } diff --git a/packages/ui-templates/templates/error-500/index.html b/packages/ui-templates/templates/error-500/index.html index 0ae46738cb..b6616d0510 100644 --- a/packages/ui-templates/templates/error-500/index.html +++ b/packages/ui-templates/templates/error-500/index.html @@ -5,18 +5,12 @@ - - -
+
-

{{ messages.statusCode }}

-

{{ messages.description }}

+

{{ messages.statusCode }}

+

{{ messages.statusMessage }}

+

{{ messages.description }}

diff --git a/packages/ui-templates/templates/error-500/messages.json b/packages/ui-templates/templates/error-500/messages.json index 69534ad900..e69ef467e3 100644 --- a/packages/ui-templates/templates/error-500/messages.json +++ b/packages/ui-templates/templates/error-500/messages.json @@ -1,5 +1,6 @@ { "statusCode": 500, - "statusMessage": "Server error", - "description": "This page is temporarily unavailable." + "statusMessage": "Internal server error", + "description": "This page is temporarily unavailable.", + "refresh": "Refresh this page" } diff --git a/packages/ui-templates/templates/error-dev/index.html b/packages/ui-templates/templates/error-dev/index.html index 469ac24184..aa96b9d67c 100644 --- a/packages/ui-templates/templates/error-dev/index.html +++ b/packages/ui-templates/templates/error-dev/index.html @@ -5,21 +5,12 @@ - - -
-

{{ messages.statusCode }}

-

{{ messages.description }}

-
+ +

{{ messages.statusCode }}

+

{{ messages.description }}

+ Customize this page +
{{{ messages.stack }}}
diff --git a/packages/ui-templates/templates/error-dev/messages.json b/packages/ui-templates/templates/error-dev/messages.json index afd71e0257..4c790e9df3 100644 --- a/packages/ui-templates/templates/error-dev/messages.json +++ b/packages/ui-templates/templates/error-dev/messages.json @@ -1,6 +1,6 @@ { "statusCode": 500, "statusMessage": "Server error", - "description": "An error occurred in the application and the page could not be served. If you are the application owner, check your server logs for details.", + "description": "An error occurred in the application and the page could not be served.", "stack": "" } diff --git a/packages/ui-templates/templates/loading/index.html b/packages/ui-templates/templates/loading/index.html index bda8016b70..67b1198581 100644 --- a/packages/ui-templates/templates/loading/index.html +++ b/packages/ui-templates/templates/loading/index.html @@ -7,59 +7,32 @@ - -
- -
- - -
+ +
-
-
-
-
- - diff --git a/packages/ui-templates/templates/welcome/messages.json b/packages/ui-templates/templates/welcome/messages.json index 036c4057aa..cd03b5fed2 100644 --- a/packages/ui-templates/templates/welcome/messages.json +++ b/packages/ui-templates/templates/welcome/messages.json @@ -1,6 +1,3 @@ { - "title": "Welcome to Nuxt!", - "readDocs": "We highly recommend you take a look at the Nuxt documentation, whether you are new or have previous experience with the framework.", - "followTwitter": "Follow the Nuxt Twitter account to get latest news about releases, new modules, tutorials and tips.", - "starGitHub": "Nuxt is open source and the code is available on GitHub, feel free to star it, participate in discussions or dive into the source." + "title": "Welcome to Nuxt!" } diff --git a/packages/ui-templates/test/__snapshots__/snapshots.spec.ts.snap b/packages/ui-templates/test/__snapshots__/snapshots.spec.ts.snap index bf980b4a26..2a72ba1490 100644 --- a/packages/ui-templates/test/__snapshots__/snapshots.spec.ts.snap +++ b/packages/ui-templates/test/__snapshots__/snapshots.spec.ts.snap @@ -1,99 +1,14 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`template > correctly outputs style blocks for error-404.vue 1`] = ` -".spotlight { - background: linear-gradient(45deg, #00dc82 0%, #36e4da 50%, #0047e1 100%); - filter: blur(20vh); - height: 40vh; - bottom: -30vh; -} -.gradient-border { - position: relative; - border-radius: 0.5rem; - -webkit-backdrop-filter: blur(10px); - backdrop-filter: blur(10px); -} -@media (prefers-color-scheme: light) { - .gradient-border { - background-color: rgba(255, 255, 255, 0.3); - } - .gradient-border::before { - background: linear-gradient( - 90deg, - #e2e2e2 0%, - #e2e2e2 25%, - #00dc82 50%, - #36e4da 75%, - #0047e1 100% - ); - } -} -@media (prefers-color-scheme: dark) { - .gradient-border { - background-color: rgba(20, 20, 20, 0.3); - } - .gradient-border::before { - background: linear-gradient( - 90deg, - #303030 0%, - #303030 25%, - #00dc82 50%, - #36e4da 75%, - #0047e1 100% - ); - } -} -.gradient-border::before { - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border-radius: 0.5rem; - padding: 2px; - width: 100%; - background-size: 400% auto; - opacity: 0.5; - transition: - background-position 0.3s ease-in-out, - opacity 0.2s ease-in-out; - -webkit-mask: - linear-gradient(#fff 0 0) content-box, - linear-gradient(#fff 0 0); - mask: - linear-gradient(#fff 0 0) content-box, - linear-gradient(#fff 0 0); - -webkit-mask-composite: xor; - mask-composite: exclude; -} -.gradient-border:hover::before { - background-position: -50% 0; - opacity: 1; -} -.fixed { - position: fixed; -} -.left-0 { - left: 0; -} -.right-0 { - right: 0; -} -.z-10 { - z-index: 10; -} -.z-20 { - z-index: 20; -} -.grid { +".grid { display: grid; } -.mb-16 { - margin-bottom: 4rem; +.mb-2 { + margin-bottom: 0.5rem; } -.mb-8 { - margin-bottom: 2rem; +.mb-4 { + margin-bottom: 1rem; } .max-w-520px { max-width: 520px; @@ -107,9 +22,6 @@ exports[`template > correctly outputs style blocks for error-404.vue 1`] = ` .flex { display: flex; } -.cursor-pointer { - cursor: pointer; -} .place-content-center { place-content: center; } @@ -126,41 +38,47 @@ exports[`template > correctly outputs style blocks for error-404.vue 1`] = ` --un-bg-opacity: 1; background-color: rgb(255 255 255 / var(--un-bg-opacity)); } -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; } .text-center { text-align: center; } -.text-8xl { - font-size: 6rem; - line-height: 1; +.text-\\[80px\\] { + font-size: 80px; } -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; } -.text-black { +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} +.text-\\[\\#020420\\] { --un-text-opacity: 1; - color: rgb(0 0 0 / var(--un-text-opacity)); + color: rgb(2 4 32 / var(--un-text-opacity)); } -.font-light { - font-weight: 300; +.text-\\[\\#64748B\\] { + --un-text-opacity: 1; + color: rgb(100 116 139 / var(--un-text-opacity)); +} +.hover\\:text-\\[\\#00DC82\\]:hover { + --un-text-opacity: 1; + color: rgb(0 220 130 / var(--un-text-opacity)); } .font-medium { font-weight: 500; } -.leading-tight { - line-height: 1.25; +.font-semibold { + font-weight: 600; +} +.leading-none { + line-height: 1; +} +.tracking-wide { + letter-spacing: 0.025em; } .font-sans { font-family: @@ -179,14 +97,26 @@ exports[`template > correctly outputs style blocks for error-404.vue 1`] = ` Segoe UI Symbol, "Noto Color Emoji"; } +.tabular-nums { + --un-numeric-spacing: tabular-nums; + font-variant-numeric: var(--un-ordinal) var(--un-slashed-zero) + var(--un-numeric-figure) var(--un-numeric-spacing) + var(--un-numeric-fraction); +} +.underline { + text-decoration-line: underline; +} +.underline-offset-3 { + text-underline-offset: 3px; +} .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @media (prefers-color-scheme: dark) { - .dark\\:bg-black { + .dark\\:bg-\\[\\#020420\\] { --un-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--un-bg-opacity)); + background-color: rgb(2 4 32 / var(--un-bg-opacity)); } .dark\\:text-white { --un-text-opacity: 1; @@ -194,25 +124,12 @@ exports[`template > correctly outputs style blocks for error-404.vue 1`] = ` } } @media (min-width: 640px) { - .sm\\:px-0 { - padding-left: 0; - padding-right: 0; + .sm\\:text-\\[110px\\] { + font-size: 110px; } - .sm\\:px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; - } - .sm\\:py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - } - .sm\\:text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; - } - .sm\\:text-xl { - font-size: 1.25rem; - line-height: 1.75rem; + .sm\\:text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; } } " @@ -252,7 +169,8 @@ body { margin: 0; line-height: inherit; } -h1 { +h1, +h2 { font-size: inherit; font-weight: inherit; } @@ -261,6 +179,7 @@ a { text-decoration: inherit; } h1, +h2, p { margin: 0; } @@ -322,33 +241,14 @@ p { `; exports[`template > correctly outputs style blocks for error-500.vue 1`] = ` -".spotlight { - background: linear-gradient(45deg, #00dc82 0%, #36e4da 50%, #0047e1 100%); - filter: blur(20vh); -} -.fixed { - position: fixed; -} -.-bottom-1\\/2 { - bottom: -50%; -} -.left-0 { - left: 0; -} -.right-0 { - right: 0; -} -.grid { +".grid { display: grid; } -.mb-16 { - margin-bottom: 4rem; +.mb-2 { + margin-bottom: 0.5rem; } -.mb-8 { - margin-bottom: 2rem; -} -.h-1\\/2 { - height: 50%; +.mb-4 { + margin-bottom: 1rem; } .max-w-520px { max-width: 520px; @@ -366,33 +266,36 @@ exports[`template > correctly outputs style blocks for error-500.vue 1`] = ` --un-bg-opacity: 1; background-color: rgb(255 255 255 / var(--un-bg-opacity)); } -.px-8 { - padding-left: 2rem; - padding-right: 2rem; +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; } .text-center { text-align: center; } -.text-8xl { - font-size: 6rem; +.text-\\[80px\\] { + font-size: 80px; +} +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} +.text-\\[\\#020420\\] { + --un-text-opacity: 1; + color: rgb(2 4 32 / var(--un-text-opacity)); +} +.text-\\[\\#64748B\\] { + --un-text-opacity: 1; + color: rgb(100 116 139 / var(--un-text-opacity)); +} +.font-semibold { + font-weight: 600; +} +.leading-none { line-height: 1; } -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} -.text-black { - --un-text-opacity: 1; - color: rgb(0 0 0 / var(--un-text-opacity)); -} -.font-light { - font-weight: 300; -} -.font-medium { - font-weight: 500; -} -.leading-tight { - line-height: 1.25; +.tracking-wide { + letter-spacing: 0.025em; } .font-sans { font-family: @@ -411,14 +314,20 @@ exports[`template > correctly outputs style blocks for error-500.vue 1`] = ` Segoe UI Symbol, "Noto Color Emoji"; } +.tabular-nums { + --un-numeric-spacing: tabular-nums; + font-variant-numeric: var(--un-ordinal) var(--un-slashed-zero) + var(--un-numeric-figure) var(--un-numeric-spacing) + var(--un-numeric-fraction); +} .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @media (prefers-color-scheme: dark) { - .dark\\:bg-black { + .dark\\:bg-\\[\\#020420\\] { --un-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--un-bg-opacity)); + background-color: rgb(2 4 32 / var(--un-bg-opacity)); } .dark\\:text-white { --un-text-opacity: 1; @@ -426,13 +335,12 @@ exports[`template > correctly outputs style blocks for error-500.vue 1`] = ` } } @media (min-width: 640px) { - .sm\\:px-0 { - padding-left: 0; - padding-right: 0; + .sm\\:text-\\[110px\\] { + font-size: 110px; } - .sm\\:text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; + .sm\\:text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; } } " @@ -472,11 +380,13 @@ body { margin: 0; line-height: inherit; } -h1 { +h1, +h2 { font-size: inherit; font-weight: inherit; } h1, +h2, p { margin: 0; } @@ -538,31 +448,28 @@ p { `; exports[`template > correctly outputs style blocks for error-dev.vue 1`] = ` -".spotlight { - background: linear-gradient(45deg, #00dc82 0%, #36e4da 50%, #0047e1 100%); - opacity: 0.8; - filter: blur(30vh); - height: 60vh; - bottom: -40vh; +".absolute { + position: absolute; } -.fixed { - position: fixed; -} -.left-0 { - left: 0; -} -.right-0 { - right: 0; +.top-6 { + top: 1.5rem; } .z-10 { z-index: 10; } -.mb-6 { - margin-bottom: 1.5rem; +.mx-auto { + margin-left: auto; + margin-right: auto; +} +.mb-4 { + margin-bottom: 1rem; } .mb-8 { margin-bottom: 2rem; } +.inline-block { + display: inline-block; +} .h-auto { height: auto; } @@ -581,12 +488,21 @@ exports[`template > correctly outputs style blocks for error-dev.vue 1`] = ` .overflow-y-auto { overflow-y: auto; } +.border { + border-width: 1px; +} +.border-b-0 { + border-bottom-width: 0px; +} +.border-black\\/5 { + border-color: #0000000d; +} .rounded-t-md { border-top-left-radius: 0.375rem; border-top-right-radius: 0.375rem; } -.bg-black\\/5 { - background-color: #0000000d; +.bg-gray-50\\/50 { + background-color: #f5f5f580; } .bg-white { --un-bg-opacity: 1; @@ -599,13 +515,17 @@ exports[`template > correctly outputs style blocks for error-dev.vue 1`] = ` padding-left: 2.5rem; padding-right: 2.5rem; } -.pt-14 { - padding-top: 3.5rem; +.pt-12 { + padding-top: 3rem; } .text-6xl { font-size: 3.75rem; line-height: 1; } +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} .text-xl { font-size: 1.25rem; line-height: 1.75rem; @@ -614,6 +534,10 @@ exports[`template > correctly outputs style blocks for error-dev.vue 1`] = ` --un-text-opacity: 1; color: rgb(0 0 0 / var(--un-text-opacity)); } +.hover\\:text-\\[\\#00DC82\\]:hover { + --un-text-opacity: 1; + color: rgb(0 220 130 / var(--un-text-opacity)); +} .font-light { font-weight: 300; } @@ -640,17 +564,26 @@ exports[`template > correctly outputs style blocks for error-dev.vue 1`] = ` Segoe UI Symbol, "Noto Color Emoji"; } +.hover\\:underline:hover { + text-decoration-line: underline; +} +.underline-offset-3 { + text-underline-offset: 3px; +} .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @media (prefers-color-scheme: dark) { - .dark\\:bg-black { - --un-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--un-bg-opacity)); + .dark\\:border-white\\/10 { + border-color: #ffffff1a; } - .dark\\:bg-white\\/10 { - background-color: #ffffff1a; + .dark\\:bg-\\[\\#020420\\] { + --un-bg-opacity: 1; + background-color: rgb(2 4 32 / var(--un-bg-opacity)); + } + .dark\\:bg-white\\/5 { + background-color: #ffffff0d; } .dark\\:text-white { --un-text-opacity: 1; @@ -658,6 +591,9 @@ exports[`template > correctly outputs style blocks for error-dev.vue 1`] = ` } } @media (min-width: 640px) { + .sm\\:right-6 { + right: 1.5rem; + } .sm\\:text-2xl { font-size: 1.5rem; line-height: 2rem; @@ -708,6 +644,10 @@ h1 { font-size: inherit; font-weight: inherit; } +a { + color: inherit; + text-decoration: inherit; +} pre { font-family: ui-monospace, @@ -786,267 +726,171 @@ pre { exports[`template > correctly outputs style blocks for loading.vue 1`] = ` ".nuxt-loader-bar { - background: repeating-linear-gradient( - to right, - #36e4da 0%, - #1de0b1 25%, - #00dc82 50%, - #1de0b1 75%, - #36e4da 100% - ); - height: 100px; - background-size: 200% auto; - background-position: 0 0; - animation: gradient 2s infinite; - animation-fill-mode: forwards; - animation-timing-function: linear; + background: #00dc82; position: fixed; bottom: 0; left: 0; right: 0; - height: 5px; + height: 3px; } -.visual-effects .nuxt-loader-bar { - height: 100px; - bottom: -50px; - left: -50px; - right: -50px; - filter: blur(100px); -} -.visual-effects .mouse-gradient { - background: repeating-linear-gradient( - to right, - #00dc82 0%, - #1de0b1 50%, - #36e4da 100% - ); - filter: blur(100px); - opacity: 0.5; -} -#animation-toggle { - position: fixed; - padding: 10px; - top: 0; - right: 0; - transition: opacity 0.4s ease-in; - opacity: 0; -} -#animation-toggle:hover { - opacity: 0.8; -} -@keyframes gradient { - 0% { - background-position: 0 0; - } - 100% { - background-position: -200% 0; - } -} -@media (prefers-color-scheme: dark) { - html, - body { - color: white; - color-scheme: dark; - } - .nuxt-loader-bar { - opacity: 0.5; - } -} -*, -:before, -:after { - box-sizing: border-box; - border-width: 0; - border-style: solid; - border-color: var(--un-default-border-color, #e5e7eb); -} -:before, -:after { - --un-content: ""; -} -html { - line-height: 1.5; - -webkit-text-size-adjust: 100%; - -moz-tab-size: 4; - tab-size: 4; - font-family: - ui-sans-serif, - system-ui, - sans-serif, - "Apple Color Emoji", - "Segoe UI Emoji", - Segoe UI Symbol, - "Noto Color Emoji"; - font-feature-settings: normal; - font-variation-settings: normal; - -webkit-tap-highlight-color: transparent; -} -body { - margin: 0; - line-height: inherit; -} -a { - color: inherit; - text-decoration: inherit; -} -button { - font-family: inherit; - font-feature-settings: inherit; - font-variation-settings: inherit; - font-size: 100%; - font-weight: inherit; - line-height: inherit; - color: inherit; - margin: 0; - padding: 0; -} -button { - text-transform: none; -} -button { - -webkit-appearance: button; - background-color: transparent; - background-image: none; -} -button { - cursor: pointer; -} -svg { - display: block; - vertical-align: middle; -} -*, -:before, -:after { - --un-rotate: 0; - --un-rotate-x: 0; - --un-rotate-y: 0; - --un-rotate-z: 0; - --un-scale-x: 1; - --un-scale-y: 1; - --un-scale-z: 1; - --un-skew-x: 0; - --un-skew-y: 0; - --un-translate-x: 0; - --un-translate-y: 0; - --un-translate-z: 0; - --un-pan-x: ; - --un-pan-y: ; - --un-pinch-zoom: ; - --un-scroll-snap-strictness: proximity; - --un-ordinal: ; - --un-slashed-zero: ; - --un-numeric-figure: ; - --un-numeric-spacing: ; - --un-numeric-fraction: ; - --un-border-spacing-x: 0; - --un-border-spacing-y: 0; - --un-ring-offset-shadow: 0 0 rgb(0 0 0 / 0); - --un-ring-shadow: 0 0 rgb(0 0 0 / 0); - --un-shadow-inset: ; - --un-shadow: 0 0 rgb(0 0 0 / 0); - --un-ring-inset: ; - --un-ring-offset-width: 0px; - --un-ring-offset-color: #fff; - --un-ring-width: 0px; - --un-ring-color: rgb(147 197 253 / 0.5); - --un-blur: ; - --un-brightness: ; - --un-contrast: ; - --un-drop-shadow: ; - --un-grayscale: ; - --un-hue-rotate: ; - --un-invert: ; - --un-saturate: ; - --un-sepia: ; - --un-backdrop-blur: ; - --un-backdrop-brightness: ; - --un-backdrop-contrast: ; - --un-backdrop-grayscale: ; - --un-backdrop-hue-rotate: ; - --un-backdrop-invert: ; - --un-backdrop-opacity: ; - --un-backdrop-saturate: ; - --un-backdrop-sepia: ; -} -.absolute { +.triangle-loading { position: absolute; } +.triangle-loading > path { + fill: none; + stroke-width: 4px; + stroke-linecap: round; + stroke-linejoin: round; + stroke-dasharray: 128; + stroke-dashoffset: 128; + animation: nuxt-loading-move 3s linear infinite; +} +.nuxt-logo:hover .triangle-loading > path { + animation-play-state: paused; +} .relative { position: relative; } -.top-0 { - top: 0; -} -.z-20 { - z-index: 20; -} -.h-\\[200px\\] { - height: 200px; +.inline-block { + display: inline-block; } .min-h-screen { min-height: 100vh; } -.w-\\[200px\\] { - width: 200px; -} .flex { display: flex; } .flex-col { flex-direction: column; } +.items-end { + align-items: flex-end; +} .items-center { align-items: center; } .justify-center { justify-content: center; } +.gap-4 { + gap: 1rem; +} .overflow-hidden { overflow: hidden; } -.rounded-full { - border-radius: 9999px; +.border { + border-width: 1px; +} +.border-\\[\\#00DC42\\]\\/50 { + border-color: #00dc4280; +} +.group:hover .group-hover\\:border-\\[\\#00DC42\\] { + --un-border-opacity: 1; + border-color: rgb(0 220 66 / var(--un-border-opacity)); +} +.rounded { + border-radius: 0.25rem; +} +.bg-\\[\\#00DC42\\]\\/10 { + background-color: #00dc421a; } .bg-white { --un-bg-opacity: 1; background-color: rgb(255 255 255 / var(--un-bg-opacity)); } +.group:hover .group-hover\\:bg-\\[\\#00DC42\\]\\/15 { + background-color: #00dc4226; +} +.px-2\\.5 { + padding-left: 0.625rem; + padding-right: 0.625rem; +} +.py-1\\.5 { + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} .text-center { text-align: center; } -.transition-opacity { - transition-property: opacity; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 0.15s; +.text-\\[16px\\] { + font-size: 16px; +} +.text-\\[\\#00DC82\\], +.group:hover .group-hover\\:text-\\[\\#00DC82\\] { + --un-text-opacity: 1; + color: rgb(0 220 130 / var(--un-text-opacity)); +} +.text-\\[\\#00DC82\\]\\/80 { + color: #00dc82cc; +} +.text-\\[\\#020420\\], +.group:hover .group-hover\\:text-\\[\\#020420\\] { + --un-text-opacity: 1; + color: rgb(2 4 32 / var(--un-text-opacity)); +} +.text-\\[\\#020420\\]\\/80 { + color: #020420cc; +} +.font-semibold { + font-weight: 600; +} +.leading-none { + line-height: 1; +} +.font-mono { + font-family: + ui-monospace, + SFMono-Regular, + Menlo, + Monaco, + Consolas, + Liberation Mono, + Courier New, + monospace; +} +.font-sans { + font-family: + ui-sans-serif, + system-ui, + -apple-system, + BlinkMacSystemFont, + Segoe UI, + Roboto, + Helvetica Neue, + Arial, + Noto Sans, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + Segoe UI Symbol, + "Noto Color Emoji"; +} +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } @media (prefers-color-scheme: dark) { - .dark\\:bg-black { + .dark\\:bg-\\[\\#020420\\] { --un-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--un-bg-opacity)); + background-color: rgb(2 4 32 / var(--un-bg-opacity)); + } + .dark\\:text-gray-200 { + --un-text-opacity: 1; + color: rgb(224 224 224 / var(--un-text-opacity)); + } + .dark\\:text-white, + .group:hover .dark\\:group-hover\\:text-white { + --un-text-opacity: 1; + color: rgb(255 255 255 / var(--un-text-opacity)); } } " `; exports[`template > correctly outputs style blocks for loading.vue 2`] = ` -"#animation-toggle { - position: fixed; - padding: 10px; - top: 0; - right: 0; - transition: opacity 0.4s ease-in; - opacity: 0; -} -#animation-toggle:hover { - opacity: 0.8; -} -@keyframes gradient { - 0% { - background-position: 0 0; - } +"@keyframes nuxt-loading-move { 100% { - background-position: -200% 0; + stroke-dashoffset: -128; } } @media (prefers-color-scheme: dark) { @@ -1093,28 +937,6 @@ a { color: inherit; text-decoration: inherit; } -button { - font-family: inherit; - font-feature-settings: inherit; - font-variation-settings: inherit; - font-size: 100%; - font-weight: inherit; - line-height: inherit; - color: inherit; - margin: 0; - padding: 0; -} -button { - text-transform: none; -} -button { - -webkit-appearance: button; - background-color: transparent; - background-image: none; -} -button { - cursor: pointer; -} svg { display: block; vertical-align: middle; @@ -1177,216 +999,7 @@ svg { `; exports[`template > correctly outputs style blocks for welcome.vue 1`] = ` -"@media (prefers-color-scheme: light) { - .get-started-gradient-border { - background: linear-gradient(to right, #ffffff, #ffffff), - linear-gradient(to right, #00dc82, #1de0b1, #36e4da); - } - .gradient-border-modules { - background: linear-gradient( - var(--gradient-angle), - rgba(247, 209, 76), - rgba(247, 209, 76, 0.6), - rgba(255, 255, 255, 0.8), - rgba(247, 209, 76) - ); - } - .gradient-border-examples { - background: linear-gradient( - var(--gradient-angle), - rgba(141, 234, 255), - rgba(141, 234, 255, 0.6), - rgba(255, 255, 255, 0.8), - rgba(141, 234, 255) - ); - } - .gradient-border-documentation { - background: linear-gradient( - var(--gradient-angle), - rgba(0, 220, 130), - rgba(0, 220, 130, 0.6), - rgba(255, 255, 255, 0.8), - rgba(0, 220, 130) - ); - } -} -@media (prefers-color-scheme: dark) { - .get-started-gradient-border { - background: linear-gradient(to right, #18181b, #18181b), - linear-gradient(to right, #00dc82, #1de0b1, #36e4da); - } - .gradient-border-modules { - background: linear-gradient( - var(--gradient-angle), - rgba(247, 209, 76), - rgba(163, 129, 8), - rgba(255, 255, 255, 0.3), - rgba(163, 129, 8) - ); - } - .gradient-border-examples { - background: linear-gradient( - var(--gradient-angle), - rgba(141, 234, 255), - rgba(0, 138, 169), - rgba(255, 255, 255, 0.3), - rgba(0, 138, 169) - ); - } - .gradient-border-documentation { - background: linear-gradient( - var(--gradient-angle), - rgba(0, 220, 130), - rgba(0, 63, 37), - rgba(255, 255, 255, 0.2), - rgba(0, 63, 37) - ); - } -} -.get-started-gradient-border { - background-clip: padding-box, border-box; - background-origin: padding-box, border-box; - border-color: transparent; - border-radius: 12px; - border-width: 1px; -} -.get-started-gradient-border:hover - > :is(.get-started-gradient-left, .get-started-gradient-right) { - opacity: 0.2; -} -.get-started-gradient-left, -.get-started-gradient-right { - opacity: 0; -} -.gradient-border { - opacity: 0; - position: absolute; - top: 0; - left: 0; - width: calc(100% + 2px); - border-radius: 12px; - z-index: -1; - transform: translate(-1px, -1px); -} -.gradient-border-rect { - height: calc(100% + 2px); -} -@media (min-width: 1024px) { - .gradient-border-rect { - height: calc(100% + 1px); - } -} -.gradient-border-square { - height: calc(100% + 2px); -} -.modules-gradient-right { - opacity: 0; -} -.modules-container:hover > .gradient-border, -.examples-container:hover > .gradient-border, -.documentation-container:hover > .gradient-border { - opacity: 1; - animation: gradient-rotate 5s cubic-bezier(0, 0, 1, 1) 0s infinite reverse; - transition: all 0.3s linear; -} -.modules-container:hover > .modules-gradient-right { - opacity: 0.2; -} -.examples-container:hover > .examples-gradient-right { - opacity: 0.2; -} -.examples-gradient-right { - opacity: 0; -} -.documentation-image-color-light, -.documentation-image-color-dark { - display: none; -} -.modules-image-color-light, -.modules-image-color-dark { - display: none; -} -.examples-image-color-light, -.examples-image-color-dark { - display: none; -} -@media (prefers-color-scheme: light) { - .modules-image-light { - display: block; - } - .modules-image-dark { - display: none; - } - .modules-container:hover > a > .modules-image-light { - display: none; - } - .modules-container:hover > a > .modules-image-color-light { - display: block; - } - .examples-image-light { - display: block; - } - .examples-image-dark { - display: none; - } - .examples-container:hover > a > .examples-image-light { - display: none; - } - .examples-container:hover > a > .examples-image-color-light { - display: block; - } - .documentation-image-light { - display: block; - } - .documentation-image-dark { - display: none; - } - .documentation-container:hover > a > div > .documentation-image-light { - display: none; - } - .documentation-container:hover > a > div > .documentation-image-color-light { - display: block; - } -} -@media (prefers-color-scheme: dark) { - .modules-image-dark { - display: block; - } - .modules-image-light { - display: none; - } - .modules-container:hover > a > .modules-image-color-dark { - display: block; - } - .modules-container:hover > a > .modules-image-dark { - display: none; - } - .examples-image-dark { - display: block; - } - .examples-image-light { - display: none; - } - .examples-container:hover > a > .examples-image-color-dark { - display: block; - } - .examples-container:hover > a > .examples-image-dark { - display: none; - } - .documentation-image-dark { - display: block; - } - .documentation-image-light { - display: none; - } - .documentation-container:hover > a > div > .documentation-image-color-dark { - display: block; - } - .documentation-container:hover > a > div > .documentation-image-dark { - display: none; - } -} -.sr-only { +".sr-only { position: absolute; width: 1px; height: 1px; @@ -1403,71 +1016,64 @@ exports[`template > correctly outputs style blocks for welcome.vue 1`] = ` .relative { position: relative; } -.inset-x-0 { - left: 0; - right: 0; +.right-4 { + right: 1rem; } -.inset-y-0 { - top: 0; - bottom: 0; -} -.-top-\\[58px\\] { - top: -58px; -} -.-top-3 { - top: -0.75rem; -} -.left-0 { - left: 0; -} -.right-0 { - right: 0; -} -.z-1 { - z-index: 1; -} -.z-10 { - z-index: 10; -} -.order-last { - order: 9999; +.top-4 { + top: 1rem; } .grid { display: grid; } -.col-span-2 { - grid-column: span 2 / span 2; -} -.row-span-2 { - grid-row: span 2 / span 2; -} -.grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); +.grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); } .mx-auto { margin-left: auto; margin-right: auto; } -.mb-2 { - margin-bottom: 0.5rem; +.mb-6 { + margin-bottom: 1.5rem; } -.hidden { - display: none; +.mt-1 { + margin-top: 0.25rem; } -.h-\\[70px\\] { - height: 70px; +.mt-4 { + margin-top: 1rem; } -.h-32 { - height: 8rem; +.mt-6 { + margin-top: 1.5rem; } -.max-w-\\[960px\\] { - max-width: 960px; +.inline-block { + display: inline-block; +} +.size-\\[18px\\] { + width: 18px; + height: 18px; +} +.size-4 { + width: 1rem; + height: 1rem; +} +.size-5, +.group:hover .group-hover\\:size-5 { + width: 1.25rem; + height: 1.25rem; +} +.h-\\[32px\\] { + height: 32px; +} +.h-8 { + height: 2rem; +} +.max-w-\\[980px\\] { + max-width: 980px; } .min-h-screen { min-height: 100vh; } -.w-\\[20\\%\\] { - width: 20%; +.w-\\[32px\\] { + width: 32px; } .w-full { width: 100%; @@ -1475,41 +1081,29 @@ exports[`template > correctly outputs style blocks for welcome.vue 1`] = ` .flex { display: flex; } -.flex-1 { - flex: 1 1 0%; +.inline-flex { + display: inline-flex; } .flex-col { flex-direction: column; } -.flex-col-reverse { - flex-direction: column-reverse; -} .place-content-center { place-content: center; } +.items-end { + align-items: flex-end; +} .items-center { align-items: center; } -.justify-end { - justify-content: flex-end; -} .justify-center { justify-content: center; } -.gap-3 { - gap: 0.75rem; +.gap-1 { + gap: 0.25rem; } -.gap-6 { - gap: 1.5rem; -} -.gap-x-4 { - column-gap: 1rem; -} -.gap-y-16 { - row-gap: 4rem; -} -.gap-y-2 { - row-gap: 0.5rem; +.gap-4 { + gap: 1rem; } .gap-y-4 { row-gap: 1rem; @@ -1517,123 +1111,106 @@ exports[`template > correctly outputs style blocks for welcome.vue 1`] = ` .border { border-width: 1px; } -.border-t { - border-top-width: 1px; +.border-\\[\\#00DC42\\]\\/50 { + border-color: #00dc4280; +} +.border-\\[\\#00DC82\\] { + --un-border-opacity: 1; + border-color: rgb(0 220 130 / var(--un-border-opacity)); } .border-gray-200 { --un-border-opacity: 1; border-color: rgb(224 224 224 / var(--un-border-opacity)); } -.hover\\:border-transparent:hover { - border-color: transparent; +.border-green-600\\/10 { + border-color: #00bb6a1a; +} +.border-green-600\\/20 { + border-color: #00bb6a33; +} +.hover\\:border-\\[\\#00DC82\\]:hover { + --un-border-opacity: 1; + border-color: rgb(0 220 130 / var(--un-border-opacity)); } .rounded { border-radius: 0.25rem; } -.rounded-xl { - border-radius: 0.75rem; +.rounded-lg { + border-radius: 0.5rem; } -.bg-gray-100 { +.bg-\\[\\#00DC42\\]\\/10 { + background-color: #00dc421a; +} +.bg-\\[\\#00DC82\\]\\/5 { + background-color: #00dc820d; +} +.bg-gray-50\\/10 { + background-color: #f5f5f51a; +} +.bg-green-50 { --un-bg-opacity: 1; - background-color: rgb(238 238 238 / var(--un-bg-opacity)); + background-color: rgb(208 252 222 / var(--un-bg-opacity)); } .bg-white { --un-bg-opacity: 1; background-color: rgb(255 255 255 / var(--un-bg-opacity)); } -.from-blue-400 { - --un-gradient-from-position: 0%; - --un-gradient-from: rgb(96 165 250 / var(--un-from-opacity, 1)) - var(--un-gradient-from-position); - --un-gradient-to-position: 100%; - --un-gradient-to: rgb(96 165 250 / 0) var(--un-gradient-to-position); - --un-gradient-stops: var(--un-gradient-from), var(--un-gradient-to); -} -.from-green-400 { - --un-gradient-from-position: 0%; - --un-gradient-from: rgb(55 233 144 / var(--un-from-opacity, 1)) - var(--un-gradient-from-position); - --un-gradient-to-position: 100%; - --un-gradient-to: rgb(55 233 144 / 0) var(--un-gradient-to-position); - --un-gradient-stops: var(--un-gradient-from), var(--un-gradient-to); -} -.from-yellow-400 { - --un-gradient-from-position: 0%; - --un-gradient-from: rgb(250 204 21 / var(--un-from-opacity, 1)) - var(--un-gradient-from-position); - --un-gradient-to-position: 100%; - --un-gradient-to: rgb(250 204 21 / 0) var(--un-gradient-to-position); - --un-gradient-stops: var(--un-gradient-from), var(--un-gradient-to); -} -.to-transparent { - --un-gradient-to-position: 100%; - --un-gradient-to: transparent var(--un-gradient-to-position); -} -.bg-gradient-to-l { - --un-gradient-shape: to left; - --un-gradient: var(--un-gradient-shape), var(--un-gradient-stops); - background-image: linear-gradient(var(--un-gradient)); -} -.bg-gradient-to-r { - --un-gradient-shape: to right; - --un-gradient: var(--un-gradient-shape), var(--un-gradient-stops); - background-image: linear-gradient(var(--un-gradient)); -} .p-1 { padding: 0.25rem; } +.p-6 { + padding: 1.5rem; +} +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} .px-4 { padding-left: 1rem; padding-right: 1rem; } -.px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; } -.py-14 { - padding-top: 3.5rem; - padding-bottom: 3.5rem; +.text-\\[12px\\] { + font-size: 12px; } -.py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; -} -.pb-6 { - padding-bottom: 1.5rem; -} -.pt-\\[58px\\] { - padding-top: 58px; -} -.text-center { - text-align: center; -} -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} -.text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; +.text-base { + font-size: 1rem; + line-height: 1.5rem; } .text-sm { font-size: 0.875rem; line-height: 1.25rem; } -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} -.text-black { +.text-\\[\\#00DC82\\], +.group:hover .group-hover\\:text-\\[\\#00DC82\\] { --un-text-opacity: 1; - color: rgb(0 0 0 / var(--un-text-opacity)); + color: rgb(0 220 130 / var(--un-text-opacity)); +} +.text-\\[\\#020420\\] { + --un-text-opacity: 1; + color: rgb(2 4 32 / var(--un-text-opacity)); +} +.text-\\[\\#020420\\]\\/20 { + color: #02042033; +} +.text-gray-500 { + --un-text-opacity: 1; + color: rgb(117 117 117 / var(--un-text-opacity)); } .text-gray-700 { --un-text-opacity: 1; color: rgb(66 66 66 / var(--un-text-opacity)); } -.hover\\:text-black:hover { +.text-green-700 { --un-text-opacity: 1; - color: rgb(0 0 0 / var(--un-text-opacity)); + color: rgb(0 153 86 / var(--un-text-opacity)); +} +.hover\\:text-\\[\\#020420\\]:hover { + --un-text-opacity: 1; + color: rgb(2 4 32 / var(--un-text-opacity)); } .font-bold { font-weight: 700; @@ -1641,6 +1218,9 @@ exports[`template > correctly outputs style blocks for welcome.vue 1`] = ` .font-semibold { font-weight: 600; } +.leading-none { + line-height: 1; +} .font-mono { font-family: ui-monospace, @@ -1666,139 +1246,120 @@ exports[`template > correctly outputs style blocks for welcome.vue 1`] = ` box-shadow: var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow); } -.transition-opacity { - transition-property: opacity; +.transition-all { + transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 0.15s; } -.duration-300 { - transition-duration: 0.3s; -} @media (prefers-color-scheme: dark) { - .dark\\:block { - display: block; + .dark\\:border-\\[\\#00DC82\\]\\/50 { + border-color: #00dc8280; } - .dark\\:hidden { - display: none; + .dark\\:border-\\[\\#00DC82\\]\\/80, + .group:hover .group-hover\\:dark\\:border-\\[\\#00DC82\\]\\/80 { + border-color: #00dc82cc; } - .dark\\:border-gray-900 { + .dark\\:border-white\\/10 { + border-color: #ffffff1a; + } + .dark\\:border-white\\/20 { + border-color: #fff3; + } + .hover\\:dark\\:border-\\[\\#00DC82\\]:hover { --un-border-opacity: 1; - border-color: rgb(24 24 27 / var(--un-border-opacity)); + border-color: rgb(0 220 130 / var(--un-border-opacity)); } - .dark\\:border-transparent { - border-color: transparent; - } - .dark\\:border-none { - border-style: none; - } - .dark\\:bg-black { + .dark\\:bg-\\[\\#020420\\] { --un-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--un-bg-opacity)); + background-color: rgb(2 4 32 / var(--un-bg-opacity)); } - .dark\\:bg-gray-900 { - --un-bg-opacity: 1; - background-color: rgb(24 24 27 / var(--un-bg-opacity)); + .dark\\:bg-white\\/5 { + background-color: #ffffff0d; } - .dark\\:bg-white\\/10 { - background-color: #ffffff1a; - } - .dark\\:text-gray-300 { + .dark\\:text-\\[\\#00DC82\\] { --un-text-opacity: 1; - color: rgb(189 189 189 / var(--un-text-opacity)); + color: rgb(0 220 130 / var(--un-text-opacity)); + } + .dark\\:text-gray-200 { + --un-text-opacity: 1; + color: rgb(224 224 224 / var(--un-text-opacity)); + } + .dark\\:text-gray-400 { + --un-text-opacity: 1; + color: rgb(158 158 158 / var(--un-text-opacity)); + } + .dark\\:text-white { + --un-text-opacity: 1; + color: rgb(255 255 255 / var(--un-text-opacity)); + } + .dark\\:text-white\\/40 { + color: #fff6; } - .dark\\:text-white, .dark\\:hover\\:text-white:hover { --un-text-opacity: 1; color: rgb(255 255 255 / var(--un-text-opacity)); } + .group:hover .group-hover\\:dark\\:text-gray-100 { + --un-text-opacity: 1; + color: rgb(238 238 238 / var(--un-text-opacity)); + } } @media (min-width: 640px) { - .sm\\:col-span-1 { - grid-column: span 1 / span 1; + .sm\\:col-span-2 { + grid-column: span 2 / span 2; } - .sm\\:h-34 { - height: 8.5rem; + .sm\\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); } - .sm\\:min-h-\\[220px\\] { - min-height: 220px; + .sm\\:mb-0 { + margin-bottom: 0; } - .sm\\:flex-row { - flex-direction: row; + .sm\\:mt-0 { + margin-top: 0; } - .sm\\:justify-between { - justify-content: space-between; + .sm\\:mt-10 { + margin-top: 2.5rem; } - .sm\\:px-28 { - padding-left: 7rem; - padding-right: 7rem; + .sm\\:mt-6 { + margin-top: 1.5rem; + } + .sm\\:h-12 { + height: 3rem; + } + .sm\\:gap-6 { + gap: 1.5rem; + } + .sm\\:px-2\\.5 { + padding-left: 0.625rem; + padding-right: 0.625rem; } .sm\\:px-6 { padding-left: 1.5rem; padding-right: 1.5rem; } - .sm\\:text-5xl { - font-size: 3rem; - line-height: 1; + .sm\\:py-1\\.5 { + padding-top: 0.375rem; + padding-bottom: 0.375rem; + } + .sm\\:text-\\[14px\\] { + font-size: 14px; } .sm\\:text-base { font-size: 1rem; line-height: 1.5rem; } } -@media (min-width: 768px) { - .md\\:min-h-\\[180px\\] { - min-height: 180px; - } -} @media (min-width: 1024px) { - .lg\\:order-none { - order: 0; - } - .lg\\:col-span-10 { - grid-column: span 10 / span 10; - } - .lg\\:col-span-4 { - grid-column: span 4 / span 4; - } - .lg\\:col-span-6 { - grid-column: span 6 / span 6; - } - .lg\\:grid-cols-10 { - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - .lg\\:min-h-min { - min-height: min-content; - } - .lg\\:flex-col { - flex-direction: column; - } .lg\\:px-8 { padding-left: 2rem; padding-right: 2rem; } - .lg\\:py-7 { - padding-top: 1.75rem; - padding-bottom: 1.75rem; - } } " `; exports[`template > correctly outputs style blocks for welcome.vue 2`] = ` -"@property --gradient-angle { - syntax: ""; - inherits: false; - initial-value: 180deg; -} -@keyframes gradient-rotate { - 0% { - --gradient-angle: 0deg; - } - 100% { - --gradient-angle: 360deg; - } -} -*, +"*, :before, :after { box-sizing: border-box; @@ -1831,9 +1392,7 @@ body { margin: 0; line-height: inherit; } -h1, -h2, -h3 { +h2 { font-size: inherit; font-weight: inherit; } @@ -1841,9 +1400,7 @@ a { color: inherit; text-decoration: inherit; } -h1, h2, -h3, p { margin: 0; } @@ -1852,15 +1409,10 @@ ul { margin: 0; padding: 0; } -img, svg { display: block; vertical-align: middle; } -img { - max-width: 100%; - height: auto; -} *, :before, :after { diff --git a/packages/vite/package.json b/packages/vite/package.json index 8f29743898..45484c8e0a 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -27,45 +27,44 @@ "@nuxt/schema": "workspace:*", "@types/clear": "0.1.4", "@types/estree": "1.0.5", - "@types/fs-extra": "11.0.4", "rollup": "4.18.0", - "unbuild": "latest", - "vue": "3.4.29" + "unbuild": "3.0.0-rc.6", + "vue": "3.4.31" }, "dependencies": { "@nuxt/kit": "workspace:*", "@rollup/plugin-replace": "^5.0.7", - "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue": "^5.0.5", "@vitejs/plugin-vue-jsx": "^4.0.0", "autoprefixer": "^10.4.19", "clear": "^0.1.0", "consola": "^3.2.3", - "cssnano": "^7.0.2", + "cssnano": "^7.0.3", "defu": "^6.1.4", - "esbuild": "^0.21.5", + "esbuild": "^0.23.0", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "externality": "^1.0.2", - "fs-extra": "^11.2.0", "get-port-please": "^3.1.2", - "h3": "^1.11.1", + "h3": "npm:h3-nightly@2.0.0-1718872656.6765a6e", + "jiti": "^2.0.0-beta.3", "knitwork": "^1.1.0", "magic-string": "^0.30.10", "mlly": "^1.7.1", "ohash": "^1.1.3", "pathe": "^1.1.2", "perfect-debounce": "^1.0.0", - "pkg-types": "^1.1.1", - "postcss": "^8.4.38", + "pkg-types": "^1.1.3", + "postcss": "^8.4.39", "rollup-plugin-visualizer": "^5.12.0", "std-env": "^3.7.0", "strip-literal": "^2.1.0", "ufo": "^1.5.3", "unenv": "^1.9.0", - "unplugin": "^1.10.1", - "vite": "^5.3.1", + "unplugin": "^1.11.0", + "vite": "^5.3.3", "vite-node": "^1.6.0", - "vite-plugin-checker": "^0.6.4", + "vite-plugin-checker": "^0.7.0", "vue-bundle-renderer": "^2.1.0" }, "peerDependencies": { diff --git a/packages/vite/src/client.ts b/packages/vite/src/client.ts index 5ff1679549..e884b0628d 100644 --- a/packages/vite/src/client.ts +++ b/packages/vite/src/client.ts @@ -112,7 +112,7 @@ export async function buildClient (ctx: ViteBuildContext) { ...ctx.config.resolve?.alias, '#internal/nuxt/paths': resolve(ctx.nuxt.options.buildDir, 'paths.mjs'), '#build/plugins': resolve(ctx.nuxt.options.buildDir, 'plugins/client'), - '#internal/nitro': resolve(ctx.nuxt.options.buildDir, 'nitro.client.mjs'), + 'nitro/runtime': resolve(ctx.nuxt.options.buildDir, 'nitro.client.mjs'), }, dedupe: [ 'vue', @@ -139,6 +139,9 @@ export async function buildClient (ctx: ViteBuildContext) { ], appType: 'custom', server: { + warmup: { + clientFiles: [ctx.entry], + }, middlewareMode: true, }, } satisfies vite.InlineConfig, ctx.nuxt.options.vite.$client || {})) @@ -217,6 +220,7 @@ export async function buildClient (ctx: ViteBuildContext) { // Dev const viteServer = await vite.createServer(clientConfig) ctx.clientServer = viteServer + ctx.nuxt.hook('close', () => viteServer.close()) await ctx.nuxt.callHook('vite:serverCreated', viteServer, { isClient: true, isServer: false }) const transformHandler = viteServer.middlewares.stack.findIndex(m => m.handle instanceof Function && m.handle.name === 'viteTransformMiddleware') viteServer.middlewares.stack.splice(transformHandler, 0, { @@ -257,10 +261,6 @@ export async function buildClient (ctx: ViteBuildContext) { }) }) await ctx.nuxt.callHook('server:devHandler', viteMiddleware) - - ctx.nuxt.hook('close', async () => { - await viteServer.close() - }) } else { // Build logger.info('Building client...') diff --git a/packages/vite/src/css.ts b/packages/vite/src/css.ts index b5c4131140..6457c78e43 100644 --- a/packages/vite/src/css.ts +++ b/packages/vite/src/css.ts @@ -1,11 +1,14 @@ -import { requireModule } from '@nuxt/kit' -import type { Nuxt } from '@nuxt/schema' +import type { Nuxt, NuxtOptions } from '@nuxt/schema' import type { InlineConfig as ViteConfig } from 'vite' -import { distDir } from './dirs' +import type { Plugin } from 'postcss' +import { createJiti } from 'jiti' -const lastPlugins = ['autoprefixer', 'cssnano'] +function sortPlugins ({ plugins, order }: NuxtOptions['postcss']): string[] { + const names = Object.keys(plugins) + return typeof order === 'function' ? order(names) : (order || names) +} -export function resolveCSSOptions (nuxt: Nuxt): ViteConfig['css'] { +export async function resolveCSSOptions (nuxt: Nuxt): Promise { const css: ViteConfig['css'] & { postcss: NonNullable['postcss'], string>> } = { postcss: { plugins: [], @@ -13,20 +16,23 @@ export function resolveCSSOptions (nuxt: Nuxt): ViteConfig['css'] { } css.postcss.plugins = [] + const postcssOptions = nuxt.options.postcss - const plugins = Object.entries(nuxt.options.postcss.plugins) - .sort((a, b) => lastPlugins.indexOf(a[0]) - lastPlugins.indexOf(b[0])) + const jiti = createJiti(nuxt.options.rootDir, { + interopDefault: true, + alias: nuxt.options.alias, + }) - for (const [name, opts] of plugins) { - if (opts) { - // TODO: remove use of requireModule in favour of ESM import - const plugin = requireModule(name, { - paths: [ - ...nuxt.options.modulesDir, - distDir, - ], - }) - css.postcss.plugins.push(plugin(opts)) + for (const pluginName of sortPlugins(postcssOptions)) { + const pluginOptions = postcssOptions.plugins[pluginName] + if (!pluginOptions) { continue } + + const path = jiti.esmResolve(pluginName) + const pluginFn = (await jiti.import(path)) as (opts: Record) => Plugin + if (typeof pluginFn === 'function') { + css.postcss.plugins.push(pluginFn(pluginOptions)) + } else { + console.warn(`[nuxt] could not import postcss plugin \`${pluginName}\`. Please report this as a bug.`) } } diff --git a/packages/vite/src/dev-bundler.ts b/packages/vite/src/dev-bundler.ts deleted file mode 100644 index e2d970b524..0000000000 --- a/packages/vite/src/dev-bundler.ts +++ /dev/null @@ -1,265 +0,0 @@ -import { pathToFileURL } from 'node:url' -import { existsSync } from 'node:fs' -import { builtinModules } from 'node:module' -import { isAbsolute, normalize, resolve } from 'pathe' -import type * as vite from 'vite' -import type { isExternal } from 'externality' -import { genDynamicImport, genObjectFromRawEntries } from 'knitwork' -import fse from 'fs-extra' -import { debounce } from 'perfect-debounce' -import { isIgnored, logger } from '@nuxt/kit' -import { hashId, isCSS, uniq } from './utils' -import { createIsExternal } from './utils/external' -import { writeManifest } from './manifest' -import type { ViteBuildContext } from './vite' - -interface TransformChunk { - id: string - code: string - deps: string[] - parents: string[] -} - -interface SSRTransformResult { - code: string - map: object - deps: string[] - dynamicDeps: string[] -} - -interface TransformOptions { - viteServer: vite.ViteDevServer - isExternal(id: string): ReturnType -} - -async function transformRequest (opts: TransformOptions, id: string) { - // Virtual modules start with `\0` - if (id && id.startsWith('/@id/__x00__')) { - id = '\0' + id.slice('/@id/__x00__'.length) - } - if (id && id.startsWith('/@id/')) { - id = id.slice('/@id/'.length) - } - if (id && !id.startsWith('/@fs/') && id.startsWith('/')) { - // Relative to the root directory - const resolvedPath = resolve(opts.viteServer.config.root, '.' + id) - if (existsSync(resolvedPath)) { - id = resolvedPath - } - } - - // On Windows, we prefix absolute paths with `/@fs/` to skip node resolution algorithm - id = id.replace(/^\/?(?=\w:)/, '/@fs/') - - // Remove query and @fs/ for external modules - const externalId = id.replace(/\?v=\w+$|^\/@fs/, '') - - if (await opts.isExternal(externalId)) { - const path = builtinModules.includes(externalId.split('node:').pop()!) - ? externalId - : isAbsolute(externalId) ? pathToFileURL(externalId).href : externalId - return { - code: `(global, module, _, exports, importMeta, ssrImport, ssrDynamicImport, ssrExportAll) => -${genDynamicImport(path, { wrapper: false })} - .then(r => { - if (r.default && r.default.__esModule) - r = r.default - exports.default = r.default - ssrExportAll(r) - }) - .catch(e => { - console.error(e) - throw new Error(${JSON.stringify(`[vite dev] Error loading external "${id}".`)}) - })`, - deps: [], - dynamicDeps: [], - } - } - - // Transform - const res: SSRTransformResult = await opts.viteServer.transformRequest(id, { ssr: true }).catch((err) => { - logger.warn(`[SSR] Error transforming ${id}:`, err) - // console.error(err) - }) as SSRTransformResult || { code: '', map: {}, deps: [], dynamicDeps: [] } - - // Wrap into a vite module - const code = `async function (global, module, exports, __vite_ssr_exports__, __vite_ssr_import_meta__, __vite_ssr_import__, __vite_ssr_dynamic_import__, __vite_ssr_exportAll__) { -${res.code || '/* empty */'}; -}` - return { code, deps: res.deps || [], dynamicDeps: res.dynamicDeps || [] } -} - -async function transformRequestRecursive (opts: TransformOptions, id: string, parent = '', chunks: Record = {}) { - if (chunks[id]) { - chunks[id].parents.push(parent) - return - } - const res = await transformRequest(opts, id) - const deps = uniq([...res.deps, ...res.dynamicDeps]) - - chunks[id] = { - id, - code: res.code, - deps, - parents: [parent], - } as TransformChunk - for (const dep of deps) { - await transformRequestRecursive(opts, dep, id, chunks) - } - return Object.values(chunks) -} - -async function bundleRequest (opts: TransformOptions, entryURL: string) { - const chunks = (await transformRequestRecursive(opts, entryURL))! - - const listIds = (ids: string[]) => ids.map(id => `// - ${id} (${hashId(id)})`).join('\n') - const chunksCode = chunks.map(chunk => ` -// -------------------- -// Request: ${chunk.id} -// Parents: \n${listIds(chunk.parents)} -// Dependencies: \n${listIds(chunk.deps)} -// -------------------- -const ${hashId(chunk.id + '-' + chunk.code)} = ${chunk.code} -`).join('\n') - - const manifestCode = `const __modules__ = ${ - genObjectFromRawEntries(chunks.map(chunk => [chunk.id, hashId(chunk.id + '-' + chunk.code)])) - }` - - // https://github.com/vitejs/vite/blob/main/packages/vite/src/node/ssr/ssrModuleLoader.ts - const ssrModuleLoader = ` -const __pendingModules__ = new Map() -const __pendingImports__ = new Map() -const __ssrContext__ = { global: globalThis } - -function __ssrLoadModule__(url, urlStack = []) { - const pendingModule = __pendingModules__.get(url) - if (pendingModule) { return pendingModule } - const modulePromise = __instantiateModule__(url, urlStack) - __pendingModules__.set(url, modulePromise) - modulePromise.catch(() => { __pendingModules__.delete(url) }) - .finally(() => { __pendingModules__.delete(url) }) - return modulePromise -} - -async function __instantiateModule__(url, urlStack) { - const mod = __modules__[url] - if (mod.stubModule) { return mod.stubModule } - const stubModule = { [Symbol.toStringTag]: 'Module' } - Object.defineProperty(stubModule, '__esModule', { value: true }) - mod.stubModule = stubModule - // https://vitejs.dev/guide/api-hmr.html - const importMeta = { url, hot: { accept() {}, prune() {}, dispose() {}, invalidate() {}, decline() {}, on() {} } } - urlStack = urlStack.concat(url) - const isCircular = url => urlStack.includes(url) - const pendingDeps = [] - const ssrImport = async (dep) => { - // TODO: Handle externals if dep[0] !== '.' | '/' - if (!isCircular(dep) && !__pendingImports__.get(dep)?.some(isCircular)) { - pendingDeps.push(dep) - if (pendingDeps.length === 1) { - __pendingImports__.set(url, pendingDeps) - } - await __ssrLoadModule__(dep, urlStack) - if (pendingDeps.length === 1) { - __pendingImports__.delete(url) - } else { - pendingDeps.splice(pendingDeps.indexOf(dep), 1) - } - } - return __modules__[dep].stubModule - } - function ssrDynamicImport (dep) { - // TODO: Handle dynamic import starting with . relative to url - return ssrImport(dep) - } - - function ssrExportAll(sourceModule) { - for (const key in sourceModule) { - if (key !== 'default') { - try { - Object.defineProperty(stubModule, key, { - enumerable: true, - configurable: true, - get() { return sourceModule[key] } - }) - } catch (_err) { } - } - } - } - - const cjsModule = { - get exports () { - return stubModule.default - }, - set exports (v) { - stubModule.default = v - }, - } - - await mod( - __ssrContext__.global, - cjsModule, - stubModule.default, - stubModule, - importMeta, - ssrImport, - ssrDynamicImport, - ssrExportAll - ) - - return stubModule -} -` - - const code = [ - chunksCode, - manifestCode, - ssrModuleLoader, - `export default await __ssrLoadModule__(${JSON.stringify(entryURL)})`, - ].join('\n\n') - - return { - code, - ids: chunks.map(i => i.id), - } -} - -export async function initViteDevBundler (ctx: ViteBuildContext, onBuild: () => Promise) { - const viteServer = ctx.ssrServer! - const options: TransformOptions = { - viteServer, - isExternal: createIsExternal(viteServer, ctx.nuxt.options.rootDir, ctx.nuxt.options.modulesDir), - } - - // Build and watch - const _doBuild = async () => { - const start = Date.now() - const { code, ids } = await bundleRequest(options, ctx.entry) - await fse.writeFile(resolve(ctx.nuxt.options.buildDir, 'dist/server/server.mjs'), code, 'utf-8') - // Have CSS in the manifest to prevent FOUC on dev SSR - const manifestIds: string[] = [] - for (const i of ids) { - if (isCSS(i)) { - manifestIds.push(i.slice(1)) - } - } - await writeManifest(ctx, manifestIds) - const time = (Date.now() - start) - logger.success(`Vite server built in ${time}ms`) - await onBuild() - } - const doBuild = debounce(_doBuild) - - // Initial build - await _doBuild() - - // Watch - viteServer.watcher.on('all', (_event, file) => { - file = normalize(file) // Fix windows paths - if (file.indexOf(ctx.nuxt.options.buildDir) === 0 || isIgnored(file)) { return } - doBuild() - }) - // ctx.nuxt.hook('builder:watch', () => doBuild()) - ctx.nuxt.hook('app:templatesGenerated', () => doBuild()) -} diff --git a/packages/vite/src/index.ts b/packages/vite/src/index.ts index e231088a10..47caa745e4 100644 --- a/packages/vite/src/index.ts +++ b/packages/vite/src/index.ts @@ -1 +1,2 @@ -export * from './vite' +export { bundle } from './vite' +export type { ViteBuildContext } from './vite' diff --git a/packages/vite/src/manifest.ts b/packages/vite/src/manifest.ts index 54471633ec..067027513e 100644 --- a/packages/vite/src/manifest.ts +++ b/packages/vite/src/manifest.ts @@ -1,36 +1,19 @@ -import fse from 'fs-extra' +import { readFileSync } from 'node:fs' +import { mkdir, rm, writeFile } from 'node:fs/promises' + import { relative, resolve } from 'pathe' import { withTrailingSlash, withoutLeadingSlash } from 'ufo' import escapeRE from 'escape-string-regexp' import { normalizeViteManifest } from 'vue-bundle-renderer' -import type { Manifest } from 'vue-bundle-renderer' import type { ViteBuildContext } from './vite' -export async function writeManifest (ctx: ViteBuildContext, css: string[] = []) { +export async function writeManifest (ctx: ViteBuildContext) { // Write client manifest for use in vue-bundle-renderer const clientDist = resolve(ctx.nuxt.options.buildDir, 'dist/client') const serverDist = resolve(ctx.nuxt.options.buildDir, 'dist/server') - const devClientManifest: Manifest = { - '@vite/client': { - isEntry: true, - file: '@vite/client', - css, - module: true, - resourceType: 'script', - }, - [ctx.entry]: { - isEntry: true, - file: ctx.entry, - module: true, - resourceType: 'script', - }, - } - const manifestFile = resolve(clientDist, 'manifest.json') - const clientManifest = ctx.nuxt.options.dev - ? devClientManifest - : await fse.readJSON(manifestFile) + const clientManifest = JSON.parse(readFileSync(manifestFile, 'utf-8')) const buildAssetsDir = withTrailingSlash(withoutLeadingSlash(ctx.nuxt.options.app.buildAssetsDir)) const BASE_RE = new RegExp(`^${escapeRE(buildAssetsDir)}`) @@ -47,7 +30,7 @@ export async function writeManifest (ctx: ViteBuildContext, css: string[] = []) } } - await fse.mkdirp(serverDist) + await mkdir(serverDist, { recursive: true }) if (ctx.config.build?.cssCodeSplit === false) { for (const key in clientManifest as Record) { @@ -64,10 +47,10 @@ export async function writeManifest (ctx: ViteBuildContext, css: string[] = []) const manifest = normalizeViteManifest(clientManifest) await ctx.nuxt.callHook('build:manifest', manifest) const stringifiedManifest = JSON.stringify(manifest, null, 2) - await fse.writeFile(resolve(serverDist, 'client.manifest.json'), stringifiedManifest, 'utf8') - await fse.writeFile(resolve(serverDist, 'client.manifest.mjs'), 'export default ' + stringifiedManifest, 'utf8') + await writeFile(resolve(serverDist, 'client.manifest.json'), stringifiedManifest, 'utf8') + await writeFile(resolve(serverDist, 'client.manifest.mjs'), 'export default ' + stringifiedManifest, 'utf8') if (!ctx.nuxt.options.dev) { - await fse.rm(manifestFile, { force: true }) + await rm(manifestFile, { force: true }) } } diff --git a/packages/vite/src/plugins/analyze.ts b/packages/vite/src/plugins/analyze.ts index ddb923f244..edecf536c7 100644 --- a/packages/vite/src/plugins/analyze.ts +++ b/packages/vite/src/plugins/analyze.ts @@ -16,10 +16,10 @@ export function analyzePlugin (ctx: ViteBuildContext): Plugin[] { async generateBundle (_opts, outputBundle) { for (const _bundleId in outputBundle) { const bundle = outputBundle[_bundleId] - if (bundle.type !== 'chunk') { continue } + if (!bundle || bundle.type !== 'chunk') { continue } const minifiedModuleEntryPromises: Array> = [] for (const moduleId in bundle.modules) { - const module = bundle.modules[moduleId] + const module = bundle.modules[moduleId]! minifiedModuleEntryPromises.push( transform(module.code || '', { minify: true }) .then(result => [moduleId, { ...module, code: result.code }]), diff --git a/packages/vite/src/plugins/composable-keys.ts b/packages/vite/src/plugins/composable-keys.ts index af967c9eb7..0b6e897f15 100644 --- a/packages/vite/src/plugins/composable-keys.ts +++ b/packages/vite/src/plugins/composable-keys.ts @@ -17,7 +17,7 @@ interface ComposableKeysOptions { composables: Array<{ name: string, source?: string | RegExp, argumentLength: number }> } -const stringTypes = ['Literal', 'TemplateLiteral'] +const stringTypes: Array = ['Literal', 'TemplateLiteral'] const NUXT_LIB_RE = /node_modules\/(?:nuxt|nuxt3|nuxt-nightly)\// const SUPPORTED_EXT_RE = /\.(?:m?[jt]sx?|vue)/ @@ -182,7 +182,7 @@ class ScopeTracker { leaveScope () { this.scopeIndexStack.pop() this.curScopeKey = this.getKey() - this.scopeIndexStack[this.scopeIndexStack.length - 1]++ + this.scopeIndexStack[this.scopeIndexStack.length - 1]!++ } } @@ -255,9 +255,9 @@ export function detectImportNames (code: string, composableMeta: Record = {} + const cssMap: Record = {} const idRefMap: Record = {} const relativeToSrcDir = (path: string) => relative(options.srcDir, path) @@ -63,7 +63,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { const emitted: Record = {} for (const file in cssMap) { - const { files, inBundle } = cssMap[file] + const { files, inBundle } = cssMap[file]! // File has been tree-shaken out of build (or there are no styles to inline) if (!files.length || !inBundle) { continue } const fileName = filename(file) @@ -115,18 +115,19 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { // 'Teleport' CSS chunks that made it into the bundle on the client side // to be inlined on server rendering if (options.mode === 'client') { - options.clientCSSMap[moduleId] ||= new Set() + const moduleMap = options.clientCSSMap[moduleId] ||= new Set() if (isCSS(moduleId)) { // Vue files can (also) be their own entrypoints as they are tracked separately if (isVue(moduleId)) { - options.clientCSSMap[moduleId].add(moduleId) + moduleMap.add(moduleId) const parent = moduleId.replace(/\?.+$/, '') - options.clientCSSMap[parent] ||= new Set() - options.clientCSSMap[parent].add(moduleId) + const parentMap = options.clientCSSMap[parent] ||= new Set() + parentMap.add(moduleId) } // This is required to track CSS in entry chunk - if (isEntry) { - options.clientCSSMap[chunk.facadeModuleId!].add(moduleId) + if (isEntry && chunk.facadeModuleId) { + const facadeMap = options.clientCSSMap[chunk.facadeModuleId] ||= new Set() + facadeMap.add(moduleId) } } continue @@ -134,7 +135,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { const relativePath = relativeToSrcDir(moduleId) if (relativePath in cssMap) { - cssMap[relativePath].inBundle = cssMap[relativePath].inBundle ?? ((isVue(moduleId) && relativeToSrcDir(moduleId)) || isEntry) + cssMap[relativePath]!.inBundle = cssMap[relativePath]!.inBundle ?? ((isVue(moduleId) && !!relativeToSrcDir(moduleId)) || isEntry) } } @@ -146,7 +147,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { // or include it here in the client build so it is emitted in the CSS. if (id === options.entry && (options.shouldInline === true || (typeof options.shouldInline === 'function' && options.shouldInline(id)))) { const s = new MagicString(code) - options.clientCSSMap[id] ||= new Set() + const idClientCSSMap = options.clientCSSMap[id] ||= new Set() if (!options.globalCSS.length) { return } for (const file of options.globalCSS) { @@ -160,7 +161,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { s.prepend(`${genImport(file)}\n`) continue } - options.clientCSSMap[id].add(resolved.id) + idClientCSSMap.add(resolved.id) } if (s.hasChanged()) { return { @@ -184,7 +185,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { } const relativeId = relativeToSrcDir(id) - cssMap[relativeId] = cssMap[relativeId] || { files: [] } + const idMap = cssMap[relativeId] ||= { files: [] } const emittedIds = new Set() @@ -208,7 +209,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { }) idRefMap[relativeToSrcDir(file)] = ref - cssMap[relativeId].files.push(ref) + idMap.files.push(ref) } if (!SUPPORTED_FILES_RE.test(pathname)) { return } @@ -235,7 +236,7 @@ export function ssrStylesPlugin (options: SSRStylePluginOptions): Plugin { }) idRefMap[relativeToSrcDir(resolved.id)] = ref - cssMap[relativeId].files.push(ref) + idMap.files.push(ref) } }, } diff --git a/packages/vite/src/plugins/type-check.ts b/packages/vite/src/plugins/type-check.ts index 0ca1d4df85..f875187fc4 100644 --- a/packages/vite/src/plugins/type-check.ts +++ b/packages/vite/src/plugins/type-check.ts @@ -9,7 +9,7 @@ export function typeCheckPlugin (options: { sourcemap?: boolean } = {}): Plugin name: 'nuxt:type-check', configResolved (config) { const input = config.build.rollupOptions.input - if (input && typeof input !== 'string' && !Array.isArray(input)) { + if (input && typeof input !== 'string' && !Array.isArray(input) && input.entry) { entry = input.entry } }, diff --git a/packages/vite/src/plugins/virtual.ts b/packages/vite/src/plugins/virtual.ts index c1887a7873..723958a6e7 100644 --- a/packages/vite/src/plugins/virtual.ts +++ b/packages/vite/src/plugins/virtual.ts @@ -39,7 +39,7 @@ export default function virtual (vfs: Record): Plugin { const idNoPrefix = id.slice(PREFIX.length) if (idNoPrefix in vfs) { return { - code: vfs[idNoPrefix], + code: vfs[idNoPrefix] || '', map: null, } } diff --git a/packages/vite/src/server.ts b/packages/vite/src/server.ts index af87239aa2..85b3603223 100644 --- a/packages/vite/src/server.ts +++ b/packages/vite/src/server.ts @@ -61,7 +61,7 @@ export async function buildServer (ctx: ViteBuildContext) { }, ssr: { external: [ - '#internal/nitro', '#internal/nitro/utils', + 'nitro/runtime', ], noExternal: [ ...transpile({ isServer: true, isDev: ctx.nuxt.options.dev }), @@ -80,7 +80,7 @@ export async function buildServer (ctx: ViteBuildContext) { ssr: true, rollupOptions: { input: { server: entry }, - external: ['#internal/nitro', '#internal/nuxt/paths'], + external: ['nitro/runtime', '#internal/nuxt/paths', '#internal/nuxt/app-config'], output: { entryFileNames: '[name].mjs', format: 'module', @@ -97,6 +97,9 @@ export async function buildServer (ctx: ViteBuildContext) { }, }, server: { + warmup: { + ssrFiles: [ctx.entry], + }, // https://github.com/vitest-dev/vitest/issues/229#issuecomment-1002685027 preTransformRequests: false, hmr: false, @@ -104,8 +107,8 @@ export async function buildServer (ctx: ViteBuildContext) { } satisfies vite.InlineConfig, ctx.nuxt.options.vite.$server || {})) if (!ctx.nuxt.options.dev) { - const nitroDependencies = await tryResolveModule('nitropack/package.json', ctx.nuxt.options.modulesDir) - .then(r => import(r!)).then(r => r.dependencies ? Object.keys(r.dependencies) : []).catch(() => []) + const nitroDependencies = await tryResolveModule('nitro/runtime/meta', ctx.nuxt.options.modulesDir) + .then(r => import(r!)).then(r => r.runtimeDependencies || []).catch(() => []) if (Array.isArray(serverConfig.ssr!.external)) { serverConfig.ssr!.external.push( // explicit dependencies we use in our ssr renderer - these can be inlined (if necessary) in the nitro build @@ -143,9 +146,6 @@ export async function buildServer (ctx: ViteBuildContext) { return } - // Write dev client manifest - await writeManifest(ctx) - if (!ctx.nuxt.options.ssr) { await onBuild() return @@ -155,18 +155,13 @@ export async function buildServer (ctx: ViteBuildContext) { const viteServer = await vite.createServer(serverConfig) ctx.ssrServer = viteServer - await ctx.nuxt.callHook('vite:serverCreated', viteServer, { isClient: false, isServer: true }) - // Close server on exit ctx.nuxt.hook('close', () => viteServer.close()) + await ctx.nuxt.callHook('vite:serverCreated', viteServer, { isClient: false, isServer: true }) + // Initialize plugins await viteServer.pluginContainer.buildStart({}) - if (ctx.config.devBundler !== 'legacy') { - await initViteNodeServer(ctx) - } else { - logger.info('Vite server using legacy server bundler...') - await import('./dev-bundler').then(r => r.initViteDevBundler(ctx, onBuild)) - } + await initViteNodeServer(ctx) } diff --git a/packages/vite/src/utils/index.ts b/packages/vite/src/utils/index.ts index c667b96b20..9221d70278 100644 --- a/packages/vite/src/utils/index.ts +++ b/packages/vite/src/utils/index.ts @@ -1,11 +1,5 @@ -import { hash } from 'ohash' - export { isVue } from '../../../nuxt/src/core/utils/plugins' -export function uniq (arr: T[]): T[] { - return Array.from(new Set(arr)) -} - // Copied from vue-bundle-renderer utils const IS_CSS_RE = /\.(?:css|scss|sass|postcss|pcss|less|stylus|styl)(?:\?[^.]+)?$/ @@ -13,10 +7,6 @@ export function isCSS (file: string) { return IS_CSS_RE.test(file) } -export function hashId (id: string) { - return '$id_' + hash(id) -} - export function matchWithStringOrRegex (value: string, matcher: string | RegExp) { if (typeof matcher === 'string') { return value === matcher diff --git a/packages/vite/src/utils/transpile.ts b/packages/vite/src/utils/transpile.ts index 8c60c1776a..8e9e2eb9da 100644 --- a/packages/vite/src/utils/transpile.ts +++ b/packages/vite/src/utils/transpile.ts @@ -10,7 +10,7 @@ interface Envs { export function transpile (envs: Envs): Array { const nuxt = useNuxt() - const transpile: Array = [] + const transpile: RegExp[] = [] for (let pattern of nuxt.options.build.transpile) { if (typeof pattern === 'function') { diff --git a/packages/vite/src/utils/wpfs.ts b/packages/vite/src/utils/wpfs.ts deleted file mode 100644 index 5538f0bf7e..0000000000 --- a/packages/vite/src/utils/wpfs.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { join } from 'pathe' -import fse from 'fs-extra' - -export const wpfs = { - ...fse, - join, -} as typeof fse & { join: typeof join } diff --git a/packages/vite/src/vite-node.ts b/packages/vite/src/vite-node.ts index 8bbbe98ed0..db6768a8c6 100644 --- a/packages/vite/src/vite-node.ts +++ b/packages/vite/src/vite-node.ts @@ -1,11 +1,12 @@ +import { mkdir, writeFile } from 'node:fs/promises' import { pathToFileURL } from 'node:url' import { createApp, createError, defineEventHandler, defineLazyEventHandler, eventHandler, toNodeListener } from 'h3' import { ViteNodeServer } from 'vite-node/server' -import fse from 'fs-extra' -import { isAbsolute, normalize, resolve } from 'pathe' +import { isAbsolute, join, normalize, resolve } from 'pathe' import { addDevServerHandler } from '@nuxt/kit' import { isFileServingAllowed } from 'vite' import type { ModuleNode, Plugin as VitePlugin } from 'vite' +import { getQuery } from 'ufo' import { normalizeViteManifest } from 'vue-bundle-renderer' import { resolve as resolveModule } from 'mlly' import { distDir } from './dirs' @@ -78,13 +79,23 @@ export function registerViteNodeMiddleware (ctx: ViteBuildContext) { } function getManifest (ctx: ViteBuildContext) { - const css = Array.from(ctx.ssrServer!.moduleGraph.urlToModuleMap.keys()) - .filter(i => isCSS(i)) + const css = new Set() + for (const key of ctx.ssrServer!.moduleGraph.urlToModuleMap.keys()) { + if (isCSS(key)) { + const query = getQuery(key) + if ('raw' in query) { continue } + const importers = ctx.ssrServer!.moduleGraph.urlToModuleMap.get(key)?.importers + if (importers && [...importers].every(i => i.id && 'raw' in getQuery(i.id))) { + continue + } + css.add(key) + } + } const manifest = normalizeViteManifest({ '@vite/client': { file: '@vite/client', - css, + css: [...css], module: true, isEntry: true, }, @@ -181,11 +192,13 @@ export async function initViteNodeServer (ctx: ViteBuildContext) { const serverResolvedPath = resolve(distDir, 'runtime/vite-node.mjs') const manifestResolvedPath = resolve(distDir, 'runtime/client.manifest.mjs') - await fse.writeFile( + await mkdir(join(ctx.nuxt.options.buildDir, 'dist/server'), { recursive: true }) + + await writeFile( resolve(ctx.nuxt.options.buildDir, 'dist/server/server.mjs'), `export { default } from ${JSON.stringify(pathToFileURL(serverResolvedPath).href)}`, ) - await fse.writeFile( + await writeFile( resolve(ctx.nuxt.options.buildDir, 'dist/server/client.manifest.mjs'), `export { default } from ${JSON.stringify(pathToFileURL(manifestResolvedPath).href)}`, ) diff --git a/packages/vite/src/vite.ts b/packages/vite/src/vite.ts index b19b29ba0f..ee8e33f09a 100644 --- a/packages/vite/src/vite.ts +++ b/packages/vite/src/vite.ts @@ -2,7 +2,7 @@ import { existsSync } from 'node:fs' import * as vite from 'vite' import { dirname, join, normalize, resolve } from 'pathe' import type { Nuxt, NuxtBuilder, ViteConfig } from '@nuxt/schema' -import { addVitePlugin, isIgnored, logger, resolvePath } from '@nuxt/kit' +import { addVitePlugin, isIgnored, logger, resolvePath, useNitro } from '@nuxt/kit' import replace from '@rollup/plugin-replace' import type { RollupReplaceOptions } from '@rollup/plugin-replace' import { sanitizeFilePath } from 'mlly' @@ -19,6 +19,7 @@ import { composableKeysPlugin } from './plugins/composable-keys' import { logLevelMap } from './utils/logger' import { ssrStylesPlugin } from './plugins/ssr-styles' import { VitePublicDirsPlugin } from './plugins/public-dirs' +import { distDir } from './dirs' export interface ViteBuildContext { nuxt: Nuxt @@ -29,10 +30,11 @@ export interface ViteBuildContext { } export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { - const useAsyncEntry = nuxt.options.experimental.asyncEntry || - (nuxt.options.vite.devBundler === 'vite-node' && nuxt.options.dev) + const useAsyncEntry = nuxt.options.experimental.asyncEntry || nuxt.options.dev const entry = await resolvePath(resolve(nuxt.options.appDir, useAsyncEntry ? 'entry.async' : 'entry')) + nuxt.options.modulesDir.push(distDir) + let allowDirs = [ nuxt.options.appDir, nuxt.options.workspaceDir, @@ -42,8 +44,8 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { ...app.plugins.map(p => dirname(p.src)), ...app.middleware.map(m => dirname(m.path)), ...Object.values(app.layouts || {}).map(l => dirname(l.file)), - dirname(nuxt.apps.default.rootComponent!), - dirname(nuxt.apps.default.errorComponent!), + dirname(nuxt.apps.default!.rootComponent!), + dirname(nuxt.apps.default!.errorComponent!), ]), ].filter(d => d && existsSync(d)) @@ -72,7 +74,7 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { 'abort-controller': 'unenv/runtime/mock/empty', }, }, - css: resolveCSSOptions(nuxt), + css: await resolveCSSOptions(nuxt), define: { __NUXT_VERSION__: JSON.stringify(nuxt._version), __NUXT_ASYNC_CONTEXT__: nuxt.options.experimental.asyncContext, @@ -124,6 +126,7 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { ctx.config.build!.watch = undefined } + // TODO: this may no longer be needed with most recent vite version if (nuxt.options.dev) { // Identify which layers will need to have an extra resolve step. const layerDirs: string[] = [] @@ -134,17 +137,24 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { } } if (layerDirs.length > 0) { - ctx.config.plugins!.push({ - name: 'nuxt:optimize-layer-deps', - enforce: 'pre', - async resolveId (source, _importer) { - if (!_importer) { return } - const importer = normalize(_importer) - if (layerDirs.some(dir => importer.startsWith(dir))) { + // Reverse so longest/most specific directories are searched first + layerDirs.sort().reverse() + ctx.nuxt.hook('vite:extendConfig', (config) => { + const dirs = [...layerDirs] + config.plugins!.push({ + name: 'nuxt:optimize-layer-deps', + enforce: 'pre', + async resolveId (source, _importer) { + if (!_importer || !dirs.length) { return } + const importer = normalize(_importer) + const layerIndex = dirs.findIndex(dir => importer.startsWith(dir)) // Trigger vite to optimize dependencies imported within a layer, just as if they were imported in final project - await this.resolve(source, join(nuxt.options.srcDir, 'index.html'), { skipSelf: true }).catch(() => null) - } - }, + if (layerIndex !== -1) { + dirs.splice(layerIndex, 1) + await this.resolve(source, join(nuxt.options.srcDir, 'index.html'), { skipSelf: true }).catch(() => null) + } + }, + }) }) } } @@ -184,7 +194,7 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { clientCSSMap, chunksWithInlinedCSS, shouldInline: ctx.nuxt.options.features.inlineStyles, - components: ctx.nuxt.apps.default.components, + components: ctx.nuxt.apps.default!.components || [], globalCSS: ctx.nuxt.options.css, mode: isServer ? 'server' : 'client', entry: ctx.entry, @@ -194,7 +204,7 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { // Remove CSS entries for files that will have inlined styles ctx.nuxt.hook('build:manifest', (manifest) => { for (const key in manifest) { - const entry = manifest[key] + const entry = manifest[key]! const shouldRemoveCSS = chunksWithInlinedCSS.has(key) && !entry.isEntry if (entry.isEntry && chunksWithInlinedCSS.has(key)) { // @ts-expect-error internal key @@ -218,15 +228,27 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { }) if (nuxt.options.vite.warmupEntry !== false) { - const start = Date.now() - warmupViteServer(server, [ctx.entry], env.isServer) - .then(() => logger.info(`Vite ${env.isClient ? 'client' : 'server'} warmed up in ${Date.now() - start}ms`)) - .catch(logger.error) + // Don't delay nitro build for warmup + useNitro().hooks.hookOnce('compiled', () => { + const start = Date.now() + warmupViteServer(server, [ctx.entry], env.isServer) + .then(() => logger.info(`Vite ${env.isClient ? 'client' : 'server'} warmed up in ${Date.now() - start}ms`)) + .catch(logger.error) + }) } }) - await buildClient(ctx) - await buildServer(ctx) + await withLogs(() => buildClient(ctx), 'Vite client built', ctx.nuxt.options.dev) + await withLogs(() => buildServer(ctx), 'Vite server built', ctx.nuxt.options.dev) } const globalThisReplacements = Object.fromEntries([';', '(', '{', '}', ' ', '\t', '\n'].map(d => [`${d}global.`, `${d}globalThis.`])) + +async function withLogs (fn: () => Promise, message: string, enabled = true) { + if (!enabled) { return fn() } + + const start = performance.now() + await fn() + const duration = performance.now() - start + logger.success(`${message} in ${Math.round(duration)}ms`) +} diff --git a/packages/webpack/package.json b/packages/webpack/package.json index fb3159a845..f5dc7c1a9e 100644 --- a/packages/webpack/package.json +++ b/packages/webpack/package.json @@ -30,16 +30,18 @@ "autoprefixer": "^10.4.19", "css-loader": "^7.1.2", "css-minimizer-webpack-plugin": "^7.0.0", - "cssnano": "^7.0.2", + "cssnano": "^7.0.3", "defu": "^6.1.4", "esbuild-loader": "^4.2.0", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^9.0.2", - "fs-extra": "^11.2.0", - "h3": "^1.11.1", + "globby": "^14.0.2", + "h3": "npm:h3-nightly@2.0.0-1718872656.6765a6e", "hash-sum": "^2.0.0", + "jiti": "^2.0.0-beta.3", + "knitwork": "^1.1.0", "lodash-es": "4.17.21", "magic-string": "^0.30.10", "memfs": "^4.9.3", @@ -48,7 +50,7 @@ "ohash": "^1.1.3", "pathe": "^1.1.2", "pify": "^6.1.0", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "postcss-import": "^16.1.0", "postcss-import-resolver": "^2.0.0", "postcss-loader": "^8.1.1", @@ -58,11 +60,11 @@ "time-fix-plugin": "^2.0.7", "ufo": "^1.5.3", "unenv": "^1.9.0", - "unplugin": "^1.10.1", + "unplugin": "^1.11.0", "url-loader": "^4.1.1", "vue-bundle-renderer": "^2.1.0", "vue-loader": "^17.4.2", - "webpack": "^5.92.0", + "webpack": "^5.92.1", "webpack-bundle-analyzer": "^4.10.2", "webpack-dev-middleware": "^7.2.1", "webpack-hot-middleware": "^2.26.1", @@ -71,14 +73,14 @@ }, "devDependencies": { "@nuxt/schema": "workspace:*", - "@types/fs-extra": "11.0.4", "@types/hash-sum": "1.0.2", "@types/lodash-es": "4.17.12", "@types/pify": "5.0.4", "@types/webpack-bundle-analyzer": "4.7.0", "@types/webpack-hot-middleware": "2.25.9", - "unbuild": "latest", - "vue": "3.4.29" + "rollup": "4.18.0", + "unbuild": "3.0.0-rc.6", + "vue": "3.4.31" }, "peerDependencies": { "vue": "^3.3.4" diff --git a/packages/webpack/src/configs/client.ts b/packages/webpack/src/configs/client.ts index aeb6cb2fe3..e1bf00a5fd 100644 --- a/packages/webpack/src/configs/client.ts +++ b/packages/webpack/src/configs/client.ts @@ -11,11 +11,11 @@ import type { WebpackConfigContext } from '../utils/config' import { applyPresets } from '../utils/config' import { nuxt } from '../presets/nuxt' -export function client (ctx: WebpackConfigContext) { +export async function client (ctx: WebpackConfigContext) { ctx.name = 'client' ctx.isClient = true - applyPresets(ctx, [ + await applyPresets(ctx, [ nuxt, clientPlugins, clientOptimization, diff --git a/packages/webpack/src/configs/server.ts b/packages/webpack/src/configs/server.ts index 16ab572de3..e9a1738153 100644 --- a/packages/webpack/src/configs/server.ts +++ b/packages/webpack/src/configs/server.ts @@ -9,11 +9,11 @@ import { node } from '../presets/node' const assetPattern = /\.(?:css|s[ca]ss|png|jpe?g|gif|svg|woff2?|eot|ttf|otf|webp|webm|mp4|ogv)(?:\?.*)?$/i -export function server (ctx: WebpackConfigContext) { +export async function server (ctx: WebpackConfigContext) { ctx.name = 'server' ctx.isServer = true - applyPresets(ctx, [ + await applyPresets(ctx, [ nuxt, node, serverStandalone, @@ -53,9 +53,9 @@ function serverStandalone (ctx: WebpackConfigContext) { '#', ...ctx.options.build.transpile, ] - const external = ['#internal/nitro'] + const external = ['nitro/runtime'] if (!ctx.nuxt.options.dev) { - external.push('#internal/nuxt/paths') + external.push('#internal/nuxt/paths', '#internal/nuxt/app-config') } if (!Array.isArray(ctx.config.externals)) { return } diff --git a/packages/webpack/src/index.ts b/packages/webpack/src/index.ts index 85ec0d8398..400ffd47b7 100644 --- a/packages/webpack/src/index.ts +++ b/packages/webpack/src/index.ts @@ -1 +1 @@ -export * from './webpack' +export { bundle } from './webpack' diff --git a/packages/webpack/src/nitro/plugins/dynamic-require.ts b/packages/webpack/src/nitro/plugins/dynamic-require.ts new file mode 100644 index 0000000000..a8e3460e09 --- /dev/null +++ b/packages/webpack/src/nitro/plugins/dynamic-require.ts @@ -0,0 +1,128 @@ +import { pathToFileURL } from 'node:url' +import { globby } from 'globby' +import { genSafeVariableName } from 'knitwork' +import { resolve } from 'pathe' +import type { Plugin } from 'rollup' + +const PLUGIN_NAME = 'dynamic-require' +const HELPER_DYNAMIC = `\0${PLUGIN_NAME}.mjs` +const DYNAMIC_REQUIRE_RE = /import\("\.\/" ?\+(.*)\).then/g + +interface Options { + dir: string + inline: boolean + ignore: string[] + outDir?: string + prefix?: string +} + +interface Chunk { + id: string + src: string + name: string + meta?: { + id?: string + ids?: string[] + moduleIds?: string[] + } +} + +interface TemplateContext { + chunks: Chunk[] +} + +export function dynamicRequire ({ dir, ignore, inline }: Options): Plugin { + return { + name: PLUGIN_NAME, + transform (code: string, _id: string) { + return { + code: code.replace( + DYNAMIC_REQUIRE_RE, + `import('${HELPER_DYNAMIC}').then(r => r.default || r).then(dynamicRequire => dynamicRequire($1)).then`, + ), + map: null, + } + }, + resolveId (id: string) { + return id === HELPER_DYNAMIC ? id : null + }, + // TODO: Async chunk loading over network! + // renderDynamicImport () { + // return { + // left: 'fetch(', right: ')' + // } + // }, + async load (_id: string) { + if (_id !== HELPER_DYNAMIC) { + return null + } + + // Scan chunks + let files = [] + try { + const wpManifest = resolve(dir, './server.manifest.json') + files = await import(pathToFileURL(wpManifest).href).then(r => + Object.keys(r.files).filter(file => !ignore.includes(file)), + ) + } catch { + files = await globby('**/*.{cjs,mjs,js}', { + cwd: dir, + absolute: false, + ignore, + }) + } + + const chunks = ( + await Promise.all( + files.map(async id => ({ + id, + src: resolve(dir, id).replace(/\\/g, '/'), + name: genSafeVariableName(id), + meta: await getWebpackChunkMeta(resolve(dir, id)), + })), + ) + ).filter(chunk => chunk.meta) as Chunk[] + + return inline ? TMPL_INLINE({ chunks }) : TMPL_LAZY({ chunks }) + }, + } +} + +async function getWebpackChunkMeta (src: string) { + const chunk = await import(pathToFileURL(src).href).then( + r => r.default || r || {}, + ) + const { id, ids, modules } = chunk + if (!id && !ids) { + return null // Not a webpack chunk + } + return { + id, + ids, + moduleIds: Object.keys(modules || {}), + } +} + +function TMPL_INLINE ({ chunks }: TemplateContext) { + return `${chunks + .map(i => `import * as ${i.name} from '${i.src}'`) + .join('\n')} +const dynamicChunks = { + ${chunks.map(i => ` ['${i.id}']: ${i.name}`).join(',\n')} +}; + +export default function dynamicRequire(id) { + return Promise.resolve(dynamicChunks[id]); +};` +} + +function TMPL_LAZY ({ chunks }: TemplateContext) { + return ` +const dynamicChunks = { +${chunks.map(i => ` ['${i.id}']: () => import('${i.src}')`).join(',\n')} +}; + +export default function dynamicRequire(id) { + return dynamicChunks[id](); +};` +} diff --git a/packages/webpack/src/plugins/vue/client.ts b/packages/webpack/src/plugins/vue/client.ts index 10127fcace..23259c6cba 100644 --- a/packages/webpack/src/plugins/vue/client.ts +++ b/packages/webpack/src/plugins/vue/client.ts @@ -3,13 +3,15 @@ * https://github.com/vuejs/vue/blob/dev/src/server/webpack-plugin/client.js */ +import { mkdir, writeFile } from 'node:fs/promises' + import { normalizeWebpackManifest } from 'vue-bundle-renderer' import { dirname } from 'pathe' import hash from 'hash-sum' -import fse from 'fs-extra' import type { Nuxt } from '@nuxt/schema' import type { Compilation, Compiler } from 'webpack' + import { isCSS, isHotUpdate, isJS } from './util' interface PluginOptions { @@ -121,11 +123,11 @@ export default class VueSSRClientPlugin { const src = JSON.stringify(manifest, null, 2) - await fse.mkdirp(dirname(this.options.filename)) - await fse.writeFile(this.options.filename, src) + await mkdir(dirname(this.options.filename), { recursive: true }) + await writeFile(this.options.filename, src) const mjsSrc = 'export default ' + src - await fse.writeFile(this.options.filename.replace('.json', '.mjs'), mjsSrc) + await writeFile(this.options.filename.replace('.json', '.mjs'), mjsSrc) // assets[this.options.filename] = { // source: () => src, diff --git a/packages/webpack/src/presets/base.ts b/packages/webpack/src/presets/base.ts index 1149e980b4..34337bb216 100644 --- a/packages/webpack/src/presets/base.ts +++ b/packages/webpack/src/presets/base.ts @@ -16,8 +16,8 @@ import WarningIgnorePlugin from '../plugins/warning-ignore' import type { WebpackConfigContext } from '../utils/config' import { applyPresets, fileName } from '../utils/config' -export function base (ctx: WebpackConfigContext) { - applyPresets(ctx, [ +export async function base (ctx: WebpackConfigContext) { + await applyPresets(ctx, [ baseAlias, baseConfig, basePlugins, @@ -125,7 +125,7 @@ function baseAlias (ctx: WebpackConfigContext) { ...ctx.alias, } if (ctx.isClient) { - ctx.alias['#internal/nitro'] = resolve(ctx.nuxt.options.buildDir, 'nitro.client.mjs') + ctx.alias['nitro/runtime'] = resolve(ctx.nuxt.options.buildDir, 'nitro.client.mjs') } } diff --git a/packages/webpack/src/presets/nuxt.ts b/packages/webpack/src/presets/nuxt.ts index 5b95f07f59..318da10a20 100644 --- a/packages/webpack/src/presets/nuxt.ts +++ b/packages/webpack/src/presets/nuxt.ts @@ -8,8 +8,8 @@ import { pug } from './pug' import { style } from './style' import { vue } from './vue' -export function nuxt (ctx: WebpackConfigContext) { - applyPresets(ctx, [ +export async function nuxt (ctx: WebpackConfigContext) { + await applyPresets(ctx, [ base, assets, esbuild, diff --git a/packages/webpack/src/presets/style.ts b/packages/webpack/src/presets/style.ts index c9fa4be788..90d1031885 100644 --- a/packages/webpack/src/presets/style.ts +++ b/packages/webpack/src/presets/style.ts @@ -4,8 +4,8 @@ import type { WebpackConfigContext } from '../utils/config' import { applyPresets, fileName } from '../utils/config' import { getPostcssConfig } from '../utils/postcss' -export function style (ctx: WebpackConfigContext) { - applyPresets(ctx, [ +export async function style (ctx: WebpackConfigContext) { + await applyPresets(ctx, [ loaders, extractCSS, minimizer, @@ -32,32 +32,32 @@ function extractCSS (ctx: WebpackConfigContext) { })) } -function loaders (ctx: WebpackConfigContext) { +async function loaders (ctx: WebpackConfigContext) { // CSS - ctx.config.module!.rules!.push(createdStyleRule('css', /\.css$/i, null, ctx)) + ctx.config.module!.rules!.push(await createdStyleRule('css', /\.css$/i, null, ctx)) // PostCSS - ctx.config.module!.rules!.push(createdStyleRule('postcss', /\.p(ost)?css$/i, null, ctx)) + ctx.config.module!.rules!.push(await createdStyleRule('postcss', /\.p(ost)?css$/i, null, ctx)) // Less const lessLoader = { loader: 'less-loader', options: ctx.userConfig.loaders.less } - ctx.config.module!.rules!.push(createdStyleRule('less', /\.less$/i, lessLoader, ctx)) + ctx.config.module!.rules!.push(await createdStyleRule('less', /\.less$/i, lessLoader, ctx)) // Sass (TODO: optional dependency) const sassLoader = { loader: 'sass-loader', options: ctx.userConfig.loaders.sass } - ctx.config.module!.rules!.push(createdStyleRule('sass', /\.sass$/i, sassLoader, ctx)) + ctx.config.module!.rules!.push(await createdStyleRule('sass', /\.sass$/i, sassLoader, ctx)) const scssLoader = { loader: 'sass-loader', options: ctx.userConfig.loaders.scss } - ctx.config.module!.rules!.push(createdStyleRule('scss', /\.scss$/i, scssLoader, ctx)) + ctx.config.module!.rules!.push(await createdStyleRule('scss', /\.scss$/i, scssLoader, ctx)) // Stylus const stylusLoader = { loader: 'stylus-loader', options: ctx.userConfig.loaders.stylus } - ctx.config.module!.rules!.push(createdStyleRule('stylus', /\.styl(us)?$/i, stylusLoader, ctx)) + ctx.config.module!.rules!.push(await createdStyleRule('stylus', /\.styl(us)?$/i, stylusLoader, ctx)) } -function createdStyleRule (lang: string, test: RegExp, processorLoader: any, ctx: WebpackConfigContext) { +async function createdStyleRule (lang: string, test: RegExp, processorLoader: any, ctx: WebpackConfigContext) { const styleLoaders = [ - createPostcssLoadersRule(ctx), + await createPostcssLoadersRule(ctx), processorLoader, ].filter(Boolean) @@ -114,10 +114,10 @@ function createCssLoadersRule (ctx: WebpackConfigContext, cssLoaderOptions: any) ] } -function createPostcssLoadersRule (ctx: WebpackConfigContext) { +async function createPostcssLoadersRule (ctx: WebpackConfigContext) { if (!ctx.options.postcss) { return } - const config = getPostcssConfig(ctx.nuxt) + const config = await getPostcssConfig(ctx.nuxt) if (!config) { return diff --git a/packages/webpack/src/utils/config.ts b/packages/webpack/src/utils/config.ts index 602bc37aeb..526d5b111c 100644 --- a/packages/webpack/src/utils/config.ts +++ b/packages/webpack/src/utils/config.ts @@ -17,7 +17,7 @@ export interface WebpackConfigContext { transpile: RegExp[] } -type WebpackConfigPreset = (ctx: WebpackConfigContext, options?: object) => void +type WebpackConfigPreset = (ctx: WebpackConfigContext, options?: object) => void | Promise type WebpackConfigPresetItem = WebpackConfigPreset | [WebpackConfigPreset, any] export function createWebpackConfigContext (nuxt: Nuxt): WebpackConfigContext { @@ -37,12 +37,12 @@ export function createWebpackConfigContext (nuxt: Nuxt): WebpackConfigContext { } } -export function applyPresets (ctx: WebpackConfigContext, presets: WebpackConfigPresetItem | WebpackConfigPresetItem[]) { +export async function applyPresets (ctx: WebpackConfigContext, presets: WebpackConfigPresetItem | WebpackConfigPresetItem[]) { for (const preset of toArray(presets)) { if (Array.isArray(preset)) { - preset[0](ctx, preset[1]) + await preset[0](ctx, preset[1]) } else { - preset(ctx) + await preset(ctx) } } } diff --git a/packages/webpack/src/utils/postcss.ts b/packages/webpack/src/utils/postcss.ts index 58af9f7c63..9a6a7bf463 100644 --- a/packages/webpack/src/utils/postcss.ts +++ b/packages/webpack/src/utils/postcss.ts @@ -1,37 +1,17 @@ -import { fileURLToPath } from 'node:url' import createResolver from 'postcss-import-resolver' -import { requireModule } from '@nuxt/kit' -import type { Nuxt } from '@nuxt/schema' +import type { Nuxt, NuxtOptions } from '@nuxt/schema' import { defu } from 'defu' +import { createJiti } from 'jiti' +import type { Plugin } from 'postcss' const isPureObject = (obj: unknown): obj is Object => obj !== null && !Array.isArray(obj) && typeof obj === 'object' -const ensureItemIsLast = (item: string) => (arr: string[]) => { - const index = arr.indexOf(item) - if (index !== -1) { - arr.splice(index, 1) - arr.push(item) - } - return arr +function sortPlugins ({ plugins, order }: NuxtOptions['postcss']): string[] { + const names = Object.keys(plugins) + return typeof order === 'function' ? order(names) : (order || names) } -const orderPresets = { - cssnanoLast: ensureItemIsLast('cssnano'), - autoprefixerLast: ensureItemIsLast('autoprefixer'), - autoprefixerAndCssnanoLast (names: string[]) { - return orderPresets.cssnanoLast(orderPresets.autoprefixerLast(names)) - }, -} - -export const getPostcssConfig = (nuxt: Nuxt) => { - function sortPlugins ({ plugins, order }: any) { - const names = Object.keys(plugins) - if (typeof order === 'string') { - order = orderPresets[order as keyof typeof orderPresets] - } - return typeof order === 'function' ? order(names, orderPresets) : (order || names) - } - +export async function getPostcssConfig (nuxt: Nuxt) { if (!nuxt.options.webpack.postcss || !nuxt.options.postcss) { return false } @@ -54,21 +34,32 @@ export const getPostcssConfig = (nuxt: Nuxt) => { 'postcss-url': {}, }, sourceMap: nuxt.options.webpack.cssSourceMap, - // Array, String or Function - order: 'autoprefixerAndCssnanoLast', + }) + + const jiti = createJiti(nuxt.options.rootDir, { + interopDefault: true, + alias: nuxt.options.alias, }) // Keep the order of default plugins if (!Array.isArray(postcssOptions.plugins) && isPureObject(postcssOptions.plugins)) { // Map postcss plugins into instances on object mode once - const cwd = fileURLToPath(new URL('.', import.meta.url)) - postcssOptions.plugins = sortPlugins(postcssOptions).map((pluginName: string) => { - // TODO: remove use of requireModule in favour of ESM import - const pluginFn = requireModule(pluginName, { paths: [cwd] }) + const plugins: Plugin[] = [] + for (const pluginName of sortPlugins(postcssOptions)) { const pluginOptions = postcssOptions.plugins[pluginName] - if (!pluginOptions || typeof pluginFn !== 'function') { return null } - return pluginFn(pluginOptions) - }).filter(Boolean) + if (!pluginOptions) { continue } + + const path = jiti.esmResolve(pluginName) + const pluginFn = (await jiti.import(path)) as (opts: Record) => Plugin + if (typeof pluginFn === 'function') { + plugins.push(pluginFn(pluginOptions)) + } else { + console.warn(`[nuxt] could not import postcss plugin \`${pluginName}\`. Please report this as a bug.`) + } + } + + // @ts-expect-error we are mutating type here from object to array + postcssOptions.plugins = plugins } return { diff --git a/packages/webpack/src/webpack.ts b/packages/webpack/src/webpack.ts index 2328a4104a..3f97820b13 100644 --- a/packages/webpack/src/webpack.ts +++ b/packages/webpack/src/webpack.ts @@ -1,6 +1,7 @@ import pify from 'pify' import webpack from 'webpack' import type { NodeMiddleware } from 'h3' +import { resolve } from 'pathe' import { defineEventHandler, fromNodeMiddleware } from 'h3' import type { MultiWatching } from 'webpack-dev-middleware' import webpackDevMiddleware from 'webpack-dev-middleware' @@ -9,7 +10,8 @@ import type { Compiler, Stats, Watching } from 'webpack' import { defu } from 'defu' import type { NuxtBuilder } from '@nuxt/schema' import { joinURL } from 'ufo' -import { logger, useNuxt } from '@nuxt/kit' +import { logger, useNitro, useNuxt } from '@nuxt/kit' +import type { InputPluginOption } from 'rollup' import { composableKeysPlugin } from '../../vite/src/plugins/composable-keys' import { DynamicBasePlugin } from './plugins/dynamic-base' @@ -18,6 +20,7 @@ import { createMFS } from './utils/mfs' import { registerVirtualModules } from './virtual-modules' import { client, server } from './configs' import { applyPresets, createWebpackConfigContext, getWebpackConfig } from './utils/config' +import { dynamicRequire } from './nitro/plugins/dynamic-require' // TODO: Support plugins // const plugins: string[] = [] @@ -25,12 +28,32 @@ import { applyPresets, createWebpackConfigContext, getWebpackConfig } from './ut export const bundle: NuxtBuilder['bundle'] = async (nuxt) => { registerVirtualModules() - const webpackConfigs = [client, ...nuxt.options.ssr ? [server] : []].map((preset) => { + const webpackConfigs = await Promise.all([client, ...nuxt.options.ssr ? [server] : []].map(async (preset) => { const ctx = createWebpackConfigContext(nuxt) ctx.userConfig = defu(nuxt.options.webpack[`$${preset.name as 'client' | 'server'}`], ctx.userConfig) - applyPresets(ctx, preset) + await applyPresets(ctx, preset) return getWebpackConfig(ctx) + })) + + /** Inject rollup plugin for Nitro to handle dynamic imports from webpack chunks */ + const nitro = useNitro() + const dynamicRequirePlugin = dynamicRequire({ + dir: resolve(nuxt.options.buildDir, 'dist/server'), + inline: + nitro.options.node === false || nitro.options.inlineDynamicImports, + ignore: [ + 'client.manifest.mjs', + 'server.js', + 'server.cjs', + 'server.mjs', + 'server.manifest.mjs', + ], }) + const prerenderRollupPlugins = nitro.options._config.rollupConfig!.plugins as InputPluginOption[] + const rollupPlugins = nitro.options.rollupConfig!.plugins as InputPluginOption[] + + prerenderRollupPlugins.push(dynamicRequirePlugin) + rollupPlugins.push(dynamicRequirePlugin) await nuxt.callHook('webpack:config', webpackConfigs) diff --git a/patches/ofetch@1.3.4.patch b/patches/ofetch@1.3.4.patch new file mode 100644 index 0000000000..6492d6c218 --- /dev/null +++ b/patches/ofetch@1.3.4.patch @@ -0,0 +1,33 @@ +diff --git a/dist/node.d.cts b/dist/node.d.cts +index d3a39ff53717d267ff4581af714533ff7229799c..4e3db1f3d6defb7b0c40d11589c0ff6cb8391ad5 100644 +--- a/dist/node.d.cts ++++ b/dist/node.d.cts +@@ -1,5 +1,5 @@ + import { $ as $Fetch } from './shared/ofetch.8459ad38.cjs'; +-export { F as FetchError, c as createFetch, a as createFetchError } from './shared/ofetch.8459ad38.cjs'; ++export { C as CreateFetchOptions, g as Fetch, b as FetchContext, F as FetchError, d as FetchOptions, h as FetchRequest, f as FetchResponse, G as GlobalOptions, I as IFetchError, M as MappedResponseType, R as ResponseMap, e as ResponseType, S as SearchParameters, c as createFetch, a as createFetchError } from './shared/ofetch.8459ad38.mjs'; + + declare function createNodeFetch(): (input: RequestInfo, init?: RequestInit) => any; + declare const fetch: typeof globalThis.fetch; +diff --git a/dist/node.d.mts b/dist/node.d.mts +index 3d8b330375ce60178c05292179ec8bac764ae516..bdcc322bd8554fc7e61d5d9760cb9991560560eb 100644 +--- a/dist/node.d.mts ++++ b/dist/node.d.mts +@@ -1,5 +1,5 @@ + import { $ as $Fetch } from './shared/ofetch.8459ad38.mjs'; +-export { F as FetchError, c as createFetch, a as createFetchError } from './shared/ofetch.8459ad38.mjs'; ++export { C as CreateFetchOptions, g as Fetch, b as FetchContext, F as FetchError, d as FetchOptions, h as FetchRequest, f as FetchResponse, G as GlobalOptions, I as IFetchError, M as MappedResponseType, R as ResponseMap, e as ResponseType, S as SearchParameters, c as createFetch, a as createFetchError } from './shared/ofetch.8459ad38.mjs'; + + declare function createNodeFetch(): (input: RequestInfo, init?: RequestInit) => any; + declare const fetch: typeof globalThis.fetch; +diff --git a/dist/node.d.ts b/dist/node.d.ts +index 6a5419d1939000a15958b362f44bf49fb1800207..4b319d2c3051e966274268670e243c5f99e2904d 100644 +--- a/dist/node.d.ts ++++ b/dist/node.d.ts +@@ -1,5 +1,5 @@ + import { $ as $Fetch } from './shared/ofetch.8459ad38.js'; +-export { F as FetchError, c as createFetch, a as createFetchError } from './shared/ofetch.8459ad38.js'; ++export { C as CreateFetchOptions, g as Fetch, b as FetchContext, F as FetchError, d as FetchOptions, h as FetchRequest, f as FetchResponse, G as GlobalOptions, I as IFetchError, M as MappedResponseType, R as ResponseMap, e as ResponseType, S as SearchParameters, c as createFetch, a as createFetchError } from './shared/ofetch.8459ad38.mjs'; + + declare function createNodeFetch(): (input: RequestInfo, init?: RequestInit) => any; + declare const fetch: typeof globalThis.fetch; diff --git a/playground/app.vue b/playground/app.vue index 17d631007a..a8e992e3b4 100644 --- a/playground/app.vue +++ b/playground/app.vue @@ -4,7 +4,7 @@ diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index 9e36a9d496..9b576aa6e5 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -1,3 +1,4 @@ export default defineNuxtConfig({ + compatibilityDate: '2024-06-28', devtools: { enabled: true }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e29a3a08d..b03d0b08c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,12 @@ settings: excludeLinksFromLockfile: false overrides: + nitro: npm:nitro-nightly@3.0.0-beta-28659787.859de2d6 + typescript: 5.5.3 + h3: npm:h3-nightly@2.0.0-1718872656.6765a6e + c12: 2.0.0-beta.1 + jiti: 2.0.0-beta.3 + unbuild: 3.0.0-rc.6 '@nuxt/kit': workspace:* '@nuxt/schema': workspace:* '@nuxt/ui-templates': workspace:* @@ -13,55 +19,60 @@ overrides: magic-string: ^0.30.10 nuxt: workspace:* rollup: ^4.18.0 - vite: 5.3.1 - vue: 3.4.29 + vite: 5.3.3 + vue: 3.4.31 + +patchedDependencies: + ofetch@1.3.4: + hash: nxc3eojzwynarpj453xzxqr2f4 + path: patches/ofetch@1.3.4.patch importers: .: devDependencies: '@eslint/js': - specifier: 9.5.0 - version: 9.5.0 + specifier: 9.6.0 + version: 9.6.0 '@nuxt/eslint-config': specifier: 0.3.13 - version: 0.3.13(eslint@9.5.0)(typescript@5.4.5) + version: 0.3.13(eslint@9.6.0)(typescript@5.5.3) '@nuxt/kit': specifier: workspace:* version: link:packages/kit '@nuxt/test-utils': specifier: 3.13.1 - version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)) + version: 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.1)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)) '@nuxt/webpack-builder': specifier: workspace:* version: link:packages/webpack '@testing-library/vue': specifier: 8.1.0 - version: 8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)) + version: 8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)) '@types/eslint__js': specifier: 8.42.3 version: 8.42.3 - '@types/fs-extra': - specifier: 11.0.4 - version: 11.0.4 '@types/node': - specifier: 20.14.5 - version: 20.14.5 + specifier: 20.14.9 + version: 20.14.9 '@types/semver': specifier: 7.5.8 version: 7.5.8 '@unhead/schema': - specifier: 1.9.13 - version: 1.9.13 + specifier: 1.9.14 + version: 1.9.14 '@vitejs/plugin-vue': - specifier: 5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) + specifier: 5.0.5 + version: 5.0.5(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3)) '@vitest/coverage-v8': specifier: 1.6.0 - version: 1.6.0(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0)) + version: 1.6.0(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0)) '@vue/test-utils': specifier: 2.4.6 version: 2.4.6 + autoprefixer: + specifier: 10.4.19 + version: 10.4.19(postcss@8.4.39) case-police: specifier: 0.6.1 version: 0.6.1 @@ -71,45 +82,45 @@ importers: consola: specifier: 3.2.3 version: 3.2.3 + cssnano: + specifier: 7.0.3 + version: 7.0.3(postcss@8.4.39) devalue: specifier: 5.0.0 version: 5.0.0 eslint: - specifier: 9.5.0 - version: 9.5.0 + specifier: 9.6.0 + version: 9.6.0 eslint-plugin-no-only-tests: specifier: 3.1.0 version: 3.1.0 eslint-plugin-perfectionist: specifier: 2.11.0 - version: 2.11.0(eslint@9.5.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.5.0)) + version: 2.11.0(eslint@9.6.0)(typescript@5.5.3)(vue-eslint-parser@9.4.2(eslint@9.6.0)) eslint-typegen: specifier: 0.2.4 - version: 0.2.4(eslint@9.5.0) + version: 0.2.4(eslint@9.6.0) execa: - specifier: 9.2.0 - version: 9.2.0 - fs-extra: - specifier: 11.2.0 - version: 11.2.0 + specifier: 9.3.0 + version: 9.3.0 globby: - specifier: 14.0.1 - version: 14.0.1 + specifier: 14.0.2 + version: 14.0.2 h3: - specifier: 1.11.1 - version: 1.11.1 + specifier: npm:h3-nightly@2.0.0-1718872656.6765a6e + version: h3-nightly@2.0.0-1718872656.6765a6e happy-dom: - specifier: 14.12.0 - version: 14.12.0 + specifier: 14.12.3 + version: 14.12.3 jiti: - specifier: 1.21.6 - version: 1.21.6 + specifier: 2.0.0-beta.3 + version: 2.0.0-beta.3 markdownlint-cli: specifier: 0.41.0 version: 0.41.0 - nitropack: - specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + nitro: + specifier: npm:nitro-nightly@3.0.0-beta-28659787.859de2d6 + version: nitro-nightly@3.0.0-beta-28659787.859de2d6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(typescript@5.5.3) nuxi: specifier: 3.12.0 version: 3.12.0 @@ -117,17 +128,17 @@ importers: specifier: workspace:* version: link:packages/nuxt nuxt-content-twoslash: - specifier: 0.0.10 - version: 0.0.10(@nuxtjs/mdc@0.5.0) + specifier: 0.1.0 + version: 0.1.0(@nuxtjs/mdc@0.5.0) ofetch: specifier: 1.3.4 - version: 1.3.4 + version: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) pathe: specifier: 1.1.2 version: 1.1.2 playwright-core: - specifier: 1.44.1 - version: 1.44.1 + specifier: 1.45.1 + version: 1.45.1 rimraf: specifier: 5.0.7 version: 5.0.7 @@ -138,26 +149,26 @@ importers: specifier: 3.7.0 version: 3.7.0 typescript: - specifier: 5.4.5 - version: 5.4.5 + specifier: 5.5.3 + version: 5.5.3 ufo: specifier: 1.5.3 version: 1.5.3 vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0) vitest-environment-nuxt: specifier: 1.0.0 - version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)) + version: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.1)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)) vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) vue-router: - specifier: 4.3.3 - version: 4.3.3(vue@3.4.29(typescript@5.4.5)) + specifier: 4.4.0 + version: 4.4.0(vue@3.4.31(typescript@5.5.3)) vue-tsc: - specifier: 2.0.21 - version: 2.0.21(typescript@5.4.5) + specifier: 2.0.24 + version: 2.0.24(typescript@5.5.3) packages/kit: dependencies: @@ -165,8 +176,8 @@ importers: specifier: workspace:* version: link:../schema c12: - specifier: ^1.11.1 - version: 1.11.1(magicast@0.3.4) + specifier: 2.0.0-beta.1 + version: 2.0.0-beta.1(magicast@0.3.4) consola: specifier: ^3.2.3 version: 3.2.3 @@ -177,8 +188,8 @@ importers: specifier: ^2.0.3 version: 2.0.3 globby: - specifier: ^14.0.1 - version: 14.0.1 + specifier: ^14.0.2 + version: 14.0.2 hash-sum: specifier: ^2.0.0 version: 2.0.0 @@ -186,14 +197,11 @@ importers: specifier: ^5.3.1 version: 5.3.1 jiti: - specifier: ^1.21.6 - version: 1.21.6 + specifier: 2.0.0-beta.3 + version: 2.0.0-beta.3 klona: specifier: ^2.0.6 version: 2.0.6 - knitwork: - specifier: ^1.1.0 - version: 1.1.0 mlly: specifier: ^1.7.1 version: 1.7.1 @@ -201,8 +209,8 @@ importers: specifier: ^1.1.2 version: 1.1.2 pkg-types: - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.1.3 + version: 1.1.3 scule: specifier: ^1.3.0 version: 1.3.0 @@ -225,30 +233,24 @@ importers: '@types/hash-sum': specifier: 1.0.2 version: 1.0.2 - '@types/lodash-es': - specifier: 4.17.12 - version: 4.17.12 '@types/semver': specifier: 7.5.8 version: 7.5.8 - lodash-es: - specifier: 4.17.21 - version: 4.17.21 - nitropack: - specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + nitro: + specifier: npm:nitro-nightly@3.0.0-beta-28659787.859de2d6 + version: nitro-nightly@3.0.0-beta-28659787.859de2d6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(typescript@5.5.3) unbuild: - specifier: latest - version: 2.0.0(sass@1.69.4)(typescript@5.4.5) + specifier: 3.0.0-rc.6 + version: 3.0.0-rc.6(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)) vite: - specifier: 5.3.1 - version: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.3 + version: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0) webpack: - specifier: 5.92.0 - version: 5.92.0 + specifier: 5.92.1 + version: 5.92.1 packages/nuxt: dependencies: @@ -256,8 +258,8 @@ importers: specifier: ^2.0.2 version: 2.0.2 '@nuxt/devtools': - specifier: ^1.3.3 - version: 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) + specifier: ^1.3.9 + version: 1.3.9(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) '@nuxt/kit': specifier: workspace:* version: link:../kit @@ -272,28 +274,34 @@ importers: version: link:../vite '@types/node': specifier: ^14.18.0 || >=16.10.0 - version: 20.14.2 + version: 20.14.9 '@unhead/dom': - specifier: ^1.9.13 - version: 1.9.13 + specifier: ^1.9.14 + version: 1.9.14 '@unhead/ssr': - specifier: ^1.9.13 - version: 1.9.13 + specifier: ^1.9.14 + version: 1.9.14 '@unhead/vue': - specifier: ^1.9.13 - version: 1.9.13(vue@3.4.29(typescript@5.4.5)) + specifier: ^1.9.14 + version: 1.9.14(vue@3.4.31(typescript@5.5.3)) '@vue/shared': - specifier: ^3.4.29 - version: 3.4.29 + specifier: ^3.4.31 + version: 3.4.31 acorn: - specifier: 8.12.0 - version: 8.12.0 + specifier: 8.12.1 + version: 8.12.1 c12: - specifier: ^1.11.1 - version: 1.11.1(magicast@0.3.4) + specifier: 2.0.0-beta.1 + version: 2.0.0-beta.1(magicast@0.3.4) chokidar: specifier: ^3.6.0 version: 3.6.0 + compatx: + specifier: ^0.1.8 + version: 0.1.8 + consola: + specifier: ^3.2.3 + version: 3.2.3 cookie-es: specifier: ^1.1.0 version: 1.1.0 @@ -307,23 +315,20 @@ importers: specifier: ^5.0.0 version: 5.0.0 esbuild: - specifier: ^0.21.5 - version: 0.21.5 + specifier: ^0.23.0 + version: 0.23.0 escape-string-regexp: specifier: ^5.0.0 version: 5.0.0 estree-walker: specifier: ^3.0.3 version: 3.0.3 - fs-extra: - specifier: ^11.2.0 - version: 11.2.0 globby: - specifier: ^14.0.1 - version: 14.0.1 + specifier: ^14.0.2 + version: 14.0.2 h3: - specifier: ^1.11.1 - version: 1.11.1 + specifier: npm:h3-nightly@2.0.0-1718872656.6765a6e + version: h3-nightly@2.0.0-1718872656.6765a6e hookable: specifier: ^5.5.3 version: 5.5.3 @@ -331,8 +336,8 @@ importers: specifier: ^5.3.1 version: 5.3.1 jiti: - specifier: ^1.21.6 - version: 1.21.6 + specifier: 2.0.0-beta.3 + version: 2.0.0-beta.3 klona: specifier: ^2.0.6 version: 2.0.6 @@ -345,18 +350,18 @@ importers: mlly: specifier: ^1.7.1 version: 1.7.1 - nitropack: - specifier: ^2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + nitro: + specifier: npm:nitro-nightly@3.0.0-beta-28659787.859de2d6 + version: nitro-nightly@3.0.0-beta-28659787.859de2d6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(typescript@5.5.3) nuxi: specifier: ^3.12.0 version: 3.12.0 nypm: - specifier: ^0.3.8 - version: 0.3.8 + specifier: ^0.3.9 + version: 0.3.9 ofetch: specifier: ^1.3.4 - version: 1.3.4 + version: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) ohash: specifier: ^1.1.3 version: 1.1.3 @@ -367,8 +372,8 @@ importers: specifier: ^1.0.0 version: 1.0.0 pkg-types: - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.1.3 + version: 1.1.3 radix3: specifier: ^1.1.2 version: 1.1.2 @@ -403,20 +408,20 @@ importers: specifier: ^3.7.2 version: 3.7.2(rollup@4.18.0) unplugin: - specifier: ^1.10.1 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.11.0 unplugin-vue-router: - specifier: ^0.7.0 - version: 0.7.0(rollup@4.18.0)(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)) + specifier: ^0.10.0 + version: 0.10.0(rollup@4.18.0)(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)) unstorage: specifier: ^1.10.2 - version: 1.10.2(ioredis@5.3.2) + version: 1.10.2(ioredis@5.4.1) untyped: specifier: ^1.4.2 version: 1.4.2 vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) vue-bundle-renderer: specifier: ^2.1.0 version: 2.1.0 @@ -424,12 +429,12 @@ importers: specifier: ^0.1.0 version: 0.1.0 vue-router: - specifier: ^4.3.3 - version: 4.3.3(vue@3.4.29(typescript@5.4.5)) + specifier: ^4.4.0 + version: 4.4.0(vue@3.4.31(typescript@5.5.3)) devDependencies: '@nuxt/scripts': specifier: 0.5.1 - version: 0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.29)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) + version: 0.5.1(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)))(@vue/compiler-core@3.4.31)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0)) '@nuxt/ui-templates': specifier: workspace:* version: link:../ui-templates @@ -439,24 +444,21 @@ importers: '@types/estree': specifier: 1.0.5 version: 1.0.5 - '@types/fs-extra': - specifier: 11.0.4 - version: 11.0.4 '@vitejs/plugin-vue': - specifier: 5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) + specifier: 5.0.5 + version: 5.0.5(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3)) '@vue/compiler-sfc': - specifier: 3.4.29 - version: 3.4.29 + specifier: 3.4.31 + version: 3.4.31 unbuild: - specifier: latest - version: 2.0.0(sass@1.69.4)(typescript@5.4.5) + specifier: 3.0.0-rc.6 + version: 3.0.0-rc.6(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)) vite: - specifier: 5.3.1 - version: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.3 + version: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0) packages/schema: dependencies: @@ -476,8 +478,8 @@ importers: specifier: ^1.1.2 version: 1.1.2 pkg-types: - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.1.3 + version: 1.1.3 scule: specifier: ^1.3.0 version: 1.3.0 @@ -513,47 +515,47 @@ importers: specifier: 8.0.8 version: 8.0.8 '@unhead/schema': - specifier: 1.9.13 - version: 1.9.13 + specifier: 1.9.14 + version: 1.9.14 '@vitejs/plugin-vue': - specifier: 5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) + specifier: 5.0.5 + version: 5.0.5(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3)) '@vitejs/plugin-vue-jsx': specifier: 4.0.0 - version: 4.0.0(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) + version: 4.0.0(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3)) '@vue/compiler-core': - specifier: 3.4.29 - version: 3.4.29 + specifier: 3.4.31 + version: 3.4.31 '@vue/compiler-sfc': - specifier: 3.4.29 - version: 3.4.29 + specifier: 3.4.31 + version: 3.4.31 '@vue/language-core': - specifier: 2.0.21 - version: 2.0.21(typescript@5.4.5) + specifier: 2.0.24 + version: 2.0.24(typescript@5.5.3) c12: - specifier: 1.11.1 - version: 1.11.1(magicast@0.3.4) + specifier: 2.0.0-beta.1 + version: 2.0.0-beta.1(magicast@0.3.4) esbuild: - specifier: 0.21.5 - version: 0.21.5 + specifier: 0.23.0 + version: 0.23.0 esbuild-loader: specifier: 4.2.0 - version: 4.2.0(webpack@5.92.0(esbuild@0.21.5)) + version: 4.2.0(webpack@5.92.1(esbuild@0.23.0)) h3: - specifier: 1.11.1 - version: 1.11.1 + specifier: npm:h3-nightly@2.0.0-1718872656.6765a6e + version: h3-nightly@2.0.0-1718872656.6765a6e ignore: specifier: 5.3.1 version: 5.3.1 - nitropack: - specifier: 2.9.6 - version: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + nitro: + specifier: npm:nitro-nightly@3.0.0-beta-28659787.859de2d6 + version: nitro-nightly@3.0.0-beta-28659787.859de2d6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(typescript@5.5.3) ofetch: specifier: 1.3.4 - version: 1.3.4 + version: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) unbuild: - specifier: latest - version: 2.0.0(sass@1.69.4)(typescript@5.4.5) + specifier: 3.0.0-rc.6 + version: 3.0.0-rc.6(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)) unctx: specifier: 2.3.1 version: 2.3.1 @@ -561,59 +563,53 @@ importers: specifier: 1.9.0 version: 1.9.0 vite: - specifier: 5.3.1 - version: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.3 + version: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) vue-bundle-renderer: specifier: 2.1.0 version: 2.1.0 vue-loader: specifier: 17.4.2 - version: 17.4.2(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) + version: 17.4.2(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0)) vue-router: - specifier: 4.3.3 - version: 4.3.3(vue@3.4.29(typescript@5.4.5)) + specifier: 4.4.0 + version: 4.4.0(vue@3.4.31(typescript@5.5.3)) webpack: - specifier: 5.92.0 - version: 5.92.0(esbuild@0.21.5) + specifier: 5.92.1 + version: 5.92.1(esbuild@0.23.0) webpack-dev-middleware: specifier: 7.2.1 - version: 7.2.1(webpack@5.92.0(esbuild@0.21.5)) + version: 7.2.1(webpack@5.92.1(esbuild@0.23.0)) packages/ui-templates: devDependencies: '@types/html-minifier': specifier: 4.0.5 version: 4.0.5 - '@types/lodash-es': - specifier: 4.17.12 - version: 4.17.12 '@unocss/reset': specifier: 0.61.0 version: 0.61.0 critters: - specifier: 0.0.22 - version: 0.0.22 + specifier: 0.0.24 + version: 0.0.24 execa: - specifier: 9.2.0 - version: 9.2.0 + specifier: 9.3.0 + version: 9.3.0 globby: - specifier: 14.0.1 - version: 14.0.1 + specifier: 14.0.2 + version: 14.0.2 html-minifier: specifier: 4.0.0 version: 4.0.0 jiti: - specifier: 1.21.6 - version: 1.21.6 + specifier: 2.0.0-beta.3 + version: 2.0.0-beta.3 knitwork: specifier: 1.1.0 version: 1.1.0 - lodash-es: - specifier: 4.17.21 - version: 4.17.21 pathe: specifier: 1.1.2 version: 1.1.2 @@ -625,10 +621,10 @@ importers: version: 1.3.0 unocss: specifier: 0.61.0 - version: 0.61.0(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0)) + version: 0.61.0(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) vite: - specifier: 5.3.1 - version: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.3 + version: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) packages/vite: dependencies: @@ -639,14 +635,14 @@ importers: specifier: ^5.0.7 version: 5.0.7(rollup@4.18.0) '@vitejs/plugin-vue': - specifier: ^5.0.4 - version: 5.0.4(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) + specifier: ^5.0.5 + version: 5.0.5(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.0 - version: 4.0.0(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) + version: 4.0.0(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3)) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.38) + version: 10.4.19(postcss@8.4.39) clear: specifier: ^0.1.0 version: 0.1.0 @@ -654,14 +650,14 @@ importers: specifier: ^3.2.3 version: 3.2.3 cssnano: - specifier: ^7.0.2 - version: 7.0.2(postcss@8.4.38) + specifier: ^7.0.3 + version: 7.0.3(postcss@8.4.39) defu: specifier: ^6.1.4 version: 6.1.4 esbuild: - specifier: ^0.21.5 - version: 0.21.5 + specifier: ^0.23.0 + version: 0.23.0 escape-string-regexp: specifier: ^5.0.0 version: 5.0.0 @@ -671,15 +667,15 @@ importers: externality: specifier: ^1.0.2 version: 1.0.2 - fs-extra: - specifier: ^11.2.0 - version: 11.2.0 get-port-please: specifier: ^3.1.2 version: 3.1.2 h3: - specifier: ^1.11.1 - version: 1.11.1 + specifier: npm:h3-nightly@2.0.0-1718872656.6765a6e + version: h3-nightly@2.0.0-1718872656.6765a6e + jiti: + specifier: 2.0.0-beta.3 + version: 2.0.0-beta.3 knitwork: specifier: ^1.1.0 version: 1.1.0 @@ -699,11 +695,11 @@ importers: specifier: ^1.0.0 version: 1.0.0 pkg-types: - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.1.3 + version: 1.1.3 postcss: - specifier: ^8.4.38 - version: 8.4.38 + specifier: ^8.4.39 + version: 8.4.39 rollup-plugin-visualizer: specifier: ^5.12.0 version: 5.12.0(rollup@4.18.0) @@ -720,17 +716,17 @@ importers: specifier: ^1.9.0 version: 1.9.0 unplugin: - specifier: ^1.10.1 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.11.0 vite: - specifier: 5.3.1 - version: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) + specifier: 5.3.3 + version: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) vite-node: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) vite-plugin-checker: - specifier: ^0.6.4 - version: 0.6.4(eslint@9.5.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)) + specifier: ^0.7.0 + version: 0.7.0(eslint@9.6.0)(optionator@0.9.3)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.24(typescript@5.5.3)) vue-bundle-renderer: specifier: ^2.1.0 version: 2.1.0 @@ -744,45 +740,42 @@ importers: '@types/estree': specifier: 1.0.5 version: 1.0.5 - '@types/fs-extra': - specifier: 11.0.4 - version: 11.0.4 rollup: specifier: ^4.18.0 version: 4.18.0 unbuild: - specifier: latest - version: 2.0.0(sass@1.69.4)(typescript@5.4.5) + specifier: 3.0.0-rc.6 + version: 3.0.0-rc.6(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)) vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) packages/webpack: dependencies: '@nuxt/friendly-errors-webpack-plugin': specifier: ^2.6.0 - version: 2.6.0(webpack@5.92.0) + version: 2.6.0(webpack@5.92.1) '@nuxt/kit': specifier: workspace:* version: link:../kit autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.38) + version: 10.4.19(postcss@8.4.39) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.92.0) + version: 7.1.2(webpack@5.92.1) css-minimizer-webpack-plugin: specifier: ^7.0.0 - version: 7.0.0(webpack@5.92.0) + version: 7.0.0(webpack@5.92.1) cssnano: - specifier: ^7.0.2 - version: 7.0.2(postcss@8.4.38) + specifier: ^7.0.3 + version: 7.0.3(postcss@8.4.39) defu: specifier: ^6.1.4 version: 6.1.4 esbuild-loader: specifier: ^4.2.0 - version: 4.2.0(webpack@5.92.0) + version: 4.2.0(webpack@5.92.1) escape-string-regexp: specifier: ^5.0.0 version: 5.0.0 @@ -791,19 +784,25 @@ importers: version: 3.0.3 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.92.0) + version: 6.2.0(webpack@5.92.1) fork-ts-checker-webpack-plugin: specifier: ^9.0.2 - version: 9.0.2(typescript@5.4.5)(webpack@5.92.0) - fs-extra: - specifier: ^11.2.0 - version: 11.2.0 + version: 9.0.2(typescript@5.5.3)(webpack@5.92.1) + globby: + specifier: ^14.0.2 + version: 14.0.2 h3: - specifier: ^1.11.1 - version: 1.11.1 + specifier: npm:h3-nightly@2.0.0-1718872656.6765a6e + version: h3-nightly@2.0.0-1718872656.6765a6e hash-sum: specifier: ^2.0.0 version: 2.0.0 + jiti: + specifier: 2.0.0-beta.3 + version: 2.0.0-beta.3 + knitwork: + specifier: ^1.1.0 + version: 1.1.0 lodash-es: specifier: 4.17.21 version: 4.17.21 @@ -815,7 +814,7 @@ importers: version: 4.9.3 mini-css-extract-plugin: specifier: ^2.9.0 - version: 2.9.0(webpack@5.92.0) + version: 2.9.0(webpack@5.92.1) mlly: specifier: ^1.7.1 version: 1.7.1 @@ -829,20 +828,20 @@ importers: specifier: ^6.1.0 version: 6.1.0 postcss: - specifier: ^8.4.38 - version: 8.4.38 + specifier: ^8.4.39 + version: 8.4.39 postcss-import: specifier: ^16.1.0 - version: 16.1.0(postcss@8.4.38) + version: 16.1.0(postcss@8.4.39) postcss-import-resolver: specifier: ^2.0.0 version: 2.0.0 postcss-loader: specifier: ^8.1.1 - version: 8.1.1(postcss@8.4.38)(typescript@5.4.5)(webpack@5.92.0) + version: 8.1.1(postcss@8.4.39)(typescript@5.5.3)(webpack@5.92.1) postcss-url: specifier: ^10.1.3 - version: 10.1.3(postcss@8.4.38) + version: 10.1.3(postcss@8.4.39) pug-plain-loader: specifier: ^1.1.0 version: 1.1.0(pug@3.0.2) @@ -851,7 +850,7 @@ importers: version: 3.7.0 time-fix-plugin: specifier: ^2.0.7 - version: 2.0.7(webpack@5.92.0) + version: 2.0.7(webpack@5.92.1) ufo: specifier: ^1.5.3 version: 1.5.3 @@ -859,26 +858,26 @@ importers: specifier: ^1.9.0 version: 1.9.0 unplugin: - specifier: ^1.10.1 - version: 1.10.1 + specifier: ^1.11.0 + version: 1.11.0 url-loader: specifier: ^4.1.1 - version: 4.1.1(file-loader@6.2.0(webpack@5.92.0))(webpack@5.92.0) + version: 4.1.1(file-loader@6.2.0(webpack@5.92.1))(webpack@5.92.1) vue-bundle-renderer: specifier: ^2.1.0 version: 2.1.0 vue-loader: specifier: ^17.4.2 - version: 17.4.2(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0) + version: 17.4.2(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1) webpack: - specifier: ^5.92.0 - version: 5.92.0 + specifier: ^5.92.1 + version: 5.92.1 webpack-bundle-analyzer: specifier: ^4.10.2 version: 4.10.2 webpack-dev-middleware: specifier: ^7.2.1 - version: 7.2.1(webpack@5.92.0) + version: 7.2.1(webpack@5.92.1) webpack-hot-middleware: specifier: ^2.26.1 version: 2.26.1 @@ -887,14 +886,11 @@ importers: version: 0.6.2 webpackbar: specifier: ^6.0.1 - version: 6.0.1(webpack@5.92.0) + version: 6.0.1(webpack@5.92.1) devDependencies: '@nuxt/schema': specifier: workspace:* version: link:../schema - '@types/fs-extra': - specifier: 11.0.4 - version: 11.0.4 '@types/hash-sum': specifier: 1.0.2 version: 1.0.2 @@ -910,33 +906,36 @@ importers: '@types/webpack-hot-middleware': specifier: 2.25.9 version: 2.25.9 + rollup: + specifier: ^4.18.0 + version: 4.18.0 unbuild: - specifier: latest - version: 2.0.0(sass@1.69.4)(typescript@5.4.5) + specifier: 3.0.0-rc.6 + version: 3.0.0-rc.6(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)) vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) playground: dependencies: '@unhead/shared': specifier: latest - version: 1.9.13 + version: 1.9.14 '@vue/devtools-api': specifier: latest version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.29 + version: 3.4.31 nuxt: specifier: workspace:* version: link:../packages/nuxt unhead: specifier: latest - version: 1.9.13 + version: 1.9.14 vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) test/fixtures/basic: dependencies: @@ -949,16 +948,16 @@ importers: devDependencies: '@unhead/dom': specifier: latest - version: 1.9.13 + version: 1.9.14 '@unhead/shared': specifier: latest - version: 1.9.13 + version: 1.9.14 '@vue/devtools-api': specifier: latest version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.29 + version: 3.4.31 iron-webcrypto: specifier: latest version: 1.2.1 @@ -967,13 +966,13 @@ importers: version: 1.5.3 unhead: specifier: latest - version: 1.9.13 + version: 1.9.14 unplugin: specifier: latest - version: 1.10.1 + version: 1.11.0 vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) test/fixtures/basic-types: dependencies: @@ -983,19 +982,19 @@ importers: devDependencies: ofetch: specifier: latest - version: 1.3.4 + version: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) unplugin-vue-router: - specifier: ^0.7.0 - version: 0.7.0(rollup@4.18.0)(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)) + specifier: ^0.10.0 + version: 0.10.0(rollup@4.18.0)(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)) vitest: specifier: 1.6.0 - version: 1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) + version: 1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0) vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) vue-router: specifier: latest - version: 4.3.3(vue@3.4.29(typescript@5.4.5)) + version: 4.4.0(vue@3.4.31(typescript@5.5.3)) test/fixtures/minimal: dependencies: @@ -1003,8 +1002,8 @@ importers: specifier: workspace:* version: link:../../../packages/nuxt vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) test/fixtures/minimal-types: dependencies: @@ -1012,8 +1011,8 @@ importers: specifier: workspace:* version: link:../../../packages/nuxt vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) test/fixtures/runtime-compiler: dependencies: @@ -1023,16 +1022,16 @@ importers: devDependencies: '@unhead/shared': specifier: latest - version: 1.9.13 + version: 1.9.14 '@vue/devtools-api': specifier: latest version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.29 + version: 3.4.31 unhead: specifier: latest - version: 1.9.13 + version: 1.9.14 test/fixtures/suspense: dependencies: @@ -1040,24 +1039,24 @@ importers: specifier: workspace:* version: link:../../../packages/nuxt vue: - specifier: 3.4.29 - version: 3.4.29(typescript@5.4.5) + specifier: 3.4.31 + version: 3.4.31(typescript@5.5.3) devDependencies: '@unhead/shared': specifier: latest - version: 1.9.13 + version: 1.9.14 '@vue/devtools-api': specifier: latest version: 6.6.3 '@vue/shared': specifier: latest - version: 3.4.29 + version: 3.4.31 typescript: - specifier: latest - version: 5.4.5 + specifier: 5.5.3 + version: 5.5.3 unhead: specifier: latest - version: 1.9.13 + version: 1.9.14 packages: @@ -1072,8 +1071,8 @@ packages: '@antfu/install-pkg@0.1.1': resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} - '@antfu/utils@0.7.8': - resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} '@apidevtools/json-schema-ref-parser@11.6.0': resolution: {integrity: sha512-I+d5/XrazqY86/kGsmjVercjjJ+w6MVXJj7vnHfUgXzaoLJAl0/tPk2WXVpHUeRqHqyJ6AGkXBqx6Dc3wJkrCQ==} @@ -1266,8 +1265,9 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@cloudflare/kv-asset-handler@0.3.1': - resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} + '@cloudflare/kv-asset-handler@0.3.3': + resolution: {integrity: sha512-wpE+WiWW2kUNwNE0xyl4CtTAs+STjGtouHGiZPGRaisGB7eXXdbvfZdOrQJQVKgTxZiNAgVgmc7fj0sUmd8zyA==} + engines: {node: '>=16.13'} '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} @@ -1277,12 +1277,6 @@ packages: resolution: {integrity: sha512-Q1CnsQrytI3TlCB1IVWXWeqUIPGVEKGaE7IbVdt13Nq/3i0JESAkQQERrfiQkmlpijl+++qyqPgaS31Bvc1jRQ==} engines: {node: '>=16'} - '@esbuild/aix-ppc64@0.19.11': - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.20.2': resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -1295,17 +1289,11 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.19.11': - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] '@esbuild/android-arm64@0.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} @@ -1319,16 +1307,10 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.19.11': - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [android] '@esbuild/android-arm@0.20.2': @@ -1343,16 +1325,10 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.19.11': - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + engines: {node: '>=18'} + cpu: [arm] os: [android] '@esbuild/android-x64@0.20.2': @@ -1367,17 +1343,11 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.19.11': - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} @@ -1391,16 +1361,10 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.11': - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + engines: {node: '>=18'} + cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.20.2': @@ -1415,17 +1379,11 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.19.11': - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] '@esbuild/freebsd-arm64@0.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} @@ -1439,16 +1397,10 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.11': - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + engines: {node: '>=18'} + cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.20.2': @@ -1463,17 +1415,11 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.19.11': - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} @@ -1487,16 +1433,10 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.19.11': - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + engines: {node: '>=18'} + cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.20.2': @@ -1511,16 +1451,10 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.19.11': - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + engines: {node: '>=18'} + cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.20.2': @@ -1535,16 +1469,10 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.19.11': - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} - engines: {node: '>=12'} - cpu: [loong64] + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + engines: {node: '>=18'} + cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.20.2': @@ -1559,16 +1487,10 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.19.11': - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} - engines: {node: '>=12'} - cpu: [mips64el] + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + engines: {node: '>=18'} + cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.20.2': @@ -1583,16 +1505,10 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.19.11': - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} - engines: {node: '>=12'} - cpu: [ppc64] + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + engines: {node: '>=18'} + cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.20.2': @@ -1607,16 +1523,10 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.11': - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} - engines: {node: '>=12'} - cpu: [riscv64] + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + engines: {node: '>=18'} + cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.20.2': @@ -1631,16 +1541,10 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.19.11': - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} - engines: {node: '>=12'} - cpu: [s390x] + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + engines: {node: '>=18'} + cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.20.2': @@ -1655,16 +1559,10 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.19.11': - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + engines: {node: '>=18'} + cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.20.2': @@ -1679,17 +1577,11 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + engines: {node: '>=18'} cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.19.11': - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] + os: [linux] '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} @@ -1703,16 +1595,16 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} cpu: [x64] - os: [openbsd] + os: [netbsd] - '@esbuild/openbsd-x64@0.19.11': - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.20.2': @@ -1727,17 +1619,11 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + engines: {node: '>=18'} cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.19.11': - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] + os: [openbsd] '@esbuild/sunos-x64@0.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} @@ -1751,17 +1637,11 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.19.11': - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} @@ -1775,16 +1655,10 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.19.11': - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.20.2': @@ -1799,16 +1673,10 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.19.11': - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + engines: {node: '>=18'} + cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.20.2': @@ -1823,6 +1691,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1833,16 +1707,16 @@ packages: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.16.0': - resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==} + '@eslint/config-array@0.17.0': + resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.5.0': - resolution: {integrity: sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==} + '@eslint/js@9.6.0': + resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -1959,17 +1833,17 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@netlify/functions@2.6.0': - resolution: {integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==} + '@netlify/functions@2.7.0': + resolution: {integrity: sha512-4pXC/fuj3eGQ86wbgPiM4zY8+AsNrdz6vcv6FEdUJnZW+LqF8IWjQcY3S0d1hLeLKODYOqq4CkrzGyCpce63Nw==} engines: {node: '>=14.0.0'} '@netlify/node-cookies@0.1.0': resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/serverless-functions-api@1.14.0': - resolution: {integrity: sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q==} - engines: {node: ^14.18.0 || >=16.0.0} + '@netlify/serverless-functions-api@1.18.1': + resolution: {integrity: sha512-DrSvivchuwsuQW03zbVPT3nxCQa5tn7m4aoPOsQKibuJXIuSbfxzCBxPLz0+LchU5ds7YyOaCc9872Y32ngYzg==} + engines: {node: '>=18.0.0'} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1983,43 +1857,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/agent@2.2.0': - resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/fs@3.1.0': - resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/git@5.0.3': - resolution: {integrity: sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/installed-package-contents@2.0.2': - resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - '@npmcli/node-gyp@3.0.0': - resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@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} - '@nuxt/devalue@2.0.2': resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} @@ -2027,23 +1864,32 @@ packages: resolution: {integrity: sha512-YkcuSirzVVi36gWjIl9sJ4lsuiuQiIStY3upLy829zMTIXXeF8yUEBexKL6zHD3UPqCigoF7IuovnfLw78BQ9g==} peerDependencies: nuxt: workspace:* - vite: 5.3.1 + vite: 5.3.3 + + '@nuxt/devtools-kit@1.3.6': + resolution: {integrity: sha512-FM0s9CrTxwvaMcakWZc7oGqzSj4GPalcY3PmyZhollMyR2dqBB1n0ZfnTdLm8KUSgc7jdFR6DuG7PfQwAm06tQ==} + peerDependencies: + vite: 5.3.3 + + '@nuxt/devtools-kit@1.3.9': + resolution: {integrity: sha512-tgr/F+4BbI53/JxgaXl3cuV9dMuCXMsd4GEXN+JqtCdAkDbH3wL79GGWx0/6I9acGzRsB6UZ1H6U96nfgcIrAw==} + peerDependencies: + vite: 5.3.3 '@nuxt/devtools-ui-kit@1.3.3': resolution: {integrity: sha512-vM9dcb/CLXf1big6SmhVL0mh/JzNtZaJwHMYDd3vqv7jAedGuNfURDSGGVYQRFlSFisA3Cn0TnjDDs+dPrGuAA==} peerDependencies: '@nuxt/devtools': 1.3.3 - '@nuxt/devtools-wizard@1.3.3': - resolution: {integrity: sha512-9Umo9eDgwhSBDnTzWINXwJBYy2J3ay6OviM7Qdr08B9hDu+CU6MrEpsT4hZ3npD7p1E+9t1YQw/4fZ8NMcPVnw==} + '@nuxt/devtools-wizard@1.3.9': + resolution: {integrity: sha512-WMgwWWuyng+Y6k7sfBI95wYnec8TPFkuYbHHOlYQgqE9dAewPisSbEm3WkB7p/W9UqxpN8mvKN5qUg4sTmEpgQ==} hasBin: true - '@nuxt/devtools@1.3.3': - resolution: {integrity: sha512-rlFIggkUfYvSSZRkk7v9L4aqgmnCGSzcaYJYPA+RGtJQy7asJ3Ziqx/iXnj9Ih81L6vL/BqbX9G49beJGqL/MQ==} + '@nuxt/devtools@1.3.9': + resolution: {integrity: sha512-tFKlbUPgSXw4tyD8xpztQtJeVn3egdKbFCV0xc92FbfGbclAyaa3XhKA2tMWXEGZQpykAWMRNrGWN24FtXFA6Q==} hasBin: true peerDependencies: - nuxt: workspace:* - vite: 5.3.1 + vite: 5.3.3 '@nuxt/eslint-config@0.3.13': resolution: {integrity: sha512-xnMkcrz9vFjtIuKsfOPhNOKFVD51JZClj/16raciHVOK9eiqZuQjbxaf60b7ffk7cmD1EDhlQhbSxaLAJm/QYg==} @@ -2078,14 +1924,14 @@ packages: '@testing-library/vue': ^7.0.0 || ^8.0.1 '@vitest/ui': ^0.34.6 || ^1.0.0 '@vue/test-utils': ^2.4.2 - h3: '*' + h3: npm:h3-nightly@2.0.0-1718872656.6765a6e happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0 nitropack: '*' playwright-core: ^1.43.1 - vite: 5.3.1 + vite: 5.3.3 vitest: ^0.34.6 || ^1.0.0 - vue: 3.4.29 + vue: 3.4.31 vue-router: ^4.0.0 peerDependenciesMeta: '@cucumber/cucumber': @@ -2118,6 +1964,77 @@ packages: '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + '@opentelemetry/api-logs@0.50.0': + resolution: {integrity: sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==} + engines: {node: '>=14'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/core@1.23.0': + resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + + '@opentelemetry/core@1.25.1': + resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/otlp-transformer@0.50.0': + resolution: {integrity: sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.9.0' + + '@opentelemetry/resources@1.23.0': + resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + + '@opentelemetry/resources@1.25.1': + resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.50.0': + resolution: {integrity: sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.9.0' + '@opentelemetry/api-logs': '>=0.39.1' + + '@opentelemetry/sdk-metrics@1.23.0': + resolution: {integrity: sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.9.0' + + '@opentelemetry/sdk-trace-base@1.23.0': + resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + + '@opentelemetry/sdk-trace-base@1.25.1': + resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.23.0': + resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==} + engines: {node: '>=14'} + + '@opentelemetry/semantic-conventions@1.25.1': + resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==} + engines: {node: '>=14'} + '@parcel/watcher-android-arm64@2.4.1': resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} engines: {node: '>= 10.0.0'} @@ -2207,6 +2124,16 @@ packages: '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + '@redocly/ajv@8.11.0': + resolution: {integrity: sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw==} + + '@redocly/config@0.6.2': + resolution: {integrity: sha512-c3K5u64eMnr2ootPcpEI0ioIRLE8QP8ptvLxG9MwAmb2sU8HMRfVwXDU3AZiMVY2w4Ts0mDc+Xv4HTIk8DRqFw==} + + '@redocly/openapi-core@1.16.0': + resolution: {integrity: sha512-z06h+svyqbUcdAaePq8LPSwTPlm6Ig7j2VlL8skPBYnJvyaQ2IN7x/JkOvRL4ta+wcOCBdAex5JWnZbKaNktJg==} + engines: {node: '>=14.19.0', npm: '>=7.0.0'} + '@rollup/plugin-alias@5.1.0': resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} @@ -2225,6 +2152,15 @@ packages: rollup: optional: true + '@rollup/plugin-commonjs@26.0.1': + resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^4.18.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} @@ -2372,11 +2308,8 @@ packages: '@shikijs/core@1.1.2': resolution: {integrity: sha512-ERVzNQz88ZkDqUpWeC57Kp+Kmx5RjqeDBR1M8AGWGom4yrkITiTfXCGmjchlDSw12MhDTuPYR4HVFW8uT61RaQ==} - '@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/core@1.10.1': + resolution: {integrity: sha512-qdiJS5a/QGCff7VUFIqd0hDdWly9rDp8lhVmXVrS11aazX8LOTRLHAXkkEeONNsS43EcCd7gax9LLoOz4vlFQA==} '@shikijs/core@1.6.4': resolution: {integrity: sha512-WTU9rzZae1p2v6LOxMf6LhtmZOkIHYYW160IuahUyJy7YXPPjyWZLR1ag+SgD22ZMxZtz1gfU6Tccc8t0Il/XA==} @@ -2384,35 +2317,11 @@ packages: '@shikijs/transformers@1.1.2': resolution: {integrity: sha512-tldkUMW7RBkU2F6eXbiRMw3ja+hQer1EjwhD2NGOv6K0pgZdVp3JKjU8uisRtg65tyBqrVHq7zlLHVk7EKmUZA==} - '@shikijs/twoslash@1.1.6': - resolution: {integrity: sha512-0HJK7Il7HevTpRvpPlnJ0ow8UyoQxhvxQ0/lhfw1C0xW/7eLtSAtZfSKdel5Nch6HgbbtfucEzuUFmRIRXUFUg==} + '@shikijs/twoslash@1.10.1': + resolution: {integrity: sha512-BtB7TnpZEHFAVhVU9yPLOhWznJ5NFtHX1b8AEr4UXxYBGAqsM2b0VkjAlfJ32gQxVyr121G8q4g0ZT5eV5bi9w==} - '@shikijs/vitepress-twoslash@1.1.6': - resolution: {integrity: sha512-OpOu/KszoEIm/pdTMmnFW+cPKj+Vw8Jut4CLivqdwgHysTdMUphyG/nuaYcpVZfCQBu6JLfQ6izgkYrefiKzXQ==} - - '@sigstore/bundle@2.2.0': - resolution: {integrity: sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/core@1.0.0': - resolution: {integrity: sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/protobuf-specs@0.3.0': - resolution: {integrity: sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@sigstore/sign@2.2.3': - resolution: {integrity: sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/tuf@2.3.1': - resolution: {integrity: sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@sigstore/verify@1.1.0': - resolution: {integrity: sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg==} - engines: {node: ^16.14.0 || >=18.0.0} + '@shikijs/vitepress-twoslash@1.10.1': + resolution: {integrity: sha512-bBFHGKMGW0ACa8jFjDK2V9sWSh6wh1R1/U5VbVUr0HBm7kLR/H0bbr9RZeD91wKZb9JI3zJRwiNrTCueLuBw8A==} '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -2467,7 +2376,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@vue/compiler-sfc': '>= 3' - vue: 3.4.29 + vue: 3.4.31 peerDependenciesMeta: '@vue/compiler-sfc': optional: true @@ -2476,14 +2385,6 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} - '@tufjs/canonical-json@2.0.0': - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@tufjs/models@2.0.0': - resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} - engines: {node: ^16.14.0 || >=18.0.0} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -2514,9 +2415,6 @@ packages: '@types/file-loader@5.0.4': resolution: {integrity: sha512-aB4X92oi5D2nIGI8/kolnJ47btRM2MQjQS4eJgA/VnCD12x0+kP5v7b5beVQWKHLOcquwUXvv6aMt8PmMy9uug==} - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - '@types/google.maps@3.55.9': resolution: {integrity: sha512-phaOMtezbT3NaXPKiI3m0OosUS7Nly0auw3Be5s/CgMWLVoDAUP1Yb/Ld0TRoRp8ibrlT4VqM5kmzfvUA0UNLQ==} @@ -2544,9 +2442,6 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/jsonfile@6.1.2': - resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==} - '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} @@ -2562,11 +2457,8 @@ packages: '@types/node-sass@4.11.6': resolution: {integrity: sha512-Qkf5Fs9zzsXchenUY7oVdIHyv8FtPgqIXqOJzhh3FDqpYjqvc/gtZ3hlZVFmKQhl7wyI4+WkRbYufYC5pfY7iw==} - '@types/node@20.14.2': - resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} - - '@types/node@20.14.5': - resolution: {integrity: sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==} + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2698,27 +2590,27 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@unhead/dom@1.9.13': - resolution: {integrity: sha512-Fzc929W+5f88c90kn9aKs7EbgRBhphArMqBbifre134GWgrgDVR0odoadNa7i9eH4roPEDE1FIGcKVWuxOIHbg==} + '@unhead/dom@1.9.14': + resolution: {integrity: sha512-XZSZ2Wmm1Sv7k9scSFGrarbteSIl3p3I3oOUprKPDboBTvuG5q81Qz8O99NKUGKGJ8BKUkxCqE982eH3S8DKJA==} - '@unhead/schema@1.9.13': - resolution: {integrity: sha512-keOfTXC/tI21fURcEszBHgGvIg2AszQVQEXBG5BYgC2TQph25Bmv7Fk8W2ogFmj+DdZmFiDnSJdz/NKv3bqnTQ==} + '@unhead/schema@1.9.14': + resolution: {integrity: sha512-60NYSM6QjfK/wx4/QfaYyZ3XnNtwxS9a1oij2abEkGHPmA2/fqBOXeuHtnBo4eD42/Eg+owcS5s3mClPL8AkXw==} - '@unhead/shared@1.9.13': - resolution: {integrity: sha512-zNlJ2i5WonQZu/UMHJJzYMyBLhlCCxj1JxHL6lEG+Z6XiERfJDFr8mEAsQY7M2KrGAHR+WRBxNVoLw03j/kfrA==} + '@unhead/shared@1.9.14': + resolution: {integrity: sha512-7ZIC7uDV8gp3KHm5JxJ/NXMENQgkh+SCyTcsILSpOhkAGeszMHABrB6vjeZDGM4J9mRUxwyPn24KI2zG/R+XiQ==} - '@unhead/ssr@1.9.13': - resolution: {integrity: sha512-YjYrZ3u9uNDzrMybWMVFE0bDcMWBV6Dyqba2Sjq6x84NBRBpZfcUrc7v58iwp5m4XBNfyPs1+r5tOSV0qCiGww==} + '@unhead/ssr@1.9.14': + resolution: {integrity: sha512-OIBZu+WBiyCcDMJ4Ysu7uA6yMZ3fWXWyVrT2w0my5oQJgA0BS7lzfReRL8Sw6+ORlupn9Rn++HXfV0ixtxCxIA==} - '@unhead/vue@1.9.13': - resolution: {integrity: sha512-vIMNrB0kZ/3zalmE4j64eBLTkXkrcms78YbptXLvfnnQ9BLGiwsSuB3c0e+4S5Cn1dpMqUTfg5e/hCQYGDMhEA==} + '@unhead/vue@1.9.14': + resolution: {integrity: sha512-Yc7Qv0ze+iLte4urHiA+ghkF7y+svrawrT+ZrCuGXkZ/eRTF/AY2SKex+rJQJZsP+fKEQ2pGb72IsI5kHFZT3A==} peerDependencies: - vue: 3.4.29 + vue: 3.4.31 '@unocss/astro@0.60.4': resolution: {integrity: sha512-mfWiEVCUP00gxrMewwPfnTuw+ur5b6uIBRH2tIGkvfI21rLyZw8TIF08w7USz9C/47rvzsixBtCqq7v0g3Tw9w==} peerDependencies: - vite: 5.3.1 + vite: 5.3.3 peerDependenciesMeta: vite: optional: true @@ -2726,7 +2618,7 @@ packages: '@unocss/astro@0.61.0': resolution: {integrity: sha512-cbgztX/to5rMhAtEGCcR3ClMlK9F+lPxq21A72qsbWVQjiKa7W4O7qKBmUKPYsWRzJEJtdyN11A65H2037aKQw==} peerDependencies: - vite: 5.3.1 + vite: 5.3.3 peerDependenciesMeta: vite: optional: true @@ -2883,20 +2775,25 @@ packages: '@unocss/vite@0.60.4': resolution: {integrity: sha512-af9hhtW11geF56cotKUE16Fr+FirTdV/Al/usjKJ6P5hnCEQnqSHXQDFXL5Y6vXwcvLDmOhHYNrVR8duKgC8Mw==} peerDependencies: - vite: 5.3.1 + vite: 5.3.3 '@unocss/vite@0.61.0': resolution: {integrity: sha512-gjxLJrja1hqDwdd8z3QvzfMCcKppGqiL2+A6aHwG/AXfEmZMydA50U7VvJK7Wx8/Enm26G6JQrtGrpu+kK3QpQ==} peerDependencies: - vite: 5.3.1 + vite: 5.3.3 '@unocss/webpack@0.60.4': resolution: {integrity: sha512-TcPuiAZZO+a+xiahrCm7eEHlP8o667n+CWv+kpz4bidY5V8Xyxs1MjzJAPVOk8Kwz86HvQZyf2CG+3powNTwKA==} peerDependencies: webpack: ^4 || ^5 - '@vercel/nft@0.26.4': - resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==} + '@vercel/nft@0.26.5': + resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==} + engines: {node: '>=16'} + hasBin: true + + '@vercel/nft@0.27.2': + resolution: {integrity: sha512-7LeioS1yE5hwPpQfD3DdH04tuugKjo5KrJk3yK5kAI3Lh76iSsK/ezoFQfzuT08X3ZASQOd1y9ePjLNI9+TxTQ==} engines: {node: '>=16'} hasBin: true @@ -2904,15 +2801,15 @@ packages: resolution: {integrity: sha512-A+6wL2AdQhDsLsDnY+2v4rRDI1HLJGIMc97a8FURO9tqKsH5QvjWrzsa5DH3NlZsM742W2wODl2fF+bfcTWtXw==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: 5.3.1 - vue: 3.4.29 + vite: 5.3.3 + vue: 3.4.31 - '@vitejs/plugin-vue@5.0.4': - resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + '@vitejs/plugin-vue@5.0.5': + resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: 5.3.1 - vue: 3.4.29 + vite: 5.3.3 + vue: 3.4.31 '@vitest/coverage-v8@1.6.0': resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} @@ -2934,26 +2831,29 @@ packages: '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@volar/language-core@1.11.1': - resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + '@volar/language-core@2.3.4': + resolution: {integrity: sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==} - '@volar/language-core@2.3.0-alpha.15': - resolution: {integrity: sha512-uSfn1Dsl1w9o2aN9nnS6N/4FcjSbmpY6P/ypfW4kRhasEyICstu4swIz2joNR6532R02JwJY9Ta0pxRmXbBOqw==} + '@volar/language-core@2.4.0-alpha.2': + resolution: {integrity: sha512-BmVAHEHO6n8g958n1/S6cR9uf76YGlrp/D6rYSTBtdLKrS4CVK9A2MjKf+gpbj+A8JCGVA/16N4atPZZmI7kVw==} - '@volar/source-map@1.11.1': - resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + '@volar/source-map@2.3.4': + resolution: {integrity: sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==} - '@volar/source-map@2.3.0-alpha.15': - resolution: {integrity: sha512-DQr3FwhRxtxX4W6BoJkwajWjj6BAF5H/SgtzFaUP9z8txn6Y5oFxZPPDG+3Xwu3pTV3gvVlE7AL5E/G1jUr5Yg==} + '@volar/source-map@2.4.0-alpha.2': + resolution: {integrity: sha512-hnCOUx/zuvpDeh0YNC2bnQDEzzIr+tYzphpwTvUV4o4wXCAmyjNYqBR8ElR1s9O9pQF3n9CqLlYRYOe7RQnTHg==} - '@volar/typescript@2.3.0-alpha.15': - resolution: {integrity: sha512-sTzUyqGC1wkzVyY0XZBO5smCPDRvIqxlMTUw7bZebuD/7sGaVfyk9ryE29aG6CLpuYDev/ugpQsKoFVhFaQQ8A==} + '@volar/typescript@2.3.4': + resolution: {integrity: sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==} - '@vue-macros/common@1.10.1': - resolution: {integrity: sha512-uftSpfwdwitcQT2lM8aVxcfe5rKQBzC9jMrtJM5sG4hEuFyfIvnJihpPpnaWxY+X4p64k+YYXtBFv+1O5Bq3dg==} + '@volar/typescript@2.4.0-alpha.2': + resolution: {integrity: sha512-CPqp+QLOQRlaEW9jXXq6grr6v/vZWpsC6yv7TuKEHMly9K0m2afn31VI19/rohPFBUXBB7YnmBFbZyH4FT4Pmg==} + + '@vue-macros/common@1.10.4': + resolution: {integrity: sha512-akO6Bd6U4jP0+ZKbHq6mbYkw1coOrJpLeVmkuMlUsT5wZRi11BjauGcZHusBSzUjgCBsa1kZTyipxrxrWB54Hw==} engines: {node: '>=16.14.0'} peerDependencies: - vue: 3.4.29 + vue: 3.4.31 peerDependenciesMeta: vue: optional: true @@ -2974,84 +2874,58 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.4.29': - resolution: {integrity: sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==} + '@vue/compiler-core@3.4.31': + resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} - '@vue/compiler-dom@3.4.29': - resolution: {integrity: sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==} + '@vue/compiler-dom@3.4.31': + resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} - '@vue/compiler-sfc@3.4.29': - resolution: {integrity: sha512-zygDcEtn8ZimDlrEQyLUovoWgKQic6aEQqRXce2WXBvSeHbEbcAsXyCk9oG33ZkyWH4sl9D3tkYc1idoOkdqZQ==} + '@vue/compiler-sfc@3.4.31': + resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} - '@vue/compiler-ssr@3.4.29': - resolution: {integrity: sha512-rFbwCmxJ16tDp3N8XCx5xSQzjhidYjXllvEcqX/lopkoznlNPz3jyy0WGJCyhAaVQK677WWFt3YO/WUEkMMUFQ==} + '@vue/compiler-ssr@3.4.31': + resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} '@vue/devtools-api@6.6.3': resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} - '@vue/devtools-applet@7.1.3': - resolution: {integrity: sha512-525h17FzUF7ssko/U+yeP5jv0HaGm3eI4dVqncWPRCLTDtOy1V+srjoxYqr5qnzx6AdIU2icPQF2KNomd9FGZw==} + '@vue/devtools-core@7.3.3': + resolution: {integrity: sha512-i6Bwkx4OwfY0QVHjAdsivhlzZ2HMj7fbNRYJsWspQ+dkA1f3nTzycPqZmVUsm2TGkbQlhTMhCAdDoP97JKoc+g==} + + '@vue/devtools-kit@7.3.3': + resolution: {integrity: sha512-m+dFI57BrzKYPKq73mt4CJ5GWld5OLBseLHPHGVP7CaILNY9o1gWVJWAJeF8XtQ9LTiMxZSaK6NcBsFuxAhD0g==} + + '@vue/devtools-shared@7.3.4': + resolution: {integrity: sha512-5S5cHh7oWLZdboujnLteR3rT8UGfKHfA34aGLyFRB/B5TqBxmeLW1Rq32xW6TCDEy4isoYsYHGwJVp6DQcpiDA==} + + '@vue/language-core@2.0.24': + resolution: {integrity: sha512-997YD6Lq/66LXr3ZOLNxDCmyn13z9NP8LU1UZn9hGCDWhzlbXAIP0hOgL3w3x4RKEaWTaaRtsHP9DzHvmduruQ==} peerDependencies: - vue: 3.4.29 - - '@vue/devtools-core@7.1.3': - resolution: {integrity: sha512-pVbWi8pf2Z/fZPioYOIgu+cv9pQG55k4D8bL31ec+Wfe+pQR0ImFDu0OhHfch1Ra8uvLLrAZTF4IKeGAkmzD4A==} - - '@vue/devtools-kit@7.1.3': - resolution: {integrity: sha512-NFskFSJMVCBXTkByuk2llzI3KD3Blcm7WqiRorWjD6nClHPgkH5BobDH08rfulqq5ocRt5xV+3qOT1Q9FXJrwQ==} - peerDependencies: - vue: 3.4.29 - - '@vue/devtools-shared@7.1.3': - resolution: {integrity: sha512-KJ3AfgjTn3tJz/XKF+BlVShNPecim3G21oHRue+YQOsooW+0s+qXvm09U09aO7yBza5SivL1QgxSrzAbiKWjhQ==} - - '@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' - unocss: '>=0.50.0-0' - vue: 3.4.29 - - '@vue/language-core@1.8.27': - resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} - peerDependencies: - typescript: '*' + typescript: 5.5.3 peerDependenciesMeta: typescript: optional: true - '@vue/language-core@2.0.21': - resolution: {integrity: sha512-vjs6KwnCK++kIXT+eI63BGpJHfHNVJcUCr3RnvJsccT3vbJnZV5IhHR2puEkoOkIbDdp0Gqi1wEnv3hEd3WsxQ==} + '@vue/reactivity@3.4.31': + resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} + + '@vue/runtime-core@3.4.31': + resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} + + '@vue/runtime-dom@3.4.31': + resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} + + '@vue/server-renderer@3.4.31': + resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + vue: 3.4.31 - '@vue/reactivity@3.4.29': - resolution: {integrity: sha512-w8+KV+mb1a8ornnGQitnMdLfE0kXmteaxLdccm2XwdFxXst4q/Z7SEboCV5SqJNpZbKFeaRBBJBhW24aJyGINg==} - - '@vue/runtime-core@3.4.29': - resolution: {integrity: sha512-s8fmX3YVR/Rk5ig0ic0NuzTNjK2M7iLuVSZyMmCzN/+Mjuqqif1JasCtEtmtoJWF32pAtUjyuT2ljNKNLeOmnQ==} - - '@vue/runtime-dom@3.4.29': - resolution: {integrity: sha512-gI10atCrtOLf/2MPPMM+dpz3NGulo9ZZR9d1dWo4fYvm+xkfvRrw1ZmJ7mkWtiJVXSsdmPbcK1p5dZzOCKDN0g==} - - '@vue/server-renderer@3.4.29': - resolution: {integrity: sha512-HMLCmPI2j/k8PVkSBysrA2RxcxC5DgBiCdj7n7H2QtR8bQQPqKAe8qoaxLcInzouBmzwJ+J0x20ygN/B5mYBng==} - peerDependencies: - vue: 3.4.29 - - '@vue/shared@3.4.29': - resolution: {integrity: sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==} + '@vue/shared@3.4.31': + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} - '@vueuse/components@10.9.0': - resolution: {integrity: sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==} - '@vueuse/core@10.10.0': resolution: {integrity: sha512-vexJ/YXYs2S42B783rI95lMt3GzEwkxzC8Hb0Ndpd8rD+p+Lk/Za4bd797Ym7yq4jXqdSyj3JLChunF/vyYjUw==} @@ -3179,10 +3053,6 @@ packages: abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -3211,6 +3081,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -3219,10 +3094,6 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -3330,16 +3201,12 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - ast-kit@0.11.3: - resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} + ast-kit@0.12.2: + resolution: {integrity: sha512-es1zHFsnZ4Y4efz412nnrU3KvVAhgqy90a7Yt9Wpi5vQ3l4aYMOX0Qx4FD0elKr5ITEhiUGCSFcgGYf4YTuACg==} engines: {node: '>=16.14.0'} - ast-kit@0.9.5: - resolution: {integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==} - engines: {node: '>=16.14.0'} - - ast-walker-scope@0.5.0: - resolution: {integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==} + ast-walker-scope@0.6.1: + resolution: {integrity: sha512-0ZdQEsSfH3mX4BFbRCc3xOBjx5bDbm73+aAdQOHerPQNf8K0XFMAv79ucd2BpnSc4UMyvBDixiroT8yjm2Y6bw==} engines: {node: '>=16.14.0'} async-sema@3.1.1: @@ -3409,8 +3276,8 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3428,9 +3295,6 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -3439,8 +3303,8 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - c12@1.11.1: - resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==} + c12@2.0.0-beta.1: + resolution: {integrity: sha512-/m7oUlw0XGeiG4e4xx1s4dqCtTuZiGm79WFbo/n/ppbtEmPKez1xDvaTIfpnHBhuQ7OC78rxCdhMpYkQHLyHnA==} peerDependencies: magicast: ^0.3.4 peerDependenciesMeta: @@ -3451,10 +3315,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - cacache@18.0.0: - resolution: {integrity: sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==} - engines: {node: ^16.14.0 || >=18.0.0} - call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -3473,8 +3333,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001599: - resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} + caniuse-lite@1.0.30001636: + resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} case-police@0.6.1: resolution: {integrity: sha512-tOgkG3HhtzNVHU+HVHqbpVJ3CICPDihtlgoM2C4dx0RLeo6qcNVeBgiYJN5Bln+stxKrnKrw89CFgqYQDqwZQg==} @@ -3556,10 +3416,6 @@ packages: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - clear@0.1.0: resolution: {integrity: sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==} @@ -3595,6 +3451,9 @@ packages: colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -3665,6 +3524,10 @@ packages: cookie-es@1.1.0: resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + core-js-compat@3.37.1: resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} @@ -3675,7 +3538,7 @@ packages: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: - typescript: '>=4.9.5' + typescript: 5.5.3 peerDependenciesMeta: typescript: optional: true @@ -3684,7 +3547,7 @@ packages: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: - typescript: '>=4.9.5' + typescript: 5.5.3 peerDependenciesMeta: typescript: optional: true @@ -3701,11 +3564,11 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - critters@0.0.22: - resolution: {integrity: sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==} + critters@0.0.24: + resolution: {integrity: sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==} - croner@8.0.1: - resolution: {integrity: sha512-Hq1+lXVgjJjcS/U+uk6+yVmtxami0r0b+xVtlGyABgdz110l/kOnHWvlSI7nVzrTl8GCdZHwZS4pbBFT7hSL/g==} + croner@8.0.2: + resolution: {integrity: sha512-HgSdlSUX8mIgDTTiQpWUP4qY4IFRMsduPCYdca34Pelt8MVdxdaDOzreFtCscA6R+cRZd7UbD1CD3uyx6J3X1A==} engines: {node: '>=18.0'} cronstrue@2.50.0: @@ -3787,8 +3650,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.2: - resolution: {integrity: sha512-z95kGKZx8VWHfERj7LFzuiTxylbvEp07ZEYaFu+t6bFyNOXLd/+3oPyNaY7ISwcrfHFCkt8OfRo4IZxVRJZ7dg==} + cssnano-preset-default@7.0.3: + resolution: {integrity: sha512-dQ3Ba1p/oewICp/szF1XjFFgql8OlOBrI2YNBUUwhHQnJNoMOcQTa+Bi7jSJN8r/eM1egW0Ud1se/S7qlduWKA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -3799,8 +3662,8 @@ packages: peerDependencies: postcss: ^8.4.31 - cssnano@7.0.2: - resolution: {integrity: sha512-LXm/Xx6TNLzfHM2lBaIQHfvtdW5QfdbyLzfJAWZrclCAb47yVa0/yJG69+amcw3Lq0YZ+kyU40rbsMPLcMt9aw==} + cssnano@7.0.3: + resolution: {integrity: sha512-lsekJctOTqdCn4cNrtrSwsuMR/fHC+oiVMHkp/OugBWtwjH8XJag1/OtGaYJGtz0un1fQcRy4ryfYTQsfh+KSQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -3851,8 +3714,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3996,6 +3859,10 @@ packages: resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} engines: {node: '>=16'} + dot-prop@9.0.0: + resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} + engines: {node: '>=18'} + dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -4014,8 +3881,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.681: - resolution: {integrity: sha512-1PpuqJUFWoXZ1E54m8bsLPVYwIVCRzvaL+n5cjigGga4z854abDnFRc+cTa2th4S79kyGqya/1xoR7h+Y5G5lg==} + electron-to-chromium@1.4.806: + resolution: {integrity: sha512-nkoEX2QIB8kwCOtvtgwhXWy2IHVcOLQZu9Qo36uaGB835mdX/h8uLRlosL6QIhLVUnAiicXRW00PwaPZC74Nrg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4056,9 +3923,6 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true @@ -4066,8 +3930,8 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - error-stack-parser-es@0.1.1: - resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} + error-stack-parser-es@0.1.4: + resolution: {integrity: sha512-l0uy0kAoo6toCgVOYaAayqtPa2a1L15efxUMEnQebKwLQX2X0OpS6wMMQdc4juJXmxd9i40DuaUHq+mjIya9TQ==} error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} @@ -4091,16 +3955,6 @@ packages: peerDependencies: webpack: ^4.40.0 || ^5.0.0 - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -4111,8 +3965,13 @@ packages: engines: {node: '>=12'} hasBin: true - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + esbuild@0.23.0: + resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} escape-html@1.0.3: @@ -4216,8 +4075,8 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.5.0: - resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==} + eslint@9.6.0: + resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -4225,6 +4084,10 @@ packages: resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4279,13 +4142,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.2.0: - resolution: {integrity: sha512-vpOyYg7UAVKLAWWtRS2gAdgkT7oJbCn0me3gmUmxZih4kd3MF/oo8kNTBTIbkO3yuuF5uB4ZCZfn8BOolITYhg==} + execa@9.3.0: + resolution: {integrity: sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==} engines: {node: ^18.19.0 || >=20.5.0} - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -4312,6 +4172,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-npm-meta@0.1.1: + resolution: {integrity: sha512-uS9DjGncI/9XZ6HJFrci0WzSi++N8Jskbb2uB7+9SQlrgA3VaLhXhV9Gl5HwIGESHkayYYZFGnVNhJwRDKCWIA==} + fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} @@ -4368,7 +4231,7 @@ packages: resolution: {integrity: sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==} peerDependencies: '@nuxt/kit': workspace:* - vue: 3.4.29 + vue: 3.4.31 peerDependenciesMeta: '@nuxt/kit': optional: true @@ -4387,7 +4250,7 @@ packages: resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: - typescript: '>3.6.0' + typescript: 5.5.3 webpack: ^5.11.0 fraction.js@4.3.7: @@ -4409,10 +4272,6 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - fs-monkey@1.0.5: resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} @@ -4538,12 +4397,8 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - globby@14.0.1: - resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} gopd@1.0.1: @@ -4563,11 +4418,11 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - h3@1.11.1: - resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + h3-nightly@2.0.0-1718872656.6765a6e: + resolution: {integrity: sha512-LQ8hHOIzk+agD1p0K7UosByKuzDAKGLTnYsP0syV/XMr9E7pWmoaDSWkGdWjtLR9O3hinNqrXU1NW0kTmhiSag==} - happy-dom@14.12.0: - resolution: {integrity: sha512-dHcnlGFY2o2CdxfuYpqwSrBrpj/Kuzv4u4f3TU5yHW1GL24dKij4pv1BRjXnXc3uWo8qsCbToF9weaDsm/He8A==} + happy-dom@14.12.3: + resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==} engines: {node: '>=16.0.0'} has-bigints@1.0.2: @@ -4644,10 +4499,6 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - hosted-git-info@7.0.1: - resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} - engines: {node: ^16.14.0 || >=18.0.0} - html-entities@2.4.0: resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} @@ -4669,17 +4520,10 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} - engines: {node: '>= 14'} - http-shutdown@1.2.2: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -4688,8 +4532,8 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} httpxy@0.1.5: @@ -4728,10 +4572,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-walk@6.0.3: - resolution: {integrity: sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -4754,6 +4594,10 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -4772,13 +4616,10 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} - ioredis@5.3.2: - resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} + ioredis@5.4.1: + resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} engines: {node: '>=12.22.0'} - ip@2.0.1: - resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} - iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -4868,9 +4709,6 @@ packages: resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} engines: {node: '>=18'} - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -4954,6 +4792,10 @@ packages: is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -4975,10 +4817,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -5011,8 +4849,8 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@2.0.0-beta.3: + resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} hasBin: true js-beautify@1.14.9: @@ -5020,6 +4858,10 @@ packages: engines: {node: '>=12'} hasBin: true + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + js-stringify@1.0.2: resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} @@ -5057,10 +4899,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@3.0.0: - resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - json-schema-to-typescript-lite@14.0.1: resolution: {integrity: sha512-MhjvNC3MfEyYmKiC1rEzwDTCc22+hWU/2HKVfnklar4tifbkT8oZvvamEG1n550JeCmJ0V+2ly+5fF5K+lIExg==} @@ -5088,10 +4926,6 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} @@ -5116,8 +4950,8 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - launch-editor@2.6.1: - resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + launch-editor@2.8.0: + resolution: {integrity: sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==} lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} @@ -5127,8 +4961,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} lines-and-columns@1.2.4: @@ -5153,10 +4987,6 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -5182,6 +5012,9 @@ packages: lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -5214,8 +5047,8 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string-ast@0.3.0: - resolution: {integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==} + magic-string-ast@0.6.1: + resolution: {integrity: sha512-eczKQUDaBpB/mcEqZZNGEUG1FQNsXCuk3uOrCpu6y7qTygIy6jnpqDa62j9MGKSoqlXhM1lCFQv1THuGDQtvUA==} engines: {node: '>=16.14.0'} magic-string@0.30.10: @@ -5232,10 +5065,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-fetch-happen@13.0.0: - resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} - engines: {node: ^16.14.0 || >=18.0.0} - markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -5265,6 +5094,9 @@ packages: mdast-util-from-markdown@2.0.0: resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + mdast-util-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} @@ -5286,8 +5118,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -5308,10 +5140,6 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memfs@4.9.2: - resolution: {integrity: sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==} - engines: {node: '>= 4.0.0'} - memfs@4.9.3: resolution: {integrity: sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==} engines: {node: '>= 4.0.0'} @@ -5438,8 +5266,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - mime@4.0.1: - resolution: {integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==} + mime@4.0.3: + resolution: {integrity: sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==} engines: {node: '>=16'} hasBin: true @@ -5482,29 +5310,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-fetch@3.0.4: - resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-json-stream@1.0.1: - resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} @@ -5521,9 +5326,6 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mitt@2.1.0: - resolution: {integrity: sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==} - mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -5532,17 +5334,20 @@ packages: engines: {node: '>=10'} hasBin: true - mkdist@1.3.0: - resolution: {integrity: sha512-ZQrUvcL7LkRdzMREpDyg9AT18N9Tl5jc2qeKAUeEw0KGsgykbHbuRvysGAzTuGtwuSg0WQyNit5jh/k+Er3JEg==} + mkdist@1.5.3: + resolution: {integrity: sha512-XXvaXyS3k/fCExY2/c9z0fmJ9kWq/UZeZZGQ0R693M004lowXNJKIENdH5Cf5Uu3LtSB9vhGu/1YM7IGjWbfxA==} hasBin: true peerDependencies: - sass: ^1.63.6 - typescript: '>=5.1.6' + sass: ^1.77.6 + typescript: 5.5.3 + vue-tsc: ^1.8.27 || ^2.0.21 peerDependenciesMeta: sass: optional: true typescript: optional: true + vue-tsc: + optional: true mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} @@ -5564,9 +5369,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - muggle-string@0.3.1: - resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} - muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} @@ -5586,13 +5388,19 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + nitro-nightly@3.0.0-beta-28659787.859de2d6: + resolution: {integrity: sha512-aFCJkpUWOfzWCZMb4m1julUFAtzQUhB8+g06aVg3j1NOJPE2/rEyAXBq/G4PcGMKmXV2CH1laoRGCi/O0Lhv+w==} + engines: {node: ^16.11.0 || >=17.0.0} + hasBin: true + peerDependencies: + xml2js: ^0.6.2 + peerDependenciesMeta: + xml2js: + optional: true + nitropack@2.9.6: resolution: {integrity: sha512-HP2PE0dREcDIBVkL8Zm6eVyrDd10/GI9hTL00PHvjUM8I9Y/2cv73wRDmxNyInfrx/CJKHATb2U/pQrqpzJyXA==} engines: {node: ^16.11.0 || >=17.0.0} @@ -5636,11 +5444,6 @@ packages: resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} hasBin: true - node-gyp@10.1.0: - resolution: {integrity: sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -5654,18 +5457,9 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true - nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-package-data@6.0.0: - resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} - engines: {node: ^16.14.0 || >=18.0.0} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -5674,34 +5468,6 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - npm-bundled@3.0.0: - resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-install-checks@6.3.0: - resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-normalize-package-bin@3.0.1: - resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-package-arg@11.0.1: - resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-packlist@8.0.0: - resolution: {integrity: sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-pick-manifest@9.0.0: - resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} - engines: {node: ^16.14.0 || >=18.0.0} - - 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: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -5722,14 +5488,14 @@ packages: engines: {node: ^16.10.0 || >=18.0.0} hasBin: true - nuxt-content-twoslash@0.0.10: - resolution: {integrity: sha512-rnSX+qiMvCGMrUBWbHUidxQazw7NlCs80bK1uJ9gwXd2rupM7/niko/3b57jIJUZnDIhlvePk2eWpRDskvfajg==} + nuxt-content-twoslash@0.1.0: + resolution: {integrity: sha512-r0MOt/DZmzKBWUE8RAGT3Phsei5KuLDVJ2E3p7SFFrshdebWosF9EzKfFFReOFI6aWLtvwEIKb7pKPtUZkpEqQ==} hasBin: true peerDependencies: '@nuxtjs/mdc': '>=0.5.0' - nypm@0.3.8: - resolution: {integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==} + nypm@0.3.9: + resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true @@ -5785,10 +5551,16 @@ packages: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} - openapi-typescript@6.7.5: - resolution: {integrity: sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==} + openapi-typescript@6.7.6: + resolution: {integrity: sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==} hasBin: true + openapi-typescript@7.0.0: + resolution: {integrity: sha512-5NobO3pavTUVmErRVjnfiIIqCNjCrZeva4ElOA3nNKcSo4Jm5G7zv4WLcw6S+jDVnGGRkchxnJ2yIJBp9ULUAg==} + hasBin: true + peerDependencies: + typescript: 5.5.3 + opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true @@ -5825,19 +5597,10 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - pacote@18.0.6: - resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - param-case@2.1.1: resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} @@ -5860,6 +5623,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} @@ -5924,8 +5691,8 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -5943,12 +5710,12 @@ packages: resolution: {integrity: sha512-KocF8ve28eFjjuBKKGvzOBGzG8ew2OqOOSxTTZhirkzH7h3BI1vyzqlR0qbfcDBve1Yzo3FVlWUAtCRrbVN8Fw==} engines: {node: '>=14.16'} - pkg-types@1.1.1: - resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} - playwright-core@1.44.1: - resolution: {integrity: sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==} - engines: {node: '>=16'} + playwright-core@1.45.1: + resolution: {integrity: sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==} + engines: {node: '>=18'} hasBin: true pluralize@8.0.0: @@ -5961,20 +5728,20 @@ packages: peerDependencies: postcss: ^8.4.38 - postcss-colormin@7.0.0: - resolution: {integrity: sha512-5CN6fqtsEtEtwf3mFV3B4UaZnlYljPpzmGeDB4yCK067PnAtfLe9uX2aFZaEwxHE7HopG5rUkW8gyHrNAesHEg==} + postcss-colormin@7.0.1: + resolution: {integrity: sha512-uszdT0dULt3FQs47G5UHCduYK+FnkLYlpu1HpWu061eGsKZ7setoG7kA+WC9NQLsOJf69D5TxGHgnAdRgylnFQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-convert-values@7.0.0: - resolution: {integrity: sha512-bMuzDgXBbFbByPgj+/r6va8zNuIDUaIIbvAFgdO1t3zdgJZ77BZvu6dfWyd6gHEJnYzmeVr9ayUsAQL3/qLJ0w==} + postcss-convert-values@7.0.1: + resolution: {integrity: sha512-9x2ofb+hYPwHWMlWAzyWys2yMDZYGfkX9LodbaVTmLdlupmtH2AGvj8Up95wzzNPRDEzPIxQIkUaPJew3bT6xA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-discard-comments@7.0.0: - resolution: {integrity: sha512-xpSdzRqYmy4YIVmjfGyYXKaI1SRnK6CTr+4Zmvyof8ANwvgfZgGdVtmgAvzh59gJm808mJCWQC9tFN0KF5dEXA==} + postcss-discard-comments@7.0.1: + resolution: {integrity: sha512-GVrQxUOhmle1W6jX2SvNLt4kmN+JYhV7mzI6BMnkAWR9DtVvg8e67rrV0NfdWhn7x1zxvzdWkMBPdBDCls+uwQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -6022,14 +5789,14 @@ packages: postcss-media-query-parser@0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} - postcss-merge-longhand@7.0.1: - resolution: {integrity: sha512-qZlD26hnqSTMxSSOMS8+QCeRWtqOdMKeQHvHcBhjL3mJxKUs47cvO1Y1x3iTdYIk3ioMcRHTiy229TT0mEMH/A==} + postcss-merge-longhand@7.0.2: + resolution: {integrity: sha512-06vrW6ZWi9qeP7KMS9fsa9QW56+tIMW55KYqF7X3Ccn+NI2pIgPV6gFfvXTMQ05H90Y5DvnCDPZ2IuHa30PMUg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-merge-rules@7.0.1: - resolution: {integrity: sha512-bb8McYQbo2etgs0uVt6AfngajACK3FHSVP3sGLhprrjbtHJWgG03JZ4KKBlJ8/5Fb8/Rr+mMKaybMYeoYrAg0A==} + postcss-merge-rules@7.0.2: + resolution: {integrity: sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -6046,14 +5813,14 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-minify-params@7.0.0: - resolution: {integrity: sha512-XOJAuX8Q/9GT1sGxlUvaFEe2H9n50bniLZblXXsAT/BwSfFYvzSZeFG7uupwc0KbKpTnflnQ7aMwGzX6JUWliQ==} + postcss-minify-params@7.0.1: + resolution: {integrity: sha512-e+Xt8xErSRPgSRFxHeBCSxMiO8B8xng7lh8E0A5ep1VfwYhY8FXhu4Q3APMjgx9YDDbSp53IBGENrzygbUvgUQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-minify-selectors@7.0.1: - resolution: {integrity: sha512-YfIbGtcgMFquPxV2L/ASs36ZS4DsgfcDX9tQ8cTEIvBTv+0GXFKtcvvpi9tCKto/+DWGWYKMCESFG3Pnan0Feg==} + postcss-minify-selectors@7.0.2: + resolution: {integrity: sha512-dCzm04wqW1uqLmDZ41XYNBJfjgps3ZugDpogAmJXoCb5oCiTzIX4oPXXKxDpTvWOnKxQKR4EbV4ZawJBLcdXXA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -6082,6 +5849,12 @@ packages: peerDependencies: postcss: ^8.1.0 + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + postcss-normalize-charset@7.0.0: resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} @@ -6118,8 +5891,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-normalize-unicode@7.0.0: - resolution: {integrity: sha512-OnKV52/VFFDAim4n0pdI+JAhsolLBdnCKxE6VV5lW5Q/JeVGFN8UM8ur6/A3EAMLsT1ZRm3fDHh/rBoBQpqi2w==} + postcss-normalize-unicode@7.0.1: + resolution: {integrity: sha512-PTPGdY9xAkTw+8ZZ71DUePb7M/Vtgkbbq+EoI33EuyQEzbKemEQMhe5QSr0VP5UfZlreANDPxSfcdSprENcbsg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -6136,14 +5909,14 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-ordered-values@7.0.0: - resolution: {integrity: sha512-KROvC63A8UQW1eYDljQe1dtwc1E/M+mMwDT6z7khV/weHYLWTghaLRLunU7x1xw85lWFwVZOAGakxekYvKV+0w==} + postcss-ordered-values@7.0.1: + resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-reduce-initial@7.0.0: - resolution: {integrity: sha512-iqGgmBxY9LrblZ0BKLjmrA1mC/cf9A/wYCCqSmD6tMi+xAyVl0+DfixZIHSVDMbCPRPjNmVF0DFGth/IDGelFQ==} + postcss-reduce-initial@7.0.1: + resolution: {integrity: sha512-0JDUSV4bGB5FGM5g8MkS+rvqKukJZ7OTHw/lcKn7xPNqeaqJyQbUO8/dJpvyTpaVwPsd3Uc33+CfNzdVowp2WA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -6183,6 +5956,10 @@ packages: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -6212,14 +5989,6 @@ packages: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} - proc-log@3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -6227,18 +5996,6 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} @@ -6457,16 +6214,12 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.3.1: - resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -6478,12 +6231,12 @@ packages: engines: {node: '>=14.18'} hasBin: true - rollup-plugin-dts@6.1.0: - resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} + rollup-plugin-dts@6.1.1: + resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} engines: {node: '>=16'} peerDependencies: rollup: ^4.18.0 - typescript: ^4.5 || ^5.0 + typescript: 5.5.3 rollup-plugin-visualizer@5.12.0: resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} @@ -6564,8 +6317,8 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-placeholder@2.0.1: - resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} + serve-placeholder@2.0.2: + resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} @@ -6599,11 +6352,8 @@ packages: shiki@1.1.2: resolution: {integrity: sha512-qNzFwTv5uhEDNUIwp7wHjsrffVeLbmOgWnM5mZZhoiz7G2qAUvqVfUzuWfieD45/YAKipzCtdV9SndacKtABow==} - shiki@1.1.6: - resolution: {integrity: sha512-j4pcpvaQWHb42cHeV+W6P+X/VcK7Y2ctvEham6zB8wsuRQroT6cEMIkiUmBU2Nqg2qnHZDH6ZyRdVldcy0l6xw==} - - shiki@1.3.0: - resolution: {integrity: sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==} + shiki@1.10.1: + resolution: {integrity: sha512-uafV7WCgN4YYrccH6yxpnps6k38sSTlFRrwc4jycWmhWxJIm9dPrk+XkY1hZ2t0I7jmacMNb15Lf2fspa/Y3lg==} shiki@1.6.4: resolution: {integrity: sha512-X88chM7w8jnadoZtjPTi5ahCJx9pc9f8GfEkZAEYUTlcUZIEw2D/RY86HI/LkkE7Nj8TQWkiBfaFTJ3VJT6ESg==} @@ -6621,12 +6371,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sigstore@2.2.2: - resolution: {integrity: sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==} - engines: {node: ^16.14.0 || >=18.0.0} - - simple-git@3.24.0: - resolution: {integrity: sha512-QqAKee9Twv+3k8IFOFfPB2hnk6as6Y6ACUpwCtQvRYBAes23Wv3SZlHVobAzqcE8gfsisCvPw3HGW3HYM+VYYw==} + simple-git@3.25.0: + resolution: {integrity: sha512-KIY5sBnzc4yEcJXW7Tdv4viEz8KyG+nU0hay+DWZasvdFOYKeUZ6Xc25LUHHjw0tinPT7O1eY6pzX7pRT1K8rw==} sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} @@ -6651,10 +6397,6 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smob@1.4.1: resolution: {integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==} @@ -6662,20 +6404,6 @@ packages: resolution: {integrity: sha512-KObxdQANC/xje3OoatMbSwQf2XAvJ0RbK+4nmQRszFNZptbNRnMWqbLF/zb4sMi9xJ6HNyhWXeuZ9zC/I/XY7w==} engines: {node: '>= 18', pnpm: '>= 9'} - socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - - socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - - sonic-forest@1.0.0: - resolution: {integrity: sha512-yFO2N4uTUFtgKLw03WWFpN1iEwZySweMsa18XN3Kt0yYrlmVHunC2ZgM+437zDoKISAJHcH3Cg18U7d6tuSgSQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - source-list-map@2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} @@ -6719,10 +6447,6 @@ packages: splitpanes@3.1.5: resolution: {integrity: sha512-r3Mq2ITFQ5a2VXLOy4/Sb2Ptp7OfEO8YIbhVJqJXoFc9hc5nTXXkCvtVDjIGbvC0vdE7tse+xTM9BMjsszP6bw==} - ssri@10.0.5: - resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -6794,12 +6518,16 @@ packages: strip-literal@2.1.0: resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - stylehacks@7.0.1: - resolution: {integrity: sha512-PnrT4HzajnxbjfChpeBKLSpSykilnGBlD+pIffCoT5KbLur9fcL8uKRQJJap85byR2wCYZl/4Otk5eq76qeZxQ==} + stylehacks@7.0.2: + resolution: {integrity: sha512-HdkWZS9b4gbgYTdMg4gJLmm7biAUug1qTqXjS+u8X+/pUd+9Px1E+520GnOW3rST9MNsVOVpsJG+mPHNosxjOQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 + superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -6948,27 +6676,23 @@ packages: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: - typescript: '>=4.2.0' + typescript: 5.5.3 tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - tuf-js@2.2.0: - resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} - engines: {node: ^16.14.0 || >=18.0.0} + twoslash-protocol@0.2.9: + resolution: {integrity: sha512-uKQl8UboT6JU4VAtYaSI3DbNtgaNhFaTpCSMy/n3tRl5lMlMhrjiuNKdqx15xjcviconuGJ9oObkz1h9zJFrJg==} - twoslash-protocol@0.2.4: - resolution: {integrity: sha512-AEGTJj4mFGfvQc/M6qi0+s82Zq+mxLcjWZU+EUHGG8LQElyHDs+uDR+/3+m1l+WP7WL+QmWrVzFXgFX+hBg+bg==} - - twoslash-vue@0.2.4: - resolution: {integrity: sha512-AIcsYRSxn5WuZC+dD7/n99s1UEY6e5IljoGL3YijQvI/pylgsKk5sWXptp5NrRTH0srBLXoeVpE1re1Eo6eiJw==} + twoslash-vue@0.2.9: + resolution: {integrity: sha512-1f/AMB7jvifOMWjG2xdqnEywmkt+U2xef2TBfXugZasNDkqeTwdHCRGafi37Kk6smyzYYj2JLemMECfdSjWwoQ==} peerDependencies: - typescript: '*' + typescript: 5.5.3 - twoslash@0.2.4: - resolution: {integrity: sha512-hc3y11BjLHP4kV37TR6lUKksxpZp0LQi9kCy95ka6qobye/gV49PqXZIuWlRaRVGNvp4AJBMg8aiwkp0M8x/nQ==} + twoslash@0.2.9: + resolution: {integrity: sha512-oj7XY6h8E9nTZBmfRE1gpsSSUqAQo5kcIpFkXyQPp8UCsyCQsUlP2bJ2s32o02c1n5+xl4h9rcCsQ1F97Z6LZg==} peerDependencies: - typescript: '*' + typescript: 5.5.3 type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -6998,8 +6722,12 @@ packages: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + type-fest@4.20.1: + resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==} + engines: {node: '>=16'} + + typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} hasBin: true @@ -7017,11 +6745,11 @@ packages: ultrahtml@1.5.3: resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} - unbuild@2.0.0: - resolution: {integrity: sha512-JWCUYx3Oxdzvw2J9kTAp+DKE8df/BnH/JTSj6JyA4SH40ECdFu7FoJJcrm8G92B7TjofQ6GZGjJs50TRxoH6Wg==} + unbuild@3.0.0-rc.6: + resolution: {integrity: sha512-mkCsqiFfKt0loPewuoKQiU0wDR8V/I/AIbMJJOqZc2HTJ5MabJQCvz4YmBXRiW3F8MzY/Fqk7jS0WwJNHoQtjA==} hasBin: true peerDependencies: - typescript: ^5.1.6 + typescript: 5.5.3 peerDependenciesMeta: typescript: optional: true @@ -7038,15 +6766,15 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} - unhead@1.9.13: - resolution: {integrity: sha512-r7O7s5nw1vUrolueEitawh1HnrzXoekHPM1gsYMF3Tu0A2SzochDJw/1F+Nhu3e073rJ9cUGZqobZY3+RZS4Ew==} + unhead@1.9.14: + resolution: {integrity: sha512-npdYu6CfasX/IhB8OO27e3u4A1zhAY77T1FwWDIIUaJvugYTte5hjsolPX0/fG5jmjnWTFTuIkmbCSfj7bfIkg==} unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} @@ -7056,20 +6784,12 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} unimport@3.7.2: resolution: {integrity: sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==} - unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - unist-builder@4.0.0: resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} @@ -7097,7 +6817,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.60.4 - vite: 5.3.1 + vite: 5.3.3 peerDependenciesMeta: '@unocss/webpack': optional: true @@ -7109,23 +6829,27 @@ packages: engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.61.0 - vite: 5.3.1 + vite: 5.3.3 peerDependenciesMeta: '@unocss/webpack': optional: true vite: optional: true - unplugin-vue-router@0.7.0: - resolution: {integrity: sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==} + unplugin-vue-router@0.10.0: + resolution: {integrity: sha512-t9cwRvNONcrh7CZLUYrd4kGOH4xZRhsHeT+exaAuYFn7z87pkTHiHh3wBnGerfKGs22SnmJIIjcKyEa62CO+4w==} peerDependencies: - vue-router: ^4.1.0 + vue-router: ^4.4.0 peerDependenciesMeta: vue-router: optional: true - unplugin@1.10.1: - resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} + unplugin@1.10.2: + resolution: {integrity: sha512-KuPqnjU4HBcrSwmQatfdc5hU4xzaQrhoKqCKylwmLnbBvqj5udXL8cHrkOuYDoI4ESCwJIiAIKMujroIUKLgow==} + engines: {node: '>=14.0.0'} + + unplugin@1.11.0: + resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} engines: {node: '>=14.0.0'} unstorage@1.10.2: @@ -7187,8 +6911,8 @@ packages: unwasm@0.3.9: resolution: {integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==} - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -7229,10 +6953,6 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} @@ -7245,26 +6965,26 @@ packages: vite-hot-client@0.2.3: resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} peerDependencies: - vite: 5.3.1 + vite: 5.3.3 vite-node@1.6.0: resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-plugin-checker@0.6.4: - resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} + vite-plugin-checker@0.7.0: + resolution: {integrity: sha512-F3MdUORNLcPC0oDB9zxmPDhUC8X/3fzDShU5Izk4bqE4uTgxbQdOuOCa99bS6OSyWVC0uhHG4yAtWUXM2jOx9A==} engines: {node: '>=14.16'} peerDependencies: eslint: '>=7' meow: ^9.0.0 optionator: ^0.9.1 stylelint: '>=13' - typescript: '*' - vite: 5.3.1 + typescript: 5.5.3 + vite: 5.3.3 vls: '*' vti: '*' - vue-tsc: '>=1.3.9' + vue-tsc: '>=2.0.0' peerDependenciesMeta: eslint: optional: true @@ -7288,18 +7008,18 @@ packages: engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' - vite: 5.3.1 + vite: 5.3.3 peerDependenciesMeta: '@nuxt/kit': optional: true - vite-plugin-vue-inspector@5.1.0: - resolution: {integrity: sha512-yIw9dvBz9nQW7DPfbJtUVW6JTnt67hqTPRnTwT2CZWMqDvISyQHRjgKl32nlMh1DRH+92533Sv6t59pWMLUCWA==} + vite-plugin-vue-inspector@5.1.2: + resolution: {integrity: sha512-M+yH2LlQtVNzJAljQM+61CqDXBvHim8dU5ImGaQuwlo13tMDHue5D7IC20YwDJuWDODiYc/cZBUYspVlyPf2vQ==} peerDependencies: - vite: 5.3.1 + vite: 5.3.3 - vite@5.3.1: - resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} + vite@5.3.3: + resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -7394,7 +7114,7 @@ packages: hasBin: true peerDependencies: '@vue/composition-api': ^1.0.0-rc.1 - vue: 3.4.29 + vue: 3.4.31 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -7420,39 +7140,29 @@ packages: vue: optional: true - vue-observe-visibility@2.0.0-alpha.1: - resolution: {integrity: sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g==} - peerDependencies: - vue: 3.4.29 - vue-resize@2.0.0-alpha.1: resolution: {integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==} peerDependencies: - vue: 3.4.29 + vue: 3.4.31 - vue-router@4.3.3: - resolution: {integrity: sha512-8Q+u+WP4N2SXY38FDcF2H1dUEbYVHVPtPCPZj/GTZx8RCbiB8AtJP9+YIxn4Vs0svMTNQcLIzka4GH7Utkx9xQ==} + vue-router@4.4.0: + resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==} peerDependencies: - vue: 3.4.29 + vue: 3.4.31 vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} - vue-tsc@2.0.21: - resolution: {integrity: sha512-E6x1p1HaHES6Doy8pqtm7kQern79zRtIewkf9fiv7Y43Zo4AFDS5hKi+iHi2RwEhqRmuiwliB1LCEFEGwvxQnw==} + vue-tsc@2.0.24: + resolution: {integrity: sha512-1qi4P8L7yS78A7OJ7CDDxUIZPD6nVxoQEgX3DkRZNi1HI1qOfzOJwQlNpmwkogSVD6S/XcanbW9sktzpSxz6rA==} hasBin: true peerDependencies: - typescript: '*' + typescript: 5.5.3 - vue-virtual-scroller@2.0.0-beta.8: - resolution: {integrity: sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==} + vue@3.4.31: + resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} peerDependencies: - vue: 3.4.29 - - vue@3.4.29: - resolution: {integrity: sha512-8QUYfRcYzNlYuzKPfge1UWC6nF9ym0lx7mpGVPJYNhddxEf3DD0+kU07NTL0sXuiT2HuJuKr/iEO8WvXvT0RSQ==} - peerDependencies: - typescript: '*' + typescript: 5.5.3 peerDependenciesMeta: typescript: optional: true @@ -7498,8 +7208,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.92.0: - resolution: {integrity: sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==} + webpack@5.92.1: + resolution: {integrity: sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -7541,11 +7251,6 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} @@ -7581,8 +7286,8 @@ packages: utf-8-validate: optional: true - ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7610,9 +7315,13 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} + hasBin: true yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -7658,7 +7367,7 @@ snapshots: execa: 5.1.1 find-up: 5.0.0 - '@antfu/utils@0.7.8': {} + '@antfu/utils@0.7.10': {} '@apidevtools/json-schema-ref-parser@11.6.0': dependencies: @@ -7669,7 +7378,7 @@ snapshots: '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/compat-data@7.24.7': {} @@ -7686,7 +7395,7 @@ snapshots: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -7708,7 +7417,7 @@ snapshots: dependencies: '@babel/compat-data': 7.24.7 '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.0 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -7818,7 +7527,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/parser@7.24.7': dependencies: @@ -7912,7 +7621,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7925,7 +7634,7 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@cloudflare/kv-asset-handler@0.3.1': + '@cloudflare/kv-asset-handler@0.3.3': dependencies: mime: 3.0.0 @@ -7940,19 +7649,13 @@ snapshots: esquery: 1.5.0 jsdoc-type-pratt-parser: 4.0.0 - '@esbuild/aix-ppc64@0.19.11': - optional: true - '@esbuild/aix-ppc64@0.20.2': optional: true '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/android-arm64@0.18.20': - optional: true - - '@esbuild/android-arm64@0.19.11': + '@esbuild/aix-ppc64@0.23.0': optional: true '@esbuild/android-arm64@0.20.2': @@ -7961,10 +7664,7 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm@0.18.20': - optional: true - - '@esbuild/android-arm@0.19.11': + '@esbuild/android-arm64@0.23.0': optional: true '@esbuild/android-arm@0.20.2': @@ -7973,10 +7673,7 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-x64@0.18.20': - optional: true - - '@esbuild/android-x64@0.19.11': + '@esbuild/android-arm@0.23.0': optional: true '@esbuild/android-x64@0.20.2': @@ -7985,10 +7682,7 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.18.20': - optional: true - - '@esbuild/darwin-arm64@0.19.11': + '@esbuild/android-x64@0.23.0': optional: true '@esbuild/darwin-arm64@0.20.2': @@ -7997,10 +7691,7 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-x64@0.18.20': - optional: true - - '@esbuild/darwin-x64@0.19.11': + '@esbuild/darwin-arm64@0.23.0': optional: true '@esbuild/darwin-x64@0.20.2': @@ -8009,10 +7700,7 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.18.20': - optional: true - - '@esbuild/freebsd-arm64@0.19.11': + '@esbuild/darwin-x64@0.23.0': optional: true '@esbuild/freebsd-arm64@0.20.2': @@ -8021,10 +7709,7 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.18.20': - optional: true - - '@esbuild/freebsd-x64@0.19.11': + '@esbuild/freebsd-arm64@0.23.0': optional: true '@esbuild/freebsd-x64@0.20.2': @@ -8033,10 +7718,7 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.18.20': - optional: true - - '@esbuild/linux-arm64@0.19.11': + '@esbuild/freebsd-x64@0.23.0': optional: true '@esbuild/linux-arm64@0.20.2': @@ -8045,10 +7727,7 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.18.20': - optional: true - - '@esbuild/linux-arm@0.19.11': + '@esbuild/linux-arm64@0.23.0': optional: true '@esbuild/linux-arm@0.20.2': @@ -8057,10 +7736,7 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-ia32@0.18.20': - optional: true - - '@esbuild/linux-ia32@0.19.11': + '@esbuild/linux-arm@0.23.0': optional: true '@esbuild/linux-ia32@0.20.2': @@ -8069,10 +7745,7 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-loong64@0.18.20': - optional: true - - '@esbuild/linux-loong64@0.19.11': + '@esbuild/linux-ia32@0.23.0': optional: true '@esbuild/linux-loong64@0.20.2': @@ -8081,10 +7754,7 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.18.20': - optional: true - - '@esbuild/linux-mips64el@0.19.11': + '@esbuild/linux-loong64@0.23.0': optional: true '@esbuild/linux-mips64el@0.20.2': @@ -8093,10 +7763,7 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.18.20': - optional: true - - '@esbuild/linux-ppc64@0.19.11': + '@esbuild/linux-mips64el@0.23.0': optional: true '@esbuild/linux-ppc64@0.20.2': @@ -8105,10 +7772,7 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.18.20': - optional: true - - '@esbuild/linux-riscv64@0.19.11': + '@esbuild/linux-ppc64@0.23.0': optional: true '@esbuild/linux-riscv64@0.20.2': @@ -8117,10 +7781,7 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.18.20': - optional: true - - '@esbuild/linux-s390x@0.19.11': + '@esbuild/linux-riscv64@0.23.0': optional: true '@esbuild/linux-s390x@0.20.2': @@ -8129,10 +7790,7 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.18.20': - optional: true - - '@esbuild/linux-x64@0.19.11': + '@esbuild/linux-s390x@0.23.0': optional: true '@esbuild/linux-x64@0.20.2': @@ -8141,10 +7799,7 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.18.20': - optional: true - - '@esbuild/netbsd-x64@0.19.11': + '@esbuild/linux-x64@0.23.0': optional: true '@esbuild/netbsd-x64@0.20.2': @@ -8153,10 +7808,10 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.18.20': + '@esbuild/netbsd-x64@0.23.0': optional: true - '@esbuild/openbsd-x64@0.19.11': + '@esbuild/openbsd-arm64@0.23.0': optional: true '@esbuild/openbsd-x64@0.20.2': @@ -8165,10 +7820,7 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.18.20': - optional: true - - '@esbuild/sunos-x64@0.19.11': + '@esbuild/openbsd-x64@0.23.0': optional: true '@esbuild/sunos-x64@0.20.2': @@ -8177,10 +7829,7 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/win32-arm64@0.18.20': - optional: true - - '@esbuild/win32-arm64@0.19.11': + '@esbuild/sunos-x64@0.23.0': optional: true '@esbuild/win32-arm64@0.20.2': @@ -8189,10 +7838,7 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-ia32@0.18.20': - optional: true - - '@esbuild/win32-ia32@0.19.11': + '@esbuild/win32-arm64@0.23.0': optional: true '@esbuild/win32-ia32@0.20.2': @@ -8201,10 +7847,7 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-x64@0.18.20': - optional: true - - '@esbuild/win32-x64@0.19.11': + '@esbuild/win32-ia32@0.23.0': optional: true '@esbuild/win32-x64@0.20.2': @@ -8213,17 +7856,20 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.5.0)': + '@esbuild/win32-x64@0.23.0': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.6.0)': dependencies: - eslint: 9.5.0 + eslint: 9.6.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} - '@eslint/config-array@0.16.0': + '@eslint/config-array@0.17.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -8231,8 +7877,8 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 10.0.1 + debug: 4.3.5(supports-color@9.4.0) + espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 @@ -8242,7 +7888,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.5.0': {} + '@eslint/js@9.6.0': {} '@eslint/object-schema@2.1.4': {} @@ -8283,9 +7929,9 @@ snapshots: '@iconify/utils@2.1.24': dependencies: '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.8 + '@antfu/utils': 0.7.10 '@iconify/types': 2.0.0 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) kolorist: 1.8.0 local-pkg: 0.5.0 mlly: 1.7.1 @@ -8314,7 +7960,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.5 '@types/istanbul-reports': 3.0.3 - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/yargs': 17.0.28 chalk: 4.1.2 @@ -8360,7 +8006,7 @@ snapshots: '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -8381,16 +8027,25 @@ snapshots: - encoding - supports-color - '@netlify/functions@2.6.0': + '@netlify/functions@2.7.0(@opentelemetry/api@1.9.0)': dependencies: - '@netlify/serverless-functions-api': 1.14.0 + '@netlify/serverless-functions-api': 1.18.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - '@opentelemetry/api' '@netlify/node-cookies@0.1.0': {} - '@netlify/serverless-functions-api@1.14.0': + '@netlify/serverless-functions-api@1.18.1(@opentelemetry/api@1.9.0)': dependencies: '@netlify/node-cookies': 0.1.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.50.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 urlpattern-polyfill: 8.0.2 + transitivePeerDependencies: + - '@opentelemetry/api' '@nodelib/fs.scandir@2.1.5': dependencies: @@ -8404,104 +8059,54 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@npmcli/agent@2.2.0': - dependencies: - agent-base: 7.1.0 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - lru-cache: 10.2.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - - '@npmcli/fs@3.1.0': - dependencies: - semver: 7.6.2 - - '@npmcli/git@5.0.3': - dependencies: - '@npmcli/promise-spawn': 7.0.0 - lru-cache: 10.2.0 - npm-pick-manifest: 9.0.0 - proc-log: 3.0.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.6.2 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - '@npmcli/installed-package-contents@2.0.2': - dependencies: - npm-bundled: 3.0.0 - npm-normalize-package-bin: 3.0.1 - - '@npmcli/node-gyp@3.0.0': {} - - '@npmcli/package-json@5.1.0': - dependencies: - '@npmcli/git': 5.0.3 - glob: 10.4.1 - hosted-git-info: 7.0.1 - json-parse-even-better-errors: 3.0.0 - normalize-package-data: 6.0.0 - proc-log: 4.2.0 - semver: 7.6.2 - transitivePeerDependencies: - - bluebird - - '@npmcli/promise-spawn@7.0.0': - 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.1.0 - '@npmcli/promise-spawn': 7.0.0 - node-gyp: 10.1.0 - proc-log: 4.2.0 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.3.3(nuxt@packages+nuxt)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@nuxt/devtools-kit@1.3.3(nuxt@packages+nuxt)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema execa: 7.2.0 nuxt: link:packages/nuxt - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) - '@nuxt/devtools-ui-kit@1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.29)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': + '@nuxt/devtools-kit@1.3.6(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': + dependencies: + '@nuxt/kit': link:packages/kit + '@nuxt/schema': link:packages/schema + execa: 7.2.0 + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) + + '@nuxt/devtools-kit@1.3.9(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': + dependencies: + '@nuxt/kit': link:packages/kit + '@nuxt/schema': link:packages/schema + execa: 7.2.0 + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) + + '@nuxt/devtools-ui-kit@1.3.3(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)))(@vue/compiler-core@3.4.31)(nuxt@packages+nuxt)(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0))': dependencies: '@iconify-json/carbon': 1.1.35 '@iconify-json/logos': 1.1.43 '@iconify-json/ri': 1.1.20 '@iconify-json/tabler': 1.1.113 - '@nuxt/devtools': 1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) - '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools': 1.3.9(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) '@nuxt/kit': link:packages/kit '@nuxtjs/color-mode': 3.4.1 '@unocss/core': 0.60.4 - '@unocss/nuxt': 0.60.4(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.0(esbuild@0.21.5)) + '@unocss/nuxt': 0.60.4(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.1(esbuild@0.23.0)) '@unocss/preset-attributify': 0.60.4 '@unocss/preset-icons': 0.60.4 '@unocss/preset-mini': 0.60.4 '@unocss/reset': 0.60.4 - '@vueuse/core': 10.10.1(vue@3.4.29(typescript@5.4.5)) - '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.29(typescript@5.4.5)) - '@vueuse/nuxt': 10.10.0(nuxt@packages+nuxt)(vue@3.4.29(typescript@5.4.5)) + '@vueuse/core': 10.10.1(vue@3.4.31(typescript@5.5.3)) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.31(typescript@5.5.3)) + '@vueuse/nuxt': 10.10.0(nuxt@packages+nuxt)(vue@3.4.31(typescript@5.5.3)) defu: 6.1.4 focus-trap: 7.5.4 splitpanes: 3.1.5 - unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - v-lazy-show: 0.2.4(@vue/compiler-core@3.4.29) + unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) + v-lazy-show: 0.2.4(@vue/compiler-core@3.4.31) transitivePeerDependencies: - '@unocss/webpack' - '@vue/compiler-core' @@ -8525,7 +8130,7 @@ snapshots: - vue - webpack - '@nuxt/devtools-wizard@1.3.3': + '@nuxt/devtools-wizard@1.3.9': dependencies: consola: 3.2.3 diff: 5.2.0 @@ -8533,138 +8138,119 @@ snapshots: global-directory: 4.0.1 magicast: 0.3.4 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 prompts: 2.4.2 rc9: 2.1.2 semver: 7.6.2 - '@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))': + '@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': dependencies: - '@antfu/utils': 0.7.8 - '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-wizard': 1.3.3 + '@antfu/utils': 0.7.10 + '@nuxt/devtools-kit': 1.3.9(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-wizard': 1.3.9 '@nuxt/kit': link:packages/kit - '@vue/devtools-applet': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) - '@vue/devtools-core': 7.1.3(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) - '@vue/devtools-kit': 7.1.3(vue@3.4.29(typescript@5.4.5)) + '@vue/devtools-core': 7.3.3(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) + '@vue/devtools-kit': 7.3.3 birpc: 0.2.17 consola: 3.2.3 cronstrue: 2.50.0 destr: 2.0.3 - error-stack-parser-es: 0.1.1 + error-stack-parser-es: 0.1.4 execa: 7.2.0 fast-glob: 3.3.2 + fast-npm-meta: 0.1.1 flatted: 3.3.1 get-port-please: 3.1.2 hookable: 5.5.3 image-meta: 0.2.0 is-installed-globally: 1.0.0 - launch-editor: 2.6.1 + launch-editor: 2.8.0 local-pkg: 0.5.0 magicast: 0.3.4 - nuxt: link:packages/nuxt - nypm: 0.3.8 + nypm: 0.3.9 ohash: 1.1.3 - pacote: 18.0.6 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.1.1 + pkg-types: 1.1.3 rc9: 2.1.2 scule: 1.3.0 semver: 7.6.2 - simple-git: 3.24.0 + simple-git: 3.25.0 sirv: 2.0.4 unimport: 3.7.2(rollup@4.18.0) - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - vite-plugin-inspect: 0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - vite-plugin-vue-inspector: 5.1.0(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) + vite-plugin-inspect: 0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) + vite-plugin-vue-inspector: 5.1.2(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) which: 3.0.1 - ws: 8.17.0 + ws: 8.17.1 transitivePeerDependencies: - - '@unocss/reset' - - '@vue/composition-api' - - async-validator - - axios - - bluebird - bufferutil - - change-case - - drauu - - floating-vue - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - rollup - - sortablejs - supports-color - - universal-cookie - - unocss - utf-8-validate - - vue - '@nuxt/eslint-config@0.3.13(eslint@9.5.0)(typescript@5.4.5)': + '@nuxt/eslint-config@0.3.13(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@eslint/js': 9.5.0 - '@nuxt/eslint-plugin': 0.3.13(eslint@9.5.0)(typescript@5.4.5) + '@eslint/js': 9.6.0 + '@nuxt/eslint-plugin': 0.3.13(eslint@9.6.0)(typescript@5.5.3) '@rushstack/eslint-patch': 1.10.3 - '@stylistic/eslint-plugin': 2.1.0(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/eslint-plugin': 7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - eslint: 9.5.0 + '@stylistic/eslint-plugin': 2.1.0(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/eslint-plugin': 7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.6.0)(typescript@5.5.3))(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + eslint: 9.6.0 eslint-config-flat-gitignore: 0.1.5 eslint-flat-config-utils: 0.2.5 - eslint-plugin-import-x: 0.5.0(eslint@9.5.0)(typescript@5.4.5) - eslint-plugin-jsdoc: 48.2.5(eslint@9.5.0) - eslint-plugin-regexp: 2.5.0(eslint@9.5.0) - eslint-plugin-unicorn: 53.0.0(eslint@9.5.0) - eslint-plugin-vue: 9.26.0(eslint@9.5.0) + eslint-plugin-import-x: 0.5.0(eslint@9.6.0)(typescript@5.5.3) + eslint-plugin-jsdoc: 48.2.5(eslint@9.6.0) + eslint-plugin-regexp: 2.5.0(eslint@9.6.0) + eslint-plugin-unicorn: 53.0.0(eslint@9.6.0) + eslint-plugin-vue: 9.26.0(eslint@9.6.0) globals: 15.2.0 pathe: 1.1.2 tslib: 2.6.2 - vue-eslint-parser: 9.4.2(eslint@9.5.0) + vue-eslint-parser: 9.4.2(eslint@9.6.0) transitivePeerDependencies: - supports-color - typescript - '@nuxt/eslint-plugin@0.3.13(eslint@9.5.0)(typescript@5.4.5)': + '@nuxt/eslint-plugin@0.3.13(eslint@9.6.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - eslint: 9.5.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript - '@nuxt/friendly-errors-webpack-plugin@2.6.0(webpack@5.92.0)': + '@nuxt/friendly-errors-webpack-plugin@2.6.0(webpack@5.92.1)': dependencies: chalk: 2.4.2 consola: 3.2.3 error-stack-parser: 2.1.4 string-width: 4.2.3 - webpack: 5.92.0 + webpack: 5.92.1 - '@nuxt/scripts@0.5.1(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.29)(ioredis@5.3.2)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5))': + '@nuxt/scripts@0.5.1(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)))(@vue/compiler-core@3.4.31)(ioredis@5.4.1)(nuxt@packages+nuxt)(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0))': dependencies: - '@nuxt/devtools-kit': 1.3.3(nuxt@packages+nuxt)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - '@nuxt/devtools-ui-kit': 1.3.3(@nuxt/devtools@1.3.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(nuxt@packages+nuxt)(rollup@4.18.0)(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(@vue/compiler-core@3.4.29)(nuxt@packages+nuxt)(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)) + '@nuxt/devtools-kit': 1.3.6(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) + '@nuxt/devtools-ui-kit': 1.3.3(@nuxt/devtools@1.3.9(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)))(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)))(@vue/compiler-core@3.4.31)(nuxt@packages+nuxt)(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0)) '@nuxt/kit': link:packages/kit '@types/google.maps': 3.55.9 '@types/stripe-v3': 3.1.33 '@types/vimeo__player': 2.18.3 '@types/youtube': 0.0.50 - '@unhead/vue': 1.9.13(vue@3.4.29(typescript@5.4.5)) - '@vueuse/core': 10.10.1(vue@3.4.29(typescript@5.4.5)) + '@unhead/vue': 1.9.14(vue@3.4.31(typescript@5.5.3)) + '@vueuse/core': 10.10.1(vue@3.4.31(typescript@5.5.3)) consola: 3.2.3 defu: 6.1.4 estree-walker: 3.0.3 - h3: 1.11.1 + h3: h3-nightly@2.0.0-1718872656.6765a6e magic-string: 0.30.10 mlly: 1.7.1 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) ohash: 1.1.3 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 semver: 7.6.2 shiki: 1.6.4 sirv: 2.0.4 @@ -8672,8 +8258,8 @@ snapshots: third-party-capital: 1.0.30 ufo: 1.5.3 unimport: 3.7.2(rollup@4.18.0) - unplugin: 1.10.1 - unstorage: 1.10.2(ioredis@5.3.2) + unplugin: 1.11.0 + unstorage: 1.10.2(ioredis@5.4.1) valibot: 0.31.1 transitivePeerDependencies: - '@azure/app-configuration' @@ -8723,20 +8309,20 @@ snapshots: dotenv: 16.4.5 git-url-parse: 14.0.0 is-docker: 3.0.0 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 mri: 1.2.0 nanoid: 5.0.7 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) parse-git-config: 3.0.0 pathe: 1.1.2 rc9: 2.1.2 std-env: 3.7.0 - '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5))': + '@nuxt/test-utils@3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.1)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3))': dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema - c12: 1.11.1(magicast@0.3.4) + c12: 2.0.0-beta.1(magicast@0.3.4) consola: 3.2.3 defu: 6.1.4 destr: 2.0.3 @@ -8744,12 +8330,12 @@ snapshots: execa: 8.0.1 fake-indexeddb: 5.0.2 get-port-please: 3.1.2 - h3: 1.11.1 + h3: h3-nightly@2.0.0-1718872656.6765a6e local-pkg: 0.5.0 magic-string: 0.30.10 - nitropack: 2.9.6(encoding@0.1.13)(magicast@0.3.4) + nitropack: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) node-fetch-native: 1.6.4 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) pathe: 1.1.2 perfect-debounce: 1.0.0 radix3: 1.1.2 @@ -8757,17 +8343,17 @@ snapshots: std-env: 3.7.0 ufo: 1.5.3 unenv: 1.9.0 - unplugin: 1.10.1 - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)) - vue: 3.4.29(typescript@5.4.5) - vue-router: 4.3.3(vue@3.4.29(typescript@5.4.5)) + unplugin: 1.11.0 + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) + vitest-environment-nuxt: 1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.1)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)) + vue: 3.4.31(typescript@5.5.3) + vue-router: 4.4.0(vue@3.4.31(typescript@5.5.3)) optionalDependencies: - '@testing-library/vue': 8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)) + '@testing-library/vue': 8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)) '@vue/test-utils': 2.4.6 - happy-dom: 14.12.0 - playwright-core: 1.44.1 - vitest: 1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) + happy-dom: 14.12.3 + playwright-core: 1.45.1 + vitest: 1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - magicast @@ -8775,7 +8361,7 @@ snapshots: dependencies: '@nuxt/kit': link:packages/kit pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 semver: 7.6.2 '@nuxtjs/mdc@0.5.0': @@ -8784,15 +8370,15 @@ snapshots: '@shikijs/transformers': 1.1.2 '@types/hast': 3.0.4 '@types/mdast': 4.0.3 - '@vue/compiler-core': 3.4.29 + '@vue/compiler-core': 3.4.31 consola: 3.2.3 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) defu: 6.1.4 destr: 2.0.3 detab: 3.0.2 github-slugger: 2.0.0 hast-util-to-string: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 micromark-util-sanitize-uri: 2.0.0 ohash: 1.1.3 parse5: 7.1.2 @@ -8809,9 +8395,9 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 scule: 1.3.0 - shiki: 1.6.4 + shiki: 1.10.1 ufo: 1.5.3 - unified: 11.0.4 + unified: 11.0.5 unist-builder: 4.0.0 unist-util-visit: 5.0.0 unwasm: 0.3.9 @@ -8820,6 +8406,76 @@ snapshots: '@one-ini/wasm@0.1.1': {} + '@opentelemetry/api-logs@0.50.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/core@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.23.0 + + '@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.25.1 + + '@opentelemetry/otlp-transformer@0.50.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.50.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.50.0(@opentelemetry/api-logs@0.50.0)(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/resources@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.23.0 + + '@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + + '@opentelemetry/sdk-logs@0.50.0(@opentelemetry/api-logs@0.50.0)(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.50.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + lodash.merge: 4.6.2 + + '@opentelemetry/sdk-trace-base@1.23.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.23.0 + + '@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + + '@opentelemetry/semantic-conventions@1.23.0': {} + + '@opentelemetry/semantic-conventions@1.25.1': {} + '@parcel/watcher-android-arm64@2.4.1': optional: true @@ -8886,6 +8542,32 @@ snapshots: '@polka/url@1.0.0-next.24': {} + '@redocly/ajv@8.11.0': + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + '@redocly/config@0.6.2': {} + + '@redocly/openapi-core@1.16.0(encoding@0.1.13)(supports-color@9.4.0)': + dependencies: + '@redocly/ajv': 8.11.0 + '@redocly/config': 0.6.2 + colorette: 1.4.0 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + js-levenshtein: 1.1.6 + js-yaml: 4.1.0 + lodash.isequal: 4.5.0 + minimatch: 5.1.6 + node-fetch: 2.7.0(encoding@0.1.13) + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - encoding + - supports-color + '@rollup/plugin-alias@5.1.0(rollup@4.18.0)': dependencies: slash: 4.0.0 @@ -8903,6 +8585,17 @@ snapshots: optionalDependencies: rollup: 4.18.0 + '@rollup/plugin-commonjs@26.0.1(rollup@4.18.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 10.4.1 + is-reference: 1.2.1 + magic-string: 0.30.10 + optionalDependencies: + rollup: 4.18.0 + '@rollup/plugin-inject@5.0.5(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -9010,9 +8703,7 @@ snapshots: '@shikijs/core@1.1.2': {} - '@shikijs/core@1.1.6': {} - - '@shikijs/core@1.3.0': {} + '@shikijs/core@1.10.1': {} '@shikijs/core@1.6.4': {} @@ -9020,60 +8711,30 @@ snapshots: dependencies: shiki: 1.1.2 - '@shikijs/twoslash@1.1.6(typescript@5.4.5)': + '@shikijs/twoslash@1.10.1(typescript@5.5.3)': dependencies: - '@shikijs/core': 1.1.6 - twoslash: 0.2.4(typescript@5.4.5) + '@shikijs/core': 1.10.1 + twoslash: 0.2.9(typescript@5.5.3) transitivePeerDependencies: - supports-color - typescript - '@shikijs/vitepress-twoslash@1.1.6(@nuxt/kit@packages+kit)(typescript@5.4.5)': + '@shikijs/vitepress-twoslash@1.10.1(@nuxt/kit@packages+kit)(typescript@5.5.3)': dependencies: - '@shikijs/twoslash': 1.1.6(typescript@5.4.5) - floating-vue: 5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)) - mdast-util-from-markdown: 2.0.0 + '@shikijs/twoslash': 1.10.1(typescript@5.5.3) + floating-vue: 5.2.2(@nuxt/kit@packages+kit)(vue@3.4.31(typescript@5.5.3)) + mdast-util-from-markdown: 2.0.1 mdast-util-gfm: 3.0.0 - mdast-util-to-hast: 13.1.0 - shiki: 1.1.6 - twoslash: 0.2.4(typescript@5.4.5) - twoslash-vue: 0.2.4(typescript@5.4.5) - vue: 3.4.29(typescript@5.4.5) + mdast-util-to-hast: 13.2.0 + shiki: 1.10.1 + twoslash: 0.2.9(typescript@5.5.3) + twoslash-vue: 0.2.9(typescript@5.5.3) + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - '@nuxt/kit' - supports-color - typescript - '@sigstore/bundle@2.2.0': - dependencies: - '@sigstore/protobuf-specs': 0.3.0 - - '@sigstore/core@1.0.0': {} - - '@sigstore/protobuf-specs@0.3.0': {} - - '@sigstore/sign@2.2.3': - dependencies: - '@sigstore/bundle': 2.2.0 - '@sigstore/core': 1.0.0 - '@sigstore/protobuf-specs': 0.3.0 - make-fetch-happen: 13.0.0 - transitivePeerDependencies: - - supports-color - - '@sigstore/tuf@2.3.1': - dependencies: - '@sigstore/protobuf-specs': 0.3.0 - tuf-js: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@sigstore/verify@1.1.0': - dependencies: - '@sigstore/bundle': 2.2.0 - '@sigstore/core': 1.0.0 - '@sigstore/protobuf-specs': 0.3.0 - '@sinclair/typebox@0.27.8': {} '@sindresorhus/is@4.6.0': {} @@ -9082,49 +8743,49 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@stylistic/eslint-plugin-js@2.1.0(eslint@9.5.0)': + '@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0)': dependencies: '@types/eslint': 8.56.10 - acorn: 8.12.0 - eslint: 9.5.0 + acorn: 8.12.1 + eslint: 9.6.0 eslint-visitor-keys: 4.0.0 espree: 10.0.1 - '@stylistic/eslint-plugin-jsx@2.1.0(eslint@9.5.0)': + '@stylistic/eslint-plugin-jsx@2.1.0(eslint@9.6.0)': dependencies: - '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0) + '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.6.0) '@types/eslint': 8.56.10 - eslint: 9.5.0 + eslint: 9.6.0 estraverse: 5.3.0 picomatch: 4.0.2 - '@stylistic/eslint-plugin-plus@2.1.0(eslint@9.5.0)(typescript@5.4.5)': + '@stylistic/eslint-plugin-plus@2.1.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: '@types/eslint': 8.56.10 - '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - eslint: 9.5.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin-ts@2.1.0(eslint@9.5.0)(typescript@5.4.5)': + '@stylistic/eslint-plugin-ts@2.1.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0) + '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.6.0) '@types/eslint': 8.56.10 - '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - eslint: 9.5.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@2.1.0(eslint@9.5.0)(typescript@5.4.5)': + '@stylistic/eslint-plugin@2.1.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0) - '@stylistic/eslint-plugin-jsx': 2.1.0(eslint@9.5.0) - '@stylistic/eslint-plugin-plus': 2.1.0(eslint@9.5.0)(typescript@5.4.5) - '@stylistic/eslint-plugin-ts': 2.1.0(eslint@9.5.0)(typescript@5.4.5) + '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.6.0) + '@stylistic/eslint-plugin-jsx': 2.1.0(eslint@9.6.0) + '@stylistic/eslint-plugin-plus': 2.1.0(eslint@9.6.0)(typescript@5.5.3) + '@stylistic/eslint-plugin-ts': 2.1.0(eslint@9.6.0)(typescript@5.5.3) '@types/eslint': 8.56.10 - eslint: 9.5.0 + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript @@ -9140,36 +8801,29 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5))': + '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3))': dependencies: '@babel/runtime': 7.23.9 '@testing-library/dom': 9.3.4 '@vue/test-utils': 2.4.6 - vue: 3.4.29(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) optionalDependencies: - '@vue/compiler-sfc': 3.4.29 + '@vue/compiler-sfc': 3.4.31 '@trysound/sax@0.2.0': {} - '@tufjs/canonical-json@2.0.0': {} - - '@tufjs/models@2.0.0': - dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.4 - '@types/aria-query@5.0.4': {} '@types/clean-css@4.2.11': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 source-map: 0.6.1 '@types/clear@0.1.4': {} '@types/connect@3.4.37': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/debug@4.1.12': dependencies: @@ -9195,11 +8849,6 @@ snapshots: dependencies: '@types/webpack': 4.41.34 - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.2 - '@types/node': 20.14.2 - '@types/google.maps@3.55.9': {} '@types/hash-sum@1.0.2': {} @@ -9216,7 +8865,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/istanbul-lib-coverage@2.0.5': {} @@ -9230,10 +8879,6 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/jsonfile@6.1.2': - dependencies: - '@types/node': 20.14.5 - '@types/lodash-es@4.17.12': dependencies: '@types/lodash': 4.14.200 @@ -9248,13 +8893,9 @@ snapshots: '@types/node-sass@4.11.6': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 - '@types/node@20.14.2': - dependencies: - undici-types: 5.26.5 - - '@types/node@20.14.5': + '@types/node@20.14.9': dependencies: undici-types: 5.26.5 @@ -9270,7 +8911,7 @@ snapshots: '@types/sass-loader@8.0.8': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/node-sass': 4.11.6 '@types/webpack': 4.41.34 sass: 1.69.4 @@ -9297,9 +8938,9 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 tapable: 2.2.1 - webpack: 5.92.0 + webpack: 5.92.1 transitivePeerDependencies: - '@swc/core' - esbuild @@ -9310,7 +8951,7 @@ snapshots: dependencies: '@types/connect': 3.4.37 tapable: 2.2.1 - webpack: 5.92.0 + webpack: 5.92.1 transitivePeerDependencies: - '@swc/core' - esbuild @@ -9319,13 +8960,13 @@ snapshots: '@types/webpack-sources@3.2.1': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/source-list-map': 0.1.4 source-map: 0.7.4 '@types/webpack@4.41.34': dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 '@types/tapable': 1.0.10 '@types/uglify-js': 3.17.3 '@types/webpack-sources': 3.2.1 @@ -9340,34 +8981,34 @@ snapshots: '@types/youtube@0.0.50': {} - '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.6.0)(typescript@5.5.3))(eslint@9.6.0)(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.9.0(eslint@9.6.0)(typescript@5.5.3) '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/type-utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) '@typescript-eslint/visitor-keys': 7.9.0 - eslint: 9.5.0 + eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.9.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/scope-manager': 7.9.0 '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.5.3) '@typescript-eslint/visitor-keys': 7.9.0 - debug: 4.3.4 - eslint: 9.5.0 + debug: 4.3.5(supports-color@9.4.0) + eslint: 9.6.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -9376,42 +9017,42 @@ snapshots: '@typescript-eslint/types': 7.9.0 '@typescript-eslint/visitor-keys': 7.9.0 - '@typescript-eslint/type-utils@7.9.0(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.9.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - debug: 4.3.4 - eslint: 9.5.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.5.3) + '@typescript-eslint/utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + debug: 4.3.5(supports-color@9.4.0) + eslint: 9.6.0 + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@7.9.0': {} - '@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.9.0(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 7.9.0 '@typescript-eslint/visitor-keys': 7.9.0 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.9.0(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.9.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@typescript-eslint/scope-manager': 7.9.0 '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - eslint: 9.5.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.5.3) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript @@ -9423,66 +9064,56 @@ snapshots: '@typescript/vfs@1.5.0': dependencies: - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) transitivePeerDependencies: - supports-color '@ungap/structured-clone@1.2.0': {} - '@unhead/dom@1.9.13': + '@unhead/dom@1.9.14': dependencies: - '@unhead/schema': 1.9.13 - '@unhead/shared': 1.9.13 + '@unhead/schema': 1.9.14 + '@unhead/shared': 1.9.14 - '@unhead/schema@1.9.13': + '@unhead/schema@1.9.14': dependencies: hookable: 5.5.3 zhead: 2.2.4 - '@unhead/shared@1.9.13': + '@unhead/shared@1.9.14': dependencies: - '@unhead/schema': 1.9.13 + '@unhead/schema': 1.9.14 - '@unhead/ssr@1.9.13': + '@unhead/ssr@1.9.14': dependencies: - '@unhead/schema': 1.9.13 - '@unhead/shared': 1.9.13 + '@unhead/schema': 1.9.14 + '@unhead/shared': 1.9.14 - '@unhead/vue@1.9.13(vue@3.4.29(typescript@5.4.5))': + '@unhead/vue@1.9.14(vue@3.4.31(typescript@5.5.3))': dependencies: - '@unhead/schema': 1.9.13 - '@unhead/shared': 1.9.13 + '@unhead/schema': 1.9.14 + '@unhead/shared': 1.9.14 hookable: 5.5.3 - unhead: 1.9.13 - vue: 3.4.29(typescript@5.4.5) + unhead: 1.9.14 + vue: 3.4.31(typescript@5.5.3) - '@unocss/astro@0.60.4(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.60.4(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': dependencies: '@unocss/core': 0.60.4 '@unocss/reset': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - '@unocss/astro@0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/astro@0.61.0(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': dependencies: '@unocss/core': 0.61.0 '@unocss/reset': 0.61.0 - '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - rollup - - '@unocss/astro@0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))': - dependencies: - '@unocss/core': 0.61.0 - '@unocss/reset': 0.61.0 - '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0)) - optionalDependencies: - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup @@ -9558,7 +9189,7 @@ snapshots: gzip-size: 6.0.0 sirv: 2.0.4 - '@unocss/nuxt@0.60.4(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.0(esbuild@0.21.5))': + '@unocss/nuxt@0.60.4(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(webpack@5.92.1(esbuild@0.23.0))': dependencies: '@nuxt/kit': link:packages/kit '@unocss/config': 0.60.4 @@ -9571,9 +9202,9 @@ snapshots: '@unocss/preset-web-fonts': 0.60.4 '@unocss/preset-wind': 0.60.4 '@unocss/reset': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) - unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) + '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)) + unocss: 0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - postcss - rollup @@ -9581,7 +9212,7 @@ snapshots: - vite - webpack - '@unocss/postcss@0.60.4(postcss@8.4.38)': + '@unocss/postcss@0.60.4(postcss@8.4.39)': dependencies: '@unocss/config': 0.60.4 '@unocss/core': 0.60.4 @@ -9589,9 +9220,9 @@ snapshots: css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.10 - postcss: 8.4.38 + postcss: 8.4.39 - '@unocss/postcss@0.61.0(postcss@8.4.38)': + '@unocss/postcss@0.61.0(postcss@8.4.39)': dependencies: '@unocss/config': 0.61.0 '@unocss/core': 0.61.0 @@ -9599,7 +9230,7 @@ snapshots: css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.10 - postcss: 8.4.38 + postcss: 8.4.39 '@unocss/preset-attributify@0.60.4': dependencies: @@ -9613,7 +9244,7 @@ snapshots: dependencies: '@iconify/utils': 2.1.24 '@unocss/core': 0.60.4 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) transitivePeerDependencies: - supports-color @@ -9621,7 +9252,7 @@ snapshots: dependencies: '@iconify/utils': 2.1.24 '@unocss/core': 0.61.0 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) transitivePeerDependencies: - supports-color @@ -9672,12 +9303,12 @@ snapshots: '@unocss/preset-web-fonts@0.60.4': dependencies: '@unocss/core': 0.60.4 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) '@unocss/preset-web-fonts@0.61.0': dependencies: '@unocss/core': 0.61.0 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) '@unocss/preset-wind@0.60.4': dependencies: @@ -9763,7 +9394,7 @@ snapshots: dependencies: '@unocss/core': 0.61.0 - '@unocss/vite@0.60.4(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/vite@0.60.4(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -9775,11 +9406,11 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - '@unocss/vite@0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))': + '@unocss/vite@0.61.0(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -9791,27 +9422,11 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - rollup - '@unocss/vite@0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - '@unocss/config': 0.61.0 - '@unocss/core': 0.61.0 - '@unocss/inspector': 0.61.0 - '@unocss/scope': 0.61.0 - '@unocss/transformer-directives': 0.61.0 - chokidar: 3.6.0 - fast-glob: 3.3.2 - magic-string: 0.30.10 - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - rollup - - '@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5))': + '@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -9820,18 +9435,18 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - unplugin: 1.10.1 - webpack: 5.92.0(esbuild@0.21.5) + unplugin: 1.11.0 + webpack: 5.92.1(esbuild@0.23.0) webpack-sources: 3.2.3 transitivePeerDependencies: - rollup - '@vercel/nft@0.26.4(encoding@0.1.13)': + '@vercel/nft@0.26.5(encoding@0.1.13)': dependencies: '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) '@rollup/pluginutils': 4.2.1 - acorn: 8.12.0 - acorn-import-attributes: 1.9.5(acorn@8.12.0) + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -9844,42 +9459,55 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))': + '@vercel/nft@0.27.2(encoding@0.1.13)': + dependencies: + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) + '@rollup/pluginutils': 4.2.1 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + node-gyp-build: 4.6.1 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - vue: 3.4.29(typescript@5.4.5) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.4(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))': + '@vitejs/plugin-vue@5.0.5(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue@3.4.31(typescript@5.5.3))': dependencies: - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - vue: 3.4.29(typescript@5.4.5) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) + vue: 3.4.31(typescript@5.5.3) - '@vitejs/plugin-vue@5.0.4(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))': - dependencies: - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - vue: 3.4.29(typescript@5.4.5) - - '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))': + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 istanbul-reports: 3.1.6 magic-string: 0.30.10 magicast: 0.3.4 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0) + vitest: 1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -9912,38 +9540,40 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@volar/language-core@1.11.1': + '@volar/language-core@2.3.4': dependencies: - '@volar/source-map': 1.11.1 + '@volar/source-map': 2.3.4 - '@volar/language-core@2.3.0-alpha.15': + '@volar/language-core@2.4.0-alpha.2': dependencies: - '@volar/source-map': 2.3.0-alpha.15 + '@volar/source-map': 2.4.0-alpha.2 - '@volar/source-map@1.11.1': - dependencies: - muggle-string: 0.3.1 + '@volar/source-map@2.3.4': {} - '@volar/source-map@2.3.0-alpha.15': - dependencies: - muggle-string: 0.4.1 + '@volar/source-map@2.4.0-alpha.2': {} - '@volar/typescript@2.3.0-alpha.15': + '@volar/typescript@2.3.4': dependencies: - '@volar/language-core': 2.3.0-alpha.15 + '@volar/language-core': 2.3.4 path-browserify: 1.0.1 vscode-uri: 3.0.8 - '@vue-macros/common@1.10.1(rollup@4.18.0)(vue@3.4.29(typescript@5.4.5))': + '@volar/typescript@2.4.0-alpha.2': + dependencies: + '@volar/language-core': 2.4.0-alpha.2 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + + '@vue-macros/common@1.10.4(rollup@4.18.0)(vue@3.4.31(typescript@5.5.3))': dependencies: '@babel/types': 7.24.7 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - '@vue/compiler-sfc': 3.4.29 - ast-kit: 0.11.3(rollup@4.18.0) + '@vue/compiler-sfc': 3.4.31 + ast-kit: 0.12.2 local-pkg: 0.5.0 - magic-string-ast: 0.3.0 + magic-string-ast: 0.6.1 optionalDependencies: - vue: 3.4.29(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - rollup @@ -9974,220 +9604,142 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.7 '@babel/parser': 7.24.7 - '@vue/compiler-sfc': 3.4.29 + '@vue/compiler-sfc': 3.4.31 - '@vue/compiler-core@3.4.29': + '@vue/compiler-core@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/shared': 3.4.29 + '@vue/shared': 3.4.31 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.4.29': + '@vue/compiler-dom@3.4.31': dependencies: - '@vue/compiler-core': 3.4.29 - '@vue/shared': 3.4.29 + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/compiler-sfc@3.4.29': + '@vue/compiler-sfc@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.4.29 - '@vue/compiler-dom': 3.4.29 - '@vue/compiler-ssr': 3.4.29 - '@vue/shared': 3.4.29 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 estree-walker: 2.0.2 magic-string: 0.30.10 - postcss: 8.4.38 + postcss: 8.4.39 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.4.29': + '@vue/compiler-ssr@3.4.31': dependencies: - '@vue/compiler-dom': 3.4.29 - '@vue/shared': 3.4.29 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 '@vue/devtools-api@6.6.3': {} - '@vue/devtools-applet@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))': + '@vue/devtools-core@7.3.3(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))': dependencies: - '@vue/devtools-core': 7.1.3(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5)) - '@vue/devtools-kit': 7.1.3(vue@3.4.29(typescript@5.4.5)) - '@vue/devtools-shared': 7.1.3 - '@vue/devtools-ui': 7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.29(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.29(typescript@5.4.5) - vue-virtual-scroller: 2.0.0-beta.8(vue@3.4.29(typescript@5.4.5)) - transitivePeerDependencies: - - '@unocss/reset' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - floating-vue - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - - sortablejs - - universal-cookie - - unocss - - vite - - '@vue/devtools-core@7.1.3(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue@3.4.29(typescript@5.4.5))': - dependencies: - '@vue/devtools-kit': 7.1.3(vue@3.4.29(typescript@5.4.5)) - '@vue/devtools-shared': 7.1.3 + '@vue/devtools-kit': 7.3.3 + '@vue/devtools-shared': 7.3.4 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + vite-hot-client: 0.2.3(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) transitivePeerDependencies: - vite - - vue - '@vue/devtools-kit@7.1.3(vue@3.4.29(typescript@5.4.5))': + '@vue/devtools-kit@7.3.3': dependencies: - '@vue/devtools-shared': 7.1.3 + '@vue/devtools-shared': 7.3.4 + birpc: 0.2.17 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 speakingurl: 14.0.1 - vue: 3.4.29(typescript@5.4.5) + superjson: 2.2.1 - '@vue/devtools-shared@7.1.3': + '@vue/devtools-shared@7.3.4': dependencies: - rfdc: 1.3.1 + rfdc: 1.4.1 - '@vue/devtools-ui@7.1.3(@unocss/reset@0.61.0)(floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)))(unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)))(vue@3.4.29(typescript@5.4.5))': + '@vue/language-core@2.0.24(typescript@5.5.3)': dependencies: - '@unocss/reset': 0.61.0 - '@vue/devtools-shared': 7.1.3 - '@vueuse/components': 10.9.0(vue@3.4.29(typescript@5.4.5)) - '@vueuse/core': 10.10.1(vue@3.4.29(typescript@5.4.5)) - '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.29(typescript@5.4.5)) - colord: 2.9.3 - floating-vue: 5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)) - focus-trap: 7.5.4 - unocss: 0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) - vue: 3.4.29(typescript@5.4.5) - transitivePeerDependencies: - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - - sortablejs - - universal-cookie - - '@vue/language-core@1.8.27(typescript@5.4.5)': - dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.29 - '@vue/shared': 3.4.29 + '@volar/language-core': 2.4.0-alpha.2 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 computeds: 0.0.1 minimatch: 9.0.4 - muggle-string: 0.3.1 + muggle-string: 0.4.1 path-browserify: 1.0.1 vue-template-compiler: 2.7.14 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 - '@vue/language-core@2.0.21(typescript@5.4.5)': + '@vue/reactivity@3.4.31': dependencies: - '@volar/language-core': 2.3.0-alpha.15 - '@vue/compiler-dom': 3.4.29 - '@vue/shared': 3.4.29 - computeds: 0.0.1 - minimatch: 9.0.4 - path-browserify: 1.0.1 - vue-template-compiler: 2.7.14 - optionalDependencies: - typescript: 5.4.5 + '@vue/shared': 3.4.31 - '@vue/reactivity@3.4.29': + '@vue/runtime-core@3.4.31': dependencies: - '@vue/shared': 3.4.29 + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/runtime-core@3.4.29': + '@vue/runtime-dom@3.4.31': dependencies: - '@vue/reactivity': 3.4.29 - '@vue/shared': 3.4.29 - - '@vue/runtime-dom@3.4.29': - dependencies: - '@vue/reactivity': 3.4.29 - '@vue/runtime-core': 3.4.29 - '@vue/shared': 3.4.29 + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 csstype: 3.1.3 - '@vue/server-renderer@3.4.29(vue@3.4.29(typescript@5.4.5))': + '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.3))': dependencies: - '@vue/compiler-ssr': 3.4.29 - '@vue/shared': 3.4.29 - vue: 3.4.29(typescript@5.4.5) + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31(typescript@5.5.3) - '@vue/shared@3.4.29': {} + '@vue/shared@3.4.31': {} '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.14.9 vue-component-type-helpers: 2.0.6 - '@vueuse/components@10.9.0(vue@3.4.29(typescript@5.4.5))': - dependencies: - '@vueuse/core': 10.9.0(vue@3.4.29(typescript@5.4.5)) - '@vueuse/shared': 10.9.0(vue@3.4.29(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/core@10.10.0(vue@3.4.29(typescript@5.4.5))': + '@vueuse/core@10.10.0(vue@3.4.31(typescript@5.5.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.10.0 - '@vueuse/shared': 10.10.0(vue@3.4.29(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + '@vueuse/shared': 10.10.0(vue@3.4.31(typescript@5.5.3)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@10.10.1(vue@3.4.29(typescript@5.4.5))': + '@vueuse/core@10.10.1(vue@3.4.31(typescript@5.5.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.10.1 - '@vueuse/shared': 10.10.1(vue@3.4.29(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + '@vueuse/shared': 10.10.1(vue@3.4.31(typescript@5.5.3)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@10.9.0(vue@3.4.29(typescript@5.4.5))': + '@vueuse/core@10.9.0(vue@3.4.31(typescript@5.5.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.9.0 - '@vueuse/shared': 10.9.0(vue@3.4.29(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + '@vueuse/shared': 10.9.0(vue@3.4.31(typescript@5.5.3)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/integrations@10.9.0(focus-trap@7.5.4)(vue@3.4.29(typescript@5.4.5))': + '@vueuse/integrations@10.9.0(focus-trap@7.5.4)(vue@3.4.31(typescript@5.5.3))': dependencies: - '@vueuse/core': 10.9.0(vue@3.4.29(typescript@5.4.5)) - '@vueuse/shared': 10.9.0(vue@3.4.29(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + '@vueuse/core': 10.9.0(vue@3.4.31(typescript@5.5.3)) + '@vueuse/shared': 10.9.0(vue@3.4.31(typescript@5.5.3)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) optionalDependencies: focus-trap: 7.5.4 transitivePeerDependencies: @@ -10200,35 +9752,35 @@ snapshots: '@vueuse/metadata@10.9.0': {} - '@vueuse/nuxt@10.10.0(nuxt@packages+nuxt)(vue@3.4.29(typescript@5.4.5))': + '@vueuse/nuxt@10.10.0(nuxt@packages+nuxt)(vue@3.4.31(typescript@5.5.3))': dependencies: '@nuxt/kit': link:packages/kit - '@vueuse/core': 10.10.0(vue@3.4.29(typescript@5.4.5)) + '@vueuse/core': 10.10.0(vue@3.4.31(typescript@5.5.3)) '@vueuse/metadata': 10.10.0 local-pkg: 0.5.0 nuxt: link:packages/nuxt - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@10.10.0(vue@3.4.29(typescript@5.4.5))': + '@vueuse/shared@10.10.0(vue@3.4.31(typescript@5.5.3))': dependencies: - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@10.10.1(vue@3.4.29(typescript@5.4.5))': + '@vueuse/shared@10.10.1(vue@3.4.31(typescript@5.5.3))': dependencies: - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@10.9.0(vue@3.4.29(typescript@5.4.5))': + '@vueuse/shared@10.9.0(vue@3.4.31(typescript@5.5.3))': dependencies: - vue-demi: 0.14.8(vue@3.4.29(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -10315,8 +9867,6 @@ snapshots: abbrev@1.1.1: {} - abbrev@2.0.0: {} - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -10325,9 +9875,13 @@ snapshots: dependencies: acorn: 8.12.0 - acorn-jsx@5.3.2(acorn@8.12.0): + acorn-import-attributes@1.9.5(acorn@8.12.1): dependencies: - acorn: 8.12.0 + acorn: 8.12.1 + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 acorn-walk@8.3.2: {} @@ -10335,23 +9889,20 @@ snapshots: acorn@8.12.0: {} + acorn@8.12.1: {} + agent-base@6.0.2: dependencies: - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) transitivePeerDependencies: - supports-color - agent-base@7.1.0: + agent-base@7.1.0(supports-color@9.4.0): dependencies: - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) transitivePeerDependencies: - supports-color - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.12.0): optionalDependencies: ajv: 8.12.0 @@ -10456,41 +10007,28 @@ snapshots: assertion-error@1.1.0: {} - ast-kit@0.11.3(rollup@4.18.0): + ast-kit@0.12.2: dependencies: '@babel/parser': 7.24.7 - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) pathe: 1.1.2 - transitivePeerDependencies: - - rollup - ast-kit@0.9.5(rollup@4.18.0): + ast-walker-scope@0.6.1: dependencies: '@babel/parser': 7.24.7 - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - pathe: 1.1.2 - transitivePeerDependencies: - - rollup - - ast-walker-scope@0.5.0(rollup@4.18.0): - dependencies: - '@babel/parser': 7.24.7 - ast-kit: 0.9.5(rollup@4.18.0) - transitivePeerDependencies: - - rollup + ast-kit: 0.12.2 async-sema@3.1.1: {} async@3.2.4: {} - autoprefixer@10.4.19(postcss@8.4.38): + autoprefixer@10.4.19(postcss@8.4.39): dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001599 + browserslist: 4.23.1 + caniuse-lite: 1.0.30001636 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 + picocolors: 1.0.1 + postcss: 8.4.39 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.6: {} @@ -10538,12 +10076,12 @@ snapshots: dependencies: fill-range: 7.0.1 - browserslist@4.23.0: + browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001599 - electron-to-chromium: 1.4.681 + caniuse-lite: 1.0.30001636 + electron-to-chromium: 1.4.806 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.1) buffer-crc32@1.0.0: {} @@ -10556,10 +10094,6 @@ snapshots: builtin-modules@3.3.0: {} - builtins@5.0.1: - dependencies: - semver: 7.6.2 - bundle-name@3.0.0: dependencies: run-applescript: 5.0.0 @@ -10568,40 +10102,25 @@ snapshots: dependencies: run-applescript: 7.0.0 - c12@1.11.1(magicast@0.3.4): + c12@2.0.0-beta.1(magicast@0.3.4): dependencies: chokidar: 3.6.0 confbox: 0.1.7 defu: 6.1.4 dotenv: 16.4.5 giget: 1.2.3 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 mlly: 1.7.1 ohash: 1.1.3 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.1.1 + pkg-types: 1.1.3 rc9: 2.1.2 optionalDependencies: magicast: 0.3.4 cac@6.7.14: {} - cacache@18.0.0: - dependencies: - '@npmcli/fs': 3.1.0 - fs-minipass: 3.0.3 - glob: 10.4.1 - lru-cache: 10.2.0 - minipass: 7.1.2 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.5 - tar: 6.2.0 - unique-filename: 3.0.0 - call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -10621,12 +10140,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001599 + browserslist: 4.23.1 + caniuse-lite: 1.0.30001636 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001599: {} + caniuse-lite@1.0.30001636: {} case-police@0.6.1: {} @@ -10657,21 +10176,21 @@ snapshots: changelogen@0.5.5(magicast@0.3.4): dependencies: - c12: 1.11.1(magicast@0.3.4) + c12: 2.0.0-beta.1(magicast@0.3.4) colorette: 2.0.20 consola: 3.2.3 convert-gitmoji: 0.1.3 execa: 8.0.1 mri: 1.2.0 node-fetch-native: 1.6.4 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) open: 9.1.0 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 scule: 1.3.0 semver: 7.6.2 std-env: 3.7.0 - yaml: 2.3.4 + yaml: 2.4.5 transitivePeerDependencies: - magicast @@ -10725,8 +10244,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - clean-stack@2.2.0: {} - clear@0.1.0: {} clipboardy@4.0.0: @@ -10759,6 +10276,8 @@ snapshots: colord@2.9.3: {} + colorette@1.4.0: {} + colorette@2.0.20: {} comma-separated-tokens@2.0.3: {} @@ -10813,29 +10332,33 @@ snapshots: cookie-es@1.1.0: {} + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + core-js-compat@3.37.1: dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 core-util-is@1.0.3: {} - cosmiconfig@8.3.6(typescript@5.4.5): + cosmiconfig@8.3.6(typescript@5.5.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 - cosmiconfig@9.0.0(typescript@5.4.5): + cosmiconfig@9.0.0(typescript@5.5.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 crc-32@1.2.2: {} @@ -10846,7 +10369,7 @@ snapshots: create-require@1.1.1: {} - critters@0.0.22: + critters@0.0.24: dependencies: chalk: 4.1.2 css-select: 5.1.0 @@ -10856,7 +10379,7 @@ snapshots: postcss: 8.4.38 postcss-media-query-parser: 0.2.3 - croner@8.0.1: {} + croner@8.0.2: {} cronstrue@2.50.0: {} @@ -10868,32 +10391,32 @@ snapshots: crossws@0.2.4: {} - css-declaration-sorter@7.2.0(postcss@8.4.38): + css-declaration-sorter@7.2.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - css-loader@7.1.2(webpack@5.92.0): + css-loader@7.1.2(webpack@5.92.1): dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) - postcss-modules-scope: 3.2.0(postcss@8.4.38) - postcss-modules-values: 4.0.0(postcss@8.4.38) + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.39) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.39) + postcss-modules-scope: 3.2.0(postcss@8.4.39) + postcss-modules-values: 4.0.0(postcss@8.4.39) postcss-value-parser: 4.2.0 semver: 7.6.2 optionalDependencies: - webpack: 5.92.0 + webpack: 5.92.1 - css-minimizer-webpack-plugin@7.0.0(webpack@5.92.0): + css-minimizer-webpack-plugin@7.0.0(webpack@5.92.1): dependencies: '@jridgewell/trace-mapping': 0.3.25 - cssnano: 7.0.2(postcss@8.4.38) + cssnano: 7.0.3(postcss@8.4.39) jest-worker: 29.7.0 - postcss: 8.4.38 + postcss: 8.4.39 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.92.0 + webpack: 5.92.1 css-select@5.1.0: dependencies: @@ -10917,49 +10440,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.2(postcss@8.4.38): + cssnano-preset-default@7.0.3(postcss@8.4.39): dependencies: - browserslist: 4.23.0 - css-declaration-sorter: 7.2.0(postcss@8.4.38) - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-calc: 10.0.0(postcss@8.4.38) - postcss-colormin: 7.0.0(postcss@8.4.38) - postcss-convert-values: 7.0.0(postcss@8.4.38) - postcss-discard-comments: 7.0.0(postcss@8.4.38) - postcss-discard-duplicates: 7.0.0(postcss@8.4.38) - postcss-discard-empty: 7.0.0(postcss@8.4.38) - postcss-discard-overridden: 7.0.0(postcss@8.4.38) - postcss-merge-longhand: 7.0.1(postcss@8.4.38) - postcss-merge-rules: 7.0.1(postcss@8.4.38) - postcss-minify-font-values: 7.0.0(postcss@8.4.38) - postcss-minify-gradients: 7.0.0(postcss@8.4.38) - postcss-minify-params: 7.0.0(postcss@8.4.38) - postcss-minify-selectors: 7.0.1(postcss@8.4.38) - postcss-normalize-charset: 7.0.0(postcss@8.4.38) - postcss-normalize-display-values: 7.0.0(postcss@8.4.38) - postcss-normalize-positions: 7.0.0(postcss@8.4.38) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.38) - postcss-normalize-string: 7.0.0(postcss@8.4.38) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.38) - postcss-normalize-unicode: 7.0.0(postcss@8.4.38) - postcss-normalize-url: 7.0.0(postcss@8.4.38) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.38) - postcss-ordered-values: 7.0.0(postcss@8.4.38) - postcss-reduce-initial: 7.0.0(postcss@8.4.38) - postcss-reduce-transforms: 7.0.0(postcss@8.4.38) - postcss-svgo: 7.0.1(postcss@8.4.38) - postcss-unique-selectors: 7.0.1(postcss@8.4.38) + browserslist: 4.23.1 + css-declaration-sorter: 7.2.0(postcss@8.4.39) + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-calc: 10.0.0(postcss@8.4.39) + postcss-colormin: 7.0.1(postcss@8.4.39) + postcss-convert-values: 7.0.1(postcss@8.4.39) + postcss-discard-comments: 7.0.1(postcss@8.4.39) + postcss-discard-duplicates: 7.0.0(postcss@8.4.39) + postcss-discard-empty: 7.0.0(postcss@8.4.39) + postcss-discard-overridden: 7.0.0(postcss@8.4.39) + postcss-merge-longhand: 7.0.2(postcss@8.4.39) + postcss-merge-rules: 7.0.2(postcss@8.4.39) + postcss-minify-font-values: 7.0.0(postcss@8.4.39) + postcss-minify-gradients: 7.0.0(postcss@8.4.39) + postcss-minify-params: 7.0.1(postcss@8.4.39) + postcss-minify-selectors: 7.0.2(postcss@8.4.39) + postcss-normalize-charset: 7.0.0(postcss@8.4.39) + postcss-normalize-display-values: 7.0.0(postcss@8.4.39) + postcss-normalize-positions: 7.0.0(postcss@8.4.39) + postcss-normalize-repeat-style: 7.0.0(postcss@8.4.39) + postcss-normalize-string: 7.0.0(postcss@8.4.39) + postcss-normalize-timing-functions: 7.0.0(postcss@8.4.39) + postcss-normalize-unicode: 7.0.1(postcss@8.4.39) + postcss-normalize-url: 7.0.0(postcss@8.4.39) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.39) + postcss-ordered-values: 7.0.1(postcss@8.4.39) + postcss-reduce-initial: 7.0.1(postcss@8.4.39) + postcss-reduce-transforms: 7.0.0(postcss@8.4.39) + postcss-svgo: 7.0.1(postcss@8.4.39) + postcss-unique-selectors: 7.0.1(postcss@8.4.39) - cssnano-utils@5.0.0(postcss@8.4.38): + cssnano-utils@5.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - cssnano@7.0.2(postcss@8.4.38): + cssnano@7.0.3(postcss@8.4.39): dependencies: - cssnano-preset-default: 7.0.2(postcss@8.4.38) - lilconfig: 3.1.1 - postcss: 8.4.38 + cssnano-preset-default: 7.0.3(postcss@8.4.39) + lilconfig: 3.1.2 + postcss: 8.4.39 csso@5.0.5: dependencies: @@ -10983,9 +10506,11 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.4: + debug@4.3.5(supports-color@9.4.0): dependencies: ms: 2.1.2 + optionalDependencies: + supports-color: 9.4.0 decode-named-character-reference@1.0.2: dependencies: @@ -11121,6 +10646,10 @@ snapshots: dependencies: type-fest: 3.13.1 + dot-prop@9.0.0: + dependencies: + type-fest: 4.20.1 + dotenv@16.4.5: {} duplexer@0.1.2: {} @@ -11136,7 +10665,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.4.681: {} + electron-to-chromium@1.4.806: {} emoji-regex@8.0.0: {} @@ -11170,8 +10699,6 @@ snapshots: env-paths@2.2.1: {} - err-code@2.0.3: {} - errno@0.1.8: dependencies: prr: 1.0.1 @@ -11180,7 +10707,7 @@ snapshots: dependencies: is-arrayish: 0.2.1 - error-stack-parser-es@0.1.1: {} + error-stack-parser-es@0.1.4: {} error-stack-parser@2.1.4: dependencies: @@ -11206,73 +10733,22 @@ snapshots: es-module-lexer@1.3.1: {} - esbuild-loader@4.2.0(webpack@5.92.0(esbuild@0.21.5)): + esbuild-loader@4.2.0(webpack@5.92.1(esbuild@0.23.0)): dependencies: esbuild: 0.21.5 get-tsconfig: 4.7.3 loader-utils: 2.0.4 - webpack: 5.92.0(esbuild@0.21.5) + webpack: 5.92.1(esbuild@0.23.0) webpack-sources: 1.4.3 - esbuild-loader@4.2.0(webpack@5.92.0): + esbuild-loader@4.2.0(webpack@5.92.1): dependencies: esbuild: 0.21.5 get-tsconfig: 4.7.3 loader-utils: 2.0.4 - webpack: 5.92.0 + webpack: 5.92.1 webpack-sources: 1.4.3 - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - - esbuild@0.19.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 - esbuild@0.20.2: optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 @@ -11325,7 +10801,34 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - escalade@3.1.1: {} + esbuild@0.23.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.0 + '@esbuild/android-arm': 0.23.0 + '@esbuild/android-arm64': 0.23.0 + '@esbuild/android-x64': 0.23.0 + '@esbuild/darwin-arm64': 0.23.0 + '@esbuild/darwin-x64': 0.23.0 + '@esbuild/freebsd-arm64': 0.23.0 + '@esbuild/freebsd-x64': 0.23.0 + '@esbuild/linux-arm': 0.23.0 + '@esbuild/linux-arm64': 0.23.0 + '@esbuild/linux-ia32': 0.23.0 + '@esbuild/linux-loong64': 0.23.0 + '@esbuild/linux-mips64el': 0.23.0 + '@esbuild/linux-ppc64': 0.23.0 + '@esbuild/linux-riscv64': 0.23.0 + '@esbuild/linux-s390x': 0.23.0 + '@esbuild/linux-x64': 0.23.0 + '@esbuild/netbsd-x64': 0.23.0 + '@esbuild/openbsd-arm64': 0.23.0 + '@esbuild/openbsd-x64': 0.23.0 + '@esbuild/sunos-x64': 0.23.0 + '@esbuild/win32-arm64': 0.23.0 + '@esbuild/win32-ia32': 0.23.0 + '@esbuild/win32-x64': 0.23.0 + + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -11353,12 +10856,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@0.5.0(eslint@9.5.0)(typescript@5.4.5): + eslint-plugin-import-x@0.5.0(eslint@9.6.0)(typescript@5.5.3): dependencies: - '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - debug: 4.3.4 + '@typescript-eslint/utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + debug: 4.3.5(supports-color@9.4.0) doctrine: 3.0.0 - eslint: 9.5.0 + eslint: 9.6.0 eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.3 is-glob: 4.0.3 @@ -11368,14 +10871,14 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@48.2.5(eslint@9.5.0): + eslint-plugin-jsdoc@48.2.5(eslint@9.6.0): dependencies: '@es-joy/jsdoccomment': 0.43.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) escape-string-regexp: 4.0.0 - eslint: 9.5.0 + eslint: 9.6.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.6.2 @@ -11385,38 +10888,38 @@ snapshots: eslint-plugin-no-only-tests@3.1.0: {} - eslint-plugin-perfectionist@2.11.0(eslint@9.5.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.5.0)): + eslint-plugin-perfectionist@2.11.0(eslint@9.6.0)(typescript@5.5.3)(vue-eslint-parser@9.4.2(eslint@9.6.0)): dependencies: - '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5) - eslint: 9.5.0 + '@typescript-eslint/utils': 7.9.0(eslint@9.6.0)(typescript@5.5.3) + eslint: 9.6.0 minimatch: 9.0.4 natural-compare-lite: 1.4.0 optionalDependencies: - vue-eslint-parser: 9.4.2(eslint@9.5.0) + vue-eslint-parser: 9.4.2(eslint@9.6.0) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-regexp@2.5.0(eslint@9.5.0): + eslint-plugin-regexp@2.5.0(eslint@9.6.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 9.5.0 + eslint: 9.6.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-unicorn@53.0.0(eslint@9.5.0): + eslint-plugin-unicorn@53.0.0(eslint@9.6.0): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@eslint/eslintrc': 3.1.0 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 - eslint: 9.5.0 + eslint: 9.6.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -11430,16 +10933,16 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-vue@9.26.0(eslint@9.5.0): + eslint-plugin-vue@9.26.0(eslint@9.6.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - eslint: 9.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + eslint: 9.6.0 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.0 semver: 7.6.2 - vue-eslint-parser: 9.4.2(eslint@9.5.0) + vue-eslint-parser: 9.4.2(eslint@9.6.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -11459,10 +10962,10 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-typegen@0.2.4(eslint@9.5.0): + eslint-typegen@0.2.4(eslint@9.6.0): dependencies: '@types/eslint': 8.56.10 - eslint: 9.5.0 + eslint: 9.6.0 json-schema-to-typescript-lite: 14.0.1 ohash: 1.1.3 @@ -11470,24 +10973,24 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.5.0: + eslint@9.6.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/config-array': 0.16.0 + '@eslint/config-array': 0.17.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.5.0 + '@eslint/js': 9.6.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.0.0 - espree: 10.0.1 + espree: 10.1.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -11511,14 +11014,20 @@ snapshots: espree@10.0.1: dependencies: - acorn: 8.12.0 - acorn-jsx: 5.3.2(acorn@8.12.0) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 4.0.0 espree@9.6.1: dependencies: - acorn: 8.12.0 - acorn-jsx: 5.3.2(acorn@8.12.0) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 esquery@1.5.0: @@ -11583,7 +11092,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.2.0: + execa@9.3.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.3 @@ -11598,8 +11107,6 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.0.0 - exponential-backoff@3.1.1: {} - extend@3.0.2: {} externality@1.0.2: @@ -11627,6 +11134,8 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-npm-meta@0.1.1: {} + fastq@1.15.0: dependencies: reusify: 1.0.4 @@ -11643,11 +11152,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.92.0): + file-loader@6.2.0(webpack@5.92.1): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.92.0 + webpack: 5.92.1 file-uri-to-path@1.0.0: {} @@ -11680,11 +11189,11 @@ snapshots: flatted@3.3.1: {} - floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.29(typescript@5.4.5)): + floating-vue@5.2.2(@nuxt/kit@packages+kit)(vue@3.4.31(typescript@5.5.3)): dependencies: '@floating-ui/dom': 1.1.1 - vue: 3.4.29(typescript@5.4.5) - vue-resize: 2.0.0-alpha.1(vue@3.4.29(typescript@5.4.5)) + vue: 3.4.31(typescript@5.5.3) + vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3)) optionalDependencies: '@nuxt/kit': link:packages/kit @@ -11701,12 +11210,12 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.4.5)(webpack@5.92.0): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.5.3)(webpack@5.92.1): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 chokidar: 3.6.0 - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.5.3) deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.5.3 @@ -11715,8 +11224,8 @@ snapshots: schema-utils: 3.3.0 semver: 7.6.2 tapable: 2.2.1 - typescript: 5.4.5 - webpack: 5.92.0 + typescript: 5.5.3 + webpack: 5.92.1 fraction.js@4.3.7: {} @@ -11738,10 +11247,6 @@ snapshots: dependencies: minipass: 3.3.6 - fs-minipass@3.0.3: - dependencies: - minipass: 7.1.2 - fs-monkey@1.0.5: {} fs.realpath@1.0.0: {} @@ -11802,7 +11307,7 @@ snapshots: consola: 3.2.3 defu: 6.1.4 node-fetch-native: 1.6.4 - nypm: 0.3.8 + nypm: 0.3.9 ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.0 @@ -11878,15 +11383,7 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 4.0.0 - - globby@14.0.1: + globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.2.0 fast-glob: 3.3.2 @@ -11911,7 +11408,7 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.11.1: + h3-nightly@2.0.0-1718872656.6765a6e: dependencies: cookie-es: 1.1.0 crossws: 0.2.4 @@ -11926,7 +11423,7 @@ snapshots: transitivePeerDependencies: - uWebSockets.js - happy-dom@14.12.0: + happy-dom@14.12.3: dependencies: entities: 4.5.0 webidl-conversions: 7.0.0 @@ -11991,7 +11488,7 @@ snapshots: hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 @@ -12027,10 +11524,6 @@ snapshots: hosted-git-info@2.8.9: {} - hosted-git-info@7.0.1: - dependencies: - lru-cache: 10.2.0 - html-entities@2.4.0: {} html-escaper@2.0.2: {} @@ -12056,8 +11549,6 @@ snapshots: domutils: 3.1.0 entities: 4.5.0 - http-cache-semantics@4.1.1: {} - http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -12066,26 +11557,19 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-proxy-agent@7.0.0: - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - http-shutdown@1.2.2: {} https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.2: + https-proxy-agent@7.0.5(supports-color@9.4.0): dependencies: - agent-base: 7.1.0 - debug: 4.3.4 + agent-base: 7.1.0(supports-color@9.4.0) + debug: 4.3.5(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -12106,16 +11590,12 @@ snapshots: safer-buffer: 2.1.2 optional: true - icss-utils@5.1.0(postcss@8.4.38): + icss-utils@5.1.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 ieee754@1.2.1: {} - ignore-walk@6.0.3: - dependencies: - minimatch: 9.0.4 - ignore@5.3.1: {} image-meta@0.2.0: {} @@ -12131,6 +11611,8 @@ snapshots: indent-string@4.0.0: {} + index-to-position@0.1.2: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -12148,11 +11630,11 @@ snapshots: has: 1.0.4 side-channel: 1.0.4 - ioredis@5.3.2: + ioredis@5.4.1: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -12162,8 +11644,6 @@ snapshots: transitivePeerDependencies: - supports-color - ip@2.0.1: {} - iron-webcrypto@1.2.1: {} is-absolute-url@4.0.1: {} @@ -12245,8 +11725,6 @@ snapshots: global-directory: 4.0.1 is-path-inside: 4.0.0 - is-lambda@1.0.1: {} - is-map@2.0.2: {} is-module@1.0.0: {} @@ -12313,6 +11791,8 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-what@4.1.16: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -12331,8 +11811,6 @@ snapshots: isexe@2.0.0: {} - isexe@3.1.1: {} - istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -12344,7 +11822,7 @@ snapshots: istanbul-lib-source-maps@5.0.4: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -12363,7 +11841,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.5 + '@types/node': 20.14.9 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12371,18 +11849,18 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.14.5 + '@types/node': 20.14.9 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.6: {} + jiti@2.0.0-beta.3: {} js-beautify@1.14.9: dependencies: @@ -12391,6 +11869,8 @@ snapshots: glob: 8.1.0 nopt: 6.0.0 + js-levenshtein@1.1.6: {} + js-stringify@1.0.2: {} js-tokens@4.0.0: {} @@ -12413,8 +11893,6 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@3.0.0: {} - json-schema-to-typescript-lite@14.0.1: dependencies: '@apidevtools/json-schema-ref-parser': 11.6.0 @@ -12440,8 +11918,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonparse@1.3.1: {} - jsonpointer@5.0.1: {} jstransformer@1.0.0: @@ -12461,9 +11937,9 @@ snapshots: kolorist@1.8.0: {} - launch-editor@2.6.1: + launch-editor@2.8.0: dependencies: - picocolors: 1.0.0 + picocolors: 1.0.1 shell-quote: 1.8.1 lazystream@1.0.1: @@ -12475,7 +11951,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@3.1.1: {} + lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -12493,9 +11969,9 @@ snapshots: crossws: 0.2.4 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.11.1 + h3: h3-nightly@2.0.0-1718872656.6765a6e http-shutdown: 1.2.2 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 mlly: 1.7.1 node-forge: 1.3.1 pathe: 1.1.2 @@ -12520,12 +11996,10 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 - local-pkg@0.4.3: {} - local-pkg@0.5.0: dependencies: mlly: 1.7.1 - pkg-types: 1.1.1 + pkg-types: 1.1.3 locate-path@5.0.0: dependencies: @@ -12545,6 +12019,8 @@ snapshots: lodash.isarguments@3.1.0: {} + lodash.isequal@4.5.0: {} + lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} @@ -12569,7 +12045,7 @@ snapshots: lz-string@1.5.0: {} - magic-string-ast@0.3.0: + magic-string-ast@0.6.1: dependencies: magic-string: 0.30.10 @@ -12591,22 +12067,6 @@ snapshots: dependencies: semver: 7.6.2 - make-fetch-happen@13.0.0: - dependencies: - '@npmcli/agent': 2.2.0 - cacache: 18.0.0 - http-cache-semantics: 4.1.1 - is-lambda: 1.0.1 - minipass: 7.1.2 - minipass-fetch: 3.0.4 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - ssri: 10.0.5 - transitivePeerDependencies: - - supports-color - markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -12667,6 +12127,23 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-from-markdown@2.0.1: + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-autolink-literal@2.0.0: dependencies: '@types/mdast': 4.0.3 @@ -12679,7 +12156,7 @@ snapshots: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: @@ -12688,7 +12165,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -12698,7 +12175,7 @@ snapshots: '@types/mdast': 4.0.3 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -12707,14 +12184,14 @@ snapshots: dependencies: '@types/mdast': 4.0.3 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-gfm-autolink-literal: 2.0.0 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -12729,7 +12206,7 @@ snapshots: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 - mdast-util-to-hast@13.1.0: + mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.3 @@ -12766,13 +12243,6 @@ snapshots: dependencies: fs-monkey: 1.0.5 - memfs@4.9.2: - dependencies: - '@jsonjoy.com/json-pack': 1.0.3(tslib@2.6.2) - '@jsonjoy.com/util': 1.1.2(tslib@2.6.2) - sonic-forest: 1.0.0(tslib@2.6.2) - tslib: 2.6.2 - memfs@4.9.3: dependencies: '@jsonjoy.com/json-pack': 1.0.3(tslib@2.6.2) @@ -12961,7 +12431,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -12997,7 +12467,7 @@ snapshots: mime@3.0.0: {} - mime@4.0.1: {} + mime@4.0.3: {} mimic-fn@2.1.0: {} @@ -13005,11 +12475,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.0(webpack@5.92.0): + mini-css-extract-plugin@2.9.0(webpack@5.92.1): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.92.0 + webpack: 5.92.1 minimatch@3.0.8: dependencies: @@ -13033,35 +12503,6 @@ snapshots: minimist@1.2.8: {} - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - - minipass-fetch@3.0.4: - dependencies: - minipass: 7.1.2 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-json-stream@1.0.1: - dependencies: - jsonparse: 1.3.1 - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - minipass@3.3.6: dependencies: yallist: 4.0.0 @@ -13075,32 +12516,37 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mitt@2.1.0: {} - mitt@3.0.1: {} mkdirp@1.0.4: {} - mkdist@1.3.0(sass@1.69.4)(typescript@5.4.5): + mkdist@1.5.3(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)): dependencies: + autoprefixer: 10.4.19(postcss@8.4.39) citty: 0.1.6 + cssnano: 7.0.3(postcss@8.4.39) defu: 6.1.4 - esbuild: 0.18.20 + esbuild: 0.21.5 fs-extra: 11.2.0 - globby: 13.2.2 - jiti: 1.21.6 + globby: 14.0.2 + jiti: 2.0.0-beta.3 mlly: 1.7.1 mri: 1.2.0 pathe: 1.1.2 + pkg-types: 1.1.3 + postcss: 8.4.39 + postcss-nested: 6.0.1(postcss@8.4.39) + semver: 7.6.2 optionalDependencies: sass: 1.69.4 - typescript: 5.4.5 + typescript: 5.5.3 + vue-tsc: 2.0.24(typescript@5.5.3) mlly@1.7.1: dependencies: acorn: 8.12.0 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 ufo: 1.5.3 mri@1.2.0: {} @@ -13113,8 +12559,6 @@ snapshots: ms@2.1.3: {} - muggle-string@0.3.1: {} - muggle-string@0.4.1: {} nanoid@3.3.7: {} @@ -13125,16 +12569,14 @@ snapshots: natural-compare@1.4.0: {} - negotiator@0.6.3: {} - neo-async@2.6.2: {} - nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4): + nitro-nightly@3.0.0-beta-28659787.859de2d6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(typescript@5.5.3): dependencies: - '@cloudflare/kv-asset-handler': 0.3.1 - '@netlify/functions': 2.6.0 + '@cloudflare/kv-asset-handler': 0.3.3 + '@netlify/functions': 2.7.0(@opentelemetry/api@1.9.0) '@rollup/plugin-alias': 5.1.0(rollup@4.18.0) - '@rollup/plugin-commonjs': 25.0.7(rollup@4.18.0) + '@rollup/plugin-commonjs': 26.0.1(rollup@4.18.0) '@rollup/plugin-inject': 5.0.5(rollup@4.18.0) '@rollup/plugin-json': 6.1.0(rollup@4.18.0) '@rollup/plugin-node-resolve': 15.2.3(rollup@4.18.0) @@ -13142,53 +12584,55 @@ snapshots: '@rollup/plugin-terser': 0.4.4(rollup@4.18.0) '@rollup/pluginutils': 5.1.0(rollup@4.18.0) '@types/http-proxy': 1.17.14 - '@vercel/nft': 0.26.4(encoding@0.1.13) + '@vercel/nft': 0.27.2(encoding@0.1.13) archiver: 7.0.1 - c12: 1.11.1(magicast@0.3.4) + c12: 2.0.0-beta.1(magicast@0.3.4) chalk: 5.3.0 chokidar: 3.6.0 citty: 0.1.6 + compatx: 0.1.8 + confbox: 0.1.7 consola: 3.2.3 cookie-es: 1.1.0 - croner: 8.0.1 + croner: 8.0.2 crossws: 0.2.4 db0: 0.1.4 defu: 6.1.4 destr: 2.0.3 - dot-prop: 8.0.2 - esbuild: 0.20.2 + dot-prop: 9.0.0 + esbuild: 0.21.5 escape-string-regexp: 5.0.0 etag: 1.8.1 fs-extra: 11.2.0 - globby: 14.0.1 + globby: 14.0.2 gzip-size: 7.0.0 - h3: 1.11.1 + h3: h3-nightly@2.0.0-1718872656.6765a6e hookable: 5.5.3 httpxy: 0.1.5 - ioredis: 5.3.2 - is-primitive: 3.0.1 - jiti: 1.21.6 + ioredis: 5.4.1 + jiti: 2.0.0-beta.3 klona: 2.0.6 knitwork: 1.1.0 listhen: 1.7.2 magic-string: 0.30.10 - mime: 4.0.1 + magicast: 0.3.4 + mime: 4.0.3 mlly: 1.7.1 mri: 1.2.0 node-fetch-native: 1.6.4 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) ohash: 1.1.3 - openapi-typescript: 6.7.5 + openapi-typescript: 7.0.0(encoding@0.1.13)(typescript@5.5.3) pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.1.1 + pkg-types: 1.1.3 pretty-bytes: 6.1.1 radix3: 1.1.2 rollup: 4.18.0 rollup-plugin-visualizer: 5.12.0(rollup@4.18.0) scule: 1.3.0 semver: 7.6.2 - serve-placeholder: 2.0.1 + serve-placeholder: 2.0.2 serve-static: 1.15.0 std-env: 3.7.0 ufo: 1.5.3 @@ -13196,7 +12640,8 @@ snapshots: unctx: 2.3.1 unenv: 1.9.0 unimport: 3.7.2(rollup@4.18.0) - unstorage: 1.10.2(ioredis@5.3.2) + unstorage: 1.10.2(ioredis@5.4.1) + untyped: 1.4.2 unwasm: 0.3.9 transitivePeerDependencies: - '@azure/app-configuration' @@ -13208,6 +12653,98 @@ snapshots: - '@capacitor/preferences' - '@libsql/client' - '@netlify/blobs' + - '@opentelemetry/api' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - better-sqlite3 + - drizzle-orm + - encoding + - idb-keyval + - supports-color + - typescript + - uWebSockets.js + + nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4): + dependencies: + '@cloudflare/kv-asset-handler': 0.3.3 + '@netlify/functions': 2.7.0(@opentelemetry/api@1.9.0) + '@rollup/plugin-alias': 5.1.0(rollup@4.18.0) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.18.0) + '@rollup/plugin-inject': 5.0.5(rollup@4.18.0) + '@rollup/plugin-json': 6.1.0(rollup@4.18.0) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.18.0) + '@rollup/plugin-replace': 5.0.7(rollup@4.18.0) + '@rollup/plugin-terser': 0.4.4(rollup@4.18.0) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@types/http-proxy': 1.17.14 + '@vercel/nft': 0.26.5(encoding@0.1.13) + archiver: 7.0.1 + c12: 2.0.0-beta.1(magicast@0.3.4) + chalk: 5.3.0 + chokidar: 3.6.0 + citty: 0.1.6 + consola: 3.2.3 + cookie-es: 1.1.0 + croner: 8.0.2 + crossws: 0.2.4 + db0: 0.1.4 + defu: 6.1.4 + destr: 2.0.3 + dot-prop: 8.0.2 + esbuild: 0.20.2 + escape-string-regexp: 5.0.0 + etag: 1.8.1 + fs-extra: 11.2.0 + globby: 14.0.2 + gzip-size: 7.0.0 + h3: h3-nightly@2.0.0-1718872656.6765a6e + hookable: 5.5.3 + httpxy: 0.1.5 + ioredis: 5.4.1 + is-primitive: 3.0.1 + jiti: 2.0.0-beta.3 + klona: 2.0.6 + knitwork: 1.1.0 + listhen: 1.7.2 + magic-string: 0.30.10 + mime: 4.0.3 + mlly: 1.7.1 + mri: 1.2.0 + node-fetch-native: 1.6.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) + ohash: 1.1.3 + openapi-typescript: 6.7.6 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.1.3 + pretty-bytes: 6.1.1 + radix3: 1.1.2 + rollup: 4.18.0 + rollup-plugin-visualizer: 5.12.0(rollup@4.18.0) + scule: 1.3.0 + semver: 7.6.2 + serve-placeholder: 2.0.2 + serve-static: 1.15.0 + std-env: 3.7.0 + ufo: 1.5.3 + uncrypto: 0.1.3 + unctx: 2.3.1 + unenv: 1.9.0 + unimport: 3.7.2(rollup@4.18.0) + unstorage: 1.10.2(ioredis@5.4.1) + unwasm: 0.3.9 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@libsql/client' + - '@netlify/blobs' + - '@opentelemetry/api' - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' @@ -13246,21 +12783,6 @@ snapshots: node-gyp-build@4.6.1: {} - node-gyp@10.1.0: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 10.4.1 - graceful-fs: 4.2.11 - make-fetch-happen: 13.0.0 - nopt: 7.2.0 - proc-log: 3.0.0 - semver: 7.6.2 - tar: 6.2.0 - which: 4.0.0 - transitivePeerDependencies: - - supports-color - node-releases@2.0.14: {} nopt@5.0.0: @@ -13271,10 +12793,6 @@ snapshots: dependencies: abbrev: 1.1.1 - nopt@7.2.0: - dependencies: - abbrev: 2.0.0 - normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -13282,58 +12800,10 @@ snapshots: semver: 5.7.2 validate-npm-package-license: 3.0.4 - normalize-package-data@6.0.0: - dependencies: - hosted-git-info: 7.0.1 - is-core-module: 2.13.1 - semver: 7.6.2 - validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} normalize-range@0.1.2: {} - npm-bundled@3.0.0: - dependencies: - npm-normalize-package-bin: 3.0.1 - - npm-install-checks@6.3.0: - dependencies: - semver: 7.6.2 - - npm-normalize-package-bin@3.0.1: {} - - npm-package-arg@11.0.1: - dependencies: - hosted-git-info: 7.0.1 - proc-log: 3.0.0 - semver: 7.6.2 - validate-npm-package-name: 5.0.0 - - npm-packlist@8.0.0: - dependencies: - ignore-walk: 6.0.3 - - npm-pick-manifest@9.0.0: - dependencies: - npm-install-checks: 6.3.0 - npm-normalize-package-bin: 3.0.1 - npm-package-arg: 11.0.1 - semver: 7.6.2 - - npm-registry-fetch@17.0.1: - dependencies: - '@npmcli/redact': 2.0.0 - make-fetch-happen: 13.0.0 - minipass: 7.1.2 - minipass-fetch: 3.0.4 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 11.0.1 - proc-log: 4.2.0 - transitivePeerDependencies: - - supports-color - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -13357,32 +12827,33 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - nuxt-content-twoslash@0.0.10(@nuxtjs/mdc@0.5.0): + nuxt-content-twoslash@0.1.0(@nuxtjs/mdc@0.5.0): dependencies: '@nuxt/kit': link:packages/kit '@nuxt/schema': link:packages/schema '@nuxtjs/mdc': 0.5.0 - '@shikijs/vitepress-twoslash': 1.1.6(@nuxt/kit@packages+kit)(typescript@5.4.5) + '@shikijs/vitepress-twoslash': 1.10.1(@nuxt/kit@packages+kit)(typescript@5.5.3) cac: 6.7.14 chokidar: 3.6.0 fast-glob: 3.3.2 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 remark-parse: 11.0.0 - shiki: 1.6.4 - twoslash: 0.2.4(typescript@5.4.5) - typescript: 5.4.5 - unified: 11.0.4 + shiki: 1.10.1 + twoslash: 0.2.9(typescript@5.5.3) + typescript: 5.5.3 + unified: 11.0.5 unist-util-visit: 5.0.0 transitivePeerDependencies: - supports-color - nypm@0.3.8: + nypm@0.3.9: dependencies: citty: 0.1.6 consola: 3.2.3 execa: 8.0.1 pathe: 1.1.2 + pkg-types: 1.1.3 ufo: 1.5.3 object-assign@4.1.1: {} @@ -13403,7 +12874,7 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - ofetch@1.3.4: + ofetch@1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4): dependencies: destr: 2.0.3 node-fetch-native: 1.6.4 @@ -13447,15 +12918,26 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 2.2.0 - openapi-typescript@6.7.5: + openapi-typescript@6.7.6: dependencies: ansi-colors: 4.1.3 fast-glob: 3.3.2 js-yaml: 4.1.0 supports-color: 9.4.0 - undici: 5.28.3 + undici: 5.28.4 yargs-parser: 21.1.1 + openapi-typescript@7.0.0(encoding@0.1.13)(typescript@5.5.3): + dependencies: + '@redocly/openapi-core': 1.16.0(encoding@0.1.13)(supports-color@9.4.0) + ansi-colors: 4.1.3 + parse-json: 8.1.0 + supports-color: 9.4.0 + typescript: 5.5.3 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - encoding + opener@1.5.2: {} optionator@0.9.3: @@ -13495,35 +12977,8 @@ snapshots: dependencies: p-limit: 4.0.0 - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - p-try@2.2.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 - fs-minipass: 3.0.3 - minipass: 7.1.2 - npm-package-arg: 11.0.1 - npm-packlist: 8.0.0 - npm-pick-manifest: 9.0.0 - npm-registry-fetch: 17.0.1 - proc-log: 4.2.0 - promise-retry: 2.0.1 - sigstore: 2.2.2 - ssri: 10.0.5 - tar: 6.2.0 - transitivePeerDependencies: - - bluebird - - supports-color - param-case@2.1.1: dependencies: no-case: 2.3.2 @@ -13557,6 +13012,12 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@8.1.0: + dependencies: + '@babel/code-frame': 7.24.7 + index-to-position: 0.1.2 + type-fest: 4.20.1 + parse-ms@4.0.0: {} parse-path@7.0.0: @@ -13602,7 +13063,7 @@ snapshots: perfect-debounce@1.0.0: {} - picocolors@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -13612,195 +13073,202 @@ snapshots: pify@6.1.0: {} - pkg-types@1.1.1: + pkg-types@1.1.3: dependencies: confbox: 0.1.7 mlly: 1.7.1 pathe: 1.1.2 - playwright-core@1.44.1: {} + playwright-core@1.45.1: {} pluralize@8.0.0: {} - postcss-calc@10.0.0(postcss@8.4.38): + postcss-calc@10.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.0(postcss@8.4.38): + postcss-colormin@7.0.1(postcss@8.4.39): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.0(postcss@8.4.38): + postcss-convert-values@7.0.1(postcss@8.4.39): dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 + browserslist: 4.23.1 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.0(postcss@8.4.38): + postcss-discard-comments@7.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 + postcss-selector-parser: 6.1.0 - postcss-discard-duplicates@7.0.0(postcss@8.4.38): + postcss-discard-duplicates@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-discard-empty@7.0.0(postcss@8.4.38): + postcss-discard-empty@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-discard-overridden@7.0.0(postcss@8.4.38): + postcss-discard-overridden@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-import-resolver@2.0.0: dependencies: enhanced-resolve: 4.5.0 - postcss-import@16.1.0(postcss@8.4.38): + postcss-import@16.1.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-loader@8.1.1(postcss@8.4.38)(typescript@5.4.5)(webpack@5.92.0): + postcss-loader@8.1.1(postcss@8.4.39)(typescript@5.5.3)(webpack@5.92.1): dependencies: - cosmiconfig: 9.0.0(typescript@5.4.5) - jiti: 1.21.6 - postcss: 8.4.38 + cosmiconfig: 9.0.0(typescript@5.5.3) + jiti: 2.0.0-beta.3 + postcss: 8.4.39 semver: 7.6.2 optionalDependencies: - webpack: 5.92.0 + webpack: 5.92.1 transitivePeerDependencies: - typescript postcss-media-query-parser@0.2.3: {} - postcss-merge-longhand@7.0.1(postcss@8.4.38): + postcss-merge-longhand@7.0.2(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - stylehacks: 7.0.1(postcss@8.4.38) + stylehacks: 7.0.2(postcss@8.4.39) - postcss-merge-rules@7.0.1(postcss@8.4.38): + postcss-merge-rules@7.0.2(postcss@8.4.39): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-minify-font-values@7.0.0(postcss@8.4.38): + postcss-minify-font-values@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.38): + postcss-minify-gradients@7.0.0(postcss@8.4.39): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.0(postcss@8.4.38): + postcss-minify-params@7.0.1(postcss@8.4.39): dependencies: - browserslist: 4.23.0 - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + browserslist: 4.23.1 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.1(postcss@8.4.38): + postcss-minify-selectors@7.0.2(postcss@8.4.39): dependencies: - postcss: 8.4.38 + cssesc: 3.0.0 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + postcss-modules-extract-imports@3.1.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + postcss-modules-local-by-default@4.0.5(postcss@8.4.39): dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.4.38): + postcss-modules-scope@3.2.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-modules-values@4.0.0(postcss@8.4.38): + postcss-modules-values@4.0.0(postcss@8.4.39): dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 - postcss-normalize-charset@7.0.0(postcss@8.4.38): + postcss-nested@6.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 + postcss-selector-parser: 6.1.0 - postcss-normalize-display-values@7.0.0(postcss@8.4.38): + postcss-normalize-charset@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 + + postcss-normalize-display-values@7.0.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.38): + postcss-normalize-positions@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.38): + postcss-normalize-repeat-style@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.38): + postcss-normalize-string@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.38): + postcss-normalize-timing-functions@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.0(postcss@8.4.38): + postcss-normalize-unicode@7.0.1(postcss@8.4.39): dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 + browserslist: 4.23.1 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.38): + postcss-normalize-url@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.38): + postcss-normalize-whitespace@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.0(postcss@8.4.38): + postcss-ordered-values@7.0.1(postcss@8.4.39): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.0(postcss@8.4.38): + postcss-reduce-initial@7.0.1(postcss@8.4.39): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 caniuse-api: 3.0.0 - postcss: 8.4.38 + postcss: 8.4.39 - postcss-reduce-transforms@7.0.0(postcss@8.4.38): + postcss-reduce-transforms@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 postcss-selector-parser@6.1.0: @@ -13808,23 +13276,23 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.38): + postcss-svgo@7.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.1(postcss@8.4.38): + postcss-unique-selectors@7.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-url@10.1.3(postcss@8.4.38): + postcss-url@10.1.3(postcss@8.4.39): dependencies: make-dir: 3.1.0 mime: 2.5.2 minimatch: 3.0.8 - postcss: 8.4.38 + postcss: 8.4.39 xxhashjs: 0.2.2 postcss-value-parser@4.2.0: {} @@ -13832,7 +13300,13 @@ snapshots: postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postcss@8.4.39: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 source-map-js: 1.2.0 prelude-ls@1.2.1: {} @@ -13859,21 +13333,10 @@ snapshots: pretty-time@1.1.0: {} - proc-log@3.0.0: {} - - proc-log@4.2.0: {} - process-nextick-args@2.0.1: {} process@0.11.10: {} - promise-inflight@1.0.1: {} - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - promise@7.3.1: dependencies: asap: 2.0.6 @@ -14108,7 +13571,7 @@ snapshots: emoticon: 4.0.1 mdast-util-find-and-replace: 3.0.1 node-emoji: 2.1.3 - unified: 11.0.4 + unified: 11.0.5 remark-gfm@4.0.0: dependencies: @@ -14117,7 +13580,7 @@ snapshots: micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -14127,7 +13590,7 @@ snapshots: '@types/unist': 3.0.2 flat: 6.0.1 js-yaml: 4.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 micromark: 4.0.0 micromark-core-commonmark: 2.0.0 @@ -14138,7 +13601,7 @@ snapshots: parse-entities: 4.0.1 scule: 1.3.0 stringify-entities: 4.0.3 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 transitivePeerDependencies: @@ -14149,7 +13612,7 @@ snapshots: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 micromark-util-types: 2.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -14157,15 +13620,15 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.1.0 - unified: 11.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 vfile: 6.0.1 remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 + unified: 11.0.5 repeat-string@1.6.1: {} @@ -14185,11 +13648,9 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - retry@0.12.0: {} - reusify@1.0.4: {} - rfdc@1.3.1: {} + rfdc@1.4.1: {} rimraf@3.0.2: dependencies: @@ -14199,11 +13660,11 @@ snapshots: dependencies: glob: 10.4.1 - rollup-plugin-dts@6.1.0(rollup@4.18.0)(typescript@5.4.5): + rollup-plugin-dts@6.1.1(rollup@4.18.0)(typescript@5.5.3): dependencies: magic-string: 0.30.10 rollup: 4.18.0 - typescript: 5.4.5 + typescript: 5.5.3 optionalDependencies: '@babel/code-frame': 7.24.7 @@ -14317,7 +13778,7 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-placeholder@2.0.1: + serve-placeholder@2.0.2: dependencies: defu: 6.1.4 @@ -14361,13 +13822,9 @@ snapshots: dependencies: '@shikijs/core': 1.1.2 - shiki@1.1.6: + shiki@1.10.1: dependencies: - '@shikijs/core': 1.1.6 - - shiki@1.3.0: - dependencies: - '@shikijs/core': 1.3.0 + '@shikijs/core': 1.10.1 shiki@1.6.4: dependencies: @@ -14385,22 +13842,11 @@ snapshots: signal-exit@4.1.0: {} - sigstore@2.2.2: - dependencies: - '@sigstore/bundle': 2.2.0 - '@sigstore/core': 1.0.0 - '@sigstore/protobuf-specs': 0.3.0 - '@sigstore/sign': 2.2.3 - '@sigstore/tuf': 2.3.1 - '@sigstore/verify': 1.1.0 - transitivePeerDependencies: - - supports-color - - simple-git@3.24.0: + simple-git@3.25.0: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -14422,29 +13868,10 @@ snapshots: slash@5.1.0: {} - smart-buffer@4.2.0: {} - smob@1.4.1: {} smol-toml@1.2.0: {} - socks-proxy-agent@8.0.2: - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - - socks@2.7.1: - dependencies: - ip: 2.0.1 - smart-buffer: 4.2.0 - - sonic-forest@1.0.0(tslib@2.6.2): - dependencies: - tslib: 2.6.2 - source-list-map@2.0.1: {} source-map-js@1.2.0: {} @@ -14483,10 +13910,6 @@ snapshots: splitpanes@3.1.5: {} - ssri@10.0.5: - dependencies: - minipass: 7.1.2 - stackback@0.0.2: {} stackframe@1.3.4: {} @@ -14555,12 +13978,16 @@ snapshots: dependencies: js-tokens: 9.0.0 - stylehacks@7.0.1(postcss@8.4.38): + stylehacks@7.0.2(postcss@8.4.39): dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 + browserslist: 4.23.1 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 + superjson@2.2.1: + dependencies: + copy-anything: 3.0.5 + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -14587,7 +14014,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.0.0 + picocolors: 1.0.1 system-architecture@0.1.0: {} @@ -14612,30 +14039,30 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser-webpack-plugin@5.3.10(esbuild@0.21.5)(webpack@5.92.0(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(esbuild@0.23.0)(webpack@5.92.1(esbuild@0.23.0)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.0(esbuild@0.21.5) + webpack: 5.92.1(esbuild@0.23.0) optionalDependencies: - esbuild: 0.21.5 + esbuild: 0.23.0 - terser-webpack-plugin@5.3.10(webpack@5.92.0): + terser-webpack-plugin@5.3.10(webpack@5.92.1): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.0 + webpack: 5.92.1 terser@5.27.0: dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.12.0 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -14655,9 +14082,9 @@ snapshots: dependencies: semver: 7.6.2 - time-fix-plugin@2.0.7(webpack@5.92.0): + time-fix-plugin@2.0.7(webpack@5.92.1): dependencies: - webpack: 5.92.0 + webpack: 5.92.1 tiny-invariant@1.3.1: {} @@ -14691,36 +14118,28 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.4.5): + ts-api-utils@1.3.0(typescript@5.5.3): dependencies: - typescript: 5.4.5 + typescript: 5.5.3 tslib@2.6.2: {} - tuf-js@2.2.0: + twoslash-protocol@0.2.9: {} + + twoslash-vue@0.2.9(typescript@5.5.3): dependencies: - '@tufjs/models': 2.0.0 - debug: 4.3.4 - make-fetch-happen: 13.0.0 + '@vue/language-core': 2.0.24(typescript@5.5.3) + twoslash: 0.2.9(typescript@5.5.3) + twoslash-protocol: 0.2.9 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - twoslash-protocol@0.2.4: {} - - twoslash-vue@0.2.4(typescript@5.4.5): - dependencies: - '@vue/language-core': 1.8.27(typescript@5.4.5) - twoslash: 0.2.4(typescript@5.4.5) - twoslash-protocol: 0.2.4 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - twoslash@0.2.4(typescript@5.4.5): + twoslash@0.2.9(typescript@5.5.3): dependencies: '@typescript/vfs': 1.5.0 - twoslash-protocol: 0.2.4 - typescript: 5.4.5 + twoslash-protocol: 0.2.9 + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -14740,7 +14159,9 @@ snapshots: type-fest@3.13.1: {} - typescript@5.4.5: {} + type-fest@4.20.1: {} + + typescript@5.5.3: {} uc.micro@2.1.0: {} @@ -14750,43 +14171,44 @@ snapshots: ultrahtml@1.5.3: {} - unbuild@2.0.0(sass@1.69.4)(typescript@5.4.5): + unbuild@3.0.0-rc.6(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)): dependencies: '@rollup/plugin-alias': 5.1.0(rollup@4.18.0) - '@rollup/plugin-commonjs': 25.0.7(rollup@4.18.0) + '@rollup/plugin-commonjs': 26.0.1(rollup@4.18.0) '@rollup/plugin-json': 6.1.0(rollup@4.18.0) '@rollup/plugin-node-resolve': 15.2.3(rollup@4.18.0) '@rollup/plugin-replace': 5.0.7(rollup@4.18.0) '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - chalk: 5.3.0 citty: 0.1.6 consola: 3.2.3 defu: 6.1.4 - esbuild: 0.19.11 - globby: 13.2.2 + esbuild: 0.23.0 + globby: 14.0.2 hookable: 5.5.3 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 magic-string: 0.30.10 - mkdist: 1.3.0(sass@1.69.4)(typescript@5.4.5) + mkdist: 1.5.3(sass@1.69.4)(typescript@5.5.3)(vue-tsc@2.0.24(typescript@5.5.3)) mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 pretty-bytes: 6.1.1 rollup: 4.18.0 - rollup-plugin-dts: 6.1.0(rollup@4.18.0)(typescript@5.4.5) + rollup-plugin-dts: 6.1.1(rollup@4.18.0)(typescript@5.5.3) scule: 1.3.0 + ufo: 1.5.3 untyped: 1.4.2 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - sass - supports-color + - vue-tsc unconfig@0.3.13: dependencies: - '@antfu/utils': 0.7.8 + '@antfu/utils': 0.7.10 defu: 6.1.4 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 uncrypto@0.1.3: {} @@ -14795,11 +14217,11 @@ snapshots: acorn: 8.12.0 estree-walker: 3.0.3 magic-string: 0.30.10 - unplugin: 1.10.1 + unplugin: 1.10.2 undici-types@5.26.5: {} - undici@5.28.3: + undici@5.28.4: dependencies: '@fastify/busboy': 2.0.0 @@ -14811,18 +14233,18 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 - unhead@1.9.13: + unhead@1.9.14: dependencies: - '@unhead/dom': 1.9.13 - '@unhead/schema': 1.9.13 - '@unhead/shared': 1.9.13 + '@unhead/dom': 1.9.14 + '@unhead/schema': 1.9.14 + '@unhead/shared': 1.9.14 hookable: 5.5.3 unicode-emoji-modifier-base@1.0.0: {} unicorn-magic@0.1.0: {} - unified@11.0.4: + unified@11.0.5: dependencies: '@types/unist': 3.0.2 bail: 2.0.2 @@ -14843,21 +14265,13 @@ snapshots: magic-string: 0.30.10 mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 scule: 1.3.0 strip-literal: 2.1.0 - unplugin: 1.10.1 + unplugin: 1.10.2 transitivePeerDependencies: - rollup - unique-filename@3.0.0: - dependencies: - unique-slug: 4.0.0 - - unique-slug@4.0.0: - dependencies: - imurmurhash: 0.1.4 - unist-builder@4.0.0: dependencies: '@types/unist': 3.0.2 @@ -14887,13 +14301,13 @@ snapshots: universalify@2.0.0: {} - unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + unocss@0.60.4(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)))(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.60.4(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/astro': 0.60.4(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) '@unocss/cli': 0.60.4(rollup@4.18.0) '@unocss/core': 0.60.4 '@unocss/extractor-arbitrary-variants': 0.60.4 - '@unocss/postcss': 0.60.4(postcss@8.4.38) + '@unocss/postcss': 0.60.4(postcss@8.4.39) '@unocss/preset-attributify': 0.60.4 '@unocss/preset-icons': 0.60.4 '@unocss/preset-mini': 0.60.4 @@ -14908,22 +14322,22 @@ snapshots: '@unocss/transformer-compile-class': 0.60.4 '@unocss/transformer-directives': 0.60.4 '@unocss/transformer-variant-group': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.60.4(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.1(esbuild@0.23.0)) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - postcss - rollup - supports-color - unocss@0.61.0(@unocss/webpack@0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + unocss@0.61.0(postcss@8.4.39)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@unocss/astro': 0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/astro': 0.61.0(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) '@unocss/cli': 0.61.0(rollup@4.18.0) '@unocss/core': 0.61.0 '@unocss/extractor-arbitrary-variants': 0.61.0 - '@unocss/postcss': 0.61.0(postcss@8.4.38) + '@unocss/postcss': 0.61.0(postcss@8.4.39) '@unocss/preset-attributify': 0.61.0 '@unocss/preset-icons': 0.61.0 '@unocss/preset-mini': 0.61.0 @@ -14938,86 +14352,63 @@ snapshots: '@unocss/transformer-compile-class': 0.61.0 '@unocss/transformer-directives': 0.61.0 '@unocss/transformer-variant-group': 0.61.0 - '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)) + '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)) optionalDependencies: - '@unocss/webpack': 0.60.4(rollup@4.18.0)(webpack@5.92.0(esbuild@0.21.5)) - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - postcss - rollup - supports-color - unocss@0.61.0(postcss@8.4.38)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0)): - dependencies: - '@unocss/astro': 0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0)) - '@unocss/cli': 0.61.0(rollup@4.18.0) - '@unocss/core': 0.61.0 - '@unocss/extractor-arbitrary-variants': 0.61.0 - '@unocss/postcss': 0.61.0(postcss@8.4.38) - '@unocss/preset-attributify': 0.61.0 - '@unocss/preset-icons': 0.61.0 - '@unocss/preset-mini': 0.61.0 - '@unocss/preset-tagify': 0.61.0 - '@unocss/preset-typography': 0.61.0 - '@unocss/preset-uno': 0.61.0 - '@unocss/preset-web-fonts': 0.61.0 - '@unocss/preset-wind': 0.61.0 - '@unocss/reset': 0.61.0 - '@unocss/transformer-attributify-jsx': 0.61.0 - '@unocss/transformer-attributify-jsx-babel': 0.61.0 - '@unocss/transformer-compile-class': 0.61.0 - '@unocss/transformer-directives': 0.61.0 - '@unocss/transformer-variant-group': 0.61.0 - '@unocss/vite': 0.61.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0)) - optionalDependencies: - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - postcss - - rollup - - supports-color - - unplugin-vue-router@0.7.0(rollup@4.18.0)(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)): + unplugin-vue-router@0.10.0(rollup@4.18.0)(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)): dependencies: '@babel/types': 7.24.7 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - '@vue-macros/common': 1.10.1(rollup@4.18.0)(vue@3.4.29(typescript@5.4.5)) - ast-walker-scope: 0.5.0(rollup@4.18.0) + '@vue-macros/common': 1.10.4(rollup@4.18.0)(vue@3.4.31(typescript@5.5.3)) + ast-walker-scope: 0.6.1 chokidar: 3.6.0 fast-glob: 3.3.2 json5: 2.2.3 - local-pkg: 0.4.3 + local-pkg: 0.5.0 mlly: 1.7.1 pathe: 1.1.2 scule: 1.3.0 - unplugin: 1.10.1 - yaml: 2.3.4 + unplugin: 1.11.0 + yaml: 2.4.5 optionalDependencies: - vue-router: 4.3.3(vue@3.4.29(typescript@5.4.5)) + vue-router: 4.4.0(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - rollup - vue - unplugin@1.10.1: + unplugin@1.10.2: dependencies: - acorn: 8.12.0 + acorn: 8.12.1 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.2 - unstorage@1.10.2(ioredis@5.3.2): + unplugin@1.11.0: + dependencies: + acorn: 8.12.1 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.2 + + unstorage@1.10.2(ioredis@5.4.1): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.11.1 + h3: h3-nightly@2.0.0-1718872656.6765a6e listhen: 1.7.2 lru-cache: 10.2.0 mri: 1.2.0 node-fetch-native: 1.6.4 - ofetch: 1.3.4 + ofetch: 1.3.4(patch_hash=nxc3eojzwynarpj453xzxqr2f4) ufo: 1.5.3 optionalDependencies: - ioredis: 5.3.2 + ioredis: 5.4.1 transitivePeerDependencies: - uWebSockets.js @@ -15035,7 +14426,7 @@ snapshots: '@babel/standalone': 7.23.9 '@babel/types': 7.24.7 defu: 6.1.4 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 mri: 1.2.0 scule: 1.3.0 transitivePeerDependencies: @@ -15047,14 +14438,14 @@ snapshots: magic-string: 0.30.10 mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 - unplugin: 1.10.1 + pkg-types: 1.1.3 + unplugin: 1.11.0 - update-browserslist-db@1.0.13(browserslist@4.23.0): + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: - browserslist: 4.23.0 - escalade: 3.1.1 - picocolors: 1.0.0 + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 upper-case@1.1.3: {} @@ -15064,22 +14455,22 @@ snapshots: dependencies: punycode: 2.3.0 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.92.0))(webpack@5.92.0): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.92.1))(webpack@5.92.1): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.92.0 + webpack: 5.92.1 optionalDependencies: - file-loader: 6.2.0(webpack@5.92.0) + file-loader: 6.2.0(webpack@5.92.1) urlpattern-polyfill@8.0.2: {} util-deprecate@1.0.2: {} - v-lazy-show@0.2.4(@vue/compiler-core@3.4.29): + v-lazy-show@0.2.4(@vue/compiler-core@3.4.31): dependencies: - '@vue/compiler-core': 3.4.29 + '@vue/compiler-core': 3.4.31 valibot@0.31.1: {} @@ -15088,10 +14479,6 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@5.0.0: - dependencies: - builtins: 5.0.1 - vfile-location@5.0.2: dependencies: '@types/unist': 3.0.2 @@ -15108,17 +14495,17 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + vite-hot-client@0.2.3(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)): dependencies: - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) - vite-node@1.6.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0): + vite-node@1.6.0(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0): dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + picocolors: 1.0.1 + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -15129,26 +14516,10 @@ snapshots: - supports-color - terser - vite-node@1.6.0(@types/node@20.14.5)(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.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-plugin-checker@0.6.4(eslint@9.5.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)): + vite-plugin-checker@0.7.0(eslint@9.6.0)(optionator@0.9.3)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.24(typescript@5.5.3)): dependencies: '@babel/code-frame': 7.24.7 + '@volar/typescript': 2.3.4 ansi-escapes: 4.3.2 chalk: 4.1.2 chokidar: 3.6.0 @@ -15156,39 +14527,38 @@ snapshots: fast-glob: 3.3.2 fs-extra: 11.2.0 npm-run-path: 4.0.1 - semver: 7.6.2 strip-ansi: 6.0.1 tiny-invariant: 1.3.1 - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 optionalDependencies: - eslint: 9.5.0 + eslint: 9.6.0 optionator: 0.9.3 - typescript: 5.4.5 - vue-tsc: 2.0.21(typescript@5.4.5) + typescript: 5.5.3 + vue-tsc: 2.0.24(typescript@5.5.3) - vite-plugin-inspect@0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-inspect@0.8.4(@nuxt/kit@packages+kit)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)): dependencies: - '@antfu/utils': 0.7.8 + '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - debug: 4.3.4 - error-stack-parser-es: 0.1.1 + debug: 4.3.5(supports-color@9.4.0) + error-stack-parser-es: 0.1.4 fs-extra: 11.2.0 open: 10.1.0 perfect-debounce: 1.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) optionalDependencies: '@nuxt/kit': link:packages/kit transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-inspector@5.1.0(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)): + vite-plugin-vue-inspector@5.1.2(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0)): dependencies: '@babel/core': 7.24.7 '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.24.7) @@ -15196,38 +14566,27 @@ snapshots: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) - '@vue/compiler-dom': 3.4.29 + '@vue/compiler-dom': 3.4.31 kolorist: 1.8.0 magic-string: 0.30.10 - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) transitivePeerDependencies: - supports-color - vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0): + vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.38 + postcss: 8.4.39 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 fsevents: 2.3.3 sass: 1.69.4 terser: 5.27.0 - vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0): + vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.1)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)): dependencies: - esbuild: 0.21.5 - postcss: 8.4.38 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 20.14.5 - fsevents: 2.3.3 - sass: 1.69.4 - terser: 5.27.0 - - vitest-environment-nuxt@1.0.0(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)): - dependencies: - '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5)))(@vue/test-utils@2.4.6)(h3@1.11.1)(happy-dom@14.12.0)(magicast@0.3.4)(nitropack@2.9.6(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.44.1)(vite@5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0))(vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)))(vue@3.4.29(typescript@5.4.5)) + '@nuxt/test-utils': 3.13.1(@testing-library/vue@8.1.0(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3)))(@vue/test-utils@2.4.6)(h3-nightly@2.0.0-1718872656.6765a6e)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(playwright-core@1.45.1)(vite@5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0))(vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -15246,7 +14605,7 @@ snapshots: - vue - vue-router - vitest@1.6.0(@types/node@20.14.2)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0): + vitest@1.6.0(@types/node@20.14.9)(happy-dom@14.12.3)(sass@1.69.4)(terser@5.27.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -15255,56 +14614,22 @@ snapshots: '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.3.10 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 tinybench: 2.5.1 tinypool: 0.8.4 - vite: 5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) - vite-node: 1.6.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0) + vite: 5.3.3(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) + vite-node: 1.6.0(@types/node@20.14.9)(sass@1.69.4)(terser@5.27.0) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.14.2 - happy-dom: 14.12.0 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vitest@1.6.0(@types/node@20.14.5)(happy-dom@14.12.0)(sass@1.69.4)(terser@5.27.0): - dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.3.10 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.5.1 - tinypool: 0.8.4 - vite: 5.3.1(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - vite-node: 1.6.0(@types/node@20.14.5)(sass@1.69.4)(terser@5.27.0) - why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.14.5 - happy-dom: 14.12.0 + '@types/node': 20.14.9 + happy-dom: 14.12.3 transitivePeerDependencies: - less - lightningcss @@ -15345,16 +14670,16 @@ snapshots: vue-component-type-helpers@2.0.6: {} - vue-demi@0.14.8(vue@3.4.29(typescript@5.4.5)): + vue-demi@0.14.8(vue@3.4.31(typescript@5.5.3)): dependencies: - vue: 3.4.29(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) vue-devtools-stub@0.1.0: {} - vue-eslint-parser@9.4.2(eslint@9.5.0): + vue-eslint-parser@9.4.2(eslint@9.6.0): dependencies: - debug: 4.3.4 - eslint: 9.5.0 + debug: 4.3.5(supports-color@9.4.0) + eslint: 9.6.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -15364,67 +14689,56 @@ snapshots: transitivePeerDependencies: - supports-color - vue-loader@17.4.2(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0(esbuild@0.21.5)): + vue-loader@17.4.2(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0)): dependencies: chalk: 4.1.2 hash-sum: 2.0.0 watchpack: 2.4.1 - webpack: 5.92.0(esbuild@0.21.5) + webpack: 5.92.1(esbuild@0.23.0) optionalDependencies: - '@vue/compiler-sfc': 3.4.29 - vue: 3.4.29(typescript@5.4.5) + '@vue/compiler-sfc': 3.4.31 + vue: 3.4.31(typescript@5.5.3) - vue-loader@17.4.2(@vue/compiler-sfc@3.4.29)(vue@3.4.29(typescript@5.4.5))(webpack@5.92.0): + vue-loader@17.4.2(@vue/compiler-sfc@3.4.31)(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1): dependencies: chalk: 4.1.2 hash-sum: 2.0.0 watchpack: 2.4.1 - webpack: 5.92.0 + webpack: 5.92.1 optionalDependencies: - '@vue/compiler-sfc': 3.4.29 - vue: 3.4.29(typescript@5.4.5) + '@vue/compiler-sfc': 3.4.31 + vue: 3.4.31(typescript@5.5.3) - vue-observe-visibility@2.0.0-alpha.1(vue@3.4.29(typescript@5.4.5)): + vue-resize@2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3)): dependencies: - vue: 3.4.29(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) - vue-resize@2.0.0-alpha.1(vue@3.4.29(typescript@5.4.5)): - dependencies: - vue: 3.4.29(typescript@5.4.5) - - vue-router@4.3.3(vue@3.4.29(typescript@5.4.5)): + vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)): dependencies: '@vue/devtools-api': 6.6.3 - vue: 3.4.29(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) vue-template-compiler@2.7.14: dependencies: de-indent: 1.0.2 he: 1.2.0 - vue-tsc@2.0.21(typescript@5.4.5): + vue-tsc@2.0.24(typescript@5.5.3): dependencies: - '@volar/typescript': 2.3.0-alpha.15 - '@vue/language-core': 2.0.21(typescript@5.4.5) + '@volar/typescript': 2.4.0-alpha.2 + '@vue/language-core': 2.0.24(typescript@5.5.3) semver: 7.6.2 - typescript: 5.4.5 + typescript: 5.5.3 - vue-virtual-scroller@2.0.0-beta.8(vue@3.4.29(typescript@5.4.5)): + vue@3.4.31(typescript@5.5.3): dependencies: - mitt: 2.1.0 - vue: 3.4.29(typescript@5.4.5) - vue-observe-visibility: 2.0.0-alpha.1(vue@3.4.29(typescript@5.4.5)) - vue-resize: 2.0.0-alpha.1(vue@3.4.29(typescript@5.4.5)) - - vue@3.4.29(typescript@5.4.5): - dependencies: - '@vue/compiler-dom': 3.4.29 - '@vue/compiler-sfc': 3.4.29 - '@vue/runtime-dom': 3.4.29 - '@vue/server-renderer': 3.4.29(vue@3.4.29(typescript@5.4.5)) - '@vue/shared': 3.4.29 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-sfc': 3.4.31 + '@vue/runtime-dom': 3.4.31 + '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.3)) + '@vue/shared': 3.4.31 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 watchpack@2.4.1: dependencies: @@ -15440,7 +14754,7 @@ snapshots: webpack-bundle-analyzer@4.10.2: dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.12.0 + acorn: 8.12.1 acorn-walk: 8.3.2 commander: 7.2.0 debounce: 1.2.1 @@ -15448,34 +14762,34 @@ snapshots: gzip-size: 6.0.0 html-escaper: 2.0.2 opener: 1.5.2 - picocolors: 1.0.0 + picocolors: 1.0.1 sirv: 2.0.4 ws: 7.5.9 transitivePeerDependencies: - bufferutil - utf-8-validate - webpack-dev-middleware@7.2.1(webpack@5.92.0(esbuild@0.21.5)): + webpack-dev-middleware@7.2.1(webpack@5.92.1(esbuild@0.23.0)): dependencies: colorette: 2.0.20 - memfs: 4.9.2 + memfs: 4.9.3 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.92.0(esbuild@0.21.5) + webpack: 5.92.1(esbuild@0.23.0) - webpack-dev-middleware@7.2.1(webpack@5.92.0): + webpack-dev-middleware@7.2.1(webpack@5.92.1): dependencies: colorette: 2.0.20 - memfs: 4.9.2 + memfs: 4.9.3 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.92.0 + webpack: 5.92.1 webpack-hot-middleware@2.26.1: dependencies: @@ -15492,7 +14806,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.92.0: + webpack@5.92.1: dependencies: '@types/eslint-scope': 3.7.6 '@types/estree': 1.0.5 @@ -15501,7 +14815,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.0 acorn-import-attributes: 1.9.5(acorn@8.12.0) - browserslist: 4.23.0 + browserslist: 4.23.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.17.0 es-module-lexer: 1.3.1 @@ -15515,7 +14829,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.92.0) + terser-webpack-plugin: 5.3.10(webpack@5.92.1) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -15523,7 +14837,7 @@ snapshots: - esbuild - uglify-js - webpack@5.92.0(esbuild@0.21.5): + webpack@5.92.1(esbuild@0.23.0): dependencies: '@types/eslint-scope': 3.7.6 '@types/estree': 1.0.5 @@ -15532,7 +14846,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.0 acorn-import-attributes: 1.9.5(acorn@8.12.0) - browserslist: 4.23.0 + browserslist: 4.23.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.17.0 es-module-lexer: 1.3.1 @@ -15546,7 +14860,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.21.5)(webpack@5.92.0(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(esbuild@0.23.0)(webpack@5.92.1(esbuild@0.23.0)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -15554,7 +14868,7 @@ snapshots: - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.92.0): + webpackbar@6.0.1(webpack@5.92.1): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -15563,7 +14877,7 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.7.0 - webpack: 5.92.0 + webpack: 5.92.1 wrap-ansi: 7.0.0 whatwg-mimetype@3.0.0: {} @@ -15604,10 +14918,6 @@ snapshots: dependencies: isexe: 2.0.0 - which@4.0.0: - dependencies: - isexe: 3.1.1 - why-is-node-running@2.2.2: dependencies: siginfo: 2.0.0 @@ -15640,7 +14950,7 @@ snapshots: ws@7.5.9: {} - ws@8.17.0: {} + ws@8.17.1: {} xml-name-validator@4.0.0: {} @@ -15654,14 +14964,16 @@ snapshots: yallist@4.0.0: {} - yaml@2.3.4: {} + yaml-ast-parser@0.0.43: {} + + yaml@2.4.5: {} yargs-parser@21.1.1: {} yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/renovate.json b/renovate.json index 974eeccfc7..02bd3cbaf1 100644 --- a/renovate.json +++ b/renovate.json @@ -7,7 +7,7 @@ ], "baseBranches": [ "main", - "2.x" + "3.x" ], "packageRules": [ { @@ -20,49 +20,18 @@ "^@vitest/" ] }, - { - "groupName": "unplugin-vue-router", - "matchPackageNames": [ - "unplugin-vue-router" - ] - }, { "matchBaseBranches": [ - "main" + "main", + "3.x" ], "ignoreDeps": [ - "@vitejs/plugin-vue", + "nitro", + "h3", "nuxt", "nuxt3", "@nuxt/kit" ] - }, - { - "matchBaseBranches": [ - "2.x" - ], - "ignoreDeps": [ - "@types/node", - "postcss-import", - "postcss-loader", - "postcss-url", - "css-loader", - "sass-loader", - "npm", - "boxen", - "html-webpack-plugin", - "terser-webpack-plugin", - "@types/terser-webpack-plugin", - "@types/webpack-bundle-analyzer", - "@types/webpack-hot-middleware", - "webpack-dev-middleware", - "wrap-ansi", - "globby", - "execa", - "chalk", - "vue", - "vuex" - ] } ] } diff --git a/scripts/_utils.ts b/scripts/_utils.ts index 208e586b28..9e7737f506 100644 --- a/scripts/_utils.ts +++ b/scripts/_utils.ts @@ -103,9 +103,7 @@ export async function determineBumpType () { const config = await loadChangelogConfig(process.cwd()) const commits = await getLatestCommits() - const bumpType = determineSemverChange(commits, config) - - return bumpType === 'major' ? 'minor' : bumpType + return determineSemverChange(commits, config) } export async function getLatestCommits () { diff --git a/scripts/bump-edge.ts b/scripts/bump-edge.ts index 1e2b51a6fb..202f7779d2 100644 --- a/scripts/bump-edge.ts +++ b/scripts/bump-edge.ts @@ -4,8 +4,8 @@ import { consola } from 'consola' import { determineBumpType, loadWorkspace } from './_utils' const nightlyPackages = { - nitropack: 'nitropack-nightly', - h3: 'h3-nightly', + // nitro: 'nitro-nightly', + // h3: 'h3-nightly', nuxi: 'nuxi-nightly', } diff --git a/scripts/update-changelog.ts b/scripts/update-changelog.ts index 9dab8a8b94..7da75bb731 100644 --- a/scripts/update-changelog.ts +++ b/scripts/update-changelog.ts @@ -11,7 +11,7 @@ async function main () { const config = await loadChangelogConfig(process.cwd(), {}) const commits = await getLatestCommits().then(commits => commits.filter( - c => config.types[c.type] && !(c.type === 'chore' && c.scope === 'deps' && !c.isBreaking), + c => config.types[c.type] && !(c.type === 'chore' && c.scope === 'deps'), )) const bumpType = await determineBumpType() || 'patch' diff --git a/test/basic.test.ts b/test/basic.test.ts index 8c131c4363..31e91675fd 100644 --- a/test/basic.test.ts +++ b/test/basic.test.ts @@ -4,16 +4,18 @@ import { describe, expect, it } from 'vitest' import { joinURL, withQuery } from 'ufo' import { isCI, isWindows } from 'std-env' import { join, normalize } from 'pathe' -import { $fetch, createPage, fetch, isDev, setup, startServer, url, useTestContext } from '@nuxt/test-utils/e2e' +import { $fetch as _$fetch, createPage, fetch, isDev, setup, startServer, url, useTestContext } from '@nuxt/test-utils/e2e' import { $fetchComponent } from '@nuxt/test-utils/experimental' import { expectNoClientErrors, expectWithPolling, gotoPath, isRenderingJson, parseData, parsePayload, renderPage } from './utils' import type { NuxtIslandResponse } from '#app' +// TODO: update @nuxt/test-utils +const $fetch = _$fetch as import('nitro/types').$Fetch + 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)), @@ -22,9 +24,17 @@ await setup({ browser: true, setupTimeout: (isWindows ? 360 : 120) * 1000, nuxtConfig: { + hooks: { + 'modules:done' () { + // TODO: investigate whether to upstream a fix to vite-plugin-vue or nuxt/test-utils + // Vite reads its `isProduction` value from NODE_ENV and passes this to some plugins + // like vite-plugin-vue + if (process.env.TEST_ENV !== 'dev') { + process.env.NODE_ENV = 'production' + } + }, + }, builder: isWebpack ? 'webpack' : 'vite', - buildDir: process.env.NITRO_BUILD_DIR, - nitro: { output: { dir: process.env.NITRO_OUTPUT_DIR } }, }, }) @@ -492,7 +502,7 @@ describe('pages', () => { }) it('client only page', async () => { - const response = await fetch('/client-only').then(r => r.text()) + const response = await fetch('/client-only-page').then(r => r.text()) // Should not contain rendered page on initial request expect(response).not.toContain('"hasAccessToWindow": true') @@ -520,10 +530,11 @@ describe('pages', () => { // Then go to non client only page await clientInitialPage.click('a') - await new Promise(resolve => setTimeout(resolve, 50)) // little delay to finish transition + await clientInitialPage.waitForFunction(() => window.useNuxtApp?.()._route.fullPath === '/client-only-page/normal') // that page should be client rendered - expect(await clientInitialPage.locator('#server-rendered').textContent()).toMatchInlineSnapshot('"false"') + // TODO: investigate why multiple elements are appearing on page + expect(await clientInitialPage.locator('#server-rendered').first().textContent()).toMatchInlineSnapshot('"false"') // and not contain any errors or warnings expect(errors.length).toBe(0) @@ -545,6 +556,8 @@ describe('pages', () => { // Go to client only page await normalInitialPage.click('a') + await normalInitialPage.waitForFunction(() => window.useNuxtApp?.()._route.fullPath === '/client-only-page') + // and expect same object to be present expect(await normalInitialPage.locator('#state').textContent()).toMatchInlineSnapshot(` "{ @@ -711,7 +724,7 @@ describe('nuxt links', () => { for (const selector of ['nuxt-link', 'router-link', 'link-with-trailing-slash', 'link-without-trailing-slash']) { data[selector] = [] for (const match of html.matchAll(new RegExp(`href="([^"]*)"[^>]*class="[^"]*\\b${selector}\\b`, 'g'))) { - data[selector].push(match[1]) + data[selector]!.push(match[1]!) } } expect(data).toMatchInlineSnapshot(` @@ -918,19 +931,14 @@ describe('head tags', () => { expect(headHtml).toContain('') }) - it.skipIf(isV4)('SPA should render appHead tags', async () => { - const headHtml = await $fetch('/head', { headers: { 'x-nuxt-no-ssr': '1' } }) + it('SPA should render appHead tags', async () => { + const headHtml = await $fetch('/head-spa') expect(headHtml).toContain('') expect(headHtml).toContain('') expect(headHtml).toContain('') }) - 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') - }) - it('should render http-equiv correctly', async () => { const html = await $fetch('/head') // http-equiv should be rendered kebab case @@ -1008,9 +1016,10 @@ describe('navigate', () => { }) it('expect to redirect with encoding', async () => { - const { status } = await fetch('/redirect-with-encode', { redirect: 'manual' }) + const { status, headers } = await fetch('/redirect-with-encode', { redirect: 'manual' }) expect(status).toEqual(302) + expect(headers.get('location') || '').toEqual(encodeURI('/cล“ur') + '?redirected=' + encodeURIComponent('https://google.com')) }) }) @@ -1409,7 +1418,7 @@ describe('extends support', () => { describe('app', () => { it('extends foo/app/router.options & bar/app/router.options', async () => { const html: string = await $fetch('/') - const routerLinkClasses = html.match(/href="\/" class="([^"]*)"/)?.[1].split(' ') + const routerLinkClasses = html.match(/href="\/" class="([^"]*)"/)![1]!.split(' ') expect(routerLinkClasses).toContain('foo-active-class') expect(routerLinkClasses).toContain('bar-exact-active-class') }) @@ -1421,6 +1430,7 @@ describe('deferred app suspense resolve', () => { it.each(['/async-parent/child', '/internal-layout/async-parent/child'])('should wait for all suspense instance on initial hydration', async (path) => { const { page, consoleLogs } = await renderPage(path) + await page.waitForFunction(() => window.useNuxtApp?.() && !window.useNuxtApp?.().isHydrating) // Wait for all pending micro ticks to be cleared in case hydration hasn't finished yet. await page.evaluate(() => new Promise(resolve => setTimeout(resolve, 10))) @@ -1451,7 +1461,7 @@ describe('nested suspense', () => { ['/suspense/sync-1/sync-1/', '/suspense/sync-2/async-1/'], ['/suspense/async-1/async-1/', '/suspense/async-2/async-1/'], ['/suspense/async-1/sync-1/', '/suspense/async-2/async-1/'], - ]).flatMap(([start, end]) => [ + ] as const).flatMap(([start, end]) => [ [start, end], [start, end + '?layout=custom'], [start + '?layout=custom', end], @@ -1517,7 +1527,7 @@ describe('nested suspense', () => { const first = start.match(/\/suspense\/(?a?sync)-(?\d)\/(?a?sync)-(?\d)\//)!.groups! const last = nav.match(/\/suspense\/(?a?sync)-(?\d)\//)!.groups! - await new Promise(resolve => setTimeout(resolve, 50)) + await page.waitForFunction(path => window.useNuxtApp?.()._route.fullPath === path, nav) expect(consoleLogs.map(l => l.text).filter(i => !i.includes('[vite]') && !i.includes(' is an experimental feature')).sort()).toEqual([ // [first load] from parent @@ -1579,6 +1589,7 @@ describe('page key', () => { await page.click(`[href="${path}/1"]`) await page.waitForSelector('#page-1') + await page.waitForFunction(path => window.useNuxtApp?.()._route.fullPath === path, `${path}/1`) // Wait for all pending micro ticks to be cleared, // so we are not resolved too early when there are repeated page loading await page.evaluate(() => new Promise(resolve => setTimeout(resolve, 10))) @@ -1593,6 +1604,7 @@ describe('page key', () => { await page.click(`[href="${path}/1"]`) await page.waitForSelector('#page-1') + await page.waitForFunction(path => window.useNuxtApp?.()._route.fullPath === path, `${path}/1`) // Wait for all pending micro ticks to be cleared, // so we are not resolved too early when there are repeated page loading await page.evaluate(() => new Promise(resolve => setTimeout(resolve, 10))) @@ -1625,6 +1637,7 @@ describe('layout change not load page twice', () => { await page.click(`[href="${path2}"]`) await page.waitForSelector('#with-layout2') + await page.waitForFunction(path => window.useNuxtApp?.()._route.fullPath === path, path2) // Wait for all pending micro ticks to be cleared, // so we are not resolved too early when there are repeated page loading await page.evaluate(() => new Promise(resolve => setTimeout(resolve, 10))) @@ -1714,7 +1727,7 @@ describe.skipIf(isDev() || isWebpack)('inlining component styles', () => { it('should not include inlined CSS in generated CSS file', async () => { const html: string = await $fetch('/styles') - const cssFiles = new Set([...html.matchAll(/]*href="([^"]*\.css)">/g)].map(m => m[1])) + const cssFiles = new Set([...html.matchAll(/]*href="([^"]*\.css)">/g)].map(m => m[1]!)) let css = '' for (const file of cssFiles || []) { css += await $fetch(file) @@ -1917,7 +1930,7 @@ describe.skipIf(isDev() || isWindows || !isRenderingJson)('prefetching', () => { describe.runIf(isDev() && (!isWindows || !isCI))('detecting invalid root nodes', () => { it.each(['1', '2', '3', '4'])('should detect invalid root nodes in pages (\'/invalid-root/%s\')', async (path) => { const { consoleLogs, page } = await renderPage(joinURL('/invalid-root', path)) - await page.evaluate(() => new Promise(resolve => setTimeout(resolve, 10))) + await page.waitForFunction(path => window.useNuxtApp?.()._route.fullPath === path, joinURL('/invalid-root', path)) await expectWithPolling( () => consoleLogs .map(w => w.text).join('\n') @@ -1930,7 +1943,7 @@ describe.runIf(isDev() && (!isWindows || !isCI))('detecting invalid root nodes', it.each(['fine'])('should not complain if there is no transition (%s)', async (path) => { const { consoleLogs, page } = await renderPage(joinURL('/invalid-root', path)) - await page.evaluate(() => new Promise(resolve => setTimeout(resolve, 10))) + await page.waitForFunction(path => window.useNuxtApp?.()._route.fullPath === path, joinURL('/invalid-root', path)) const consoleLogsWarns = consoleLogs.filter(i => i.type === 'warning') expect(consoleLogsWarns.length).toEqual(0) @@ -1965,7 +1978,7 @@ describe.skipIf(isDev())('dynamic paths', () => { it('should work with no overrides', async () => { const html: string = await $fetch('/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { - const url = match[2] || match[3] + const url = match[2] || match[3]! expect(url.startsWith('/_nuxt/') || isPublicFile('/', url)).toBeTruthy() } }) @@ -1974,10 +1987,10 @@ describe.skipIf(isDev())('dynamic paths', () => { it.skipIf(isWebpack)('adds relative paths to CSS', async () => { const html: string = await $fetch('/assets') const urls = Array.from(html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)).map(m => m[2] || m[3]) - const cssURL = urls.find(u => /_nuxt\/assets.*\.css$/.test(u)) + const cssURL = urls.find(u => /_nuxt\/assets.*\.css$/.test(u!)) expect(cssURL).toBeDefined() const css = await $fetch(cssURL!) - const imageUrls = new Set(Array.from(css.matchAll(/url\(([^)]*)\)/g)).map(m => m[1].replace(/[-.]\w{8}\./g, '.'))) + const imageUrls = new Set(Array.from(css.matchAll(/url\(([^)]*)\)/g)).map(m => m[1]!.replace(/[-.]\w{8}\./g, '.'))) expect([...imageUrls]).toMatchInlineSnapshot(` [ "./logo.svg", @@ -1996,7 +2009,7 @@ describe.skipIf(isDev())('dynamic paths', () => { const html = await $fetch('/foo/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { - const url = match[2] || match[3] + const url = match[2] || match[3]! expect(url.startsWith('/foo/_other/') || isPublicFile('/foo/', url)).toBeTruthy() } @@ -2012,7 +2025,7 @@ describe.skipIf(isDev())('dynamic paths', () => { const html = await $fetch('/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { - const url = match[2] || match[3] + const url = match[2] || match[3]! expect(url.startsWith('./_nuxt/') || isPublicFile('./', url)).toBeTruthy() expect(url.startsWith('./_nuxt/_nuxt')).toBeFalsy() } @@ -2041,7 +2054,7 @@ describe.skipIf(isDev())('dynamic paths', () => { const html = await $fetch('/foo/assets') for (const match of html.matchAll(/(href|src)="(.*?)"|url\(([^)]*)\)/g)) { - const url = match[2] || match[3] + const url = match[2] || match[3]! expect(url.startsWith('https://example.com/_cdn/') || isPublicFile('https://example.com/', url)).toBeTruthy() } }) @@ -2077,7 +2090,7 @@ 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') && (l.href.startsWith('_nuxt/components/islands/') && l.href.includes('_nuxt/components/islands/RouteComponent'))) + result.head.link = result.head.link.filter(l => !l.href!.includes('@nuxt+ui-templates') && (l.href!.startsWith('_nuxt/components/islands/') && l.href!.includes('_nuxt/components/islands/RouteComponent'))) } expect(result).toMatchInlineSnapshot(` @@ -2099,7 +2112,7 @@ describe('component islands', () => { }), })) if (isDev()) { - result.head.link = result.head.link.filter(l => !l.href.includes('@nuxt+ui-templates') && (l.href.startsWith('_nuxt/components/islands/') && l.href.includes('_nuxt/components/islands/LongAsyncComponent'))) + result.head.link = result.head.link.filter(l => !l.href!.includes('@nuxt+ui-templates') && (l.href!.startsWith('_nuxt/components/islands/') && l.href!.includes('_nuxt/components/islands/LongAsyncComponent'))) } result.html = result.html.replaceAll(/ (data-island-uid|data-island-component)="([^"]*)"/g, '') expect(result).toMatchInlineSnapshot(` @@ -2157,7 +2170,7 @@ describe('component islands', () => { }), })) if (isDev()) { - result.head.link = result.head.link.filter(l => !l.href.includes('@nuxt+ui-templates') && (l.href.startsWith('_nuxt/components/islands/') && l.href.includes('_nuxt/components/islands/AsyncServerComponent'))) + result.head.link = result.head.link.filter(l => !l.href!.includes('@nuxt+ui-templates') && (l.href!.startsWith('_nuxt/components/islands/') && l.href!.includes('_nuxt/components/islands/AsyncServerComponent'))) } result.props = {} result.components = {} @@ -2182,7 +2195,7 @@ describe('component islands', () => { it('render server component with selective client hydration', async () => { const result = await $fetch('/__nuxt_island/ServerWithClient') if (isDev()) { - result.head.link = result.head.link.filter(l => !l.href.includes('@nuxt+ui-templates') && (l.href.startsWith('_nuxt/components/islands/') && l.href.includes('_nuxt/components/islands/AsyncServerComponent'))) + result.head.link = result.head.link.filter(l => !l.href!.includes('@nuxt+ui-templates') && (l.href!.startsWith('_nuxt/components/islands/') && l.href!.includes('_nuxt/components/islands/AsyncServerComponent'))) } const { components } = result result.components = {} @@ -2203,13 +2216,13 @@ describe('component islands', () => { } `) expect(teleportsEntries).toHaveLength(1) - expect(teleportsEntries[0][0].startsWith('Counter-')).toBeTruthy() - expect(teleportsEntries[0][1].props).toMatchInlineSnapshot(` + expect(teleportsEntries[0]![0].startsWith('Counter-')).toBeTruthy() + expect(teleportsEntries[0]![1].props).toMatchInlineSnapshot(` { "multiplier": 1, } `) - expect(teleportsEntries[0][1].html).toMatchInlineSnapshot('"
Sugar Counter 12 x 1 = 12
"') + expect(teleportsEntries[0]![1].html).toMatchInlineSnapshot('"
Sugar Counter 12 x 1 = 12
"') }) } @@ -2227,10 +2240,10 @@ describe('component islands', () => { if (isDev()) { 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('//', '/') - link.key = link.key.replace(/-[a-z0-9]+$/i, '') + link.href = link.href!.replace(fixtureDir, '/').replaceAll('//', '/') + link.key = link.key!.replace(/-[a-z0-9]+$/i, '') } - result.head.link.sort((a, b) => b.href.localeCompare(a.href)) + result.head.link.sort((a, b) => b.href!.localeCompare(a.href!)) } // TODO: fix rendering of styles in webpack @@ -2249,7 +2262,7 @@ 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')) + result.head.link = result.head.link.filter(h => !h.href!.includes('SharedComponent')) expect(result.head).toMatchInlineSnapshot(` { "link": [ @@ -2463,7 +2476,7 @@ describe.skipIf(isWindows)('useAsyncData', () => { }) it('data is null after navigation when immediate false', async () => { - const defaultValue = isV4 ? 'undefined' : 'null' + const defaultValue = 'undefined' const { page } = await renderPage('/useAsyncData/immediate-remove-unmounted') expect(await page.locator('#immediate-data').getByText(defaultValue).textContent()).toBe(defaultValue) @@ -2595,7 +2608,7 @@ describe('teleports', () => { }) }) -describe.only('experimental', () => { +describe('experimental', () => { it('decorators support works', async () => { const html = await $fetch('/experimental/decorators') expect(html).toContain('decorated-decorated') @@ -2607,7 +2620,7 @@ describe.only('experimental', () => { await page.locator('body').getByText('Nuxt is Awesome!').waitFor() expect(await page.innerHTML('body')).toContain('CWD: [available]') await page.close() - }, 30_000) + }, 40_000) }) function normaliseIslandResult (result: NuxtIslandResponse) { diff --git a/test/bundle.test.ts b/test/bundle.test.ts index 2afe8693f9..881ddd6da2 100644 --- a/test/bundle.test.ts +++ b/test/bundle.test.ts @@ -32,10 +32,10 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverDir = join(rootDir, '.output/server') const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) - expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"209k"`) + expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"205k"`) const modules = await analyzeSizes('node_modules/**/*', serverDir) - expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"1340k"`) + expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"1344k"`) const packages = modules.files .filter(m => m.endsWith('package.json')) @@ -55,6 +55,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM "@vue/runtime-dom", "@vue/server-renderer", "@vue/shared", + "db0", "devalue", "entities", "estree-walker", @@ -72,10 +73,10 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverDir = join(rootDir, '.output-inline/server') const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) - expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"530k"`) + expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"526k"`) const modules = await analyzeSizes('node_modules/**/*', serverDir) - expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"76.2k"`) + expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"80.3k"`) const packages = modules.files .filter(m => m.endsWith('package.json')) @@ -86,6 +87,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM "@unhead/dom", "@unhead/shared", "@unhead/ssr", + "db0", "devalue", "hookable", "unhead", diff --git a/test/fixtures/basic-types/nuxt.config.ts b/test/fixtures/basic-types/nuxt.config.ts index 93a409cc04..2a573895d0 100644 --- a/test/fixtures/basic-types/nuxt.config.ts +++ b/test/fixtures/basic-types/nuxt.config.ts @@ -1,13 +1,13 @@ import { addTypeTemplate, installModule } from 'nuxt/kit' export default defineNuxtConfig({ + compatibilityDate: '2024-06-28', experimental: { typedPages: true, appManifest: true, }, future: { typescriptBundlerResolution: process.env.MODULE_RESOLUTION === 'bundler', - compatibilityVersion: process.env.TEST_V4 === 'true' ? 4 : 3, }, buildDir: process.env.NITRO_BUILD_DIR, builder: process.env.TEST_BUILDER as 'webpack' | 'vite' ?? 'vite', diff --git a/test/fixtures/basic-types/package.json b/test/fixtures/basic-types/package.json index 59851227a6..2eee0a54f8 100644 --- a/test/fixtures/basic-types/package.json +++ b/test/fixtures/basic-types/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "ofetch": "latest", - "unplugin-vue-router": "^0.7.0", + "unplugin-vue-router": "^0.10.0", "vitest": "1.6.0", "vue": "latest", "vue-router": "latest" diff --git a/test/fixtures/basic-types/types.ts b/test/fixtures/basic-types/types.ts index 4e593c1b6a..bc9b4752cf 100644 --- a/test/fixtures/basic-types/types.ts +++ b/test/fixtures/basic-types/types.ts @@ -1,7 +1,7 @@ import { describe, expectTypeOf, it } from 'vitest' import type { Ref, SlotsType } from 'vue' import type { FetchError } from 'ofetch' -import type { NavigationFailure, RouteLocationNormalized, RouteLocationRaw, Router, useRouter as vueUseRouter } from '#vue-router' +import type { NavigationFailure, RouteLocationNormalized, RouteLocationRaw, Router, useRouter as vueUseRouter } from 'vue-router' import type { AppConfig, RuntimeValue, UpperSnakeCase } from 'nuxt/schema' import { defineNuxtModule } from 'nuxt/kit' @@ -12,8 +12,8 @@ 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' +type DefaultAsyncDataErrorValue = undefined +type DefaultAsyncDataValue = undefined interface TestResponse { message: string } @@ -254,6 +254,23 @@ describe('modules', () => { }, }) }) + + it('correctly typed resolved options in defineNuxtModule setup using `.with()`', () => { + defineNuxtModule<{ + foo?: string + baz: number + }>().with({ + defaults: { + foo: 'bar', + }, + setup: (resolvedOptions) => { + expectTypeOf(resolvedOptions).toEqualTypeOf<{ + foo: string + baz?: number | undefined + }>() + }, + }) + }) }) describe('nuxtApp', () => { diff --git a/test/fixtures/basic/components/BreakInAsyncSetup.vue b/test/fixtures/basic/components/BreakInAsyncSetup.vue index 44eaf24d5b..33798a2676 100644 --- a/test/fixtures/basic/components/BreakInAsyncSetup.vue +++ b/test/fixtures/basic/components/BreakInAsyncSetup.vue @@ -3,7 +3,7 @@ async function getData () { } await getData() // break server-side -const data = window.__NUXT__ +const data = window.useNuxtApp().payload diff --git a/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue b/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue index 9ed0940264..6390bdcdad 100644 --- a/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue +++ b/test/fixtures/basic/pages/useAsyncData/immediate-remove-unmounted.vue @@ -20,11 +20,9 @@ diff --git a/test/fixtures/minimal-types/nuxt.config.ts b/test/fixtures/minimal-types/nuxt.config.ts index c1ae1551ca..7b480b19f2 100644 --- a/test/fixtures/minimal-types/nuxt.config.ts +++ b/test/fixtures/minimal-types/nuxt.config.ts @@ -1,4 +1,4 @@ export default defineNuxtConfig({ - future: { compatibilityVersion: process.env.TEST_V4 === 'true' ? 4 : 3 }, + compatibilityDate: '2024-06-28', experimental: { appManifest: true }, }) diff --git a/test/fixtures/minimal/nuxt.config.ts b/test/fixtures/minimal/nuxt.config.ts index 6a0457d1ed..bf1b59d106 100644 --- a/test/fixtures/minimal/nuxt.config.ts +++ b/test/fixtures/minimal/nuxt.config.ts @@ -3,7 +3,7 @@ import { fileURLToPath } from 'node:url' const testWithInlineVue = process.env.EXTERNAL_VUE === 'false' export default defineNuxtConfig({ - future: { compatibilityVersion: process.env.TEST_V4 === 'true' ? 4 : 3 }, + compatibilityDate: '2024-06-28', pages: false, experimental: { externalVue: !testWithInlineVue, diff --git a/test/fixtures/runtime-compiler/nuxt.config.ts b/test/fixtures/runtime-compiler/nuxt.config.ts index 9855b8815c..b61d642360 100644 --- a/test/fixtures/runtime-compiler/nuxt.config.ts +++ b/test/fixtures/runtime-compiler/nuxt.config.ts @@ -1,6 +1,6 @@ // https://nuxt.com/docs/api/nuxt-config export default defineNuxtConfig({ - future: { compatibilityVersion: process.env.TEST_V4 === 'true' ? 4 : 3 }, + compatibilityDate: '2024-06-28', experimental: { externalVue: false, }, diff --git a/test/fixtures/suspense/nuxt.config.ts b/test/fixtures/suspense/nuxt.config.ts index 02632d5ddb..38e3ecfcbf 100644 --- a/test/fixtures/suspense/nuxt.config.ts +++ b/test/fixtures/suspense/nuxt.config.ts @@ -3,7 +3,7 @@ import { fileURLToPath } from 'node:url' const testWithInlineVue = process.env.EXTERNAL_VUE === 'false' export default defineNuxtConfig({ - future: { compatibilityVersion: process.env.TEST_V4 === 'true' ? 4 : 3 }, + compatibilityDate: '2024-06-28', experimental: { externalVue: !testWithInlineVue, }, diff --git a/test/hmr.test.ts b/test/hmr.test.ts index c1e8963cf9..d1f44edd46 100644 --- a/test/hmr.test.ts +++ b/test/hmr.test.ts @@ -3,10 +3,13 @@ import { fileURLToPath } from 'node:url' import { describe, expect, it } from 'vitest' import { isWindows } from 'std-env' import { join } from 'pathe' -import { $fetch, fetch, setup } from '@nuxt/test-utils/e2e' +import { $fetch as _$fetch, fetch, setup } from '@nuxt/test-utils/e2e' import { expectWithPolling, renderPage } from './utils' +// TODO: update @nuxt/test-utils +const $fetch = _$fetch as import('nitro/types').$Fetch + const isWebpack = process.env.TEST_BUILDER === 'webpack' // TODO: fix HMR on Windows @@ -108,7 +111,7 @@ if (process.env.TEST_ENV !== 'built' && !isWindows) { const resolveHmrId = async () => { const node = await page.$('#hmr-id') const text = await node?.innerText() || '' - return Number(text?.trim().split(':')[1].trim()) + return Number(text.trim().split(':')[1]?.trim() || '') } const componentPath = join(fixturePath, 'components/islands/HmrComponent.vue') const triggerHmr = async () => fsp.writeFile( diff --git a/test/nuxt/composables.test.ts b/test/nuxt/composables.test.ts index e22488309b..a8097cce72 100644 --- a/test/nuxt/composables.test.ts +++ b/test/nuxt/composables.test.ts @@ -6,6 +6,7 @@ import { defineEventHandler } from 'h3' import { mount } from '@vue/test-utils' import { mountSuspended, registerEndpoint } from '@nuxt/test-utils/runtime' +import { hasProtocol } from 'ufo' import * as composables from '#app/composables' import { clearNuxtData, refreshNuxtData, useAsyncData, useNuxtData } from '#app/composables/asyncData' @@ -19,8 +20,7 @@ import { useId } from '#app/composables/id' import { callOnce } from '#app/composables/once' import { useLoadingIndicator } from '#app/composables/loading-indicator' import { useRouteAnnouncer } from '#app/composables/route-announcer' - -import { asyncDataDefaults, nuxtDefaultErrorValue } from '#build/nuxt.config.mjs' +import { encodeURL, resolveRouteObject } from '#app/composables/router' registerEndpoint('/api/test', defineEventHandler(event => ({ method: event.method, @@ -128,7 +128,7 @@ describe('useAsyncData', () => { ] `) expect(res instanceof Promise).toBeTruthy() - expect(res.data.value).toBe(asyncDataDefaults.value) + expect(res.data.value).toBe(undefined) await res expect(res.data.value).toBe('test') }) @@ -140,7 +140,7 @@ describe('useAsyncData', () => { expect(immediate.pending.value).toBe(false) const nonimmediate = await useAsyncData(() => Promise.resolve('test'), { immediate: false }) - expect(nonimmediate.data.value).toBe(asyncDataDefaults.value) + expect(nonimmediate.data.value).toBe(undefined) expect(nonimmediate.status.value).toBe('idle') expect(nonimmediate.pending.value).toBe(true) }) @@ -165,9 +165,9 @@ describe('useAsyncData', () => { // https://github.com/nuxt/nuxt/issues/23411 it('should initialize with error set to null when immediate: false', async () => { const { error, execute } = useAsyncData(() => Promise.resolve({}), { immediate: false }) - expect(error.value).toBe(asyncDataDefaults.errorValue) + expect(error.value).toBe(undefined) await execute() - expect(error.value).toBe(asyncDataDefaults.errorValue) + expect(error.value).toBe(undefined) }) it('should be accessible with useNuxtData', async () => { @@ -208,9 +208,8 @@ describe('useAsyncData', () => { clear() - // TODO: update to asyncDataDefaults.value in v4 expect(data.value).toBeUndefined() - expect(error.value).toBe(asyncDataDefaults.errorValue) + expect(error.value).toBe(undefined) expect(pending.value).toBe(false) expect(status.value).toBe('idle') }) @@ -354,7 +353,7 @@ describe('errors', () => { showError('new error') expect(error.value).toMatchInlineSnapshot('[Error: new error]') clearError() - expect(error.value).toBe(nuxtDefaultErrorValue) + expect(error.value).toBe(undefined) }) }) @@ -599,6 +598,29 @@ describe('routing utilities: `navigateTo`', () => { }) }) +describe('routing utilities: `resolveRouteObject`', () => { + it('resolveRouteObject should correctly resolve a route object', () => { + expect(resolveRouteObject({ path: '/test' })).toMatchInlineSnapshot(`"/test"`) + expect(resolveRouteObject({ path: '/test', hash: '#thing', query: { foo: 'bar' } })).toMatchInlineSnapshot(`"/test?foo=bar#thing"`) + }) +}) + +describe('routing utilities: `encodeURL`', () => { + const encode = (url: string) => { + const isExternal = hasProtocol(url, { acceptRelative: true }) + return encodeURL(url, isExternal) + } + it('encodeURL should correctly encode a URL', () => { + expect(encode('https://test.com')).toMatchInlineSnapshot(`"https://test.com/"`) + expect(encode('//test.com')).toMatchInlineSnapshot(`"//test.com/"`) + expect(encode('mailto:daniel@cล“ur.com')).toMatchInlineSnapshot(`"mailto:daniel@c%C5%93ur.com"`) + const encoded = encode('/cล“ur?redirected=' + encodeURIComponent('https://google.com')) + expect(new URL('/cล“ur', 'http://localhost').pathname).toMatchInlineSnapshot(`"/c%C5%93ur"`) + expect(encoded).toMatchInlineSnapshot(`"/c%C5%93ur?redirected=https%3A%2F%2Fgoogle.com"`) + expect(useRouter().resolve(encoded).query.redirected).toMatchInlineSnapshot(`"https://google.com"`) + }) +}) + describe('routing utilities: `useRoute`', () => { it('should show provide a mock route', () => { expect(useRoute()).toMatchObject({ @@ -620,7 +642,7 @@ describe('routing utilities: `abortNavigation`', () => { it('should throw an error if one is provided', () => { const error = useError() expect(() => abortNavigation({ message: 'Page not found' })).toThrowErrorMatchingInlineSnapshot('[Error: Page not found]') - expect(error.value).toBe(nuxtDefaultErrorValue) + expect(error.value).toBe(undefined) }) it('should block navigation if no error is provided', () => { expect(abortNavigation()).toMatchInlineSnapshot('false') diff --git a/test/prepare.ts b/test/prepare.ts index 83c2acac2b..e4442a18ac 100644 --- a/test/prepare.ts +++ b/test/prepare.ts @@ -1,6 +1,8 @@ import { fileURLToPath } from 'node:url' +import { rm } from 'node:fs/promises' + import { globby } from 'globby' -import fs from 'fs-extra' + import { execa } from 'execa' async function initTesting () { @@ -12,9 +14,9 @@ async function initTesting () { await Promise.all([ // clear nuxt build files - ...dirs.map(dir => fs.remove(`${dir}/.nuxt`)), + ...dirs.map(dir => rm(`${dir}/.nuxt`, { force: true, recursive: true })), // clear vite cache - ...dirs.map(dir => fs.remove(`${dir}/node_modules/.cache`), { force: true }), + ...dirs.map(dir => rm(`${dir}/node_modules/.cache`, { force: true, recursive: true })), ]) await Promise.all( diff --git a/test/runtime-compiler.test.ts b/test/runtime-compiler.test.ts index 3933eff3a3..7ab8944d09 100644 --- a/test/runtime-compiler.test.ts +++ b/test/runtime-compiler.test.ts @@ -1,8 +1,8 @@ import { fileURLToPath } from 'node:url' import { describe, expect, it } from 'vitest' -import { $fetch, setup } from '@nuxt/test-utils/e2e' +import { $fetch, createPage, setup } from '@nuxt/test-utils/e2e' import { isWindows } from 'std-env' -import { expectNoClientErrors, renderPage } from './utils' +import { expectNoClientErrors } from './utils' const isWebpack = process.env.TEST_BUILDER === 'webpack' @@ -24,31 +24,40 @@ describe('test basic config', () => { it('test HelloWorld.vue', async () => { const html = await $fetch('/') - const { page } = await renderPage('/') + const page = await createPage('/') + await page.waitForFunction(() => window.useNuxtApp?.() && !window.useNuxtApp?.().isHydrating) expect(html).toContain('
hello, Helloworld.vue here !
') expect(await page.locator('body').innerHTML()).toContain('
hello, Helloworld.vue here !
') + await page.close() }) it('test Name.ts', async () => { const html = await $fetch('/') - const { page } = await renderPage('/') + const page = await createPage('/') + await page.waitForFunction(() => window.useNuxtApp?.() && !window.useNuxtApp?.().isHydrating) expect(html).toContain('
I am the Name.ts component
') expect(await page.locator('body').innerHTML()).toContain('
I am the Name.ts component
') + + await page.close() }) it('test ShowTemplate.ts', async () => { const html = await $fetch('/') - const { page } = await renderPage('/') + const page = await createPage('/') + await page.waitForFunction(() => window.useNuxtApp?.() && !window.useNuxtApp?.().isHydrating) expect(html).toContain('
Hello my name is : John, i am defined by ShowTemplate.vue and my template is retrieved from the API
') expect(await page.locator('body').innerHTML()).toContain('
Hello my name is : John, i am defined by ShowTemplate.vue and my template is retrieved from the API
') + + await page.close() }) it('test Interactive component.ts', async () => { const html = await $fetch('/') - const { page } = await renderPage('/') + const page = await createPage('/') + await page.waitForFunction(() => window.useNuxtApp?.() && !window.useNuxtApp?.().isHydrating) expect(html).toContain('I am defined by Interactive in the setup of App.vue. My full component definition is retrieved from the api') expect(await page.locator('#interactive').innerHTML()).toContain('I am defined by Interactive in the setup of App.vue. My full component definition is retrieved from the api') @@ -56,5 +65,7 @@ describe('test basic config', () => { await button.click() const count = page.locator('#interactive-count') expect(await count.innerHTML()).toBe('1') + + await page.close() }) }) diff --git a/test/setup-runtime.ts b/test/setup-runtime.ts index 5eb2300dd1..66163ec48b 100644 --- a/test/setup-runtime.ts +++ b/test/setup-runtime.ts @@ -5,6 +5,7 @@ import { registerEndpoint } from '@nuxt/test-utils/runtime' vi.mock('#app/compat/idle-callback', () => ({ requestIdleCallback: (cb: Function) => cb(), + cancelIdleCallback: () => {}, })) const timestamp = Date.now() diff --git a/test/setup.ts b/test/setup.ts index 2655f41fb3..09d429bde6 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -1,22 +1,25 @@ +import { existsSync } from 'node:fs' +import { cp, rm } from 'node:fs/promises' import { fileURLToPath } from 'node:url' + import { dirname, join } from 'pathe' -import fs from 'fs-extra' const dir = dirname(fileURLToPath(import.meta.url)) const fixtureDir = join(dir, 'fixtures') const tempDir = join(dir, 'fixtures-temp') export async function setup () { - if (fs.existsSync(tempDir)) { - await fs.remove(tempDir) + if (existsSync(tempDir)) { + await rm(tempDir, { force: true, recursive: true }) } - await fs.copy(fixtureDir, tempDir, { + await cp(fixtureDir, tempDir, { + recursive: true, filter: src => !src.includes('.cache'), }) } export async function teardown () { - if (fs.existsSync(tempDir)) { - await fs.remove(tempDir) + if (existsSync(tempDir)) { + await rm(tempDir, { force: true, recursive: true }) } } diff --git a/test/suspense.test.ts b/test/suspense.test.ts index 4a1f4b635a..53d48c852f 100644 --- a/test/suspense.test.ts +++ b/test/suspense.test.ts @@ -22,15 +22,18 @@ await setup({ describe('suspense multiple nav', () => { it('should not throw error', async () => { const { page, consoleLogs, pageErrors } = await renderPage('/') - await page.waitForLoadState('networkidle') + await page.waitForFunction(() => window.useNuxtApp?.() && !window.useNuxtApp?.().isHydrating) expect(await page.locator('#btn-a').textContent()).toMatchInlineSnapshot('" Target A "') // Make sure it navigates to the correct page await page.locator('#btn-a').click() + await page.waitForFunction(() => window.useNuxtApp?.()._route.path === '/target') console.log(page.url()) expect(await page.locator('#content').textContent()).toContain('Hello a') await page.goBack() + await page.waitForFunction(() => window.useNuxtApp?.()._route.path === '/') + // When back expect(await page.locator('body').textContent()).toContain('Index Page') @@ -40,6 +43,8 @@ describe('suspense multiple nav', () => { page.locator('#btn-b').click(), ]) + await page.waitForFunction(() => window.useNuxtApp?.()._route.path === '/target') + expect.soft(await page.locator('#content').textContent()).toContain('Hello b') const consoleLogErrors = consoleLogs.filter(i => i.type === 'error') diff --git a/test/utils.ts b/test/utils.ts index 3ddbc487b4..d88d5fd063 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -107,17 +107,17 @@ export function parsePayload (payload: string) { } export function parseData (html: string) { if (!isRenderingJson) { - const { script } = html.match(/