From e53210baa08cc082d59d55e5ca69e6f537bf55ff Mon Sep 17 00:00:00 2001 From: underfin Date: Fri, 9 May 2025 18:06:02 +0800 Subject: [PATCH 01/15] wip: full bundle mode compat --- package.json | 4 + packages/common/refresh-runtime.js | 5 +- packages/common/refresh-utils.ts | 2 +- packages/plugin-react/src/index.ts | 28 +-- pnpm-lock.yaml | 280 ++++++++++++++--------------- 5 files changed, 165 insertions(+), 154 deletions(-) diff --git a/package.json b/package.json index 4e5a1da3..05401e1c 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,10 @@ ] }, "pnpm": { + "overrides": { + "vitest>vite": "npm:vite@^6.2.6", + "vite": "https://pkg.pr.new/vitejs/rolldown-vite@107" + }, "packageExtensions": { "generouted": { "peerDependencies": { diff --git a/packages/common/refresh-runtime.js b/packages/common/refresh-runtime.js index 08d1df63..e2843635 100644 --- a/packages/common/refresh-runtime.js +++ b/packages/common/refresh-runtime.js @@ -632,8 +632,9 @@ function predicateOnExport(ignoredExports, moduleExports, predicate) { for (const key in moduleExports) { if (key === '__esModule') continue if (ignoredExports.includes(key)) continue - const desc = Object.getOwnPropertyDescriptor(moduleExports, key) - if (desc && desc.get) return key + // TODO: Not sure why need this. The esm module live binding always is getter, look like the browser is not. + // const desc = Object.getOwnPropertyDescriptor(moduleExports, key) + // if (desc && desc.get) return key if (!predicate(key, moduleExports[key])) return key } return true diff --git a/packages/common/refresh-utils.ts b/packages/common/refresh-utils.ts index 559cbaa0..5c7aeed4 100644 --- a/packages/common/refresh-utils.ts +++ b/packages/common/refresh-utils.ts @@ -81,7 +81,7 @@ const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof newCode = `${sharedHead}${newCode} if (import.meta.hot && !inWebWorker) { - RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { + import.meta.hot.getExports().then((currentExports) => { RefreshRuntime.registerExportsForReactRefresh(${JSON.stringify( id, )}, currentExports); diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index 250c4477..2cfa6afb 100644 --- a/packages/plugin-react/src/index.ts +++ b/packages/plugin-react/src/index.ts @@ -120,7 +120,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] { | ((options: ReactBabelOptions, context: ReactBabelHookContext) => void) | undefined let staticBabelOptions: ReactBabelOptions | undefined - + let base: string | undefined // Support patterns like: // - import * as React from 'react'; // - import React from 'react'; @@ -162,6 +162,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } }, configResolved(config) { + base = config.base projectRoot = config.root isProduction = config.isProduction skipFastRefresh = @@ -361,15 +362,22 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } }, }, - transformIndexHtml(_, config) { - if (!skipFastRefresh) - return [ - { - tag: 'script', - attrs: { type: 'module' }, - children: getPreambleCode(config.server!.config.base), - }, - ] + transformIndexHtml: { + handler() { + if (!skipFastRefresh) + return [ + { + tag: 'script', + attrs: { type: 'module' }, + // !!! Rolldown vite full bunlde module break changes, config.server is invalid + // children: getPreambleCode(config.server!.config.base), + children: getPreambleCode(base!), + }, + ] + }, + // Rolldown vite full bunlde module break changes. + // Changed it to make sure the inject module could be bundled + order: 'pre', }, } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb072496..6cbb9442 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,11 +4,9 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false -catalogs: - rolldown-vite: - vite: - specifier: npm:rolldown-vite@^6.3.5 - version: 6.3.5 +overrides: + vitest>vite: npm:vite@^6.2.6 + vite: https://pkg.pr.new/vitejs/rolldown-vite@107 packageExtensionsChecksum: sha256-S82yCctxnlOTNFuHWCyTFRo/B6Y3jque/4DnsDO4WZA= @@ -71,17 +69,17 @@ importers: specifier: ^8.31.0 version: 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) vite: - specifier: ^6.3.3 - version: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) packages/common: - devDependencies: + dependencies: vite: - specifier: ^6.3.3 - version: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) packages/plugin-react: dependencies: @@ -103,6 +101,9 @@ importers: react-refresh: specifier: ^0.17.0 version: 0.17.0 + vite: + specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) devDependencies: '@vitejs/react-common': specifier: workspace:* @@ -116,6 +117,9 @@ importers: '@rolldown/pluginutils': specifier: 1.0.0-beta.9 version: 1.0.0-beta.9 + vite: + specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) devDependencies: '@vitejs/react-common': specifier: workspace:* @@ -123,9 +127,6 @@ importers: unbuild: specifier: ^3.5.0 version: 3.5.0(typescript@5.8.3) - vite: - specifier: catalog:rolldown-vite - version: rolldown-vite@6.3.5(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/plugin-react-swc: dependencies: @@ -135,6 +136,9 @@ importers: '@swc/core': specifier: ^1.11.22 version: 1.11.22 + vite: + specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) devDependencies: '@playwright/test': specifier: ^1.52.0 @@ -163,9 +167,6 @@ importers: typescript: specifier: ^5.8.3 version: 5.8.3 - vite: - specifier: ^6.3.3 - version: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) packages/plugin-react-swc/playground/base-path: dependencies: @@ -391,10 +392,10 @@ importers: dependencies: '@generouted/react-router': specifier: ^1.20.0 - version: 1.20.0(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) + version: 1.20.0(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(tsx@4.19.3)(yaml@2.7.1) generouted: specifier: 1.11.7 - version: 1.11.7(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) + version: 1.11.7(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(tsx@4.19.3)(yaml@2.7.1) react: specifier: ^19.1.0 version: 19.1.0 @@ -1358,7 +1359,6 @@ packages: peerDependencies: react: '>=18' react-router: '>=7' - vite: '>=5' '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -1406,9 +1406,6 @@ packages: peerDependencies: rollup: '>=2' - '@napi-rs/wasm-runtime@0.2.8': - resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==} - '@napi-rs/wasm-runtime@0.2.9': resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} @@ -1424,12 +1421,12 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/runtime@0.66.0': - resolution: {integrity: sha512-B0+lqyEYPKP6E9lLVegluJoHDr2+hcs3J5D5kogdHCPwzp/JfzYqZlurOU82uoaiw0A9Ct9QPp+5RhY9TOuakg==} + '@oxc-project/runtime@0.68.1': + resolution: {integrity: sha512-MMPhKwVPyykU7F6id79Bb9DAM8BqT3HbJNRxJnuh68uARDDAEn252dq/AjSa3i8JWmtnKZIdm+ORAyjFZD7bzQ==} engines: {node: '>=6.9.0'} - '@oxc-project/types@0.66.0': - resolution: {integrity: sha512-KF5Wlo2KzQ+jmuCtrGISZoUfdHom7qHavNfPLW2KkeYJfYMGwtiia8KjwtsvNJ49qRiXImOCkPeVPd4bMlbR7w==} + '@oxc-project/types@0.68.1': + resolution: {integrity: sha512-Q/H52+HXPPxuIHwQnVkEM8GebLnNcokkI4zQQdbxLIZdfxMGhAm9+gEqsMku3t95trN/1titHUmCM9NxbKaE2g==} '@playwright/test@1.52.0': resolution: {integrity: sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==} @@ -1440,63 +1437,63 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} - '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-2GCVymE4qe30/ox/w+3aOOTCsvphbXCW41BxATiYJQzNPXQ7NY3RMTfvuDKUQW5KJSr3rKSj0zxPbjFJYCfGWw==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-z0bulabL226ciSH6Xz2AuoAEohLRwPTv9qc3qBBHvdnYnBDQaK7HDFa2L84H2DKWI1r5si4JEDgv7H/TUdS9lA==} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-iiCq6rUyx+BjwAp5keIJnJiaGC8W+rfp6YgtsEjJUTqv+s9+UQxhXyw7qwnp1YkahTKiuyUUSM+CVcecbcrXlw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-vXjDtZxjZdx8LccYBnNNp2Yd0mU7ZS7tK9nOPq5M1kH5XgB5kE7rFwrZicmJWWRkVYFubh2SVRBuL/yNCZBbxw==} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-8qkE8ANkELvEiE26Jpdlh7QRw7uOaqLOnbAPAJ9NySo6+VwAWILefQgo+pamXTEsHpAZqSo7DapFWjUtZdkUDg==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-t2pmx9CyeLEfd7uUzVHY7+dmWQZROdv4HOdhj/v4930yCJ9Nlm5SUwnQr274VqFnpW6yksQYbqLWnXCWWBV6vA==} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-QCBw+96ZABHtJU3MBbl5DnD18/I+Lg06/MegyCHPI1j0VnqdmK8lDIPuaBzrj52USLYBoABC9HhuXMbIN0OfPA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-7R62A7FKnY+pqArhju9g3czhXNg1LhmcqwMFO0ek2zaOO8ofEECSVQGqQAPctjKOMB312bWqfpziYY4dAQLNlQ==} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-bjGStzNXe1hD6vP6g2/T134RU85Mev+o+XEIB8kJT3Z9tq09SqDhN3ONqzUaeF7QQawv2M8XXDUOIdPhsrgmvg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-Tk3cRfyrt55ewiB2BgEcdh2EKU6axvgNpEKaQ5EMaKWX8yof2QPmSPSlCTpmIgCT5w/KEVCa3tf2ZhSeM6WmLQ==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-ZpN8ub+PiDBYjTMcXt3ihoPKpXikAYPfpJXdx1x0IjJmFqlLsSWxU6aqbkHBxALER7SxwQ4e9r5LPZKJnwBr7Q==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-KtnGCqz8v5wdm/PYURRFMsF1aF7rAHHopP3dXzFqKHyBdm0vje+r8cVy/97WwKYFxxDmi7f0DZJ0TxxuP5gRnA==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-ysVj17eqf0amHpF9pKOv5JWsW2F89oVql88PD4ldamhBUZq8unZdPqr8fogx+08TmURDtu9ygZlBvSB55VdzJQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-UoROGcEBmKCPlRyQy9rfDy6IxmWaMQOenHkcWyMhFqJh4JVsWfS6inNd4TF5rKiRy5SzbJwr8qM0j/GjTCGcmw==} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-Yob3aIWUdXaCW1aKA0Ypo2ie8p+3uvOSobR9WTabx+aS7NPJuQbjAJP6n3CZHRPoKnJBCeftt3Bh8bFk1SKCMQ==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-VJzh1UCukRGUuJIWkVgnXRLLr7G6yrkWo9PrS43swuGyBUb3a54MT4LYJkcEvteJmOg7ejCpENXtsUwnOESJkA==} cpu: [x64] os: [linux] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-/tGqIUvsjTMe5h8DAR5XM++IsAMNmxgD2vFN+OzwE3bNAS3qk3w7rq6JyD+hBWwz+6QLgYVCTD7fNDXAYZKgWw==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-IZThgZ9X6q74lYM6JdW2vTy2IAYNzXrhVvRShQqy4DrC+RLhMYZ4C8M4J/sStn2wCTxCWmXVHIi7bZRH5//T6A==} engines: {node: '>=14.21.3'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-uIuzY9dNeSLhAL4YW7YDYQ0wlSIDU7fzkhGYsfcH37ItSpOdxisxJLu4tLbl8i0AarLJvfH1+MgMSSGC2ioAtQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-BZ8yIlj/XbFS3B0+oJ9kSv1l8vZxWSts3Uxr/SwEQb3QmvHiX04m8Nd6+crzY6Lv7Kj4esWSpB/QpW8a89kqZA==} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-tadc/hpAWQ6TPaF7U1AX6h/BYDm0Ukxg6o4647IfDREvncyf4RaNo99ByBSfoOYxqwlA2nu4llXkXx0rhWCfsQ==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-czB8wXEz7NfLGlr9O6f9tTZGFsNaeWv8cF/0Dau95GMlfy5pZ1PzlwcoHKCclT3vROoQOLA1YbGT4HXhgwgzQA==} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.2686eb1': - resolution: {integrity: sha512-8nMcDSZpCR2KuKCkgeA9/Em967VhB1jZys8W0j95tcKMyNva/Bnq9wxNH5CAMtL3AzV/QIT92RrHTWbIt0m1MA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.c76291c': + resolution: {integrity: sha512-5ndBU5nWh1lC0IB8k7jqqTN9T4JSvZjsGyAojcS8chmzIWG3q8XiuzYS8ohk7OYy4Suy9n8VTtBGLcz8K00Q9g==} cpu: [x64] os: [win32] @@ -1981,11 +1978,6 @@ packages: cpu: [x64] os: [win32] - '@valibot/to-json-schema@1.0.0': - resolution: {integrity: sha512-/9crJgPptVsGCL6X+JPDQyaJwkalSZ/52WuF8DiRUxJgcmpNdzYRfZ+gqMEP8W3CTVfuMWPqqvIgfwJ97f9Etw==} - peerDependencies: - valibot: ^1.0.0 - '@vitejs/release-scripts@1.5.0': resolution: {integrity: sha512-rZQdM5AneNJHzDOTUaQOOifauH6MkGTSI+GH8bKKrimBaa5BtvpnE1iz43fJ4QDO7RdGxAlxWnPQAVlFhGM1cQ==} @@ -2324,8 +2316,8 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} devlop@1.1.0: @@ -2594,14 +2586,12 @@ packages: peerDependencies: react: '*' react-router-dom: '*' - vite: '>=3' generouted@1.20.0: resolution: {integrity: sha512-VXU5dFsWdm/faFo2fTGW5obYxy8hhM6B1WXYhCLAV+5pODhrsu8RBc/1IsOQKqtHFYqsuSE5C5KpzmBaLllUqg==} peerDependencies: react: '*' react-router-dom: '*' - vite: '>=5' gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -3579,8 +3569,9 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown-vite@6.3.5: - resolution: {integrity: sha512-lTKMNb6Vl2fNblU8ve4SM+3p0gwYzKy2fjae7KTLuKKN8bdI+TwgFeB97ICEKq/t6KNNAg8f66FaK/q0cylrNg==} + rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107: + resolution: {tarball: https://pkg.pr.new/vitejs/rolldown-vite@107} + version: 6.3.8 engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -3619,11 +3610,11 @@ packages: yaml: optional: true - rolldown@1.0.0-beta.8-commit.2686eb1: - resolution: {integrity: sha512-NIo+n0m7ZVC6VXQ4l2zNYJOQ84lEthihbByZBBHzmyyhH/605jL43n2qFTPNy6W3stDnTCyp8/YYDlw39+fXlA==} + rolldown@1.0.0-beta.8-commit.c76291c: + resolution: {integrity: sha512-zjspfhO4u5+v9fiS+Om9DnpCrmq7jdTusu5x+un2oxqpHY2Ds6IllZFmgvAx48X4H9EYmJJ0YJHD6ruW5SX5EQ==} hasBin: true peerDependencies: - '@oxc-project/runtime': 0.66.0 + '@oxc-project/runtime': 0.68.1 peerDependenciesMeta: '@oxc-project/runtime': optional: true @@ -3931,14 +3922,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - valibot@1.0.0: - resolution: {integrity: sha512-1Hc0ihzWxBar6NGeZv7fPLY0QuxFMyxwYR2sF1Blu7Wq7EnremwY2W02tit2ij2VJT8HcSkHAQqmFfl77f73Yw==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true - vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -4629,15 +4612,26 @@ snapshots: '@eslint/core': 0.13.0 levn: 0.4.1 - '@generouted/react-router@1.20.0(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1))': + '@generouted/react-router@1.20.0(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(tsx@4.19.3)(yaml@2.7.1)': dependencies: fast-glob: 3.3.3 - generouted: 1.20.0(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) + generouted: 1.20.0(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(tsx@4.19.3)(yaml@2.7.1) react: 19.1.0 react-router: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: + - '@types/node' + - esbuild + - jiti + - less - react-router-dom + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml '@humanfs/core@0.19.1': {} @@ -4707,13 +4701,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@napi-rs/wasm-runtime@0.2.8': - dependencies: - '@emnapi/core': 1.4.0 - '@emnapi/runtime': 1.4.0 - '@tybys/wasm-util': 0.9.0 - optional: true - '@napi-rs/wasm-runtime@0.2.9': dependencies: '@emnapi/core': 1.4.0 @@ -4733,9 +4720,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@oxc-project/runtime@0.66.0': {} + '@oxc-project/runtime@0.68.1': {} - '@oxc-project/types@0.66.0': {} + '@oxc-project/types@0.68.1': {} '@playwright/test@1.52.0': dependencies: @@ -4743,42 +4730,42 @@ snapshots: '@publint/pack@0.1.2': {} - '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.c76291c': dependencies: - '@napi-rs/wasm-runtime': 0.2.8 + '@napi-rs/wasm-runtime': 0.2.9 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.c76291c': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.2686eb1': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.c76291c': optional: true '@rolldown/pluginutils@1.0.0-beta.9': {} @@ -5201,10 +5188,6 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.7.0': optional: true - '@valibot/to-json-schema@1.0.0(valibot@1.0.0(typescript@5.8.3))': - dependencies: - valibot: 1.0.0(typescript@5.8.3) - '@vitejs/release-scripts@1.5.0': dependencies: execa: 8.0.1 @@ -5546,7 +5529,7 @@ snapshots: dequal@2.0.3: {} - detect-libc@2.0.3: {} + detect-libc@2.0.4: {} devlop@1.1.0: dependencies: @@ -5936,17 +5919,41 @@ snapshots: function-bind@1.1.2: {} - generouted@1.11.7(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)): + generouted@1.11.7(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(tsx@4.19.3)(yaml@2.7.1): dependencies: react: 19.1.0 react-router-dom: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + transitivePeerDependencies: + - '@types/node' + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml - generouted@1.20.0(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)): + generouted@1.20.0(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(tsx@4.19.3)(yaml@2.7.1): dependencies: react: 19.1.0 react-router-dom: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + transitivePeerDependencies: + - '@types/node' + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml gensync@1.0.0-beta.2: {} @@ -6179,7 +6186,7 @@ snapshots: lightningcss@1.29.3: dependencies: - detect-libc: 2.0.3 + detect-libc: 2.0.4 optionalDependencies: lightningcss-darwin-arm64: 1.29.3 lightningcss-darwin-x64: 1.29.3 @@ -7065,14 +7072,14 @@ snapshots: rfdc@1.4.1: {} - rolldown-vite@6.3.5(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1): + rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1): dependencies: - '@oxc-project/runtime': 0.66.0 + '@oxc-project/runtime': 0.68.1 fdir: 6.4.4(picomatch@4.0.2) lightningcss: 1.29.3 picomatch: 4.0.2 postcss: 8.5.3 - rolldown: 1.0.0-beta.8-commit.2686eb1(@oxc-project/runtime@0.66.0)(typescript@5.8.3) + rolldown: 1.0.0-beta.8-commit.c76291c(@oxc-project/runtime@0.68.1) tinyglobby: 0.2.13 optionalDependencies: '@types/node': 22.15.2 @@ -7081,31 +7088,25 @@ snapshots: jiti: 2.4.2 tsx: 4.19.3 yaml: 2.7.1 - transitivePeerDependencies: - - typescript - rolldown@1.0.0-beta.8-commit.2686eb1(@oxc-project/runtime@0.66.0)(typescript@5.8.3): + rolldown@1.0.0-beta.8-commit.c76291c(@oxc-project/runtime@0.68.1): dependencies: - '@oxc-project/types': 0.66.0 - '@valibot/to-json-schema': 1.0.0(valibot@1.0.0(typescript@5.8.3)) + '@oxc-project/types': 0.68.1 ansis: 3.17.0 - valibot: 1.0.0(typescript@5.8.3) optionalDependencies: - '@oxc-project/runtime': 0.66.0 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-darwin-x64': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.8-commit.2686eb1 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.8-commit.2686eb1 - transitivePeerDependencies: - - typescript + '@oxc-project/runtime': 0.68.1 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-darwin-x64': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-freebsd-x64': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.8-commit.c76291c + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.8-commit.c76291c rollup-plugin-dts@6.2.1(rollup@4.37.0)(typescript@5.8.3): dependencies: @@ -7466,10 +7467,6 @@ snapshots: util-deprecate@1.0.2: {} - valibot@1.0.0(typescript@5.8.3): - optionalDependencies: - typescript: 5.8.3 - vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 @@ -7481,18 +7478,18 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@3.1.2(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1): + vite-node@3.1.2(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' + - esbuild - jiti - less - - lightningcss - sass - sass-embedded - stylus @@ -7518,7 +7515,7 @@ snapshots: tsx: 4.19.3 yaml: 2.7.1 - vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1): + vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1): dependencies: '@vitest/expect': 3.1.2 '@vitest/mocker': 3.1.2(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) @@ -7539,12 +7536,13 @@ snapshots: tinypool: 1.0.2 tinyrainbow: 2.0.0 vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) - vite-node: 3.1.2(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + vite-node: 3.1.2(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 22.15.2 transitivePeerDependencies: + - esbuild - jiti - less - lightningcss From 8315ebfe84061dab6aec56e68db105f5b117b36a Mon Sep 17 00:00:00 2001 From: underfin Date: Tue, 13 May 2025 16:14:46 +0800 Subject: [PATCH 02/15] fix: get module exports --- packages/common/refresh-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/common/refresh-utils.ts b/packages/common/refresh-utils.ts index 5c7aeed4..4b009abf 100644 --- a/packages/common/refresh-utils.ts +++ b/packages/common/refresh-utils.ts @@ -81,7 +81,7 @@ const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof newCode = `${sharedHead}${newCode} if (import.meta.hot && !inWebWorker) { - import.meta.hot.getExports().then((currentExports) => { + import.meta.hot.getExports(import.meta.url).then((currentExports) => { RefreshRuntime.registerExportsForReactRefresh(${JSON.stringify( id, )}, currentExports); From 0040e189f35bd9c4a12f05605418ef0c1a712814 Mon Sep 17 00:00:00 2001 From: underfin Date: Tue, 13 May 2025 16:52:24 +0800 Subject: [PATCH 03/15] fix: setup tests i --- package.json | 1 + packages/plugin-react-oxc/src/index.ts | 28 ++++++++++++++++--------- packages/plugin-react-swc/src/index.ts | 29 +++++++++++++++++--------- playground/vitest.config.e2e.ts | 15 ++++++++++++- playground/vitestSetup.ts | 24 ++++++++++++++++++--- 5 files changed, 73 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 05401e1c..b3094593 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "typecheck": "tsc -p scripts && tsc -p playground && tsc -p packages/plugin-react", "test": "pnpm run test-serve && pnpm run test-build && pnpm --filter ./packages/plugin-react-swc run test", "test-serve": "vitest run -c playground/vitest.config.e2e.ts", + "test-full-bundle-mode-serve": "VITE_TEST_FULL_BUNDLE_MODE=1 vitest run -c playground/vitest.config.e2e.ts", "test-build": "VITE_TEST_BUILD=1 vitest run -c playground/vitest.config.e2e.ts", "debug-serve": "VITE_DEBUG_SERVE=1 vitest run -c playground/vitest.config.e2e.ts", "debug-build": "VITE_TEST_BUILD=1 VITE_PRESERVE_BUILD_ARTIFACTS=1 vitest run -c playground/vitest.config.e2e.ts", diff --git a/packages/plugin-react-oxc/src/index.ts b/packages/plugin-react-oxc/src/index.ts index f234ad80..54e18b23 100644 --- a/packages/plugin-react-oxc/src/index.ts +++ b/packages/plugin-react-oxc/src/index.ts @@ -103,11 +103,12 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } let skipFastRefresh = false - + let base: string | undefined const viteRefreshWrapper: Plugin = { name: 'vite:react-oxc:refresh-wrapper', apply: 'serve', configResolved(config) { + base = config.base skipFastRefresh = config.isProduction || config.server.hmr === false }, transform: { @@ -136,15 +137,22 @@ export default function viteReact(opts: Options = {}): PluginOption[] { return { code: newCode, map: null } }, }, - transformIndexHtml(_, config) { - if (!skipFastRefresh) - return [ - { - tag: 'script', - attrs: { type: 'module' }, - children: getPreambleCode(config.server!.config.base), - }, - ] + transformIndexHtml: { + handler() { + if (!skipFastRefresh) + return [ + { + tag: 'script', + attrs: { type: 'module' }, + // !!! Rolldown vite full bunlde module break changes, config.server is invalid + // children: getPreambleCode(config.server!.config.base), + children: getPreambleCode(base!), + }, + ] + }, + // Rolldown vite full bunlde module break changes. + // Changed it to make sure the inject module could be bundled + order: 'pre', }, } diff --git a/packages/plugin-react-swc/src/index.ts b/packages/plugin-react-swc/src/index.ts index 6f20a05d..81566aef 100644 --- a/packages/plugin-react-swc/src/index.ts +++ b/packages/plugin-react-swc/src/index.ts @@ -92,6 +92,7 @@ const react = (_options?: Options): PluginOption[] => { _options?.useAtYourOwnRisk_mutateSwcOptions, } + let base: string | undefined return [ { name: 'vite:react-swc:resolve-runtime', @@ -128,6 +129,7 @@ const react = (_options?: Options): PluginOption[] => { }, }), configResolved(config) { + base = config.base if (config.server.hmr === false) hmrDisabled = true const mdxIndex = config.plugins.findIndex( (p) => p.name === '@mdx-js/rollup', @@ -142,16 +144,23 @@ const react = (_options?: Options): PluginOption[] => { ) } }, - transformIndexHtml: (_, config) => { - if (!hmrDisabled) { - return [ - { - tag: 'script', - attrs: { type: 'module' }, - children: getPreambleCode(config.server!.config.base), - }, - ] - } + transformIndexHtml: { + handler() { + if (!hmrDisabled) { + return [ + { + tag: 'script', + attrs: { type: 'module' }, + // !!! Rolldown vite full bunlde module break changes, config.server is invalid + // children: getPreambleCode(config.server!.config.base), + children: getPreambleCode(base!), + }, + ] + } + }, + // Rolldown vite full bunlde module break changes. + // Changed it to make sure the inject module could be bundled + order: 'pre', }, async transform(code, _id, transformOptions) { const id = _id.split('?')[0] diff --git a/playground/vitest.config.e2e.ts b/playground/vitest.config.e2e.ts index 945e0db2..50b2a4c0 100644 --- a/playground/vitest.config.e2e.ts +++ b/playground/vitest.config.e2e.ts @@ -11,7 +11,20 @@ export default defineConfig({ }, test: { pool: 'forks', - include: ['./playground/**/*.spec.[tj]s'], + include: process.env.VITE_TEST_FULL_BUNDLE_MODE + ? [ + './playground/class-components/**/*.spec.[tj]s', + './playground/compiler/**/*.spec.[tj]s', + './playground/compiler-react-18/**/*.spec.[tj]s', + './playground/mdx/**/*.spec.[tj]s', + // './playground/react/**/*.spec.[tj]s', + // './playground/react-classic/**/*.spec.[tj]s', + './playground/react-emotion/**/*.spec.[tj]s', + './playground/react-env/**/*.spec.[tj]s', + './playground/react-sourcemap/**/*.spec.[tj]s', + // './playground/ssr-react/**/*.spec.[tj]s', + ] + : ['./playground/**/*.spec.[tj]s'], setupFiles: ['./playground/vitestSetup.ts'], globalSetup: ['./playground/vitestGlobalSetup.ts'], testTimeout: timeout, diff --git a/playground/vitestSetup.ts b/playground/vitestSetup.ts index dda7a4ff..76d8912b 100644 --- a/playground/vitestSetup.ts +++ b/playground/vitestSetup.ts @@ -214,21 +214,39 @@ async function loadConfig(configEnv: ConfigEnv) { // tests are flaky when `emptyOutDir` is `true` emptyOutDir: false, }, + experimental: { + fullBundleMode: !!process.env.VITE_TEST_FULL_BUNDLE_MODE, + }, customLogger: createInMemoryLogger(serverLogs), } return mergeConfig(options, config || {}) } export async function startDefaultServe(): Promise { - const { build, createBuilder, createServer, mergeConfig, preview } = - await importVite() + const { + build, + createBuilder, + createServer, + mergeConfig, + preview, + createServerWithResolvedConfig, + } = await importVite() setupConsoleWarnCollector(serverLogs) if (!isBuild) { process.env.VITE_INLINE = 'inline-serve' const config = await loadConfig({ command: 'serve', mode: 'development' }) - viteServer = server = await (await createServer(config)).listen() + + if (process.env.VITE_TEST_FULL_BUNDLE_MODE) { + const builder = await createBuilder(config, null, 'serve') + viteServer = server = await createServerWithResolvedConfig(builder.config) + await server.listen() + await builder.buildApp(server) + } else { + viteServer = server = await (await createServer(config)).listen() + } + viteTestUrl = stripTrailingSlashIfNeeded( server.resolvedUrls.local[0], server.config.base, From 8f553e21deeba96c64dd7fd3864fbf9669a3e16c Mon Sep 17 00:00:00 2001 From: underfin Date: Tue, 13 May 2025 16:54:31 +0800 Subject: [PATCH 04/15] fix: add missing file --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b3094593..d301bd60 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "format": "prettier --write --cache .", "lint": "eslint --cache .", "typecheck": "tsc -p scripts && tsc -p playground && tsc -p packages/plugin-react", - "test": "pnpm run test-serve && pnpm run test-build && pnpm --filter ./packages/plugin-react-swc run test", + "test": "pnpm run test-serve && pnpm run test-build && pnpm --filter ./packages/plugin-react-swc run test && npm run test-full-bundle-mode-serve", "test-serve": "vitest run -c playground/vitest.config.e2e.ts", "test-full-bundle-mode-serve": "VITE_TEST_FULL_BUNDLE_MODE=1 vitest run -c playground/vitest.config.e2e.ts", "test-build": "VITE_TEST_BUILD=1 vitest run -c playground/vitest.config.e2e.ts", From 3378410ad648a46be0c0f1893c872105e979c5c5 Mon Sep 17 00:00:00 2001 From: underfin Date: Tue, 13 May 2025 17:00:54 +0800 Subject: [PATCH 05/15] chore: ignore the visit module file at full bundle mode --- .../react-classic/__tests__/react.spec.ts | 20 ++++--- playground/react/__tests__/react.spec.ts | 57 ++++++++++--------- playground/vitest.config.e2e.ts | 4 +- 3 files changed, 43 insertions(+), 38 deletions(-) diff --git a/playground/react-classic/__tests__/react.spec.ts b/playground/react-classic/__tests__/react.spec.ts index c0cd2b73..cd3eb185 100644 --- a/playground/react-classic/__tests__/react.spec.ts +++ b/playground/react-classic/__tests__/react.spec.ts @@ -18,12 +18,14 @@ test.runIf(isServe)('should hmr', async () => { expect(await page.textContent('button')).toMatch('count is: 1') }) -test.runIf(isServe)( - 'should have annotated jsx with file location metadata', - async () => { - const res = await page.request.get(viteTestUrl + '/App.jsx') - const code = await res.text() - expect(code).toMatch(/lineNumber:\s*\d+/) - expect(code).toMatch(/columnNumber:\s*\d+/) - }, -) +if (!process.env.VITE_TEST_FULL_BUNDLE_MODE){ + test.runIf(isServe)( + 'should have annotated jsx with file location metadata', + async () => { + const res = await page.request.get(viteTestUrl + '/App.jsx') + const code = await res.text() + expect(code).toMatch(/lineNumber:\s*\d+/) + expect(code).toMatch(/columnNumber:\s*\d+/) + }, + ) +} diff --git a/playground/react/__tests__/react.spec.ts b/playground/react/__tests__/react.spec.ts index 48128f2d..e5dcebba 100644 --- a/playground/react/__tests__/react.spec.ts +++ b/playground/react/__tests__/react.spec.ts @@ -34,36 +34,39 @@ test.runIf(isServe)('should hmr', async () => { await untilUpdated(() => page.textContent('h1'), 'Hello Vite + React') }) -test.runIf(isServe)('should not invalidate when code is invalid', async () => { - editFile('App.jsx', (code) => - code.replace('
', '
'), - ) +// test.runIf(isServe)('should not invalidate when code is invalid', async () => { +// editFile('App.jsx', (code) => +// code.replace('
', '
'), +// ) - await untilUpdated( - () => page.textContent('vite-error-overlay .message-body'), - 'Unexpected token', - ) - // if import.meta.invalidate happened, the old page won't be shown because the page is reloaded - expect(await page.textContent('h1')).toMatch('Hello Vite + React') +// await untilUpdated( +// () => page.textContent('vite-error-overlay .message-body'), +// 'Unexpected token', +// ) +// // if import.meta.invalidate happened, the old page won't be shown because the page is reloaded +// expect(await page.textContent('h1')).toMatch('Hello Vite + React') - await untilBrowserLogAfter( - () => - editFile('App.jsx', (code) => - code.replace('
', '
'), - ), - '[vite] hot updated: /App.jsx', - ) -}) +// await untilBrowserLogAfter( +// () => +// editFile('App.jsx', (code) => +// code.replace('
', '
'), +// ), +// '[vite] hot updated: /App.jsx', +// ) +// }) -test.runIf(isServe)( - 'should have annotated jsx with file location metadata', - async () => { - const res = await page.request.get(viteTestUrl + '/App.jsx') - const code = await res.text() - expect(code).toMatch(/lineNumber:\s*\d+/) - expect(code).toMatch(/columnNumber:\s*\d+/) - }, -) +// The module file can't be visited at full bundle mode +if (!process.env.VITE_TEST_FULL_BUNDLE_MODE) { + test.runIf(isServe)( + 'should have annotated jsx with file location metadata', + async () => { + const res = await page.request.get(viteTestUrl + '/App.jsx') + const code = await res.text() + expect(code).toMatch(/lineNumber:\s*\d+/) + expect(code).toMatch(/columnNumber:\s*\d+/) + }, + ) +} test('import attributes', async () => { expect(await page.textContent('.import-attributes')).toBe('ok') diff --git a/playground/vitest.config.e2e.ts b/playground/vitest.config.e2e.ts index 50b2a4c0..a9cf6a89 100644 --- a/playground/vitest.config.e2e.ts +++ b/playground/vitest.config.e2e.ts @@ -17,8 +17,8 @@ export default defineConfig({ './playground/compiler/**/*.spec.[tj]s', './playground/compiler-react-18/**/*.spec.[tj]s', './playground/mdx/**/*.spec.[tj]s', - // './playground/react/**/*.spec.[tj]s', - // './playground/react-classic/**/*.spec.[tj]s', + './playground/react/**/*.spec.[tj]s', + './playground/react-classic/**/*.spec.[tj]s', './playground/react-emotion/**/*.spec.[tj]s', './playground/react-env/**/*.spec.[tj]s', './playground/react-sourcemap/**/*.spec.[tj]s', From 3c79d57936fa7a746bec5146075419673438925d Mon Sep 17 00:00:00 2001 From: underfin Date: Mon, 19 May 2025 17:15:02 +0800 Subject: [PATCH 06/15] chore: bump rolldown-vite --- package.json | 4 +- pnpm-lock.yaml | 297 +++++++++++++++++++++++++------------------------ 2 files changed, 156 insertions(+), 145 deletions(-) diff --git a/package.json b/package.json index d301bd60..b1666aaa 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "typecheck": "tsc -p scripts && tsc -p playground && tsc -p packages/plugin-react", "test": "pnpm run test-serve && pnpm run test-build && pnpm --filter ./packages/plugin-react-swc run test && npm run test-full-bundle-mode-serve", "test-serve": "vitest run -c playground/vitest.config.e2e.ts", - "test-full-bundle-mode-serve": "VITE_TEST_FULL_BUNDLE_MODE=1 vitest run -c playground/vitest.config.e2e.ts", + "test-full-bundle-mode": "VITE_TEST_FULL_BUNDLE_MODE=1 vitest run -c playground/vitest.config.e2e.ts", "test-build": "VITE_TEST_BUILD=1 vitest run -c playground/vitest.config.e2e.ts", "debug-serve": "VITE_DEBUG_SERVE=1 vitest run -c playground/vitest.config.e2e.ts", "debug-build": "VITE_TEST_BUILD=1 VITE_PRESERVE_BUILD_ARTIFACTS=1 vitest run -c playground/vitest.config.e2e.ts", @@ -74,7 +74,7 @@ "pnpm": { "overrides": { "vitest>vite": "npm:vite@^6.2.6", - "vite": "https://pkg.pr.new/vitejs/rolldown-vite@107" + "vite": "https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9" }, "packageExtensions": { "generouted": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6cbb9442..9d3d87b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: vitest>vite: npm:vite@^6.2.6 - vite: https://pkg.pr.new/vitejs/rolldown-vite@107 + vite: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 packageExtensionsChecksum: sha256-S82yCctxnlOTNFuHWCyTFRo/B6Y3jque/4DnsDO4WZA= @@ -69,17 +69,17 @@ importers: specifier: ^8.31.0 version: 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) vite: - specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 - version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + specifier: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.3)(yaml@2.7.1) packages/common: dependencies: vite: - specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 - version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + specifier: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) packages/plugin-react: dependencies: @@ -102,8 +102,8 @@ importers: specifier: ^0.17.0 version: 0.17.0 vite: - specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 - version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + specifier: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) devDependencies: '@vitejs/react-common': specifier: workspace:* @@ -114,12 +114,9 @@ importers: packages/plugin-react-oxc: dependencies: - '@rolldown/pluginutils': - specifier: 1.0.0-beta.9 - version: 1.0.0-beta.9 vite: - specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 - version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + specifier: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) devDependencies: '@vitejs/react-common': specifier: workspace:* @@ -137,8 +134,8 @@ importers: specifier: ^1.11.22 version: 1.11.22 vite: - specifier: https://pkg.pr.new/vitejs/rolldown-vite@107 - version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + specifier: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 + version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) devDependencies: '@playwright/test': specifier: ^1.52.0 @@ -1421,12 +1418,12 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/runtime@0.68.1': - resolution: {integrity: sha512-MMPhKwVPyykU7F6id79Bb9DAM8BqT3HbJNRxJnuh68uARDDAEn252dq/AjSa3i8JWmtnKZIdm+ORAyjFZD7bzQ==} + '@oxc-project/runtime@0.70.0': + resolution: {integrity: sha512-+OV+5OQ2/KFSamt9hecuQ682AB06QwMfEQHrko1v98zF3kWAOp1+CAc3P27mtEPQPMQvRR1d1BYE6BTijbcxzQ==} engines: {node: '>=6.9.0'} - '@oxc-project/types@0.68.1': - resolution: {integrity: sha512-Q/H52+HXPPxuIHwQnVkEM8GebLnNcokkI4zQQdbxLIZdfxMGhAm9+gEqsMku3t95trN/1titHUmCM9NxbKaE2g==} + '@oxc-project/types@0.70.0': + resolution: {integrity: sha512-ngyLUpUjO3dpqygSRQDx7nMx8+BmXbWOU4oIwTJFV2MVIDG7knIZwgdwXlQWLg3C3oxg1lS7ppMtPKqKFb7wzw==} '@playwright/test@1.52.0': resolution: {integrity: sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==} @@ -1437,68 +1434,68 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} - '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-z0bulabL226ciSH6Xz2AuoAEohLRwPTv9qc3qBBHvdnYnBDQaK7HDFa2L84H2DKWI1r5si4JEDgv7H/TUdS9lA==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-Q/QdLvE1FGEkp/Xtr8DsakNSk1F6EcThrPO1M30SghIqqF/EhExPDLA0UJ3RuX9VU7PhzyAF9rUCGP+OTzyWgg==} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-vXjDtZxjZdx8LccYBnNNp2Yd0mU7ZS7tK9nOPq5M1kH5XgB5kE7rFwrZicmJWWRkVYFubh2SVRBuL/yNCZBbxw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-7sC2AiujG0+JLKl6D95k4k15dkRSZHyaDuFImGKJxlVyA1l+x08ywz38bSH3jGQ7/BcmKhtPAYKwnzsTOcNEBg==} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-t2pmx9CyeLEfd7uUzVHY7+dmWQZROdv4HOdhj/v4930yCJ9Nlm5SUwnQr274VqFnpW6yksQYbqLWnXCWWBV6vA==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-Q/ppbFrnMQkjwg6hwVtZlc4HgK8WB3Zwj/cbZg493wfU2Uw5HsDLQSdVaT4wtTnYcr1P9tcdByQMlMO7v0viMw==} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-7R62A7FKnY+pqArhju9g3czhXNg1LhmcqwMFO0ek2zaOO8ofEECSVQGqQAPctjKOMB312bWqfpziYY4dAQLNlQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-Q4D8/W3sNevkPTyd5AMc0ZIihvySlX5w88B3L6S9dwSUe3dkX6R0yk+mp+Zq0m26QYI+oHjzBwfuUGBVWSMfdg==} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-Tk3cRfyrt55ewiB2BgEcdh2EKU6axvgNpEKaQ5EMaKWX8yof2QPmSPSlCTpmIgCT5w/KEVCa3tf2ZhSeM6WmLQ==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-o/42qUmu9xrMJKLPRbfofXECx/q4JegKbxbDiXnWbwNSfOn8meF6Whvah11vI7BVIZnut8kuycB8ERgfP2ULtw==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-KtnGCqz8v5wdm/PYURRFMsF1aF7rAHHopP3dXzFqKHyBdm0vje+r8cVy/97WwKYFxxDmi7f0DZJ0TxxuP5gRnA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-Tzh74sU4NLoYBsUDwEH3D6BO9pjzZVqgbk3zaI965jgIovKtHoJoa4YcMcXImtQbYoDE04Bns2S75URahot6hg==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-UoROGcEBmKCPlRyQy9rfDy6IxmWaMQOenHkcWyMhFqJh4JVsWfS6inNd4TF5rKiRy5SzbJwr8qM0j/GjTCGcmw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-6fnG5mK6tdToYM1lx0IOxYpmhuEvEYN73oVwsRsrNV2+96vCpUqHrlU+g5LawAtKN591FOR9qARXz3CvK3COZQ==} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-VJzh1UCukRGUuJIWkVgnXRLLr7G6yrkWo9PrS43swuGyBUb3a54MT4LYJkcEvteJmOg7ejCpENXtsUwnOESJkA==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-bkcT+E2xg1cKtNLlVB9YgGsnj3n09MqGT4neEeL+FNJVj6r3kS89Ji4+OIk0Rw88ee3PEkkVGFA2xoS1BUG2yw==} cpu: [x64] os: [linux] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-IZThgZ9X6q74lYM6JdW2vTy2IAYNzXrhVvRShQqy4DrC+RLhMYZ4C8M4J/sStn2wCTxCWmXVHIi7bZRH5//T6A==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-FuPAqHJVCaiV+VgDzyLyBYUPXT8cVmxaez5GG2OvlOFCykU0XX/Zq5bO0LNMwQCFzwhqDka/snAzSXPs8YwKZA==} engines: {node: '>=14.21.3'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-BZ8yIlj/XbFS3B0+oJ9kSv1l8vZxWSts3Uxr/SwEQb3QmvHiX04m8Nd6+crzY6Lv7Kj4esWSpB/QpW8a89kqZA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-EAAsOJhHtLwBs8XzC+1f0TA/+qvc0kFIUaqRQZKsurQBjjQan/9NxQEfw3c7IQc8VJyCCpMnvZ8h22dcLAJ7rg==} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-czB8wXEz7NfLGlr9O6f9tTZGFsNaeWv8cF/0Dau95GMlfy5pZ1PzlwcoHKCclT3vROoQOLA1YbGT4HXhgwgzQA==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-OacUF9sgR9JgQoD4wV11f95YNgloCeKrH8inkjQ8y2n4fBDFjpt1Wa+8Ry5AyDzM9X3/tOrCjCDesQp+v8MAqQ==} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.c76291c': - resolution: {integrity: sha512-5ndBU5nWh1lC0IB8k7jqqTN9T4JSvZjsGyAojcS8chmzIWG3q8XiuzYS8ohk7OYy4Suy9n8VTtBGLcz8K00Q9g==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-zK6YMaXkTwrWcJnox/CzQWZdkPeEaLdyeLUB9UA0jU+1SrXd1UCtpiGCTuEbjuchjkBXoSwkYdYca+N6ELfUxA==} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.9': - resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + '@rolldown/pluginutils@1.0.0-beta.8-commit.360c072': + resolution: {integrity: sha512-OI2A/nrQsAJKNdEbBqGUG2uWyFFdH4qmUfOKzrO8AZaRQqz0rvUVBL4r0gZRQenfMWxFslQoHgjT4Y94hYTd5A==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -2039,8 +2036,8 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - ansis@3.17.0: - resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + ansis@4.0.0: + resolution: {integrity: sha512-P8nrHI1EyW9OfBt1X7hMSwGN2vwRuqHSKJAT1gbLWZRzDa24oHjYwGHvEgHeBepupzk878yS/HBZ0NMPYtbolw==} engines: {node: '>=14'} argparse@2.0.1: @@ -2807,68 +2804,68 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lightningcss-darwin-arm64@1.29.3: - resolution: {integrity: sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.29.3: - resolution: {integrity: sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==} + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.29.3: - resolution: {integrity: sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==} + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.29.3: - resolution: {integrity: sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==} + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.29.3: - resolution: {integrity: sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==} + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.3: - resolution: {integrity: sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==} + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.29.3: - resolution: {integrity: sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==} + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.3: - resolution: {integrity: sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==} + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.3: - resolution: {integrity: sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==} + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.29.3: - resolution: {integrity: sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==} + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.29.3: - resolution: {integrity: sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==} + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} lilconfig@3.1.2: @@ -3569,9 +3566,9 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107: - resolution: {tarball: https://pkg.pr.new/vitejs/rolldown-vite@107} - version: 6.3.8 + rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9: + resolution: {tarball: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9} + version: 6.3.11 engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -3610,11 +3607,11 @@ packages: yaml: optional: true - rolldown@1.0.0-beta.8-commit.c76291c: - resolution: {integrity: sha512-zjspfhO4u5+v9fiS+Om9DnpCrmq7jdTusu5x+un2oxqpHY2Ds6IllZFmgvAx48X4H9EYmJJ0YJHD6ruW5SX5EQ==} + rolldown@1.0.0-beta.8-commit.360c072: + resolution: {integrity: sha512-ibe5NIXijWbf28iRrZ0CfquYJAW9lKP88926obVFv3PY8TvAqBxWDeFQEvxupUSIFKJhcqPBtVDxzx/e2GQIYw==} hasBin: true peerDependencies: - '@oxc-project/runtime': 0.68.1 + '@oxc-project/runtime': 0.70.0 peerDependenciesMeta: '@oxc-project/runtime': optional: true @@ -4618,8 +4615,12 @@ snapshots: generouted: 1.20.0(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(react-router-dom@7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(tsx@4.19.3)(yaml@2.7.1) react: 19.1.0 react-router: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: + - '@types/node' + - esbuild + - jiti + - less - '@types/node' - esbuild - jiti @@ -4632,6 +4633,13 @@ snapshots: - terser - tsx - yaml + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml '@humanfs/core@0.19.1': {} @@ -4720,9 +4728,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@oxc-project/runtime@0.68.1': {} + '@oxc-project/runtime@0.70.0': {} - '@oxc-project/types@0.68.1': {} + '@oxc-project/types@0.70.0': {} '@playwright/test@1.52.0': dependencies: @@ -4730,45 +4738,46 @@ snapshots: '@publint/pack@0.1.2': {} - '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.360c072': dependencies: '@napi-rs/wasm-runtime': 0.2.9 + '@napi-rs/wasm-runtime': 0.2.9 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.c76291c': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.360c072': optional: true - '@rolldown/pluginutils@1.0.0-beta.9': {} + '@rolldown/pluginutils@1.0.0-beta.8-commit.360c072': {} '@rollup/plugin-alias@5.1.1(rollup@4.37.0)': optionalDependencies: @@ -5204,13 +5213,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.2(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1))': + '@vitest/mocker@3.1.2(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.3)(yaml@2.7.1))': dependencies: '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.3)(yaml@2.7.1) '@vitest/pretty-format@3.1.2': dependencies: @@ -5262,7 +5271,7 @@ snapshots: ansi-styles@6.2.1: {} - ansis@3.17.0: {} + ansis@4.0.0: {} argparse@2.0.1: {} @@ -5923,7 +5932,7 @@ snapshots: dependencies: react: 19.1.0 react-router-dom: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - esbuild @@ -5941,7 +5950,7 @@ snapshots: dependencies: react: 19.1.0 react-router-dom: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - esbuild @@ -6154,50 +6163,50 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lightningcss-darwin-arm64@1.29.3: + lightningcss-darwin-arm64@1.30.1: optional: true - lightningcss-darwin-x64@1.29.3: + lightningcss-darwin-x64@1.30.1: optional: true - lightningcss-freebsd-x64@1.29.3: + lightningcss-freebsd-x64@1.30.1: optional: true - lightningcss-linux-arm-gnueabihf@1.29.3: + lightningcss-linux-arm-gnueabihf@1.30.1: optional: true - lightningcss-linux-arm64-gnu@1.29.3: + lightningcss-linux-arm64-gnu@1.30.1: optional: true - lightningcss-linux-arm64-musl@1.29.3: + lightningcss-linux-arm64-musl@1.30.1: optional: true - lightningcss-linux-x64-gnu@1.29.3: + lightningcss-linux-x64-gnu@1.30.1: optional: true - lightningcss-linux-x64-musl@1.29.3: + lightningcss-linux-x64-musl@1.30.1: optional: true - lightningcss-win32-arm64-msvc@1.29.3: + lightningcss-win32-arm64-msvc@1.30.1: optional: true - lightningcss-win32-x64-msvc@1.29.3: + lightningcss-win32-x64-msvc@1.30.1: optional: true - lightningcss@1.29.3: + lightningcss@1.30.1: dependencies: detect-libc: 2.0.4 optionalDependencies: - lightningcss-darwin-arm64: 1.29.3 - lightningcss-darwin-x64: 1.29.3 - lightningcss-freebsd-x64: 1.29.3 - lightningcss-linux-arm-gnueabihf: 1.29.3 - lightningcss-linux-arm64-gnu: 1.29.3 - lightningcss-linux-arm64-musl: 1.29.3 - lightningcss-linux-x64-gnu: 1.29.3 - lightningcss-linux-x64-musl: 1.29.3 - lightningcss-win32-arm64-msvc: 1.29.3 - lightningcss-win32-x64-msvc: 1.29.3 + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 lilconfig@3.1.2: {} @@ -7072,14 +7081,14 @@ snapshots: rfdc@1.4.1: {} - rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1): + rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1): dependencies: - '@oxc-project/runtime': 0.68.1 + '@oxc-project/runtime': 0.70.0 fdir: 6.4.4(picomatch@4.0.2) - lightningcss: 1.29.3 + lightningcss: 1.30.1 picomatch: 4.0.2 postcss: 8.5.3 - rolldown: 1.0.0-beta.8-commit.c76291c(@oxc-project/runtime@0.68.1) + rolldown: 1.0.0-beta.8-commit.360c072(@oxc-project/runtime@0.70.0) tinyglobby: 0.2.13 optionalDependencies: '@types/node': 22.15.2 @@ -7089,24 +7098,25 @@ snapshots: tsx: 4.19.3 yaml: 2.7.1 - rolldown@1.0.0-beta.8-commit.c76291c(@oxc-project/runtime@0.68.1): + rolldown@1.0.0-beta.8-commit.360c072(@oxc-project/runtime@0.70.0): dependencies: - '@oxc-project/types': 0.68.1 - ansis: 3.17.0 + '@oxc-project/types': 0.70.0 + '@rolldown/pluginutils': 1.0.0-beta.8-commit.360c072 + ansis: 4.0.0 optionalDependencies: - '@oxc-project/runtime': 0.68.1 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-darwin-x64': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-freebsd-x64': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.8-commit.c76291c - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.8-commit.c76291c + '@oxc-project/runtime': 0.70.0 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-darwin-x64': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.8-commit.360c072 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.8-commit.360c072 rollup-plugin-dts@6.2.1(rollup@4.37.0)(typescript@5.8.3): dependencies: @@ -7484,10 +7494,11 @@ snapshots: debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@107(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) + vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - esbuild + - esbuild - jiti - less - sass @@ -7499,7 +7510,7 @@ snapshots: - tsx - yaml - vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1): + vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.3)(yaml@2.7.1): dependencies: esbuild: 0.25.3 fdir: 6.4.4(picomatch@4.0.2) @@ -7511,14 +7522,14 @@ snapshots: '@types/node': 22.15.2 fsevents: 2.3.3 jiti: 2.4.2 - lightningcss: 1.29.3 + lightningcss: 1.30.1 tsx: 4.19.3 yaml: 2.7.1 - vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1): + vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.3)(yaml@2.7.1): dependencies: '@vitest/expect': 3.1.2 - '@vitest/mocker': 3.1.2(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) + '@vitest/mocker': 3.1.2(vite@6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.3)(yaml@2.7.1)) '@vitest/pretty-format': 3.1.2 '@vitest/runner': 3.1.2 '@vitest/snapshot': 3.1.2 @@ -7535,7 +7546,7 @@ snapshots: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) + vite: 6.3.3(@types/node@22.15.2)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.3)(yaml@2.7.1) vite-node: 3.1.2(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: From 83415aff5be8bb9cbf64b09ca1205fe916ba6270 Mon Sep 17 00:00:00 2001 From: underfin Date: Mon, 19 May 2025 17:34:46 +0800 Subject: [PATCH 07/15] chore: fix test command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b1666aaa..c8a30de5 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "format": "prettier --write --cache .", "lint": "eslint --cache .", "typecheck": "tsc -p scripts && tsc -p playground && tsc -p packages/plugin-react", - "test": "pnpm run test-serve && pnpm run test-build && pnpm --filter ./packages/plugin-react-swc run test && npm run test-full-bundle-mode-serve", + "test": "pnpm run test-serve && pnpm run test-build && pnpm --filter ./packages/plugin-react-swc run test && npm run test-full-bundle-mode", "test-serve": "vitest run -c playground/vitest.config.e2e.ts", "test-full-bundle-mode": "VITE_TEST_FULL_BUNDLE_MODE=1 vitest run -c playground/vitest.config.e2e.ts", "test-build": "VITE_TEST_BUILD=1 vitest run -c playground/vitest.config.e2e.ts", From 6dedd47fd990bed09df2c8dc3f1df188f2d7e96e Mon Sep 17 00:00:00 2001 From: underfin Date: Thu, 22 May 2025 10:43:36 +0800 Subject: [PATCH 08/15] fix: update lock --- pnpm-lock.yaml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d3d87b4..13a7e634 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -114,6 +114,9 @@ importers: packages/plugin-react-oxc: dependencies: + '@rolldown/pluginutils': + specifier: 1.0.0-beta.9 + version: 1.0.0-beta.9 vite: specifier: https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 version: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) @@ -1497,6 +1500,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.8-commit.360c072': resolution: {integrity: sha512-OI2A/nrQsAJKNdEbBqGUG2uWyFFdH4qmUfOKzrO8AZaRQqz0rvUVBL4r0gZRQenfMWxFslQoHgjT4Y94hYTd5A==} + '@rolldown/pluginutils@1.0.0-beta.9': + resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} @@ -1723,7 +1729,6 @@ packages: '@swc/core@1.11.22': resolution: {integrity: sha512-mjPYbqq8XjwqSE0hEPT9CzaJDyxql97LgK4iyvYlwVSQhdN1uK0DBG4eP9PxYzCS2MUGAXB34WFLegdUj5HGpg==} engines: {node: '>=10'} - deprecated: It has a bug. See https://github.com/swc-project/swc/issues/10413 peerDependencies: '@swc/helpers': '>=0.5.17' peerDependenciesMeta: @@ -4617,10 +4622,6 @@ snapshots: react-router: 7.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) vite: rolldown-vite@https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9(@types/node@22.15.2)(esbuild@0.25.3)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - - '@types/node' - - esbuild - - jiti - - less - '@types/node' - esbuild - jiti @@ -4633,13 +4634,6 @@ snapshots: - terser - tsx - yaml - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml '@humanfs/core@0.19.1': {} @@ -4765,7 +4759,6 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.360c072': dependencies: '@napi-rs/wasm-runtime': 0.2.9 - '@napi-rs/wasm-runtime': 0.2.9 optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.360c072': @@ -4779,6 +4772,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.8-commit.360c072': {} + '@rolldown/pluginutils@1.0.0-beta.9': {} + '@rollup/plugin-alias@5.1.1(rollup@4.37.0)': optionalDependencies: rollup: 4.37.0 @@ -7498,7 +7493,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - esbuild - - esbuild - jiti - less - sass From 658572aea3371f607840f48f2a879ddec7b662cc Mon Sep 17 00:00:00 2001 From: underfin Date: Thu, 22 May 2025 10:48:43 +0800 Subject: [PATCH 09/15] fix: add test-full-bundle-mode in ci --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cc6104ca..7734c4ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,6 +87,9 @@ jobs: - name: Test serve run: pnpm run test-serve + - name: Test full bundle mode serve + run: pnpm run test-full-bundle-mode + - name: Test build run: pnpm run test-build From 7101416771d2d45d98572a62672b3b3c14c791a4 Mon Sep 17 00:00:00 2001 From: underfin Date: Thu, 22 May 2025 15:56:05 +0800 Subject: [PATCH 10/15] chore: add advancedChunks reproduction --- playground/class-components/vite.config.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/playground/class-components/vite.config.ts b/playground/class-components/vite.config.ts index c9a13540..159c6abc 100644 --- a/playground/class-components/vite.config.ts +++ b/playground/class-components/vite.config.ts @@ -4,4 +4,16 @@ import react from '@vitejs/plugin-react' export default defineConfig({ server: { port: 8908 /* Should be unique */ }, plugins: [react()], + build: { + rollupOptions: { + output: { + advancedChunks: { + groups: [ + { name: 'node-modules', test: 'node_modules' }, + { name: 'react', test: 'react' }, + ], + }, + }, + }, + }, }) From e15582db5db4b692d4f6cc6818e9a510c70e4587 Mon Sep 17 00:00:00 2001 From: underfin Date: Thu, 22 May 2025 18:48:09 +0800 Subject: [PATCH 11/15] chore: remove advancedChunks reproduction --- playground/class-components/vite.config.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/playground/class-components/vite.config.ts b/playground/class-components/vite.config.ts index 159c6abc..c9a13540 100644 --- a/playground/class-components/vite.config.ts +++ b/playground/class-components/vite.config.ts @@ -4,16 +4,4 @@ import react from '@vitejs/plugin-react' export default defineConfig({ server: { port: 8908 /* Should be unique */ }, plugins: [react()], - build: { - rollupOptions: { - output: { - advancedChunks: { - groups: [ - { name: 'node-modules', test: 'node_modules' }, - { name: 'react', test: 'react' }, - ], - }, - }, - }, - }, }) From 35967c0e3417cd9aeac5b62fabc1543927e12a9e Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:19:22 +0900 Subject: [PATCH 12/15] chore: add comments --- packages/common/refresh-runtime.js | 6 +++++- packages/common/refresh-utils.ts | 3 ++- packages/plugin-react-oxc/src/index.ts | 13 +++++++------ packages/plugin-react-swc/src/index.ts | 16 ++++++++-------- packages/plugin-react/src/index.ts | 10 +++++----- 5 files changed, 27 insertions(+), 21 deletions(-) diff --git a/packages/common/refresh-runtime.js b/packages/common/refresh-runtime.js index e2843635..5072457a 100644 --- a/packages/common/refresh-runtime.js +++ b/packages/common/refresh-runtime.js @@ -632,7 +632,11 @@ function predicateOnExport(ignoredExports, moduleExports, predicate) { for (const key in moduleExports) { if (key === '__esModule') continue if (ignoredExports.includes(key)) continue - // TODO: Not sure why need this. The esm module live binding always is getter, look like the browser is not. + // NOTE: this condition was added in https://github.com/vitejs/vite/pull/10239 + // this is needed to avoid triggering side effects in getters + // but this is not needed when `moduleExports` is an ESM module namespace + // also this is problematic for full-bundle mode because rolldown converts + // exports to getters for live bindings // const desc = Object.getOwnPropertyDescriptor(moduleExports, key) // if (desc && desc.get) return key if (!predicate(key, moduleExports[key])) return key diff --git a/packages/common/refresh-utils.ts b/packages/common/refresh-utils.ts index d7a9a1aa..cd38666a 100644 --- a/packages/common/refresh-utils.ts +++ b/packages/common/refresh-utils.ts @@ -81,7 +81,8 @@ const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof newCode = `${sharedHead}${newCode} if (import.meta.hot && !inWebWorker) { - import.meta.hot.getExports(import.meta.url).then((currentExports) => { + // NOTE: import(import.meta.url) does not work in full-bundle mode + import.meta.hot.getExports().then((currentExports) => { RefreshRuntime.registerExportsForReactRefresh(${JSON.stringify( id, )}, currentExports); diff --git a/packages/plugin-react-oxc/src/index.ts b/packages/plugin-react-oxc/src/index.ts index 54e18b23..ccc1dd89 100644 --- a/packages/plugin-react-oxc/src/index.ts +++ b/packages/plugin-react-oxc/src/index.ts @@ -103,13 +103,15 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } let skipFastRefresh = false - let base: string | undefined + let base: string + const viteRefreshWrapper: Plugin = { name: 'vite:react-oxc:refresh-wrapper', apply: 'serve', configResolved(config) { base = config.base skipFastRefresh = config.isProduction || config.server.hmr === false + base = config.base }, transform: { filter: { @@ -138,20 +140,19 @@ export default function viteReact(opts: Options = {}): PluginOption[] { }, }, transformIndexHtml: { + // TODO: maybe we can inject this to entrypoints instead of index.html? handler() { if (!skipFastRefresh) return [ { tag: 'script', attrs: { type: 'module' }, - // !!! Rolldown vite full bunlde module break changes, config.server is invalid - // children: getPreambleCode(config.server!.config.base), - children: getPreambleCode(base!), + children: getPreambleCode(base), }, ] }, - // Rolldown vite full bunlde module break changes. - // Changed it to make sure the inject module could be bundled + // In unbundled mode, Vite transforms any requests. + // But in full bundled mode, Vite only transforms / bundles the scripts injected in `order: 'pre'`. order: 'pre', }, } diff --git a/packages/plugin-react-swc/src/index.ts b/packages/plugin-react-swc/src/index.ts index 896e05ce..3e98929c 100644 --- a/packages/plugin-react-swc/src/index.ts +++ b/packages/plugin-react-swc/src/index.ts @@ -85,6 +85,7 @@ type Options = { const react = (_options?: Options): PluginOption[] => { let hmrDisabled = false + let base: string const options = { jsxImportSource: _options?.jsxImportSource ?? 'react', tsDecorators: _options?.tsDecorators, @@ -99,7 +100,6 @@ const react = (_options?: Options): PluginOption[] => { disableOxcRecommendation: _options?.disableOxcRecommendation, } - let base: string | undefined return [ { name: 'vite:react-swc:resolve-runtime', @@ -140,6 +140,8 @@ const react = (_options?: Options): PluginOption[] => { configResolved(config) { base = config.base if (config.server.hmr === false) hmrDisabled = true + base = config.base + const mdxIndex = config.plugins.findIndex( (p) => p.name === '@mdx-js/rollup', ) @@ -165,21 +167,19 @@ const react = (_options?: Options): PluginOption[] => { } }, transformIndexHtml: { + // TODO: maybe we can inject this to entrypoints instead of index.html? handler() { - if (!hmrDisabled) { + if (!hmrDisabled) return [ { tag: 'script', attrs: { type: 'module' }, - // !!! Rolldown vite full bunlde module break changes, config.server is invalid - // children: getPreambleCode(config.server!.config.base), - children: getPreambleCode(base!), + children: getPreambleCode(base), }, ] - } }, - // Rolldown vite full bunlde module break changes. - // Changed it to make sure the inject module could be bundled + // In unbundled mode, Vite transforms any requests. + // But in full bundled mode, Vite only transforms / bundles the scripts injected in `order: 'pre'`. order: 'pre', }, async transform(code, _id, transformOptions) { diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index c1e4c6e2..8d04c480 100644 --- a/packages/plugin-react/src/index.ts +++ b/packages/plugin-react/src/index.ts @@ -121,6 +121,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] { let isProduction = true let projectRoot = process.cwd() let skipFastRefresh = false + let base: string let runPluginOverrides: | ((options: ReactBabelOptions, context: ReactBabelHookContext) => void) | undefined @@ -382,20 +383,19 @@ export default function viteReact(opts: Options = {}): PluginOption[] { }, }, transformIndexHtml: { + // TODO: maybe we can inject this to entrypoints instead of index.html? handler() { if (!skipFastRefresh) return [ { tag: 'script', attrs: { type: 'module' }, - // !!! Rolldown vite full bunlde module break changes, config.server is invalid - // children: getPreambleCode(config.server!.config.base), - children: getPreambleCode(base!), + children: getPreambleCode(base), }, ] }, - // Rolldown vite full bunlde module break changes. - // Changed it to make sure the inject module could be bundled + // In unbundled mode, Vite transforms any requests. + // But in full bundled mode, Vite only transforms / bundles the scripts injected in `order: 'pre'`. order: 'pre', }, } From ccfcb28d8d49d2c4191cc7107d9d95723a470ef9 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:21:40 +0900 Subject: [PATCH 13/15] chore: fix merge error --- packages/plugin-react/src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index 8d04c480..1a23736a 100644 --- a/packages/plugin-react/src/index.ts +++ b/packages/plugin-react/src/index.ts @@ -126,7 +126,6 @@ export default function viteReact(opts: Options = {}): PluginOption[] { | ((options: ReactBabelOptions, context: ReactBabelHookContext) => void) | undefined let staticBabelOptions: ReactBabelOptions | undefined - let base: string | undefined // Support patterns like: // - import * as React from 'react'; // - import React from 'react'; From 706a033f881f74058dfe13f0d7d376b02f6d6d64 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Tue, 15 Jul 2025 12:00:35 +0900 Subject: [PATCH 14/15] chore: fix merge --- pnpm-workspace.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ee699e69..bd413513 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,3 +10,5 @@ catalogs: overrides: '@types/estree': ^1.0.8 + 'vitest>vite': npm:vite@^6.2.6 + 'vite': https://pkg.pr.new/vitejs/rolldown-vite@bdb70a9 From a1b5b1962c4682783125d6f60cda8ec2db7c61c6 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Thu, 31 Jul 2025 10:55:09 +0900 Subject: [PATCH 15/15] chore: remove unneeded diff --- packages/plugin-react-oxc/src/index.ts | 1 - packages/plugin-react-swc/src/index.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/plugin-react-oxc/src/index.ts b/packages/plugin-react-oxc/src/index.ts index 0c080c4f..2eec08d5 100644 --- a/packages/plugin-react-oxc/src/index.ts +++ b/packages/plugin-react-oxc/src/index.ts @@ -124,7 +124,6 @@ export default function viteReact(opts: Options = {}): Plugin[] { configResolved(config) { base = config.base skipFastRefresh = config.isProduction || config.server.hmr === false - base = config.base }, transform: { filter: { diff --git a/packages/plugin-react-swc/src/index.ts b/packages/plugin-react-swc/src/index.ts index 6da46ec1..3533ad2a 100644 --- a/packages/plugin-react-swc/src/index.ts +++ b/packages/plugin-react-swc/src/index.ts @@ -140,7 +140,6 @@ const react = (_options?: Options): Plugin[] => { configResolved(config) { base = config.base if (config.server.hmr === false) hmrDisabled = true - base = config.base const mdxIndex = config.plugins.findIndex( (p) => p.name === '@mdx-js/rollup',