mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
* build: fail the React Compiler ratchet on stale uncompiled-list paths - A listed path that no longer names a renderer source (a rename or split) fails the ratchet, so the file can't silently start compiling. - The build and the ratchet read the lists through one parser that drops trailing notes, resolved from the repo root rather than the current directory. * build: resolve uncompiled lists from import.meta.url and check listed paths on disk - electron-vite's config bundle rewrites import.meta.url per file but not import.meta.dirname, so the repo root came out wrong and desktop builds failed with ENOENT. - A listed path is stale only if no renderer file exists there; the scan's test-name filter no longer flags shipped files like notification-test-delivery.ts. * build: require uncompiled-list entries to name the exact file the build matches A ../ segment, a directory or a different letter case passed the existence check, but the build's exclusion matches only the exact path, so the file still compiled. * build: reject backslashes in uncompiled-list entries On Windows path.join turns a backslash into a separator, so the entry passed the check while the build's forward-slash match missed it.
28 lines
844 B
TypeScript
28 lines
844 B
TypeScript
import type { Options } from '@vitejs/plugin-react'
|
|
import { reactCompilerExcludedFiles } from './react-compiler-uncompiled-files.mjs'
|
|
|
|
export function isReactCompilerEnabled(): boolean {
|
|
return process.env.ORCA_REACT_COMPILER !== '0'
|
|
}
|
|
|
|
export const REACT_COMPILER_OPTIONS = { target: '19' } as const
|
|
|
|
function escapeRegExp(text: string): string {
|
|
return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
|
}
|
|
|
|
export function reactCompilerExcludePattern(): RegExp {
|
|
return new RegExp(`/(?:${reactCompilerExcludedFiles().map(escapeRegExp).join('|')})$`)
|
|
}
|
|
|
|
// ORCA_REACT_COMPILER=0 builds without the compiler for bisecting.
|
|
export function reactPluginOptions(): Options {
|
|
if (!isReactCompilerEnabled()) {
|
|
return {}
|
|
}
|
|
return {
|
|
compiler: REACT_COMPILER_OPTIONS,
|
|
exclude: [/\/node_modules\//, reactCompilerExcludePattern()]
|
|
}
|
|
}
|