{"version":3,"file":"audit.cjs","names":["Effect","checkRoutes","checkRouteGuards","checkConfig","scanImports","readConfigKeys","checkUiSeam","readRouterSeam","Finding","buildManifest"],"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,eACpBA,cAAO,IAAI,aAAa;CACtB,MAAM,CACJ,eACA,eACA,gBACA,gBACA,YACA,gBACA,cACE,OAAOA,cAAO,IAAI;EACpBC,2BAAY,UAAU;EACtBC,sCAAiB,UAAU;EAC3BC,2BAAY,UAAU;EACtBC,4BAAY,UAAU;EACtBC,gCAAe,UAAU;EACzBC,4BAAY,UAAU;EACtBC,+BAAe,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,IAAIC,uBAAQ;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,iBAVDC,+BACtB,YACA,MACA,SAAS,QACT,MAAM,QACN,gBACA,YACA,UACF;CAEkC;AACpC,CAAC"}