@prisma/orm-toolchain 8.0.0-rc.1-dev.28 → 8.0.0-rc.1-dev.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/bin__prisma-next.mjs +24 -24
  2. package/dist/bin__prisma-next.mjs.map +1 -1
  3. package/dist/cli.d.mts +2 -2
  4. package/dist/cli.mjs +253 -89
  5. package/dist/cli.mjs.map +1 -1
  6. package/dist/cli__commands__contract-emit.mjs +1 -1
  7. package/dist/cli__commands__contract-infer.mjs +1 -1
  8. package/dist/cli__commands__db-init.mjs +1 -1
  9. package/dist/cli__commands__db-schema.mjs +1 -1
  10. package/dist/cli__commands__db-sign.mjs +1 -1
  11. package/dist/cli__commands__db-update.mjs +1 -1
  12. package/dist/cli__commands__db-verify.mjs +1 -1
  13. package/dist/cli__commands__migrate.mjs +1 -1
  14. package/dist/cli__commands__migration-check.mjs +1 -1
  15. package/dist/cli__commands__migration-graph.d.mts.map +1 -1
  16. package/dist/cli__commands__migration-graph.mjs +1 -1
  17. package/dist/cli__commands__migration-list.mjs +1 -1
  18. package/dist/cli__commands__migration-log.mjs +1 -1
  19. package/dist/cli__commands__migration-new.mjs +1 -1
  20. package/dist/cli__commands__migration-plan.mjs +1 -1
  21. package/dist/cli__commands__migration-show.mjs +1 -1
  22. package/dist/cli__commands__migration-status.mjs +1 -1
  23. package/dist/cli__commands__ref.mjs +1 -1
  24. package/dist/cli__commands__telemetry.mjs +1 -1
  25. package/dist/cli__control-api.d.mts +14 -13
  26. package/dist/cli__control-api.d.mts.map +1 -1
  27. package/dist/cli__control-api.mjs +9 -9
  28. package/dist/{client-CaIWFVnh-PVaTEvdx.mjs → client-DLPcSdv7-Cukdon0q.mjs} +3 -3
  29. package/dist/{client-CaIWFVnh-PVaTEvdx.mjs.map → client-DLPcSdv7-Cukdon0q.mjs.map} +1 -1
  30. package/dist/{command-helpers-DutQjYgy-CDfFwtAa.mjs → command-helpers-uzQbbM97-EaL4zWf5.mjs} +3 -3
  31. package/dist/{command-helpers-DutQjYgy-CDfFwtAa.mjs.map → command-helpers-uzQbbM97-EaL4zWf5.mjs.map} +1 -1
  32. package/dist/{contract-emit-BJDLPMxp-qaGmQUQr.mjs → contract-emit-D-vxAjLQ-DjSGIBvi.mjs} +4 -4
  33. package/dist/{contract-emit-BJDLPMxp-qaGmQUQr.mjs.map → contract-emit-D-vxAjLQ-DjSGIBvi.mjs.map} +1 -1
  34. package/dist/{contract-infer-B929dnCJ-KkT9frLY.mjs → contract-infer-ButdiRXM-9KdWYvza.mjs} +5 -5
  35. package/dist/{contract-infer-B929dnCJ-KkT9frLY.mjs.map → contract-infer-ButdiRXM-9KdWYvza.mjs.map} +1 -1
  36. package/dist/{contract-snapshot-resolution-D2f9kGs0-BenF4tbi.mjs → contract-snapshot-resolution-RIn-ByLW-BRTjU_01.mjs} +3 -3
  37. package/dist/{contract-snapshot-resolution-D2f9kGs0-BenF4tbi.mjs.map → contract-snapshot-resolution-RIn-ByLW-BRTjU_01.mjs.map} +1 -1
  38. package/dist/{contract-space-aggregate-loader-sF0OJ6oz-jRjdZoyZ.mjs → contract-space-aggregate-loader-Cd0X2M_C-CFBkD540.mjs} +3 -3
  39. package/dist/{contract-space-aggregate-loader-sF0OJ6oz-jRjdZoyZ.mjs.map → contract-space-aggregate-loader-Cd0X2M_C-CFBkD540.mjs.map} +1 -1
  40. package/dist/{db-init-CU_x-p2M-_6oEFLiG.mjs → db-init-BO7P4kCG-CftJygKc.mjs} +5 -5
  41. package/dist/{db-init-CU_x-p2M-_6oEFLiG.mjs.map → db-init-BO7P4kCG-CftJygKc.mjs.map} +1 -1
  42. package/dist/{db-schema-BKAn8UrM-DP4k7BAB.mjs → db-schema-6CB4Rljf-VFKrJ3VO.mjs} +6 -6
  43. package/dist/{db-schema-BKAn8UrM-DP4k7BAB.mjs.map → db-schema-6CB4Rljf-VFKrJ3VO.mjs.map} +1 -1
  44. package/dist/{db-sign-BQF-jVXg-D467Bhpj.mjs → db-sign-CkX4HXCx-B0mTmQ5a.mjs} +7 -7
  45. package/dist/{db-sign-BQF-jVXg-D467Bhpj.mjs.map → db-sign-CkX4HXCx-B0mTmQ5a.mjs.map} +1 -1
  46. package/dist/{db-update-B0_Q4ykE-CT9vcaMu.mjs → db-update-fAeM1XbT-B5XoGE92.mjs} +6 -6
  47. package/dist/{db-update-B0_Q4ykE-CT9vcaMu.mjs.map → db-update-fAeM1XbT-B5XoGE92.mjs.map} +1 -1
  48. package/dist/{db-verify-C0DJc8z6-f3gZeEMD.mjs → db-verify-_flf8M9q-BD-mhGC1.mjs} +6 -6
  49. package/dist/{db-verify-C0DJc8z6-f3gZeEMD.mjs.map → db-verify-_flf8M9q-BD-mhGC1.mjs.map} +1 -1
  50. package/dist/{format-SYdHyutg-IqXk-tDV.mjs → format-DZ7Vowat-CXVeLGp_.mjs} +4 -4
  51. package/dist/{format-SYdHyutg-IqXk-tDV.mjs.map → format-DZ7Vowat-CXVeLGp_.mjs.map} +1 -1
  52. package/dist/{init-DXx66xTA-BkK1aEw0.mjs → init-Cej3fMLO-BCRVDzA4.mjs} +3 -3
  53. package/dist/{init-DXx66xTA-BkK1aEw0.mjs.map → init-Cej3fMLO-BCRVDzA4.mjs.map} +1 -1
  54. package/dist/{inspect-live-schema-D8d7aI6a-_Q_4S5wm.mjs → inspect-live-schema-Do1dDQxw-DBSSeLrX.mjs} +4 -4
  55. package/dist/{inspect-live-schema-D8d7aI6a-_Q_4S5wm.mjs.map → inspect-live-schema-Do1dDQxw-DBSSeLrX.mjs.map} +1 -1
  56. package/dist/{invariants-TW5CizTS-BsIpi4h4.mjs → invariants-4d2LkjQL-Ch5J3Rd7.mjs} +3 -3
  57. package/dist/{invariants-TW5CizTS-BsIpi4h4.mjs.map → invariants-4d2LkjQL-Ch5J3Rd7.mjs.map} +1 -1
  58. package/dist/{migrate-vNMZJk7M-DKogRyOh.mjs → migrate-Bs4Mi3N0-BdbjoiNr.mjs} +9 -9
  59. package/dist/{migrate-vNMZJk7M-DKogRyOh.mjs.map → migrate-Bs4Mi3N0-BdbjoiNr.mjs.map} +1 -1
  60. package/dist/{migrate-show-C-fdCznr-BH88FGVn.mjs → migrate-show-BYZ_NAoY-DCyUeA4P.mjs} +5 -5
  61. package/dist/{migrate-show-C-fdCznr-BH88FGVn.mjs.map → migrate-show-BYZ_NAoY-DCyUeA4P.mjs.map} +1 -1
  62. package/dist/{migration-check-DATj3HSn-Del6ZSln.mjs → migration-check-ASAenQ02-B9a5jI8S.mjs} +6 -6
  63. package/dist/{migration-check-DATj3HSn-Del6ZSln.mjs.map → migration-check-ASAenQ02-B9a5jI8S.mjs.map} +1 -1
  64. package/dist/{migration-check-C-2GTAGq-Duc0P6Uo.mjs → migration-check-RlegqnJv-ZUcop5v4.mjs} +4 -4
  65. package/dist/{migration-check-C-2GTAGq-Duc0P6Uo.mjs.map → migration-check-RlegqnJv-ZUcop5v4.mjs.map} +1 -1
  66. package/dist/{migration-command-scaffold-BezR8GWB-BZFB2PC-.mjs → migration-command-scaffold-Bc5j_ehJ-BF4cqm9C.mjs} +4 -4
  67. package/dist/{migration-command-scaffold-BezR8GWB-BZFB2PC-.mjs.map → migration-command-scaffold-Bc5j_ehJ-BF4cqm9C.mjs.map} +1 -1
  68. package/dist/{migration-graph-B1mg_jel-HVG6FLD0.mjs → migration-graph-BYRfJ6pm-WucWOxZ8.mjs} +7 -7
  69. package/dist/{migration-graph-B1mg_jel-HVG6FLD0.mjs.map → migration-graph-BYRfJ6pm-WucWOxZ8.mjs.map} +1 -1
  70. package/dist/{migration-graph-command-render-BKrg6BPv-BP8Pfj4J.mjs → migration-graph-command-render-CgdHruiZ-B6V4gmUe.mjs} +321 -153
  71. package/dist/migration-graph-command-render-CgdHruiZ-B6V4gmUe.mjs.map +1 -0
  72. package/dist/{migration-graph-sections-BVqyqBHg-DAwWjIIf.mjs → migration-graph-sections-CceYWPCP-Bz8vmjNZ.mjs} +5 -3
  73. package/dist/migration-graph-sections-CceYWPCP-Bz8vmjNZ.mjs.map +1 -0
  74. package/dist/{migration-list-RSlyGyvD-KKmZtdY1.mjs → migration-list-ChJ4YC1Y-De7g_D3K.mjs} +6 -6
  75. package/dist/{migration-list-RSlyGyvD-KKmZtdY1.mjs.map → migration-list-ChJ4YC1Y-De7g_D3K.mjs.map} +1 -1
  76. package/dist/{migration-log-CBfOcyPC-DTqCL1cs.mjs → migration-log-W8xgEvD8-sVkmO78U.mjs} +7 -7
  77. package/dist/{migration-log-CBfOcyPC-DTqCL1cs.mjs.map → migration-log-W8xgEvD8-sVkmO78U.mjs.map} +1 -1
  78. package/dist/{migration-log-table-C0dSMG9T-BhBYrdka.mjs → migration-log-table-JR7fFVbE-DR2mom6h.mjs} +4 -4
  79. package/dist/{migration-log-table-C0dSMG9T-BhBYrdka.mjs.map → migration-log-table-JR7fFVbE-DR2mom6h.mjs.map} +1 -1
  80. package/dist/{migration-new-DcPO4tiw-Bew7S-bj.mjs → migration-new-BGI2g0SC-SUBmaeRN.mjs} +4 -4
  81. package/dist/{migration-new-DcPO4tiw-Bew7S-bj.mjs.map → migration-new-BGI2g0SC-SUBmaeRN.mjs.map} +1 -1
  82. package/dist/{migration-new-1LYliIXy-BK_Xz0Z6.mjs → migration-new-BHv-aJzG-Bj7aJDNX.mjs} +5 -5
  83. package/dist/{migration-new-1LYliIXy-BK_Xz0Z6.mjs.map → migration-new-BHv-aJzG-Bj7aJDNX.mjs.map} +1 -1
  84. package/dist/{migration-plan-B0z2Qpa5-6b1SJSsb.mjs → migration-plan-31dDf3Wj-_kWI5F9v.mjs} +5 -5
  85. package/dist/{migration-plan-B0z2Qpa5-6b1SJSsb.mjs.map → migration-plan-31dDf3Wj-_kWI5F9v.mjs.map} +1 -1
  86. package/dist/{migration-plan-Cb7s5Ifx-Bwa2O0Ov.mjs → migration-plan-B4ND_Xr3-CXfh2r_I.mjs} +4 -4
  87. package/dist/{migration-plan-Cb7s5Ifx-Bwa2O0Ov.mjs.map → migration-plan-B4ND_Xr3-CXfh2r_I.mjs.map} +1 -1
  88. package/dist/{migration-show-BRy1GVBE-NuwoczhZ.mjs → migration-show-CxT14RTs-Bpfd4_FB.mjs} +6 -6
  89. package/dist/{migration-show-BRy1GVBE-NuwoczhZ.mjs.map → migration-show-CxT14RTs-Bpfd4_FB.mjs.map} +1 -1
  90. package/dist/{migration-status-Dob4onB1-0YkQF25g.mjs → migration-status-gC9RLpz5-3uPzlkh_.mjs} +8 -8
  91. package/dist/{migration-status-Dob4onB1-0YkQF25g.mjs.map → migration-status-gC9RLpz5-3uPzlkh_.mjs.map} +1 -1
  92. package/dist/{ref-D9J4TNYz-Dk7HCAoq.mjs → ref-CbeIycGH-Da61MuYq.mjs} +4 -4
  93. package/dist/{ref-D9J4TNYz-Dk7HCAoq.mjs.map → ref-CbeIycGH-Da61MuYq.mjs.map} +1 -1
  94. package/dist/{ref-B643Z0CS-CoJgdv7h.mjs → ref-Dmj_cDrl-Cax2R649.mjs} +5 -5
  95. package/dist/{ref-B643Z0CS-CoJgdv7h.mjs.map → ref-Dmj_cDrl-Cax2R649.mjs.map} +1 -1
  96. package/dist/{telemetry-DFEbk6sD-BYEW2bCJ.mjs → telemetry-D4LZGV1f-C5BrCb0w.mjs} +4 -4
  97. package/dist/{telemetry-DFEbk6sD-BYEW2bCJ.mjs.map → telemetry-D4LZGV1f-C5BrCb0w.mjs.map} +1 -1
  98. package/dist/{terminal-ui-DQNCDg2u-B3PFqjB8.mjs → terminal-ui-CUZTa2vH-WvAtuIOS.mjs} +3 -10
  99. package/dist/terminal-ui-CUZTa2vH-WvAtuIOS.mjs.map +1 -0
  100. package/dist/{verify-TphNCyMu-h8vrnbud.mjs → verify-DGFra-rl-B5lkrUrV.mjs} +3 -3
  101. package/dist/{verify-TphNCyMu-h8vrnbud.mjs.map → verify-DGFra-rl-B5lkrUrV.mjs.map} +1 -1
  102. package/package.json +13 -13
  103. package/dist/migration-graph-command-render-BKrg6BPv-BP8Pfj4J.mjs.map +0 -1
  104. package/dist/migration-graph-sections-BVqyqBHg-DAwWjIIf.mjs.map +0 -1
  105. package/dist/terminal-ui-DQNCDg2u-B3PFqjB8.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"migration-check-C-2GTAGq-Duc0P6Uo.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-check-C-2GTAGq.mjs"],"sourcesContent":["import { F as chooseAction, I as runCommandAction, N as mapRefResolutionError, k as errorSpaceNotFound, p as errorInvalidSpaceId, r as errorAmbiguousMigrationRef } from \"./cli-errors-CihMAEVj.mjs\";\nimport { s as resolveContractPath } from \"./command-helpers-DutQjYgy.mjs\";\nimport { u as toDeclaredExtensionsFromRaw } from \"./contract-space-aggregate-loader-sF0OJ6oz.mjs\";\nimport { i as resolveTargetPathAcrossSpaces, n as looksLikePath, r as resolveAppTargetPath, t as findPackageByDirPath } from \"./migration-path-target-yA4h5Zc6.mjs\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { join, relative } from \"pathe\";\nimport { readFile } from \"node:fs/promises\";\nimport { createControlStack } from \"@internal/framework-components/control\";\nimport { existsSync, readdirSync, statSync } from \"node:fs\";\nimport { isValidSpaceId, listContractSpaceDirectories, spaceMigrationDirectory, spaceRefsDirectory } from \"@internal/migration-tools/spaces\";\nimport { loadContractSpaceAggregate } from \"@internal/migration-tools/aggregate\";\nimport { EMPTY_CONTRACT_HASH } from \"@internal/migration-tools/constants\";\nimport { MigrationToolsError } from \"@internal/migration-tools/errors\";\nimport { contractSnapshotDir, readContractSnapshotJson } from \"@internal/migration-tools/contract-snapshot-store\";\nimport { parseMigrationRef } from \"@internal/migration-tools/ref-resolution\";\nimport { verifyMigrationHash } from \"@internal/migration-tools/hash\";\n//#region src/control-api/operations/migration-check.ts\n/**\n* Policy core of `migration check`: per-space explicit graph checks, aggregate-integrity loading, and single-target resolution.\n*/\nfunction migrationPathRelative(cwd, dirPath) {\n\treturn relative(cwd, dirPath);\n}\nfunction migrationFileRelative(cwd, dirPath, fileName) {\n\treturn join(migrationPathRelative(cwd, dirPath), fileName);\n}\nfunction checkFileExists(space, dirPath, dirName, fileName) {\n\tif (!existsSync(join(dirPath, fileName))) return {\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_FILE_MISSING\",\n\t\twhere: migrationFileRelative(space.cwd, dirPath, fileName),\n\t\twhy: `${fileName} is missing from ${dirName}`,\n\t\tnextActions: [chooseAction(\"Re-emit the migration package, or restore it from version control\")]\n\t};\n\treturn null;\n}\n/**\n* Snapshot-store consistency check for one migration package (D6.5):\n* absent store entry is not an issue (runner independence, ADR 199 — a\n* package dir with only `migration.json` + `ops.json` is legitimate); a\n* present entry whose inner `storage.storageHash` disagrees with\n* `pkg.metadata.to` is `MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH`; an unparseable store\n* entry (or a malformed `to`) is `MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE`.\n*/\nasync function checkSnapshotConsistency(space, pkg, migrationsDir) {\n\tconst spaceId = space.spaceId;\n\tlet snapshotDir;\n\ttry {\n\t\tsnapshotDir = contractSnapshotDir(migrationsDir, pkg.metadata.to);\n\t} catch {\n\t\treturn {\n\t\t\tspace: spaceId,\n\t\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE\",\n\t\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\t\twhy: `Migration \"${pkg.dirName}\" declares to=\"${pkg.metadata.to}\", which is not a well-formed contract snapshot hash.`,\n\t\t\tnextActions: [chooseAction(\"Re-emit the migration package so migration.json declares a valid 64-hex to-hash\")]\n\t\t};\n\t}\n\tlet raw;\n\ttry {\n\t\traw = await readContractSnapshotJson(migrationsDir, pkg.metadata.to);\n\t} catch (error) {\n\t\tif (MigrationToolsError.is(error) && error.code === \"MIGRATION.CONTRACT_SNAPSHOT_MISSING\") return null;\n\t\treturn {\n\t\t\tspace: spaceId,\n\t\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE\",\n\t\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\t\twhy: `Migration \"${pkg.dirName}\" has an unparseable contract snapshot at ${snapshotDir}/contract.json.`,\n\t\t\tnextActions: [chooseAction(\"Restore migrations/snapshots/ from version control\"), chooseAction(\"Or re-run the command that produced this migration to regenerate its snapshot\")]\n\t\t};\n\t}\n\tconst snapshotHash = (raw !== null && typeof raw === \"object\" ? raw : {})[\"storage\"]?.[\"storageHash\"];\n\tif (typeof snapshotHash === \"string\" && snapshotHash !== pkg.metadata.to) return {\n\t\tspace: spaceId,\n\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH\",\n\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\twhy: `Migration \"${pkg.dirName}\" declares to=${pkg.metadata.to} but its contract snapshot has storageHash=${snapshotHash}`,\n\t\tnextActions: [chooseAction(\"Re-emit the migration package so migration.json and its contract snapshot agree\")]\n\t};\n\treturn null;\n}\n/**\n* Project the loaded {@link ContractSpaceAggregate} into the\n* {@link CheckSpace} rows the multi-space check iterates — one per on-disk\n* contract-space directory, in the aggregate's `app`-first ordering. Mirrors\n* `migration list`'s `migrationSpaceListEntriesFromAggregate`: space\n* membership matches the on-disk directories, package / ref / graph data come\n* from `aggregate.space(id)`.\n*/\nasync function enumerateCheckSpaces(aggregate, projectMigrationsDir, cwd) {\n\tconst candidateDirs = await listContractSpaceDirectories(projectMigrationsDir);\n\tconst onDiskSpaceIds = new Set(candidateDirs.filter(isValidSpaceId));\n\tconst spaces = [];\n\tfor (const space of aggregate.spaces()) {\n\t\tconst spaceId = space.spaceId;\n\t\tif (!isValidSpaceId(spaceId)) continue;\n\t\tif (!onDiskSpaceIds.has(spaceId)) continue;\n\t\tconst migrationsDir = spaceMigrationDirectory(projectMigrationsDir, spaceId);\n\t\tspaces.push({\n\t\t\tspaceId,\n\t\t\tpackages: space.packages,\n\t\t\trefs: space.refs,\n\t\t\tgraph: space.graph(),\n\t\t\tmigrationsDir,\n\t\t\trefsDir: spaceRefsDirectory(migrationsDir),\n\t\t\tprojectMigrationsDir,\n\t\t\tcwd\n\t\t});\n\t}\n\treturn spaces;\n}\nfunction checkManifestFilesPresent(space) {\n\tif (!existsSync(space.migrationsDir)) return [];\n\tconst loadedDirNames = new Set(space.packages.map((p) => p.dirName));\n\tconst failures = [];\n\tlet entries;\n\ttry {\n\t\tentries = readdirSync(space.migrationsDir);\n\t} catch {\n\t\treturn failures;\n\t}\n\tfor (const entry of entries) {\n\t\tif (entry.startsWith(\".\") || entry.startsWith(\"_\") || entry === \"refs\") continue;\n\t\tconst entryPath = join(space.migrationsDir, entry);\n\t\ttry {\n\t\t\tif (!statSync(entryPath).isDirectory()) continue;\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!loadedDirNames.has(entry)) for (const f of [\"migration.json\", \"ops.json\"]) {\n\t\t\tconst fail = checkFileExists(space, entryPath, entry, f);\n\t\t\tif (fail) failures.push(fail);\n\t\t}\n\t}\n\treturn failures;\n}\nfunction checkReachability(space) {\n\tconst allToHashes = new Set(space.packages.map((p) => p.metadata.to));\n\tconst failures = [];\n\tfor (const pkg of space.packages) if (!(pkg.metadata.from === null || allToHashes.has(pkg.metadata.from) || pkg.metadata.from === EMPTY_CONTRACT_HASH)) failures.push({\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_UNREACHABLE_MIGRATION\",\n\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\twhy: `Migration \"${pkg.dirName}\" starts from ${pkg.metadata.from} which no other migration produces`,\n\t\tnextActions: [chooseAction(\"Delete the unreachable migration\"), chooseAction(\"Or re-emit a migration that connects it to the graph\")]\n\t});\n\treturn failures;\n}\nfunction checkDanglingRefs(space) {\n\tconst failures = [];\n\tfor (const [name, entry] of Object.entries(space.refs)) if (!space.graph.nodes.has(entry.hash)) failures.push({\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_DANGLING_REF\",\n\t\twhere: relative(space.cwd, join(space.refsDir, `${name}.json`)),\n\t\twhy: `Ref \"${name}\" points at ${entry.hash} which does not exist in the migration graph`,\n\t\tnextActions: [runCommandAction(\"Point the ref at a graph node\", `prisma-next ref set ${name} <valid-hash>`), chooseAction(\"Or delete the ref\")]\n\t});\n\treturn failures;\n}\nasync function checkSpace(space) {\n\tconst snapshotFailures = await Promise.all(space.packages.map((pkg) => checkSnapshotConsistency(space, pkg, space.projectMigrationsDir)));\n\treturn [\n\t\t...checkManifestFilesPresent(space),\n\t\t...snapshotFailures.filter((f) => f !== null),\n\t\t...checkReachability(space),\n\t\t...checkDanglingRefs(space)\n\t];\n}\n/**\n* Policy core of the holistic `migration check`: validates `--space`,\n* narrows the pre-enumerated spaces, and runs the per-space explicit graph\n* checks (file-existence, snapshot consistency, reachability, dangling\n* refs), aggregating every failure into one {@link MigrationCheckResult}.\n*\n* `--space` validation mirrors `migration list`: an invalid id →\n* {@link errorInvalidSpaceId}; an id with no on-disk space →\n* {@link errorSpaceNotFound}. Both map to exit `PRECONDITION` at the shell.\n* Aggregate-integrity violations (which already span every space) are folded\n* in by the caller, not here.\n*/\nasync function runMigrationCheck(inputs) {\n\tconst { spaces, spaceFilter } = inputs;\n\tif (spaceFilter !== void 0 && !isValidSpaceId(spaceFilter)) return notOk(errorInvalidSpaceId(spaceFilter));\n\tif (spaceFilter !== void 0 && !spaces.some((s) => s.spaceId === spaceFilter)) return notOk(errorSpaceNotFound(spaceFilter, spaces.map((s) => s.spaceId).sort()));\n\tconst scopedSpaces = spaceFilter !== void 0 ? spaces.filter((s) => s.spaceId === spaceFilter) : spaces;\n\tconst failures = (await Promise.all(scopedSpaces.map(checkSpace))).flat();\n\tif (failures.length === 0) return ok({\n\t\tok: true,\n\t\tfailures: [],\n\t\tsummary: \"All checks passed\"\n\t});\n\treturn ok({\n\t\tok: false,\n\t\tfailures,\n\t\tsummary: `${failures.length} integrity failure(s)`\n\t});\n}\nasync function loadAggregateIntegrityViolations(config, migrationsDir) {\n\ttry {\n\t\tconst contractJsonContent = await readFile(resolveContractPath(config), \"utf-8\");\n\t\tconst familyInstance = config.family.create(createControlStack(config));\n\t\tconst declaredExtensions = toDeclaredExtensionsFromRaw(config.extensions ?? []);\n\t\tconst parsedAppContract = JSON.parse(contractJsonContent);\n\t\treturn (await loadContractSpaceAggregate({\n\t\t\tmigrationsDir,\n\t\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json),\n\t\t\tappContract: familyInstance.deserializeContract(parsedAppContract)\n\t\t})).checkIntegrity({\n\t\t\tdeclaredExtensions,\n\t\t\tcheckContracts: true\n\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Ranks ref-resolution failure kinds by how informative they are, so a\n* single-target check surfaces the most useful failure across spaces instead of\n* whichever space failed first. `not-found` (the input matched nothing here)\n* says the least; a malformed input, a wrong grammar, or an in-space ambiguity\n* all say more.\n*/\nfunction refFailureSpecificity(error) {\n\tswitch (error.kind) {\n\t\tcase \"wrong-grammar\": return 3;\n\t\tcase \"ambiguous\": return 2;\n\t\tcase \"invalid-format\": return 1;\n\t\tcase \"not-found\": return 0;\n\t}\n}\n/**\n* Single-target (`check <ref/path>`) mode — resolves a migration reference\n* across all contract spaces (or the one space narrowed by `--space <id>`).\n*\n* Resolution:\n* - filesystem path → find the owning space by checking which space's\n* `migrationsDir` contains the resolved path; falls back to app-relative\n* validation when the path is outside every space dir.\n* - ref → `parseMigrationRef` against each in-scope space; collect every\n* (space, package) hit; 0 hits = not-found, 1 = check it, >1 = ambiguity\n* error (qualify with `--space`).\n*\n* `--space <id>` is validated the same way the holistic path does it:\n* invalid id → `errorInvalidSpaceId`; no on-disk space → `errorSpaceNotFound`.\n*/\nasync function checkSingleTarget(target, inputs) {\n\tconst { spaces, spaceFilter, appMigrationsDir, appMigrationsRelative, cwd } = inputs;\n\tif (spaceFilter !== void 0 && !isValidSpaceId(spaceFilter)) return {\n\t\terror: errorInvalidSpaceId(spaceFilter),\n\t\texitCode: 2\n\t};\n\tif (spaceFilter !== void 0 && !spaces.some((s) => s.spaceId === spaceFilter)) return {\n\t\terror: errorSpaceNotFound(spaceFilter, spaces.map((s) => s.spaceId).sort()),\n\t\texitCode: 2\n\t};\n\tconst scopedSpaces = spaceFilter !== void 0 ? spaces.filter((s) => s.spaceId === spaceFilter) : spaces;\n\tlet matchedSpace;\n\tlet matchedPkg;\n\tif (looksLikePath(target)) {\n\t\tconst resolvedPath = resolveTargetPathAcrossSpaces(cwd, target, scopedSpaces);\n\t\tif (resolvedPath !== null) for (const space of scopedSpaces) {\n\t\t\tconst found = findPackageByDirPath(space.packages, resolvedPath);\n\t\t\tif (found) {\n\t\t\t\tmatchedSpace = space;\n\t\t\t\tmatchedPkg = found;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst resolved = resolveAppTargetPath(cwd, target, appMigrationsDir, appMigrationsRelative);\n\t\t\tif (!resolved.ok) return {\n\t\t\t\terror: resolved.failure,\n\t\t\t\texitCode: 2\n\t\t\t};\n\t\t\tconst appSpace = scopedSpaces.find((s) => s.spaceId === \"app\");\n\t\t\tif (appSpace) {\n\t\t\t\tmatchedSpace = appSpace;\n\t\t\t\tmatchedPkg = findPackageByDirPath(appSpace.packages, resolved.value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst hits = [];\n\t\tlet bestParseFailure;\n\t\tfor (const space of scopedSpaces) {\n\t\t\tconst migResult = parseMigrationRef(target, {\n\t\t\t\tgraph: space.graph,\n\t\t\t\trefs: space.refs\n\t\t\t});\n\t\t\tif (!migResult.ok) {\n\t\t\t\tif (bestParseFailure === void 0 || refFailureSpecificity(migResult.failure) > refFailureSpecificity(bestParseFailure)) bestParseFailure = migResult.failure;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst pkg = space.packages.find((p) => p.metadata.migrationHash === migResult.value.migrationHash);\n\t\t\tif (pkg) hits.push({\n\t\t\t\tspace,\n\t\t\t\tpkg\n\t\t\t});\n\t\t}\n\t\tif (hits.length > 1) return {\n\t\t\terror: errorAmbiguousMigrationRef(target, hits.map((h) => h.space.spaceId)),\n\t\t\texitCode: 2\n\t\t};\n\t\tif (hits.length === 1) {\n\t\t\tmatchedSpace = hits[0].space;\n\t\t\tmatchedPkg = hits[0].pkg;\n\t\t} else if (bestParseFailure !== void 0) return {\n\t\t\terror: mapRefResolutionError(bestParseFailure),\n\t\t\texitCode: 2\n\t\t};\n\t}\n\tif (!matchedPkg || !matchedSpace) return {\n\t\tresult: {\n\t\t\tok: false,\n\t\t\tfailures: [],\n\t\t\tsummary: `Migration package for \"${target}\" not found on disk`\n\t\t},\n\t\texitCode: 2\n\t};\n\tconst failures = [...checkManifestFilesPresent(matchedSpace)];\n\tfor (const f of [\"migration.json\", \"ops.json\"]) {\n\t\tconst fail = checkFileExists(matchedSpace, matchedPkg.dirPath, matchedPkg.dirName, f);\n\t\tif (fail) failures.push(fail);\n\t}\n\tconst verification = verifyMigrationHash(matchedPkg);\n\tif (!verification.ok) failures.push({\n\t\tspace: matchedSpace.spaceId,\n\t\tcode: \"MIGRATION.CHECK_HASH_MISMATCH\",\n\t\twhere: migrationFileRelative(matchedSpace.cwd, matchedPkg.dirPath, \"migration.json\"),\n\t\twhy: `Stored hash ${verification.storedHash} does not match recomputed hash ${verification.computedHash}`,\n\t\tnextActions: [chooseAction(\"Re-emit the migration package, or restore it from version control\")]\n\t});\n\tconst snapshotFailure = await checkSnapshotConsistency(matchedSpace, matchedPkg, matchedSpace.projectMigrationsDir);\n\tif (snapshotFailure) failures.push(snapshotFailure);\n\tconst resolvedSpaceId = matchedSpace.spaceId !== \"app\" ? matchedSpace.spaceId : void 0;\n\tif (failures.length === 0) return {\n\t\tresult: {\n\t\t\tok: true,\n\t\t\tfailures: [],\n\t\t\tsummary: \"All checks passed\"\n\t\t},\n\t\texitCode: 0,\n\t\t...ifDefined(\"resolvedSpaceId\", resolvedSpaceId)\n\t};\n\treturn {\n\t\tresult: {\n\t\t\tok: false,\n\t\t\tfailures,\n\t\t\tsummary: `${failures.length} integrity failure(s)`\n\t\t},\n\t\texitCode: 4,\n\t\t...ifDefined(\"resolvedSpaceId\", resolvedSpaceId)\n\t};\n}\n//#endregion\nexport { runMigrationCheck as i, enumerateCheckSpaces as n, loadAggregateIntegrityViolations as r, checkSingleTarget as t };\n\n//# sourceMappingURL=migration-check-C-2GTAGq.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"migration-check-RlegqnJv-ZUcop5v4.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-check-RlegqnJv.mjs"],"sourcesContent":["import { F as chooseAction, I as runCommandAction, N as mapRefResolutionError, k as errorSpaceNotFound, p as errorInvalidSpaceId, r as errorAmbiguousMigrationRef } from \"./cli-errors-CihMAEVj.mjs\";\nimport { s as resolveContractPath } from \"./command-helpers-uzQbbM97.mjs\";\nimport { u as toDeclaredExtensionsFromRaw } from \"./contract-space-aggregate-loader-Cd0X2M_C.mjs\";\nimport { i as resolveTargetPathAcrossSpaces, n as looksLikePath, r as resolveAppTargetPath, t as findPackageByDirPath } from \"./migration-path-target-yA4h5Zc6.mjs\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { join, relative } from \"pathe\";\nimport { readFile } from \"node:fs/promises\";\nimport { createControlStack } from \"@internal/framework-components/control\";\nimport { existsSync, readdirSync, statSync } from \"node:fs\";\nimport { isValidSpaceId, listContractSpaceDirectories, spaceMigrationDirectory, spaceRefsDirectory } from \"@internal/migration-tools/spaces\";\nimport { loadContractSpaceAggregate } from \"@internal/migration-tools/aggregate\";\nimport { EMPTY_CONTRACT_HASH } from \"@internal/migration-tools/constants\";\nimport { MigrationToolsError } from \"@internal/migration-tools/errors\";\nimport { contractSnapshotDir, readContractSnapshotJson } from \"@internal/migration-tools/contract-snapshot-store\";\nimport { parseMigrationRef } from \"@internal/migration-tools/ref-resolution\";\nimport { verifyMigrationHash } from \"@internal/migration-tools/hash\";\n//#region src/control-api/operations/migration-check.ts\n/**\n* Policy core of `migration check`: per-space explicit graph checks, aggregate-integrity loading, and single-target resolution.\n*/\nfunction migrationPathRelative(cwd, dirPath) {\n\treturn relative(cwd, dirPath);\n}\nfunction migrationFileRelative(cwd, dirPath, fileName) {\n\treturn join(migrationPathRelative(cwd, dirPath), fileName);\n}\nfunction checkFileExists(space, dirPath, dirName, fileName) {\n\tif (!existsSync(join(dirPath, fileName))) return {\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_FILE_MISSING\",\n\t\twhere: migrationFileRelative(space.cwd, dirPath, fileName),\n\t\twhy: `${fileName} is missing from ${dirName}`,\n\t\tnextActions: [chooseAction(\"Re-emit the migration package, or restore it from version control\")]\n\t};\n\treturn null;\n}\n/**\n* Snapshot-store consistency check for one migration package (D6.5):\n* absent store entry is not an issue (runner independence, ADR 199 — a\n* package dir with only `migration.json` + `ops.json` is legitimate); a\n* present entry whose inner `storage.storageHash` disagrees with\n* `pkg.metadata.to` is `MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH`; an unparseable store\n* entry (or a malformed `to`) is `MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE`.\n*/\nasync function checkSnapshotConsistency(space, pkg, migrationsDir) {\n\tconst spaceId = space.spaceId;\n\tlet snapshotDir;\n\ttry {\n\t\tsnapshotDir = contractSnapshotDir(migrationsDir, pkg.metadata.to);\n\t} catch {\n\t\treturn {\n\t\t\tspace: spaceId,\n\t\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE\",\n\t\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\t\twhy: `Migration \"${pkg.dirName}\" declares to=\"${pkg.metadata.to}\", which is not a well-formed contract snapshot hash.`,\n\t\t\tnextActions: [chooseAction(\"Re-emit the migration package so migration.json declares a valid 64-hex to-hash\")]\n\t\t};\n\t}\n\tlet raw;\n\ttry {\n\t\traw = await readContractSnapshotJson(migrationsDir, pkg.metadata.to);\n\t} catch (error) {\n\t\tif (MigrationToolsError.is(error) && error.code === \"MIGRATION.CONTRACT_SNAPSHOT_MISSING\") return null;\n\t\treturn {\n\t\t\tspace: spaceId,\n\t\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE\",\n\t\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\t\twhy: `Migration \"${pkg.dirName}\" has an unparseable contract snapshot at ${snapshotDir}/contract.json.`,\n\t\t\tnextActions: [chooseAction(\"Restore migrations/snapshots/ from version control\"), chooseAction(\"Or re-run the command that produced this migration to regenerate its snapshot\")]\n\t\t};\n\t}\n\tconst snapshotHash = (raw !== null && typeof raw === \"object\" ? raw : {})[\"storage\"]?.[\"storageHash\"];\n\tif (typeof snapshotHash === \"string\" && snapshotHash !== pkg.metadata.to) return {\n\t\tspace: spaceId,\n\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH\",\n\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\twhy: `Migration \"${pkg.dirName}\" declares to=${pkg.metadata.to} but its contract snapshot has storageHash=${snapshotHash}`,\n\t\tnextActions: [chooseAction(\"Re-emit the migration package so migration.json and its contract snapshot agree\")]\n\t};\n\treturn null;\n}\n/**\n* Project the loaded {@link ContractSpaceAggregate} into the\n* {@link CheckSpace} rows the multi-space check iterates — one per on-disk\n* contract-space directory, in the aggregate's `app`-first ordering. Mirrors\n* `migration list`'s `migrationSpaceListEntriesFromAggregate`: space\n* membership matches the on-disk directories, package / ref / graph data come\n* from `aggregate.space(id)`.\n*/\nasync function enumerateCheckSpaces(aggregate, projectMigrationsDir, cwd) {\n\tconst candidateDirs = await listContractSpaceDirectories(projectMigrationsDir);\n\tconst onDiskSpaceIds = new Set(candidateDirs.filter(isValidSpaceId));\n\tconst spaces = [];\n\tfor (const space of aggregate.spaces()) {\n\t\tconst spaceId = space.spaceId;\n\t\tif (!isValidSpaceId(spaceId)) continue;\n\t\tif (!onDiskSpaceIds.has(spaceId)) continue;\n\t\tconst migrationsDir = spaceMigrationDirectory(projectMigrationsDir, spaceId);\n\t\tspaces.push({\n\t\t\tspaceId,\n\t\t\tpackages: space.packages,\n\t\t\trefs: space.refs,\n\t\t\tgraph: space.graph(),\n\t\t\tmigrationsDir,\n\t\t\trefsDir: spaceRefsDirectory(migrationsDir),\n\t\t\tprojectMigrationsDir,\n\t\t\tcwd\n\t\t});\n\t}\n\treturn spaces;\n}\nfunction checkManifestFilesPresent(space) {\n\tif (!existsSync(space.migrationsDir)) return [];\n\tconst loadedDirNames = new Set(space.packages.map((p) => p.dirName));\n\tconst failures = [];\n\tlet entries;\n\ttry {\n\t\tentries = readdirSync(space.migrationsDir);\n\t} catch {\n\t\treturn failures;\n\t}\n\tfor (const entry of entries) {\n\t\tif (entry.startsWith(\".\") || entry.startsWith(\"_\") || entry === \"refs\") continue;\n\t\tconst entryPath = join(space.migrationsDir, entry);\n\t\ttry {\n\t\t\tif (!statSync(entryPath).isDirectory()) continue;\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!loadedDirNames.has(entry)) for (const f of [\"migration.json\", \"ops.json\"]) {\n\t\t\tconst fail = checkFileExists(space, entryPath, entry, f);\n\t\t\tif (fail) failures.push(fail);\n\t\t}\n\t}\n\treturn failures;\n}\nfunction checkReachability(space) {\n\tconst allToHashes = new Set(space.packages.map((p) => p.metadata.to));\n\tconst failures = [];\n\tfor (const pkg of space.packages) if (!(pkg.metadata.from === null || allToHashes.has(pkg.metadata.from) || pkg.metadata.from === EMPTY_CONTRACT_HASH)) failures.push({\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_UNREACHABLE_MIGRATION\",\n\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\twhy: `Migration \"${pkg.dirName}\" starts from ${pkg.metadata.from} which no other migration produces`,\n\t\tnextActions: [chooseAction(\"Delete the unreachable migration\"), chooseAction(\"Or re-emit a migration that connects it to the graph\")]\n\t});\n\treturn failures;\n}\nfunction checkDanglingRefs(space) {\n\tconst failures = [];\n\tfor (const [name, entry] of Object.entries(space.refs)) if (!space.graph.nodes.has(entry.hash)) failures.push({\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_DANGLING_REF\",\n\t\twhere: relative(space.cwd, join(space.refsDir, `${name}.json`)),\n\t\twhy: `Ref \"${name}\" points at ${entry.hash} which does not exist in the migration graph`,\n\t\tnextActions: [runCommandAction(\"Point the ref at a graph node\", `prisma-next ref set ${name} <valid-hash>`), chooseAction(\"Or delete the ref\")]\n\t});\n\treturn failures;\n}\nasync function checkSpace(space) {\n\tconst snapshotFailures = await Promise.all(space.packages.map((pkg) => checkSnapshotConsistency(space, pkg, space.projectMigrationsDir)));\n\treturn [\n\t\t...checkManifestFilesPresent(space),\n\t\t...snapshotFailures.filter((f) => f !== null),\n\t\t...checkReachability(space),\n\t\t...checkDanglingRefs(space)\n\t];\n}\n/**\n* Policy core of the holistic `migration check`: validates `--space`,\n* narrows the pre-enumerated spaces, and runs the per-space explicit graph\n* checks (file-existence, snapshot consistency, reachability, dangling\n* refs), aggregating every failure into one {@link MigrationCheckResult}.\n*\n* `--space` validation mirrors `migration list`: an invalid id →\n* {@link errorInvalidSpaceId}; an id with no on-disk space →\n* {@link errorSpaceNotFound}. Both map to exit `PRECONDITION` at the shell.\n* Aggregate-integrity violations (which already span every space) are folded\n* in by the caller, not here.\n*/\nasync function runMigrationCheck(inputs) {\n\tconst { spaces, spaceFilter } = inputs;\n\tif (spaceFilter !== void 0 && !isValidSpaceId(spaceFilter)) return notOk(errorInvalidSpaceId(spaceFilter));\n\tif (spaceFilter !== void 0 && !spaces.some((s) => s.spaceId === spaceFilter)) return notOk(errorSpaceNotFound(spaceFilter, spaces.map((s) => s.spaceId).sort()));\n\tconst scopedSpaces = spaceFilter !== void 0 ? spaces.filter((s) => s.spaceId === spaceFilter) : spaces;\n\tconst failures = (await Promise.all(scopedSpaces.map(checkSpace))).flat();\n\tif (failures.length === 0) return ok({\n\t\tok: true,\n\t\tfailures: [],\n\t\tsummary: \"All checks passed\"\n\t});\n\treturn ok({\n\t\tok: false,\n\t\tfailures,\n\t\tsummary: `${failures.length} integrity failure(s)`\n\t});\n}\nasync function loadAggregateIntegrityViolations(config, migrationsDir) {\n\ttry {\n\t\tconst contractJsonContent = await readFile(resolveContractPath(config), \"utf-8\");\n\t\tconst familyInstance = config.family.create(createControlStack(config));\n\t\tconst declaredExtensions = toDeclaredExtensionsFromRaw(config.extensions ?? []);\n\t\tconst parsedAppContract = JSON.parse(contractJsonContent);\n\t\treturn (await loadContractSpaceAggregate({\n\t\t\tmigrationsDir,\n\t\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json),\n\t\t\tappContract: familyInstance.deserializeContract(parsedAppContract)\n\t\t})).checkIntegrity({\n\t\t\tdeclaredExtensions,\n\t\t\tcheckContracts: true\n\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Ranks ref-resolution failure kinds by how informative they are, so a\n* single-target check surfaces the most useful failure across spaces instead of\n* whichever space failed first. `not-found` (the input matched nothing here)\n* says the least; a malformed input, a wrong grammar, or an in-space ambiguity\n* all say more.\n*/\nfunction refFailureSpecificity(error) {\n\tswitch (error.kind) {\n\t\tcase \"wrong-grammar\": return 3;\n\t\tcase \"ambiguous\": return 2;\n\t\tcase \"invalid-format\": return 1;\n\t\tcase \"not-found\": return 0;\n\t}\n}\n/**\n* Single-target (`check <ref/path>`) mode — resolves a migration reference\n* across all contract spaces (or the one space narrowed by `--space <id>`).\n*\n* Resolution:\n* - filesystem path → find the owning space by checking which space's\n* `migrationsDir` contains the resolved path; falls back to app-relative\n* validation when the path is outside every space dir.\n* - ref → `parseMigrationRef` against each in-scope space; collect every\n* (space, package) hit; 0 hits = not-found, 1 = check it, >1 = ambiguity\n* error (qualify with `--space`).\n*\n* `--space <id>` is validated the same way the holistic path does it:\n* invalid id → `errorInvalidSpaceId`; no on-disk space → `errorSpaceNotFound`.\n*/\nasync function checkSingleTarget(target, inputs) {\n\tconst { spaces, spaceFilter, appMigrationsDir, appMigrationsRelative, cwd } = inputs;\n\tif (spaceFilter !== void 0 && !isValidSpaceId(spaceFilter)) return {\n\t\terror: errorInvalidSpaceId(spaceFilter),\n\t\texitCode: 2\n\t};\n\tif (spaceFilter !== void 0 && !spaces.some((s) => s.spaceId === spaceFilter)) return {\n\t\terror: errorSpaceNotFound(spaceFilter, spaces.map((s) => s.spaceId).sort()),\n\t\texitCode: 2\n\t};\n\tconst scopedSpaces = spaceFilter !== void 0 ? spaces.filter((s) => s.spaceId === spaceFilter) : spaces;\n\tlet matchedSpace;\n\tlet matchedPkg;\n\tif (looksLikePath(target)) {\n\t\tconst resolvedPath = resolveTargetPathAcrossSpaces(cwd, target, scopedSpaces);\n\t\tif (resolvedPath !== null) for (const space of scopedSpaces) {\n\t\t\tconst found = findPackageByDirPath(space.packages, resolvedPath);\n\t\t\tif (found) {\n\t\t\t\tmatchedSpace = space;\n\t\t\t\tmatchedPkg = found;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst resolved = resolveAppTargetPath(cwd, target, appMigrationsDir, appMigrationsRelative);\n\t\t\tif (!resolved.ok) return {\n\t\t\t\terror: resolved.failure,\n\t\t\t\texitCode: 2\n\t\t\t};\n\t\t\tconst appSpace = scopedSpaces.find((s) => s.spaceId === \"app\");\n\t\t\tif (appSpace) {\n\t\t\t\tmatchedSpace = appSpace;\n\t\t\t\tmatchedPkg = findPackageByDirPath(appSpace.packages, resolved.value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst hits = [];\n\t\tlet bestParseFailure;\n\t\tfor (const space of scopedSpaces) {\n\t\t\tconst migResult = parseMigrationRef(target, {\n\t\t\t\tgraph: space.graph,\n\t\t\t\trefs: space.refs\n\t\t\t});\n\t\t\tif (!migResult.ok) {\n\t\t\t\tif (bestParseFailure === void 0 || refFailureSpecificity(migResult.failure) > refFailureSpecificity(bestParseFailure)) bestParseFailure = migResult.failure;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst pkg = space.packages.find((p) => p.metadata.migrationHash === migResult.value.migrationHash);\n\t\t\tif (pkg) hits.push({\n\t\t\t\tspace,\n\t\t\t\tpkg\n\t\t\t});\n\t\t}\n\t\tif (hits.length > 1) return {\n\t\t\terror: errorAmbiguousMigrationRef(target, hits.map((h) => h.space.spaceId)),\n\t\t\texitCode: 2\n\t\t};\n\t\tif (hits.length === 1) {\n\t\t\tmatchedSpace = hits[0].space;\n\t\t\tmatchedPkg = hits[0].pkg;\n\t\t} else if (bestParseFailure !== void 0) return {\n\t\t\terror: mapRefResolutionError(bestParseFailure),\n\t\t\texitCode: 2\n\t\t};\n\t}\n\tif (!matchedPkg || !matchedSpace) return {\n\t\tresult: {\n\t\t\tok: false,\n\t\t\tfailures: [],\n\t\t\tsummary: `Migration package for \"${target}\" not found on disk`\n\t\t},\n\t\texitCode: 2\n\t};\n\tconst failures = [...checkManifestFilesPresent(matchedSpace)];\n\tfor (const f of [\"migration.json\", \"ops.json\"]) {\n\t\tconst fail = checkFileExists(matchedSpace, matchedPkg.dirPath, matchedPkg.dirName, f);\n\t\tif (fail) failures.push(fail);\n\t}\n\tconst verification = verifyMigrationHash(matchedPkg);\n\tif (!verification.ok) failures.push({\n\t\tspace: matchedSpace.spaceId,\n\t\tcode: \"MIGRATION.CHECK_HASH_MISMATCH\",\n\t\twhere: migrationFileRelative(matchedSpace.cwd, matchedPkg.dirPath, \"migration.json\"),\n\t\twhy: `Stored hash ${verification.storedHash} does not match recomputed hash ${verification.computedHash}`,\n\t\tnextActions: [chooseAction(\"Re-emit the migration package, or restore it from version control\")]\n\t});\n\tconst snapshotFailure = await checkSnapshotConsistency(matchedSpace, matchedPkg, matchedSpace.projectMigrationsDir);\n\tif (snapshotFailure) failures.push(snapshotFailure);\n\tconst resolvedSpaceId = matchedSpace.spaceId !== \"app\" ? matchedSpace.spaceId : void 0;\n\tif (failures.length === 0) return {\n\t\tresult: {\n\t\t\tok: true,\n\t\t\tfailures: [],\n\t\t\tsummary: \"All checks passed\"\n\t\t},\n\t\texitCode: 0,\n\t\t...ifDefined(\"resolvedSpaceId\", resolvedSpaceId)\n\t};\n\treturn {\n\t\tresult: {\n\t\t\tok: false,\n\t\t\tfailures,\n\t\t\tsummary: `${failures.length} integrity failure(s)`\n\t\t},\n\t\texitCode: 4,\n\t\t...ifDefined(\"resolvedSpaceId\", resolvedSpaceId)\n\t};\n}\n//#endregion\nexport { runMigrationCheck as i, enumerateCheckSpaces as n, loadAggregateIntegrityViolations as r, checkSingleTarget as t };\n\n//# sourceMappingURL=migration-check-RlegqnJv.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,SAAS,sBAAsB,KAAK,SAAS;CAC5C,OAAO,SAAS,KAAK,OAAO;AAC7B;AACA,SAAS,sBAAsB,KAAK,SAAS,UAAU;CACtD,OAAO,KAAK,sBAAsB,KAAK,OAAO,GAAG,QAAQ;AAC1D;AACA,SAAS,gBAAgB,OAAO,SAAS,SAAS,UAAU;CAC3D,IAAI,CAAC,WAAW,KAAK,SAAS,QAAQ,CAAC,GAAG,OAAO;EAChD,OAAO,MAAM;EACb,MAAM;EACN,OAAO,sBAAsB,MAAM,KAAK,SAAS,QAAQ;EACzD,KAAK,GAAG,SAAS,mBAAmB;EACpC,aAAa,CAAC,aAAa,mEAAmE,CAAC;CAChG;CACA,OAAO;AACR;;;;;;;;;AASA,eAAe,yBAAyB,OAAO,KAAK,eAAe;CAClE,MAAM,UAAU,MAAM;CACtB,IAAI;CACJ,IAAI;EACH,cAAc,oBAAoB,eAAe,IAAI,SAAS,EAAE;CACjE,QAAQ;EACP,OAAO;GACN,OAAO;GACP,MAAM;GACN,OAAO,sBAAsB,MAAM,KAAK,IAAI,OAAO;GACnD,KAAK,cAAc,IAAI,QAAQ,iBAAiB,IAAI,SAAS,GAAG;GAChE,aAAa,CAAC,aAAa,iFAAiF,CAAC;EAC9G;CACD;CACA,IAAI;CACJ,IAAI;EACH,MAAM,MAAM,yBAAyB,eAAe,IAAI,SAAS,EAAE;CACpE,SAAS,OAAO;EACf,IAAI,oBAAoB,GAAG,KAAK,KAAK,MAAM,SAAS,uCAAuC,OAAO;EAClG,OAAO;GACN,OAAO;GACP,MAAM;GACN,OAAO,sBAAsB,MAAM,KAAK,IAAI,OAAO;GACnD,KAAK,cAAc,IAAI,QAAQ,4CAA4C,YAAY;GACvF,aAAa,CAAC,aAAa,oDAAoD,GAAG,aAAa,+EAA+E,CAAC;EAChL;CACD;CACA,MAAM,gBAAgB,QAAQ,QAAQ,OAAO,QAAQ,WAAW,MAAM,CAAC,EAAA,CAAG,UAAU,GAAG;CACvF,IAAI,OAAO,iBAAiB,YAAY,iBAAiB,IAAI,SAAS,IAAI,OAAO;EAChF,OAAO;EACP,MAAM;EACN,OAAO,sBAAsB,MAAM,KAAK,IAAI,OAAO;EACnD,KAAK,cAAc,IAAI,QAAQ,gBAAgB,IAAI,SAAS,GAAG,6CAA6C;EAC5G,aAAa,CAAC,aAAa,iFAAiF,CAAC;CAC9G;CACA,OAAO;AACR;;;;;;;;;AASA,eAAe,qBAAqB,WAAW,sBAAsB,KAAK;CACzE,MAAM,gBAAgB,MAAM,6BAA6B,oBAAoB;CAC7E,MAAM,iBAAiB,IAAI,IAAI,cAAc,OAAO,cAAc,CAAC;CACnE,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,SAAS,UAAU,OAAO,GAAG;EACvC,MAAM,UAAU,MAAM;EACtB,IAAI,CAAC,eAAe,OAAO,GAAG;EAC9B,IAAI,CAAC,eAAe,IAAI,OAAO,GAAG;EAClC,MAAM,gBAAgB,wBAAwB,sBAAsB,OAAO;EAC3E,OAAO,KAAK;GACX;GACA,UAAU,MAAM;GAChB,MAAM,MAAM;GACZ,OAAO,MAAM,MAAM;GACnB;GACA,SAAS,mBAAmB,aAAa;GACzC;GACA;EACD,CAAC;CACF;CACA,OAAO;AACR;AACA,SAAS,0BAA0B,OAAO;CACzC,IAAI,CAAC,WAAW,MAAM,aAAa,GAAG,OAAO,CAAC;CAC9C,MAAM,iBAAiB,IAAI,IAAI,MAAM,SAAS,KAAK,MAAM,EAAE,OAAO,CAAC;CACnE,MAAM,WAAW,CAAC;CAClB,IAAI;CACJ,IAAI;EACH,UAAU,YAAY,MAAM,aAAa;CAC1C,QAAQ;EACP,OAAO;CACR;CACA,KAAK,MAAM,SAAS,SAAS;EAC5B,IAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG,KAAK,UAAU,QAAQ;EACxE,MAAM,YAAY,KAAK,MAAM,eAAe,KAAK;EACjD,IAAI;GACH,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,YAAY,GAAG;EACzC,QAAQ;GACP;EACD;EACA,IAAI,CAAC,eAAe,IAAI,KAAK,GAAG,KAAK,MAAM,KAAK,CAAC,kBAAkB,UAAU,GAAG;GAC/E,MAAM,OAAO,gBAAgB,OAAO,WAAW,OAAO,CAAC;GACvD,IAAI,MAAM,SAAS,KAAK,IAAI;EAC7B;CACD;CACA,OAAO;AACR;AACA,SAAS,kBAAkB,OAAO;CACjC,MAAM,cAAc,IAAI,IAAI,MAAM,SAAS,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC;CACpE,MAAM,WAAW,CAAC;CAClB,KAAK,MAAM,OAAO,MAAM,UAAU,IAAI,EAAE,IAAI,SAAS,SAAS,QAAQ,YAAY,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,SAAA,UAA+B,SAAS,KAAK;EACrK,OAAO,MAAM;EACb,MAAM;EACN,OAAO,sBAAsB,MAAM,KAAK,IAAI,OAAO;EACnD,KAAK,cAAc,IAAI,QAAQ,gBAAgB,IAAI,SAAS,KAAK;EACjE,aAAa,CAAC,aAAa,kCAAkC,GAAG,aAAa,sDAAsD,CAAC;CACrI,CAAC;CACD,OAAO;AACR;AACA,SAAS,kBAAkB,OAAO;CACjC,MAAM,WAAW,CAAC;CAClB,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,MAAM,MAAM,IAAI,MAAM,IAAI,GAAG,SAAS,KAAK;EAC7G,OAAO,MAAM;EACb,MAAM;EACN,OAAO,SAAS,MAAM,KAAK,KAAK,MAAM,SAAS,GAAG,KAAK,MAAM,CAAC;EAC9D,KAAK,QAAQ,KAAK,cAAc,MAAM,KAAK;EAC3C,aAAa,CAAC,iBAAiB,iCAAiC,uBAAuB,KAAK,cAAc,GAAG,aAAa,mBAAmB,CAAC;CAC/I,CAAC;CACD,OAAO;AACR;AACA,eAAe,WAAW,OAAO;CAChC,MAAM,mBAAmB,MAAM,QAAQ,IAAI,MAAM,SAAS,KAAK,QAAQ,yBAAyB,OAAO,KAAK,MAAM,oBAAoB,CAAC,CAAC;CACxI,OAAO;EACN,GAAG,0BAA0B,KAAK;EAClC,GAAG,iBAAiB,QAAQ,MAAM,MAAM,IAAI;EAC5C,GAAG,kBAAkB,KAAK;EAC1B,GAAG,kBAAkB,KAAK;CAC3B;AACD;;;;;;;;;;;;;AAaA,eAAe,kBAAkB,QAAQ;CACxC,MAAM,EAAE,QAAQ,gBAAgB;CAChC,IAAI,gBAAgB,KAAK,KAAK,CAAC,eAAe,WAAW,GAAG,OAAO,MAAM,oBAAoB,WAAW,CAAC;CACzG,IAAI,gBAAgB,KAAK,KAAK,CAAC,OAAO,MAAM,MAAM,EAAE,YAAY,WAAW,GAAG,OAAO,MAAM,mBAAmB,aAAa,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/J,MAAM,eAAe,gBAAgB,KAAK,IAAI,OAAO,QAAQ,MAAM,EAAE,YAAY,WAAW,IAAI;CAChG,MAAM,YAAY,MAAM,QAAQ,IAAI,aAAa,IAAI,UAAU,CAAC,EAAA,CAAG,KAAK;CACxE,IAAI,SAAS,WAAW,GAAG,OAAO,GAAG;EACpC,IAAI;EACJ,UAAU,CAAC;EACX,SAAS;CACV,CAAC;CACD,OAAO,GAAG;EACT,IAAI;EACJ;EACA,SAAS,GAAG,SAAS,OAAO;CAC7B,CAAC;AACF;AACA,eAAe,iCAAiC,QAAQ,eAAe;CACtE,IAAI;EACH,MAAM,sBAAsB,MAAM,SAAS,oBAAoB,MAAM,GAAG,OAAO;EAC/E,MAAM,iBAAiB,OAAO,OAAO,OAAO,mBAAmB,MAAM,CAAC;EACtE,MAAM,qBAAqB,4BAA4B,OAAO,cAAc,CAAC,CAAC;EAC9E,MAAM,oBAAoB,KAAK,MAAM,mBAAmB;EACxD,QAAQ,MAAM,2BAA2B;GACxC;GACA,sBAAsB,SAAS,eAAe,oBAAoB,IAAI;GACtE,aAAa,eAAe,oBAAoB,iBAAiB;EAClE,CAAC,EAAA,CAAG,eAAe;GAClB;GACA,gBAAgB;EACjB,CAAC;CACF,QAAQ;EACP,OAAO,CAAC;CACT;AACD;;;;;;;;AAQA,SAAS,sBAAsB,OAAO;CACrC,QAAQ,MAAM,MAAd;EACC,KAAK,iBAAiB,OAAO;EAC7B,KAAK,aAAa,OAAO;EACzB,KAAK,kBAAkB,OAAO;EAC9B,KAAK,aAAa,OAAO;CAC1B;AACD;;;;;;;;;;;;;;;;AAgBA,eAAe,kBAAkB,QAAQ,QAAQ;CAChD,MAAM,EAAE,QAAQ,aAAa,kBAAkB,uBAAuB,QAAQ;CAC9E,IAAI,gBAAgB,KAAK,KAAK,CAAC,eAAe,WAAW,GAAG,OAAO;EAClE,OAAO,oBAAoB,WAAW;EACtC,UAAU;CACX;CACA,IAAI,gBAAgB,KAAK,KAAK,CAAC,OAAO,MAAM,MAAM,EAAE,YAAY,WAAW,GAAG,OAAO;EACpF,OAAO,mBAAmB,aAAa,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;EAC1E,UAAU;CACX;CACA,MAAM,eAAe,gBAAgB,KAAK,IAAI,OAAO,QAAQ,MAAM,EAAE,YAAY,WAAW,IAAI;CAChG,IAAI;CACJ,IAAI;CACJ,IAAI,cAAc,MAAM,GAAG;EAC1B,MAAM,eAAe,8BAA8B,KAAK,QAAQ,YAAY;EAC5E,IAAI,iBAAiB,MAAM,KAAK,MAAM,SAAS,cAAc;GAC5D,MAAM,QAAQ,qBAAqB,MAAM,UAAU,YAAY;GAC/D,IAAI,OAAO;IACV,eAAe;IACf,aAAa;IACb;GACD;EACD;OACK;GACJ,MAAM,WAAW,qBAAqB,KAAK,QAAQ,kBAAkB,qBAAqB;GAC1F,IAAI,CAAC,SAAS,IAAI,OAAO;IACxB,OAAO,SAAS;IAChB,UAAU;GACX;GACA,MAAM,WAAW,aAAa,MAAM,MAAM,EAAE,YAAY,KAAK;GAC7D,IAAI,UAAU;IACb,eAAe;IACf,aAAa,qBAAqB,SAAS,UAAU,SAAS,KAAK;GACpE;EACD;CACD,OAAO;EACN,MAAM,OAAO,CAAC;EACd,IAAI;EACJ,KAAK,MAAM,SAAS,cAAc;GACjC,MAAM,YAAY,kBAAkB,QAAQ;IAC3C,OAAO,MAAM;IACb,MAAM,MAAM;GACb,CAAC;GACD,IAAI,CAAC,UAAU,IAAI;IAClB,IAAI,qBAAqB,KAAK,KAAK,sBAAsB,UAAU,OAAO,IAAI,sBAAsB,gBAAgB,GAAG,mBAAmB,UAAU;IACpJ;GACD;GACA,MAAM,MAAM,MAAM,SAAS,MAAM,MAAM,EAAE,SAAS,kBAAkB,UAAU,MAAM,aAAa;GACjG,IAAI,KAAK,KAAK,KAAK;IAClB;IACA;GACD,CAAC;EACF;EACA,IAAI,KAAK,SAAS,GAAG,OAAO;GAC3B,OAAO,2BAA2B,QAAQ,KAAK,KAAK,MAAM,EAAE,MAAM,OAAO,CAAC;GAC1E,UAAU;EACX;EACA,IAAI,KAAK,WAAW,GAAG;GACtB,eAAe,KAAK,EAAE,CAAC;GACvB,aAAa,KAAK,EAAE,CAAC;EACtB,OAAO,IAAI,qBAAqB,KAAK,GAAG,OAAO;GAC9C,OAAO,sBAAsB,gBAAgB;GAC7C,UAAU;EACX;CACD;CACA,IAAI,CAAC,cAAc,CAAC,cAAc,OAAO;EACxC,QAAQ;GACP,IAAI;GACJ,UAAU,CAAC;GACX,SAAS,0BAA0B,OAAO;EAC3C;EACA,UAAU;CACX;CACA,MAAM,WAAW,CAAC,GAAG,0BAA0B,YAAY,CAAC;CAC5D,KAAK,MAAM,KAAK,CAAC,kBAAkB,UAAU,GAAG;EAC/C,MAAM,OAAO,gBAAgB,cAAc,WAAW,SAAS,WAAW,SAAS,CAAC;EACpF,IAAI,MAAM,SAAS,KAAK,IAAI;CAC7B;CACA,MAAM,eAAe,oBAAoB,UAAU;CACnD,IAAI,CAAC,aAAa,IAAI,SAAS,KAAK;EACnC,OAAO,aAAa;EACpB,MAAM;EACN,OAAO,sBAAsB,aAAa,KAAK,WAAW,SAAS,gBAAgB;EACnF,KAAK,eAAe,aAAa,WAAW,kCAAkC,aAAa;EAC3F,aAAa,CAAC,aAAa,mEAAmE,CAAC;CAChG,CAAC;CACD,MAAM,kBAAkB,MAAM,yBAAyB,cAAc,YAAY,aAAa,oBAAoB;CAClH,IAAI,iBAAiB,SAAS,KAAK,eAAe;CAClD,MAAM,kBAAkB,aAAa,YAAY,QAAQ,aAAa,UAAU,KAAK;CACrF,IAAI,SAAS,WAAW,GAAG,OAAO;EACjC,QAAQ;GACP,IAAI;GACJ,UAAU,CAAC;GACX,SAAS;EACV;EACA,UAAU;EACV,GAAG,UAAU,mBAAmB,eAAe;CAChD;CACA,OAAO;EACN,QAAQ;GACP,IAAI;GACJ;GACA,SAAS,GAAG,SAAS,OAAO;EAC7B;EACA,UAAU;EACV,GAAG,UAAU,mBAAmB,eAAe;CAChD;AACD"}
