From 228eef187ae33d1676a79e466d289c0e6e9ab321 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sat, 4 Jul 2026 03:57:30 +0530 Subject: [PATCH] feat!: migrate to vite 8 --- .github/workflows/test.yml | 2 +- docs/en/guide/getting-started.md | 2 +- docs/es/guide/getting-started.md | 2 +- docs/fa/guide/getting-started.md | 2 +- docs/ja/guide/getting-started.md | 2 +- docs/ko/guide/getting-started.md | 2 +- docs/pt/guide/getting-started.md | 2 +- docs/ru/guide/getting-started.md | 2 +- docs/zh/guide/getting-started.md | 2 +- package.json | 9 +- pnpm-lock.yaml | 762 ++++++++++--------------------- pnpm-workspace.yaml | 1 - rollup.config.ts | 2 +- src/node/build/build.ts | 27 +- src/node/build/buildMPAClient.ts | 8 +- src/node/build/bundle.ts | 63 +-- src/node/build/render.ts | 32 +- src/node/plugin.ts | 8 +- src/node/utils/nativeImport.ts | 24 + 19 files changed, 346 insertions(+), 608 deletions(-) create mode 100644 src/node/utils/nativeImport.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a89cc38cd..aa97e0f79 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node_version: [20, 22, 24, latest] + node_version: [22, 24, 26] include: - os: windows-latest node_version: 24 diff --git a/docs/en/guide/getting-started.md b/docs/en/guide/getting-started.md index 0dd629262..31e456952 100644 --- a/docs/en/guide/getting-started.md +++ b/docs/en/guide/getting-started.md @@ -12,7 +12,7 @@ You can try VitePress directly in your browser on [StackBlitz](https://vitepress ### Prerequisites -- [Node.js](https://nodejs.org/) version 20 or higher. +- [Node.js](https://nodejs.org/) version 22 or higher. - Terminal for accessing VitePress via its command line interface (CLI). - Text Editor with [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax support. - [VSCode](https://code.visualstudio.com/) is recommended, along with the [official Vue extension](https://marketplace.visualstudio.com/items?itemName=Vue.volar). diff --git a/docs/es/guide/getting-started.md b/docs/es/guide/getting-started.md index ce36352ad..104084455 100644 --- a/docs/es/guide/getting-started.md +++ b/docs/es/guide/getting-started.md @@ -12,7 +12,7 @@ Puede experimentar VitePress directamente en su navegador en [StackBlitz](https: ### Prerrequisitos {#prerequisites} -- [Node.js](https://nodejs.org/) versión 20 o superior. +- [Node.js](https://nodejs.org/) versión 22 o superior. - Terminal para acessar VitePress a través de su interfaz de linea de comando (CLI). - Editor de texto con soporte a sintaxis [Markdown](https://en.wikipedia.org/wiki/Markdown). - [VSCode](https://code.visualstudio.com/) es recomendado, junto con la [extensión oficial Vue](https://marketplace.visualstudio.com/items?itemName=Vue.volar). diff --git a/docs/fa/guide/getting-started.md b/docs/fa/guide/getting-started.md index 33af8299e..d9d7d6606 100644 --- a/docs/fa/guide/getting-started.md +++ b/docs/fa/guide/getting-started.md @@ -12,7 +12,7 @@ description: نصب و راه‌اندازی ویت‌پرس. یاد بگیری ### پیش‌نیازها {#prerequisites} -- [Node.js](https://nodejs.org/) نسخه 20 یا بالاتر. +- [Node.js](https://nodejs.org/) نسخه 22 یا بالاتر. - ترمینال برای دسترسی به ویت‌پرس از طریق رابط خط فرمان (CLI). - ویرایشگر متنی با پشتیبانی از [Markdown](https://en.wikipedia.org/wiki/Markdown). - [VSCode](https://code.visualstudio.com/) به همراه [افزونه رسمی Vue](https://marketplace.visualstudio.com/items?itemName=Vue.volar). diff --git a/docs/ja/guide/getting-started.md b/docs/ja/guide/getting-started.md index 5b9a8e2a2..5e164aa15 100644 --- a/docs/ja/guide/getting-started.md +++ b/docs/ja/guide/getting-started.md @@ -12,7 +12,7 @@ description: VitePressのインストール、セットアップ、開発サー ### 前提条件 {#prerequisites} -- [Node.js](https://nodejs.org/) バージョン 20 以上 +- [Node.js](https://nodejs.org/) バージョン 22 以上 - VitePress をコマンドラインインターフェース (CLI) で操作するためのターミナル - [Markdown](https://en.wikipedia.org/wiki/Markdown) 構文に対応したテキストエディタ - 推奨: [VSCode](https://code.visualstudio.com/) と [公式 Vue 拡張](https://marketplace.visualstudio.com/items?itemName=Vue.volar) diff --git a/docs/ko/guide/getting-started.md b/docs/ko/guide/getting-started.md index 5e28c2d86..ca6e743b6 100644 --- a/docs/ko/guide/getting-started.md +++ b/docs/ko/guide/getting-started.md @@ -12,7 +12,7 @@ description: VitePress를 시작하세요. 문서 사이트를 설치하고, 스 ### 사전 준비 사항 {#prerequisites} -- [Node.js](https://nodejs.org/) 버전 20 이상. +- [Node.js](https://nodejs.org/) 버전 22 이상. - VitePress를 명령줄 인터페이스(CLI)를 통해 접근하기 위한 터미널. - [마크다운](https://en.wikipedia.org/wiki/Markdown) 문법 지원이 있는 텍스트 에디터. - [VSCode](https://code.visualstudio.com/)와 [공식 Vue 확장 프로그램](https://marketplace.visualstudio.com/items?itemName=Vue.volar) 사용을 권장합니다. diff --git a/docs/pt/guide/getting-started.md b/docs/pt/guide/getting-started.md index 182a37380..056626fff 100644 --- a/docs/pt/guide/getting-started.md +++ b/docs/pt/guide/getting-started.md @@ -12,7 +12,7 @@ Você pode experimentar VitePress diretamente no seu navegador em [StackBlitz](h ### Pré-requisitos {#prerequisites} -- [Node.js](https://nodejs.org/) na versão 20 ou superior. +- [Node.js](https://nodejs.org/) na versão 22 ou superior. - Terminal para acessar VitePress através da sua interface de linha de comando (CLI). - Editor de texto com suporte a sintaxe [Markdown](https://en.wikipedia.org/wiki/Markdown). - [VSCode](https://code.visualstudio.com/) é recomendado, junto com a [extensão oficial Vue](https://marketplace.visualstudio.com/items?itemName=Vue.volar). diff --git a/docs/ru/guide/getting-started.md b/docs/ru/guide/getting-started.md index b2b81aac9..7a4650fb3 100644 --- a/docs/ru/guide/getting-started.md +++ b/docs/ru/guide/getting-started.md @@ -12,7 +12,7 @@ description: Начните работу с VitePress. Узнайте, как у ### Требования {#prerequisites} -- [Node.js](https://nodejs.org/) версии 20 или выше. +- [Node.js](https://nodejs.org/) версии 22 или выше. - Терминал для доступа к VitePress через интерфейс командной строки (CLI). - Текстовый редактор с поддержкой синтаксиса [Markdown](https://ru.wikipedia.org/wiki/Markdown). - Рекомендуется использовать [VSCode](https://code.visualstudio.com/), а также [официальное расширение Vue](https://marketplace.visualstudio.com/items?itemName=Vue.volar). diff --git a/docs/zh/guide/getting-started.md b/docs/zh/guide/getting-started.md index 03af7b1e2..847c117aa 100644 --- a/docs/zh/guide/getting-started.md +++ b/docs/zh/guide/getting-started.md @@ -12,7 +12,7 @@ description: 快速上手 VitePress。了解如何安装、创建项目结构并 ### 前置准备 {#prerequisites} -- [Node.js](https://nodejs.org/) 20 及以上版本。 +- [Node.js](https://nodejs.org/) 22 及以上版本。 - 通过命令行界面 (CLI) 访问 VitePress 的终端。 - 支持 [Markdown](https://en.wikipedia.org/wiki/Markdown) 语法的编辑器。 - 推荐 [VSCode](https://code.visualstudio.com/) 及其[官方 Vue 扩展](https://marketplace.visualstudio.com/items?itemName=Vue.volar)。 diff --git a/package.json b/package.json index e04e627c5..dfc1b25f8 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "mark.js": "8.11.1", "minisearch": "^7.2.0", "shiki": "^4.3.0", - "vite": "^7.3.6", + "vite": "^8.1.3", "vue": "^3.5.39" }, "devDependencies": { @@ -168,7 +168,6 @@ "nanoid": "^5.1.16", "obug": "^2.1.3", "ora": "^9.4.1", - "oxc-minify": "^0.98.0", "p-map": "^7.0.4", "package-directory": "^8.2.0", "path-to-regexp": "^6.3.0", @@ -190,13 +189,12 @@ "sitemap": "^9.0.1", "tinyglobby": "^0.2.17", "typescript": "^5.9.3", - "vitest": "4.0.0-beta.4", + "vitest": "^4.1.9", "vue-tsc": "^3.3.5", "wait-on": "^9.0.10" }, "peerDependencies": { "markdown-it-mathjax3": "^4", - "oxc-minify": "*", "postcss": "^8" }, "peerDependenciesMeta": { @@ -205,9 +203,6 @@ }, "postcss": { "optional": true - }, - "oxc-minify": { - "optional": true } }, "packageManager": "pnpm@10.33.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea730e468..6a5a20144 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,6 @@ settings: overrides: ora>string-width: ^5 - vite: npm:rolldown-vite@latest patchedDependencies: '@types/markdown-it-attrs': @@ -52,7 +51,7 @@ importers: version: 14.1.2 '@vitejs/plugin-vue': specifier: ^6.0.7 - version: 6.0.7(rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0))(vue@3.5.39(typescript@5.9.3)) + version: 6.0.7(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0))(vue@3.5.39(typescript@5.9.3)) '@vue/devtools-api': specifier: ^8.1.4 version: 8.1.4 @@ -78,8 +77,8 @@ importers: specifier: ^4.3.0 version: 4.3.0 vite: - specifier: npm:rolldown-vite@latest - version: rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) + specifier: ^8.1.3 + version: 8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) vue: specifier: ^3.5.39 version: 3.5.39(typescript@5.9.3) @@ -237,9 +236,6 @@ importers: ora: specifier: ^9.4.1 version: 9.4.1 - oxc-minify: - specifier: ^0.98.0 - version: 0.98.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) p-map: specifier: ^7.0.4 version: 7.0.4 @@ -304,8 +300,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 vitest: - specifier: 4.0.0-beta.4 - version: 4.0.0-beta.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/debug@4.1.13)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) + specifier: ^4.1.9 + version: 4.1.9(@types/node@25.9.4)(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0)) vue-tsc: specifier: ^3.3.5 version: 3.3.5(typescript@5.9.3) @@ -338,13 +334,13 @@ importers: version: 8.0.0 postcss-rtlcss: specifier: ^6.0.0 - version: 6.0.0(postcss@8.5.15) + version: 6.0.0(postcss@8.5.16) vitepress: specifier: workspace:* version: link:.. vitepress-plugin-group-icons: specifier: ^1.7.5 - version: 1.7.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) + version: 1.7.5(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0)) vitepress-plugin-llms: specifier: ^1.13.2 version: 1.13.2 @@ -671,199 +667,111 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-minify/binding-android-arm64@0.98.0': - resolution: {integrity: sha512-fQ9zAfwQvQE+FboIU7dgeDTOBGNQhV8xafXlyhay3jFjOcjqnvokWE1pcJSIRnhaVxahTXzMYvYJzizqWvluhQ==} + '@oxc-project/types@0.138.0': + resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==} + + '@polka/compression@1.0.0-next.28': + resolution: {integrity: sha512-aDmrBhgHJtxE+jy145WfhW9WmTAFmES/dNnn1LAs8UnnkFgBUj4T8I4ScQ9+rOkpDZStvnVP5iqhN3tvt7O1NA==} + engines: {node: '>=6'} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@rolldown/binding-android-arm64@1.1.4': + resolution: {integrity: sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-minify/binding-darwin-arm64@0.98.0': - resolution: {integrity: sha512-0cwHg1aHGbf8FtR69luAD9Fd7WJr2HyDO12aUC5mQCPdOmfMPFQYYlaziZhyt3gVcgzSq+988GQtDGtcJNU2ow==} + '@rolldown/binding-darwin-arm64@1.1.4': + resolution: {integrity: sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-minify/binding-darwin-x64@0.98.0': - resolution: {integrity: sha512-kftNK3NyfzPMSJduFU1B0ntVnMlr4zOjzVztJHyalelSi86UpItSCNu+GH9sYGc6WE2qd6r8gXokQqd0Vi4QQQ==} + '@rolldown/binding-darwin-x64@1.1.4': + resolution: {integrity: sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-minify/binding-freebsd-x64@0.98.0': - resolution: {integrity: sha512-rf3KZNYs4Wk4eQgyT2rjaYXs3/UBgCeM+13iNiUl0sbgMT2OuP63Wb7A/ICbaPaCcoA9cXJA1Y84SPM2vPTkCQ==} + '@rolldown/binding-freebsd-x64@1.1.4': + resolution: {integrity: sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-minify/binding-linux-arm-gnueabihf@0.98.0': - resolution: {integrity: sha512-Dtw9jkzssB2JbZ4Q9lZCfrl9r8r2Q60QABNQaIcpDILDoD4yk3GivOhjSuf3vQCYRlvHjPUmLmazZxaNuRK/Jg==} + '@rolldown/binding-linux-arm-gnueabihf@1.1.4': + resolution: {integrity: sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-minify/binding-linux-arm-musleabihf@0.98.0': - resolution: {integrity: sha512-gKgjKnHQLvEZqIPvp2D4AxFjtHDwEmNoNcfg6WePhkzNO7ud8M3F1x60GMKn6Nb/8CX2Y67GVISs+xivzYPo1A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - - '@oxc-minify/binding-linux-arm64-gnu@0.98.0': - resolution: {integrity: sha512-0TYQjHk/bzxo/Q0oF0BVM2bs4mIoTS7ee+m+r1B6QxMdmENMq1Q1EKgiGnwvhIu07srJJdJBYJoScaXbssmExA==} + '@rolldown/binding-linux-arm64-gnu@1.1.4': + resolution: {integrity: sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-minify/binding-linux-arm64-musl@0.98.0': - resolution: {integrity: sha512-TOGEzv2tr/lGttB6MIYExXdkMxWDVUqxFcu4AQ25e/Jk0kq5IVyDNmLfKzUin5r/1nmOJEpuBeS3xq0VPmtU7A==} + '@rolldown/binding-linux-arm64-musl@1.1.4': + resolution: {integrity: sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-minify/binding-linux-riscv64-gnu@0.98.0': - resolution: {integrity: sha512-zTyb36zh3s2ZDwRP3c5VEs2aS+CECXmpmgEWds+1bawELuueozsr455lqDE1qNcIMUS/AxeX9DCE4vM+LHYHfw==} + '@rolldown/binding-linux-ppc64-gnu@1.1.4': + resolution: {integrity: sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==} engines: {node: ^20.19.0 || >=22.12.0} - cpu: [riscv64] + cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-minify/binding-linux-s390x-gnu@0.98.0': - resolution: {integrity: sha512-UafNlOq0Uy/PmfkMuSWSpBAW+55QlGny1ysLMK1D6l2xC8SjFTheWHVjQVChHhgKFZxT1NypV/cbTQyh06mAYA==} + '@rolldown/binding-linux-s390x-gnu@1.1.4': + resolution: {integrity: sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-minify/binding-linux-x64-gnu@0.98.0': - resolution: {integrity: sha512-P/9krmxwtLbxdT339jEm4XUHUFMN4lzjqqvGwBug6NxPvN1sppSl06CNXzHQ6H7/oSftZIyAmsOaLWknhm30uw==} + '@rolldown/binding-linux-x64-gnu@1.1.4': + resolution: {integrity: sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-minify/binding-linux-x64-musl@0.98.0': - resolution: {integrity: sha512-XpbZ15Lm3eFg8+VLAKgTmu+9VVMb7B2Cz6LOGd0EqMwPYaC+I84O8RM55/vU1fSH58BZByOnjeVWf4RPOSz7UA==} + '@rolldown/binding-linux-x64-musl@1.1.4': + resolution: {integrity: sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxc-minify/binding-wasm32-wasi@0.98.0': - resolution: {integrity: sha512-VVNRbDWHZ7+Viv14Vy1y2yutOzLdivtVKKtcSt+xFSoS2wDhkn0KtRMnNTBVUnxjYqkwrDaDfcqhez5jA5bAUA==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@oxc-minify/binding-win32-arm64-msvc@0.98.0': - resolution: {integrity: sha512-i0hcvKlWa8CcBDo8BGjKSkmWOPWcdvQXNwpYjMeuTIyzUEhstDC35us9pmhqOwnBDgIJfSPcjFMGA32W8VbKWw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - - '@oxc-minify/binding-win32-x64-msvc@0.98.0': - resolution: {integrity: sha512-ts2pD2yf+92hiJYEitsq0XmidmZCyEmKWTDCoGezBZtNmEXovnKOUjQq6bruJrUnxxCBKDo8+S74g4wMziO2Ww==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@oxc-project/runtime@0.101.0': - resolution: {integrity: sha512-t3qpfVZIqSiLQ5Kqt/MC4Ge/WCOGrrcagAdzTcDaggupjiGxUx4nJF2v6wUCXWSzWHn5Ns7XLv13fCJEwCOERQ==} - engines: {node: ^20.19.0 || >=22.12.0} - - '@oxc-project/types@0.101.0': - resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} - - '@polka/compression@1.0.0-next.28': - resolution: {integrity: sha512-aDmrBhgHJtxE+jy145WfhW9WmTAFmES/dNnn1LAs8UnnkFgBUj4T8I4ScQ9+rOkpDZStvnVP5iqhN3tvt7O1NA==} - engines: {node: '>=6'} - - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - - '@rolldown/binding-android-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@1.0.0-beta.53': - resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@1.0.0-beta.53': - resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': - resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': - resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': - resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': - resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': - resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} + '@rolldown/binding-openharmony-arm64@1.1.4': + resolution: {integrity: sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': - resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} - engines: {node: '>=14.0.0'} + '@rolldown/binding-wasm32-wasi@1.1.4': + resolution: {integrity: sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': - resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} + '@rolldown/binding-win32-arm64-msvc@1.1.4': + resolution: {integrity: sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': - resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} + '@rolldown/binding-win32-x64-msvc@1.1.4': + resolution: {integrity: sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.53': - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} - '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} @@ -1221,37 +1129,34 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vitest/expect@4.0.0-beta.4': - resolution: {integrity: sha512-yvFhDLYmfmTPSF0NS2i7dbHKO6u+agYML82W/7lBNpHgBxPU8hLw87JDpaR1BQbd+gGy9ThAp85a+PGscy1QHw==} + '@vitest/expect@4.1.9': + resolution: {integrity: sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==} - '@vitest/mocker@4.0.0-beta.4': - resolution: {integrity: sha512-A4Dn3bSGUgrttz3XZq7ckU7uFav6/U0smCnvvsiRUzoA+J7Rqvp9hvGCR4tylS3gbaaUA+lUw/0dy08IynyWZg==} + '@vitest/mocker@4.1.9': + resolution: {integrity: sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@4.0.0-beta.4': - resolution: {integrity: sha512-BW9Y/t5tGLFi1DgNzs9R4EDqh3MVGiPFBTPGZLK+Y7jBUOFINmLTYTVz1iDnSFLwTOpHxAQfERyOmcu429OQog==} - '@vitest/pretty-format@4.1.9': resolution: {integrity: sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==} - '@vitest/runner@4.0.0-beta.4': - resolution: {integrity: sha512-27ptMzYl0dNvN6o1jmKDsEX0gR3IwulSgPwJVvoKSQntUFUqMeQh0jbNtdZj60li49Rxbh/rdSE25D/7ABJAJg==} + '@vitest/runner@4.1.9': + resolution: {integrity: sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==} - '@vitest/snapshot@4.0.0-beta.4': - resolution: {integrity: sha512-nqSjaWSlIxVc3C+wj6MTucacaveKEtDhrm4WS1u2udhgy304/pvEpcWQfWLFsASfF0ThPmoo/nADTm8KcSkr0g==} + '@vitest/snapshot@4.1.9': + resolution: {integrity: sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==} - '@vitest/spy@4.0.0-beta.4': - resolution: {integrity: sha512-RRcQBXXz2IS5EFGip+BmlV45by8yDSCWgH0+QbEebxF9SFChmbzDTKix7Mb4iGo17h7El2g6568Yk6VWwd9Gjw==} + '@vitest/spy@4.1.9': + resolution: {integrity: sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==} - '@vitest/utils@4.0.0-beta.4': - resolution: {integrity: sha512-AYAKmvweKomQ71BSmM4uuLdj7Lwb7go2tNLoNijObvmwwandidbcNoJzr2MZNm406RtUq+ZN9JsEYhID7uTgNw==} + '@vitest/utils@4.1.9': + resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==} '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -1450,10 +1355,6 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -1461,8 +1362,8 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@5.6.2: @@ -1478,10 +1379,6 @@ packages: character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - check-error@2.1.3: - resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} - engines: {node: '>= 16'} - cheerio-select@1.6.0: resolution: {integrity: sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==} @@ -1571,6 +1468,9 @@ packages: engines: {node: '>=18'} hasBin: true + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1606,10 +1506,6 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -1704,6 +1600,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.3.0: + resolution: {integrity: sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==} + es-object-atoms@1.1.2: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} @@ -2014,9 +1913,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.15.0: resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} hasBin: true @@ -2147,9 +2043,6 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -2422,10 +2315,6 @@ packages: resolution: {integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==} engines: {node: '>=20'} - oxc-minify@0.98.0: - resolution: {integrity: sha512-4/Hv1NgOTtb893cxkmJM7YF+mLzqODHOvkCoPLRsnXm5rVXDa2tc1kMQn4b6JYAUh+TvRfH8rqJxFAJDeRt0Zg==} - engines: {node: ^20.19.0 || >=22.12.0} - p-map@7.0.4: resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} @@ -2459,10 +2348,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - peek-readable@5.4.2: resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} engines: {node: '>=14.16'} @@ -2509,6 +2394,10 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.16: + resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} + engines: {node: ^10 || ^12 || >=14} + prettier@3.9.0: resolution: {integrity: sha512-LjIqSIC5VYLzs9WedVmJ2ljNAGnU+DteIClbahu4L/DBeWjZ6iT/k1lAYyu9JUh+1xINxWadaPw/Pl63y/agAw==} engines: {node: '>=14'} @@ -2604,49 +2493,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown-vite@7.3.1: - resolution: {integrity: sha512-LYzdNAjRHhF2yA4JUQm/QyARyi216N2rpJ0lJZb8E9FU2y5v6Vk+xq/U4XBOxMefpWixT5H3TslmAHm1rqIq2w==} - engines: {node: ^20.19.0 || >=22.12.0} - deprecated: Use this package to migrate from Vite 7 to Vite 8. For the most recent updates, migrate to Vite 8 once you're ready. - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - esbuild: ^0.27.0 - jiti: '>=1.21.0' - less: ^4.0.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - esbuild: - optional: true - jiti: - optional: true - less: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - rolldown@1.0.0-beta.53: - resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} + rolldown@1.1.4: + resolution: {integrity: sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2782,8 +2630,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} stdin-discarder@0.3.2: resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} @@ -2831,9 +2679,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} - strtok3@7.1.1: resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==} engines: {node: '>=16'} @@ -2856,9 +2701,6 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.2.4: resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} @@ -2867,22 +2709,10 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} - tinyspy@4.0.4: - resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} - engines: {node: '>=14.0.0'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2993,38 +2823,94 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@4.0.0-beta.4: - resolution: {integrity: sha512-J8rg/GLeInlEVEFlOw/49lBdQSGH8o9zOhmXhmiWTGhEi/vtRkdOiTlzNl5HO+J2mHkF032piFX1o+cqsvt/LQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@8.1.3: + resolution: {integrity: sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.3.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true vitepress-plugin-group-icons@1.7.5: resolution: {integrity: sha512-QzcroUuIiVKyXpmEiiHVbfRTQIy9Zbwxpk5JC/zavO8mavitwumz2RZWlwTchMCCHducYyPptkYvXvdnNUWkog==} + peerDependencies: + vite: '>=3' + peerDependenciesMeta: + vite: + optional: true vitepress-plugin-llms@1.13.2: resolution: {integrity: sha512-2O4s0I5pjEZzgnoWgBPCZCyhah9FH5uQB6lGADazMoyF1URJshtG04ZnmX+cbmQmniN3T5JzdJO9B4q8JHDKOQ==} engines: {node: '>=18'} - vitest@4.0.0-beta.4: - resolution: {integrity: sha512-LWwBGvfWUinm0ATarVmXuzhGvL8HyydanPwQLAY21fvrUhXHyP04UvMYF5t+3TcXQdXPIP5AiVm09J+AbIwKhg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.1.9: + resolution: {integrity: sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 4.0.0-beta.4 - '@vitest/ui': 4.0.0-beta.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.9 + '@vitest/browser-preview': 4.1.9 + '@vitest/browser-webdriverio': 4.1.9 + '@vitest/coverage-istanbul': 4.1.9 + '@vitest/coverage-v8': 4.1.9 + '@vitest/ui': 4.1.9 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': optional: true '@vitest/ui': optional: true @@ -3401,110 +3287,61 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-minify/binding-android-arm64@0.98.0': - optional: true + '@oxc-project/types@0.138.0': {} - '@oxc-minify/binding-darwin-arm64@0.98.0': - optional: true - - '@oxc-minify/binding-darwin-x64@0.98.0': - optional: true - - '@oxc-minify/binding-freebsd-x64@0.98.0': - optional: true - - '@oxc-minify/binding-linux-arm-gnueabihf@0.98.0': - optional: true - - '@oxc-minify/binding-linux-arm-musleabihf@0.98.0': - optional: true - - '@oxc-minify/binding-linux-arm64-gnu@0.98.0': - optional: true - - '@oxc-minify/binding-linux-arm64-musl@0.98.0': - optional: true - - '@oxc-minify/binding-linux-riscv64-gnu@0.98.0': - optional: true - - '@oxc-minify/binding-linux-s390x-gnu@0.98.0': - optional: true - - '@oxc-minify/binding-linux-x64-gnu@0.98.0': - optional: true - - '@oxc-minify/binding-linux-x64-musl@0.98.0': - optional: true + '@polka/compression@1.0.0-next.28': {} - '@oxc-minify/binding-wasm32-wasi@0.98.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - optional: true + '@polka/url@1.0.0-next.29': {} - '@oxc-minify/binding-win32-arm64-msvc@0.98.0': + '@rolldown/binding-android-arm64@1.1.4': optional: true - '@oxc-minify/binding-win32-x64-msvc@0.98.0': + '@rolldown/binding-darwin-arm64@1.1.4': optional: true - '@oxc-project/runtime@0.101.0': {} - - '@oxc-project/types@0.101.0': {} - - '@polka/compression@1.0.0-next.28': {} - - '@polka/url@1.0.0-next.29': {} - - '@rolldown/binding-android-arm64@1.0.0-beta.53': + '@rolldown/binding-darwin-x64@1.1.4': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + '@rolldown/binding-freebsd-x64@1.1.4': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.53': + '@rolldown/binding-linux-arm-gnueabihf@1.1.4': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + '@rolldown/binding-linux-arm64-gnu@1.1.4': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + '@rolldown/binding-linux-arm64-musl@1.1.4': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + '@rolldown/binding-linux-ppc64-gnu@1.1.4': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + '@rolldown/binding-linux-s390x-gnu@1.1.4': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + '@rolldown/binding-linux-x64-gnu@1.1.4': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + '@rolldown/binding-linux-x64-musl@1.1.4': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + '@rolldown/binding-openharmony-arm64@1.1.4': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.53(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@rolldown/binding-wasm32-wasi@1.1.4': dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + '@rolldown/binding-win32-arm64-msvc@1.1.4': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + '@rolldown/binding-win32-x64-msvc@1.1.4': optional: true - '@rolldown/pluginutils@1.0.0-beta.53': {} - '@rolldown/pluginutils@1.0.1': {} '@rollup/plugin-alias@6.0.0(rollup@4.62.2)': @@ -3797,57 +3634,52 @@ snapshots: '@ungap/structured-clone@1.3.2': {} - '@vitejs/plugin-vue@6.0.7(rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0))(vue@3.5.39(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.7(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0))(vue@3.5.39(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) + vite: 8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) vue: 3.5.39(typescript@5.9.3) - '@vitest/expect@4.0.0-beta.4': + '@vitest/expect@4.1.9': dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.0-beta.4 - '@vitest/utils': 4.0.0-beta.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.1.9 + '@vitest/utils': 4.1.9 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vitest/mocker@4.0.0-beta.4(rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0))': + '@vitest/mocker@4.1.9(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.0.0-beta.4 + '@vitest/spy': 4.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) - - '@vitest/pretty-format@4.0.0-beta.4': - dependencies: - tinyrainbow: 2.0.0 + vite: 8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) '@vitest/pretty-format@4.1.9': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.0.0-beta.4': + '@vitest/runner@4.1.9': dependencies: - '@vitest/utils': 4.0.0-beta.4 + '@vitest/utils': 4.1.9 pathe: 2.0.3 - strip-literal: 3.1.0 - '@vitest/snapshot@4.0.0-beta.4': + '@vitest/snapshot@4.1.9': dependencies: - '@vitest/pretty-format': 4.0.0-beta.4 + '@vitest/pretty-format': 4.1.9 + '@vitest/utils': 4.1.9 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.0-beta.4': - dependencies: - tinyspy: 4.0.4 + '@vitest/spy@4.1.9': {} - '@vitest/utils@4.0.0-beta.4': + '@vitest/utils@4.1.9': dependencies: - '@vitest/pretty-format': 4.0.0-beta.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.1.9 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 '@volar/language-core@2.4.28': dependencies: @@ -4041,8 +3873,6 @@ snapshots: dependencies: run-applescript: 7.1.0 - cac@6.7.14: {} - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -4050,13 +3880,7 @@ snapshots: ccount@2.0.1: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.3 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.2: {} chalk@5.6.2: {} @@ -4066,8 +3890,6 @@ snapshots: character-entities@2.0.2: {} - check-error@2.1.3: {} - cheerio-select@1.6.0: dependencies: css-select: 4.3.0 @@ -4169,6 +3991,8 @@ snapshots: '@simple-libs/stream-utils': 1.2.0 meow: 13.2.0 + convert-source-map@2.0.0: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -4201,8 +4025,6 @@ snapshots: dependencies: character-entities: 2.0.2 - deep-eql@5.0.2: {} - deepmerge@4.3.1: {} default-browser-id@5.0.1: {} @@ -4278,6 +4100,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.3.0: {} + es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 @@ -4599,8 +4423,6 @@ snapshots: js-tokens@4.0.0: optional: true - js-tokens@9.0.1: {} - js-yaml@3.15.0: dependencies: argparse: 1.0.10 @@ -4725,8 +4547,6 @@ snapshots: longest-streak@3.1.0: {} - loupe@3.2.1: {} - lru-cache@10.4.3: {} lru-cache@11.5.1: {} @@ -5097,27 +4917,6 @@ snapshots: stdin-discarder: 0.3.2 string-width: 5.1.2 - oxc-minify@0.98.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): - optionalDependencies: - '@oxc-minify/binding-android-arm64': 0.98.0 - '@oxc-minify/binding-darwin-arm64': 0.98.0 - '@oxc-minify/binding-darwin-x64': 0.98.0 - '@oxc-minify/binding-freebsd-x64': 0.98.0 - '@oxc-minify/binding-linux-arm-gnueabihf': 0.98.0 - '@oxc-minify/binding-linux-arm-musleabihf': 0.98.0 - '@oxc-minify/binding-linux-arm64-gnu': 0.98.0 - '@oxc-minify/binding-linux-arm64-musl': 0.98.0 - '@oxc-minify/binding-linux-riscv64-gnu': 0.98.0 - '@oxc-minify/binding-linux-s390x-gnu': 0.98.0 - '@oxc-minify/binding-linux-x64-gnu': 0.98.0 - '@oxc-minify/binding-linux-x64-musl': 0.98.0 - '@oxc-minify/binding-wasm32-wasi': 0.98.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@oxc-minify/binding-win32-arm64-msvc': 0.98.0 - '@oxc-minify/binding-win32-x64-msvc': 0.98.0 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - p-map@7.0.4: {} package-directory@8.2.0: @@ -5142,8 +4941,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} - peek-readable@5.4.2: {} perfect-debounce@2.1.0: {} @@ -5165,9 +4962,9 @@ snapshots: '@polka/url': 1.0.0-next.29 trouter: 4.0.0 - postcss-rtlcss@6.0.0(postcss@8.5.15): + postcss-rtlcss@6.0.0(postcss@8.5.16): dependencies: - postcss: 8.5.15 + postcss: 8.5.16 rtlcss: 4.3.0 postcss-selector-parser@7.1.4: @@ -5181,6 +4978,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.16: + dependencies: + nanoid: 3.3.15 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prettier@3.9.0: {} pretty-bytes@7.1.0: {} @@ -5281,46 +5084,26 @@ snapshots: rfdc@1.4.1: {} - rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0): - dependencies: - '@oxc-project/runtime': 0.101.0 - fdir: 6.5.0(picomatch@4.0.4) - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.15 - rolldown: 1.0.0-beta.53(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - tinyglobby: 0.2.17 - optionalDependencies: - '@types/node': 25.9.4 - esbuild: 0.27.7 - fsevents: 2.3.3 - jiti: 1.21.7 - yaml: 2.9.0 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - rolldown@1.0.0-beta.53(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): + rolldown@1.1.4: dependencies: - '@oxc-project/types': 0.101.0 - '@rolldown/pluginutils': 1.0.0-beta.53 + '@oxc-project/types': 0.138.0 + '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.53 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 - '@rolldown/binding-darwin-x64': 1.0.0-beta.53 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@rolldown/binding-android-arm64': 1.1.4 + '@rolldown/binding-darwin-arm64': 1.1.4 + '@rolldown/binding-darwin-x64': 1.1.4 + '@rolldown/binding-freebsd-x64': 1.1.4 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.4 + '@rolldown/binding-linux-arm64-gnu': 1.1.4 + '@rolldown/binding-linux-arm64-musl': 1.1.4 + '@rolldown/binding-linux-ppc64-gnu': 1.1.4 + '@rolldown/binding-linux-s390x-gnu': 1.1.4 + '@rolldown/binding-linux-x64-gnu': 1.1.4 + '@rolldown/binding-linux-x64-musl': 1.1.4 + '@rolldown/binding-openharmony-arm64': 1.1.4 + '@rolldown/binding-wasm32-wasi': 1.1.4 + '@rolldown/binding-win32-arm64-msvc': 1.1.4 + '@rolldown/binding-win32-x64-msvc': 1.1.4 rollup-plugin-dts@6.1.1(rollup@4.62.2)(typescript@5.9.3): dependencies: @@ -5490,7 +5273,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.10.0: {} + std-env@4.1.0: {} stdin-discarder@0.3.2: {} @@ -5540,10 +5323,6 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.1.0: - dependencies: - js-tokens: 9.0.1 - strtok3@7.1.1: dependencies: '@tokenizer/token': 0.3.0 @@ -5564,8 +5343,6 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} - tinyexec@1.2.4: {} tinyglobby@0.2.17: @@ -5573,14 +5350,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - tinyrainbow@3.1.0: {} - tinyspy@4.0.4: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -5692,49 +5463,27 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@4.0.0-beta.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0): + vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0): dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - '@types/node' - - esbuild - - jiti - - less - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.16 + rolldown: 1.1.4 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 25.9.4 + esbuild: 0.27.7 + fsevents: 2.3.3 + jiti: 1.21.7 + yaml: 2.9.0 - vitepress-plugin-group-icons@1.7.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0): + vitepress-plugin-group-icons@1.7.5(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0)): dependencies: '@iconify-json/logos': 1.2.11 '@iconify-json/vscode-icons': 1.2.62 '@iconify/utils': 3.1.3 - vite: rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - '@types/node' - - esbuild - - jiti - - less - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml + optionalDependencies: + vite: 8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) vitepress-plugin-llms@1.13.2: dependencies: @@ -5755,49 +5504,32 @@ snapshots: transitivePeerDependencies: - supports-color - vitest@4.0.0-beta.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/debug@4.1.13)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0): + vitest@4.1.9(@types/node@25.9.4)(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0)): dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 4.0.0-beta.4 - '@vitest/mocker': 4.0.0-beta.4(rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0)) + '@vitest/expect': 4.1.9 + '@vitest/mocker': 4.1.9(vite@8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.9 - '@vitest/runner': 4.0.0-beta.4 - '@vitest/snapshot': 4.0.0-beta.4 - '@vitest/spy': 4.0.0-beta.4 - '@vitest/utils': 4.0.0-beta.4 - chai: 5.3.3 - debug: 4.4.3 + '@vitest/runner': 4.1.9 + '@vitest/snapshot': 4.1.9 + '@vitest/spy': 4.1.9 + '@vitest/utils': 4.1.9 + es-module-lexer: 2.3.0 expect-type: 1.4.0 magic-string: 0.30.21 + obug: 2.1.3 pathe: 2.0.3 picomatch: 4.0.4 - std-env: 3.10.0 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.2.4 tinyglobby: 0.2.17 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: rolldown-vite@7.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) - vite-node: 4.0.0-beta.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) + tinyrainbow: 3.1.0 + vite: 8.1.3(@types/node@25.9.4)(esbuild@0.27.7)(jiti@1.21.7)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.13 '@types/node': 25.9.4 transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - esbuild - - jiti - - less - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml vscode-uri@3.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b116e4ab6..aefb59fe9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -13,7 +13,6 @@ onlyBuiltDependencies: overrides: ora>string-width: ^5 - vite: npm:rolldown-vite@latest patchedDependencies: '@types/markdown-it-attrs': patches/@types__markdown-it-attrs@4.1.3.patch diff --git a/rollup.config.ts b/rollup.config.ts index 7f02b1b87..e0e9c3ba5 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -33,7 +33,7 @@ const plugins = [ }), commonjs(), nodeResolve({ preferBuiltins: false }), - esbuild({ target: 'node20' }), + esbuild({ target: 'node22' }), json() ] diff --git a/src/node/build/build.ts b/src/node/build/build.ts index f040d7884..c9b27d7ad 100644 --- a/src/node/build/build.ts +++ b/src/node/build/build.ts @@ -3,15 +3,14 @@ import fs from 'fs-extra' import { createHash } from 'node:crypto' import { createRequire } from 'node:module' import path from 'node:path' -import { pathToFileURL } from 'node:url' import pMap from 'p-map' import { packageDirectorySync } from 'package-directory' -import * as vite from 'vite' -import type { BuildOptions, Rollup } from 'vite' +import type { BuildOptions, Rolldown } from 'vite' import { resolveConfig, type SiteConfig } from '../config' import { clearCache } from '../markdownToVue' import { slash, type Awaitable, type HeadConfig } from '../shared' import { deserializeFunctions, serializeFunctions } from '../utils/fnSerialize' +import { nativeImport } from '../utils/nativeImport' import { task } from '../utils/task' import { bundle } from './bundle' import { generateSitemap } from './generateSitemap' @@ -29,19 +28,6 @@ export async function build( ) { const start = Date.now() - // @ts-ignore only exists for rolldown-vite - if (vite.rolldownVersion) { - try { - await import('oxc-minify') - } catch { - throw new Error( - '`oxc-minify` is not installed.' + - ' vitepress requires `oxc-minify` to be installed when rolldown-vite is used.' + - ' Please run `npm install oxc-minify`.' - ) - } - } - process.env.NODE_ENV = 'production' const siteConfig = await resolveConfig(root, 'build', 'production') @@ -76,7 +62,7 @@ export async function build( } const entryPath = path.join(siteConfig.tempDir, 'app.js') - const { render } = await import(pathToFileURL(entryPath).href) + const { render } = await nativeImport(entryPath) await task('rendering pages', async () => { const appChunk = @@ -86,13 +72,13 @@ export async function build( chunk.type === 'chunk' && chunk.isEntry && chunk.facadeModuleId?.endsWith('.js') - ) as Rollup.OutputChunk) + ) as Rolldown.OutputChunk) const cssChunk = ( siteConfig.mpa ? serverResult : clientResult! ).output.find( (chunk) => chunk.type === 'asset' && chunk.fileName.endsWith('.css') - ) as Rollup.OutputAsset + ) as Rolldown.OutputAsset const assets = (siteConfig.mpa ? serverResult : clientResult!).output .filter( @@ -108,8 +94,7 @@ export async function build( clientResult.output.some( (chunk) => chunk.type === 'chunk' && - // @ts-ignore only exists for rolldown-vite - (vite.rolldownVersion || chunk.name === 'theme') && // FIXME: remove when rolldown-vite supports manualChunks + chunk.name === 'theme' && chunk.moduleIds.some((id) => id.includes('client/theme-default')) ) diff --git a/src/node/build/buildMPAClient.ts b/src/node/build/buildMPAClient.ts index e31bc9b42..aa541814b 100644 --- a/src/node/build/buildMPAClient.ts +++ b/src/node/build/buildMPAClient.ts @@ -1,4 +1,4 @@ -import { build, type Rollup } from 'vite' +import { build, type Rolldown } from 'vite' import type { SiteConfig } from '..' const virtualEntry = 'client.js' @@ -6,7 +6,7 @@ const virtualEntry = 'client.js' export async function buildMPAClient( js: Record, config: SiteConfig -): Promise { +): Promise { const files = Object.keys(js) const themeFiles = files.filter((f) => !f.endsWith('.md')) const pages = files.filter((f) => f.endsWith('.md')) @@ -19,7 +19,7 @@ export async function buildMPAClient( build: { emptyOutDir: false, outDir: config.outDir, - rollupOptions: { + rolldownOptions: { input: [virtualEntry, ...pages] } }, @@ -42,5 +42,5 @@ export async function buildMPAClient( } } ] - }) as Promise + }) as Promise } diff --git a/src/node/build/bundle.ts b/src/node/build/bundle.ts index bd71bd335..98e5e2cc8 100644 --- a/src/node/build/bundle.ts +++ b/src/node/build/bundle.ts @@ -1,12 +1,11 @@ import fs from 'fs-extra' import path from 'node:path' import { fileURLToPath } from 'node:url' -import * as vite from 'vite' import { build, normalizePath, type BuildOptions, - type Rollup, + type Rolldown, type InlineConfig as ViteInlineConfig } from 'vite' import { APP_PATH } from '../alias' @@ -39,14 +38,14 @@ export async function bundle( config: SiteConfig, options: BuildOptions ): Promise<{ - clientResult: Rollup.RollupOutput | null - serverResult: Rollup.RollupOutput + clientResult: Rolldown.RolldownOutput | null + serverResult: Rolldown.RolldownOutput pageToHashMap: Record }> { const pageToHashMap = Object.create(null) as Record const clientJSMap = Object.create(null) as Record - // define custom rollup input + // define custom rolldown input // this is a multi-entry build - every page is considered an entry chunk // the loading is done via filename conversion rules so that the // metadata doesn't need to be included in the main chunk. @@ -65,7 +64,11 @@ export async function bundle( ) // resolve options to pass to vite - const { rollupOptions } = options + const { + rollupOptions, + rolldownOptions = rollupOptions, + ...restOptions + } = options const resolveViteConfig = async ( ssr: boolean @@ -84,15 +87,15 @@ export async function bundle( noExternal: ['vitepress', '@docsearch/css'] }, build: { - ...options, + ...restOptions, emptyOutDir: true, ssr, ssrEmitAssets: config.mpa, minify: ssr ? !!config.mpa : (options.minify ?? !process.env.DEBUG), outDir: ssr ? config.tempDir : config.outDir, cssCodeSplit: false, - rollupOptions: { - ...rollupOptions, + rolldownOptions: { + ...rolldownOptions, input: { // use different entry based on ssr or not app: path.resolve(APP_PATH, ssr ? 'ssr.js' : 'index.js'), @@ -103,7 +106,7 @@ export async function bundle( preserveEntrySignatures: 'allow-extension', output: { sanitizeFileName, - ...rollupOptions?.output, + ...rolldownOptions?.output, assetFileNames: `${config.assetsDir}/[name].[hash].[ext]`, ...(ssr ? { @@ -118,19 +121,23 @@ export async function bundle( ? `${config.assetsDir}/chunks/ui-custom.[hash].js` : `${config.assetsDir}/chunks/[name].[hash].js` }, - // @ts-ignore skip setting it for rolldown-vite since it doesn't support `manualChunks` - ...(vite.rolldownVersion - ? undefined - : { - manualChunks( + codeSplitting: { + groups: [ + { + name( id: string, - ctx: Pick + ctx: Pick ) { + // ctx.getModuleInfo must not be called detached from ctx + const getModuleInfo: Rolldown.GetModuleInfo = ( + moduleId + ) => ctx.getModuleInfo(moduleId) + // move known framework code into a stable chunk so that // custom theme changes do not invalidate hash for all pages if ( id.startsWith('\0vite') || - ctx.getModuleInfo(id)?.meta['vite:asset'] + getModuleInfo(id)?.meta['vite:asset'] ) { return 'framework' } @@ -144,7 +151,7 @@ export async function bundle( return 'framework' } if ( - isEagerChunk(id, ctx.getModuleInfo) && + isEagerChunk(id, getModuleInfo) && /@vue\/(runtime|shared|reactivity)/.test(id) ) { return 'framework' @@ -155,7 +162,7 @@ export async function bundle( !excludedModules.some((i) => id.includes(i))) && staticImportedByEntry( id, - ctx.getModuleInfo, + getModuleInfo, cacheTheme, themeEntryRE ) @@ -163,7 +170,9 @@ export async function bundle( return 'theme' } } - }) + } + ] + } }) } } @@ -171,16 +180,18 @@ export async function bundle( configFile: config.vite?.configFile }) - let clientResult!: Rollup.RollupOutput | null - let serverResult!: Rollup.RollupOutput + let clientResult!: Rolldown.RolldownOutput | null + let serverResult!: Rolldown.RolldownOutput await task('building client + server bundles', async () => { clientResult = config.mpa ? null - : ((await build(await resolveViteConfig(false))) as Rollup.RollupOutput) + : ((await build( + await resolveViteConfig(false) + )) as Rolldown.RolldownOutput) serverResult = (await build( await resolveViteConfig(true) - )) as Rollup.RollupOutput + )) as Rolldown.RolldownOutput }) if (config.mpa) { @@ -223,7 +234,7 @@ const cacheTheme = new Map() /** * Check if a module is statically imported by at least one entry. */ -function isEagerChunk(id: string, getModuleInfo: Rollup.GetModuleInfo) { +function isEagerChunk(id: string, getModuleInfo: Rolldown.GetModuleInfo) { if ( id.includes('node_modules') && !CSS_LANGS_RE.test(id) && @@ -235,7 +246,7 @@ function isEagerChunk(id: string, getModuleInfo: Rollup.GetModuleInfo) { function staticImportedByEntry( id: string, - getModuleInfo: Rollup.GetModuleInfo, + getModuleInfo: Rolldown.GetModuleInfo, cache: Map, entryRE: RegExp | null = null, importStack: string[] = [] diff --git a/src/node/build/render.ts b/src/node/build/render.ts index ed84c7268..91515095b 100644 --- a/src/node/build/render.ts +++ b/src/node/build/render.ts @@ -1,9 +1,7 @@ import { isBooleanAttr } from '@vue/shared' import fs from 'fs-extra' import path from 'node:path' -import { pathToFileURL } from 'node:url' -import * as vite from 'vite' -import { normalizePath, transformWithEsbuild, type Rollup } from 'vite' +import { minify, normalizePath, type Rolldown } from 'vite' import { version } from '../../../package.json' import type { SiteConfig } from '../config' import { @@ -19,14 +17,15 @@ import { type PageData, type SSGContext } from '../shared' +import { nativeImport } from '../utils/nativeImport' export async function renderPage( render: (path: string) => Promise, config: SiteConfig, page: string, // foo.md - result: Rollup.RollupOutput | null, - appChunk: Rollup.OutputChunk | null, - cssChunk: Rollup.OutputAsset | null, + result: Rolldown.RolldownOutput | null, + appChunk: Rolldown.OutputChunk | null, + cssChunk: Rolldown.OutputAsset | null, assets: string[], pageToHashMap: Record, metadataScript: { html: string; inHead: boolean }, @@ -57,8 +56,8 @@ export async function renderPage( try { // resolve page data so we can render head tags - const { __pageData } = await import( - pathToFileURL(path.join(config.tempDir, pageServerJsFileName)).href + const { __pageData } = await nativeImport( + path.join(config.tempDir, pageServerJsFileName) ) pageData = __pageData } catch (e) { @@ -143,7 +142,7 @@ export async function renderPage( (chunk) => chunk.type === 'chunk' && chunk.facadeModuleId === slash(path.join(config.srcDir, page)) - ) as Rollup.OutputChunk + ) as Rolldown.OutputChunk if (matchingChunk) { if (!matchingChunk.code.includes('import')) { inlinedScript = `` @@ -208,8 +207,8 @@ export async function renderPage( function resolvePageImports( config: SiteConfig, page: string, - result: Rollup.RollupOutput, - appChunk: Rollup.OutputChunk + result: Rolldown.RolldownOutput, + appChunk: Rolldown.OutputChunk ) { page = config.rewrites.inv[page] || page // find the page's js chunk and inject script tags for its imports so that @@ -226,7 +225,7 @@ function resolvePageImports( srcPath = normalizePath(srcPath) const pageChunk = result.output.find( (chunk) => chunk.type === 'chunk' && chunk.facadeModuleId === srcPath - ) as Rollup.OutputChunk + ) as Rolldown.OutputChunk return [ ...appChunk.imports, // ...appChunk.dynamicImports, @@ -265,14 +264,7 @@ function renderAttrs(attrs: Record): string { } async function minifyScript(code: string, filename: string): Promise { - // @ts-ignore use oxc-minify when rolldown-vite is used - if (vite.rolldownVersion) { - const oxcMinify = await import('oxc-minify') - return (await oxcMinify.minify(filename, code)).code.trim() - } - return ( - await transformWithEsbuild(code, filename, { minify: true }) - ).code.trim() + return (await minify(filename, code)).code.trim() } function filterOutHeadDescription(head: HeadConfig[] = []) { diff --git a/src/node/plugin.ts b/src/node/plugin.ts index 6739a75e6..09bc3e88f 100644 --- a/src/node/plugin.ts +++ b/src/node/plugin.ts @@ -7,7 +7,7 @@ import { type EnvironmentModuleNode, type Plugin, type ResolvedConfig, - type Rollup, + type Rolldown, type UserConfig } from 'vite' import { @@ -54,8 +54,8 @@ const staticRestoreRE = /__VP_STATIC_(START|END)__/g const scriptClientRE = /]*client\b[^>]*>([^]*?)<\/script>/ const isPageChunk = ( - chunk: Rollup.OutputAsset | Rollup.OutputChunk -): chunk is Rollup.OutputChunk & { facadeModuleId: string } => + chunk: Rolldown.OutputAsset | Rolldown.OutputChunk +): chunk is Rolldown.OutputChunk & { facadeModuleId: string } => !!( chunk.type === 'chunk' && chunk.isEntry && @@ -285,7 +285,7 @@ export async function createVitePressPlugin( }, renderChunk(code, chunk) { - if (!ssr && isPageChunk(chunk as Rollup.OutputChunk)) { + if (!ssr && isPageChunk(chunk as Rolldown.OutputChunk)) { // For each page chunk, inject marker for start/end of static strings. // we do this here because in generateBundle the chunks would have been // minified and we won't be able to safely locate the strings. diff --git a/src/node/utils/nativeImport.ts b/src/node/utils/nativeImport.ts new file mode 100644 index 000000000..276c8f161 --- /dev/null +++ b/src/node/utils/nativeImport.ts @@ -0,0 +1,24 @@ +import { createRequire } from 'node:module' +import { pathToFileURL } from 'node:url' + +const require = createRequire(import.meta.url) + +// vitepress may itself be executed inside a vite module runner, e.g. when +// `build()` is called from a vitest global setup file with vitepress not +// externalized. the runner rewrites every dynamic import to be resolved +// through vite, which cannot load the temp SSR bundle and its relative page +// imports, and runtime-constructed `import()` wrappers fail there with +// ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING. require(esm) is supported by all +// node versions vitepress runs on and always uses node's own loader. +export async function nativeImport(file: string): Promise { + try { + return require(file) + } catch (e: any) { + // require() cannot load modules that use top-level await - fall back to + // a plain dynamic import, which only misbehaves inside a module runner + if (e.code === 'ERR_REQUIRE_ASYNC_MODULE') { + return import(pathToFileURL(file).href) + } + throw e + } +}