@prisma/orm-target-postgres 8.0.0-rc.14-dev.6 → 8.0.0-rc.14-dev.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/{adapter-CK9Nv-pg-DiFXST2r.mjs → adapter-Bb_FFDea-O-uPaHCy.mjs} +5 -5
  2. package/dist/{adapter-CK9Nv-pg-DiFXST2r.mjs.map → adapter-Bb_FFDea-O-uPaHCy.mjs.map} +1 -1
  3. package/dist/{adapter-DP_SQYED.d.mts → adapter-WLK_P3mT.d.mts} +3 -3
  4. package/dist/{adapter-DP_SQYED.d.mts.map → adapter-WLK_P3mT.d.mts.map} +1 -1
  5. package/dist/adapter.d.mts +8 -8
  6. package/dist/adapter.mjs +6 -6
  7. package/dist/adapter__adapter.d.mts +1 -1
  8. package/dist/adapter__adapter.mjs +1 -1
  9. package/dist/adapter__control.d.mts +3 -3
  10. package/dist/adapter__control.mjs +8 -369
  11. package/dist/adapter__control.mjs.map +1 -1
  12. package/dist/adapter__runtime.d.mts +1 -1
  13. package/dist/adapter__runtime.mjs +4 -5
  14. package/dist/adapter__runtime.mjs.map +1 -1
  15. package/dist/adapter__sql-renderer.d.mts +1 -1
  16. package/dist/adapter__sql-renderer.mjs +1 -1
  17. package/dist/adapter__types.d.mts +3 -3
  18. package/dist/{authoring-BmQxOggr-CK871YR4.mjs → authoring-DKN1ccEX-DgmJWx1r.mjs} +4 -4
  19. package/dist/{authoring-BmQxOggr-CK871YR4.mjs.map → authoring-DKN1ccEX-DgmJWx1r.mjs.map} +1 -1
  20. package/dist/{codec-descriptor-BfoHQP3R-CMRVT-F6.mjs → codec-descriptor-B61d-k4C-BdWVU6Fu.mjs} +4 -3
  21. package/dist/codec-descriptor-B61d-k4C-BdWVU6Fu.mjs.map +1 -0
  22. package/dist/codec-descriptor-D8_e5hpo.d.mts +1 -0
  23. package/dist/{codec-descriptor-DUUGoeyI-WGLGXEoI.d.mts → codec-descriptor-HYqjI24K-CTO3gTEs.d.mts} +11 -5
  24. package/dist/codec-descriptor-HYqjI24K-CTO3gTEs.d.mts.map +1 -0
  25. package/dist/{data-types-Cl18KnNY-5I34Vd6Z.mjs → codec-helpers-D83-1eDB-nqAEMr7N.mjs} +39 -216
  26. package/dist/codec-helpers-D83-1eDB-nqAEMr7N.mjs.map +1 -0
  27. package/dist/{codec-type-map-Cp91lhQd-D6zQ14YE.d.mts → codec-type-map-DMKy_xZb-DymgX4w7.d.mts} +4 -4
  28. package/dist/{codec-type-map-Cp91lhQd-D6zQ14YE.d.mts.map → codec-type-map-DMKy_xZb-DymgX4w7.d.mts.map} +1 -1
  29. package/dist/{codec-types-BQNq7Y1u-CGfS7PuD.d.mts → codec-types-B4-xhn7m-RQS461us.d.mts} +4 -4
  30. package/dist/{codec-types-BQNq7Y1u-CGfS7PuD.d.mts.map → codec-types-B4-xhn7m-RQS461us.d.mts.map} +1 -1
  31. package/dist/codec-types-Ci1nfCYh.d.mts +2 -0
  32. package/dist/{codecs-DQGmsnk3-H6nVRPCC.mjs → codecs-BHNqtI1J-BSS9sL3H.mjs} +263 -69
  33. package/dist/codecs-BHNqtI1J-BSS9sL3H.mjs.map +1 -0
  34. package/dist/{codecs-BKV97Xsa.d.mts → codecs-Ba3gUr67.d.mts} +11 -5
  35. package/dist/{codecs-BKV97Xsa.d.mts.map → codecs-Ba3gUr67.d.mts.map} +1 -1
  36. package/dist/{codecs-BZ87E3MY-Bub4t0ma.d.mts → codecs-Bkmbmo_r-Ct7hFY0S.d.mts} +31 -10
  37. package/dist/{codecs-BZ87E3MY-Bub4t0ma.d.mts.map → codecs-Bkmbmo_r-Ct7hFY0S.d.mts.map} +1 -1
  38. package/dist/{codecs-C4DVdgQG.mjs → codecs-Cytq8Ymj.mjs} +12 -4
  39. package/dist/codecs-Cytq8Ymj.mjs.map +1 -0
  40. package/dist/control-CUzQZfhu.d.mts +399 -0
  41. package/dist/control-CUzQZfhu.d.mts.map +1 -0
  42. package/dist/{control-BwOrmTN-.mjs → control-CYQReJto.mjs} +441 -72
  43. package/dist/control-CYQReJto.mjs.map +1 -0
  44. package/dist/{control-DhZYlj-u.d.mts → control-DoIm71dz.d.mts} +5 -4
  45. package/dist/control-DoIm71dz.d.mts.map +1 -0
  46. package/dist/{control-adapter-BaVlICog-BuVBXKoL.mjs → control-adapter-C6kz--Q4-3C9-f7Uv.mjs} +70 -47
  47. package/dist/control-adapter-C6kz--Q4-3C9-f7Uv.mjs.map +1 -0
  48. package/dist/{control-policy-BYo5QPof-BLT07t1y.mjs → control-policy-voGArjr--BeHlQRg0.mjs} +19 -17
  49. package/dist/control-policy-voGArjr--BeHlQRg0.mjs.map +1 -0
  50. package/dist/{data-type-entries-CvkBtAG--D-5Wtm9_.mjs → data-type-entries-BDSHvsdE-Bbe1cdbR.mjs} +3 -3
  51. package/dist/{data-type-entries-CvkBtAG--D-5Wtm9_.mjs.map → data-type-entries-BDSHvsdE-Bbe1cdbR.mjs.map} +1 -1
  52. package/dist/data-types-BqeC7aZP-CwvA08pH.mjs +200 -0
  53. package/dist/data-types-BqeC7aZP-CwvA08pH.mjs.map +1 -0
  54. package/dist/{default-normalizer-DKE2xbCP-EMLD6yNw.mjs → default-normalizer-Cb7nWBUa-DXchlOUk.mjs} +18 -8
  55. package/dist/default-normalizer-Cb7nWBUa-DXchlOUk.mjs.map +1 -0
  56. package/dist/{descriptor-meta-F1wsOtt2-D014LIGM.mjs → descriptor-meta-BEigA5Gj-By_dcUjB.mjs} +9 -7
  57. package/dist/descriptor-meta-BEigA5Gj-By_dcUjB.mjs.map +1 -0
  58. package/dist/{descriptor-meta-BOx9pvBv-C4TEXck8.mjs → descriptor-meta-DF0hODA0-DnO80XvH.mjs} +4 -4
  59. package/dist/{descriptor-meta-BOx9pvBv-C4TEXck8.mjs.map → descriptor-meta-DF0hODA0-DnO80XvH.mjs.map} +1 -1
  60. package/dist/{diff-database-schema-D835UIq8-BVO7jCE4.mjs → diff-database-schema-MYPfxeRf-DdgnOIIl.mjs} +17 -7
  61. package/dist/diff-database-schema-MYPfxeRf-DdgnOIIl.mjs.map +1 -0
  62. package/dist/{full-text-jDpkANi7.d.mts → full-text-Cth_mXe_.d.mts} +2 -2
  63. package/dist/{full-text-jDpkANi7.d.mts.map → full-text-Cth_mXe_.d.mts.map} +1 -1
  64. package/dist/{full-text-index-expression-PZszha7L-CW7i1TUY.mjs → full-text-index-expression-BM_vGygX-BOuja7X4.mjs} +3 -3
  65. package/dist/{full-text-index-expression-PZszha7L-CW7i1TUY.mjs.map → full-text-index-expression-BM_vGygX-BOuja7X4.mjs.map} +1 -1
  66. package/dist/{full-text-parsers-Dp_ANr31-DVxYUNS-.d.mts → full-text-parsers-CLZpb096-BN1xyHeO.d.mts} +3 -3
  67. package/dist/{full-text-parsers-Dp_ANr31-DVxYUNS-.d.mts.map → full-text-parsers-CLZpb096-BN1xyHeO.d.mts.map} +1 -1
  68. package/dist/{infer-psl-contract-pxmVP3E9-Bvk8NzS0.mjs → infer-psl-contract-D7XJnfJv-Cd_Mf0UH.mjs} +78 -82
  69. package/dist/infer-psl-contract-D7XJnfJv-Cd_Mf0UH.mjs.map +1 -0
  70. package/dist/{issue-planner-D9rRu2pB.d.mts → issue-planner-C4iR-Ik-.d.mts} +2 -2
  71. package/dist/{issue-planner-D9rRu2pB.d.mts.map → issue-planner-C4iR-Ik-.d.mts.map} +1 -1
  72. package/dist/{migration-Du89zGmx.d.mts → migration-BTiY0PPC.d.mts} +3 -3
  73. package/dist/{migration-Du89zGmx.d.mts.map → migration-BTiY0PPC.d.mts.map} +1 -1
  74. package/dist/migration-PTHAY9Cv.mjs.map +1 -1
  75. package/dist/{native-type-normalizer-DhbUgdrI.d.mts → native-type-normalizer-BFo5tSyh.d.mts} +2 -5
  76. package/dist/native-type-normalizer-BFo5tSyh.d.mts.map +1 -0
  77. package/dist/native-type-normalizer-CW6g9Fut-C5lMRRjS.mjs +102 -0
  78. package/dist/native-type-normalizer-CW6g9Fut-C5lMRRjS.mjs.map +1 -0
  79. package/dist/op-factory-call-Bi1XxJEv.d.mts +1 -0
  80. package/dist/{op-factory-call-t4k8mlRJ-BgtGXlIC.d.mts → op-factory-call-VLJFI-b_-Du23HNYc.d.mts} +5 -5
  81. package/dist/op-factory-call-VLJFI-b_-Du23HNYc.d.mts.map +1 -0
  82. package/dist/{op-factory-call-BBkvFvKK-7MkUHWJq.mjs → op-factory-call-y5YADY2E-CnhkIujC.mjs} +39 -26
  83. package/dist/op-factory-call-y5YADY2E-CnhkIujC.mjs.map +1 -0
  84. package/dist/{operation-types-DZyRBrnm.d.mts → operation-types-Cj4S6KNP.d.mts} +2 -2
  85. package/dist/{operation-types-DZyRBrnm.d.mts.map → operation-types-Cj4S6KNP.d.mts.map} +1 -1
  86. package/dist/{pack-B8SM_MTs.d.mts → pack-DO2bXv9P.d.mts} +3 -3
  87. package/dist/{pack-B8SM_MTs.d.mts.map → pack-DO2bXv9P.d.mts.map} +1 -1
  88. package/dist/{planner-CquxMKq_-CZQAaWfK.mjs → planner-DMVaXRSK-DCAGfALs.mjs} +6 -6
  89. package/dist/{planner-CquxMKq_-CZQAaWfK.mjs.map → planner-DMVaXRSK-DCAGfALs.mjs.map} +1 -1
  90. package/dist/{planner-o0_69Y9q.d.mts → planner-SLaWpf7q.d.mts} +2 -2
  91. package/dist/{planner-o0_69Y9q.d.mts.map → planner-SLaWpf7q.d.mts.map} +1 -1
  92. package/dist/{planner-ddl-builders-BQ_1YXut.d.mts → planner-ddl-builders-DYLyFXrj.d.mts} +2 -5
  93. package/dist/planner-ddl-builders-DYLyFXrj.d.mts.map +1 -0
  94. package/dist/{planner-ddl-builders-GTcVPpwb-ClvrXb26.mjs → planner-ddl-builders-iE35pyxA-g7b_clbn.mjs} +6 -27
  95. package/dist/planner-ddl-builders-iE35pyxA-g7b_clbn.mjs.map +1 -0
  96. package/dist/planner-produced-postgres-migration-Bi_Otmtx.d.mts +1 -0
  97. package/dist/{planner-produced-postgres-migration-DEJQPRjI-C9GuvVOY.mjs → planner-produced-postgres-migration-C8TUIl2Z-DHjubKQ-.mjs} +3 -3
  98. package/dist/{planner-produced-postgres-migration-DEJQPRjI-C9GuvVOY.mjs.map → planner-produced-postgres-migration-C8TUIl2Z-DHjubKQ-.mjs.map} +1 -1
  99. package/dist/{planner-produced-postgres-migration-Xd83anY_-vp2DJ5fk.d.mts → planner-produced-postgres-migration-CoOcn-b9-8kOq82_P.d.mts} +3 -3
  100. package/dist/planner-produced-postgres-migration-CoOcn-b9-8kOq82_P.d.mts.map +1 -0
  101. package/dist/{planner-sql-checks-Bd8nN9P8-Cd98iEee.mjs → planner-sql-checks-ZMXeCK6W-D1VMBywZ.mjs} +55 -15
  102. package/dist/planner-sql-checks-ZMXeCK6W-D1VMBywZ.mjs.map +1 -0
  103. package/dist/{postgres-contract-view-DxcRT-qe-LQBHHgaS.mjs → postgres-contract-view-BBMpf_qi-8V4vTm9U.mjs} +3 -3
  104. package/dist/{postgres-contract-view-DxcRT-qe-LQBHHgaS.mjs.map → postgres-contract-view-BBMpf_qi-8V4vTm9U.mjs.map} +1 -1
  105. package/dist/{postgres-migration-B7ihBnbW-DOmrgtms.d.mts → postgres-migration-B03W06rR-DTB0R3cj.d.mts} +4 -5
  106. package/dist/{postgres-migration-B7ihBnbW-DOmrgtms.d.mts.map → postgres-migration-B03W06rR-DTB0R3cj.d.mts.map} +1 -1
  107. package/dist/{postgres-migration-qwigEUIO-BWxjALsx.mjs → postgres-migration-UzDaU7Or-Dvc0Cdv5.mjs} +22 -5
  108. package/dist/postgres-migration-UzDaU7Or-Dvc0Cdv5.mjs.map +1 -0
  109. package/dist/{prisma7-binding-B-JcNfUc.mjs → prisma7-binding-D_Q6ou4j.mjs} +7 -6
  110. package/dist/prisma7-binding-D_Q6ou4j.mjs.map +1 -0
  111. package/dist/{prisma7-binding-1CMtcbOk.d.mts → prisma7-binding-c5vWJV6k.d.mts} +3 -3
  112. package/dist/{prisma7-binding-1CMtcbOk.d.mts.map → prisma7-binding-c5vWJV6k.d.mts.map} +1 -1
  113. package/dist/{runtime-aN2tMH8u.d.mts → runtime-Bm1hGqOh.d.mts} +2 -2
  114. package/dist/{runtime-aN2tMH8u.d.mts.map → runtime-Bm1hGqOh.d.mts.map} +1 -1
  115. package/dist/{sql-renderer-DmJ5aZwd.d.mts → sql-renderer-CfXWPuXU.d.mts} +4 -4
  116. package/dist/{sql-renderer-DmJ5aZwd.d.mts.map → sql-renderer-CfXWPuXU.d.mts.map} +1 -1
  117. package/dist/{sql-renderer-CgUgFbU4-CRUChEAY.mjs → sql-renderer-CgUgFbU4-DqTf31OD.mjs} +2 -2
  118. package/dist/{sql-renderer-CgUgFbU4-CRUChEAY.mjs.map → sql-renderer-CgUgFbU4-DqTf31OD.mjs.map} +1 -1
  119. package/dist/target.d.mts +23 -23
  120. package/dist/target.mjs +21 -22
  121. package/dist/target__codec-descriptor.d.mts +2 -2
  122. package/dist/target__codec-descriptor.mjs +1 -1
  123. package/dist/target__codec-types.d.mts +3 -3
  124. package/dist/target__codecs.d.mts +3 -3
  125. package/dist/target__codecs.mjs +3 -4
  126. package/dist/target__control.d.mts +2 -2
  127. package/dist/target__control.mjs +3 -3
  128. package/dist/target__data-types.mjs +2 -2
  129. package/dist/target__default-normalizer.mjs +1 -1
  130. package/dist/target__diff-database-schema.mjs +1 -1
  131. package/dist/target__full-text.d.mts +2 -2
  132. package/dist/target__issue-planner.d.mts +1 -1
  133. package/dist/target__issue-planner.mjs +1 -1
  134. package/dist/target__migration.d.mts +2 -2
  135. package/dist/target__migration.mjs +2 -2
  136. package/dist/target__native-type-normalizer.d.mts +1 -1
  137. package/dist/target__native-type-normalizer.mjs +1 -1
  138. package/dist/target__op-factory-call.d.mts +2 -2
  139. package/dist/target__op-factory-call.mjs +1 -1
  140. package/dist/target__operation-types.d.mts +1 -1
  141. package/dist/target__pack.d.mts +1 -1
  142. package/dist/target__pack.mjs +1 -1
  143. package/dist/target__planner-ddl-builders.d.mts +2 -2
  144. package/dist/target__planner-ddl-builders.mjs +2 -2
  145. package/dist/target__planner-produced-postgres-migration.d.mts +2 -2
  146. package/dist/target__planner-produced-postgres-migration.mjs +1 -1
  147. package/dist/target__planner-sql-checks.mjs +1 -1
  148. package/dist/target__planner.d.mts +1 -1
  149. package/dist/target__planner.mjs +2 -2
  150. package/dist/target__prisma7-binding.d.mts +1 -1
  151. package/dist/target__prisma7-binding.mjs +1 -1
  152. package/dist/target__runtime.mjs +2 -2
  153. package/dist/target__runtime.mjs.map +1 -1
  154. package/dist/target__sql-utils.mjs +1 -1
  155. package/dist/{types-BPubHbiE-mnhvO20x.d.mts → types-BPubHbiE-SaR3Cngi.d.mts} +3 -3
  156. package/dist/{types-BPubHbiE-mnhvO20x.d.mts.map → types-BPubHbiE-SaR3Cngi.d.mts.map} +1 -1
  157. package/dist/types-DvEixgWS.d.mts +2 -0
  158. package/package.json +9 -9
  159. package/dist/codec-descriptor-BfoHQP3R-CMRVT-F6.mjs.map +0 -1
  160. package/dist/codec-descriptor-Cf1qfOwo.d.mts +0 -1
  161. package/dist/codec-descriptor-DUUGoeyI-WGLGXEoI.d.mts.map +0 -1
  162. package/dist/codec-types-BXbWuRzS.d.mts +0 -2
  163. package/dist/codecs-C4DVdgQG.mjs.map +0 -1
  164. package/dist/codecs-DQGmsnk3-H6nVRPCC.mjs.map +0 -1
  165. package/dist/control-BwOrmTN-.mjs.map +0 -1
  166. package/dist/control-CDRHOvkm.d.mts +0 -12
  167. package/dist/control-CDRHOvkm.d.mts.map +0 -1
  168. package/dist/control-DhZYlj-u.d.mts.map +0 -1
  169. package/dist/control-adapter-BaVlICog-BuVBXKoL.mjs.map +0 -1
  170. package/dist/control-policy-BYo5QPof-BLT07t1y.mjs.map +0 -1
  171. package/dist/data-types-Cl18KnNY-5I34Vd6Z.mjs.map +0 -1
  172. package/dist/default-normalizer-DKE2xbCP-EMLD6yNw.mjs.map +0 -1
  173. package/dist/descriptor-meta-F1wsOtt2-D014LIGM.mjs.map +0 -1
  174. package/dist/diff-database-schema-D835UIq8-BVO7jCE4.mjs.map +0 -1
  175. package/dist/infer-psl-contract-pxmVP3E9-Bvk8NzS0.mjs.map +0 -1
  176. package/dist/native-type-normalizer-DWc6cr5r.mjs +0 -94
  177. package/dist/native-type-normalizer-DWc6cr5r.mjs.map +0 -1
  178. package/dist/native-type-normalizer-DhbUgdrI.d.mts.map +0 -1
  179. package/dist/op-factory-call-7Dtfo3GK.d.mts +0 -1
  180. package/dist/op-factory-call-BBkvFvKK-7MkUHWJq.mjs.map +0 -1
  181. package/dist/op-factory-call-t4k8mlRJ-BgtGXlIC.d.mts.map +0 -1
  182. package/dist/planner-ddl-builders-BQ_1YXut.d.mts.map +0 -1
  183. package/dist/planner-ddl-builders-GTcVPpwb-ClvrXb26.mjs.map +0 -1
  184. package/dist/planner-produced-postgres-migration-B0pwyA94.d.mts +0 -1
  185. package/dist/planner-produced-postgres-migration-Xd83anY_-vp2DJ5fk.d.mts.map +0 -1
  186. package/dist/planner-sql-checks-Bd8nN9P8-Cd98iEee.mjs.map +0 -1
  187. package/dist/postgres-migration-qwigEUIO-BWxjALsx.mjs.map +0 -1
  188. package/dist/prisma7-binding-B-JcNfUc.mjs.map +0 -1
  189. package/dist/registry-ld2ZUt1j-CH85fY3r.mjs +0 -15
  190. package/dist/registry-ld2ZUt1j-CH85fY3r.mjs.map +0 -1
  191. package/dist/types-CS-qi6YZ.d.mts +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-adapter-BaVlICog-BuVBXKoL.mjs","names":[],"sources":["../../../../3-targets/6-adapters/postgres/dist/control-adapter-BaVlICog.mjs"],"sourcesContent":["import { n as adapterError, t as renderLoweredSql } from \"./sql-renderer-CgUgFbU4.mjs\";\nimport { APP_SPACE_ID } from \"@internal/framework-components/control\";\nimport { RawExpr, isDdlNode } from \"@internal/sql-relational-core/ast\";\nimport { parsePostgresListText, postgresCodecRegistry } from \"@internal/target-postgres/codecs\";\nimport { errorMarkerRowCorrupt, rethrowMarkerReadError, withMarkerReadErrorHandling } from \"@internal/errors/execution\";\nimport { parseContractMarkerRow } from \"@internal/family-sql/verify\";\nimport { materializeCodec } from \"@internal/framework-components/codec\";\nimport { UNBOUND_NAMESPACE_ID } from \"@internal/framework-components/ir\";\nimport { REFERENTIAL_ACTION_SQL } from \"@internal/sql-contract/referential-action-sql\";\nimport { namingOfLiveName } from \"@internal/sql-schema-ir/naming\";\nimport { RelationalSchemaNodeKind } from \"@internal/sql-schema-ir/types\";\nimport { buildControlTableBootstrapQueries, buildSignMarkerBootstrapQueries, int4, int8, jsonb, pgTable, text, textArray, timestamptz } from \"@internal/target-postgres/contract-free\";\nimport { parsePostgresDefault } from \"@internal/target-postgres/default-normalizer\";\nimport { postgresError } from \"@internal/target-postgres/errors\";\nimport { introspectedNativeType, normalizeSchemaNativeType } from \"@internal/target-postgres/native-type-normalizer\";\nimport { isPostgresDateTimeDataType, postgresDateTimeDdlText, renderDefaultLiteral } from \"@internal/target-postgres/planner-ddl-builders\";\nimport { escapeLiteral, quoteIdentifier } from \"@internal/target-postgres/sql-utils\";\nimport { PostgresDatabaseSchemaNode, PostgresNamespaceSchemaNode, PostgresNativeEnumSchemaNode, PostgresPolicySchemaNode, PostgresRoleSchemaNode, PostgresSchemaNodeKind, PostgresTableSchemaNode } from \"@internal/target-postgres/types\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { createAstCodecRegistry, deriveParamMetadata, encodeParamsWithMetadata } from \"@internal/sql-runtime\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { PG_TIMESTAMPTZ_STRING_CODEC_ID } from \"@internal/target-postgres/codec-ids\";\n//#region ../../../1-framework/3-tooling/migration/dist/exports/ledger-origin.mjs\nfunction ledgerOriginFromStored(originCoreHash) {\n\tif (originCoreHash === null || originCoreHash === \"\" || originCoreHash === \"empty\") return null;\n\treturn originCoreHash;\n}\n//#endregion\n//#region src/core/control-codecs.ts\nconst CONTROL_CODECS = createAstCodecRegistry(postgresCodecRegistry);\nasync function encodeControlQueryParams(lowered, ast, codecs = CONTROL_CODECS) {\n\treturn encodeParamsWithMetadata(lowered.params.map((slot) => {\n\t\tif (slot.kind === \"literal\") return slot.value;\n\t\tthrow new InternalError(`control query lowered to a bind slot '${slot.name}', which is unsupported`);\n\t}), deriveParamMetadata(ast), {}, codecs);\n}\n//#endregion\n//#region src/core/marker-ledger.ts\nconst marker = pgTable({\n\tname: \"marker\",\n\tschema: \"prisma_contract\"\n}, {\n\tspace: text(),\n\tcore_hash: text(),\n\tprofile_hash: text(),\n\tcontract_json: jsonb({ nullable: true }),\n\tcanonical_version: int4({ nullable: true }),\n\tupdated_at: timestamptz(),\n\tapp_tag: text({ nullable: true }),\n\tmeta: jsonb({ nullable: true }),\n\tinvariants: textArray()\n});\n/**\n* Writeable subset of the `prisma_contract.ledger` table. Omits the\n* DB-generated `id` (bigserial) and `created_at` (default `now()`) so the\n* insert path doesn't have to pass them.\n*/\nconst ledger = pgTable({\n\tname: \"ledger\",\n\tschema: \"prisma_contract\"\n}, {\n\tspace: text(),\n\tmigration_name: text(),\n\tmigration_hash: text(),\n\torigin_core_hash: text({ nullable: true }),\n\tdestination_core_hash: text(),\n\toperations: jsonb()\n});\n/**\n* Content-addressed contract store: one row per distinct contract, keyed\n* by its storage hash. The ledger's `origin_core_hash` /\n* `destination_core_hash` resolve here by hash equality, so both\n* endpoints of every edge are direct lookups and a contract revisited by\n* a rollback cycle is stored exactly once (upsert DO NOTHING).\n*/\nconst ledgerContract = pgTable({\n\tname: \"contract\",\n\tschema: \"prisma_contract\"\n}, {\n\tcore_hash: text(),\n\tcontract_json: jsonb()\n});\n/**\n* Read-side handle covering every column of `prisma_contract.ledger`,\n* including the DB-generated `id` (for ORDER BY) and `created_at`.\n*/\nconst ledgerReadShape = pgTable({\n\tname: \"ledger\",\n\tschema: \"prisma_contract\"\n}, {\n\tid: int8(),\n\tspace: text(),\n\tmigration_name: text(),\n\tmigration_hash: text(),\n\torigin_core_hash: text({ nullable: true }),\n\tdestination_core_hash: text(),\n\toperations: jsonb(),\n\tcreated_at: timestamptz()\n});\nconst infoSchemaTables = pgTable({\n\tname: \"tables\",\n\tschema: \"information_schema\"\n}, {\n\ttable_schema: text(),\n\ttable_name: text()\n});\nconst NOW = new RawExpr({\n\tparts: [\"now()\"],\n\treturns: {\n\t\tcodecId: PG_TIMESTAMPTZ_STRING_CODEC_ID,\n\t\tnullable: false\n\t}\n});\nfunction mergeInvariants(current, incoming) {\n\treturn [.../* @__PURE__ */ new Set([...current, ...incoming])].sort();\n}\nasync function execute(lower, driver, query) {\n\tconst lowered = lower(query);\n\tconst encoded = await encodeControlQueryParams(lowered, query);\n\treturn (await driver.query(lowered.sql, encoded)).rows;\n}\n//#endregion\n//#region src/core/control-adapter.ts\nconst POSTGRES_MARKER_TABLE = \"prisma_contract.marker\";\nconst POSTGRES_LEDGER_TABLE = \"prisma_contract.ledger\";\nfunction markerRowDecodeWhy(detail) {\n\treturn `Invalid contract marker row: ${detail}`;\n}\nfunction decodePostgresMarkerRow(row, space) {\n\tif (typeof row !== \"object\" || row === null) {\n\t\tconst cause = /* @__PURE__ */ new TypeError(`expected object marker row, got ${typeof row}`);\n\t\tthrow errorMarkerRowCorrupt({\n\t\t\twhy: markerRowDecodeWhy(cause.message),\n\t\t\tspace,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE,\n\t\t\tcause\n\t\t});\n\t}\n\tconst record = blindCast(row);\n\ttry {\n\t\treturn {\n\t\t\t...record,\n\t\t\tinvariants: parsePostgresListText(record.invariants)\n\t\t};\n\t} catch (error) {\n\t\tthrow errorMarkerRowCorrupt({\n\t\t\twhy: markerRowDecodeWhy(error instanceof Error ? error.message : String(error)),\n\t\t\tspace,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE,\n\t\t\tcause: error\n\t\t});\n\t}\n}\n/**\n* Postgres control plane adapter for control-plane operations like introspection.\n* Provides target-specific implementations for control-plane domain actions.\n*/\nvar PostgresControlAdapter = class {\n\tcodecRegistry;\n\tfamilyId = \"sql\";\n\ttargetId = \"postgres\";\n\tconstructor(codecRegistry) {\n\t\tthis.codecRegistry = codecRegistry;\n\t}\n\t/**\n\t* Target-specific normalizer for raw Postgres default expressions.\n\t* Used by schema verification to normalize raw defaults before comparison.\n\t*/\n\tnormalizeDefault = parsePostgresDefault;\n\t/**\n\t* Target-specific normalizer for Postgres schema native type names.\n\t* Used by schema verification to normalize introspected type names\n\t* before comparison with contract native types.\n\t*/\n\tnormalizeNativeType = normalizeSchemaNativeType;\n\tbootstrapControlTableQueries() {\n\t\treturn buildControlTableBootstrapQueries();\n\t}\n\tbootstrapSignMarkerQueries() {\n\t\treturn buildSignMarkerBootstrapQueries();\n\t}\n\t/**\n\t* Lower a SQL query AST into a Postgres-flavored `{ sql, params }` payload.\n\t*\n\t* Delegates to the shared `renderLoweredSql` renderer so the control adapter\n\t* emits byte-identical SQL to `PostgresAdapterImpl.lower()` for the same AST\n\t* and contract. Used at migration plan/emit time (e.g. by `dataTransform`)\n\t* without instantiating the runtime adapter.\n\t*/\n\tlower(ast, context) {\n\t\tif (isDdlNode(ast)) throw adapterError(\"RUNTIME.DDL_UNSUPPORTED\", \"lower() cannot lower DDL: DDL default literals require inline codec encoding, which is async. Use lowerToExecuteRequest().\", { meta: { surface: \"control-adapter\" } });\n\t\treturn renderLoweredSql(ast, blindCast(context.contract), this.codecRegistry);\n\t}\n\t/**\n\t* Lower an AST all the way to a driver-ready statement. For DDL nodes,\n\t* literal column defaults are formatted as inline SQL with proper quoting and\n\t* `::nativeType` cast suffixes. For query ASTs, params are kept as `$N`\n\t* placeholders; wire values go in `params`. Does NOT call `this.lower()` —\n\t* independent implementation.\n\t*/\n\tasync lowerToExecuteRequest(ast, context) {\n\t\tif (isDdlNode(ast)) return pgRenderDdlExecuteRequest(blindCast(ast), this.codecRegistry);\n\t\tconst lowered = renderLoweredSql(ast, blindCast(context?.contract), this.codecRegistry);\n\t\tconst params = await encodeControlQueryParams(lowered, ast, blindCast(this.codecRegistry));\n\t\treturn {\n\t\t\tsql: lowered.sql,\n\t\t\tparams\n\t\t};\n\t}\n\t/**\n\t* Reads the contract marker from `prisma_contract.marker`. Probes\n\t* `information_schema.tables` first so a fresh database (where the\n\t* `prisma_contract` schema doesn't yet exist) returns `null` instead of a\n\t* \"relation does not exist\" error — some Postgres wire-protocol clients\n\t* (e.g. PGlite's TCP proxy) don't fully recover from extended-protocol\n\t* parse errors, so we probe before reading.\n\t*/\n\tasync readMarker(driver, space) {\n\t\tconst result = await this.readMarkerDiscriminated(driver, space);\n\t\treturn result.kind === \"present\" ? result.record : null;\n\t}\n\tasync readMarkerDiscriminated(driver, space) {\n\t\treturn withMarkerReadErrorHandling(() => this.readMarkerResult(driver, space), {\n\t\t\tspace,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t});\n\t}\n\t/**\n\t* Reads every row from `prisma_contract.marker` and returns them keyed\n\t* by `space`. Mirrors the existence probe in {@link readMarker}: a\n\t* fresh database without the `prisma_contract` schema returns an empty\n\t* map rather than raising \"relation does not exist\".\n\t*/\n\tasync readAllMarkers(driver) {\n\t\treturn withMarkerReadErrorHandling(() => this.readAllMarkersResult(driver), {\n\t\t\tspace: APP_SPACE_ID,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t});\n\t}\n\tasync readAllMarkersResult(driver) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif ((await execute(lower, driver, infoSchemaTables.select(infoSchemaTables.table_schema).where(infoSchemaTables.table_schema.eq(\"prisma_contract\").and(infoSchemaTables.table_name.eq(\"marker\"))).build())).length === 0) return /* @__PURE__ */ new Map();\n\t\tawait this.assertMarkerTableHasSpaceColumn(driver, APP_SPACE_ID);\n\t\tconst rows = blindCast(await execute(lower, driver, marker.select(marker.space, marker.core_hash, marker.profile_hash, marker.contract_json, marker.canonical_version, marker.updated_at, marker.app_tag, marker.meta, marker.invariants).build()));\n\t\tconst out = /* @__PURE__ */ new Map();\n\t\tfor (const row of rows) try {\n\t\t\tconst decodedRow = decodePostgresMarkerRow(row, row.space);\n\t\t\tout.set(row.space, parseContractMarkerRow(decodedRow));\n\t\t} catch (error) {\n\t\t\trethrowMarkerReadError(error, {\n\t\t\t\tspace: row.space,\n\t\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t\t});\n\t\t}\n\t\treturn out;\n\t}\n\t/**\n\t* Reads per-migration ledger rows from `prisma_contract.ledger` in apply\n\t* order. Probes `information_schema.tables` first so a fresh database\n\t* without the ledger table returns `[]` instead of raising \"relation does\n\t* not exist\".\n\t*/\n\tasync readLedger(driver, space) {\n\t\treturn withMarkerReadErrorHandling(() => this.readLedgerResult(driver, space), {\n\t\t\tspace: space ?? \"*\",\n\t\t\tmarkerLocation: POSTGRES_LEDGER_TABLE\n\t\t});\n\t}\n\tasync readLedgerResult(driver, space) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif ((await execute(lower, driver, infoSchemaTables.select(infoSchemaTables.table_schema).where(infoSchemaTables.table_schema.eq(\"prisma_contract\").and(infoSchemaTables.table_name.eq(\"ledger\"))).build())).length === 0) return [];\n\t\tconst base = ledgerReadShape.select(ledgerReadShape.space, ledgerReadShape.migration_name, ledgerReadShape.migration_hash, ledgerReadShape.origin_core_hash, ledgerReadShape.destination_core_hash, ledgerReadShape.operations, ledgerReadShape.created_at);\n\t\treturn blindCast(await execute(lower, driver, (space !== void 0 ? base.where(ledgerReadShape.space.eq(space)) : base).orderBy(ledgerReadShape.id).build())).map((row) => {\n\t\t\tconst appliedAt = row.created_at instanceof Date ? row.created_at : new Date(row.created_at);\n\t\t\treturn {\n\t\t\t\tspace: row.space,\n\t\t\t\tmigrationName: row.migration_name,\n\t\t\t\tmigrationHash: row.migration_hash,\n\t\t\t\tfrom: ledgerOriginFromStored(row.origin_core_hash),\n\t\t\t\tto: row.destination_core_hash,\n\t\t\t\tappliedAt,\n\t\t\t\toperationCount: Array.isArray(row.operations) ? row.operations.length : 0\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Stamps the initial marker row for `space` via the shared contract-free DML\n\t* builder, lowered through {@link lower} and executed on the driver. See the\n\t* `SqlControlAdapter.initMarker` contract.\n\t*/\n\tasync insertMarker(driver, space, destination) {\n\t\tawait execute((query) => this.lower(query, { contract: void 0 }), driver, marker.insert({\n\t\t\tspace,\n\t\t\tcore_hash: destination.storageHash,\n\t\t\tprofile_hash: destination.profileHash,\n\t\t\tcontract_json: null,\n\t\t\tcanonical_version: null,\n\t\t\tupdated_at: NOW,\n\t\t\tapp_tag: null,\n\t\t\tmeta: {},\n\t\t\tinvariants: destination.invariants ?? []\n\t\t}).build());\n\t}\n\tasync initMarker(driver, space, destination) {\n\t\tawait execute((query) => this.lower(query, { contract: void 0 }), driver, marker.upsert({\n\t\t\tspace,\n\t\t\tcore_hash: destination.storageHash,\n\t\t\tprofile_hash: destination.profileHash,\n\t\t\tcontract_json: null,\n\t\t\tcanonical_version: null,\n\t\t\tupdated_at: NOW,\n\t\t\tapp_tag: null,\n\t\t\tmeta: {},\n\t\t\tinvariants: destination.invariants ?? []\n\t\t}).onConflict(marker.space).doUpdate((excluded) => ({\n\t\t\tcore_hash: excluded.core_hash,\n\t\t\tprofile_hash: excluded.profile_hash,\n\t\t\tcontract_json: excluded.contract_json,\n\t\t\tcanonical_version: excluded.canonical_version,\n\t\t\tupdated_at: NOW,\n\t\t\tapp_tag: excluded.app_tag,\n\t\t\tmeta: excluded.meta,\n\t\t\tinvariants: excluded.invariants\n\t\t})).build());\n\t}\n\t/**\n\t* Compare-and-swap advance of the marker row for `space`. See the\n\t* `SqlControlAdapter.updateMarker` contract.\n\t*/\n\tasync updateMarker(driver, space, expectedFrom, destination) {\n\t\tconst currentInvariants = destination.invariants === void 0 ? [] : (await this.readMarker(driver, space))?.invariants ?? [];\n\t\tconst mergedInvariants = destination.invariants === void 0 ? void 0 : mergeInvariants(currentInvariants, destination.invariants);\n\t\treturn (await execute((q) => this.lower(q, { contract: void 0 }), driver, marker.update().set({\n\t\t\tcore_hash: destination.storageHash,\n\t\t\tprofile_hash: destination.profileHash,\n\t\t\tupdated_at: NOW,\n\t\t\t...mergedInvariants !== void 0 ? { invariants: mergedInvariants } : {}\n\t\t}).where(marker.space.eq(space).and(marker.core_hash.eq(expectedFrom))).returning(marker.space).build())).length > 0;\n\t}\n\t/**\n\t* Appends a ledger entry for `space`. When the edge carries a\n\t* destination contract snapshot, the content-addressed\n\t* `prisma_contract.contract` store is populated first (keyed by the\n\t* destination hash, DO NOTHING on revisit) so a reader never sees a\n\t* ledger row whose stored destination contract is missing. See the\n\t* `SqlControlAdapter.writeLedgerEntry` contract.\n\t*/\n\tasync writeLedgerEntry(driver, space, entry) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif (entry.destinationContractJson !== void 0) await execute(lower, driver, ledgerContract.upsert({\n\t\t\tcore_hash: entry.to,\n\t\t\tcontract_json: entry.destinationContractJson\n\t\t}).onConflict(ledgerContract.core_hash).doNothing().build());\n\t\tawait execute(lower, driver, ledger.insert({\n\t\t\tspace,\n\t\t\tmigration_name: entry.migrationName,\n\t\t\tmigration_hash: entry.migrationHash,\n\t\t\torigin_core_hash: entry.from,\n\t\t\tdestination_core_hash: entry.to,\n\t\t\toperations: entry.operations\n\t\t}).build());\n\t}\n\tasync assertMarkerTableHasSpaceColumn(driver, space) {\n\t\tconst rows = (await driver.query(`select column_name\n from information_schema.columns\n where table_schema = 'prisma_contract'\n and table_name = 'marker'`)).rows;\n\t\tif (rows.length === 0) return;\n\t\tif (!rows.every((row) => typeof row.column_name === \"string\")) return;\n\t\tif (rows.some((row) => row.column_name === \"space\")) return;\n\t\trethrowMarkerReadError(/* @__PURE__ */ new Error(\"column \\\"space\\\" does not exist\"), {\n\t\t\tspace,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t});\n\t}\n\tasync readMarkerResult(driver, space) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif ((await execute(lower, driver, infoSchemaTables.select(infoSchemaTables.table_schema).where(infoSchemaTables.table_schema.eq(\"prisma_contract\").and(infoSchemaTables.table_name.eq(\"marker\"))).build())).length === 0) return { kind: \"no-table\" };\n\t\tawait this.assertMarkerTableHasSpaceColumn(driver, space);\n\t\tconst row = (await execute(lower, driver, marker.select(marker.core_hash, marker.profile_hash, marker.contract_json, marker.canonical_version, marker.updated_at, marker.app_tag, marker.meta, marker.invariants).where(marker.space.eq(space)).build()))[0];\n\t\tif (!row) return { kind: \"absent\" };\n\t\ttry {\n\t\t\treturn {\n\t\t\t\tkind: \"present\",\n\t\t\t\trecord: parseContractMarkerRow(decodePostgresMarkerRow(row, space))\n\t\t\t};\n\t\t} catch (error) {\n\t\t\trethrowMarkerReadError(error, {\n\t\t\t\tspace,\n\t\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Introspects a Postgres database schema and returns a raw SqlSchemaIR.\n\t*\n\t* This is a pure schema discovery operation that queries the Postgres catalog\n\t* and returns the schema structure without type mapping or contract enrichment.\n\t* Type mapping and enrichment are handled separately by enrichment helpers.\n\t*\n\t* When `contract` is provided and its storage declares more than one\n\t* namespace (or any explicit bound namespace), the adapter walks every\n\t* declared namespace and merges the per-schema introspection results\n\t* into a single `SqlSchemaIR`. `UNBOUND_NAMESPACE_ID` resolves to the\n\t* connection's `current_schema()` so late-bound tables follow the\n\t* runtime `search_path`. When no contract is passed, the adapter falls\n\t* back to introspecting the single `schema` argument (defaulting to\n\t* `'public'`).\n\t*\n\t* Uses batched queries to minimize database round trips (6 queries per\n\t* schema walked).\n\t*\n\t* @param driver - SqlControlDriverInstance<'postgres'> instance for executing queries\n\t* @param contract - Optional contract for contract-guided introspection (multi-namespace walk, filtering)\n\t* @param schema - Schema name to introspect when no contract is provided (defaults to 'public')\n\t* @returns Promise resolving to SqlSchemaIR representing the live database schema\n\t*/\n\tasync introspect(driver, contract, schema = \"public\") {\n\t\treturn readWithDefaultOutputSettings(driver, async () => {\n\t\t\tconst declaredNamespaces = extractContractNamespaceIds(contract);\n\t\t\tconst resolvedSchemas = declaredNamespaces.length > 0 ? await this.resolveNamespaceSchemas(driver, declaredNamespaces) : [schema];\n\t\t\tconst namespaces = {};\n\t\t\tlet pgVersion = \"unknown\";\n\t\t\tfor (const resolved of resolvedSchemas) {\n\t\t\t\tconst { namespace, pgVersion: version } = await this.introspectSchema(driver, resolved);\n\t\t\t\tnamespaces[resolved] = namespace;\n\t\t\t\tpgVersion = version;\n\t\t\t}\n\t\t\treturn new PostgresDatabaseSchemaNode({\n\t\t\t\tnamespaces,\n\t\t\t\troles: await this.introspectRoles(driver),\n\t\t\t\texistingSchemas: await this.listExistingSchemas(driver),\n\t\t\t\tpgVersion\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Reads cluster-scoped database roles. Roles are not schema-qualified, so\n\t* this is queried once for the whole database rather than per namespace.\n\t*/\n\tasync introspectRoles(driver) {\n\t\treturn (await driver.query(`SELECT rolname\n FROM pg_catalog.pg_roles\n WHERE rolname NOT LIKE 'pg_%'\n AND rolname != 'postgres'\n ORDER BY rolname`)).rows.map((row) => new PostgresRoleSchemaNode({\n\t\t\tname: row.rolname,\n\t\t\tnamespaceId: UNBOUND_NAMESPACE_ID\n\t\t}));\n\t}\n\t/**\n\t* Lists every non-system schema present in the connected database.\n\t* The introspection consumer (`verifyPostgresNamespacePresence`)\n\t* treats the result as the authoritative ground truth — declared\n\t* namespaces whose `ddlSchemaName` is missing from this list become\n\t* `missing_schema` issues, and the planner emits the matching\n\t* `CREATE SCHEMA` before table DDL.\n\t*/\n\tasync listExistingSchemas(driver) {\n\t\treturn (await driver.query(`SELECT nspname\n FROM pg_catalog.pg_namespace\n WHERE nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')\n AND nspname NOT LIKE 'pg_temp_%'\n AND nspname NOT LIKE 'pg_toast_temp_%'\n ORDER BY nspname`)).rows.map((row) => row.nspname);\n\t}\n\t/**\n\t* Resolves the declared namespace ids to their live DDL schema names,\n\t* mapping `UNBOUND_NAMESPACE_ID` to the connection's `current_schema()`\n\t* and de-duplicating. The caller introspects one namespace node per\n\t* resolved schema — there is no flat cross-schema merge, so two schemas\n\t* holding a same-named table no longer collide.\n\t*/\n\tasync resolveNamespaceSchemas(driver, namespaceIds) {\n\t\tconst resolvedSchemas = [];\n\t\tfor (const id of namespaceIds) if (id === UNBOUND_NAMESPACE_ID) {\n\t\t\tconst { rows } = await driver.query(\"SELECT current_schema() AS current_schema\");\n\t\t\tresolvedSchemas.push(rows[0]?.current_schema ?? \"public\");\n\t\t} else resolvedSchemas.push(id);\n\t\treturn Array.from(new Set(resolvedSchemas));\n\t}\n\t/**\n\t* Introspects a single Postgres schema and returns the namespace node for\n\t* that schema (its tables, their policies, and its native enum type names),\n\t* alongside the cluster-scoped Postgres version. Used by `introspect` as\n\t* the per-namespace walk.\n\t*/\n\tasync introspectSchema(driver, schema) {\n\t\tconst tablesResult = await driver.query(`SELECT table_name\n FROM information_schema.tables\n WHERE table_schema = $1\n AND table_type = 'BASE TABLE'\n ORDER BY table_name`, [schema]);\n\t\tconst columnsResult = await driver.query(`SELECT\n c.table_name,\n column_name,\n data_type,\n udt_name,\n is_nullable,\n character_maximum_length,\n numeric_precision,\n numeric_scale,\n column_default,\n format_type(a.atttypid, a.atttypmod) AS formatted_type,\n a.attidentity\n FROM information_schema.columns c\n JOIN pg_catalog.pg_class cl\n ON cl.relname = c.table_name\n JOIN pg_catalog.pg_namespace ns\n ON ns.nspname = c.table_schema\n AND ns.oid = cl.relnamespace\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = cl.oid\n AND a.attname = c.column_name\n AND a.attnum > 0\n AND NOT a.attisdropped\n WHERE c.table_schema = $1\n ORDER BY c.table_name, c.ordinal_position`, [schema]);\n\t\tconst pkResult = await driver.query(`SELECT\n cl.relname AS table_name,\n con.conname AS constraint_name,\n a.attname AS column_name,\n k.ord AS ordinal_position\n FROM pg_catalog.pg_constraint con\n JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = con.conrelid\n AND a.attnum = k.attnum\n WHERE ns.nspname = $1\n AND con.contype = 'p'\n ORDER BY cl.relname, k.ord`, [schema]);\n\t\tconst fkResult = await driver.query(`SELECT\n cl.relname AS table_name,\n con.conname AS constraint_name,\n a.attname AS column_name,\n k.ord AS ordinal_position,\n ref_ns.nspname AS referenced_table_schema,\n ref_cl.relname AS referenced_table_name,\n ref_att.attname AS referenced_column_name,\n CASE con.confdeltype\n WHEN 'a' THEN 'NO ACTION'\n WHEN 'r' THEN 'RESTRICT'\n WHEN 'c' THEN 'CASCADE'\n WHEN 'n' THEN 'SET NULL'\n WHEN 'd' THEN 'SET DEFAULT'\n END AS delete_rule,\n CASE con.confupdtype\n WHEN 'a' THEN 'NO ACTION'\n WHEN 'r' THEN 'RESTRICT'\n WHEN 'c' THEN 'CASCADE'\n WHEN 'n' THEN 'SET NULL'\n WHEN 'd' THEN 'SET DEFAULT'\n END AS update_rule\n FROM pg_catalog.pg_constraint con\n JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = con.conrelid\n AND a.attnum = k.attnum\n JOIN pg_catalog.pg_class ref_cl\n ON ref_cl.oid = con.confrelid\n JOIN pg_catalog.pg_namespace ref_ns\n ON ref_ns.oid = ref_cl.relnamespace\n JOIN pg_catalog.pg_attribute ref_att\n ON ref_att.attrelid = con.confrelid\n AND ref_att.attnum = con.confkey[k.ord]\n WHERE ns.nspname = $1\n AND con.contype = 'f'\n ORDER BY cl.relname, con.conname, k.ord`, [schema]);\n\t\tconst uniqueResult = await driver.query(`SELECT\n cl.relname AS table_name,\n con.conname AS constraint_name,\n a.attname AS column_name,\n k.ord AS ordinal_position\n FROM pg_catalog.pg_constraint con\n JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = con.conrelid\n AND a.attnum = k.attnum\n WHERE ns.nspname = $1\n AND con.contype = 'u'\n ORDER BY cl.relname, con.conname, k.ord`, [schema]);\n\t\tconst indexResult = await driver.query(`SELECT\n i.tablename,\n i.indexname,\n ix.indisunique,\n pg_get_expr(ix.indpred, ix.indrelid) AS where_predicate,\n a.attname,\n CASE WHEN 0 = ANY(ix.indkey::int[]) THEN pg_get_indexdef(ix.indexrelid, k.ord::int, true) END AS element_def,\n k.ord AS index_position,\n am.amname,\n ic.reloptions\n FROM pg_indexes i\n JOIN pg_class ic ON ic.relname = i.indexname\n JOIN pg_namespace ins ON ins.oid = ic.relnamespace AND ins.nspname = $1\n JOIN pg_index ix ON ix.indexrelid = ic.oid\n JOIN pg_am am ON am.oid = ic.relam\n JOIN pg_class t ON t.oid = ix.indrelid\n JOIN pg_namespace tn ON tn.oid = t.relnamespace AND tn.nspname = $1\n JOIN LATERAL unnest(ix.indkey::int[]) WITH ORDINALITY AS k(attnum, ord) ON true\n LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum AND a.attnum > 0\n WHERE i.schemaname = $1\n AND NOT EXISTS (\n SELECT 1\n FROM pg_catalog.pg_constraint con\n WHERE con.conindid = ic.oid\n AND con.contype IN ('p', 'u', 'x')\n )\n ORDER BY i.tablename, i.indexname, k.ord`, [schema]);\n\t\tconst checkResult = await driver.query(`SELECT\n cl.relname AS table_name,\n c.conname AS constraint_name,\n pg_get_expr(c.conbin, c.conrelid) AS check_expression\n FROM pg_catalog.pg_constraint c\n JOIN pg_catalog.pg_class cl ON cl.oid = c.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n WHERE ns.nspname = $1\n AND c.contype = 'c'\n AND c.conislocal\n AND c.conrelid <> 0\n ORDER BY cl.relname, c.conname`, [schema]);\n\t\tconst columnsByTable = groupBy(columnsResult.rows, \"table_name\");\n\t\tconst pksByTable = groupBy(pkResult.rows, \"table_name\");\n\t\tconst fksByTable = groupBy(fkResult.rows, \"table_name\");\n\t\tconst uniquesByTable = groupBy(uniqueResult.rows, \"table_name\");\n\t\tconst indexesByTable = groupBy(indexResult.rows, \"tablename\");\n\t\tconst checksByTable = groupBy(checkResult.rows, \"table_name\");\n\t\tconst pkConstraintsByTable = /* @__PURE__ */ new Map();\n\t\tfor (const row of pkResult.rows) {\n\t\t\tlet constraints = pkConstraintsByTable.get(row.table_name);\n\t\t\tif (!constraints) {\n\t\t\t\tconstraints = /* @__PURE__ */ new Set();\n\t\t\t\tpkConstraintsByTable.set(row.table_name, constraints);\n\t\t\t}\n\t\t\tconstraints.add(row.constraint_name);\n\t\t}\n\t\tconst tableInputs = {};\n\t\tfor (const tableRow of tablesResult.rows) {\n\t\t\tconst tableName = tableRow.table_name;\n\t\t\tconst columns = {};\n\t\t\tfor (const colRow of columnsByTable.get(tableName) ?? []) {\n\t\t\t\tconst { nativeType, many, resolvedNativeType } = introspectedNativeType({\n\t\t\t\t\tformattedType: colRow.formatted_type,\n\t\t\t\t\tdataType: colRow.data_type,\n\t\t\t\t\tudtName: colRow.udt_name,\n\t\t\t\t\tcharacterMaximumLength: colRow.character_maximum_length,\n\t\t\t\t\tnumericPrecision: colRow.numeric_precision,\n\t\t\t\t\tnumericScale: colRow.numeric_scale\n\t\t\t\t});\n\t\t\t\tconst rawDefault = colRow.column_default ?? void 0;\n\t\t\t\tconst resolvedDefault = colRow.attidentity === \"a\" || colRow.attidentity === \"d\" ? {\n\t\t\t\t\tkind: \"function\",\n\t\t\t\t\texpression: \"autoincrement()\"\n\t\t\t\t} : rawDefault !== void 0 ? parsePostgresDefault(rawDefault, resolvedNativeType) : void 0;\n\t\t\t\tcolumns[colRow.column_name] = {\n\t\t\t\t\tname: colRow.column_name,\n\t\t\t\t\tnativeType,\n\t\t\t\t\tnullable: colRow.is_nullable === \"YES\",\n\t\t\t\t\t...ifDefined(\"default\", rawDefault),\n\t\t\t\t\t...ifDefined(\"many\", many),\n\t\t\t\t\tresolvedNativeType,\n\t\t\t\t\t...ifDefined(\"resolvedDefault\", resolvedDefault)\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst pkRows = [...pksByTable.get(tableName) ?? []];\n\t\t\tconst primaryKeyColumns = pkRows.sort((a, b) => a.ordinal_position - b.ordinal_position).map((row) => row.column_name);\n\t\t\tconst primaryKey = primaryKeyColumns.length > 0 ? {\n\t\t\t\tcolumns: primaryKeyColumns,\n\t\t\t\t...pkRows[0]?.constraint_name ? { name: pkRows[0].constraint_name } : {},\n\t\t\t\tdependsOn: postgresColumnDependsOn(schema, tableName, primaryKeyColumns)\n\t\t\t} : void 0;\n\t\t\tconst foreignKeysMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const fkRow of fksByTable.get(tableName) ?? []) {\n\t\t\t\tconst existing = foreignKeysMap.get(fkRow.constraint_name);\n\t\t\t\tif (existing) {\n\t\t\t\t\texisting.columns.push(fkRow.column_name);\n\t\t\t\t\texisting.referencedColumns.push(fkRow.referenced_column_name);\n\t\t\t\t} else foreignKeysMap.set(fkRow.constraint_name, {\n\t\t\t\t\tcolumns: [fkRow.column_name],\n\t\t\t\t\treferencedTable: fkRow.referenced_table_name,\n\t\t\t\t\treferencedSchema: fkRow.referenced_table_schema,\n\t\t\t\t\treferencedColumns: [fkRow.referenced_column_name],\n\t\t\t\t\tname: fkRow.constraint_name,\n\t\t\t\t\tdeleteRule: fkRow.delete_rule,\n\t\t\t\t\tupdateRule: fkRow.update_rule\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst foreignKeys = Array.from(foreignKeysMap.values()).map((fk) => ({\n\t\t\t\tcolumns: freezeStringArray(fk.columns),\n\t\t\t\treferencedTable: fk.referencedTable,\n\t\t\t\treferencedSchema: fk.referencedSchema,\n\t\t\t\treferencedColumns: freezeStringArray(fk.referencedColumns),\n\t\t\t\tname: fk.name,\n\t\t\t\t...ifDefined(\"onDelete\", mapReferentialAction(fk.deleteRule)),\n\t\t\t\t...ifDefined(\"onUpdate\", mapReferentialAction(fk.updateRule)),\n\t\t\t\tdependsOn: [postgresTableDependsOn(fk.referencedSchema, fk.referencedTable), ...postgresColumnDependsOn(schema, tableName, fk.columns)]\n\t\t\t}));\n\t\t\tconst pkConstraints = pkConstraintsByTable.get(tableName) ?? /* @__PURE__ */ new Set();\n\t\t\tconst uniquesMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const uniqueRow of uniquesByTable.get(tableName) ?? []) {\n\t\t\t\tif (pkConstraints.has(uniqueRow.constraint_name)) continue;\n\t\t\t\tconst existing = uniquesMap.get(uniqueRow.constraint_name);\n\t\t\t\tif (existing) existing.columns.push(uniqueRow.column_name);\n\t\t\t\telse uniquesMap.set(uniqueRow.constraint_name, {\n\t\t\t\t\tcolumns: [uniqueRow.column_name],\n\t\t\t\t\tname: uniqueRow.constraint_name\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst uniques = Array.from(uniquesMap.values()).map((uq) => ({\n\t\t\t\tcolumns: freezeStringArray(uq.columns),\n\t\t\t\tname: uq.name,\n\t\t\t\tdependsOn: postgresColumnDependsOn(schema, tableName, uq.columns)\n\t\t\t}));\n\t\t\tconst indexesMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const idxRow of indexesByTable.get(tableName) ?? []) {\n\t\t\t\tconst existing = indexesMap.get(idxRow.indexname);\n\t\t\t\tif (existing) existing.elements.push({\n\t\t\t\t\tattname: idxRow.attname,\n\t\t\t\t\telementDef: idxRow.element_def\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst indexType = idxRow.amname ?? void 0;\n\t\t\t\t\tconst indexOptions = parsePgReloptions(idxRow.reloptions, idxRow.indexname);\n\t\t\t\t\tindexesMap.set(idxRow.indexname, {\n\t\t\t\t\t\tname: idxRow.indexname,\n\t\t\t\t\t\telements: [{\n\t\t\t\t\t\t\tattname: idxRow.attname,\n\t\t\t\t\t\t\telementDef: idxRow.element_def\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tunique: idxRow.indisunique,\n\t\t\t\t\t\twhere: idxRow.where_predicate,\n\t\t\t\t\t\ttype: indexType,\n\t\t\t\t\t\toptions: indexOptions\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst indexes = Array.from(indexesMap.values()).map((idx) => {\n\t\t\t\tconst isExpression = idx.elements.some((el) => el.attname === null);\n\t\t\t\tconst columnNames = idx.elements.flatMap((el) => el.attname !== null ? [el.attname] : []);\n\t\t\t\tconst base = {\n\t\t\t\t\tnaming: namingOfLiveName(idx.name),\n\t\t\t\t\twhere: idx.where ?? void 0,\n\t\t\t\t\tunique: idx.unique,\n\t\t\t\t\tpartial: idx.where !== null,\n\t\t\t\t\ttype: idx.type,\n\t\t\t\t\toptions: idx.options,\n\t\t\t\t\tannotations: void 0,\n\t\t\t\t\tdependsOn: postgresColumnDependsOn(schema, tableName, isExpression ? Object.keys(columns) : columnNames)\n\t\t\t\t};\n\t\t\t\treturn isExpression ? {\n\t\t\t\t\t...base,\n\t\t\t\t\texpression: idx.elements.map((el) => el.elementDef ?? \"\").join(\", \")\n\t\t\t\t} : {\n\t\t\t\t\t...base,\n\t\t\t\t\tcolumns: Object.freeze([...columnNames])\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst checksForTable = (checksByTable.get(tableName) ?? []).map((checkRow) => ({\n\t\t\t\tnaming: namingOfLiveName(checkRow.constraint_name),\n\t\t\t\texpression: checkRow.check_expression,\n\t\t\t\tdependsOn: postgresColumnDependsOn(schema, tableName, Object.keys(columns))\n\t\t\t}));\n\t\t\ttableInputs[tableName] = {\n\t\t\t\tname: tableName,\n\t\t\t\tcolumns,\n\t\t\t\t...ifDefined(\"primaryKey\", primaryKey),\n\t\t\t\tforeignKeys,\n\t\t\t\tuniques,\n\t\t\t\tindexes,\n\t\t\t\t...ifDefined(\"checks\", checksForTable.length > 0 ? checksForTable : void 0)\n\t\t\t};\n\t\t}\n\t\tconst enums = (await driver.query(`SELECT t.typname, array_agg(e.enumlabel ORDER BY e.enumsortorder) AS enumvalues\n FROM pg_catalog.pg_type t\n JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n JOIN pg_catalog.pg_enum e ON e.enumtypid = t.oid\n WHERE t.typtype = 'e'\n AND n.nspname = $1\n GROUP BY t.typname\n ORDER BY t.typname`, [schema])).rows.map((r) => new PostgresNativeEnumSchemaNode({\n\t\t\ttypeName: r.typname,\n\t\t\tnamespaceId: schema,\n\t\t\tmembers: parsePgNameArray(r.enumvalues)\n\t\t}));\n\t\tconst policiesResult = await driver.query(`SELECT schemaname, tablename, policyname, cmd, roles, qual, with_check, permissive\n FROM pg_catalog.pg_policies\n WHERE schemaname = $1\n ORDER BY tablename, policyname`, [schema]);\n\t\tconst policiesByTable = /* @__PURE__ */ new Map();\n\t\tfor (const row of policiesResult.rows) {\n\t\t\tconst operation = mapPgCmd(row.cmd);\n\t\t\tconst policyRoles = [...new Set(parsePgNameArray(row.roles).map((r) => r.toLowerCase()))].sort();\n\t\t\tconst permissive = row.permissive.toUpperCase() === \"PERMISSIVE\";\n\t\t\tconst policy = new PostgresPolicySchemaNode({\n\t\t\t\tnaming: namingOfLiveName(row.policyname),\n\t\t\t\ttableName: row.tablename,\n\t\t\t\tnamespaceId: row.schemaname,\n\t\t\t\toperation,\n\t\t\t\troles: policyRoles,\n\t\t\t\tusing: row.qual ?? void 0,\n\t\t\t\twithCheck: row.with_check ?? void 0,\n\t\t\t\tpermissive,\n\t\t\t\tdependsOn: [postgresTableDependsOn(row.schemaname, row.tablename), ...policyRoles.map(postgresRoleDependsOn)]\n\t\t\t});\n\t\t\tconst list = policiesByTable.get(row.tablename) ?? [];\n\t\t\tlist.push(policy);\n\t\t\tpoliciesByTable.set(row.tablename, list);\n\t\t}\n\t\tconst rlsEnabledResult = await driver.query(`SELECT c.relname AS tablename, c.relrowsecurity AS rls_enabled\n FROM pg_catalog.pg_class c\n JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = $1\n AND c.relkind IN ('r', 'p')\n ORDER BY c.relname`, [schema]);\n\t\tconst rlsEnabledByTable = new Map(rlsEnabledResult.rows.map((row) => [row.tablename, row.rls_enabled]));\n\t\tconst tables = {};\n\t\tfor (const [tableName, input] of Object.entries(tableInputs)) tables[tableName] = new PostgresTableSchemaNode({\n\t\t\t...input,\n\t\t\tpolicies: policiesByTable.get(tableName) ?? [],\n\t\t\trlsEnabled: rlsEnabledByTable.get(tableName) ?? false\n\t\t});\n\t\treturn {\n\t\t\tnamespace: new PostgresNamespaceSchemaNode({\n\t\t\t\tschemaName: schema,\n\t\t\t\ttables,\n\t\t\t\tnativeEnums: enums\n\t\t\t}),\n\t\t\tpgVersion: await this.getPostgresVersion(driver)\n\t\t};\n\t}\n\t/**\n\t* Gets the Postgres version from the database.\n\t*/\n\tasync getPostgresVersion(driver) {\n\t\treturn ((await driver.query(\"SELECT version() AS version\", [])).rows[0]?.version ?? \"\").match(/PostgreSQL (\\d+\\.\\d+)/)?.[1] ?? \"unknown\";\n\t}\n};\n/**\n* Normalises a `name[]` column value from Postgres catalog views such as\n* `pg_policies.roles` and aggregate queries over `pg_enum.enumlabel`.\n*\n* Control-plane queries use the Postgres driver's raw-text parser policy for\n* array OIDs, so this helper accepts raw Postgres array literals only. A native\n* JS array at this boundary means the caller bypassed target-owned framing and\n* is rejected rather than normalized as a second representation.\n*\n* The parser honors Postgres array-literal quoting: an element\n* containing a comma, quote, backslash, brace, or significant whitespace is\n* emitted double-quoted with `\\\"` / `\\\\` escapes, and unquoted elements are\n* whitespace-trimmed — so a label like `in progress` or `say \"hi\"` parses to\n* its true value instead of being split or kept escaped.\n*/\nfunction parsePgNameArray(value) {\n\tif (Array.isArray(value)) throw new TypeError(`expected raw text for a Postgres array, got ${typeof value}`);\n\tif (typeof value !== \"string\") return [];\n\treturn parsePostgresListText(value).map((entry) => String(entry));\n}\n/**\n* Maps `pg_policies.cmd` text values to the `RlsPolicyOperation` union.\n* The `pg_policies` view renders the internal command code as an uppercase\n* English keyword; this function lowercases to match the IR type.\n*/\nfunction mapPgCmd(cmd) {\n\tswitch (cmd.toUpperCase()) {\n\t\tcase \"SELECT\": return \"select\";\n\t\tcase \"INSERT\": return \"insert\";\n\t\tcase \"UPDATE\": return \"update\";\n\t\tcase \"DELETE\": return \"delete\";\n\t\tdefault: return \"all\";\n\t}\n}\n/**\n* Extracts the namespace coordinate ids declared on a contract's storage,\n* or returns an empty array when no contract (or no storage / namespaces)\n* is present. Used by `PostgresControlAdapter.introspect` to decide\n* between the multi-namespace walk and the single-schema fallback.\n*/\nfunction isRecord(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\nfunction freezeStringArray(values) {\n\treturn Object.freeze([...values]);\n}\nfunction extractContractNamespaceIds(contract) {\n\tif (!isRecord(contract)) return [];\n\tconst storage = contract[\"storage\"];\n\tif (!isRecord(storage)) return [];\n\tconst namespaces = storage[\"namespaces\"];\n\tif (!isRecord(namespaces)) return [];\n\treturn Object.keys(namespaces);\n}\nconst PG_REFERENTIAL_ACTION_MAP = {\n\t\"NO ACTION\": \"noAction\",\n\tRESTRICT: \"restrict\",\n\tCASCADE: \"cascade\",\n\t\"SET NULL\": \"setNull\",\n\t\"SET DEFAULT\": \"setDefault\"\n};\n/**\n* Maps a Postgres referential action rule to the canonical SqlReferentialAction.\n* Returns undefined for 'NO ACTION' (the database default) to keep the IR sparse.\n* Throws for unrecognized rules to prevent silent data loss.\n*/\nfunction isPgReferentialActionRule(rule) {\n\treturn Object.hasOwn(PG_REFERENTIAL_ACTION_MAP, rule);\n}\nfunction mapReferentialAction(rule) {\n\tif (!isPgReferentialActionRule(rule)) throw adapterError(\"CONTRACT.INTROSPECTION_UNSUPPORTED\", `Unknown PostgreSQL referential action rule: \"${rule}\". Expected one of: NO ACTION, RESTRICT, CASCADE, SET NULL, SET DEFAULT.`, { meta: { rule } });\n\tconst mapped = PG_REFERENTIAL_ACTION_MAP[rule];\n\tif (mapped === \"noAction\") return void 0;\n\treturn mapped;\n}\n/**\n* A FK/policy dependency chain, mirroring the shape the expected-side\n* derivation stamps (`contractToPostgresDatabaseSchemaNode`): the database\n* root's fixed sentinel id, then the namespace, then the table.\n*/\nfunction postgresTableDependsOn(namespaceId, tableName) {\n\treturn [\n\t\t{\n\t\t\tnodeKind: PostgresSchemaNodeKind.database,\n\t\t\tid: \"database\"\n\t\t},\n\t\t{\n\t\t\tnodeKind: PostgresSchemaNodeKind.namespace,\n\t\t\tid: namespaceId\n\t\t},\n\t\t{\n\t\t\tnodeKind: PostgresSchemaNodeKind.table,\n\t\t\tid: tableName\n\t\t}\n\t];\n}\n/** A policy's dependency chain onto one of the roles it grants to. */\nfunction postgresRoleDependsOn(role) {\n\treturn [{\n\t\tnodeKind: PostgresSchemaNodeKind.database,\n\t\tid: \"database\"\n\t}, {\n\t\tnodeKind: PostgresSchemaNodeKind.role,\n\t\tid: role\n\t}];\n}\n/**\n* The chains from a table-child object (foreign key, index, unique, primary\n* key) to each of the own columns it is built on — the introspection-side\n* mirror of `contractToPostgresDatabaseSchemaNode`'s `columnDependsOn`. An\n* object is dropped before the columns it covers.\n*/\nfunction postgresColumnDependsOn(namespaceId, tableName, columns) {\n\treturn columns.map((column) => [...postgresTableDependsOn(namespaceId, tableName), {\n\t\tnodeKind: RelationalSchemaNodeKind.column,\n\t\tid: `column:${column}`\n\t}]);\n}\n/**\n* Groups an array of objects by a specified key.\n* Returns a Map for O(1) lookup by group key.\n*/\n/**\n* Parses a `pg_class.reloptions` array into a `Record<string, string>`.\n*\n* Postgres returns reloptions as a `text[]` whose entries are `key=value`\n* strings; the value side is always a string regardless of the underlying\n* scalar type. The verifier compares contract options to introspected\n* options after coercing both sides to strings, so keeping the raw text\n* here is correct.\n*\n* Returns `undefined` when the input is null/empty (no WITH clause).\n*/\nfunction parsePgReloptions(reloptions, indexName) {\n\tif (Array.isArray(reloptions)) throw new TypeError(`expected raw text for a Postgres array, got ${typeof reloptions}`);\n\tif (reloptions === null || reloptions === void 0) return;\n\tif (typeof reloptions !== \"string\") return;\n\tconst entries = parsePostgresListText(reloptions).map((entry) => String(entry));\n\tif (entries.length === 0) return;\n\tconst result = {};\n\tfor (const entry of entries) {\n\t\tconst eq = entry.indexOf(\"=\");\n\t\tif (eq === -1) throw adapterError(\"CONTRACT.INTROSPECTION_UNSUPPORTED\", `Postgres introspection: malformed reloption entry \"${entry}\" on index \"${indexName}\" (expected \"key=value\")`, { meta: {\n\t\t\tentry,\n\t\t\tindexName\n\t\t} });\n\t\tconst key = entry.slice(0, eq);\n\t\tresult[key] = entry.slice(eq + 1);\n\t}\n\treturn Object.keys(result).length > 0 ? result : void 0;\n}\nfunction groupBy(items, key) {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const item of items) {\n\t\tconst groupKey = item[key];\n\t\tlet group = map.get(groupKey);\n\t\tif (!group) {\n\t\t\tgroup = [];\n\t\t\tmap.set(groupKey, group);\n\t\t}\n\t\tgroup.push(item);\n\t}\n\treturn map;\n}\nfunction pgIsTextLikeNativeType(nativeType) {\n\treturn nativeType === \"text\" || nativeType === \"varchar\" || nativeType.startsWith(\"varchar(\") || nativeType === \"character varying\" || nativeType.startsWith(\"character varying(\") || nativeType === \"char\" || nativeType.startsWith(\"char(\") || nativeType === \"character\" || nativeType.startsWith(\"character(\");\n}\n/** Postgres's own defaults, the text the default parser reads: UTC, ISO dates, postgres intervals. */\nconst INTROSPECTION_OUTPUT_SETTINGS = {\n\ttimeZone: \"UTC\",\n\tdateStyle: \"ISO, MDY\",\n\tintervalStyle: \"postgres\"\n};\nasync function readOutputSettings(driver) {\n\tconst { rows } = await driver.query(`SELECT current_setting('TimeZone') AS \"timeZone\",\n current_setting('DateStyle') AS \"dateStyle\",\n current_setting('IntervalStyle') AS \"intervalStyle\"`);\n\treturn rows[0];\n}\nasync function applyOutputSettings(driver, settings, local) {\n\tawait driver.query(`SELECT set_config('TimeZone', $1, $4),\n set_config('DateStyle', $2, $4),\n set_config('IntervalStyle', $3, $4)`, [\n\t\tsettings.timeZone,\n\t\tsettings.dateStyle,\n\t\tsettings.intervalStyle,\n\t\tlocal\n\t]);\n}\nfunction sameOutputSettings(a, b) {\n\treturn a?.timeZone === b.timeZone && a.dateStyle === b.dateStyle && a.intervalStyle === b.intervalStyle;\n}\n/**\n* Runs `read` with the settings that shape printed values pinned to Postgres's defaults, then\n* restores the caller's. Postgres prints a `timestamptz` default in the session time zone, and\n* dates and intervals in the session styles, so pinning them gives the same text whatever the\n* server, the role, or the caller set.\n*\n* The settings are first set locally. A local setting outlives its own statement only inside a\n* transaction, so reading them back tells the two cases apart. Inside the caller's transaction they\n* are set and restored locally, so the caller's session values return when it commits; outside\n* one they are set and restored for the session. When `read` fails, its error is the one thrown;\n* inside a transaction the failure aborts it, and the caller's rollback restores the settings.\n*/\nasync function readWithDefaultOutputSettings(driver, read) {\n\tconst callerSettings = await readOutputSettings(driver);\n\tif (callerSettings === void 0) return read();\n\tawait applyOutputSettings(driver, INTROSPECTION_OUTPUT_SETTINGS, true);\n\tconst local = sameOutputSettings(await readOutputSettings(driver), INTROSPECTION_OUTPUT_SETTINGS);\n\tif (!local) await applyOutputSettings(driver, INTROSPECTION_OUTPUT_SETTINGS, false);\n\tconst restore = () => applyOutputSettings(driver, callerSettings, local);\n\tlet result;\n\ttry {\n\t\tresult = await read();\n\t} catch (error) {\n\t\tawait restore().catch(() => void 0);\n\t\tthrow error;\n\t}\n\tawait restore();\n\treturn result;\n}\nfunction pgInlineLiteral(wire, nativeType) {\n\tif (wire === null) return \"NULL\";\n\tif (typeof wire === \"boolean\") return wire ? \"true\" : \"false\";\n\tif (typeof wire === \"number\") {\n\t\tif (!Number.isFinite(wire)) throw adapterError(\"CONTRACT.DEFAULT_INVALID\", `pgRenderDdlExecuteRequest: non-finite number wire value ${String(wire)} cannot be emitted as a DEFAULT literal for native type \"${nativeType}\"`, { meta: { nativeType } });\n\t\treturn String(wire);\n\t}\n\tif (typeof wire === \"bigint\") return String(wire);\n\tif (wire instanceof Date) {\n\t\tif (Number.isNaN(wire.getTime())) throw adapterError(\"CONTRACT.DEFAULT_INVALID\", `pgRenderDdlExecuteRequest: invalid Date value cannot be emitted as a DEFAULT literal for native type \"${nativeType}\"`, { meta: { nativeType } });\n\t\tconst quoted = `'${escapeLiteral(wire.toISOString())}'`;\n\t\treturn pgIsTextLikeNativeType(nativeType) ? quoted : `${quoted}::${nativeType}`;\n\t}\n\tif (typeof wire === \"string\") {\n\t\tconst quoted = `'${escapeLiteral(wire)}'`;\n\t\treturn pgIsTextLikeNativeType(nativeType) ? quoted : `${quoted}::${nativeType}`;\n\t}\n\tif (wire instanceof Uint8Array) return `'\\\\x${Array.from(wire).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}'::${nativeType}`;\n\tif (typeof wire === \"object\") return `${`'${escapeLiteral(JSON.stringify(wire))}'`}::${nativeType}`;\n\tthrow adapterError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `pgRenderDdlExecuteRequest: unexpected wire type \"${typeof wire}\" for native type \"${nativeType}\"`, { meta: {\n\t\twireType: typeof wire,\n\t\tnativeType\n\t} });\n}\nconst SERIAL_FAMILY_TYPES = /* @__PURE__ */ new Set([\n\t\"serial\",\n\t\"serial4\",\n\t\"bigserial\",\n\t\"serial8\",\n\t\"smallserial\",\n\t\"serial2\"\n]);\nasync function pgRenderDdlColumnDefault(def, nativeType, codecLookup, codecRef) {\n\tif (def.kind === \"function\") {\n\t\tif (def.expression === \"autoincrement()\") {\n\t\t\tif (!SERIAL_FAMILY_TYPES.has(nativeType.toLowerCase())) throw postgresError(\"CONTRACT.DEFAULT_INVALID\", `Column type \"${nativeType}\" has an autoincrement() default but is not a SERIAL-family pseudo-type. Autoincrement columns must declare their type as SERIAL (or SERIAL4), BIGSERIAL (or SERIAL8), or SMALLSERIAL (or SERIAL2) — e.g. col(name, \"SERIAL\", { default: fn(\"autoincrement()\") }).`, { meta: { nativeType } });\n\t\t\treturn \"\";\n\t\t}\n\t\treturn `DEFAULT (${def.expression})`;\n\t}\n\tconst dataTypeId = codecRef === void 0 ? void 0 : codecLookup.descriptorFor?.(codecRef.codecId)?.dataType;\n\tif (Array.isArray(def.value) && nativeType.endsWith(\"[]\")) return `DEFAULT ${renderDefaultLiteral(def.value, {\n\t\tmany: true,\n\t\tnativeType,\n\t\tdataTypeId\n\t})}`;\n\tif (typeof def.value === \"string\" && isPostgresDateTimeDataType(dataTypeId)) return `DEFAULT ${pgInlineLiteral(postgresDateTimeDdlText(def.value, dataTypeId), nativeType)}`;\n\tif (codecRef !== void 0) {\n\t\tconst descriptor = codecLookup.descriptorFor?.(codecRef.codecId);\n\t\tconst codec = descriptor === void 0 ? codecLookup.get(codecRef.codecId) : materializeCodec(descriptor, codecRef, { name: codecRef.codecId });\n\t\tif (codec !== void 0) {\n\t\t\tconst value = def.value instanceof Date ? def.value : codec.decodeJson(def.value);\n\t\t\treturn `DEFAULT ${pgInlineLiteral(await codec.encode(value, {}), nativeType)}`;\n\t\t}\n\t}\n\treturn `DEFAULT ${pgInlineLiteral(def.value, nativeType)}`;\n}\nasync function pgRenderDdlColumn(column, codecLookup) {\n\tconst parts = [quoteIdentifier(column.name), column.type];\n\tif (column.default) {\n\t\tconst clause = await pgRenderDdlColumnDefault(column.default, column.type, codecLookup, column.codecRef);\n\t\tif (clause.length > 0) parts.push(clause);\n\t}\n\tif (column.notNull) parts.push(\"NOT NULL\");\n\tif (column.primaryKey) parts.push(\"PRIMARY KEY\");\n\treturn parts.join(\" \");\n}\nfunction pgRenderDdlConstraint(constraint) {\n\tif (constraint.kind === \"primary-key\") {\n\t\tconst cols = constraint.columns.map(quoteIdentifier).join(\", \");\n\t\tif (constraint.name !== void 0) return `CONSTRAINT ${quoteIdentifier(constraint.name)} PRIMARY KEY (${cols})`;\n\t\treturn `PRIMARY KEY (${cols})`;\n\t}\n\tif (constraint.kind === \"foreign-key\") {\n\t\tlet sql = `FOREIGN KEY (${constraint.columns.map(quoteIdentifier).join(\", \")}) REFERENCES ${constraint.refTable.split(\".\").map(quoteIdentifier).join(\".\")} (${constraint.refColumns.map(quoteIdentifier).join(\", \")})`;\n\t\tif (constraint.onDelete !== void 0) sql += ` ON DELETE ${REFERENTIAL_ACTION_SQL[constraint.onDelete]}`;\n\t\tif (constraint.onUpdate !== void 0) sql += ` ON UPDATE ${REFERENTIAL_ACTION_SQL[constraint.onUpdate]}`;\n\t\tif (constraint.name !== void 0) sql = `CONSTRAINT ${quoteIdentifier(constraint.name)} ${sql}`;\n\t\treturn sql;\n\t}\n\tif (constraint.kind === \"check-expression\") return `CONSTRAINT ${quoteIdentifier(constraint.name)} CHECK (${constraint.expression})`;\n\tconst cols = constraint.columns.map(quoteIdentifier).join(\", \");\n\tif (constraint.name !== void 0) return `CONSTRAINT ${quoteIdentifier(constraint.name)} UNIQUE (${cols})`;\n\treturn `UNIQUE (${cols})`;\n}\nasync function pgRenderCreateTable(node, codecLookup) {\n\tconst ifNotExists = node.ifNotExists ? \"IF NOT EXISTS \" : \"\";\n\tconst tableRef = node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}` : quoteIdentifier(node.table);\n\tconst columnDefs = await Promise.all(node.columns.map((col) => pgRenderDdlColumn(col, codecLookup)));\n\tconst constraintDefs = node.constraints !== void 0 ? node.constraints.map(pgRenderDdlConstraint) : [];\n\treturn {\n\t\tsql: `CREATE TABLE ${ifNotExists}${tableRef} (\\n ${[...columnDefs, ...constraintDefs].join(\",\\n \")}\\n)`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderCreateSchema(node) {\n\treturn {\n\t\tsql: `CREATE SCHEMA ${node.ifNotExists ? \"IF NOT EXISTS \" : \"\"}${quoteIdentifier(node.schema)}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderCreateType(node) {\n\treturn {\n\t\tsql: `CREATE TYPE ${node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.name)}` : quoteIdentifier(node.name)} AS ENUM (${node.values.map((value) => `'${escapeLiteral(value)}'`).join(\", \")})`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDropType(node) {\n\treturn {\n\t\tsql: `DROP TYPE ${node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.name)}` : quoteIdentifier(node.name)}`,\n\t\tparams: []\n\t};\n}\nasync function pgRenderAlterTable(node, codecLookup) {\n\tconst tableRef = node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}` : quoteIdentifier(node.table);\n\tconst actionVisitor = {\n\t\tasync addColumn(action) {\n\t\t\treturn `ADD COLUMN ${await pgRenderDdlColumn(action.column, codecLookup)}`;\n\t\t},\n\t\tdropDefault(action) {\n\t\t\treturn Promise.resolve(`ALTER COLUMN ${quoteIdentifier(action.columnName)} DROP DEFAULT`);\n\t\t}\n\t};\n\treturn {\n\t\tsql: `ALTER TABLE ${tableRef} ${(await Promise.all(node.actions.map((action) => action.accept(actionVisitor)))).join(\", \")}`,\n\t\tparams: []\n\t};\n}\nconst POLICY_OPERATION_SQL = {\n\tselect: \"SELECT\",\n\tinsert: \"INSERT\",\n\tupdate: \"UPDATE\",\n\tdelete: \"DELETE\",\n\tall: \"ALL\"\n};\nfunction pgRenderCreatePolicy(node) {\n\tconst tableRef = `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`;\n\tconst permissiveness = node.permissive ? \"PERMISSIVE\" : \"RESTRICTIVE\";\n\tconst command = POLICY_OPERATION_SQL[node.operation];\n\tconst roles = node.roles.length === 0 ? \"PUBLIC\" : node.roles.join(\", \");\n\tlet sql = `CREATE POLICY ${quoteIdentifier(node.name)} ON ${tableRef} AS ${permissiveness} FOR ${command} TO ${roles}`;\n\tif (node.using !== void 0) sql += ` USING (${node.using})`;\n\tif (node.withCheck !== void 0) sql += ` WITH CHECK (${node.withCheck})`;\n\treturn {\n\t\tsql,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDropPolicy(node) {\n\tconst tableRef = `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`;\n\treturn {\n\t\tsql: `DROP POLICY ${quoteIdentifier(node.name)} ON ${tableRef}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderAlterPolicyRename(node) {\n\tconst tableRef = `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`;\n\treturn {\n\t\tsql: `ALTER POLICY ${quoteIdentifier(node.name)} ON ${tableRef} RENAME TO ${quoteIdentifier(node.newName)}`,\n\t\tparams: []\n\t};\n}\n/**\n* Renders one index reloption value: strings single-quote-escaped, finite\n* numbers verbatim, booleans in the `on`/`off` catalog spelling (the\n* canonical form the wire hash and the option equality commit to).\n*/\nfunction pgRenderIndexOptionValue(key, value) {\n\tif (typeof value === \"string\") return `'${escapeLiteral(value)}'`;\n\tif (typeof value === \"number\" && Number.isFinite(value)) return String(value);\n\tif (typeof value === \"boolean\") return value ? \"on\" : \"off\";\n\tthrow postgresError(\"CONTRACT.INDEX_INVALID\", `Index option \"${key}\" must be a string, finite number, or boolean; got ${typeof value}`, { meta: {\n\t\tkey,\n\t\tvalueType: typeof value\n\t} });\n}\n/** Qualifies an object name; an absent schema renders it unqualified (unbound namespace). */\nfunction pgQualify(schema, name) {\n\treturn schema === void 0 ? quoteIdentifier(name) : `${quoteIdentifier(schema)}.${quoteIdentifier(name)}`;\n}\nfunction pgRenderCreateIndex(node) {\n\tconst elementList = \"columns\" in node.elements ? node.elements.columns.map(quoteIdentifier).join(\", \") : node.elements.expression;\n\tconst unique = node.unique ? \"UNIQUE \" : \"\";\n\tconst using = node.type !== void 0 ? ` USING ${quoteIdentifier(node.type)}` : \"\";\n\tconst withClause = node.options !== void 0 && Object.keys(node.options).length > 0 ? ` WITH (${Object.entries(node.options).map(([key, value]) => `${quoteIdentifier(key)} = ${pgRenderIndexOptionValue(key, value)}`).join(\", \")})` : \"\";\n\tconst whereClause = node.where !== void 0 ? ` WHERE (${node.where})` : \"\";\n\treturn {\n\t\tsql: `CREATE ${unique}INDEX ${quoteIdentifier(node.name)} ON ${pgQualify(node.schema, node.table)}${using} (${elementList})${withClause}${whereClause}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDropIndex(node) {\n\treturn {\n\t\tsql: `DROP INDEX ${pgQualify(node.schema, node.name)}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderAlterIndexRename(node) {\n\treturn {\n\t\tsql: `ALTER INDEX ${pgQualify(node.schema, node.from)} RENAME TO ${quoteIdentifier(node.to)}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDisableRowLevelSecurity(node) {\n\treturn {\n\t\tsql: `ALTER TABLE ${`${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`} DISABLE ROW LEVEL SECURITY`,\n\t\tparams: []\n\t};\n}\nasync function pgRenderDdlExecuteRequest(ast, codecLookup) {\n\treturn ast.accept({\n\t\tcreateTable: (node) => pgRenderCreateTable(node, codecLookup),\n\t\tcreateSchema: (node) => Promise.resolve(pgRenderCreateSchema(node)),\n\t\tcreateType: (node) => Promise.resolve(pgRenderCreateType(node)),\n\t\tdropType: (node) => Promise.resolve(pgRenderDropType(node)),\n\t\talterTable: (node) => pgRenderAlterTable(node, codecLookup),\n\t\tcreatePolicy: (node) => Promise.resolve(pgRenderCreatePolicy(node)),\n\t\tdropPolicy: (node) => Promise.resolve(pgRenderDropPolicy(node)),\n\t\talterPolicyRename: (node) => Promise.resolve(pgRenderAlterPolicyRename(node)),\n\t\tcreateIndex: (node) => Promise.resolve(pgRenderCreateIndex(node)),\n\t\tdropIndex: (node) => Promise.resolve(pgRenderDropIndex(node)),\n\t\talterIndexRename: (node) => Promise.resolve(pgRenderAlterIndexRename(node)),\n\t\tdisableRowLevelSecurity: (node) => Promise.resolve(pgRenderDisableRowLevelSecurity(node))\n\t});\n}\n//#endregion\nexport { PostgresControlAdapter as t };\n\n//# sourceMappingURL=control-adapter-BaVlICog.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-policy-BYo5QPof-BLT07t1y.mjs","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/control-policy-BYo5QPof.mjs"],"sourcesContent":["import { s as postgresError } from \"./errors-DYyzTYzE.mjs\";\nimport { r as isPostgresSchema } from \"./postgres-schema-yugFGBdS.mjs\";\nimport { n as PostgresNativeEnumSchemaNode, o as postgresNodeEntityKind, r as PostgresSchemaNodeKind, t as PostgresTableSchemaNode } from \"./postgres-table-schema-node-BBkitBQh.mjs\";\nimport { C as DropNativeEnumTypeCall, D as EnableRowLevelSecurityCall, E as DropTableCall, F as buildTargetDetails, M as SetDefaultCall, N as SetNotNullCall, O as RawSqlCall, P as postgresDefaultToDdlColumnDefault, S as DropIndexCall, _ as DisableRowLevelSecurityCall, a as AddNotNullColumnDirectCall, b as DropConstraintCall, c as AddUniqueCall, d as CreateIndexCall, f as CreateNativeEnumTypeCall, g as DataTransformCall, h as CreateTableCall, i as AddNativeEnumValueCall, l as AlterColumnTypeCall, m as CreateSchemaCall, n as AddColumnCall, o as AddNotNullColumnWithTempDefaultCall, r as AddForeignKeyCall, s as AddPrimaryKeyCall, t as AddCheckConstraintCall, v as DropCheckConstraintCall, w as DropNotNullCall, x as DropDefaultCall, y as DropColumnCall } from \"./op-factory-call-BBkvFvKK.mjs\";\nimport { t as buildExpectedFormatType } from \"./planner-sql-checks-Bd8nN9P8.mjs\";\nimport { n as buildColumnTypeSql, t as buildColumnDefaultSql } from \"./planner-ddl-builders-GTcVPpwb.mjs\";\nimport { n as resolveIdentityValue } from \"./planner-identity-values-BmHn5C6U.mjs\";\nimport { i as hasUniqueConstraint, n as hasForeignKey, t as buildSchemaLookupMap } from \"./planner-schema-lookup-kMIVP2y-.mjs\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { issueOutcome, orderIssuesByDependencies } from \"@internal/framework-components/control\";\nimport { UNBOUND_NAMESPACE_ID, entityAt } from \"@internal/framework-components/ir\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport * as contractFree from \"@internal/sql-relational-core/contract-free\";\nimport { RelationalSchemaNodeKind, SqlSchemaIR, contractDefaultRefusal, defaultInCanonicalForm } from \"@internal/sql-schema-ir/types\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/core/schema-ir/node-storage-coordinate.ts\n/**\n* The storage-`entries` coordinate `(entityKind, entityName)` a Postgres diff\n* node addresses — a table by its name, a native enum by its physical type\n* name. `undefined` for a node that is not a whole storage entity (a namespace,\n* a column, a policy). Lets ownership/subject resolution treat every entity kind\n* uniformly, the node self-describing its storage identity.\n*/\nfunction postgresNodeStorageCoordinate(node) {\n\tif (PostgresTableSchemaNode.is(node)) {\n\t\tconst entityKind = postgresNodeEntityKind(node.nodeKind);\n\t\treturn entityKind === void 0 ? void 0 : {\n\t\t\tentityKind,\n\t\t\tentityName: node.name\n\t\t};\n\t}\n\tif (PostgresNativeEnumSchemaNode.is(node)) {\n\t\tconst entityKind = postgresNodeEntityKind(node.nodeKind);\n\t\treturn entityKind === void 0 ? void 0 : {\n\t\t\tentityKind,\n\t\t\tentityName: node.typeName\n\t\t};\n\t}\n}\n//#endregion\n//#region src/core/migrations/column-ddl-rendering.ts\n/**\n* Reconstructs the `StorageColumn`-shaped fields the DDL builder functions\n* (`buildColumnTypeSql`, `buildExpectedFormatType`, `resolveIdentityValue`)\n* expect, from a column node's own stamped codec identity (`codecRef` /\n* `codecBaseNativeType` / `codecNamedType`, Decision 5) — never the\n* contract. The builders were written against `StorageColumn` and are\n* unchanged here; only the shape feeding them moves from the contract to\n* the node. An empty `storageTypes` catalog is passed alongside: the\n* node's fields are already resolved past any `typeRef` indirection, so no\n* live lookup is needed, and passing a non-empty catalog would risk a\n* false `typeRef` hit against an unrelated storage type.\n*/\nfunction columnLike(column) {\n\treturn {\n\t\t...columnTypeLike(`column \"${column.name}\"`, column),\n\t\tnullable: column.nullable,\n\t\t...ifDefined(\"default\", column.authoredDefault ?? column.resolvedDefault)\n\t};\n}\nfunction columnTypeLike(owner, identity) {\n\tif (identity.codecRef === void 0 || identity.codecBaseNativeType === void 0) throw new InternalError(`columnTypeLike: expected ${owner} carries no codec identity — the expected tree must be derived via contractToSchemaIR for planning`);\n\treturn {\n\t\tnativeType: identity.codecBaseNativeType,\n\t\tcodecId: identity.codecRef.codecId,\n\t\t...ifDefined(\"many\", identity.many ?? identity.codecRef.many),\n\t\t...ifDefined(\"typeParams\", identity.codecRef.typeParams !== void 0 ? blindCast(identity.codecRef.typeParams) : void 0),\n\t\t...identity.codecNamedType ? { typeRef: \"<resolved>\" } : {}\n\t};\n}\n/**\n* A literal default in the canonical form of the column's data type, which DDL writes (ADR 254). A\n* default the type refuses, which a contract emitted by an earlier version can hold, is refused\n* here rather than written, since the database would never hold the text the contract states.\n*/\nfunction inCanonicalForm(columnName, columnDefault, dataType, many) {\n\tif (columnDefault?.kind !== \"literal\") return columnDefault;\n\tconst refusal = contractDefaultRefusal(columnDefault, dataType?.toCanonicalForm, many);\n\tif (refusal !== void 0) throw postgresError(\"CONTRACT.DEFAULT_INVALID\", `Column \"${columnName}\": ${refusal}`, { meta: {\n\t\treason: \"default-not-canonical\",\n\t\tcolumn: columnName\n\t} });\n\treturn {\n\t\tkind: \"literal\",\n\t\tvalue: defaultInCanonicalForm(columnDefault.value, dataType?.toCanonicalForm, many).value\n\t};\n}\n/**\n* Builds the `CREATE TABLE` / `ADD COLUMN` DDL column for an expected column\n* node, resolving type rendering from the node's codec identity against the\n* codec hooks the caller holds — the same builder the pre-`plan(start, end)`\n* op-path called, so the output is byte-identical.\n*/\nfunction renderColumnDdl(name, column, codecHooks) {\n\tconst like = columnLike(column);\n\tconst typeSql = buildColumnTypeSql(like, codecHooks, {});\n\tconst ddlDefault = postgresDefaultToDdlColumnDefault(inCanonicalForm(name, like.default, column.dataType, like.many === true));\n\treturn contractFree.col(name, typeSql, {\n\t\t...!column.nullable ? { notNull: true } : {},\n\t\t...ifDefined(\"default\", ddlDefault),\n\t\t...ifDefined(\"codecRef\", column.codecRef)\n\t});\n}\n/**\n* Builds the `ALTER COLUMN … TYPE` operands for an expected column node.\n*/\nfunction renderColumnAlterType(column, codecHooks) {\n\tconst like = columnLike(column);\n\treturn {\n\t\tqualifiedTargetType: buildColumnTypeSql(like, codecHooks, {}, false),\n\t\tformatTypeExpected: buildExpectedFormatType(like, codecHooks, {})\n\t};\n}\n/**\n* Resolves the identity value (monoid neutral element) SQL literal used as\n* the temporary default when adding a NOT-NULL column with no contract\n* default (`notNullAddColumnCallStrategy`'s shared-temp-default backfill).\n* `null` when the column's type has no built-in/codec-provided identity\n* value.\n*/\nfunction resolveColumnTemporaryDefault(column, codecHooks) {\n\treturn resolveIdentityValue(columnLike(column), codecHooks, {});\n}\n/**\n* The column's `SET DEFAULT` clause SQL, from a column-default diff node's authored default, or its resolved one when nothing was authored. `''` when the node carries neither. A list default is cast to the column type as the column's DDL writes it.\n*/\nfunction renderColumnDefaultSql(columnName, defaultNode, codecHooks) {\n\tconst authored = defaultNode.authored ?? defaultNode.resolved;\n\tif (authored === void 0) return \"\";\n\tconst typeLike = columnTypeLike(\"column default\", defaultNode);\n\treturn buildColumnDefaultSql(inCanonicalForm(columnName, authored, defaultNode.dataType, typeLike.many === true), {\n\t\tnativeType: buildColumnTypeSql(typeLike, codecHooks, {}, false),\n\t\t...ifDefined(\"dataTypeId\", defaultNode.dataType?.id),\n\t\t...ifDefined(\"many\", typeLike.many)\n\t});\n}\n//#endregion\n//#region src/core/migrations/planner-strategies.ts\n/**\n* Look up a storage table by its explicit namespace coordinate. Returns\n* `undefined` when the namespace has no table by that name (or no such\n* namespace exists). Callers that get `undefined` MUST treat it as an\n* explicit conflict — never silently fall back to a global default\n* schema or a name-only walk, because that footgun would resolve a\n* stale or duplicate table name to whichever namespace the iteration\n* order surfaced first (a real data-loss hazard in multi-namespace\n* contracts where two namespaces can carry the same table name).\n*/\nfunction tableAt(storage, namespaceId, tableName) {\n\tconst ns = storage.namespaces[namespaceId];\n\tif (ns === void 0) return void 0;\n\treturn ns.entries.table?.[tableName];\n}\n/**\n* Recovers the contract namespace id for a DDL schema name embedded in a\n* diff-issue path (`path[1]`). The strategies need the CONTRACT column/table\n* (for codec-hook reads and eligibility probes the retained subsystems still\n* run) even though the issue itself only carries the resolved DDL schema —\n* this is the reverse of `resolveDdlSchemaForNamespace`.\n*/\nfunction namespaceIdForDdlSchema(ctx, ddlSchemaName) {\n\treturn resolveNamespaceIdForDdlSchema(ctx.toContract, ddlSchemaName);\n}\n/** A `not-equal` column issue whose node pair is narrowed to `SqlColumnIR`. */\nfunction columnNodePair(issue) {\n\tconst node = issueNode(issue);\n\tif (node === void 0 || node.nodeKind !== RelationalSchemaNodeKind.column) return void 0;\n\tif (issue.expected === void 0 || issue.actual === void 0) return void 0;\n\treturn {\n\t\texpected: blindCast(issue.expected),\n\t\tactual: blindCast(issue.actual)\n\t};\n}\nconst notNullBackfillCallStrategy = (issues, ctx) => {\n\tif (!ctx.policy.allowedOperationClasses.includes(\"data\")) return { kind: \"no_match\" };\n\tconst matched = [];\n\tconst calls = [];\n\tfor (const issue of issues) {\n\t\tif (issueOutcome(issue) !== \"not-found\") continue;\n\t\tconst node = issueNode(issue);\n\t\tif (node === void 0 || node.nodeKind !== RelationalSchemaNodeKind.column) continue;\n\t\tconst expected = blindCast(issue.expected);\n\t\tif (expected.nullable !== false || expected.resolvedDefault !== void 0) continue;\n\t\tconst ddlSchemaName = issueSchemaName(issue);\n\t\tconst tableName = issueTableName(issue);\n\t\tif (ddlSchemaName === void 0 || tableName === void 0) continue;\n\t\tconst schemaName = emissionSchemaName(ctx, ddlSchemaName);\n\t\tmatched.push(issue);\n\t\tconst ddl = renderColumnDdl(expected.name, expected, ctx.codecHooks);\n\t\tconst nullableSpec = contractFree.col(ddl.name, ddl.type, { ...ddl.codecRef !== void 0 ? { codecRef: ddl.codecRef } : {} });\n\t\tcalls.push(new AddColumnCall(schemaName, tableName, nullableSpec), new DataTransformCall(`backfill-${tableName}-${expected.name}`, `backfill-${tableName}-${expected.name}:check`, `backfill-${tableName}-${expected.name}:run`), new SetNotNullCall(schemaName, tableName, expected.name));\n\t}\n\tif (matched.length === 0) return { kind: \"no_match\" };\n\treturn {\n\t\tkind: \"match\",\n\t\tissues: issues.filter((i) => !matched.includes(i)),\n\t\tcalls,\n\t\trecipe: true\n\t};\n};\nconst SAFE_WIDENINGS = /* @__PURE__ */ new Set([\n\t\"int2→int4\",\n\t\"int2→int8\",\n\t\"int4→int8\",\n\t\"float4→float8\"\n]);\n/**\n* Handles `not-equal` column issues whose TYPE differs. `fromContract` is\n* only supplied by `migration plan` — for reconciliation (`db update` /\n* `db init`, `fromContract === null`) this strategy never fires, mirroring\n* the legacy `typeChangeCallStrategy`'s requirement of a prior contract:\n* `mapNodeIssueToCall`'s in-place ALTER covers reconciliation directly.\n*\n* A single node issue can carry BOTH type and nullability drift (Postgres\n* alters in place, so the differ emits one `not-equal` column issue where\n* the legacy coordinate walk emitted two: `type_mismatch` +\n* `nullability_mismatch`). When this strategy consumes the issue for its\n* type portion, it also emits whatever nullability delta the same node pair\n* carries — using the same construction `nullableTighteningCallStrategy` /\n* the mapper's direct dispatch would have used — so the issue is never\n* partially handled.\n*/\nconst typeChangeCallStrategy = (issues, ctx) => {\n\tif (ctx.fromContract === null) return { kind: \"no_match\" };\n\tconst dataAllowed = ctx.policy.allowedOperationClasses.includes(\"data\");\n\tconst matched = [];\n\tconst calls = [];\n\tfor (const issue of issues) {\n\t\tif (issueOutcome(issue) !== \"not-equal\") continue;\n\t\tconst pair = columnNodePair(issue);\n\t\tif (pair === void 0) continue;\n\t\tconst { expected, actual } = pair;\n\t\tif (!columnTypeChangedNativeOnly(expected, actual)) continue;\n\t\tconst fromType = actual.nativeType;\n\t\tconst toType = expected.nativeType;\n\t\tconst isSafeWidening = SAFE_WIDENINGS.has(`${fromType}→${toType}`);\n\t\tif (!isSafeWidening && !dataAllowed) continue;\n\t\tconst ddlSchemaName = issueSchemaName(issue);\n\t\tconst tableName = issueTableName(issue);\n\t\tif (ddlSchemaName === void 0 || tableName === void 0) continue;\n\t\tconst schemaName = emissionSchemaName(ctx, ddlSchemaName);\n\t\tmatched.push(issue);\n\t\tconst { qualifiedTargetType, formatTypeExpected } = renderColumnAlterType(expected, ctx.codecHooks);\n\t\tconst alterOpts = {\n\t\t\tqualifiedTargetType,\n\t\t\tformatTypeExpected,\n\t\t\trawTargetTypeForLabel: qualifiedTargetType\n\t\t};\n\t\tif (isSafeWidening) calls.push(new AlterColumnTypeCall(schemaName, tableName, expected.name, alterOpts));\n\t\telse calls.push(new DataTransformCall(`typechange-${tableName}-${expected.name}`, `typechange-${tableName}-${expected.name}:check`, `typechange-${tableName}-${expected.name}:run`), new AlterColumnTypeCall(schemaName, tableName, expected.name, alterOpts));\n\t\tif (expected.nullable !== actual.nullable) if (expected.nullable) calls.push(new DropNotNullCall(schemaName, tableName, expected.name));\n\t\telse if (dataAllowed) calls.push(new DataTransformCall(`handle-nulls-${tableName}-${expected.name}`, `handle-nulls-${tableName}-${expected.name}:check`, `handle-nulls-${tableName}-${expected.name}:run`), new SetNotNullCall(schemaName, tableName, expected.name));\n\t\telse calls.push(new SetNotNullCall(schemaName, tableName, expected.name));\n\t}\n\tif (matched.length === 0) return { kind: \"no_match\" };\n\treturn {\n\t\tkind: \"match\",\n\t\tissues: issues.filter((i) => !matched.includes(i)),\n\t\tcalls,\n\t\trecipe: true\n\t};\n};\n/**\n* Whether the raw (unresolved) native type differs — the SAME comparison\n* `typeChangeCallStrategy` always used (`fromColumn.nativeType !==\n* toColumn.nativeType`), which for the widenable numeric/float types\n* `SAFE_WIDENINGS` lists is identical to the resolved comparison\n* `columnTypeChanged` (in `issue-planner.ts`) performs.\n*/\nfunction columnTypeChangedNativeOnly(expected, actual) {\n\treturn expected.nativeType !== actual.nativeType;\n}\n/**\n* Handles `not-equal` column issues whose type did NOT change but\n* nullability tightened (contract requires NOT NULL, live column is\n* nullable). A type-changed issue's nullability delta (if any) is already\n* handled by `typeChangeCallStrategy`, which runs first — this strategy\n* only ever sees issues that strategy left behind.\n*/\nconst nullableTighteningCallStrategy = (issues, ctx) => {\n\tif (!ctx.policy.allowedOperationClasses.includes(\"data\")) return { kind: \"no_match\" };\n\tconst matched = [];\n\tconst calls = [];\n\tfor (const issue of issues) {\n\t\tif (issueOutcome(issue) !== \"not-equal\") continue;\n\t\tconst pair = columnNodePair(issue);\n\t\tif (pair === void 0) continue;\n\t\tconst { expected, actual } = pair;\n\t\tif (columnTypeChangedNativeOnly(expected, actual)) continue;\n\t\tif (expected.nullable !== false || actual.nullable !== true) continue;\n\t\tconst ddlSchemaName = issueSchemaName(issue);\n\t\tconst tableName = issueTableName(issue);\n\t\tif (ddlSchemaName === void 0 || tableName === void 0) continue;\n\t\tconst schemaName = emissionSchemaName(ctx, ddlSchemaName);\n\t\tmatched.push(issue);\n\t\tcalls.push(new DataTransformCall(`handle-nulls-${tableName}-${expected.name}`, `handle-nulls-${tableName}-${expected.name}:check`, `handle-nulls-${tableName}-${expected.name}:run`), new SetNotNullCall(schemaName, tableName, expected.name));\n\t}\n\tif (matched.length === 0) return { kind: \"no_match\" };\n\treturn {\n\t\tkind: \"match\",\n\t\tissues: issues.filter((i) => !matched.includes(i)),\n\t\tcalls,\n\t\trecipe: true\n\t};\n};\n/**\n* Dispatches codec-typed storage types through their codec's\n* `planTypeOperations` hook (the authoritative source for codec-driven DDL\n* such as custom type creation). Codec extension/type ops are not modeled as\n* diff nodes — this strategy drives entirely off `ctx.toContract.storage.types`\n* + codec hooks, consuming nothing from the node issue list (there is no\n* node-vocabulary equivalent of `type_missing` / `enum_values_changed`).\n*/\nconst storageTypePlanCallStrategy = (issues, ctx) => {\n\tconst storageTypes = ctx.toContract.storage.types ?? {};\n\tif (Object.keys(storageTypes).length === 0) return { kind: \"no_match\" };\n\tconst calls = [];\n\tfor (const [typeName, typeInstance] of Object.entries(storageTypes).sort(([a], [b]) => a.localeCompare(b))) {\n\t\tconst codecInstance = blindCast(typeInstance);\n\t\tconst hook = ctx.codecHooks.get(codecInstance.codecId);\n\t\tif (!hook?.planTypeOperations) continue;\n\t\tconst planResult = hook.planTypeOperations({\n\t\t\ttypeName,\n\t\t\ttypeInstance: codecInstance,\n\t\t\tcontract: ctx.toContract,\n\t\t\tschema: ctx.schema,\n\t\t\tschemaName: ctx.schemaName,\n\t\t\tpolicy: ctx.policy\n\t\t});\n\t\tif (!planResult) continue;\n\t\tfor (const op of planResult.operations) calls.push(new RawSqlCall(blindCast({\n\t\t\t...op,\n\t\t\ttarget: {\n\t\t\t\tid: op.target.id,\n\t\t\t\tdetails: buildTargetDetails(\"type\", typeName, ctx.schemaName)\n\t\t\t}\n\t\t})));\n\t}\n\tif (calls.length === 0) return { kind: \"no_match\" };\n\treturn {\n\t\tkind: \"match\",\n\t\tissues,\n\t\tcalls\n\t};\n};\n/**\n* Handles `not-found` column issues for NOT NULL columns without a contract\n* default. Replaces the legacy `buildAddColumnItem` non-default branches.\n*\n* Two shapes:\n* - Shared-temp-default safe: emit a single atomic composite op (add\n* nullable → backfill identity value → `SET NOT NULL` → `DROP DEFAULT`).\n* The temp-default value is resolved from the column node's `codecRef`\n* (`resolveColumnTemporaryDefault`, wrapping `resolveIdentityValue`).\n* - Empty-table guarded: emit a hand-built op with a `tableIsEmptyCheck`\n* precheck so the failure message is \"table is not empty\" rather than the\n* raw PG NOT NULL violation.\n*\n* \"Normal\" not-found column cases (nullable or has a contract default) are\n* left for `mapNodeIssueToCall`'s default `AddColumnCall` emission.\n*/\nconst notNullAddColumnCallStrategy = (issues, ctx) => {\n\tconst matched = [];\n\tconst calls = [];\n\tconst schemaLookups = buildSchemaLookupMap(ctx.schema);\n\tconst mutableCodecHooks = blindCast(ctx.codecHooks);\n\tconst mutableStorageTypes = blindCast(ctx.storageTypes);\n\tfor (const issue of issues) {\n\t\tif (issueOutcome(issue) !== \"not-found\") continue;\n\t\tconst node = issueNode(issue);\n\t\tif (node === void 0 || node.nodeKind !== RelationalSchemaNodeKind.column) continue;\n\t\tconst expected = blindCast(issue.expected);\n\t\tif (expected.nullable !== false || expected.resolvedDefault !== void 0) continue;\n\t\tconst ddlSchemaName = issueSchemaName(issue);\n\t\tconst tableName = issueTableName(issue);\n\t\tif (ddlSchemaName === void 0 || tableName === void 0) continue;\n\t\tconst namespaceId = namespaceIdForDdlSchema(ctx, ddlSchemaName);\n\t\tconst schemaName = namespaceId === UNBOUND_NAMESPACE_ID ? UNBOUND_NAMESPACE_ID : ddlSchemaName;\n\t\tconst contractTable = tableAt(ctx.toContract.storage, namespaceId, tableName);\n\t\tconst column = contractTable?.columns[expected.name];\n\t\tif (!contractTable || !column) continue;\n\t\tconst schemaTable = ctx.schema.tables[tableName];\n\t\tif (!schemaTable) continue;\n\t\tconst temporaryDefault = resolveColumnTemporaryDefault(expected, ctx.codecHooks);\n\t\tconst schemaLookup = schemaLookups.get(tableName);\n\t\tconst canUseSharedTempDefault = temporaryDefault !== null && canUseSharedTemporaryDefaultStrategy({\n\t\t\ttable: contractTable,\n\t\t\tschemaTable,\n\t\t\tschemaLookup,\n\t\t\tcolumnName: expected.name\n\t\t});\n\t\tmatched.push(issue);\n\t\tif (canUseSharedTempDefault && temporaryDefault !== null) {\n\t\t\tcalls.push(new AddNotNullColumnWithTempDefaultCall({\n\t\t\t\tschemaName,\n\t\t\t\ttableName,\n\t\t\t\tcolumnName: expected.name,\n\t\t\t\tcolumn,\n\t\t\t\tcodecHooks: mutableCodecHooks,\n\t\t\t\tstorageTypes: mutableStorageTypes,\n\t\t\t\ttemporaryDefault\n\t\t\t}));\n\t\t\tcontinue;\n\t\t}\n\t\tcalls.push(new AddNotNullColumnDirectCall(schemaName, tableName, expected.name, renderColumnDdl(expected.name, expected, ctx.codecHooks)));\n\t}\n\tif (matched.length === 0) return { kind: \"no_match\" };\n\treturn {\n\t\tkind: \"match\",\n\t\tissues: issues.filter((i) => !matched.includes(i)),\n\t\tcalls\n\t};\n};\nfunction canUseSharedTemporaryDefaultStrategy(options) {\n\tconst { table, schemaTable, schemaLookup, columnName } = options;\n\tif (table.primaryKey?.columns.includes(columnName) && !schemaTable.primaryKey) return false;\n\tfor (const unique of table.uniques) {\n\t\tif (!unique.columns.includes(columnName)) continue;\n\t\tif (!schemaLookup || !hasUniqueConstraint(schemaLookup, unique.columns)) return false;\n\t}\n\tfor (const foreignKey of table.foreignKeys) {\n\t\tif (!foreignKey.source.columns.includes(columnName)) continue;\n\t\tif (!schemaLookup || !hasForeignKey(schemaLookup, foreignKey)) return false;\n\t}\n\treturn true;\n}\n/**\n* Ordered list of Postgres planner strategies, shared by `migration plan`\n* and `db update` / `db init`. The issue planner runs each strategy in\n* order, letting it consume any issues it handles, and routes whatever's\n* left through `mapNodeIssueToCall`. Behavior diverges purely on\n* `policy.allowedOperationClasses`:\n*\n* - When `'data'` is allowed (`migration plan`), the data-safe strategies\n* (`notNullBackfillCallStrategy`, `typeChangeCallStrategy`,\n* `nullableTighteningCallStrategy`) consume their matching issues and emit\n* `DataTransformCall` placeholders or recipe ops.\n*\n* - When `'data'` is not allowed (`db update` / `db init`), the\n* placeholder-emitting strategies short-circuit to `no_match`, leaving\n* the issue for the downstream strategies (`storageTypePlanCallStrategy`,\n* `notNullAddColumnCallStrategy`) or the `mapNodeIssueToCall` default to\n* handle with direct DDL.\n*\n* Codec-typed storage type entries are dispatched through\n* `storageTypePlanCallStrategy`.\n*/\nconst postgresPlannerStrategies = [\n\tnotNullBackfillCallStrategy,\n\ttypeChangeCallStrategy,\n\tnullableTighteningCallStrategy,\n\tstorageTypePlanCallStrategy,\n\tnotNullAddColumnCallStrategy\n];\n//#endregion\n//#region src/core/migrations/issue-planner.ts\nfunction issueConflict(kind, summary, location) {\n\treturn {\n\t\tkind,\n\t\tsummary,\n\t\twhy: \"Use `migration new` to author a custom migration for this change.\",\n\t\t...location ? { location } : {}\n\t};\n}\n/**\n* Classifies calls into DDL sequencing buckets. The order matches the\n* legacy walk-schema planner's emission order so `db init` and `db update`\n* produce byte-identical plans for the shared shape (deps → drops → tables\n* → columns → alters → PKs → uniques → indexes → FKs).\n*\n* `dropType` (DROP TYPE for a managed native enum) is its own bucket, ordered\n* after the general drop bucket: a type can only be dropped once every table\n* whose column uses it is gone. A column→enum edge would make this precise,\n* but `coalesceSubtreeIssues` removes the column issue under a whole-table\n* drop, so the edge never reaches the graph; the coarse bucket stands in until\n* that edge lands (the coordinate work is a later slice).\n*/\nfunction classifyCall(call) {\n\tswitch (call.factoryName) {\n\t\tcase \"createExtension\":\n\t\tcase \"createSchema\":\n\t\tcase \"createNativeEnumType\":\n\t\tcase \"addNativeEnumValue\": return \"dep\";\n\t\tcase \"dropNativeEnumType\": return \"dropType\";\n\t\tcase \"dropTable\":\n\t\tcase \"dropColumn\":\n\t\tcase \"dropConstraint\":\n\t\tcase \"dropCheckConstraint\":\n\t\tcase \"dropIndex\":\n\t\tcase \"dropDefault\": return \"drop\";\n\t\tcase \"addCheckConstraint\":\n\t\tcase \"renameCheckConstraint\": return \"unique\";\n\t\tcase \"createTable\": return \"table\";\n\t\tcase \"enableRowLevelSecurity\":\n\t\tcase \"disableRowLevelSecurity\": return \"rlsEnable\";\n\t\tcase \"createRlsPolicy\": return \"rlsPolicy\";\n\t\tcase \"dropRlsPolicy\": return \"drop\";\n\t\tcase \"addColumn\": return \"column\";\n\t\tcase \"alterColumnType\":\n\t\tcase \"setNotNull\":\n\t\tcase \"dropNotNull\":\n\t\tcase \"setDefault\": return \"alter\";\n\t\tcase \"addPrimaryKey\": return \"primaryKey\";\n\t\tcase \"addUnique\": return \"unique\";\n\t\tcase \"createIndex\":\n\t\tcase \"renameIndex\": return \"index\";\n\t\tcase \"addForeignKey\": return \"foreignKey\";\n\t\tcase \"rawSql\":\n\t\t\tif (blindCast(call).op?.target?.details?.objectType === \"type\") return \"dep\";\n\t\t\treturn \"alter\";\n\t\tdefault: return \"alter\";\n\t}\n}\nconst DEFAULT_POLICY = { allowedOperationClasses: [\n\t\"additive\",\n\t\"widening\",\n\t\"destructive\",\n\t\"data\"\n] };\nfunction emptySchemaIR() {\n\treturn new SqlSchemaIR({ tables: {} });\n}\nfunction conflictKindForCall(call) {\n\tswitch (call.factoryName) {\n\t\tcase \"alterColumnType\": return \"typeMismatch\";\n\t\tcase \"setNotNull\":\n\t\tcase \"dropNotNull\": return \"nullabilityConflict\";\n\t\tcase \"addForeignKey\":\n\t\tcase \"dropConstraint\": return \"foreignKeyConflict\";\n\t\tcase \"createIndex\":\n\t\tcase \"renameIndex\":\n\t\tcase \"dropIndex\": return \"indexIncompatible\";\n\t\tcase \"createRlsPolicy\":\n\t\tcase \"dropRlsPolicy\":\n\t\tcase \"renameRlsPolicy\": return \"rlsPolicyIncompatible\";\n\t\tdefault: return \"missingButNonAdditive\";\n\t}\n}\nfunction locationForCall(call) {\n\tconst anyCall = blindCast(call);\n\tconst location = {};\n\tif (anyCall.tableName) {\n\t\tlocation.entityKind = \"table\";\n\t\tlocation.entityName = anyCall.tableName;\n\t} else if (anyCall.typeName) {\n\t\tlocation.entityKind = \"native_enum\";\n\t\tlocation.entityName = anyCall.typeName;\n\t}\n\tif (anyCall.columnName) location.column = anyCall.columnName;\n\tif (anyCall.indexName) location.index = anyCall.indexName;\n\telse if (anyCall.newIndexName) location.index = anyCall.newIndexName;\n\tif (anyCall.constraintName) location.constraint = anyCall.constraintName;\n\telse if (anyCall.newConstraintName) location.constraint = anyCall.newConstraintName;\n\tif (anyCall.policyName) location.rlsPolicy = anyCall.policyName;\n\telse if (anyCall.policy?.name) location.rlsPolicy = anyCall.policy.name;\n\telse if (anyCall.newPolicyName) location.rlsPolicy = anyCall.newPolicyName;\n\treturn Object.keys(location).length > 0 ? blindCast(location) : void 0;\n}\nfunction conflictForDisallowedCall(call, allowed) {\n\tconst summary = `Operation \"${call.label}\" requires class \"${call.operationClass}\", but policy allows only: ${allowed.join(\", \")}`;\n\tconst location = locationForCall(call);\n\treturn {\n\t\tkind: conflictKindForCall(call),\n\t\tsummary,\n\t\twhy: \"Use `migration new` to author a custom migration for this change.\",\n\t\trefusedOperationClass: call.operationClass,\n\t\t...location ? { location } : {}\n\t};\n}\n/** The diff node an issue concerns — expected when present, else the actual (extra) node. */\nfunction issueNode(issue) {\n\tconst node = issue.expected ?? issue.actual;\n\tif (node === void 0) return void 0;\n\treturn blindCast(node);\n}\n/** DDL schema segment of a table-or-descendant issue path: `[database, ddlSchema, table, …]`. */\nfunction issueSchemaName(issue) {\n\treturn issue.path[1];\n}\n/** Table segment of a table-or-descendant issue path: `[database, ddlSchema, table, …]`. */\nfunction issueTableName(issue) {\n\treturn issue.path[2];\n}\n/** Column name embedded in a column/default issue path segment (`column:<name>`). */\nfunction issueColumnName(issue) {\n\tconst segment = issue.path[3];\n\tif (segment === void 0 || !segment.startsWith(\"column:\")) return void 0;\n\treturn segment.slice(7);\n}\n/**\n* The DDL schema name to use when EMITTING an op against `ddlSchemaName` (the\n* diff tree's resolved physical schema, `issueSchemaName(issue)`). The\n* unbound namespace's diff-tree identity resolves to `public` (a concrete\n* physical default the differ needs in order to compare its tree against\n* introspection — `resolveDdlSchemaForNamespaceStorage`), but DDL EMISSION\n* must stay unqualified so the live connection's `search_path` resolves it\n* at runtime (`boundSchema`). Recovers the logical namespace id via the\n* contract and substitutes the unbound sentinel back in when it resolves\n* there; every other namespace's `ddlSchemaName` already agrees between the\n* two resolution paths, so it passes through unchanged.\n*/\nfunction emissionSchemaName(ctx, ddlSchemaName) {\n\treturn resolveNamespaceIdForDdlSchema(ctx.toContract, ddlSchemaName) === UNBOUND_NAMESPACE_ID ? UNBOUND_NAMESPACE_ID : ddlSchemaName;\n}\n/** Whether the expected/actual native type (resolved, or raw+many fallback) differs — mirrors `SqlColumnIR.isEqualTo`'s type comparison. */\nfunction columnTypeChanged(expected, actual) {\n\tif (expected.resolvedNativeType !== void 0 && actual.resolvedNativeType !== void 0) return expected.resolvedNativeType !== actual.resolvedNativeType;\n\treturn expected.nativeType !== actual.nativeType || Boolean(expected.many) !== Boolean(actual.many);\n}\n/**\n* The generic differ is total: a missing/extra table (or column) emits an\n* issue for itself AND for every node in its subtree. `CreateTable`/`DropTable`\n* and `AddColumn`/`DropColumn` already account for the whole subtree, so the\n* nested issues are redundant — coalescing drops any issue whose path is a\n* strict descendant of a `not-found`/`not-expected` issue's path. Run over the\n* relational subset ONLY (policy issues and synthesized namespace issues are\n* handled on their own paths, never coalesced against tables).\n*/\nfunction coalesceSubtreeIssues(issues) {\n\tconst collapsingPaths = issues.filter((issue) => issueOutcome(issue) !== \"not-equal\").map((issue) => issue.path);\n\tif (collapsingPaths.length === 0) return issues;\n\treturn issues.filter((issue) => !collapsingPaths.some((ancestor) => isStrictDescendantPath(issue.path, ancestor)));\n}\nfunction isStrictDescendantPath(path, ancestor) {\n\tif (path.length <= ancestor.length) return false;\n\tfor (let i = 0; i < ancestor.length; i += 1) if (path[i] !== ancestor[i]) return false;\n\treturn true;\n}\nfunction fkSpecFromNode(fk, tableName) {\n\treturn {\n\t\tname: fk.name ?? `${tableName}_${fk.columns.join(\"_\")}_fkey`,\n\t\tcolumns: [...fk.columns],\n\t\treferences: {\n\t\t\tschema: fk.referencedSchema ?? \"\",\n\t\t\ttable: fk.referencedTable,\n\t\t\tcolumns: [...fk.referencedColumns]\n\t\t},\n\t\t...ifDefined(\"onDelete\", fk.onDelete),\n\t\t...ifDefined(\"onUpdate\", fk.onUpdate)\n\t};\n}\n/**\n* Builds the `CreateTable` + child `CreateIndex` / `AddForeignKey` / `AddUnique`\n* calls for a newly-expected table, reading only the table node's children. The\n* PK and every declared CHECK go inline as table constraints; indexes\n* (declared + FK-backing, already merged and ordered at derivation) and the\n* FK / unique constraints are separate calls (re-bucketed downstream). Every\n* column's DDL is resolved from its `codecRef` via `renderColumnDdl`.\n*/\nfunction buildCreateTableCallsFromNode(schemaName, ddlSchemaName, table, codecHooks) {\n\tconst ddlColumns = Object.values(table.columns).map((c) => renderColumnDdl(c.name, c, codecHooks));\n\tconst primaryKeyConstraints = table.primaryKey ? [contractFree.primaryKey([...table.primaryKey.columns], { ...ifDefined(\"name\", table.primaryKey.name) })] : [];\n\tconst declaredChecks = (table.checks ?? []).map((c) => contractFree.checkExpression(c.name, c.expression));\n\tconst allTableConstraints = [...primaryKeyConstraints, ...declaredChecks];\n\tconst calls = [new CreateTableCall(schemaName, table.name, ddlColumns, allTableConstraints.length > 0 ? allTableConstraints : void 0)];\n\tfor (const index of table.indexes) calls.push(createIndexCallFromNode(index, schemaName, table.name));\n\tfor (const fk of table.foreignKeys) calls.push(new AddForeignKeyCall(schemaName, table.name, fkSpecFromNode(fk, table.name)));\n\tfor (const unique of table.uniques) {\n\t\tconst constraintName = unique.name ?? `${table.name}_${unique.columns.join(\"_\")}_key`;\n\t\tcalls.push(new AddUniqueCall(schemaName, table.name, constraintName, [...unique.columns]));\n\t}\n\tif (table.rlsEnabled) calls.push(new EnableRowLevelSecurityCall(ddlSchemaName, table.name));\n\treturn calls;\n}\nfunction nodeConflict(kind, message) {\n\treturn issueConflict(kind, message);\n}\n/**\n* True when `actualMembers` (the live database's ordered members) is a\n* strict, order-preserving prefix of `expectedMembers` (the contract's) —\n* the database already carries every contract member, in declaration\n* order, and the contract declares at least one member the database still\n* lacks. Any other relationship — a renamed value, a removed value, a\n* reordering, or the database holding members the contract lacks — is not\n* a suffix append.\n*/\nfunction isNativeEnumSuffixAppend(actualMembers, expectedMembers) {\n\tif (actualMembers.length >= expectedMembers.length) return false;\n\treturn actualMembers.every((member, index) => member === expectedMembers[index]);\n}\n/** Operator-worded refusal for a native-enum member change beyond a suffix append (design ruling — tests match this verbatim). */\nfunction nativeEnumMemberChangeRefusal(options) {\n\treturn `Native enum type \"${options.ddlSchemaName}\".\"${options.typeName}\" changed beyond appending new values (contract declares [${options.expectedMembers.join(\", \")}], database has [${options.actualMembers.join(\", \")}]). Prisma 8 does not modify a native enum's existing values (rename, removal, reorder) — see https://pris.ly/d/postgres-native-enums. Author the change manually with \\`migration new\\`.`;\n}\n/**\n* Managed native-enum issue -> op lowering. A missing declared type creates\n* it; an unclaimed live type drops it (ownership-scoped upstream by\n* `retainUnownedExtras`, destructiveness gated by the operation-class\n* policy); a paired member-value mismatch lowers to one `ALTER TYPE ... ADD\n* VALUE` per appended member when the database's members are a strict,\n* order-preserving prefix of the contract's — any other change (rename,\n* removal, reorder, or the database holding members the contract lacks) is\n* refused with a NAMED diagnostic, never a silent no-op and never a\n* drop-and-recreate.\n*/\nfunction mapNativeEnumNodeIssue(issue, ctx) {\n\tconst ddlSchemaName = issueSchemaName(issue);\n\tif (ddlSchemaName === void 0) return notOk(nodeConflict(\"unsupportedOperation\", `Enum issue has no schema in its path: ${issue.path.join(\"/\")}`));\n\tconst schemaName = emissionSchemaName(ctx, ddlSchemaName);\n\tif (issueOutcome(issue) === \"not-found\") {\n\t\tconst expected = blindCast(issue.expected);\n\t\treturn ok([new CreateNativeEnumTypeCall(schemaName, expected.typeName, expected.members)]);\n\t}\n\tif (issueOutcome(issue) === \"not-expected\") return ok([new DropNativeEnumTypeCall(schemaName, blindCast(issue.actual).typeName)]);\n\tconst expected = blindCast(issue.expected);\n\tconst actual = blindCast(issue.actual);\n\tif (isNativeEnumSuffixAppend(actual.members, expected.members)) return ok(expected.members.slice(actual.members.length).map((value) => new AddNativeEnumValueCall(schemaName, expected.typeName, value)));\n\treturn notOk(nodeConflict(\"unsupportedOperation\", nativeEnumMemberChangeRefusal({\n\t\tddlSchemaName,\n\t\ttypeName: expected.typeName,\n\t\texpectedMembers: expected.members,\n\t\tactualMembers: actual.members\n\t})));\n}\nfunction mapTableNodeIssue(issue, schemaName, ddlSchemaName, codecHooks) {\n\tif (issueOutcome(issue) === \"not-found\") return ok(buildCreateTableCallsFromNode(schemaName, ddlSchemaName, blindCast(issue.expected), codecHooks));\n\tif (issueOutcome(issue) === \"not-expected\") return ok([new DropTableCall(schemaName, blindCast(issue.actual).name)]);\n\tconst expected = blindCast(issue.expected);\n\tconst actual = blindCast(issue.actual);\n\tif (expected.rlsEnabled && !actual.rlsEnabled) return ok([new EnableRowLevelSecurityCall(ddlSchemaName, expected.name)]);\n\tif (!expected.rlsEnabled && actual.rlsEnabled) return ok([new DisableRowLevelSecurityCall(ddlSchemaName, expected.name)]);\n\treturn notOk(nodeConflict(\"unsupportedOperation\", `unhandled table-attribute drift on \"${expected.name}\": table not-equal with no rlsEnabled delta (a second table attribute drifted)`));\n}\nfunction mapColumnNodeIssue(issue, schemaName, tableName, codecHooks) {\n\tif (issueOutcome(issue) === \"not-found\") {\n\t\tconst column = blindCast(issue.expected);\n\t\treturn ok([new AddColumnCall(schemaName, tableName, renderColumnDdl(column.name, column, codecHooks))]);\n\t}\n\tif (issueOutcome(issue) === \"not-expected\") return ok([new DropColumnCall(schemaName, tableName, blindCast(issue.actual).name)]);\n\tconst expected = blindCast(issue.expected);\n\tconst actual = blindCast(issue.actual);\n\tconst calls = [];\n\tif (columnTypeChanged(expected, actual)) {\n\t\tconst { qualifiedTargetType, formatTypeExpected } = renderColumnAlterType(expected, codecHooks);\n\t\tcalls.push(new AlterColumnTypeCall(schemaName, tableName, expected.name, {\n\t\t\tqualifiedTargetType,\n\t\t\tformatTypeExpected,\n\t\t\trawTargetTypeForLabel: qualifiedTargetType\n\t\t}));\n\t}\n\tif (expected.nullable !== actual.nullable) calls.push(expected.nullable ? new DropNotNullCall(schemaName, tableName, expected.name) : new SetNotNullCall(schemaName, tableName, expected.name));\n\treturn ok(calls);\n}\nfunction mapColumnDefaultNodeIssue(issue, schemaName, tableName, columnName, codecHooks) {\n\tif (issueOutcome(issue) === \"not-expected\") return ok([new DropDefaultCall(schemaName, tableName, columnName)]);\n\tif (issue.expected === void 0) return ok([]);\n\tconst defaultSql = renderColumnDefaultSql(columnName, blindCast(issue.expected), codecHooks);\n\tif (!defaultSql) return ok([]);\n\treturn ok([new SetDefaultCall(schemaName, tableName, columnName, defaultSql, issueOutcome(issue) === \"not-equal\" ? \"widening\" : \"additive\")]);\n}\nfunction mapPrimaryKeyNodeIssue(issue, schemaName, tableName) {\n\tif (issueOutcome(issue) === \"not-found\") {\n\t\tconst pk = blindCast(issue.expected);\n\t\treturn ok([new AddPrimaryKeyCall(schemaName, tableName, pk.name ?? `${tableName}_pkey`, [...pk.columns])]);\n\t}\n\tif (issueOutcome(issue) === \"not-expected\") return ok([new DropConstraintCall(schemaName, tableName, blindCast(issue.actual).name ?? `${tableName}_pkey`, \"primaryKey\")]);\n\treturn notOk(nodeConflict(\"indexIncompatible\", issue.path.join(\"/\")));\n}\nfunction mapForeignKeyNodeIssue(issue, schemaName, tableName) {\n\tif (issueOutcome(issue) === \"not-found\") return ok([new AddForeignKeyCall(schemaName, tableName, fkSpecFromNode(blindCast(issue.expected), tableName))]);\n\tif (issueOutcome(issue) === \"not-expected\") {\n\t\tconst fk = blindCast(issue.actual);\n\t\treturn ok([new DropConstraintCall(schemaName, tableName, fk.name ?? `${tableName}_${fk.columns.join(\"_\")}_fkey`, \"foreignKey\")]);\n\t}\n\treturn notOk(nodeConflict(\"foreignKeyConflict\", issue.path.join(\"/\")));\n}\nfunction mapUniqueNodeIssue(issue, schemaName, tableName) {\n\tif (issueOutcome(issue) === \"not-found\") {\n\t\tconst unique = blindCast(issue.expected);\n\t\treturn ok([new AddUniqueCall(schemaName, tableName, unique.name ?? `${tableName}_${unique.columns.join(\"_\")}_key`, [...unique.columns])]);\n\t}\n\tif (issueOutcome(issue) === \"not-expected\") {\n\t\tconst unique = blindCast(issue.actual);\n\t\treturn ok([new DropConstraintCall(schemaName, tableName, unique.name ?? `${tableName}_${unique.columns.join(\"_\")}_key`, \"unique\")]);\n\t}\n\treturn notOk(nodeConflict(\"indexIncompatible\", issue.path.join(\"/\")));\n}\n/**\n* The CreateIndexCall for a name-identified index node: the node's own name\n* verbatim, its element list (column tuple or opaque expression), and the\n* unique/type/options/where attributes carried through.\n*/\nfunction createIndexCallFromNode(index, schemaName, tableName) {\n\tconst extras = {};\n\tif (index.type !== void 0) extras.type = index.type;\n\tif (index.options !== void 0) extras.options = index.options;\n\tif (index.where !== void 0) extras.where = index.where;\n\tif (index.unique) extras.unique = true;\n\treturn new CreateIndexCall(schemaName, tableName, index.name, index.columns !== void 0 ? { columns: [...index.columns] } : { expression: index.expression ?? \"\" }, extras);\n}\nfunction mapIndexNodeIssue(issue, schemaName, tableName) {\n\tif (issueOutcome(issue) === \"not-found\") return ok([createIndexCallFromNode(blindCast(issue.expected), schemaName, tableName)]);\n\tif (issueOutcome(issue) === \"not-expected\") return ok([new DropIndexCall(schemaName, tableName, blindCast(issue.actual).name)]);\n\treturn notOk(nodeConflict(\"indexIncompatible\", issue.path.join(\"/\")));\n}\n/**\n* The index treatment: a missing check is added, an undeclared live check is\n* dropped, and a paired divergence is a conflict. `not-equal` is reachable only\n* for an exact-named expected check — a wire-named one compares by name, so a\n* changed predicate re-suffixes the name and arrives as missing + extra\n* instead.\n*/\nfunction mapCheckNodeIssue(issue, schemaName, tableName) {\n\tif (issueOutcome(issue) === \"not-found\") {\n\t\tconst check = blindCast(issue.expected);\n\t\treturn ok([new AddCheckConstraintCall(schemaName, tableName, check.name, check.expression)]);\n\t}\n\tif (issueOutcome(issue) === \"not-expected\") return ok([new DropCheckConstraintCall(schemaName, tableName, blindCast(issue.actual).name)]);\n\treturn notOk(nodeConflict(\"unsupportedOperation\", issue.path.join(\"/\")));\n}\n/**\n* Maps one node-typed diff issue to its migration call(s), dispatching on the\n* node's `nodeKind` and the issue's presence-derived `issueOutcome`, reading\n* nodes and resolving column DDL from `codecRef` via `column-ddl-rendering.ts`.\n*/\nfunction mapNodeIssueToCall(issue, ctx) {\n\tconst node = issueNode(issue);\n\tif (node === void 0) return notOk(nodeConflict(\"unsupportedOperation\", `Issue carries neither an expected nor an actual node: ${issue.path.join(\"/\")}`));\n\tif (node.nodeKind === PostgresSchemaNodeKind.namespace) {\n\t\tif (issueOutcome(issue) !== \"not-found\") return notOk(nodeConflict(\"unsupportedOperation\", `Unexpected namespace drift: ${issue.path.join(\"/\")}`));\n\t\treturn ok([new CreateSchemaCall(blindCast(issue.expected).schemaName)]);\n\t}\n\tif (node.nodeKind === PostgresSchemaNodeKind.nativeEnum) return mapNativeEnumNodeIssue(issue, ctx);\n\tconst ddlSchemaName = issueSchemaName(issue);\n\tconst tableName = issueTableName(issue);\n\tif (ddlSchemaName === void 0 || tableName === void 0) return notOk(nodeConflict(\"unsupportedOperation\", `Issue has no schema/table in its path: ${issue.path.join(\"/\")}`));\n\tconst schemaName = emissionSchemaName(ctx, ddlSchemaName);\n\tswitch (node.nodeKind) {\n\t\tcase PostgresSchemaNodeKind.table: return mapTableNodeIssue(issue, schemaName, ddlSchemaName, ctx.codecHooks);\n\t\tcase RelationalSchemaNodeKind.column: return mapColumnNodeIssue(issue, schemaName, tableName, ctx.codecHooks);\n\t\tcase RelationalSchemaNodeKind.columnDefault: {\n\t\t\tconst columnName = issueColumnName(issue);\n\t\t\tif (columnName === void 0) return notOk(nodeConflict(\"unsupportedOperation\", `Default issue has no column in its path: ${issue.path.join(\"/\")}`));\n\t\t\treturn mapColumnDefaultNodeIssue(issue, schemaName, tableName, columnName, ctx.codecHooks);\n\t\t}\n\t\tcase RelationalSchemaNodeKind.primaryKey: return mapPrimaryKeyNodeIssue(issue, schemaName, tableName);\n\t\tcase RelationalSchemaNodeKind.foreignKey: return mapForeignKeyNodeIssue(issue, schemaName, tableName);\n\t\tcase RelationalSchemaNodeKind.unique: return mapUniqueNodeIssue(issue, schemaName, tableName);\n\t\tcase RelationalSchemaNodeKind.index: return mapIndexNodeIssue(issue, schemaName, tableName);\n\t\tcase RelationalSchemaNodeKind.check: return mapCheckNodeIssue(issue, schemaName, tableName);\n\t\tdefault: return notOk(nodeConflict(\"unsupportedOperation\", `Unhandled node kind: ${node.nodeKind}`));\n\t}\n}\n/**\n* Runs the ordered strategy list over the node-typed diff issues, maps\n* leftover issues via {@link mapNodeIssueToCall}, applies operation-class\n* policy gating, and buckets calls into the fixed DDL emission order (dep →\n* drop → table → column → recipe → alter → primaryKey → unique → index →\n* foreignKey).\n*/\nfunction planIssues(options) {\n\tconst policyProvided = options.policy !== void 0;\n\tconst policy = options.policy ?? DEFAULT_POLICY;\n\tconst schema = options.schema ?? emptySchemaIR();\n\tconst frameworkComponents = options.frameworkComponents ?? [];\n\tconst context = {\n\t\ttoContract: options.toContract,\n\t\tfromContract: options.fromContract,\n\t\tschemaName: options.schemaName,\n\t\tcodecHooks: options.codecHooks,\n\t\tstorageTypes: options.storageTypes,\n\t\tschema,\n\t\tpolicy,\n\t\tframeworkComponents\n\t};\n\tconst strategies = options.strategies ?? postgresPlannerStrategies;\n\tlet remaining = options.issues;\n\tconst recipeCalls = [];\n\tconst bucketablePatternCalls = [];\n\tfor (const strategy of strategies) {\n\t\tconst result = strategy(remaining, context);\n\t\tif (result.kind === \"match\") {\n\t\t\tremaining = result.issues;\n\t\t\tif (result.recipe) recipeCalls.push(...result.calls);\n\t\t\telse bucketablePatternCalls.push(...result.calls);\n\t\t}\n\t}\n\tconst sorted = orderIssuesByDependencies(remaining);\n\tconst defaultCalls = [];\n\tconst conflicts = [];\n\tfor (const issue of sorted) {\n\t\tconst result = mapNodeIssueToCall(issue, context);\n\t\tif (result.ok) defaultCalls.push(...result.value);\n\t\telse conflicts.push(result.failure);\n\t}\n\tconst allowed = policy.allowedOperationClasses;\n\tlet gatedDefault = defaultCalls;\n\tlet gatedRecipe = recipeCalls;\n\tlet gatedBucketable = bucketablePatternCalls;\n\tif (policyProvided) {\n\t\tconst keepIfAllowed = (bucket) => (call) => {\n\t\t\tif (allowed.includes(call.operationClass)) {\n\t\t\t\tbucket.push(call);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconflicts.push(conflictForDisallowedCall(call, allowed));\n\t\t};\n\t\tconst gatedDefaultBucket = [];\n\t\tconst gatedRecipeBucket = [];\n\t\tconst gatedBucketableBucket = [];\n\t\tdefaultCalls.forEach(keepIfAllowed(gatedDefaultBucket));\n\t\trecipeCalls.forEach(keepIfAllowed(gatedRecipeBucket));\n\t\tbucketablePatternCalls.forEach(keepIfAllowed(gatedBucketableBucket));\n\t\tgatedDefault = gatedDefaultBucket;\n\t\tgatedRecipe = gatedRecipeBucket;\n\t\tgatedBucketable = gatedBucketableBucket;\n\t}\n\tif (conflicts.length > 0) return notOk(conflicts);\n\tconst combinedBucketable = [...gatedDefault, ...gatedBucketable];\n\tconst byCategory = (cat) => combinedBucketable.filter((c) => classifyCall(c) === cat);\n\treturn ok({ calls: [\n\t\t...byCategory(\"dep\"),\n\t\t...byCategory(\"drop\"),\n\t\t...byCategory(\"dropType\"),\n\t\t...byCategory(\"table\"),\n\t\t...byCategory(\"column\"),\n\t\t...gatedRecipe,\n\t\t...byCategory(\"alter\"),\n\t\t...byCategory(\"primaryKey\"),\n\t\t...byCategory(\"unique\"),\n\t\t...byCategory(\"index\"),\n\t\t...byCategory(\"foreignKey\"),\n\t\t...byCategory(\"rlsEnable\")\n\t] });\n}\n//#endregion\n//#region src/core/migrations/control-policy.ts\n/**\n* Factory calls that create a whole, previously-absent top-level storage\n* object. Used to decide whether `tolerated` permits a call (it only allows\n* creating absent objects, never modifying existing ones).\n*\n* Deliberately an explicit, closed set rather than a `factoryName`\n* create/alter/drop classification: it answers exactly one yes/no question\n* and is fail-closed. Any call not listed here — including future or\n* extension-contributed factories — is treated as NOT object-creation, so it\n* is suppressed under `tolerated` rather than permissively emitted.\n*\n* Lists the creation factories that actually reach the call-side resolver\n* (`resolvePostgresCallControlPolicySubject`) — today only RLS policy\n* creation, from `planPostgresSchemaDiff`. Every other whole-object create\n* (table, schema, native enum, and RLS enablement) is constructed inside\n* `planIssues` and graded on the node side by\n* `resolvePostgresNodeIssueCreationFactoryName`, so none of them are listed\n* here.\n*/\nconst OBJECT_CREATION_FACTORIES = /* @__PURE__ */ new Set([\"createRlsPolicy\"]);\nfunction createsNewTopLevelObject(call) {\n\treturn OBJECT_CREATION_FACTORIES.has(call.factoryName);\n}\nfunction ddlSchemaNameForNamespace(contract, namespaceId) {\n\tconst namespace = contract.storage.namespaces[namespaceId];\n\treturn isPostgresSchema(namespace) ? namespace.ddlSchemaName(contract.storage) : namespaceId;\n}\n/**\n* Resolve the namespace a declared storage entity lives in by walking every\n* namespace for one whose `entries` map actually contains the coordinate —\n* a table by its name, a native enum by its physical type name (see\n* {@link postgresNodeStorageCoordinate}). When `ddlSchemaName` is given, the\n* match must also land in that DDL schema (disambiguates same-named entities\n* declared under different namespaces); when omitted, the first namespace\n* that declares the entity wins. Falls back to {@link UNBOUND_NAMESPACE_ID}\n* when no namespace declares it — e.g. an extra/dropped entity the contract\n* doesn't claim at all.\n*/\nfunction resolveNamespaceIdForEntity(contract, coordinate, ddlSchemaName) {\n\tfor (const namespaceId of Object.keys(contract.storage.namespaces)) {\n\t\tif (!entityAt(contract.storage, {\n\t\t\tnamespaceId,\n\t\t\t...coordinate\n\t\t})) continue;\n\t\tif (ddlSchemaName === void 0 || ddlSchemaNameForNamespace(contract, namespaceId) === ddlSchemaName) return namespaceId;\n\t}\n\treturn UNBOUND_NAMESPACE_ID;\n}\nfunction resolveNamespaceIdForTable(contract, tableName, ddlSchemaName) {\n\treturn resolveNamespaceIdForEntity(contract, {\n\t\tentityKind: \"table\",\n\t\tentityName: tableName\n\t}, ddlSchemaName);\n}\nfunction resolveNamespaceIdForDdlSchema(contract, ddlSchemaName) {\n\tfor (const namespaceId of Object.keys(contract.storage.namespaces)) {\n\t\tconst ns = contract.storage.namespaces[namespaceId];\n\t\tif (isPostgresSchema(ns) && ns.ddlSchemaName(contract.storage) === ddlSchemaName) return namespaceId;\n\t\tif (namespaceId === ddlSchemaName) return namespaceId;\n\t}\n\treturn UNBOUND_NAMESPACE_ID;\n}\nfunction postgresCallFields(call) {\n\treturn {\n\t\t...ifDefined(\"schemaName\", \"schemaName\" in call ? call.schemaName : void 0),\n\t\t...ifDefined(\"tableName\", \"tableName\" in call ? call.tableName : void 0),\n\t\t...ifDefined(\"columnName\", \"columnName\" in call ? call.columnName : void 0)\n\t};\n}\nfunction formatSuppressionSubjectLabel(subject, contract) {\n\tif (subject === void 0) return \"unknown\";\n\tconst ddlSchema = ddlSchemaNameForNamespace(contract, subject.namespaceId);\n\tif (subject.entityKind !== void 0 && subject.entityName !== void 0) {\n\t\tconst entityLabel = `${subject.entityKind} \"${ddlSchema}.${subject.entityName}\"`;\n\t\treturn subject.rlsPolicy !== void 0 ? `RLS policy \"${subject.rlsPolicy}\" on ${entityLabel}` : entityLabel;\n\t}\n\treturn `namespace \"${ddlSchema}\"`;\n}\nfunction postgresSuppressionSummary(subjectLabel, subject, policy) {\n\tconst namespace = subject?.namespaceId ?? \"unknown\";\n\tconst declared = subject?.explicitNodeControlPolicy;\n\tif (policy === \"external\" && declared === \"managed\") return `control policy suppressed: ${subjectLabel} — namespace '${namespace}' has effective control 'external' but declared 'managed'`;\n\treturn `control policy suppressed: ${subjectLabel} — namespace '${namespace}' has effective control '${policy}'${declared ? ` but declared '${declared}'` : \"\"}`;\n}\n/**\n* Render one family {@link SuppressionRecord} into a target `SqlPlannerConflict`.\n* The family decides *that* a subject is suppressed and hands over the raw\n* coordinate + policy; the label, message, and location are rendered here,\n* driven entirely by the subject's own `(entityKind, entityName)` coordinate\n* — no target-owned table-vs-enum vocabulary.\n*/\nfunction renderPostgresSuppression(record, contract) {\n\tconst subject = record.subject;\n\treturn {\n\t\tkind: \"controlPolicySuppressedCall\",\n\t\tsummary: postgresSuppressionSummary(formatSuppressionSubjectLabel(subject, contract), subject, record.policy),\n\t\tlocation: {\n\t\t\t...ifDefined(\"namespaceId\", subject?.namespaceId),\n\t\t\t...ifDefined(\"entityKind\", subject?.entityKind),\n\t\t\t...ifDefined(\"entityName\", subject?.entityName),\n\t\t\t...ifDefined(\"column\", subject?.column),\n\t\t\t...ifDefined(\"rlsPolicy\", subject?.rlsPolicy)\n\t\t},\n\t\tmeta: {\n\t\t\tcontrolPolicy: record.policy,\n\t\t\t...ifDefined(\"factoryName\", record.factoryName),\n\t\t\t...ifDefined(\"rlsPolicy\", subject?.rlsPolicy),\n\t\t\t...ifDefined(\"declaredControlPolicy\", subject?.explicitNodeControlPolicy)\n\t\t}\n\t};\n}\nfunction resolvePostgresCallControlPolicySubject(call, contract) {\n\tconst callFields = postgresCallFields(call);\n\tconst createsNewObject = createsNewTopLevelObject(call);\n\tif (call.factoryName === \"createSchema\" && callFields.schemaName) return {\n\t\tnamespaceId: resolveNamespaceIdForDdlSchema(contract, callFields.schemaName),\n\t\tcreatesNewObject\n\t};\n\tif (callFields.tableName) {\n\t\tconst namespaceId = resolveNamespaceIdForTable(contract, callFields.tableName, callFields.schemaName);\n\t\tconst tableControlPolicy = entityAt(contract.storage, {\n\t\t\tnamespaceId,\n\t\t\tentityKind: \"table\",\n\t\t\tentityName: callFields.tableName\n\t\t})?.control;\n\t\treturn {\n\t\t\tnamespaceId,\n\t\t\tentityKind: \"table\",\n\t\t\tentityName: callFields.tableName,\n\t\t\t...ifDefined(\"column\", callFields.columnName),\n\t\t\t...ifDefined(\"explicitNodeControlPolicy\", tableControlPolicy),\n\t\t\tcreatesNewObject\n\t\t};\n\t}\n\tif (callFields.schemaName) return {\n\t\tnamespaceId: resolveNamespaceIdForDdlSchema(contract, callFields.schemaName),\n\t\tcreatesNewObject\n\t};\n}\n/**\n* Node kinds whose *absence* is the creation of a whole, top-level Postgres\n* object: a namespace, a table, or a native enum. Used by\n* {@link resolvePostgresNodeIssueCreationFactoryName} to decide whether a\n* `tolerated` subject permits the issue to flow into the planner\n* (create-if-absent) and to seed the suppressed-subject warning's\n* `factoryName` when the planner is skipped. RLS policy creation is not\n* listed here — policy issues never reach this issue-based partition (they\n* are routed to `planPostgresSchemaDiff` and gated via the call-based\n* {@link resolvePostgresCallControlPolicySubject} instead).\n*/\nconst POSTGRES_NODE_CREATION_FACTORY = Object.freeze({\n\t[PostgresSchemaNodeKind.namespace]: \"createSchema\",\n\t[PostgresSchemaNodeKind.table]: \"createTable\",\n\t[PostgresSchemaNodeKind.nativeEnum]: \"createNativeEnumType\"\n});\n/**\n* A table `not-equal` issue whose `rlsEnabled` flips OFF→ON (expected on,\n* actual off) is enablement toward `ENABLE ROW LEVEL SECURITY`. It is\n* creation-class on the node side because `isEnablementCreationIssue` and\n* {@link resolvePostgresNodeIssueCreationFactoryName} treat this OFF→ON delta\n* as a creation: enabling RLS establishes the fail-closed guard the declared\n* policy set attaches to, the same grant `tolerated` extends to creating the\n* policies themselves. The opposite direction (`DISABLE`) is a modification\n* and stays managed-only. Keying on the actual delta (not just the expected\n* bit) keeps this correct if a second table attribute ever joins\n* `isEqualTo`: a not-equal with no `rlsEnabled` delta is not enablement, so\n* it is not admitted as creation-class here.\n*/\nfunction isEnablementCreationIssue(issue) {\n\tif (issueOutcome(issue) !== \"not-equal\") return false;\n\tconst { expected, actual } = issue;\n\treturn expected !== void 0 && actual !== void 0 && PostgresTableSchemaNode.is(expected) && PostgresTableSchemaNode.is(actual) && expected.rlsEnabled === true && actual.rlsEnabled === false;\n}\nfunction resolvePostgresNodeIssueCreationFactoryName(issue) {\n\tif (isEnablementCreationIssue(issue)) return \"enableRowLevelSecurity\";\n\tif (issueOutcome(issue) !== \"not-found\") return void 0;\n\tconst node = issue.expected ?? issue.actual;\n\tif (node === void 0) return void 0;\n\treturn POSTGRES_NODE_CREATION_FACTORY[node.nodeKind];\n}\n/**\n* Resolves the control-policy subject for a node-typed {@link SchemaDiffIssue}\n* (the issue-side mirror of `resolvePostgresCallControlPolicySubject`).\n* Storage entities resolve off their node coordinate; a sub-entity issue\n* resolves off the enclosing table read from the issue path; an unclaimed\n* extra falls back to the unbound coordinate. A role always resolves\n* `'external'` — roles are referenced, never owned.\n*/\nfunction resolvePostgresNodeIssueControlPolicySubject(issue, contract) {\n\tconst node = issue.expected ?? issue.actual;\n\tif (node === void 0) return void 0;\n\tif (node.nodeKind === PostgresSchemaNodeKind.namespace) return {\n\t\tnamespaceId: resolveNamespaceIdForDdlSchema(contract, blindCast(node).schemaName),\n\t\tcreatesNewObject: issueOutcome(issue) === \"not-found\"\n\t};\n\tif (node.nodeKind === PostgresSchemaNodeKind.role) {\n\t\tconst roleName = issue.path[1];\n\t\treturn {\n\t\t\tnamespaceId: UNBOUND_NAMESPACE_ID,\n\t\t\texplicitNodeControlPolicy: (roleName === void 0 ? void 0 : entityAt(contract.storage, {\n\t\t\t\tnamespaceId: UNBOUND_NAMESPACE_ID,\n\t\t\t\tentityKind: \"role\",\n\t\t\t\tentityName: roleName\n\t\t\t}))?.control ?? \"external\",\n\t\t\tcreatesNewObject: false\n\t\t};\n\t}\n\tconst coordinate = postgresNodeStorageCoordinate(node);\n\tif (coordinate !== void 0) {\n\t\tconst namespaceId = resolveNamespaceIdForEntity(contract, coordinate, issue.path[1]);\n\t\tconst entityControl = entityAt(contract.storage, {\n\t\t\tnamespaceId,\n\t\t\t...coordinate\n\t\t})?.control;\n\t\treturn {\n\t\t\tnamespaceId,\n\t\t\t...coordinate,\n\t\t\t...ifDefined(\"column\", issueColumnName(issue)),\n\t\t\t...ifDefined(\"explicitNodeControlPolicy\", entityControl),\n\t\t\tcreatesNewObject: resolvePostgresNodeIssueCreationFactoryName(issue) !== void 0\n\t\t};\n\t}\n\tconst tableName = issue.path[2];\n\tif (tableName === void 0) return void 0;\n\tconst ddlSchemaName = issue.path[1];\n\tconst namespaceId = resolveNamespaceIdForTable(contract, tableName, ddlSchemaName);\n\tconst table = entityAt(contract.storage, {\n\t\tnamespaceId,\n\t\tentityKind: \"table\",\n\t\tentityName: tableName\n\t});\n\treturn {\n\t\tnamespaceId,\n\t\tentityKind: \"table\",\n\t\tentityName: tableName,\n\t\t...ifDefined(\"column\", issueColumnName(issue)),\n\t\t...ifDefined(\"explicitNodeControlPolicy\", table?.control),\n\t\tcreatesNewObject: resolvePostgresNodeIssueCreationFactoryName(issue) !== void 0\n\t};\n}\n//#endregion\nexport { resolvePostgresNodeIssueCreationFactoryName as a, issueNode as c, postgresPlannerStrategies as d, postgresNodeStorageCoordinate as f, resolvePostgresNodeIssueControlPolicySubject as i, issueSchemaName as l, resolveNamespaceIdForDdlSchema as n, coalesceSubtreeIssues as o, resolvePostgresCallControlPolicySubject as r, conflictForDisallowedCall as s, renderPostgresSuppression as t, planIssues as u };\n\n//# sourceMappingURL=control-policy-BYo5QPof.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-types-Cl18KnNY-5I34Vd6Z.mjs","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/data-types-Cl18KnNY.mjs"],"sourcesContent":["import { s as postgresError } from \"./errors-DYyzTYzE.mjs\";\nimport { canonicalDateTime, isNonFiniteText, numeralText } from \"@internal/sql-relational-core/ast\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { dataType } from \"@internal/framework-components/codec\";\nimport { type } from \"arktype\";\n//#region src/core/codec-helpers.ts\nconst precisionParamsSchema = type({ \"precision?\": \"number.integer >= 0 & number.integer <= 6\" });\nfunction renderLength(typeName, typeParams) {\n\tconst length = typeParams.length;\n\tif (length === void 0) return;\n\tif (typeof length !== \"number\" || !Number.isFinite(length) || !Number.isInteger(length)) throw postgresError(\"RUNTIME.TYPE_PARAMS_INVALID\", `renderOutputType: expected integer \"length\" in typeParams for ${typeName}, got ${String(length)}`, { meta: {\n\t\tnativeType: typeName,\n\t\tparam: \"length\",\n\t\treceived: String(length)\n\t} });\n\treturn `${typeName}<${length}>`;\n}\nfunction renderPrecision(typeName, typeParams) {\n\tconst precision = typeParams.precision;\n\tif (precision === void 0) return typeName;\n\tif (typeof precision !== \"number\" || !Number.isFinite(precision) || !Number.isInteger(precision)) throw postgresError(\"RUNTIME.TYPE_PARAMS_INVALID\", `renderOutputType: expected integer \"precision\" in typeParams for ${typeName}, got ${String(precision)}`, { meta: {\n\t\tnativeType: typeName,\n\t\tparam: \"precision\",\n\t\treceived: String(precision)\n\t} });\n\treturn `${typeName}<${precision}>`;\n}\n/**\n* A `numeric` value as its canonical decimal text. A number is written out without an exponent,\n* because `numeric` text has no exponent syntax and `encodeJson` refuses one.\n*/\nconst pgNumericDecode = (wire) => {\n\tif (typeof wire === \"number\") return numeralText(wire);\n\treturn wire;\n};\nconst DECIMAL_INTEGER = /^-?\\d+$/;\n/**\n* Requires an application value to be of the JS type the codec reads.\n*\n* A range check reads a value of the wrong type as a value out of range, and\n* reports a number plainly inside the range as outside it — so the type is\n* established first and answered for on its own terms, naming what a caller\n* has to change.\n*/\nconst requireJsType = (codecId, expected, value) => {\n\tif (typeof value === expected) return;\n\tthrow postgresError(\"RUNTIME.ENCODE_FAILED\", `${codecId} value must be a ${expected}, got ${typeof value} ${String(value)}`, { meta: {\n\t\tcodecId,\n\t\treceived: typeof value\n\t} });\n};\n/** Writes a `bigint` application value as the decimal text the wire form of the exact integer codecs carries. */\nconst pgBigintEncode = (codecId, value) => {\n\trequireJsType(codecId, \"bigint\", value);\n\treturn value.toString();\n};\n/**\n* Writes an application value as the decimal text these codecs carry as their\n* canonical JSON.\n*\n* A schema-written literal default (`BigInt @default(0)`) arrives here as a\n* `number`, since a number literal is the only integer a schema language\n* writes, and one that is a safe integer names its value exactly. Past that\n* range the literal was rounded before any of this ran, so the value written is\n* not the value meant — which this refuses rather than minting an exact-looking\n* total from it. A non-integral number is refused on the same terms.\n*/\nconst pgBigintEncodeJson = (codecId, value) => {\n\tif (typeof value !== \"number\") return pgBigintEncode(codecId, value);\n\tif (!Number.isSafeInteger(value)) throw postgresError(\"RUNTIME.ENCODE_FAILED\", `${codecId} number literal must be an integer within the safe integer range, got ${String(value)}`, { meta: {\n\t\tcodecId,\n\t\treceived: String(value)\n\t} });\n\treturn BigInt(value).toString();\n};\n/**\n* Reads a wire or JSON value as a `bigint`, rejecting anything `BigInt()` would\n* misread. A number-typed wire value must also be a safe integer: past\n* ±(2^53 − 1) the driver's `number` has already rounded, so stringifying it\n* would mint a spuriously-exact `bigint` that need not equal the stored value.\n*/\nconst decimalIntegerDecode = (codecId, wire) => {\n\tif (typeof wire === \"bigint\") return wire;\n\tconst text = String(wire);\n\tif (!DECIMAL_INTEGER.test(text)) throw postgresError(\"RUNTIME.DECODE_FAILED\", `${codecId} value must be a decimal integer`, { meta: {\n\t\tcodecId,\n\t\treceived: text\n\t} });\n\tif (typeof wire === \"number\" && !Number.isSafeInteger(wire)) throw postgresError(\"RUNTIME.DECODE_FAILED\", `${codecId} wire number must be an integer within the safe integer range, got ${text}`, { meta: {\n\t\tcodecId,\n\t\treceived: text\n\t} });\n\treturn BigInt(text);\n};\n/** Reads an `int8` wire or JSON value as a `bigint`, rejecting anything `BigInt()` would misread. */\nconst pgInt8Decode = (wire) => decimalIntegerDecode(\"pg/int8@1\", wire);\n/**\n* Reads an unconstrained-`numeric` wire or JSON value as a `bigint`, rejecting\n* non-integral values — including `NaN` and the infinities, which are `numeric`\n* values but not integers.\n*/\nconst pgUnboundedIntDecode = (wire) => decimalIntegerDecode(\"pg/unboundedint@1\", wire);\n/**\n* Neither JSON nor a SQL number literal has a form for `NaN` or the infinities; PostgreSQL reads\n* and writes them as the text `NaN`, `Infinity`, `-Infinity`, so the float codecs carry them as\n* that text on the wire and in JSON.\n*/\nconst pgFloatEncode = (value) => Number.isFinite(value) ? value : String(value);\nconst pgFloatEncodeJson = (value) => pgFloatEncode(value);\nconst pgFloatDecodeJson = (codecId, json) => {\n\tif (typeof json === \"number\") return json;\n\tif (typeof json === \"string\" && isNonFiniteText(json)) return Number(json);\n\tthrow postgresError(\"RUNTIME.DECODE_FAILED\", `${codecId} database JSON value must be a number or the text NaN, Infinity or -Infinity`, { meta: {\n\t\tcodecId,\n\t\treceived: typeof json\n\t} });\n};\nconst MIN_SAFE_INTEGER_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);\nconst MAX_SAFE_INTEGER_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);\n/**\n* Requires an integer within ±(2^53 − 1), the range a JS `number` holds\n* exactly. The guard throws rather than rounding: past the boundary a `number`\n* silently loses digits, which is the failure mode this codec exists to refuse.\n*/\nconst pgInt8NumberGuard = (code, value) => {\n\tif (!Number.isSafeInteger(value)) throw postgresError(code, `pg/int8number@1 value must be an integer within the safe integer range, got ${String(value)}`, { meta: {\n\t\tcodecId: \"pg/int8number@1\",\n\t\treceived: String(value)\n\t} });\n\treturn value;\n};\nconst pgInt8NumberEncode = (value) => {\n\trequireJsType(\"pg/int8number@1\", \"number\", value);\n\treturn String(pgInt8NumberGuard(\"RUNTIME.ENCODE_FAILED\", value));\n};\nconst pgInt8NumberEncodeJson = (value) => pgInt8NumberEncode(value);\n/**\n* Reads an `int8` wire value as a `number`, throwing outside ±(2^53 − 1) and on\n* non-integral input. Decimal text goes through `BigInt` before the range check\n* so an out-of-range value is compared exactly rather than after rounding.\n*/\nconst pgInt8NumberDecode = (wire) => {\n\tif (typeof wire === \"number\") return pgInt8NumberGuard(\"RUNTIME.DECODE_FAILED\", wire);\n\tconst value = decimalIntegerDecode(\"pg/int8number@1\", wire);\n\tif (value < MIN_SAFE_INTEGER_BIGINT || value > MAX_SAFE_INTEGER_BIGINT) throw postgresError(\"RUNTIME.DECODE_FAILED\", `pg/int8number@1 value must be an integer within the safe integer range, got ${value}`, { meta: {\n\t\tcodecId: \"pg/int8number@1\",\n\t\treceived: value.toString()\n\t} });\n\treturn Number(value);\n};\nconst pgInt8NumberDecodeJson = (json) => {\n\tif (typeof json !== \"string\") throw postgresError(\"RUNTIME.DECODE_FAILED\", \"pg/int8number@1 database JSON value must be decimal text\", { meta: {\n\t\tcodecId: \"pg/int8number@1\",\n\t\treceived: typeof json\n\t} });\n\treturn pgInt8NumberDecode(json);\n};\n/**\n* Renders a decimal-text default as a `bigint` literal, for the codecs whose\n* canonical JSON is decimal text while the application type is `bigint`\n* (`pg/int8@1`, `pg/unboundedint@1`) — a plain string literal would not\n* typecheck against the emitted column type.\n*/\nconst decimalTextBigintLiteral = (value) => typeof value === \"string\" && DECIMAL_INTEGER.test(value) ? `${value}n` : void 0;\n/** Renders the decimal text of `pg/int8number@1`, whose application type is `number`, as a number literal. */\nconst decimalTextNumberLiteral = (value) => typeof value === \"string\" && DECIMAL_INTEGER.test(value) ? value : void 0;\nconst pgNumericRenderOutputType = (typeParams) => {\n\tconst precision = typeParams.precision;\n\tif (precision === void 0) return void 0;\n\tif (typeof precision !== \"number\" || !Number.isFinite(precision) || !Number.isInteger(precision)) throw postgresError(\"RUNTIME.TYPE_PARAMS_INVALID\", `renderOutputType: expected integer \"precision\" in typeParams for Numeric, got ${String(precision)}`, { meta: {\n\t\tnativeType: \"Numeric\",\n\t\tparam: \"precision\",\n\t\treceived: String(precision)\n\t} });\n\tconst scale = typeParams.scale;\n\tif (scale === void 0) return `Numeric<${precision}>`;\n\tif (typeof scale !== \"number\" || !Number.isFinite(scale) || !Number.isInteger(scale)) throw postgresError(\"RUNTIME.TYPE_PARAMS_INVALID\", `renderOutputType: expected integer \"scale\" in typeParams for Numeric, got ${String(scale)}`, { meta: {\n\t\tnativeType: \"Numeric\",\n\t\tparam: \"scale\",\n\t\treceived: String(scale)\n\t} });\n\treturn `Numeric<${precision}, ${scale}>`;\n};\nconst ISO_DURATION = /^P(?!$)(-?\\d+Y)?(-?\\d+M)?(-?\\d+D)?(?:T(?!$)(-?\\d+H)?(-?\\d+M)?(-?\\d+(?:\\.\\d+)?S)?)?$/;\nconst MICROS_PER_SECOND = 1000000n;\n/**\n* Converts a fractional-seconds digit string to microseconds, rounding rather\n* than truncating past the sixth digit.\n*\n* PostgreSQL rounds: `INTERVAL '1.1234567 seconds'` is `1.123457`, and\n* `'1.9999999 seconds'` carries into `2`. Truncating here made the parsed value\n* disagree with the database for any input past microsecond resolution.\n*\n* Ties round toward positive infinity, matching `Math.round` on the sibling path\n* that reads the driver's component object — so the two agree. PostgreSQL's own\n* tie behaviour is unobservable, because it parses the literal into a double\n* first and an exact half never survives that.\n*/\nconst microsFromFraction = (fraction, negative) => {\n\tif (fraction === \"\") return 0n;\n\tconst kept = BigInt(fraction.slice(0, 6).padEnd(6, \"0\"));\n\tconst rest = fraction.slice(6).replace(/0+$/, \"\");\n\tif (rest === \"\") return kept;\n\tconst half = rest[0] === \"5\" && rest.length === 1;\n\treturn rest > \"5\" || half && !negative ? kept + 1n : kept;\n};\nconst intervalFieldsOf = (text) => {\n\tconst match = ISO_DURATION.exec(text);\n\tif (match === null) throw postgresError(\"RUNTIME.DECODE_FAILED\", `pg/interval@1 value must be an ISO-8601 duration, got ${text}`, { meta: {\n\t\tcodecId: \"pg/interval@1\",\n\t\treceived: text\n\t} });\n\tconst [, years, months, days, hours, minutes, seconds] = match;\n\tconst wholeNumber = (part) => part === void 0 ? 0 : Number(part.slice(0, -1));\n\tconst secondsLiteral = seconds === void 0 ? \"0\" : seconds.slice(0, -1);\n\tconst negative = secondsLiteral.startsWith(\"-\");\n\tconst [whole = \"0\", fraction = \"\"] = secondsLiteral.replace(\"-\", \"\").split(\".\");\n\tconst magnitude = BigInt(whole) * MICROS_PER_SECOND + microsFromFraction(fraction, negative);\n\treturn {\n\t\tmonths: wholeNumber(years) * 12 + wholeNumber(months),\n\t\tdays: wholeNumber(days),\n\t\tmicros: BigInt(wholeNumber(hours)) * 3600n * MICROS_PER_SECOND + BigInt(wholeNumber(minutes)) * 60n * MICROS_PER_SECOND + (negative ? -magnitude : magnitude)\n\t};\n};\nconst secondsText = (micros) => {\n\tconst sign = micros < 0n ? \"-\" : \"\";\n\tconst magnitude = micros < 0n ? -micros : micros;\n\tconst whole = magnitude / MICROS_PER_SECOND % 60n;\n\tconst fraction = magnitude % MICROS_PER_SECOND;\n\treturn `${sign}${whole}${fraction === 0n ? \"\" : `.${fraction.toString().padStart(6, \"0\").replace(/0+$/, \"\")}`}`;\n};\n/**\n* Renders {@link PgInterval} the way PostgreSQL spells an interval under\n* `IntervalStyle = 'iso_8601'`: zero components omitted, `T` present only when a\n* time component is, each component carrying its own sign, and an all-zero\n* interval written `PT0S`.\n*/\nconst formatIsoDuration = ({ months, days, micros }) => {\n\tconst years = Math.trunc(months / 12);\n\tconst restMonths = months % 12;\n\tconst sign = micros < 0n ? \"-\" : \"\";\n\tconst magnitude = micros < 0n ? -micros : micros;\n\tconst hours = magnitude / (3600n * MICROS_PER_SECOND);\n\tconst minutes = magnitude / (60n * MICROS_PER_SECOND) % 60n;\n\tconst hasSeconds = magnitude % (60n * MICROS_PER_SECOND) !== 0n;\n\tconst parts = [\n\t\tyears === 0 ? \"\" : `${years}Y`,\n\t\trestMonths === 0 ? \"\" : `${restMonths}M`,\n\t\tdays === 0 ? \"\" : `${days}D`\n\t];\n\tconst time = [\n\t\thours === 0n ? \"\" : `${sign}${hours}H`,\n\t\tminutes === 0n ? \"\" : `${sign}${minutes}M`,\n\t\thasSeconds ? `${secondsText(micros)}S` : \"\"\n\t].join(\"\");\n\tconst rendered = `P${parts.join(\"\")}${time === \"\" ? \"\" : `T${time}`}`;\n\treturn rendered === \"P\" ? \"PT0S\" : rendered;\n};\n/**\n* An interval as PostgreSQL prints it under `IntervalStyle = 'postgres'`: `1 year 2 mons 3 days\n* 04:05:06.5`, `-1 years -2 mons +3 days -04:00:00`, `00:00:00`.\n*/\nconst POSTGRES_INTERVAL = /^(?:([+-]?\\d+) years? ?)?(?:([+-]?\\d+) mons? ?)?(?:([+-]?\\d+) days? ?)?(?:([+-])?(\\d+):(\\d{2}):(\\d{2})(?:\\.(\\d+))?)?$/;\nfunction postgresIntervalFields(text) {\n\tconst match = POSTGRES_INTERVAL.exec(text);\n\tif (match === null || text === \"\" || text.endsWith(\" \")) return void 0;\n\tconst [, years = \"0\", months = \"0\", days = \"0\", sign, hours = \"0\", minutes = \"0\", seconds = \"0\"] = match;\n\tconst fraction = match[8] ?? \"\";\n\tconst magnitude = (BigInt(hours) * 3600n + BigInt(minutes) * 60n + BigInt(seconds)) * MICROS_PER_SECOND + BigInt(fraction.padEnd(6, \"0\") || \"0\");\n\treturn {\n\t\tmonths: Number(years) * 12 + Number(months),\n\t\tdays: Number(days),\n\t\tmicros: sign === \"-\" ? -magnitude : magnitude\n\t};\n}\nfunction intervalRefused(message) {\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", message, {\n\t\twhy: \"pg/interval stores one canonical form for each interval (ADR 254), and reads ISO 8601 durations and the text PostgreSQL prints.\",\n\t\tfix: \"Write an ISO 8601 duration, as the message shows.\"\n\t});\n}\n/**\n* The canonical form of `pg/interval` (ADR 254), from an ISO 8601 duration or the text PostgreSQL\n* prints under `IntervalStyle = 'postgres'`.\n*/\nfunction pgIntervalCanonical(text) {\n\tconst fractionDigits = /\\.(\\d+)/.exec(text)?.[1]?.length ?? 0;\n\tif (fractionDigits > 6) intervalRefused(`\"${text}\" has ${fractionDigits} digits after the decimal point, but pg/interval holds microseconds, so at most 6. Round it, as in \"PT1.123456S\".`);\n\tif (ISO_DURATION.test(text)) return formatIsoDuration(intervalFieldsOf(text));\n\tconst fields = postgresIntervalFields(text);\n\tif (fields === void 0) intervalRefused(`pg/interval cannot read \"${text}\". Write an ISO 8601 duration, as in \"P1Y2M3DT4H5M6S\".`);\n\treturn formatIsoDuration(fields);\n}\n/** Renders the application value as its canonical ISO-8601 duration. */\nconst pgIntervalToIso = (value) => formatIsoDuration(value);\nconst pgIntervalEncodeJson = (value) => formatIsoDuration(value);\nconst pgIntervalDecodeJson = (json) => {\n\tif (typeof json !== \"string\") throw postgresError(\"RUNTIME.DECODE_FAILED\", \"pg/interval@1 database JSON value must be an ISO-8601 duration string\", { meta: {\n\t\tcodecId: \"pg/interval@1\",\n\t\treceived: typeof json\n\t} });\n\treturn intervalFieldsOf(json);\n};\n/**\n* Reads the driver's wire value into the application value. `pg` parses an\n* interval into a component object, which is the same three fields under other\n* names; a text wire value is an ISO-8601 duration, because that is what the\n* codec writes.\n*/\nconst pgIntervalDecode = (wire) => {\n\tif (typeof wire === \"string\") return intervalFieldsOf(wire);\n\tconst part = (name) => {\n\t\tconst raw = wire[name];\n\t\treturn typeof raw === \"number\" ? raw : 0;\n\t};\n\tconst seconds = part(\"seconds\") + part(\"milliseconds\") / 1e3;\n\treturn {\n\t\tmonths: part(\"years\") * 12 + part(\"months\"),\n\t\tdays: part(\"days\"),\n\t\tmicros: BigInt(part(\"hours\")) * 3600n * MICROS_PER_SECOND + BigInt(part(\"minutes\")) * 60n * MICROS_PER_SECOND + BigInt(Math.round(seconds * 1e6))\n\t};\n};\nconst BASE64_TEXT = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\nconst pgByteaEncodeJson = (value) => Buffer.from(value).toString(\"base64\");\nconst pgByteaDecodeJson = (value) => {\n\tif (typeof value !== \"string\" || !BASE64_TEXT.test(value)) throw postgresError(\"RUNTIME.DECODE_FAILED\", \"pg/bytea@1 database JSON value must be a base64 string\", { meta: { codecId: \"pg/bytea@1\" } });\n\treturn new Uint8Array(Buffer.from(value, \"base64\"));\n};\nconst BYTEA_TEXT = /^\\\\x(?:[0-9A-Fa-f]{2})*$/;\n/**\n* Scalar pg bytea values arrive as Uint8Array/Buffer; target-parsed bytea list elements arrive as PostgreSQL hex text.\n*/\nconst pgByteaDecodeWire = (wire) => {\n\tif (wire instanceof Uint8Array) return wire.constructor === Uint8Array ? wire : new Uint8Array(wire.buffer, wire.byteOffset, wire.byteLength);\n\tif (!BYTEA_TEXT.test(wire)) throw postgresError(\"RUNTIME.DECODE_FAILED\", \"pg/bytea@1 wire value must be a bytea hex string or Uint8Array\", { meta: {\n\t\tcodecId: \"pg/bytea@1\",\n\t\treceived: wire\n\t} });\n\treturn new Uint8Array(Buffer.from(wire.slice(2), \"hex\"));\n};\nconst parseJsonWire = JSON.parse;\nconst pgJsonEncode = (value) => JSON.stringify(value);\nconst pgJsonDecode = (wire) => typeof wire === \"string\" ? parseJsonWire(wire) : wire;\nconst pgJsonbEncode = (value) => JSON.stringify(value);\nconst pgJsonbDecode = (wire) => typeof wire === \"string\" ? parseJsonWire(wire) : wire;\n//#endregion\n//#region src/core/data-types.ts\n/** A cast between two types that store the same shape: the value is already the form this type stores. */\nconst unchanged = (value) => value;\nfunction wrongShape(value, expected) {\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", `Expected ${expected}, got ${JSON.stringify(value)}.`, {\n\t\twhy: \"A cast reads the canonical form of the type it takes values of.\",\n\t\tfix: \"Hand the cast a value in the shape its source type stores.\"\n\t});\n}\n/** A whole number as the digit text `int8` and `numeric` store. */\nconst asNumeralText = (value) => typeof value === \"number\" ? numeralText(value) : wrongShape(value, \"a number\");\n/**\n* A number as the floating-point types store it: a JSON number, or one of the three words, which\n* those types keep as text. A magnitude past what a double holds is refused rather than rounded to\n* a word: the database refuses it too, and storing `Infinity` would make a written number\n* indistinguishable from a written `Infinity`.\n*/\nconst asFloat = (value) => {\n\tif (typeof value === \"number\") return value;\n\tif (typeof value !== \"string\") return wrongShape(value, \"a number or numeral text\");\n\tif (isNonFiniteText(value)) return value;\n\tconst converted = Number(value);\n\tif (Number.isFinite(converted)) return converted;\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", `${value} is out of range: no double holds a number that large.`, {\n\t\twhy: \"The floating-point types store a double, which holds magnitudes up to about 1.8e308.\",\n\t\tfix: \"Use a number a double holds, or a numeric column.\"\n\t});\n};\nconst pgText = dataType(\"pg/text\", {});\nconst pgTextArray = dataType(\"pg/text-array\", {});\nconst pgEnum = dataType(\"pg/enum\", {});\nconst pgInt2 = dataType(\"pg/int2\", {});\nconst pgBool = dataType(\"pg/bool\", {});\nconst pgJson = dataType(\"pg/json\", {});\nconst pgTsquery = dataType(\"pg/tsquery\", {});\nconst pgInt4 = dataType(\"pg/int4\", { casts: { [pgInt2.id]: unchanged } });\nconst pgInt8 = dataType(\"pg/int8\", { casts: {\n\t[pgInt2.id]: asNumeralText,\n\t[pgInt4.id]: asNumeralText\n} });\nconst pgNumeric = dataType(\"pg/numeric\", { casts: {\n\t[pgInt2.id]: asNumeralText,\n\t[pgInt4.id]: asNumeralText,\n\t[pgInt8.id]: unchanged\n} });\n/** `float4` stores a single-precision float, so a magnitude past about 3.4e38 does not fit. */\nconst asFloat4 = (value) => {\n\tconst converted = asFloat(value);\n\tif (typeof converted !== \"number\" || Number.isFinite(Math.fround(converted))) return converted;\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", `${converted} is out of range: no float4 holds a number that large.`, {\n\t\twhy: \"float4 stores a single-precision float, which holds magnitudes up to about 3.4e38.\",\n\t\tfix: \"Use a number float4 holds, or a float8 or numeric column.\"\n\t});\n};\nconst floatCastsOf = (cast) => ({\n\t[pgInt2.id]: cast,\n\t[pgInt4.id]: cast,\n\t[pgInt8.id]: cast,\n\t[pgNumeric.id]: cast\n});\nconst pgFloat4 = dataType(\"pg/float4\", { casts: floatCastsOf(asFloat4) });\nconst pgFloat8 = dataType(\"pg/float8\", { casts: floatCastsOf(asFloat) });\nconst pgJsonb = dataType(\"pg/jsonb\", { casts: { [pgJson.id]: unchanged } });\nconst fromText = { [pgText.id]: unchanged };\nconst pgChar = dataType(\"pg/char\", { casts: fromText });\nconst pgVarchar = dataType(\"pg/varchar\", { casts: fromText });\nconst pgUuid = dataType(\"pg/uuid\", { casts: fromText });\nconst pgInet = dataType(\"pg/inet\", { casts: fromText });\nconst pgBit = dataType(\"pg/bit\", { casts: fromText });\nconst pgVarbit = dataType(\"pg/varbit\", { casts: fromText });\nconst pgBytea = dataType(\"pg/bytea\", { casts: fromText });\nconst POSTGRES_YEAR = /^(\\d{4,6})(-.*?)( BC)?$/;\n/**\n* Text PostgreSQL prints, in ISO 8601. A year with a ` BC` suffix becomes the ISO year, one higher\n* than its negative, so 1 BC is 0000 and 44 BC is -000043. A year of five or six digits becomes a\n* signed six-digit year. 0 BC does not exist, so it stays as written and the reader refuses it.\n*/\nfunction isoFromPostgresText(text) {\n\tconst match = POSTGRES_YEAR.exec(text);\n\tif (match === null) return text;\n\tconst [, digits = \"\", rest = \"\", bc] = match;\n\tconst year = Number(digits);\n\tif (bc !== void 0) {\n\t\tif (year === 0) return text;\n\t\tconst astronomical = 1 - year;\n\t\treturn astronomical === 0 ? `0000${rest}` : `-${String(-astronomical).padStart(6, \"0\")}${rest}`;\n\t}\n\treturn digits.length > 4 ? `+${String(year).padStart(6, \"0\")}${rest}` : text;\n}\nconst INFINITIES = /* @__PURE__ */ new Set([\"infinity\", \"-infinity\"]);\n/**\n* The canonical form of a date or time type (ADR 254), from ISO 8601 or the text PostgreSQL prints.\n* `infinity` and `-infinity` are values of the types that hold them.\n*/\nfunction postgresDateTime(options, holdsInfinity) {\n\treturn (text) => holdsInfinity && INFINITIES.has(text) ? text : canonicalDateTime(isoFromPostgresText(text), options, text);\n}\n/**\n* Each range is what PostgreSQL and every codec of the type hold: PostgreSQL starts at 4714-11-24\n* BC, and the `Temporal` and `Date` codecs end at +275760-09-13.\n*/\nconst pgDateCanonical = postgresDateTime({\n\tshape: \"date\",\n\tdataTypeId: \"pg/date\",\n\trange: {\n\t\tearliest: \"-004713-11-24\",\n\t\tlatest: \"+275760-09-13\"\n\t}\n}, true);\nconst pgTimeCanonical = postgresDateTime({\n\tshape: \"time\",\n\tdataTypeId: \"pg/time\"\n}, false);\nconst pgTimetzCanonical = postgresDateTime({\n\tshape: \"timeWithOffset\",\n\tdataTypeId: \"pg/timetz\",\n\tmaxOffsetHours: 15\n}, false);\nconst pgTimestampCanonical = postgresDateTime({\n\tshape: \"dateTime\",\n\tdataTypeId: \"pg/timestamp\",\n\trange: {\n\t\tearliest: \"-004713-11-24T00:00:00\",\n\t\tlatest: \"+275760-09-13T23:59:59.999999\"\n\t}\n}, true);\nconst pgTimestamptzCanonical = postgresDateTime({\n\tshape: \"instant\",\n\tdataTypeId: \"pg/timestamptz\",\n\trange: {\n\t\tearliest: \"-004713-11-24T00:00:00Z\",\n\t\tlatest: \"+275760-09-13T00:00:00Z\"\n\t}\n}, true);\n/** The canonical-form function of a type whose values are written as text. */\nconst canonicalFromText = (canonical) => (value) => typeof value === \"string\" ? canonical(value) : wrongShape(value, \"text\");\n/** A date or time type: its canonical form, and a cast from text that gives it. */\nfunction dateTimeType(id, canonical) {\n\tconst toCanonicalForm = canonicalFromText(canonical);\n\treturn dataType(id, {\n\t\ttoCanonicalForm,\n\t\tcasts: { [pgText.id]: toCanonicalForm }\n\t});\n}\nconst pgTimetz = dateTimeType(\"pg/timetz\", pgTimetzCanonical);\nconst pgInterval = dateTimeType(\"pg/interval\", pgIntervalCanonical);\nconst pgDate = dateTimeType(\"pg/date\", pgDateCanonical);\nconst pgTime = dateTimeType(\"pg/time\", pgTimeCanonical);\nconst pgTimestamp = dateTimeType(\"pg/timestamp\", pgTimestampCanonical);\nconst pgTimestamptz = dateTimeType(\"pg/timestamptz\", pgTimestamptzCanonical);\n/** Every data type this target registers. */\nconst postgresDataTypes = [\n\tpgText,\n\tpgTextArray,\n\tpgEnum,\n\tpgInt2,\n\tpgBool,\n\tpgJson,\n\tpgTsquery,\n\tpgInt4,\n\tpgInt8,\n\tpgNumeric,\n\tpgFloat4,\n\tpgFloat8,\n\tpgJsonb,\n\tpgChar,\n\tpgVarchar,\n\tpgUuid,\n\tpgInet,\n\tpgBit,\n\tpgVarbit,\n\tpgTimetz,\n\tpgInterval,\n\tpgBytea,\n\tpgDate,\n\tpgTime,\n\tpgTimestamp,\n\tpgTimestamptz\n];\n//#endregion\nexport { pgJsonEncode as $, pgVarbit as A, pgFloatDecodeJson as B, pgTimestampCanonical as C, pgTimetzCanonical as D, pgTimetz as E, pgBigintEncode as F, pgInt8NumberDecodeJson as G, pgFloatEncodeJson as H, pgBigintEncodeJson as I, pgIntervalDecode as J, pgInt8NumberEncode as K, pgByteaDecodeJson as L, postgresDataTypes as M, decimalTextBigintLiteral as N, pgTsquery as O, decimalTextNumberLiteral as P, pgJsonDecode as Q, pgByteaDecodeWire as R, pgTimestamp as S, pgTimestamptzCanonical as T, pgInt8Decode as U, pgFloatEncode as V, pgInt8NumberDecode as W, pgIntervalEncodeJson as X, pgIntervalDecodeJson as Y, pgIntervalToIso as Z, pgNumeric as _, pgDate as a, precisionParamsSchema as at, pgTime as b, pgFloat4 as c, pgInt2 as d, pgJsonbDecode as et, pgInt4 as f, pgJsonb as g, pgJson as h, pgChar as i, pgUnboundedIntDecode as it, pgVarchar as j, pgUuid as k, pgFloat8 as l, pgInterval as m, pgBool as n, pgNumericDecode as nt, pgDateCanonical as o, renderLength as ot, pgInt8 as p, pgInt8NumberEncodeJson as q, pgBytea as r, pgNumericRenderOutputType as rt, pgEnum as s, renderPrecision as st, pgBit as t, pgJsonbEncode as tt, pgInet as u, pgText as v, pgTimestamptz as w, pgTimeCanonical as x, pgTextArray as y, pgByteaEncodeJson as z };\n\n//# sourceMappingURL=data-types-Cl18KnNY.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-normalizer-DKE2xbCP-EMLD6yNw.mjs","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/default-normalizer-DKE2xbCP.mjs"],"sourcesContent":["import { blindCast } from \"@internal/utils/casts\";\n//#region src/core/default-normalizer.ts\n/**\n* Pre-compiled regex patterns for performance.\n* These are compiled once at module load time rather than on each function call.\n*/\nconst NEXTVAL_PATTERN = /^nextval\\s*\\(/i;\nconst NOW_FUNCTION_PATTERN = /^(now\\s*\\(\\s*\\)|CURRENT_TIMESTAMP)$/i;\nconst CLOCK_TIMESTAMP_PATTERN = /^clock_timestamp\\s*\\(\\s*\\)$/i;\nconst TIMESTAMP_CAST_SUFFIX = /::timestamp(?:tz|\\s+(?:with|without)\\s+time\\s+zone)?$/i;\nconst TEXT_CAST_SUFFIX = /::text$/i;\nconst NOW_LITERAL_PATTERN = /^'now'$/i;\nconst UUID_PATTERN = /^gen_random_uuid\\s*\\(\\s*\\)$/i;\nconst UUID_OSSP_PATTERN = /^uuid_generate_v4\\s*\\(\\s*\\)$/i;\nconst NULL_PATTERN = /^NULL(?:::.+)?$/i;\nconst TRUE_PATTERN = /^true$/i;\nconst FALSE_PATTERN = /^false$/i;\n/**\n* A decimal numeral with an optional sign and an optional exponent. Postgres prints a `real` or\n* `double precision` default in exponent notation once its magnitude is large or small enough:\n* `'1e+20'::real`, `'1e-320'::double precision`.\n*/\nconst NUMERAL = String.raw`[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?`;\nconst NUMERIC_PATTERN = new RegExp(`^${NUMERAL}$`);\n/**\n* A cast target type: a builtin of one or more words, where any word may carry a modifier\n* (`timestamp(3) without time zone`, `numeric(65,30)`), or a quoted identifier (`\"AuditAction\"`);\n* either may be qualified by a possibly quoted schema (`audit.\"AuditAction\"`, `\"my schema\".t`).\n*/\nconst TYPE_NAME = String.raw`(?:(?:\"(?:[^\"]|\"\")+\"|\\w+)\\.)?(?:\"(?:[^\"]|\"\")+\"|\\w+(?:\\(\\d+(?:,\\s*\\d+)?\\))?(?:\\s+\\w+(?:\\(\\d+(?:,\\s*\\d+)?\\))?)*)`;\nconst QUOTED_LITERAL_PATTERN = new RegExp(`^'((?:[^']|'')*)'(?:::(${TYPE_NAME}))?$`);\nconst NUMBER_LITERAL_PATTERN = new RegExp(`^(${NUMERAL})(?:::(${TYPE_NAME}))?$`);\nconst PARENTHESISED_CAST_PATTERN = new RegExp(String.raw`^\\((.+)\\)::(${TYPE_NAME})$`, \"s\");\nconst INTEGER_PATTERN = /^-?\\d+$/;\nconst INTEGER_TYPE_PATTERN = /^(?:smallint|integer|bigint|int2|int4|int8)$/i;\nconst NUMBER_TYPE_PATTERN = /^(?:smallint|integer|bigint|int2|int4|int8|real|double precision|float4|float8|numeric|decimal)(?:\\(\\d+(?:,\\s*\\d+)?\\))?$/i;\nconst DECIMAL_TEXT_TYPE_PATTERN = /^(?:bigint|int8|numeric|decimal)(?:\\(\\d+(?:,\\s*\\d+)?\\))?$/i;\n/**\n* Matches a Postgres array literal default of the form `'{...}'::elemtype[]`.\n* The literal body is captured in group 1; the cast (including `[]`) is optional.\n* Examples: `'{}'::text[]`, `'{1,2}'::integer[]`, `'{}'`\n*/\nconst ARRAY_LITERAL_PATTERN = /^'(\\{.*\\})'(?:::.+\\[\\])?$/;\n/** `box` is the one core type whose array elements are delimited by `;`, not `,`. */\nconst SEMICOLON_DELIMITED_ELEMENT_TYPE_PATTERN = /^box$/i;\n/**\n* Matches the constructor spelling Postgres reports for a default written as\n* `ARRAY[...]`: `ARRAY['a'::text, 'b'::text]`, `ARRAY[1, 2]`, `ARRAY[]::text[]`.\n* The element list is captured in group 1; the outer cast is optional.\n*/\nconst ARRAY_CONSTRUCTOR_PATTERN = new RegExp(String.raw`^ARRAY\\[(.*?)\\](?:::${TYPE_NAME}\\[\\])?$`, \"is\");\nconst OUTER_ARRAY_CAST_PATTERN = new RegExp(String.raw`^\\((.+)\\)::${TYPE_NAME}\\[\\]$`, \"s\");\n/**\n* Returns the canonical expression for a timestamp default function, or undefined\n* if the expression is not a recognized timestamp default.\n*\n* Keeps now()/CURRENT_TIMESTAMP and clock_timestamp() distinct:\n* - now(), CURRENT_TIMESTAMP, ('now'::text)::timestamp... → 'now()'\n* - clock_timestamp(), clock_timestamp()::timestamptz → 'clock_timestamp()'\n*\n* These are semantically different in Postgres: now() returns the transaction\n* start time (constant within a transaction), while clock_timestamp() returns\n* the actual wall-clock time (can differ across rows in a single INSERT).\n*/\nfunction canonicalizeTimestampDefault(expr) {\n\tif (NOW_FUNCTION_PATTERN.test(expr)) return \"now()\";\n\tif (CLOCK_TIMESTAMP_PATTERN.test(expr)) return \"clock_timestamp()\";\n\tif (!TIMESTAMP_CAST_SUFFIX.test(expr)) return void 0;\n\tlet inner = expr.replace(TIMESTAMP_CAST_SUFFIX, \"\").trim();\n\tif (inner.startsWith(\"(\") && inner.endsWith(\")\")) inner = inner.slice(1, -1).trim();\n\tif (NOW_FUNCTION_PATTERN.test(inner)) return \"now()\";\n\tif (CLOCK_TIMESTAMP_PATTERN.test(inner)) return \"clock_timestamp()\";\n\tinner = inner.replace(TEXT_CAST_SUFFIX, \"\").trim();\n\tif (NOW_LITERAL_PATTERN.test(inner)) return \"now()\";\n}\n/**\n* A numeral cast to a number type. A cast to an integer type rounds a fraction, so that numeral is\n* not the value.\n*/\nfunction castNumber(numeral, castType) {\n\tif (castType === void 0) return {\n\t\tkind: \"number\",\n\t\tnumeral\n\t};\n\tif (!NUMBER_TYPE_PATTERN.test(castType)) return void 0;\n\tif (INTEGER_TYPE_PATTERN.test(castType) && !INTEGER_PATTERN.test(numeral)) return void 0;\n\treturn {\n\t\tkind: \"number\",\n\t\tnumeral\n\t};\n}\n/**\n* Reads a literal by its cast type: `'-1'::integer` and `(1)::bigint` are numbers, `'a'::text` is a\n* string. A parenthesised cast is read only from number to number: `('now'::text)::date` is\n* evaluated on insert. Anything else, such as an operator or a function call, is not a literal.\n*/\nfunction readLiteralToken(expression) {\n\tconst quoted = QUOTED_LITERAL_PATTERN.exec(expression);\n\tif (quoted?.[1] !== void 0) {\n\t\tconst text = quoted[1].replace(/''/g, \"'\");\n\t\tconst castType = quoted[2];\n\t\treturn castType !== void 0 && NUMBER_TYPE_PATTERN.test(castType) && NUMERIC_PATTERN.test(text) ? castNumber(text, castType) : {\n\t\t\tkind: \"string\",\n\t\t\ttext\n\t\t};\n\t}\n\tconst number = NUMBER_LITERAL_PATTERN.exec(expression);\n\tif (number?.[1] !== void 0) return castNumber(number[1], number[2]);\n\tconst parenthesised = PARENTHESISED_CAST_PATTERN.exec(expression);\n\tif (parenthesised?.[1] === void 0 || parenthesised[2] === void 0) return void 0;\n\tconst inner = readLiteralToken(parenthesised[1].trim());\n\treturn inner?.kind === \"number\" ? castNumber(inner.numeral, parenthesised[2]) : void 0;\n}\n/**\n* `int8` and `numeric` defaults are decimal text, the JSON form of their codecs, so no digit is\n* lost to a JavaScript number. A column that is not a number type stores the numeral as text.\n*/\nfunction numberValue(numeral, nativeType) {\n\tif (nativeType !== void 0 && DECIMAL_TEXT_TYPE_PATTERN.test(nativeType)) return numeral;\n\tif (nativeType !== void 0 && !NUMBER_TYPE_PATTERN.test(nativeType)) return numeral;\n\tconst parsed = Number(numeral);\n\treturn Number.isFinite(parsed) ? parsed : void 0;\n}\n/**\n* Splits a Postgres array literal body (without the enclosing braces) into its\n* element tokens, honouring quoting. A comma only separates elements when it is\n* outside double quotes; inside a quoted element a doubled quote (`\"\"`) or a\n* backslash-escaped quote (`\\\"`) is a literal quote, and a backslash escapes the\n* next character. Returns undefined if the body is malformed (e.g. an unbalanced\n* quote), nests an array, which puts a brace outside quotes, or escapes a character outside\n* quotes with a backslash, which Postgres never prints.\n*/\nfunction splitArrayElements(inner) {\n\tconst tokens = [];\n\tlet current = \"\";\n\tlet inQuotes = false;\n\tlet quoted = false;\n\tfor (let i = 0; i < inner.length; i++) {\n\t\tconst char = inner[i];\n\t\tif (inQuotes) {\n\t\t\tif (char === \"\\\\\") {\n\t\t\t\tconst next = inner[i + 1];\n\t\t\t\tif (next === void 0) return void 0;\n\t\t\t\tcurrent += next;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\"\") {\n\t\t\t\tif (inner[i + 1] === \"\\\"\") {\n\t\t\t\t\tcurrent += \"\\\"\";\n\t\t\t\t\ti++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tinQuotes = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrent += char;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"\\\"\") {\n\t\t\tinQuotes = true;\n\t\t\tquoted = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"{\" || char === \"}\" || char === \"\\\\\") return void 0;\n\t\tif (char === \",\") {\n\t\t\ttokens.push({\n\t\t\t\tvalue: current,\n\t\t\t\tquoted\n\t\t\t});\n\t\t\tcurrent = \"\";\n\t\t\tquoted = false;\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += char;\n\t}\n\tif (inQuotes) return void 0;\n\ttokens.push({\n\t\tvalue: current,\n\t\tquoted\n\t});\n\treturn tokens;\n}\nconst BOOLEAN_TYPE_PATTERN = /^(?:bool|boolean)$/i;\nconst BOOLEAN_TRUE_TOKEN_PATTERN = /^(?:t|true)$/i;\nconst BOOLEAN_FALSE_TOKEN_PATTERN = /^(?:f|false)$/i;\n/**\n* Reads an unquoted, non-NULL array element by the column's element type. Only text Postgres itself\n* would print is read; anything else keeps the raw expression.\n*/\nfunction unquotedElementValue(token, elementType) {\n\tif (token === \"\") return void 0;\n\tif (BOOLEAN_TYPE_PATTERN.test(elementType)) {\n\t\tif (BOOLEAN_TRUE_TOKEN_PATTERN.test(token)) return true;\n\t\tif (BOOLEAN_FALSE_TOKEN_PATTERN.test(token)) return false;\n\t\treturn;\n\t}\n\tif (NUMBER_TYPE_PATTERN.test(elementType)) return NUMERIC_PATTERN.test(token) ? numberValue(token, elementType) : void 0;\n\tif (isJsonElementType(elementType)) {\n\t\tconst document = readJsonDocument(token);\n\t\treturn document.kind === \"json\" ? document.value : void 0;\n\t}\n\treturn token;\n}\n/**\n* Parses a Postgres array literal body (`{...}`) into a JS array of primitives.\n* Returns undefined if the body cannot be reliably parsed.\n*\n* Handles:\n* - `{}` → `[]`\n* - `{elem1,elem2,...}` → `[elem1, elem2, ...]`, each unquoted element read by the element type\n* - quoted elements that contain commas, doubled/escaped quotes, and the literal\n* strings `NULL`/`true`/`false` (a quoted token is always a string)\n*/\nfunction parseArrayLiteralBody(body, elementType) {\n\tconst inner = body.slice(1, -1).trim();\n\tif (inner === \"\") return [];\n\tconst tokens = splitArrayElements(inner);\n\tif (tokens === void 0) return void 0;\n\tconst result = [];\n\tfor (const token of tokens) {\n\t\tif (token.quoted) {\n\t\t\tconst value = textElementValue(token.value, elementType);\n\t\t\tif (value === void 0) return void 0;\n\t\t\tresult.push(value);\n\t\t\tcontinue;\n\t\t}\n\t\tconst el = token.value.trim();\n\t\tif (el.toUpperCase() === \"NULL\") {\n\t\t\tif (isJsonElementType(elementType)) return void 0;\n\t\t\tresult.push(null);\n\t\t\tcontinue;\n\t\t}\n\t\tconst value = unquotedElementValue(el, elementType);\n\t\tif (value === void 0) return void 0;\n\t\tresult.push(value);\n\t}\n\treturn result;\n}\n/**\n* Splits an `ARRAY[...]` element list on the commas outside quotes and parentheses, so\n* `numeric(65,30)` and `'a,b'` stay inside one element. A doubled quote inside an element is a\n* literal quote, so it never closes one.\n*/\nfunction splitConstructorElements(body) {\n\tconst elements = [];\n\tlet current = \"\";\n\tlet quote;\n\tlet depth = 0;\n\tfor (const char of body) {\n\t\tif (quote !== void 0) {\n\t\t\tif (char === quote) quote = void 0;\n\t\t} else if (char === \"'\" || char === \"\\\"\") quote = char;\n\t\telse if (char === \"(\") depth++;\n\t\telse if (char === \")\") depth--;\n\t\telse if (char === \",\" && depth === 0) {\n\t\t\telements.push(current);\n\t\t\tcurrent = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += char;\n\t}\n\telements.push(current);\n\treturn elements.map((element) => element.trim());\n}\n/**\n* Reads one `ARRAY[...]` element: NULL, a boolean, or a literal read by its cast type. Anything\n* else, such as a function call, means the constructor is not a literal and the caller keeps the\n* raw expression.\n*/\nfunction parseConstructorElement(element, elementType) {\n\tif (NULL_PATTERN.test(element)) return isJsonElementType(elementType) ? void 0 : null;\n\tif (TRUE_PATTERN.test(element)) return true;\n\tif (FALSE_PATTERN.test(element)) return false;\n\tconst token = readLiteralToken(element);\n\tif (token === void 0) return void 0;\n\treturn token.kind === \"number\" ? numberValue(token.numeral, elementType) : textElementValue(token.text, elementType);\n}\nfunction isJsonElementType(elementType) {\n\treturn elementType === \"json\" || elementType === \"jsonb\";\n}\n/**\n* A `json`/`jsonb` element's text is a JSON document, as it is on a scalar column of the same type.\n* Undefined keeps the raw expression: the document holds a number a JavaScript number would change.\n*/\nfunction textElementValue(text, elementType) {\n\tif (!isJsonElementType(elementType)) return text;\n\tconst document = readJsonDocument(text);\n\tif (document.kind === \"inexact\") return void 0;\n\treturn document.kind === \"json\" ? document.value : text;\n}\n/**\n* Parses JSON text. Postgres keeps every digit of a json number, so a document holding a number that\n* would not print back as the same value once read into a JavaScript number, such as\n* `12345678901234567890` or `1e400`, is `inexact`. `1.0` prints back as `1`, the same value.\n*/\nfunction readJsonDocument(text) {\n\tlet exact = true;\n\tconst reviver = (_key, value, context) => {\n\t\tif (typeof value === \"number\" && !keepsJsonNumber(value, context?.source)) exact = false;\n\t\treturn value;\n\t};\n\tlet value;\n\ttry {\n\t\tvalue = blindCast(JSON.parse(text, reviver));\n\t} catch {\n\t\treturn { kind: \"invalid\" };\n\t}\n\treturn exact ? {\n\t\tkind: \"json\",\n\t\tvalue\n\t} : { kind: \"inexact\" };\n}\nfunction keepsJsonNumber(value, source) {\n\tif (!Number.isFinite(value) || source === void 0) return false;\n\tconst written = decimalValue(source);\n\treturn written !== void 0 && written === decimalValue(String(value));\n}\nconst DECIMAL_PARTS_PATTERN = /^(-?)(\\d+)(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/;\n/** A numeral's value as `<sign><digits>e<exponent>`, with no leading or trailing zero digits. */\nfunction decimalValue(numeral) {\n\tconst parts = DECIMAL_PARTS_PATTERN.exec(numeral);\n\tif (parts === null) return void 0;\n\tconst [, sign = \"\", whole = \"\", fraction = \"\", exponent = \"0\"] = parts;\n\tconst digits = `${whole}${fraction}`.replace(/^0+/, \"\");\n\tif (digits === \"\") return \"0\";\n\tconst significant = digits.replace(/0+$/, \"\");\n\treturn `${sign}${significant}e${Number(exponent) - fraction.length + digits.length - significant.length}`;\n}\nfunction parseArrayConstructor(body, elementType) {\n\tif (body.trim() === \"\") return [];\n\tconst values = [];\n\tfor (const element of splitConstructorElements(body)) {\n\t\tconst value = parseConstructorElement(element, elementType);\n\t\tif (value === void 0) return void 0;\n\t\tvalues.push(value);\n\t}\n\treturn values;\n}\nfunction unwrapOuterArrayCasts(expression) {\n\tconst match = OUTER_ARRAY_CAST_PATTERN.exec(expression);\n\treturn match?.[1] === void 0 ? expression : unwrapOuterArrayCasts(match[1].trim());\n}\n/**\n* Parses a raw Postgres column default expression into a normalized ColumnDefault.\n* This enables semantic comparison between contract defaults and introspected schema defaults.\n*\n* Used by the migration diff layer to normalize raw database defaults during comparison,\n* keeping the introspection layer focused on faithful data capture.\n*\n* @param rawDefault - Raw default expression from information_schema.columns.column_default\n* @param nativeType - Native column type, used for type-aware parsing (array, int8, numeric, JSON)\n* @returns Normalized ColumnDefault or undefined if the expression cannot be parsed\n*/\nfunction parsePostgresDefault(rawDefault, nativeType) {\n\tconst trimmed = rawDefault.trim();\n\tconst normalizedType = nativeType?.toLowerCase();\n\tif (NEXTVAL_PATTERN.test(trimmed)) return {\n\t\tkind: \"function\",\n\t\texpression: \"autoincrement()\"\n\t};\n\tif (normalizedType?.endsWith(\"[]\")) {\n\t\tconst elementType = normalizedType.slice(0, -2);\n\t\tconst arrayMatch = trimmed.match(ARRAY_LITERAL_PATTERN);\n\t\tif (arrayMatch?.[1] !== void 0 && !SEMICOLON_DELIMITED_ELEMENT_TYPE_PATTERN.test(elementType)) {\n\t\t\tconst parsed = parseArrayLiteralBody(arrayMatch[1].replace(/''/g, \"'\"), elementType);\n\t\t\tif (parsed !== void 0) return {\n\t\t\t\tkind: \"literal\",\n\t\t\t\tvalue: parsed\n\t\t\t};\n\t\t}\n\t\tconst constructorMatch = unwrapOuterArrayCasts(trimmed).match(ARRAY_CONSTRUCTOR_PATTERN);\n\t\tif (constructorMatch?.[1] !== void 0) {\n\t\t\tconst parsed = parseArrayConstructor(constructorMatch[1], elementType);\n\t\t\tif (parsed !== void 0) return {\n\t\t\t\tkind: \"literal\",\n\t\t\t\tvalue: parsed\n\t\t\t};\n\t\t}\n\t\tif (NULL_PATTERN.test(trimmed)) return {\n\t\t\tkind: \"literal\",\n\t\t\tvalue: null\n\t\t};\n\t\treturn {\n\t\t\tkind: \"function\",\n\t\t\texpression: trimmed\n\t\t};\n\t}\n\tconst canonicalTimestamp = canonicalizeTimestampDefault(trimmed);\n\tif (canonicalTimestamp) return {\n\t\tkind: \"function\",\n\t\texpression: canonicalTimestamp\n\t};\n\tif (UUID_PATTERN.test(trimmed)) return {\n\t\tkind: \"function\",\n\t\texpression: \"gen_random_uuid()\"\n\t};\n\tif (UUID_OSSP_PATTERN.test(trimmed)) return {\n\t\tkind: \"function\",\n\t\texpression: \"gen_random_uuid()\"\n\t};\n\tif (NULL_PATTERN.test(trimmed)) return {\n\t\tkind: \"literal\",\n\t\tvalue: null\n\t};\n\tif (TRUE_PATTERN.test(trimmed)) return {\n\t\tkind: \"literal\",\n\t\tvalue: true\n\t};\n\tif (FALSE_PATTERN.test(trimmed)) return {\n\t\tkind: \"literal\",\n\t\tvalue: false\n\t};\n\tconst token = readLiteralToken(trimmed);\n\tif (token === void 0) return {\n\t\tkind: \"function\",\n\t\texpression: trimmed\n\t};\n\tif (token.kind === \"number\") {\n\t\tconst value = numberValue(token.numeral, normalizedType);\n\t\treturn value === void 0 ? void 0 : {\n\t\t\tkind: \"literal\",\n\t\t\tvalue\n\t\t};\n\t}\n\tif (normalizedType !== void 0 && isJsonElementType(normalizedType)) {\n\t\tconst document = readJsonDocument(token.text);\n\t\tif (document.kind === \"inexact\") return {\n\t\t\tkind: \"function\",\n\t\t\texpression: trimmed\n\t\t};\n\t\tif (document.kind === \"json\") return {\n\t\t\tkind: \"literal\",\n\t\t\tvalue: document.value\n\t\t};\n\t}\n\treturn {\n\t\tkind: \"literal\",\n\t\tvalue: token.text\n\t};\n}\n/**\n* Normalizes a contract-declared default through {@link parsePostgresDefault}\n* — the same parser introspection uses — so a function-shaped default the\n* parser recognizes as a literal (e.g. sql`'{}'::jsonb`)\n* resolves to the same `resolvedDefault` shape a live introspected column\n* would produce. Compensates once, at `SchemaIR` construction of the\n* expected (contract-derived) side (`contractToSchemaIR`'s `resolveDefault`\n* hook), instead of at every site that later compares the two sides. A\n* literal default, or a function form the parser doesn't recognize, passes\n* through unchanged; `nextval(...)` normalizes to `autoincrement()` on both\n* sides, matching a `serial`/identity column's introspected counterpart.\n*/\nfunction postgresResolveDefault(def, resolvedNativeType) {\n\tif (def.kind !== \"function\") return def;\n\treturn parsePostgresDefault(def.expression, resolvedNativeType) ?? def;\n}\n//#endregion\nexport { postgresResolveDefault as n, parsePostgresDefault as t };\n\n//# sourceMappingURL=default-normalizer-DKE2xbCP.mjs.map"],"mappings":"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"}