mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-11 21:57:14 +03:00
Centralize the browser-safe module set and source transformation so the browser and extension builders cannot drift. AI assistance: This refactor was prepared by Codex under pbakaus's scheduled architecture-simplification authorization.
31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
const BROWSER_DETECTOR_MODULES = [
|
|
'cli/engine/shared/constants.mjs',
|
|
'cli/engine/registry/antipatterns.mjs',
|
|
'cli/engine/shared/color.mjs',
|
|
'cli/engine/shared/fonts.mjs',
|
|
'cli/engine/rules/checks.mjs',
|
|
'cli/engine/browser/injected/index.mjs',
|
|
];
|
|
|
|
function browserSafeModule(root, relPath) {
|
|
let code = fs.readFileSync(path.join(root, relPath), 'utf-8');
|
|
if (relPath === 'cli/engine/registry/antipatterns.mjs') {
|
|
const match = code.match(/const ANTIPATTERNS = \[[\s\S]*?\n\];/);
|
|
if (!match) throw new Error('Could not extract browser antipattern registry');
|
|
code = match[0];
|
|
}
|
|
code = code.replace(/^import[\s\S]*?;\n/gm, '');
|
|
code = code.replace(/^export\s+\{[^}]*\};\n?/gm, '');
|
|
code = code.replace(/^export\s+\{[\s\S]*?^};\n?/gm, '');
|
|
return `// --- ${relPath} ---\n${code.trim()}\n`;
|
|
}
|
|
|
|
export function bundleBrowserDetectorModules(root) {
|
|
return BROWSER_DETECTOR_MODULES
|
|
.map((relPath) => browserSafeModule(root, relPath))
|
|
.join('\n');
|
|
}
|