@@ -1,13 +1,13 @@
1
1
  import { o as loadConfigForSections } from "./exports-BZLNbtkY.mjs";
2
2
  import { N as errorUnexpected, c as errorDatabaseConnectionRequired, d as errorFileNotFound, j as errorTargetMigrationNotSupported, s as errorContractValidationFailed, t as CliStructuredError$1, u as errorDriverRequired } from "./cli-errors-CihMAEVj-C1uUYBop.mjs";
3
- import { f as maskConnectionUrl, g as resolveContractPath, s as formatStyledHeader, t as addGlobalOptions } from "./command-helpers-DutQjYgy-CDfFwtAa.mjs";
3
+ import { f as maskConnectionUrl, g as resolveContractPath, s as formatStyledHeader, t as addGlobalOptions } from "./command-helpers-uzQbbM97-EaL4zWf5.mjs";
4
4
  import { t as createProgressAdapter } from "./progress-adapter-CjAeTxY_-BXYSd1eY.mjs";
5
- import { t as createControlClient } from "./client-CaIWFVnh-PVaTEvdx.mjs";
5
+ import { t as createControlClient } from "./client-DLPcSdv7-Cukdon0q.mjs";
6
6
  import { readFile } from "node:fs/promises";
7
7
  import { hasMigrations } from "@prisma/orm-framework/components/control";
