@prisma/orm-toolchain 8.0.0-rc.1-dev.22 → 8.0.0-rc.1-dev.24
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.
- package/dist/{aggregate-D53gnb7v.mjs → aggregate-BKbHUHLA.mjs} +7 -7
- package/dist/{aggregate-D53gnb7v.mjs.map → aggregate-BKbHUHLA.mjs.map} +1 -1
- package/dist/{aggregate-BflrjWPO.d.mts → aggregate-CA6bJ8UO.d.mts} +3 -3
- package/dist/{aggregate-BflrjWPO.d.mts.map → aggregate-CA6bJ8UO.d.mts.map} +1 -1
- package/dist/bin__prisma-next.mjs +31 -26
- package/dist/bin__prisma-next.mjs.map +1 -1
- package/dist/{caught-errors-D7Qznyrm-BzYooF6H.mjs → caught-errors-nYuTn3NK-DkD-ZrDr.mjs} +3 -3
- package/dist/caught-errors-nYuTn3NK-DkD-ZrDr.mjs.map +1 -0
- package/dist/{cli-errors-CDr3WcJP-NFry5GHb.d.mts → cli-errors-C7vbvQuK-DLpSxz4U.d.mts} +16 -8
- package/dist/{cli-errors-CDr3WcJP-NFry5GHb.d.mts.map → cli-errors-C7vbvQuK-DLpSxz4U.d.mts.map} +1 -1
- package/dist/cli-errors-kU09RUaz-CUkQ9XuM.mjs +235 -0
- package/dist/cli-errors-kU09RUaz-CUkQ9XuM.mjs.map +1 -0
- package/dist/cli-telemetry.mjs +7 -6
- package/dist/cli-telemetry.mjs.map +1 -1
- package/dist/cli.d.mts +38 -2
- package/dist/cli.d.mts.map +1 -1
- package/dist/cli.mjs +358 -5
- package/dist/cli.mjs.map +1 -1
- package/dist/cli__commands__contract-emit.d.mts +1 -1
- package/dist/cli__commands__contract-emit.mjs +1 -1
- package/dist/cli__commands__contract-infer.mjs +1 -1
- package/dist/cli__commands__db-init.mjs +1 -1
- package/dist/cli__commands__db-schema.mjs +1 -1
- package/dist/cli__commands__db-sign.mjs +1 -1
- package/dist/cli__commands__db-update.mjs +1 -1
- package/dist/cli__commands__db-verify.mjs +1 -1
- package/dist/cli__commands__migrate.d.mts +2 -2
- package/dist/cli__commands__migrate.mjs +1 -1
- package/dist/cli__commands__migration-check.mjs +1 -1
- package/dist/cli__commands__migration-graph.d.mts +1 -1
- package/dist/cli__commands__migration-graph.mjs +1 -1
- package/dist/cli__commands__migration-list.d.mts +2 -2
- package/dist/cli__commands__migration-list.mjs +1 -1
- package/dist/cli__commands__migration-log.d.mts +1 -1
- package/dist/cli__commands__migration-log.mjs +1 -1
- package/dist/cli__commands__migration-new.mjs +1 -1
- package/dist/cli__commands__migration-plan.d.mts +1 -1
- package/dist/cli__commands__migration-plan.mjs +1 -1
- package/dist/cli__commands__migration-show.mjs +1 -1
- package/dist/cli__commands__migration-status.d.mts +1 -1
- package/dist/cli__commands__migration-status.mjs +1 -1
- package/dist/cli__commands__ref.mjs +1 -1
- package/dist/cli__commands__telemetry.mjs +1 -1
- package/dist/cli__control-api.d.mts +26 -19
- package/dist/cli__control-api.d.mts.map +1 -1
- package/dist/cli__control-api.mjs +16 -16
- package/dist/cli__control-api__testing.d.mts +66 -0
- package/dist/cli__control-api__testing.d.mts.map +1 -0
- package/dist/cli__control-api__testing.mjs +255 -0
- package/dist/cli__control-api__testing.mjs.map +1 -0
- package/dist/cli__migration-cli.mjs +16 -7
- package/dist/cli__migration-cli.mjs.map +1 -1
- package/dist/{client-Y6qbDk7X-BzKLmBZo.mjs → client-milNsAnF-B92uF3yv.mjs} +11 -11
- package/dist/client-milNsAnF-B92uF3yv.mjs.map +1 -0
- package/dist/command-helpers-bGYd7Aab-BNSzfbHK.mjs +765 -0
- package/dist/command-helpers-bGYd7Aab-BNSzfbHK.mjs.map +1 -0
- package/dist/config-loader.d.mts +2 -2
- package/dist/config-loader.mjs +2 -2
- package/dist/{contract-at-errors-Dv1mxKYO-C29YB4RC.mjs → contract-at-errors-BTeDEXm4-BAIDia2-.mjs} +3 -3
- package/dist/contract-at-errors-BTeDEXm4-BAIDia2-.mjs.map +1 -0
- package/dist/{contract-emit-CTm2zfuG-7PV9SBY6.mjs → contract-emit-Bdf4DAR4-lKqkbfZT.mjs} +8 -38
- package/dist/contract-emit-Bdf4DAR4-lKqkbfZT.mjs.map +1 -0
- package/dist/{contract-emit-D8IXP9Qp-Df6NwXn8.mjs → contract-emit-Ci-8sP-b-QzQXK2xQ.mjs} +29 -23
- package/dist/contract-emit-Ci-8sP-b-QzQXK2xQ.mjs.map +1 -0
- package/dist/{contract-emit-B65_UiFn.d.mts → contract-emit-CvwNE4R1-DEn1V1Zo.d.mts} +2 -2
- package/dist/contract-emit-CvwNE4R1-DEn1V1Zo.d.mts.map +1 -0
- package/dist/contract-emit-E6m8HE42-Bfiodzf_.mjs +2 -0
- package/dist/{contract-infer-BwT7ngoo-Dx6aAwIN.mjs → contract-infer-hhyMJiwS-BJ5cYC9P.mjs} +7 -6
- package/dist/contract-infer-hhyMJiwS-BJ5cYC9P.mjs.map +1 -0
- package/dist/{contract-snapshot-resolution-SATuw0JW-CsYq7g_n.mjs → contract-snapshot-resolution-CyvX0DPz-BBQI_70j.mjs} +7 -7
- package/dist/contract-snapshot-resolution-CyvX0DPz-BBQI_70j.mjs.map +1 -0
- package/dist/{contract-snapshot-store-C9-J6OBn-ByElY0EC.mjs → contract-snapshot-store-C9-J6OBn-kpuB2oCK.mjs} +2 -2
- package/dist/{contract-snapshot-store-C9-J6OBn-ByElY0EC.mjs.map → contract-snapshot-store-C9-J6OBn-kpuB2oCK.mjs.map} +1 -1
- package/dist/{contract-space-aggregate-loader-C5r12INu-Db_pa3rX.mjs → contract-space-aggregate-loader-DOzo1sk9-CCPCubsg.mjs} +7 -6
- package/dist/contract-space-aggregate-loader-DOzo1sk9-CCPCubsg.mjs.map +1 -0
- package/dist/{db-init-CBj_EWg3.mjs → db-init-3CbSYxRI-BlTkWh8n.mjs} +10 -8
- package/dist/db-init-3CbSYxRI-BlTkWh8n.mjs.map +1 -0
- package/dist/{db-schema-BWpeh0Q_.mjs → db-schema-BVLbe3EL-WLnbuo77.mjs} +6 -5
- package/dist/db-schema-BVLbe3EL-WLnbuo77.mjs.map +1 -0
- package/dist/{db-sign-DCb_DKtv.mjs → db-sign-Cdw2RmoG-C-X5UheR.mjs} +24 -11
- package/dist/db-sign-Cdw2RmoG-C-X5UheR.mjs.map +1 -0
- package/dist/{db-update-WX0KitcX.mjs → db-update-BHOdo8PV-BVBNKrJc.mjs} +11 -9
- package/dist/db-update-BHOdo8PV-BVBNKrJc.mjs.map +1 -0
- package/dist/{db-verify-B8ax2Y_x-Bp4s5Ra6.mjs → db-verify-C9P9oNCs-gieY7hV2.mjs} +33 -16
- package/dist/db-verify-C9P9oNCs-gieY7hV2.mjs.map +1 -0
- package/dist/{domain-type-generation-bpSO3Y0L-Cdauqrnc.mjs → domain-type-generation-bpSO3Y0L-jo2C7LlH.mjs} +2 -2
- package/dist/{domain-type-generation-bpSO3Y0L-Cdauqrnc.mjs.map → domain-type-generation-bpSO3Y0L-jo2C7LlH.mjs.map} +1 -1
- package/dist/emitter.d.mts +1 -1
- package/dist/emitter.mjs +2 -2
- package/dist/emitter__domain-type-generation.mjs +1 -1
- package/dist/{exports-BCLg4CiV-okAfZydo.mjs → exports-BCLg4CiV-05kuwcb0.mjs} +4 -4
- package/dist/{exports-BCLg4CiV-okAfZydo.mjs.map → exports-BCLg4CiV-05kuwcb0.mjs.map} +1 -1
- package/dist/exports-BZLNbtkY.mjs +215 -0
- package/dist/exports-BZLNbtkY.mjs.map +1 -0
- package/dist/{exports-BN0vFTxG.mjs → exports-CqNUihkI.mjs} +2 -2
- package/dist/{exports-BN0vFTxG.mjs.map → exports-CqNUihkI.mjs.map} +1 -1
- package/dist/{exports-BnihzVhw.mjs → exports-DaxzMVtq.mjs} +16 -4
- package/dist/exports-DaxzMVtq.mjs.map +1 -0
- package/dist/{format-Bw3LVJ1v-BJ6lVFMA.mjs → format-Ddhz7xFW-Bo1nhay8.mjs} +18 -15
- package/dist/format-Ddhz7xFW-Bo1nhay8.mjs.map +1 -0
- package/dist/{framework-components-3DdB31mk-BHyX-OlJ.mjs → framework-components-Cruf6BPK-CaQvMI3T.mjs} +7 -5
- package/dist/framework-components-Cruf6BPK-CaQvMI3T.mjs.map +1 -0
- package/dist/index-mCsi_ND5.d.mts +49 -0
- package/dist/index-mCsi_ND5.d.mts.map +1 -0
- package/dist/{init-CPB89WK2-DPZRZ9Ee.mjs → init-BbmawfZx-DCylULYh.mjs} +23 -8
- package/dist/init-BbmawfZx-DCylULYh.mjs.map +1 -0
- package/dist/{inspect-live-schema-Da76TWOs-CAFqkhGb.mjs → inspect-live-schema-BEQun_1x-CZpCgg8A.mjs} +17 -13
- package/dist/inspect-live-schema-BEQun_1x-CZpCgg8A.mjs.map +1 -0
- package/dist/{invariants-BzYfO9IL-BXTvx0z9.mjs → invariants-D5TNnX5E-rjPoJGFq.mjs} +4 -3
- package/dist/invariants-D5TNnX5E-rjPoJGFq.mjs.map +1 -0
- package/dist/{io-CHUUeHh0-CoCBe9eN.mjs → io-CHUUeHh0-CbyTkKP6.mjs} +2 -2
- package/dist/{io-CHUUeHh0-CoCBe9eN.mjs.map → io-CHUUeHh0-CbyTkKP6.mjs.map} +1 -1
- package/dist/{legend-5iwwlLU2-CB8bdQKJ.mjs → legend-BBtAETiW-BHqTbUjx.mjs} +3 -3
- package/dist/legend-BBtAETiW-BHqTbUjx.mjs.map +1 -0
- package/dist/{migrate-B-NAuO90.mjs → migrate-B-hpVTxi-DJzFYT2w.mjs} +44 -17
- package/dist/migrate-B-hpVTxi-DJzFYT2w.mjs.map +1 -0
- package/dist/{migrate-show-B2LkXkoB-D1ZNl84C.mjs → migrate-show-CUymfnbM-BbpcO2FY.mjs} +9 -12
- package/dist/migrate-show-CUymfnbM-BbpcO2FY.mjs.map +1 -0
- package/dist/{migrate-show-60NNqVia-oGqMaVA9.d.mts → migrate-show-g71Z4vJw-ocdTvf70.d.mts} +10 -5
- package/dist/migrate-show-g71Z4vJw-ocdTvf70.d.mts.map +1 -0
- package/dist/{migration-DAJY-NmR.mjs → migration-_C5W2uXF.mjs} +2 -2
- package/dist/{migration-DAJY-NmR.mjs.map → migration-_C5W2uXF.mjs.map} +1 -1
- package/dist/{migration-check-DONPyXff-CGTUpLv-.mjs → migration-check-DHYPMUFe-Cni_ZUzB.mjs} +33 -30
- package/dist/migration-check-DHYPMUFe-Cni_ZUzB.mjs.map +1 -0
- package/dist/{migration-check-BDjtAn7x-B0nEBR0k.mjs → migration-check-zgqYe3SB-B6LI6wY7.mjs} +22 -9
- package/dist/migration-check-zgqYe3SB-B6LI6wY7.mjs.map +1 -0
- package/dist/{migration-command-scaffold-BPqXPCFV-Bls2Wwg7.mjs → migration-command-scaffold-DsT7ke7B-D3u913Po.mjs} +26 -8
- package/dist/migration-command-scaffold-DsT7ke7B-D3u913Po.mjs.map +1 -0
- package/dist/{migration-graph-HKch1Xk4-DyWhXtjZ.mjs → migration-graph-CChCjts3-ERrIm5aT.mjs} +3 -3
- package/dist/{migration-graph-HKch1Xk4-DyWhXtjZ.mjs.map → migration-graph-CChCjts3-ERrIm5aT.mjs.map} +1 -1
- package/dist/{migration-graph-Dn469b0l.mjs → migration-graph-Dm9gU0oE-DxPD_SNA.mjs} +20 -10
- package/dist/migration-graph-Dm9gU0oE-DxPD_SNA.mjs.map +1 -0
- package/dist/{migration-list-C9OPCMt--C28yBgVr.mjs → migration-list-Bkase_ZM-D-bErpSr.mjs} +4 -4
- package/dist/migration-list-Bkase_ZM-D-bErpSr.mjs.map +1 -0
- package/dist/{migration-list-jk4iCtmO.mjs → migration-list-DDGUTC8Y-B_X7rkez.mjs} +19 -9
- package/dist/migration-list-DDGUTC8Y-B_X7rkez.mjs.map +1 -0
- package/dist/{migration-log-DQzUBrm8-D3m9wcuf.mjs → migration-log-Cft50PRu-DcnHdxT4.mjs} +20 -8
- package/dist/migration-log-Cft50PRu-DcnHdxT4.mjs.map +1 -0
- package/dist/{migration-new-BkSY6m0t.mjs → migration-new-D9GHbYwF-C8D22HXG.mjs} +25 -5
- package/dist/migration-new-D9GHbYwF-C8D22HXG.mjs.map +1 -0
- package/dist/{migration-new-g98oB3nC-BcrkxAAt.mjs → migration-new-RorO1I8r-Ch8NQ4GQ.mjs} +19 -18
- package/dist/migration-new-RorO1I8r-Ch8NQ4GQ.mjs.map +1 -0
- package/dist/{migration-path-target-BPYp3LNc-DsDdLU0J.mjs → migration-path-target-DhGt62Mi-dm4TU1hJ.mjs} +4 -4
- package/dist/migration-path-target-DhGt62Mi-dm4TU1hJ.mjs.map +1 -0
- package/dist/{migration-plan-CjIYMJZy.mjs → migration-plan-BOhasCLr-GJWYoOA8.mjs} +25 -5
- package/dist/migration-plan-BOhasCLr-GJWYoOA8.mjs.map +1 -0
- package/dist/{migration-plan-CwuZLXVE-DAJ-JUQT.mjs → migration-plan-DrCTzrXH-CDJbdiC6.mjs} +29 -28
- package/dist/migration-plan-DrCTzrXH-CDJbdiC6.mjs.map +1 -0
- package/dist/{migration-plan-BsOYRogP-CC1UFAbu.d.mts → migration-plan-t2e_8yD2-w5Ffa0V_.d.mts} +10 -5
- package/dist/migration-plan-t2e_8yD2-w5Ffa0V_.d.mts.map +1 -0
- package/dist/{migration-show-CW6EKtfw.mjs → migration-show-DRARjIbv-1p6EE_Uw.mjs} +24 -12
- package/dist/migration-show-DRARjIbv-1p6EE_Uw.mjs.map +1 -0
- package/dist/{migration-status-DSQcBhiN.mjs → migration-status-Yh0eOQJN-YpcPDpNh.mjs} +26 -13
- package/dist/migration-status-Yh0eOQJN-YpcPDpNh.mjs.map +1 -0
- package/dist/migration-tools.d.mts +2 -2
- package/dist/migration-tools.mjs +8 -8
- package/dist/migration-tools__aggregate.d.mts +1 -1
- package/dist/migration-tools__aggregate.mjs +1 -1
- package/dist/migration-tools__contract-snapshot-store.mjs +1 -1
- package/dist/migration-tools__io.mjs +1 -1
- package/dist/migration-tools__migration-ts.mjs +1 -1
- package/dist/migration-tools__migration.mjs +1 -1
- package/dist/migration-tools__spaces.d.mts +1 -1
- package/dist/migration-tools__spaces.mjs +2 -2
- package/dist/{migration-ts-FyF55c4M.mjs → migration-ts-BoHxxGvi.mjs} +2 -2
- package/dist/{migration-ts-FyF55c4M.mjs.map → migration-ts-BoHxxGvi.mjs.map} +1 -1
- package/dist/{project-import-root-C_bd0ooL-WkbJLnAA.mjs → project-import-root--e8xli8Z-Bfrvrv67.mjs} +3 -3
- package/dist/project-import-root--e8xli8Z-Bfrvrv67.mjs.map +1 -0
- package/dist/{ref-eJjxzYTh-CNiyDL4p.mjs → ref-BQcl8Ksv-BYZY0Ktb.mjs} +12 -17
- package/dist/ref-BQcl8Ksv-BYZY0Ktb.mjs.map +1 -0
- package/dist/{ref-DSAZime8.mjs → ref-Cu7Zc1Hv-_R4MnDfr.mjs} +30 -7
- package/dist/ref-Cu7Zc1Hv-_R4MnDfr.mjs.map +1 -0
- package/dist/{ref-advancement-DaZBzm7m-BZQtedYC.mjs → ref-advancement-DaZBzm7m-Deq5Cs7O.mjs} +3 -3
- package/dist/{ref-advancement-DaZBzm7m-BZQtedYC.mjs.map → ref-advancement-DaZBzm7m-Deq5Cs7O.mjs.map} +1 -1
- package/dist/{ref-resolution-_S4xTT2L-BE5zgO2W.mjs → ref-resolution-BYCRg72z-DFhwf-XR.mjs} +3 -3
- package/dist/ref-resolution-BYCRg72z-DFhwf-XR.mjs.map +1 -0
- package/dist/{spaces-DxuvClN9.mjs → spaces-DBTCE3Js.mjs} +6 -6
- package/dist/{spaces-DxuvClN9.mjs.map → spaces-DBTCE3Js.mjs.map} +1 -1
- package/dist/{spaces-D5qtTlhj.d.mts → spaces-tWQi7CUv.d.mts} +2 -2
- package/dist/{spaces-D5qtTlhj.d.mts.map → spaces-tWQi7CUv.d.mts.map} +1 -1
- package/dist/{telemetry-DVBHDQd6-Ckn5oClN.mjs → telemetry-Dh6e0ams-BsjGN3tQ.mjs} +5 -4
- package/dist/telemetry-Dh6e0ams-BsjGN3tQ.mjs.map +1 -0
- package/dist/terminal-ui-ypPE9cN6-ilMBkmwT.mjs +645 -0
- package/dist/terminal-ui-ypPE9cN6-ilMBkmwT.mjs.map +1 -0
- package/dist/{verify-C6L_hiJU-B4V3bqvG.mjs → verify-DBsKxZrK-eDPxNiSS.mjs} +3 -3
- package/dist/verify-DBsKxZrK-eDPxNiSS.mjs.map +1 -0
- package/dist/{verify-contract-spaces-WvjSiWcB-zGhaCnfs.mjs → verify-contract-spaces-WvjSiWcB-DZPPCwWO.mjs} +2 -2
- package/dist/{verify-contract-spaces-WvjSiWcB-zGhaCnfs.mjs.map → verify-contract-spaces-WvjSiWcB-DZPPCwWO.mjs.map} +1 -1
- package/dist/vite-plugin-contract-emit.mjs +16 -4
- package/dist/vite-plugin-contract-emit.mjs.map +1 -1
- package/package.json +14 -12
- package/dist/caught-errors-D7Qznyrm-BzYooF6H.mjs.map +0 -1
- package/dist/client-Y6qbDk7X-BzKLmBZo.mjs.map +0 -1
- package/dist/command-helpers-C4WpR-QE-DE494TSG.mjs +0 -1627
- package/dist/command-helpers-C4WpR-QE-DE494TSG.mjs.map +0 -1
- package/dist/contract-at-errors-Dv1mxKYO-C29YB4RC.mjs.map +0 -1
- package/dist/contract-emit-B65_UiFn.d.mts.map +0 -1
- package/dist/contract-emit-CTm2zfuG-7PV9SBY6.mjs.map +0 -1
- package/dist/contract-emit-D8IXP9Qp-Df6NwXn8.mjs.map +0 -1
- package/dist/contract-infer-BwT7ngoo-Dx6aAwIN.mjs.map +0 -1
- package/dist/contract-snapshot-resolution-SATuw0JW-CsYq7g_n.mjs.map +0 -1
- package/dist/contract-space-aggregate-loader-C5r12INu-Db_pa3rX.mjs.map +0 -1
- package/dist/db-init-CBj_EWg3.mjs.map +0 -1
- package/dist/db-schema-BWpeh0Q_.mjs.map +0 -1
- package/dist/db-sign-DCb_DKtv.mjs.map +0 -1
- package/dist/db-update-WX0KitcX.mjs.map +0 -1
- package/dist/db-verify-B8ax2Y_x-Bp4s5Ra6.mjs.map +0 -1
- package/dist/exports-BnihzVhw.mjs.map +0 -1
- package/dist/exports-CDX9kZuw.mjs +0 -119
- package/dist/exports-CDX9kZuw.mjs.map +0 -1
- package/dist/format-Bw3LVJ1v-BJ6lVFMA.mjs.map +0 -1
- package/dist/framework-components-3DdB31mk-BHyX-OlJ.mjs.map +0 -1
- package/dist/index-Df9igRvP.d.mts +0 -18
- package/dist/index-Df9igRvP.d.mts.map +0 -1
- package/dist/init-CPB89WK2-DPZRZ9Ee.mjs.map +0 -1
- package/dist/inspect-live-schema-Da76TWOs-CAFqkhGb.mjs.map +0 -1
- package/dist/invariants-BzYfO9IL-BXTvx0z9.mjs.map +0 -1
- package/dist/legend-5iwwlLU2-CB8bdQKJ.mjs.map +0 -1
- package/dist/migrate-B-NAuO90.mjs.map +0 -1
- package/dist/migrate-show-60NNqVia-oGqMaVA9.d.mts.map +0 -1
- package/dist/migrate-show-B2LkXkoB-D1ZNl84C.mjs.map +0 -1
- package/dist/migration-check-BDjtAn7x-B0nEBR0k.mjs.map +0 -1
- package/dist/migration-check-DONPyXff-CGTUpLv-.mjs.map +0 -1
- package/dist/migration-command-scaffold-BPqXPCFV-Bls2Wwg7.mjs.map +0 -1
- package/dist/migration-graph-Dn469b0l.mjs.map +0 -1
- package/dist/migration-list-C9OPCMt--C28yBgVr.mjs.map +0 -1
- package/dist/migration-list-jk4iCtmO.mjs.map +0 -1
- package/dist/migration-log-DQzUBrm8-D3m9wcuf.mjs.map +0 -1
- package/dist/migration-new-BkSY6m0t.mjs.map +0 -1
- package/dist/migration-new-g98oB3nC-BcrkxAAt.mjs.map +0 -1
- package/dist/migration-path-target-BPYp3LNc-DsDdLU0J.mjs.map +0 -1
- package/dist/migration-plan-BsOYRogP-CC1UFAbu.d.mts.map +0 -1
- package/dist/migration-plan-CjIYMJZy.mjs.map +0 -1
- package/dist/migration-plan-CwuZLXVE-DAJ-JUQT.mjs.map +0 -1
- package/dist/migration-show-CW6EKtfw.mjs.map +0 -1
- package/dist/migration-status-DSQcBhiN.mjs.map +0 -1
- package/dist/project-import-root-C_bd0ooL-WkbJLnAA.mjs.map +0 -1
- package/dist/ref-DSAZime8.mjs.map +0 -1
- package/dist/ref-eJjxzYTh-CNiyDL4p.mjs.map +0 -1
- package/dist/ref-resolution-_S4xTT2L-BE5zgO2W.mjs.map +0 -1
- package/dist/telemetry-DVBHDQd6-Ckn5oClN.mjs.map +0 -1
- package/dist/verify-C6L_hiJU-B4V3bqvG.mjs.map +0 -1
|
@@ -1,29 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as resolveContractRef } from "./ref-resolution-_S4xTT2L-BE5zgO2W.mjs";
|
|
8
|
-
import { i as refuseUnknownInvariants, n as refuseMarkerOutsideGraph } from "./invariants-BzYfO9IL-BXTvx0z9.mjs";
|
|
9
|
-
import { t as listRefsByContractHash } from "./migration-list-C9OPCMt--C28yBgVr.mjs";
|
|
1
|
+
import { o as loadConfigForSections } from "./exports-BZLNbtkY.mjs";
|
|
2
|
+
import { A as errorUnexpected, O as errorTargetMigrationNotSupported, l as errorDriverRequired, o as errorContractValidationFailed, s as errorDatabaseConnectionRequired, u as errorFileNotFound, w as errorRunnerFailed, y as errorPathUnreachable } from "./cli-errors-kU09RUaz-CUkQ9XuM.mjs";
|
|
3
|
+
import { n as createTerminalUI, o as formatMigrationApplyCommandOutput } from "./terminal-ui-ypPE9cN6-ilMBkmwT.mjs";
|
|
4
|
+
import { d as maskConnectionUrl, g as resolveMigrationPaths, h as resolveContractPath, l as handleResult, o as formatStyledHeader, p as parseGlobalFlagsOrExit, t as addGlobalOptions, v as setCommandDescriptions, x as targetSupportsMigrations, y as setCommandExamples } from "./command-helpers-bGYd7Aab-BNSzfbHK.mjs";
|
|
5
|
+
import { a as loadContractSpaceAggregateForCli, s as refuseContractSpaceIntegrity, u as toDeclaredExtensionsFromRaw } from "./contract-space-aggregate-loader-DOzo1sk9-CCPCubsg.mjs";
|
|
6
|
+
import { t as listRefsByContractHash } from "./migration-list-Bkase_ZM-D-bErpSr.mjs";
|
|
10
7
|
import { c as computeMaxDirNameWidth, d as highlightFromEdgeAnnotations, f as indentMigrationGraphTreeBlock, h as renderMigrationGraphCommand, i as buildMigrationGraphRows, r as buildGrid, s as computeLabelColumn, u as formatOnPathMigrationRow } from "./migration-graph-command-render-BKrg6BPv-BP8Pfj4J.mjs";
|
|
11
|
-
import { t as
|
|
12
|
-
import { t as
|
|
8
|
+
import { a as readContractIR, t as advanceRefSafely } from "./ref-advancement-DaZBzm7m-Deq5Cs7O.mjs";
|
|
9
|
+
import { t as createControlClient } from "./client-milNsAnF-B92uF3yv.mjs";
|
|
10
|
+
import { t as mapContractAtError } from "./contract-at-errors-BTeDEXm4-BAIDia2-.mjs";
|
|
11
|
+
import { t as resolveContractRef } from "./ref-resolution-BYCRg72z-DFhwf-XR.mjs";
|
|
12
|
+
import { i as refuseUnknownInvariants, n as refuseMarkerOutsideGraph } from "./invariants-D5TNnX5E-rjPoJGFq.mjs";
|
|
13
|
+
import { t as mapCaughtMigrationError } from "./caught-errors-nYuTn3NK-DkD-ZrDr.mjs";
|
|
14
|
+
import { t as executeMigrateShowPlan } from "./migrate-show-CUymfnbM-BbpcO2FY.mjs";
|
|
13
15
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
14
|
-
import { notOk, ok } from "@prisma/orm-framework/utils/result";
|
|
15
16
|
import { readFile } from "node:fs/promises";
|
|
16
17
|
import { createControlStack } from "@prisma/orm-framework/components/control";
|
|
18
|
+
import { notOk, ok } from "@prisma/orm-framework/utils/result";
|
|
17
19
|
import { Command } from "commander";
|
|
18
|
-
//#region ../../../1-framework/3-tooling/cli/dist/
|
|
20
|
+
//#region ../../../1-framework/3-tooling/cli/dist/migrate-B-hpVTxi.mjs
|
|
19
21
|
/**
|
|
20
22
|
* Read-only preview of the migration path `migrate` will take. Delegates the
|
|
21
23
|
* path computation to {@link executeMigrateShowPlan} (the control-api core)
|
|
22
24
|
* and keeps only the styled header plus the Tier-3 graph rendering here.
|
|
23
25
|
*/
|
|
24
26
|
async function executeMigrateShowCommand(options, flags, ui) {
|
|
27
|
+
const readsLiveMarker = options.from === void 0 || options.from === "@db";
|
|
28
|
+
const configResult = await loadConfigForSections(options.config, [
|
|
29
|
+
"family",
|
|
30
|
+
"target",
|
|
31
|
+
"adapter",
|
|
32
|
+
...readsLiveMarker ? ["driver"] : [],
|
|
33
|
+
"extensions",
|
|
34
|
+
"db",
|
|
35
|
+
"migrations",
|
|
36
|
+
"contract"
|
|
37
|
+
]);
|
|
38
|
+
if (!configResult.ok) return configResult;
|
|
25
39
|
const planResult = await executeMigrateShowPlan({
|
|
26
|
-
|
|
40
|
+
config: configResult.value,
|
|
41
|
+
cwd: process.cwd(),
|
|
42
|
+
...ifDefined("configPath", options.config),
|
|
27
43
|
...ifDefined("db", options.db),
|
|
28
44
|
...ifDefined("to", options.to),
|
|
29
45
|
...ifDefined("from", options.from),
|
|
@@ -151,8 +167,19 @@ function mapApplyFailure(failure) {
|
|
|
151
167
|
});
|
|
152
168
|
}
|
|
153
169
|
async function executeMigrateCommand(options, flags, ui, startTime) {
|
|
154
|
-
const
|
|
155
|
-
|
|
170
|
+
const configResult = await loadConfigForSections(options.config, [
|
|
171
|
+
"family",
|
|
172
|
+
"target",
|
|
173
|
+
"adapter",
|
|
174
|
+
"driver",
|
|
175
|
+
"extensions",
|
|
176
|
+
"db",
|
|
177
|
+
"migrations",
|
|
178
|
+
"contract"
|
|
179
|
+
]);
|
|
180
|
+
if (!configResult.ok) return configResult;
|
|
181
|
+
const config = configResult.value;
|
|
182
|
+
const { configPath, migrationsDir, appMigrationsRelative, refsDir } = resolveMigrationPaths(options.config, config, process.cwd());
|
|
156
183
|
const dbConnection = options.db ?? config.db?.connection;
|
|
157
184
|
if (!dbConnection) return notOk(errorDatabaseConnectionRequired({
|
|
158
185
|
why: `Database connection is required for migrate (set db.connection in ${configPath}, or pass --db <url>)`,
|
|
@@ -360,4 +387,4 @@ function createMigrateCommand() {
|
|
|
360
387
|
//#endregion
|
|
361
388
|
export { createMigrateCommand as t };
|
|
362
389
|
|
|
363
|
-
//# sourceMappingURL=migrate-B-
|
|
390
|
+
//# sourceMappingURL=migrate-B-hpVTxi-DJzFYT2w.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-B-hpVTxi-DJzFYT2w.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migrate-B-hpVTxi.mjs"],"sourcesContent":["import { A as errorUnexpected, O as errorTargetMigrationNotSupported, l as errorDriverRequired, o as errorContractValidationFailed, s as errorDatabaseConnectionRequired, u as errorFileNotFound, w as errorRunnerFailed, y as errorPathUnreachable } from \"./cli-errors-kU09RUaz.mjs\";\nimport { a as formatMigrationApplyCommandOutput, t as createTerminalUI } from \"./terminal-ui-ypPE9cN6.mjs\";\nimport { _ as handleResult, f as targetSupportsMigrations, g as parseGlobalFlagsOrExit, i as maskConnectionUrl, l as setCommandDescriptions, o as resolveContractPath, s as resolveMigrationPaths, t as addGlobalOptions, u as setCommandExamples, x as formatStyledHeader } from \"./command-helpers-bGYd7Aab.mjs\";\nimport { a as loadContractSpaceAggregateForCli, s as refuseContractSpaceIntegrity, u as toDeclaredExtensionsFromRaw } from \"./contract-space-aggregate-loader-DOzo1sk9.mjs\";\nimport { t as createControlClient } from \"./client-milNsAnF.mjs\";\nimport { a as readContractIR, t as advanceRefSafely } from \"./ref-advancement-DaZBzm7m.mjs\";\nimport { t as mapCaughtMigrationError } from \"./caught-errors-nYuTn3NK.mjs\";\nimport { t as mapContractAtError } from \"./contract-at-errors-BTeDEXm4.mjs\";\nimport { i as refuseMarkerOutsideGraph, n as refuseUnknownInvariants } from \"./invariants-D5TNnX5E.mjs\";\nimport { t as executeMigrateShowPlan } from \"./migrate-show-CUymfnbM.mjs\";\nimport { t as listRefsByContractHash } from \"./migration-list-Bkase_ZM.mjs\";\nimport { t as resolveContractRef } from \"./ref-resolution-BYCRg72z.mjs\";\nimport { d as highlightFromEdgeAnnotations, f as indentMigrationGraphTreeBlock, h as buildGrid, i as formatOnPathMigrationRow, m as buildMigrationGraphRows, n as computeMaxDirNameWidth, r as renderMigrationGraphCommand, t as computeLabelColumn } from \"./migration-graph-command-render-BKrg6BPv.mjs\";\nimport { Command } from \"commander\";\nimport { loadConfigForSections } from \"@internal/config-loader\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { readFile } from \"node:fs/promises\";\nimport { createControlStack } from \"@internal/framework-components/control\";\n//#region src/commands/migrate.ts\n/**\n* Read-only preview of the migration path `migrate` will take. Delegates the\n* path computation to {@link executeMigrateShowPlan} (the control-api core)\n* and keeps only the styled header plus the Tier-3 graph rendering here.\n*/\nasync function executeMigrateShowCommand(options, flags, ui) {\n\tconst readsLiveMarker = options.from === void 0 || options.from === \"@db\";\n\tconst configResult = await loadConfigForSections(options.config, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t...readsLiveMarker ? [\"driver\"] : [],\n\t\t\"extensions\",\n\t\t\"db\",\n\t\t\"migrations\",\n\t\t\"contract\"\n\t]);\n\tif (!configResult.ok) return configResult;\n\tconst planResult = await executeMigrateShowPlan({\n\t\tconfig: configResult.value,\n\t\tcwd: process.cwd(),\n\t\t...ifDefined(\"configPath\", options.config),\n\t\t...ifDefined(\"db\", options.db),\n\t\t...ifDefined(\"to\", options.to),\n\t\t...ifDefined(\"from\", options.from),\n\t\tonPreflightComplete: ({ configPath, migrationsRelative, dbConnection, hasExplicitFrom }) => {\n\t\t\tif (!flags.json && !flags.quiet) {\n\t\t\t\tconst details = [{\n\t\t\t\t\tlabel: \"config\",\n\t\t\t\t\tvalue: configPath\n\t\t\t\t}, {\n\t\t\t\t\tlabel: \"migrations\",\n\t\t\t\t\tvalue: migrationsRelative\n\t\t\t\t}];\n\t\t\t\tif (dbConnection && !hasExplicitFrom) details.push({\n\t\t\t\t\tlabel: \"database\",\n\t\t\t\t\tvalue: maskConnectionUrl(String(dbConnection))\n\t\t\t\t});\n\t\t\t\tif (options.from) details.push({\n\t\t\t\t\tlabel: \"from\",\n\t\t\t\t\tvalue: options.from\n\t\t\t\t});\n\t\t\t\tif (options.to) details.push({\n\t\t\t\t\tlabel: \"to\",\n\t\t\t\t\tvalue: options.to\n\t\t\t\t});\n\t\t\t\tconst header = formatStyledHeader({\n\t\t\t\t\tcommand: \"migrate --show\",\n\t\t\t\t\tdescription: \"Preview the migration path migrate will take (read-only)\",\n\t\t\t\t\tdetails,\n\t\t\t\t\tflags\n\t\t\t\t});\n\t\t\t\tui.stderr(header);\n\t\t\t}\n\t\t}\n\t});\n\tif (!planResult.ok) return notOk(planResult.failure);\n\tconst plan = planResult.value;\n\tconst { aggregate, contractHash } = plan;\n\tconst orderedMigrations = plan.migrations;\n\tconst allSpaces = [aggregate.app, ...aggregate.extensions];\n\tlet graphOutput;\n\tlet runListDirNameWidth;\n\tlet runListLeftPad;\n\tif (!flags.json) {\n\t\tconst onPathHashes = new Set(orderedMigrations.map((m) => m.migrationHash));\n\t\tconst colorize = flags.color !== false;\n\t\tconst spaceLayouts = allSpaces.map((space) => {\n\t\t\tconst isApp = space.spaceId === aggregate.app.spaceId;\n\t\t\tconst spaceGraph = space.graph();\n\t\t\tconst rowModel = buildMigrationGraphRows(spaceGraph, isApp ? { contractHash } : {});\n\t\t\tconst edgeAnnotations = /* @__PURE__ */ new Map();\n\t\t\tfor (const edge of spaceGraph.migrationByHash.values()) edgeAnnotations.set(edge.migrationHash, { pathHighlight: onPathHashes.has(edge.migrationHash) ? \"on-path\" : \"off-path\" });\n\t\t\treturn {\n\t\t\t\tspace,\n\t\t\t\tisApp,\n\t\t\t\tspaceGraph,\n\t\t\t\trowModel,\n\t\t\t\tgrid: buildGrid(rowModel, {}, highlightFromEdgeAnnotations(edgeAnnotations)),\n\t\t\t\tedgeAnnotations\n\t\t\t};\n\t\t});\n\t\tconst globalLabelColumn = spaceLayouts.length > 1 ? Math.max(...spaceLayouts.map(({ grid }) => computeLabelColumn(grid, \"unicode\"))) : void 0;\n\t\tconst globalMaxDirNameWidthFromLayouts = spaceLayouts.length > 1 ? Math.max(...spaceLayouts.map(({ rowModel }) => computeMaxDirNameWidth(rowModel))) : void 0;\n\t\tconst runListMaxFromMigrations = orderedMigrations.length > 0 ? Math.max(...orderedMigrations.map((m) => m.dirName.length)) : 0;\n\t\tconst globalMaxDirNameWidth = globalMaxDirNameWidthFromLayouts !== void 0 ? Math.max(globalMaxDirNameWidthFromLayouts, runListMaxFromMigrations) : void 0;\n\t\trunListDirNameWidth = globalMaxDirNameWidth ?? runListMaxFromMigrations;\n\t\trunListLeftPad = globalLabelColumn;\n\t\tconst showSpaceHeadings = allSpaces.length > 1;\n\t\tconst sections = [];\n\t\tfor (const { space, isApp, rowModel, grid, edgeAnnotations } of spaceLayouts) {\n\t\t\tconst liveMarkerHash = plan.renderMarkerHashBySpace.get(space.spaceId);\n\t\t\tconst tree = renderMigrationGraphCommand({\n\t\t\t\tgrid,\n\t\t\t\trowModel,\n\t\t\t\tcontractHash,\n\t\t\t\tisAppSpace: isApp,\n\t\t\t\t...plan.usedLiveMarker ? { dbHash: liveMarkerHash } : {},\n\t\t\t\trefsByHash: listRefsByContractHash(space),\n\t\t\t\tedgeAnnotationsByHash: edgeAnnotations,\n\t\t\t\tcolorize,\n\t\t\t\tglyphMode: \"unicode\",\n\t\t\t\t...globalLabelColumn !== void 0 ? { globalLabelColumn } : {},\n\t\t\t\t...globalMaxDirNameWidth !== void 0 ? { globalMaxDirNameWidth } : {}\n\t\t\t});\n\t\t\tif (tree.length === 0) continue;\n\t\t\tif (showSpaceHeadings) sections.push(`${space.spaceId}:\\n${indentMigrationGraphTreeBlock(tree, \" \")}`);\n\t\t\telse sections.push(tree);\n\t\t}\n\t\tgraphOutput = sections.join(\"\\n\\n\");\n\t}\n\treturn ok({\n\t\tok: true,\n\t\tmigrations: orderedMigrations,\n\t\tsummary: plan.summary,\n\t\t...graphOutput !== void 0 ? { graphOutput } : {},\n\t\t...runListDirNameWidth !== void 0 ? { runListDirNameWidth } : {},\n\t\t...runListLeftPad !== void 0 ? { runListLeftPad } : {}\n\t});\n}\nfunction formatMigrateShowOutput(result, flags) {\n\tif (flags.quiet) return \"\";\n\tconst colorize = flags.color !== false;\n\tconst lines = [];\n\tif (result.graphOutput !== void 0 && result.graphOutput.length > 0) {\n\t\tlines.push(result.graphOutput);\n\t\tlines.push(\"\");\n\t}\n\tconst n = result.migrations.length;\n\tif (n > 0) {\n\t\tlines.push(`The following ${n} migration${n === 1 ? \"\" : \"s\"} will run:`);\n\t\tconst isMultiSpace = result.runListLeftPad !== void 0;\n\t\tconst gutter = result.runListLeftPad ?? 0;\n\t\tconst rawDirNameWidth = result.runListDirNameWidth ?? Math.max(...result.migrations.map((m) => m.dirName.length));\n\t\tconst listDirNameWidth = gutter + Math.max(rawDirNameWidth + 2, 25 - gutter) - (isMultiSpace ? 2 : 4);\n\t\tfor (const m of result.migrations) lines.push(` ${formatOnPathMigrationRow(m.dirName, m.from, m.to, listDirNameWidth, colorize, \"unicode\")}`);\n\t} else lines.push(result.summary);\n\treturn lines.join(\"\\n\");\n}\nfunction mapApplyFailure(failure) {\n\tif (failure.code === \"MIGRATION_PATH_NOT_FOUND\") return errorPathUnreachable(failure);\n\treturn errorRunnerFailed(failure.summary, {\n\t\twhy: failure.why ?? \"Migration runner failed\",\n\t\tfix: \"Fix the issue and re-run `prisma-next migrate --to <contract>` — previously applied migrations are preserved.\",\n\t\tmeta: failure.meta ?? {},\n\t\t...ifDefined(\"cause\", failure.cause)\n\t});\n}\nasync function executeMigrateCommand(options, flags, ui, startTime) {\n\tconst configResult = await loadConfigForSections(options.config, [\n\t\t\"family\",\n\t\t\"target\",\n\t\t\"adapter\",\n\t\t\"driver\",\n\t\t\"extensions\",\n\t\t\"db\",\n\t\t\"migrations\",\n\t\t\"contract\"\n\t]);\n\tif (!configResult.ok) return configResult;\n\tconst config = configResult.value;\n\tconst { configPath, migrationsDir, appMigrationsRelative, refsDir } = resolveMigrationPaths(options.config, config, process.cwd());\n\tconst dbConnection = options.db ?? config.db?.connection;\n\tif (!dbConnection) return notOk(errorDatabaseConnectionRequired({\n\t\twhy: `Database connection is required for migrate (set db.connection in ${configPath}, or pass --db <url>)`,\n\t\tcommandName: \"migrate\"\n\t}));\n\tif (!config.driver) return notOk(errorDriverRequired({ why: \"Config.driver is required for migrate\" }));\n\tif (!targetSupportsMigrations(config.target)) return notOk(errorTargetMigrationNotSupported({ why: `Target \"${config.target.id}\" does not support migrations` }));\n\tconst toArg = options.to;\n\tconst stack = createControlStack(config);\n\tconst familyInstance = config.family.create(stack);\n\tconst contractPathAbsolute = resolveContractPath(config);\n\tlet contractRaw;\n\tlet contractContent;\n\ttry {\n\t\tcontractContent = await readFile(contractPathAbsolute, \"utf-8\");\n\t} catch (error) {\n\t\tif (error instanceof Error && error.code === \"ENOENT\") return notOk(errorFileNotFound(contractPathAbsolute, {\n\t\t\twhy: `Contract file not found at ${contractPathAbsolute}`,\n\t\t\tfix: \"Run `prisma-next contract emit` to generate a valid contract.json, then retry.\"\n\t\t}));\n\t\treturn notOk(errorContractValidationFailed(`Failed to read contract file: ${error instanceof Error ? error.message : String(error)}`, { where: { path: contractPathAbsolute } }));\n\t}\n\ttry {\n\t\tcontractRaw = familyInstance.deserializeContract(JSON.parse(contractContent));\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 loadedAggregate = await loadContractSpaceAggregateForCli({\n\t\ttargetId: config.target.targetId,\n\t\tmigrationsDir,\n\t\tappContract: contractRaw,\n\t\textensions: config.extensions ?? [],\n\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json)\n\t});\n\tif (!loadedAggregate.ok) return notOk(loadedAggregate.failure);\n\tconst aggregate = loadedAggregate.value;\n\tconst integrityFailure = refuseContractSpaceIntegrity(aggregate, {\n\t\tdeclaredExtensions: toDeclaredExtensionsFromRaw(config.extensions ?? []),\n\t\tcheckContracts: true\n\t});\n\tif (integrityFailure) return notOk(integrityFailure);\n\tlet refEntry;\n\tlet refName;\n\tif (toArg) {\n\t\tconst refs = aggregate.app.refs;\n\t\tconst refResult = resolveContractRef(toArg, {\n\t\t\tgraph: aggregate.app.graph(),\n\t\t\trefs\n\t\t});\n\t\tif (!refResult.ok) return notOk(refResult.failure);\n\t\tif (refResult.value.provenance.kind === \"ref\") {\n\t\t\trefName = refResult.value.provenance.refName;\n\t\t\tconst resolved = refs[refName];\n\t\t\tif (resolved) refEntry = resolved;\n\t\t} else refEntry = {\n\t\t\thash: refResult.value.hash,\n\t\t\tinvariants: []\n\t\t};\n\t}\n\tif (!flags.json && !flags.quiet) {\n\t\tconst details = [{\n\t\t\tlabel: \"config\",\n\t\t\tvalue: configPath\n\t\t}, {\n\t\t\tlabel: \"migrations\",\n\t\t\tvalue: appMigrationsRelative\n\t\t}];\n\t\tif (typeof dbConnection === \"string\") details.push({\n\t\t\tlabel: \"database\",\n\t\t\tvalue: maskConnectionUrl(dbConnection)\n\t\t});\n\t\tif (toArg) details.push({\n\t\t\tlabel: \"to\",\n\t\t\tvalue: toArg\n\t\t});\n\t\tconst header = formatStyledHeader({\n\t\t\tcommand: \"migrate\",\n\t\t\tdescription: \"Apply planned migrations to advance the database\",\n\t\t\turl: \"https://pris.ly/migrate\",\n\t\t\tdetails,\n\t\t\tflags\n\t\t});\n\t\tui.stderr(header);\n\t}\n\tconst appGraph = aggregate.app.graph();\n\tconst client = createControlClient({\n\t\tfamily: config.family,\n\t\ttarget: config.target,\n\t\tadapter: config.adapter,\n\t\tdriver: config.driver,\n\t\textensions: config.extensions ?? []\n\t});\n\ttry {\n\t\tawait client.connect(dbConnection);\n\t\tconst appMarker = (await client.readAllMarkers()).get(\"app\") ?? null;\n\t\tif (appMarker !== null) {\n\t\t\tconst markerRefusal = refuseMarkerOutsideGraph({\n\t\t\t\tmarkerHash: appMarker.storageHash,\n\t\t\t\tgraph: appGraph\n\t\t\t});\n\t\t\tif (markerRefusal) return notOk(markerRefusal);\n\t\t}\n\t\tif (refEntry && refEntry.invariants.length > 0) {\n\t\t\tconst invariantRefusal = refuseUnknownInvariants({\n\t\t\t\tgraph: appGraph,\n\t\t\t\tmarkerInvariants: appMarker?.invariants ?? [],\n\t\t\t\trefInvariants: refEntry.invariants,\n\t\t\t\t...ifDefined(\"refName\", toArg)\n\t\t\t});\n\t\t\tif (invariantRefusal) return notOk(invariantRefusal);\n\t\t}\n\t\tif (!flags.quiet && !flags.json) ui.step(\"Loading contract spaces…\");\n\t\tlet applyContract = contractRaw;\n\t\tlet snapshotContractJson = JSON.parse(contractContent);\n\t\tlet snapshotContractDts;\n\t\tif (toArg && refEntry) {\n\t\t\tconst targetHash = refEntry.hash;\n\t\t\tif (aggregate.app.packages.find((p) => p.metadata.to === targetHash)) try {\n\t\t\t\tconst at = await aggregate.app.contractAt(targetHash, refName !== void 0 ? { refName } : void 0);\n\t\t\t\tapplyContract = at.contract;\n\t\t\t\tsnapshotContractJson = at.contractJson;\n\t\t\t\tsnapshotContractDts = at.contractDts;\n\t\t\t} catch (error) {\n\t\t\t\treturn mapContractAtError(error, { artifactRole: \"to\" });\n\t\t\t}\n\t\t}\n\t\tconst applyResult = await client.migrate({\n\t\t\tcontract: applyContract,\n\t\t\tmigrationsDir,\n\t\t\t...ifDefined(\"refHash\", refEntry?.hash),\n\t\t\t...refEntry?.invariants ? { refInvariants: refEntry.invariants } : {},\n\t\t\t...refEntry !== void 0 ? ifDefined(\"refName\", toArg) : {}\n\t\t});\n\t\tif (!applyResult.ok) return notOk(mapApplyFailure(applyResult.failure));\n\t\tconst { value } = applyResult;\n\t\tlet advancedRef = null;\n\t\tif (options.advanceRef !== void 0) {\n\t\t\tconst contractIR = snapshotContractDts !== void 0 ? {\n\t\t\t\tcontract: snapshotContractJson,\n\t\t\t\tcontractDts: snapshotContractDts\n\t\t\t} : await readContractIR(snapshotContractJson, contractPathAbsolute);\n\t\t\tconst advanced = await advanceRefSafely({\n\t\t\t\trefsDir,\n\t\t\t\tmigrationsDir,\n\t\t\t\tname: options.advanceRef,\n\t\t\t\thash: value.markerHash,\n\t\t\t\tcontractIR\n\t\t\t});\n\t\t\tif (!advanced.ok) return notOk(advanced.failure);\n\t\t\tadvancedRef = {\n\t\t\t\tname: advanced.value.name,\n\t\t\t\thash: advanced.value.hash\n\t\t\t};\n\t\t}\n\t\treturn ok({\n\t\t\tok: true,\n\t\t\tmigrationsApplied: value.migrationsApplied,\n\t\t\tmigrationsTotal: value.perSpace.length,\n\t\t\tmarkerHash: value.markerHash,\n\t\t\tapplied: value.applied,\n\t\t\tsummary: value.summary,\n\t\t\tperSpace: value.perSpace,\n\t\t\t...ifDefined(\"pathDecision\", value.pathDecision),\n\t\t\ttimings: { total: Date.now() - startTime },\n\t\t\tadvancedRef\n\t\t});\n\t} catch (error) {\n\t\tconst mapped = mapCaughtMigrationError(error);\n\t\tif (mapped) return notOk(mapped);\n\t\treturn notOk(errorUnexpected(error instanceof Error ? error.message : String(error), { why: `Unexpected error during migrate: ${error instanceof Error ? error.message : String(error)}` }));\n\t} finally {\n\t\tawait client.close();\n\t}\n}\nfunction createMigrateCommand() {\n\tconst command = new Command(\"migrate\");\n\tsetCommandDescriptions(command, \"Apply planned migrations to advance the database\", \"Walks every contract space (app + extensions) and applies pending\\non-disk migrations in canonical order (extensions alphabetically,\\nthen app). Graph-walks the on-disk migration graph for every space.\\nUse --to to target a specific contract (hash, ref name, migration dir).\\nUse --show for a read-only preview of the path that would run.\");\n\tsetCommandExamples(command, [\n\t\t\"prisma-next migrate --db $DATABASE_URL\",\n\t\t\"prisma-next migrate --to production --db $DATABASE_URL\",\n\t\t\"prisma-next migrate --to abc123 --db $DATABASE_URL\",\n\t\t\"prisma-next migrate --show --db $DATABASE_URL\",\n\t\t\"prisma-next migrate --show --from @contract --to production\"\n\t]);\n\taddGlobalOptions(command).option(\"--db <url>\", \"Database connection string\").option(\"--config <path>\", \"Path to prisma-next.config.ts\").option(\"--to <contract>\", \"Target contract reference (hash, prefix, ref name, migration dir name, <dir>^, or ./path)\").option(\"--advance-ref <name>\", \"Advance the named ref to the post-apply marker after success\").option(\"--show\", \"Preview the migration path without applying (read-only)\").option(\"--from <contract>\", \"From-state for --show preview (@contract, @db, hash, ref name, or migration dir)\").action(async (options) => {\n\t\tconst flags = parseGlobalFlagsOrExit(options);\n\t\tconst startTime = Date.now();\n\t\tconst ui = createTerminalUI(flags);\n\t\tif (options.show) {\n\t\t\tconst exitCode = handleResult(await executeMigrateShowCommand(options, flags, ui), flags, ui, (showResult) => {\n\t\t\t\tif (flags.json) ui.output(JSON.stringify(showResult, null, 2));\n\t\t\t\telse ui.output(formatMigrateShowOutput(showResult, flags));\n\t\t\t});\n\t\t\tprocess.exit(exitCode);\n\t\t\treturn;\n\t\t}\n\t\tconst exitCode = handleResult(await executeMigrateCommand(options, flags, ui, startTime), flags, ui, (migrateResult) => {\n\t\t\tif (flags.json) ui.output(JSON.stringify(migrateResult, null, 2));\n\t\t\telse if (!flags.quiet) ui.log(formatMigrationApplyCommandOutput(migrateResult, flags));\n\t\t});\n\t\tprocess.exit(exitCode);\n\t});\n\treturn command;\n}\n//#endregion\nexport { createMigrateCommand as t };\n\n//# sourceMappingURL=migrate-B-hpVTxi.mjs.map"],"mappings":"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"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
+
import { A as errorUnexpected, M as requireLiveDatabase, T as errorRuntime$1, j as mapRefResolutionError, s as errorDatabaseConnectionRequired, t as CliStructuredError$1, y as errorPathUnreachable } from "./cli-errors-kU09RUaz-CUkQ9XuM.mjs";
|
|
1
2
|
import { t as MigrationToolsError } from "./errors-Co-8oaiB-CB-6Uqki.mjs";
|
|
2
3
|
import "./constants-CM-w38DQ-Cz_EXbOc.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { r as loadConfig } from "./exports-CDX9kZuw.mjs";
|
|
4
|
+
import { g as resolveMigrationPaths } from "./command-helpers-bGYd7Aab-BNSzfbHK.mjs";
|
|
5
5
|
import { i as readRefs } from "./refs-B2BL8z3i-DGGFB7Mj.mjs";
|
|
6
|
-
import { u as requireHeadRef } from "./aggregate-
|
|
7
|
-
import { r as buildReadAggregate } from "./contract-space-aggregate-loader-
|
|
8
|
-
import { a as planSpacePath, t as createControlClient } from "./client-
|
|
6
|
+
import { u as requireHeadRef } from "./aggregate-BKbHUHLA.mjs";
|
|
7
|
+
import { r as buildReadAggregate } from "./contract-space-aggregate-loader-DOzo1sk9-CCPCubsg.mjs";
|
|
8
|
+
import { a as planSpacePath, t as createControlClient } from "./client-milNsAnF-B92uF3yv.mjs";
|
|
9
9
|
import { n as parseContractRef } from "./ref-resolution-Ct2GMcNB.mjs";
|
|
10
10
|
import { notOk, ok } from "@prisma/orm-framework/utils/result";
|
|
11
|
-
//#region ../../../1-framework/3-tooling/cli/dist/migrate-show-
|
|
12
|
-
/**
|
|
13
|
-
* Read-only preview core for `migrate --show`: computes the migration path through the same planSpacePath seam the real apply uses, stopping before any write boundary.
|
|
14
|
-
*/
|
|
11
|
+
//#region ../../../1-framework/3-tooling/cli/dist/migrate-show-CUymfnbM.mjs
|
|
15
12
|
/**
|
|
16
13
|
* Computes the path through the SAME seam as `executeMigrate`:
|
|
17
14
|
* - `readAllMarkers()` for the from-state (when no `--from` is given), preserving
|
|
@@ -24,8 +21,8 @@ import { notOk, ok } from "@prisma/orm-framework/utils/result";
|
|
|
24
21
|
* DB state is mutated.
|
|
25
22
|
*/
|
|
26
23
|
async function executeMigrateShowPlan(options) {
|
|
27
|
-
const config =
|
|
28
|
-
const { configPath, migrationsDir, migrationsRelative, refsDir } = resolveMigrationPaths(options.config,
|
|
24
|
+
const config = options.config;
|
|
25
|
+
const { configPath, migrationsDir, migrationsRelative, refsDir } = resolveMigrationPaths(options.configPath, config, options.cwd);
|
|
29
26
|
const dbConnection = options.db ?? config.db?.connection;
|
|
30
27
|
const hasDriver = !!config.driver;
|
|
31
28
|
const hasExplicitFrom = options.from !== void 0;
|
|
@@ -199,4 +196,4 @@ async function executeMigrateShowPlan(options) {
|
|
|
199
196
|
//#endregion
|
|
200
197
|
export { executeMigrateShowPlan as t };
|
|
201
198
|
|
|
202
|
-
//# sourceMappingURL=migrate-show-
|
|
199
|
+
//# sourceMappingURL=migrate-show-CUymfnbM-BbpcO2FY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-show-CUymfnbM-BbpcO2FY.mjs","names":["CliStructuredError","errorRuntime"],"sources":["../../../../1-framework/3-tooling/cli/dist/migrate-show-CUymfnbM.mjs"],"sourcesContent":["import { A as errorUnexpected, M as requireLiveDatabase, T as errorRuntime, j as mapRefResolutionError, s as errorDatabaseConnectionRequired, t as CliStructuredError, y as errorPathUnreachable } from \"./cli-errors-kU09RUaz.mjs\";\nimport { s as resolveMigrationPaths } from \"./command-helpers-bGYd7Aab.mjs\";\nimport { r as buildReadAggregate } from \"./contract-space-aggregate-loader-DOzo1sk9.mjs\";\nimport { n as planSpacePath, t as createControlClient } from \"./client-milNsAnF.mjs\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { requireHeadRef } from \"@internal/migration-tools/aggregate\";\nimport { EMPTY_CONTRACT_HASH } from \"@internal/migration-tools/constants\";\nimport { MigrationToolsError } from \"@internal/migration-tools/errors\";\nimport { readRefs } from \"@internal/migration-tools/refs\";\nimport { parseContractRef } from \"@internal/migration-tools/ref-resolution\";\n//#region src/control-api/operations/migrate-show.ts\n/**\n* Computes the path through the SAME seam as `executeMigrate`:\n* - `readAllMarkers()` for the from-state (when no `--from` is given), preserving\n* the full marker including `invariants` (not just `storageHash`).\n* - `planSpacePath()` (shared with `executeMigrate`) for per-space path selection,\n* which feeds `resolveRecordedPath()` with the same target hash, target invariants,\n* and current marker as the real apply path uses.\n*\n* Returns BEFORE any write boundary (`runMigration` / marker / DDL). No\n* DB state is mutated.\n*/\nasync function executeMigrateShowPlan(options) {\n\tconst config = options.config;\n\tconst { configPath, migrationsDir, migrationsRelative, refsDir } = resolveMigrationPaths(options.configPath, config, options.cwd);\n\tconst dbConnection = options.db ?? config.db?.connection;\n\tconst hasDriver = !!config.driver;\n\tconst hasExplicitFrom = options.from !== void 0;\n\tif (!hasExplicitFrom) {\n\t\tconst missingDb = requireLiveDatabase({\n\t\t\tdbConnection,\n\t\t\thasDriver,\n\t\t\twhy: \"migrate --show needs a database connection to read the live marker (or pass --from <contract> for an offline preview)\",\n\t\t\tretryCommand: \"prisma-next migrate --show --from <contract>\"\n\t\t});\n\t\tif (missingDb) return notOk(missingDb);\n\t}\n\tlet allRefs = {};\n\ttry {\n\t\tallRefs = await readRefs(refsDir);\n\t} catch (error) {\n\t\tif (MigrationToolsError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tconst loaded = await buildReadAggregate(config, { migrationsDir });\n\tif (!loaded.ok) return notOk(loaded.failure);\n\tconst { aggregate, contractHash } = loaded.value;\n\tconst appGraph = aggregate.app.graph();\n\tlet targetHash = contractHash;\n\tlet refInvariants;\n\tif (options.to) {\n\t\tconst toResult = parseContractRef(options.to, {\n\t\t\tgraph: appGraph,\n\t\t\trefs: allRefs,\n\t\t\tcontractHash\n\t\t});\n\t\tif (!toResult.ok) return notOk(mapRefResolutionError(toResult.failure));\n\t\tif (toResult.value.provenance.kind === \"reserved-db\") return notOk(errorDatabaseConnectionRequired({\n\t\t\twhy: \"@db is not valid as a --to target; it names the live database state, not a target contract.\",\n\t\t\tcommandName: \"migrate --show\"\n\t\t}));\n\t\ttargetHash = toResult.value.hash;\n\t\tif (toResult.value.provenance.kind === \"ref\") {\n\t\t\tconst refEntry = allRefs[toResult.value.provenance.refName];\n\t\t\tif (refEntry) refInvariants = refEntry.invariants;\n\t\t}\n\t}\n\toptions.onPreflightComplete?.({\n\t\tconfigPath,\n\t\tmigrationsRelative,\n\t\tdbConnection,\n\t\thasExplicitFrom\n\t});\n\tconst markerBySpace = /* @__PURE__ */ new Map();\n\tconst allSpaces = [aggregate.app, ...aggregate.extensions];\n\tif (hasExplicitFrom) if (options.from === \"@db\") {\n\t\tconst missingDb = requireLiveDatabase({\n\t\t\tdbConnection,\n\t\t\thasDriver,\n\t\t\twhy: \"@db resolves to the live database marker and requires a --db connection\",\n\t\t\tretryCommand: \"prisma-next migrate --show --from @db --db $DATABASE_URL\"\n\t\t});\n\t\tif (missingDb) return notOk(missingDb);\n\t} else {\n\t\tconst fromResult = parseContractRef(options.from, {\n\t\t\tgraph: appGraph,\n\t\t\trefs: allRefs,\n\t\t\tcontractHash\n\t\t});\n\t\tif (!fromResult.ok) return notOk(mapRefResolutionError(fromResult.failure));\n\t\tif (fromResult.value.provenance.kind === \"reserved-db\") {\n\t\t\tconst missingDb = requireLiveDatabase({\n\t\t\t\tdbConnection,\n\t\t\t\thasDriver,\n\t\t\t\twhy: \"@db resolves to the live database marker and requires a --db connection\"\n\t\t\t});\n\t\t\tif (missingDb) return notOk(missingDb);\n\t\t} else {\n\t\t\tconst fromHash = fromResult.value.hash;\n\t\t\tconst offlineMarker = fromHash === EMPTY_CONTRACT_HASH ? null : {\n\t\t\t\tstorageHash: fromHash,\n\t\t\t\tinvariants: []\n\t\t\t};\n\t\t\tmarkerBySpace.set(aggregate.app.spaceId, offlineMarker);\n\t\t}\n\t}\n\tconst needsLiveMarker = !hasExplicitFrom || options.from === \"@db\";\n\tif (needsLiveMarker) {\n\t\tif (!dbConnection || !hasDriver) return notOk(errorDatabaseConnectionRequired({\n\t\t\twhy: \"A database connection is required to read the live marker for migrate --show\",\n\t\t\tcommandName: \"migrate --show\"\n\t\t}));\n\t\tconst client = createControlClient({\n\t\t\tfamily: config.family,\n\t\t\ttarget: config.target,\n\t\t\tadapter: config.adapter,\n\t\t\tdriver: config.driver,\n\t\t\textensions: config.extensions ?? []\n\t\t});\n\t\ttry {\n\t\t\tawait client.connect(dbConnection);\n\t\t\tconst allMarkers = await client.readAllMarkers();\n\t\t\tfor (const space of allSpaces) {\n\t\t\t\tconst marker = allMarkers.get(space.spaceId);\n\t\t\t\tmarkerBySpace.set(space.spaceId, marker ?? null);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\t\treturn notOk(errorUnexpected(error instanceof Error ? error.message : String(error), { why: `Failed to read live DB marker: ${error instanceof Error ? error.message : String(error)}` }));\n\t\t} finally {\n\t\t\tawait client.close();\n\t\t}\n\t}\n\tconst canonicalOrderSpaces = [...aggregate.extensions, aggregate.app];\n\tconst orderedMigrations = [];\n\tfor (const space of canonicalOrderSpaces) {\n\t\tconst isAppSpace = space.spaceId === aggregate.app.spaceId;\n\t\tconst headRef = requireHeadRef(space);\n\t\tconst outcome = planSpacePath({\n\t\t\tspace,\n\t\t\taggregate,\n\t\t\ttargetHash: isAppSpace ? targetHash : headRef.hash,\n\t\t\trefInvariants: isAppSpace ? refInvariants : void 0,\n\t\t\tliveMarker: markerBySpace.get(space.spaceId) ?? null\n\t\t});\n\t\tif (outcome.kind === \"at-head\") continue;\n\t\tif (outcome.kind === \"never-planned\") return notOk(errorPathUnreachable({\n\t\t\tcode: \"MIGRATION_PATH_NOT_FOUND\",\n\t\t\tsummary: `No on-disk migrations for contract space \"${outcome.spaceId}\"`,\n\t\t\twhy: `migrate is replay-only: space \"${outcome.spaceId}\" has no on-disk migrations but its head ref targets \"${outcome.targetHash}\".`,\n\t\t\tmeta: {\n\t\t\t\tspaceId: outcome.spaceId,\n\t\t\t\ttarget: outcome.targetHash,\n\t\t\t\tkind: \"neverPlanned\"\n\t\t\t}\n\t\t}));\n\t\tif (outcome.kind === \"unreachable\") {\n\t\t\tconst fromHash = outcome.liveMarker?.storageHash ?? EMPTY_CONTRACT_HASH;\n\t\t\treturn notOk(errorPathUnreachable({\n\t\t\t\tcode: \"MIGRATION_PATH_NOT_FOUND\",\n\t\t\t\tsummary: `No migration path from ${fromHash.slice(0, 14)} to ${outcome.targetHash.slice(0, 14)} in space \"${outcome.spaceId}\".`,\n\t\t\t\twhy: `The migration graph has no path from the from-state to the target in space \"${outcome.spaceId}\".`,\n\t\t\t\tmeta: {\n\t\t\t\t\tspaceId: outcome.spaceId,\n\t\t\t\t\tfrom: fromHash,\n\t\t\t\t\tto: outcome.targetHash\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t\tif (outcome.kind === \"unsatisfiable\") return notOk(errorRuntime(\"MIGRATION.NO_INVARIANT_PATH\", `Missing required invariants for space \"${outcome.spaceId}\"`, {\n\t\t\twhy: `The path requires invariants not available on disk: ${outcome.missing.join(\", \")}`,\n\t\t\tfix: \"Add a migration on the path that runs `dataTransform({ invariantId: \\\"<id>\\\", … })` for each missing invariant, or retarget the ref to a hash whose path already provides them.\",\n\t\t\tmeta: {\n\t\t\t\tspaceId: outcome.spaceId,\n\t\t\t\tmissing: [...outcome.missing]\n\t\t\t}\n\t\t}));\n\t\tfor (const edge of outcome.plan.migrationEdges) orderedMigrations.push({\n\t\t\tspaceId: space.spaceId,\n\t\t\tdirName: edge.dirName,\n\t\t\tmigrationHash: edge.migrationHash,\n\t\t\tfrom: edge.from,\n\t\t\tto: edge.to\n\t\t});\n\t}\n\tconst count = orderedMigrations.length;\n\treturn ok({\n\t\taggregate,\n\t\tcontractHash,\n\t\tmigrations: orderedMigrations,\n\t\tsummary: count === 0 ? \"Already up to date — nothing to run\" : `${count} migration${count === 1 ? \"\" : \"s\"} will run`,\n\t\trenderMarkerHashBySpace: new Map(allSpaces.map((s) => [s.spaceId, markerBySpace.get(s.spaceId)?.storageHash ?? EMPTY_CONTRACT_HASH])),\n\t\tusedLiveMarker: needsLiveMarker\n\t});\n}\n//#endregion\nexport { executeMigrateShowPlan as t };\n\n//# sourceMappingURL=migrate-show-CUymfnbM.mjs.map"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { t as CliStructuredError$1 } from "./cli-errors-
|
|
2
|
-
import { c as ContractSpaceAggregate } from "./aggregate-
|
|
1
|
+
import { t as CliStructuredError$1 } from "./cli-errors-C7vbvQuK-DLpSxz4U.mjs";
|
|
2
|
+
import { c as ContractSpaceAggregate } from "./aggregate-CA6bJ8UO.mjs";
|
|
3
3
|
import { Result } from "@prisma/orm-framework/utils/result";
|
|
4
|
-
|
|
4
|
+
import { PrismaNextConfig } from "@prisma/orm-framework/config/config-types";
|
|
5
|
+
//#region ../../../1-framework/3-tooling/cli/dist/migrate-show-g71Z4vJw.d.mts
|
|
5
6
|
//#region src/control-api/operations/migrate-show.d.ts
|
|
6
7
|
/**
|
|
7
8
|
* One migration that will run in a `migrate --show` preview, in execution order.
|
|
@@ -14,7 +15,11 @@ interface MigrateShowMigration {
|
|
|
14
15
|
readonly to: string;
|
|
15
16
|
}
|
|
16
17
|
interface ExecuteMigrateShowPlanOptions {
|
|
17
|
-
readonly config
|
|
18
|
+
readonly config: PrismaNextConfig;
|
|
19
|
+
/** Directory the command was invoked from. */
|
|
20
|
+
readonly cwd: string;
|
|
21
|
+
/** `--config` as the user wrote it, used only to locate the migrations directory and for display. */
|
|
22
|
+
readonly configPath?: string;
|
|
18
23
|
readonly db?: string;
|
|
19
24
|
readonly to?: string;
|
|
20
25
|
readonly from?: string;
|
|
@@ -53,4 +58,4 @@ interface MigrateShowPlanSuccess {
|
|
|
53
58
|
declare function executeMigrateShowPlan(options: ExecuteMigrateShowPlanOptions): Promise<Result<MigrateShowPlanSuccess, CliStructuredError$1>>;
|
|
54
59
|
//#endregion
|
|
55
60
|
export { executeMigrateShowPlan as i, MigrateShowMigration as n, MigrateShowPlanSuccess as r, ExecuteMigrateShowPlanOptions as t };
|
|
56
|
-
//# sourceMappingURL=migrate-show-
|
|
61
|
+
//# sourceMappingURL=migrate-show-g71Z4vJw-ocdTvf70.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-show-g71Z4vJw-ocdTvf70.d.mts","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migrate-show-g71Z4vJw.d.mts"],"mappings":";;;;;;;;;UAQU;WACC;WACA;WACA;WACA;WACA;;UAED;WACC,QAAQ;;WAER;;WAEA;WACA;WACA;WACA;;;;;WAKA,uBAAuB;aACrB;aACA;aACA;aACA;;;UAGH;WACC,WAAW;WACX;WACA,qBAAqB;WACrB;;WAEA,yBAAyB;;WAEzB;;;;;;;;;;;;;iBAaM,uBAAuB,SAAS,gCAAgC,QAAQ,OAAO,wBAAwB"}
|
|
@@ -2,8 +2,8 @@ import { A as errorOperationsNotArray, c as errorDescribeMissingEndContract, s a
|
|
|
2
2
|
import { t as computeMigrationHash } from "./hash-DH8hl5Rq-BpM2t3Nu.mjs";
|
|
3
3
|
import { t as deriveProvidedInvariants } from "./invariants-C1WVUAH7-DlOBTTkM.mjs";
|
|
4
4
|
import { t as MigrationOpSchema } from "./op-schema-BSVHzEQN-DIWt28D8.mjs";
|
|
5
|
-
import { type } from "arktype";
|
|
6
5
|
import { realpathSync } from "node:fs";
|
|
6
|
+
import { type } from "arktype";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
//#region ../../../1-framework/3-tooling/migration/dist/exports/migration.mjs
|
|
9
9
|
const MigrationMetaSchema = type({
|
|
@@ -206,4 +206,4 @@ async function buildMigrationArtifacts(instance, existing) {
|
|
|
206
206
|
//#endregion
|
|
207
207
|
export { isDirectEntrypoint as i, MigrationContractViews as n, buildMigrationArtifacts as r, Migration as t };
|
|
208
208
|
|
|
209
|
-
//# sourceMappingURL=migration-
|
|
209
|
+
//# sourceMappingURL=migration-_C5W2uXF.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-DAJY-NmR.mjs","names":["#endView","#startView"],"sources":["../../../../1-framework/3-tooling/migration/dist/exports/migration.mjs"],"sourcesContent":["import { A as errorOperationsNotArray, c as errorDescribeMissingEndContract, s as errorDescribeInvalidMetadata, v as errorInvalidOperationEntry, w as errorMigrationContractViewMissing } from \"../errors-Co-8oaiB.mjs\";\nimport { t as computeMigrationHash } from \"../hash-DH8hl5Rq.mjs\";\nimport { t as deriveProvidedInvariants } from \"../invariants-C1WVUAH7.mjs\";\nimport { t as MigrationOpSchema } from \"../op-schema-BSVHzEQN.mjs\";\nimport { type } from \"arktype\";\nimport { realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\n//#region src/migration-base.ts\nconst MigrationMetaSchema = type({\n\tfrom: \"string > 0 | null\",\n\tto: \"string\"\n});\n/**\n* Base class for migrations.\n*\n* A `Migration` subclass is itself a `MigrationPlan`: CLI commands and the\n* runner can consume it directly via `targetId`, `operations`, `origin`, and\n* `destination`.\n*\n* The from/to identities come from `describe()`. A migration provides them in\n* one of two ways:\n* - **Contract-derived (default):** assign the `contract.json` imports from\n* the snapshot store (`migrations/snapshots/<hex>/contract.json`) to\n* `startContractJson` / `endContractJson`; the concrete `describe()` below\n* derives `to`/`from` from their\n* `storage.storageHash`. The family bases additionally expose typed view\n* getters (`startContract` / `endContract`) over the same JSON.\n* - **Override (e.g. extension migrations that carry no contract):** override\n* `describe()` directly; the override wins and the JSON fields are unused.\n*\n* The `Start` / `End` generics carry each migration's precise contract types so\n* the family-base view getters resolve to fully-typed views.\n*/\nvar Migration = class {\n\t/**\n\t* The migration's end-state contract JSON (the `contract.json` import from\n\t* the snapshot store). When set, the derived `describe()` reads `to` from its\n\t* `storage.storageHash`. Family bases build the typed `endContract` view from\n\t* it. Optional so `describe()`-overriding migrations (no contract) compile.\n\t*\n\t* Typed with a plain `storageHash: string`, not the branded\n\t* `StorageHashBase`, so a raw `contract.json` import — whose `storageHash`\n\t* is an untyped string literal — is assignable without a cast. The full\n\t* `Start`/`End` contract typing is applied downstream in the family bases'\n\t* view getters (via `<Family>ContractView.fromJson<…>`).\n\t*/\n\tendContractJson;\n\t/**\n\t* The migration's start-state contract JSON (the `contract.json` import\n\t* from the snapshot store). Absent for a baseline migration (`from`\n\t* derives to `null`). Family bases build the typed `startContract` view from\n\t* it.\n\t*/\n\tstartContractJson;\n\t/**\n\t* Assembled `ControlStack` injected by the orchestrator (`runMigration`).\n\t*\n\t* Subclasses (e.g. `PostgresMigration`) read the stack to materialize their\n\t* adapter once per instance. Optional at the abstract level so unit tests can\n\t* construct `Migration` instances purely for `operations` / `describe`\n\t* assertions without needing a real stack; concrete subclasses that need the\n\t* stack at runtime should narrow the parameter to required.\n\t*/\n\tstack;\n\tconstructor(stack) {\n\t\tthis.stack = stack;\n\t}\n\t/**\n\t* Metadata inputs used to build `migration.json` and to derive the plan's\n\t* origin/destination identities.\n\t*\n\t* Default derivation: `to = endContractJson.storage.storageHash`,\n\t* `from = startContractJson?.storage.storageHash ?? null`. A migration that\n\t* carries no contract JSON (e.g. an extension migration) must override this;\n\t* otherwise it throws, since `migration.json` requires a `to` identity.\n\t*/\n\tdescribe() {\n\t\tconst end = this.endContractJson;\n\t\tif (end === void 0) throw errorDescribeMissingEndContract();\n\t\treturn {\n\t\t\tfrom: this.startContractJson?.storage.storageHash ?? null,\n\t\t\tto: end.storage.storageHash\n\t\t};\n\t}\n\tget origin() {\n\t\tconst from = this.describe().from;\n\t\treturn from === null ? null : { storageHash: from };\n\t}\n\tget destination() {\n\t\treturn { storageHash: this.describe().to };\n\t}\n};\n/**\n* Lazy-memoized `endContract` / `startContract` view accessors, one instance\n* held per migration. Each target base (`MongoMigration`, `SqliteMigration`,\n* `PostgresMigration`) creates one `MigrationContractViews` field from\n* `this` — passing its own `<Family>ContractView.fromJson<…>` as `fromJson`\n* and a name for error messages — and forwards its\n* `endContract`/`startContract` getters to it.\n*\n* `endContract` throws `MIGRATION.CONTRACT_VIEW_MISSING` when the migration\n* has no `endContractJson` (mirrors `describe()`'s own requirement).\n* `startContract` returns `null` for a baseline migration (no\n* `startContractJson`) instead of throwing.\n*/\nvar MigrationContractViews = class {\n\tmigration;\n\tclassName;\n\tfromJson;\n\t#endView;\n\t#startView;\n\tconstructor(migration, className, fromJson) {\n\t\tthis.migration = migration;\n\t\tthis.className = className;\n\t\tthis.fromJson = fromJson;\n\t}\n\tget endContract() {\n\t\tif (this.#endView === void 0) {\n\t\t\tconst json = this.migration.endContractJson;\n\t\t\tif (json === void 0) throw errorMigrationContractViewMissing(this.className, \"endContract\", \"endContractJson\");\n\t\t\tthis.#endView = this.fromJson(json);\n\t\t}\n\t\treturn this.#endView;\n\t}\n\tget startContract() {\n\t\tif (this.#startView === void 0) {\n\t\t\tconst json = this.migration.startContractJson;\n\t\t\tthis.#startView = json === void 0 ? null : this.fromJson(json);\n\t\t}\n\t\treturn this.#startView;\n\t}\n};\n/**\n* Returns true when `import.meta.url` resolves to the same file that was\n* invoked as the node entrypoint (`process.argv[1]`). Used by\n* `MigrationCLI.run` (in `@internal/cli/migration-cli`) to no-op when\n* the migration module is being imported (e.g. by another script) rather\n* than executed directly.\n*/\nfunction isDirectEntrypoint(importMetaUrl) {\n\tconst metaFilename = fileURLToPath(importMetaUrl);\n\tconst argv1 = process.argv[1];\n\tif (!argv1) return false;\n\ttry {\n\t\treturn realpathSync(metaFilename) === realpathSync(argv1);\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Build the attested metadata from `describe()`-derived metadata, the\n* operations list, and the previously-scaffolded metadata (if any).\n*\n* When a `migration.json` already exists for this package (the common\n* case: it was scaffolded by `migration plan`), preserve `createdAt`\n* set there — that field is owned by the CLI scaffolder, not the authored\n* class. Only the `describe()`-derived fields (`from`, `to`) and the\n* operations change as the author iterates. When no metadata exists yet\n* (a bare `migration.ts` run from scratch), synthesize a minimal but\n* schema-conformant record so the resulting package can still be read,\n* verified, and applied.\n*\n* The `migrationHash` is recomputed against the current metadata + ops so\n* the on-disk artifacts are always fully attested.\n*/\nfunction buildAttestedMetadata(meta, ops, existing) {\n\tconst baseMetadata = {\n\t\tfrom: meta.from,\n\t\tto: meta.to,\n\t\tprovidedInvariants: deriveProvidedInvariants(ops),\n\t\tcreatedAt: existing?.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()\n\t};\n\tconst migrationHash = computeMigrationHash(baseMetadata, ops);\n\treturn {\n\t\t...baseMetadata,\n\t\tmigrationHash\n\t};\n}\n/**\n* Pure conversion from a `Migration` instance (plus the previously\n* scaffolded metadata, when one exists on disk) to the in-memory\n* artifacts that downstream tooling persists. Owns metadata validation,\n* metadata synthesis/preservation, and the content-addressed\n* `migrationHash` computation, but performs no file I/O — callers handle\n* reads (to source `existing`) and writes (to persist `opsJson` /\n* `metadataJson`).\n*/\nasync function buildMigrationArtifacts(instance, existing) {\n\tconst rawOps = instance.operations;\n\tif (!Array.isArray(rawOps)) throw errorOperationsNotArray();\n\tconst ops = await Promise.all(rawOps);\n\tfor (let index = 0; index < ops.length; index++) {\n\t\tconst result = MigrationOpSchema(ops[index]);\n\t\tif (result instanceof type.errors) throw errorInvalidOperationEntry(index, result.summary);\n\t}\n\tconst rawMeta = instance.describe();\n\tconst parsed = MigrationMetaSchema(rawMeta);\n\tif (parsed instanceof type.errors) throw errorDescribeInvalidMetadata(parsed.summary);\n\tconst metadata = buildAttestedMetadata(parsed, ops, existing);\n\treturn {\n\t\topsJson: JSON.stringify(ops, null, 2),\n\t\tmetadata,\n\t\tmetadataJson: JSON.stringify(metadata, null, 2)\n\t};\n}\n//#endregion\nexport { Migration, MigrationContractViews, buildMigrationArtifacts, isDirectEntrypoint };\n\n//# sourceMappingURL=migration.mjs.map"],"mappings":";;;;;;;;AAQA,MAAM,sBAAsB,KAAK;CAChC,MAAM;CACN,IAAI;AACL,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBD,IAAI,YAAY,MAAM;;;;;;;;;;;;;CAarB;;;;;;;CAOA;;;;;;;;;;CAUA;CACA,YAAY,OAAO;EAClB,KAAK,QAAQ;CACd;;;;;;;;;;CAUA,WAAW;EACV,MAAM,MAAM,KAAK;EACjB,IAAI,QAAQ,KAAK,GAAG,MAAM,gCAAgC;EAC1D,OAAO;GACN,MAAM,KAAK,mBAAmB,QAAQ,eAAe;GACrD,IAAI,IAAI,QAAQ;EACjB;CACD;CACA,IAAI,SAAS;EACZ,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC;EAC7B,OAAO,SAAS,OAAO,OAAO,EAAE,aAAa,KAAK;CACnD;CACA,IAAI,cAAc;EACjB,OAAO,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,GAAG;CAC1C;AACD;;;;;;;;;;;;;;AAcA,IAAI,yBAAyB,MAAM;CAClC;CACA;CACA;CACA;CACA;CACA,YAAY,WAAW,WAAW,UAAU;EAC3C,KAAK,YAAY;EACjB,KAAK,YAAY;EACjB,KAAK,WAAW;CACjB;CACA,IAAI,cAAc;EACjB,IAAI,KAAKA,aAAa,KAAK,GAAG;GAC7B,MAAM,OAAO,KAAK,UAAU;GAC5B,IAAI,SAAS,KAAK,GAAG,MAAM,kCAAkC,KAAK,WAAW,eAAe,iBAAiB;GAC7G,KAAKA,WAAW,KAAK,SAAS,IAAI;EACnC;EACA,OAAO,KAAKA;CACb;CACA,IAAI,gBAAgB;EACnB,IAAI,KAAKC,eAAe,KAAK,GAAG;GAC/B,MAAM,OAAO,KAAK,UAAU;GAC5B,KAAKA,aAAa,SAAS,KAAK,IAAI,OAAO,KAAK,SAAS,IAAI;EAC9D;EACA,OAAO,KAAKA;CACb;AACD;;;;;;;;AAQA,SAAS,mBAAmB,eAAe;CAC1C,MAAM,eAAe,cAAc,aAAa;CAChD,MAAM,QAAQ,QAAQ,KAAK;CAC3B,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI;EACH,OAAO,aAAa,YAAY,MAAM,aAAa,KAAK;CACzD,QAAQ;EACP,OAAO;CACR;AACD;;;;;;;;;;;;;;;;;AAiBA,SAAS,sBAAsB,MAAM,KAAK,UAAU;CACnD,MAAM,eAAe;EACpB,MAAM,KAAK;EACX,IAAI,KAAK;EACT,oBAAoB,yBAAyB,GAAG;EAChD,WAAW,UAAU,8BAA8B,IAAI,KAAK,EAAA,CAAG,YAAY;CAC5E;CACA,MAAM,gBAAgB,qBAAqB,cAAc,GAAG;CAC5D,OAAO;EACN,GAAG;EACH;CACD;AACD;;;;;;;;;;AAUA,eAAe,wBAAwB,UAAU,UAAU;CAC1D,MAAM,SAAS,SAAS;CACxB,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,MAAM,wBAAwB;CAC1D,MAAM,MAAM,MAAM,QAAQ,IAAI,MAAM;CACpC,KAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,QAAQ,SAAS;EAChD,MAAM,SAAS,kBAAkB,IAAI,MAAM;EAC3C,IAAI,kBAAkB,KAAK,QAAQ,MAAM,2BAA2B,OAAO,OAAO,OAAO;CAC1F;CACA,MAAM,UAAU,SAAS,SAAS;CAClC,MAAM,SAAS,oBAAoB,OAAO;CAC1C,IAAI,kBAAkB,KAAK,QAAQ,MAAM,6BAA6B,OAAO,OAAO;CACpF,MAAM,WAAW,sBAAsB,QAAQ,KAAK,QAAQ;CAC5D,OAAO;EACN,SAAS,KAAK,UAAU,KAAK,MAAM,CAAC;EACpC;EACA,cAAc,KAAK,UAAU,UAAU,MAAM,CAAC;CAC/C;AACD"}
|
|
1
|
+
{"version":3,"file":"migration-_C5W2uXF.mjs","names":["#endView","#startView"],"sources":["../../../../1-framework/3-tooling/migration/dist/exports/migration.mjs"],"sourcesContent":["import { A as errorOperationsNotArray, c as errorDescribeMissingEndContract, s as errorDescribeInvalidMetadata, v as errorInvalidOperationEntry, w as errorMigrationContractViewMissing } from \"../errors-Co-8oaiB.mjs\";\nimport { t as computeMigrationHash } from \"../hash-DH8hl5Rq.mjs\";\nimport { t as deriveProvidedInvariants } from \"../invariants-C1WVUAH7.mjs\";\nimport { t as MigrationOpSchema } from \"../op-schema-BSVHzEQN.mjs\";\nimport { type } from \"arktype\";\nimport { realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\n//#region src/migration-base.ts\nconst MigrationMetaSchema = type({\n\tfrom: \"string > 0 | null\",\n\tto: \"string\"\n});\n/**\n* Base class for migrations.\n*\n* A `Migration` subclass is itself a `MigrationPlan`: CLI commands and the\n* runner can consume it directly via `targetId`, `operations`, `origin`, and\n* `destination`.\n*\n* The from/to identities come from `describe()`. A migration provides them in\n* one of two ways:\n* - **Contract-derived (default):** assign the `contract.json` imports from\n* the snapshot store (`migrations/snapshots/<hex>/contract.json`) to\n* `startContractJson` / `endContractJson`; the concrete `describe()` below\n* derives `to`/`from` from their\n* `storage.storageHash`. The family bases additionally expose typed view\n* getters (`startContract` / `endContract`) over the same JSON.\n* - **Override (e.g. extension migrations that carry no contract):** override\n* `describe()` directly; the override wins and the JSON fields are unused.\n*\n* The `Start` / `End` generics carry each migration's precise contract types so\n* the family-base view getters resolve to fully-typed views.\n*/\nvar Migration = class {\n\t/**\n\t* The migration's end-state contract JSON (the `contract.json` import from\n\t* the snapshot store). When set, the derived `describe()` reads `to` from its\n\t* `storage.storageHash`. Family bases build the typed `endContract` view from\n\t* it. Optional so `describe()`-overriding migrations (no contract) compile.\n\t*\n\t* Typed with a plain `storageHash: string`, not the branded\n\t* `StorageHashBase`, so a raw `contract.json` import — whose `storageHash`\n\t* is an untyped string literal — is assignable without a cast. The full\n\t* `Start`/`End` contract typing is applied downstream in the family bases'\n\t* view getters (via `<Family>ContractView.fromJson<…>`).\n\t*/\n\tendContractJson;\n\t/**\n\t* The migration's start-state contract JSON (the `contract.json` import\n\t* from the snapshot store). Absent for a baseline migration (`from`\n\t* derives to `null`). Family bases build the typed `startContract` view from\n\t* it.\n\t*/\n\tstartContractJson;\n\t/**\n\t* Assembled `ControlStack` injected by the orchestrator (`runMigration`).\n\t*\n\t* Subclasses (e.g. `PostgresMigration`) read the stack to materialize their\n\t* adapter once per instance. Optional at the abstract level so unit tests can\n\t* construct `Migration` instances purely for `operations` / `describe`\n\t* assertions without needing a real stack; concrete subclasses that need the\n\t* stack at runtime should narrow the parameter to required.\n\t*/\n\tstack;\n\tconstructor(stack) {\n\t\tthis.stack = stack;\n\t}\n\t/**\n\t* Metadata inputs used to build `migration.json` and to derive the plan's\n\t* origin/destination identities.\n\t*\n\t* Default derivation: `to = endContractJson.storage.storageHash`,\n\t* `from = startContractJson?.storage.storageHash ?? null`. A migration that\n\t* carries no contract JSON (e.g. an extension migration) must override this;\n\t* otherwise it throws, since `migration.json` requires a `to` identity.\n\t*/\n\tdescribe() {\n\t\tconst end = this.endContractJson;\n\t\tif (end === void 0) throw errorDescribeMissingEndContract();\n\t\treturn {\n\t\t\tfrom: this.startContractJson?.storage.storageHash ?? null,\n\t\t\tto: end.storage.storageHash\n\t\t};\n\t}\n\tget origin() {\n\t\tconst from = this.describe().from;\n\t\treturn from === null ? null : { storageHash: from };\n\t}\n\tget destination() {\n\t\treturn { storageHash: this.describe().to };\n\t}\n};\n/**\n* Lazy-memoized `endContract` / `startContract` view accessors, one instance\n* held per migration. Each target base (`MongoMigration`, `SqliteMigration`,\n* `PostgresMigration`) creates one `MigrationContractViews` field from\n* `this` — passing its own `<Family>ContractView.fromJson<…>` as `fromJson`\n* and a name for error messages — and forwards its\n* `endContract`/`startContract` getters to it.\n*\n* `endContract` throws `MIGRATION.CONTRACT_VIEW_MISSING` when the migration\n* has no `endContractJson` (mirrors `describe()`'s own requirement).\n* `startContract` returns `null` for a baseline migration (no\n* `startContractJson`) instead of throwing.\n*/\nvar MigrationContractViews = class {\n\tmigration;\n\tclassName;\n\tfromJson;\n\t#endView;\n\t#startView;\n\tconstructor(migration, className, fromJson) {\n\t\tthis.migration = migration;\n\t\tthis.className = className;\n\t\tthis.fromJson = fromJson;\n\t}\n\tget endContract() {\n\t\tif (this.#endView === void 0) {\n\t\t\tconst json = this.migration.endContractJson;\n\t\t\tif (json === void 0) throw errorMigrationContractViewMissing(this.className, \"endContract\", \"endContractJson\");\n\t\t\tthis.#endView = this.fromJson(json);\n\t\t}\n\t\treturn this.#endView;\n\t}\n\tget startContract() {\n\t\tif (this.#startView === void 0) {\n\t\t\tconst json = this.migration.startContractJson;\n\t\t\tthis.#startView = json === void 0 ? null : this.fromJson(json);\n\t\t}\n\t\treturn this.#startView;\n\t}\n};\n/**\n* Returns true when `import.meta.url` resolves to the same file that was\n* invoked as the node entrypoint (`process.argv[1]`). Used by\n* `MigrationCLI.run` (in `@internal/cli/migration-cli`) to no-op when\n* the migration module is being imported (e.g. by another script) rather\n* than executed directly.\n*/\nfunction isDirectEntrypoint(importMetaUrl) {\n\tconst metaFilename = fileURLToPath(importMetaUrl);\n\tconst argv1 = process.argv[1];\n\tif (!argv1) return false;\n\ttry {\n\t\treturn realpathSync(metaFilename) === realpathSync(argv1);\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Build the attested metadata from `describe()`-derived metadata, the\n* operations list, and the previously-scaffolded metadata (if any).\n*\n* When a `migration.json` already exists for this package (the common\n* case: it was scaffolded by `migration plan`), preserve `createdAt`\n* set there — that field is owned by the CLI scaffolder, not the authored\n* class. Only the `describe()`-derived fields (`from`, `to`) and the\n* operations change as the author iterates. When no metadata exists yet\n* (a bare `migration.ts` run from scratch), synthesize a minimal but\n* schema-conformant record so the resulting package can still be read,\n* verified, and applied.\n*\n* The `migrationHash` is recomputed against the current metadata + ops so\n* the on-disk artifacts are always fully attested.\n*/\nfunction buildAttestedMetadata(meta, ops, existing) {\n\tconst baseMetadata = {\n\t\tfrom: meta.from,\n\t\tto: meta.to,\n\t\tprovidedInvariants: deriveProvidedInvariants(ops),\n\t\tcreatedAt: existing?.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()\n\t};\n\tconst migrationHash = computeMigrationHash(baseMetadata, ops);\n\treturn {\n\t\t...baseMetadata,\n\t\tmigrationHash\n\t};\n}\n/**\n* Pure conversion from a `Migration` instance (plus the previously\n* scaffolded metadata, when one exists on disk) to the in-memory\n* artifacts that downstream tooling persists. Owns metadata validation,\n* metadata synthesis/preservation, and the content-addressed\n* `migrationHash` computation, but performs no file I/O — callers handle\n* reads (to source `existing`) and writes (to persist `opsJson` /\n* `metadataJson`).\n*/\nasync function buildMigrationArtifacts(instance, existing) {\n\tconst rawOps = instance.operations;\n\tif (!Array.isArray(rawOps)) throw errorOperationsNotArray();\n\tconst ops = await Promise.all(rawOps);\n\tfor (let index = 0; index < ops.length; index++) {\n\t\tconst result = MigrationOpSchema(ops[index]);\n\t\tif (result instanceof type.errors) throw errorInvalidOperationEntry(index, result.summary);\n\t}\n\tconst rawMeta = instance.describe();\n\tconst parsed = MigrationMetaSchema(rawMeta);\n\tif (parsed instanceof type.errors) throw errorDescribeInvalidMetadata(parsed.summary);\n\tconst metadata = buildAttestedMetadata(parsed, ops, existing);\n\treturn {\n\t\topsJson: JSON.stringify(ops, null, 2),\n\t\tmetadata,\n\t\tmetadataJson: JSON.stringify(metadata, null, 2)\n\t};\n}\n//#endregion\nexport { Migration, MigrationContractViews, buildMigrationArtifacts, isDirectEntrypoint };\n\n//# sourceMappingURL=migration.mjs.map"],"mappings":";;;;;;;;AAQA,MAAM,sBAAsB,KAAK;CAChC,MAAM;CACN,IAAI;AACL,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBD,IAAI,YAAY,MAAM;;;;;;;;;;;;;CAarB;;;;;;;CAOA;;;;;;;;;;CAUA;CACA,YAAY,OAAO;EAClB,KAAK,QAAQ;CACd;;;;;;;;;;CAUA,WAAW;EACV,MAAM,MAAM,KAAK;EACjB,IAAI,QAAQ,KAAK,GAAG,MAAM,gCAAgC;EAC1D,OAAO;GACN,MAAM,KAAK,mBAAmB,QAAQ,eAAe;GACrD,IAAI,IAAI,QAAQ;EACjB;CACD;CACA,IAAI,SAAS;EACZ,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC;EAC7B,OAAO,SAAS,OAAO,OAAO,EAAE,aAAa,KAAK;CACnD;CACA,IAAI,cAAc;EACjB,OAAO,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,GAAG;CAC1C;AACD;;;;;;;;;;;;;;AAcA,IAAI,yBAAyB,MAAM;CAClC;CACA;CACA;CACA;CACA;CACA,YAAY,WAAW,WAAW,UAAU;EAC3C,KAAK,YAAY;EACjB,KAAK,YAAY;EACjB,KAAK,WAAW;CACjB;CACA,IAAI,cAAc;EACjB,IAAI,KAAKA,aAAa,KAAK,GAAG;GAC7B,MAAM,OAAO,KAAK,UAAU;GAC5B,IAAI,SAAS,KAAK,GAAG,MAAM,kCAAkC,KAAK,WAAW,eAAe,iBAAiB;GAC7G,KAAKA,WAAW,KAAK,SAAS,IAAI;EACnC;EACA,OAAO,KAAKA;CACb;CACA,IAAI,gBAAgB;EACnB,IAAI,KAAKC,eAAe,KAAK,GAAG;GAC/B,MAAM,OAAO,KAAK,UAAU;GAC5B,KAAKA,aAAa,SAAS,KAAK,IAAI,OAAO,KAAK,SAAS,IAAI;EAC9D;EACA,OAAO,KAAKA;CACb;AACD;;;;;;;;AAQA,SAAS,mBAAmB,eAAe;CAC1C,MAAM,eAAe,cAAc,aAAa;CAChD,MAAM,QAAQ,QAAQ,KAAK;CAC3B,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI;EACH,OAAO,aAAa,YAAY,MAAM,aAAa,KAAK;CACzD,QAAQ;EACP,OAAO;CACR;AACD;;;;;;;;;;;;;;;;;AAiBA,SAAS,sBAAsB,MAAM,KAAK,UAAU;CACnD,MAAM,eAAe;EACpB,MAAM,KAAK;EACX,IAAI,KAAK;EACT,oBAAoB,yBAAyB,GAAG;EAChD,WAAW,UAAU,8BAA8B,IAAI,KAAK,EAAA,CAAG,YAAY;CAC5E;CACA,MAAM,gBAAgB,qBAAqB,cAAc,GAAG;CAC5D,OAAO;EACN,GAAG;EACH;CACD;AACD;;;;;;;;;;AAUA,eAAe,wBAAwB,UAAU,UAAU;CAC1D,MAAM,SAAS,SAAS;CACxB,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,MAAM,wBAAwB;CAC1D,MAAM,MAAM,MAAM,QAAQ,IAAI,MAAM;CACpC,KAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,QAAQ,SAAS;EAChD,MAAM,SAAS,kBAAkB,IAAI,MAAM;EAC3C,IAAI,kBAAkB,KAAK,QAAQ,MAAM,2BAA2B,OAAO,OAAO,OAAO;CAC1F;CACA,MAAM,UAAU,SAAS,SAAS;CAClC,MAAM,SAAS,oBAAoB,OAAO;CAC1C,IAAI,kBAAkB,KAAK,QAAQ,MAAM,6BAA6B,OAAO,OAAO;CACpF,MAAM,WAAW,sBAAsB,QAAQ,KAAK,QAAQ;CAC5D,OAAO;EACN,SAAS,KAAK,UAAU,KAAK,MAAM,CAAC;EACpC;EACA,cAAc,KAAK,UAAU,UAAU,MAAM,CAAC;CAC/C;AACD"}
|
package/dist/{migration-check-DONPyXff-CGTUpLv-.mjs → migration-check-DHYPMUFe-Cni_ZUzB.mjs}
RENAMED
|
@@ -1,34 +1,35 @@
|
|
|
1
|
+
import { D as errorSpaceNotFound, j as mapRefResolutionError, p as errorInvalidSpaceId, r as errorAmbiguousMigrationRef } from "./cli-errors-kU09RUaz-CUkQ9XuM.mjs";
|
|
1
2
|
import { t as MigrationToolsError } from "./errors-Co-8oaiB-CB-6Uqki.mjs";
|
|
2
|
-
import { r as readContractSnapshotJson, t as contractSnapshotDir } from "./contract-snapshot-store-C9-J6OBn-
|
|
3
|
+
import { r as readContractSnapshotJson, t as contractSnapshotDir } from "./contract-snapshot-store-C9-J6OBn-kpuB2oCK.mjs";
|
|
3
4
|
import { n as verifyMigrationHash } from "./hash-DH8hl5Rq-BpM2t3Nu.mjs";
|
|
4
5
|
import "./constants-CM-w38DQ-Cz_EXbOc.mjs";
|
|
5
|
-
import { a as isValidSpaceId, c as spaceMigrationDirectory, l as spaceRefsDirectory, o as listContractSpaceDirectories } from "./verify-contract-spaces-WvjSiWcB-
|
|
6
|
-
import {
|
|
7
|
-
import { s as loadContractSpaceAggregate } from "./aggregate-
|
|
8
|
-
import { u as toDeclaredExtensionsFromRaw } from "./contract-space-aggregate-loader-
|
|
6
|
+
import { a as isValidSpaceId, c as spaceMigrationDirectory, l as spaceRefsDirectory, o as listContractSpaceDirectories } from "./verify-contract-spaces-WvjSiWcB-DZPPCwWO.mjs";
|
|
7
|
+
import { h as resolveContractPath } from "./command-helpers-bGYd7Aab-BNSzfbHK.mjs";
|
|
8
|
+
import { s as loadContractSpaceAggregate } from "./aggregate-BKbHUHLA.mjs";
|
|
9
|
+
import { u as toDeclaredExtensionsFromRaw } from "./contract-space-aggregate-loader-DOzo1sk9-CCPCubsg.mjs";
|
|
9
10
|
import { r as parseMigrationRef } from "./ref-resolution-Ct2GMcNB.mjs";
|
|
10
|
-
import { i as resolveTargetPathAcrossSpaces, n as looksLikePath, r as resolveAppTargetPath, t as findPackageByDirPath } from "./migration-path-target-
|
|
11
|
+
import { i as resolveTargetPathAcrossSpaces, n as looksLikePath, r as resolveAppTargetPath, t as findPackageByDirPath } from "./migration-path-target-DhGt62Mi-dm4TU1hJ.mjs";
|
|
11
12
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
12
|
-
import { notOk, ok } from "@prisma/orm-framework/utils/result";
|
|
13
13
|
import { join, relative } from "pathe";
|
|
14
|
+
import { existsSync, readdirSync, statSync } from "node:fs";
|
|
14
15
|
import { readFile } from "node:fs/promises";
|
|
15
16
|
import { createControlStack } from "@prisma/orm-framework/components/control";
|
|
16
|
-
import {
|
|
17
|
-
//#region ../../../1-framework/3-tooling/cli/dist/migration-check-
|
|
17
|
+
import { notOk, ok } from "@prisma/orm-framework/utils/result";
|
|
18
|
+
//#region ../../../1-framework/3-tooling/cli/dist/migration-check-DHYPMUFe.mjs
|
|
18
19
|
/**
|
|
19
20
|
* Policy core of `migration check`: per-space explicit graph checks, aggregate-integrity loading, and single-target resolution.
|
|
20
21
|
*/
|
|
21
|
-
function migrationPathRelative(dirPath) {
|
|
22
|
-
return relative(
|
|
22
|
+
function migrationPathRelative(cwd, dirPath) {
|
|
23
|
+
return relative(cwd, dirPath);
|
|
23
24
|
}
|
|
24
|
-
function migrationFileRelative(dirPath, fileName) {
|
|
25
|
-
return join(migrationPathRelative(dirPath), fileName);
|
|
25
|
+
function migrationFileRelative(cwd, dirPath, fileName) {
|
|
26
|
+
return join(migrationPathRelative(cwd, dirPath), fileName);
|
|
26
27
|
}
|
|
27
|
-
function checkFileExists(
|
|
28
|
+
function checkFileExists(space, dirPath, dirName, fileName) {
|
|
28
29
|
if (!existsSync(join(dirPath, fileName))) return {
|
|
29
|
-
space: spaceId,
|
|
30
|
+
space: space.spaceId,
|
|
30
31
|
code: "MIGRATION.CHECK_FILE_MISSING",
|
|
31
|
-
where: migrationFileRelative(dirPath, fileName),
|
|
32
|
+
where: migrationFileRelative(space.cwd, dirPath, fileName),
|
|
32
33
|
why: `${fileName} is missing from ${dirName}`,
|
|
33
34
|
fix: "Re-emit the migration package or restore from version control."
|
|
34
35
|
};
|
|
@@ -42,7 +43,8 @@ function checkFileExists(spaceId, dirPath, dirName, fileName) {
|
|
|
42
43
|
* `pkg.metadata.to` is `MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH`; an unparseable store
|
|
43
44
|
* entry (or a malformed `to`) is `MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE`.
|
|
44
45
|
*/
|
|
45
|
-
async function checkSnapshotConsistency(
|
|
46
|
+
async function checkSnapshotConsistency(space, pkg, migrationsDir) {
|
|
47
|
+
const spaceId = space.spaceId;
|
|
46
48
|
let snapshotDir;
|
|
47
49
|
try {
|
|
48
50
|
snapshotDir = contractSnapshotDir(migrationsDir, pkg.metadata.to);
|
|
@@ -50,7 +52,7 @@ async function checkSnapshotConsistency(spaceId, pkg, migrationsDir) {
|
|
|
50
52
|
return {
|
|
51
53
|
space: spaceId,
|
|
52
54
|
code: "MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE",
|
|
53
|
-
where: migrationPathRelative(pkg.dirPath),
|
|
55
|
+
where: migrationPathRelative(space.cwd, pkg.dirPath),
|
|
54
56
|
why: `Migration "${pkg.dirName}" declares to="${pkg.metadata.to}", which is not a well-formed contract snapshot hash.`,
|
|
55
57
|
fix: "Re-emit the migration package so migration.json declares a valid 64-hex to-hash."
|
|
56
58
|
};
|
|
@@ -63,7 +65,7 @@ async function checkSnapshotConsistency(spaceId, pkg, migrationsDir) {
|
|
|
63
65
|
return {
|
|
64
66
|
space: spaceId,
|
|
65
67
|
code: "MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE",
|
|
66
|
-
where: migrationPathRelative(pkg.dirPath),
|
|
68
|
+
where: migrationPathRelative(space.cwd, pkg.dirPath),
|
|
67
69
|
why: `Migration "${pkg.dirName}" has an unparseable contract snapshot at ${snapshotDir}/contract.json.`,
|
|
68
70
|
fix: "Restore migrations/snapshots/ from version control, or re-run the command that produced this migration to regenerate its snapshot."
|
|
69
71
|
};
|
|
@@ -72,7 +74,7 @@ async function checkSnapshotConsistency(spaceId, pkg, migrationsDir) {
|
|
|
72
74
|
if (typeof snapshotHash === "string" && snapshotHash !== pkg.metadata.to) return {
|
|
73
75
|
space: spaceId,
|
|
74
76
|
code: "MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH",
|
|
75
|
-
where: migrationPathRelative(pkg.dirPath),
|
|
77
|
+
where: migrationPathRelative(space.cwd, pkg.dirPath),
|
|
76
78
|
why: `Migration "${pkg.dirName}" declares to=${pkg.metadata.to} but its contract snapshot has storageHash=${snapshotHash}`,
|
|
77
79
|
fix: "Re-emit the migration package so migration.json and its contract snapshot agree."
|
|
78
80
|
};
|
|
@@ -86,7 +88,7 @@ async function checkSnapshotConsistency(spaceId, pkg, migrationsDir) {
|
|
|
86
88
|
* membership matches the on-disk directories, package / ref / graph data come
|
|
87
89
|
* from `aggregate.space(id)`.
|
|
88
90
|
*/
|
|
89
|
-
async function enumerateCheckSpaces(aggregate, projectMigrationsDir) {
|
|
91
|
+
async function enumerateCheckSpaces(aggregate, projectMigrationsDir, cwd) {
|
|
90
92
|
const candidateDirs = await listContractSpaceDirectories(projectMigrationsDir);
|
|
91
93
|
const onDiskSpaceIds = new Set(candidateDirs.filter(isValidSpaceId));
|
|
92
94
|
const spaces = [];
|
|
@@ -102,7 +104,8 @@ async function enumerateCheckSpaces(aggregate, projectMigrationsDir) {
|
|
|
102
104
|
graph: space.graph(),
|
|
103
105
|
migrationsDir,
|
|
104
106
|
refsDir: spaceRefsDirectory(migrationsDir),
|
|
105
|
-
projectMigrationsDir
|
|
107
|
+
projectMigrationsDir,
|
|
108
|
+
cwd
|
|
106
109
|
});
|
|
107
110
|
}
|
|
108
111
|
return spaces;
|
|
@@ -126,7 +129,7 @@ function checkManifestFilesPresent(space) {
|
|
|
126
129
|
continue;
|
|
127
130
|
}
|
|
128
131
|
if (!loadedDirNames.has(entry)) for (const f of ["migration.json", "ops.json"]) {
|
|
129
|
-
const fail = checkFileExists(space
|
|
132
|
+
const fail = checkFileExists(space, entryPath, entry, f);
|
|
130
133
|
if (fail) failures.push(fail);
|
|
131
134
|
}
|
|
132
135
|
}
|
|
@@ -138,7 +141,7 @@ function checkReachability(space) {
|
|
|
138
141
|
for (const pkg of space.packages) if (!(pkg.metadata.from === null || allToHashes.has(pkg.metadata.from) || pkg.metadata.from === "empty")) failures.push({
|
|
139
142
|
space: space.spaceId,
|
|
140
143
|
code: "MIGRATION.CHECK_UNREACHABLE_MIGRATION",
|
|
141
|
-
where: migrationPathRelative(pkg.dirPath),
|
|
144
|
+
where: migrationPathRelative(space.cwd, pkg.dirPath),
|
|
142
145
|
why: `Migration "${pkg.dirName}" starts from ${pkg.metadata.from} which no other migration produces`,
|
|
143
146
|
fix: "This migration is unreachable in the graph. Delete it or re-emit a connecting migration."
|
|
144
147
|
});
|
|
@@ -149,14 +152,14 @@ function checkDanglingRefs(space) {
|
|
|
149
152
|
for (const [name, entry] of Object.entries(space.refs)) if (!space.graph.nodes.has(entry.hash)) failures.push({
|
|
150
153
|
space: space.spaceId,
|
|
151
154
|
code: "MIGRATION.CHECK_DANGLING_REF",
|
|
152
|
-
where: relative(
|
|
155
|
+
where: relative(space.cwd, join(space.refsDir, `${name}.json`)),
|
|
153
156
|
why: `Ref "${name}" points at ${entry.hash} which does not exist in the migration graph`,
|
|
154
157
|
fix: `Update the ref with \`prisma-next ref set ${name} <valid-hash>\` or delete it.`
|
|
155
158
|
});
|
|
156
159
|
return failures;
|
|
157
160
|
}
|
|
158
161
|
async function checkSpace(space) {
|
|
159
|
-
const snapshotFailures = await Promise.all(space.packages.map((pkg) => checkSnapshotConsistency(space
|
|
162
|
+
const snapshotFailures = await Promise.all(space.packages.map((pkg) => checkSnapshotConsistency(space, pkg, space.projectMigrationsDir)));
|
|
160
163
|
return [
|
|
161
164
|
...checkManifestFilesPresent(space),
|
|
162
165
|
...snapshotFailures.filter((f) => f !== null),
|
|
@@ -316,18 +319,18 @@ async function checkSingleTarget(target, inputs) {
|
|
|
316
319
|
};
|
|
317
320
|
const failures = [...checkManifestFilesPresent(matchedSpace)];
|
|
318
321
|
for (const f of ["migration.json", "ops.json"]) {
|
|
319
|
-
const fail = checkFileExists(matchedSpace
|
|
322
|
+
const fail = checkFileExists(matchedSpace, matchedPkg.dirPath, matchedPkg.dirName, f);
|
|
320
323
|
if (fail) failures.push(fail);
|
|
321
324
|
}
|
|
322
325
|
const verification = verifyMigrationHash(matchedPkg);
|
|
323
326
|
if (!verification.ok) failures.push({
|
|
324
327
|
space: matchedSpace.spaceId,
|
|
325
328
|
code: "MIGRATION.CHECK_HASH_MISMATCH",
|
|
326
|
-
where: migrationFileRelative(matchedPkg.dirPath, "migration.json"),
|
|
329
|
+
where: migrationFileRelative(matchedSpace.cwd, matchedPkg.dirPath, "migration.json"),
|
|
327
330
|
why: `Stored hash ${verification.storedHash} does not match recomputed hash ${verification.computedHash}`,
|
|
328
331
|
fix: "Re-emit the migration package or restore from version control."
|
|
329
332
|
});
|
|
330
|
-
const snapshotFailure = await checkSnapshotConsistency(matchedSpace
|
|
333
|
+
const snapshotFailure = await checkSnapshotConsistency(matchedSpace, matchedPkg, matchedSpace.projectMigrationsDir);
|
|
331
334
|
if (snapshotFailure) failures.push(snapshotFailure);
|
|
332
335
|
const resolvedSpaceId = matchedSpace.spaceId !== "app" ? matchedSpace.spaceId : void 0;
|
|
333
336
|
if (failures.length === 0) return {
|
|
@@ -352,4 +355,4 @@ async function checkSingleTarget(target, inputs) {
|
|
|
352
355
|
//#endregion
|
|
353
356
|
export { runMigrationCheck as i, enumerateCheckSpaces as n, loadAggregateIntegrityViolations as r, checkSingleTarget as t };
|
|
354
357
|
|
|
355
|
-
//# sourceMappingURL=migration-check-
|
|
358
|
+
//# sourceMappingURL=migration-check-DHYPMUFe-Cni_ZUzB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-check-DHYPMUFe-Cni_ZUzB.mjs","names":[],"sources":["../../../../1-framework/3-tooling/cli/dist/migration-check-DHYPMUFe.mjs"],"sourcesContent":["import { D as errorSpaceNotFound, j as mapRefResolutionError, p as errorInvalidSpaceId, r as errorAmbiguousMigrationRef } from \"./cli-errors-kU09RUaz.mjs\";\nimport { o as resolveContractPath } from \"./command-helpers-bGYd7Aab.mjs\";\nimport { u as toDeclaredExtensionsFromRaw } from \"./contract-space-aggregate-loader-DOzo1sk9.mjs\";\nimport { i as resolveTargetPathAcrossSpaces, n as looksLikePath, r as resolveAppTargetPath, t as findPackageByDirPath } from \"./migration-path-target-DhGt62Mi.mjs\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { join, relative } from \"pathe\";\nimport { readFile } from \"node:fs/promises\";\nimport { createControlStack } from \"@internal/framework-components/control\";\nimport { existsSync, readdirSync, statSync } from \"node:fs\";\nimport { isValidSpaceId, listContractSpaceDirectories, spaceMigrationDirectory, spaceRefsDirectory } from \"@internal/migration-tools/spaces\";\nimport { loadContractSpaceAggregate } from \"@internal/migration-tools/aggregate\";\nimport { EMPTY_CONTRACT_HASH } from \"@internal/migration-tools/constants\";\nimport { MigrationToolsError } from \"@internal/migration-tools/errors\";\nimport { contractSnapshotDir, readContractSnapshotJson } from \"@internal/migration-tools/contract-snapshot-store\";\nimport { parseMigrationRef } from \"@internal/migration-tools/ref-resolution\";\nimport { verifyMigrationHash } from \"@internal/migration-tools/hash\";\n//#region src/control-api/operations/migration-check.ts\n/**\n* Policy core of `migration check`: per-space explicit graph checks, aggregate-integrity loading, and single-target resolution.\n*/\nfunction migrationPathRelative(cwd, dirPath) {\n\treturn relative(cwd, dirPath);\n}\nfunction migrationFileRelative(cwd, dirPath, fileName) {\n\treturn join(migrationPathRelative(cwd, dirPath), fileName);\n}\nfunction checkFileExists(space, dirPath, dirName, fileName) {\n\tif (!existsSync(join(dirPath, fileName))) return {\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_FILE_MISSING\",\n\t\twhere: migrationFileRelative(space.cwd, dirPath, fileName),\n\t\twhy: `${fileName} is missing from ${dirName}`,\n\t\tfix: \"Re-emit the migration package or restore from version control.\"\n\t};\n\treturn null;\n}\n/**\n* Snapshot-store consistency check for one migration package (D6.5):\n* absent store entry is not an issue (runner independence, ADR 199 — a\n* package dir with only `migration.json` + `ops.json` is legitimate); a\n* present entry whose inner `storage.storageHash` disagrees with\n* `pkg.metadata.to` is `MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH`; an unparseable store\n* entry (or a malformed `to`) is `MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE`.\n*/\nasync function checkSnapshotConsistency(space, pkg, migrationsDir) {\n\tconst spaceId = space.spaceId;\n\tlet snapshotDir;\n\ttry {\n\t\tsnapshotDir = contractSnapshotDir(migrationsDir, pkg.metadata.to);\n\t} catch {\n\t\treturn {\n\t\t\tspace: spaceId,\n\t\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE\",\n\t\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\t\twhy: `Migration \"${pkg.dirName}\" declares to=\"${pkg.metadata.to}\", which is not a well-formed contract snapshot hash.`,\n\t\t\tfix: \"Re-emit the migration package so migration.json declares a valid 64-hex to-hash.\"\n\t\t};\n\t}\n\tlet raw;\n\ttry {\n\t\traw = await readContractSnapshotJson(migrationsDir, pkg.metadata.to);\n\t} catch (error) {\n\t\tif (MigrationToolsError.is(error) && error.code === \"MIGRATION.CONTRACT_SNAPSHOT_MISSING\") return null;\n\t\treturn {\n\t\t\tspace: spaceId,\n\t\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_UNPARSEABLE\",\n\t\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\t\twhy: `Migration \"${pkg.dirName}\" has an unparseable contract snapshot at ${snapshotDir}/contract.json.`,\n\t\t\tfix: \"Restore migrations/snapshots/ from version control, or re-run the command that produced this migration to regenerate its snapshot.\"\n\t\t};\n\t}\n\tconst snapshotHash = (raw !== null && typeof raw === \"object\" ? raw : {})[\"storage\"]?.[\"storageHash\"];\n\tif (typeof snapshotHash === \"string\" && snapshotHash !== pkg.metadata.to) return {\n\t\tspace: spaceId,\n\t\tcode: \"MIGRATION.CHECK_SNAPSHOT_HASH_MISMATCH\",\n\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\twhy: `Migration \"${pkg.dirName}\" declares to=${pkg.metadata.to} but its contract snapshot has storageHash=${snapshotHash}`,\n\t\tfix: \"Re-emit the migration package so migration.json and its contract snapshot agree.\"\n\t};\n\treturn null;\n}\n/**\n* Project the loaded {@link ContractSpaceAggregate} into the\n* {@link CheckSpace} rows the multi-space check iterates — one per on-disk\n* contract-space directory, in the aggregate's `app`-first ordering. Mirrors\n* `migration list`'s `migrationSpaceListEntriesFromAggregate`: space\n* membership matches the on-disk directories, package / ref / graph data come\n* from `aggregate.space(id)`.\n*/\nasync function enumerateCheckSpaces(aggregate, projectMigrationsDir, cwd) {\n\tconst candidateDirs = await listContractSpaceDirectories(projectMigrationsDir);\n\tconst onDiskSpaceIds = new Set(candidateDirs.filter(isValidSpaceId));\n\tconst spaces = [];\n\tfor (const space of aggregate.spaces()) {\n\t\tconst spaceId = space.spaceId;\n\t\tif (!isValidSpaceId(spaceId)) continue;\n\t\tif (!onDiskSpaceIds.has(spaceId)) continue;\n\t\tconst migrationsDir = spaceMigrationDirectory(projectMigrationsDir, spaceId);\n\t\tspaces.push({\n\t\t\tspaceId,\n\t\t\tpackages: space.packages,\n\t\t\trefs: space.refs,\n\t\t\tgraph: space.graph(),\n\t\t\tmigrationsDir,\n\t\t\trefsDir: spaceRefsDirectory(migrationsDir),\n\t\t\tprojectMigrationsDir,\n\t\t\tcwd\n\t\t});\n\t}\n\treturn spaces;\n}\nfunction checkManifestFilesPresent(space) {\n\tif (!existsSync(space.migrationsDir)) return [];\n\tconst loadedDirNames = new Set(space.packages.map((p) => p.dirName));\n\tconst failures = [];\n\tlet entries;\n\ttry {\n\t\tentries = readdirSync(space.migrationsDir);\n\t} catch {\n\t\treturn failures;\n\t}\n\tfor (const entry of entries) {\n\t\tif (entry.startsWith(\".\") || entry.startsWith(\"_\") || entry === \"refs\") continue;\n\t\tconst entryPath = join(space.migrationsDir, entry);\n\t\ttry {\n\t\t\tif (!statSync(entryPath).isDirectory()) continue;\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!loadedDirNames.has(entry)) for (const f of [\"migration.json\", \"ops.json\"]) {\n\t\t\tconst fail = checkFileExists(space, entryPath, entry, f);\n\t\t\tif (fail) failures.push(fail);\n\t\t}\n\t}\n\treturn failures;\n}\nfunction checkReachability(space) {\n\tconst allToHashes = new Set(space.packages.map((p) => p.metadata.to));\n\tconst failures = [];\n\tfor (const pkg of space.packages) if (!(pkg.metadata.from === null || allToHashes.has(pkg.metadata.from) || pkg.metadata.from === EMPTY_CONTRACT_HASH)) failures.push({\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_UNREACHABLE_MIGRATION\",\n\t\twhere: migrationPathRelative(space.cwd, pkg.dirPath),\n\t\twhy: `Migration \"${pkg.dirName}\" starts from ${pkg.metadata.from} which no other migration produces`,\n\t\tfix: \"This migration is unreachable in the graph. Delete it or re-emit a connecting migration.\"\n\t});\n\treturn failures;\n}\nfunction checkDanglingRefs(space) {\n\tconst failures = [];\n\tfor (const [name, entry] of Object.entries(space.refs)) if (!space.graph.nodes.has(entry.hash)) failures.push({\n\t\tspace: space.spaceId,\n\t\tcode: \"MIGRATION.CHECK_DANGLING_REF\",\n\t\twhere: relative(space.cwd, join(space.refsDir, `${name}.json`)),\n\t\twhy: `Ref \"${name}\" points at ${entry.hash} which does not exist in the migration graph`,\n\t\tfix: `Update the ref with \\`prisma-next ref set ${name} <valid-hash>\\` or delete it.`\n\t});\n\treturn failures;\n}\nasync function checkSpace(space) {\n\tconst snapshotFailures = await Promise.all(space.packages.map((pkg) => checkSnapshotConsistency(space, pkg, space.projectMigrationsDir)));\n\treturn [\n\t\t...checkManifestFilesPresent(space),\n\t\t...snapshotFailures.filter((f) => f !== null),\n\t\t...checkReachability(space),\n\t\t...checkDanglingRefs(space)\n\t];\n}\n/**\n* Policy core of the holistic `migration check`: validates `--space`,\n* narrows the pre-enumerated spaces, and runs the per-space explicit graph\n* checks (file-existence, snapshot consistency, reachability, dangling\n* refs), aggregating every failure into one {@link MigrationCheckResult}.\n*\n* `--space` validation mirrors `migration list`: an invalid id →\n* {@link errorInvalidSpaceId}; an id with no on-disk space →\n* {@link errorSpaceNotFound}. Both map to exit `PRECONDITION` at the shell.\n* Aggregate-integrity violations (which already span every space) are folded\n* in by the caller, not here.\n*/\nasync function runMigrationCheck(inputs) {\n\tconst { spaces, spaceFilter } = inputs;\n\tif (spaceFilter !== void 0 && !isValidSpaceId(spaceFilter)) return notOk(errorInvalidSpaceId(spaceFilter));\n\tif (spaceFilter !== void 0 && !spaces.some((s) => s.spaceId === spaceFilter)) return notOk(errorSpaceNotFound(spaceFilter, spaces.map((s) => s.spaceId).sort()));\n\tconst scopedSpaces = spaceFilter !== void 0 ? spaces.filter((s) => s.spaceId === spaceFilter) : spaces;\n\tconst failures = (await Promise.all(scopedSpaces.map(checkSpace))).flat();\n\tif (failures.length === 0) return ok({\n\t\tok: true,\n\t\tfailures: [],\n\t\tsummary: \"All checks passed\"\n\t});\n\treturn ok({\n\t\tok: false,\n\t\tfailures,\n\t\tsummary: `${failures.length} integrity failure(s)`\n\t});\n}\nasync function loadAggregateIntegrityViolations(config, migrationsDir) {\n\ttry {\n\t\tconst contractJsonContent = await readFile(resolveContractPath(config), \"utf-8\");\n\t\tconst familyInstance = config.family.create(createControlStack(config));\n\t\tconst declaredExtensions = toDeclaredExtensionsFromRaw(config.extensions ?? []);\n\t\tconst parsedAppContract = JSON.parse(contractJsonContent);\n\t\treturn (await loadContractSpaceAggregate({\n\t\t\tmigrationsDir,\n\t\t\tdeserializeContract: (json) => familyInstance.deserializeContract(json),\n\t\t\tappContract: familyInstance.deserializeContract(parsedAppContract)\n\t\t})).checkIntegrity({\n\t\t\tdeclaredExtensions,\n\t\t\tcheckContracts: true\n\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Ranks ref-resolution failure kinds by how informative they are, so a\n* single-target check surfaces the most useful failure across spaces instead of\n* whichever space failed first. `not-found` (the input matched nothing here)\n* says the least; a malformed input, a wrong grammar, or an in-space ambiguity\n* all say more.\n*/\nfunction refFailureSpecificity(error) {\n\tswitch (error.kind) {\n\t\tcase \"wrong-grammar\": return 3;\n\t\tcase \"ambiguous\": return 2;\n\t\tcase \"invalid-format\": return 1;\n\t\tcase \"not-found\": return 0;\n\t}\n}\n/**\n* Single-target (`check <ref/path>`) mode — resolves a migration reference\n* across all contract spaces (or the one space narrowed by `--space <id>`).\n*\n* Resolution:\n* - filesystem path → find the owning space by checking which space's\n* `migrationsDir` contains the resolved path; falls back to app-relative\n* validation when the path is outside every space dir.\n* - ref → `parseMigrationRef` against each in-scope space; collect every\n* (space, package) hit; 0 hits = not-found, 1 = check it, >1 = ambiguity\n* error (qualify with `--space`).\n*\n* `--space <id>` is validated the same way the holistic path does it:\n* invalid id → `errorInvalidSpaceId`; no on-disk space → `errorSpaceNotFound`.\n*/\nasync function checkSingleTarget(target, inputs) {\n\tconst { spaces, spaceFilter, appMigrationsDir, appMigrationsRelative } = inputs;\n\tif (spaceFilter !== void 0 && !isValidSpaceId(spaceFilter)) return {\n\t\terror: errorInvalidSpaceId(spaceFilter),\n\t\texitCode: 2\n\t};\n\tif (spaceFilter !== void 0 && !spaces.some((s) => s.spaceId === spaceFilter)) return {\n\t\terror: errorSpaceNotFound(spaceFilter, spaces.map((s) => s.spaceId).sort()),\n\t\texitCode: 2\n\t};\n\tconst scopedSpaces = spaceFilter !== void 0 ? spaces.filter((s) => s.spaceId === spaceFilter) : spaces;\n\tlet matchedSpace;\n\tlet matchedPkg;\n\tif (looksLikePath(target)) {\n\t\tconst resolvedPath = resolveTargetPathAcrossSpaces(target, scopedSpaces);\n\t\tif (resolvedPath !== null) for (const space of scopedSpaces) {\n\t\t\tconst found = findPackageByDirPath(space.packages, resolvedPath);\n\t\t\tif (found) {\n\t\t\t\tmatchedSpace = space;\n\t\t\t\tmatchedPkg = found;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst resolved = resolveAppTargetPath(target, appMigrationsDir, appMigrationsRelative);\n\t\t\tif (!resolved.ok) return {\n\t\t\t\terror: resolved.failure,\n\t\t\t\texitCode: 2\n\t\t\t};\n\t\t\tconst appSpace = scopedSpaces.find((s) => s.spaceId === \"app\");\n\t\t\tif (appSpace) {\n\t\t\t\tmatchedSpace = appSpace;\n\t\t\t\tmatchedPkg = findPackageByDirPath(appSpace.packages, resolved.value);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst hits = [];\n\t\tlet bestParseFailure;\n\t\tfor (const space of scopedSpaces) {\n\t\t\tconst migResult = parseMigrationRef(target, {\n\t\t\t\tgraph: space.graph,\n\t\t\t\trefs: space.refs\n\t\t\t});\n\t\t\tif (!migResult.ok) {\n\t\t\t\tif (bestParseFailure === void 0 || refFailureSpecificity(migResult.failure) > refFailureSpecificity(bestParseFailure)) bestParseFailure = migResult.failure;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst pkg = space.packages.find((p) => p.metadata.migrationHash === migResult.value.migrationHash);\n\t\t\tif (pkg) hits.push({\n\t\t\t\tspace,\n\t\t\t\tpkg\n\t\t\t});\n\t\t}\n\t\tif (hits.length > 1) return {\n\t\t\terror: errorAmbiguousMigrationRef(target, hits.map((h) => h.space.spaceId)),\n\t\t\texitCode: 2\n\t\t};\n\t\tif (hits.length === 1) {\n\t\t\tmatchedSpace = hits[0].space;\n\t\t\tmatchedPkg = hits[0].pkg;\n\t\t} else if (bestParseFailure !== void 0) return {\n\t\t\terror: mapRefResolutionError(bestParseFailure),\n\t\t\texitCode: 2\n\t\t};\n\t}\n\tif (!matchedPkg || !matchedSpace) return {\n\t\tresult: {\n\t\t\tok: false,\n\t\t\tfailures: [],\n\t\t\tsummary: `Migration package for \"${target}\" not found on disk`\n\t\t},\n\t\texitCode: 2\n\t};\n\tconst failures = [...checkManifestFilesPresent(matchedSpace)];\n\tfor (const f of [\"migration.json\", \"ops.json\"]) {\n\t\tconst fail = checkFileExists(matchedSpace, matchedPkg.dirPath, matchedPkg.dirName, f);\n\t\tif (fail) failures.push(fail);\n\t}\n\tconst verification = verifyMigrationHash(matchedPkg);\n\tif (!verification.ok) failures.push({\n\t\tspace: matchedSpace.spaceId,\n\t\tcode: \"MIGRATION.CHECK_HASH_MISMATCH\",\n\t\twhere: migrationFileRelative(matchedSpace.cwd, matchedPkg.dirPath, \"migration.json\"),\n\t\twhy: `Stored hash ${verification.storedHash} does not match recomputed hash ${verification.computedHash}`,\n\t\tfix: \"Re-emit the migration package or restore from version control.\"\n\t});\n\tconst snapshotFailure = await checkSnapshotConsistency(matchedSpace, matchedPkg, matchedSpace.projectMigrationsDir);\n\tif (snapshotFailure) failures.push(snapshotFailure);\n\tconst resolvedSpaceId = matchedSpace.spaceId !== \"app\" ? matchedSpace.spaceId : void 0;\n\tif (failures.length === 0) return {\n\t\tresult: {\n\t\t\tok: true,\n\t\t\tfailures: [],\n\t\t\tsummary: \"All checks passed\"\n\t\t},\n\t\texitCode: 0,\n\t\t...ifDefined(\"resolvedSpaceId\", resolvedSpaceId)\n\t};\n\treturn {\n\t\tresult: {\n\t\t\tok: false,\n\t\t\tfailures,\n\t\t\tsummary: `${failures.length} integrity failure(s)`\n\t\t},\n\t\texitCode: 4,\n\t\t...ifDefined(\"resolvedSpaceId\", resolvedSpaceId)\n\t};\n}\n//#endregion\nexport { runMigrationCheck as i, enumerateCheckSpaces as n, loadAggregateIntegrityViolations as r, checkSingleTarget as t };\n\n//# sourceMappingURL=migration-check-DHYPMUFe.mjs.map"],"mappings":"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"}
|