@prisma/orm-target-postgres 8.0.0-rc.1-dev.46 → 8.0.0-rc.10

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 (188) hide show
  1. package/README.md +1 -5
  2. package/dist/{adapter-B0xsc80z-sYcF0RVF.mjs → adapter-BO4-D_sb-Dv6OpO1E.mjs} +4 -4
  3. package/dist/{adapter-B0xsc80z-sYcF0RVF.mjs.map → adapter-BO4-D_sb-Dv6OpO1E.mjs.map} +1 -1
  4. package/dist/{adapter-CPesdzv0.d.mts → adapter-BQrsKoUs.d.mts} +2 -2
  5. package/dist/{adapter-CPesdzv0.d.mts.map → adapter-BQrsKoUs.d.mts.map} +1 -1
  6. package/dist/adapter.d.mts +8 -8
  7. package/dist/adapter.mjs +6 -6
  8. package/dist/adapter__adapter.d.mts +1 -1
  9. package/dist/adapter__adapter.mjs +1 -1
  10. package/dist/adapter__column-types.d.mts +2 -2
  11. package/dist/adapter__column-types.mjs +2 -2
  12. package/dist/adapter__control.d.mts +1 -1
  13. package/dist/adapter__control.mjs +78 -12
  14. package/dist/adapter__control.mjs.map +1 -1
  15. package/dist/adapter__runtime.d.mts +1 -1
  16. package/dist/adapter__runtime.mjs +23 -14
  17. package/dist/adapter__runtime.mjs.map +1 -1
  18. package/dist/adapter__sql-renderer.d.mts +1 -1
  19. package/dist/adapter__sql-renderer.mjs +1 -1
  20. package/dist/adapter__types.d.mts +2 -2
  21. package/dist/{aggregates-Dh6HPdvC.mjs → aggregates-Ckjhz1o7.mjs} +15 -10
  22. package/dist/aggregates-Ckjhz1o7.mjs.map +1 -0
  23. package/dist/{authoring-BOpdZa2N-ClrLFiXw.mjs → authoring-Dm1jBKhq-i8FD48I-.mjs} +84 -48
  24. package/dist/authoring-Dm1jBKhq-i8FD48I-.mjs.map +1 -0
  25. package/dist/{check-expressions-DRgG8RN5-DiA-22aC.d.mts → check-expressions-D4R7JhiZ-q-dFPGT2.d.mts} +7 -9
  26. package/dist/check-expressions-D4R7JhiZ-q-dFPGT2.d.mts.map +1 -0
  27. package/dist/{check-expressions-5vhxWaFy-CBcjFeur.mjs → check-expressions-DFTeR0rd-CSxSpyMV.mjs} +14 -11
  28. package/dist/check-expressions-DFTeR0rd-CSxSpyMV.mjs.map +1 -0
  29. package/dist/codec-ids-CmcC76hX-C0JIyoua.d.mts +39 -0
  30. package/dist/codec-ids-CmcC76hX-C0JIyoua.d.mts.map +1 -0
  31. package/dist/codec-ids-D3ZEAmt2-DjoKUAas.mjs +39 -0
  32. package/dist/codec-ids-D3ZEAmt2-DjoKUAas.mjs.map +1 -0
  33. package/dist/codec-ids-cWPqrkcF.d.mts +1 -0
  34. package/dist/{codec-types-BRU4F-7t-BaJbKF_i.d.mts → codec-types-X0ENu4sQ-C6GS_WDR.d.mts} +21 -9
  35. package/dist/codec-types-X0ENu4sQ-C6GS_WDR.d.mts.map +1 -0
  36. package/dist/codec-types-Zel4Dk7S.d.mts +2 -0
  37. package/dist/{codecs-BmPCJWqb-DveZGJvm.mjs → codecs-CxWg7WrX-DtVAuuXA.mjs} +351 -255
  38. package/dist/codecs-CxWg7WrX-DtVAuuXA.mjs.map +1 -0
  39. package/dist/{codecs-B1HgsJZ2.mjs → codecs-DZMfLjGe.mjs} +2 -2
  40. package/dist/codecs-DZMfLjGe.mjs.map +1 -0
  41. package/dist/{codecs-D8tLswBi-_nbo-Z8x.d.mts → codecs-bwX5JaME-ByuPNLC5.d.mts} +146 -86
  42. package/dist/codecs-bwX5JaME-ByuPNLC5.d.mts.map +1 -0
  43. package/dist/{codecs-DmCKO7dg.d.mts → codecs-ePpDWH7z.d.mts} +2 -2
  44. package/dist/codecs-ePpDWH7z.d.mts.map +1 -0
  45. package/dist/{column-types-BH-MU6uU.d.mts → column-types-CwjYfNCi.d.mts} +33 -7
  46. package/dist/column-types-CwjYfNCi.d.mts.map +1 -0
  47. package/dist/{column-types-Bh92dNjD.mjs → column-types-DU7C_gwa.mjs} +37 -9
  48. package/dist/column-types-DU7C_gwa.mjs.map +1 -0
  49. package/dist/{contract-free-aQ4nT-_R.mjs → contract-free-CzTZEwpt.mjs} +5 -5
  50. package/dist/contract-free-CzTZEwpt.mjs.map +1 -0
  51. package/dist/{control-Drq2rquV.mjs → control-BF220oqr.mjs} +82 -24
  52. package/dist/control-BF220oqr.mjs.map +1 -0
  53. package/dist/{control-2F195jJk.d.mts → control-ByalKcpe.d.mts} +2 -1
  54. package/dist/control-ByalKcpe.d.mts.map +1 -0
  55. package/dist/{control-Y6FxMu3o.mjs → control-DzK5mSLo.mjs} +3 -3
  56. package/dist/control-DzK5mSLo.mjs.map +1 -0
  57. package/dist/{control-adapter-DFr4gS-r-DM3KcZdQ.mjs → control-adapter-BM70RkWS-kIC873DD.mjs} +21 -10
  58. package/dist/control-adapter-BM70RkWS-kIC873DD.mjs.map +1 -0
  59. package/dist/{control-policy-B53lnBCT-B9K9Cj1x.mjs → control-policy-BN8Ouun3-BtGYeb4f.mjs} +7 -7
  60. package/dist/control-policy-BN8Ouun3-BtGYeb4f.mjs.map +1 -0
  61. package/dist/{control-DLTOAEHj.d.mts → control-xdW1bgaP.d.mts} +3 -3
  62. package/dist/{control-DLTOAEHj.d.mts.map → control-xdW1bgaP.d.mts.map} +1 -1
  63. package/dist/{ddl-CNQJds-C-WfZ3y4y8.mjs → ddl-GXbCrKp_-CBKFkq1r.mjs} +4 -4
  64. package/dist/{ddl-CNQJds-C-WfZ3y4y8.mjs.map → ddl-GXbCrKp_-CBKFkq1r.mjs.map} +1 -1
  65. package/dist/{descriptor-meta-rilAH3ep-dAmiVLpe.mjs → descriptor-meta-D41CePyY-B0L9RIgT.mjs} +7 -6
  66. package/dist/descriptor-meta-D41CePyY-B0L9RIgT.mjs.map +1 -0
  67. package/dist/{descriptor-meta-KVX21fsl-DBDoB4eg.mjs → descriptor-meta-zQNj82MZ-CDwEiYdj.mjs} +50 -21
  68. package/dist/descriptor-meta-zQNj82MZ-CDwEiYdj.mjs.map +1 -0
  69. package/dist/{diff-database-schema-DKq76rCk-uehceHYz.mjs → diff-database-schema-C9UxdmYu-BzQjQb1e.mjs} +6 -6
  70. package/dist/{diff-database-schema-DKq76rCk-uehceHYz.mjs.map → diff-database-schema-C9UxdmYu-BzQjQb1e.mjs.map} +1 -1
  71. package/dist/driver.d.mts +2 -2
  72. package/dist/driver.mjs +3 -2
  73. package/dist/driver__control.mjs +1 -1
  74. package/dist/driver__runtime.d.mts +2 -2
  75. package/dist/driver__runtime.mjs +2 -639
  76. package/dist/{errors-CU4xIwwk.d.mts → errors-5fMq0U66.d.mts} +2 -2
  77. package/dist/{errors-CU4xIwwk.d.mts.map → errors-5fMq0U66.d.mts.map} +1 -1
  78. package/dist/errors-DYyzTYzE-39CV_aMo.mjs +92 -0
  79. package/dist/errors-DYyzTYzE-39CV_aMo.mjs.map +1 -0
  80. package/dist/instant-now-generator-lJQqn_8K-JOzseqXI.d.mts +9 -0
  81. package/dist/instant-now-generator-lJQqn_8K-JOzseqXI.d.mts.map +1 -0
  82. package/dist/migration-PTHAY9Cv.mjs.map +1 -1
  83. package/dist/{op-factory-call-H6zeDGLe-_1pAftJk.mjs → op-factory-call-CSkQdszU-C43tr0rP.mjs} +7 -7
  84. package/dist/{op-factory-call-H6zeDGLe-_1pAftJk.mjs.map → op-factory-call-CSkQdszU-C43tr0rP.mjs.map} +1 -1
  85. package/dist/{pack-CySS3DQU.d.mts → pack-BByvVlUw.d.mts} +177 -13
  86. package/dist/pack-BByvVlUw.d.mts.map +1 -0
  87. package/dist/{planner-D0uogzvT-1WyGIC5p.mjs → planner-DtwSy6w3--x0IvtI9.mjs} +8 -8
  88. package/dist/{planner-D0uogzvT-1WyGIC5p.mjs.map → planner-DtwSy6w3--x0IvtI9.mjs.map} +1 -1
  89. package/dist/{planner-ddl-builders-Chxh-LEQ-DXvwOeeA.mjs → planner-ddl-builders-CsfmnnKR-CNn0fLyx.mjs} +5 -5
  90. package/dist/{planner-ddl-builders-Chxh-LEQ-DXvwOeeA.mjs.map → planner-ddl-builders-CsfmnnKR-CNn0fLyx.mjs.map} +1 -1
  91. package/dist/{planner-produced-postgres-migration-D5m8nK6s-CbZ4hlbv.mjs → planner-produced-postgres-migration-BResV739-meZQaWcU.mjs} +4 -4
  92. package/dist/{planner-produced-postgres-migration-D5m8nK6s-CbZ4hlbv.mjs.map → planner-produced-postgres-migration-BResV739-meZQaWcU.mjs.map} +1 -1
  93. package/dist/{planner-sql-checks-ftgzvIO9-BTtBg2Vz.mjs → planner-sql-checks-Bcngv5YZ-Dnp05hSM.mjs} +4 -4
  94. package/dist/{planner-sql-checks-ftgzvIO9-BTtBg2Vz.mjs.map → planner-sql-checks-Bcngv5YZ-Dnp05hSM.mjs.map} +1 -1
  95. package/dist/{postgres-contract-view-B8ykf2cO-T2LvWVFZ.mjs → postgres-contract-view-dWcpuV6T-CJPsHGox.mjs} +5 -5
  96. package/dist/{postgres-contract-view-B8ykf2cO-T2LvWVFZ.mjs.map → postgres-contract-view-dWcpuV6T-CJPsHGox.mjs.map} +1 -1
  97. package/dist/{postgres-migration-Dbq3RGfZ-aMnwfEAb.mjs → postgres-migration-DRKw86P7-C1eWF86n.mjs} +6 -6
  98. package/dist/{postgres-migration-Dbq3RGfZ-aMnwfEAb.mjs.map → postgres-migration-DRKw86P7-C1eWF86n.mjs.map} +1 -1
  99. package/dist/{postgres-schema-CF0yHESb-D7n2X21R.mjs → postgres-schema-B3t7Zr52-CMlY9aGw.mjs} +4 -4
  100. package/dist/{postgres-schema-CF0yHESb-D7n2X21R.mjs.map → postgres-schema-B3t7Zr52-CMlY9aGw.mjs.map} +1 -1
  101. package/dist/{render-ops-DOsRP0Po-BKn_c_Ia.mjs → render-ops-D2vJApKB-B281fzmn.mjs} +3 -3
  102. package/dist/{render-ops-DOsRP0Po-BKn_c_Ia.mjs.map → render-ops-D2vJApKB-B281fzmn.mjs.map} +1 -1
  103. package/dist/{resolve-ddl-schema-CoaeNP35-C-UZldpj.mjs → resolve-ddl-schema-Cab6g5MC-SRco-A7L.mjs} +3 -3
  104. package/dist/{resolve-ddl-schema-CoaeNP35-C-UZldpj.mjs.map → resolve-ddl-schema-Cab6g5MC-SRco-A7L.mjs.map} +1 -1
  105. package/dist/{runtime-DOXznQe0.d.mts → runtime-BdRKoWQu.d.mts} +2 -2
  106. package/dist/{runtime-DOXznQe0.d.mts.map → runtime-BdRKoWQu.d.mts.map} +1 -1
  107. package/dist/runtime-Di_BFzUC.mjs +685 -0
  108. package/dist/runtime-Di_BFzUC.mjs.map +1 -0
  109. package/dist/{runtime-lHBKgjB9.d.mts → runtime-DtoNQntj.d.mts} +3 -2
  110. package/dist/runtime-DtoNQntj.d.mts.map +1 -0
  111. package/dist/{runtime-_TfO66h5.d.mts → runtime-bbCw9Omq.d.mts} +2 -1
  112. package/dist/runtime-bbCw9Omq.d.mts.map +1 -0
  113. package/dist/{sql-renderer-BgC0ZgLS.d.mts → sql-renderer-Cshx9dNa.d.mts} +2 -2
  114. package/dist/{sql-renderer-BgC0ZgLS.d.mts.map → sql-renderer-Cshx9dNa.d.mts.map} +1 -1
  115. package/dist/{sql-renderer-ComgusFq-BBlqM1fw.mjs → sql-renderer-DMMtw8lD-K9zLsg-g.mjs} +8 -75
  116. package/dist/sql-renderer-DMMtw8lD-K9zLsg-g.mjs.map +1 -0
  117. package/dist/{sql-utils-DuzN3JZg-DiXy4Vah.mjs → sql-utils-6j9YTLpr-BCyCBPBg.mjs} +3 -3
  118. package/dist/{sql-utils-DuzN3JZg-DiXy4Vah.mjs.map → sql-utils-6j9YTLpr-BCyCBPBg.mjs.map} +1 -1
  119. package/dist/target.d.mts +14 -13
  120. package/dist/target.mjs +24 -23
  121. package/dist/target__aggregates.mjs +1 -1
  122. package/dist/target__codec-ids.d.mts +3 -3
  123. package/dist/target__codec-ids.mjs +2 -2
  124. package/dist/target__codec-types.d.mts +4 -4
  125. package/dist/target__codecs.d.mts +3 -3
  126. package/dist/target__codecs.mjs +3 -3
  127. package/dist/target__contract-free.mjs +3 -3
  128. package/dist/target__control.d.mts +3 -2
  129. package/dist/target__control.mjs +3 -2
  130. package/dist/target__diff-database-schema.mjs +1 -1
  131. package/dist/target__errors.d.mts +1 -1
  132. package/dist/target__errors.mjs +1 -1
  133. package/dist/target__issue-planner.mjs +1 -1
  134. package/dist/target__migration.mjs +2 -2
  135. package/dist/target__op-factory-call.mjs +1 -1
  136. package/dist/target__pack.d.mts +1 -1
  137. package/dist/target__pack.mjs +1 -1
  138. package/dist/target__planner-ddl-builders.mjs +1 -1
  139. package/dist/target__planner-produced-postgres-migration.mjs +1 -1
  140. package/dist/target__planner-sql-checks.mjs +1 -1
  141. package/dist/target__planner.mjs +2 -2
  142. package/dist/target__render-ops.mjs +1 -1
  143. package/dist/target__runtime.d.mts +3 -2
  144. package/dist/target__runtime.mjs +3 -2
  145. package/dist/target__runtime.mjs.map +1 -1
  146. package/dist/target__schema-ir-annotations.mjs +1 -1
  147. package/dist/target__sql-utils.mjs +1 -1
  148. package/dist/target__types.d.mts +2 -2
  149. package/dist/target__types.mjs +2 -2
  150. package/dist/{types-CjGjPLr5.d.mts → types-B4IkFolc.d.mts} +2 -2
  151. package/dist/{types-CjGjPLr5.d.mts.map → types-B4IkFolc.d.mts.map} +1 -1
  152. package/dist/types-C7BEZmFD.d.mts +1 -0
  153. package/dist/{types-CkryN1AS-BcQRGsDn.d.mts → types-CkryN1AS-CZtzRJFZ.d.mts} +2 -2
  154. package/dist/{types-CkryN1AS-BcQRGsDn.d.mts.map → types-CkryN1AS-CZtzRJFZ.d.mts.map} +1 -1
  155. package/package.json +13 -12
  156. package/dist/aggregates-Dh6HPdvC.mjs.map +0 -1
  157. package/dist/authoring-BOpdZa2N-ClrLFiXw.mjs.map +0 -1
  158. package/dist/check-expressions-5vhxWaFy-CBcjFeur.mjs.map +0 -1
  159. package/dist/check-expressions-DRgG8RN5-DiA-22aC.d.mts.map +0 -1
  160. package/dist/codec-ids-Bqu_IwO0-DKOdPizQ.d.mts +0 -35
  161. package/dist/codec-ids-Bqu_IwO0-DKOdPizQ.d.mts.map +0 -1
  162. package/dist/codec-ids-C5Rkltkw-DMf87l9s.mjs +0 -35
  163. package/dist/codec-ids-C5Rkltkw-DMf87l9s.mjs.map +0 -1
  164. package/dist/codec-ids-DJ6j6pZc.d.mts +0 -1
  165. package/dist/codec-types-BRU4F-7t-BaJbKF_i.d.mts.map +0 -1
  166. package/dist/codec-types-bX63JRLf.d.mts +0 -2
  167. package/dist/codecs-B1HgsJZ2.mjs.map +0 -1
  168. package/dist/codecs-BmPCJWqb-DveZGJvm.mjs.map +0 -1
  169. package/dist/codecs-D8tLswBi-_nbo-Z8x.d.mts.map +0 -1
  170. package/dist/codecs-DmCKO7dg.d.mts.map +0 -1
  171. package/dist/column-types-BH-MU6uU.d.mts.map +0 -1
  172. package/dist/column-types-Bh92dNjD.mjs.map +0 -1
  173. package/dist/contract-free-aQ4nT-_R.mjs.map +0 -1
  174. package/dist/control-2F195jJk.d.mts.map +0 -1
  175. package/dist/control-Drq2rquV.mjs.map +0 -1
  176. package/dist/control-Y6FxMu3o.mjs.map +0 -1
  177. package/dist/control-adapter-DFr4gS-r-DM3KcZdQ.mjs.map +0 -1
  178. package/dist/control-policy-B53lnBCT-B9K9Cj1x.mjs.map +0 -1
  179. package/dist/descriptor-meta-KVX21fsl-DBDoB4eg.mjs.map +0 -1
  180. package/dist/descriptor-meta-rilAH3ep-dAmiVLpe.mjs.map +0 -1
  181. package/dist/driver__runtime.mjs.map +0 -1
  182. package/dist/errors-DKjQzNaN-DFcF1thx.mjs +0 -39
  183. package/dist/errors-DKjQzNaN-DFcF1thx.mjs.map +0 -1
  184. package/dist/pack-CySS3DQU.d.mts.map +0 -1
  185. package/dist/runtime-_TfO66h5.d.mts.map +0 -1
  186. package/dist/runtime-lHBKgjB9.d.mts.map +0 -1
  187. package/dist/sql-renderer-ComgusFq-BBlqM1fw.mjs.map +0 -1
  188. package/dist/types-B-4d5_4a.d.mts +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-Drq2rquV.mjs","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/control.mjs"],"sourcesContent":["import { n as postgresError } from \"./errors-DKjQzNaN.mjs\";\nimport { n as postgresResolveDefault } from \"./default-normalizer-Ba5ZebHM.mjs\";\nimport { t as postgresRenderCheckExpressions } from \"./check-expressions-5vhxWaFy.mjs\";\nimport { t as postgresTargetDescriptorMeta } from \"./descriptor-meta-rilAH3ep.mjs\";\nimport { a as postgresDiffSubjectGranularity, i as postgresDiffSubjectEntityKind } from \"./postgres-table-schema-node-BBkitBQh.mjs\";\nimport { i as PostgresDatabaseSchemaNode } from \"./postgres-role-schema-node-B8Z5i5D-.mjs\";\nimport { n as diffPostgresSchema, r as contractToPostgresDatabaseSchemaNode } from \"./diff-database-schema-DKq76rCk.mjs\";\nimport { r as renderDefaultLiteral } from \"./planner-ddl-builders-Chxh-LEQ.mjs\";\nimport { n as PostgresContractSerializer } from \"./postgres-contract-view-B8ykf2cO.mjs\";\nimport { t as createPostgresMigrationPlanner } from \"./planner-D0uogzvT.mjs\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { UNBOUND_NAMESPACE_ID, coordinateKey, elementCoordinates } from \"@internal/framework-components/ir\";\nimport { buildNativeTypeExpander, runnerFailure, runnerSuccess } from \"@internal/family-sql/control\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { composeCheckWirePrefix, computeCheckContentHash, computeIndexContentHash, formatWireName, parseWireName } from \"@internal/sql-schema-ir/naming\";\nimport { assertDefined } from \"@internal/utils/assertions\";\nimport { SqlSchemaIR, SqlTableIR } from \"@internal/sql-schema-ir/types\";\nimport { APP_SPACE_ID } from \"@internal/framework-components/control\";\nimport { notOk, ok, okVoid } from \"@internal/utils/result\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { SqlSchemaVerifierBase } from \"@internal/family-sql/ir\";\nimport { SqlQueryError } from \"@internal/sql-errors\";\nimport { buildChildRelationField, deriveRelationFieldName, inferRelations, mapDefault, parseRawDefault, toEnumMemberName, toEnumName, toFieldName, toModelName } from \"@internal/family-sql/psl-infer\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID, makePslNamespace, makePslNamespaceEntries } from \"@internal/framework-components/psl-ast\";\nimport { isColumnDefault } from \"@internal/contract/types\";\n//#region src/core/migrations/runner.ts\nconst LOCK_DOMAIN = \"prisma_next.contract.marker\";\n/**\n* Deep clones and freezes a record object to prevent mutation.\n* Recursively clones nested objects and arrays to ensure complete isolation.\n*/\nfunction cloneAndFreezeRecord(value) {\n\tconst cloned = {};\n\tfor (const [key, val] of Object.entries(value)) if (val === null || val === void 0) cloned[key] = val;\n\telse if (Array.isArray(val)) cloned[key] = Object.freeze([...val]);\n\telse if (typeof val === \"object\") cloned[key] = cloneAndFreezeRecord(val);\n\telse cloned[key] = val;\n\treturn Object.freeze(cloned);\n}\nfunction createPostgresMigrationRunner(family) {\n\treturn new PostgresMigrationRunner(family);\n}\nvar PostgresMigrationRunner = class {\n\tfamily;\n\tconstructor(family) {\n\t\tthis.family = family;\n\t}\n\t/**\n\t* Body of the migration runner without transaction management. The\n\t* caller ({@link PostgresMigrationRunner.execute}) owns the\n\t* `BEGIN`/`COMMIT`/`ROLLBACK` lifecycle.\n\t*/\n\tasync executeOnConnection(options) {\n\t\tconst schema = options.schemaName ?? Object.keys(options.destinationContract.storage.namespaces).find((id) => id !== UNBOUND_NAMESPACE_ID) ?? UNBOUND_NAMESPACE_ID;\n\t\tconst driver = options.driver;\n\t\tif (options.space !== void 0 && options.space !== options.plan.spaceId) throw postgresError(\"MIGRATION.CONTRACT_SPACE_VIOLATION\", `SqlMigrationRunner: options.space (${options.space}) does not match plan.spaceId (${options.plan.spaceId})`, { meta: {\n\t\t\tspace: options.space,\n\t\t\tplanSpaceId: options.plan.spaceId\n\t\t} });\n\t\tconst space = options.plan.spaceId;\n\t\tconst lockKey = `${LOCK_DOMAIN}:${schema}:${space}`;\n\t\tconst planOps = blindCast(await Promise.all(options.plan.operations));\n\t\tconst destinationCheck = this.ensurePlanMatchesDestinationContract(options.plan.destination, options.destinationContract);\n\t\tif (!destinationCheck.ok) return destinationCheck;\n\t\tconst policyCheck = this.enforcePolicyCompatibility(options.policy, planOps);\n\t\tif (!policyCheck.ok) return policyCheck;\n\t\tawait this.acquireLock(driver, lockKey);\n\t\tconst ensureResult = await this.ensureControlTables(driver, options.destinationContract);\n\t\tif (!ensureResult.ok) return ensureResult;\n\t\tconst existingMarker = await this.family.readMarker({\n\t\t\tdriver,\n\t\t\tspace\n\t\t});\n\t\tconst markerCheck = this.ensureMarkerCompatibility(existingMarker, options.plan);\n\t\tif (!markerCheck.ok) return markerCheck;\n\t\tconst markerAtDestination = this.markerMatchesDestination(existingMarker, options.plan);\n\t\tconst isSelfEdge = options.plan.origin?.storageHash === options.plan.destination.storageHash;\n\t\tconst skipOperations = markerAtDestination && options.plan.origin != null && !isSelfEdge;\n\t\tlet applyValue;\n\t\tif (skipOperations) applyValue = {\n\t\t\toperationsExecuted: 0,\n\t\t\texecutedOperations: []\n\t\t};\n\t\telse {\n\t\t\tconst applyResult = await this.applyPlan(driver, options, planOps);\n\t\t\tif (!applyResult.ok) return applyResult;\n\t\t\tapplyValue = applyResult.value;\n\t\t}\n\t\tif (space === APP_SPACE_ID) {\n\t\t\tconst schemaNode = await this.family.introspect({\n\t\t\t\tdriver,\n\t\t\t\tcontract: options.destinationContract\n\t\t\t});\n\t\t\tconst schemaVerifyResult = this.family.verifySchema({\n\t\t\t\tcontract: options.destinationContract,\n\t\t\t\tschema: schemaNode,\n\t\t\t\tstrict: options.strictVerification ?? true,\n\t\t\t\tframeworkComponents: options.frameworkComponents\n\t\t\t});\n\t\t\tif (!schemaVerifyResult.ok) return runnerFailure(\"MIGRATION.SCHEMA_VERIFY_FAILED\", schemaVerifyResult.summary, {\n\t\t\t\twhy: \"The resulting database schema does not satisfy the destination contract.\",\n\t\t\t\tmeta: { issues: schemaVerifyResult.schema.issues }\n\t\t\t});\n\t\t}\n\t\tconst incomingInvariants = options.plan.providedInvariants ?? [];\n\t\tconst existingInvariants = new Set(existingMarker?.invariants ?? []);\n\t\tconst incomingIsSubsetOfExisting = incomingInvariants.every((id) => existingInvariants.has(id));\n\t\tif (!(isSelfEdge && applyValue.operationsExecuted === 0 && incomingIsSubsetOfExisting)) {\n\t\t\tconst markerResult = await this.upsertMarker(driver, options, existingMarker, space);\n\t\t\tif (!markerResult.ok) return markerResult;\n\t\t\tawait this.recordLedgerEntries(driver, options, applyValue.executedOperations, planOps.length);\n\t\t}\n\t\treturn runnerSuccess({\n\t\t\toperationsPlanned: planOps.length,\n\t\t\toperationsExecuted: applyValue.operationsExecuted\n\t\t});\n\t}\n\tasync execute(options) {\n\t\tconst driver = options.driver;\n\t\tconst perSpaceOptions = options.perSpaceOptions;\n\t\tif (perSpaceOptions.length === 0) return ok({ perSpaceResults: [] });\n\t\tawait this.beginTransaction(driver);\n\t\tlet committed = false;\n\t\ttry {\n\t\t\tconst perSpaceResults = [];\n\t\t\tfor (const spaceOptions of perSpaceOptions) {\n\t\t\t\tconst space = spaceOptions.space ?? spaceOptions.plan.spaceId;\n\t\t\t\tconst result = await this.executeOnConnection({\n\t\t\t\t\t...spaceOptions,\n\t\t\t\t\tdriver,\n\t\t\t\t\tspace\n\t\t\t\t});\n\t\t\t\tif (!result.ok) return notOk({\n\t\t\t\t\t...result.failure,\n\t\t\t\t\tfailingSpace: space\n\t\t\t\t});\n\t\t\t\tperSpaceResults.push({\n\t\t\t\t\tspace,\n\t\t\t\t\tvalue: result.value\n\t\t\t\t});\n\t\t\t}\n\t\t\tawait this.commitTransaction(driver);\n\t\t\tcommitted = true;\n\t\t\treturn ok({ perSpaceResults });\n\t\t} finally {\n\t\t\tif (!committed) await this.rollbackTransaction(driver);\n\t\t}\n\t}\n\tasync applyPlan(driver, options, ops) {\n\t\tconst checks = options.executionChecks;\n\t\tconst runPrechecks = checks?.prechecks !== false;\n\t\tconst runPostchecks = checks?.postchecks !== false;\n\t\tconst runIdempotency = checks?.idempotencyChecks !== false;\n\t\tlet operationsExecuted = 0;\n\t\tconst executedOperations = [];\n\t\tfor (const operation of ops) {\n\t\t\toptions.callbacks?.onOperationStart?.(operation);\n\t\t\ttry {\n\t\t\t\tif (runPostchecks && runIdempotency) {\n\t\t\t\t\tif (await this.expectationsAreSatisfied(driver, operation.postcheck)) {\n\t\t\t\t\t\texecutedOperations.push(this.createPostcheckPreSatisfiedSkipRecord(operation));\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (runPrechecks) {\n\t\t\t\t\tconst precheckResult = await this.runExpectationSteps(driver, operation.precheck, operation, \"precheck\");\n\t\t\t\t\tif (!precheckResult.ok) return precheckResult;\n\t\t\t\t}\n\t\t\t\tconst executeResult = await this.runExecuteSteps(driver, operation.execute, operation);\n\t\t\t\tif (!executeResult.ok) return executeResult;\n\t\t\t\tif (runPostchecks) {\n\t\t\t\t\tconst postcheckResult = await this.runExpectationSteps(driver, operation.postcheck, operation, \"postcheck\");\n\t\t\t\t\tif (!postcheckResult.ok) return postcheckResult;\n\t\t\t\t}\n\t\t\t\texecutedOperations.push(operation);\n\t\t\t\toperationsExecuted += 1;\n\t\t\t} finally {\n\t\t\t\toptions.callbacks?.onOperationComplete?.(operation);\n\t\t\t}\n\t\t}\n\t\treturn ok({\n\t\t\toperationsExecuted,\n\t\t\texecutedOperations\n\t\t});\n\t}\n\tasync ensureControlTables(driver, contract) {\n\t\tconst lowererContext = { contract };\n\t\tconst [schemaQuery, ...tableQueries] = this.family.bootstrapControlTableQueries();\n\t\tif (schemaQuery === void 0) throw new InternalError(\"Postgres control-table bootstrap must include CREATE SCHEMA\");\n\t\tawait this.executeStatement(driver, await this.family.lowerAst(schemaQuery, lowererContext));\n\t\tconst legacyDetection = await this.detectLegacyMarkerShape(driver);\n\t\tif (!legacyDetection.ok) return legacyDetection;\n\t\tfor (const query of tableQueries) await this.executeStatement(driver, await this.family.lowerAst(query, lowererContext));\n\t\treturn okVoid();\n\t}\n\tasync detectLegacyMarkerShape(driver) {\n\t\tconst result = await driver.query(`select column_name\n from information_schema.columns\n where table_schema = 'prisma_contract'\n and table_name = 'marker'`);\n\t\tif (result.rows.length === 0) return okVoid();\n\t\tconst columns = new Set(result.rows.map((row) => row.column_name));\n\t\tif (columns.has(\"space\")) return okVoid();\n\t\treturn runnerFailure(\"MIGRATION.LEGACY_MARKER_SHAPE\", \"Legacy marker-table shape detected on prisma_contract.marker (no `space` column). Prisma Next is in pre-1.0; the previous transitional auto-migration to the per-space-row schema has been removed. Drop `prisma_contract.marker` and re-run `dbInit` to reinitialise from a clean baseline.\", { meta: {\n\t\t\ttable: \"prisma_contract.marker\",\n\t\t\tcolumns: [...columns].sort()\n\t\t} });\n\t}\n\tasync runExpectationSteps(driver, steps, operation, phase) {\n\t\tfor (const step of steps) {\n\t\t\tconst result = await driver.query(step.sql, step.params ?? []);\n\t\t\tif (!this.stepResultIsTrue(result.rows)) return runnerFailure(phase === \"precheck\" ? \"MIGRATION.PRECHECK_FAILED\" : \"MIGRATION.POSTCHECK_FAILED\", `Operation ${operation.id} failed during ${phase}: ${step.description}`, { meta: {\n\t\t\t\toperationId: operation.id,\n\t\t\t\tphase,\n\t\t\t\tstepDescription: step.description\n\t\t\t} });\n\t\t}\n\t\treturn okVoid();\n\t}\n\tasync runExecuteSteps(driver, steps, operation) {\n\t\tfor (const step of steps) try {\n\t\t\tawait driver.query(step.sql, step.params ?? []);\n\t\t} catch (error) {\n\t\t\tif (SqlQueryError.is(error)) return runnerFailure(\"MIGRATION.EXECUTION_FAILED\", `Operation ${operation.id} failed during execution: ${step.description}`, {\n\t\t\t\twhy: error.message,\n\t\t\t\tmeta: {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\tstepDescription: step.description,\n\t\t\t\t\tsql: step.sql,\n\t\t\t\t\tsqlState: error.sqlState,\n\t\t\t\t\tconstraint: error.constraint,\n\t\t\t\t\ttable: error.table,\n\t\t\t\t\tcolumn: error.column,\n\t\t\t\t\tdetail: error.detail\n\t\t\t\t}\n\t\t\t});\n\t\t\tthrow error;\n\t\t}\n\t\treturn okVoid();\n\t}\n\tstepResultIsTrue(rows) {\n\t\tif (!rows || rows.length === 0) return false;\n\t\tconst firstRow = rows[0];\n\t\tconst firstValue = firstRow ? Object.values(firstRow)[0] : void 0;\n\t\tif (typeof firstValue === \"boolean\") return firstValue;\n\t\tif (typeof firstValue === \"number\") return firstValue !== 0;\n\t\tif (typeof firstValue === \"string\") {\n\t\t\tconst lower = firstValue.toLowerCase();\n\t\t\tif (lower === \"t\" || lower === \"true\" || lower === \"1\") return true;\n\t\t\tif (lower === \"f\" || lower === \"false\" || lower === \"0\") return false;\n\t\t\treturn firstValue.length > 0;\n\t\t}\n\t\treturn Boolean(firstValue);\n\t}\n\tasync expectationsAreSatisfied(driver, steps) {\n\t\tif (steps.length === 0) return false;\n\t\tfor (const step of steps) {\n\t\t\tconst result = await driver.query(step.sql, step.params ?? []);\n\t\t\tif (!this.stepResultIsTrue(result.rows)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tcreatePostcheckPreSatisfiedSkipRecord(operation) {\n\t\tconst clonedMeta = operation.meta ? cloneAndFreezeRecord(operation.meta) : void 0;\n\t\tconst runnerMeta = Object.freeze({\n\t\t\tskipped: true,\n\t\t\treason: \"postcheck_pre_satisfied\"\n\t\t});\n\t\tconst mergedMeta = Object.freeze({\n\t\t\t...clonedMeta ?? {},\n\t\t\trunner: runnerMeta\n\t\t});\n\t\tconst frozenPostcheck = Object.freeze([...operation.postcheck]);\n\t\treturn Object.freeze({\n\t\t\tid: operation.id,\n\t\t\tlabel: operation.label,\n\t\t\t...ifDefined(\"summary\", operation.summary),\n\t\t\toperationClass: operation.operationClass,\n\t\t\ttarget: operation.target,\n\t\t\tprecheck: Object.freeze([]),\n\t\t\texecute: Object.freeze([]),\n\t\t\tpostcheck: frozenPostcheck,\n\t\t\t...ifDefined(\"meta\", operation.meta || mergedMeta ? mergedMeta : void 0)\n\t\t});\n\t}\n\tmarkerMatchesDestination(marker, plan) {\n\t\tif (!marker) return false;\n\t\tif (marker.storageHash !== plan.destination.storageHash) return false;\n\t\tif (plan.destination.profileHash && marker.profileHash !== plan.destination.profileHash) return false;\n\t\treturn true;\n\t}\n\tenforcePolicyCompatibility(policy, operations) {\n\t\tconst allowedClasses = new Set(policy.allowedOperationClasses);\n\t\tfor (const operation of operations) if (!allowedClasses.has(operation.operationClass)) return runnerFailure(\"MIGRATION.POLICY_VIOLATION\", `Operation ${operation.id} has class \"${operation.operationClass}\" which is not allowed by policy.`, {\n\t\t\twhy: `Policy only allows: ${policy.allowedOperationClasses.join(\", \")}.`,\n\t\t\tmeta: {\n\t\t\t\toperationId: operation.id,\n\t\t\t\toperationClass: operation.operationClass,\n\t\t\t\tallowedClasses: policy.allowedOperationClasses\n\t\t\t}\n\t\t});\n\t\treturn okVoid();\n\t}\n\tensureMarkerCompatibility(marker, plan) {\n\t\tconst origin = plan.origin ?? null;\n\t\tif (!origin) return okVoid();\n\t\tif (!marker) return runnerFailure(\"MIGRATION.MARKER_ORIGIN_MISMATCH\", `Missing contract marker: expected origin storage hash ${origin.storageHash}.`, { meta: { expectedOriginStorageHash: origin.storageHash } });\n\t\tif (marker.storageHash !== origin.storageHash) return runnerFailure(\"MIGRATION.MARKER_ORIGIN_MISMATCH\", `Existing contract marker (${marker.storageHash}) does not match plan origin (${origin.storageHash}).`, { meta: {\n\t\t\tmarkerStorageHash: marker.storageHash,\n\t\t\texpectedOriginStorageHash: origin.storageHash\n\t\t} });\n\t\tif (origin.profileHash && marker.profileHash !== origin.profileHash) return runnerFailure(\"MIGRATION.MARKER_ORIGIN_MISMATCH\", `Existing contract marker profile hash (${marker.profileHash}) does not match plan origin profile hash (${origin.profileHash}).`, { meta: {\n\t\t\tmarkerProfileHash: marker.profileHash,\n\t\t\texpectedOriginProfileHash: origin.profileHash\n\t\t} });\n\t\treturn okVoid();\n\t}\n\tensurePlanMatchesDestinationContract(destination, contract) {\n\t\tif (destination.storageHash !== contract.storage.storageHash) return runnerFailure(\"MIGRATION.DESTINATION_CONTRACT_MISMATCH\", `Plan destination storage hash (${destination.storageHash}) does not match provided contract storage hash (${contract.storage.storageHash}).`, { meta: {\n\t\t\tplanStorageHash: destination.storageHash,\n\t\t\tcontractStorageHash: contract.storage.storageHash\n\t\t} });\n\t\tif (destination.profileHash && contract.profileHash && destination.profileHash !== contract.profileHash) return runnerFailure(\"MIGRATION.DESTINATION_CONTRACT_MISMATCH\", `Plan destination profile hash (${destination.profileHash}) does not match provided contract profile hash (${contract.profileHash}).`, { meta: {\n\t\t\tplanProfileHash: destination.profileHash,\n\t\t\tcontractProfileHash: contract.profileHash\n\t\t} });\n\t\treturn okVoid();\n\t}\n\tasync upsertMarker(driver, options, existingMarker, space) {\n\t\tconst destination = {\n\t\t\tstorageHash: options.plan.destination.storageHash,\n\t\t\tprofileHash: options.plan.destination.profileHash ?? options.destinationContract.profileHash ?? options.plan.destination.storageHash,\n\t\t\tinvariants: options.plan.providedInvariants ?? []\n\t\t};\n\t\tif (!existingMarker) {\n\t\t\tawait this.family.initMarker({\n\t\t\t\tdriver,\n\t\t\t\tspace,\n\t\t\t\tdestination\n\t\t\t});\n\t\t\treturn okVoid();\n\t\t}\n\t\tif (!await this.family.updateMarker({\n\t\t\tdriver,\n\t\t\tspace,\n\t\t\texpectedFrom: existingMarker.storageHash,\n\t\t\tdestination\n\t\t})) return runnerFailure(\"MIGRATION.MARKER_CAS_FAILURE\", \"Marker was modified by another process during migration execution.\", { meta: {\n\t\t\tspace,\n\t\t\texpectedStorageHash: existingMarker.storageHash,\n\t\t\tdestinationStorageHash: options.plan.destination.storageHash\n\t\t} });\n\t\treturn okVoid();\n\t}\n\tasync recordLedgerEntries(driver, options, executedOperations, planOpsLength) {\n\t\tconst space = options.plan.spaceId;\n\t\tconst edges = options.migrationEdges;\n\t\tconst totalEdgeOps = edges.reduce((sum, edge) => sum + edge.operationCount, 0);\n\t\tif (totalEdgeOps !== planOpsLength) throw new InternalError(`Ledger write: plan.operations length (${planOpsLength}) does not match sum of migrationEdges operationCount (${totalEdgeOps})`);\n\t\tlet offset = 0;\n\t\tfor (const edge of edges) {\n\t\t\tconst edgeOps = executedOperations.slice(offset, offset + edge.operationCount);\n\t\t\toffset += edge.operationCount;\n\t\t\tawait this.family.writeLedgerEntry({\n\t\t\t\tdriver,\n\t\t\t\tspace,\n\t\t\t\tentry: {\n\t\t\t\t\tedgeId: `${edge.from}->${edge.to}`,\n\t\t\t\t\tfrom: edge.from,\n\t\t\t\t\tto: edge.to,\n\t\t\t\t\tmigrationName: edge.dirName,\n\t\t\t\t\tmigrationHash: edge.migrationHash,\n\t\t\t\t\toperations: edgeOps,\n\t\t\t\t\t...ifDefined(\"destinationContractJson\", edge.destinationContractJson)\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tasync acquireLock(driver, key) {\n\t\tawait driver.query(\"select pg_advisory_xact_lock(hashtext($1))\", [key]);\n\t}\n\tasync beginTransaction(driver) {\n\t\tawait driver.query(\"BEGIN\");\n\t}\n\tasync commitTransaction(driver) {\n\t\tawait driver.query(\"COMMIT\");\n\t}\n\tasync rollbackTransaction(driver) {\n\t\tawait driver.query(\"ROLLBACK\");\n\t}\n\tasync executeStatement(driver, statement) {\n\t\tawait driver.query(statement.sql, statement.params);\n\t}\n};\n//#endregion\n//#region src/core/postgres-schema-verifier.ts\n/**\n* Postgres target `SchemaVerifier` concretion. Plugs into the\n* SQL-shared verification surface; production verification today still\n* routes through the family verify verdict (`verifySqlSchemaByDiff` over\n* `diffPostgresSchema`), which carries options (codec hooks,\n* normalizers, framework components) that the framework-level\n* `SchemaVerifyOptions` shape does not yet surface.\n*\n* The hooks return the empty list pending the call-site migration that\n* routes the existing verifier behaviour through the SPI — at that\n* point `verifyCommonSqlSchema` will likely lift onto the family base\n* (mirroring `verifyCommonMongoSchema`) and `verifyTargetExtensions`\n* will house Postgres-only kinds (functions, RLS policies in a future\n* project).\n*/\nvar PostgresSchemaVerifier = class extends SqlSchemaVerifierBase {\n\tverifyCommonSqlSchema(_options) {\n\t\treturn [];\n\t}\n\tverifyTargetExtensions(_options) {\n\t\treturn [];\n\t}\n};\n//#endregion\n//#region src/core/psl-infer/infer-names.ts\nfunction buildFieldNamesByTable(tables) {\n\tconst fieldNamesByTable = /* @__PURE__ */ new Map();\n\tfor (const table of Object.values(tables)) {\n\t\tconst assignmentOrder = [...Object.values(table.columns).map((column, index) => {\n\t\t\tconst { name, map } = toFieldName(column.name);\n\t\t\treturn {\n\t\t\t\tcolumnName: column.name,\n\t\t\t\tdesiredFieldName: name,\n\t\t\t\tfieldMap: map,\n\t\t\t\tindex\n\t\t\t};\n\t\t})].sort((left, right) => {\n\t\t\tconst mapComparison = Number(left.fieldMap !== void 0) - Number(right.fieldMap !== void 0);\n\t\t\tif (mapComparison !== 0) return mapComparison;\n\t\t\treturn left.index - right.index;\n\t\t});\n\t\tconst usedFieldNames = /* @__PURE__ */ new Set();\n\t\tconst tableFieldNames = /* @__PURE__ */ new Map();\n\t\tfor (const column of assignmentOrder) {\n\t\t\tconst fieldName = createUniqueFieldName(column.desiredFieldName, usedFieldNames);\n\t\t\tusedFieldNames.add(fieldName);\n\t\t\ttableFieldNames.set(column.columnName, {\n\t\t\t\tfieldName,\n\t\t\t\tfieldMap: column.fieldMap\n\t\t\t});\n\t\t}\n\t\tfieldNamesByTable.set(table.name, tableFieldNames);\n\t}\n\treturn fieldNamesByTable;\n}\nfunction resolveColumnFieldName(fieldNamesByTable, tableName, columnName) {\n\treturn fieldNamesByTable.get(tableName)?.get(columnName)?.fieldName ?? toFieldName(columnName).name;\n}\nfunction createUniqueFieldName(desiredName, usedFieldNames) {\n\tif (!usedFieldNames.has(desiredName)) return desiredName;\n\tlet counter = 2;\n\twhile (usedFieldNames.has(`${desiredName}${counter}`)) counter++;\n\treturn `${desiredName}${counter}`;\n}\nfunction buildTopLevelNameMap(sources, normalize, kind, sourceKind) {\n\tconst results = /* @__PURE__ */ new Map();\n\tconst normalizedToSources = /* @__PURE__ */ new Map();\n\tfor (const source of sources) {\n\t\tconst normalized = normalize(source);\n\t\tresults.set(source, normalized);\n\t\tnormalizedToSources.set(normalized.name, [...normalizedToSources.get(normalized.name) ?? [], source]);\n\t}\n\tconst duplicates = [...normalizedToSources.entries()].filter(([, conflictingSources]) => conflictingSources.length > 1);\n\tif (duplicates.length > 0) throw postgresError(\"CONTRACT.NAME_DUPLICATE\", `PSL ${kind} name collisions detected:\\n${duplicates.map(([normalizedName, conflictingSources]) => `- ${kind} \"${normalizedName}\" from ${sourceKind}s ${conflictingSources.map((source) => `\"${source}\"`).join(\", \")}`).join(\"\\n\")}`, { meta: {\n\t\tkind,\n\t\tnames: duplicates.map(([normalizedName]) => normalizedName)\n\t} });\n\treturn results;\n}\nfunction topologicalSort(models, tables, modelNameMap) {\n\tconst modelByName = /* @__PURE__ */ new Map();\n\tfor (const model of models) modelByName.set(model.name, model);\n\tconst deps = /* @__PURE__ */ new Map();\n\tconst tableToModel = /* @__PURE__ */ new Map();\n\tfor (const tableName of Object.keys(tables)) {\n\t\tconst modelName = modelNameMap.get(tableName);\n\t\tassertDefined(modelName, `topologicalSort: no model name mapped for table \"${tableName}\"`);\n\t\ttableToModel.set(tableName, modelName);\n\t\tdeps.set(modelName, /* @__PURE__ */ new Set());\n\t}\n\tfor (const [tableName, table] of Object.entries(tables)) {\n\t\tconst modelName = tableToModel.get(tableName);\n\t\tassertDefined(modelName, `topologicalSort: no model name recorded for table \"${tableName}\"`);\n\t\tconst modelDeps = deps.get(modelName);\n\t\tassertDefined(modelDeps, `topologicalSort: no dependency set recorded for model \"${modelName}\"`);\n\t\tfor (const fk of table.foreignKeys) {\n\t\t\tconst refModelName = tableToModel.get(fk.referencedTable);\n\t\t\tif (refModelName && refModelName !== modelName) modelDeps.add(refModelName);\n\t\t}\n\t}\n\tconst result = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst visiting = /* @__PURE__ */ new Set();\n\tconst sortedNames = [...deps.keys()].sort();\n\tfunction visit(name) {\n\t\tif (visited.has(name)) return;\n\t\tif (visiting.has(name)) return;\n\t\tvisiting.add(name);\n\t\tconst nameDeps = deps.get(name);\n\t\tassertDefined(nameDeps, `topologicalSort: no dependency set recorded for model \"${name}\"`);\n\t\tconst sortedDeps = [...nameDeps].sort();\n\t\tfor (const dep of sortedDeps) visit(dep);\n\t\tvisiting.delete(name);\n\t\tvisited.add(name);\n\t\tconst model = modelByName.get(name);\n\t\tassertDefined(model, `topologicalSort: no model block recorded for \"${name}\"`);\n\t\tresult.push(model);\n\t}\n\tfor (const name of sortedNames) visit(name);\n\treturn result;\n}\n//#endregion\n//#region src/core/psl-infer/psl-literals.ts\nconst SYNTHETIC_SPAN = {\n\tstart: {\n\t\toffset: 0,\n\t\tline: 1,\n\t\tcolumn: 1\n\t},\n\tend: {\n\t\toffset: 0,\n\t\tline: 1,\n\t\tcolumn: 1\n\t}\n};\nfunction buildSimpleConstraintFieldAttribute(name, constraintName) {\n\tif (constraintName === void 0) return buildAttribute(\"field\", name, []);\n\treturn buildAttribute(\"field\", name, [namedArg(\"map\", `\"${escapePslString(constraintName)}\"`)]);\n}\nfunction parseDefaultAttributeString(attributeText) {\n\treturn buildAttribute(\"field\", \"default\", [positionalArg(attributeText.replace(/^@default\\(/, \"\").replace(/\\)$/, \"\"))]);\n}\nfunction buildMapAttribute(target, mapName) {\n\treturn buildAttribute(target, \"map\", [positionalArg(`\"${escapePslString(mapName)}\"`)]);\n}\nfunction buildAttribute(target, name, args) {\n\treturn {\n\t\tkind: \"attribute\",\n\t\ttarget,\n\t\tname,\n\t\targs,\n\t\tspan: SYNTHETIC_SPAN\n\t};\n}\nfunction positionalArg(value) {\n\treturn {\n\t\tkind: \"positional\",\n\t\tvalue,\n\t\tspan: SYNTHETIC_SPAN\n\t};\n}\nfunction namedArg(name, value) {\n\treturn {\n\t\tkind: \"named\",\n\t\tname,\n\t\tvalue,\n\t\tspan: SYNTHETIC_SPAN\n\t};\n}\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\n/**\n* Formats a resolved literal-default array as PSL literal-list syntax\n* (`[1, 2, 3]`, `[\"a\", \"b\"]`, `[]`). PSL's list-literal grammar only accepts\n* string/number/boolean elements, so any other element (e.g. `null`, a\n* nested array/object) makes the value unrepresentable and this returns\n* `undefined`.\n*/\nfunction formatPslListLiteralValue(elements) {\n\tconst parts = [];\n\tfor (const element of elements) if (typeof element === \"string\") parts.push(`\"${escapePslString(element)}\"`);\n\telse if (typeof element === \"number\" || typeof element === \"boolean\") parts.push(String(element));\n\telse return;\n\treturn `[${parts.join(\", \")}]`;\n}\n/**\n* Resolves a `SqlColumnIR.default` value into a normalized {@link ColumnDefault}.\n*\n* `SqlSchemaIR` types the column default as `string` (a raw database default\n* expression). Some legacy fixtures and tests still pass already-normalized\n* `ColumnDefault` objects in the same slot, so we accept either shape\n* defensively at runtime.\n*/\nfunction parseColumnDefault(value, nativeType, rawDefaultParser) {\n\tif (typeof value === \"string\") return rawDefaultParser ? rawDefaultParser(value, nativeType) : void 0;\n\treturn isColumnDefault(value) ? value : void 0;\n}\n//#endregion\n//#region src/core/psl-infer/infer-enum-blocks.ts\nconst PSL_SCALAR_TYPE_NAMES = /* @__PURE__ */ new Set([\n\t\"String\",\n\t\"Boolean\",\n\t\"Int\",\n\t\"BigInt\",\n\t\"Float\",\n\t\"Decimal\",\n\t\"DateTime\",\n\t\"Json\",\n\t\"Bytes\"\n]);\n/**\n* Builds one `native_enum` extension-block AST node per introspected enum\n* definition. Block names go through the shared top-level transform\n* (`toEnumName`, intra-enum collisions throw like model collisions) and are\n* then reserved against the model names — an enum whose PSL name a model\n* already claims gets a numeric suffix, with `@@map` carrying the real type\n* name. Members print as explicit `member = \"value\"` pairs: the member name\n* is the sanitized value (deduplicated within the block), the JSON-encoded\n* value carries the truth verbatim.\n*/\nfunction buildNativeEnumBlocks(definitions, modelNames) {\n\tconst enumNames = buildTopLevelNameMap([...definitions.keys()].sort(), toEnumName, \"enum\", \"enum type\");\n\tconst usedTopLevelNames = new Set(PSL_SCALAR_TYPE_NAMES);\n\tfor (const result of modelNames.values()) usedTopLevelNames.add(result.name);\n\tconst enumNameMap = /* @__PURE__ */ new Map();\n\tconst enumBlocks = [];\n\tfor (const [typeName, result] of enumNames) {\n\t\tconst name = createUniqueFieldName(result.name, usedTopLevelNames);\n\t\tusedTopLevelNames.add(name);\n\t\tenumNameMap.set(typeName, name);\n\t\tenumBlocks.push(buildNativeEnumBlock(name, typeName, definitions.get(typeName) ?? []));\n\t}\n\treturn {\n\t\tenumNameMap,\n\t\tenumBlocks\n\t};\n}\nfunction buildNativeEnumBlock(name, typeName, values) {\n\tconst usedMemberNames = /* @__PURE__ */ new Set();\n\tconst parameters = {};\n\tfor (const value of values) {\n\t\tconst memberName = createUniqueFieldName(toEnumMemberName(value), usedMemberNames);\n\t\tusedMemberNames.add(memberName);\n\t\tparameters[memberName] = {\n\t\t\tkind: \"value\",\n\t\t\traw: JSON.stringify(value),\n\t\t\tspan: SYNTHETIC_SPAN\n\t\t};\n\t}\n\treturn {\n\t\tkind: \"native_enum\",\n\t\tkeyword: \"native_enum\",\n\t\tname,\n\t\tparameters,\n\t\tblockAttributes: name === typeName ? [] : [{\n\t\t\tname: \"map\",\n\t\t\targs: [{\n\t\t\t\tkind: \"positional\",\n\t\t\t\tvalue: `\"${escapePslString(typeName)}\"`,\n\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t}],\n\t\t\tspan: SYNTHETIC_SPAN\n\t\t}],\n\t\tspan: SYNTHETIC_SPAN\n\t};\n}\n//#endregion\n//#region src/core/psl-infer/infer-foreign-keys.ts\n/**\n* Coordinates every element a set of already-assembled contracts declare,\n* mapped to the {@link SqlDescribedContractSpace} that owns it and keyed by\n* the shared {@link coordinateKey} helper. `contract infer` uses this to omit\n* database elements a stack extension pack's contract space already\n* describes — reusing the same coordinate walk the contract-space aggregate\n* and cross-space collision check use (`elementCoordinates`), rather than a\n* bespoke per-entity-kind membership test — and, for a foreign key whose\n* referenced table an entry owns, to resolve the qualified cross-space\n* relation it describes.\n*/\nfunction describedContractOwners(describedContracts) {\n\tconst owners = /* @__PURE__ */ new Map();\n\tfor (const entry of describedContracts) for (const coordinate of elementCoordinates(entry.contract.storage)) owners.set(coordinateKey(coordinate), entry);\n\treturn owners;\n}\nfunction resolveCrossSpaceTarget(owner, namespaceId, tableName) {\n\tconst domainNamespace = owner.contract.domain.namespaces[namespaceId];\n\tif (domainNamespace === void 0) return;\n\tfor (const [modelName, model] of Object.entries(domainNamespace.models)) {\n\t\tconst storage = blindCast(model.storage);\n\t\tif (storage.namespaceId !== namespaceId || storage.table !== tableName) continue;\n\t\tconst fieldNamesByColumn = /* @__PURE__ */ new Map();\n\t\tfor (const [fieldName, fieldStorage] of Object.entries(storage.fields)) fieldNamesByColumn.set(fieldStorage.column, { fieldName });\n\t\treturn {\n\t\t\tspaceId: owner.spaceId,\n\t\t\tnamespaceId,\n\t\t\tmodelName,\n\t\t\tfieldNamesByColumn\n\t\t};\n\t}\n}\n/**\n* Classifies every foreign key on a surviving table into one of three cases.\n* A foreign key that carries a `referencedSchema` is checked against the\n* pack-owned coordinates first, so a pack-owned target wins even when a local\n* table happens to share its bare name; only foreign keys with no owned\n* coordinate fall through to the local/dangling distinction.\n*\n* - **Cross-space**: `referencedSchema` is set and a described contract owns\n* the coordinate `(referencedSchema, 'table', referencedTable)`. The\n* referenced table is absent from the tree (omitted because the pack\n* describes it, or never introspected — `contract infer` walks a single\n* namespace). Removed from `foreignKeys` (so `inferRelations` never falls\n* back to a bare, unqualified table name for it) and replaced with a\n* `RelationField` qualified with the owning pack's space id and namespace\n* id. `owners` holds only pack-declared coordinates, so an app's own table\n* (e.g. `public.users`) is never owned and cannot be captured here.\n* - **Local**: not a pack-owned coordinate, and the referenced table survived\n* introspection — left untouched, `inferRelations` handles it as before.\n* - **Dangling**: not a pack-owned coordinate, and the referenced table is\n* neither in the tree nor owned by any described contract. Removed from\n* `foreignKeys`, keeping the scalar column, rather than emitting a relation\n* to a model that was never defined.\n*\n* A pack that owns the referenced coordinate but declares no domain model\n* mapped to it is malformed; that case throws rather than degrading to a\n* silent drop, which would contradict the dangling definition above.\n*/\nfunction resolveForeignKeys(tables, owners) {\n\tconst resultTables = {};\n\tconst extraRelationsByTable = /* @__PURE__ */ new Map();\n\tconst crossSpaceFieldNamesByTable = /* @__PURE__ */ new Map();\n\tconst danglingForeignKeysByTable = /* @__PURE__ */ new Map();\n\tfor (const [tableName, table] of Object.entries(tables)) {\n\t\tconst keptForeignKeys = [];\n\t\tfor (const fk of table.foreignKeys) {\n\t\t\tif (fk.referencedSchema !== void 0) {\n\t\t\t\tconst owner = owners.get(coordinateKey({\n\t\t\t\t\tnamespaceId: fk.referencedSchema,\n\t\t\t\t\tentityKind: \"table\",\n\t\t\t\t\tentityName: fk.referencedTable\n\t\t\t\t}));\n\t\t\t\tif (owner !== void 0) {\n\t\t\t\t\tconst target = resolveCrossSpaceTarget(owner, fk.referencedSchema, fk.referencedTable);\n\t\t\t\t\tif (target === void 0) throw postgresError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `contract infer: described contract space \"${owner.spaceId}\" owns storage coordinate \"${fk.referencedSchema}.${fk.referencedTable}\" but declares no domain model mapped to it. A pack that describes a table must also declare the domain model it maps to; this pack is malformed.`, { meta: {\n\t\t\t\t\t\tspaceId: owner.spaceId,\n\t\t\t\t\t\ttableName: fk.referencedTable\n\t\t\t\t\t} });\n\t\t\t\t\tif (!crossSpaceFieldNamesByTable.has(fk.referencedTable)) crossSpaceFieldNamesByTable.set(fk.referencedTable, target.fieldNamesByColumn);\n\t\t\t\t\tconst fieldName = deriveRelationFieldName(fk.columns, fk.referencedTable);\n\t\t\t\t\tconst optional = fk.columns.some((columnName) => table.columns[columnName]?.nullable ?? false);\n\t\t\t\t\tconst relationField = {\n\t\t\t\t\t\t...buildChildRelationField(fieldName, target.modelName, fk, optional, void 0, table),\n\t\t\t\t\t\ttypeNamespaceId: target.namespaceId,\n\t\t\t\t\t\ttypeContractSpaceId: target.spaceId\n\t\t\t\t\t};\n\t\t\t\t\tconst existingRelations = extraRelationsByTable.get(tableName);\n\t\t\t\t\tif (existingRelations) existingRelations.push(relationField);\n\t\t\t\t\telse extraRelationsByTable.set(tableName, [relationField]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (tables[fk.referencedTable] !== void 0) keptForeignKeys.push(fk);\n\t\t\telse {\n\t\t\t\tconst dangling = {\n\t\t\t\t\tcolumns: fk.columns,\n\t\t\t\t\treferencedSchema: fk.referencedSchema,\n\t\t\t\t\treferencedTable: fk.referencedTable\n\t\t\t\t};\n\t\t\t\tconst existingDangling = danglingForeignKeysByTable.get(tableName);\n\t\t\t\tif (existingDangling) existingDangling.push(dangling);\n\t\t\t\telse danglingForeignKeysByTable.set(tableName, [dangling]);\n\t\t\t}\n\t\t}\n\t\tresultTables[tableName] = keptForeignKeys.length === table.foreignKeys.length ? table : new SqlTableIR({\n\t\t\t...table,\n\t\t\tforeignKeys: keptForeignKeys\n\t\t});\n\t}\n\treturn {\n\t\ttables: resultTables,\n\t\textraRelationsByTable,\n\t\tcrossSpaceFieldNamesByTable,\n\t\tdanglingForeignKeysByTable\n\t};\n}\n/**\n* Explains a foreign key `resolveForeignKeys` dropped as dangling: the\n* database enforces it, but its target lives outside the introspected\n* schema, so infer has no model to point a relation at. The suggested fix\n* targets the common cause — an unconfigured extension pack's schema\n* (e.g. Supabase's `auth`).\n*/\nfunction buildDanglingForeignKeyWarning(danglingForeignKeys, fieldNamesByTable, tableName) {\n\treturn `Foreign key ${danglingForeignKeys.map((fk) => {\n\t\tconst fieldNames = fk.columns.map((columnName) => resolveColumnFieldName(fieldNamesByTable, tableName, columnName));\n\t\tconst target = fk.referencedSchema !== void 0 ? `${fk.referencedSchema}.${fk.referencedTable}` : fk.referencedTable;\n\t\treturn `\"${fieldNames.join(\", \")}\" -> \"${target}\"`;\n\t}).join(\", \")} exists in the database, but its target schema is outside the introspected scope, so no relation field was generated. If the target schema is described by an extension pack, add it to extensions and re-run infer.`;\n}\n//#endregion\n//#region src/core/psl-infer/infer-index-attributes.ts\nfunction buildModelConstraintAttribute(name, fields, constraintName) {\n\tconst args = [positionalArg(`[${fields.join(\", \")}]`)];\n\tif (constraintName !== void 0) args.push(namedArg(\"map\", `\"${escapePslString(constraintName)}\"`));\n\treturn buildAttribute(\"model\", name, args);\n}\n/**\n* Emits one `@@index` attribute at full fidelity. The index's identity is\n* re-detected rather than trusted: `name:` is emitted only when the live name\n* parses as a wire name AND that hash recomputes from the introspected\n* content; otherwise the live name is adopted verbatim with `map:`.\n*/\nfunction buildIndexAttribute(index, fieldNames) {\n\tconst args = [];\n\tif (fieldNames !== void 0) args.push(positionalArg(`[${fieldNames.join(\", \")}]`));\n\telse {\n\t\tassertDefined(index.expression, `buildIndexAttribute: index \"${index.name}\" carries neither columns nor expression; SqlIndexIR enforces exactly one`);\n\t\targs.push(namedArg(\"expression\", `\"${escapePslString(index.expression)}\"`));\n\t}\n\tconst parsed = parseWireName(index.name);\n\tconst recomputed = computeIndexContentHash({\n\t\t...index.columns !== void 0 ? { columns: index.columns } : {},\n\t\t...index.expression !== void 0 ? { expression: index.expression } : {},\n\t\t...index.where !== void 0 ? { where: index.where } : {},\n\t\tunique: index.unique,\n\t\t...index.type !== void 0 ? { type: index.type } : {},\n\t\t...index.options !== void 0 ? { options: index.options } : {}\n\t});\n\tif (parsed !== void 0 && parsed.hash === recomputed) args.push(namedArg(\"name\", `\"${escapePslString(parsed.prefix)}\"`));\n\telse args.push(namedArg(\"map\", `\"${escapePslString(index.name)}\"`));\n\tif (index.where !== void 0) args.push(namedArg(\"where\", `\"${escapePslString(index.where)}\"`));\n\tif (index.unique) args.push(namedArg(\"unique\", \"true\"));\n\tconst hasOptions = index.options !== void 0 && Object.keys(index.options).length > 0;\n\tif (index.type !== void 0 || hasOptions) args.push(namedArg(\"type\", `\"${escapePslString(index.type ?? \"btree\")}\"`));\n\tif (hasOptions) {\n\t\tconst entries = Object.entries(index.options ?? {}).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([key, value]) => `${key}: \"${escapePslString(String(value))}\"`);\n\t\targs.push(namedArg(\"options\", `{ ${entries.join(\", \")} }`));\n\t}\n\treturn buildAttribute(\"model\", \"index\", args);\n}\n/**\n* Emits one `@@check` attribute for a live, non-derived check, always in the\n* `map:` form. Re-detecting `name:` is not attempted: the live expression is\n* Postgres's own reprint, but a wire-named check's hash was taken over the\n* author's original text, so recomputing the hash from the reprint would\n* essentially never match. `map:` plus the verbatim reprint is correct\n* regardless — a reprint compared against a later reprint of the same\n* expression is stable, so the emitted contract signs the live database with\n* zero pending operations. `buildPolicyBlocks` makes the same call for\n* `@@map` on adopted RLS policies, for the same reason.\n*/\nfunction buildCheckAttribute(check) {\n\treturn buildAttribute(\"model\", \"check\", [namedArg(\"expression\", `\"${escapePslString(check.expression)}\"`), namedArg(\"map\", `\"${escapePslString(check.name)}\"`)]);\n}\n//#endregion\n//#region src/core/psl-infer/infer-model-blocks.ts\nfunction buildModel(table, typeMap, enumNameMap, fieldNamesByTable, defaultMapping, rawDefaultParser, relationFields, danglingForeignKeys, rlsEnabled = false, policySkipNotes = []) {\n\tconst { name: modelName, map: mapName } = toModelName(table.name);\n\tconst fieldNameMap = fieldNamesByTable.get(table.name);\n\tconst pkColumns = new Set(table.primaryKey?.columns ?? []);\n\tconst isSinglePk = pkColumns.size === 1;\n\tconst singlePkConstraintName = isSinglePk ? table.primaryKey?.name : void 0;\n\tconst uniqueColumns = /* @__PURE__ */ new Map();\n\tfor (const unique of table.uniques) if (unique.columns.length === 1) {\n\t\tconst [columnName = \"\"] = unique.columns;\n\t\tconst existingConstraintName = uniqueColumns.get(columnName);\n\t\tif (!uniqueColumns.has(columnName) || existingConstraintName === void 0 && unique.name) uniqueColumns.set(columnName, unique.name);\n\t}\n\tconst derivedCheckNames = computeDerivedCheckNames(table);\n\tconst fields = [];\n\tfor (const column of Object.values(table.columns)) fields.push(buildScalarField(column, table, typeMap, enumNameMap, fieldNameMap, defaultMapping, rawDefaultParser, pkColumns, isSinglePk, singlePkConstraintName, uniqueColumns, derivedCheckNames));\n\tconst usedFieldNames = new Set(fields.map((field) => field.name));\n\tfor (const rel of relationFields) fields.push(buildRelationField(rel, table.name, fieldNamesByTable, usedFieldNames));\n\tconst modelAttributes = [];\n\tif (table.primaryKey && table.primaryKey.columns.length > 1) {\n\t\tconst pkFieldNames = table.primaryKey.columns.map((columnName) => resolveColumnFieldName(fieldNamesByTable, table.name, columnName));\n\t\tmodelAttributes.push(buildModelConstraintAttribute(\"id\", pkFieldNames, table.primaryKey.name));\n\t}\n\tfor (const unique of table.uniques) if (unique.columns.length > 1) {\n\t\tconst uniqueFieldNames = unique.columns.map((columnName) => resolveColumnFieldName(fieldNamesByTable, table.name, columnName));\n\t\tmodelAttributes.push(buildModelConstraintAttribute(\"unique\", uniqueFieldNames, unique.name));\n\t}\n\tfor (const index of table.indexes) {\n\t\tconst indexFieldNames = index.columns?.map((columnName) => resolveColumnFieldName(fieldNamesByTable, table.name, columnName));\n\t\tmodelAttributes.push(buildIndexAttribute(index, indexFieldNames));\n\t}\n\tfor (const check of table.checks ?? []) if (!derivedCheckNames.has(check.name)) modelAttributes.push(buildCheckAttribute(check));\n\tif (mapName) modelAttributes.push(buildMapAttribute(\"model\", mapName));\n\tif (rlsEnabled) modelAttributes.push(buildAttribute(\"model\", \"rls\", []));\n\tconst warnings = [];\n\tif (!table.primaryKey) warnings.push(\"This table has no primary key in the database\");\n\tif (danglingForeignKeys.length > 0) warnings.push(buildDanglingForeignKeyWarning(danglingForeignKeys, fieldNamesByTable, table.name));\n\tconst commentLines = [...warnings.length > 0 ? [`// WARNING: ${warnings.join(\" \")}`] : [], ...policySkipNotes];\n\tconst comment = commentLines.length > 0 ? commentLines.join(\"\\n\") : void 0;\n\treturn {\n\t\tkind: \"model\",\n\t\tname: modelName,\n\t\tfields,\n\t\tattributes: modelAttributes,\n\t\tspan: SYNTHETIC_SPAN,\n\t\t...comment !== void 0 ? { comment } : {}\n\t};\n}\n/**\n* The live check names that are derived: a live check's name matches\n* `formatWireName(composeCheckWirePrefix(table, column, kind), computeCheckContentHash(expression))`\n* for some column of the table and some candidate `postgresRenderCheckExpressions`\n* would render for that column. Never by comparing expressions — the live\n* body is a Postgres reprint, never the authored text. One set serves both\n* the `@noCheck` waiver below and `@@check` exclusion in `buildModel`, so the\n* two decisions cannot drift apart.\n*\n* `membership` is unreachable here today: infer never emits domain enums\n* (`enumType()` is not inferred), so no inferred column has member values and\n* no membership check is ever derived. The day domain-enum inference exists,\n* its slice extends this by threading the column's member values through.\n*/\nfunction computeDerivedCheckNames(table) {\n\tconst liveCheckNames = new Set((table.checks ?? []).map((check) => check.name));\n\tconst derivedCheckNames = /* @__PURE__ */ new Set();\n\tfor (const column of Object.values(table.columns)) for (const candidate of postgresRenderCheckExpressions({\n\t\ttableName: table.name,\n\t\tcolumnName: column.name,\n\t\tmany: column.many === true,\n\t\tmemberValues: void 0\n\t})) {\n\t\tconst derivedName = formatWireName(composeCheckWirePrefix(table.name, column.name, candidate.kind), computeCheckContentHash(candidate.expression));\n\t\tif (liveCheckNames.has(derivedName)) derivedCheckNames.add(derivedName);\n\t}\n\treturn derivedCheckNames;\n}\nfunction buildScalarField(column, table, typeMap, enumNameMap, fieldNameMap, defaultMapping, rawDefaultParser, pkColumns, isSinglePk, singlePkConstraintName, uniqueColumns, derivedCheckNames) {\n\tconst resolvedField = fieldNameMap?.get(column.name);\n\tconst fieldName = resolvedField?.fieldName ?? toFieldName(column.name).name;\n\tconst fieldMap = resolvedField?.fieldMap;\n\tconst resolution = typeMap.resolve(column.nativeType, table.annotations);\n\tif (\"unsupported\" in resolution) {\n\t\tconst attrs = [];\n\t\tif (fieldMap !== void 0) attrs.push(buildMapAttribute(\"field\", fieldMap));\n\t\treturn {\n\t\t\tkind: \"field\",\n\t\t\tname: fieldName,\n\t\t\ttypeName: `Unsupported(\"${escapePslString(resolution.nativeType)}\")`,\n\t\t\toptional: column.nullable,\n\t\t\tlist: column.many === true,\n\t\t\tattributes: attrs,\n\t\t\tspan: SYNTHETIC_SPAN\n\t\t};\n\t}\n\tlet typeName = resolution.pslType.name;\n\tlet typeConstructor = resolution.pslType.args ? {\n\t\tkind: \"typeConstructor\",\n\t\tpath: [resolution.pslType.name],\n\t\targs: resolution.pslType.args.map(positionalArg),\n\t\tspan: SYNTHETIC_SPAN\n\t} : void 0;\n\tconst enumPslName = enumNameMap.get(column.nativeType);\n\tif (enumPslName) {\n\t\ttypeName = enumPslName;\n\t\ttypeConstructor = {\n\t\t\tkind: \"typeConstructor\",\n\t\t\tpath: [\"pg\", \"enum\"],\n\t\t\targs: [positionalArg(enumPslName)],\n\t\t\tspan: SYNTHETIC_SPAN\n\t\t};\n\t}\n\tconst attributes = [];\n\tconst isId = isSinglePk && pkColumns.has(column.name);\n\tif (isId) attributes.push(buildSimpleConstraintFieldAttribute(\"id\", singlePkConstraintName));\n\tif (column.default === void 0 && column.resolvedDefault?.kind === \"function\" && column.resolvedDefault.expression === \"autoincrement()\") attributes.push(parseDefaultAttributeString(\"@default(autoincrement())\"));\n\telse if (column.many === true && column.resolvedDefault?.kind === \"literal\") {\n\t\tconst formatted = Array.isArray(column.resolvedDefault.value) ? formatPslListLiteralValue(column.resolvedDefault.value) : void 0;\n\t\tif (formatted !== void 0) attributes.push(parseDefaultAttributeString(`@default(${formatted})`));\n\t} else if (column.default !== void 0) {\n\t\tconst parsed = parseColumnDefault(column.default, column.nativeType, rawDefaultParser);\n\t\tif (parsed) {\n\t\t\tconst result = mapDefault(parsed, defaultMapping);\n\t\t\tif (\"attribute\" in result) attributes.push(parseDefaultAttributeString(result.attribute));\n\t\t}\n\t}\n\tif (uniqueColumns.has(column.name) && !isId) {\n\t\tconst uniqueConstraintName = uniqueColumns.get(column.name);\n\t\tattributes.push(buildSimpleConstraintFieldAttribute(\"unique\", uniqueConstraintName));\n\t}\n\tif (column.many === true) {\n\t\tconst waivedKinds = postgresRenderCheckExpressions({\n\t\t\ttableName: table.name,\n\t\t\tcolumnName: column.name,\n\t\t\tmany: true,\n\t\t\tmemberValues: void 0\n\t\t}).filter((candidate) => !derivedCheckNames.has(formatWireName(composeCheckWirePrefix(table.name, column.name, candidate.kind), computeCheckContentHash(candidate.expression)))).map((candidate) => candidate.kind);\n\t\tif (waivedKinds.length > 0) attributes.push(buildAttribute(\"field\", \"noCheck\", waivedKinds.map(positionalArg)));\n\t}\n\tif (fieldMap !== void 0) attributes.push(buildMapAttribute(\"field\", fieldMap));\n\treturn {\n\t\tkind: \"field\",\n\t\tname: fieldName,\n\t\ttypeName,\n\t\t...ifDefined(\"typeConstructor\", typeConstructor),\n\t\toptional: column.nullable,\n\t\tlist: column.many === true,\n\t\tattributes,\n\t\tspan: SYNTHETIC_SPAN\n\t};\n}\nfunction buildRelationField(rel, hostTableName, fieldNamesByTable, usedFieldNames) {\n\tconst fieldName = createUniqueFieldName(rel.fieldName, usedFieldNames);\n\tusedFieldNames.add(fieldName);\n\tconst args = [];\n\tif (rel.fields && rel.references) {\n\t\tif (rel.relationName) args.push(namedArg(\"name\", `\"${escapePslString(rel.relationName)}\"`));\n\t\targs.push(namedArg(\"fields\", `[${rel.fields.map((columnName) => resolveColumnFieldName(fieldNamesByTable, hostTableName, columnName)).join(\", \")}]`));\n\t\targs.push(namedArg(\"references\", `[${rel.references.map((columnName) => resolveColumnFieldName(fieldNamesByTable, rel.referencedTableName ?? \"\", columnName)).join(\", \")}]`));\n\t\tif (rel.onDelete) args.push(namedArg(\"onDelete\", rel.onDelete));\n\t\tif (rel.onUpdate) args.push(namedArg(\"onUpdate\", rel.onUpdate));\n\t\tif (rel.fkName) args.push(namedArg(\"map\", `\"${escapePslString(rel.fkName)}\"`));\n\t\tif (rel.index === false) args.push(namedArg(\"index\", \"false\"));\n\t} else if (rel.relationName) args.push(namedArg(\"name\", `\"${escapePslString(rel.relationName)}\"`));\n\tconst attrs = args.length > 0 ? [buildAttribute(\"field\", \"relation\", args)] : [];\n\treturn {\n\t\tkind: \"field\",\n\t\tname: fieldName,\n\t\ttypeName: rel.typeName,\n\t\t...ifDefined(\"typeNamespaceId\", rel.typeNamespaceId),\n\t\t...ifDefined(\"typeContractSpaceId\", rel.typeContractSpaceId),\n\t\toptional: rel.optional,\n\t\tlist: rel.list,\n\t\tattributes: attrs,\n\t\tspan: SYNTHETIC_SPAN\n\t};\n}\n//#endregion\n//#region src/core/psl-infer/infer-policy-blocks.ts\nconst POLICY_OPERATION_KEYWORD = {\n\tselect: \"policy_select\",\n\tinsert: \"policy_insert\",\n\tupdate: \"policy_update\",\n\tdelete: \"policy_delete\",\n\tall: \"policy_all\"\n};\n/** The PSL tokenizer's identifier grammar: leading letter/underscore, then letters/digits/`_`/`-`. */\nconst PSL_IDENTIFIER = /^[\\p{L}_][\\p{L}\\p{N}_-]*$/u;\n/** Replaces invalid character runs with `_`; prepends `_` when the first character is invalid. */\nfunction sanitizePolicyHead(raw) {\n\tlet head = raw.replace(/[^\\p{L}\\p{N}_-]+/gu, \"_\");\n\tif (!/^[\\p{L}_]/u.test(head)) head = `_${head}`;\n\treturn head;\n}\n/**\n* Builds one `policy_<operation>` block per introspected policy. Every\n* adopted policy is exact-named: a reprinted body never reliably re-hashes to\n* the live suffix, so `@@map` always carries the physical name and the head\n* is only an identifier. A policy granting to a role whose name is not a\n* legal identifier cannot be authored at all — role references have no\n* `@@map` escape — so it is skipped with a note.\n*/\nfunction buildPolicyBlocks(policiesByTable, modelNameMap, reservedHeads = /* @__PURE__ */ new Set()) {\n\tconst all = [];\n\tfor (const [tableName, policies] of policiesByTable) for (const policy of policies) all.push({\n\t\tpolicy,\n\t\ttableName\n\t});\n\tall.sort((a, b) => {\n\t\tif (a.policy.name !== b.policy.name) return a.policy.name < b.policy.name ? -1 : 1;\n\t\tif (a.tableName !== b.tableName) return a.tableName < b.tableName ? -1 : 1;\n\t\treturn a.policy.operation < b.policy.operation ? -1 : a.policy.operation > b.policy.operation ? 1 : 0;\n\t});\n\tconst usedHeads = new Set(reservedHeads);\n\tconst blocks = [];\n\tconst skipNotesByTable = /* @__PURE__ */ new Map();\n\tfor (const { policy, tableName } of all) {\n\t\tconst modelName = modelNameMap.get(tableName);\n\t\tassertDefined(modelName, `buildPolicyBlocks: policy \"${policy.name}\" targets table \"${tableName}\" with no emitted model; tables and policies come from the same introspection walk`);\n\t\tconst badRole = policy.roles.find((role) => !PSL_IDENTIFIER.test(role));\n\t\tif (badRole !== void 0) {\n\t\t\tconst notes = skipNotesByTable.get(tableName) ?? [];\n\t\t\tnotes.push(`// prisma-next: skipped policy \"${policy.name}\": role \"${badRole}\" is not a valid PSL identifier and role references cannot be escaped`);\n\t\t\tskipNotesByTable.set(tableName, notes);\n\t\t\tcontinue;\n\t\t}\n\t\tlet head = sanitizePolicyHead(parseWireName(policy.name)?.prefix ?? policy.name);\n\t\tif (usedHeads.has(head)) {\n\t\t\tlet n = 2;\n\t\t\twhile (usedHeads.has(`${head}_${n}`)) n += 1;\n\t\t\thead = `${head}_${n}`;\n\t\t}\n\t\tusedHeads.add(head);\n\t\tblocks.push({\n\t\t\tkind: \"policy\",\n\t\t\tkeyword: POLICY_OPERATION_KEYWORD[policy.operation],\n\t\t\tname: head,\n\t\t\tparameters: {\n\t\t\t\ttarget: {\n\t\t\t\t\tkind: \"ref\",\n\t\t\t\t\tidentifier: modelName,\n\t\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t\t},\n\t\t\t\troles: {\n\t\t\t\t\tkind: \"list\",\n\t\t\t\t\titems: policy.roles.map((role) => ({\n\t\t\t\t\t\tkind: \"ref\",\n\t\t\t\t\t\tidentifier: role,\n\t\t\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t\t\t})),\n\t\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t\t},\n\t\t\t\t...policy.using !== void 0 ? { using: {\n\t\t\t\t\tkind: \"value\",\n\t\t\t\t\traw: JSON.stringify(policy.using),\n\t\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t\t} } : {},\n\t\t\t\t...policy.withCheck !== void 0 ? { withCheck: {\n\t\t\t\t\tkind: \"value\",\n\t\t\t\t\traw: JSON.stringify(policy.withCheck),\n\t\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t\t} } : {},\n\t\t\t\t...policy.permissive ? {} : { permissive: {\n\t\t\t\t\tkind: \"value\",\n\t\t\t\t\traw: \"false\",\n\t\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t\t} }\n\t\t\t},\n\t\t\tblockAttributes: [{\n\t\t\t\tname: \"map\",\n\t\t\t\targs: [{\n\t\t\t\t\tkind: \"positional\",\n\t\t\t\t\tvalue: `\"${escapePslString(policy.name)}\"`,\n\t\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t\t}],\n\t\t\t\tspan: SYNTHETIC_SPAN\n\t\t\t}],\n\t\t\tspan: SYNTHETIC_SPAN\n\t\t});\n\t}\n\treturn {\n\t\tblocks,\n\t\tskipNotesByTable\n\t};\n}\n//#endregion\n//#region src/core/psl-infer/postgres-default-mapping.ts\nconst POSTGRES_FUNCTION_ATTRIBUTES = { \"gen_random_uuid()\": \"@default(dbgenerated(\\\"gen_random_uuid()\\\"))\" };\nfunction formatDbGeneratedAttribute(expression) {\n\treturn `@default(dbgenerated(${JSON.stringify(expression)}))`;\n}\nfunction createPostgresDefaultMapping() {\n\treturn {\n\t\tfunctionAttributes: POSTGRES_FUNCTION_ATTRIBUTES,\n\t\tfallbackFunctionAttribute: formatDbGeneratedAttribute\n\t};\n}\n//#endregion\n//#region src/core/psl-infer/postgres-type-map.ts\nconst POSTGRES_TO_PSL = {\n\ttext: \"String\",\n\tbool: \"Boolean\",\n\tboolean: \"Boolean\",\n\tint4: \"Int\",\n\tinteger: \"Int\",\n\tint8: \"BigInt\",\n\tbigint: \"BigInt\",\n\tfloat8: \"Float\",\n\t\"double precision\": \"Float\",\n\tjsonb: \"Jsonb\",\n\tbytea: \"Bytes\"\n};\nconst PRESERVED_NATIVE_TYPES = {\n\t\"character varying\": \"VarChar\",\n\tcharacter: \"Char\",\n\tchar: \"Char\",\n\tvarchar: \"VarChar\",\n\tuuid: \"Uuid\",\n\tinet: \"Inet\",\n\tint2: \"SmallInt\",\n\tsmallint: \"SmallInt\",\n\tfloat4: \"Real\",\n\treal: \"Real\",\n\tnumeric: \"Numeric\",\n\tdecimal: \"Numeric\",\n\ttimestamp: \"Timestamp\",\n\t\"timestamp without time zone\": \"Timestamp\",\n\ttimestamptz: \"Timestamptz\",\n\t\"timestamp with time zone\": \"Timestamptz\",\n\tdate: \"Date\",\n\ttime: \"Time\",\n\t\"time without time zone\": \"Time\",\n\ttimetz: \"Timetz\",\n\t\"time with time zone\": \"Timetz\",\n\tjson: \"Json\"\n};\nconst PARAMETERIZED_NATIVE_TYPES = {\n\t\"character varying\": \"VarChar\",\n\tcharacter: \"Char\",\n\tchar: \"Char\",\n\tvarchar: \"VarChar\",\n\tnumeric: \"Numeric\",\n\tdecimal: \"Numeric\",\n\ttimestamp: \"Timestamp\",\n\ttimestamptz: \"Timestamptz\",\n\ttime: \"Time\",\n\ttimetz: \"Timetz\"\n};\nconst PARAMETERIZED_TYPE_PATTERN = /^(.+?)\\((.+)\\)$/;\nfunction getOwnMappingValue(map, key) {\n\treturn Object.hasOwn(map, key) ? map[key] : void 0;\n}\nfunction splitTypeParameterList(params) {\n\treturn params.split(\",\").map((part) => part.trim()).filter((part) => part.length > 0);\n}\nfunction createPostgresTypeMap(enumTypeNames) {\n\treturn { resolve(nativeType) {\n\t\tif (enumTypeNames?.has(nativeType)) return {\n\t\t\tpslType: { name: nativeType },\n\t\t\tnativeType\n\t\t};\n\t\tconst paramMatch = nativeType.match(PARAMETERIZED_TYPE_PATTERN);\n\t\tif (paramMatch) {\n\t\t\tconst [, baseType = nativeType, params = \"\"] = paramMatch;\n\t\t\tconst typeName = getOwnMappingValue(PARAMETERIZED_NATIVE_TYPES, baseType);\n\t\t\tif (typeName) return {\n\t\t\t\tpslType: {\n\t\t\t\t\tname: typeName,\n\t\t\t\t\targs: splitTypeParameterList(params)\n\t\t\t\t},\n\t\t\t\tnativeType,\n\t\t\t\ttypeParams: {\n\t\t\t\t\tbaseType,\n\t\t\t\t\tparams\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst preservedType = getOwnMappingValue(PRESERVED_NATIVE_TYPES, nativeType);\n\t\tif (preservedType) return {\n\t\t\tpslType: { name: preservedType },\n\t\t\tnativeType\n\t\t};\n\t\tconst pslType = getOwnMappingValue(POSTGRES_TO_PSL, nativeType);\n\t\tif (pslType) return {\n\t\t\tpslType: { name: pslType },\n\t\t\tnativeType\n\t\t};\n\t\treturn {\n\t\t\tunsupported: true,\n\t\t\tnativeType\n\t\t};\n\t} };\n}\n//#endregion\n//#region src/core/psl-infer/infer-psl-contract.ts\n/**\n* Infers a PSL AST (for `printPsl`) from an introspected Postgres schema tree.\n*\n* Target-owned inference: it walks the `PostgresDatabaseSchemaNode` tree and\n* owns the Postgres dialect knowledge — the native type map and default map.\n* Relation inference, name transforms, generic default mapping, and raw-default\n* parsing are shape-neutral utilities imported from the SQL family.\n*\n* This slice emits relational-only PSL, byte-identical to the prior flat\n* inference: the tree's tables (across its namespaces — `contract infer`\n* introspects a single live namespace) are gathered into the model set and\n* emitted as one `UNSPECIFIED_PSL_NAMESPACE_ID` bucket. Top-level entities\n* (policies/roles → PSL extension blocks) are a later slice.\n*\n* `describedContracts` — the stack's extension packs' already-assembled\n* contracts, each paired with its space id — is consulted while gathering\n* tables: a table whose coordinate `(schemaName, 'table', tableName)` one of\n* those contracts already declares is omitted, before the duplicate-name\n* check below and before relation inference, so it cannot spuriously\n* collide with an app table and never contributes a bare relation field. A\n* surviving table's foreign key into an omitted, pack-owned table is not\n* dropped: {@link resolveForeignKeys} rewrites it into a relation qualified\n* with the pack's space id (`<spaceId>:<namespaceId>.<Model>`) instead.\n*/\nfunction inferPostgresPslContract(tree, describedContracts) {\n\tconst namespaces = Object.values(tree.namespaces);\n\tconst owners = describedContractOwners(describedContracts ?? []);\n\tconst enumDefinitions = /* @__PURE__ */ new Map();\n\tconst packOwnedEnumTypesByNamespace = /* @__PURE__ */ new Map();\n\tconst enumNamespaceNames = /* @__PURE__ */ new Set();\n\tfor (const namespace of namespaces) for (const { typeName, members } of namespace.nativeEnums) {\n\t\tconst owner = owners.get(coordinateKey({\n\t\t\tnamespaceId: namespace.schemaName,\n\t\t\tentityKind: \"native_enum\",\n\t\t\tentityName: typeName\n\t\t}));\n\t\tif (owner !== void 0) {\n\t\t\tconst owned = packOwnedEnumTypesByNamespace.get(namespace.schemaName) ?? /* @__PURE__ */ new Map();\n\t\t\towned.set(typeName, owner.spaceId);\n\t\t\towned.set(`${namespace.schemaName}.${typeName}`, owner.spaceId);\n\t\t\tpackOwnedEnumTypesByNamespace.set(namespace.schemaName, owned);\n\t\t\tcontinue;\n\t\t}\n\t\tenumDefinitions.set(typeName, members);\n\t\tenumNamespaceNames.add(namespace.schemaName);\n\t}\n\tconst tables = {};\n\tconst tableNamespaceNames = /* @__PURE__ */ new Set();\n\tconst rlsEnabledTables = /* @__PURE__ */ new Set();\n\tconst policiesByTable = /* @__PURE__ */ new Map();\n\tfor (const namespace of namespaces) {\n\t\tconst ownedEnumTypes = packOwnedEnumTypesByNamespace.get(namespace.schemaName);\n\t\tfor (const [tableName, table] of Object.entries(namespace.tables)) {\n\t\t\tif (owners.has(coordinateKey({\n\t\t\t\tnamespaceId: namespace.schemaName,\n\t\t\t\tentityKind: \"table\",\n\t\t\t\tentityName: tableName\n\t\t\t}))) continue;\n\t\t\tif (tables[tableName] !== void 0) throw postgresError(\"CONTRACT.INFER_UNSUPPORTED\", `contract infer: duplicate table name \"${tableName}\" across schemas is not yet supported (single-namespace PSL inference emits one flat bucket; multi-namespace \\`namespace { … }\\` output is a later slice).`, { meta: { tableName } });\n\t\t\tif (ownedEnumTypes !== void 0) for (const column of Object.values(table.columns)) {\n\t\t\t\tconst owningSpaceId = ownedEnumTypes.get(column.nativeType);\n\t\t\t\tif (owningSpaceId !== void 0) throw postgresError(\"CONTRACT.INFER_UNSUPPORTED\", `contract infer: column \"${tableName}\".\"${column.name}\" is typed by native enum type \"${column.nativeType}\", which extension pack space \"${owningSpaceId}\" already describes. A cross-space enum-typed column has no authorable PSL form yet; describe the table in that pack's contract or retype the column before re-running contract infer.`, { meta: {\n\t\t\t\t\ttableName,\n\t\t\t\t\tcolumnName: column.name\n\t\t\t\t} });\n\t\t\t}\n\t\t\ttables[tableName] = new SqlTableIR(table);\n\t\t\ttableNamespaceNames.add(namespace.schemaName);\n\t\t\tif (table.rlsEnabled) rlsEnabledTables.add(tableName);\n\t\t\tif (table.policies.length > 0) policiesByTable.set(tableName, table.policies);\n\t\t}\n\t}\n\tlet wrapNamespaceName;\n\tif (enumDefinitions.size > 0 || policiesByTable.size > 0) {\n\t\tconst contentNamespaces = /* @__PURE__ */ new Set([...enumNamespaceNames, ...tableNamespaceNames]);\n\t\tif (contentNamespaces.size > 1) throw postgresError(\"CONTRACT.INFER_UNSUPPORTED\", `contract infer: adopting native enums or RLS policies with content across multiple schemas is not yet supported (single-namespace PSL inference emits one \\`namespace { … }\\` block; multi-namespace output is a later slice). Schemas: ${[...contentNamespaces].sort().join(\", \")}.`, { meta: { schemas: [...contentNamespaces].sort() } });\n\t\twrapNamespaceName = [...contentNamespaces][0];\n\t}\n\tconst { tables: resolvedTables, extraRelationsByTable, crossSpaceFieldNamesByTable, danglingForeignKeysByTable } = resolveForeignKeys(tables, owners);\n\tconst schemaIR = new SqlSchemaIR({ tables: resolvedTables });\n\tconst enumTypeNames = new Set(enumDefinitions.keys());\n\tif (wrapNamespaceName !== void 0) for (const typeName of enumDefinitions.keys()) enumTypeNames.add(`${wrapNamespaceName}.${typeName}`);\n\tconst enumInfo = {\n\t\ttypeNames: enumTypeNames,\n\t\tdefinitions: enumDefinitions\n\t};\n\treturn buildPslDocumentAst(schemaIR, {\n\t\ttypeMap: createPostgresTypeMap(enumInfo.typeNames),\n\t\tdefaultMapping: createPostgresDefaultMapping(),\n\t\tparseRawDefault,\n\t\t...enumDefinitions.size > 0 ? { enumInfo } : {}\n\t}, {\n\t\textraRelationsByTable,\n\t\tcrossSpaceFieldNamesByTable,\n\t\tdanglingForeignKeysByTable\n\t}, wrapNamespaceName, {\n\t\trlsEnabledTables,\n\t\tpoliciesByTable\n\t});\n}\nfunction buildPslDocumentAst(schemaIR, options, foreignKeyExtras, namespaceName, rlsExtras) {\n\tconst { typeMap, defaultMapping, parseRawDefault: rawDefaultParser } = options;\n\tconst { extraRelationsByTable, crossSpaceFieldNamesByTable, danglingForeignKeysByTable } = foreignKeyExtras;\n\tconst modelNames = buildTopLevelNameMap(Object.keys(schemaIR.tables), toModelName, \"model\", \"table\");\n\tconst modelNameMap = new Map([...modelNames].map(([tableName, result]) => [tableName, result.name]));\n\tconst { enumNameMap: bareEnumNameMap, enumBlocks } = buildNativeEnumBlocks(options.enumInfo?.definitions ?? /* @__PURE__ */ new Map(), modelNames);\n\tconst enumNameMap = new Map(bareEnumNameMap);\n\tif (namespaceName !== void 0) for (const [typeName, pslName] of bareEnumNameMap) enumNameMap.set(`${namespaceName}.${typeName}`, pslName);\n\tconst fieldNamesByTable = new Map([...crossSpaceFieldNamesByTable, ...buildFieldNamesByTable(schemaIR.tables)]);\n\tconst { relationsByTable } = inferRelations(schemaIR.tables, modelNameMap);\n\tconst policyEmission = buildPolicyBlocks(rlsExtras?.policiesByTable ?? /* @__PURE__ */ new Map(), modelNameMap, /* @__PURE__ */ new Set([...modelNameMap.values(), ...bareEnumNameMap.values()]));\n\tconst models = [];\n\tfor (const table of Object.values(schemaIR.tables)) models.push(buildModel(table, typeMap, enumNameMap, fieldNamesByTable, defaultMapping, rawDefaultParser, [...relationsByTable.get(table.name) ?? [], ...extraRelationsByTable.get(table.name) ?? []], danglingForeignKeysByTable.get(table.name) ?? [], rlsExtras?.rlsEnabledTables.has(table.name) ?? false, policyEmission.skipNotesByTable.get(table.name) ?? []));\n\tconst sortedModels = topologicalSort(models, schemaIR.tables, modelNameMap);\n\treturn {\n\t\tkind: \"document\",\n\t\tsourceId: \"<sql-schema-ir>\",\n\t\tnamespaces: [makePslNamespace({\n\t\t\tkind: \"namespace\",\n\t\t\tname: namespaceName ?? UNSPECIFIED_PSL_NAMESPACE_ID,\n\t\t\tentries: makePslNamespaceEntries(sortedModels, [], [...enumBlocks, ...policyEmission.blocks]),\n\t\t\tspan: SYNTHETIC_SPAN\n\t\t})],\n\t\tspan: SYNTHETIC_SPAN\n\t};\n}\n//#endregion\n//#region src/exports/control.ts\nfunction postgresRenderDefault(def, column) {\n\tif (def.kind === \"function\") return def.expression;\n\treturn renderDefaultLiteral(def.value, column);\n}\nconst postgresTargetDescriptor = {\n\t...postgresTargetDescriptorMeta,\n\tcontractSerializer: new PostgresContractSerializer(),\n\tschemaVerifier: new PostgresSchemaVerifier(),\n\tinferPslContract(schema, describedContracts) {\n\t\tPostgresDatabaseSchemaNode.assert(schema);\n\t\treturn inferPostgresPslContract(schema, describedContracts);\n\t},\n\tdiffSchema(input) {\n\t\treturn diffPostgresSchema(input);\n\t},\n\tclassifySubjectGranularity: postgresDiffSubjectGranularity,\n\tclassifyEntityKind: postgresDiffSubjectEntityKind,\n\tmigrations: {\n\t\tcreatePlanner(adapter) {\n\t\t\treturn createPostgresMigrationPlanner(adapter);\n\t\t},\n\t\tcreateRunner(family) {\n\t\t\treturn createPostgresMigrationRunner(family);\n\t\t},\n\t\tcontractToSchema(contract, frameworkComponents) {\n\t\t\tconst expander = buildNativeTypeExpander(frameworkComponents);\n\t\t\treturn contractToPostgresDatabaseSchemaNode(blindCast(contract), {\n\t\t\t\tannotationNamespace: \"pg\",\n\t\t\t\t...ifDefined(\"expandNativeType\", expander),\n\t\t\t\trenderDefault: postgresRenderDefault,\n\t\t\t\tresolveDefault: postgresResolveDefault\n\t\t\t});\n\t\t}\n\t},\n\tcreate() {\n\t\treturn {\n\t\t\tfamilyId: \"sql\",\n\t\t\ttargetId: \"postgres\"\n\t\t};\n\t},\n\t/**\n\t* Direct method for SQL-specific usage.\n\t* @deprecated Use migrations.createPlanner() for CLI compatibility.\n\t*/\n\tcreatePlanner(adapter) {\n\t\treturn createPostgresMigrationPlanner(adapter);\n\t},\n\t/**\n\t* Direct method for SQL-specific usage.\n\t* @deprecated Use migrations.createRunner() for CLI compatibility.\n\t*/\n\tcreateRunner(family) {\n\t\treturn createPostgresMigrationRunner(family);\n\t}\n};\n//#endregion\nexport { postgresTargetDescriptor as default, postgresRenderDefault };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-Y6FxMu3o.mjs","names":[],"sources":["../../../../3-targets/7-drivers/postgres/dist/control.mjs"],"sourcesContent":["import { i as postgresDriverDescriptorMeta, r as normalizePgError } from \"./normalize-error-CNjgVO71.mjs\";\nimport { errorRuntime } from \"@internal/errors/execution\";\nimport { SqlQueryError } from \"@internal/sql-errors\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { redactDatabaseUrl } from \"@internal/utils/redact-db-url\";\nimport { Client } from \"pg\";\n//#region src/exports/control.ts\nvar PostgresControlDriver = class {\n\tclient;\n\tfamilyId = \"sql\";\n\ttargetId = \"postgres\";\n\tconstructor(client) {\n\t\tthis.client = client;\n\t}\n\tasync query(sql, params) {\n\t\ttry {\n\t\t\treturn { rows: (await this.client.query(sql, params)).rows };\n\t\t} catch (error) {\n\t\t\tthrow normalizePgError(error);\n\t\t}\n\t}\n\tasync databaseName() {\n\t\tconst name = (await this.query(\"select current_database() as name\")).rows[0]?.name;\n\t\treturn typeof name === \"string\" && name.length > 0 ? name : void 0;\n\t}\n\tasync close() {\n\t\tawait this.client.end().catch(() => {});\n\t}\n};\n/**\n* Postgres driver descriptor for CLI config.\n*/\nconst postgresDriverDescriptor = {\n\t...postgresDriverDescriptorMeta,\n\tasync create(url) {\n\t\tconst client = new Client({ connectionString: url });\n\t\tclient.on(\"error\", () => {});\n\t\ttry {\n\t\t\tawait client.connect();\n\t\t\treturn new PostgresControlDriver(client);\n\t\t} catch (error) {\n\t\t\tconst normalized = normalizePgError(error);\n\t\t\tconst redacted = redactDatabaseUrl(url);\n\t\t\ttry {\n\t\t\t\tawait client.end();\n\t\t\t} catch {}\n\t\t\tconst codeFromSqlState = SqlQueryError.is(normalized) ? normalized.sqlState : void 0;\n\t\t\tconst causeCode = \"cause\" in normalized && normalized.cause ? normalized.cause.code : void 0;\n\t\t\tconst sqlState = codeFromSqlState ?? causeCode;\n\t\t\tthrow errorRuntime(\"DRIVER.CONNECTION_FAILED\", \"Database connection failed\", {\n\t\t\t\twhy: normalized.message,\n\t\t\t\tfix: \"Verify the database URL, ensure the database is reachable, and confirm credentials/permissions\",\n\t\t\t\tmeta: {\n\t\t\t\t\t...ifDefined(\"sqlState\", sqlState),\n\t\t\t\t\t...redacted\n\t\t\t\t},\n\t\t\t\tcause: error\n\t\t\t});\n\t\t}\n\t}\n};\n//#endregion\nexport { PostgresControlDriver, postgresDriverDescriptor as default };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":";;;;;;;AAOA,IAAI,wBAAwB,MAAM;CACjC;CACA,WAAW;CACX,WAAW;CACX,YAAY,QAAQ;EACnB,KAAK,SAAS;CACf;CACA,MAAM,MAAM,KAAK,QAAQ;EACxB,IAAI;GACH,OAAO,EAAE,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,MAAM,EAAA,CAAG,KAAK;EAC5D,SAAS,OAAO;GACf,MAAM,iBAAiB,KAAK;EAC7B;CACD;CACA,MAAM,eAAe;EACpB,MAAM,QAAQ,MAAM,KAAK,MAAM,mCAAmC,EAAA,CAAG,KAAK,EAAE,EAAE;EAC9E,OAAO,OAAO,SAAS,YAAY,KAAK,SAAS,IAAI,OAAO,KAAK;CAClE;CACA,MAAM,QAAQ;EACb,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;CACvC;AACD;;;;AAIA,MAAM,2BAA2B;CAChC,GAAG;CACH,MAAM,OAAO,KAAK;EACjB,MAAM,SAAS,IAAI,OAAO,EAAE,kBAAkB,IAAI,CAAC;EACnD,OAAO,GAAG,eAAe,CAAC,CAAC;EAC3B,IAAI;GACH,MAAM,OAAO,QAAQ;GACrB,OAAO,IAAI,sBAAsB,MAAM;EACxC,SAAS,OAAO;GACf,MAAM,aAAa,iBAAiB,KAAK;GACzC,MAAM,WAAW,kBAAkB,GAAG;GACtC,IAAI;IACH,MAAM,OAAO,IAAI;GAClB,QAAQ,CAAC;GACT,MAAM,mBAAmB,cAAc,GAAG,UAAU,IAAI,WAAW,WAAW,KAAK;GACnF,MAAM,YAAY,WAAW,cAAc,WAAW,QAAQ,WAAW,MAAM,OAAO,KAAK;GAC3F,MAAM,WAAW,oBAAoB;GACrC,MAAM,aAAa,4BAA4B,8BAA8B;IAC5E,KAAK,WAAW;IAChB,KAAK;IACL,MAAM;KACL,GAAG,UAAU,YAAY,QAAQ;KACjC,GAAG;IACJ;IACA,OAAO;GACR,CAAC;EACF;CACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-adapter-DFr4gS-r-DM3KcZdQ.mjs","names":[],"sources":["../../../../3-targets/6-adapters/postgres/dist/control-adapter-DFr4gS-r.mjs"],"sourcesContent":["import { n as adapterError, t as renderLoweredSql } from \"./sql-renderer-ComgusFq.mjs\";\nimport { APP_SPACE_ID, extractCodecLookup } from \"@internal/framework-components/control\";\nimport { RawExpr, isDdlNode } from \"@internal/sql-relational-core/ast\";\nimport { buildPostgresCodecDescriptorRegistry } from \"@internal/target-postgres/codec-descriptor\";\nimport { postgresCodecDescriptorRegistry, postgresCodecRegistry } from \"@internal/target-postgres/codecs\";\nimport { parseMarkerRowSafely, rethrowMarkerReadError, withMarkerReadErrorHandling } from \"@internal/errors/execution\";\nimport { parseContractMarkerRow } from \"@internal/family-sql/verify\";\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 { normalizeSchemaNativeType } from \"@internal/target-postgres/native-type-normalizer\";\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_CODEC_ID } from \"@internal/target-postgres/codec-ids\";\n//#region src/core/codec-lookup.ts\nfunction buildPostgresCodecRegistry(descriptors) {\n\tconst descriptorRegistry = buildPostgresCodecDescriptorRegistry(descriptors);\n\tconst registry = {\n\t\t...extractCodecLookup([{\n\t\t\tid: \"postgres-codecs\",\n\t\t\ttypes: { codecTypes: { codecDescriptors: Array.from(descriptorRegistry.values()) } }\n\t\t}]),\n\t\tdescriptorFor: (codecId) => descriptorRegistry.descriptorFor(codecId),\n\t\tvalues: () => descriptorRegistry.values()\n\t};\n\treturn Object.freeze(registry);\n}\nfunction assemblePostgresCodecRegistry(components) {\n\treturn buildPostgresCodecRegistry(components.flatMap((component) => component.types?.codecTypes?.codecDescriptors ?? []));\n}\nfunction createPostgresCodecRegistryWithBuiltins(codecDescriptors = []) {\n\treturn buildPostgresCodecRegistry([...postgresCodecDescriptorRegistry.values(), ...codecDescriptors]);\n}\n/**\n* Build a coherent PostgreSQL codec registry populated with built-in descriptors only.\n*\n* The returned registry supports both ordinary codec materialization and PostgreSQL target behavior. Stack-composed paths build the same combined registry from their complete ordered descriptor contributions.\n*/\nfunction createPostgresBuiltinCodecLookup() {\n\treturn createPostgresCodecRegistryWithBuiltins();\n}\n//#endregion\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_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\";\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) out.set(row.space, parseMarkerRowSafely(row, parseContractMarkerRow, {\n\t\t\tspace: row.space,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\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\treturn {\n\t\t\tkind: \"present\",\n\t\t\trecord: parseContractMarkerRow(row)\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\tconst declaredNamespaces = extractContractNamespaceIds(contract);\n\t\tconst resolvedSchemas = declaredNamespaces.length > 0 ? await this.resolveNamespaceSchemas(driver, declaredNamespaces) : [schema];\n\t\tconst namespaces = {};\n\t\tlet pgVersion = \"unknown\";\n\t\tfor (const resolved of resolvedSchemas) {\n\t\t\tconst { namespace, pgVersion: version } = await this.introspectSchema(driver, resolved);\n\t\t\tnamespaces[resolved] = namespace;\n\t\t\tpgVersion = version;\n\t\t}\n\t\treturn new PostgresDatabaseSchemaNode({\n\t\t\tnamespaces,\n\t\t\troles: await this.introspectRoles(driver),\n\t\t\texistingSchemas: await this.listExistingSchemas(driver),\n\t\t\tpgVersion\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\tlet nativeType = colRow.udt_name;\n\t\t\t\tconst formattedType = colRow.formatted_type ? normalizeFormattedType(colRow.formatted_type, colRow.data_type, colRow.udt_name) : null;\n\t\t\t\tif (formattedType) nativeType = formattedType;\n\t\t\t\telse if (colRow.data_type === \"character varying\" || colRow.data_type === \"character\") if (colRow.character_maximum_length) nativeType = `${colRow.data_type}(${colRow.character_maximum_length})`;\n\t\t\t\telse nativeType = colRow.data_type;\n\t\t\t\telse if (colRow.data_type === \"numeric\" || colRow.data_type === \"decimal\") if (colRow.numeric_precision && colRow.numeric_scale !== null) nativeType = `${colRow.data_type}(${colRow.numeric_precision},${colRow.numeric_scale})`;\n\t\t\t\telse if (colRow.numeric_precision) nativeType = `${colRow.data_type}(${colRow.numeric_precision})`;\n\t\t\t\telse nativeType = colRow.data_type;\n\t\t\t\telse nativeType = colRow.udt_name || colRow.data_type;\n\t\t\t\tconst many = nativeType.endsWith(\"[]\") ? true : void 0;\n\t\t\t\tif (many) nativeType = normalizeSchemaNativeType(nativeType.slice(0, -2));\n\t\t\t\tconst resolvedNativeType = `${normalizeSchemaNativeType(nativeType)}${many ? \"[]\" : \"\"}`;\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: Object.freeze([...fk.columns]),\n\t\t\t\treferencedTable: fk.referencedTable,\n\t\t\t\treferencedSchema: fk.referencedSchema,\n\t\t\t\treferencedColumns: Object.freeze([...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: Object.freeze([...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 `pg_policies.roles`.\n*\n* The `pg` client's type-parser registry handles `text[]` (OID 1009) but not\n* `name[]` (OID 1003). When the parser is absent the raw Postgres text-array\n* literal (`{role1,role2}`) is returned as a string instead of a JS array.\n* This function accepts either form and returns a plain string array.\n*\n* The string branch 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)) return value.map(String);\n\tif (typeof value !== \"string\") return [];\n\tconst trimmed = value.trim();\n\tif (!trimmed.startsWith(\"{\") || !trimmed.endsWith(\"}\")) return [];\n\tconst inner = trimmed.slice(1, -1);\n\tif (inner === \"\") return [];\n\tconst elements = [];\n\tlet current = \"\";\n\tlet inQuotes = false;\n\tlet wasQuoted = false;\n\tconst pushCurrent = () => {\n\t\telements.push(wasQuoted ? current : current.trim());\n\t\tcurrent = \"\";\n\t\twasQuoted = false;\n\t};\n\tlet i = 0;\n\twhile (i < inner.length) {\n\t\tconst char = inner.charAt(i);\n\t\tif (inQuotes) {\n\t\t\tif (char === \"\\\\\") {\n\t\t\t\tcurrent += inner[i + 1] ?? \"\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\"\") {\n\t\t\t\tinQuotes = false;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrent += char;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"\\\"\") {\n\t\t\tinQuotes = true;\n\t\t\twasQuoted = true;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \",\") {\n\t\t\tpushCurrent();\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += char;\n\t\ti++;\n\t}\n\tif (inQuotes) return [];\n\tpushCurrent();\n\treturn elements;\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 extractContractNamespaceIds(contract) {\n\tif (contract === null || typeof contract !== \"object\") return [];\n\tconst storage = contract.storage;\n\tif (storage === null || typeof storage !== \"object\") return [];\n\tconst namespaces = storage.namespaces;\n\tif (namespaces === null || typeof namespaces !== \"object\") return [];\n\treturn Object.keys(namespaces);\n}\nfunction normalizeFormattedType(formattedType, dataType, udtName) {\n\tif (formattedType.endsWith(\"[]\")) return `${normalizeFormattedType(formattedType.slice(0, -2), dataType, udtName)}[]`;\n\tif (formattedType === \"integer\") return \"int4\";\n\tif (formattedType === \"smallint\") return \"int2\";\n\tif (formattedType === \"bigint\") return \"int8\";\n\tif (formattedType === \"real\") return \"float4\";\n\tif (formattedType === \"double precision\") return \"float8\";\n\tif (formattedType === \"boolean\") return \"bool\";\n\tif (formattedType.startsWith(\"varchar\")) return formattedType.replace(\"varchar\", \"character varying\");\n\tif (formattedType.startsWith(\"bpchar\")) return formattedType.replace(\"bpchar\", \"character\");\n\tif (formattedType.startsWith(\"varbit\")) return formattedType.replace(\"varbit\", \"bit varying\");\n\tif (dataType === \"timestamp with time zone\" || udtName === \"timestamptz\") return formattedType.replace(\"timestamp\", \"timestamptz\").replace(\" with time zone\", \"\").trim();\n\tif (dataType === \"timestamp without time zone\" || udtName === \"timestamp\") return formattedType.replace(\" without time zone\", \"\").trim();\n\tif (dataType === \"time with time zone\" || udtName === \"timetz\") return formattedType.replace(\"time\", \"timetz\").replace(\" with time zone\", \"\").trim();\n\tif (dataType === \"time without time zone\" || udtName === \"time\") return formattedType.replace(\" without time zone\", \"\").trim();\n\tif (formattedType.startsWith(\"\\\"\") && formattedType.endsWith(\"\\\"\")) return formattedType.slice(1, -1);\n\treturn formattedType;\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 mapReferentialAction(rule) {\n\tconst mapped = PG_REFERENTIAL_ACTION_MAP[rule];\n\tif (mapped === void 0) 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\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 (!reloptions || reloptions.length === 0) return;\n\tconst result = {};\n\tfor (const entry of reloptions) {\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}\nfunction pgRenderArrayElement(el) {\n\tif (el === null) return \"NULL\";\n\tif (typeof el === \"number\" || typeof el === \"boolean\") return String(el);\n\tif (typeof el === \"string\") return `'${escapeLiteral(el)}'`;\n\treturn `'${escapeLiteral(JSON.stringify(el))}'`;\n}\nfunction pgRenderArrayLiteral(elements) {\n\tif (elements.length === 0) return \"'{}'\";\n\treturn `ARRAY[${elements.map(pgRenderArrayElement).join(\", \")}]`;\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 (Array.isArray(wire) && nativeType.endsWith(\"[]\")) return pgRenderArrayLiteral(wire);\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}\nasync function pgRenderDdlColumnDefault(def, nativeType, codecLookup, codecRef) {\n\tif (def.kind === \"function\") {\n\t\tif (def.expression === \"autoincrement()\") return \"\";\n\t\treturn `DEFAULT (${def.expression})`;\n\t}\n\tif (codecRef !== void 0) {\n\t\tconst codec = codecLookup.get(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((a) => a.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 { createPostgresCodecRegistryWithBuiltins as i, assemblePostgresCodecRegistry as n, createPostgresBuiltinCodecLookup as r, PostgresControlAdapter as t };\n\n//# sourceMappingURL=control-adapter-DFr4gS-r.mjs.map"],"mappings":"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"}