diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c39606925..ca1aad91f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -17,6 +17,8 @@ body: [plugin-react](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react) - label: | [plugin-react-swc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-swc) + - label: | + [plugin-react-oxc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-oxc) - type: textarea id: bug-description attributes: diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index fd4c1c082..453e70e6d 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -17,6 +17,8 @@ body: [plugin-react](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react) - label: | [plugin-react-swc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-swc) + - label: | + [plugin-react-oxc](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-oxc) - type: textarea id: feature-description attributes: diff --git a/packages/common/refresh-utils.ts b/packages/common/refresh-utils.ts index 00a1c86e5..008828797 100644 --- a/packages/common/refresh-utils.ts +++ b/packages/common/refresh-utils.ts @@ -14,20 +14,30 @@ window.$RefreshSig$ = () => (type) => type;` export const getPreambleCode = (base: string): string => preambleCode.replace('__BASE__', base) -export function addRefreshWrapper( +export const avoidSourceMapOption = Symbol() + +export function addRefreshWrapper( code: string, - map: M | string, + map: M | string | typeof avoidSourceMapOption, pluginName: string, id: string, -): { code: string; map: M | string } { +): { code: string; map: M | null | string } { const hasRefresh = refreshContentRE.test(code) const onlyReactComp = !hasRefresh && reactCompRE.test(code) - if (!hasRefresh && !onlyReactComp) return { code, map } + const normalizedMap = map === avoidSourceMapOption ? null : map + + if (!hasRefresh && !onlyReactComp) return { code, map: normalizedMap } + + const avoidSourceMap = map === avoidSourceMapOption + const newMap = + typeof normalizedMap === 'string' + ? (JSON.parse(normalizedMap) as M) + : normalizedMap - const newMap = typeof map === 'string' ? (JSON.parse(map) as M) : map let newCode = code if (hasRefresh) { - newCode = `let prevRefreshReg; + const refreshHead = removeLineBreaksIfNeeded( + `let prevRefreshReg; let prevRefreshSig; if (import.meta.hot && !inWebWorker) { @@ -43,7 +53,11 @@ if (import.meta.hot && !inWebWorker) { window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; } -${newCode} +`, + avoidSourceMap, + ) + + newCode = `${refreshHead}${newCode} if (import.meta.hot && !inWebWorker) { window.$RefreshReg$ = prevRefreshReg; @@ -51,14 +65,19 @@ if (import.meta.hot && !inWebWorker) { } ` if (newMap) { - newMap.mappings = ';'.repeat(17) + newMap.mappings + newMap.mappings = ';'.repeat(16) + newMap.mappings } } - newCode = `import * as RefreshRuntime from "${runtimePublicPath}"; + const sharedHead = removeLineBreaksIfNeeded( + `import * as RefreshRuntime from "${runtimePublicPath}"; const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; -${newCode} +`, + avoidSourceMap, + ) + + newCode = `${sharedHead}${newCode} if (import.meta.hot && !inWebWorker) { RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { @@ -81,3 +100,7 @@ if (import.meta.hot && !inWebWorker) { return { code: newCode, map: newMap } } + +function removeLineBreaksIfNeeded(code: string, enabled: boolean): string { + return enabled ? code.replace(/\n/g, '') : code +} diff --git a/packages/plugin-react-oxc/CHANGELOG.md b/packages/plugin-react-oxc/CHANGELOG.md new file mode 100644 index 000000000..99a0dd736 --- /dev/null +++ b/packages/plugin-react-oxc/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## Unreleased + +- Create Oxc plugin diff --git a/packages/plugin-react-oxc/LICENSE b/packages/plugin-react-oxc/LICENSE new file mode 100644 index 000000000..9c1b313d7 --- /dev/null +++ b/packages/plugin-react-oxc/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019-present, Yuxi (Evan) You and Vite contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/plugin-react-oxc/README.md b/packages/plugin-react-oxc/README.md new file mode 100644 index 000000000..f717cbf8e --- /dev/null +++ b/packages/plugin-react-oxc/README.md @@ -0,0 +1,84 @@ +# @vitejs/plugin-react-oxc [![npm](https://img.shields.io/npm/v/@vitejs/plugin-react-oxc.svg)](https://npmjs.com/package/@vitejs/plugin-react-oxc) + +The future default Vite plugin for React projects. + +- enable [Fast Refresh](https://www.npmjs.com/package/react-refresh) in development +- use the [automatic JSX runtime](https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html) +- small installation size + +```js +// vite.config.js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-oxc' + +export default defineConfig({ + plugins: [react()], +}) +``` + +## Caveats + +- `jsx runtime` is always `automatic` +- this plugin only works with [`rolldown-vite`](https://vitejs.dev/guide/rolldown) + +## Options + +### include/exclude + +Includes `.js`, `.jsx`, `.ts` & `.tsx` by default. This option can be used to add fast refresh to `.mdx` files: + +```js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import mdx from '@mdx-js/rollup' + +export default defineConfig({ + plugins: [ + { enforce: 'pre', ...mdx() }, + react({ include: /\.(mdx|js|jsx|ts|tsx)$/ }), + ], +}) +``` + +> `node_modules` are never processed by this plugin (but Oxc will) + +### jsxImportSource + +Control where the JSX factory is imported from. Default to `'react'` + +```js +react({ jsxImportSource: '@emotion/react' }) +``` + +## Middleware mode + +In [middleware mode](https://vite.dev/config/server-options.html#server-middlewaremode), you should make sure your entry `index.html` file is transformed by Vite. Here's an example for an Express server: + +```js +app.get('/', async (req, res, next) => { + try { + let html = fs.readFileSync(path.resolve(root, 'index.html'), 'utf-8') + + // Transform HTML using Vite plugins. + html = await viteServer.transformIndexHtml(req.url, html) + + res.send(html) + } catch (e) { + return next(e) + } +}) +``` + +Otherwise, you'll probably get this error: + +``` +Uncaught Error: @vitejs/plugin-react-oxc can't detect preamble. Something is wrong. +``` + +## Consistent components exports + +For React refresh to work correctly, your file should only export React components. You can find a good explanation in the [Gatsby docs](https://www.gatsbyjs.com/docs/reference/local-development/fast-refresh/#how-it-works). + +If an incompatible change in exports is found, the module will be invalidated and HMR will propagate. To make it easier to export simple constants alongside your component, the module is only invalidated when their value changes. + +You can catch mistakes and get more detailed warning with this [eslint rule](https://github.com/ArnaudBarre/eslint-plugin-react-refresh). diff --git a/packages/plugin-react-oxc/build.config.ts b/packages/plugin-react-oxc/build.config.ts new file mode 100644 index 000000000..cd1efb1c2 --- /dev/null +++ b/packages/plugin-react-oxc/build.config.ts @@ -0,0 +1,11 @@ +import { defineBuildConfig } from 'unbuild' + +export default defineBuildConfig({ + entries: ['src/index'], + externals: ['vite'], + clean: true, + declaration: true, + rollup: { + inlineDependencies: true, + }, +}) diff --git a/packages/plugin-react-oxc/package.json b/packages/plugin-react-oxc/package.json new file mode 100644 index 000000000..3aeb7d4a4 --- /dev/null +++ b/packages/plugin-react-oxc/package.json @@ -0,0 +1,50 @@ +{ + "name": "@vitejs/plugin-react-oxc", + "version": "0.1.0", + "license": "MIT", + "author": "Evan You", + "contributors": [ + "Alec Larson", + "Arnaud Barré" + ], + "description": "The future default Vite plugin for React projects", + "keywords": [ + "vite", + "vite-plugin", + "react", + "oxc", + "react-refresh", + "fast refresh" + ], + "files": [ + "dist" + ], + "type": "module", + "types": "./dist/index.d.mts", + "exports": "./dist/index.mjs", + "scripts": { + "dev": "unbuild --stub", + "build": "unbuild && tsx scripts/copyRefreshRuntime.ts", + "prepublishOnly": "npm run build" + }, + "engines": { + "node": ">=20.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vitejs/vite-plugin-react.git", + "directory": "packages/plugin-react-oxc" + }, + "bugs": { + "url": "https://github.com/vitejs/vite-plugin-react/issues" + }, + "homepage": "https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#readme", + "peerDependencies": { + "vite": "^6.3.0" + }, + "devDependencies": { + "@vitejs/react-common": "workspace:*", + "unbuild": "^3.5.0", + "vite": "catalog:rolldown-vite" + } +} diff --git a/packages/plugin-react-oxc/scripts/copyRefreshRuntime.ts b/packages/plugin-react-oxc/scripts/copyRefreshRuntime.ts new file mode 100644 index 000000000..2666e968e --- /dev/null +++ b/packages/plugin-react-oxc/scripts/copyRefreshRuntime.ts @@ -0,0 +1,6 @@ +import { copyFileSync } from 'node:fs' + +copyFileSync( + 'node_modules/@vitejs/react-common/refresh-runtime.js', + 'dist/refresh-runtime.js', +) diff --git a/packages/plugin-react-oxc/src/index.ts b/packages/plugin-react-oxc/src/index.ts new file mode 100644 index 000000000..5eb93088b --- /dev/null +++ b/packages/plugin-react-oxc/src/index.ts @@ -0,0 +1,158 @@ +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' +import { readFileSync } from 'node:fs' +import type { BuildOptions, Plugin, PluginOption } from 'vite' +import { + addRefreshWrapper, + avoidSourceMapOption, + getPreambleCode, + runtimePublicPath, + silenceUseClientWarning, +} from '@vitejs/react-common' + +const _dirname = dirname(fileURLToPath(import.meta.url)) + +export interface Options { + include?: string | RegExp | Array + exclude?: string | RegExp | Array + /** + * Control where the JSX factory is imported from. + * @default 'react' + */ + jsxImportSource?: string +} + +const defaultIncludeRE = /\.[tj]sx?(?:$|\?)/ + +export default function viteReact(opts: Options = {}): PluginOption[] { + const include = opts.include ?? defaultIncludeRE + const exclude = [ + ...(Array.isArray(opts.exclude) + ? opts.exclude + : opts.exclude + ? [opts.exclude] + : []), + /\/node_modules\//, + ] + + const jsxImportSource = opts.jsxImportSource ?? 'react' + const jsxImportRuntime = `${jsxImportSource}/jsx-runtime` + const jsxImportDevRuntime = `${jsxImportSource}/jsx-dev-runtime` + + const viteConfig: Plugin = { + name: 'vite:react-oxc:config', + config(userConfig, { command }) { + return { + // @ts-expect-error rolldown-vite Vite type incompatibility + build: silenceUseClientWarning(userConfig) as BuildOptions, + oxc: { + jsx: { + runtime: 'automatic', + importSource: jsxImportSource, + refresh: command === 'serve', + development: command === 'serve', + }, + jsxRefreshInclude: include, + jsxRefreshExclude: exclude, + }, + optimizeDeps: { + include: [ + 'react', + 'react-dom', + jsxImportDevRuntime, + jsxImportRuntime, + ], + rollupOptions: { jsx: { mode: 'automatic' } }, + }, + } + }, + options() { + if (!this.meta.rolldownVersion) { + throw new Error( + '@vitejs/plugin-react-oxc requires rolldown-vite to be used. ' + + 'See https://vitejs.dev/guide/rolldown for more details about rolldown-vite.', + ) + } + }, + } + + const viteRefreshRuntime: Plugin = { + name: 'vite:react-oxc:refresh-runtime', + enforce: 'pre', + resolveId: { + filter: { id: exactRegex(runtimePublicPath) }, + handler(id) { + return id + }, + }, + load: { + filter: { id: exactRegex(runtimePublicPath) }, + handler(_id) { + return readFileSync( + join(_dirname, 'refresh-runtime.js'), + 'utf-8', + ).replace( + /__README_URL__/g, + 'https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-oxc', + ) + }, + }, + } + + let skipFastRefresh = false + + const viteRefreshWrapper: Plugin = { + name: 'vite:react-oxc:refresh-wrapper', + apply: 'serve', + configResolved(config) { + skipFastRefresh = config.isProduction || config.server.hmr === false + }, + transform: { + filter: { + id: { include, exclude }, + }, + handler(code, id, options) { + const ssr = options?.ssr === true + + const [filepath] = id.split('?') + const isJSX = filepath.endsWith('x') + const useFastRefresh = + !skipFastRefresh && + !ssr && + (isJSX || + code.includes(jsxImportDevRuntime) || + code.includes(jsxImportRuntime)) + if (!useFastRefresh) return + + const { code: newCode } = addRefreshWrapper( + code, + avoidSourceMapOption, + '@vitejs/plugin-react-oxc', + id, + ) + return { code: newCode, map: null } + }, + }, + transformIndexHtml(_, config) { + if (!skipFastRefresh) + return [ + { + tag: 'script', + attrs: { type: 'module' }, + children: getPreambleCode(config.server!.config.base), + }, + ] + }, + } + + return [viteConfig, viteRefreshRuntime, viteRefreshWrapper] +} + +function exactRegex(input: string): RegExp { + return new RegExp(`^${escapeRegex(input)}$`) +} + +const escapeRegexRE = /[-/\\^$*+?.()|[\]{}]/g +function escapeRegex(str: string): string { + return str.replace(escapeRegexRE, '\\$&') +} diff --git a/packages/plugin-react-oxc/tsconfig.json b/packages/plugin-react-oxc/tsconfig.json new file mode 100644 index 000000000..e2b17f9c7 --- /dev/null +++ b/packages/plugin-react-oxc/tsconfig.json @@ -0,0 +1,15 @@ +{ + "include": ["src", "scripts"], + "compilerOptions": { + "outDir": "dist", + "target": "ES2020", + "module": "ES2020", + "moduleResolution": "bundler", + "strict": true, + "declaration": true, + "sourceMap": true, + "noEmit": true, + "noUnusedLocals": true, + "esModuleInterop": true + } +} diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index 14e1fd02a..8b1b2b1fc 100644 --- a/packages/plugin-react/src/index.ts +++ b/packages/plugin-react/src/index.ts @@ -255,7 +255,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] { } return addRefreshWrapper( result.code!, - result.map ?? undefined, + result.map!, '@vitejs/plugin-react', id, ) diff --git a/playground/class-components/__tests__/oxc/class-components.spec.ts b/playground/class-components/__tests__/oxc/class-components.spec.ts new file mode 100644 index 000000000..471b6e892 --- /dev/null +++ b/playground/class-components/__tests__/oxc/class-components.spec.ts @@ -0,0 +1 @@ +import '../class-components.spec' diff --git a/playground/mdx/__tests__/oxc/mdx.spec.ts b/playground/mdx/__tests__/oxc/mdx.spec.ts new file mode 100644 index 000000000..4f2df7980 --- /dev/null +++ b/playground/mdx/__tests__/oxc/mdx.spec.ts @@ -0,0 +1 @@ +import '../mdx.spec' diff --git a/playground/react-env/__tests__/oxc/react.spec.ts b/playground/react-env/__tests__/oxc/react.spec.ts new file mode 100644 index 000000000..776f43259 --- /dev/null +++ b/playground/react-env/__tests__/oxc/react.spec.ts @@ -0,0 +1 @@ +import '../react.spec' diff --git a/playground/react-sourcemap/__tests__/oxc/react-sourcemap.spec.ts b/playground/react-sourcemap/__tests__/oxc/react-sourcemap.spec.ts new file mode 100644 index 000000000..4fb7caa7e --- /dev/null +++ b/playground/react-sourcemap/__tests__/oxc/react-sourcemap.spec.ts @@ -0,0 +1 @@ +import '../react-sourcemap.spec' diff --git a/playground/react/__tests__/oxc/react.spec.ts b/playground/react/__tests__/oxc/react.spec.ts new file mode 100644 index 000000000..776f43259 --- /dev/null +++ b/playground/react/__tests__/oxc/react.spec.ts @@ -0,0 +1 @@ +import '../react.spec' diff --git a/playground/react/__tests__/react.spec.ts b/playground/react/__tests__/react.spec.ts index 3c17d963b..d5d9c7d97 100644 --- a/playground/react/__tests__/react.spec.ts +++ b/playground/react/__tests__/react.spec.ts @@ -1,6 +1,7 @@ import { expect, test } from 'vitest' import { editFile, + escapeRegex, isBuild, isServe, page, @@ -82,7 +83,13 @@ if (!isBuild) { code.replace('An Object', 'Updated'), ), [ - '[vite] invalidate /hmr/no-exported-comp.jsx: Could not Fast Refresh ("Foo" export is incompatible). Learn more at https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#consistent-components-exports', + new RegExp( + `^${escapeRegex( + '[vite] invalidate /hmr/no-exported-comp.jsx: Could not Fast Refresh ("Foo" export is incompatible). Learn more at https://github.com/vitejs/vite-plugin-react/tree/main/packages/', + )}plugin-react(?:-\\w+)?${escapeRegex( + '#consistent-components-exports', + )}`, + ), '[vite] hot updated: /hmr/no-exported-comp.jsx', '[vite] hot updated: /hmr/parent.jsx', 'Parent rendered', @@ -107,7 +114,13 @@ if (!isBuild) { code.replace('context provider', 'context provider updated'), ), [ - '[vite] invalidate /context/CountProvider.jsx: Could not Fast Refresh ("CountContext" export is incompatible). Learn more at https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#consistent-components-exports', + new RegExp( + `^${escapeRegex( + '[vite] invalidate /context/CountProvider.jsx: Could not Fast Refresh ("CountContext" export is incompatible). Learn more at https://github.com/vitejs/vite-plugin-react/tree/main/packages/', + )}plugin-react(?:-\\w+)?${escapeRegex( + '#consistent-components-exports', + )}`, + ), '[vite] hot updated: /context/CountProvider.jsx', '[vite] hot updated: /App.jsx', '[vite] hot updated: /context/ContextButton.jsx', diff --git a/playground/ssr-react/__tests__/oxc/ssr-react.spec.ts b/playground/ssr-react/__tests__/oxc/ssr-react.spec.ts new file mode 100644 index 000000000..66fde5a3f --- /dev/null +++ b/playground/ssr-react/__tests__/oxc/ssr-react.spec.ts @@ -0,0 +1 @@ +import '../ssr-react.spec' diff --git a/playground/test-utils.ts b/playground/test-utils.ts index dabc63c07..6d8e730d1 100644 --- a/playground/test-utils.ts +++ b/playground/test-utils.ts @@ -202,6 +202,11 @@ async function untilBrowserLog( return logs } +const escapeRegexRE = /[-/\\^$*+?.()|[\]{}]/g +export function escapeRegex(str: string): string { + return str.replace(escapeRegexRE, '\\$&') +} + /** * Before implementing a new util, check if it's not available in core https://github.com/vitejs/vite/blob/main/playground/test-utils.ts */ diff --git a/playground/vitestGlobalSetup.ts b/playground/vitestGlobalSetup.ts index 508ec0f0a..a7fa1d6e7 100644 --- a/playground/vitestGlobalSetup.ts +++ b/playground/vitestGlobalSetup.ts @@ -40,6 +40,55 @@ export async function setup({ provide }: TestProject): Promise { throw error } }) + + const playgrounds = ( + await fs.readdir(path.resolve(__dirname, '../playground'), { + withFileTypes: true, + }) + ).filter((dirent) => dirent.name !== 'node_modules' && dirent.isDirectory()) + for (const { name: playgroundName } of playgrounds) { + // write vite proxy file to load vite from each playground + await fs.writeFile( + path.resolve(tempDir, `${playgroundName}/_vite-proxy.js`), + "export * from 'vite';", + ) + + // also setup dedicated copy for plugin-react-oxc tests + const oxcTestDir = path.resolve( + __dirname, + '../playground', + playgroundName, + '__tests__/oxc', + ) + if (!(await fs.exists(oxcTestDir))) continue + + const variantPlaygroundName = `${playgroundName}__oxc` + await fs.copy( + path.resolve(tempDir, playgroundName), + path.resolve(tempDir, variantPlaygroundName), + ) + await fs.remove( + path.resolve( + tempDir, + `${variantPlaygroundName}/node_modules/@vitejs/plugin-react`, + ), + ) + await fs.symlink( + path.resolve(__dirname, '../packages/plugin-react-oxc'), + path.resolve( + tempDir, + `${variantPlaygroundName}/node_modules/@vitejs/plugin-react`, + ), + ) + await fs.symlink( + path.resolve(__dirname, '../packages/plugin-react-oxc/node_modules/vite'), + path.resolve(tempDir, `${variantPlaygroundName}/node_modules/vite`), + ) + await fs.copy( + path.resolve(__dirname, '../packages/plugin-react-oxc/node_modules/.bin'), + path.resolve(tempDir, `${variantPlaygroundName}/node_modules/.bin`), + ) + } } export async function teardown(): Promise { diff --git a/playground/vitestSetup.ts b/playground/vitestSetup.ts index d78af202c..dda7a4ffb 100644 --- a/playground/vitestSetup.ts +++ b/playground/vitestSetup.ts @@ -12,14 +12,6 @@ import type { UserConfig, ViteDevServer, } from 'vite' -import { - build, - createBuilder, - createServer, - loadConfigFromFile, - mergeConfig, - preview, -} from 'vite' import type { Browser, Page } from 'playwright-chromium' import type { RunnerTestFile } from 'vitest' import { beforeAll, inject } from 'vitest' @@ -177,6 +169,8 @@ beforeAll(async (s) => { }) async function loadConfig(configEnv: ConfigEnv) { + const { loadConfigFromFile, mergeConfig } = await importVite() + let config: UserConfig | null = null // config file named by convention as the *.spec.ts folder @@ -226,6 +220,9 @@ async function loadConfig(configEnv: ConfigEnv) { } export async function startDefaultServe(): Promise { + const { build, createBuilder, createServer, mergeConfig, preview } = + await importVite() + setupConsoleWarnCollector(serverLogs) if (!isBuild) { @@ -356,6 +353,11 @@ function stripTrailingSlashIfNeeded(url: string, base: string): string { return url } +async function importVite(): Promise { + const vitePath = path.resolve(testDir, '_vite-proxy.js') + return await import(vitePath) +} + declare module 'vite' { export interface UserConfig { /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02c8652fb..6e5181280 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,12 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false +catalogs: + rolldown-vite: + vite: + specifier: npm:rolldown-vite@^6.3.0-beta.5 + version: 6.3.0-beta.5 + packageExtensionsChecksum: sha256-S82yCctxnlOTNFuHWCyTFRo/B6Y3jque/4DnsDO4WZA= importers: @@ -66,16 +72,16 @@ importers: version: 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) vite: specifier: ^6.0.0 - version: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + version: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) vitest: specifier: ^3.0.4 - version: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) packages/common: devDependencies: vite: specifier: ^6.2.2 - version: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + version: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) packages/plugin-react: dependencies: @@ -102,6 +108,18 @@ importers: specifier: ^3.5.0 version: 3.5.0(typescript@5.8.2) + packages/plugin-react-oxc: + devDependencies: + '@vitejs/react-common': + specifier: workspace:* + version: link:../common + unbuild: + specifier: ^3.5.0 + version: 3.5.0(typescript@5.8.2) + vite: + specifier: catalog:rolldown-vite + version: rolldown-vite@6.3.0-beta.5(@types/node@22.13.15)(esbuild@0.25.2)(jiti@2.4.2)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.5.1) + packages/plugin-react-swc: dependencies: '@swc/core': @@ -140,7 +158,7 @@ importers: version: 5.8.2 vite: specifier: ^6.2.2 - version: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + version: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) packages/plugin-react-swc/playground/base-path: dependencies: @@ -282,7 +300,7 @@ importers: devDependencies: '@mdx-js/rollup': specifier: ^3.1.0 - version: 3.1.0(rollup@4.38.0) + version: 3.1.0(rollup@4.37.0) '@types/react': specifier: ^19.0.11 version: 19.0.12 @@ -366,10 +384,10 @@ importers: dependencies: '@generouted/react-router': specifier: ^1.20.0 - version: 1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1)) + version: 1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1)) generouted: specifier: 1.11.7 - version: 1.11.7(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1)) + version: 1.11.7(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1)) react: specifier: ^19.0.0 version: 19.1.0 @@ -507,7 +525,7 @@ importers: devDependencies: '@mdx-js/rollup': specifier: ^3.1.0 - version: 3.1.0(rollup@4.38.0) + version: 3.1.0(rollup@4.37.0) '@types/react': specifier: ^18.3.12 version: 18.3.20 @@ -1365,6 +1383,13 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/runtime@0.61.2': + resolution: {integrity: sha512-UNv56Aa4pTtsnqapa2LC+gRxXbUZxA6j1WlSYV8+zan5sD+CvwOMSzUsMNdUUTebob6PafJfT+/TN83yWXWmSA==} + engines: {node: '>=6.9.0'} + + '@oxc-project/types@0.61.2': + resolution: {integrity: sha512-rfuwJwvwn9MRthHNXlSo9Eka/u7gC0MhnWAoX3BhE1+rwPOl22nq0K0Y997Hof0tHCOuD7H3/Z8HTfCVhB4c5Q==} + '@playwright/test@1.51.1': resolution: {integrity: sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==} engines: {node: '>=18'} @@ -1374,6 +1399,66 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} + '@rolldown/binding-darwin-arm64@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-aq6Y9OQl05bYUnzM4a7ZGF3+Du7cdrw3Ala1eCnvNqxgi2ksXKN+LHvgeaWDlyfLgX0jVQFZre4+kzgLSHEMog==} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-GRxENhaf92Blo7TZz8C8vBFSt4pCRWDP45ElGATItWqzyM+ILtzNjkE5Wj1OyWPe7y0oWxps6YMxVxEdb3/BJQ==} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-3uibg1KMHT7c149YupfXICxKoO6K7q3MaMpvOdxUjTY9mY3+v96eHTfnq+dd6qD16ppKSVij7FfpEC+sCVDRmg==} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-oDFqE2fWx2sj0E9doRUmYxi5TKc9/vmD49NP0dUN578LQO8nJBwqOMvE8bM3a/T3or4g1mlJt2ebzGiKGzjHSw==} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-0Weogg1WiFNkmwznM4YS4AmDa55miGstb/I4zKquIsv1kSBLBkxboifgWTCPUnGFK7Wy1u/beRnxCY7UVL1oPw==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-LwEN10APipzjxAHSreVTEnUAHRz3sq4/UR3IVD/AguV0s6yAbVAsIrvIoxXHKoci+RUlyY5FXICYZQKli8iU5w==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-tgE2J4BAQfI0rfoPzS4r1LEHSNxdNSM8l1Ab5InnzE4dXzVw92BVQ/FLFE6L+nWy81O7uwd7yz0Jo+qByOPCXg==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-m78svPie3D5PIBxmexztDVHjrnHO5t6h3Lwtl6sqdrio1zhGYMY9FcPcaZZ40mXXWKHFoPmbueBZZLdttvOEIQ==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-XbOcOWmdioNZ3hHBb5j96Y9S9pGyTeFZWR5ovMZggA9L7mWft2pMrbx4p5zUy2dCps3l1jaFQCjKuBXpwoCZug==} + engines: {node: '>=14.21.3'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-lnZ/wrat6UMWGbS9w5AUEH8WkPBA4EUSYp8cxlspdU16dISeD/KGpF2d0hS6Oa6ftbgZZrRLMEnQRiD8OupPsg==} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-F0N/6kAnCl9dOgqR09T60UjQSxKvRtlbImhiYxIdKBFxgYDDGsh8XzlSbMRUVQmMtNwKC8xi+i+SnamSqY6q8Q==} + cpu: [ia32] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.7-commit.e117288': + resolution: {integrity: sha512-T3qKMkSVemlVLLd5V7dCXnjt4Zda1UnUi45AQnmxIf3jH0/VP0J4aYAJiEEaRbhMoHc82j01+6MuZFZUVMeqng==} + cpu: [x64] + os: [win32] + '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} @@ -1419,6 +1504,15 @@ packages: rollup: optional: true + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -1428,103 +1522,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.38.0': - resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==} + '@rollup/rollup-android-arm-eabi@4.37.0': + resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.38.0': - resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==} + '@rollup/rollup-android-arm64@4.37.0': + resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.38.0': - resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} + '@rollup/rollup-darwin-arm64@4.37.0': + resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.38.0': - resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} + '@rollup/rollup-darwin-x64@4.37.0': + resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.38.0': - resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==} + '@rollup/rollup-freebsd-arm64@4.37.0': + resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.38.0': - resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==} + '@rollup/rollup-freebsd-x64@4.37.0': + resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.38.0': - resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==} + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.38.0': - resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==} + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.38.0': - resolution: {integrity: sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==} + '@rollup/rollup-linux-arm64-gnu@4.37.0': + resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.38.0': - resolution: {integrity: sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==} + '@rollup/rollup-linux-arm64-musl@4.37.0': + resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.38.0': - resolution: {integrity: sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==} + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': - resolution: {integrity: sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.38.0': - resolution: {integrity: sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==} + '@rollup/rollup-linux-riscv64-gnu@4.37.0': + resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.38.0': - resolution: {integrity: sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==} + '@rollup/rollup-linux-riscv64-musl@4.37.0': + resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.38.0': - resolution: {integrity: sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==} + '@rollup/rollup-linux-s390x-gnu@4.37.0': + resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.38.0': - resolution: {integrity: sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==} + '@rollup/rollup-linux-x64-gnu@4.37.0': + resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.38.0': - resolution: {integrity: sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==} + '@rollup/rollup-linux-x64-musl@4.37.0': + resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.38.0': - resolution: {integrity: sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==} + '@rollup/rollup-win32-arm64-msvc@4.37.0': + resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.38.0': - resolution: {integrity: sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==} + '@rollup/rollup-win32-ia32-msvc@4.37.0': + resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.38.0': - resolution: {integrity: sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==} + '@rollup/rollup-win32-x64-msvc@4.37.0': + resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} cpu: [x64] os: [win32] @@ -1643,6 +1737,9 @@ packages: '@types/estree-jsx@1.0.3': resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} @@ -1835,6 +1932,11 @@ 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.4.0': resolution: {integrity: sha512-NpPniB3UxEsWf9fX8SlZA96vv3tqkd9IFW23pBHVylAW18BsV8J9f/iukbvilCU+nyhtCQ9xsf7K/7p2wSro3Q==} @@ -2178,6 +2280,10 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -2663,6 +2769,70 @@ 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==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.3: + resolution: {integrity: sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.3: + resolution: {integrity: sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.3: + resolution: {integrity: sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.3: + resolution: {integrity: sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.3: + resolution: {integrity: sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.3: + resolution: {integrity: sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.3: + resolution: {integrity: sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.3: + resolution: {integrity: sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.3: + resolution: {integrity: sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.3: + resolution: {integrity: sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -3347,6 +3517,55 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rolldown-vite@6.3.0-beta.5: + resolution: {integrity: sha512-/seCUlTV3pHNn0Y8qveGmHMNYxH/Z9xc65Ov0uaA/HtThaMZNTacWsMyDG4SA+S/c1RdpWIe85E5NeOmhywrGg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + esbuild: ^0.25.0 + jiti: '>=1.21.0' + less: '*' + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + 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.7-commit.e117288: + resolution: {integrity: sha512-3pjhtA9BV/q9cNdcz75ehvie3lgFfJZfzIT8A7aZJPvFCaWTj5AUAlcExXRWO/CIMMZ/49Y1x3MTwRC/Q/LuAw==} + hasBin: true + peerDependencies: + '@oxc-project/runtime': 0.61.2 + peerDependenciesMeta: + '@oxc-project/runtime': + optional: true + rollup-plugin-dts@6.2.1: resolution: {integrity: sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==} engines: {node: '>=16'} @@ -3354,8 +3573,8 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.38.0: - resolution: {integrity: sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==} + rollup@4.37.0: + resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3646,6 +3865,14 @@ 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==} @@ -3657,8 +3884,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@6.2.4: - resolution: {integrity: sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==} + vite@6.2.5: + resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -4327,13 +4554,13 @@ snapshots: '@eslint/core': 0.12.0 levn: 0.4.1 - '@generouted/react-router@1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1))': + '@generouted/react-router@1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1))': dependencies: fast-glob: 3.3.3 - generouted: 1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1)) + generouted: 1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1)) react: 19.1.0 react-router: 7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + vite: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) transitivePeerDependencies: - react-router-dom @@ -4395,11 +4622,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/rollup@3.1.0(rollup@4.38.0)': + '@mdx-js/rollup@3.1.0(rollup@4.37.0)': dependencies: '@mdx-js/mdx': 3.0.0 - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - rollup: 4.38.0 + '@rollup/pluginutils': 5.1.0(rollup@4.37.0) + rollup: 4.37.0 source-map: 0.7.4 vfile: 6.0.1 transitivePeerDependencies: @@ -4424,19 +4651,61 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + '@oxc-project/runtime@0.61.2': {} + + '@oxc-project/types@0.61.2': {} + '@playwright/test@1.51.1': dependencies: playwright: 1.51.1 '@publint/pack@0.1.2': {} - '@rollup/plugin-alias@5.1.1(rollup@4.38.0)': + '@rolldown/binding-darwin-arm64@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.7-commit.e117288': + dependencies: + '@napi-rs/wasm-runtime': 0.2.7 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.7-commit.e117288': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.7-commit.e117288': + optional: true + + '@rollup/plugin-alias@5.1.1(rollup@4.37.0)': optionalDependencies: - rollup: 4.38.0 + rollup: 4.37.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.38.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -4444,97 +4713,105 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.38.0 + rollup: 4.37.0 - '@rollup/plugin-json@6.1.0(rollup@4.38.0)': + '@rollup/plugin-json@6.1.0(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) optionalDependencies: - rollup: 4.38.0 + rollup: 4.37.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.38.0)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.38.0 + rollup: 4.37.0 - '@rollup/plugin-replace@6.0.2(rollup@4.38.0)': + '@rollup/plugin-replace@6.0.2(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) magic-string: 0.30.17 optionalDependencies: - rollup: 4.38.0 + rollup: 4.37.0 + + '@rollup/pluginutils@5.1.0(rollup@4.37.0)': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.37.0 - '@rollup/pluginutils@5.1.4(rollup@4.38.0)': + '@rollup/pluginutils@5.1.4(rollup@4.37.0)': dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.38.0 + rollup: 4.37.0 - '@rollup/rollup-android-arm-eabi@4.38.0': + '@rollup/rollup-android-arm-eabi@4.37.0': optional: true - '@rollup/rollup-android-arm64@4.38.0': + '@rollup/rollup-android-arm64@4.37.0': optional: true - '@rollup/rollup-darwin-arm64@4.38.0': + '@rollup/rollup-darwin-arm64@4.37.0': optional: true - '@rollup/rollup-darwin-x64@4.38.0': + '@rollup/rollup-darwin-x64@4.37.0': optional: true - '@rollup/rollup-freebsd-arm64@4.38.0': + '@rollup/rollup-freebsd-arm64@4.37.0': optional: true - '@rollup/rollup-freebsd-x64@4.38.0': + '@rollup/rollup-freebsd-x64@4.37.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.38.0': + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.38.0': + '@rollup/rollup-linux-arm-musleabihf@4.37.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.38.0': + '@rollup/rollup-linux-arm64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.38.0': + '@rollup/rollup-linux-arm64-musl@4.37.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.38.0': + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.38.0': + '@rollup/rollup-linux-riscv64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.38.0': + '@rollup/rollup-linux-riscv64-musl@4.37.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.38.0': + '@rollup/rollup-linux-s390x-gnu@4.37.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.38.0': + '@rollup/rollup-linux-x64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-x64-musl@4.38.0': + '@rollup/rollup-linux-x64-musl@4.37.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.38.0': + '@rollup/rollup-win32-arm64-msvc@4.37.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.38.0': + '@rollup/rollup-win32-ia32-msvc@4.37.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.38.0': + '@rollup/rollup-win32-x64-msvc@4.37.0': optional: true '@swc/core-darwin-arm64@1.11.13': @@ -4641,6 +4918,8 @@ snapshots: dependencies: '@types/estree': 1.0.7 + '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} '@types/fs-extra@11.0.4': @@ -4836,6 +5115,10 @@ snapshots: '@unrs/rspack-resolver-binding-win32-x64-msvc@1.3.0': optional: true + '@valibot/to-json-schema@1.0.0(valibot@1.0.0(typescript@5.8.2))': + dependencies: + valibot: 1.0.0(typescript@5.8.2) + '@vitejs/release-scripts@1.4.0': dependencies: execa: 8.0.1 @@ -4852,13 +5135,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.5(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1))': + '@vitest/mocker@3.0.5(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1))': dependencies: '@vitest/spy': 3.0.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + vite: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) '@vitest/pretty-format@3.0.5': dependencies: @@ -5179,6 +5462,8 @@ snapshots: dequal@2.0.3: {} + detect-libc@2.0.3: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -5537,7 +5822,7 @@ snapshots: dependencies: magic-string: 0.30.17 mlly: 1.7.4 - rollup: 4.38.0 + rollup: 4.37.0 flat-cache@4.0.1: dependencies: @@ -5566,17 +5851,17 @@ snapshots: function-bind@1.1.2: {} - generouted@1.11.7(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1)): + generouted@1.11.7(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1)): dependencies: react: 19.1.0 react-router-dom: 7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + vite: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) - generouted@1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1)): + generouted@1.20.0(react-router-dom@7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1)): dependencies: react: 19.1.0 react-router-dom: 7.4.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + vite: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) gensync@1.0.0-beta.2: {} @@ -5777,6 +6062,51 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-darwin-arm64@1.29.3: + optional: true + + lightningcss-darwin-x64@1.29.3: + optional: true + + lightningcss-freebsd-x64@1.29.3: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.3: + optional: true + + lightningcss-linux-arm64-gnu@1.29.3: + optional: true + + lightningcss-linux-arm64-musl@1.29.3: + optional: true + + lightningcss-linux-x64-gnu@1.29.3: + optional: true + + lightningcss-linux-x64-musl@1.29.3: + optional: true + + lightningcss-win32-arm64-msvc@1.29.3: + optional: true + + lightningcss-win32-x64-msvc@1.29.3: + optional: true + + lightningcss@1.29.3: + dependencies: + detect-libc: 2.0.3 + 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 + lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -6643,38 +6973,78 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-dts@6.2.1(rollup@4.38.0)(typescript@5.8.2): + rolldown-vite@6.3.0-beta.5(@types/node@22.13.15)(esbuild@0.25.2)(jiti@2.4.2)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.5.1): + dependencies: + '@oxc-project/runtime': 0.61.2 + lightningcss: 1.29.3 + picomatch: 4.0.2 + postcss: 8.5.3 + rolldown: 1.0.0-beta.7-commit.e117288(@oxc-project/runtime@0.61.2)(typescript@5.8.2) + tinyglobby: 0.2.12 + optionalDependencies: + '@types/node': 22.13.15 + esbuild: 0.25.2 + fsevents: 2.3.3 + jiti: 2.4.2 + tsx: 4.19.2 + yaml: 2.5.1 + transitivePeerDependencies: + - typescript + + rolldown@1.0.0-beta.7-commit.e117288(@oxc-project/runtime@0.61.2)(typescript@5.8.2): + dependencies: + '@oxc-project/types': 0.61.2 + '@valibot/to-json-schema': 1.0.0(valibot@1.0.0(typescript@5.8.2)) + valibot: 1.0.0(typescript@5.8.2) + optionalDependencies: + '@oxc-project/runtime': 0.61.2 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-darwin-x64': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.7-commit.e117288 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.7-commit.e117288 + transitivePeerDependencies: + - typescript + + rollup-plugin-dts@6.2.1(rollup@4.37.0)(typescript@5.8.2): dependencies: magic-string: 0.30.17 - rollup: 4.38.0 + rollup: 4.37.0 typescript: 5.8.2 optionalDependencies: '@babel/code-frame': 7.26.2 - rollup@4.38.0: + rollup@4.37.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.38.0 - '@rollup/rollup-android-arm64': 4.38.0 - '@rollup/rollup-darwin-arm64': 4.38.0 - '@rollup/rollup-darwin-x64': 4.38.0 - '@rollup/rollup-freebsd-arm64': 4.38.0 - '@rollup/rollup-freebsd-x64': 4.38.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.38.0 - '@rollup/rollup-linux-arm-musleabihf': 4.38.0 - '@rollup/rollup-linux-arm64-gnu': 4.38.0 - '@rollup/rollup-linux-arm64-musl': 4.38.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.38.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.38.0 - '@rollup/rollup-linux-riscv64-gnu': 4.38.0 - '@rollup/rollup-linux-riscv64-musl': 4.38.0 - '@rollup/rollup-linux-s390x-gnu': 4.38.0 - '@rollup/rollup-linux-x64-gnu': 4.38.0 - '@rollup/rollup-linux-x64-musl': 4.38.0 - '@rollup/rollup-win32-arm64-msvc': 4.38.0 - '@rollup/rollup-win32-ia32-msvc': 4.38.0 - '@rollup/rollup-win32-x64-msvc': 4.38.0 + '@rollup/rollup-android-arm-eabi': 4.37.0 + '@rollup/rollup-android-arm64': 4.37.0 + '@rollup/rollup-darwin-arm64': 4.37.0 + '@rollup/rollup-darwin-x64': 4.37.0 + '@rollup/rollup-freebsd-arm64': 4.37.0 + '@rollup/rollup-freebsd-x64': 4.37.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 + '@rollup/rollup-linux-arm-musleabihf': 4.37.0 + '@rollup/rollup-linux-arm64-gnu': 4.37.0 + '@rollup/rollup-linux-arm64-musl': 4.37.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-musl': 4.37.0 + '@rollup/rollup-linux-s390x-gnu': 4.37.0 + '@rollup/rollup-linux-x64-gnu': 4.37.0 + '@rollup/rollup-linux-x64-musl': 4.37.0 + '@rollup/rollup-win32-arm64-msvc': 4.37.0 + '@rollup/rollup-win32-ia32-msvc': 4.37.0 + '@rollup/rollup-win32-x64-msvc': 4.37.0 fsevents: 2.3.3 rspack-resolver@1.3.0: @@ -6896,12 +7266,12 @@ snapshots: unbuild@3.5.0(typescript@5.8.2): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.38.0) - '@rollup/plugin-commonjs': 28.0.3(rollup@4.38.0) - '@rollup/plugin-json': 6.1.0(rollup@4.38.0) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.38.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.38.0) - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/plugin-alias': 5.1.1(rollup@4.37.0) + '@rollup/plugin-commonjs': 28.0.3(rollup@4.37.0) + '@rollup/plugin-json': 6.1.0(rollup@4.37.0) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.37.0) + '@rollup/plugin-replace': 6.0.2(rollup@4.37.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 @@ -6915,8 +7285,8 @@ snapshots: pathe: 2.0.3 pkg-types: 2.1.0 pretty-bytes: 6.1.1 - rollup: 4.38.0 - rollup-plugin-dts: 6.2.1(rollup@4.38.0)(typescript@5.8.2) + rollup: 4.37.0 + rollup-plugin-dts: 6.2.1(rollup@4.37.0)(typescript@5.8.2) scule: 1.3.0 tinyglobby: 0.2.12 untyped: 2.0.0 @@ -6993,6 +7363,10 @@ snapshots: util-deprecate@1.0.2: {} + valibot@1.0.0(typescript@5.8.2): + optionalDependencies: + typescript: 5.8.2 + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 @@ -7004,13 +7378,13 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@3.0.5(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1): + vite-node@3.0.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + vite: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) transitivePeerDependencies: - '@types/node' - jiti @@ -7025,22 +7399,23 @@ snapshots: - tsx - yaml - vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1): + vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 - rollup: 4.38.0 + rollup: 4.37.0 optionalDependencies: '@types/node': 22.13.15 fsevents: 2.3.3 jiti: 2.4.2 + lightningcss: 1.29.3 tsx: 4.19.2 yaml: 2.5.1 - vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1): + vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1): dependencies: '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(vite@6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1)) + '@vitest/mocker': 3.0.5(vite@6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1)) '@vitest/pretty-format': 3.0.5 '@vitest/runner': 3.0.5 '@vitest/snapshot': 3.0.5 @@ -7056,8 +7431,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.4(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) - vite-node: 3.0.5(@types/node@22.13.15)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.5.1) + vite: 6.2.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) + vite-node: 3.0.5(@types/node@22.13.15)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.2)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f435b81cb..ee1c0d2ba 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,3 +2,7 @@ packages: - 'packages/*' - 'playground/**' - 'packages/plugin-react-swc/playground/**' + +catalogs: + rolldown-vite: + vite: npm:rolldown-vite@^6.3.0-beta.5 diff --git a/scripts/release.ts b/scripts/release.ts index b60ba6a8c..cc8eff895 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -4,7 +4,7 @@ import colors from 'picocolors' release({ repo: 'vite-plugin-react', - packages: ['plugin-react', 'plugin-react-swc'], + packages: ['plugin-react', 'plugin-react-swc', 'plugin-react-oxc'], getPkgDir(pkg) { if (pkg === 'plugin-react-swc') { return `packages/${pkg}/dist`