mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 09:27:29 +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.
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
import { readFileSync } from 'node:fs'
|
|
import { resolve } from 'node:path'
|
|
import { fileURLToPath } from 'node:url'
|
|
|
|
// Why: import.meta.url, not dirname — electron-vite's config bundle rewrites only the former.
|
|
const REPO_ROOT = fileURLToPath(new URL('../..', import.meta.url))
|
|
|
|
export const UNCOMPILED_LIST = 'config/react-compiler-uncompiled-files.txt'
|
|
// Hand-kept list plus every file still in a hazard ratchet; compiled, these would run differently.
|
|
export const UNCOMPILED_FILE_LISTS = [
|
|
UNCOMPILED_LIST,
|
|
'config/render-path-translate-baseline.txt',
|
|
'config/react-compiler-hazard-baseline.txt'
|
|
]
|
|
|
|
/** Repo-relative paths from a list or count baseline: `[count ]path[#detail][ # note]`. */
|
|
export function parseListedFiles(text) {
|
|
return text
|
|
.split('\n')
|
|
.map((line) => line.trim())
|
|
.filter((line) => line && !line.startsWith('#'))
|
|
.map((line) =>
|
|
line
|
|
.replace(/^\d+\s+/, '')
|
|
.split('#')[0]
|
|
.trim()
|
|
)
|
|
}
|
|
|
|
export function readListedFiles(list, root = REPO_ROOT) {
|
|
return parseListedFiles(readFileSync(resolve(root, list), 'utf8'))
|
|
}
|
|
|
|
export function reactCompilerExcludedFiles(root = REPO_ROOT) {
|
|
return [...new Set(UNCOMPILED_FILE_LISTS.flatMap((list) => readListedFiles(list, root)))]
|
|
}
|