@prisma/orm-family-sql 8.0.0-rc.2-dev.3 → 8.0.0-rc.20-dev.1

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 (564) hide show
  1. package/README.md +2 -6
  2. package/dist/{aggregate-descriptor-registry-C7hel5O7.mjs → aggregate-descriptor-registry-ZrKjxwQe.mjs} +5 -5
  3. package/dist/aggregate-descriptor-registry-ZrKjxwQe.mjs.map +1 -0
  4. package/dist/ast-D0miQ1B6.mjs +372 -0
  5. package/dist/ast-D0miQ1B6.mjs.map +1 -0
  6. package/dist/ast-YEMe_B8z.d.mts +292 -0
  7. package/dist/ast-YEMe_B8z.d.mts.map +1 -0
  8. package/dist/attribute-specs-DA_RwQFB.d.mts +114 -0
  9. package/dist/attribute-specs-DA_RwQFB.d.mts.map +1 -0
  10. package/dist/{authored-check-naming-Hf9990DV.mjs → authored-check-naming-BHGJhjqn.mjs} +5 -5
  11. package/dist/authored-check-naming-BHGJhjqn.mjs.map +1 -0
  12. package/dist/{authored-check-naming-BWBe-PVE.d.mts → authored-check-naming-D-o196ry.d.mts} +3 -3
  13. package/dist/authored-check-naming-D-o196ry.d.mts.map +1 -0
  14. package/dist/authoring-entity-types-CgKIgWq5-pEdfjam5.d.mts +9 -0
  15. package/dist/authoring-entity-types-CgKIgWq5-pEdfjam5.d.mts.map +1 -0
  16. package/dist/builder.d.mts +4 -3
  17. package/dist/builder__runtime.d.mts +29 -31
  18. package/dist/builder__runtime.d.mts.map +1 -1
  19. package/dist/builder__runtime.mjs +261 -191
  20. package/dist/builder__runtime.mjs.map +1 -1
  21. package/dist/builder__types.d.mts +6 -3
  22. package/dist/{canonicalization-hooks-dmXkOR4a.mjs → canonicalization-hooks-Ce1v_TDl.mjs} +2 -2
  23. package/dist/canonicalization-hooks-Ce1v_TDl.mjs.map +1 -0
  24. package/dist/{canonicalization-hooks-CYnW_sGn.d.mts → canonicalization-hooks-DyapQ0my.d.mts} +2 -2
  25. package/dist/canonicalization-hooks-DyapQ0my.d.mts.map +1 -0
  26. package/dist/{check-constraint-B7qGu6rc-HvQjjX82.d.mts → check-constraint-B7qGu6rc-Bk2ezWXu.d.mts} +4 -4
  27. package/dist/check-constraint-B7qGu6rc-Bk2ezWXu.d.mts.map +1 -0
  28. package/dist/{codec-descriptor-registry-N0dhtKaH.mjs → codec-descriptor-registry-CiiFzMtb.mjs} +13 -40
  29. package/dist/codec-descriptor-registry-CiiFzMtb.mjs.map +1 -0
  30. package/dist/collection-methods-BB8YH69u.d.mts +1 -0
  31. package/dist/collection-methods-D2UnCS0S-DOy2qHYS.d.mts +77 -0
  32. package/dist/collection-methods-D2UnCS0S-DOy2qHYS.d.mts.map +1 -0
  33. package/dist/{config-types-D9fdKG3g.d.mts → config-types-C-1mIiJO.d.mts} +5 -5
  34. package/dist/config-types-C-1mIiJO.d.mts.map +1 -0
  35. package/dist/{config-types-gAm54C_v.mjs → config-types-DkEeq_qq.mjs} +10 -6
  36. package/dist/config-types-DkEeq_qq.mjs.map +1 -0
  37. package/dist/{contract-builder-D4a5dT7j.mjs → contract-builder-50lF0kz1.mjs} +431 -226
  38. package/dist/contract-builder-50lF0kz1.mjs.map +1 -0
  39. package/dist/contract-builder-C_Zi57iD.d.mts +1967 -0
  40. package/dist/contract-builder-C_Zi57iD.d.mts.map +1 -0
  41. package/dist/contract-emitter.d.mts +4 -7
  42. package/dist/contract-emitter.d.mts.map +1 -1
  43. package/dist/contract-emitter.mjs +1 -1
  44. package/dist/{contract-errors-BCN6RVI5-5IHBF_lg.mjs → contract-errors-BCN6RVI5-DoH6b_KZ.mjs} +2 -2
  45. package/dist/contract-errors-BCN6RVI5-DoH6b_KZ.mjs.map +1 -0
  46. package/dist/contract-prisma7__provider.d.mts +97 -0
  47. package/dist/contract-prisma7__provider.d.mts.map +1 -0
  48. package/dist/contract-prisma7__provider.mjs +2011 -0
  49. package/dist/contract-prisma7__provider.mjs.map +1 -0
  50. package/dist/contract-psl.d.mts +18 -29
  51. package/dist/contract-psl.d.mts.map +1 -1
  52. package/dist/contract-psl.mjs +1 -1
  53. package/dist/contract-psl__attribute-specs.d.mts +2 -0
  54. package/dist/contract-psl__attribute-specs.mjs +2 -0
  55. package/dist/contract-psl__default-table-name.d.mts +7 -0
  56. package/dist/contract-psl__default-table-name.d.mts.map +1 -0
  57. package/dist/contract-psl__default-table-name.mjs +2 -0
  58. package/dist/contract-psl__diagnostics.d.mts +12 -0
  59. package/dist/contract-psl__diagnostics.d.mts.map +1 -0
  60. package/dist/contract-psl__diagnostics.mjs +2 -0
  61. package/dist/contract-psl__map-names.d.mts +16 -0
  62. package/dist/contract-psl__map-names.d.mts.map +1 -0
  63. package/dist/contract-psl__map-names.mjs +21 -0
  64. package/dist/contract-psl__map-names.mjs.map +1 -0
  65. package/dist/contract-psl__provider.d.mts +3 -3
  66. package/dist/contract-psl__provider.d.mts.map +1 -1
  67. package/dist/contract-psl__provider.mjs +95 -46
  68. package/dist/contract-psl__provider.mjs.map +1 -1
  69. package/dist/contract-ts.d.mts +5 -5
  70. package/dist/contract-ts.mjs +5 -4
  71. package/dist/contract-ts__config-types.d.mts +1 -1
  72. package/dist/contract-ts__config-types.mjs +1 -1
  73. package/dist/contract-ts__contract-builder.d.mts +4 -4
  74. package/dist/contract-ts__contract-builder.mjs +4 -3
  75. package/dist/{contract-view-BMR5IWk4.mjs → contract-view-DqpzeYeE.mjs} +2 -2
  76. package/dist/contract-view-DqpzeYeE.mjs.map +1 -0
  77. package/dist/{contract-view-CPHxoAEX.d.mts → contract-view-DuB35or0.d.mts} +3 -3
  78. package/dist/contract-view-DuB35or0.d.mts.map +1 -0
  79. package/dist/contract.d.mts +30 -28
  80. package/dist/contract.mjs +23 -18
  81. package/dist/contract__authored-check-naming.d.mts +1 -1
  82. package/dist/contract__authored-check-naming.mjs +1 -1
  83. package/dist/contract__canonicalization-hooks.d.mts +1 -1
  84. package/dist/contract__canonicalization-hooks.mjs +1 -1
  85. package/dist/contract__contract-view.d.mts +1 -1
  86. package/dist/contract__contract-view.mjs +1 -1
  87. package/dist/contract__data-type-support.d.mts +2 -0
  88. package/dist/contract__data-type-support.mjs +2 -0
  89. package/dist/contract__data-type.d.mts +2 -0
  90. package/dist/contract__data-type.mjs +3 -0
  91. package/dist/contract__entity-handle-lowering-hook.d.mts +2 -2
  92. package/dist/contract__entity-handle-lowering-hook.mjs +2 -2
  93. package/dist/contract__entity-kinds.d.mts +1 -1
  94. package/dist/contract__entity-kinds.mjs +1 -1
  95. package/dist/contract__factories.d.mts +1 -1
  96. package/dist/contract__factories.mjs +1 -1
  97. package/dist/contract__foreign-key-materialization.d.mts +2 -2
  98. package/dist/contract__foreign-key-materialization.mjs +3 -2
  99. package/dist/contract__index-naming.d.mts +2 -2
  100. package/dist/contract__index-naming.mjs +2 -2
  101. package/dist/contract__index-type-validation.d.mts +2 -2
  102. package/dist/contract__index-type-validation.mjs +1 -1
  103. package/dist/contract__index-types.d.mts +3 -3
  104. package/dist/contract__index-types.mjs +2 -2
  105. package/dist/contract__referential-action-sql.d.mts +1 -1
  106. package/dist/contract__referential-action-sql.mjs +1 -1
  107. package/dist/contract__resolve-storage-table.d.mts +1 -1
  108. package/dist/contract__resolve-storage-table.mjs +1 -1
  109. package/dist/contract__sql-expression.d.mts +2 -0
  110. package/dist/contract__sql-expression.mjs +2 -0
  111. package/dist/contract__types.d.mts +12 -12
  112. package/dist/contract__types.mjs +4 -4
  113. package/dist/contract__validators.d.mts +2 -2
  114. package/dist/contract__validators.mjs +3 -3
  115. package/dist/contract__value-set-derivation-hook.d.mts +1 -1
  116. package/dist/contract__value-set-derivation-hook.mjs +1 -1
  117. package/dist/control-BK50zF6c.mjs +2721 -0
  118. package/dist/control-BK50zF6c.mjs.map +1 -0
  119. package/dist/control-ChAUdOOu.d.mts +1416 -0
  120. package/dist/control-ChAUdOOu.d.mts.map +1 -0
  121. package/dist/{control-adapter-C99J7aEF-B7eQd7vD.d.mts → control-adapter-Bn0uhplA-BzP2uPqJ.d.mts} +27 -44
  122. package/dist/control-adapter-Bn0uhplA-BzP2uPqJ.d.mts.map +1 -0
  123. package/dist/control-adapter-NZ2kKc4x.d.mts +13 -0
  124. package/dist/control-adapter-NZ2kKc4x.d.mts.map +1 -0
  125. package/dist/control-adapter-SlQkTEwT.mjs +16 -0
  126. package/dist/control-adapter-SlQkTEwT.mjs.map +1 -0
  127. package/dist/data-type-BFSpaotu.mjs +52 -0
  128. package/dist/data-type-BFSpaotu.mjs.map +1 -0
  129. package/dist/data-type-DJIvKQHf.d.mts +158 -0
  130. package/dist/data-type-DJIvKQHf.d.mts.map +1 -0
  131. package/dist/data-type-support-BhSoPUFj.mjs +9 -0
  132. package/dist/data-type-support-BhSoPUFj.mjs.map +1 -0
  133. package/dist/data-type-support-CXpA0ex-.d.mts +7 -0
  134. package/dist/data-type-support-CXpA0ex-.d.mts.map +1 -0
  135. package/dist/{db-D18PrXKW-DvTv4JFn.d.mts → db-D1d75IvM-D4mRDC6w.d.mts} +123 -128
  136. package/dist/db-D1d75IvM-D4mRDC6w.d.mts.map +1 -0
  137. package/dist/{ddl-types-CXx4vPz6-BsgrnSUY.d.mts → ddl-types-By5mT2_S-CdaaFvsX.d.mts} +24 -29
  138. package/dist/ddl-types-By5mT2_S-CdaaFvsX.d.mts.map +1 -0
  139. package/dist/default-mapping-CAOONlKQ-4m07nb-O.d.mts +39 -0
  140. package/dist/default-mapping-CAOONlKQ-4m07nb-O.d.mts.map +1 -0
  141. package/dist/default-table-name-BfFY8qYR-CWZFDX6v.mjs +9 -0
  142. package/dist/default-table-name-BfFY8qYR-CWZFDX6v.mjs.map +1 -0
  143. package/dist/derived-checks-D5HVRvqN-BJx1gwPA.mjs +1508 -0
  144. package/dist/derived-checks-D5HVRvqN-BJx1gwPA.mjs.map +1 -0
  145. package/dist/{derived-checks-DPdD01O0-DGqOFjs6.d.mts → derived-checks-DpPkO6Dt-9U9UJZOo.d.mts} +4 -4
  146. package/dist/derived-checks-DpPkO6Dt-9U9UJZOo.d.mts.map +1 -0
  147. package/dist/diagnostics-RHJxoiIk.mjs +23 -0
  148. package/dist/diagnostics-RHJxoiIk.mjs.map +1 -0
  149. package/dist/{diff-DbTNVm2f.d.mts → diff-1qHOLoUB.d.mts} +23 -10
  150. package/dist/diff-1qHOLoUB.d.mts.map +1 -0
  151. package/dist/diff-C1rFOhek.mjs +21 -0
  152. package/dist/diff-C1rFOhek.mjs.map +1 -0
  153. package/dist/{dist-ZK6oeI5e.mjs → dist-C8Y-PPuE.mjs} +36 -212
  154. package/dist/dist-C8Y-PPuE.mjs.map +1 -0
  155. package/dist/{dist-C_q1_QR9.mjs → dist-CHz1hF8M.mjs} +2 -2
  156. package/dist/dist-CHz1hF8M.mjs.map +1 -0
  157. package/dist/{dist-x6jvtkKM.mjs → dist-CMDXybwm.mjs} +2 -2
  158. package/dist/dist-CMDXybwm.mjs.map +1 -0
  159. package/dist/{driver-types-BQtRkOJ0-Bv2RPSfr.d.mts → driver-types-DRsYeq3j-BimeCnUk.d.mts} +11 -2
  160. package/dist/driver-types-DRsYeq3j-BimeCnUk.d.mts.map +1 -0
  161. package/dist/entity-handle-lowering-hook-BJZSlVVF.mjs +16 -0
  162. package/dist/entity-handle-lowering-hook-BJZSlVVF.mjs.map +1 -0
  163. package/dist/{entity-handle-lowering-hook-CIvRKBfa.d.mts → entity-handle-lowering-hook-BuvLtgFi.d.mts} +8 -11
  164. package/dist/entity-handle-lowering-hook-BuvLtgFi.d.mts.map +1 -0
  165. package/dist/{entity-kinds-B5cUFU22.d.mts → entity-kinds-BPG2xCZV.d.mts} +7 -7
  166. package/dist/entity-kinds-BPG2xCZV.d.mts.map +1 -0
  167. package/dist/{entity-kinds-D7vwoN_T-CCBwFJy0.mjs → entity-kinds-JR5SAm5h-DOH6VUtL.mjs} +31 -28
  168. package/dist/entity-kinds-JR5SAm5h-DOH6VUtL.mjs.map +1 -0
  169. package/dist/{errors-B5g0xWro-mWH2C07F.mjs → errors-B5g0xWro-C8plbqga.mjs} +2 -2
  170. package/dist/errors-B5g0xWro-C8plbqga.mjs.map +1 -0
  171. package/dist/errors.d.mts +1 -1
  172. package/dist/errors.d.mts.map +1 -1
  173. package/dist/errors.mjs +1 -1
  174. package/dist/exports-C3wGYtID-D65DEUTC.mjs +2389 -0
  175. package/dist/exports-C3wGYtID-D65DEUTC.mjs.map +1 -0
  176. package/dist/{expression-FJK6Ar-d.d.mts → expression-6ld_ZQL6-fOuazzzm.d.mts} +37 -16
  177. package/dist/expression-6ld_ZQL6-fOuazzzm.d.mts.map +1 -0
  178. package/dist/expression-CieaNuRM-B1uVqxwd.d.mts +22 -0
  179. package/dist/expression-CieaNuRM-B1uVqxwd.d.mts.map +1 -0
  180. package/dist/expression-D8HstQiB.d.mts +2 -0
  181. package/dist/{expression-CX5mTA-z.mjs → expression-impl-B-XNINxr-BhN2sysZ.mjs} +41 -18
  182. package/dist/expression-impl-B-XNINxr-BhN2sysZ.mjs.map +1 -0
  183. package/dist/{factories-SVor5xIT.mjs → factories-Crobuxwn.mjs} +27 -20
  184. package/dist/factories-Crobuxwn.mjs.map +1 -0
  185. package/dist/{factories-P3qBQhO-.d.mts → factories-DbNP9qfs.d.mts} +16 -10
  186. package/dist/factories-DbNP9qfs.d.mts.map +1 -0
  187. package/dist/family.d.mts +17 -13
  188. package/dist/family.mjs +17 -12
  189. package/dist/family__control-adapter.d.mts +3 -3
  190. package/dist/family__control-adapter.mjs +2 -1
  191. package/dist/family__control.d.mts +5 -4
  192. package/dist/family__control.mjs +4 -4
  193. package/dist/family__diff.d.mts +2 -3
  194. package/dist/family__diff.mjs +2 -2
  195. package/dist/family__ir.d.mts +1 -1
  196. package/dist/family__ir.mjs +2 -2
  197. package/dist/family__migration.d.mts +1 -1
  198. package/dist/family__migration.mjs +1 -1
  199. package/dist/family__pack.d.mts +2 -249
  200. package/dist/family__pack.mjs +3 -18
  201. package/dist/family__psl-build.d.mts +3 -0
  202. package/dist/family__psl-build.mjs +3 -0
  203. package/dist/family__psl-infer.d.mts +2 -2
  204. package/dist/family__psl-infer.mjs +2 -2
  205. package/dist/family__runtime.d.mts +2 -2
  206. package/dist/family__runtime.mjs +2 -2
  207. package/dist/family__verify.d.mts +1 -1
  208. package/dist/family__verify.mjs +1 -1
  209. package/dist/foreign-key-materialization-48P2V8on.d.mts +98 -0
  210. package/dist/foreign-key-materialization-48P2V8on.d.mts.map +1 -0
  211. package/dist/foreign-key-materialization-BM59w_Xg.mjs +287 -0
  212. package/dist/foreign-key-materialization-BM59w_Xg.mjs.map +1 -0
  213. package/dist/{foreign-key-C-iTPuRT-C9ip8zFx.d.mts → foreign-key-qkDFfG8t-TaK_GYWR.d.mts} +21 -5
  214. package/dist/foreign-key-qkDFfG8t-TaK_GYWR.d.mts.map +1 -0
  215. package/dist/functions-CsOoN7I3.mjs +88 -0
  216. package/dist/functions-CsOoN7I3.mjs.map +1 -0
  217. package/dist/functions-EW-RrRn3.d.mts +73 -0
  218. package/dist/functions-EW-RrRn3.d.mts.map +1 -0
  219. package/dist/generator-functions-D_qdqBV--Bq296cED.mjs +544 -0
  220. package/dist/generator-functions-D_qdqBV--Bq296cED.mjs.map +1 -0
  221. package/dist/index-7nHHQsAj.d.mts +606 -0
  222. package/dist/index-7nHHQsAj.d.mts.map +1 -0
  223. package/dist/{index-C5I8D-MB.d.mts → index-Nqc3OHR_.d.mts} +4 -5
  224. package/dist/index-Nqc3OHR_.d.mts.map +1 -0
  225. package/dist/index-equivalence-DswCiq5l-CGsyPP9B.mjs +109 -0
  226. package/dist/index-equivalence-DswCiq5l-CGsyPP9B.mjs.map +1 -0
  227. package/dist/{index-naming-DREt6js7-CRH27yUv.mjs → index-naming-BOcJT1B3-mG8Fd6KN.mjs} +35 -9
  228. package/dist/index-naming-BOcJT1B3-mG8Fd6KN.mjs.map +1 -0
  229. package/dist/{index-naming-Ct65z5Xk.d.mts → index-naming-Cs6wwia3.d.mts} +15 -5
  230. package/dist/index-naming-Cs6wwia3.d.mts.map +1 -0
  231. package/dist/index-reference-4wsdeB7v-DCwswK-q.d.mts +67 -0
  232. package/dist/index-reference-4wsdeB7v-DCwswK-q.d.mts.map +1 -0
  233. package/dist/index-reference-BQSrkRfT.mjs +55 -0
  234. package/dist/index-reference-BQSrkRfT.mjs.map +1 -0
  235. package/dist/index-reference-D8ewQRJr.d.mts +1 -0
  236. package/dist/index-type-validation-DJEMmmw0.mjs +42 -0
  237. package/dist/index-type-validation-DJEMmmw0.mjs.map +1 -0
  238. package/dist/index-type-validation-fGGwAHWc.d.mts +16 -0
  239. package/dist/index-type-validation-fGGwAHWc.d.mts.map +1 -0
  240. package/dist/index-types-H1O43iYT-BD0VwPqV.d.mts +66 -0
  241. package/dist/index-types-H1O43iYT-BD0VwPqV.d.mts.map +1 -0
  242. package/dist/index-types-pC_5vADQ-BOOBi14R.mjs +95 -0
  243. package/dist/index-types-pC_5vADQ-BOOBi14R.mjs.map +1 -0
  244. package/dist/index-types-snhtt_Fo.d.mts +1 -0
  245. package/dist/interpreter-D5qk4B---CG0C7kdx.mjs +2280 -0
  246. package/dist/interpreter-D5qk4B---CG0C7kdx.mjs.map +1 -0
  247. package/dist/{ir-Bghjt-FG.d.mts → ir-BvptQsFW.d.mts} +11 -5
  248. package/dist/ir-BvptQsFW.d.mts.map +1 -0
  249. package/dist/{ir-I-xciGUH.mjs → ir-DzsUDO8e.mjs} +2 -2
  250. package/dist/ir-DzsUDO8e.mjs.map +1 -0
  251. package/dist/{middleware-AhTz1BOW-th-Suxuf.d.mts → middleware-DHkW6pRr-DM6hd9iZ.d.mts} +5 -5
  252. package/dist/middleware-DHkW6pRr-DM6hd9iZ.d.mts.map +1 -0
  253. package/dist/middleware-gqy3l13N.d.mts +1 -0
  254. package/dist/{middleware-CMr4CHNz-DHIUdxlm.mjs → middleware-yBAfiVWn-DZO0vCRQ.mjs} +3 -3
  255. package/dist/middleware-yBAfiVWn-DZO0vCRQ.mjs.map +1 -0
  256. package/dist/{migration-CK4oePIo.mjs → migration-BJQjkqFz.mjs} +4 -4
  257. package/dist/migration-BJQjkqFz.mjs.map +1 -0
  258. package/dist/{migration-CjDRZNep.d.mts → migration-Cxmpzaz0.d.mts} +6 -6
  259. package/dist/migration-Cxmpzaz0.d.mts.map +1 -0
  260. package/dist/{naming-CV9j2pXl-KARaDReS.d.mts → naming-BcD36g9T-Mfe_xGGL.d.mts} +9 -14
  261. package/dist/naming-BcD36g9T-Mfe_xGGL.d.mts.map +1 -0
  262. package/dist/{naming-DKr4TJd7-Cszhq9RV.mjs → naming-bM5qm5PY-jOg3JFMb.mjs} +20 -31
  263. package/dist/naming-bM5qm5PY-jOg3JFMb.mjs.map +1 -0
  264. package/dist/{ddl-types-BGdnAbXo-DKPHPUGx.mjs → opaque-sql-Dset3kln-CtsPDTXn.mjs} +24 -11
  265. package/dist/opaque-sql-Dset3kln-CtsPDTXn.mjs.map +1 -0
  266. package/dist/operations.d.mts +1 -1
  267. package/dist/operations.mjs +1 -1
  268. package/dist/orm-client.d.mts +817 -267
  269. package/dist/orm-client.d.mts.map +1 -1
  270. package/dist/orm-client.mjs +4719 -2942
  271. package/dist/orm-client.mjs.map +1 -1
  272. package/dist/pack-DA8HZ2mo.d.mts +535 -0
  273. package/dist/pack-DA8HZ2mo.d.mts.map +1 -0
  274. package/dist/pack-gSvGQWqs.mjs +80 -0
  275. package/dist/pack-gSvGQWqs.mjs.map +1 -0
  276. package/dist/{plan-CDxduYaN-pLIyyJaB.d.mts → plan-Cr4azjnG-CuL8FqXC.d.mts} +12 -8
  277. package/dist/plan-Cr4azjnG-CuL8FqXC.d.mts.map +1 -0
  278. package/dist/{plan-Dh0LbYIv-Crx5-ThG.mjs → plan-Dh0LbYIv-ubBSdUgl.mjs} +2 -2
  279. package/dist/plan-Dh0LbYIv-ubBSdUgl.mjs.map +1 -0
  280. package/dist/plan-Di6Gs2JD.d.mts +2 -0
  281. package/dist/psl-attribute-parsing-BCsFWsSp-BJ-wGlY6.mjs +42 -0
  282. package/dist/psl-attribute-parsing-BCsFWsSp-BJ-wGlY6.mjs.map +1 -0
  283. package/dist/psl-build-DFBG6vhz.mjs +426 -0
  284. package/dist/psl-build-DFBG6vhz.mjs.map +1 -0
  285. package/dist/psl-build-RelubU2E.d.mts +112 -0
  286. package/dist/psl-build-RelubU2E.d.mts.map +1 -0
  287. package/dist/psl-column-resolution-ChZqioOc-BREg4J7d.d.mts +24 -0
  288. package/dist/psl-column-resolution-ChZqioOc-BREg4J7d.d.mts.map +1 -0
  289. package/dist/psl-field-resolution-C5KQ7kzP-B0NwuRWV.mjs +1960 -0
  290. package/dist/psl-field-resolution-C5KQ7kzP-B0NwuRWV.mjs.map +1 -0
  291. package/dist/psl-infer--g4i84Go.mjs +201 -0
  292. package/dist/psl-infer--g4i84Go.mjs.map +1 -0
  293. package/dist/psl-infer-DzoxPZGd.d.mts +80 -0
  294. package/dist/psl-infer-DzoxPZGd.d.mts.map +1 -0
  295. package/dist/psl-names-C3cwe0rg-D1CTmC3a.mjs +66 -0
  296. package/dist/psl-names-C3cwe0rg-D1CTmC3a.mjs.map +1 -0
  297. package/dist/{query-lane-context-Qa-eddrE-kuZ8Z86-.d.mts → query-lane-context-BCEoKy0_-CzmyavC9.d.mts} +20 -49
  298. package/dist/query-lane-context-BCEoKy0_-CzmyavC9.d.mts.map +1 -0
  299. package/dist/query-lane-context-VqH0mS9B.d.mts +1 -0
  300. package/dist/{referential-action-sql-DJ9ps6-S.d.mts → referential-action-sql-B2vKoUK6.d.mts} +3 -3
  301. package/dist/referential-action-sql-B2vKoUK6.d.mts.map +1 -0
  302. package/dist/{referential-action-sql-DSqkrySN.mjs → referential-action-sql-BLzCtTi8.mjs} +2 -2
  303. package/dist/referential-action-sql-BLzCtTi8.mjs.map +1 -0
  304. package/dist/relational-core.d.mts +14 -13
  305. package/dist/relational-core.mjs +8 -8
  306. package/dist/relational-core__aggregate-descriptor-registry.d.mts +2 -2
  307. package/dist/relational-core__aggregate-descriptor-registry.d.mts.map +1 -1
  308. package/dist/relational-core__aggregate-descriptor-registry.mjs +1 -1
  309. package/dist/relational-core__ast.d.mts +5 -5
  310. package/dist/relational-core__ast.mjs +5 -5
  311. package/dist/relational-core__codec-descriptor-registry.d.mts +7 -8
  312. package/dist/relational-core__codec-descriptor-registry.d.mts.map +1 -1
  313. package/dist/relational-core__codec-descriptor-registry.mjs +1 -1
  314. package/dist/relational-core__collection-methods.d.mts +3 -0
  315. package/dist/relational-core__contract-free.d.mts +18 -8
  316. package/dist/relational-core__contract-free.d.mts.map +1 -1
  317. package/dist/relational-core__contract-free.mjs +26 -10
  318. package/dist/relational-core__contract-free.mjs.map +1 -1
  319. package/dist/relational-core__expression.d.mts +4 -2
  320. package/dist/relational-core__expression.mjs +2 -2
  321. package/dist/relational-core__functions.d.mts +2 -0
  322. package/dist/relational-core__functions.mjs +2 -0
  323. package/dist/relational-core__index-reference.d.mts +3 -0
  324. package/dist/relational-core__index-reference.mjs +2 -0
  325. package/dist/relational-core__middleware.d.mts +2 -2
  326. package/dist/relational-core__middleware.mjs +1 -1
  327. package/dist/relational-core__plan.d.mts +4 -4
  328. package/dist/relational-core__plan.mjs +1 -1
  329. package/dist/relational-core__query-lane-context.d.mts +3 -3
  330. package/dist/relational-core__types.d.mts +2 -2
  331. package/dist/{resolve-storage-table-DZsfnzeW.mjs → resolve-storage-table-BHLQsOza.mjs} +3 -3
  332. package/dist/resolve-storage-table-BHLQsOza.mjs.map +1 -0
  333. package/dist/{resolve-storage-table-Nyrgk4h8.d.mts → resolve-storage-table-DCqtmnSU.d.mts} +4 -4
  334. package/dist/resolve-storage-table-DCqtmnSU.d.mts.map +1 -0
  335. package/dist/{runtime-tIHpGCcG.mjs → runtime-6tH1yOxK.mjs} +6 -6
  336. package/dist/runtime-6tH1yOxK.mjs.map +1 -0
  337. package/dist/{runtime-DpKF2Yu2.d.mts → runtime-CF6rAlE5.d.mts} +7 -8
  338. package/dist/runtime-CF6rAlE5.d.mts.map +1 -0
  339. package/dist/runtime.d.mts +5 -5
  340. package/dist/runtime.mjs +2 -1799
  341. package/dist/runtime__internal__prepared-query.d.mts +2 -2
  342. package/dist/runtime__internal__prepared-query.mjs +2 -2
  343. package/dist/{schema-differ-DpG_gnur-DFAtGezx.d.mts → schema-differ-DmP74bB8-tqHKiJ88.d.mts} +6 -6
  344. package/dist/schema-differ-DmP74bB8-tqHKiJ88.d.mts.map +1 -0
  345. package/dist/schema-ir.d.mts +2 -2
  346. package/dist/schema-ir.mjs +2 -2
  347. package/dist/schema-ir__naming.d.mts +1 -1
  348. package/dist/schema-ir__naming.mjs +1 -1
  349. package/dist/schema-ir__types.d.mts +3 -3
  350. package/dist/schema-ir__types.mjs +2 -2
  351. package/dist/{schema-verify-C_PEdlAr-Dxxjm6EM.mjs → schema-verify-C3wbdviw-DMjIubOr.mjs} +50 -8
  352. package/dist/schema-verify-C3wbdviw-DMjIubOr.mjs.map +1 -0
  353. package/dist/{serialized-index-CrgG8ct1-DG3JpHc7.d.mts → serialized-index-CrgG8ct1-DKVJ7TDX.d.mts} +4 -4
  354. package/dist/serialized-index-CrgG8ct1-DKVJ7TDX.d.mts.map +1 -0
  355. package/dist/{serialized-index-nBTwanKy-_ddEK4tk.mjs → serialized-index-DjCCnXB1-DMA7BtO2.mjs} +4 -4
  356. package/dist/serialized-index-DjCCnXB1-DMA7BtO2.mjs.map +1 -0
  357. package/dist/{sql-contract-serializer-2oBWuxTe-DKZTf2n8.mjs → sql-contract-serializer-sMY3prTx-D2BfrNxs.mjs} +41 -16
  358. package/dist/sql-contract-serializer-sMY3prTx-D2BfrNxs.mjs.map +1 -0
  359. package/dist/sql-data-type-D7M-YTTY-D2vRqDxn.mjs +400 -0
  360. package/dist/sql-data-type-D7M-YTTY-D2vRqDxn.mjs.map +1 -0
  361. package/dist/{sql-execution-plan--jKyLpe5-CMGhgO0M.d.mts → sql-execution-plan-3uxYjHyu-DLknM-Pj.d.mts} +3 -3
  362. package/dist/sql-execution-plan-3uxYjHyu-DLknM-Pj.d.mts.map +1 -0
  363. package/dist/sql-expression-B4BrhGPi.d.mts +62 -0
  364. package/dist/sql-expression-B4BrhGPi.d.mts.map +1 -0
  365. package/dist/sql-expression-CKgKznXS.mjs +137 -0
  366. package/dist/sql-expression-CKgKznXS.mjs.map +1 -0
  367. package/dist/{sql-index-ByAAE7K8-DKj2V86p.d.mts → sql-index-ByAAE7K8-Dqtn_vUL.d.mts} +4 -4
  368. package/dist/sql-index-ByAAE7K8-Dqtn_vUL.d.mts.map +1 -0
  369. package/dist/{sql-node-kEz6YFZo-v2F7delx.d.mts → sql-node-kEz6YFZo-1ogT6Cxt.d.mts} +2 -2
  370. package/dist/sql-node-kEz6YFZo-1ogT6Cxt.d.mts.map +1 -0
  371. package/dist/{sql-storage-8LqxeLAY-DH4DdUXx.d.mts → sql-storage-DeCAh5Hi-CEM-m8cs.d.mts} +19 -22
  372. package/dist/sql-storage-DeCAh5Hi-CEM-m8cs.d.mts.map +1 -0
  373. package/dist/{storage-table-DSeWszOL-CI-cItEK.d.mts → storage-table-Bf1ZjnxO-pUj6pyP0.d.mts} +17 -24
  374. package/dist/storage-table-Bf1ZjnxO-pUj6pyP0.d.mts.map +1 -0
  375. package/dist/{storage-table-ZzbR-xzQ-BRoTQE_2.mjs → storage-table-DDvN83mw-DkbBFmK9.mjs} +12 -9
  376. package/dist/storage-table-DDvN83mw-DkbBFmK9.mjs.map +1 -0
  377. package/dist/{storage-value-set-BGlj5Uus-CvZD--GG.d.mts → storage-value-set-BGlj5Uus-ny2k-0PA.d.mts} +3 -3
  378. package/dist/storage-value-set-BGlj5Uus-ny2k-0PA.d.mts.map +1 -0
  379. package/dist/transaction-state-BfXhs7D7-DhmbySW9.mjs +45 -0
  380. package/dist/transaction-state-BfXhs7D7-DhmbySW9.mjs.map +1 -0
  381. package/dist/transaction-state-DR3nKTmH-D29jmVE-.d.mts +115 -0
  382. package/dist/transaction-state-DR3nKTmH-D29jmVE-.d.mts.map +1 -0
  383. package/dist/types-B9wSEUsV.d.mts +1 -0
  384. package/dist/{types-CUsJrvEl.mjs → types-CTdSkl0s.mjs} +13 -6
  385. package/dist/types-CTdSkl0s.mjs.map +1 -0
  386. package/dist/types-CkAd8SWm.d.mts +57 -0
  387. package/dist/types-CkAd8SWm.d.mts.map +1 -0
  388. package/dist/{types-IqZMLrFC-DcH8v_u3.d.mts → types-Cq6ImLAB-RlU4jJAX.d.mts} +27 -41
  389. package/dist/types-Cq6ImLAB-RlU4jJAX.d.mts.map +1 -0
  390. package/dist/{types-YStFFkKs-D9UAmnON.d.mts → types-CuCxAQat-Dz8P4xyt.d.mts} +141 -86
  391. package/dist/types-CuCxAQat-Dz8P4xyt.d.mts.map +1 -0
  392. package/dist/types-DfKvtJwS-CrpWTGBJ.d.mts +273 -0
  393. package/dist/types-DfKvtJwS-CrpWTGBJ.d.mts.map +1 -0
  394. package/dist/{types-4YenawkP-CwaaZSid.mjs → types-DoyiTsjg-2YMhMJDA.mjs} +181 -80
  395. package/dist/types-DoyiTsjg-2YMhMJDA.mjs.map +1 -0
  396. package/dist/{types-v3qxLLxo-DCeKv7yY.d.mts → types-DriMIMNQ-BkbsW7w3.d.mts} +68 -34
  397. package/dist/types-DriMIMNQ-BkbsW7w3.d.mts.map +1 -0
  398. package/dist/{types-Dt4e_jC--COeP8xzN.mjs → types-NTQsD2MS-xcLtvKO9.mjs} +83 -17
  399. package/dist/types-NTQsD2MS-xcLtvKO9.mjs.map +1 -0
  400. package/dist/{types-CyxGtOOh-BggSa6Fe.d.mts → types-TXO7x1BA-CYYIY8NI.d.mts} +14 -14
  401. package/dist/types-TXO7x1BA-CYYIY8NI.d.mts.map +1 -0
  402. package/dist/types-ljUNyiWe.d.mts +1 -0
  403. package/dist/{unique-constraint-M5TlQnJQ-BiIHJ85k.d.mts → unique-constraint-M5TlQnJQ-qX-maNUV.d.mts} +3 -3
  404. package/dist/unique-constraint-M5TlQnJQ-qX-maNUV.d.mts.map +1 -0
  405. package/dist/{util-DQQgv2j1-D6INZaRG.mjs → util-BBgcP3gI-CpL-0VuC.mjs} +12 -3
  406. package/dist/util-BBgcP3gI-CpL-0VuC.mjs.map +1 -0
  407. package/dist/{validators-CrWD6bSP.mjs → validators-BwA7ttZM.mjs} +0 -0
  408. package/dist/validators-BwA7ttZM.mjs.map +1 -0
  409. package/dist/{validators-Belo8QqM.d.mts → validators-FJs8HvFr.d.mts} +54 -16
  410. package/dist/validators-FJs8HvFr.d.mts.map +1 -0
  411. package/dist/{value-set-derivation-hook-BhgGVtw0.d.mts → value-set-derivation-hook-3E437jPU.d.mts} +3 -3
  412. package/dist/value-set-derivation-hook-3E437jPU.d.mts.map +1 -0
  413. package/dist/{value-set-derivation-hook-Di9JZ0X7.mjs → value-set-derivation-hook-HVaxhALD.mjs} +2 -2
  414. package/dist/value-set-derivation-hook-HVaxhALD.mjs.map +1 -0
  415. package/dist/{verify-u0UTdZgD-DSAaz9rW.mjs → verify-BVk5bjdH-DhKm6hB3.mjs} +8 -7
  416. package/dist/verify-BVk5bjdH-DhKm6hB3.mjs.map +1 -0
  417. package/dist/{verify-zDRnw0Rn.d.mts → verify-DHXbuZPB.d.mts} +2 -2
  418. package/dist/verify-DHXbuZPB.d.mts.map +1 -0
  419. package/package.json +33 -22
  420. package/dist/aggregate-descriptor-registry-C7hel5O7.mjs.map +0 -1
  421. package/dist/ast-HFcfQZr-.d.mts +0 -206
  422. package/dist/ast-HFcfQZr-.d.mts.map +0 -1
  423. package/dist/ast-Lbl4VwqP.mjs +0 -325
  424. package/dist/ast-Lbl4VwqP.mjs.map +0 -1
  425. package/dist/authored-check-naming-BWBe-PVE.d.mts.map +0 -1
  426. package/dist/authored-check-naming-Hf9990DV.mjs.map +0 -1
  427. package/dist/authoring-type-constructors-Blqoa2Ua-DqvNCOb2.mjs +0 -316
  428. package/dist/authoring-type-constructors-Blqoa2Ua-DqvNCOb2.mjs.map +0 -1
  429. package/dist/canonicalization-hooks-CYnW_sGn.d.mts.map +0 -1
  430. package/dist/canonicalization-hooks-dmXkOR4a.mjs.map +0 -1
  431. package/dist/check-constraint-B7qGu6rc-HvQjjX82.d.mts.map +0 -1
  432. package/dist/codec-descriptor-registry-N0dhtKaH.mjs.map +0 -1
  433. package/dist/config-types-D9fdKG3g.d.mts.map +0 -1
  434. package/dist/config-types-gAm54C_v.mjs.map +0 -1
  435. package/dist/contract-builder-CG_tGDbB.d.mts +0 -1360
  436. package/dist/contract-builder-CG_tGDbB.d.mts.map +0 -1
  437. package/dist/contract-builder-D4a5dT7j.mjs.map +0 -1
  438. package/dist/contract-errors-BCN6RVI5-5IHBF_lg.mjs.map +0 -1
  439. package/dist/contract-view-BMR5IWk4.mjs.map +0 -1
  440. package/dist/contract-view-CPHxoAEX.d.mts.map +0 -1
  441. package/dist/contract__pack-types.d.mts +0 -2
  442. package/dist/control-D3cB5YQp.mjs +0 -1267
  443. package/dist/control-D3cB5YQp.mjs.map +0 -1
  444. package/dist/control-DTLJ1WtZ.d.mts +0 -945
  445. package/dist/control-DTLJ1WtZ.d.mts.map +0 -1
  446. package/dist/control-adapter-C99J7aEF-B7eQd7vD.d.mts.map +0 -1
  447. package/dist/control-adapter-MZJQiwcE.d.mts +0 -1
  448. package/dist/db-D18PrXKW-DvTv4JFn.d.mts.map +0 -1
  449. package/dist/ddl-types-BGdnAbXo-DKPHPUGx.mjs.map +0 -1
  450. package/dist/ddl-types-CXx4vPz6-BsgrnSUY.d.mts.map +0 -1
  451. package/dist/derived-checks-DFMRmiAu-DGfB8aS4.mjs +0 -1057
  452. package/dist/derived-checks-DFMRmiAu-DGfB8aS4.mjs.map +0 -1
  453. package/dist/derived-checks-DPdD01O0-DGqOFjs6.d.mts.map +0 -1
  454. package/dist/diff-B16bL_IR.mjs +0 -13
  455. package/dist/diff-B16bL_IR.mjs.map +0 -1
  456. package/dist/diff-DbTNVm2f.d.mts.map +0 -1
  457. package/dist/dist-C_q1_QR9.mjs.map +0 -1
  458. package/dist/dist-ZK6oeI5e.mjs.map +0 -1
  459. package/dist/dist-x6jvtkKM.mjs.map +0 -1
  460. package/dist/driver-types-BQtRkOJ0-Bv2RPSfr.d.mts.map +0 -1
  461. package/dist/entity-handle-lowering-hook-CIvRKBfa.d.mts.map +0 -1
  462. package/dist/entity-handle-lowering-hook-DwLIKNiS.mjs +0 -11
  463. package/dist/entity-handle-lowering-hook-DwLIKNiS.mjs.map +0 -1
  464. package/dist/entity-kinds-B5cUFU22.d.mts.map +0 -1
  465. package/dist/entity-kinds-D7vwoN_T-CCBwFJy0.mjs.map +0 -1
  466. package/dist/errors-B5g0xWro-mWH2C07F.mjs.map +0 -1
  467. package/dist/expression-CX5mTA-z.mjs.map +0 -1
  468. package/dist/expression-FJK6Ar-d.d.mts.map +0 -1
  469. package/dist/factories-P3qBQhO-.d.mts.map +0 -1
  470. package/dist/factories-SVor5xIT.mjs.map +0 -1
  471. package/dist/family__pack.d.mts.map +0 -1
  472. package/dist/family__pack.mjs.map +0 -1
  473. package/dist/foreign-key-C-iTPuRT-C9ip8zFx.d.mts.map +0 -1
  474. package/dist/foreign-key-materialization-CkvOzJWy.d.mts +0 -65
  475. package/dist/foreign-key-materialization-CkvOzJWy.d.mts.map +0 -1
  476. package/dist/foreign-key-materialization-Cu7-7LHl.mjs +0 -73
  477. package/dist/foreign-key-materialization-Cu7-7LHl.mjs.map +0 -1
  478. package/dist/index-C-vQOMY_.d.mts +0 -84
  479. package/dist/index-C-vQOMY_.d.mts.map +0 -1
  480. package/dist/index-C5I8D-MB.d.mts.map +0 -1
  481. package/dist/index-naming-Ct65z5Xk.d.mts.map +0 -1
  482. package/dist/index-naming-DREt6js7-CRH27yUv.mjs.map +0 -1
  483. package/dist/index-type-validation-COH4d78M.mjs +0 -17
  484. package/dist/index-type-validation-COH4d78M.mjs.map +0 -1
  485. package/dist/index-type-validation-CZ5L2lli.d.mts +0 -10
  486. package/dist/index-type-validation-CZ5L2lli.d.mts.map +0 -1
  487. package/dist/index-types-CNhHgKHi.d.mts +0 -1
  488. package/dist/index-types-DJQ_xwaE.mjs +0 -40
  489. package/dist/index-types-DJQ_xwaE.mjs.map +0 -1
  490. package/dist/index-types-DPVhsW0v-D-BikM4h.d.mts +0 -31
  491. package/dist/index-types-DPVhsW0v-D-BikM4h.d.mts.map +0 -1
  492. package/dist/interpreter-DyiUUAWh-DYdjIpiE.mjs +0 -3680
  493. package/dist/interpreter-DyiUUAWh-DYdjIpiE.mjs.map +0 -1
  494. package/dist/ir-Bghjt-FG.d.mts.map +0 -1
  495. package/dist/ir-I-xciGUH.mjs.map +0 -1
  496. package/dist/lane-query-builder.d.mts +0 -236
  497. package/dist/lane-query-builder.d.mts.map +0 -1
  498. package/dist/lane-query-builder.mjs +0 -67
  499. package/dist/lane-query-builder.mjs.map +0 -1
  500. package/dist/middleware--TtoxUiW.d.mts +0 -1
  501. package/dist/middleware-AhTz1BOW-th-Suxuf.d.mts.map +0 -1
  502. package/dist/middleware-CMr4CHNz-DHIUdxlm.mjs.map +0 -1
  503. package/dist/migration-CK4oePIo.mjs.map +0 -1
  504. package/dist/migration-CjDRZNep.d.mts.map +0 -1
  505. package/dist/naming-CV9j2pXl-KARaDReS.d.mts.map +0 -1
  506. package/dist/naming-DKr4TJd7-Cszhq9RV.mjs.map +0 -1
  507. package/dist/pack-types-BcLTpwbv.d.mts +0 -14
  508. package/dist/pack-types-BcLTpwbv.d.mts.map +0 -1
  509. package/dist/plan-BHLdb0Z7.d.mts +0 -2
  510. package/dist/plan-CDxduYaN-pLIyyJaB.d.mts.map +0 -1
  511. package/dist/plan-Dh0LbYIv-Crx5-ThG.mjs.map +0 -1
  512. package/dist/prepared-query-BJr50wPm-ChoqfJbX.mjs +0 -22
  513. package/dist/prepared-query-BJr50wPm-ChoqfJbX.mjs.map +0 -1
  514. package/dist/prepared-statement-9QpkE6JG-C430V3MO.d.mts +0 -529
  515. package/dist/prepared-statement-9QpkE6JG-C430V3MO.d.mts.map +0 -1
  516. package/dist/psl-infer-CCAD6FWA.d.mts +0 -119
  517. package/dist/psl-infer-CCAD6FWA.d.mts.map +0 -1
  518. package/dist/psl-infer-Dk5kgKre.mjs +0 -362
  519. package/dist/psl-infer-Dk5kgKre.mjs.map +0 -1
  520. package/dist/query-lane-context-Qa-eddrE-kuZ8Z86-.d.mts.map +0 -1
  521. package/dist/query-lane-context-XMvk7fmY.d.mts +0 -1
  522. package/dist/referential-action-sql-DJ9ps6-S.d.mts.map +0 -1
  523. package/dist/referential-action-sql-DSqkrySN.mjs.map +0 -1
  524. package/dist/resolve-storage-table-DZsfnzeW.mjs.map +0 -1
  525. package/dist/resolve-storage-table-Nyrgk4h8.d.mts.map +0 -1
  526. package/dist/runtime-DpKF2Yu2.d.mts.map +0 -1
  527. package/dist/runtime-tIHpGCcG.mjs.map +0 -1
  528. package/dist/runtime.mjs.map +0 -1
  529. package/dist/schema-differ-DpG_gnur-DFAtGezx.d.mts.map +0 -1
  530. package/dist/schema-verify-C_PEdlAr-Dxxjm6EM.mjs.map +0 -1
  531. package/dist/serialized-index-CrgG8ct1-DG3JpHc7.d.mts.map +0 -1
  532. package/dist/serialized-index-nBTwanKy-_ddEK4tk.mjs.map +0 -1
  533. package/dist/sql-contract-serializer-2oBWuxTe-DKZTf2n8.mjs.map +0 -1
  534. package/dist/sql-execution-plan--jKyLpe5-CMGhgO0M.d.mts.map +0 -1
  535. package/dist/sql-index-ByAAE7K8-DKj2V86p.d.mts.map +0 -1
  536. package/dist/sql-node-kEz6YFZo-v2F7delx.d.mts.map +0 -1
  537. package/dist/sql-storage-8LqxeLAY-DH4DdUXx.d.mts.map +0 -1
  538. package/dist/storage-table-DSeWszOL-CI-cItEK.d.mts.map +0 -1
  539. package/dist/storage-table-ZzbR-xzQ-BRoTQE_2.mjs.map +0 -1
  540. package/dist/storage-value-set-BGlj5Uus-CvZD--GG.d.mts.map +0 -1
  541. package/dist/timestamp-now-generator-DRXygu32-DN9Qb1uI.mjs +0 -173
  542. package/dist/timestamp-now-generator-DRXygu32-DN9Qb1uI.mjs.map +0 -1
  543. package/dist/types-4YenawkP-CwaaZSid.mjs.map +0 -1
  544. package/dist/types-B0msOnBM.d.mts +0 -1
  545. package/dist/types-BDUG29Df-LE85dIXP.d.mts +0 -161
  546. package/dist/types-BDUG29Df-LE85dIXP.d.mts.map +0 -1
  547. package/dist/types-CUsJrvEl.mjs.map +0 -1
  548. package/dist/types-CyxGtOOh-BggSa6Fe.d.mts.map +0 -1
  549. package/dist/types-Dt4e_jC--COeP8xzN.mjs.map +0 -1
  550. package/dist/types-Dwcw0F8X.d.mts +0 -1
  551. package/dist/types-IqZMLrFC-DcH8v_u3.d.mts.map +0 -1
  552. package/dist/types-UcHa2cTe.d.mts +0 -17
  553. package/dist/types-UcHa2cTe.d.mts.map +0 -1
  554. package/dist/types-YStFFkKs-D9UAmnON.d.mts.map +0 -1
  555. package/dist/types-v3qxLLxo-DCeKv7yY.d.mts.map +0 -1
  556. package/dist/unique-constraint-M5TlQnJQ-BiIHJ85k.d.mts.map +0 -1
  557. package/dist/util-DQQgv2j1-D6INZaRG.mjs.map +0 -1
  558. package/dist/validators-Belo8QqM.d.mts.map +0 -1
  559. package/dist/validators-CrWD6bSP.mjs.map +0 -1
  560. package/dist/value-set-derivation-hook-BhgGVtw0.d.mts.map +0 -1
  561. package/dist/value-set-derivation-hook-Di9JZ0X7.mjs.map +0 -1
  562. package/dist/verify-u0UTdZgD-DSAaz9rW.mjs.map +0 -1
  563. package/dist/verify-zDRnw0Rn.d.mts.map +0 -1
  564. /package/dist/{contract__pack-types.mjs → relational-core__collection-methods.mjs} +0 -0
