everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
1 lines • 3.59 kB
Source Map (JSON)
{"version":3,"file":"audit.mjs","names":[],"sources":["../../../../src/services/scaffold/upgrade-audit/audit.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { checkConfig } from \"./checks/config\";\nimport { scanImports } from \"./checks/imports\";\nimport { checkRouteGuards } from \"./checks/route-guards\";\nimport { checkRoutes } from \"./checks/routes\";\nimport { checkUiSeam, readRouterSeam } from \"./checks/ui-seam\";\nimport { type AuditReport, Finding } from \"./domain\";\nimport { buildManifest, readConfigKeys } from \"./manifest\";\n\nexport const audit = (projectDir: string): Effect.Effect<AuditReport, Error> =>\n Effect.gen(function* () {\n const [\n routeFindings,\n guardFindings,\n configFindings,\n importRewrites,\n configKeys,\n uiSeamFindings,\n routerSeam,\n ] = yield* Effect.all([\n checkRoutes(projectDir),\n checkRouteGuards(projectDir),\n checkConfig(projectDir),\n scanImports(projectDir),\n readConfigKeys(projectDir),\n checkUiSeam(projectDir),\n readRouterSeam(projectDir),\n ]);\n\n const findings: Finding[] = [\n ...routeFindings,\n ...guardFindings,\n ...configFindings,\n ...uiSeamFindings,\n ...importRewrites.flatMap((rewrite) =>\n rewrite.files.length === 0\n ? []\n : [\n new Finding({\n check: \"imports\",\n path: rewrite.files.join(\", \"),\n severity: \"warn\",\n message: `legacy import \"${rewrite.from}\" — rewrite to \"${rewrite.to}\"`,\n }),\n ],\n ),\n ];\n\n const blockers = findings.filter((f) => f.severity === \"blocker\");\n const warns = findings.filter((f) => f.severity === \"warn\");\n const tier = blockers.length === 0 ? \"A\" : \"B\";\n\n const manifest = yield* buildManifest(\n projectDir,\n tier,\n blockers.length,\n warns.length,\n importRewrites,\n configKeys,\n routerSeam,\n );\n\n return { tier, findings, manifest } satisfies AuditReport;\n });\n\nconst formatFinding = (finding: Finding): string =>\n ` [${finding.severity}] ${finding.check} ${finding.path}: ${finding.message}`;\n\nexport const printReport = (report: AuditReport): void => {\n const blockers = report.findings.filter((f) => f.severity === \"blocker\");\n const warns = report.findings.filter((f) => f.severity === \"warn\");\n console.log(`\\nv2 upgrade audit — Tier ${report.tier}`);\n console.log(` blockers: ${blockers.length}, warns: ${warns.length}`);\n for (const blocker of blockers) console.log(formatFinding(blocker));\n for (const warn of warns) console.log(formatFinding(warn));\n console.log(\"\\nmanifest:\");\n console.log(JSON.stringify(report.manifest, null, 2));\n};\n"],"mappings":";;;;;;;;;;AASA,MAAa,SAAS,eACpB,OAAO,IAAI,aAAa;CACtB,MAAM,CACJ,eACA,eACA,gBACA,gBACA,YACA,gBACA,cACE,OAAO,OAAO,IAAI;EACpB,YAAY,UAAU;EACtB,iBAAiB,UAAU;EAC3B,YAAY,UAAU;EACtB,YAAY,UAAU;EACtB,eAAe,UAAU;EACzB,YAAY,UAAU;EACtB,eAAe,UAAU;CAC3B,CAAC;CAED,MAAM,WAAsB;EAC1B,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG,eAAe,SAAS,YACzB,QAAQ,MAAM,WAAW,IACrB,CAAC,IACD,CACE,IAAI,QAAQ;GACV,OAAO;GACP,MAAM,QAAQ,MAAM,KAAK,IAAI;GAC7B,UAAU;GACV,SAAS,kBAAkB,QAAQ,KAAK,kBAAkB,QAAQ,GAAG;EACvE,CAAC,CACH,CACN;CACF;CAEA,MAAM,WAAW,SAAS,QAAQ,MAAM,EAAE,aAAa,SAAS;CAChE,MAAM,QAAQ,SAAS,QAAQ,MAAM,EAAE,aAAa,MAAM;CAC1D,MAAM,OAAO,SAAS,WAAW,IAAI,MAAM;CAY3C,OAAO;EAAE;EAAM;EAAU,iBAVD,cACtB,YACA,MACA,SAAS,QACT,MAAM,QACN,gBACA,YACA,UACF;CAEkC;AACpC,CAAC"}