UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

65 lines (63 loc) • 2.79 kB
const require_domain = require('../domain.cjs'); const require_fs = require('../fs.cjs'); let effect = require("effect"); //#region src/services/scaffold/upgrade-audit/checks/ui-seam.ts const ROUTER_PATH = "ui/src/router.tsx"; const APP_PATH = "ui/src/app.ts"; const AUTHORED_SEAM_RE = /everything-dev\/ui\/router-client/; const MONOLITHIC_RE = /createTanStackRouter\s*\(/; const detectRouterSeam = (source) => { if (AUTHORED_SEAM_RE.test(source)) return "authored-seam"; if (MONOLITHIC_RE.test(source)) return "monolithic"; return "unknown"; }; const readRouterSeam = (projectDir) => effect.Effect.gen(function* () { if (!(yield* require_fs.fileExists(projectDir, ROUTER_PATH))) return "absent"; return detectRouterSeam(yield* require_fs.readText(projectDir, ROUTER_PATH)); }); const hasExport = (source, name) => new RegExp(`export\\s+(?:const|function)\\s+${name}\\b`).test(source); const checkUiSeam = (projectDir) => effect.Effect.gen(function* () { const findings = []; const routerSeam = yield* readRouterSeam(projectDir); if (routerSeam === "absent") findings.push(new require_domain.Finding({ check: "ui-seam", path: ROUTER_PATH, severity: "warn", message: "ui/src/router.tsx not found — the authored router seam (ADR 0023) is required by the generated hydrate/SSR stubs" })); if (routerSeam === "monolithic") findings.push(new require_domain.Finding({ check: "ui-seam", path: ROUTER_PATH, severity: "warn", message: "pre-ADR-0023 monolithic router factory — drops the composed manifest tree (opts.routeTree); apply migrates it to the createCoreRouter authored seam" })); if (routerSeam === "unknown") findings.push(new require_domain.Finding({ check: "ui-seam", path: ROUTER_PATH, severity: "warn", message: "ui/src/router.tsx is neither the authored seam nor the known monolithic factory — inspect manually; apply will not touch it" })); if (!(yield* require_fs.fileExists(projectDir, APP_PATH))) { findings.push(new require_domain.Finding({ check: "ui-seam", path: APP_PATH, severity: "warn", message: "ui/src/app.ts not found — the @/app public surface is required by the generated stubs" })); return findings; } const appSource = yield* require_fs.readText(projectDir, APP_PATH); const missing = ["appLocale", "apiConnectionError"].filter((name) => !hasExport(appSource, name)); if (missing.length > 0) findings.push(new require_domain.Finding({ check: "ui-seam", path: APP_PATH, severity: "warn", message: `app surface is missing bootstrap overrides the generated stubs read: ${missing.join(", ")}` })); return findings; }); //#endregion exports.checkUiSeam = checkUiSeam; exports.detectRouterSeam = detectRouterSeam; exports.readRouterSeam = readRouterSeam; //# sourceMappingURL=ui-seam.cjs.map