fix(ROUTING-0001): repair repo routing and isolate MCP filtering
This commit is contained in:
79
scripts/build.mjs
Normal file
79
scripts/build.mjs
Normal file
@@ -0,0 +1,79 @@
|
||||
import { mkdir, readdir, rename } from 'node:fs/promises';
|
||||
import { basename, dirname, join } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { spawn } from 'node:child_process';
|
||||
|
||||
const rootDir = dirname(dirname(fileURLToPath(import.meta.url)));
|
||||
const routesDir = join(rootDir, 'src', 'routes');
|
||||
const renamedRouteTestFiles = [];
|
||||
|
||||
async function collectReservedRouteTestFiles(directory) {
|
||||
const entries = await readdir(directory, { withFileTypes: true });
|
||||
const files = [];
|
||||
|
||||
for (const entry of entries) {
|
||||
const entryPath = join(directory, entry.name);
|
||||
|
||||
if (entry.isDirectory()) {
|
||||
files.push(...(await collectReservedRouteTestFiles(entryPath)));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!entry.name.startsWith('+')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!entry.name.includes('.test.') && !entry.name.includes('.spec.')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
files.push(entryPath);
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
async function renameReservedRouteTests() {
|
||||
const reservedRouteTestFiles = await collectReservedRouteTestFiles(routesDir);
|
||||
|
||||
for (const sourcePath of reservedRouteTestFiles) {
|
||||
const targetPath = join(dirname(sourcePath), basename(sourcePath).slice(1));
|
||||
await rename(sourcePath, targetPath);
|
||||
renamedRouteTestFiles.push({ sourcePath, targetPath });
|
||||
}
|
||||
}
|
||||
|
||||
async function restoreReservedRouteTests() {
|
||||
for (const { sourcePath, targetPath } of renamedRouteTestFiles.reverse()) {
|
||||
await mkdir(dirname(sourcePath), { recursive: true });
|
||||
await rename(targetPath, sourcePath);
|
||||
}
|
||||
}
|
||||
|
||||
function runViteBuild() {
|
||||
const viteBinPath = join(rootDir, 'node_modules', 'vite', 'bin', 'vite.js');
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const child = spawn(process.execPath, [viteBinPath, 'build'], {
|
||||
cwd: rootDir,
|
||||
stdio: 'inherit'
|
||||
});
|
||||
|
||||
child.once('error', reject);
|
||||
child.once('exit', (code) => {
|
||||
if (code === 0) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
reject(new Error(`vite build exited with code ${code ?? 'unknown'}`));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
await renameReservedRouteTests();
|
||||
await runViteBuild();
|
||||
} finally {
|
||||
await restoreReservedRouteTests();
|
||||
}
|
||||
Reference in New Issue
Block a user