8
8
  import { notOk, ok } from "@prisma/orm-framework/utils/result";
9
9
  import { relative, resolve } from "node:path";
10
- //#region ../../../1-framework/3-tooling/cli/dist/migration-command-scaffold-BezR8GWB.mjs
10
+ //#region ../../../1-framework/3-tooling/cli/dist/migration-command-scaffold-Bc5j_ehJ.mjs
11
11
  /**
12
12
  * Prepares the shared context for migration commands (db init, db update).
13
13
  *
@@ -118,4 +118,4 @@ function addMigrationCommandOptions(command) {
118
118
  //#endregion
119
119
  export { prepareMigrationContext as n, addMigrationCommandOptions as t };
120
120
 
121
- //# sourceMappingURL=migration-command-scaffold-BezR8GWB-BZFB2PC-.mjs.map
121
+ //# sourceMappingURL=migration-command-scaffold-Bc5j_ehJ-BF4cqm9C.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-command-scaffold-BezR8GWB-BZFB2PC-.mjs","names":["CliStructuredError"],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-command-scaffold-BezR8GWB.mjs"],"sourcesContent":["import { A as errorTargetMigrationNotSupported, M as errorUnexpected, l as errorDriverRequired, o as errorContractValidationFailed, s as errorDatabaseConnectionRequired, t as CliStructuredError, u as errorFileNotFound } from \"./cli-errors-CihMAEVj.mjs\";\nimport { S as formatStyledHeader, a as maskConnectionUrl, s as resolveContractPath, t as addGlobalOptions } from \"./command-helpers-DutQjYgy.mjs\";\nimport { t as createProgressAdapter } from \"./progress-adapter-CjAeTxY_.mjs\";\nimport { t as createControlClient } from \"./client-CaIWFVnh.mjs\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { readFile } from \"node:fs/promises\";\nimport { hasMigrations } from \"@internal/framework-components/control\";\nimport { relative, resolve } from \"node:path\";\n//#region src/utils/migration-command-scaffold.ts\n/**\n* Prepares the shared context for migration commands (db init, db update).\n*\n* Handles: config loading, contract file reading, JSON parsing, connection resolution,\n* driver/migration-support validation, client creation, and header output.\n*\n* Returns a Result with either the resolved context or a structured error.\n*/\nasync function prepareMigrationContext(options, flags, ui, descriptor) {\n\tconst configResult = await loadConfigForSections(options.config, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t\"driver\",\n\t\t\"extensions\",\n\t\t\"db\",\n\t\t\"migrations\",\n\t\t\"contract\"\n\t]);\n\tif (!configResult.ok) return configResult;\n\tconst config = configResult.value;\n\tconst configPath = options.config ? relative(process.cwd(), resolve(options.config)) : \"prisma-next.config.ts\";\n\tlet contractPathAbsolute;\n\ttry {\n\t\tcontractPathAbsolute = resolveContractPath(config);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tconst contractPath = relative(process.cwd(), contractPathAbsolute);\n\tif (!flags.json && !flags.quiet) {\n\t\tconst details = [{\n\t\t\tlabel: \"config\",\n\t\t\tvalue: configPath\n\t\t}, {\n\t\t\tlabel: \"contract\",\n\t\t\tvalue: contractPath\n\t\t}];\n\t\tif (options.db) details.push({\n\t\t\tlabel: \"database\",\n\t\t\tvalue: maskConnectionUrl(options.db)\n\t\t});\n\t\tif (options.dryRun) details.push({\n\t\t\tlabel: \"mode\",\n\t\t\tvalue: \"dry run\"\n\t\t});\n\t\tconst header = formatStyledHeader({\n\t\t\tcommand: descriptor.commandName,\n\t\t\tdescription: descriptor.description,\n\t\t\turl: descriptor.url,\n\t\t\tdetails,\n\t\t\tflags\n\t\t});\n\t\tui.stderr(header);\n\t}\n\tlet contractJsonContent;\n\ttry {\n\t\tcontractJsonContent = await readFile(contractPathAbsolute, \"utf-8\");\n\t} catch (error) {\n\t\tif (error instanceof Error && error.code === \"ENOENT\") return notOk(errorFileNotFound(contractPathAbsolute, {\n\t\t\twhy: `Contract file not found at ${contractPathAbsolute}`,\n\t\t\tfix: `Run \\`prisma-next contract emit\\` to generate ${contractPath}, or update \\`config.contract.output\\` in ${configPath}`\n\t\t}));\n\t\treturn notOk(errorUnexpected(error instanceof Error ? error.message : String(error), { why: `Failed to read contract file: ${error instanceof Error ? error.message : String(error)}` }));\n\t}\n\tlet contractJson;\n\ttry {\n\t\tcontractJson = JSON.parse(contractJsonContent);\n\t} catch (error) {\n\t\treturn notOk(errorContractValidationFailed(`Contract JSON is invalid: ${error instanceof Error ? error.message : String(error)}`, { where: { path: contractPathAbsolute } }));\n\t}\n\tconst dbConnection = options.db ?? config.db?.connection;\n\tif (!dbConnection) return notOk(errorDatabaseConnectionRequired({\n\t\twhy: `Database connection is required for ${descriptor.commandName} (set db.connection in ${configPath}, or pass --db <url>)`,\n\t\tcommandName: descriptor.commandName\n\t}));\n\tif (!config.driver) return notOk(errorDriverRequired({ why: `Config.driver is required for ${descriptor.commandName}` }));\n\tif (!hasMigrations(config.target)) return notOk(errorTargetMigrationNotSupported({ why: `Target \"${config.target.id}\" does not support migrations` }));\n\tconst client = createControlClient({\n\t\tfamily: config.family,\n\t\ttarget: config.target,\n\t\tadapter: config.adapter,\n\t\tdriver: config.driver,\n\t\textensions: config.extensions ?? []\n\t});\n\tconst onProgress = createProgressAdapter({\n\t\tui,\n\t\tflags\n\t});\n\treturn ok({\n\t\tclient,\n\t\tcontractJson,\n\t\tdbConnection,\n\t\tonProgress,\n\t\tconfigPath,\n\t\tcontractPath,\n\t\tcontractPathAbsolute,\n\t\tconfig\n\t});\n}\n/**\n* Registers the shared CLI options for migration commands (db init, db update).\n*/\nfunction addMigrationCommandOptions(command) {\n\taddGlobalOptions(command);\n\treturn command.option(\"--db <url>\", \"Database connection string\").option(\"--config <path>\", \"Path to prisma-next.config.ts\").option(\"--dry-run\", \"Preview planned operations without applying\", false);\n}\n//#endregion\nexport { prepareMigrationContext as n, addMigrationCommandOptions as t };\n\n//# sourceMappingURL=migration-command-scaffold-BezR8GWB.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"migration-command-scaffold-Bc5j_ehJ-BF4cqm9C.mjs","names":["CliStructuredError"],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-command-scaffold-Bc5j_ehJ.mjs"],"sourcesContent":["import { A as errorTargetMigrationNotSupported, M as errorUnexpected, l as errorDriverRequired, o as errorContractValidationFailed, s as errorDatabaseConnectionRequired, t as CliStructuredError, u as errorFileNotFound } from \"./cli-errors-CihMAEVj.mjs\";\nimport { S as formatStyledHeader, a as maskConnectionUrl, s as resolveContractPath, t as addGlobalOptions } from \"./command-helpers-uzQbbM97.mjs\";\nimport { t as createProgressAdapter } from \"./progress-adapter-CjAeTxY_.mjs\";\nimport { t as createControlClient } from \"./client-DLPcSdv7.mjs\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { readFile } from \"node:fs/promises\";\nimport { hasMigrations } from \"@internal/framework-components/control\";\nimport { relative, resolve } from \"node:path\";\n//#region src/utils/migration-command-scaffold.ts\n/**\n* Prepares the shared context for migration commands (db init, db update).\n*\n* Handles: config loading, contract file reading, JSON parsing, connection resolution,\n* driver/migration-support validation, client creation, and header output.\n*\n* Returns a Result with either the resolved context or a structured error.\n*/\nasync function prepareMigrationContext(options, flags, ui, descriptor) {\n\tconst configResult = await loadConfigForSections(options.config, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t\"driver\",\n\t\t\"extensions\",\n\t\t\"db\",\n\t\t\"migrations\",\n\t\t\"contract\"\n\t]);\n\tif (!configResult.ok) return configResult;\n\tconst config = configResult.value;\n\tconst configPath = options.config ? relative(process.cwd(), resolve(options.config)) : \"prisma-next.config.ts\";\n\tlet contractPathAbsolute;\n\ttry {\n\t\tcontractPathAbsolute = resolveContractPath(config);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tconst contractPath = relative(process.cwd(), contractPathAbsolute);\n\tif (!flags.json && !flags.quiet) {\n\t\tconst details = [{\n\t\t\tlabel: \"config\",\n\t\t\tvalue: configPath\n\t\t}, {\n\t\t\tlabel: \"contract\",\n\t\t\tvalue: contractPath\n\t\t}];\n\t\tif (options.db) details.push({\n\t\t\tlabel: \"database\",\n\t\t\tvalue: maskConnectionUrl(options.db)\n\t\t});\n\t\tif (options.dryRun) details.push({\n\t\t\tlabel: \"mode\",\n\t\t\tvalue: \"dry run\"\n\t\t});\n\t\tconst header = formatStyledHeader({\n\t\t\tcommand: descriptor.commandName,\n\t\t\tdescription: descriptor.description,\n\t\t\turl: descriptor.url,\n\t\t\tdetails,\n\t\t\tflags\n\t\t});\n\t\tui.stderr(header);\n\t}\n\tlet contractJsonContent;\n\ttry {\n\t\tcontractJsonContent = await readFile(contractPathAbsolute, \"utf-8\");\n\t} catch (error) {\n\t\tif (error instanceof Error && error.code === \"ENOENT\") return notOk(errorFileNotFound(contractPathAbsolute, {\n\t\t\twhy: `Contract file not found at ${contractPathAbsolute}`,\n\t\t\tfix: `Run \\`prisma-next contract emit\\` to generate ${contractPath}, or update \\`config.contract.output\\` in ${configPath}`\n\t\t}));\n\t\treturn notOk(errorUnexpected(error instanceof Error ? error.message : String(error), { why: `Failed to read contract file: ${error instanceof Error ? error.message : String(error)}` }));\n\t}\n\tlet contractJson;\n\ttry {\n\t\tcontractJson = JSON.parse(contractJsonContent);\n\t} catch (error) {\n\t\treturn notOk(errorContractValidationFailed(`Contract JSON is invalid: ${error instanceof Error ? error.message : String(error)}`, { where: { path: contractPathAbsolute } }));\n\t}\n\tconst dbConnection = options.db ?? config.db?.connection;\n\tif (!dbConnection) return notOk(errorDatabaseConnectionRequired({\n\t\twhy: `Database connection is required for ${descriptor.commandName} (set db.connection in ${configPath}, or pass --db <url>)`,\n\t\tcommandName: descriptor.commandName\n\t}));\n\tif (!config.driver) return notOk(errorDriverRequired({ why: `Config.driver is required for ${descriptor.commandName}` }));\n\tif (!hasMigrations(config.target)) return notOk(errorTargetMigrationNotSupported({ why: `Target \"${config.target.id}\" does not support migrations` }));\n\tconst client = createControlClient({\n\t\tfamily: config.family,\n\t\ttarget: config.target,\n\t\tadapter: config.adapter,\n\t\tdriver: config.driver,\n\t\textensions: config.extensions ?? []\n\t});\n\tconst onProgress = createProgressAdapter({\n\t\tui,\n\t\tflags\n\t});\n\treturn ok({\n\t\tclient,\n\t\tcontractJson,\n\t\tdbConnection,\n\t\tonProgress,\n\t\tconfigPath,\n\t\tcontractPath,\n\t\tcontractPathAbsolute,\n\t\tconfig\n\t});\n}\n/**\n* Registers the shared CLI options for migration commands (db init, db update).\n*/\nfunction addMigrationCommandOptions(command) {\n\taddGlobalOptions(command);\n\treturn command.option(\"--db <url>\", \"Database connection string\").option(\"--config <path>\", \"Path to prisma-next.config.ts\").option(\"--dry-run\", \"Preview planned operations without applying\", false);\n}\n//#endregion\nexport { prepareMigrationContext as n, addMigrationCommandOptions as t };\n\n//# sourceMappingURL=migration-command-scaffold-Bc5j_ehJ.mjs.map"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
1
  import { o as loadConfigForSections } from "./exports-BZLNbtkY.mjs";
2
- import { n as createTerminalUI } from "./terminal-ui-DQNCDg2u-B3PFqjB8.mjs";
3
- import { _ as resolveMigrationPaths, b as setCommandExamples, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, x as setCommandSeeAlso, y as setCommandDescriptions } from "./command-helpers-DutQjYgy-CDfFwtAa.mjs";
4
- import { r as buildReadAggregate } from "./contract-space-aggregate-loader-sF0OJ6oz-jRjdZoyZ.mjs";
2
+ import { n as createTerminalUI } from "./terminal-ui-CUZTa2vH-WvAtuIOS.mjs";
3
+ import { _ as resolveMigrationPaths, b as setCommandExamples, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, x as setCommandSeeAlso, y as setCommandDescriptions } from "./command-helpers-uzQbbM97-EaL4zWf5.mjs";
4
+ import { r as buildReadAggregate } from "./contract-space-aggregate-loader-Cd0X2M_C-CFBkD540.mjs";
5
5
  import { n as migrationSpaceListEntriesFromAggregate, r as runMigrationList } from "./migration-list-AKRIIovW-Cr39jOaI.mjs";
6
- import { g as renderMigrationGraphLegend } from "./migration-graph-command-render-BKrg6BPv-BP8Pfj4J.mjs";
6
+ import { v as renderMigrationGraphLegend } from "./migration-graph-command-render-CgdHruiZ-B6V4gmUe.mjs";
7
7
  import { t as buildMigrationSpaceGraphEntries } from "./migration-graph-BtP1Va3T-CMOZgqVW.mjs";
8
- import { n as renderMigrationGraphDot, r as renderMigrationGraphSections, t as buildMigrationGraphTreeSections } from "./migration-graph-sections-BVqyqBHg-DAwWjIIf.mjs";
8
+ import { n as renderMigrationGraphDot, r as renderMigrationGraphSections, t as buildMigrationGraphTreeSections } from "./migration-graph-sections-CceYWPCP-Bz8vmjNZ.mjs";
9
9
  import { n as validateLegendOptions, t as shouldShowLegend } from "./legend-QYDKKevn-DCIlAPn4.mjs";
10
10
  import { ifDefined } from "@prisma/orm-framework/utils/defined";
11
11
  import { ok } from "@prisma/orm-framework/utils/result";
12
12
  import { Command } from "commander";
13
- //#region ../../../1-framework/3-tooling/cli/dist/migration-graph-B1mg_jel.mjs
13
+ //#region ../../../1-framework/3-tooling/cli/dist/migration-graph-BYRfJ6pm.mjs
14
14
  function computeGraphSummary(spaces) {
15
15
  const contractCount = spaces.reduce((count, space) => count + space.contracts.length, 0);
16
16
  const migrationCount = spaces.reduce((count, space) => count + space.migrations.length, 0);
@@ -141,4 +141,4 @@ function createMigrationGraphCommand() {
141
141
  //#endregion
142
142
  export { executeMigrationGraphCommand as n, formatMigrationGraphHumanOutput as r, createMigrationGraphCommand as t };
143
143
 
144
- //# sourceMappingURL=migration-graph-B1mg_jel-HVG6FLD0.mjs.map
144
+ //# sourceMappingURL=migration-graph-BYRfJ6pm-WucWOxZ8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-graph-B1mg_jel-HVG6FLD0.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-graph-B1mg_jel.mjs"],"sourcesContent":["import { t as createTerminalUI } from \"./terminal-ui-DQNCDg2u.mjs\";\nimport { S as formatStyledHeader, _ as parseGlobalFlagsOrExit, c as resolveMigrationPaths, d as setCommandExamples, f as setCommandSeeAlso, t as addGlobalOptions, u as setCommandDescriptions, v as handleResult } from \"./command-helpers-DutQjYgy.mjs\";\nimport { r as buildReadAggregate } from \"./contract-space-aggregate-loader-sF0OJ6oz.mjs\";\nimport { n as migrationSpaceListEntriesFromAggregate, r as runMigrationList } from \"./migration-list-AKRIIovW.mjs\";\nimport { a as renderMigrationGraphLegend } from \"./migration-graph-command-render-BKrg6BPv.mjs\";\nimport { t as buildMigrationSpaceGraphEntries } from \"./migration-graph-BtP1Va3T.mjs\";\nimport { n as renderMigrationGraphDot, r as renderMigrationGraphSections, t as buildMigrationGraphTreeSections } from \"./migration-graph-sections-BVqyqBHg.mjs\";\nimport { n as validateLegendOptions, t as shouldShowLegend } from \"./legend-QYDKKevn.mjs\";\nimport { Command } from \"commander\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { ok } from \"@internal/utils/result\";\n//#region src/commands/migration-graph.ts\nfunction computeGraphSummary(spaces) {\n\tconst contractCount = spaces.reduce((count, space) => count + space.contracts.length, 0);\n\tconst migrationCount = spaces.reduce((count, space) => count + space.migrations.length, 0);\n\treturn `${spaces.length} space(s), ${contractCount} contract(s), ${migrationCount} migration(s)`;\n}\nfunction formatMigrationGraphHumanOutput(result) {\n\treturn renderMigrationGraphSections(result.treeSections, result.summary);\n}\nasync function executeMigrationGraphCommand(options, flags, ui) {\n\tconst configResult = await loadConfigForSections(options.config, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t\"extensions\",\n\t\t\"migrations\",\n\t\t\"contract\"\n\t]);\n\tif (!configResult.ok) return configResult;\n\tconst config = configResult.value;\n\tconst { configPath, migrationsRelative, migrationsDir } = resolveMigrationPaths(options.config, config, process.cwd());\n\tif (!flags.json && !flags.quiet) {\n\t\tconst header = formatStyledHeader({\n\t\t\tcommand: \"migration graph\",\n\t\t\tdescription: \"Show the migration graph topology\",\n\t\t\tdetails: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"config\",\n\t\t\t\t\tvalue: configPath\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"migrations\",\n\t\t\t\t\tvalue: migrationsRelative\n\t\t\t\t},\n\t\t\t\t...options.space !== void 0 ? [{\n\t\t\t\t\tlabel: \"space\",\n\t\t\t\t\tvalue: options.space\n\t\t\t\t}] : []\n\t\t\t],\n\t\t\tflags\n\t\t});\n\t\tui.stderr(header);\n\t\tif (shouldShowLegend(options, flags)) {\n\t\t\tui.stderr(renderMigrationGraphLegend({\n\t\t\t\tcolorize: flags.color !== false,\n\t\t\t\tglyphMode: ui.resolveGlyphMode(options.ascii === true)\n\t\t\t}));\n\t\t\tui.stderr(\"\");\n\t\t}\n\t}\n\tconst loaded = await buildReadAggregate(config, { migrationsDir });\n\tif (!loaded.ok) return loaded;\n\tconst { aggregate, contractHash: liveContractHash } = loaded.value;\n\tconst appGraph = aggregate.app.graph();\n\tconst listResult = runMigrationList({\n\t\tspaces: await migrationSpaceListEntriesFromAggregate(aggregate, migrationsDir),\n\t\t...ifDefined(\"spaceFilter\", options.space)\n\t});\n\tif (!listResult.ok) return listResult;\n\tconst scopedSpaces = listResult.value.spaces;\n\tconst treeSections = buildMigrationGraphTreeSections({\n\t\taggregate,\n\t\tscopedSpaces,\n\t\tliveContractHash,\n\t\tglyphMode: ui.resolveGlyphMode(options.ascii === true),\n\t\tcolorize: flags.color !== false\n\t});\n\tconst spaces = [...buildMigrationSpaceGraphEntries({\n\t\taggregate,\n\t\tscopedSpaces\n\t})];\n\treturn ok({\n\t\tok: true,\n\t\tgraph: appGraph,\n\t\tspaces,\n\t\ttreeSections,\n\t\tsummary: computeGraphSummary(spaces)\n\t});\n}\nfunction createMigrationGraphCommand() {\n\tconst command = new Command(\"graph\");\n\tsetCommandDescriptions(command, \"Show the migration graph topology\", \"Renders the migration graph topology.\\nOffline — does not consult the database.\\n--ascii swaps box-drawing for pipe-friendly ASCII glyphs.\\nUse --json for machine-readable output, or --dot for Graphviz DOT\\nformat.\");\n\tsetCommandExamples(command, [\n\t\t\"prisma-next migration graph\",\n\t\t\"prisma-next migration graph --json\",\n\t\t\"prisma-next migration graph --dot\",\n\t\t\"prisma-next migration graph --ascii\",\n\t\t\"prisma-next migration graph --legend\",\n\t\t\"prisma-next migration graph --space app\"\n\t]);\n\tsetCommandSeeAlso(command, [\n\t\t{\n\t\t\tverb: \"migration status\",\n\t\t\toneLiner: \"Show migration path and pending status\"\n\t\t},\n\t\t{\n\t\t\tverb: \"migration log\",\n\t\t\toneLiner: \"Show executed migration history\"\n\t\t},\n\t\t{\n\t\t\tverb: \"migration list\",\n\t\t\toneLiner: \"List on-disk migrations\"\n\t\t},\n\t\t{\n\t\t\tverb: \"migration show\",\n\t\t\toneLiner: \"Display migration package contents\"\n\t\t}\n\t]);\n\taddGlobalOptions(command).option(\"--config <path>\", \"Path to prisma-next.config.ts\").option(\"--space <id>\", \"Narrow output to a single contract space\").option(\"--dot\", \"Output in Graphviz DOT format\").option(\"--ascii\", \"Use ASCII glyphs (pipe-friendly)\").option(\"--legend\", \"Print a key for the tree glyphs and lane colors\").action(async (options) => {\n\t\tconst flags = parseGlobalFlagsOrExit(options);\n\t\tconst ui = createTerminalUI(flags);\n\t\tconst legendValidation = validateLegendOptions(options, flags);\n\t\tif (!legendValidation.ok) process.exit(handleResult(legendValidation, flags, ui));\n\t\tconst exitCode = handleResult(await executeMigrationGraphCommand(options, flags, ui), flags, ui, (graphResult) => {\n\t\t\tif (options.dot) ui.output(renderMigrationGraphDot(graphResult.graph));\n\t\t\telse if (flags.json) {\n\t\t\t\tconst jsonResult = {\n\t\t\t\t\tok: true,\n\t\t\t\t\tspaces: [...graphResult.spaces],\n\t\t\t\t\tsummary: graphResult.summary\n\t\t\t\t};\n\t\t\t\tui.output(JSON.stringify(jsonResult, null, 2));\n\t\t\t} else if (!flags.quiet) ui.output(formatMigrationGraphHumanOutput(graphResult));\n\t\t});\n\t\tprocess.exit(exitCode);\n\t});\n\treturn command;\n}\n//#endregion\nexport { executeMigrationGraphCommand as n, formatMigrationGraphHumanOutput as r, createMigrationGraphCommand as t };\n\n//# sourceMappingURL=migration-graph-B1mg_jel.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"migration-graph-BYRfJ6pm-WucWOxZ8.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-graph-BYRfJ6pm.mjs"],"sourcesContent":["import { t as createTerminalUI } from \"./terminal-ui-CUZTa2vH.mjs\";\nimport { S as formatStyledHeader, _ as parseGlobalFlagsOrExit, c as resolveMigrationPaths, d as setCommandExamples, f as setCommandSeeAlso, t as addGlobalOptions, u as setCommandDescriptions, v as handleResult } from \"./command-helpers-uzQbbM97.mjs\";\nimport { r as buildReadAggregate } from \"./contract-space-aggregate-loader-Cd0X2M_C.mjs\";\nimport { n as migrationSpaceListEntriesFromAggregate, r as runMigrationList } from \"./migration-list-AKRIIovW.mjs\";\nimport { a as renderMigrationGraphLegend } from \"./migration-graph-command-render-CgdHruiZ.mjs\";\nimport { t as buildMigrationSpaceGraphEntries } from \"./migration-graph-BtP1Va3T.mjs\";\nimport { n as renderMigrationGraphDot, r as renderMigrationGraphSections, t as buildMigrationGraphTreeSections } from \"./migration-graph-sections-CceYWPCP.mjs\";\nimport { n as validateLegendOptions, t as shouldShowLegend } from \"./legend-QYDKKevn.mjs\";\nimport { Command } from \"commander\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { ok } from \"@internal/utils/result\";\n//#region src/commands/migration-graph.ts\nfunction computeGraphSummary(spaces) {\n\tconst contractCount = spaces.reduce((count, space) => count + space.contracts.length, 0);\n\tconst migrationCount = spaces.reduce((count, space) => count + space.migrations.length, 0);\n\treturn `${spaces.length} space(s), ${contractCount} contract(s), ${migrationCount} migration(s)`;\n}\nfunction formatMigrationGraphHumanOutput(result) {\n\treturn renderMigrationGraphSections(result.treeSections, result.summary);\n}\nasync function executeMigrationGraphCommand(options, flags, ui) {\n\tconst configResult = await loadConfigForSections(options.config, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t\"extensions\",\n\t\t\"migrations\",\n\t\t\"contract\"\n\t]);\n\tif (!configResult.ok) return configResult;\n\tconst config = configResult.value;\n\tconst { configPath, migrationsRelative, migrationsDir } = resolveMigrationPaths(options.config, config, process.cwd());\n\tif (!flags.json && !flags.quiet) {\n\t\tconst header = formatStyledHeader({\n\t\t\tcommand: \"migration graph\",\n\t\t\tdescription: \"Show the migration graph topology\",\n\t\t\tdetails: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"config\",\n\t\t\t\t\tvalue: configPath\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"migrations\",\n\t\t\t\t\tvalue: migrationsRelative\n\t\t\t\t},\n\t\t\t\t...options.space !== void 0 ? [{\n\t\t\t\t\tlabel: \"space\",\n\t\t\t\t\tvalue: options.space\n\t\t\t\t}] : []\n\t\t\t],\n\t\t\tflags\n\t\t});\n\t\tui.stderr(header);\n\t\tif (shouldShowLegend(options, flags)) {\n\t\t\tui.stderr(renderMigrationGraphLegend({\n\t\t\t\tcolorize: flags.color !== false,\n\t\t\t\tglyphMode: ui.resolveGlyphMode(options.ascii === true)\n\t\t\t}));\n\t\t\tui.stderr(\"\");\n\t\t}\n\t}\n\tconst loaded = await buildReadAggregate(config, { migrationsDir });\n\tif (!loaded.ok) return loaded;\n\tconst { aggregate, contractHash: liveContractHash } = loaded.value;\n\tconst appGraph = aggregate.app.graph();\n\tconst listResult = runMigrationList({\n\t\tspaces: await migrationSpaceListEntriesFromAggregate(aggregate, migrationsDir),\n\t\t...ifDefined(\"spaceFilter\", options.space)\n\t});\n\tif (!listResult.ok) return listResult;\n\tconst scopedSpaces = listResult.value.spaces;\n\tconst treeSections = buildMigrationGraphTreeSections({\n\t\taggregate,\n\t\tscopedSpaces,\n\t\tliveContractHash,\n\t\tglyphMode: ui.resolveGlyphMode(options.ascii === true),\n\t\tcolorize: flags.color !== false\n\t});\n\tconst spaces = [...buildMigrationSpaceGraphEntries({\n\t\taggregate,\n\t\tscopedSpaces\n\t})];\n\treturn ok({\n\t\tok: true,\n\t\tgraph: appGraph,\n\t\tspaces,\n\t\ttreeSections,\n\t\tsummary: computeGraphSummary(spaces)\n\t});\n}\nfunction createMigrationGraphCommand() {\n\tconst command = new Command(\"graph\");\n\tsetCommandDescriptions(command, \"Show the migration graph topology\", \"Renders the migration graph topology.\\nOffline — does not consult the database.\\n--ascii swaps box-drawing for pipe-friendly ASCII glyphs.\\nUse --json for machine-readable output, or --dot for Graphviz DOT\\nformat.\");\n\tsetCommandExamples(command, [\n\t\t\"prisma-next migration graph\",\n\t\t\"prisma-next migration graph --json\",\n\t\t\"prisma-next migration graph --dot\",\n\t\t\"prisma-next migration graph --ascii\",\n\t\t\"prisma-next migration graph --legend\",\n\t\t\"prisma-next migration graph --space app\"\n\t]);\n\tsetCommandSeeAlso(command, [\n\t\t{\n\t\t\tverb: \"migration status\",\n\t\t\toneLiner: \"Show migration path and pending status\"\n\t\t},\n\t\t{\n\t\t\tverb: \"migration log\",\n\t\t\toneLiner: \"Show executed migration history\"\n\t\t},\n\t\t{\n\t\t\tverb: \"migration list\",\n\t\t\toneLiner: \"List on-disk migrations\"\n\t\t},\n\t\t{\n\t\t\tverb: \"migration show\",\n\t\t\toneLiner: \"Display migration package contents\"\n\t\t}\n\t]);\n\taddGlobalOptions(command).option(\"--config <path>\", \"Path to prisma-next.config.ts\").option(\"--space <id>\", \"Narrow output to a single contract space\").option(\"--dot\", \"Output in Graphviz DOT format\").option(\"--ascii\", \"Use ASCII glyphs (pipe-friendly)\").option(\"--legend\", \"Print a key for the tree glyphs and lane colors\").action(async (options) => {\n\t\tconst flags = parseGlobalFlagsOrExit(options);\n\t\tconst ui = createTerminalUI(flags);\n\t\tconst legendValidation = validateLegendOptions(options, flags);\n\t\tif (!legendValidation.ok) process.exit(handleResult(legendValidation, flags, ui));\n\t\tconst exitCode = handleResult(await executeMigrationGraphCommand(options, flags, ui), flags, ui, (graphResult) => {\n\t\t\tif (options.dot) ui.output(renderMigrationGraphDot(graphResult.graph));\n\t\t\telse if (flags.json) {\n\t\t\t\tconst jsonResult = {\n\t\t\t\t\tok: true,\n\t\t\t\t\tspaces: [...graphResult.spaces],\n\t\t\t\t\tsummary: graphResult.summary\n\t\t\t\t};\n\t\t\t\tui.output(JSON.stringify(jsonResult, null, 2));\n\t\t\t} else if (!flags.quiet) ui.output(formatMigrationGraphHumanOutput(graphResult));\n\t\t});\n\t\tprocess.exit(exitCode);\n\t});\n\treturn command;\n}\n//#endregion\nexport { executeMigrationGraphCommand as n, formatMigrationGraphHumanOutput as r, createMigrationGraphCommand as t };\n\n//# sourceMappingURL=migration-graph-BYRfJ6pm.mjs.map"],"mappings":";;;;;;;;;;;;;AAaA,SAAS,oBAAoB,QAAQ;CACpC,MAAM,gBAAgB,OAAO,QAAQ,OAAO,UAAU,QAAQ,MAAM,UAAU,QAAQ,CAAC;CACvF,MAAM,iBAAiB,OAAO,QAAQ,OAAO,UAAU,QAAQ,MAAM,WAAW,QAAQ,CAAC;CACzF,OAAO,GAAG,OAAO,OAAO,aAAa,cAAc,gBAAgB,eAAe;AACnF;AACA,SAAS,gCAAgC,QAAQ;CAChD,OAAO,6BAA6B,OAAO,cAAc,OAAO,OAAO;AACxE;AACA,eAAe,6BAA6B,SAAS,OAAO,IAAI;CAC/D,MAAM,eAAe,MAAM,sBAAsB,QAAQ,QAAQ;EAChE;EACA;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,IAAI,CAAC,aAAa,IAAI,OAAO;CAC7B,MAAM,SAAS,aAAa;CAC5B,MAAM,EAAE,YAAY,oBAAoB,kBAAkB,sBAAsB,QAAQ,QAAQ,QAAQ,QAAQ,IAAI,CAAC;CACrH,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO;EAChC,MAAM,SAAS,mBAAmB;GACjC,SAAS;GACT,aAAa;GACb,SAAS;IACR;KACC,OAAO;KACP,OAAO;IACR;IACA;KACC,OAAO;KACP,OAAO;IACR;IACA,GAAG,QAAQ,UAAU,KAAK,IAAI,CAAC;KAC9B,OAAO;KACP,OAAO,QAAQ;IAChB,CAAC,IAAI,CAAC;GACP;GACA;EACD,CAAC;EACD,GAAG,OAAO,MAAM;EAChB,IAAI,iBAAiB,SAAS,KAAK,GAAG;GACrC,GAAG,OAAO,2BAA2B;IACpC,UAAU,MAAM,UAAU;IAC1B,WAAW,GAAG,iBAAiB,QAAQ,UAAU,IAAI;GACtD,CAAC,CAAC;GACF,GAAG,OAAO,EAAE;EACb;CACD;CACA,MAAM,SAAS,MAAM,mBAAmB,QAAQ,EAAE,cAAc,CAAC;CACjE,IAAI,CAAC,OAAO,IAAI,OAAO;CACvB,MAAM,EAAE,WAAW,cAAc,qBAAqB,OAAO;CAC7D,MAAM,WAAW,UAAU,IAAI,MAAM;CACrC,MAAM,aAAa,iBAAiB;EACnC,QAAQ,MAAM,uCAAuC,WAAW,aAAa;EAC7E,GAAG,UAAU,eAAe,QAAQ,KAAK;CAC1C,CAAC;CACD,IAAI,CAAC,WAAW,IAAI,OAAO;CAC3B,MAAM,eAAe,WAAW,MAAM;CACtC,MAAM,eAAe,gCAAgC;EACpD;EACA;EACA;EACA,WAAW,GAAG,iBAAiB,QAAQ,UAAU,IAAI;EACrD,UAAU,MAAM,UAAU;CAC3B,CAAC;CACD,MAAM,SAAS,CAAC,GAAG,gCAAgC;EAClD;EACA;CACD,CAAC,CAAC;CACF,OAAO,GAAG;EACT,IAAI;EACJ,OAAO;EACP;EACA;EACA,SAAS,oBAAoB,MAAM;CACpC,CAAC;AACF;AACA,SAAS,8BAA8B;CACtC,MAAM,UAAU,IAAI,QAAQ,OAAO;CACnC,uBAAuB,SAAS,qCAAqC,wNAAwN;CAC7R,mBAAmB,SAAS;EAC3B;EACA;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,kBAAkB,SAAS;EAC1B;GACC,MAAM;GACN,UAAU;EACX;EACA;GACC,MAAM;GACN,UAAU;EACX;EACA;GACC,MAAM;GACN,UAAU;EACX;EACA;GACC,MAAM;GACN,UAAU;EACX;CACD,CAAC;CACD,iBAAiB,OAAO,CAAC,CAAC,OAAO,mBAAmB,+BAA+B,CAAC,CAAC,OAAO,gBAAgB,0CAA0C,CAAC,CAAC,OAAO,SAAS,+BAA+B,CAAC,CAAC,OAAO,WAAW,kCAAkC,CAAC,CAAC,OAAO,YAAY,iDAAiD,CAAC,CAAC,OAAO,OAAO,YAAY;EAC9V,MAAM,QAAQ,uBAAuB,OAAO;EAC5C,MAAM,KAAK,iBAAiB,KAAK;EACjC,MAAM,mBAAmB,sBAAsB,SAAS,KAAK;EAC7D,IAAI,CAAC,iBAAiB,IAAI,QAAQ,KAAK,aAAa,kBAAkB,OAAO,EAAE,CAAC;EAChF,MAAM,WAAW,aAAa,MAAM,6BAA6B,SAAS,OAAO,EAAE,GAAG,OAAO,KAAK,gBAAgB;GACjH,IAAI,QAAQ,KAAK,GAAG,OAAO,wBAAwB,YAAY,KAAK,CAAC;QAChE,IAAI,MAAM,MAAM;IACpB,MAAM,aAAa;KAClB,IAAI;KACJ,QAAQ,CAAC,GAAG,YAAY,MAAM;KAC9B,SAAS,YAAY;IACtB;IACA,GAAG,OAAO,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;GAC9C,OAAO,IAAI,CAAC,MAAM,OAAO,GAAG,OAAO,gCAAgC,WAAW,CAAC;EAChF,CAAC;EACD,QAAQ,KAAK,QAAQ;CACtB,CAAC;CACD,OAAO;AACR"}