@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-log-table-C0dSMG9T-BhBYrdka.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-log-table-C0dSMG9T.mjs"],"sourcesContent":["import { _ as migrationListEmptySource, g as abbreviateContractHash, s as IDENTITY_MIGRATION_LIST_STYLER, v as migrationListForwardArrow } from \"./migration-graph-command-render-BKrg6BPv.mjs\";\nimport stringWidth from \"string-width\";\n//#region src/utils/formatters/migration-log-table.ts\nconst HEADING_APPLIED_AT = \"Applied at\";\nconst HEADING_SPACE = \"Space\";\nconst HEADING_MIGRATION = \"Migration\";\nconst HEADING_CHANGE = \"Change\";\nconst HEADING_OPS = \"Ops\";\nconst COLUMN_SEPARATOR = \" \";\nconst DIVIDER_CHAR = \"─\";\nconst ASCII_DIVIDER_CHAR = \"-\";\nfunction sortLedgerEntries(entries) {\n\treturn [...entries].sort((left, right) => {\n\t\tconst timeDiff = left.appliedAt.getTime() - right.appliedAt.getTime();\n\t\tif (timeDiff !== 0) return timeDiff;\n\t\tconst spaceDiff = left.space.localeCompare(right.space);\n\t\tif (spaceDiff !== 0) return spaceDiff;\n\t\treturn left.migrationName.localeCompare(right.migrationName);\n\t});\n}\nfunction pad2(value) {\n\treturn String(value).padStart(2, \"0\");\n}\nfunction formatLedgerAppliedAt(date, mode) {\n\tif (mode === \"iso\") return date.toISOString();\n\tif (mode === \"utc\") return `${date.getUTCFullYear()}-${pad2(date.getUTCMonth() + 1)}-${pad2(date.getUTCDate())} ${pad2(date.getUTCHours())}:${pad2(date.getUTCMinutes())}:${pad2(date.getUTCSeconds())}Z`;\n\tconst offsetMinutes = -date.getTimezoneOffset();\n\tconst sign = offsetMinutes >= 0 ? \"+\" : \"-\";\n\tconst absoluteOffset = Math.abs(offsetMinutes);\n\tconst offsetHours = pad2(Math.floor(absoluteOffset / 60));\n\tconst offsetMins = pad2(absoluteOffset % 60);\n\treturn `${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())} ${pad2(date.getHours())}:${pad2(date.getMinutes())}:${pad2(date.getSeconds())} ${sign}${offsetHours}:${offsetMins}`;\n}\nfunction formatHashEndpoint(hash, glyphMode = \"unicode\") {\n\tif (hash === null) return migrationListEmptySource(glyphMode);\n\treturn abbreviateContractHash(hash);\n}\nfunction formatHashTransition(from, to, glyphMode = \"unicode\") {\n\treturn `${formatHashEndpoint(from, glyphMode)} ${migrationListForwardArrow(glyphMode)} ${abbreviateContractHash(to)}`;\n}\nfunction styleHashTransition(from, to, styler, glyphMode = \"unicode\") {\n\treturn `${from === null ? styler.glyph(migrationListEmptySource(glyphMode)) : styler.sourceHash(abbreviateContractHash(from))} ${styler.glyph(migrationListForwardArrow(glyphMode))} ${styler.destHash(abbreviateContractHash(to))}`;\n}\nfunction padVisible(text, targetWidth) {\n\tconst padding = Math.max(0, targetWidth - stringWidth(text));\n\treturn text + \" \".repeat(padding);\n}\nfunction columnWidth(values) {\n\treturn values.reduce((max, value) => Math.max(max, stringWidth(value)), 0);\n}\nfunction padDividerCell(valueWidth, dividerChar) {\n\treturn dividerChar.repeat(valueWidth + 2);\n}\nfunction padTextCell(value, valueWidth) {\n\treturn ` ${padVisible(value, valueWidth)} `;\n}\nfunction padOpsCell(value, valueWidth) {\n\tconst padding = Math.max(0, valueWidth - stringWidth(value));\n\treturn ` ${\" \".repeat(padding)}${value} `;\n}\nfunction renderMigrationLogTable(entries, options = {}) {\n\tconst sorted = sortLedgerEntries(entries);\n\tif (sorted.length === 0) return \"\";\n\tconst styler = options.styler ?? IDENTITY_MIGRATION_LIST_STYLER;\n\tconst glyphMode = options.glyphMode ?? \"unicode\";\n\tconst dividerChar = glyphMode === \"ascii\" ? ASCII_DIVIDER_CHAR : DIVIDER_CHAR;\n\tconst showSpace = new Set(sorted.map((entry) => entry.space)).size > 1;\n\tconst timestampMode = options.utc ? \"utc\" : \"local\";\n\tconst rows = sorted.map((entry) => ({\n\t\tappliedAt: formatLedgerAppliedAt(entry.appliedAt, timestampMode),\n\t\tspace: entry.space,\n\t\tmigrationName: entry.migrationName,\n\t\ttransition: formatHashTransition(entry.from, entry.to, glyphMode),\n\t\tops: `${entry.operationCount} ops`,\n\t\tfrom: entry.from,\n\t\tto: entry.to\n\t}));\n\tconst appliedAtWidth = columnWidth([HEADING_APPLIED_AT, ...rows.map((row) => row.appliedAt)]);\n\tconst spaceWidth = showSpace ? columnWidth([HEADING_SPACE, ...rows.map((row) => row.space)]) : 0;\n\tconst nameWidth = columnWidth([HEADING_MIGRATION, ...rows.map((row) => row.migrationName)]);\n\tconst transitionWidth = columnWidth([HEADING_CHANGE, ...rows.map((row) => row.transition)]);\n\tconst opsWidth = columnWidth([HEADING_OPS, ...rows.map((row) => row.ops)]);\n\tconst headingParts = [padTextCell(HEADING_APPLIED_AT, appliedAtWidth)];\n\tif (showSpace) headingParts.push(padTextCell(HEADING_SPACE, spaceWidth));\n\theadingParts.push(padTextCell(HEADING_MIGRATION, nameWidth), padTextCell(HEADING_CHANGE, transitionWidth), padOpsCell(HEADING_OPS, opsWidth));\n\tconst heading = headingParts.join(COLUMN_SEPARATOR);\n\tconst dividerParts = [padDividerCell(appliedAtWidth, dividerChar)];\n\tif (showSpace) dividerParts.push(padDividerCell(spaceWidth, dividerChar));\n\tdividerParts.push(padDividerCell(nameWidth, dividerChar), padDividerCell(transitionWidth, dividerChar), padDividerCell(opsWidth, dividerChar));\n\treturn [\n\t\theading,\n\t\tdividerParts.map((cell) => styler.summary(cell)).join(COLUMN_SEPARATOR),\n\t\t...rows.map((row) => {\n\t\t\tconst parts = [padTextCell(row.appliedAt, appliedAtWidth)];\n\t\t\tif (showSpace) parts.push(padTextCell(row.space, spaceWidth));\n\t\t\tparts.push(padTextCell(styler.dirName(row.migrationName), nameWidth), padTextCell(styleHashTransition(row.from, row.to, styler, glyphMode), transitionWidth), padOpsCell(row.ops, opsWidth));\n\t\t\treturn parts.join(COLUMN_SEPARATOR);\n\t\t})\n\t].join(\"\\n\");\n}\nfunction serializeLedgerEntriesForJson(entries) {\n\treturn sortLedgerEntries(entries).map((entry) => ({\n\t\tspace: entry.space,\n\t\tname: entry.migrationName,\n\t\thash: entry.migrationHash,\n\t\tfromContract: entry.from,\n\t\ttoContract: entry.to,\n\t\tappliedAt: formatLedgerAppliedAt(entry.appliedAt, \"iso\"),\n\t\toperationCount: entry.operationCount\n\t}));\n}\nconst MIGRATION_LOG_EMPTY_MESSAGE = \"No migrations have been applied to this database.\";\n//#endregion\nexport { renderMigrationLogTable as n, serializeLedgerEntriesForJson as r, MIGRATION_LOG_EMPTY_MESSAGE as t };\n\n//# sourceMappingURL=migration-log-table-C0dSMG9T.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"migration-log-table-JR7fFVbE-DR2mom6h.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-log-table-JR7fFVbE.mjs"],"sourcesContent":["import { _ as abbreviateContractHash, c as IDENTITY_MIGRATION_LIST_STYLER, v as migrationListEmptySource, y as migrationListForwardArrow } from \"./migration-graph-command-render-CgdHruiZ.mjs\";\nimport stringWidth from \"string-width\";\n//#region src/utils/formatters/migration-log-table.ts\nconst HEADING_APPLIED_AT = \"Applied at\";\nconst HEADING_SPACE = \"Space\";\nconst HEADING_MIGRATION = \"Migration\";\nconst HEADING_CHANGE = \"Change\";\nconst HEADING_OPS = \"Ops\";\nconst COLUMN_SEPARATOR = \" \";\nconst DIVIDER_CHAR = \"─\";\nconst ASCII_DIVIDER_CHAR = \"-\";\nfunction sortLedgerEntries(entries) {\n\treturn [...entries].sort((left, right) => {\n\t\tconst timeDiff = left.appliedAt.getTime() - right.appliedAt.getTime();\n\t\tif (timeDiff !== 0) return timeDiff;\n\t\tconst spaceDiff = left.space.localeCompare(right.space);\n\t\tif (spaceDiff !== 0) return spaceDiff;\n\t\treturn left.migrationName.localeCompare(right.migrationName);\n\t});\n}\nfunction pad2(value) {\n\treturn String(value).padStart(2, \"0\");\n}\nfunction formatLedgerAppliedAt(date, mode) {\n\tif (mode === \"iso\") return date.toISOString();\n\tif (mode === \"utc\") return `${date.getUTCFullYear()}-${pad2(date.getUTCMonth() + 1)}-${pad2(date.getUTCDate())} ${pad2(date.getUTCHours())}:${pad2(date.getUTCMinutes())}:${pad2(date.getUTCSeconds())}Z`;\n\tconst offsetMinutes = -date.getTimezoneOffset();\n\tconst sign = offsetMinutes >= 0 ? \"+\" : \"-\";\n\tconst absoluteOffset = Math.abs(offsetMinutes);\n\tconst offsetHours = pad2(Math.floor(absoluteOffset / 60));\n\tconst offsetMins = pad2(absoluteOffset % 60);\n\treturn `${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())} ${pad2(date.getHours())}:${pad2(date.getMinutes())}:${pad2(date.getSeconds())} ${sign}${offsetHours}:${offsetMins}`;\n}\nfunction formatHashEndpoint(hash, glyphMode = \"unicode\") {\n\tif (hash === null) return migrationListEmptySource(glyphMode);\n\treturn abbreviateContractHash(hash);\n}\nfunction formatHashTransition(from, to, glyphMode = \"unicode\") {\n\treturn `${formatHashEndpoint(from, glyphMode)} ${migrationListForwardArrow(glyphMode)} ${abbreviateContractHash(to)}`;\n}\nfunction styleHashTransition(from, to, styler, glyphMode = \"unicode\") {\n\treturn `${from === null ? styler.glyph(migrationListEmptySource(glyphMode)) : styler.sourceHash(abbreviateContractHash(from))} ${styler.glyph(migrationListForwardArrow(glyphMode))} ${styler.destHash(abbreviateContractHash(to))}`;\n}\nfunction padVisible(text, targetWidth) {\n\tconst padding = Math.max(0, targetWidth - stringWidth(text));\n\treturn text + \" \".repeat(padding);\n}\nfunction columnWidth(values) {\n\treturn values.reduce((max, value) => Math.max(max, stringWidth(value)), 0);\n}\nfunction padDividerCell(valueWidth, dividerChar) {\n\treturn dividerChar.repeat(valueWidth + 2);\n}\nfunction padTextCell(value, valueWidth) {\n\treturn ` ${padVisible(value, valueWidth)} `;\n}\nfunction padOpsCell(value, valueWidth) {\n\tconst padding = Math.max(0, valueWidth - stringWidth(value));\n\treturn ` ${\" \".repeat(padding)}${value} `;\n}\nfunction renderMigrationLogTable(entries, options = {}) {\n\tconst sorted = sortLedgerEntries(entries);\n\tif (sorted.length === 0) return \"\";\n\tconst styler = options.styler ?? IDENTITY_MIGRATION_LIST_STYLER;\n\tconst glyphMode = options.glyphMode ?? \"unicode\";\n\tconst dividerChar = glyphMode === \"ascii\" ? ASCII_DIVIDER_CHAR : DIVIDER_CHAR;\n\tconst showSpace = new Set(sorted.map((entry) => entry.space)).size > 1;\n\tconst timestampMode = options.utc ? \"utc\" : \"local\";\n\tconst rows = sorted.map((entry) => ({\n\t\tappliedAt: formatLedgerAppliedAt(entry.appliedAt, timestampMode),\n\t\tspace: entry.space,\n\t\tmigrationName: entry.migrationName,\n\t\ttransition: formatHashTransition(entry.from, entry.to, glyphMode),\n\t\tops: `${entry.operationCount} ops`,\n\t\tfrom: entry.from,\n\t\tto: entry.to\n\t}));\n\tconst appliedAtWidth = columnWidth([HEADING_APPLIED_AT, ...rows.map((row) => row.appliedAt)]);\n\tconst spaceWidth = showSpace ? columnWidth([HEADING_SPACE, ...rows.map((row) => row.space)]) : 0;\n\tconst nameWidth = columnWidth([HEADING_MIGRATION, ...rows.map((row) => row.migrationName)]);\n\tconst transitionWidth = columnWidth([HEADING_CHANGE, ...rows.map((row) => row.transition)]);\n\tconst opsWidth = columnWidth([HEADING_OPS, ...rows.map((row) => row.ops)]);\n\tconst headingParts = [padTextCell(HEADING_APPLIED_AT, appliedAtWidth)];\n\tif (showSpace) headingParts.push(padTextCell(HEADING_SPACE, spaceWidth));\n\theadingParts.push(padTextCell(HEADING_MIGRATION, nameWidth), padTextCell(HEADING_CHANGE, transitionWidth), padOpsCell(HEADING_OPS, opsWidth));\n\tconst heading = headingParts.join(COLUMN_SEPARATOR);\n\tconst dividerParts = [padDividerCell(appliedAtWidth, dividerChar)];\n\tif (showSpace) dividerParts.push(padDividerCell(spaceWidth, dividerChar));\n\tdividerParts.push(padDividerCell(nameWidth, dividerChar), padDividerCell(transitionWidth, dividerChar), padDividerCell(opsWidth, dividerChar));\n\treturn [\n\t\theading,\n\t\tdividerParts.map((cell) => styler.summary(cell)).join(COLUMN_SEPARATOR),\n\t\t...rows.map((row) => {\n\t\t\tconst parts = [padTextCell(row.appliedAt, appliedAtWidth)];\n\t\t\tif (showSpace) parts.push(padTextCell(row.space, spaceWidth));\n\t\t\tparts.push(padTextCell(styler.dirName(row.migrationName), nameWidth), padTextCell(styleHashTransition(row.from, row.to, styler, glyphMode), transitionWidth), padOpsCell(row.ops, opsWidth));\n\t\t\treturn parts.join(COLUMN_SEPARATOR);\n\t\t})\n\t].join(\"\\n\");\n}\nfunction serializeLedgerEntriesForJson(entries) {\n\treturn sortLedgerEntries(entries).map((entry) => ({\n\t\tspace: entry.space,\n\t\tname: entry.migrationName,\n\t\thash: entry.migrationHash,\n\t\tfromContract: entry.from,\n\t\ttoContract: entry.to,\n\t\tappliedAt: formatLedgerAppliedAt(entry.appliedAt, \"iso\"),\n\t\toperationCount: entry.operationCount\n\t}));\n}\nconst MIGRATION_LOG_EMPTY_MESSAGE = \"No migrations have been applied to this database.\";\n//#endregion\nexport { sortLedgerEntries as a, serializeLedgerEntriesForJson as i, formatLedgerAppliedAt as n, styleHashTransition as o, renderMigrationLogTable as r, MIGRATION_LOG_EMPTY_MESSAGE as t };\n\n//# sourceMappingURL=migration-log-table-JR7fFVbE.mjs.map"],"mappings":"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"}
@@ -6,15 +6,15 @@ import { a as snapshotsImportPathFrom, o as writeContractSnapshot, t as contract
6
6
  import { t as computeMigrationHash } from "./hash-DH8hl5Rq-BpM2t3Nu.mjs";
7
7
  import { r as formatMigrationDirName, u as writeMigrationPackage } from "./io-CHUUeHh0-CbyTkKP6.mjs";
8
8
  import { r as findLatestMigration } from "./migration-graph-DDaOHo10-yJFAbKCu.mjs";
9
- import { _ as resolveMigrationPaths, g as resolveContractPath, l as getTargetMigrations } from "./command-helpers-DutQjYgy-CDfFwtAa.mjs";
9
+ import { _ as resolveMigrationPaths, g as resolveContractPath, l as getTargetMigrations } from "./command-helpers-uzQbbM97-EaL4zWf5.mjs";
10
10
  import { s as loadContractSpaceAggregate } from "./aggregate-BKbHUHLA.mjs";
11
- import { l as refusePackageCorruptionOnAggregate } from "./contract-space-aggregate-loader-sF0OJ6oz-jRjdZoyZ.mjs";
11
+ import { l as refusePackageCorruptionOnAggregate } from "./contract-space-aggregate-loader-Cd0X2M_C-CFBkD540.mjs";
12
12
  import { i as writeMigrationTs } from "./migration-ts-BoHxxGvi.mjs";
13
13
  import { join, relative } from "pathe";
14
14
  import { readFile } from "node:fs/promises";
15
15
  import { APP_SPACE_ID, createControlStack } from "@prisma/orm-framework/components/control";
16
16
  import { notOk, ok } from "@prisma/orm-framework/utils/result";
17
- //#region ../../../1-framework/3-tooling/cli/dist/migration-new-DcPO4tiw.mjs
17
+ //#region ../../../1-framework/3-tooling/cli/dist/migration-new-BGI2g0SC.mjs
18
18
  /**
19
19
  * Policy core of `migration new`: scaffolds a migration package with a `migration.ts` stub for manual authoring.
20
20
  */
@@ -127,4 +127,4 @@ async function executeMigrationNewCommand(options) {
127
127
  //#endregion
128
128
  export { executeMigrationNewCommand as t };
129
129
 
130
- //# sourceMappingURL=migration-new-DcPO4tiw-Bew7S-bj.mjs.map
130
+ //# sourceMappingURL=migration-new-BGI2g0SC-SUBmaeRN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-new-DcPO4tiw-Bew7S-bj.mjs","names":["errorRuntime","CliStructuredError"],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-new-DcPO4tiw.mjs"],"sourcesContent":["import { A as errorTargetMigrationNotSupported, D as errorRuntime, M as errorUnexpected, t as CliStructuredError } from \"./cli-errors-CihMAEVj.mjs\";\nimport { t as assertFrameworkComponentsCompatible } from \"./framework-components-CXxMNF8E.mjs\";\nimport { t as createProjectSpecifierResolver } from \"./project-import-root-Bkz1gPB2.mjs\";\nimport { c as resolveMigrationPaths, i as getTargetMigrations, s as resolveContractPath } from \"./command-helpers-DutQjYgy.mjs\";\nimport { l as refusePackageCorruptionOnAggregate } from \"./contract-space-aggregate-loader-sF0OJ6oz.mjs\";\nimport { getEmittedArtifactPaths } from \"@internal/emitter\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { join, relative } from \"pathe\";\nimport { readFile } from \"node:fs/promises\";\nimport { APP_SPACE_ID, createControlStack } from \"@internal/framework-components/control\";\nimport { loadContractSpaceAggregate } from \"@internal/migration-tools/aggregate\";\nimport { findLatestMigration } from \"@internal/migration-tools/migration-graph\";\nimport { contractSnapshotDir, snapshotsImportPathFrom, writeContractSnapshot } from \"@internal/migration-tools/contract-snapshot-store\";\nimport { computeMigrationHash } from \"@internal/migration-tools/hash\";\nimport { formatMigrationDirName, writeMigrationPackage } from \"@internal/migration-tools/io\";\nimport { writeMigrationTs } from \"@internal/migration-tools/migration-ts\";\n//#region src/control-api/operations/migration-new.ts\n/**\n* Policy core of `migration new`: scaffolds a migration package with a `migration.ts` stub for manual authoring.\n*/\nasync function executeMigrationNewCommand(options) {\n\tconst config = options.config;\n\tconst cwd = options.cwd;\n\tconst { migrationsDir, appMigrationsDir, appMigrationsRelative } = resolveMigrationPaths(options.configPath, config, cwd);\n\tconst stack = createControlStack(config);\n\tconst familyInstance = config.family.create(stack);\n\tconst controlAdapter = config.adapter.create(stack);\n\tconst contractPathAbsolute = resolveContractPath(config);\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(errorRuntime(\"CLI.FILE_NOT_FOUND\", `Contract file not found at ${contractPathAbsolute}`, {\n\t\t\twhy: `Contract file not found at ${contractPathAbsolute}`,\n\t\t\tfix: \"Run `prisma-next contract emit` first to generate the contract\"\n\t\t}));\n\t\tthrow error;\n\t}\n\tlet toContract;\n\ttry {\n\t\tconst parsedContract = JSON.parse(contractJsonContent);\n\t\ttoContract = familyInstance.deserializeContract(parsedContract);\n\t} catch (error) {\n\t\treturn notOk(errorRuntime(\"MIGRATION.CONTRACT_DESERIALIZATION_FAILED\", \"Contract JSON is invalid\", {\n\t\t\twhy: `Failed to deserialize ${contractPathAbsolute}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\tfix: \"Run `prisma-next contract emit` to regenerate the contract\",\n\t\t\tcause: error\n\t\t}));\n\t}\n\tconst toStorageHash = toContract.storage?.storageHash;\n\tif (typeof toStorageHash !== \"string\") return notOk(errorRuntime(\"CONTRACT.VALIDATION_FAILED\", \"Contract is missing storageHash\", {\n\t\twhy: `Contract at ${contractPathAbsolute} has no storageHash`,\n\t\tfix: \"Run `prisma-next contract emit` to regenerate the contract\"\n\t}));\n\tconst aggregate = await loadContractSpaceAggregate({\n\t\tmigrationsDir,\n\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json),\n\t\tappContract: toContract\n\t});\n\tconst packageCorruptionFailure = refusePackageCorruptionOnAggregate(aggregate);\n\tif (packageCorruptionFailure) return notOk(packageCorruptionFailure);\n\tconst packages = aggregate.app.packages;\n\tconst graph = aggregate.app.graph();\n\tlet fromHash = null;\n\tif (packages.length > 0) if (options.from) {\n\t\tconst match = packages.find((p) => p.metadata.to.startsWith(options.from));\n\t\tif (!match) return notOk(errorRuntime(\"MIGRATION.HASH_NOT_IN_GRAPH\", \"Starting contract not found\", {\n\t\t\twhy: `No migration with to hash matching \"${options.from}\" exists in ${appMigrationsRelative}`,\n\t\t\tfix: \"Check that the --from hash matches a known migration target hash.\"\n\t\t}));\n\t\tfromHash = match.metadata.to;\n\t} else {\n\t\tconst latestMigration = findLatestMigration(graph);\n\t\tif (latestMigration) fromHash = latestMigration.to;\n\t}\n\tif (fromHash === toStorageHash && !options.from) return notOk(errorRuntime(\"MIGRATION.NO_CHANGES\", \"No changes detected\", {\n\t\twhy: \"The from and to contract hashes are identical — there is nothing to migrate.\",\n\t\tfix: \"Change the contract and run `prisma-next contract emit` before creating a new migration. To author a data-only migration on the current contract hash, pass `--from <hash>` explicitly.\"\n\t}));\n\tconst timestamp = /* @__PURE__ */ new Date();\n\tconst packageDir = join(appMigrationsDir, formatMigrationDirName(timestamp, options.name ?? \"migration\"));\n\tconst baseMetadata = {\n\t\tfrom: fromHash,\n\t\tto: toStorageHash,\n\t\tprovidedInvariants: [],\n\t\tcreatedAt: timestamp.toISOString()\n\t};\n\tconst metadata = {\n\t\t...baseMetadata,\n\t\tmigrationHash: computeMigrationHash(baseMetadata, [])\n\t};\n\tconst migrations = getTargetMigrations(config.target);\n\tif (!migrations) return notOk(errorTargetMigrationNotSupported({ why: `Target \"${config.target.targetId}\" does not support migrations` }));\n\ttry {\n\t\tassertFrameworkComponentsCompatible(config.family.familyId, config.target.targetId, [\n\t\t\tconfig.target,\n\t\t\tconfig.adapter,\n\t\t\t...config.extensions ?? []\n\t\t]);\n\t\tconst resolveSpecifier = createProjectSpecifierResolver(options.configPath);\n\t\tawait writeMigrationPackage(packageDir, metadata, []);\n\t\tconst destinationArtifacts = getEmittedArtifactPaths(contractPathAbsolute);\n\t\tconst [contractJsonRaw, contractDts] = await Promise.all([readFile(destinationArtifacts.jsonPath, \"utf-8\"), readFile(destinationArtifacts.dtsPath, \"utf-8\")]);\n\t\tawait writeContractSnapshot(migrationsDir, toStorageHash, {\n\t\t\tcontractJson: JSON.parse(contractJsonRaw),\n\t\t\tcontractDts\n\t\t});\n\t\tawait writeMigrationTs(packageDir, migrations.createPlanner(controlAdapter).emptyMigration({\n\t\t\tpackageDir,\n\t\t\tcontractJsonPath: join(contractSnapshotDir(migrationsDir, toStorageHash), \"contract.json\"),\n\t\t\tfromHash,\n\t\t\ttoHash: toStorageHash,\n\t\t\tsnapshotsImportPath: snapshotsImportPathFrom(packageDir, migrationsDir)\n\t\t}, APP_SPACE_ID).renderTypeScript(resolveSpecifier));\n\t\treturn ok({\n\t\t\tok: true,\n\t\t\tdir: relative(cwd, packageDir),\n\t\t\tfrom: fromHash,\n\t\t\tto: toStorageHash,\n\t\t\tsummary: `Scaffolded migration at ${relative(cwd, packageDir)}`\n\t\t});\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\treturn notOk(errorUnexpected(error instanceof Error ? error.message : String(error), { why: `Failed to scaffold migration: ${error instanceof Error ? error.message : String(error)}` }));\n\t}\n}\n//#endregion\nexport { executeMigrationNewCommand as t };\n\n//# sourceMappingURL=migration-new-DcPO4tiw.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"migration-new-BGI2g0SC-SUBmaeRN.mjs","names":["errorRuntime","CliStructuredError"],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-new-BGI2g0SC.mjs"],"sourcesContent":["import { A as errorTargetMigrationNotSupported, D as errorRuntime, M as errorUnexpected, t as CliStructuredError } from \"./cli-errors-CihMAEVj.mjs\";\nimport { t as assertFrameworkComponentsCompatible } from \"./framework-components-CXxMNF8E.mjs\";\nimport { t as createProjectSpecifierResolver } from \"./project-import-root-Bkz1gPB2.mjs\";\nimport { c as resolveMigrationPaths, i as getTargetMigrations, s as resolveContractPath } from \"./command-helpers-uzQbbM97.mjs\";\nimport { l as refusePackageCorruptionOnAggregate } from \"./contract-space-aggregate-loader-Cd0X2M_C.mjs\";\nimport { getEmittedArtifactPaths } from \"@internal/emitter\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { join, relative } from \"pathe\";\nimport { readFile } from \"node:fs/promises\";\nimport { APP_SPACE_ID, createControlStack } from \"@internal/framework-components/control\";\nimport { loadContractSpaceAggregate } from \"@internal/migration-tools/aggregate\";\nimport { findLatestMigration } from \"@internal/migration-tools/migration-graph\";\nimport { contractSnapshotDir, snapshotsImportPathFrom, writeContractSnapshot } from \"@internal/migration-tools/contract-snapshot-store\";\nimport { computeMigrationHash } from \"@internal/migration-tools/hash\";\nimport { formatMigrationDirName, writeMigrationPackage } from \"@internal/migration-tools/io\";\nimport { writeMigrationTs } from \"@internal/migration-tools/migration-ts\";\n//#region src/control-api/operations/migration-new.ts\n/**\n* Policy core of `migration new`: scaffolds a migration package with a `migration.ts` stub for manual authoring.\n*/\nasync function executeMigrationNewCommand(options) {\n\tconst config = options.config;\n\tconst cwd = options.cwd;\n\tconst { migrationsDir, appMigrationsDir, appMigrationsRelative } = resolveMigrationPaths(options.configPath, config, cwd);\n\tconst stack = createControlStack(config);\n\tconst familyInstance = config.family.create(stack);\n\tconst controlAdapter = config.adapter.create(stack);\n\tconst contractPathAbsolute = resolveContractPath(config);\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(errorRuntime(\"CLI.FILE_NOT_FOUND\", `Contract file not found at ${contractPathAbsolute}`, {\n\t\t\twhy: `Contract file not found at ${contractPathAbsolute}`,\n\t\t\tfix: \"Run `prisma-next contract emit` first to generate the contract\"\n\t\t}));\n\t\tthrow error;\n\t}\n\tlet toContract;\n\ttry {\n\t\tconst parsedContract = JSON.parse(contractJsonContent);\n\t\ttoContract = familyInstance.deserializeContract(parsedContract);\n\t} catch (error) {\n\t\treturn notOk(errorRuntime(\"MIGRATION.CONTRACT_DESERIALIZATION_FAILED\", \"Contract JSON is invalid\", {\n\t\t\twhy: `Failed to deserialize ${contractPathAbsolute}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\tfix: \"Run `prisma-next contract emit` to regenerate the contract\",\n\t\t\tcause: error\n\t\t}));\n\t}\n\tconst toStorageHash = toContract.storage?.storageHash;\n\tif (typeof toStorageHash !== \"string\") return notOk(errorRuntime(\"CONTRACT.VALIDATION_FAILED\", \"Contract is missing storageHash\", {\n\t\twhy: `Contract at ${contractPathAbsolute} has no storageHash`,\n\t\tfix: \"Run `prisma-next contract emit` to regenerate the contract\"\n\t}));\n\tconst aggregate = await loadContractSpaceAggregate({\n\t\tmigrationsDir,\n\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json),\n\t\tappContract: toContract\n\t});\n\tconst packageCorruptionFailure = refusePackageCorruptionOnAggregate(aggregate);\n\tif (packageCorruptionFailure) return notOk(packageCorruptionFailure);\n\tconst packages = aggregate.app.packages;\n\tconst graph = aggregate.app.graph();\n\tlet fromHash = null;\n\tif (packages.length > 0) if (options.from) {\n\t\tconst match = packages.find((p) => p.metadata.to.startsWith(options.from));\n\t\tif (!match) return notOk(errorRuntime(\"MIGRATION.HASH_NOT_IN_GRAPH\", \"Starting contract not found\", {\n\t\t\twhy: `No migration with to hash matching \"${options.from}\" exists in ${appMigrationsRelative}`,\n\t\t\tfix: \"Check that the --from hash matches a known migration target hash.\"\n\t\t}));\n\t\tfromHash = match.metadata.to;\n\t} else {\n\t\tconst latestMigration = findLatestMigration(graph);\n\t\tif (latestMigration) fromHash = latestMigration.to;\n\t}\n\tif (fromHash === toStorageHash && !options.from) return notOk(errorRuntime(\"MIGRATION.NO_CHANGES\", \"No changes detected\", {\n\t\twhy: \"The from and to contract hashes are identical — there is nothing to migrate.\",\n\t\tfix: \"Change the contract and run `prisma-next contract emit` before creating a new migration. To author a data-only migration on the current contract hash, pass `--from <hash>` explicitly.\"\n\t}));\n\tconst timestamp = /* @__PURE__ */ new Date();\n\tconst packageDir = join(appMigrationsDir, formatMigrationDirName(timestamp, options.name ?? \"migration\"));\n\tconst baseMetadata = {\n\t\tfrom: fromHash,\n\t\tto: toStorageHash,\n\t\tprovidedInvariants: [],\n\t\tcreatedAt: timestamp.toISOString()\n\t};\n\tconst metadata = {\n\t\t...baseMetadata,\n\t\tmigrationHash: computeMigrationHash(baseMetadata, [])\n\t};\n\tconst migrations = getTargetMigrations(config.target);\n\tif (!migrations) return notOk(errorTargetMigrationNotSupported({ why: `Target \"${config.target.targetId}\" does not support migrations` }));\n\ttry {\n\t\tassertFrameworkComponentsCompatible(config.family.familyId, config.target.targetId, [\n\t\t\tconfig.target,\n\t\t\tconfig.adapter,\n\t\t\t...config.extensions ?? []\n\t\t]);\n\t\tconst resolveSpecifier = createProjectSpecifierResolver(options.configPath);\n\t\tawait writeMigrationPackage(packageDir, metadata, []);\n\t\tconst destinationArtifacts = getEmittedArtifactPaths(contractPathAbsolute);\n\t\tconst [contractJsonRaw, contractDts] = await Promise.all([readFile(destinationArtifacts.jsonPath, \"utf-8\"), readFile(destinationArtifacts.dtsPath, \"utf-8\")]);\n\t\tawait writeContractSnapshot(migrationsDir, toStorageHash, {\n\t\t\tcontractJson: JSON.parse(contractJsonRaw),\n\t\t\tcontractDts\n\t\t});\n\t\tawait writeMigrationTs(packageDir, migrations.createPlanner(controlAdapter).emptyMigration({\n\t\t\tpackageDir,\n\t\t\tcontractJsonPath: join(contractSnapshotDir(migrationsDir, toStorageHash), \"contract.json\"),\n\t\t\tfromHash,\n\t\t\ttoHash: toStorageHash,\n\t\t\tsnapshotsImportPath: snapshotsImportPathFrom(packageDir, migrationsDir)\n\t\t}, APP_SPACE_ID).renderTypeScript(resolveSpecifier));\n\t\treturn ok({\n\t\t\tok: true,\n\t\t\tdir: relative(cwd, packageDir),\n\t\t\tfrom: fromHash,\n\t\t\tto: toStorageHash,\n\t\t\tsummary: `Scaffolded migration at ${relative(cwd, packageDir)}`\n\t\t});\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\treturn notOk(errorUnexpected(error instanceof Error ? error.message : String(error), { why: `Failed to scaffold migration: ${error instanceof Error ? error.message : String(error)}` }));\n\t}\n}\n//#endregion\nexport { executeMigrationNewCommand as t };\n\n//# sourceMappingURL=migration-new-BGI2g0SC.mjs.map"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { o as loadConfigForSections } from "./exports-BZLNbtkY.mjs";
2
- import { n as createTerminalUI } from "./terminal-ui-DQNCDg2u-B3PFqjB8.mjs";
3
- import { b as setCommandExamples, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, y as setCommandDescriptions } from "./command-helpers-DutQjYgy-CDfFwtAa.mjs";
4
- import { t as executeMigrationNewCommand } from "./migration-new-DcPO4tiw-Bew7S-bj.mjs";
2
+ import { n as createTerminalUI } from "./terminal-ui-CUZTa2vH-WvAtuIOS.mjs";
3
+ import { b as setCommandExamples, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, y as setCommandDescriptions } from "./command-helpers-uzQbbM97-EaL4zWf5.mjs";
4
+ import { t as executeMigrationNewCommand } from "./migration-new-BGI2g0SC-SUBmaeRN.mjs";
5
5
  import { ifDefined } from "@prisma/orm-framework/utils/defined";
6
6
  import { Command } from "commander";
7
- //#region ../../../1-framework/3-tooling/cli/dist/migration-new-1LYliIXy.mjs
7
+ //#region ../../../1-framework/3-tooling/cli/dist/migration-new-BHv-aJzG.mjs
8
8
  /**
9
9
  * `migration new` — scaffolds a migration package with a `migration.ts` file
10
10
  * for manual authoring.
@@ -67,4 +67,4 @@ function createMigrationNewCommand() {
67
67
  //#endregion
68
68
  export { createMigrationNewCommand as t };
69
69
 
70
- //# sourceMappingURL=migration-new-1LYliIXy-BK_Xz0Z6.mjs.map
70
+ //# sourceMappingURL=migration-new-BHv-aJzG-Bj7aJDNX.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-new-1LYliIXy-BK_Xz0Z6.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-new-1LYliIXy.mjs"],"sourcesContent":["import { t as createTerminalUI } from \"./terminal-ui-DQNCDg2u.mjs\";\nimport { S as formatStyledHeader, _ as parseGlobalFlagsOrExit, d as setCommandExamples, t as addGlobalOptions, u as setCommandDescriptions, v as handleResult } from \"./command-helpers-DutQjYgy.mjs\";\nimport { t as executeMigrationNewCommand } from \"./migration-new-DcPO4tiw.mjs\";\nimport { Command } from \"commander\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { ifDefined } from \"@internal/utils/defined\";\n//#region src/commands/migration-new.ts\n/**\n* `migration new` — scaffolds a migration package with a `migration.ts` file\n* for manual authoring.\n*\n* The planner's `emptyMigration(context)` returns a\n* `MigrationPlanWithAuthoringSurface`, whose `renderTypeScript(resolver)`\n* produces the target-appropriate empty stub. The CLI writes the returned\n* source verbatim.\n*\n* The resolver is the one this project's own manifest implies, so the\n* scaffold names packages the project can resolve — the same resolver\n* `contract emit` hands to the emitter (ADR 242).\n*/\nasync function runMigrationNew(options) {\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\treturn executeMigrationNewCommand({\n\t\t...options,\n\t\tconfig: configResult.value,\n\t\tcwd: process.cwd(),\n\t\t...ifDefined(\"configPath\", options.config)\n\t});\n}\nfunction createMigrationNewCommand() {\n\tconst command = new Command(\"new\");\n\tsetCommandDescriptions(command, \"Scaffold a new migration for manual authoring\", \"Creates a migration package with a migration.ts file for manual authoring.\\nWrite the migration body in migration.ts, then run the file with Node\\n(`node migration.ts`) to self-emit ops.json and attest the package.\");\n\tsetCommandExamples(command, [\"prisma-next migration new --name split-name\", \"prisma-next migration new --name custom-fk --from abc123...\"]);\n\taddGlobalOptions(command).option(\"--name <slug>\", \"Migration name (used in directory name)\").option(\"--from <hash>\", \"Starting contract hash (default: latest migration target)\").option(\"--config <path>\", \"Path to prisma-next.config.ts\").action(async (options) => {\n\t\tconst flags = parseGlobalFlagsOrExit(options);\n\t\tconst ui = createTerminalUI(flags);\n\t\tif (!flags.json && !flags.quiet) {\n\t\t\tconst header = formatStyledHeader({\n\t\t\t\tcommand: \"migration new\",\n\t\t\t\tdescription: \"Scaffold a new migration\",\n\t\t\t\tdetails: [],\n\t\t\t\tflags\n\t\t\t});\n\t\t\tui.stderr(header);\n\t\t}\n\t\tconst exitCode = handleResult(await runMigrationNew(options), flags, ui, (value) => {\n\t\t\tif (flags.json) ui.output(JSON.stringify(value, null, 2));\n\t\t\telse if (!flags.quiet) {\n\t\t\t\tui.output(`\\nScaffolded migration at ${value.dir}`);\n\t\t\t\tui.output(` from: ${value.from}`);\n\t\t\t\tui.output(` to: ${value.to}`);\n\t\t\t\tui.output(`\\nEdit migration.ts, then run it directly (\\`node \"${value.dir}/migration.ts\"\\`) to self-emit and attest.`);\n\t\t\t}\n\t\t});\n\t\tprocess.exit(exitCode);\n\t});\n\treturn command;\n}\n//#endregion\nexport { createMigrationNewCommand as t };\n\n//# sourceMappingURL=migration-new-1LYliIXy.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;;AAoBA,eAAe,gBAAgB,SAAS;CACvC,MAAM,eAAe,MAAM,sBAAsB,QAAQ,QAAQ;EAChE;EACA;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,IAAI,CAAC,aAAa,IAAI,OAAO;CAC7B,OAAO,2BAA2B;EACjC,GAAG;EACH,QAAQ,aAAa;EACrB,KAAK,QAAQ,IAAI;EACjB,GAAG,UAAU,cAAc,QAAQ,MAAM;CAC1C,CAAC;AACF;AACA,SAAS,4BAA4B;CACpC,MAAM,UAAU,IAAI,QAAQ,KAAK;CACjC,uBAAuB,SAAS,iDAAiD,wNAAwN;CACzS,mBAAmB,SAAS,CAAC,+CAA+C,6DAA6D,CAAC;CAC1I,iBAAiB,OAAO,CAAC,CAAC,OAAO,iBAAiB,yCAAyC,CAAC,CAAC,OAAO,iBAAiB,2DAA2D,CAAC,CAAC,OAAO,mBAAmB,+BAA+B,CAAC,CAAC,OAAO,OAAO,YAAY;EACtQ,MAAM,QAAQ,uBAAuB,OAAO;EAC5C,MAAM,KAAK,iBAAiB,KAAK;EACjC,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO;GAChC,MAAM,SAAS,mBAAmB;IACjC,SAAS;IACT,aAAa;IACb,SAAS,CAAC;IACV;GACD,CAAC;GACD,GAAG,OAAO,MAAM;EACjB;EACA,MAAM,WAAW,aAAa,MAAM,gBAAgB,OAAO,GAAG,OAAO,KAAK,UAAU;GACnF,IAAI,MAAM,MAAM,GAAG,OAAO,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,OAAO;IACtB,GAAG,OAAO,6BAA6B,MAAM,KAAK;IAClD,GAAG,OAAO,WAAW,MAAM,MAAM;IACjC,GAAG,OAAO,WAAW,MAAM,IAAI;IAC/B,GAAG,OAAO,sDAAsD,MAAM,IAAI,2CAA2C;GACtH;EACD,CAAC;EACD,QAAQ,KAAK,QAAQ;CACtB,CAAC;CACD,OAAO;AACR"}
1
+ {"version":3,"file":"migration-new-BHv-aJzG-Bj7aJDNX.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-new-BHv-aJzG.mjs"],"sourcesContent":["import { t as createTerminalUI } from \"./terminal-ui-CUZTa2vH.mjs\";\nimport { S as formatStyledHeader, _ as parseGlobalFlagsOrExit, d as setCommandExamples, t as addGlobalOptions, u as setCommandDescriptions, v as handleResult } from \"./command-helpers-uzQbbM97.mjs\";\nimport { t as executeMigrationNewCommand } from \"./migration-new-BGI2g0SC.mjs\";\nimport { Command } from \"commander\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { ifDefined } from \"@internal/utils/defined\";\n//#region src/commands/migration-new.ts\n/**\n* `migration new` — scaffolds a migration package with a `migration.ts` file\n* for manual authoring.\n*\n* The planner's `emptyMigration(context)` returns a\n* `MigrationPlanWithAuthoringSurface`, whose `renderTypeScript(resolver)`\n* produces the target-appropriate empty stub. The CLI writes the returned\n* source verbatim.\n*\n* The resolver is the one this project's own manifest implies, so the\n* scaffold names packages the project can resolve — the same resolver\n* `contract emit` hands to the emitter (ADR 242).\n*/\nasync function runMigrationNew(options) {\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\treturn executeMigrationNewCommand({\n\t\t...options,\n\t\tconfig: configResult.value,\n\t\tcwd: process.cwd(),\n\t\t...ifDefined(\"configPath\", options.config)\n\t});\n}\nfunction createMigrationNewCommand() {\n\tconst command = new Command(\"new\");\n\tsetCommandDescriptions(command, \"Scaffold a new migration for manual authoring\", \"Creates a migration package with a migration.ts file for manual authoring.\\nWrite the migration body in migration.ts, then run the file with Node\\n(`node migration.ts`) to self-emit ops.json and attest the package.\");\n\tsetCommandExamples(command, [\"prisma-next migration new --name split-name\", \"prisma-next migration new --name custom-fk --from abc123...\"]);\n\taddGlobalOptions(command).option(\"--name <slug>\", \"Migration name (used in directory name)\").option(\"--from <hash>\", \"Starting contract hash (default: latest migration target)\").option(\"--config <path>\", \"Path to prisma-next.config.ts\").action(async (options) => {\n\t\tconst flags = parseGlobalFlagsOrExit(options);\n\t\tconst ui = createTerminalUI(flags);\n\t\tif (!flags.json && !flags.quiet) {\n\t\t\tconst header = formatStyledHeader({\n\t\t\t\tcommand: \"migration new\",\n\t\t\t\tdescription: \"Scaffold a new migration\",\n\t\t\t\tdetails: [],\n\t\t\t\tflags\n\t\t\t});\n\t\t\tui.stderr(header);\n\t\t}\n\t\tconst exitCode = handleResult(await runMigrationNew(options), flags, ui, (value) => {\n\t\t\tif (flags.json) ui.output(JSON.stringify(value, null, 2));\n\t\t\telse if (!flags.quiet) {\n\t\t\t\tui.output(`\\nScaffolded migration at ${value.dir}`);\n\t\t\t\tui.output(` from: ${value.from}`);\n\t\t\t\tui.output(` to: ${value.to}`);\n\t\t\t\tui.output(`\\nEdit migration.ts, then run it directly (\\`node \"${value.dir}/migration.ts\"\\`) to self-emit and attest.`);\n\t\t\t}\n\t\t});\n\t\tprocess.exit(exitCode);\n\t});\n\treturn command;\n}\n//#endregion\nexport { createMigrationNewCommand as t };\n\n//# sourceMappingURL=migration-new-BHv-aJzG.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;;AAoBA,eAAe,gBAAgB,SAAS;CACvC,MAAM,eAAe,MAAM,sBAAsB,QAAQ,QAAQ;EAChE;EACA;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,IAAI,CAAC,aAAa,IAAI,OAAO;CAC7B,OAAO,2BAA2B;EACjC,GAAG;EACH,QAAQ,aAAa;EACrB,KAAK,QAAQ,IAAI;EACjB,GAAG,UAAU,cAAc,QAAQ,MAAM;CAC1C,CAAC;AACF;AACA,SAAS,4BAA4B;CACpC,MAAM,UAAU,IAAI,QAAQ,KAAK;CACjC,uBAAuB,SAAS,iDAAiD,wNAAwN;CACzS,mBAAmB,SAAS,CAAC,+CAA+C,6DAA6D,CAAC;CAC1I,iBAAiB,OAAO,CAAC,CAAC,OAAO,iBAAiB,yCAAyC,CAAC,CAAC,OAAO,iBAAiB,2DAA2D,CAAC,CAAC,OAAO,mBAAmB,+BAA+B,CAAC,CAAC,OAAO,OAAO,YAAY;EACtQ,MAAM,QAAQ,uBAAuB,OAAO;EAC5C,MAAM,KAAK,iBAAiB,KAAK;EACjC,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,OAAO;GAChC,MAAM,SAAS,mBAAmB;IACjC,SAAS;IACT,aAAa;IACb,SAAS,CAAC;IACV;GACD,CAAC;GACD,GAAG,OAAO,MAAM;EACjB;EACA,MAAM,WAAW,aAAa,MAAM,gBAAgB,OAAO,GAAG,OAAO,KAAK,UAAU;GACnF,IAAI,MAAM,MAAM,GAAG,OAAO,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,OAAO;IACtB,GAAG,OAAO,6BAA6B,MAAM,KAAK;IAClD,GAAG,OAAO,WAAW,MAAM,MAAM;IACjC,GAAG,OAAO,WAAW,MAAM,IAAI;IAC/B,GAAG,OAAO,sDAAsD,MAAM,IAAI,2CAA2C;GACtH;EACD,CAAC;EACD,QAAQ,KAAK,QAAQ;CACtB,CAAC;CACD,OAAO;AACR"}
@@ -1,11 +1,11 @@
1
1
  import { o as loadConfigForSections } from "./exports-BZLNbtkY.mjs";
2
- import { n as createTerminalUI } from "./terminal-ui-DQNCDg2u-B3PFqjB8.mjs";
3
- import { b as setCommandExamples, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, y as setCommandDescriptions } from "./command-helpers-DutQjYgy-CDfFwtAa.mjs";
4
- import { t as executeMigrationPlanCommand } from "./migration-plan-Cb7s5Ifx-Bwa2O0Ov.mjs";
2
+ import { n as createTerminalUI } from "./terminal-ui-CUZTa2vH-WvAtuIOS.mjs";
3
+ import { b as setCommandExamples, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, y as setCommandDescriptions } from "./command-helpers-uzQbbM97-EaL4zWf5.mjs";
4
+ import { t as executeMigrationPlanCommand } from "./migration-plan-B4ND_Xr3-CXfh2r_I.mjs";
5
5
  import { ifDefined } from "@prisma/orm-framework/utils/defined";
6
6
  import { notOk, ok } from "@prisma/orm-framework/utils/result";
7
7
  import { Command } from "commander";
8
- //#region ../../../1-framework/3-tooling/cli/dist/migration-plan-B0z2Qpa5.mjs
8
+ //#region ../../../1-framework/3-tooling/cli/dist/migration-plan-31dDf3Wj.mjs
9
9
  async function runMigrationPlan(options, startTime, callbacks) {
10
10
  const configResult = await loadConfigForSections(options.config, [
11
11
  "family",
@@ -189,4 +189,4 @@ function resolveBundleByPrefix(bundles, needle) {
189
189
  //#endregion
190
190
  export { formatMigrationPlanOutput as n, resolveBundleByPrefix as r, createMigrationPlanCommand as t };
191
191
 
192
- //# sourceMappingURL=migration-plan-B0z2Qpa5-6b1SJSsb.mjs.map
192
+ //# sourceMappingURL=migration-plan-31dDf3Wj-_kWI5F9v.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-plan-B0z2Qpa5-6b1SJSsb.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-plan-B0z2Qpa5.mjs"],"sourcesContent":["import { t as createTerminalUI } from \"./terminal-ui-DQNCDg2u.mjs\";\nimport { S as formatStyledHeader, _ as parseGlobalFlagsOrExit, d as setCommandExamples, t as addGlobalOptions, u as setCommandDescriptions, v as handleResult } from \"./command-helpers-DutQjYgy.mjs\";\nimport { t as executeMigrationPlanCommand } from \"./migration-plan-Cb7s5Ifx.mjs\";\nimport { Command } from \"commander\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\n//#region src/commands/migration-plan.ts\nasync function runMigrationPlan(options, startTime, callbacks) {\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\treturn executeMigrationPlanCommand({\n\t\t...options,\n\t\tconfig: configResult.value,\n\t\tcwd: process.cwd(),\n\t\t...ifDefined(\"configPath\", options.config)\n\t}, startTime, callbacks);\n}\nfunction createMigrationPlanCommand() {\n\tconst command = new Command(\"plan\");\n\tsetCommandDescriptions(command, \"Plan a migration from contract changes\", \"Compares the emitted contract against the latest on-disk migration state and\\nproduces a new migration package with the required operations. No database\\nconnection is needed — this is a fully offline operation.\");\n\tsetCommandExamples(command, [\n\t\t\"prisma-next migration plan\",\n\t\t\"prisma-next migration plan --name add-users-table\",\n\t\t\"prisma-next migration plan --to <migration-dir>^ --name rollback\"\n\t]);\n\taddGlobalOptions(command).option(\"--config <path>\", \"Path to prisma-next.config.ts\").option(\"--name <slug>\", \"Name slug for the migration directory\", \"migration\").option(\"--from <contract>\", \"Starting contract reference (hash, prefix, ref name, migration dir name, <dir>^, or ./path)\").option(\"--to <contract>\", \"Destination contract reference (hash, prefix, ref name, migration dir name, <dir>^, or ./path); defaults to the emitted contract\").action(async (options) => {\n\t\tconst flags = parseGlobalFlagsOrExit(options);\n\t\tconst startTime = Date.now();\n\t\tconst ui = createTerminalUI(flags);\n\t\tconst exitCode = handleResult(await runMigrationPlan(options, startTime, {\n\t\t\tonContextResolved: ({ configPath, contractPath, appMigrationsRelative }) => {\n\t\t\t\tif (!flags.json && !flags.quiet) {\n\t\t\t\t\tconst details = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"config\",\n\t\t\t\t\t\t\tvalue: configPath\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"contract\",\n\t\t\t\t\t\t\tvalue: contractPath\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"migrations\",\n\t\t\t\t\t\t\tvalue: appMigrationsRelative\n\t\t\t\t\t\t}\n\t\t\t\t\t];\n\t\t\t\t\tif (options.from) details.push({\n\t\t\t\t\t\tlabel: \"from\",\n\t\t\t\t\t\tvalue: options.from\n\t\t\t\t\t});\n\t\t\t\t\tif (options.to) details.push({\n\t\t\t\t\t\tlabel: \"to\",\n\t\t\t\t\t\tvalue: options.to\n\t\t\t\t\t});\n\t\t\t\t\tif (options.name) details.push({\n\t\t\t\t\t\tlabel: \"name\",\n\t\t\t\t\t\tvalue: options.name\n\t\t\t\t\t});\n\t\t\t\t\tconst header = formatStyledHeader({\n\t\t\t\t\t\tcommand: \"migration plan\",\n\t\t\t\t\t\tdescription: \"Plan a migration from contract changes\",\n\t\t\t\t\t\turl: \"https://pris.ly/migration-plan\",\n\t\t\t\t\t\tdetails,\n\t\t\t\t\t\tflags\n\t\t\t\t\t});\n\t\t\t\t\tui.stderr(header);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSeeded: (record) => {\n\t\t\t\tif (!flags.json && !flags.quiet && record.action === \"updated\") {\n\t\t\t\t\tconst pkgSuffix = record.newMigrationDirs.length > 0 ? `; ${record.newMigrationDirs.length} new migration package(s) materialised` : \"\";\n\t\t\t\t\tui.step(`Updated ${record.spaceId} to ${record.newHash}${pkgSuffix}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}), flags, ui, (planResult) => {\n\t\t\tif (flags.json) ui.output(JSON.stringify(planResult, null, 2));\n\t\t\telse if (!flags.quiet) ui.log(formatMigrationPlanOutput(planResult, flags));\n\t\t});\n\t\tprocess.exit(exitCode);\n\t});\n\treturn command;\n}\nfunction formatMigrationPlanOutput(result, flags) {\n\tconst lines = [];\n\tconst useColor = flags.color !== false;\n\tconst green_ = useColor ? (s) => `\\x1b[32m${s}\\x1b[0m` : (s) => s;\n\tconst yellow_ = useColor ? (s) => `\\x1b[33m${s}\\x1b[0m` : (s) => s;\n\tconst dim_ = useColor ? (s) => `\\x1b[2m${s}\\x1b[0m` : (s) => s;\n\tfunction appendEmittedExtensions() {\n\t\tif (result.emittedExtensionDirs.length === 0) return;\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(\"Emitted extension migrations:\"));\n\t\tfor (const entry of result.emittedExtensionDirs) lines.push(dim_(` ${entry.spaceId} → migrations/${entry.spaceId}/${entry.dirName}`));\n\t\tlines.push(\"\");\n\t\tlines.push(`Next: review the extension migrations above, then run ${green_(\"prisma-next migrate\")}.`);\n\t}\n\tif (result.noOp) {\n\t\tlines.push(`${green_(\"✔\")} No changes detected`);\n\t\tlines.push(dim_(` from: ${result.from}`));\n\t\tlines.push(dim_(` to: ${result.to}`));\n\t\tappendEmittedExtensions();\n\t\treturn lines.join(\"\\n\");\n\t}\n\tif (result.pendingPlaceholders) {\n\t\tlines.push(`${yellow_(\"⚠\")} ${result.summary}`);\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(`from: ${result.from}`));\n\t\tlines.push(dim_(`to: ${result.to}`));\n\t\tif (result.dir) lines.push(dim_(`dir: ${result.dir}`));\n\t\tlines.push(\"\");\n\t\tlines.push(\"Open migration.ts and replace each `placeholder(...)` call with your actual query.\");\n\t\tlines.push(`Then run: ${green_(`node ${result.dir ?? \"<dir>\"}/migration.ts`)}`);\n\t\tappendEmittedExtensions();\n\t\treturn lines.join(\"\\n\");\n\t}\n\tlines.push(`${green_(\"✔\")} ${result.summary}`);\n\tlines.push(\"\");\n\tif (result.operations.length > 0) {\n\t\tlines.push(dim_(\"│\"));\n\t\tfor (let i = 0; i < result.operations.length; i++) {\n\t\t\tconst op = result.operations[i];\n\t\t\tconst treeChar = i === result.operations.length - 1 ? \"└\" : \"├\";\n\t\t\tconst destructiveMarker = op.operationClass === \"destructive\" ? ` ${yellow_(\"(destructive)\")}` : \"\";\n\t\t\tlines.push(`${dim_(treeChar)}─ ${op.label}${destructiveMarker}`);\n\t\t}\n\t\tif (result.operations.some((op) => op.operationClass === \"destructive\")) {\n\t\t\tlines.push(\"\");\n\t\t\tlines.push(`${yellow_(\"⚠\")} This migration contains destructive operations that may cause data loss.`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\tlines.push(dim_(`from: ${result.from}`));\n\tlines.push(dim_(`to: ${result.to}`));\n\tif (result.baselineDir) lines.push(dim_(`Baseline → ${result.baselineDir}`));\n\tif (result.dir) lines.push(dim_(`App space → ${result.dir}`));\n\tfor (const entry of result.emittedExtensionDirs) lines.push(dim_(`Extension space ${entry.spaceId} → migrations/${entry.spaceId}/${entry.dirName}`));\n\tlines.push(\"\");\n\tconst reviewTarget = result.baselineDir !== void 0 && result.dir !== void 0 ? `${result.baselineDir} and ${result.dir}` : result.baselineDir ?? result.dir ?? \"<dir>\";\n\tlines.push(`Next: review ${green_(reviewTarget)} if needed, then run ${green_(\"prisma-next migrate\")}.`);\n\tif (result.preview && result.preview.statements.length > 0) {\n\t\tconst allSql = result.preview.statements.every((s) => s.language === \"sql\");\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(allSql ? \"DDL preview\" : \"Operation preview\"));\n\t\tlines.push(\"\");\n\t\tfor (const statement of result.preview.statements) {\n\t\t\tconst trimmed = statement.text.trim();\n\t\t\tif (!trimmed) continue;\n\t\t\tconst line = statement.language === \"sql\" && !trimmed.endsWith(\";\") ? `${trimmed};` : trimmed;\n\t\t\tlines.push(line);\n\t\t}\n\t}\n\tif (flags.verbose && result.timings) {\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(`Total time: ${result.timings.total}ms`));\n\t}\n\treturn lines.join(\"\\n\");\n}\n/**\n* Resolve a migration package by **target contract hash** (`metadata.to`)\n* using exact match or prefix match.\n*\n* Note: matches `metadata.to` (the contract hash this migration produces),\n* not `metadata.migrationHash` (the package's content-addressed identity).\n* Tries exact match first, then prefix match. Returns the matched package on\n* success, or a discriminated failure indicating whether the prefix was\n* ambiguous or simply not found.\n*\n* @internal Exported for testing only.\n*/\nfunction resolveBundleByPrefix(bundles, needle) {\n\tconst exact = bundles.find((p) => p.metadata.to === needle);\n\tif (exact) return ok(exact);\n\tconst candidates = bundles.filter((p) => p.metadata.to.startsWith(needle));\n\tif (candidates.length === 1) return ok(candidates[0]);\n\tif (candidates.length > 1) return notOk({\n\t\treason: \"ambiguous\",\n\t\tcount: candidates.length\n\t});\n\treturn notOk({ reason: \"not-found\" });\n}\n//#endregion\nexport { formatMigrationPlanOutput as n, resolveBundleByPrefix as r, createMigrationPlanCommand as t };\n\n//# sourceMappingURL=migration-plan-B0z2Qpa5.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"migration-plan-31dDf3Wj-_kWI5F9v.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-plan-31dDf3Wj.mjs"],"sourcesContent":["import { t as createTerminalUI } from \"./terminal-ui-CUZTa2vH.mjs\";\nimport { S as formatStyledHeader, _ as parseGlobalFlagsOrExit, d as setCommandExamples, t as addGlobalOptions, u as setCommandDescriptions, v as handleResult } from \"./command-helpers-uzQbbM97.mjs\";\nimport { t as executeMigrationPlanCommand } from \"./migration-plan-B4ND_Xr3.mjs\";\nimport { Command } from \"commander\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\n//#region src/commands/migration-plan.ts\nasync function runMigrationPlan(options, startTime, callbacks) {\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\treturn executeMigrationPlanCommand({\n\t\t...options,\n\t\tconfig: configResult.value,\n\t\tcwd: process.cwd(),\n\t\t...ifDefined(\"configPath\", options.config)\n\t}, startTime, callbacks);\n}\nfunction createMigrationPlanCommand() {\n\tconst command = new Command(\"plan\");\n\tsetCommandDescriptions(command, \"Plan a migration from contract changes\", \"Compares the emitted contract against the latest on-disk migration state and\\nproduces a new migration package with the required operations. No database\\nconnection is needed — this is a fully offline operation.\");\n\tsetCommandExamples(command, [\n\t\t\"prisma-next migration plan\",\n\t\t\"prisma-next migration plan --name add-users-table\",\n\t\t\"prisma-next migration plan --to <migration-dir>^ --name rollback\"\n\t]);\n\taddGlobalOptions(command).option(\"--config <path>\", \"Path to prisma-next.config.ts\").option(\"--name <slug>\", \"Name slug for the migration directory\", \"migration\").option(\"--from <contract>\", \"Starting contract reference (hash, prefix, ref name, migration dir name, <dir>^, or ./path)\").option(\"--to <contract>\", \"Destination contract reference (hash, prefix, ref name, migration dir name, <dir>^, or ./path); defaults to the emitted contract\").action(async (options) => {\n\t\tconst flags = parseGlobalFlagsOrExit(options);\n\t\tconst startTime = Date.now();\n\t\tconst ui = createTerminalUI(flags);\n\t\tconst exitCode = handleResult(await runMigrationPlan(options, startTime, {\n\t\t\tonContextResolved: ({ configPath, contractPath, appMigrationsRelative }) => {\n\t\t\t\tif (!flags.json && !flags.quiet) {\n\t\t\t\t\tconst details = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"config\",\n\t\t\t\t\t\t\tvalue: configPath\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"contract\",\n\t\t\t\t\t\t\tvalue: contractPath\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"migrations\",\n\t\t\t\t\t\t\tvalue: appMigrationsRelative\n\t\t\t\t\t\t}\n\t\t\t\t\t];\n\t\t\t\t\tif (options.from) details.push({\n\t\t\t\t\t\tlabel: \"from\",\n\t\t\t\t\t\tvalue: options.from\n\t\t\t\t\t});\n\t\t\t\t\tif (options.to) details.push({\n\t\t\t\t\t\tlabel: \"to\",\n\t\t\t\t\t\tvalue: options.to\n\t\t\t\t\t});\n\t\t\t\t\tif (options.name) details.push({\n\t\t\t\t\t\tlabel: \"name\",\n\t\t\t\t\t\tvalue: options.name\n\t\t\t\t\t});\n\t\t\t\t\tconst header = formatStyledHeader({\n\t\t\t\t\t\tcommand: \"migration plan\",\n\t\t\t\t\t\tdescription: \"Plan a migration from contract changes\",\n\t\t\t\t\t\turl: \"https://pris.ly/migration-plan\",\n\t\t\t\t\t\tdetails,\n\t\t\t\t\t\tflags\n\t\t\t\t\t});\n\t\t\t\t\tui.stderr(header);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSeeded: (record) => {\n\t\t\t\tif (!flags.json && !flags.quiet && record.action === \"updated\") {\n\t\t\t\t\tconst pkgSuffix = record.newMigrationDirs.length > 0 ? `; ${record.newMigrationDirs.length} new migration package(s) materialised` : \"\";\n\t\t\t\t\tui.step(`Updated ${record.spaceId} to ${record.newHash}${pkgSuffix}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}), flags, ui, (planResult) => {\n\t\t\tif (flags.json) ui.output(JSON.stringify(planResult, null, 2));\n\t\t\telse if (!flags.quiet) ui.log(formatMigrationPlanOutput(planResult, flags));\n\t\t});\n\t\tprocess.exit(exitCode);\n\t});\n\treturn command;\n}\nfunction formatMigrationPlanOutput(result, flags) {\n\tconst lines = [];\n\tconst useColor = flags.color !== false;\n\tconst green_ = useColor ? (s) => `\\x1b[32m${s}\\x1b[0m` : (s) => s;\n\tconst yellow_ = useColor ? (s) => `\\x1b[33m${s}\\x1b[0m` : (s) => s;\n\tconst dim_ = useColor ? (s) => `\\x1b[2m${s}\\x1b[0m` : (s) => s;\n\tfunction appendEmittedExtensions() {\n\t\tif (result.emittedExtensionDirs.length === 0) return;\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(\"Emitted extension migrations:\"));\n\t\tfor (const entry of result.emittedExtensionDirs) lines.push(dim_(` ${entry.spaceId} → migrations/${entry.spaceId}/${entry.dirName}`));\n\t\tlines.push(\"\");\n\t\tlines.push(`Next: review the extension migrations above, then run ${green_(\"prisma-next migrate\")}.`);\n\t}\n\tif (result.noOp) {\n\t\tlines.push(`${green_(\"✔\")} No changes detected`);\n\t\tlines.push(dim_(` from: ${result.from}`));\n\t\tlines.push(dim_(` to: ${result.to}`));\n\t\tappendEmittedExtensions();\n\t\treturn lines.join(\"\\n\");\n\t}\n\tif (result.pendingPlaceholders) {\n\t\tlines.push(`${yellow_(\"⚠\")} ${result.summary}`);\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(`from: ${result.from}`));\n\t\tlines.push(dim_(`to: ${result.to}`));\n\t\tif (result.dir) lines.push(dim_(`dir: ${result.dir}`));\n\t\tlines.push(\"\");\n\t\tlines.push(\"Open migration.ts and replace each `placeholder(...)` call with your actual query.\");\n\t\tlines.push(`Then run: ${green_(`node ${result.dir ?? \"<dir>\"}/migration.ts`)}`);\n\t\tappendEmittedExtensions();\n\t\treturn lines.join(\"\\n\");\n\t}\n\tlines.push(`${green_(\"✔\")} ${result.summary}`);\n\tlines.push(\"\");\n\tif (result.operations.length > 0) {\n\t\tlines.push(dim_(\"│\"));\n\t\tfor (let i = 0; i < result.operations.length; i++) {\n\t\t\tconst op = result.operations[i];\n\t\t\tconst treeChar = i === result.operations.length - 1 ? \"└\" : \"├\";\n\t\t\tconst destructiveMarker = op.operationClass === \"destructive\" ? ` ${yellow_(\"(destructive)\")}` : \"\";\n\t\t\tlines.push(`${dim_(treeChar)}─ ${op.label}${destructiveMarker}`);\n\t\t}\n\t\tif (result.operations.some((op) => op.operationClass === \"destructive\")) {\n\t\t\tlines.push(\"\");\n\t\t\tlines.push(`${yellow_(\"⚠\")} This migration contains destructive operations that may cause data loss.`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\tlines.push(dim_(`from: ${result.from}`));\n\tlines.push(dim_(`to: ${result.to}`));\n\tif (result.baselineDir) lines.push(dim_(`Baseline → ${result.baselineDir}`));\n\tif (result.dir) lines.push(dim_(`App space → ${result.dir}`));\n\tfor (const entry of result.emittedExtensionDirs) lines.push(dim_(`Extension space ${entry.spaceId} → migrations/${entry.spaceId}/${entry.dirName}`));\n\tlines.push(\"\");\n\tconst reviewTarget = result.baselineDir !== void 0 && result.dir !== void 0 ? `${result.baselineDir} and ${result.dir}` : result.baselineDir ?? result.dir ?? \"<dir>\";\n\tlines.push(`Next: review ${green_(reviewTarget)} if needed, then run ${green_(\"prisma-next migrate\")}.`);\n\tif (result.preview && result.preview.statements.length > 0) {\n\t\tconst allSql = result.preview.statements.every((s) => s.language === \"sql\");\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(allSql ? \"DDL preview\" : \"Operation preview\"));\n\t\tlines.push(\"\");\n\t\tfor (const statement of result.preview.statements) {\n\t\t\tconst trimmed = statement.text.trim();\n\t\t\tif (!trimmed) continue;\n\t\t\tconst line = statement.language === \"sql\" && !trimmed.endsWith(\";\") ? `${trimmed};` : trimmed;\n\t\t\tlines.push(line);\n\t\t}\n\t}\n\tif (flags.verbose && result.timings) {\n\t\tlines.push(\"\");\n\t\tlines.push(dim_(`Total time: ${result.timings.total}ms`));\n\t}\n\treturn lines.join(\"\\n\");\n}\n/**\n* Resolve a migration package by **target contract hash** (`metadata.to`)\n* using exact match or prefix match.\n*\n* Note: matches `metadata.to` (the contract hash this migration produces),\n* not `metadata.migrationHash` (the package's content-addressed identity).\n* Tries exact match first, then prefix match. Returns the matched package on\n* success, or a discriminated failure indicating whether the prefix was\n* ambiguous or simply not found.\n*\n* @internal Exported for testing only.\n*/\nfunction resolveBundleByPrefix(bundles, needle) {\n\tconst exact = bundles.find((p) => p.metadata.to === needle);\n\tif (exact) return ok(exact);\n\tconst candidates = bundles.filter((p) => p.metadata.to.startsWith(needle));\n\tif (candidates.length === 1) return ok(candidates[0]);\n\tif (candidates.length > 1) return notOk({\n\t\treason: \"ambiguous\",\n\t\tcount: candidates.length\n\t});\n\treturn notOk({ reason: \"not-found\" });\n}\n//#endregion\nexport { formatMigrationPlanOutput as n, resolveBundleByPrefix as r, createMigrationPlanCommand as t };\n\n//# sourceMappingURL=migration-plan-31dDf3Wj.mjs.map"],"mappings":"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"}
@@ -10,9 +10,9 @@ import { i as materialiseExtensionMigrationPackageIfMissing, r as formatMigratio
10
10
  import { r as findLatestMigration } from "./migration-graph-DDaOHo10-yJFAbKCu.mjs";
11
11
  import { c as spaceMigrationDirectory, s as readContractSpaceHeadRef } from "./verify-contract-spaces-WvjSiWcB-DZPPCwWO.mjs";
12
12
  import { i as emitContractSpaceArtifacts, o as planAllSpaces } from "./spaces-DBTCE3Js.mjs";
13
- import { _ as resolveMigrationPaths, g as resolveContractPath, l as getTargetMigrations } from "./command-helpers-DutQjYgy-CDfFwtAa.mjs";
13
+ import { _ as resolveMigrationPaths, g as resolveContractPath, l as getTargetMigrations } from "./command-helpers-uzQbbM97-EaL4zWf5.mjs";
14
14
  import { n as isGraphNode, t as assertHashIsGraphNode } from "./graph-membership-BEmNEMtP-rz61CLM5.mjs";
15
- import { a as loadContractSpaceAggregateForCli, d as toExtensionInputs, n as buildContractSpaceAggregate } from "./contract-space-aggregate-loader-sF0OJ6oz-jRjdZoyZ.mjs";
15
+ import { a as loadContractSpaceAggregateForCli, d as toExtensionInputs, n as buildContractSpaceAggregate } from "./contract-space-aggregate-loader-Cd0X2M_C-CFBkD540.mjs";
16
16
  import { n as parseContractRef } from "./ref-resolution-Ct2GMcNB.mjs";
17
17
  import { i as writeMigrationTs } from "./migration-ts-BoHxxGvi.mjs";
18
18
  import { t as mapContractAtError } from "./contract-at-errors-BsQiGdZC-BY8u2is4.mjs";
@@ -21,7 +21,7 @@ import { castAs } from "@prisma/orm-framework/utils/casts";
21
21
  import { readFile } from "node:fs/promises";
22
22
  import { createControlStack, hasOperationPreview } from "@prisma/orm-framework/components/control";
23
23
  import { notOk, ok } from "@prisma/orm-framework/utils/result";
24
- //#region ../../../1-framework/3-tooling/cli/dist/migration-plan-Cb7s5Ifx.mjs
24
+ //#region ../../../1-framework/3-tooling/cli/dist/migration-plan-B4ND_Xr3.mjs
25
25
  /**
26
26
  * Phase-1 of the two-phase `migration plan` pipeline (sub-spec § 4).
27
27
  *
@@ -618,4 +618,4 @@ function buildAutoBaselinePlanSummary(deltaOpsCount, emittedExtensionDirsCount)
618
618
  //#endregion
619
619
  export { runContractSpaceSeedPhase as i, resolveFromForPlan as n, resolveToForPlan as r, executeMigrationPlanCommand as t };
620
620
 
621
- //# sourceMappingURL=migration-plan-Cb7s5Ifx-Bwa2O0Ov.mjs.map
621
+ //# sourceMappingURL=migration-plan-B4ND_Xr3-CXfh2r_I.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-plan-Cb7s5Ifx-Bwa2O0Ov.mjs","names":["CliStructuredError"],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-plan-Cb7s5Ifx.mjs"],"sourcesContent":["import { A as errorTargetMigrationNotSupported, M as errorUnexpected, N as mapRefResolutionError, O as errorSnapshotMissing, S as errorPlanForgotTheFlag, o as errorContractValidationFailed, t as CliStructuredError, u as errorFileNotFound, v as errorMigrationPlanningFailed } from \"./cli-errors-CihMAEVj.mjs\";\nimport { t as assertFrameworkComponentsCompatible } from \"./framework-components-CXxMNF8E.mjs\";\nimport { t as createProjectSpecifierResolver } from \"./project-import-root-Bkz1gPB2.mjs\";\nimport { c as resolveMigrationPaths, i as getTargetMigrations, s as resolveContractPath } from \"./command-helpers-DutQjYgy.mjs\";\nimport { a as loadContractSpaceAggregateForCli, d as toExtensionInputs, n as buildContractSpaceAggregate } from \"./contract-space-aggregate-loader-sF0OJ6oz.mjs\";\nimport { t as mapContractAtError } from \"./contract-at-errors-BsQiGdZC.mjs\";\nimport { getEmittedArtifactPaths } from \"@internal/emitter\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { join, relative } from \"pathe\";\nimport { readFile } from \"node:fs/promises\";\nimport { createControlStack, hasOperationPreview } from \"@internal/framework-components/control\";\nimport { emitContractSpaceArtifacts, planAllSpaces, readContractSpaceHeadRef, spaceMigrationDirectory } from \"@internal/migration-tools/spaces\";\nimport { castAs } from \"@internal/utils/casts\";\nimport { MigrationToolsError } from \"@internal/migration-tools/errors\";\nimport { assertHashIsGraphNode, findLatestMigration, isGraphNode } from \"@internal/migration-tools/migration-graph\";\nimport { snapshotsImportPathFrom, writeContractSnapshot } from \"@internal/migration-tools/contract-snapshot-store\";\nimport { parseContractRef } from \"@internal/migration-tools/ref-resolution\";\nimport { computeMigrationHash } from \"@internal/migration-tools/hash\";\nimport { formatMigrationDirName, materialiseExtensionMigrationPackageIfMissing, writeMigrationPackage } from \"@internal/migration-tools/io\";\nimport { writeMigrationTs } from \"@internal/migration-tools/migration-ts\";\nimport { deriveProvidedInvariants } from \"@internal/migration-tools/invariants\";\n//#region src/control-api/operations/contract-space-seed-phase.ts\n/**\n* Phase-1 of the two-phase `migration plan` pipeline (sub-spec § 4).\n*\n* For every extension that exposes a `contractSpace`:\n*\n* 1. Read the on-disk head ref (returns `null` on first emit).\n* 2. Write the head contract into the migrations-root snapshot store\n* (write-if-absent, keyed by hash) and unconditionally re-emit\n* `refs/head.json`, via {@link emitContractSpaceArtifacts}. The\n* framework owns `refs/head.json`; re-emit is the contract for that\n* file. The snapshot itself is only written once per distinct hash.\n* 3. Materialise any descriptor-shipped migration packages not yet on\n* disk via {@link materialiseExtensionMigrationPackageIfMissing}.\n* Existing packages are left untouched (by-existence skip).\n*\n* The return value lets the caller render a per-space status line and\n* lets the phase-2 aggregate loader run on a now-consistent disk state\n* (every loaded extension is guaranteed to have its head ref pinned\n* to the descriptor's hash and to ship every package the descriptor\n* declares).\n*\n* Output ordering is deterministic and alphabetical by spaceId (via\n* {@link planAllSpaces}, which also detects duplicate spaceIds). This\n* matches the canonical sort order used by every other aggregate\n* surface (`migrate`, `migration status`, the runner).\n*/\nasync function runContractSpaceSeedPhase(inputs) {\n\tconst planned = planAllSpaces(inputs.extensions.filter((pack) => pack.contractSpace !== void 0).map((pack) => ({\n\t\tspaceId: pack.id,\n\t\tpriorContract: null,\n\t\tnewContract: pack.contractSpace.contractJson,\n\t\t__pack: pack.contractSpace\n\t})), (input) => input.__pack.migrations);\n\tconst descriptorBySpace = /* @__PURE__ */ new Map();\n\tfor (const pack of inputs.extensions) if (pack.contractSpace !== void 0) descriptorBySpace.set(pack.id, pack.contractSpace);\n\tconst seeded = [];\n\tfor (const space of planned) {\n\t\tconst descriptor = descriptorBySpace.get(space.spaceId);\n\t\tif (descriptor === void 0) continue;\n\t\tconst priorHash = (await readContractSpaceHeadRef(inputs.migrationsDir, space.spaceId))?.hash ?? null;\n\t\tawait emitContractSpaceArtifacts(inputs.migrationsDir, space.spaceId, {\n\t\t\tcontract: descriptor.contractJson,\n\t\t\tcontractDts: buildPlaceholderContractDts(space.spaceId),\n\t\t\theadRef: {\n\t\t\t\thash: descriptor.headRef.hash,\n\t\t\t\tinvariants: descriptor.headRef.invariants\n\t\t\t}\n\t\t});\n\t\tconst spaceDir = spaceMigrationDirectory(inputs.migrationsDir, space.spaceId);\n\t\tconst newMigrationDirs = [];\n\t\tfor (const pkg of space.migrationPackages) {\n\t\t\tconst { written } = await materialiseExtensionMigrationPackageIfMissing(spaceDir, pkg);\n\t\t\tif (written) newMigrationDirs.push(pkg.dirName);\n\t\t}\n\t\tconst action = priorHash !== descriptor.headRef.hash || newMigrationDirs.length > 0 ? \"updated\" : \"unchanged\";\n\t\tseeded.push({\n\t\t\tspaceId: space.spaceId,\n\t\t\taction,\n\t\t\tpriorHash,\n\t\t\tnewHash: descriptor.headRef.hash,\n\t\t\tnewMigrationDirs\n\t\t});\n\t}\n\treturn { seeded };\n}\n/**\n* Placeholder `.d.ts` content for an extension space's on-disk mirror.\n*\n* Rendering a fully-typed `.d.ts` for an extension contract requires\n* the SQL-family renderer with the codec / typemap registry threaded\n* through; until that integration ships, the on-disk `.d.ts` is a\n* stub `export {};` module that documents how consumers should\n* validate the sibling `contract.json`. The stub typechecks on its\n* own and does not need any TypeScript suppressions.\n*/\nfunction buildPlaceholderContractDts(spaceId) {\n\treturn [\n\t\t\"/**\",\n\t\t` * Placeholder \\`.d.ts\\` for extension space \"${spaceId}\".`,\n\t\t\" *\",\n\t\t\" * The framework re-emits this file on every `migration plan` run\",\n\t\t\" * alongside `contract.json` and `refs/head.json`. A typed `.d.ts`\",\n\t\t\" * rendering pass for extension contracts is tracked separately;\",\n\t\t\" * until that ships, consumers should import `contract.json`\",\n\t\t\" * and pass it through the target descriptor’s `contractSerializer`.\",\n\t\t\" */\",\n\t\t\"export {};\",\n\t\t\"\"\n\t].join(\"\\n\");\n}\n//#endregion\n//#region src/control-api/operations/plan-resolution.ts\nconst FULL_HASH_PATTERN = /^([0-9a-f]{64}|empty)$/;\nfunction looksLikeFullHash(input) {\n\treturn FULL_HASH_PATTERN.test(input);\n}\nfunction graphIsEmpty(space) {\n\treturn space.packages.length === 0;\n}\nfunction getReachableRefs(refs, graph) {\n\treturn Object.entries(refs).flatMap(([name, entry]) => entry && isGraphNode(entry.hash, graph) ? [{\n\t\tname,\n\t\thash: entry.hash\n\t}] : []).sort((a, b) => a.name.localeCompare(b.name));\n}\nfunction assertFromIsGraphNode(fromHash, graph, refs, graphTipHash) {\n\ttry {\n\t\tassertHashIsGraphNode(fromHash, graph);\n\t} catch (error) {\n\t\tif (MigrationToolsError.is(error) && error.code === \"MIGRATION.HASH_NOT_IN_GRAPH\") throw errorPlanForgotTheFlag(fromHash, getReachableRefs(refs, graph), graphTipHash, { cause: error });\n\t\tthrow error;\n\t}\n}\nasync function resolveContractRef(parsed, space, options) {\n\tconst { hash, provenance } = parsed;\n\tconst refName = provenance.kind === \"ref\" ? provenance.refName : void 0;\n\ttry {\n\t\tconst at = await space.contractAt(hash, refName !== void 0 ? { refName } : void 0);\n\t\tif (at.provenance === \"ref\") return ok({\n\t\t\tkind: \"ref\",\n\t\t\thash: at.hash,\n\t\t\tcontract: at.contract,\n\t\t\tcontractJson: at.contractJson,\n\t\t\tcontractDts: at.contractDts\n\t\t});\n\t\treturn ok({\n\t\t\tkind: \"graph-node\",\n\t\t\thash: at.hash,\n\t\t\tcontract: at.contract,\n\t\t\tcontractJson: at.contractJson,\n\t\t\tcontractDts: at.contractDts\n\t\t});\n\t} catch (error) {\n\t\treturn mapContractAtError(error, options?.artifactRole !== void 0 ? { artifactRole: options.artifactRole } : void 0);\n\t}\n}\nasync function resolveFromPolicy(parsed, input, refs, explicitFromLabel) {\n\tconst resolution = await resolveContractRef(parsed, input.space, {\n\t\t...explicitFromLabel !== void 0 ? { explicitLabel: explicitFromLabel } : {},\n\t\tartifactRole: \"from\"\n\t});\n\tif (!resolution.ok) return resolution;\n\tif (resolution.value.kind === \"graph-node\") return ok({\n\t\tkind: \"graph-node\",\n\t\tfromHash: resolution.value.hash,\n\t\tfromContract: resolution.value.contract\n\t});\n\tconst { hash, contract, contractJson, contractDts } = resolution.value;\n\tif (graphIsEmpty(input.space)) return ok({\n\t\tkind: \"auto-baseline\",\n\t\tfromHash: hash,\n\t\tfromContract: contract,\n\t\tcontractDts,\n\t\tcontractJson\n\t});\n\tconst graph = input.space.graph();\n\tconst graphTip = findLatestMigration(graph)?.to ?? null;\n\ttry {\n\t\tassertFromIsGraphNode(hash, graph, refs, graphTip);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\treturn ok({\n\t\tkind: \"ref\",\n\t\tfromHash: hash,\n\t\tfromContract: contract,\n\t\tcontractDts,\n\t\tcontractJson\n\t});\n}\nasync function resolveFromForPlan(input) {\n\tconst { optionsFrom, space } = input;\n\tconst graph = space.graph();\n\tconst refs = space.refs;\n\tif (optionsFrom === void 0) {\n\t\tconst dbRef = refs[\"db\"];\n\t\tif (!dbRef) return ok({\n\t\t\tkind: \"greenfield\",\n\t\t\tfromHash: null,\n\t\t\tfromContract: null\n\t\t});\n\t\treturn resolveFromPolicy({\n\t\t\thash: dbRef.hash,\n\t\t\tprovenance: {\n\t\t\t\tkind: \"ref\",\n\t\t\t\trefName: \"db\"\n\t\t\t}\n\t\t}, input, refs);\n\t}\n\tconst refResult = parseContractRef(optionsFrom, {\n\t\tgraph,\n\t\trefs\n\t});\n\tif (!refResult.ok) {\n\t\tif (looksLikeFullHash(optionsFrom)) {\n\t\t\tconst empty = graphIsEmpty(space);\n\t\t\tconst graphTip = findLatestMigration(graph)?.to ?? null;\n\t\t\tif (empty) return notOk(errorSnapshotMissing(optionsFrom, { viaRef: false }));\n\t\t\treturn notOk(errorPlanForgotTheFlag(optionsFrom, getReachableRefs(refs, graph), graphTip));\n\t\t}\n\t\treturn notOk(mapRefResolutionError(refResult.failure));\n\t}\n\treturn resolveFromPolicy(refResult.value, input, refs, optionsFrom);\n}\nasync function resolveToForPlan(optionsTo, input) {\n\tconst { space } = input;\n\tconst graph = space.graph();\n\tconst refs = space.refs;\n\tconst refResult = parseContractRef(optionsTo, {\n\t\tgraph,\n\t\trefs\n\t});\n\tif (!refResult.ok) return notOk(mapRefResolutionError(refResult.failure));\n\tconst resolution = await resolveContractRef(refResult.value, space, {\n\t\texplicitLabel: optionsTo,\n\t\tartifactRole: \"to\"\n\t});\n\tif (!resolution.ok) return resolution;\n\tconst { hash, contract, contractJson, contractDts } = resolution.value;\n\treturn ok({\n\t\thash,\n\t\tcontract,\n\t\tcontractJson,\n\t\tcontractDts\n\t});\n}\n//#endregion\n//#region src/control-api/operations/migration-plan.ts\n/**\n* Policy core of `migration plan`: resolves from/to contracts, runs the planner legs, and writes the planned migration packages.\n*/\nfunction isEnoent(error) {\n\treturn error instanceof Error && \"code\" in error && error.code === \"ENOENT\";\n}\nasync function runPlannerLeg(planner, migrations, frameworkComponents, contract, fromContract, spaceId, ownership, snapshotsImportPath, resolveImportSpecifier) {\n\tconst fromSchema = migrations.contractToSchema(fromContract, frameworkComponents);\n\tconst plannerResult = planner.plan({\n\t\tcontract,\n\t\tschema: fromSchema,\n\t\tpolicy: { allowedOperationClasses: [\n\t\t\t\"additive\",\n\t\t\t\"widening\",\n\t\t\t\"destructive\",\n\t\t\t\"data\"\n\t\t] },\n\t\tfromContract,\n\t\tframeworkComponents,\n\t\tspaceId,\n\t\townership,\n\t\tsnapshotsImportPath\n\t});\n\tif (plannerResult.kind === \"failure\") return notOk(errorMigrationPlanningFailed({ conflicts: castAs(plannerResult.conflicts) }));\n\tlet plannedOps = [];\n\tlet hasPlaceholders = false;\n\ttry {\n\t\tplannedOps = await Promise.all(plannerResult.plan.operations);\n\t\tif (plannedOps.length === 0) return notOk(errorMigrationPlanningFailed({ conflicts: [{\n\t\t\tkind: \"unsupportedChange\",\n\t\t\tsummary: \"Contract changed but planner produced no operations. This indicates unsupported or ignored changes.\"\n\t\t}] }));\n\t} catch (e) {\n\t\tif (CliStructuredError.is(e) && e.code === \"MIGRATION.UNFILLED_PLACEHOLDER\") hasPlaceholders = true;\n\t\telse throw e;\n\t}\n\treturn ok({\n\t\tplannedOps,\n\t\tmigrationTsContent: plannerResult.plan.renderTypeScript(resolveImportSpecifier),\n\t\thasPlaceholders\n\t});\n}\nasync function writePlannedMigrationPackage(packageDir, fromHash, toHash, createdAt, leg) {\n\tconst opsForWrite = leg.hasPlaceholders ? [] : leg.plannedOps;\n\tconst metadataWithInvariants = {\n\t\tfrom: fromHash,\n\t\tto: toHash,\n\t\tprovidedInvariants: deriveProvidedInvariants(opsForWrite),\n\t\tcreatedAt: createdAt.toISOString()\n\t};\n\tawait writeMigrationPackage(packageDir, {\n\t\t...metadataWithInvariants,\n\t\tmigrationHash: computeMigrationHash(metadataWithInvariants, opsForWrite)\n\t}, opsForWrite);\n\tawait writeMigrationTs(packageDir, leg.migrationTsContent);\n}\nasync function executeMigrationPlanCommand(options, startTime, callbacks) {\n\ttry {\n\t\treturn await executeMigrationPlanCommandInner(options, startTime, callbacks);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\treturn notOk(errorUnexpected(message, { why: `Unexpected error during migration plan: ${message}` }));\n\t}\n}\nasync function executeMigrationPlanCommandInner(options, startTime, callbacks) {\n\tconst config = options.config;\n\tconst cwd = options.cwd;\n\tconst { configPath, migrationsDir, appMigrationsDir, appMigrationsRelative } = resolveMigrationPaths(options.configPath, config, cwd);\n\tconst contractPathAbsolute = resolveContractPath(config);\n\tconst contractPath = relative(cwd, contractPathAbsolute);\n\tcallbacks?.onContextResolved?.({\n\t\tconfigPath,\n\t\tcontractPath,\n\t\tappMigrationsRelative\n\t});\n\tlet contractJsonContent;\n\ttry {\n\t\tcontractJsonContent = await readFile(contractPathAbsolute, \"utf-8\");\n\t} catch (error) {\n\t\tif (isEnoent(error)) 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\tconst stack = createControlStack(config);\n\tconst familyInstance = config.family.create(stack);\n\tconst controlAdapter = config.adapter.create(stack);\n\tlet toContract;\n\ttry {\n\t\ttoContract = familyInstance.deserializeContract(castAs(JSON.parse(contractJsonContent)));\n\t} catch (error) {\n\t\treturn notOk(errorContractValidationFailed(`Contract at ${contractPathAbsolute} failed to deserialize: ${error instanceof Error ? error.message : String(error)}`, { where: { path: contractPathAbsolute } }));\n\t}\n\tconst rawStorageHash = toContract.storage?.storageHash;\n\tif (typeof rawStorageHash !== \"string\") return notOk(errorContractValidationFailed(\"Contract is missing storageHash\", { where: { path: contractPathAbsolute } }));\n\tlet toStorageHash = rawStorageHash;\n\tlet toArtifacts = null;\n\tlet fromContract = null;\n\tlet fromHash = null;\n\tlet snapshotStartContract = null;\n\tlet isAutoBaseline = false;\n\tconst tolerantAggregateResult = await loadContractSpaceAggregateForCli({\n\t\ttargetId: config.target.targetId,\n\t\tmigrationsDir,\n\t\tappContract: toContract,\n\t\textensions: config.extensions ?? [],\n\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json)\n\t});\n\tif (!tolerantAggregateResult.ok) return notOk(tolerantAggregateResult.failure);\n\tconst resolutionSpace = tolerantAggregateResult.value.app;\n\tconst resolutionResult = await resolveFromForPlan({\n\t\toptionsFrom: options.from,\n\t\tspace: resolutionSpace\n\t});\n\tif (!resolutionResult.ok) return notOk(resolutionResult.failure);\n\tswitch (resolutionResult.value.kind) {\n\t\tcase \"greenfield\": break;\n\t\tcase \"graph-node\":\n\t\t\tfromHash = resolutionResult.value.fromHash;\n\t\t\tfromContract = resolutionResult.value.fromContract;\n\t\t\tbreak;\n\t\tcase \"ref\":\n\t\t\tfromHash = resolutionResult.value.fromHash;\n\t\t\tfromContract = resolutionResult.value.fromContract;\n\t\t\tsnapshotStartContract = {\n\t\t\t\tfromHash: resolutionResult.value.fromHash,\n\t\t\t\tcontractJson: resolutionResult.value.contractJson,\n\t\t\t\tcontractDts: resolutionResult.value.contractDts\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"auto-baseline\":\n\t\t\tfromHash = resolutionResult.value.fromHash;\n\t\t\tfromContract = resolutionResult.value.fromContract;\n\t\t\tsnapshotStartContract = {\n\t\t\t\tfromHash: resolutionResult.value.fromHash,\n\t\t\t\tcontractJson: resolutionResult.value.contractJson,\n\t\t\t\tcontractDts: resolutionResult.value.contractDts\n\t\t\t};\n\t\t\tisAutoBaseline = true;\n\t\t\tbreak;\n\t}\n\tif (options.to !== void 0) {\n\t\tconst toResolution = await resolveToForPlan(options.to, { space: resolutionSpace });\n\t\tif (!toResolution.ok) return notOk(toResolution.failure);\n\t\ttoContract = toResolution.value.contract;\n\t\ttoStorageHash = toResolution.value.hash;\n\t\ttoArtifacts = {\n\t\t\tcontractJson: toResolution.value.contractJson,\n\t\t\tcontractDts: toResolution.value.contractDts\n\t\t};\n\t}\n\tconst resolveImportSpecifier = createProjectSpecifierResolver(options.configPath);\n\tconst seedResult = await runContractSpaceSeedPhase({\n\t\tmigrationsDir,\n\t\textensions: toExtensionInputs(config.extensions ?? [])\n\t});\n\tfor (const record of seedResult.seeded) callbacks?.onSeeded?.(record);\n\tconst emittedExtensionDirs = seedResult.seeded.flatMap((r) => r.newMigrationDirs.map((dirName) => ({\n\t\tspaceId: r.spaceId,\n\t\tdirName\n\t})));\n\tif (fromHash === toStorageHash && !isAutoBaseline) return ok({\n\t\tok: true,\n\t\tnoOp: true,\n\t\tfrom: fromHash,\n\t\tto: toStorageHash,\n\t\toperations: [],\n\t\temittedExtensionDirs,\n\t\tsummary: \"No changes detected between contracts\",\n\t\ttimings: { total: Date.now() - startTime }\n\t});\n\tconst migrations = getTargetMigrations(config.target);\n\tif (!migrations) return notOk(errorTargetMigrationNotSupported({ why: `Target \"${config.target.id}\" does not support migrations` }));\n\tconst aggregateResult = await buildContractSpaceAggregate({\n\t\ttargetId: config.target.targetId,\n\t\tmigrationsDir,\n\t\tappContract: toContract,\n\t\textensions: config.extensions ?? [],\n\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json)\n\t});\n\tif (!aggregateResult.ok) return notOk(aggregateResult.failure);\n\tconst aggregate = aggregateResult.value;\n\tconst frameworkComponents = assertFrameworkComponentsCompatible(config.family.familyId, config.target.targetId, [\n\t\tconfig.target,\n\t\tconfig.adapter,\n\t\t...config.extensions ?? []\n\t]);\n\tasync function writeDestinationSnapshot(destHash) {\n\t\tif (toArtifacts !== null) {\n\t\t\tawait writeContractSnapshot(migrationsDir, destHash, {\n\t\t\t\tcontractJson: toArtifacts.contractJson,\n\t\t\t\tcontractDts: toArtifacts.contractDts\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst destinationArtifacts = getEmittedArtifactPaths(contractPathAbsolute);\n\t\tconst [contractJsonRaw, contractDts] = await Promise.all([readFile(destinationArtifacts.jsonPath, \"utf-8\"), readFile(destinationArtifacts.dtsPath, \"utf-8\")]);\n\t\tawait writeContractSnapshot(migrationsDir, destHash, {\n\t\t\tcontractJson: castAs(JSON.parse(contractJsonRaw)),\n\t\t\tcontractDts\n\t\t});\n\t}\n\ttry {\n\t\tconst planner = migrations.createPlanner(controlAdapter);\n\t\tif (isAutoBaseline && fromHash !== null && fromContract !== null && snapshotStartContract !== null) {\n\t\t\tconst baselineTimestamp = /* @__PURE__ */ new Date();\n\t\t\tconst deltaTimestamp = new Date(baselineTimestamp.getTime() + 6e4);\n\t\t\tconst baselineDirName = formatMigrationDirName(baselineTimestamp, \"baseline\");\n\t\t\tconst deltaDirName = formatMigrationDirName(deltaTimestamp, options.name ?? \"migration\");\n\t\t\tconst baselinePackageDir = join(appMigrationsDir, baselineDirName);\n\t\t\tconst deltaPackageDir = join(appMigrationsDir, deltaDirName);\n\t\t\tconst baselineLeg = await runPlannerLeg(planner, migrations, frameworkComponents, fromContract, null, aggregate.app.spaceId, aggregate, snapshotsImportPathFrom(baselinePackageDir, migrationsDir), resolveImportSpecifier);\n\t\t\tif (!baselineLeg.ok) return notOk(baselineLeg.failure);\n\t\t\tawait writePlannedMigrationPackage(baselinePackageDir, null, fromHash, baselineTimestamp, baselineLeg.value);\n\t\t\tawait writeContractSnapshot(migrationsDir, fromHash, {\n\t\t\t\tcontractJson: snapshotStartContract.contractJson,\n\t\t\t\tcontractDts: snapshotStartContract.contractDts\n\t\t\t});\n\t\t\tif (fromHash === toStorageHash) {\n\t\t\t\tconst baselineOps = baselineLeg.value.hasPlaceholders ? [] : baselineLeg.value.plannedOps;\n\t\t\t\tif (baselineLeg.value.hasPlaceholders) {\n\t\t\t\t\tconst baselineDir = relative(cwd, baselinePackageDir);\n\t\t\t\t\treturn ok({\n\t\t\t\t\t\tok: true,\n\t\t\t\t\t\tnoOp: false,\n\t\t\t\t\t\tfrom: fromHash,\n\t\t\t\t\t\tto: toStorageHash,\n\t\t\t\t\t\tdir: baselineDir,\n\t\t\t\t\t\tbaselineDir,\n\t\t\t\t\t\toperations: [],\n\t\t\t\t\t\temittedExtensionDirs,\n\t\t\t\t\t\tpendingPlaceholders: true,\n\t\t\t\t\t\tsummary: \"Planned baseline with placeholder(s) — edit migration.ts then run `node migration.ts` to self-emit\",\n\t\t\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst preview = hasOperationPreview(familyInstance) ? familyInstance.toOperationPreview(baselineOps) : void 0;\n\t\t\t\treturn ok({\n\t\t\t\t\tok: true,\n\t\t\t\t\tnoOp: false,\n\t\t\t\t\tfrom: fromHash,\n\t\t\t\t\tto: toStorageHash,\n\t\t\t\t\tbaselineDir: relative(cwd, baselinePackageDir),\n\t\t\t\t\toperations: baselineOps.map((op) => ({\n\t\t\t\t\t\tid: op.id,\n\t\t\t\t\t\tlabel: op.label,\n\t\t\t\t\t\toperationClass: op.operationClass\n\t\t\t\t\t})),\n\t\t\t\t\temittedExtensionDirs,\n\t\t\t\t\t...preview !== void 0 ? { preview } : {},\n\t\t\t\t\tsummary: buildAutoBaselinePlanSummary(0, emittedExtensionDirs.length),\n\t\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst deltaLeg = await runPlannerLeg(planner, migrations, frameworkComponents, aggregate.app.contract(), fromContract, aggregate.app.spaceId, aggregate, snapshotsImportPathFrom(deltaPackageDir, migrationsDir), resolveImportSpecifier);\n\t\t\tif (!deltaLeg.ok) return notOk(deltaLeg.failure);\n\t\t\tawait writePlannedMigrationPackage(deltaPackageDir, fromHash, toStorageHash, deltaTimestamp, deltaLeg.value);\n\t\t\tawait writeDestinationSnapshot(toStorageHash);\n\t\t\tawait writeContractSnapshot(migrationsDir, fromHash, {\n\t\t\t\tcontractJson: snapshotStartContract.contractJson,\n\t\t\t\tcontractDts: snapshotStartContract.contractDts\n\t\t\t});\n\t\t\tconst deltaOps = deltaLeg.value.hasPlaceholders ? [] : deltaLeg.value.plannedOps;\n\t\t\tif (deltaLeg.value.hasPlaceholders) return ok({\n\t\t\t\tok: true,\n\t\t\t\tnoOp: false,\n\t\t\t\tfrom: fromHash,\n\t\t\t\tto: toStorageHash,\n\t\t\t\tdir: relative(cwd, deltaPackageDir),\n\t\t\t\tbaselineDir: relative(cwd, baselinePackageDir),\n\t\t\t\toperations: [],\n\t\t\t\temittedExtensionDirs,\n\t\t\t\tpendingPlaceholders: true,\n\t\t\t\tsummary: \"Planned baseline + migration with placeholder(s) — edit migration.ts then run `node migration.ts` to self-emit\",\n\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t});\n\t\t\tconst preview = hasOperationPreview(familyInstance) ? familyInstance.toOperationPreview(deltaOps) : void 0;\n\t\t\treturn ok({\n\t\t\t\tok: true,\n\t\t\t\tnoOp: false,\n\t\t\t\tfrom: fromHash,\n\t\t\t\tto: toStorageHash,\n\t\t\t\tdir: relative(cwd, deltaPackageDir),\n\t\t\t\tbaselineDir: relative(cwd, baselinePackageDir),\n\t\t\t\toperations: deltaOps.map((op) => ({\n\t\t\t\t\tid: op.id,\n\t\t\t\t\tlabel: op.label,\n\t\t\t\t\toperationClass: op.operationClass\n\t\t\t\t})),\n\t\t\t\temittedExtensionDirs,\n\t\t\t\t...preview !== void 0 ? { preview } : {},\n\t\t\t\tsummary: buildAutoBaselinePlanSummary(deltaOps.length, emittedExtensionDirs.length),\n\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t});\n\t\t}\n\t\tconst timestamp = /* @__PURE__ */ new Date();\n\t\tconst packageDir = join(appMigrationsDir, formatMigrationDirName(timestamp, options.name ?? \"migration\"));\n\t\tconst deltaLeg = await runPlannerLeg(planner, migrations, frameworkComponents, aggregate.app.contract(), fromContract, aggregate.app.spaceId, aggregate, snapshotsImportPathFrom(packageDir, migrationsDir), resolveImportSpecifier);\n\t\tif (!deltaLeg.ok) return notOk(deltaLeg.failure);\n\t\tawait writePlannedMigrationPackage(packageDir, fromHash, toStorageHash, timestamp, deltaLeg.value);\n\t\tawait writeDestinationSnapshot(toStorageHash);\n\t\tif (snapshotStartContract !== null) await writeContractSnapshot(migrationsDir, snapshotStartContract.fromHash, {\n\t\t\tcontractJson: snapshotStartContract.contractJson,\n\t\t\tcontractDts: snapshotStartContract.contractDts\n\t\t});\n\t\tif (deltaLeg.value.hasPlaceholders) return ok({\n\t\t\tok: true,\n\t\t\tnoOp: false,\n\t\t\tfrom: fromHash,\n\t\t\tto: toStorageHash,\n\t\t\tdir: relative(cwd, packageDir),\n\t\t\toperations: [],\n\t\t\temittedExtensionDirs,\n\t\t\tpendingPlaceholders: true,\n\t\t\tsummary: \"Planned migration with placeholder(s) — edit migration.ts then run `node migration.ts` to self-emit\",\n\t\t\ttimings: { total: Date.now() - startTime }\n\t\t});\n\t\tconst plannedOps = deltaLeg.value.plannedOps;\n\t\tconst preview = hasOperationPreview(familyInstance) ? familyInstance.toOperationPreview(plannedOps) : void 0;\n\t\treturn ok({\n\t\t\tok: true,\n\t\t\tnoOp: false,\n\t\t\tfrom: fromHash,\n\t\t\tto: toStorageHash,\n\t\t\tdir: relative(cwd, packageDir),\n\t\t\toperations: plannedOps.map((op) => ({\n\t\t\t\tid: op.id,\n\t\t\t\tlabel: op.label,\n\t\t\t\toperationClass: op.operationClass\n\t\t\t})),\n\t\t\temittedExtensionDirs,\n\t\t\t...preview !== void 0 ? { preview } : {},\n\t\t\tsummary: buildPlanSummary(plannedOps.length, emittedExtensionDirs.length),\n\t\t\ttimings: { total: Date.now() - startTime }\n\t\t});\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tif (MigrationToolsError.is(error)) return notOk(error);\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\treturn notOk(errorUnexpected(message, { why: `Unexpected error during migration plan: ${message}` }));\n\t}\n}\n/**\n* Compose the success-line summary so the cross-space side effect\n* (extension-space migration packages materialised on disk during\n* this `plan` run) is visible in the top line — not just in the\n* step log above it.\n*\n* Example outputs:\n* - `Planned 3 operation(s)` (app-space-only project)\n* - `Planned 3 operation(s); materialised 1 extension-space migration` (one extension)\n* - `Planned 3 operation(s); materialised 2 extension-space migrations` (two extensions)\n*\n* Locks AC3 at the summary-line level: a reader of the success line\n* can tell that something happened beyond the app space.\n*/\nfunction buildPlanSummary(plannedOpsCount, emittedExtensionDirsCount) {\n\tconst base = `Planned ${plannedOpsCount} operation(s)`;\n\tif (emittedExtensionDirsCount === 0) return base;\n\treturn `${base}; materialised ${emittedExtensionDirsCount} ${emittedExtensionDirsCount === 1 ? \"extension-space migration\" : \"extension-space migrations\"}`;\n}\nfunction buildAutoBaselinePlanSummary(deltaOpsCount, emittedExtensionDirsCount) {\n\tconst base = `Planned baseline + ${deltaOpsCount} operation(s)`;\n\tif (emittedExtensionDirsCount === 0) return base;\n\treturn `${base}; materialised ${emittedExtensionDirsCount} ${emittedExtensionDirsCount === 1 ? \"extension-space migration\" : \"extension-space migrations\"}`;\n}\n//#endregion\nexport { runContractSpaceSeedPhase as i, resolveFromForPlan as n, resolveToForPlan as r, executeMigrationPlanCommand as t };\n\n//# sourceMappingURL=migration-plan-Cb7s5Ifx.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"migration-plan-B4ND_Xr3-CXfh2r_I.mjs","names":["CliStructuredError"],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-plan-B4ND_Xr3.mjs"],"sourcesContent":["import { A as errorTargetMigrationNotSupported, M as errorUnexpected, N as mapRefResolutionError, O as errorSnapshotMissing, S as errorPlanForgotTheFlag, o as errorContractValidationFailed, t as CliStructuredError, u as errorFileNotFound, v as errorMigrationPlanningFailed } from \"./cli-errors-CihMAEVj.mjs\";\nimport { t as assertFrameworkComponentsCompatible } from \"./framework-components-CXxMNF8E.mjs\";\nimport { t as createProjectSpecifierResolver } from \"./project-import-root-Bkz1gPB2.mjs\";\nimport { c as resolveMigrationPaths, i as getTargetMigrations, s as resolveContractPath } from \"./command-helpers-uzQbbM97.mjs\";\nimport { a as loadContractSpaceAggregateForCli, d as toExtensionInputs, n as buildContractSpaceAggregate } from \"./contract-space-aggregate-loader-Cd0X2M_C.mjs\";\nimport { t as mapContractAtError } from \"./contract-at-errors-BsQiGdZC.mjs\";\nimport { getEmittedArtifactPaths } from \"@internal/emitter\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { join, relative } from \"pathe\";\nimport { readFile } from \"node:fs/promises\";\nimport { createControlStack, hasOperationPreview } from \"@internal/framework-components/control\";\nimport { emitContractSpaceArtifacts, planAllSpaces, readContractSpaceHeadRef, spaceMigrationDirectory } from \"@internal/migration-tools/spaces\";\nimport { castAs } from \"@internal/utils/casts\";\nimport { MigrationToolsError } from \"@internal/migration-tools/errors\";\nimport { assertHashIsGraphNode, findLatestMigration, isGraphNode } from \"@internal/migration-tools/migration-graph\";\nimport { snapshotsImportPathFrom, writeContractSnapshot } from \"@internal/migration-tools/contract-snapshot-store\";\nimport { parseContractRef } from \"@internal/migration-tools/ref-resolution\";\nimport { computeMigrationHash } from \"@internal/migration-tools/hash\";\nimport { formatMigrationDirName, materialiseExtensionMigrationPackageIfMissing, writeMigrationPackage } from \"@internal/migration-tools/io\";\nimport { writeMigrationTs } from \"@internal/migration-tools/migration-ts\";\nimport { deriveProvidedInvariants } from \"@internal/migration-tools/invariants\";\n//#region src/control-api/operations/contract-space-seed-phase.ts\n/**\n* Phase-1 of the two-phase `migration plan` pipeline (sub-spec § 4).\n*\n* For every extension that exposes a `contractSpace`:\n*\n* 1. Read the on-disk head ref (returns `null` on first emit).\n* 2. Write the head contract into the migrations-root snapshot store\n* (write-if-absent, keyed by hash) and unconditionally re-emit\n* `refs/head.json`, via {@link emitContractSpaceArtifacts}. The\n* framework owns `refs/head.json`; re-emit is the contract for that\n* file. The snapshot itself is only written once per distinct hash.\n* 3. Materialise any descriptor-shipped migration packages not yet on\n* disk via {@link materialiseExtensionMigrationPackageIfMissing}.\n* Existing packages are left untouched (by-existence skip).\n*\n* The return value lets the caller render a per-space status line and\n* lets the phase-2 aggregate loader run on a now-consistent disk state\n* (every loaded extension is guaranteed to have its head ref pinned\n* to the descriptor's hash and to ship every package the descriptor\n* declares).\n*\n* Output ordering is deterministic and alphabetical by spaceId (via\n* {@link planAllSpaces}, which also detects duplicate spaceIds). This\n* matches the canonical sort order used by every other aggregate\n* surface (`migrate`, `migration status`, the runner).\n*/\nasync function runContractSpaceSeedPhase(inputs) {\n\tconst planned = planAllSpaces(inputs.extensions.filter((pack) => pack.contractSpace !== void 0).map((pack) => ({\n\t\tspaceId: pack.id,\n\t\tpriorContract: null,\n\t\tnewContract: pack.contractSpace.contractJson,\n\t\t__pack: pack.contractSpace\n\t})), (input) => input.__pack.migrations);\n\tconst descriptorBySpace = /* @__PURE__ */ new Map();\n\tfor (const pack of inputs.extensions) if (pack.contractSpace !== void 0) descriptorBySpace.set(pack.id, pack.contractSpace);\n\tconst seeded = [];\n\tfor (const space of planned) {\n\t\tconst descriptor = descriptorBySpace.get(space.spaceId);\n\t\tif (descriptor === void 0) continue;\n\t\tconst priorHash = (await readContractSpaceHeadRef(inputs.migrationsDir, space.spaceId))?.hash ?? null;\n\t\tawait emitContractSpaceArtifacts(inputs.migrationsDir, space.spaceId, {\n\t\t\tcontract: descriptor.contractJson,\n\t\t\tcontractDts: buildPlaceholderContractDts(space.spaceId),\n\t\t\theadRef: {\n\t\t\t\thash: descriptor.headRef.hash,\n\t\t\t\tinvariants: descriptor.headRef.invariants\n\t\t\t}\n\t\t});\n\t\tconst spaceDir = spaceMigrationDirectory(inputs.migrationsDir, space.spaceId);\n\t\tconst newMigrationDirs = [];\n\t\tfor (const pkg of space.migrationPackages) {\n\t\t\tconst { written } = await materialiseExtensionMigrationPackageIfMissing(spaceDir, pkg);\n\t\t\tif (written) newMigrationDirs.push(pkg.dirName);\n\t\t}\n\t\tconst action = priorHash !== descriptor.headRef.hash || newMigrationDirs.length > 0 ? \"updated\" : \"unchanged\";\n\t\tseeded.push({\n\t\t\tspaceId: space.spaceId,\n\t\t\taction,\n\t\t\tpriorHash,\n\t\t\tnewHash: descriptor.headRef.hash,\n\t\t\tnewMigrationDirs\n\t\t});\n\t}\n\treturn { seeded };\n}\n/**\n* Placeholder `.d.ts` content for an extension space's on-disk mirror.\n*\n* Rendering a fully-typed `.d.ts` for an extension contract requires\n* the SQL-family renderer with the codec / typemap registry threaded\n* through; until that integration ships, the on-disk `.d.ts` is a\n* stub `export {};` module that documents how consumers should\n* validate the sibling `contract.json`. The stub typechecks on its\n* own and does not need any TypeScript suppressions.\n*/\nfunction buildPlaceholderContractDts(spaceId) {\n\treturn [\n\t\t\"/**\",\n\t\t` * Placeholder \\`.d.ts\\` for extension space \"${spaceId}\".`,\n\t\t\" *\",\n\t\t\" * The framework re-emits this file on every `migration plan` run\",\n\t\t\" * alongside `contract.json` and `refs/head.json`. A typed `.d.ts`\",\n\t\t\" * rendering pass for extension contracts is tracked separately;\",\n\t\t\" * until that ships, consumers should import `contract.json`\",\n\t\t\" * and pass it through the target descriptor’s `contractSerializer`.\",\n\t\t\" */\",\n\t\t\"export {};\",\n\t\t\"\"\n\t].join(\"\\n\");\n}\n//#endregion\n//#region src/control-api/operations/plan-resolution.ts\nconst FULL_HASH_PATTERN = /^([0-9a-f]{64}|empty)$/;\nfunction looksLikeFullHash(input) {\n\treturn FULL_HASH_PATTERN.test(input);\n}\nfunction graphIsEmpty(space) {\n\treturn space.packages.length === 0;\n}\nfunction getReachableRefs(refs, graph) {\n\treturn Object.entries(refs).flatMap(([name, entry]) => entry && isGraphNode(entry.hash, graph) ? [{\n\t\tname,\n\t\thash: entry.hash\n\t}] : []).sort((a, b) => a.name.localeCompare(b.name));\n}\nfunction assertFromIsGraphNode(fromHash, graph, refs, graphTipHash) {\n\ttry {\n\t\tassertHashIsGraphNode(fromHash, graph);\n\t} catch (error) {\n\t\tif (MigrationToolsError.is(error) && error.code === \"MIGRATION.HASH_NOT_IN_GRAPH\") throw errorPlanForgotTheFlag(fromHash, getReachableRefs(refs, graph), graphTipHash, { cause: error });\n\t\tthrow error;\n\t}\n}\nasync function resolveContractRef(parsed, space, options) {\n\tconst { hash, provenance } = parsed;\n\tconst refName = provenance.kind === \"ref\" ? provenance.refName : void 0;\n\ttry {\n\t\tconst at = await space.contractAt(hash, refName !== void 0 ? { refName } : void 0);\n\t\tif (at.provenance === \"ref\") return ok({\n\t\t\tkind: \"ref\",\n\t\t\thash: at.hash,\n\t\t\tcontract: at.contract,\n\t\t\tcontractJson: at.contractJson,\n\t\t\tcontractDts: at.contractDts\n\t\t});\n\t\treturn ok({\n\t\t\tkind: \"graph-node\",\n\t\t\thash: at.hash,\n\t\t\tcontract: at.contract,\n\t\t\tcontractJson: at.contractJson,\n\t\t\tcontractDts: at.contractDts\n\t\t});\n\t} catch (error) {\n\t\treturn mapContractAtError(error, options?.artifactRole !== void 0 ? { artifactRole: options.artifactRole } : void 0);\n\t}\n}\nasync function resolveFromPolicy(parsed, input, refs, explicitFromLabel) {\n\tconst resolution = await resolveContractRef(parsed, input.space, {\n\t\t...explicitFromLabel !== void 0 ? { explicitLabel: explicitFromLabel } : {},\n\t\tartifactRole: \"from\"\n\t});\n\tif (!resolution.ok) return resolution;\n\tif (resolution.value.kind === \"graph-node\") return ok({\n\t\tkind: \"graph-node\",\n\t\tfromHash: resolution.value.hash,\n\t\tfromContract: resolution.value.contract\n\t});\n\tconst { hash, contract, contractJson, contractDts } = resolution.value;\n\tif (graphIsEmpty(input.space)) return ok({\n\t\tkind: \"auto-baseline\",\n\t\tfromHash: hash,\n\t\tfromContract: contract,\n\t\tcontractDts,\n\t\tcontractJson\n\t});\n\tconst graph = input.space.graph();\n\tconst graphTip = findLatestMigration(graph)?.to ?? null;\n\ttry {\n\t\tassertFromIsGraphNode(hash, graph, refs, graphTip);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\treturn ok({\n\t\tkind: \"ref\",\n\t\tfromHash: hash,\n\t\tfromContract: contract,\n\t\tcontractDts,\n\t\tcontractJson\n\t});\n}\nasync function resolveFromForPlan(input) {\n\tconst { optionsFrom, space } = input;\n\tconst graph = space.graph();\n\tconst refs = space.refs;\n\tif (optionsFrom === void 0) {\n\t\tconst dbRef = refs[\"db\"];\n\t\tif (!dbRef) return ok({\n\t\t\tkind: \"greenfield\",\n\t\t\tfromHash: null,\n\t\t\tfromContract: null\n\t\t});\n\t\treturn resolveFromPolicy({\n\t\t\thash: dbRef.hash,\n\t\t\tprovenance: {\n\t\t\t\tkind: \"ref\",\n\t\t\t\trefName: \"db\"\n\t\t\t}\n\t\t}, input, refs);\n\t}\n\tconst refResult = parseContractRef(optionsFrom, {\n\t\tgraph,\n\t\trefs\n\t});\n\tif (!refResult.ok) {\n\t\tif (looksLikeFullHash(optionsFrom)) {\n\t\t\tconst empty = graphIsEmpty(space);\n\t\t\tconst graphTip = findLatestMigration(graph)?.to ?? null;\n\t\t\tif (empty) return notOk(errorSnapshotMissing(optionsFrom, { viaRef: false }));\n\t\t\treturn notOk(errorPlanForgotTheFlag(optionsFrom, getReachableRefs(refs, graph), graphTip));\n\t\t}\n\t\treturn notOk(mapRefResolutionError(refResult.failure));\n\t}\n\treturn resolveFromPolicy(refResult.value, input, refs, optionsFrom);\n}\nasync function resolveToForPlan(optionsTo, input) {\n\tconst { space } = input;\n\tconst graph = space.graph();\n\tconst refs = space.refs;\n\tconst refResult = parseContractRef(optionsTo, {\n\t\tgraph,\n\t\trefs\n\t});\n\tif (!refResult.ok) return notOk(mapRefResolutionError(refResult.failure));\n\tconst resolution = await resolveContractRef(refResult.value, space, {\n\t\texplicitLabel: optionsTo,\n\t\tartifactRole: \"to\"\n\t});\n\tif (!resolution.ok) return resolution;\n\tconst { hash, contract, contractJson, contractDts } = resolution.value;\n\treturn ok({\n\t\thash,\n\t\tcontract,\n\t\tcontractJson,\n\t\tcontractDts\n\t});\n}\n//#endregion\n//#region src/control-api/operations/migration-plan.ts\n/**\n* Policy core of `migration plan`: resolves from/to contracts, runs the planner legs, and writes the planned migration packages.\n*/\nfunction isEnoent(error) {\n\treturn error instanceof Error && \"code\" in error && error.code === \"ENOENT\";\n}\nasync function runPlannerLeg(planner, migrations, frameworkComponents, contract, fromContract, spaceId, ownership, snapshotsImportPath, resolveImportSpecifier) {\n\tconst fromSchema = migrations.contractToSchema(fromContract, frameworkComponents);\n\tconst plannerResult = planner.plan({\n\t\tcontract,\n\t\tschema: fromSchema,\n\t\tpolicy: { allowedOperationClasses: [\n\t\t\t\"additive\",\n\t\t\t\"widening\",\n\t\t\t\"destructive\",\n\t\t\t\"data\"\n\t\t] },\n\t\tfromContract,\n\t\tframeworkComponents,\n\t\tspaceId,\n\t\townership,\n\t\tsnapshotsImportPath\n\t});\n\tif (plannerResult.kind === \"failure\") return notOk(errorMigrationPlanningFailed({ conflicts: castAs(plannerResult.conflicts) }));\n\tlet plannedOps = [];\n\tlet hasPlaceholders = false;\n\ttry {\n\t\tplannedOps = await Promise.all(plannerResult.plan.operations);\n\t\tif (plannedOps.length === 0) return notOk(errorMigrationPlanningFailed({ conflicts: [{\n\t\t\tkind: \"unsupportedChange\",\n\t\t\tsummary: \"Contract changed but planner produced no operations. This indicates unsupported or ignored changes.\"\n\t\t}] }));\n\t} catch (e) {\n\t\tif (CliStructuredError.is(e) && e.code === \"MIGRATION.UNFILLED_PLACEHOLDER\") hasPlaceholders = true;\n\t\telse throw e;\n\t}\n\treturn ok({\n\t\tplannedOps,\n\t\tmigrationTsContent: plannerResult.plan.renderTypeScript(resolveImportSpecifier),\n\t\thasPlaceholders\n\t});\n}\nasync function writePlannedMigrationPackage(packageDir, fromHash, toHash, createdAt, leg) {\n\tconst opsForWrite = leg.hasPlaceholders ? [] : leg.plannedOps;\n\tconst metadataWithInvariants = {\n\t\tfrom: fromHash,\n\t\tto: toHash,\n\t\tprovidedInvariants: deriveProvidedInvariants(opsForWrite),\n\t\tcreatedAt: createdAt.toISOString()\n\t};\n\tawait writeMigrationPackage(packageDir, {\n\t\t...metadataWithInvariants,\n\t\tmigrationHash: computeMigrationHash(metadataWithInvariants, opsForWrite)\n\t}, opsForWrite);\n\tawait writeMigrationTs(packageDir, leg.migrationTsContent);\n}\nasync function executeMigrationPlanCommand(options, startTime, callbacks) {\n\ttry {\n\t\treturn await executeMigrationPlanCommandInner(options, startTime, callbacks);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\treturn notOk(errorUnexpected(message, { why: `Unexpected error during migration plan: ${message}` }));\n\t}\n}\nasync function executeMigrationPlanCommandInner(options, startTime, callbacks) {\n\tconst config = options.config;\n\tconst cwd = options.cwd;\n\tconst { configPath, migrationsDir, appMigrationsDir, appMigrationsRelative } = resolveMigrationPaths(options.configPath, config, cwd);\n\tconst contractPathAbsolute = resolveContractPath(config);\n\tconst contractPath = relative(cwd, contractPathAbsolute);\n\tcallbacks?.onContextResolved?.({\n\t\tconfigPath,\n\t\tcontractPath,\n\t\tappMigrationsRelative\n\t});\n\tlet contractJsonContent;\n\ttry {\n\t\tcontractJsonContent = await readFile(contractPathAbsolute, \"utf-8\");\n\t} catch (error) {\n\t\tif (isEnoent(error)) 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\tconst stack = createControlStack(config);\n\tconst familyInstance = config.family.create(stack);\n\tconst controlAdapter = config.adapter.create(stack);\n\tlet toContract;\n\ttry {\n\t\ttoContract = familyInstance.deserializeContract(castAs(JSON.parse(contractJsonContent)));\n\t} catch (error) {\n\t\treturn notOk(errorContractValidationFailed(`Contract at ${contractPathAbsolute} failed to deserialize: ${error instanceof Error ? error.message : String(error)}`, { where: { path: contractPathAbsolute } }));\n\t}\n\tconst rawStorageHash = toContract.storage?.storageHash;\n\tif (typeof rawStorageHash !== \"string\") return notOk(errorContractValidationFailed(\"Contract is missing storageHash\", { where: { path: contractPathAbsolute } }));\n\tlet toStorageHash = rawStorageHash;\n\tlet toArtifacts = null;\n\tlet fromContract = null;\n\tlet fromHash = null;\n\tlet snapshotStartContract = null;\n\tlet isAutoBaseline = false;\n\tconst tolerantAggregateResult = await loadContractSpaceAggregateForCli({\n\t\ttargetId: config.target.targetId,\n\t\tmigrationsDir,\n\t\tappContract: toContract,\n\t\textensions: config.extensions ?? [],\n\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json)\n\t});\n\tif (!tolerantAggregateResult.ok) return notOk(tolerantAggregateResult.failure);\n\tconst resolutionSpace = tolerantAggregateResult.value.app;\n\tconst resolutionResult = await resolveFromForPlan({\n\t\toptionsFrom: options.from,\n\t\tspace: resolutionSpace\n\t});\n\tif (!resolutionResult.ok) return notOk(resolutionResult.failure);\n\tswitch (resolutionResult.value.kind) {\n\t\tcase \"greenfield\": break;\n\t\tcase \"graph-node\":\n\t\t\tfromHash = resolutionResult.value.fromHash;\n\t\t\tfromContract = resolutionResult.value.fromContract;\n\t\t\tbreak;\n\t\tcase \"ref\":\n\t\t\tfromHash = resolutionResult.value.fromHash;\n\t\t\tfromContract = resolutionResult.value.fromContract;\n\t\t\tsnapshotStartContract = {\n\t\t\t\tfromHash: resolutionResult.value.fromHash,\n\t\t\t\tcontractJson: resolutionResult.value.contractJson,\n\t\t\t\tcontractDts: resolutionResult.value.contractDts\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"auto-baseline\":\n\t\t\tfromHash = resolutionResult.value.fromHash;\n\t\t\tfromContract = resolutionResult.value.fromContract;\n\t\t\tsnapshotStartContract = {\n\t\t\t\tfromHash: resolutionResult.value.fromHash,\n\t\t\t\tcontractJson: resolutionResult.value.contractJson,\n\t\t\t\tcontractDts: resolutionResult.value.contractDts\n\t\t\t};\n\t\t\tisAutoBaseline = true;\n\t\t\tbreak;\n\t}\n\tif (options.to !== void 0) {\n\t\tconst toResolution = await resolveToForPlan(options.to, { space: resolutionSpace });\n\t\tif (!toResolution.ok) return notOk(toResolution.failure);\n\t\ttoContract = toResolution.value.contract;\n\t\ttoStorageHash = toResolution.value.hash;\n\t\ttoArtifacts = {\n\t\t\tcontractJson: toResolution.value.contractJson,\n\t\t\tcontractDts: toResolution.value.contractDts\n\t\t};\n\t}\n\tconst resolveImportSpecifier = createProjectSpecifierResolver(options.configPath);\n\tconst seedResult = await runContractSpaceSeedPhase({\n\t\tmigrationsDir,\n\t\textensions: toExtensionInputs(config.extensions ?? [])\n\t});\n\tfor (const record of seedResult.seeded) callbacks?.onSeeded?.(record);\n\tconst emittedExtensionDirs = seedResult.seeded.flatMap((r) => r.newMigrationDirs.map((dirName) => ({\n\t\tspaceId: r.spaceId,\n\t\tdirName\n\t})));\n\tif (fromHash === toStorageHash && !isAutoBaseline) return ok({\n\t\tok: true,\n\t\tnoOp: true,\n\t\tfrom: fromHash,\n\t\tto: toStorageHash,\n\t\toperations: [],\n\t\temittedExtensionDirs,\n\t\tsummary: \"No changes detected between contracts\",\n\t\ttimings: { total: Date.now() - startTime }\n\t});\n\tconst migrations = getTargetMigrations(config.target);\n\tif (!migrations) return notOk(errorTargetMigrationNotSupported({ why: `Target \"${config.target.id}\" does not support migrations` }));\n\tconst aggregateResult = await buildContractSpaceAggregate({\n\t\ttargetId: config.target.targetId,\n\t\tmigrationsDir,\n\t\tappContract: toContract,\n\t\textensions: config.extensions ?? [],\n\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json)\n\t});\n\tif (!aggregateResult.ok) return notOk(aggregateResult.failure);\n\tconst aggregate = aggregateResult.value;\n\tconst frameworkComponents = assertFrameworkComponentsCompatible(config.family.familyId, config.target.targetId, [\n\t\tconfig.target,\n\t\tconfig.adapter,\n\t\t...config.extensions ?? []\n\t]);\n\tasync function writeDestinationSnapshot(destHash) {\n\t\tif (toArtifacts !== null) {\n\t\t\tawait writeContractSnapshot(migrationsDir, destHash, {\n\t\t\t\tcontractJson: toArtifacts.contractJson,\n\t\t\t\tcontractDts: toArtifacts.contractDts\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst destinationArtifacts = getEmittedArtifactPaths(contractPathAbsolute);\n\t\tconst [contractJsonRaw, contractDts] = await Promise.all([readFile(destinationArtifacts.jsonPath, \"utf-8\"), readFile(destinationArtifacts.dtsPath, \"utf-8\")]);\n\t\tawait writeContractSnapshot(migrationsDir, destHash, {\n\t\t\tcontractJson: castAs(JSON.parse(contractJsonRaw)),\n\t\t\tcontractDts\n\t\t});\n\t}\n\ttry {\n\t\tconst planner = migrations.createPlanner(controlAdapter);\n\t\tif (isAutoBaseline && fromHash !== null && fromContract !== null && snapshotStartContract !== null) {\n\t\t\tconst baselineTimestamp = /* @__PURE__ */ new Date();\n\t\t\tconst deltaTimestamp = new Date(baselineTimestamp.getTime() + 6e4);\n\t\t\tconst baselineDirName = formatMigrationDirName(baselineTimestamp, \"baseline\");\n\t\t\tconst deltaDirName = formatMigrationDirName(deltaTimestamp, options.name ?? \"migration\");\n\t\t\tconst baselinePackageDir = join(appMigrationsDir, baselineDirName);\n\t\t\tconst deltaPackageDir = join(appMigrationsDir, deltaDirName);\n\t\t\tconst baselineLeg = await runPlannerLeg(planner, migrations, frameworkComponents, fromContract, null, aggregate.app.spaceId, aggregate, snapshotsImportPathFrom(baselinePackageDir, migrationsDir), resolveImportSpecifier);\n\t\t\tif (!baselineLeg.ok) return notOk(baselineLeg.failure);\n\t\t\tawait writePlannedMigrationPackage(baselinePackageDir, null, fromHash, baselineTimestamp, baselineLeg.value);\n\t\t\tawait writeContractSnapshot(migrationsDir, fromHash, {\n\t\t\t\tcontractJson: snapshotStartContract.contractJson,\n\t\t\t\tcontractDts: snapshotStartContract.contractDts\n\t\t\t});\n\t\t\tif (fromHash === toStorageHash) {\n\t\t\t\tconst baselineOps = baselineLeg.value.hasPlaceholders ? [] : baselineLeg.value.plannedOps;\n\t\t\t\tif (baselineLeg.value.hasPlaceholders) {\n\t\t\t\t\tconst baselineDir = relative(cwd, baselinePackageDir);\n\t\t\t\t\treturn ok({\n\t\t\t\t\t\tok: true,\n\t\t\t\t\t\tnoOp: false,\n\t\t\t\t\t\tfrom: fromHash,\n\t\t\t\t\t\tto: toStorageHash,\n\t\t\t\t\t\tdir: baselineDir,\n\t\t\t\t\t\tbaselineDir,\n\t\t\t\t\t\toperations: [],\n\t\t\t\t\t\temittedExtensionDirs,\n\t\t\t\t\t\tpendingPlaceholders: true,\n\t\t\t\t\t\tsummary: \"Planned baseline with placeholder(s) — edit migration.ts then run `node migration.ts` to self-emit\",\n\t\t\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst preview = hasOperationPreview(familyInstance) ? familyInstance.toOperationPreview(baselineOps) : void 0;\n\t\t\t\treturn ok({\n\t\t\t\t\tok: true,\n\t\t\t\t\tnoOp: false,\n\t\t\t\t\tfrom: fromHash,\n\t\t\t\t\tto: toStorageHash,\n\t\t\t\t\tbaselineDir: relative(cwd, baselinePackageDir),\n\t\t\t\t\toperations: baselineOps.map((op) => ({\n\t\t\t\t\t\tid: op.id,\n\t\t\t\t\t\tlabel: op.label,\n\t\t\t\t\t\toperationClass: op.operationClass\n\t\t\t\t\t})),\n\t\t\t\t\temittedExtensionDirs,\n\t\t\t\t\t...preview !== void 0 ? { preview } : {},\n\t\t\t\t\tsummary: buildAutoBaselinePlanSummary(0, emittedExtensionDirs.length),\n\t\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst deltaLeg = await runPlannerLeg(planner, migrations, frameworkComponents, aggregate.app.contract(), fromContract, aggregate.app.spaceId, aggregate, snapshotsImportPathFrom(deltaPackageDir, migrationsDir), resolveImportSpecifier);\n\t\t\tif (!deltaLeg.ok) return notOk(deltaLeg.failure);\n\t\t\tawait writePlannedMigrationPackage(deltaPackageDir, fromHash, toStorageHash, deltaTimestamp, deltaLeg.value);\n\t\t\tawait writeDestinationSnapshot(toStorageHash);\n\t\t\tawait writeContractSnapshot(migrationsDir, fromHash, {\n\t\t\t\tcontractJson: snapshotStartContract.contractJson,\n\t\t\t\tcontractDts: snapshotStartContract.contractDts\n\t\t\t});\n\t\t\tconst deltaOps = deltaLeg.value.hasPlaceholders ? [] : deltaLeg.value.plannedOps;\n\t\t\tif (deltaLeg.value.hasPlaceholders) return ok({\n\t\t\t\tok: true,\n\t\t\t\tnoOp: false,\n\t\t\t\tfrom: fromHash,\n\t\t\t\tto: toStorageHash,\n\t\t\t\tdir: relative(cwd, deltaPackageDir),\n\t\t\t\tbaselineDir: relative(cwd, baselinePackageDir),\n\t\t\t\toperations: [],\n\t\t\t\temittedExtensionDirs,\n\t\t\t\tpendingPlaceholders: true,\n\t\t\t\tsummary: \"Planned baseline + migration with placeholder(s) — edit migration.ts then run `node migration.ts` to self-emit\",\n\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t});\n\t\t\tconst preview = hasOperationPreview(familyInstance) ? familyInstance.toOperationPreview(deltaOps) : void 0;\n\t\t\treturn ok({\n\t\t\t\tok: true,\n\t\t\t\tnoOp: false,\n\t\t\t\tfrom: fromHash,\n\t\t\t\tto: toStorageHash,\n\t\t\t\tdir: relative(cwd, deltaPackageDir),\n\t\t\t\tbaselineDir: relative(cwd, baselinePackageDir),\n\t\t\t\toperations: deltaOps.map((op) => ({\n\t\t\t\t\tid: op.id,\n\t\t\t\t\tlabel: op.label,\n\t\t\t\t\toperationClass: op.operationClass\n\t\t\t\t})),\n\t\t\t\temittedExtensionDirs,\n\t\t\t\t...preview !== void 0 ? { preview } : {},\n\t\t\t\tsummary: buildAutoBaselinePlanSummary(deltaOps.length, emittedExtensionDirs.length),\n\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t});\n\t\t}\n\t\tconst timestamp = /* @__PURE__ */ new Date();\n\t\tconst packageDir = join(appMigrationsDir, formatMigrationDirName(timestamp, options.name ?? \"migration\"));\n\t\tconst deltaLeg = await runPlannerLeg(planner, migrations, frameworkComponents, aggregate.app.contract(), fromContract, aggregate.app.spaceId, aggregate, snapshotsImportPathFrom(packageDir, migrationsDir), resolveImportSpecifier);\n\t\tif (!deltaLeg.ok) return notOk(deltaLeg.failure);\n\t\tawait writePlannedMigrationPackage(packageDir, fromHash, toStorageHash, timestamp, deltaLeg.value);\n\t\tawait writeDestinationSnapshot(toStorageHash);\n\t\tif (snapshotStartContract !== null) await writeContractSnapshot(migrationsDir, snapshotStartContract.fromHash, {\n\t\t\tcontractJson: snapshotStartContract.contractJson,\n\t\t\tcontractDts: snapshotStartContract.contractDts\n\t\t});\n\t\tif (deltaLeg.value.hasPlaceholders) return ok({\n\t\t\tok: true,\n\t\t\tnoOp: false,\n\t\t\tfrom: fromHash,\n\t\t\tto: toStorageHash,\n\t\t\tdir: relative(cwd, packageDir),\n\t\t\toperations: [],\n\t\t\temittedExtensionDirs,\n\t\t\tpendingPlaceholders: true,\n\t\t\tsummary: \"Planned migration with placeholder(s) — edit migration.ts then run `node migration.ts` to self-emit\",\n\t\t\ttimings: { total: Date.now() - startTime }\n\t\t});\n\t\tconst plannedOps = deltaLeg.value.plannedOps;\n\t\tconst preview = hasOperationPreview(familyInstance) ? familyInstance.toOperationPreview(plannedOps) : void 0;\n\t\treturn ok({\n\t\t\tok: true,\n\t\t\tnoOp: false,\n\t\t\tfrom: fromHash,\n\t\t\tto: toStorageHash,\n\t\t\tdir: relative(cwd, packageDir),\n\t\t\toperations: plannedOps.map((op) => ({\n\t\t\t\tid: op.id,\n\t\t\t\tlabel: op.label,\n\t\t\t\toperationClass: op.operationClass\n\t\t\t})),\n\t\t\temittedExtensionDirs,\n\t\t\t...preview !== void 0 ? { preview } : {},\n\t\t\tsummary: buildPlanSummary(plannedOps.length, emittedExtensionDirs.length),\n\t\t\ttimings: { total: Date.now() - startTime }\n\t\t});\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tif (MigrationToolsError.is(error)) return notOk(error);\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\treturn notOk(errorUnexpected(message, { why: `Unexpected error during migration plan: ${message}` }));\n\t}\n}\n/**\n* Compose the success-line summary so the cross-space side effect\n* (extension-space migration packages materialised on disk during\n* this `plan` run) is visible in the top line — not just in the\n* step log above it.\n*\n* Example outputs:\n* - `Planned 3 operation(s)` (app-space-only project)\n* - `Planned 3 operation(s); materialised 1 extension-space migration` (one extension)\n* - `Planned 3 operation(s); materialised 2 extension-space migrations` (two extensions)\n*\n* Locks AC3 at the summary-line level: a reader of the success line\n* can tell that something happened beyond the app space.\n*/\nfunction buildPlanSummary(plannedOpsCount, emittedExtensionDirsCount) {\n\tconst base = `Planned ${plannedOpsCount} operation(s)`;\n\tif (emittedExtensionDirsCount === 0) return base;\n\treturn `${base}; materialised ${emittedExtensionDirsCount} ${emittedExtensionDirsCount === 1 ? \"extension-space migration\" : \"extension-space migrations\"}`;\n}\nfunction buildAutoBaselinePlanSummary(deltaOpsCount, emittedExtensionDirsCount) {\n\tconst base = `Planned baseline + ${deltaOpsCount} operation(s)`;\n\tif (emittedExtensionDirsCount === 0) return base;\n\treturn `${base}; materialised ${emittedExtensionDirsCount} ${emittedExtensionDirsCount === 1 ? \"extension-space migration\" : \"extension-space migrations\"}`;\n}\n//#endregion\nexport { runContractSpaceSeedPhase as i, resolveFromForPlan as n, resolveToForPlan as r, executeMigrationPlanCommand as t };\n\n//# sourceMappingURL=migration-plan-B4ND_Xr3.mjs.map"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { o as loadConfigForSections } from "./exports-BZLNbtkY.mjs";
2
2
  import { N as errorUnexpected, b as errorNoMigrations, d as errorFileNotFound, s as errorContractValidationFailed, v as errorMigrationPackageNotFound } from "./cli-errors-CihMAEVj-C1uUYBop.mjs";
3
- import { n as createTerminalUI, u as formatMigrationShowOutput } from "./terminal-ui-DQNCDg2u-B3PFqjB8.mjs";
4
- import { _ as resolveMigrationPaths, b as setCommandExamples, g as resolveContractPath, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, x as setCommandSeeAlso, y as setCommandDescriptions } from "./command-helpers-DutQjYgy-CDfFwtAa.mjs";
5
- import { a as loadContractSpaceAggregateForCli } from "./contract-space-aggregate-loader-sF0OJ6oz-jRjdZoyZ.mjs";
6
- import { t as createControlClient } from "./client-CaIWFVnh-PVaTEvdx.mjs";
3
+ import { n as createTerminalUI, u as formatMigrationShowOutput } from "./terminal-ui-CUZTa2vH-WvAtuIOS.mjs";
4
+ import { _ as resolveMigrationPaths, b as setCommandExamples, g as resolveContractPath, m as parseGlobalFlagsOrExit, s as formatStyledHeader, t as addGlobalOptions, u as handleResult, x as setCommandSeeAlso, y as setCommandDescriptions } from "./command-helpers-uzQbbM97-EaL4zWf5.mjs";
5
+ import { a as loadContractSpaceAggregateForCli } from "./contract-space-aggregate-loader-Cd0X2M_C-CFBkD540.mjs";
6
+ import { t as createControlClient } from "./client-DLPcSdv7-Cukdon0q.mjs";
7
7
  import { n as resolveMigrationRef } from "./ref-resolution-Bi4lpxM8-BX-7sl0f.mjs";
8
8
  import { n as looksLikePath, r as resolveAppTargetPath, t as findPackageByDirPath } from "./migration-path-target-yA4h5Zc6-DlzBblBG.mjs";
9
9
  import { ifDefined } from "@prisma/orm-framework/utils/defined";
@@ -13,7 +13,7 @@ import { readFile } from "node:fs/promises";
13
13
  import { APP_SPACE_ID, createControlStack } from "@prisma/orm-framework/components/control";
14
14
  import { notOk, ok } from "@prisma/orm-framework/utils/result";
15
15
  import { Command } from "commander";
16
- //#region ../../../1-framework/3-tooling/cli/dist/migration-show-BRy1GVBE.mjs
16
+ //#region ../../../1-framework/3-tooling/cli/dist/migration-show-CxT14RTs.mjs
17
17
  function pkgToPresent(spaceId, pkg, client) {
18
18
  const ops = castAs(pkg.ops);
19
19
  const rawPreview = client.toOperationPreview(ops) ?? { statements: [] };
@@ -175,4 +175,4 @@ function createMigrationShowCommand() {
175
175
  //#endregion
176
176
  export { createMigrationShowCommand as t };
177
177
 
178
- //# sourceMappingURL=migration-show-BRy1GVBE-NuwoczhZ.mjs.map
178
+ //# sourceMappingURL=migration-show-CxT14RTs-Bpfd4_FB.mjs.map