@@ -1,1267 +0,0 @@
1
- import { u as namingOf } from "./naming-DKr4TJd7-Cszhq9RV.mjs";
2
- import { t as sqlContractCanonicalizationHooks } from "./canonicalization-hooks-dmXkOR4a.mjs";
3
- import { c as StorageTable } from "./storage-table-ZzbR-xzQ-BRoTQE_2.mjs";
4
- import { l as isStorageTypeInstance } from "./types-CUsJrvEl.mjs";
5
- import { c as SqlSchemaIR, n as RelationalSchemaNodeKind, u as SqlTableIR } from "./types-4YenawkP-CwaaZSid.mjs";
6
- import { t as sqlEmission } from "./dist-ZK6oeI5e.mjs";
7
- import { i as sqlFamilyPslBlockDescriptors, n as sqlFamilyAuthoringTypes, r as sqlFamilyEntityTypes, t as sqlFamilyAuthoringFieldPresets } from "./authoring-type-constructors-Blqoa2Ua-DqvNCOb2.mjs";
8
- import { n as classifyDiffSubjectGranularity, o as extractCodecControlHooks, s as verifySqlSchemaByDiff, t as classifyDiffEntityKind } from "./schema-verify-C_PEdlAr-Dxxjm6EM.mjs";
9
- import { t as sqlFamilyError } from "./errors-B5g0xWro-mWH2C07F.mjs";
10
- import { t as SqlContractSerializer } from "./sql-contract-serializer-2oBWuxTe-DKZTf2n8.mjs";
11
- import { t as collectSupportedCodecTypeIds } from "./verify-u0UTdZgD-DSAaz9rW.mjs";
12
- import { isPlainRecord } from "@prisma/orm-framework/components/ir";
13
- import { InternalError } from "@prisma/orm-framework/utils/internal-error";
14
- import { effectiveControlPolicy } from "@prisma/orm-framework/contract/types";
15
- import { ifDefined } from "@prisma/orm-framework/utils/defined";
16
- import { blindCast } from "@prisma/orm-framework/utils/casts";
17
- import { notOk, ok } from "@prisma/orm-framework/utils/result";
18
- import { APP_SPACE_ID, SchemaTreeNode, VERIFY_CODE_HASH_MISMATCH, VERIFY_CODE_MARKER_MISSING, VERIFY_CODE_TARGET_MISMATCH, assembleAuthoringContributions } from "@prisma/orm-framework/components/control";
19
- import { assertDescriptorSelfConsistency } from "@prisma/orm-toolchain/migration-tools/spaces";
20
- //#region ../../../2-sql/9-family/dist/control.mjs
21
- function isDdlStatement(sqlStatement) {
22
- const trimmed = sqlStatement.trim().toLowerCase();
23
- return trimmed.startsWith("create ") || trimmed.startsWith("alter ") || trimmed.startsWith("drop ");
24
- }
25
- function hasExecuteSteps(operation) {
26
- const candidate = operation;
27
- if (!("execute" in candidate) || !Array.isArray(candidate["execute"])) return false;
28
- return candidate["execute"].every((step) => typeof step === "object" && step !== null && "sql" in step);
29
- }
30
- /**
31
- * Extracts a best-effort SQL DDL preview for CLI plan output.
32
- * Presentation-only: never used to decide migration correctness.
33
- */
34
- function extractSqlDdl(operations) {
35
- const statements = [];
36
- for (const operation of operations) {
37
- if (!hasExecuteSteps(operation)) continue;
38
- for (const step of operation.execute) if (typeof step.sql === "string" && isDdlStatement(step.sql)) statements.push(step.sql.trim());
39
- }
40
- return statements;
41
- }
42
- /**
43
- * Wraps `extractSqlDdl` into the family-agnostic `OperationPreview` shape.
44
- * Each statement carries `language: 'sql'`.
45
- */
46
- function sqlOperationsToPreview(operations) {
47
- return { statements: extractSqlDdl(operations).map((text) => ({
48
- text,
49
- language: "sql"
50
- })) };
51
- }
52
- function missingDescriptorOperationError(targetId, operation) {
53
- return sqlFamilyError("CONTRACT.PACK_CONTRIBUTION_INVALID", `SQL target "${targetId}" is missing the required ${operation} descriptor operation`, {
54
- why: `The target descriptor does not contribute the ${operation} operation the SQL family requires for this call.`,
55
- fix: `Use a target package whose control descriptor implements ${operation}.`,
56
- meta: {
57
- targetId,
58
- operation
59
- }
60
- });
61
- }
62
- function extractCodecTypeIdsFromContract(contract) {
63
- const typeIds = /* @__PURE__ */ new Set();
64
- if (typeof contract === "object" && contract !== null && "storage" in contract && typeof contract.storage === "object" && contract.storage !== null && "namespaces" in contract.storage && typeof contract.storage.namespaces === "object" && contract.storage.namespaces !== null) {
65
- const namespaces = contract.storage.namespaces;
66
- for (const ns of Object.values(namespaces)) {
67
- const tbls = ns.entries["table"];
68
- if (typeof tbls !== "object" || tbls === null) continue;
69
- for (const table of Object.values(tbls)) if (typeof table === "object" && table !== null && "columns" in table && typeof table.columns === "object" && table.columns !== null) {
70
- const columns = table.columns;
71
- for (const column of Object.values(columns)) if (column && typeof column === "object" && "codecId" in column && typeof column.codecId === "string") typeIds.add(column.codecId);
72
- }
73
- }
74
- }
75
- return Array.from(typeIds).sort();
76
- }
77
- function createVerifyResult(options) {
78
- const contract = { storageHash: options.contractStorageHash };
79
- if (options.contractProfileHash) contract.profileHash = options.contractProfileHash;
80
- const target = { expected: options.expectedTargetId };
81
- if (options.actualTargetId) target.actual = options.actualTargetId;
82
- const meta = { contractPath: options.contractPath };
83
- if (options.configPath) meta.configPath = options.configPath;
84
- const result = {
85
- ok: options.ok,
86
- summary: options.summary,
87
- contract,
88
- target,
89
- meta,
90
- timings: { total: options.totalTime }
91
- };
92
- if (options.code) result.code = options.code;
93
- if (options.marker) result.marker = {
94
- storageHash: options.marker.storageHash,
95
- profileHash: options.marker.profileHash
96
- };
97
- if (options.missingCodecs) result.missingCodecs = options.missingCodecs;
98
- if (options.codecCoverageSkipped) result.codecCoverageSkipped = options.codecCoverageSkipped;
99
- return result;
100
- }
101
- function buildSqlTypeMetadataRegistry(options) {
102
- const { target, adapter, extensions } = options;
103
- const registry = /* @__PURE__ */ new Map();
104
- const targetId = adapter.targetId;
105
- const descriptors = [
106
- target,
107
- adapter,
108
- ...extensions
109
- ];
110
- for (const descriptor of descriptors) {
111
- const storageTypes = descriptor.types?.storage;
112
- if (!storageTypes) continue;
113
- for (const storageType of storageTypes) if (storageType.familyId === "sql" && storageType.targetId === targetId) registry.set(storageType.typeId, {
114
- typeId: storageType.typeId,
115
- familyId: "sql",
116
- targetId: storageType.targetId,
117
- ...storageType.nativeType !== void 0 ? { nativeType: storageType.nativeType } : {}
118
- });
119
- }
120
- return registry;
121
- }
122
- /**
123
- * Builds a map from each extension id to the set of extension ids it
124
- * transitively depends on. Uses the same declared-dependency data that
125
- * `buildExtensionLoadOrder` in control-stack uses.
126
- */
127
- function buildTransitiveDependsOnMap(extensions) {
128
- const directDeps = /* @__PURE__ */ new Map();
129
- for (const ext of extensions) {
130
- const packs = ext.contractSpace?.contractJson?.extensions;
131
- const deps = packs !== null && typeof packs === "object" ? Object.keys(packs) : [];
132
- directDeps.set(ext.id, deps);
133
- }
134
- const result = /* @__PURE__ */ new Map();
135
- const resolve = (id, visiting) => {
136
- const cached = result.get(id);
137
- if (cached !== void 0) return cached;
138
- const set = /* @__PURE__ */ new Set();
139
- result.set(id, set);
140
- for (const depId of directDeps.get(id) ?? []) {
141
- set.add(depId);
142
- if (!visiting.has(depId)) {
143
- visiting.add(depId);
144
- for (const transitive of resolve(depId, visiting)) set.add(transitive);
145
- visiting.delete(depId);
146
- }
147
- }
148
- return set;
149
- };
150
- for (const ext of extensions) resolve(ext.id, /* @__PURE__ */ new Set([ext.id]));
151
- return result;
152
- }
153
- /**
154
- * Asserts that no cross-space FK in any extension points against the
155
- * dependency direction.
156
- *
157
- * A cross-space FK (target.spaceId present) from extension A pointing at
158
- * space B is a violation when B depends on A (directly or transitively),
159
- * because that means A is pointing "upward" against the dependency arrows
160
- * established by the extension load order.
161
- *
162
- * Throws with a diagnostic naming the violating extension (source), the
163
- * target space, and the direction violation.
164
- */
165
- function isObjectRecord(v) {
166
- return typeof v === "object" && v !== null;
167
- }
168
- function assertNoCrossSpaceFkReverseReferences(extensions) {
169
- const dependsOnMap = buildTransitiveDependsOnMap(extensions);
170
- for (const ext of extensions) {
171
- const namespaces = ext.contractSpace?.contractJson?.storage?.namespaces;
172
- if (!isObjectRecord(namespaces)) continue;
173
- for (const ns of Object.values(namespaces)) {
174
- if (!isObjectRecord(ns)) continue;
175
- const entries = ns["entries"];
176
- if (!isObjectRecord(entries)) continue;
177
- for (const slot of Object.values(entries)) {
178
- if (!isObjectRecord(slot)) continue;
179
- for (const table of Object.values(slot)) {
180
- if (!isObjectRecord(table)) continue;
181
- const foreignKeys = table["foreignKeys"];
182
- if (!Array.isArray(foreignKeys)) continue;
183
- for (const fk of foreignKeys) {
184
- if (!isObjectRecord(fk)) continue;
185
- const target = fk["target"];
186
- if (!isObjectRecord(target)) continue;
187
- if (target["spaceId"] === void 0) continue;
188
- const targetSpaceId = target["spaceId"];
189
- if (typeof targetSpaceId !== "string") continue;
190
- if (dependsOnMap.get(targetSpaceId)?.has(ext.id)) throw sqlFamilyError("CONTRACT.FOREIGN_KEY_INVALID", `Cross-space FK reverse-reference detected: extension "${ext.id}" has a cross-space FK targeting space "${targetSpaceId}", but "${targetSpaceId}" depends on "${ext.id}". Cross-space FKs must follow the dependency direction (a space can only reference spaces it depends on, not spaces that depend on it).`, {
191
- why: "The foreign key points against the contract-space dependency direction.",
192
- fix: "Move the foreign key to the depending space, or restructure the extension dependencies so the referencing space depends on the referenced one.",
193
- meta: {
194
- extensionId: ext.id,
195
- targetSpaceId
196
- }
197
- });
198
- }
199
- }
200
- }
201
- }
202
- }
203
- }
204
- function createSqlFamilyInstance(stack) {
205
- if (!stack.adapter) throw new InternalError("SQL family requires an adapter descriptor in ControlStack");
206
- const target = stack.target;
207
- const adapter = stack.adapter;
208
- const extensions = stack.extensions;
209
- for (const extension of extensions) if (extension.contractSpace) {
210
- const { contractJson, headRef } = extension.contractSpace;
211
- assertDescriptorSelfConsistency({
212
- extensionId: extension.id,
213
- target: contractJson.target,
214
- targetFamily: contractJson.targetFamily,
215
- storage: contractJson.storage,
216
- headRefHash: headRef.hash,
217
- ...sqlContractCanonicalizationHooks
218
- });
219
- }
220
- assertNoCrossSpaceFkReverseReferences(extensions);
221
- const { codecTypeImports, extensionIds } = stack;
222
- const typeMetadataRegistry = buildSqlTypeMetadataRegistry({
223
- target,
224
- adapter,
225
- extensions
226
- });
227
- let controlAdapter;
228
- const getControlAdapter = () => controlAdapter ??= adapter.create(stack);
229
- const targetSerializer = target.contractSerializer;
230
- const targetInferPslContract = blindCast(target).inferPslContract;
231
- const diffSchema = blindCast(target).diffSchema;
232
- const targetGranularityOf = blindCast(target).classifySubjectGranularity;
233
- const targetEntityKindOf = blindCast(target).classifyEntityKind;
234
- const describedContracts = extensions.flatMap((extension) => extension.contractSpace ? [{
235
- spaceId: extension.id,
236
- contract: extension.contractSpace.contractJson
237
- }] : []);
238
- const deserializeWithTargetSerializer = (contractOrJson) => {
239
- const serializer = targetSerializer ?? new SqlContractSerializer();
240
- const json = targetSerializer !== void 0 && !isPlainRecord(contractOrJson) ? targetSerializer.serializeContract(blindCast(contractOrJson)) : contractOrJson;
241
- return serializer.deserializeContract(json);
242
- };
243
- return {
244
- familyId: "sql",
245
- codecTypeImports,
246
- extensionIds,
247
- typeMetadataRegistry,
248
- deserializeContract(contractJson) {
249
- return deserializeWithTargetSerializer(contractJson);
250
- },
251
- async verify(verifyOptions) {
252
- const { driver, contract: rawContract, expectedTargetId, contractPath, configPath } = verifyOptions;
253
- const startTime = Date.now();
254
- const contract = deserializeWithTargetSerializer(rawContract);
255
- const contractStorageHash = contract.storage.storageHash;
256
- const contractProfileHash = contract.profileHash;
257
- const contractTarget = contract.target;
258
- const marker = await getControlAdapter().readMarker(driver, APP_SPACE_ID);
259
- let missingCodecs;
260
- let codecCoverageSkipped = false;
261
- const supportedTypeIds = collectSupportedCodecTypeIds([
262
- adapter,
263
- target,
264
- ...extensions
265
- ]);
266
- if (supportedTypeIds.length === 0) codecCoverageSkipped = true;
267
- else {
268
- const supportedSet = new Set(supportedTypeIds);
269
- const missing = extractCodecTypeIdsFromContract(contract).filter((id) => !supportedSet.has(id));
270
- if (missing.length > 0) missingCodecs = missing;
271
- }
272
- if (!marker) return createVerifyResult({
273
- ok: false,
274
- code: VERIFY_CODE_MARKER_MISSING,
275
- summary: "Marker missing",
276
- contractStorageHash,
277
- expectedTargetId,
278
- contractPath,
279
- totalTime: Date.now() - startTime,
280
- ...contractProfileHash ? { contractProfileHash } : {},
281
- ...missingCodecs ? { missingCodecs } : {},
282
- ...codecCoverageSkipped ? { codecCoverageSkipped } : {},
283
- ...configPath ? { configPath } : {}
284
- });
285
- if (contractTarget !== expectedTargetId) return createVerifyResult({
286
- ok: false,
287
- code: VERIFY_CODE_TARGET_MISMATCH,
288
- summary: "Target mismatch",
289
- contractStorageHash,
290
- marker,
291
- expectedTargetId,
292
- actualTargetId: contractTarget,
293
- contractPath,
294
- totalTime: Date.now() - startTime,
295
- ...contractProfileHash ? { contractProfileHash } : {},
296
- ...missingCodecs ? { missingCodecs } : {},
297
- ...codecCoverageSkipped ? { codecCoverageSkipped } : {},
298
- ...configPath ? { configPath } : {}
299
- });
300
- if (marker.storageHash !== contractStorageHash) return createVerifyResult({
301
- ok: false,
302
- code: VERIFY_CODE_HASH_MISMATCH,
303
- summary: "Hash mismatch",
304
- contractStorageHash,
305
- marker,
306
- expectedTargetId,
307
- contractPath,
308
- totalTime: Date.now() - startTime,
309
- ...contractProfileHash ? { contractProfileHash } : {},
310
- ...missingCodecs ? { missingCodecs } : {},
311
- ...codecCoverageSkipped ? { codecCoverageSkipped } : {},
312
- ...configPath ? { configPath } : {}
313
- });
314
- if (contractProfileHash && marker.profileHash !== contractProfileHash) return createVerifyResult({
315
- ok: false,
316
- code: VERIFY_CODE_HASH_MISMATCH,
317
- summary: "Hash mismatch",
318
- contractStorageHash,
319
- contractProfileHash,
320
- marker,
321
- expectedTargetId,
322
- contractPath,
323
- totalTime: Date.now() - startTime,
324
- ...missingCodecs ? { missingCodecs } : {},
325
- ...codecCoverageSkipped ? { codecCoverageSkipped } : {},
326
- ...configPath ? { configPath } : {}
327
- });
328
- return createVerifyResult({
329
- ok: true,
330
- summary: "Database matches contract",
331
- contractStorageHash,
332
- marker,
333
- expectedTargetId,
334
- contractPath,
335
- totalTime: Date.now() - startTime,
336
- ...contractProfileHash ? { contractProfileHash } : {},
337
- ...missingCodecs ? { missingCodecs } : {},
338
- ...codecCoverageSkipped ? { codecCoverageSkipped } : {},
339
- ...configPath ? { configPath } : {}
340
- });
341
- },
342
- verifySchema(options) {
343
- const contract = deserializeWithTargetSerializer(options.contract);
344
- if (!diffSchema) throw missingDescriptorOperationError(target.targetId, "diffSchema");
345
- if (!targetGranularityOf) throw missingDescriptorOperationError(target.targetId, "classifySubjectGranularity");
346
- return verifySqlSchemaByDiff({
347
- contract,
348
- schema: options.schema,
349
- strict: options.strict,
350
- frameworkComponents: options.frameworkComponents,
351
- diffSchema,
352
- granularityOf: targetGranularityOf
353
- });
354
- },
355
- /**
356
- * Classifies a diff issue's subject granularity on demand, by resolving
357
- * its node's `nodeKind` through the target's classifier — the
358
- * {@link import('@internal/framework-components/control').SchemaSubjectClassifierCapable}
359
- * capability. Framework consumers spanning contract spaces (the
360
- * migration aggregate's unclaimed-elements sweep) detect and call this
361
- * instead of reaching into the concrete schema-IR node, which they
362
- * cannot read; nothing is stamped on the issue or the node.
363
- */
364
- classifySubjectGranularity(issue) {
365
- if (!targetGranularityOf) throw missingDescriptorOperationError(target.targetId, "classifySubjectGranularity");
366
- return classifyDiffSubjectGranularity(issue, targetGranularityOf);
367
- },
368
- /**
369
- * Classifies a diff issue's subject storage `entityKind` on demand, by
370
- * resolving its node's `nodeKind` through the target's classifier —
371
- * the sibling of `classifySubjectGranularity` above, and part of the
372
- * same {@link import('@internal/framework-components/control').SchemaSubjectClassifierCapable}
373
- * capability.
374
- */
375
- classifyEntityKind(issue) {
376
- if (!targetEntityKindOf) throw missingDescriptorOperationError(target.targetId, "classifyEntityKind");
377
- return classifyDiffEntityKind(issue, targetEntityKindOf);
378
- },
379
- async sign(options) {
380
- const { driver, contract: contractInput, contractPath, configPath } = options;
381
- const startTime = Date.now();
382
- const contract = deserializeWithTargetSerializer(contractInput);
383
- const contractStorageHash = contract.storage.storageHash;
384
- const contractProfileHash = "profileHash" in contract && typeof contract.profileHash === "string" ? contract.profileHash : contractStorageHash;
385
- const contractTarget = contract.target;
386
- const controlAdapter = getControlAdapter();
387
- const lowererContext = { contract };
388
- for (const query of controlAdapter.bootstrapSignMarkerQueries()) {
389
- const lowered = await controlAdapter.lowerToExecuteRequest(query, lowererContext);
390
- await driver.query(lowered.sql, lowered.params);
391
- }
392
- const existingMarker = await controlAdapter.readMarker(driver, APP_SPACE_ID);
393
- let markerCreated = false;
394
- let markerUpdated = false;
395
- let previousHashes;
396
- if (!existingMarker) {
397
- await controlAdapter.insertMarker(driver, APP_SPACE_ID, {
398
- storageHash: contractStorageHash,
399
- profileHash: contractProfileHash
400
- });
401
- markerCreated = true;
402
- } else {
403
- const existingStorageHash = existingMarker.storageHash;
404
- const existingProfileHash = existingMarker.profileHash;
405
- if (!(existingStorageHash === contractStorageHash) || !(existingProfileHash === contractProfileHash)) {
406
- previousHashes = {
407
- storageHash: existingStorageHash,
408
- profileHash: existingProfileHash
409
- };
410
- if (!await controlAdapter.updateMarker(driver, APP_SPACE_ID, existingStorageHash, {
411
- storageHash: contractStorageHash,
412
- profileHash: contractProfileHash
413
- })) throw sqlFamilyError("MIGRATION.MARKER_CAS_FAILURE", "CAS conflict: marker was modified by another process during sign", {
414
- why: "Another process updated the contract marker between the read and the compare-and-swap write.",
415
- fix: "Re-run the sign command; if it keeps failing, make sure only one migration process runs at a time.",
416
- meta: { space: APP_SPACE_ID }
417
- });
418
- markerUpdated = true;
419
- }
420
- }
421
- let summary;
422
- if (markerCreated) summary = "Database signed (marker created)";
423
- else if (markerUpdated) summary = `Database signed (marker updated from ${previousHashes?.storageHash ?? "unknown"})`;
424
- else summary = "Database already signed with this contract";
425
- const totalTime = Date.now() - startTime;
426
- return {
427
- ok: true,
428
- summary,
429
- contract: {
430
- storageHash: contractStorageHash,
431
- profileHash: contractProfileHash
432
- },
433
- target: {
434
- expected: contractTarget,
435
- actual: contractTarget
436
- },
437
- marker: {
438
- created: markerCreated,
439
- updated: markerUpdated,
440
- ...previousHashes ? { previous: previousHashes } : {}
441
- },
442
- meta: {
443
- contractPath,
444
- ...configPath ? { configPath } : {}
445
- },
446
- timings: { total: totalTime }
447
- };
448
- },
449
- async readMarker(options) {
450
- return getControlAdapter().readMarker(options.driver, options.space);
451
- },
452
- async readAllMarkers(options) {
453
- return getControlAdapter().readAllMarkers(options.driver);
454
- },
455
- async readLedger(options) {
456
- return getControlAdapter().readLedger(options.driver, options.space);
457
- },
458
- async initMarker(options) {
459
- return getControlAdapter().initMarker(options.driver, options.space, options.destination);
460
- },
461
- async updateMarker(options) {
462
- return getControlAdapter().updateMarker(options.driver, options.space, options.expectedFrom, options.destination);
463
- },
464
- async writeLedgerEntry(options) {
465
- return getControlAdapter().writeLedgerEntry(options.driver, options.space, options.entry);
466
- },
467
- async introspect(options) {
468
- return getControlAdapter().introspect(options.driver, options.contract);
469
- },
470
- inferPslContract(schemaIR) {
471
- if (!targetInferPslContract) throw sqlFamilyError("CONTRACT.INFER_UNSUPPORTED", `Target "${target.targetId}" does not support contract infer (no inferPslContract on its descriptor).`, {
472
- why: "The target descriptor does not provide the inferPslContract hook, so a PSL contract cannot be inferred from the database schema.",
473
- fix: "Use a target package that supports contract infer, or author the contract instead of inferring it.",
474
- meta: { targetId: target.targetId }
475
- });
476
- return targetInferPslContract(schemaIR, describedContracts);
477
- },
478
- lowerAst(ast, context) {
479
- return getControlAdapter().lowerToExecuteRequest(ast, context);
480
- },
481
- bootstrapControlTableQueries() {
482
- return getControlAdapter().bootstrapControlTableQueries();
483
- },
484
- toOperationPreview(operations) {
485
- return sqlOperationsToPreview(operations);
486
- },
487
- toSchemaView(schema) {
488
- const root = blindCast(schema);
489
- const namespaceEntries = root.namespaces !== void 0 ? Object.entries(root.namespaces).map(([namespaceKey, namespace]) => [namespaceKey, namespace.tables]) : [[void 0, root.tables ?? {}]];
490
- const qualify = namespaceEntries.length > 1;
491
- const tableNodes = namespaceEntries.flatMap(([namespaceKey, tables]) => Object.entries(tables).map(([tableName, table]) => [
492
- qualify && namespaceKey !== void 0 ? `${namespaceKey}.${tableName}` : tableName,
493
- tableName,
494
- table
495
- ])).map(([displayName, tableName, table]) => {
496
- const children = [];
497
- const columnNodes = [];
498
- for (const [columnName, column] of Object.entries(table.columns)) {
499
- const label = `${columnName}: ${column.nativeType} (${column.nullable ? "nullable" : "not nullable"})`;
500
- columnNodes.push(new SchemaTreeNode({
501
- kind: "field",
502
- id: `column-${displayName}-${columnName}`,
503
- label,
504
- meta: {
505
- nativeType: column.nativeType,
506
- nullable: column.nullable,
507
- ...ifDefined("default", column.default)
508
- }
509
- }));
510
- }
511
- if (columnNodes.length > 0) children.push(new SchemaTreeNode({
512
- kind: "collection",
513
- id: `columns-${displayName}`,
514
- label: "columns",
515
- children: columnNodes
516
- }));
517
- if (table.primaryKey) {
518
- const pkColumns = table.primaryKey.columns.join(", ");
519
- children.push(new SchemaTreeNode({
520
- kind: "index",
521
- id: `primary-key-${displayName}`,
522
- label: `primary key: ${pkColumns}`,
523
- meta: {
524
- columns: table.primaryKey.columns,
525
- ...table.primaryKey.name ? { name: table.primaryKey.name } : {}
526
- }
527
- }));
528
- }
529
- for (const unique of table.uniques) {
530
- const name = unique.name ?? `${tableName}_${unique.columns.join("_")}_unique`;
531
- const label = `unique ${name}`;
532
- children.push(new SchemaTreeNode({
533
- kind: "index",
534
- id: `unique-${displayName}-${name}`,
535
- label,
536
- meta: {
537
- columns: unique.columns,
538
- unique: true
539
- }
540
- }));
541
- }
542
- for (const index of table.indexes) {
543
- const name = index.name;
544
- const label = index.unique ? `unique index ${name}` : `index ${name}`;
545
- children.push(new SchemaTreeNode({
546
- kind: "index",
547
- id: `index-${displayName}-${name}`,
548
- label,
549
- meta: {
550
- columns: index.columns,
551
- unique: index.unique
552
- }
553
- }));
554
- }
555
- const tableMeta = {};
556
- if (table.primaryKey) {
557
- tableMeta["primaryKey"] = table.primaryKey.columns;
558
- if (table.primaryKey.name) tableMeta["primaryKeyName"] = table.primaryKey.name;
559
- }
560
- if (table.foreignKeys.length > 0) tableMeta["foreignKeys"] = table.foreignKeys.map((fk) => ({
561
- columns: fk.columns,
562
- referencedTable: fk.referencedTable,
563
- referencedColumns: fk.referencedColumns,
564
- ...fk.name ? { name: fk.name } : {}
565
- }));
566
- return new SchemaTreeNode({
567
- kind: "entity",
568
- id: `table-${displayName}`,
569
- label: `table ${displayName}`,
570
- ...Object.keys(tableMeta).length > 0 ? { meta: tableMeta } : {},
571
- ...children.length > 0 ? { children } : {}
572
- });
573
- });
574
- return { root: new SchemaTreeNode({
575
- kind: "root",
576
- id: "sql-schema",
577
- label: "database",
578
- ...tableNodes.length > 0 ? { children: tableNodes } : {}
579
- }) };
580
- }
581
- };
582
- }
583
- var SqlFamilyDescriptor = class {
584
- kind = "family";
585
- id = "sql";
586
- familyId = "sql";
587
- version = "0.0.1";
588
- emission = sqlEmission;
589
- authoring = {
590
- field: sqlFamilyAuthoringFieldPresets,
591
- type: sqlFamilyAuthoringTypes,
592
- entityTypes: sqlFamilyEntityTypes,
593
- pslBlockDescriptors: sqlFamilyPslBlockDescriptors
594
- };
595
- create(stack) {
596
- return createSqlFamilyInstance(stack);
597
- }
598
- };
599
- function convertColumn(name, column, storageTypes, expandNativeType, renderDefault, resolveDefault) {
600
- const resolved = resolveColumnTypeMetadata(column, storageTypes);
601
- const baseNativeType = expandNativeType ? expandNativeType({
602
- nativeType: resolved.nativeType,
603
- codecId: resolved.codecId,
604
- ...ifDefined("typeParams", resolved.typeParams)
605
- }) : resolved.nativeType;
606
- const nativeType = baseNativeType;
607
- const resolvedNativeType = column.many ? `${baseNativeType}[]` : baseNativeType;
608
- const rawColumnDefault = column.default ?? void 0;
609
- const resolvedColumnDefault = rawColumnDefault !== void 0 && resolveDefault ? resolveDefault(rawColumnDefault, resolvedNativeType) : rawColumnDefault;
610
- return {
611
- name,
612
- nativeType,
613
- nullable: column.nullable,
614
- ...ifDefined("many", column.many),
615
- ...ifDefined("default", column.default != null && renderDefault ? renderDefault(column.default, column) : void 0),
616
- resolvedNativeType,
617
- ...ifDefined("resolvedDefault", resolvedColumnDefault),
618
- codecRef: buildColumnCodecRef(resolved, column.many),
619
- codecBaseNativeType: resolved.nativeType,
620
- ...column.typeRef !== void 0 ? { codecNamedType: true } : {}
621
- };
622
- }
623
- /**
624
- * Builds the column's `CodecRef` from its resolved (post-`typeRef`) codec
625
- * identity — the same construction the query AST and the migration DDL
626
- * renderer already use (TML-2456, TML-2918).
627
- */
628
- function buildColumnCodecRef(resolved, many) {
629
- return {
630
- codecId: resolved.codecId,
631
- ...ifDefined("typeParams", resolved.typeParams !== void 0 ? blindCast(resolved.typeParams) : void 0),
632
- ...ifDefined("many", many)
633
- };
634
- }
635
- function resolveColumnTypeMetadata(column, storageTypes) {
636
- if (!column.typeRef) return column;
637
- const referenced = storageTypes[column.typeRef];
638
- if (!referenced) throw sqlFamilyError("CONTRACT.TYPE_UNKNOWN", `Column references storage type "${column.typeRef}" but it is not defined in storage.types.`, {
639
- why: "The column typeRef does not resolve to any entry in the contract storage.types map.",
640
- fix: "Regenerate the contract from its authoring source; do not hand-edit contract JSON.",
641
- meta: { typeRef: column.typeRef }
642
- });
643
- if (isStorageTypeInstance(referenced)) return {
644
- codecId: referenced.codecId,
645
- nativeType: referenced.nativeType,
646
- typeParams: referenced.typeParams
647
- };
648
- throw new InternalError(`Storage type "${column.typeRef}" has an unknown polymorphic kind; expected a codec-typed StorageTypeInstance.`);
649
- }
650
- function convertCheck(check, tableName, tableColumns) {
651
- return {
652
- naming: namingOf(check.name, check.prefix),
653
- expression: check.expression,
654
- dependsOn: flatColumnDependsOn(tableName, tableColumns)
655
- };
656
- }
657
- function convertUnique(unique, tableName) {
658
- return {
659
- columns: unique.columns,
660
- ...ifDefined("name", unique.name),
661
- dependsOn: flatColumnDependsOn(tableName, unique.columns)
662
- };
663
- }
664
- function convertIndex(index, tableName, tableColumns) {
665
- const base = {
666
- naming: namingOf(index.name, index.prefix),
667
- where: index.where,
668
- unique: index.unique,
669
- partial: index.where !== void 0,
670
- type: index.type,
671
- options: index.options,
672
- annotations: void 0,
673
- dependsOn: flatColumnDependsOn(tableName, index.columns ?? tableColumns)
674
- };
675
- return index.expression !== void 0 ? {
676
- ...base,
677
- expression: index.expression
678
- } : {
679
- ...base,
680
- columns: index.columns ?? []
681
- };
682
- }
683
- /**
684
- * The referenced table's chain in the flat (single-schema) tree
685
- * `contractToSchemaIR`/`contractNamespaceToSchemaIR` build: the root
686
- * (`SqlSchemaIR`, fixed `'database'` id) followed by the table's own id.
687
- * Postgres discards this when it re-derives the FK against its own
688
- * multi-schema tree shape (`contractToPostgresDatabaseSchemaNode`); SQLite's
689
- * flat tree uses it as-is.
690
- */
691
- function flatSchemaDependsOn(tableName) {
692
- return [{
693
- nodeKind: RelationalSchemaNodeKind.schema,
694
- id: "database"
695
- }, {
696
- nodeKind: RelationalSchemaNodeKind.table,
697
- id: tableName
698
- }];
699
- }
700
- /**
701
- * The chains from a table-child object (foreign key, index, unique, primary
702
- * key) to each of the own columns it is built on, in the flat tree. Dropping
703
- * a covered column auto-drops the object, so the object's drop must precede
704
- * the column's; the graph derives that direction from these edges.
705
- */
706
- function flatColumnDependsOn(tableName, columns) {
707
- return columns.map((column) => [
708
- {
709
- nodeKind: RelationalSchemaNodeKind.schema,
710
- id: "database"
711
- },
712
- {
713
- nodeKind: RelationalSchemaNodeKind.table,
714
- id: tableName
715
- },
716
- {
717
- nodeKind: RelationalSchemaNodeKind.column,
718
- id: `column:${column}`
719
- }
720
- ]);
721
- }
722
- /**
723
- * The FK's referenced-namespace identity comes from the target's namespace
724
- * node, not the raw namespace-id string. An unbound target namespace stamps
725
- * no `referencedSchema` at all — the FK node's id renders the absence as the
726
- * empty segment, which is what flat (single-schema) introspection produces,
727
- * so both diff sides' FK ids meet by construction. A bound namespace (or a
728
- * cross-space target whose namespace lives in another contract's storage)
729
- * stamps its coordinate verbatim; namespaced targets (Postgres) resolve the
730
- * real DDL schema downstream.
731
- *
732
- * `dependsOn` carries the referenced table (created before the FK, dropped
733
- * after it) plus the FK's own columns (dropped after the FK, since dropping a
734
- * column auto-drops the FK built on it).
735
- */
736
- function convertForeignKey(fk, storage) {
737
- const targetIsUnbound = storage.namespaces[fk.target.namespaceId]?.isUnbound === true;
738
- return {
739
- columns: fk.source.columns,
740
- referencedTable: fk.target.tableName,
741
- ...targetIsUnbound ? {} : { referencedSchema: fk.target.namespaceId },
742
- referencedColumns: fk.target.columns,
743
- ...ifDefined("name", fk.name),
744
- ...ifDefined("onDelete", fk.onDelete),
745
- ...ifDefined("onUpdate", fk.onUpdate),
746
- dependsOn: [flatSchemaDependsOn(fk.target.tableName), ...flatColumnDependsOn(fk.source.tableName, fk.source.columns)]
747
- };
748
- }
749
- function convertTable(name, table, storageTypes, expandNativeType, renderDefault, resolveDefault, storage) {
750
- const columns = {};
751
- for (const [colName, colDef] of Object.entries(table.columns)) columns[colName] = convertColumn(colName, colDef, storageTypes, expandNativeType, renderDefault, resolveDefault);
752
- const checks = table.checks && table.checks.length > 0 ? table.checks.map((c) => convertCheck(c, name, Object.keys(table.columns))) : void 0;
753
- return new SqlTableIR({
754
- name,
755
- columns,
756
- ...ifDefined("primaryKey", table.primaryKey !== void 0 ? {
757
- columns: table.primaryKey.columns,
758
- ...ifDefined("name", table.primaryKey.name),
759
- dependsOn: flatColumnDependsOn(name, table.primaryKey.columns)
760
- } : void 0),
761
- foreignKeys: table.foreignKeys.map((fk) => convertForeignKey(fk, storage)),
762
- uniques: table.uniques.map((u) => convertUnique(u, name)),
763
- indexes: table.indexes.map((i) => convertIndex(i, name, Object.keys(table.columns))),
764
- ...ifDefined("checks", checks)
765
- });
766
- }
767
- /**
768
- * Detects destructive changes between two contract storages.
769
- *
770
- * The additive-only planner silently ignores removals (tables, columns).
771
- * This function detects those removals so callers can report them as conflicts
772
- * rather than silently producing an empty plan.
773
- *
774
- * Returns an empty array if no destructive changes are found.
775
- */
776
- function detectDestructiveChanges(from, to) {
777
- if (!from) return [];
778
- const hasOwn = (value, key) => Object.hasOwn(value, key);
779
- const conflicts = [];
780
- const namespaceIds = [.../* @__PURE__ */ new Set([...Object.keys(from.namespaces), ...Object.keys(to.namespaces)])].sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
781
- for (const namespaceId of namespaceIds) {
782
- const fromNs = from.namespaces[namespaceId];
783
- const toNs = to.namespaces[namespaceId];
784
- const fromTables = fromNs?.entries.table;
785
- if (!fromTables) continue;
786
- for (const tableName of Object.keys(fromTables)) {
787
- const toTableRaw = toNs?.entries.table?.[tableName];
788
- if (!StorageTable.is(toTableRaw)) {
789
- conflicts.push({
790
- kind: "tableRemoved",
791
- summary: `Table "${tableName}" was removed`
792
- });
793
- continue;
794
- }
795
- const toTable = toTableRaw;
796
- const fromTableRaw = fromTables[tableName];
797
- if (!StorageTable.is(fromTableRaw)) continue;
798
- const fromTable = fromTableRaw;
799
- for (const columnName of Object.keys(fromTable.columns)) if (!hasOwn(toTable.columns, columnName)) conflicts.push({
800
- kind: "columnRemoved",
801
- summary: `Column "${tableName}"."${columnName}" was removed`
802
- });
803
- }
804
- }
805
- return conflicts;
806
- }
807
- /**
808
- * Converts a `Contract` to `SqlSchemaIR`.
809
- *
810
- * Reads `contract.storage` for tables and `contract.storage.types` for type
811
- * annotations. Storage-type annotations are written under
812
- * `options.annotationNamespace`.
813
- *
814
- * Drops codec metadata (`codecId`, `typeRef`) since the schema IR only represents
815
- * structural information. When `expandNativeType` is provided, parameterized types
816
- * are expanded (e.g. `character` + `{ length: 36 }` → `character(36)`) so the
817
- * resulting IR compares correctly against the "to" contract during planning.
818
- *
819
- * Returns an empty schema IR when `contract` is `null` (new project).
820
- */
821
- /**
822
- * Converts the tables of a single namespace into a `SqlSchemaIR`, keyed by
823
- * table name within that namespace. Unlike {@link contractToSchemaIR}, which
824
- * flattens every namespace's tables into one bare-keyed record (and throws on a
825
- * cross-namespace name collision), this scopes the table iteration to one
826
- * namespace so the same table name can exist in two schemas.
827
- *
828
- * The full `storage` is still passed to `convertTable`, so value-set / enum /
829
- * type resolution that legitimately spans namespaces is unaffected. Foreign
830
- * keys are built purely from the FK descriptor (`fk.target`), so cross-namespace
831
- * FKs survive per-namespace conversion. The `annotations` block (storage-type
832
- * derived) is omitted here — the per-namespace tree consumer reads only the
833
- * per-table fields.
834
- */
835
- function contractNamespaceToSchemaIR(storage, namespaceId, options) {
836
- if (options.annotationNamespace.length === 0) throw sqlFamilyError("CONTRACT.PACK_CONTRIBUTION_INVALID", "annotationNamespace must be a non-empty string", {
837
- why: "The calling target pack passed an empty annotationNamespace to the contract-to-schema-IR projection.",
838
- fix: "Fix the target pack to pass its non-empty annotation namespace (e.g. \"pg\").",
839
- meta: { option: "annotationNamespace" }
840
- });
841
- const namespace = storage.namespaces[namespaceId];
842
- if (!namespace) return new SqlSchemaIR({ tables: {} });
843
- const storageTypes = { ...storage.types ?? {} };
844
- const tables = {};
845
- for (const [tableName, tableDefRaw] of Object.entries(namespace.entries.table ?? {})) {
846
- StorageTable.assert(tableDefRaw, `namespaces.${namespaceId}.entries.table.${tableName}`);
847
- tables[tableName] = convertTable(tableName, tableDefRaw, storageTypes, options.expandNativeType, options.renderDefault, options.resolveDefault, storage);
848
- }
849
- return new SqlSchemaIR({ tables });
850
- }
851
- function contractToSchemaIR(contract, options) {
852
- if (options.annotationNamespace.length === 0) throw sqlFamilyError("CONTRACT.PACK_CONTRIBUTION_INVALID", "annotationNamespace must be a non-empty string", {
853
- why: "The calling target pack passed an empty annotationNamespace to the contract-to-schema-IR projection.",
854
- fix: "Fix the target pack to pass its non-empty annotation namespace (e.g. \"pg\").",
855
- meta: { option: "annotationNamespace" }
856
- });
857
- if (!contract) return new SqlSchemaIR({ tables: {} });
858
- const storage = contract.storage;
859
- const storageTypes = { ...storage.types ?? {} };
860
- const tables = {};
861
- for (const ns of Object.values(storage.namespaces)) for (const [tableName, tableDefRaw] of Object.entries(ns.entries.table ?? {})) {
862
- StorageTable.assert(tableDefRaw, `namespaces.${ns.id}.entries.table.${tableName}`);
863
- const tableDef = tableDefRaw;
864
- if (tables[tableName] !== void 0) throw sqlFamilyError("CONTRACT.TABLE_AMBIGUOUS", `contractToSchemaIR: duplicate SQL table name "${tableName}" across namespaces (ambiguous for flat SqlSchemaIR.tables).`, {
865
- why: "Two namespaces declare a table with the same name, which is ambiguous for the flat schema-IR table map.",
866
- fix: "Rename one of the tables so every table name is unique across namespaces.",
867
- meta: { table: tableName }
868
- });
869
- tables[tableName] = convertTable(tableName, tableDef, storageTypes, options.expandNativeType, options.renderDefault, options.resolveDefault, storage);
870
- }
871
- return new SqlSchemaIR({
872
- tables,
873
- ...ifDefined("annotations", deriveAnnotations(storage, options.annotationNamespace, options.resolveEnumNamespaceSchema))
874
- });
875
- }
876
- function deriveAnnotations(storage, annotationNamespace, _resolveEnumNamespaceSchema) {
877
- const storageTypes = {};
878
- for (const typeInstance of Object.values(storage.types ?? {})) if (isStorageTypeInstance(typeInstance)) storageTypes[typeInstance.nativeType] = typeInstance;
879
- const envelope = { ...Object.keys(storageTypes).length > 0 ? { storageTypes } : {} };
880
- if (Object.keys(envelope).length === 0) return void 0;
881
- return { [annotationNamespace]: envelope };
882
- }
883
- /**
884
- * The control policy that governs a single call. The `external` default is an
885
- * un-overridable namespace floor: when the contract default is `external`, no
886
- * per-object `managed` override can escalate DDL above the floor, so the
887
- * policy is forced to `external` regardless of the node's own declaration.
888
- * Every other default defers to the node's effective control policy.
889
- */
890
- function controlPolicyForCall(subject, defaultControlPolicy) {
891
- if (defaultControlPolicy === "external") return "external";
892
- return effectiveControlPolicy(subject?.explicitNodeControlPolicy, defaultControlPolicy);
893
- }
894
- /**
895
- * Whether a call is allowed to emit under a given control policy.
896
- *
897
- * - `managed` — full lifecycle, every op allowed.
898
- * - `tolerated` — create-if-absent only: allowed iff the call creates a whole
899
- * new top-level object (and its subject was positively resolved). Anything
900
- * that modifies an existing object, and anything whose subject could not be
901
- * resolved, is suppressed.
902
- * - `external` / `observed` — no DDL at all.
903
- */
904
- function callAllowedUnderControlPolicy(policy, subject) {
905
- switch (policy) {
906
- case "managed": return true;
907
- case "tolerated": return subject?.createsNewObject === true;
908
- case "external":
909
- case "observed": return false;
910
- }
911
- }
912
- /**
913
- * Partition the calls produced for a single set of subjects into those the
914
- * effective control policy permits (`kept`) and a list of
915
- * {@link SuppressionRecord}s describing the suppressed calls.
916
- *
917
- * **Prefer {@link partitionIssuesByControlPolicy}** for the schema-issue
918
- * pipeline: it filters subjects out of the planner's *input* so the planner
919
- * never has to reason about un-modeled state on `external`/`observed`
920
- * subjects. This call-level helper remains for paths that bypass the issue
921
- * pipeline — currently the codec-emitted field-event ops, which originate
922
- * from declared contract fields rather than from introspected schema state
923
- * and therefore cannot trip the diff engine.
924
- */
925
- function partitionCallsByControlPolicy(options) {
926
- const defaultControlPolicy = options.contract.defaultControlPolicy;
927
- const kept = [];
928
- const suppressions = [];
929
- for (const call of options.calls) {
930
- const subject = options.resolveControlPolicySubject(call);
931
- const policy = controlPolicyForCall(subject, defaultControlPolicy);
932
- if (callAllowedUnderControlPolicy(policy, subject)) kept.push(call);
933
- else suppressions.push({
934
- subject,
935
- policy,
936
- factoryName: options.resolveFactoryName(call),
937
- createsNewObject: subject?.createsNewObject ?? false
938
- });
939
- }
940
- return Object.freeze({
941
- kept: Object.freeze(kept),
942
- suppressions: Object.freeze(suppressions)
943
- });
944
- }
945
- /**
946
- * Partition a list of schema-issue-shaped inputs by the effective control
947
- * policy of each issue's subject *before* the planner is invoked.
948
- *
949
- * `plannable` is the list of issues whose subject's effective policy permits
950
- * the planner to act on them (`managed`, or `tolerated` for whole-object
951
- * creation issues only). Issues for `external`/`observed` subjects, and
952
- * non-creation issues for `tolerated` subjects, are dropped from the planner's
953
- * input entirely — they never enter introspection-driven planning, never feed
954
- * the diff engine, and never produce DDL calls that would have to be
955
- * post-filtered. This sidesteps a class of failure where the diff engine
956
- * cannot reason about the live shape of a subject the user marked as
957
- * out-of-scope (`external`).
958
- *
959
- * `suppressions` is one {@link SuppressionRecord} per suppressed subject (not
960
- * per suppressed issue). Its `factoryName` is the creation factory name when any
961
- * of the subject's issues is whole-object creation (e.g. `createTable`), else
962
- * `undefined` — the family never invents a modification verb for an op that
963
- * produced no call; the target renders the message.
964
- *
965
- * Unresolved-subject issues (`resolveControlPolicySubject` returns
966
- * `undefined`) emit one record each; they cannot be deduplicated because they
967
- * carry no subject coordinate.
968
- */
969
- function partitionIssuesByControlPolicy(options) {
970
- const defaultControlPolicy = options.contract.defaultControlPolicy;
971
- const plannable = [];
972
- const suppressedSubjects = /* @__PURE__ */ new Map();
973
- const unresolvedSuppressions = [];
974
- for (const issue of options.issues) {
975
- const subject = options.resolveControlPolicySubject(issue);
976
- const policy = controlPolicyForCall(subject, defaultControlPolicy);
977
- const creationFactoryName = options.resolveCreationFactoryName(issue);
978
- if (policy === "managed") {
979
- plannable.push(issue);
980
- continue;
981
- }
982
- if (policy === "tolerated" && subject !== void 0 && creationFactoryName !== void 0 && subject.createsNewObject) {
983
- plannable.push(issue);
984
- continue;
985
- }
986
- if (subject === void 0) {
987
- unresolvedSuppressions.push({
988
- subject: void 0,
989
- policy,
990
- factoryName: creationFactoryName,
991
- createsNewObject: false
992
- });
993
- continue;
994
- }
995
- const key = subjectKey(subject);
996
- const existing = suppressedSubjects.get(key);
997
- if (existing) {
998
- if (existing.creationFactoryName === void 0 && creationFactoryName !== void 0) existing.creationFactoryName = creationFactoryName;
999
- } else suppressedSubjects.set(key, {
1000
- subject,
1001
- policy,
1002
- ...ifDefined("creationFactoryName", creationFactoryName)
1003
- });
1004
- }
1005
- const suppressions = [...unresolvedSuppressions];
1006
- for (const entry of suppressedSubjects.values()) suppressions.push({
1007
- subject: entry.subject,
1008
- policy: entry.policy,
1009
- factoryName: entry.creationFactoryName,
1010
- createsNewObject: entry.subject.createsNewObject
1011
- });
1012
- return Object.freeze({
1013
- plannable: Object.freeze(plannable),
1014
- suppressions: Object.freeze(suppressions)
1015
- });
1016
- }
1017
- function subjectKey(subject) {
1018
- return `${subject.namespaceId}\u0000${subject.entityKind ?? ""}\u0000${subject.entityName ?? ""}\u0000${subject.rlsPolicy ?? ""}`;
1019
- }
1020
- function planFieldEventOperations(options) {
1021
- const priorContract = options.priorContract;
1022
- const newContract = options.newContract;
1023
- const added = [];
1024
- const dropped = [];
1025
- const altered = [];
1026
- const namespaceIds = unionSorted(priorContract ? Object.keys(priorContract.storage.namespaces) : [], Object.keys(newContract.storage.namespaces));
1027
- for (const namespaceId of namespaceIds) {
1028
- const priorNs = priorContract?.storage.namespaces[namespaceId];
1029
- const newNs = newContract.storage.namespaces[namespaceId];
1030
- const priorTables = priorNs?.entries.table;
1031
- const newTables = newNs?.entries.table;
1032
- const tableNames = unionSorted(priorTables ? Object.keys(priorTables) : [], newTables ? Object.keys(newTables) : []);
1033
- for (const tableName of tableNames) {
1034
- const priorTableRaw = priorTables?.[tableName];
1035
- const newTableRaw = newTables?.[tableName];
1036
- const priorTable = StorageTable.is(priorTableRaw) ? priorTableRaw : void 0;
1037
- const newTable = StorageTable.is(newTableRaw) ? newTableRaw : void 0;
1038
- const fieldNames = unionSorted(priorTable ? Object.keys(priorTable.columns) : [], newTable ? Object.keys(newTable.columns) : []);
1039
- for (const fieldName of fieldNames) {
1040
- const priorField = priorTable?.columns[fieldName];
1041
- const newField = newTable?.columns[fieldName];
1042
- const entry = {
1043
- namespaceId,
1044
- tableName,
1045
- fieldName,
1046
- priorTable,
1047
- newTable,
1048
- priorField,
1049
- newField
1050
- };
1051
- if (priorField === void 0 && newField !== void 0) added.push(entry);
1052
- else if (priorField !== void 0 && newField === void 0) dropped.push(entry);
1053
- else if (priorField !== void 0 && newField !== void 0) {
1054
- if (isAlteration(priorField, newField)) altered.push(entry);
1055
- }
1056
- }
1057
- }
1058
- }
1059
- const calls = [];
1060
- appendCalls("added", added, options.codecHooks, calls, (e) => e.newField?.codecId);
1061
- appendCalls("dropped", dropped, options.codecHooks, calls, (e) => e.priorField?.codecId);
1062
- appendCalls("altered", altered, options.codecHooks, calls, (e) => e.newField?.codecId);
1063
- return calls;
1064
- }
1065
- function appendCalls(event, entries, codecHooks, calls, pickCodecId) {
1066
- for (const entry of entries) {
1067
- const codecId = pickCodecId(entry);
1068
- if (codecId === void 0) continue;
1069
- const hook = codecHooks.get(codecId);
1070
- if (!hook?.onFieldEvent) continue;
1071
- const ctx = buildContext(event, entry);
1072
- const emitted = hook.onFieldEvent(event, ctx);
1073
- for (const call of emitted) calls.push(call);
1074
- }
1075
- }
1076
- /**
1077
- * The context's prior/new sides are scoped to the event:
1078
- *
1079
- * - `'added'` — only `newTable` / `newField` populated.
1080
- * - `'dropped'` — only `priorTable` / `priorField` populated.
1081
- * - `'altered'` — both sides populated.
1082
- */
1083
- function buildContext(event, entry) {
1084
- const base = {
1085
- namespaceId: entry.namespaceId,
1086
- tableName: entry.tableName,
1087
- fieldName: entry.fieldName
1088
- };
1089
- if (event === "added") return {
1090
- ...base,
1091
- ...entry.newTable !== void 0 ? { newTable: entry.newTable } : {},
1092
- ...entry.newField !== void 0 ? { newField: entry.newField } : {}
1093
- };
1094
- if (event === "dropped") return {
1095
- ...base,
1096
- ...entry.priorTable !== void 0 ? { priorTable: entry.priorTable } : {},
1097
- ...entry.priorField !== void 0 ? { priorField: entry.priorField } : {}
1098
- };
1099
- return {
1100
- ...base,
1101
- ...entry.priorTable !== void 0 ? { priorTable: entry.priorTable } : {},
1102
- ...entry.newTable !== void 0 ? { newTable: entry.newTable } : {},
1103
- ...entry.priorField !== void 0 ? { priorField: entry.priorField } : {},
1104
- ...entry.newField !== void 0 ? { newField: entry.newField } : {}
1105
- };
1106
- }
1107
- /**
1108
- * `'altered'` predicate. Returns `false` whenever `codecId` differs —
1109
- * any codec change suppresses the `altered` event entirely, including
1110
- * cases where another property also differs in the same diff. Codec
1111
- * rotation is a v1 non-goal; avoiding the mixed event keeps the
1112
- * migration semantics for codec changes explicit rather than smuggling
1113
- * them through as `altered`.
1114
- *
1115
- * For non-`codecId` diffs, returns `true` iff any other column property
1116
- * differs.
1117
- */
1118
- function isAlteration(prior, current) {
1119
- if (prior.codecId !== current.codecId) return false;
1120
- return !sameStorageColumn(prior, current);
1121
- }
1122
- function sameStorageColumn(a, b) {
1123
- if (a === b) return true;
1124
- if (a.nativeType !== b.nativeType) return false;
1125
- if (a.nullable !== b.nullable) return false;
1126
- if (a.typeRef !== b.typeRef) return false;
1127
- if (!sameJson(a.typeParams, b.typeParams)) return false;
1128
- if (!sameJson(a.default, b.default)) return false;
1129
- return true;
1130
- }
1131
- function sameJson(a, b) {
1132
- if (a === b) return true;
1133
- if (a === void 0 || b === void 0) return false;
1134
- return JSON.stringify(a) === JSON.stringify(b);
1135
- }
1136
- function unionSorted(a, b) {
1137
- const set = /* @__PURE__ */ new Set();
1138
- for (const name of a) set.add(name);
1139
- for (const name of b) set.add(name);
1140
- return [...set].sort((x, y) => x < y ? -1 : x > y ? 1 : 0);
1141
- }
1142
- /**
1143
- * Builds the codec-hook-composed `expandNativeType` callback the contract→IR
1144
- * derivation uses to expand parameterized native types (e.g. `character` +
1145
- * `{ length: 36 }` → `character(36)`). Returns `undefined` when no framework
1146
- * components are supplied, so callers can omit the option entirely.
1147
- */
1148
- function buildNativeTypeExpander(frameworkComponents) {
1149
- if (!frameworkComponents) return;
1150
- const codecHooks = extractCodecControlHooks(frameworkComponents);
1151
- return (input) => {
1152
- if (!input.typeParams) return input.nativeType;
1153
- if (!input.codecId) return input.nativeType;
1154
- const hooks = codecHooks.get(input.codecId);
1155
- if (!hooks?.expandNativeType) return input.nativeType;
1156
- return hooks.expandNativeType(input);
1157
- };
1158
- }
1159
- const readOnlyEmptyObject = Object.freeze({});
1160
- function cloneRecord(value) {
1161
- if (value === readOnlyEmptyObject) return value;
1162
- return Object.freeze({ ...value });
1163
- }
1164
- function freezeSteps(steps) {
1165
- if (steps.length === 0) return Object.freeze([]);
1166
- return Object.freeze(steps.map((step) => Object.freeze({
1167
- description: step.description,
1168
- sql: step.sql,
1169
- ...step.params ? { params: Object.freeze([...step.params]) } : {},
1170
- ...step.meta ? { meta: cloneRecord(step.meta) } : {}
1171
- })));
1172
- }
1173
- function freezeDetailsValue(value) {
1174
- if (value === null || value === void 0) return value;
1175
- if (typeof value !== "object") return value;
1176
- if (Array.isArray(value)) return Object.freeze([...value]);
1177
- return Object.freeze({ ...value });
1178
- }
1179
- function freezeTargetDetails(target) {
1180
- return Object.freeze({
1181
- id: target.id,
1182
- ...target.details !== void 0 ? { details: freezeDetailsValue(target.details) } : {}
1183
- });
1184
- }
1185
- function freezeOperation(operation) {
1186
- return Object.freeze({
1187
- id: operation.id,
1188
- label: operation.label,
1189
- ...operation.summary ? { summary: operation.summary } : {},
1190
- operationClass: operation.operationClass,
1191
- ...operation.invariantId ? { invariantId: operation.invariantId } : {},
1192
- target: freezeTargetDetails(operation.target),
1193
- precheck: freezeSteps(operation.precheck),
1194
- execute: freezeSteps(operation.execute),
1195
- postcheck: freezeSteps(operation.postcheck),
1196
- ...operation.meta ? { meta: cloneRecord(operation.meta) } : {}
1197
- });
1198
- }
1199
- function freezeOperations(operations) {
1200
- if (operations.length === 0) return Object.freeze([]);
1201
- return Object.freeze(operations.map((operation) => freezeOperation(operation)));
1202
- }
1203
- function createMigrationPlan(options) {
1204
- return Object.freeze({
1205
- targetId: options.targetId,
1206
- spaceId: options.spaceId,
1207
- ...options.origin !== void 0 ? { origin: options.origin ? Object.freeze({ ...options.origin }) : null } : {},
1208
- destination: Object.freeze({ ...options.destination }),
1209
- operations: freezeOperations(options.operations),
1210
- providedInvariants: Object.freeze([...options.providedInvariants]),
1211
- ...options.meta ? { meta: cloneRecord(options.meta) } : {}
1212
- });
1213
- }
1214
- function plannerSuccess(plan, warnings) {
1215
- return Object.freeze({
1216
- kind: "success",
1217
- plan,
1218
- ...warnings && warnings.length > 0 ? { warnings: Object.freeze(warnings.map((conflict) => Object.freeze({
1219
- kind: conflict.kind,
1220
- summary: conflict.summary,
1221
- ...conflict.why ? { why: conflict.why } : {},
1222
- ...conflict.location ? { location: Object.freeze({ ...conflict.location }) } : {},
1223
- ...conflict.meta ? { meta: cloneRecord(conflict.meta) } : {}
1224
- }))) } : {}
1225
- });
1226
- }
1227
- function plannerFailure(conflicts) {
1228
- return Object.freeze({
1229
- kind: "failure",
1230
- conflicts: Object.freeze(conflicts.map((conflict) => Object.freeze({
1231
- kind: conflict.kind,
1232
- summary: conflict.summary,
1233
- ...conflict.why ? { why: conflict.why } : {},
1234
- ...conflict.location ? { location: Object.freeze({ ...conflict.location }) } : {},
1235
- ...conflict.meta ? { meta: cloneRecord(conflict.meta) } : {}
1236
- })))
1237
- });
1238
- }
1239
- /**
1240
- * Creates a successful migration runner result.
1241
- */
1242
- function runnerSuccess(value) {
1243
- return ok(Object.freeze({
1244
- operationsPlanned: value.operationsPlanned,
1245
- operationsExecuted: value.operationsExecuted
1246
- }));
1247
- }
1248
- /**
1249
- * Creates a failed migration runner result.
1250
- */
1251
- function runnerFailure(code, summary, options) {
1252
- return notOk(Object.freeze({
1253
- code,
1254
- summary,
1255
- ...options?.why ? { why: options.why } : {},
1256
- ...options?.meta ? { meta: cloneRecord(options.meta) } : {}
1257
- }));
1258
- }
1259
- /**
1260
- * Policy used by `db init`: additive-only operations, no widening/destructive steps.
1261
- */
1262
- const INIT_ADDITIVE_POLICY = Object.freeze({ allowedOperationClasses: Object.freeze(["additive"]) });
1263
- var control_default = new SqlFamilyDescriptor();
1264
- //#endregion
1265
- export { contractToSchemaIR as a, createMigrationPlan as c, partitionIssuesByControlPolicy as d, planFieldEventOperations as f, runnerSuccess as g, runnerFailure as h, contractNamespaceToSchemaIR as i, detectDestructiveChanges as l, plannerSuccess as m, assembleAuthoringContributions as n, controlPolicyForCall as o, plannerFailure as p, buildNativeTypeExpander as r, control_default as s, INIT_ADDITIVE_POLICY as t, partitionCallsByControlPolicy as u };
1266
-
1267
- //# sourceMappingURL=control-D3cB5YQp.mjs.map