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

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
@@ -0,0 +1,1967 @@
1
+ import { n as ForeignKeyIndex, o as ReferentialAction } from "./foreign-key-qkDFfG8t-TaK_GYWR.mjs";
2
+ import { a as SqlNamespaceBase, c as SqlNamespaceInput, l as SqlStorage, t as AuthoredStorageTypeInstance } from "./sql-storage-DeCAh5Hi-CEM-m8cs.mjs";
3
+ import { O as QueryOperationTypesFunction, c as ContractWithTypeMaps, i as AggregateTypesFromDescriptors, o as ApplyQueryOperationTypes } from "./types-DfKvtJwS-CrpWTGBJ.mjs";
4
+ import { t as ColumnTypesFromStorage } from "./types-CkAd8SWm.mjs";
5
+ import { r as PackEntityHandle } from "./entity-handle-lowering-hook-BuvLtgFi.mjs";
6
+ import "./derived-checks-DpPkO6Dt-9U9UJZOo.mjs";
7
+ import { r as SqlExpression } from "./sql-expression-B4BrhGPi.mjs";
8
+ import { i as IndexTypeRegistration } from "./index-types-H1O43iYT-BD0VwPqV.mjs";
9
+ import "./index-types-snhtt_Fo.mjs";
10
+ import { n as AuthoredIndexMethod } from "./index-naming-Cs6wwia3.mjs";
11
+ import { AuthoringArgumentDescriptor, AuthoringFieldPresetDescriptor, AuthoringTypeAliasDescriptor, AuthoringTypeConstructorDescriptor, AuthoringWarning } from "@prisma/orm-framework/components/authoring";
12
+ import { StorageType } from "@prisma/orm-framework/components/ir";
13
+ import { CodecLookupWithDescriptors, ColumnTypeDescriptor, DataTypeLookup, ScalarFieldDeclarationBuilder } from "@prisma/orm-framework/components/codec";
14
+ import { ColumnDefault, Contract, ContractExecutionSection, ContractRelation, ControlPolicy, EnumMemberValueType, ExecutionMutationDefaultPhases, ExecutionMutationDefaultValue, FieldTypesFromDomain, JsonValue, NamespaceId, StorageHashBase } from "@prisma/orm-framework/contract/types";
15
+ import { ExtensionPackRef, ExtensionPackValues, FamilyPackRef, GeneratorFunctionCall, GeneratorHelpersOf, GeneratorPhase, TargetPackRef } from "@prisma/orm-framework/components/components";
16
+ import { BoundEnumType, CanonicalArguments, CodecInput, CodecInput as CodecInput$1, CodecTypeMap, CodecTypeMap as CodecTypeMap$1, DataTypeArgumentTypes, EntityHelpersFromNamespace, EnumMember, EnumTypeHandle, ExtractAuthoringNamespaceFromPack, ExtractDataTypeArgumentTypesFromPack, ExtractParameterizedOutputTypesFromPack, ForeignKeyDefaultsState, MergeExtensionAuthoringNamespaces, ResolveTemplateValue, TupleFromArgumentDescriptors, UnionToIntersection, bindEnumType, enumType, member } from "@prisma/orm-framework/contract-authoring";
17
+ //#region ../../../2-sql-family/2-authoring/contract-ts/dist/contract-builder.d.mts
18
+ //#region src/contract-definition.d.ts
19
+ /**
20
+ * Namespace-scoped pack-entity attachments, the internal build IR carrying
21
+ * the lowered `entities` handle list: namespace id → entity kind (the
22
+ * discriminator the target/extension pack registered its
23
+ * `AuthoringContributions.entityTypes` descriptor under, e.g. `native_enum`)
24
+ * → entity name → the lowered entity instance. Generic on purpose — neither
25
+ * the framework nor `contract-ts` names a specific entity kind here; the
26
+ * shape mirrors `SqlNamespaceInput.entries` (`entries.<kind>[name]`), just
27
+ * namespace-nested so an attachment can target any declared namespace
28
+ * (default or named), not only the contract's default namespace. Produced by
29
+ * the generic entity-handle walk in `buildContractDefinition`; never an
30
+ * author-facing input.
31
+ */
32
+ type AttachedEntities = Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, unknown>>>>>>;
33
+ /**
34
+ * A literal default as an authoring surface builds it: a value of the column codec's input type, which the contract build encodes through that codec into a {@link ColumnDefault}. Only the codec knows the type, so it is `unknown` until encoded.
35
+ */
36
+ type AuthoredColumnDefaultLiteralValue = unknown;
37
+ type AuthoredColumnDefault = ColumnDefault | {
38
+ readonly kind: 'literal';
39
+ readonly value: AuthoredColumnDefaultLiteralValue;
40
+ /**
41
+ * Whether the value is already in the form the contract stores. A text contract source
42
+ * reads a written default into the stored form itself, through the column's data type and
43
+ * its casts, so the build stores it as it stands; a TypeScript `.default(value)` hands over an
44
+ * application value, which the column's codec encodes. ADR 254.
45
+ */
46
+ readonly inStoredForm?: boolean;
47
+ };
48
+ /** The type of a scalar: a codec and its type parameters, the domain's `ScalarFieldType` without its kind. */
49
+ type ScalarTypeDescriptor = Pick<ColumnTypeDescriptor, 'codecId' | 'typeParams'>;
50
+ /**
51
+ * The column-free part of a scalar field. A value-object member is exactly this; a model field ({@link FieldNode}) adds its column.
52
+ */
53
+ interface ScalarMemberNode {
54
+ readonly fieldName: string;
55
+ readonly descriptor: ScalarTypeDescriptor;
56
+ readonly nullable: boolean;
57
+ readonly many?: boolean;
58
+ readonly elementNullable?: boolean;
59
+ /** Present when the field is typed by an enum. */
60
+ readonly enumTypeHandle?: EnumTypeHandle;
61
+ }
62
+ /**
63
+ * A column as storage describes it, with no field. A model field ({@link FieldNode}) is a column node that is also a scalar member; a table node ({@link TableNode}) holds column nodes for columns no field maps.
64
+ */
65
+ interface ColumnNode {
66
+ readonly columnName: string;
67
+ readonly descriptor: ColumnTypeDescriptor;
68
+ readonly nullable: boolean;
69
+ readonly many?: boolean;
70
+ readonly elementNullable?: boolean;
71
+ readonly default?: AuthoredColumnDefault;
72
+ /** Present when the column is typed by an `enumType()` enum, which gives it the enum's storage value set and a membership check. */
73
+ readonly enumTypeHandle?: EnumTypeHandle;
74
+ }
75
+ /** A scalar model field: a scalar member with its column, and the defaults the runtime fills. */
76
+ interface FieldNode extends ScalarMemberNode, ColumnNode {
77
+ readonly descriptor: ColumnTypeDescriptor;
78
+ readonly executionDefaults?: ExecutionMutationDefaultPhases;
79
+ }
80
+ interface PrimaryKeyNode {
81
+ readonly columns: readonly string[];
82
+ readonly name?: string;
83
+ }
84
+ interface UniqueConstraintNode {
85
+ readonly columns: readonly string[];
86
+ readonly name?: string;
87
+ }
88
+ /** A definition-tree index's element structure — column tuple xor expression. */
89
+ type IndexNodeElements = {
90
+ /** Column tuple. */
91
+ readonly columns: readonly string[];
92
+ readonly expression?: never;
93
+ } | {
94
+ readonly columns?: never;
95
+ /** Opaque SQL: the entire element list of CREATE INDEX — never parsed. */
96
+ readonly expression: string;
97
+ };
98
+ type IndexNode = IndexNodeElements & AuthoredIndexMethod & {
99
+ /** Opaque SQL: partial-index predicate (WHERE body, without the keyword). */
100
+ readonly where: string | undefined;
101
+ readonly unique: boolean | undefined;
102
+ /** Exact physical name (`map:`) — adopted verbatim, no wire hash. */
103
+ readonly map: string | undefined;
104
+ /** Wire-name prefix (`name:`) — lowers to `<name>_<8hex>`. */
105
+ readonly name: string | undefined;
106
+ };
107
+ /**
108
+ * A definition-tree check constraint: `map` adopts an exact physical name
109
+ * verbatim, `name` is a wire-name prefix — exactly one is required (a check
110
+ * has no column tuple to derive a default from, unlike an index).
111
+ */
112
+ type CheckNode = {
113
+ readonly expression: string;
114
+ readonly map: string | undefined;
115
+ readonly name: string | undefined;
116
+ };
117
+ /** A foreign key's target named by the model that maps the target table. */
118
+ interface ForeignKeyModelReference {
119
+ readonly model: string;
120
+ readonly table: string;
121
+ readonly columns: readonly string[];
122
+ /**
123
+ * Namespace coordinate of the referenced table. When omitted the
124
+ * assembler resolves the coordinate from the referenced model node's
125
+ * own `namespaceId`; the field exists so authoring paths that already
126
+ * know the target namespace can stamp it explicitly.
127
+ */
128
+ readonly namespaceId?: string;
129
+ /**
130
+ * Contract-space identity of the referenced table. When present, the
131
+ * table lives in a different contract space (identified by this value)
132
+ * rather than the current contract. Absent for local FKs.
133
+ */
134
+ readonly spaceId?: string;
135
+ }
136
+ /** A foreign key's target named by its table, which a model or a table node of this contract declares. Without `namespaceId`, or with an empty one, the table is in the default namespace. */
137
+ interface ForeignKeyTableReference {
138
+ readonly model?: never;
139
+ readonly table: string;
140
+ readonly columns: readonly string[];
141
+ readonly namespaceId?: string;
142
+ readonly spaceId?: never;
143
+ }
144
+ interface ForeignKeyNode {
145
+ readonly columns: readonly string[];
146
+ readonly references: ForeignKeyModelReference | ForeignKeyTableReference;
147
+ readonly name?: string;
148
+ readonly onDelete?: ReferentialAction;
149
+ readonly onUpdate?: ReferentialAction;
150
+ readonly constraint?: boolean;
151
+ /** `true` for a derived backing index, `false` for none, or the name of an index, unique constraint or primary key of the same table that backs the foreign key. */
152
+ readonly index?: boolean | string;
153
+ }
154
+ interface RelationNode {
155
+ readonly fieldName: string;
156
+ readonly toModel: string;
157
+ /**
158
+ * Physical table of the related model. Undefined only for a cross-space
159
+ * relation whose handle carries no static table name.
160
+ */
161
+ readonly toTable: string | undefined;
162
+ /**
163
+ * Namespace coordinate of the related model. When omitted the assembler
164
+ * resolves the coordinate from the referenced model node's own
165
+ * `namespaceId`; the field exists so authoring paths that already know the
166
+ * target namespace can stamp it explicitly — required to disambiguate a
167
+ * relation to a model whose bare name also exists in another namespace.
168
+ */
169
+ readonly toNamespaceId?: string;
170
+ readonly cardinality: '1:1' | '1:N' | 'N:1' | 'N:M';
171
+ /**
172
+ * Whether the related row may be absent, as stated by the schema. Present on
173
+ * every `'1:1'` and `'N:1'` relation; absent on `'1:N'` and `'N:M'`.
174
+ */
175
+ readonly nullable?: boolean;
176
+ /**
177
+ * Contract-space identity of the related model. When present, the
178
+ * related model lives in a different contract space. Absent for local
179
+ * (same-space) relations.
180
+ */
181
+ readonly spaceId?: string;
182
+ /**
183
+ * Namespace coordinate of the related model in the foreign space.
184
+ * Only set when `spaceId` is present.
185
+ */
186
+ readonly namespaceId?: string;
187
+ readonly on: {
188
+ readonly parentTable: string;
189
+ readonly parentColumns: readonly string[];
190
+ readonly childTable: string | undefined;
191
+ readonly childColumns: readonly string[];
192
+ };
193
+ readonly through?: {
194
+ readonly table: string;
195
+ /**
196
+ * Namespace the junction table lives in. Set from the junction model's
197
+ * declared namespace at lowering time; junction table names are unique per
198
+ * namespace, not globally, so this disambiguates a junction whose bare table
199
+ * name also exists in another namespace. Omitted for a junction in the
200
+ * default namespace (resolved to the target's default at build time).
201
+ */
202
+ readonly namespaceId?: string;
203
+ readonly parentColumns: readonly string[];
204
+ readonly childColumns: readonly string[];
205
+ };
206
+ }
207
+ /**
208
+ * The column-free part of a field typed by a value object. A value-object member is exactly this; a model field ({@link ValueObjectFieldNode}) adds its column.
209
+ */
210
+ interface ValueObjectMemberNode {
211
+ readonly fieldName: string;
212
+ readonly valueObjectName: string;
213
+ readonly nullable: boolean;
214
+ readonly many?: boolean;
215
+ readonly elementNullable?: boolean;
216
+ }
217
+ /**
218
+ * A model field typed by a value object. It is stored in one column of the storage type the target declares for value objects, carried in `descriptor`; a list of value objects is stored in that one column too.
219
+ */
220
+ interface ValueObjectFieldNode extends ValueObjectMemberNode, Pick<ColumnNode, 'columnName' | 'descriptor' | 'default'> {
221
+ readonly executionDefaults?: ExecutionMutationDefaultPhases;
222
+ }
223
+ interface ValueObjectNode {
224
+ readonly name: string;
225
+ readonly fields: readonly (ScalarMemberNode | ValueObjectMemberNode)[];
226
+ }
227
+ /**
228
+ * Whether a field is stored in a list column. A list of scalars is; a list of value objects is not, because it is stored in one column whose value is the whole list, as one JSON array.
229
+ */
230
+ declare function storedAsListColumn(field: {
231
+ readonly list: boolean;
232
+ readonly typedByValueObject: boolean;
233
+ }): boolean;
234
+ /** Whether a field or member is typed by a value object. */
235
+ declare function isValueObjectMember(field: ScalarMemberNode | ValueObjectMemberNode): field is ValueObjectMemberNode;
236
+ /** What a table declares besides its columns. A model states these for its table, and so does a table node for a table no model maps. */
237
+ interface TableProperties {
238
+ readonly id?: PrimaryKeyNode;
239
+ readonly uniques?: readonly UniqueConstraintNode[];
240
+ readonly indexes?: readonly IndexNode[];
241
+ readonly checks?: readonly CheckNode[];
242
+ readonly foreignKeys?: readonly ForeignKeyNode[];
243
+ readonly control?: ControlPolicy;
244
+ }
245
+ interface ModelNode extends TableProperties {
246
+ readonly modelName: string;
247
+ readonly tableName: string;
248
+ /**
249
+ * Resolved namespace coordinate for this model — the key into the
250
+ * parent contract's `SqlStorage.namespaces` map. Omitting the field
251
+ * (or setting it to the framework's `UNBOUND_NAMESPACE_ID` sentinel)
252
+ * selects the late-bound slot, which renders as unqualified DDL.
253
+ *
254
+ * Populated by per-target PSL interpreters from the resolved
255
+ * `namespace { … }` AST bucket; the TS builder also sets it from the
256
+ * per-model `namespace` field once that authoring surface lands.
257
+ */
258
+ readonly namespaceId?: string;
259
+ readonly fields: readonly (FieldNode | ValueObjectFieldNode)[];
260
+ readonly relations?: readonly RelationNode[];
261
+ /**
262
+ * Single-table-inheritance variants share their base model's storage table:
263
+ * the variant's columns are materialised onto the base `ModelNode`, and this
264
+ * model contributes a domain model but no storage table of its own. When set,
265
+ * the assembler builds the domain model but skips creating a (shadow) storage
266
+ * table and a root for this model — the base owns both.
267
+ */
268
+ readonly sharesBaseTable?: boolean;
269
+ }
270
+ /**
271
+ * A table's storage declared without a model. Naming a table a model maps adds columns to it and nothing else; naming any other table declares the whole table.
272
+ */
273
+ interface TableNode extends TableProperties {
274
+ /** Namespace coordinate of the table. Omitted or empty means the target's default namespace. */
275
+ readonly namespaceId?: string;
276
+ readonly tableName: string;
277
+ readonly columns: readonly ColumnNode[];
278
+ }
279
+ /** A component whose capabilities a contract carries, such as an adapter. */
280
+ type CapabilityContributor = {
281
+ readonly capabilities: Readonly<Record<string, Readonly<Record<string, boolean>>>>;
282
+ };
283
+ interface ContractDefinition {
284
+ readonly target: TargetPackRef<'sql', string>;
285
+ readonly defaultControlPolicy?: ControlPolicy;
286
+ readonly extensions?: Record<string, ExtensionPackRef<'sql', string>>;
287
+ /** Capabilities of the stack the contract runs with beyond its target's and extensions', such as its adapter's. They join the target's and the extensions', as `prisma contract emit` joins them. */
288
+ readonly capabilities?: CapabilityContributor['capabilities'];
289
+ /**
290
+ * Test-fixture escape hatch: pins the emitted `storage.storageHash`
291
+ * instead of computing it from content. A pinned hash is not
292
+ * content-derived, so snapshot content verification
293
+ * (`MIGRATION.CONTRACT_SNAPSHOT_CONTENT_MISMATCH`) rejects any migration
294
+ * snapshot addressed by it — never set this in a real project.
295
+ */
296
+ readonly storageHash?: string;
297
+ readonly foreignKeyDefaults?: ForeignKeyDefaultsState;
298
+ readonly databaseTypes?: Record<string, AuthoredStorageTypeInstance>;
299
+ /**
300
+ * Declared namespace coordinates for this contract — populates
301
+ * `SqlStorage.namespaces` together with `createNamespace`.
302
+ */
303
+ readonly namespaces?: readonly string[];
304
+ /**
305
+ * Authoring warnings collected by the definition producer before the
306
+ * build runs (the PSL interpreter's entity factories run ahead of
307
+ * `buildSqlContractFromDefinition`); seeds the build's single per-build
308
+ * flush. Required key: a producer with nothing collected states
309
+ * `undefined` explicitly.
310
+ */
311
+ readonly warnings: readonly AuthoringWarning[] | undefined;
312
+ /** Target-supplied factory that materialises a `SqlNamespaceBase` concretion for a declared namespace coordinate. */
313
+ readonly createNamespace: (input: SqlNamespaceInput) => SqlNamespaceBase;
314
+ readonly models: readonly ModelNode[];
315
+ /** Storage no model maps: columns added to a model's table, and tables with no model. */
316
+ readonly tables?: readonly TableNode[];
317
+ readonly valueObjects?: readonly ValueObjectNode[];
318
+ /**
319
+ * Domain enum handles authored via `enumType()`. Each entry lowers to a
320
+ * domain `enum` entry and a storage `valueSet` entry in the contract's
321
+ * default namespace.
322
+ */
323
+ readonly enums?: Record<string, EnumTypeHandle>;
324
+ /**
325
+ * Pack-entity attachments lowered from the `entities` handle list, keyed by
326
+ * namespace then entity kind then name. Each entity lands in
327
+ * `storage.namespaces[ns].entries.<kind>`; when the registered entity-type
328
+ * descriptor's factory output implements the
329
+ * `SqlValueSetDerivingEntityTypeOutput.deriveValueSet` hook, the derived
330
+ * value-set also folds into `entries.valueSet`, mirroring how `enums` flows
331
+ * there. Internal build IR — populated by `buildContractDefinition`, not an
332
+ * author input.
333
+ */
334
+ readonly attachedEntities?: AttachedEntities;
335
+ }
336
+ //#endregion
337
+ //#region src/contract-dsl.d.ts
338
+ type NamingStrategy = 'identity' | 'snake_case';
339
+ type NamingConfig = {
340
+ readonly tables?: NamingStrategy;
341
+ readonly columns?: NamingStrategy;
342
+ };
343
+ type NamedConstraintNameSpec<Name extends string = string> = {
344
+ readonly name: Name;
345
+ };
346
+ type ScalarFieldState<Descriptor extends ColumnTypeDescriptor = ColumnTypeDescriptor, EnumHandle extends EnumTypeHandle | undefined = undefined, Nullable extends boolean = boolean, ColumnName extends string | undefined = string | undefined, IdSpec extends NamedConstraintSpec | undefined = undefined, UniqueSpec extends NamedConstraintSpec | undefined = undefined, Many extends false | {
347
+ readonly elementNullable: boolean;
348
+ } = false, Defaults extends FieldDefaultPresence = FieldDefaultPresence> = {
349
+ readonly kind: 'scalar';
350
+ /** Exists only in types: whether the column has a database default, and in which phases the client generates its value. */
351
+ readonly __defaultPresence?: Defaults;
352
+ readonly descriptor?: Descriptor | undefined;
353
+ readonly enumHandle?: EnumHandle | undefined;
354
+ readonly nullable: Nullable;
355
+ readonly columnName?: ColumnName | undefined;
356
+ readonly default?: AuthoredColumnDefault | undefined;
357
+ readonly executionDefaults?: ExecutionMutationDefaultPhases | undefined;
358
+ readonly generatorCalls?: FieldGeneratorCalls | undefined;
359
+ readonly many: Many;
360
+ } & (IdSpec extends NamedConstraintSpec ? {
361
+ readonly id: IdSpec;
362
+ } : {
363
+ readonly id?: undefined;
364
+ }) & (UniqueSpec extends NamedConstraintSpec ? {
365
+ readonly unique: UniqueSpec;
366
+ } : {
367
+ readonly unique?: undefined;
368
+ });
369
+ /** Whether a field's column has a database default, and whether the client generates its value on create and on update. */
370
+ type FieldDefaultPresence = {
371
+ readonly column: boolean;
372
+ readonly onCreate: boolean;
373
+ readonly onUpdate: boolean;
374
+ };
375
+ /** The generator function calls a field's `.onCreate(...)` and `.onUpdate(...)` give, resolved by the field's codec when the contract is built. */
376
+ type FieldGeneratorCalls = {
377
+ readonly onCreate?: GeneratorFunctionCall;
378
+ readonly onUpdate?: GeneratorFunctionCall;
379
+ };
380
+ type WithGeneratedPhase<State extends AnyScalarFieldState, Phase extends GeneratorPhase> = State extends ScalarFieldState<infer Descriptor, infer EnumHandle, infer Nullable, infer ColumnName, infer IdSpec, infer UniqueSpec, infer Many, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, Nullable, ColumnName, IdSpec, UniqueSpec, Many, {
381
+ readonly column: Defaults['column'];
382
+ readonly onCreate: Phase extends 'onCreate' ? true : Defaults['onCreate'];
383
+ readonly onUpdate: Phase extends 'onUpdate' ? true : Defaults['onUpdate'];
384
+ }> : State;
385
+ type WithColumnDefault<State extends AnyScalarFieldState> = State extends ScalarFieldState<infer Descriptor, infer EnumHandle, infer Nullable, infer ColumnName, infer IdSpec, infer UniqueSpec, infer Many, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, Nullable, ColumnName, IdSpec, UniqueSpec, Many, {
386
+ readonly column: true;
387
+ readonly onCreate: Defaults['onCreate'];
388
+ readonly onUpdate: Defaults['onUpdate'];
389
+ }> : State;
390
+ type AnyScalarFieldState = {
391
+ readonly kind: 'scalar';
392
+ readonly descriptor?: ColumnTypeDescriptor | undefined;
393
+ readonly enumHandle?: EnumTypeHandle | undefined;
394
+ readonly nullable: boolean;
395
+ readonly columnName?: string | undefined;
396
+ readonly default?: AuthoredColumnDefault | undefined;
397
+ readonly executionDefaults?: ExecutionMutationDefaultPhases | undefined;
398
+ readonly generatorCalls?: FieldGeneratorCalls | undefined;
399
+ readonly many: false | {
400
+ readonly elementNullable: boolean;
401
+ };
402
+ readonly id?: NamedConstraintSpec | undefined;
403
+ readonly unique?: NamedConstraintSpec | undefined;
404
+ };
405
+ type HasNamedConstraintId<State extends AnyScalarFieldState> = State extends ScalarFieldState<ColumnTypeDescriptor, EnumTypeHandle | undefined, boolean, string | undefined, infer IdSpec, NamedConstraintSpec | undefined, false | {
406
+ readonly elementNullable: boolean;
407
+ }> ? IdSpec extends NamedConstraintSpec ? true : false : false;
408
+ type HasNamedConstraintUnique<State extends AnyScalarFieldState> = State extends ScalarFieldState<ColumnTypeDescriptor, EnumTypeHandle | undefined, boolean, string | undefined, NamedConstraintSpec | undefined, infer UniqueSpec, false | {
409
+ readonly elementNullable: boolean;
410
+ }> ? UniqueSpec extends NamedConstraintSpec ? true : false : false;
411
+ type FieldSqlSpecForState<State extends AnyScalarFieldState> = {
412
+ readonly column?: string;
413
+ } & (HasNamedConstraintId<State> extends true ? {
414
+ readonly id?: NamedConstraintNameSpec;
415
+ } : Record<never, never>) & (HasNamedConstraintUnique<State> extends true ? {
416
+ readonly unique?: NamedConstraintNameSpec;
417
+ } : Record<never, never>);
418
+ type ApplyFieldSqlSpec<State extends AnyScalarFieldState, Spec extends FieldSqlSpecForState<State>> = State extends ScalarFieldState<infer Descriptor, infer EnumHandle, infer Nullable, infer ColumnName, infer IdSpec, infer UniqueSpec, infer Many, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, Nullable, Spec extends {
419
+ readonly column: infer NextColumn extends string;
420
+ } ? NextColumn : ColumnName, Spec extends {
421
+ readonly id: {
422
+ readonly name: infer IdName extends string;
423
+ };
424
+ } ? IdSpec extends NamedConstraintSpec ? NamedConstraintSpec<IdName> : IdSpec : IdSpec, Spec extends {
425
+ readonly unique: {
426
+ readonly name: infer UniqueName extends string;
427
+ };
428
+ } ? UniqueSpec extends NamedConstraintSpec ? NamedConstraintSpec<UniqueName> : UniqueSpec : UniqueSpec, Many, Defaults> : AnyScalarFieldState;
429
+ type GeneratedFieldSpec = {
430
+ readonly type: ColumnTypeDescriptor;
431
+ readonly typeParams?: Record<string, unknown>;
432
+ readonly generated: ExecutionMutationDefaultValue;
433
+ };
434
+ type CarriesCodecInput<Input> = {
435
+ /** Exists only in types: carries the input type of the column's codec, which `.default()` takes. */
436
+ __codecInput?(input: Input): void;
437
+ };
438
+ type WithCodecInput<Descriptor, Input> = Descriptor & CarriesCodecInput<Input>;
439
+ type DefaultInputOf<State> = State extends {
440
+ readonly descriptor?: infer Descriptor;
441
+ } ? NonNullable<Descriptor> extends CarriesCodecInput<infer Input> ? Input : unknown : unknown;
442
+ type IsList<State> = State extends {
443
+ readonly many: {
444
+ readonly elementNullable: boolean;
445
+ };
446
+ } ? true : false;
447
+ type NullElementOf<State> = State extends {
448
+ readonly many: {
449
+ readonly elementNullable: true;
450
+ };
451
+ } ? null : never;
452
+ type DefaultLiteralOf<State> = unknown extends DefaultInputOf<State> ? unknown : IsList<State> extends true ? readonly (DefaultInputOf<State> | NullElementOf<State>)[] : DefaultInputOf<State>;
453
+ type EnumHandleOf<State> = State extends {
454
+ readonly enumHandle?: infer EnumHandle;
455
+ } ? string extends EnumHandle ? never : Extract<EnumHandle, EnumTypeHandle> : never;
456
+ type DefaultArgumentOf<State> = ([EnumHandleOf<State>] extends [never] ? DefaultLiteralOf<State> | ColumnDefault | SqlExpression : IsList<State> extends true ? readonly (EnumHandleOf<State>['values'][number] | NullElementOf<State>)[] : EnumHandleOf<State>['values'][number]) | (State extends {
457
+ readonly nullable: true;
458
+ } ? null : never);
459
+ type ApplyMany<State extends AnyScalarFieldState, ElementsNullable extends boolean> = State extends ScalarFieldState<infer Descriptor, infer EnumHandle, infer Nullable, infer ColumnName, infer IdSpec, infer UniqueSpec, false | {
460
+ readonly elementNullable: boolean;
461
+ }, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, Nullable, ColumnName, IdSpec, UniqueSpec, {
462
+ readonly elementNullable: ElementsNullable;
463
+ }, Defaults> : AnyScalarFieldState;
464
+ type ManyOptions = {
465
+ readonly elementsNullable: true;
466
+ } | {
467
+ readonly elementsNullable: false;
468
+ };
469
+ declare class ScalarFieldBuilder<State extends AnyScalarFieldState = AnyScalarFieldState> implements ScalarFieldDeclarationBuilder {
470
+ private readonly state;
471
+ readonly __state: State;
472
+ constructor(state: State);
473
+ /**
474
+ * Returns the physical column name when `.column(name)` was called, or
475
+ * `undefined` when the field uses the default (logical field name) mapping.
476
+ * Used by cross-space FK lowering to stamp the physical column name onto
477
+ * `TargetFieldRef.columnName` so FK target columns are resolved correctly.
478
+ */
479
+ get physicalColumnName(): string | undefined;
480
+ optional(): ScalarFieldBuilder<State extends ScalarFieldState<infer Descriptor, infer EnumHandle, boolean, infer ColumnName, infer IdSpec, infer UniqueSpec, infer Many, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, true, ColumnName, IdSpec, UniqueSpec, Many, Defaults> : AnyScalarFieldState>;
481
+ column<ColumnName extends string>(name: ColumnName): ScalarFieldBuilder<State extends ScalarFieldState<infer Descriptor, infer EnumHandle, infer Nullable, string | undefined, infer IdSpec, infer UniqueSpec, infer Many, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, Nullable, ColumnName, IdSpec, UniqueSpec, Many, Defaults> : AnyScalarFieldState>;
482
+ many(): ScalarFieldBuilder<ApplyMany<State, false>>;
483
+ many(options: {
484
+ readonly elementsNullable: true;
485
+ }): ScalarFieldBuilder<ApplyMany<State, true>>;
486
+ many(options: {
487
+ readonly elementsNullable: false;
488
+ }): ScalarFieldBuilder<ApplyMany<State, false>>;
489
+ default<Self extends {
490
+ readonly __state: AnyScalarFieldState;
491
+ }>(this: Self, value: DefaultArgumentOf<Self['__state']>): ScalarFieldBuilder<WithColumnDefault<State>>;
492
+ /** Generates the field's value in the client when a row is created without one, with a call from `gen`, such as `gen.uuid()`. */
493
+ onCreate(call: GeneratorFunctionCall): ScalarFieldBuilder<WithGeneratedPhase<State, 'onCreate'>>;
494
+ /** Generates the field's value in the client every time a row is updated, with a call from `gen`, such as `gen.now()`. */
495
+ onUpdate(call: GeneratorFunctionCall): ScalarFieldBuilder<WithGeneratedPhase<State, 'onUpdate'>>;
496
+ /**
497
+ * @deprecated Write `.default(now())` or `.default(autoincrement())`, or `` .default(sql`...`) `` for any other SQL. Removed in 8.0.0.
498
+ */
499
+ defaultSql(expression: string): ScalarFieldBuilder<WithColumnDefault<State>>;
500
+ id<const Name extends string | undefined = undefined>(options?: NamedConstraintSpec<Name>): ScalarFieldBuilder<State extends ScalarFieldState<infer Descriptor, infer EnumHandle, infer Nullable, infer ColumnName, NamedConstraintSpec | undefined, infer UniqueSpec, infer Many, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, Nullable, ColumnName, NamedConstraintSpec<Name>, UniqueSpec, Many, Defaults> : AnyScalarFieldState>;
501
+ unique<const Name extends string | undefined = undefined>(options?: NamedConstraintSpec<Name>): ScalarFieldBuilder<State extends ScalarFieldState<infer Descriptor, infer EnumHandle, infer Nullable, infer ColumnName, infer IdSpec, NamedConstraintSpec | undefined, infer Many, infer Defaults> ? ScalarFieldState<Descriptor, EnumHandle, Nullable, ColumnName, IdSpec, NamedConstraintSpec<Name>, Many, Defaults> : AnyScalarFieldState>;
502
+ sql<const Spec extends FieldSqlSpecForState<State>>(spec: Spec): ScalarFieldBuilder<ApplyFieldSqlSpec<State, Spec>>;
503
+ build(): State;
504
+ }
505
+ declare class EnumScalarFieldBuilder<Handle extends EnumTypeHandle, State extends AnyScalarFieldState = ScalarFieldState<ColumnTypeDescriptor, Handle, false, undefined>> extends ScalarFieldBuilder<State> {
506
+ #private;
507
+ constructor(state: State, handle: Handle);
508
+ default<Self extends {
509
+ readonly __state: AnyScalarFieldState;
510
+ }>(this: Self, value: DefaultArgumentOf<Self['__state']>): EnumScalarFieldBuilder<Handle, WithColumnDefault<State>>;
511
+ defaultSql(_expression: never): never;
512
+ }
513
+ type CodecTypesOfNoPacks = Record<never, never>;
514
+ /** The defaults a field built from `Descriptor` starts with: the generators of a contributed type alias, or none. */
515
+ type ColumnDefaultPresence<Descriptor> = {
516
+ readonly column: boolean;
517
+ readonly onCreate: AliasGeneratesIn<Descriptor, 'onCreate'>;
518
+ readonly onUpdate: AliasGeneratesIn<Descriptor, 'onUpdate'>;
519
+ };
520
+ type AliasGeneratesIn<Descriptor, Phase extends GeneratorPhase> = Descriptor extends {
521
+ readonly generatorCalls: { readonly [K in Phase]: GeneratorFunctionCall; };
522
+ } ? true : boolean;
523
+ type ColumnFieldHelper<CodecTypes extends CodecTypeMap = CodecTypesOfNoPacks> = <const Descriptor extends ColumnTypeDescriptor>(descriptor: Descriptor) => ScalarFieldBuilder<ScalarFieldState<WithCodecInput<Descriptor, CodecInput<CodecTypes, Descriptor>>, undefined, false, undefined, undefined, undefined, false, ColumnDefaultPresence<Descriptor>>>;
524
+ type NamedTypeFieldHelper = <Handle extends EnumTypeHandle>(handle: Handle) => EnumScalarFieldBuilder<Handle>;
525
+ type WithGeneratedTypeParams<Descriptor, TypeParams> = TypeParams extends Record<string, unknown> ? Descriptor & {
526
+ readonly typeParams: TypeParams;
527
+ } : Descriptor;
528
+ declare function generatedField<Descriptor extends ColumnTypeDescriptor, TypeParams extends Record<string, unknown> | undefined = undefined>(spec: GeneratedFieldSpec & {
529
+ readonly type: Descriptor;
530
+ readonly typeParams?: TypeParams;
531
+ }): ScalarFieldBuilder<ScalarFieldState<WithGeneratedTypeParams<Descriptor, TypeParams>, undefined, false, undefined, undefined, undefined, false, {
532
+ readonly column: false;
533
+ readonly onCreate: true;
534
+ readonly onUpdate: false;
535
+ }>>;
536
+ type RelationModelRefSource = 'string' | 'token' | 'lazyToken';
537
+ type TargetFieldRefSource = 'string' | 'token';
538
+ type EagerRelationModelName<ModelName extends string = string, Source extends Exclude<RelationModelRefSource, 'lazyToken'> = Exclude<RelationModelRefSource, 'lazyToken'>> = {
539
+ readonly kind: 'relationModelName';
540
+ readonly source: Source;
541
+ readonly modelName: ModelName;
542
+ };
543
+ type LazyRelationModelName<ModelName extends string = string> = {
544
+ readonly kind: 'lazyRelationModelName';
545
+ readonly source: 'lazyToken';
546
+ readonly resolve: () => ModelName;
547
+ };
548
+ type RelationModelSource<ModelName extends string = string> = EagerRelationModelName<ModelName> | LazyRelationModelName<ModelName>;
549
+ type BelongsToRelation<ToModel extends string = string, FromField extends string | readonly string[] = string | readonly string[], ToField extends string | readonly string[] = string | readonly string[], SqlSpec extends BelongsToRelationSqlSpec | undefined = undefined, TargetSpaceId extends string = string> = {
550
+ readonly kind: 'belongsTo';
551
+ /** The contract space of the target model, `'<self>'` for this contract's own models. Type-only. */
552
+ readonly __targetSpaceId?: TargetSpaceId;
553
+ readonly toModel: RelationModelSource<ToModel>;
554
+ readonly from: FromField;
555
+ readonly to: ToField;
556
+ readonly sql?: SqlSpec;
557
+ /**
558
+ * Whether the related row may be absent. Defaults to whether any `from`
559
+ * field is nullable; an explicit value that contradicts them is rejected.
560
+ */
561
+ readonly optional?: boolean;
562
+ /**
563
+ * Contract-space identity of the target model. Populated when
564
+ * `belongsTo` receives a cross-space branded handle. Absent for
565
+ * local (same-space) relations.
566
+ */
567
+ readonly spaceId?: string;
568
+ /**
569
+ * Physical table name of the cross-space target model. Only set
570
+ * when `spaceId` is present; read from the handle's `tableName`.
571
+ */
572
+ readonly tableName?: string;
573
+ /**
574
+ * Namespace coordinate of the cross-space target model.
575
+ * Only set when `spaceId` is present.
576
+ */
577
+ readonly namespaceId?: string;
578
+ };
579
+ type HasManyRelation<ToModel extends string = string, ByField extends string | readonly string[] = string | readonly string[]> = {
580
+ readonly kind: 'hasMany';
581
+ readonly toModel: RelationModelSource<ToModel>;
582
+ readonly by: ByField;
583
+ };
584
+ type HasOneRelation<ToModel extends string = string, ByField extends string | readonly string[] = string | readonly string[]> = {
585
+ readonly kind: 'hasOne';
586
+ readonly toModel: RelationModelSource<ToModel>;
587
+ readonly by: ByField;
588
+ };
589
+ type ManyToManyRelation<ToModel extends string = string, ThroughModel extends string = string, FromField extends string | readonly string[] = string | readonly string[], ToField extends string | readonly string[] = string | readonly string[]> = {
590
+ readonly kind: 'manyToMany';
591
+ readonly toModel: RelationModelSource<ToModel>;
592
+ readonly through: RelationModelSource<ThroughModel>;
593
+ readonly from: FromField;
594
+ readonly to: ToField;
595
+ };
596
+ type RelationState = BelongsToRelation<string, string | readonly string[], string | readonly string[], BelongsToRelationSqlSpec | undefined> | HasManyRelation | HasOneRelation | ManyToManyRelation;
597
+ type AnyRelationState = RelationState;
598
+ type AnyRelationBuilder = RelationBuilder<AnyRelationState>;
599
+ type ApplyBelongsToRelationSqlSpec<State extends RelationState, SqlSpec extends BelongsToRelationSqlSpec> = State extends BelongsToRelation<infer ToModel, infer FromField, infer ToField, BelongsToRelationSqlSpec | undefined, infer TargetSpaceId> ? BelongsToRelation<ToModel, FromField, ToField, SqlSpec, TargetSpaceId> : never;
600
+ declare class RelationBuilder<State extends RelationState = AnyRelationState> {
601
+ private readonly state;
602
+ readonly __state: State;
603
+ constructor(state: State);
604
+ sql<const SqlSpec extends BelongsToRelationSqlSpec>(this: State extends BelongsToRelation<string, string | readonly string[], string | readonly string[], BelongsToRelationSqlSpec | undefined> ? RelationBuilder<State> : never, spec: SqlSpec): RelationBuilder<ApplyBelongsToRelationSqlSpec<State, SqlSpec>>;
605
+ build(): State;
606
+ }
607
+ /**
608
+ * Reference to a column on the current (local) model.
609
+ *
610
+ * Source columns are always local to the contract being authored. The
611
+ * cross-space brand lives on `TargetFieldRef` (the target side of a foreign
612
+ * key), not here.
613
+ */
614
+ type ColumnRef<FieldName extends string = string> = {
615
+ readonly kind: 'columnRef';
616
+ readonly fieldName: FieldName;
617
+ };
618
+ /**
619
+ * Reference to a field on a target model, produced by model `.refs` and
620
+ * `constraints.ref(modelName, fieldName)`.
621
+ *
622
+ * The `TSpaceId` phantom parameter carries the contract-space identity of the
623
+ * target model. Local model handles produce `TSpaceId = '<self>'`; extension
624
+ * handles carry the extension's `spaceId`. The brand is propagated from the
625
+ * parent `ContractModelBuilder` via the `spaceId?` property: absent means local
626
+ * (`'<self>'`), present means cross-space.
627
+ */
628
+ type TargetFieldRef<ModelName extends string = string, FieldName extends string = string, TSpaceId extends string = string> = {
629
+ readonly kind: 'targetFieldRef';
630
+ readonly source: TargetFieldRefSource;
631
+ readonly modelName: ModelName;
632
+ readonly fieldName: FieldName;
633
+ /**
634
+ * Cross-space discriminator. When present, the referenced model lives in a
635
+ * different contract space identified by this value. Absent for local refs.
636
+ */
637
+ readonly spaceId?: TSpaceId extends '<self>' ? never : TSpaceId;
638
+ /**
639
+ * Namespace id of the cross-space target model (e.g. `'auth'` for
640
+ * `supabase` `auth.User`). Only present for cross-space refs.
641
+ */
642
+ readonly namespaceId?: string;
643
+ /**
644
+ * Physical table name of the cross-space target model. Only present for
645
+ * cross-space refs; allows the lowering path to bypass the local model
646
+ * registry.
647
+ */
648
+ readonly tableName?: string;
649
+ /**
650
+ * Physical column name of the target field. Populated for cross-space refs
651
+ * when the extension handle's field used `.column(name)` to rename the
652
+ * physical column. When absent the logical `fieldName` is used as the column
653
+ * name. Only relevant for cross-space FK lowering — local FKs resolve column
654
+ * names via the local `fieldToColumn` map.
655
+ */
656
+ readonly columnName?: string;
657
+ };
658
+ type ModelTokenRefs<ModelName extends string, Fields extends Record<string, ScalarFieldBuilder>, TSpaceId extends string = '<self>'> = { readonly [K in keyof Fields]: TargetFieldRef<ModelName, K & string, TSpaceId>; };
659
+ type ConstraintOptions<Name extends string | undefined = string | undefined> = {
660
+ readonly name?: Name;
661
+ };
662
+ type IndexTypeMap = Record<string, {
663
+ readonly options: unknown;
664
+ }>;
665
+ type IndexOptionsBase<Name extends string | undefined> = {
666
+ readonly name?: Name;
667
+ /** Exact physical name — adopted verbatim, no wire hash. Xor `name`. */
668
+ readonly map?: string;
669
+ /** Opaque SQL: partial-index predicate (WHERE body, without the keyword). */
670
+ readonly where?: SqlExpression;
671
+ readonly unique?: boolean;
672
+ };
673
+ type IndexInput<Name extends string | undefined, IndexTypes extends IndexTypeMap> = keyof IndexTypes extends never ? IndexOptionsBase<Name> : (IndexOptionsBase<Name> & {
674
+ readonly type?: never;
675
+ readonly options?: never;
676
+ }) | { readonly [K in keyof IndexTypes & string]: IndexOptionsBase<Name> & {
677
+ readonly type: K;
678
+ readonly options: IndexOptionsInput<IndexTypes[K]['options']>;
679
+ }; }[keyof IndexTypes & string];
680
+ type IndexSpecCapture<Map, Type, Where, Unique, IndexTypes extends IndexTypeMap> = {
681
+ readonly map?: Map;
682
+ readonly where?: Where;
683
+ readonly unique?: Unique;
684
+ } & (keyof IndexTypes extends never ? Record<never, never> : {
685
+ readonly type?: Type;
686
+ });
687
+ type IndexSpecFrom<Map, Type, Where, Unique, IndexTypes extends IndexTypeMap> = {
688
+ readonly map: Map;
689
+ readonly type: Type;
690
+ readonly options: Type extends keyof IndexTypes ? IndexTypes[Type]['options'] extends (infer Options extends Record<string, unknown>) ? Options : Record<string, unknown> : undefined;
691
+ readonly partial: [Where] extends [undefined] ? false : true;
692
+ readonly unique: Unique;
693
+ };
694
+ /**
695
+ * The expression overload's input: the whole CREATE INDEX element list as
696
+ * one opaque `sql` value. `name` or `map` is required — enforced at lowering
697
+ * with the same diagnostics as PSL.
698
+ */
699
+ type ExpressionIndexInput<Name extends string | undefined, IndexTypes extends IndexTypeMap> = IndexInput<Name, IndexTypes> & {
700
+ readonly expression: IndexExpressionInput;
701
+ };
702
+ type ForeignKeyOptions<Name extends string | undefined = string | undefined> = ConstraintOptions<Name> & {
703
+ readonly onDelete?: 'noAction' | 'restrict' | 'cascade' | 'setNull' | 'setDefault';
704
+ readonly onUpdate?: 'noAction' | 'restrict' | 'cascade' | 'setNull' | 'setDefault';
705
+ readonly constraint?: boolean;
706
+ /**
707
+ * `false` for no backing index, or the name of an index, unique constraint or primary key the table declares, used instead of a derived backing index. The name is the `name` or `map` it was given, or an index's stored name, and its first columns must be the foreign key's columns in order.
708
+ */
709
+ readonly index?: boolean | string;
710
+ };
711
+ type BelongsToRelationSqlSpec<Name extends string | undefined = string | undefined> = {
712
+ readonly fk?: ForeignKeyOptions<Name>;
713
+ };
714
+ type IdConstraint<FieldNames extends readonly string[] = readonly string[], Name extends string | undefined = string | undefined> = {
715
+ readonly kind: 'id';
716
+ readonly fields: FieldNames;
717
+ readonly name?: Name;
718
+ };
719
+ type UniqueConstraint<FieldNames extends readonly string[] = readonly string[], Name extends string | undefined = string | undefined> = {
720
+ readonly kind: 'unique';
721
+ readonly fields: FieldNames;
722
+ readonly name?: Name;
723
+ };
724
+ /** A field the lowering resolved, as the renderer sees it. */
725
+ type DeferredIndexColumn = {
726
+ /** The storage column name, after `.column()` and the naming convention. */
727
+ readonly name: string;
728
+ /** The codec the column stores its values through. */
729
+ readonly codecId: string;
730
+ };
731
+ /**
732
+ * An index expression rendered at lowering, once the storage column names are
733
+ * known. `fields` resolve exactly as the field-tuple form's do — a `.column()`
734
+ * override first, then the contract's column naming convention — and `render`
735
+ * receives the resolved names in the same order. Authoring code cannot know
736
+ * either, so an expression over a column has to be written this way rather
737
+ * than as a `sql` value, or it silently stops matching the column it names.
738
+ */
739
+ type DeferredIndexExpression = {
740
+ readonly fields: readonly ColumnRef[];
741
+ readonly render: (columns: readonly DeferredIndexColumn[]) => string;
742
+ };
743
+ /** Opaque SQL, either written out or rendered at lowering. */
744
+ type IndexExpressionInput = SqlExpression | DeferredIndexExpression;
745
+ /**
746
+ * Index options rendered at lowering from the storage columns the index covers, in order: its
747
+ * `fields`, or the `fields` of a deferred expression. For options that name columns, which authoring
748
+ * code cannot know.
749
+ */
750
+ type DeferredIndexOptions<Options = Record<string, unknown>> = (columns: readonly DeferredIndexColumn[]) => Options;
751
+ /** Options, either written out or rendered at lowering. */
752
+ type IndexOptionsInput<Options = Record<string, unknown>> = Options | DeferredIndexOptions<Options>;
753
+ /** An authored index constraint's element structure — field tuple xor expression. */
754
+ type IndexConstraintElements<FieldNames extends readonly string[] = readonly string[]> = {
755
+ /** Field-name tuple. */
756
+ readonly fields: FieldNames;
757
+ readonly expression?: never;
758
+ } | {
759
+ readonly fields?: never;
760
+ /** Opaque SQL: the entire CREATE INDEX element list — never parsed. */
761
+ readonly expression: IndexExpressionInput;
762
+ };
763
+ /** Options only exist as options of a type, so the pair is one union. */
764
+ type IndexConstraintMethod = {
765
+ readonly type?: undefined;
766
+ readonly options?: undefined;
767
+ } | {
768
+ readonly type: string;
769
+ readonly options?: IndexOptionsInput;
770
+ };
771
+ /**
772
+ * An index's options as a function of its model's columns: `options` reads `this['columnOf']`, which maps each field name of the model to its column name. A helper whose options name fields, such as a full-text index's weight groups, declares one so the contract's type states the options with column names, as the build writes them.
773
+ */
774
+ interface IndexOptionsFunction {
775
+ readonly columnOf: Record<never, string>;
776
+ readonly options: unknown;
777
+ }
778
+ /** What an index's type records beyond its fields and name: its exact `map` name, its type, and its options or a function that gives them. Exists only in types. */
779
+ type IndexSpec = {
780
+ readonly map?: string | undefined;
781
+ readonly type?: string | undefined;
782
+ readonly options?: unknown;
783
+ readonly partial?: boolean;
784
+ readonly unique?: boolean | undefined;
785
+ };
786
+ type IndexConstraint<FieldNames extends readonly string[] = readonly string[], Name extends string | undefined = string | undefined, Spec extends IndexSpec = IndexSpec> = IndexConstraintElements<FieldNames> & IndexConstraintMethod & {
787
+ readonly kind: 'index';
788
+ readonly where?: SqlExpression;
789
+ readonly unique?: boolean;
790
+ readonly name?: Name;
791
+ readonly map?: string;
792
+ readonly __spec?: Spec;
793
+ };
794
+ /**
795
+ * An authored check constraint, as returned by {@link check}: `map` adopts an
796
+ * exact physical name verbatim, `name` is a wire-name prefix. Unlike an
797
+ * index there is no column tuple to derive a default name from, so exactly
798
+ * one of `name` or `map` is required — enforced at lowering, same as PSL.
799
+ */
800
+ type AuthoredCheckConstraint = {
801
+ readonly kind: 'check';
802
+ readonly expression: SqlExpression;
803
+ readonly name?: string;
804
+ readonly map?: string;
805
+ };
806
+ type ForeignKeyConstraint<SourceFieldNames extends readonly string[] = readonly string[], TargetModelName extends string = string, TargetFieldNames extends readonly string[] = readonly string[], Name extends string | undefined = string | undefined, Index extends boolean | string | undefined = boolean | string | undefined> = {
807
+ readonly kind: 'fk';
808
+ readonly fields: SourceFieldNames;
809
+ readonly targetModel: TargetModelName;
810
+ readonly targetFields: TargetFieldNames;
811
+ readonly targetSource?: TargetFieldRefSource;
812
+ /**
813
+ * Cross-space discriminator. When present, the FK target lives in a
814
+ * different contract space identified by this value. Absent for local FKs.
815
+ */
816
+ readonly targetSpaceId?: string;
817
+ /**
818
+ * Namespace coordinate of the cross-space target model. Populated when
819
+ * the target model handle carries a `namespace` (e.g. `auth` for supabase
820
+ * `auth.User`). Absent for local FKs.
821
+ */
822
+ readonly targetNamespaceId?: string;
823
+ /**
824
+ * Table name of the cross-space target. Populated for cross-space FKs
825
+ * so the lowering path doesn't need a local model lookup.
826
+ */
827
+ readonly targetTableName?: string;
828
+ readonly name?: Name;
829
+ readonly onDelete?: 'noAction' | 'restrict' | 'cascade' | 'setNull' | 'setDefault';
830
+ readonly onUpdate?: 'noAction' | 'restrict' | 'cascade' | 'setNull' | 'setDefault';
831
+ readonly constraint?: boolean;
832
+ readonly index?: Index;
833
+ };
834
+ declare function createConstraintsDsl<IndexTypes extends IndexTypeMap = Record<never, never>>(): {
835
+ ref: <ModelName extends string, FieldName extends string>(modelName: ModelName, fieldName: FieldName) => TargetFieldRef<ModelName, FieldName>;
836
+ id: {
837
+ <FieldName extends string, const Name extends string | undefined = undefined>(field: ColumnRef<FieldName>, options?: NamedConstraintSpec<Name>): IdConstraint<readonly [FieldName], Name>;
838
+ <FieldNames extends readonly string[], const Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: NamedConstraintSpec<Name>): IdConstraint<FieldNames, Name>;
839
+ };
840
+ unique: {
841
+ <FieldName extends string, const Name extends string | undefined = undefined>(field: ColumnRef<FieldName>, options?: ConstraintOptions<Name>): UniqueConstraint<readonly [FieldName], Name>;
842
+ <FieldNames extends readonly string[], const Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: ConstraintOptions<Name>): UniqueConstraint<FieldNames, Name>;
843
+ };
844
+ index: {
845
+ <FieldNames extends readonly string[], const Name extends string | undefined = undefined, const Map extends string | undefined = undefined, const Type extends (keyof IndexTypes & string) | undefined = undefined, const Where extends SqlExpression | undefined = undefined, const Unique extends boolean | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: IndexInput<Name, IndexTypes> & IndexSpecCapture<Map, Type, Where, Unique, IndexTypes>): IndexConstraint<FieldNames, NoInfer<Name>, IndexSpecFrom<NoInfer<Map>, NoInfer<Type>, NoInfer<Where>, NoInfer<Unique>, IndexTypes>>;
846
+ <const Name extends string | undefined = undefined, const Map extends string | undefined = undefined, const Type extends (keyof IndexTypes & string) | undefined = undefined, const Where extends SqlExpression | undefined = undefined, const Unique extends boolean | undefined = undefined>(options: ExpressionIndexInput<Name, IndexTypes> & IndexSpecCapture<Map, Type, Where, Unique, IndexTypes>): IndexConstraint<never, NoInfer<Name>, IndexSpecFrom<NoInfer<Map>, NoInfer<Type>, NoInfer<Where>, NoInfer<Unique>, IndexTypes>>;
847
+ };
848
+ foreignKey: {
849
+ <SourceFieldName extends string, TargetModelName extends string, TargetFieldName extends string, const Name extends string | undefined = undefined, const Index extends boolean | string | undefined = undefined>(field: ColumnRef<SourceFieldName>, target: TargetFieldRef<TargetModelName, TargetFieldName>, options?: ForeignKeyOptions<Name> & {
850
+ readonly index?: Index;
851
+ }): ForeignKeyConstraint<readonly [SourceFieldName], TargetModelName, readonly [TargetFieldName], Name, Index>;
852
+ <SourceFieldNames extends readonly string[], TargetModelName extends string, TargetFieldNames extends readonly string[], const Name extends string | undefined = undefined, const Index extends boolean | string | undefined = undefined>(fields: { readonly [K in keyof SourceFieldNames]: ColumnRef<SourceFieldNames[K] & string>; }, target: { readonly [K in keyof TargetFieldNames]: TargetFieldRef<TargetModelName, TargetFieldNames[K] & string>; }, options?: ForeignKeyOptions<Name> & {
853
+ readonly index?: Index;
854
+ }): ForeignKeyConstraint<SourceFieldNames, TargetModelName, TargetFieldNames, Name, Index>;
855
+ };
856
+ };
857
+ type ConstraintsDsl = ReturnType<typeof createConstraintsDsl>;
858
+ /**
859
+ * Declares an authored CHECK constraint for a model's `.sql({ checks: [...] })`.
860
+ * Unlike `index()`, `check()` names no column tuple — the predicate is opaque
861
+ * SQL — so it needs no field-ref context and is a plain top-level function
862
+ * rather than a method on `constraints`.
863
+ */
864
+ declare function check(input: {
865
+ readonly expression: SqlExpression;
866
+ readonly name?: string;
867
+ readonly map?: string;
868
+ }): AuthoredCheckConstraint;
869
+ type ModelAttributesSpec = {
870
+ readonly id?: IdConstraint;
871
+ readonly uniques?: readonly UniqueConstraint[];
872
+ };
873
+ type SqlStageSpec = {
874
+ readonly table?: string;
875
+ readonly control?: ControlPolicy;
876
+ readonly indexes?: readonly IndexConstraint[];
877
+ readonly checks?: readonly AuthoredCheckConstraint[];
878
+ readonly foreignKeys?: readonly ForeignKeyConstraint[];
879
+ };
880
+ type FieldRefs<Fields extends Record<string, ScalarFieldBuilder>> = { readonly [K in keyof Fields]: ColumnRef<K & string>; };
881
+ type AttributeContext<Fields extends Record<string, ScalarFieldBuilder>> = {
882
+ readonly fields: FieldRefs<Fields>;
883
+ readonly constraints: Pick<ConstraintsDsl, 'id' | 'unique'>;
884
+ };
885
+ type PackAwareIndex<IndexTypes extends IndexTypeMap> = {
886
+ <FieldNames extends readonly string[], const Name extends string | undefined = undefined, const Map extends string | undefined = undefined, const Type extends (keyof IndexTypes & string) | undefined = undefined, const Where extends SqlExpression | undefined = undefined, const Unique extends boolean | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: IndexInput<Name, IndexTypes> & IndexSpecCapture<Map, Type, Where, Unique, IndexTypes>): IndexConstraint<FieldNames, NoInfer<Name>, IndexSpecFrom<NoInfer<Map>, NoInfer<Type>, NoInfer<Where>, NoInfer<Unique>, IndexTypes>>;
887
+ <const Name extends string | undefined = undefined, const Map extends string | undefined = undefined, const Type extends (keyof IndexTypes & string) | undefined = undefined, const Where extends SqlExpression | undefined = undefined, const Unique extends boolean | undefined = undefined>(options: ExpressionIndexInput<Name, IndexTypes> & IndexSpecCapture<Map, Type, Where, Unique, IndexTypes>): IndexConstraint<never, NoInfer<Name>, IndexSpecFrom<NoInfer<Map>, NoInfer<Type>, NoInfer<Where>, NoInfer<Unique>, IndexTypes>>;
888
+ };
889
+ type PackAwareSqlConstraints<IndexTypes extends IndexTypeMap> = {
890
+ readonly foreignKey: ConstraintsDsl['foreignKey'];
891
+ readonly ref: ConstraintsDsl['ref'];
892
+ readonly index: PackAwareIndex<IndexTypes>;
893
+ };
894
+ type SqlContext<Fields extends Record<string, ScalarFieldBuilder>, IndexTypes extends IndexTypeMap = Record<never, never>> = {
895
+ readonly cols: FieldRefs<Fields>;
896
+ readonly constraints: PackAwareSqlConstraints<IndexTypes>;
897
+ };
898
+ type StageInput<Context, Spec> = Spec | ((context: Context) => Spec);
899
+ type StaticLiteralName<Name> = Name extends string ? (string extends Name ? never : Name) : never;
900
+ type NamedConstraintLiteralName<Constraint> = Constraint extends {
901
+ readonly name?: infer Name;
902
+ } ? StaticLiteralName<Name> : never;
903
+ type DuplicateLiteralNames<Items extends readonly unknown[], Seen extends string = never, Duplicates extends string = never> = Items extends readonly [infer First, ...infer Rest extends readonly unknown[]] ? NamedConstraintLiteralName<First> extends (infer Name extends string) ? Name extends Seen ? DuplicateLiteralNames<Rest, Seen, Duplicates | Name> : DuplicateLiteralNames<Rest, Seen | Name, Duplicates> : DuplicateLiteralNames<Rest, Seen, Duplicates> : Duplicates;
904
+ type InlineIdLiteralName<Fields extends Record<string, ScalarFieldBuilder>> = { readonly [FieldName in keyof Fields]: FieldStateOf<Fields[FieldName]> extends {
905
+ readonly id: {
906
+ readonly name?: infer Name;
907
+ };
908
+ } ? StaticLiteralName<Name> : never; }[keyof Fields];
909
+ type AttributeIdLiteralName<AttributesSpec extends ModelAttributesSpec | undefined> = AttributesSpec extends {
910
+ readonly id?: {
911
+ readonly name?: infer Name;
912
+ };
913
+ } ? StaticLiteralName<Name> : never;
914
+ type ModelIdLiteralName<Fields extends Record<string, ScalarFieldBuilder>, AttributesSpec extends ModelAttributesSpec | undefined> = [AttributeIdLiteralName<AttributesSpec>] extends [never] ? InlineIdLiteralName<Fields> : AttributeIdLiteralName<AttributesSpec>;
915
+ type AttributeUniques<AttributesSpec extends ModelAttributesSpec | undefined> = AttributesSpec extends {
916
+ readonly uniques?: infer Uniques extends readonly unknown[];
917
+ } ? Uniques : readonly [];
918
+ type SqlIndexes<SqlSpec extends SqlStageSpec | undefined> = SqlSpec extends {
919
+ readonly indexes?: infer Indexes extends readonly unknown[];
920
+ } ? Indexes : readonly [];
921
+ type SqlForeignKeys<SqlSpec extends SqlStageSpec | undefined> = SqlSpec extends {
922
+ readonly foreignKeys?: infer ForeignKeys extends readonly unknown[];
923
+ } ? ForeignKeys : readonly [];
924
+ type ModelNamedObjects<AttributesSpec extends ModelAttributesSpec | undefined, SqlSpec extends SqlStageSpec | undefined> = [...AttributeUniques<AttributesSpec>, ...SqlIndexes<SqlSpec>, ...SqlForeignKeys<SqlSpec>];
925
+ type InlineUniqueLiteralName<Field> = FieldStateOf<Field> extends {
926
+ readonly unique: {
927
+ readonly name?: infer Name;
928
+ };
929
+ } ? StaticLiteralName<Name> : never;
930
+ type RelationForeignKeyLiteralName<Relation> = RelationStateOf<Relation> extends {
931
+ readonly sql?: infer Spec;
932
+ } ? Spec extends {
933
+ readonly fk?: {
934
+ readonly name?: infer Name;
935
+ };
936
+ } ? StaticLiteralName<Name> : never : never;
937
+ type ModelLiteralNamesBySource<Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder>, AttributesSpec extends ModelAttributesSpec | undefined, SqlSpec extends SqlStageSpec | undefined> = { readonly [FieldName in keyof Fields & string as `field:${FieldName}`]: InlineUniqueLiteralName<Fields[FieldName]>; } & { readonly [RelationName in keyof Relations & string as `relation:${RelationName}`]: RelationForeignKeyLiteralName<Relations[RelationName]>; } & {
938
+ readonly id: ModelIdLiteralName<Fields, AttributesSpec>;
939
+ readonly stages: NamedConstraintLiteralName<ModelNamedObjects<AttributesSpec, SqlSpec>[number]>;
940
+ };
941
+ type LiteralNamesInMoreThanOneSource<NamesBySource> = { readonly [Source in keyof NamesBySource]: NamesBySource[Source] & NamesBySource[Exclude<keyof NamesBySource, Source>]; }[keyof NamesBySource];
942
+ type HasDuplicateModelNames<Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder>, AttributesSpec extends ModelAttributesSpec | undefined, SqlSpec extends SqlStageSpec | undefined> = [DuplicateLiteralNames<ModelNamedObjects<AttributesSpec, SqlSpec>> | LiteralNamesInMoreThanOneSource<ModelLiteralNamesBySource<Fields, Relations, AttributesSpec, SqlSpec>>] extends [never] ? false : true;
943
+ type ValidateSqlStageSpec<Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder>, AttributesSpec extends ModelAttributesSpec | undefined, SqlSpec extends SqlStageSpec> = HasDuplicateModelNames<Fields, Relations, AttributesSpec, SqlSpec> extends true ? never : SqlSpec;
944
+ type ValidateAttributesStageSpec<Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder>, SqlSpec extends SqlStageSpec | undefined, AttributesSpec extends ModelAttributesSpec> = HasDuplicateModelNames<Fields, Relations, AttributesSpec, SqlSpec> extends true ? never : AttributesSpec;
945
+ type DuplicateModelNamesError = 'Error: two ids, uniques, indexes or foreign keys on this model have the same name';
946
+ type ModelDuplicateNames<Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder>, AttributesSpec extends ModelAttributesSpec | undefined, SqlSpec extends SqlStageSpec | undefined> = [AttributesSpec] extends [never] ? DuplicateModelNamesError : [SqlSpec] extends [never] ? DuplicateModelNamesError : HasDuplicateModelNames<Fields, Relations, AttributesSpec, SqlSpec> extends true ? DuplicateModelNamesError : undefined;
947
+ declare class ContractModelBuilder<ModelName extends string | undefined, Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder> = Record<never, never>, AttributesSpec extends ModelAttributesSpec | undefined = undefined, SqlSpec extends SqlStageSpec | undefined = undefined, IndexTypes extends IndexTypeMap = Record<never, never>, TSpaceId extends string = '<self>', Namespace extends string | undefined = string | undefined> {
948
+ readonly stageOne: {
949
+ readonly modelName?: ModelName;
950
+ readonly namespace?: Namespace;
951
+ readonly fields: Fields;
952
+ readonly relations: Relations;
953
+ };
954
+ readonly attributesFactory?: StageInput<AttributeContext<Fields>, AttributesSpec> | undefined;
955
+ readonly sqlFactory?: StageInput<SqlContext<Fields, IndexTypes>, SqlSpec> | undefined;
956
+ readonly spaceId?: TSpaceId | undefined;
957
+ readonly tableName?: string | undefined;
958
+ readonly __name: ModelName;
959
+ readonly __namespace: Namespace;
960
+ readonly __fields: Fields;
961
+ readonly __relations: Relations;
962
+ readonly __attributes: AttributesSpec;
963
+ readonly __sql: SqlSpec;
964
+ readonly __indexTypes: IndexTypes;
965
+ readonly __spaceId: TSpaceId;
966
+ readonly __duplicateNames: ModelDuplicateNames<Fields, Relations, AttributesSpec, SqlSpec>;
967
+ readonly refs: ModelName extends string ? ModelTokenRefs<ModelName, Fields, TSpaceId> : never;
968
+ constructor(stageOne: {
969
+ readonly modelName?: ModelName;
970
+ readonly namespace?: Namespace;
971
+ readonly fields: Fields;
972
+ readonly relations: Relations;
973
+ }, attributesFactory?: StageInput<AttributeContext<Fields>, AttributesSpec> | undefined, sqlFactory?: StageInput<SqlContext<Fields, IndexTypes>, SqlSpec> | undefined, spaceId?: TSpaceId | undefined, tableName?: string | undefined);
974
+ ref<FieldName extends keyof Fields & string>(this: ModelName extends string ? ContractModelBuilder<ModelName, Fields, Relations, AttributesSpec, SqlSpec, IndexTypes, TSpaceId, Namespace> : never, fieldName: FieldName): TargetFieldRef<ModelName & string, FieldName>;
975
+ relations<const NextRelations extends Record<string, AnyRelationBuilder>>(relations: NextRelations): ContractModelBuilder<ModelName, Fields, Relations & NextRelations, AttributesSpec, SqlSpec, IndexTypes, TSpaceId, Namespace>;
976
+ attributes<const NextAttributesSpec extends ModelAttributesSpec>(specOrFactory: StageInput<AttributeContext<Fields>, NextAttributesSpec>): [ValidateAttributesStageSpec<Fields, Relations, SqlSpec, NextAttributesSpec>] extends [never] ? ContractModelBuilder<ModelName, Fields, Relations, never, SqlSpec, IndexTypes, TSpaceId, Namespace> : ContractModelBuilder<ModelName, Fields, Relations, NextAttributesSpec, SqlSpec, IndexTypes, TSpaceId, Namespace>;
977
+ sql<const NextSqlSpec extends SqlStageSpec>(specOrFactory: StageInput<SqlContext<Fields, IndexTypes>, NextSqlSpec>): [ValidateSqlStageSpec<Fields, Relations, AttributesSpec, NextSqlSpec>] extends [never] ? ContractModelBuilder<ModelName, Fields, Relations, AttributesSpec, never, IndexTypes, TSpaceId, Namespace> : ContractModelBuilder<ModelName, Fields, Relations, AttributesSpec, NextSqlSpec, IndexTypes, TSpaceId, Namespace>;
978
+ buildAttributesSpec(): AttributesSpec;
979
+ buildSqlSpec(): SqlSpec;
980
+ }
981
+ type NamedModelTokenShape<ModelName extends string = string, Fields extends Record<string, ScalarFieldBuilder> = Record<string, ScalarFieldBuilder>> = {
982
+ readonly stageOne: {
983
+ readonly modelName?: ModelName;
984
+ readonly fields: Fields;
985
+ };
986
+ };
987
+ type AnyNamedModelToken = NamedModelTokenShape<string, Record<string, ScalarFieldBuilder>>;
988
+ type LazyNamedModelToken<Token extends AnyNamedModelToken = AnyNamedModelToken> = () => Token;
989
+ type RelationFieldSelection<FieldName extends string> = FieldName | readonly FieldName[];
990
+ type RelationModelName<Target> = Target extends NamedModelTokenShape<infer ModelName extends string, Record<string, ScalarFieldBuilder>> ? ModelName : Target extends (() => infer Token) ? RelationModelName<Token> : never;
991
+ type RelationSpaceId<Target> = Target extends {
992
+ readonly __spaceId: infer SpaceId extends string;
993
+ } ? SpaceId : Target extends (() => infer Token) ? RelationSpaceId<Token> : '<self>';
994
+ type RelationModelFieldNames<Target> = Target extends NamedModelTokenShape<string, infer Fields> ? keyof Fields & string : Target extends (() => infer Token) ? RelationModelFieldNames<Token> : never;
995
+ type ContractInput<Family extends FamilyPackRef<string> = FamilyPackRef<string>, Target extends TargetPackRef<'sql', string> = TargetPackRef<'sql', string>, DatabaseTypes extends Record<string, AuthoredStorageTypeInstance> = Record<never, never>, Models extends Record<string, ContractModelBuilder<string | undefined, Record<string, ScalarFieldBuilder>, Record<string, AnyRelationBuilder>, ModelAttributesSpec | undefined, SqlStageSpec | undefined>> = Record<never, never>, Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined> = {
996
+ readonly family: Family;
997
+ readonly target: Target;
998
+ readonly extensions?: Extensions;
999
+ /** The adapter the contract runs with. Its capabilities join the target's and the extensions', as `prisma contract emit` and the runtime join them. The Postgres and SQLite `defineContract` supply it. */
1000
+ readonly adapter?: CapabilityContributor;
1001
+ readonly naming?: NamingConfig;
1002
+ readonly storageHash?: string;
1003
+ readonly foreignKeyDefaults?: ForeignKeyDefaultsState;
1004
+ readonly defaultControlPolicy?: ControlPolicy;
1005
+ /**
1006
+ * Declared namespace coordinates the contract recognises. Per-model
1007
+ * `namespace` references must reference an entry in this list (or the
1008
+ * Postgres-specific late-binding keyword `unbound`). Reserved values:
1009
+ *
1010
+ * - `__unbound__` — IR sentinel for the late-binding slot.
1011
+ * - `__unspecified__` — parser-synthesised AST bucket for top-level
1012
+ * declarations (not a real namespace).
1013
+ * - `unbound` — Postgres-specific reserved keyword (the PSL surface
1014
+ * uses `namespace unbound { … }` to opt into late binding).
1015
+ *
1016
+ * SQLite contracts must declare an empty list (or omit the field) —
1017
+ * SQLite has no schema concept and emits unqualified DDL.
1018
+ *
1019
+ * Populates `SqlStorage.namespaces` together with the
1020
+ * {@link ContractInput.createNamespace} factory: each declared name
1021
+ * (plus the framework-reserved `UNBOUND_NAMESPACE_ID` sentinel) is
1022
+ * resolved through `createNamespace` and stored as the matching slot
1023
+ * value. Models reference declared namespaces via their per-model
1024
+ * `namespace` coordinate; entries that go unreferenced still occupy a
1025
+ * slot so contracts that pre-declare schemas surface them on the live
1026
+ * storage walk.
1027
+ */
1028
+ readonly namespaces?: readonly string[];
1029
+ /**
1030
+ * Target-supplied factory that materialises a `SqlNamespaceBase` concretion
1031
+ * for a declared namespace coordinate. The SQL family layer is
1032
+ * target-agnostic and cannot import concretions like
1033
+ * `PostgresSchema` or `SqliteUnboundDatabase`; the factory is the
1034
+ * seam by which target packs hand the family the right runtime
1035
+ * representation.
1036
+ *
1037
+ * Called once per distinct namespace id discovered in the contract:
1038
+ * each entry of {@link ContractInput.namespaces}, every
1039
+ * `StorageTable.namespaceId` referenced by a model, and the
1040
+ * framework `UNBOUND_NAMESPACE_ID` sentinel (always present so the
1041
+ * late-bound slot stays available regardless of authoring choices).
1042
+ */
1043
+ readonly createNamespace: (input: SqlNamespaceInput) => SqlNamespaceBase;
1044
+ /** The database types this contract space registers in `storage.types`, such as an extension's base type. No column references them. */
1045
+ readonly databaseTypes?: DatabaseTypes;
1046
+ readonly models?: Models;
1047
+ /** The codecs of the packs the contract is authored with; a column's database type is its codec's data type's. */
1048
+ readonly codecLookup: CodecLookupWithDescriptors;
1049
+ /** The data types of the packs the contract is authored with. */
1050
+ readonly dataTypeLookup: DataTypeLookup;
1051
+ /**
1052
+ * Domain enum handles authored via `enumType()`. Each handle lowers to a
1053
+ * domain `enum` entry and a storage `valueSet` entry in the target's
1054
+ * default namespace. Fields reference the enum via `field.namedType(handle)`.
1055
+ */
1056
+ readonly enums?: Record<string, EnumTypeHandle>;
1057
+ /**
1058
+ * Author-declared pack-entity handles, lowered by the pack that registered
1059
+ * each handle's `entityKind` (through the SQL-family batch lowering hook)
1060
+ * into namespace-scoped entry attachments at build time. Generic on
1061
+ * purpose — neither this type nor the walk names a specific kind; a handle
1062
+ * whose kind no composed pack registers is a build error. This is the only
1063
+ * public channel for attaching pack entities.
1064
+ */
1065
+ readonly entities?: readonly PackEntityHandle[];
1066
+ };
1067
+ declare function model<const ModelName extends string, Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder> = Record<never, never>, const Namespace extends string | undefined = undefined>(modelName: ModelName, input: {
1068
+ readonly fields: Fields;
1069
+ readonly relations?: Relations;
1070
+ readonly namespace?: Namespace;
1071
+ }): ContractModelBuilder<ModelName, Fields, Relations, undefined, undefined, Record<never, never>, '<self>', NoInfer<Namespace>>;
1072
+ declare function model<Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder> = Record<never, never>, const Namespace extends string | undefined = undefined>(input: {
1073
+ readonly fields: Fields;
1074
+ readonly relations?: Relations;
1075
+ readonly namespace?: Namespace;
1076
+ }): ContractModelBuilder<undefined, Fields, Relations, undefined, undefined, Record<never, never>, '<self>', NoInfer<Namespace>>;
1077
+ /**
1078
+ * Factory for building a standalone branded extension model handle.
1079
+ *
1080
+ * Use this instead of `new ContractModelBuilder(…)` when constructing handles
1081
+ * for models that live in a foreign contract space (e.g. a Supabase extension
1082
+ * model referenced by a user's contract). The `spaceId` brands the returned
1083
+ * handle so `refs.<field>.spaceId` carries the foreign space identifier.
1084
+ *
1085
+ * @param name - The domain model name as declared in the foreign contract
1086
+ * (e.g. `'AuthUser'`, not a bare table alias like `'User'`).
1087
+ * @param input.namespace - The namespace within the foreign space (e.g. `'auth'`).
1088
+ * @param input.fields - Field definitions (use `field.column(…)`).
1089
+ * @param input.table - The physical table name in the foreign schema.
1090
+ * @param spaceId - The extension space identifier (e.g. `'supabase'`).
1091
+ */
1092
+ declare function extensionModel<const ModelName extends string, Fields extends Record<string, ScalarFieldBuilder>, const TSpaceId extends string>(name: ModelName, input: {
1093
+ readonly namespace: string;
1094
+ readonly fields: Fields;
1095
+ readonly table: string;
1096
+ }, spaceId: TSpaceId): ContractModelBuilder<ModelName, Fields, Record<never, never>, undefined, undefined, Record<never, never>, TSpaceId>;
1097
+ declare function belongsTo<Token extends AnyNamedModelToken, const FromField extends string | readonly string[], const ToField extends RelationFieldSelection<RelationModelFieldNames<Token>>>(toModel: Token | LazyNamedModelToken<Token>, options: {
1098
+ readonly from: FromField;
1099
+ readonly to: ToField;
1100
+ readonly optional?: boolean;
1101
+ }): RelationBuilder<BelongsToRelation<RelationModelName<Token>, FromField, ToField, undefined, RelationSpaceId<Token>>>;
1102
+ declare function belongsTo<ToModel extends string, const FromField extends string | readonly string[], const ToField extends string | readonly string[]>(toModel: ToModel, options: {
1103
+ readonly from: FromField;
1104
+ readonly to: ToField;
1105
+ readonly optional?: boolean;
1106
+ }): RelationBuilder<BelongsToRelation<ToModel, FromField, ToField, undefined, '<self>'>>;
1107
+ declare function hasMany<Token extends AnyNamedModelToken, const ByField extends RelationFieldSelection<RelationModelFieldNames<Token>>>(toModel: Token | LazyNamedModelToken<Token>, options: {
1108
+ readonly by: ByField;
1109
+ }): RelationBuilder<HasManyRelation<RelationModelName<Token>, ByField>>;
1110
+ declare function hasMany<ToModel extends string, const ByField extends string | readonly string[]>(toModel: ToModel, options: {
1111
+ readonly by: ByField;
1112
+ }): RelationBuilder<HasManyRelation<ToModel, ByField>>;
1113
+ declare function hasOne<Token extends AnyNamedModelToken, const ByField extends RelationFieldSelection<RelationModelFieldNames<Token>>>(toModel: Token | LazyNamedModelToken<Token>, options: {
1114
+ readonly by: ByField;
1115
+ }): RelationBuilder<HasOneRelation<RelationModelName<Token>, ByField>>;
1116
+ declare function hasOne<ToModel extends string, const ByField extends string | readonly string[]>(toModel: ToModel, options: {
1117
+ readonly by: ByField;
1118
+ }): RelationBuilder<HasOneRelation<ToModel, ByField>>;
1119
+ declare function manyToMany<ToToken extends AnyNamedModelToken, ThroughToken extends AnyNamedModelToken, const FromField extends RelationFieldSelection<RelationModelFieldNames<ThroughToken>>, const ToField extends RelationFieldSelection<RelationModelFieldNames<ThroughToken>>>(toModel: ToToken | LazyNamedModelToken<ToToken>, options: {
1120
+ readonly through: ThroughToken | LazyNamedModelToken<ThroughToken>;
1121
+ readonly from: FromField;
1122
+ readonly to: ToField;
1123
+ }): RelationBuilder<ManyToManyRelation<RelationModelName<ToToken>, RelationModelName<ThroughToken>, FromField, ToField>>;
1124
+ declare function manyToMany<ToModel extends string, ThroughModel extends string, const FromField extends string | readonly string[], const ToField extends string | readonly string[]>(toModel: ToModel, options: {
1125
+ readonly through: ThroughModel;
1126
+ readonly from: FromField;
1127
+ readonly to: ToField;
1128
+ }): RelationBuilder<ManyToManyRelation<ToModel, ThroughModel, FromField, ToField>>;
1129
+ declare const rel: {
1130
+ belongsTo: typeof belongsTo;
1131
+ hasMany: typeof hasMany;
1132
+ hasOne: typeof hasOne;
1133
+ manyToMany: typeof manyToMany;
1134
+ };
1135
+ declare const field: {
1136
+ column: ColumnFieldHelper<CodecTypesOfNoPacks>;
1137
+ generated: typeof generatedField;
1138
+ namedType: NamedTypeFieldHelper;
1139
+ };
1140
+ type FieldStateOf<T> = T extends ScalarFieldBuilder<infer State> ? State : never;
1141
+ type RelationStateOf<T> = T extends RelationBuilder<infer State> ? State : never;
1142
+ type IdFieldNames<T> = T extends IdConstraint<infer FieldNames> ? FieldNames : readonly string[];
1143
+ type AttributeStageIdFieldNames<T> = T extends {
1144
+ readonly id?: infer I;
1145
+ } ? I extends IdConstraint ? IdFieldNames<I> : undefined : undefined;
1146
+ //#endregion
1147
+ //#region src/authoring-type-utils.d.ts
1148
+ type UnionToIntersection$1<U> = (U extends unknown ? (value: U) => void : never) extends ((value: infer I) => void) ? I : never;
1149
+ type NamedConstraintSpec<Name extends string | undefined = string | undefined> = {
1150
+ readonly name?: Name;
1151
+ };
1152
+ type NamedConstraintState<Enabled extends boolean, Name extends string | undefined = undefined> = Enabled extends true ? NamedConstraintSpec<Name> : undefined;
1153
+ type SupportsNamedConstraintOptions<Descriptor extends AuthoringFieldPresetDescriptor> = Descriptor['output'] extends {
1154
+ readonly id: true;
1155
+ } ? true : Descriptor['output'] extends {
1156
+ readonly unique: true;
1157
+ } ? true : false;
1158
+ type PresetCodecId<Descriptor extends AuthoringFieldPresetDescriptor, Args extends readonly unknown[]> = ResolveTemplateValue<Descriptor['output']['codecId'], Args> extends string ? ResolveTemplateValue<Descriptor['output']['codecId'], Args> : string;
1159
+ type DefinedTypeParams<TypeParams> = { readonly [K in keyof TypeParams as TypeParams[K] extends undefined ? never : K]: TypeParams[K]; };
1160
+ type PresetTypeParams<Descriptor extends AuthoringFieldPresetDescriptor, Args extends readonly unknown[]> = Descriptor['output'] extends {
1161
+ readonly typeParams: infer Template;
1162
+ } ? DefinedTypeParams<ResolveTemplateValue<Template, Args>> extends (infer TypeParams) ? keyof TypeParams extends never ? Record<never, never> : {
1163
+ readonly typeParams: TypeParams;
1164
+ } : Record<never, never> : Record<never, never>;
1165
+ type PresetPhaseTemplate<Defaults, Phase extends GeneratorPhase> = Defaults extends { readonly [K in Phase]: infer Template; } ? Template : undefined;
1166
+ type PresetPhasePresent<Template, Args extends readonly unknown[]> = Template extends {
1167
+ readonly kind: 'select';
1168
+ readonly index: infer Index extends number;
1169
+ readonly cases: infer Cases;
1170
+ } ? Args[Index] extends keyof Cases ? true : false : [Template] extends [undefined] ? false : true;
1171
+ type PresetGeneratesIn<Descriptor extends AuthoringFieldPresetDescriptor, Args extends readonly unknown[], Phase extends GeneratorPhase> = Descriptor['output'] extends {
1172
+ readonly executionDefaults: infer Defaults;
1173
+ } ? PresetPhasePresent<PresetPhaseTemplate<Defaults, Phase>, Args> : false;
1174
+ type FieldBuilderFromPresetDescriptor<Descriptor extends AuthoringFieldPresetDescriptor, Args extends readonly unknown[] = readonly [], ConstraintName extends string | undefined = undefined, CodecTypes extends CodecTypeMap = Record<never, never>> = ScalarFieldBuilder<ScalarFieldState<WithCodecInput<ColumnTypeDescriptor<PresetCodecId<Descriptor, Args>> & PresetTypeParams<Descriptor, Args>, CodecInput<CodecTypes, {
1175
+ readonly codecId: PresetCodecId<Descriptor, Args>;
1176
+ }>>, undefined, ResolveTemplateValue<Descriptor['output']['nullable'], Args> extends true ? true : false, undefined, NamedConstraintState<ResolveTemplateValue<Descriptor['output']['id'], Args> extends true ? true : false, ConstraintName>, NamedConstraintState<ResolveTemplateValue<Descriptor['output']['unique'], Args> extends true ? true : false, ConstraintName>, false, {
1177
+ readonly column: Descriptor['output'] extends {
1178
+ readonly default: object;
1179
+ } ? true : false;
1180
+ readonly onCreate: PresetGeneratesIn<Descriptor, Args, 'onCreate'>;
1181
+ readonly onUpdate: PresetGeneratesIn<Descriptor, Args, 'onUpdate'>;
1182
+ }>>;
1183
+ type FieldHelperFunctionWithoutNamedConstraint<Descriptor extends AuthoringFieldPresetDescriptor, CodecTypes extends CodecTypeMap = Record<never, never>, ValueTypes extends DataTypeArgumentTypes = Record<never, never>> = Descriptor extends {
1184
+ readonly args: infer Args extends readonly AuthoringArgumentDescriptor[];
1185
+ } ? <const Params extends TupleFromArgumentDescriptors<Args, ValueTypes>>(...args: Params) => FieldBuilderFromPresetDescriptor<Descriptor, Params, undefined, CodecTypes> : () => FieldBuilderFromPresetDescriptor<Descriptor, readonly [], undefined, CodecTypes>;
1186
+ /**
1187
+ * An intersection of two call signatures rather than one rest-tuple signature
1188
+ * with a trailing `options?`. Once optional descriptors yield optional tuple
1189
+ * slots, `Params` can infer as the empty tuple, and a single-argument call
1190
+ * such as `field.id.nanoid({ size: 16 })` would bind its preset argument to
1191
+ * the trailing optional `options` parameter. Resolving the no-options
1192
+ * signature first, and falling through to the options-required signature only
1193
+ * when the argument list cannot satisfy it, keeps both spellings working.
1194
+ */
1195
+ type FieldHelperFunctionWithNamedConstraint<Descriptor extends AuthoringFieldPresetDescriptor, CodecTypes extends CodecTypeMap = Record<never, never>, ValueTypes extends DataTypeArgumentTypes = Record<never, never>> = Descriptor extends {
1196
+ readonly args: infer Args extends readonly AuthoringArgumentDescriptor[];
1197
+ } ? (<const Params extends TupleFromArgumentDescriptors<Args, ValueTypes>>(...args: Params) => FieldBuilderFromPresetDescriptor<Descriptor, Params, undefined, CodecTypes>) & (<const Params extends TupleFromArgumentDescriptors<Args, ValueTypes>, const Name extends string | undefined = undefined>(...args: [...params: Params, options: NamedConstraintSpec<Name>]) => FieldBuilderFromPresetDescriptor<Descriptor, Params, Name, CodecTypes>) : <const Name extends string | undefined = undefined>(options?: NamedConstraintSpec<Name>) => FieldBuilderFromPresetDescriptor<Descriptor, readonly [], Name, CodecTypes>;
1198
+ type FieldHelperFunction<Descriptor extends AuthoringFieldPresetDescriptor, CodecTypes extends CodecTypeMap = Record<never, never>, ValueTypes extends DataTypeArgumentTypes = Record<never, never>> = SupportsNamedConstraintOptions<Descriptor> extends true ? FieldHelperFunctionWithNamedConstraint<Descriptor, CodecTypes, ValueTypes> : FieldHelperFunctionWithoutNamedConstraint<Descriptor, CodecTypes, ValueTypes>;
1199
+ type FieldHelpersFromNamespace<Namespace, CodecTypes extends CodecTypeMap = Record<never, never>, ValueTypes extends DataTypeArgumentTypes = Record<never, never>> = { readonly [K in keyof Namespace]: Namespace[K] extends AuthoringFieldPresetDescriptor ? FieldHelperFunction<Namespace[K], CodecTypes, ValueTypes> : Namespace[K] extends Record<string, unknown> ? FieldHelpersFromNamespace<Namespace[K], CodecTypes, ValueTypes> : unknown; };
1200
+ //#endregion
1201
+ //#region src/contract-types.d.ts
1202
+ type PublicCodecTypes<CodecTypes extends Record<string, {
1203
+ readonly output: unknown;
1204
+ }>> = { readonly [CodecId in keyof CodecTypes]: Pick<CodecTypes[CodecId], Extract<keyof CodecTypes[CodecId], 'input' | 'output' | 'traits' | 'keepsWrittenForm'>>; };
1205
+ type ExtractCodecTypesFromPack<P> = P extends {
1206
+ __codecTypes?: infer C extends Record<string, {
1207
+ readonly output: unknown;
1208
+ }>;
1209
+ } ? PublicCodecTypes<C> : Record<never, never>;
1210
+ type MergeExtensionCodecTypes<Packs extends Record<string, unknown>> = UnionToIntersection$1<{ [K in keyof Packs]: ExtractCodecTypesFromPack<Packs[K]>; }[keyof Packs]>;
1211
+ type MergeExtensionCodecTypesSafe<Packs> = Packs extends Record<string, unknown> ? keyof Packs extends never ? Record<never, never> : MergeExtensionCodecTypes<Packs> : Record<never, never>;
1212
+ type ExtractIndexTypesFromPack<P> = P extends {
1213
+ readonly indexTypes: IndexTypeRegistration<infer M>;
1214
+ } ? M : Record<never, never>;
1215
+ type AllIndexTypeLiterals<Packs> = Packs extends Record<string, unknown> ? { [K in keyof Packs]: keyof ExtractIndexTypesFromPack<Packs[K]>; }[keyof Packs] & string : never;
1216
+ type MergeExtensionIndexTypes<Packs extends Record<string, unknown>> = { readonly [Lit in AllIndexTypeLiterals<Packs>]: Extract<{ [K in keyof Packs]: Lit extends keyof ExtractIndexTypesFromPack<Packs[K]> ? ExtractIndexTypesFromPack<Packs[K]>[Lit] : never; }[keyof Packs], {
1217
+ readonly options: unknown;
1218
+ }>; };
1219
+ type DefinitionExtensions<Definition> = Definition extends {
1220
+ readonly extensions?: infer Packs extends Record<string, ExtensionPackRef<'sql', string>>;
1221
+ } ? Packs : Record<never, never>;
1222
+ type ExtractPackCapabilities<P> = P extends {
1223
+ readonly capabilities?: infer Caps extends Record<string, Record<string, boolean>>;
1224
+ } ? Caps : never;
1225
+ type ExtensionCapabilityMatrices<Packs> = Packs extends Record<string, unknown> ? { [K in keyof Packs]: Defaulted<ExtractPackCapabilities<Packs[K]>, Record<never, never>>; }[keyof Packs] : never;
1226
+ type KeysOfEach<T> = T extends unknown ? keyof T : never;
1227
+ type NamespaceOfEach<Matrices, Namespace> = Matrices extends unknown ? Namespace extends keyof Matrices ? Matrices[Namespace] : never : never;
1228
+ type FlagOfEach<Flags, Flag> = Flags extends unknown ? Flag extends keyof Flags ? Flags[Flag] : never : never;
1229
+ type MergeExtensionPackCapabilities<Packs> = { readonly [Namespace in KeysOfEach<ExtensionCapabilityMatrices<Packs>>]: { readonly [Flag in KeysOfEach<NamespaceOfEach<ExtensionCapabilityMatrices<Packs>, Namespace>>]: FlagOfEach<NamespaceOfEach<ExtensionCapabilityMatrices<Packs>, Namespace>, Flag> extends true ? true : false; }; };
1230
+ type Defaulted<T, Fallback> = [T] extends [never] ? Fallback : T;
1231
+ type DefinitionAdapter<Definition> = Definition extends {
1232
+ readonly adapter?: infer Adapter;
1233
+ } ? Present<Adapter> : never;
1234
+ type EnabledCapabilityFlags<Flags> = { readonly [Flag in keyof Flags as Flags[Flag] extends true ? Flag : never]: true; };
1235
+ type EnabledCapabilities<Capabilities> = { readonly [Namespace in keyof Capabilities as keyof EnabledCapabilityFlags<Capabilities[Namespace]> extends never ? never : Namespace]: EnabledCapabilityFlags<Capabilities[Namespace]>; };
1236
+ type OverrideCapabilities<Earlier, Later> = { readonly [Namespace in keyof Earlier | keyof Later]: Namespace extends keyof Later ? Namespace extends keyof Earlier ? Omit<Earlier[Namespace], keyof Later[Namespace]> & Later[Namespace] : Later[Namespace] : Namespace extends keyof Earlier ? Earlier[Namespace] : never; };
1237
+ type DerivedCapabilities<Definition> = EnabledCapabilities<OverrideCapabilities<OverrideCapabilities<Defaulted<ExtractPackCapabilities<DefinitionTarget<Definition>>, Record<never, never>>, Defaulted<ExtractPackCapabilities<DefinitionAdapter<Definition>>, Record<never, never>>>, MergeExtensionPackCapabilities<DefinitionExtensions<Definition>>>>;
1238
+ type ExtractQueryOperationTypesFromPack<P, CodecTypes extends Record<string, {
1239
+ readonly input: unknown;
1240
+ readonly output: unknown;
1241
+ }>> = P extends {
1242
+ readonly __queryOperationTypes?: infer TypeFunction;
1243
+ } ? Present<TypeFunction> extends (infer Defined extends QueryOperationTypesFunction) ? ApplyQueryOperationTypes<Defined, CodecTypes> : Record<never, never> : Record<never, never>;
1244
+ type PackQueryOperationTypes<Definition> = UnionToIntersection$1<{ [K in keyof AllPacks<Definition>]: ExtractQueryOperationTypesFromPack<AllPacks<Definition>[K], CodecTypesFromDefinition<Definition>>; }[keyof AllPacks<Definition>]>;
1245
+ type QueryOperationTypesFromDefinition<Definition> = PackQueryOperationTypes<Definition> extends (infer Operations extends Record<string, unknown>) ? Operations : Record<string, never>;
1246
+ type PackAggregateDescriptors<Pack> = Pack extends {
1247
+ readonly types?: infer Types;
1248
+ } ? Present<Types> extends {
1249
+ readonly aggregateDescriptors?: infer Descriptors;
1250
+ } ? Present<Descriptors> extends ReadonlyArray<infer Descriptor> ? Descriptor extends {
1251
+ readonly operation: infer Operation;
1252
+ } ? string extends Operation ? never : Descriptor : never : never : never : never;
1253
+ type ExtensionAggregateDescriptors<Definition> = { [K in keyof DefinitionExtensions<Definition>]: PackAggregateDescriptors<DefinitionExtensions<Definition>[K]>; }[keyof DefinitionExtensions<Definition>];
1254
+ type AggregateTypesFromDefinition<Definition> = AggregateTypesFromDescriptors<PackAggregateDescriptors<DefinitionTarget<Definition>> | PackAggregateDescriptors<DefinitionAdapter<Definition>> | ExtensionAggregateDescriptors<Definition>, CodecTypesFromDefinition<Definition>>;
1255
+ type DefinitionTargetId<Definition> = Definition extends {
1256
+ readonly target: TargetPackRef<'sql', infer Target>;
1257
+ } ? Target : never;
1258
+ type Present<T> = Exclude<T, undefined>;
1259
+ type CodecTypesFromDefinition<Definition> = ExtractCodecTypesFromPack<Definition extends {
1260
+ readonly target: infer Target;
1261
+ } ? Target : never> & MergeExtensionCodecTypesSafe<DefinitionExtensions<Definition>>;
1262
+ type DefinitionTarget<Definition> = Definition extends {
1263
+ readonly target: infer Target;
1264
+ } ? Target : never;
1265
+ type AllPacks<Definition> = DefinitionExtensions<Definition> & {
1266
+ readonly __target: DefinitionTarget<Definition>;
1267
+ };
1268
+ type DefinitionModels<Definition> = Definition extends {
1269
+ readonly models?: unknown;
1270
+ } ? Present<Definition['models']> extends Record<string, unknown> ? Present<Definition['models']> : Record<never, never> : Record<never, never>;
1271
+ type DefinitionNamespaces<Definition> = Definition extends {
1272
+ readonly namespaces?: infer Names extends readonly string[];
1273
+ } ? string[] extends Names ? never : readonly string[] extends Names ? never : Names[number] : never;
1274
+ type DefinitionTypes<Definition> = Definition extends {
1275
+ readonly databaseTypes?: unknown;
1276
+ } ? Present<Definition['databaseTypes']> extends Record<string, StorageType> ? Present<Definition['databaseTypes']> : Record<never, never> : Record<never, never>;
1277
+ type DefinitionTableNaming<Definition> = Definition extends {
1278
+ readonly naming?: {
1279
+ readonly tables?: infer Strategy extends string;
1280
+ };
1281
+ } ? Strategy : undefined;
1282
+ type DefinitionColumnNaming<Definition> = Definition extends {
1283
+ readonly naming?: {
1284
+ readonly columns?: infer Strategy extends string;
1285
+ };
1286
+ } ? Strategy : undefined;
1287
+ type FirstChar<S extends string> = S extends `${infer First}${string}` ? First : '';
1288
+ type CharKind<C extends string> = C extends '' ? 'end' : C extends Lowercase<C> ? C extends Uppercase<C> ? 'other' : 'lower' : 'upper';
1289
+ type ShouldInsertSnakeUnderscore<PrevKind extends 'start' | 'lower' | 'upper' | 'other' | 'end', Current extends string, Next extends string> = CharKind<Current> extends 'upper' ? PrevKind extends 'start' ? false : PrevKind extends 'lower' | 'other' ? true : CharKind<Next> extends 'lower' ? true : false : false;
1290
+ type SnakeCaseInternal<S extends string, PrevKind extends 'start' | 'lower' | 'upper' | 'other' | 'end' = 'start'> = S extends `${infer Current}${infer Rest}` ? `${ShouldInsertSnakeUnderscore<PrevKind, Current, FirstChar<Rest>> extends true ? '_' : ''}${Lowercase<Current>}${SnakeCaseInternal<Rest, CharKind<Current>>}` : '';
1291
+ type SnakeCase<S extends string> = string extends S ? string : SnakeCaseInternal<S>;
1292
+ type ApplyNamingType<Name extends string, Strategy extends string | undefined> = string extends Name ? string : Strategy extends 'snake_case' ? SnakeCase<Name> : Name;
1293
+ type ModelNames<Definition> = keyof DefinitionModels<Definition> & string;
1294
+ type ModelFields<Definition, ModelName extends ModelNames<Definition>> = DefinitionModels<Definition>[ModelName] extends {
1295
+ readonly stageOne: {
1296
+ readonly fields: Record<string, ScalarFieldBuilder>;
1297
+ };
1298
+ } ? DefinitionModels<Definition>[ModelName]['stageOne']['fields'] : Record<never, never>;
1299
+ type ModelFieldNames<Definition, ModelName extends ModelNames<Definition>> = keyof ModelFields<Definition, ModelName> & string;
1300
+ type StagedModelRelations<Definition, ModelName extends ModelNames<Definition>> = DefinitionModels<Definition>[ModelName] extends {
1301
+ readonly stageOne: {
1302
+ readonly relations: infer R;
1303
+ };
1304
+ } ? R extends Record<string, unknown> ? R : Record<never, never> : Record<never, never>;
1305
+ type StagedModelRelationNames<Definition, ModelName extends ModelNames<Definition>> = keyof StagedModelRelations<Definition, ModelName> & string;
1306
+ type ModelFieldState<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>> = FieldStateOf<ModelFields<Definition, ModelName>[FieldName]>;
1307
+ type ModelSql<Definition, ModelName extends ModelNames<Definition>> = DefinitionModels<Definition>[ModelName] extends {
1308
+ readonly __sql: infer SqlSpec;
1309
+ } ? SqlSpec : undefined;
1310
+ type ModelAttributes<Definition, ModelName extends ModelNames<Definition>> = DefinitionModels<Definition>[ModelName] extends {
1311
+ readonly __attributes: infer AttributesSpec;
1312
+ } ? AttributesSpec : undefined;
1313
+ type FieldDescriptorOf<FieldState> = Present<FieldState extends {
1314
+ readonly descriptor?: infer Descriptor;
1315
+ } ? Descriptor : never>;
1316
+ type FieldEnumHandleOf<FieldState> = Present<FieldState extends {
1317
+ readonly enumHandle?: infer EnumHandle;
1318
+ } ? EnumHandle : never>;
1319
+ type FieldNullableOf<FieldState> = FieldState extends {
1320
+ readonly nullable: infer Nullable extends boolean;
1321
+ } ? Nullable : boolean;
1322
+ type FieldManyOf<FieldState> = FieldState extends {
1323
+ readonly many: infer Many extends false | {
1324
+ readonly elementNullable: boolean;
1325
+ };
1326
+ } ? Many : false;
1327
+ type FieldDefaultPresenceOf<FieldState> = Present<FieldState extends {
1328
+ readonly __defaultPresence?: infer Defaults;
1329
+ } ? Defaults : never>;
1330
+ type FieldHasColumnDefault<FieldState> = FieldDefaultPresenceOf<FieldState> extends {
1331
+ readonly column: true;
1332
+ } ? true : false;
1333
+ type FieldGeneratesIn<FieldState, Phase extends GeneratorPhase> = FieldDefaultPresenceOf<FieldState> extends { readonly [K in Phase]: true; } ? true : false;
1334
+ type GeneratedPhaseKeys<FieldState> = (FieldGeneratesIn<FieldState, 'onCreate'> extends true ? {
1335
+ readonly onCreate: ExecutionMutationDefaultValue;
1336
+ } : unknown) & (FieldGeneratesIn<FieldState, 'onUpdate'> extends true ? {
1337
+ readonly onUpdate: ExecutionMutationDefaultValue;
1338
+ } : unknown);
1339
+ type FieldColumnOverrideOf<FieldState> = Present<FieldState extends {
1340
+ readonly columnName?: infer ColumnName;
1341
+ } ? ColumnName : never>;
1342
+ type FieldInlineIdSpecOf<FieldState> = Present<FieldState extends {
1343
+ readonly id?: infer IdSpec;
1344
+ } ? IdSpec : never>;
1345
+ type DescriptorCodecId<Descriptor> = Descriptor extends {
1346
+ readonly codecId: infer CodecId extends string;
1347
+ } ? string extends CodecId ? ColumnSpecCodecId<Descriptor> : CodecId : string;
1348
+ type ColumnSpecCodecId<Descriptor> = Descriptor extends {
1349
+ readonly codecFactory: (...args: never[]) => {
1350
+ readonly id: infer Id extends string;
1351
+ };
1352
+ } ? Id : string;
1353
+ type DescriptorTypeParams<Descriptor> = Descriptor extends {
1354
+ readonly typeParams: infer TypeParams extends Record<string, unknown>;
1355
+ } ? [keyof TypeParams] extends [never] ? undefined : TypeParams : undefined;
1356
+ type EnumFieldHandle<FieldState> = [FieldEnumHandleOf<FieldState>] extends [never] ? never : FieldEnumHandleOf<FieldState> extends EnumTypeHandle ? FieldEnumHandleOf<FieldState> : never;
1357
+ type EnumHandleDescriptor<Handle> = Handle extends {
1358
+ readonly codecId: infer CodecId extends string;
1359
+ } ? {
1360
+ readonly codecId: CodecId;
1361
+ } : never;
1362
+ type ResolveFieldDescriptor<FieldState> = [EnumFieldHandle<FieldState>] extends [never] ? FieldDescriptorOf<FieldState> : EnumHandleDescriptor<EnumFieldHandle<FieldState>>;
1363
+ type ResolveFieldColumnTypeParams<FieldState> = DescriptorTypeParams<FieldDescriptorOf<FieldState>>;
1364
+ type ModelTableName<Definition, ModelName extends ModelNames<Definition>> = [Present<ModelSql<Definition, ModelName> extends {
1365
+ readonly table?: infer TableName;
1366
+ } ? TableName : never>] extends [never] ? ApplyNamingType<ModelName, DefinitionTableNaming<Definition>> : Present<ModelSql<Definition, ModelName> extends {
1367
+ readonly table?: infer TableName;
1368
+ } ? TableName : never> extends (infer ExplicitTableName extends string) ? ExplicitTableName : ApplyNamingType<ModelName, DefinitionTableNaming<Definition>>;
1369
+ type ModelColumnName<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>> = [FieldColumnOverrideOf<ModelFieldState<Definition, ModelName, FieldName>>] extends [never] ? ApplyNamingType<FieldName, DefinitionColumnNaming<Definition>> : FieldColumnOverrideOf<ModelFieldState<Definition, ModelName, FieldName>> extends (infer ExplicitColumnName extends string) ? ExplicitColumnName : ApplyNamingType<FieldName, DefinitionColumnNaming<Definition>>;
1370
+ type FieldNamesToColumnNames<Definition, ModelName extends ModelNames<Definition>, FieldNames extends readonly string[]> = FieldNames extends readonly [] ? readonly [] : FieldNames extends readonly [infer First extends ModelFieldNames<Definition, ModelName>, ...infer Rest extends readonly string[]] ? readonly [ModelColumnName<Definition, ModelName, First>, ...FieldNamesToColumnNames<Definition, ModelName, Rest>] : readonly string[];
1371
+ type InlineIdFieldName<Definition, ModelName extends ModelNames<Definition>> = { [FieldName in ModelFieldNames<Definition, ModelName>]: [FieldInlineIdSpecOf<ModelFieldState<Definition, ModelName, FieldName>>] extends [never] ? never : FieldName; }[ModelFieldNames<Definition, ModelName>];
1372
+ type InlineIdFieldNames<Definition, ModelName extends ModelNames<Definition>> = [InlineIdFieldName<Definition, ModelName>] extends [never] ? undefined : readonly [InlineIdFieldName<Definition, ModelName>];
1373
+ type InlineIdName<Definition, ModelName extends ModelNames<Definition>> = { [FieldName in ModelFieldNames<Definition, ModelName>]: FieldInlineIdSpecOf<ModelFieldState<Definition, ModelName, FieldName>> extends {
1374
+ readonly name?: infer Name extends string;
1375
+ } ? Name : never; }[ModelFieldNames<Definition, ModelName>];
1376
+ type AttributeIdFieldNames<Definition, ModelName extends ModelNames<Definition>> = AttributeStageIdFieldNames<ModelAttributes<Definition, ModelName>>;
1377
+ type AttributeIdName<Definition, ModelName extends ModelNames<Definition>> = Present<ModelAttributes<Definition, ModelName> extends {
1378
+ readonly id?: {
1379
+ readonly name?: infer Name extends string;
1380
+ };
1381
+ } ? Name : never>;
1382
+ type ModelIdFieldNames<Definition, ModelName extends ModelNames<Definition>> = [AttributeIdFieldNames<Definition, ModelName>] extends [undefined] ? InlineIdFieldNames<Definition, ModelName> : AttributeIdFieldNames<Definition, ModelName>;
1383
+ type ModelIdName<Definition, ModelName extends ModelNames<Definition>> = [AttributeIdName<Definition, ModelName>] extends [never] ? Present<InlineIdName<Definition, ModelName>> : AttributeIdName<Definition, ModelName>;
1384
+ type StorageColumn<CodecId extends string, Nullable extends boolean, TypeParams extends Record<string, unknown> | undefined = undefined, Many extends false | {
1385
+ readonly elementNullable: boolean;
1386
+ } = false, HasDefault extends boolean = false> = {
1387
+ readonly dataType: string;
1388
+ readonly codecId: CodecId;
1389
+ readonly nullable: Nullable;
1390
+ } & (HasDefault extends true ? {
1391
+ readonly default: ColumnDefault;
1392
+ } : Record<never, never>) & (TypeParams extends Record<string, unknown> ? {
1393
+ readonly typeParams: TypeParams;
1394
+ } : Record<never, never>) & {
1395
+ readonly many: Many;
1396
+ };
1397
+ type ModelStorageColumn<Definition, ModelName extends ModelNames<Definition>, FieldName extends string> = FieldName extends ModelFieldNames<Definition, ModelName> ? StorageColumn<DescriptorCodecId<ResolveFieldDescriptor<ModelFieldState<Definition, ModelName, FieldName>>>, FieldNullableOf<ModelFieldState<Definition, ModelName, FieldName>>, ResolveFieldColumnTypeParams<ModelFieldState<Definition, ModelName, FieldName>>, FieldManyOf<ModelFieldState<Definition, ModelName, FieldName>>, FieldHasColumnDefault<ModelFieldState<Definition, ModelName, FieldName>>> : never;
1398
+ type StagedRelationState<Definition, ModelName extends ModelNames<Definition>, RelName extends StagedModelRelationNames<Definition, ModelName>> = StagedModelRelations<Definition, ModelName>[RelName] extends {
1399
+ readonly __state: infer State;
1400
+ } ? State : never;
1401
+ type RelationSourceModelName<Source> = Source extends {
1402
+ readonly modelName: infer Name extends string;
1403
+ } ? Name : Source extends {
1404
+ readonly resolve: () => infer Name extends string;
1405
+ } ? Name : never;
1406
+ type RelationFieldTuple<Fields> = Fields extends readonly string[] ? Fields : readonly [Extract<Fields, string>];
1407
+ type RelationFieldUnion<Fields> = Fields extends readonly (infer FieldName)[] ? FieldName : Fields;
1408
+ type ModelAnchorFieldNames<Definition, ModelName extends ModelNames<Definition>> = ModelIdFieldNames<Definition, ModelName> extends (infer IdFields extends readonly string[]) ? IdFields : readonly ['id'];
1409
+ type AnyFieldNullable<Definition, ModelName extends ModelNames<Definition>, Fields> = true extends (RelationFieldUnion<Fields> extends (infer FieldName) ? FieldName extends ModelFieldNames<Definition, ModelName> ? FieldNullableOf<ModelFieldState<Definition, ModelName, FieldName>> : boolean : never) ? true : false;
1410
+ type BelongsToNullable<Definition, ModelName extends ModelNames<Definition>, State> = AnyFieldNullable<Definition, ModelName, State extends {
1411
+ readonly from: infer From;
1412
+ } ? From : never>;
1413
+ type BuiltRelationTarget<Definition, Target extends ModelNames<Definition>> = {
1414
+ readonly namespace: ModelNamespace<Definition, Target> & NamespaceId;
1415
+ readonly model: Target;
1416
+ };
1417
+ type JunctionTargetColumns<Definition, Target extends ModelNames<Definition>> = ModelIdFieldNames<Definition, Target> extends (infer IdFields extends readonly string[]) ? FieldNamesToColumnNames<Definition, Target, IdFields> : BuiltUnique<Definition, Target>['columns'];
1418
+ type BuiltManyToManyRelation<Definition, ModelName extends ModelNames<Definition>, Target extends ModelNames<Definition>, State> = State extends {
1419
+ readonly through: infer ThroughSource;
1420
+ readonly from: infer From;
1421
+ readonly to: infer To;
1422
+ } ? RelationSourceModelName<ThroughSource> extends (infer Through extends ModelNames<Definition>) ? {
1423
+ readonly to: BuiltRelationTarget<Definition, Target>;
1424
+ readonly cardinality: 'N:M';
1425
+ readonly on: {
1426
+ readonly localFields: ModelAnchorFieldNames<Definition, ModelName>;
1427
+ readonly targetFields: FieldNamesToColumnNames<Definition, Through, RelationFieldTuple<From>>;
1428
+ };
1429
+ readonly through: {
1430
+ readonly table: ModelTableName<Definition, Through>;
1431
+ readonly namespaceId: ModelNamespace<Definition, Through>;
1432
+ readonly parentColumns: FieldNamesToColumnNames<Definition, Through, RelationFieldTuple<From>>;
1433
+ readonly childColumns: FieldNamesToColumnNames<Definition, Through, RelationFieldTuple<To>>;
1434
+ readonly targetColumns: JunctionTargetColumns<Definition, Target>;
1435
+ };
1436
+ } : ContractRelation : ContractRelation;
1437
+ type BuiltSameSpaceRelationByKind<Definition, ModelName extends ModelNames<Definition>, Target extends ModelNames<Definition>, State> = State extends {
1438
+ readonly kind: 'belongsTo';
1439
+ readonly from: infer From;
1440
+ readonly to: infer To;
1441
+ } ? {
1442
+ readonly to: BuiltRelationTarget<Definition, Target>;
1443
+ readonly cardinality: 'N:1';
1444
+ readonly nullable: BelongsToNullable<Definition, ModelName, State>;
1445
+ readonly on: {
1446
+ readonly localFields: RelationFieldTuple<From>;
1447
+ readonly targetFields: RelationFieldTuple<To>;
1448
+ };
1449
+ } : State extends {
1450
+ readonly kind: 'hasMany';
1451
+ readonly by: infer By;
1452
+ } ? {
1453
+ readonly to: BuiltRelationTarget<Definition, Target>;
1454
+ readonly cardinality: '1:N';
1455
+ readonly on: {
1456
+ readonly localFields: ModelAnchorFieldNames<Definition, ModelName>;
1457
+ readonly targetFields: RelationFieldTuple<By>;
1458
+ };
1459
+ } : State extends {
1460
+ readonly kind: 'hasOne';
1461
+ readonly by: infer By;
1462
+ } ? {
1463
+ readonly to: BuiltRelationTarget<Definition, Target>;
1464
+ readonly cardinality: '1:1';
1465
+ readonly nullable: true;
1466
+ readonly on: {
1467
+ readonly localFields: ModelAnchorFieldNames<Definition, ModelName>;
1468
+ readonly targetFields: RelationFieldTuple<By>;
1469
+ };
1470
+ } : State extends {
1471
+ readonly kind: 'manyToMany';
1472
+ } ? BuiltManyToManyRelation<Definition, ModelName, Target, State> : ContractRelation;
1473
+ type IsOtherSpaceTarget<State> = State extends {
1474
+ readonly __targetSpaceId?: infer SpaceId;
1475
+ } ? [Present<SpaceId>] extends ['<self>'] ? false : true : false;
1476
+ type BuiltRelation<Definition, ModelName extends ModelNames<Definition>, State> = IsOtherSpaceTarget<State> extends true ? ContractRelation : BuiltSameSpaceRelation<Definition, ModelName, State>;
1477
+ type BuiltSameSpaceRelation<Definition, ModelName extends ModelNames<Definition>, State> = State extends {
1478
+ readonly toModel: infer Source;
1479
+ } ? RelationSourceModelName<Source> extends (infer Target extends ModelNames<Definition>) ? BuiltSameSpaceRelationByKind<Definition, ModelName, Target, State> : ContractRelation : ContractRelation;
1480
+ type ExecutionDefaultEntries<Definition> = { [ModelName in ModelNames<Definition>]: { [FieldName in ModelFieldNames<Definition, ModelName>]: true extends FieldGeneratesIn<ModelFieldState<Definition, ModelName, FieldName>, 'onCreate'> | FieldGeneratesIn<ModelFieldState<Definition, ModelName, FieldName>, 'onUpdate'> ? ContractExecutionSection['mutations']['defaults'][number] & GeneratedPhaseKeys<ModelFieldState<Definition, ModelName, FieldName>> & {
1481
+ readonly ref: {
1482
+ readonly namespace: ModelNamespace<Definition, ModelName>;
1483
+ readonly entry: ModelTableName<Definition, ModelName>;
1484
+ readonly field: ModelColumnName<Definition, ModelName, FieldName>;
1485
+ };
1486
+ } : never; }[ModelFieldNames<Definition, ModelName>]; }[ModelNames<Definition>];
1487
+ type BuiltExecution<Definition> = [ExecutionDefaultEntries<Definition>] extends [never] ? {
1488
+ readonly execution?: ContractExecutionSection;
1489
+ } : {
1490
+ readonly execution: ContractExecutionSection & {
1491
+ readonly mutations: {
1492
+ readonly defaults: ReadonlyArray<ExecutionDefaultEntries<Definition>>;
1493
+ };
1494
+ };
1495
+ };
1496
+ type DomainFieldTypeParams<TypeParams> = TypeParams extends Record<string, unknown> ? keyof TypeParams extends never ? Record<never, never> : {
1497
+ readonly typeParams: TypeParams;
1498
+ } : Record<never, never>;
1499
+ type DomainFieldMany<Many> = Many extends false ? Record<never, never> : {
1500
+ readonly many: Many;
1501
+ };
1502
+ type BuiltModels<Definition> = { readonly [ModelName in ModelNames<Definition>]: {
1503
+ readonly storage: {
1504
+ readonly table: ModelTableName<Definition, ModelName>;
1505
+ readonly namespaceId: ModelNamespace<Definition, ModelName>;
1506
+ readonly fields: { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: {
1507
+ readonly column: ModelColumnName<Definition, ModelName, FieldName>;
1508
+ }; };
1509
+ };
1510
+ readonly fields: { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: {
1511
+ readonly nullable: ModelStorageColumn<Definition, ModelName, FieldName>['nullable'];
1512
+ readonly type: {
1513
+ readonly kind: 'scalar';
1514
+ readonly codecId: ModelStorageColumn<Definition, ModelName, FieldName>['codecId'];
1515
+ } & DomainFieldTypeParams<FieldColumnTypeParams<ModelFieldState<Definition, ModelName, FieldName>>>;
1516
+ } & DomainFieldMany<FieldManyOf<ModelFieldState<Definition, ModelName, FieldName>>>; };
1517
+ readonly relations: { readonly [RelName in StagedModelRelationNames<Definition, ModelName>]: BuiltRelation<Definition, ModelName, StagedRelationState<Definition, ModelName, RelName>>; };
1518
+ }; };
1519
+ type BuiltModelColumnMappings<Definition, ModelName extends ModelNames<Definition>> = BuiltModels<Definition>[ModelName]['storage']['fields'];
1520
+ type BuiltModelTableName<Definition, ModelName extends ModelNames<Definition>> = BuiltModels<Definition>[ModelName]['storage']['table'];
1521
+ type BuiltStorageTableColumns<Definition, ModelName extends ModelNames<Definition>> = { readonly [FieldName in keyof BuiltModelColumnMappings<Definition, ModelName> & string as BuiltModelColumnMappings<Definition, ModelName>[FieldName]['column']]: ModelStorageColumn<Definition, ModelName, FieldName>; };
1522
+ type FieldUniqueSpecOf<FieldState> = FieldState extends {
1523
+ readonly unique: infer UniqueSpec;
1524
+ } ? [UniqueSpec] extends [{
1525
+ readonly name?: infer Name;
1526
+ }] ? {
1527
+ readonly name: Name;
1528
+ } : never : never;
1529
+ type UniqueName$1<Name> = Present<Name> extends (infer Defined extends string) ? Defined : never;
1530
+ type InlineUnique<Definition, ModelName extends ModelNames<Definition>> = { [FieldName in ModelFieldNames<Definition, ModelName>]: FieldUniqueSpecOf<ModelFieldState<Definition, ModelName, FieldName>> extends (infer Spec) ? [Spec] extends [never] ? never : Spec extends {
1531
+ readonly name: infer Name;
1532
+ } ? {
1533
+ readonly columns: readonly [ModelColumnName<Definition, ModelName, FieldName>];
1534
+ readonly name?: UniqueName$1<Name>;
1535
+ } : never : never; }[ModelFieldNames<Definition, ModelName>];
1536
+ type AttributeUnique<Definition, ModelName extends ModelNames<Definition>> = ModelAttributes<Definition, ModelName> extends {
1537
+ readonly uniques?: infer Uniques extends readonly unknown[];
1538
+ } ? Uniques[number] extends (infer Unique) ? Unique extends {
1539
+ readonly fields: infer Fields extends readonly string[];
1540
+ } ? number extends Fields['length'] ? never : {
1541
+ readonly columns: FieldNamesToColumnNames<Definition, ModelName, Fields>;
1542
+ readonly name?: Unique extends {
1543
+ readonly name?: infer Name;
1544
+ } ? UniqueName$1<Name> : never;
1545
+ } : never : never : never;
1546
+ type BuiltUnique<Definition, ModelName extends ModelNames<Definition>> = InlineUnique<Definition, ModelName> | AttributeUnique<Definition, ModelName>;
1547
+ type JoinColumns<Columns> = Columns extends readonly [infer Only extends string] ? Only : Columns extends readonly [infer First extends string, ...infer Rest] ? `${First}_${JoinColumns<Rest>}` : string;
1548
+ type SameColumns<A, B> = [A] extends [B] ? ([B] extends [A] ? true : false) : false;
1549
+ type ModelColumnOf<Definition, ModelName extends ModelNames<Definition>> = { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: ModelColumnName<Definition, ModelName, FieldName>; };
1550
+ type DeclaredIndexConstraints<Definition, ModelName extends ModelNames<Definition>> = ModelSql<Definition, ModelName> extends {
1551
+ readonly indexes?: infer Indexes extends readonly unknown[];
1552
+ } ? Indexes : readonly [];
1553
+ type IndexColumns<Definition, ModelName extends ModelNames<Definition>, Constraint> = [Constraint] extends [{
1554
+ readonly fields?: infer Fields;
1555
+ }] ? Present<Fields> extends (infer Defined extends readonly string[]) ? [Defined] extends [never] ? readonly [] : number extends Defined['length'] ? readonly string[] : FieldNamesToColumnNames<Definition, ModelName, Defined> : readonly [] : readonly [];
1556
+ type IndexSpecOfConstraint<Constraint> = [Constraint] extends [{
1557
+ readonly __spec?: infer Spec;
1558
+ }] ? Present<Spec> : never;
1559
+ type IndexMapOf<Constraint> = IndexSpecOfConstraint<Constraint> extends {
1560
+ readonly map: infer Map extends string;
1561
+ } ? Map : never;
1562
+ type IndexNameOf<Constraint> = [Constraint] extends [{
1563
+ readonly name?: infer Name;
1564
+ }] ? Present<Name> extends (infer Defined extends string) ? Defined : never : never;
1565
+ type IndexNaming<Definition, ModelName extends ModelNames<Definition>, Constraint> = [IndexMapOf<Constraint>] extends [never] ? {
1566
+ readonly name: string;
1567
+ readonly prefix: [IndexNameOf<Constraint>] extends [never] ? `${ModelTableName<Definition, ModelName>}_${JoinColumns<IndexColumns<Definition, ModelName, Constraint>>}_idx` : IndexNameOf<Constraint>;
1568
+ } : {
1569
+ readonly name: IndexMapOf<Constraint>;
1570
+ };
1571
+ type IndexMethod<Definition, ModelName extends ModelNames<Definition>, Constraint> = [IndexSpecOfConstraint<Constraint>] extends [never] ? Record<never, never> : IndexMethodOfSpec<Definition, ModelName, IndexSpecOfConstraint<Constraint>>;
1572
+ type IndexMethodOfSpec<Definition, ModelName extends ModelNames<Definition>, Spec> = (Spec extends {
1573
+ readonly type: infer Type extends string;
1574
+ } ? {
1575
+ readonly type: Type;
1576
+ } : Record<never, never>) & (Spec extends {
1577
+ readonly options: infer Options;
1578
+ } ? [Options] extends [undefined] ? Record<never, never> : {
1579
+ readonly options: Options extends IndexOptionsFunction ? (Options & {
1580
+ readonly columnOf: ModelColumnOf<Definition, ModelName>;
1581
+ })['options'] : Options;
1582
+ } : Record<never, never>);
1583
+ type BuiltDeclaredIndexOf<Definition, ModelName extends ModelNames<Definition>, Constraint> = IndexNaming<Definition, ModelName, Constraint> & {
1584
+ readonly columns: IndexColumns<Definition, ModelName, Constraint>;
1585
+ readonly unique: boolean;
1586
+ } & IndexMethod<Definition, ModelName, Constraint>;
1587
+ type BuiltDeclaredIndexesOf<Definition, ModelName extends ModelNames<Definition>, Constraints extends readonly unknown[]> = { readonly [K in keyof Constraints]: BuiltDeclaredIndexOf<Definition, ModelName, Constraints[K]>; }[number];
1588
+ type BuiltDeclaredIndex<Definition, ModelName extends ModelNames<Definition>> = BuiltDeclaredIndexesOf<Definition, ModelName, DeclaredIndexConstraints<Definition, ModelName>>;
1589
+ type DefaultForeignKeyIndex<Definition> = Definition extends {
1590
+ readonly foreignKeyDefaults?: infer Defaults;
1591
+ } ? [Present<Defaults>] extends [never] ? true : Present<Defaults> extends {
1592
+ readonly index: false;
1593
+ } ? false : true : true;
1594
+ type DerivesBackingIndex<Definition, Intent> = [Present<Intent>] extends [never] ? DefaultForeignKeyIndex<Definition> : Present<Intent> extends false ? false : Present<Intent> extends true ? true : Present<Intent> extends string ? string extends Present<Intent> ? DefaultForeignKeyIndex<Definition> : false : DefaultForeignKeyIndex<Definition>;
1595
+ type RelationForeignKey<RelationSql> = [Present<RelationSql>] extends [never] ? never : Present<RelationSql> extends {
1596
+ readonly fk?: infer ForeignKey;
1597
+ } ? Present<ForeignKey> : never;
1598
+ type ModelForeignKeyFields<Definition, ModelName extends ModelNames<Definition>> = (ModelSql<Definition, ModelName> extends {
1599
+ readonly foreignKeys?: infer ForeignKeys extends readonly unknown[];
1600
+ } ? ForeignKeys[number] extends (infer ForeignKey) ? ForeignKey extends {
1601
+ readonly fields: infer Fields extends readonly string[];
1602
+ } ? DerivesBackingIndex<Definition, ForeignKey extends {
1603
+ readonly index?: infer Intent;
1604
+ } ? Intent : undefined> extends true ? Fields : never : never : never : never) | { [RelName in StagedModelRelationNames<Definition, ModelName>]: StagedRelationState<Definition, ModelName, RelName> extends {
1605
+ readonly kind: 'belongsTo';
1606
+ readonly from: infer From;
1607
+ readonly sql?: infer RelationSql;
1608
+ } ? RelationForeignKey<RelationSql> extends (infer ForeignKey) ? [ForeignKey] extends [never] ? never : DerivesBackingIndex<Definition, ForeignKey extends {
1609
+ readonly index?: infer Intent;
1610
+ } ? Intent : undefined> extends true ? RelationFieldTuple<From> : never : never : never; }[StagedModelRelationNames<Definition, ModelName>];
1611
+ type BackingIndexIsRedundant<Definition, ModelName extends ModelNames<Definition>, Columns> = true extends SameColumns<Columns, ModelIdFieldNames<Definition, ModelName> extends (infer IdFields extends readonly string[]) ? FieldNamesToColumnNames<Definition, ModelName, IdFields> : never> | (BuiltUnique<Definition, ModelName> extends (infer Unique) ? Unique extends {
1612
+ readonly columns: infer UniqueColumns;
1613
+ } ? SameColumns<Columns, UniqueColumns> : never : never) | (PlainDeclaredIndexColumns<Definition, ModelName> extends (infer DeclaredColumns) ? DeclaredColumns extends unknown ? SameColumns<Columns, DeclaredColumns> : never : never) ? true : false;
1614
+ type PlainDeclaredIndexColumnsOf<Definition, ModelName extends ModelNames<Definition>, Constraints extends readonly unknown[]> = { readonly [K in keyof Constraints]: IndexSpecOfConstraint<Constraints[K]> extends {
1615
+ readonly type: undefined;
1616
+ readonly options: undefined;
1617
+ readonly partial: false;
1618
+ } ? IndexColumns<Definition, ModelName, Constraints[K]> : never; }[number];
1619
+ type PlainDeclaredIndexColumns<Definition, ModelName extends ModelNames<Definition>> = PlainDeclaredIndexColumnsOf<Definition, ModelName, DeclaredIndexConstraints<Definition, ModelName>>;
1620
+ type AsciiCharacter = ' ' | '!' | '"' | '#' | '$' | '%' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | '-' | '.' | '/' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | ':' | ';' | '<' | '=' | '>' | '?' | '@' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' | '[' | '\\' | ']' | '^' | '_' | '`' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | '{' | '|' | '}' | '~';
1621
+ /**
1622
+ * A derived wire-name prefix as the build shortens it: to its first 54 bytes (`WIRE_NAME_PREFIX_MAX_BYTES`). Each ASCII character is one byte. A name with another character before the cut has a byte length the type does not count, so it gives `never` and the index has no name in the type.
1623
+ */
1624
+ type DerivedWireNamePrefix<Name extends string, Kept extends string = '', Bytes extends readonly unknown[] = []> = string extends Name ? string : Bytes['length'] extends 54 ? Kept : Name extends `${infer Character}${infer Rest}` ? Character extends AsciiCharacter ? DerivedWireNamePrefix<Rest, `${Kept}${Character}`, [...Bytes, unknown]> : never : Kept;
1625
+ type BuiltBackingIndex<Definition, ModelName extends ModelNames<Definition>> = ModelForeignKeyFields<Definition, ModelName> extends (infer Fields) ? Fields extends readonly string[] ? FieldNamesToColumnNames<Definition, ModelName, Fields> extends (infer Columns) ? BackingIndexIsRedundant<Definition, ModelName, Columns> extends true ? never : {
1626
+ readonly name: string;
1627
+ readonly prefix: DerivedWireNamePrefix<`${ModelTableName<Definition, ModelName>}_${JoinColumns<Columns>}_idx`>;
1628
+ readonly columns: Columns;
1629
+ readonly unique: false;
1630
+ } : never : never : never;
1631
+ type BuiltIndex<Definition, ModelName extends ModelNames<Definition>> = BuiltDeclaredIndex<Definition, ModelName> | BuiltBackingIndex<Definition, ModelName>;
1632
+ type BuiltStorageTables<Definition, Ns extends string> = { readonly [ModelName in ModelsInNamespace<Definition, Ns> as BuiltModelTableName<Definition, ModelName>]: {
1633
+ readonly columns: BuiltStorageTableColumns<Definition, ModelName>;
1634
+ readonly uniques: ReadonlyArray<BuiltUnique<Definition, ModelName>>;
1635
+ readonly indexes: ReadonlyArray<BuiltIndex<Definition, ModelName>>;
1636
+ readonly foreignKeys: ReadonlyArray<{
1637
+ readonly source: {
1638
+ readonly namespaceId: NamespaceId;
1639
+ readonly tableName: string;
1640
+ readonly columns: readonly string[];
1641
+ };
1642
+ readonly target: {
1643
+ readonly namespaceId: NamespaceId;
1644
+ readonly spaceId?: string;
1645
+ readonly tableName: string;
1646
+ readonly columns: readonly string[];
1647
+ };
1648
+ readonly name?: string;
1649
+ readonly onDelete?: ReferentialAction;
1650
+ readonly onUpdate?: ReferentialAction;
1651
+ readonly index?: ForeignKeyIndex;
1652
+ }>;
1653
+ } & (ModelIdFieldNames<Definition, ModelName> extends readonly string[] ? {
1654
+ readonly primaryKey: {
1655
+ readonly columns: FieldNamesToColumnNames<Definition, ModelName, ModelIdFieldNames<Definition, ModelName>>;
1656
+ readonly name?: ModelIdName<Definition, ModelName>;
1657
+ };
1658
+ } : Record<never, never>); };
1659
+ type DefinitionEnums<Definition> = Definition extends {
1660
+ readonly enums?: infer E;
1661
+ } ? Present<E> extends Record<string, EnumTypeHandle> ? string extends keyof Present<E> ? Record<never, never> : Present<E> : Record<never, never> : Record<never, never>;
1662
+ type BuiltDocumentScopedTypes<Definition> = { readonly [K in keyof DefinitionTypes<Definition> as DefinitionTypes<Definition>[K] extends AuthoredStorageTypeInstance ? K : never]: DefinitionTypes<Definition>[K] & {
1663
+ readonly dataType: string;
1664
+ }; };
1665
+ type BuiltDomain<Definition> = BuiltDocumentScopedTypes<Definition> extends Record<never, never> ? Record<never, never> : {
1666
+ readonly __unbound__: {
1667
+ readonly types: BuiltDocumentScopedTypes<Definition>;
1668
+ };
1669
+ };
1670
+ type HandleName<Handle> = Handle extends EnumTypeHandle<infer Name> ? Name : never;
1671
+ type StoredEnumValue<Value> = Value extends JsonValue ? Value : JsonValue;
1672
+ type EnumHandleMembers<Handle, Stored extends boolean> = Handle extends EnumTypeHandle<string, infer Values, infer Names> ? { readonly [I in keyof Values]: {
1673
+ readonly name: I extends keyof Names ? Names[I] : never;
1674
+ readonly value: Stored extends true ? StoredEnumValue<Values[I]> : Values[I];
1675
+ }; } : never;
1676
+ type EnumHandleEntries<Enums> = { readonly [K in keyof Enums as HandleName<Enums[K]>]: {
1677
+ readonly codecId: Enums[K] extends {
1678
+ readonly codecId: infer CodecId;
1679
+ } ? CodecId : string;
1680
+ readonly members: EnumHandleMembers<Enums[K], true>;
1681
+ }; };
1682
+ type EnumHandleMemberTypes<Enums, CodecTypes> = { readonly [K in keyof Enums as HandleName<Enums[K]>]: Enums[K] extends EnumTypeHandle<string, infer Values, infer Names, Record<string, unknown>, infer CodecId> ? { readonly [I in keyof Values]: {
1683
+ readonly name: I extends keyof Names ? Names[I] : never;
1684
+ readonly value: EnumMemberValueType<CodecTypes, CodecId, Values[I]>;
1685
+ }; } : never; };
1686
+ type EnumHandleValueSets<Enums> = { readonly [K in keyof Enums as HandleName<Enums[K]>]: {
1687
+ readonly kind: 'valueSet';
1688
+ readonly values: Enums[K] extends EnumTypeHandle<string, infer Values> ? { readonly [I in keyof Values]: StoredEnumValue<Values[I]>; } : never;
1689
+ }; };
1690
+ type DefinitionHasEnums<Definition> = keyof DefinitionEnums<Definition> extends never ? false : true;
1691
+ type HoldsDefinitionEnums<Definition, Ns extends string> = DefinitionHasEnums<Definition> extends true ? Ns extends DefaultStorageNamespaceId<Definition> ? true : false : false;
1692
+ type BuiltDomainNamespace<Definition, Ns extends string> = {
1693
+ readonly models: { readonly [ModelName in ModelsInNamespace<Definition, Ns>]: BuiltModels<Definition>[ModelName]; };
1694
+ } & (HoldsDefinitionEnums<Definition, Ns> extends true ? {
1695
+ readonly enum: EnumHandleEntries<DefinitionEnums<Definition>>;
1696
+ readonly enumMemberTypes?: EnumHandleMemberTypes<DefinitionEnums<Definition>, CodecTypesFromDefinition<Definition>>;
1697
+ } : Record<never, never>);
1698
+ type DefaultStorageNamespaceId<Definition> = DefinitionTarget<Definition> extends {
1699
+ readonly defaultNamespaceId: infer Id extends string;
1700
+ } ? Id : never;
1701
+ type ModelNamespaceOf<Definition, Namespace> = [Namespace] extends [undefined] ? DefaultStorageNamespaceId<Definition> : Namespace extends '' | undefined ? DefaultStorageNamespaceId<Definition> : Namespace;
1702
+ type ModelNamespace<Definition, ModelName extends ModelNames<Definition>> = DefinitionModels<Definition>[ModelName] extends {
1703
+ readonly __namespace: infer Namespace extends string | undefined;
1704
+ } ? ModelNamespaceOf<Definition, Namespace> : DefaultStorageNamespaceId<Definition>;
1705
+ type ModelNamespaces<Definition> = { [ModelName in ModelNames<Definition>]: ModelNamespace<Definition, ModelName>; }[ModelNames<Definition>] & string;
1706
+ type ModelsInNamespace<Definition, Ns extends string> = string extends ModelNamespaces<Definition> ? ModelNames<Definition> : { [ModelName in ModelNames<Definition>]: Ns extends ModelNamespace<Definition, ModelName> ? ModelName : never; }[ModelNames<Definition>];
1707
+ type DomainNamespaceIds<Definition> = (ModelNamespaces<Definition> | ([ModelNames<Definition>] extends [never] ? DefaultStorageNamespaceId<Definition> : never) | (keyof DefinitionEnums<Definition> extends never ? never : DefaultStorageNamespaceId<Definition>)) & string;
1708
+ type StorageNamespaceIds<Definition> = (DefaultStorageNamespaceId<Definition> | DefinitionNamespaces<Definition> | ModelNamespaces<Definition>) & string;
1709
+ type BuiltStorage<Definition> = {
1710
+ readonly storageHash: StorageHashBase<string>;
1711
+ readonly types?: BuiltDocumentScopedTypes<Definition>;
1712
+ readonly namespaces: { readonly [Ns in StorageNamespaceIds<Definition>]: {
1713
+ readonly id: Ns;
1714
+ readonly kind: string;
1715
+ readonly entries: {
1716
+ readonly table: BuiltStorageTables<Definition, Ns>;
1717
+ } & (HoldsDefinitionEnums<Definition, Ns> extends true ? {
1718
+ readonly valueSet: EnumHandleValueSets<DefinitionEnums<Definition>>;
1719
+ } : Record<never, never>);
1720
+ }; };
1721
+ };
1722
+ type EnumValueUnion<FieldState> = [FieldEnumHandleOf<FieldState>] extends [EnumTypeHandle<string, infer Values>] ? readonly unknown[] extends Values ? never : Values[number] : never;
1723
+ type DescriptorEntityMembers<Descriptor> = Descriptor extends {
1724
+ readonly entityRef: {
1725
+ readonly entity: {
1726
+ readonly members: infer Members extends readonly string[];
1727
+ };
1728
+ };
1729
+ } ? Members : never;
1730
+ type DescriptorValueSetUnion<FieldState> = [FieldDescriptorOf<FieldState>] extends [never] ? never : readonly string[] extends DescriptorEntityMembers<FieldDescriptorOf<FieldState>> ? never : DescriptorEntityMembers<FieldDescriptorOf<FieldState>>[number];
1731
+ type FieldColumnTypeParams<FieldState> = DescriptorTypeParams<FieldDescriptorOf<FieldState>>;
1732
+ type ParameterizedOutputTypesFromDefinition<Definition> = { [K in keyof AllPacks<Definition>]: ExtractParameterizedOutputTypesFromPack<AllPacks<Definition>[K]>; }[keyof AllPacks<Definition>];
1733
+ type ColumnSpecCodecOutput<Descriptor> = Descriptor extends {
1734
+ readonly codecFactory: (...args: never[]) => infer Codec;
1735
+ } ? Codec extends {
1736
+ fromWire(...args: never[]): Promise<infer Output>;
1737
+ } ? Output : never : never;
1738
+ type FieldValueUnion<FieldState> = [EnumValueUnion<FieldState>] extends [never] ? DescriptorValueSetUnion<FieldState> : EnumValueUnion<FieldState>;
1739
+ type FieldTypeOverride<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>> = ModelFieldState<Definition, ModelName, FieldName> extends (infer FieldState) ? [FieldValueUnion<FieldState>] extends [never] ? [ColumnSpecCodecOutput<FieldDescriptorOf<FieldState>>] extends [never] ? never : {
1740
+ readonly output: ColumnSpecCodecOutput<FieldDescriptorOf<FieldState>>;
1741
+ } : {
1742
+ readonly output: FieldValueUnion<FieldState>;
1743
+ readonly input: FieldValueUnion<FieldState>;
1744
+ } : never;
1745
+ type FieldTypeOverrides<Definition> = { readonly [Ns in DomainNamespaceIds<Definition>]: {
1746
+ readonly models: { readonly [ModelName in ModelsInNamespace<Definition, Ns>]: { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: FieldTypeOverride<Definition, ModelName, FieldName>; }; };
1747
+ }; };
1748
+ type ColumnTypeOverrides<Definition> = { readonly [Ns in StorageNamespaceIds<Definition>]: { readonly [ModelName in ModelsInNamespace<Definition, Ns> as BuiltModelTableName<Definition, ModelName>]: { readonly [FieldName in ModelFieldNames<Definition, ModelName> as BuiltModelColumnMappings<Definition, ModelName>[FieldName]['column']]: FieldTypeOverride<Definition, ModelName, FieldName>; }; }; };
1749
+ type ResolvedTypeMap<Map> = { readonly [Ns in keyof Map]: { readonly [Entity in keyof Map[Ns]]: string extends keyof Map[Ns][Entity] ? Map[Ns][Entity] : { readonly [Name in keyof Map[Ns][Entity]]: Map[Ns][Entity][Name]; }; }; };
1750
+ type BuiltDomainNamespaces<Definition> = { readonly [Ns in DomainNamespaceIds<Definition>]: BuiltDomainNamespace<Definition, Ns>; };
1751
+ type SqlContractResult<Definition> = ContractWithTypeMaps<Omit<Contract<BuiltStorage<Definition>>, 'domain' | 'execution'> & BuiltExecution<Definition> & {
1752
+ readonly target: DefinitionTargetId<Definition>;
1753
+ readonly targetFamily: 'sql';
1754
+ } & {
1755
+ readonly domain: {
1756
+ readonly namespaces: BuiltDomainNamespaces<Definition>;
1757
+ } & BuiltDomain<Definition>;
1758
+ } & {
1759
+ readonly extensions: DefinitionExtensions<Definition>;
1760
+ readonly capabilities: DerivedCapabilities<Definition>;
1761
+ }, {
1762
+ readonly codecTypes: CodecTypesFromDefinition<Definition>;
1763
+ readonly queryOperationTypes: QueryOperationTypesFromDefinition<Definition>;
1764
+ readonly fieldOutputTypes: ResolvedTypeMap<FieldTypesFromDomain<BuiltDomainNamespaces<Definition>, CodecTypesFromDefinition<Definition>, ParameterizedOutputTypesFromDefinition<Definition>, FieldTypeOverrides<Definition>, 'output'>>;
1765
+ readonly fieldInputTypes: ResolvedTypeMap<FieldTypesFromDomain<BuiltDomainNamespaces<Definition>, CodecTypesFromDefinition<Definition>, ParameterizedOutputTypesFromDefinition<Definition>, FieldTypeOverrides<Definition>, 'input'>>;
1766
+ readonly storageColumnTypes: ResolvedTypeMap<ColumnTypesFromStorage<BuiltStorage<Definition>, CodecTypesFromDefinition<Definition>, ParameterizedOutputTypesFromDefinition<Definition>, ColumnTypeOverrides<Definition>, 'output'>>;
1767
+ readonly storageColumnInputTypes: ResolvedTypeMap<ColumnTypesFromStorage<BuiltStorage<Definition>, CodecTypesFromDefinition<Definition>, ParameterizedOutputTypesFromDefinition<Definition>, ColumnTypeOverrides<Definition>, 'input'>>;
1768
+ readonly aggregateTypes: AggregateTypesFromDefinition<Definition>;
1769
+ }>;
1770
+ //#endregion
1771
+ //#region src/composed-authoring-helpers.d.ts
1772
+ type ExtractTypeNamespaceFromPack<Pack> = ExtractAuthoringNamespaceFromPack<Pack, 'type', Record<never, never>>;
1773
+ type ExtractFieldNamespaceFromPack<Pack> = ExtractAuthoringNamespaceFromPack<Pack, 'field', Record<never, never>>;
1774
+ type ExtractEntitiesNamespaceFromPack<Pack> = ExtractAuthoringNamespaceFromPack<Pack, 'entityTypes', Record<never, never>>;
1775
+ type MergeExtensionTypeNamespaces<Extensions> = MergeExtensionAuthoringNamespaces<Extensions, 'type'>;
1776
+ type MergeExtensionFieldNamespaces<Extensions> = MergeExtensionAuthoringNamespaces<Extensions, 'field'>;
1777
+ type MergeExtensionEntityNamespaces<Extensions> = MergeExtensionAuthoringNamespaces<Extensions, 'entityTypes'>;
1778
+ type StorageTypeFromDescriptor<Descriptor extends AuthoringTypeConstructorDescriptor, Args extends readonly unknown[]> = {
1779
+ readonly kind: 'codec-instance';
1780
+ readonly codecId: ResolveTemplateValue<Descriptor['output']['codecId'], Args>;
1781
+ } & (Descriptor['output'] extends {
1782
+ readonly typeParams: infer TypeParams extends Record<string, unknown>;
1783
+ } ? {
1784
+ readonly typeParams: ResolveTemplateValue<TypeParams, Args>;
1785
+ } : {
1786
+ readonly typeParams: Record<never, never>;
1787
+ });
1788
+ type TypeHelperFunction<Descriptor extends AuthoringTypeConstructorDescriptor, ValueTypes extends DataTypeArgumentTypes> = Descriptor extends {
1789
+ readonly args: infer Args extends readonly AuthoringArgumentDescriptor[];
1790
+ } ? <const Params extends TupleFromArgumentDescriptors<Args, ValueTypes>>(...args: Params) => StorageTypeFromDescriptor<Descriptor, CanonicalArguments<Args, Params, ValueTypes>> : () => StorageTypeFromDescriptor<Descriptor, readonly []>;
1791
+ type AliasGeneratorCalls<Output> = (Output extends {
1792
+ readonly onCreate: GeneratorFunctionCall;
1793
+ } ? {
1794
+ readonly onCreate: GeneratorFunctionCall;
1795
+ } : unknown) & (Output extends {
1796
+ readonly onUpdate: GeneratorFunctionCall;
1797
+ } ? {
1798
+ readonly onUpdate: GeneratorFunctionCall;
1799
+ } : unknown);
1800
+ type TypeAliasHelperFunction<Descriptor extends AuthoringTypeAliasDescriptor> = () => {
1801
+ readonly kind: 'codec-instance';
1802
+ readonly codecId: Descriptor['output']['type']['codecId'];
1803
+ readonly typeParams: Descriptor['output']['type'] extends {
1804
+ readonly typeParams: infer TypeParams extends Record<string, unknown>;
1805
+ } ? TypeParams : Record<never, never>;
1806
+ } & (Descriptor['output'] extends {
1807
+ readonly onCreate: GeneratorFunctionCall;
1808
+ } | {
1809
+ readonly onUpdate: GeneratorFunctionCall;
1810
+ } ? {
1811
+ readonly generatorCalls: AliasGeneratorCalls<Descriptor['output']>;
1812
+ } : unknown);
1813
+ type TypeHelpersFromNamespace<Namespace, ValueTypes extends DataTypeArgumentTypes> = { readonly [K in keyof Namespace]: Namespace[K] extends AuthoringTypeConstructorDescriptor ? TypeHelperFunction<Namespace[K], ValueTypes> : Namespace[K] extends AuthoringTypeAliasDescriptor ? TypeAliasHelperFunction<Namespace[K]> : Namespace[K] extends Record<string, unknown> ? TypeHelpersFromNamespace<Namespace[K], ValueTypes> : never; };
1814
+ type MergeExtensionDataTypeArgumentTypes<Extensions> = Extensions extends Record<string, unknown> ? keyof Extensions extends never ? Record<never, never> : UnionToIntersection<{ [K in keyof Extensions]: ExtractDataTypeArgumentTypesFromPack<Extensions[K]>; }[keyof Extensions]> : Record<never, never>;
1815
+ type DataTypeArgumentTypesOfPacks<Family, Target, Extensions> = ExtractDataTypeArgumentTypesFromPack<Family> & ExtractDataTypeArgumentTypesFromPack<Target> & MergeExtensionDataTypeArgumentTypes<Extensions>;
1816
+ type FieldHelpersForCodecs<CodecTypes extends CodecTypeMap> = Pick<typeof field, 'generated'> & {
1817
+ readonly column: ColumnFieldHelper<CodecTypes>;
1818
+ readonly namedType: NamedTypeFieldHelper;
1819
+ };
1820
+ type CodecTypesOfPacks<Family, Target, Extensions> = ExtractCodecTypesFromPack<Family> & ExtractCodecTypesFromPack<Target> & MergeExtensionCodecTypesSafe<Extensions>;
1821
+ type MergeAllPackIndexTypes<Family, Target, Extensions> = MergeExtensionIndexTypes<{
1822
+ readonly __family: Family;
1823
+ readonly __target: Target;
1824
+ } & (Extensions extends Record<string, unknown> ? Extensions : Record<never, never>)>;
1825
+ type PackAwareModel<IndexTypes extends IndexTypeMap> = {
1826
+ <const ModelName extends string, Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder> = Record<never, never>, const Namespace extends string | undefined = undefined>(modelName: ModelName, input: {
1827
+ readonly fields: Fields;
1828
+ readonly relations?: Relations;
1829
+ readonly namespace?: Namespace;
1830
+ }): ContractModelBuilder<ModelName, Fields, Relations, undefined, undefined, IndexTypes, '<self>', NoInfer<Namespace>>;
1831
+ <Fields extends Record<string, ScalarFieldBuilder>, Relations extends Record<string, AnyRelationBuilder> = Record<never, never>, const Namespace extends string | undefined = undefined>(input: {
1832
+ readonly fields: Fields;
1833
+ readonly relations?: Relations;
1834
+ readonly namespace?: Namespace;
1835
+ }): ContractModelBuilder<undefined, Fields, Relations, undefined, undefined, IndexTypes, '<self>', NoInfer<Namespace>>;
1836
+ };
1837
+ type ComposedAuthoringHelpers<Family extends FamilyPackRef<string>, Target extends TargetPackRef<'sql', string>, Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined> = EntityHelpersFromNamespace<ExtractEntitiesNamespaceFromPack<Family> & ExtractEntitiesNamespaceFromPack<Target> & MergeExtensionEntityNamespaces<Extensions>> & {
1838
+ readonly field: FieldHelpersForCodecs<CodecTypesOfPacks<Family, Target, Extensions>> & FieldHelpersFromNamespace<ExtractFieldNamespaceFromPack<Family> & ExtractFieldNamespaceFromPack<Target> & MergeExtensionFieldNamespaces<Extensions>, CodecTypesOfPacks<Family, Target, Extensions>, DataTypeArgumentTypesOfPacks<Family, Target, Extensions>>;
1839
+ readonly model: PackAwareModel<MergeAllPackIndexTypes<Family, Target, Extensions>>;
1840
+ readonly rel: typeof rel;
1841
+ readonly type: TypeHelpersFromNamespace<ExtractTypeNamespaceFromPack<Family> & ExtractTypeNamespaceFromPack<Target> & MergeExtensionTypeNamespaces<Extensions>, DataTypeArgumentTypesOfPacks<Family, Target, Extensions>>;
1842
+ readonly gen: GeneratorHelpersOf<Family | Target | ExtensionPackValues<Extensions>>;
1843
+ };
1844
+ declare function createComposedAuthoringHelpers<Family extends FamilyPackRef<string>, Target extends TargetPackRef<'sql', string>, Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined>(options: {
1845
+ readonly family: Family;
1846
+ readonly target: Target;
1847
+ readonly extensions?: Extensions;
1848
+ readonly codecLookup: CodecLookupWithDescriptors;
1849
+ }): ComposedAuthoringHelpers<Family, Target, Extensions>;
1850
+ //#endregion
1851
+ //#region src/build-contract.d.ts
1852
+ declare function buildSqlContractFromDefinition(definition: ContractDefinition, codecLookup: CodecLookupWithDescriptors, dataTypeLookup: DataTypeLookup): Contract<SqlStorage>;
1853
+ //#endregion
1854
+ //#region src/contract-builder.d.ts
1855
+ type ModelLike = {
1856
+ readonly stageOne: {
1857
+ readonly modelName?: string;
1858
+ readonly namespace?: string | undefined;
1859
+ readonly fields: Record<string, ScalarFieldBuilder>;
1860
+ readonly relations: Record<string, RelationBuilder<RelationState>>;
1861
+ };
1862
+ readonly __attributes: ModelAttributesSpec | undefined;
1863
+ readonly __sql: SqlStageSpec | undefined;
1864
+ readonly __duplicateNames: undefined;
1865
+ buildAttributesSpec(): ModelAttributesSpec | undefined;
1866
+ buildSqlSpec(): SqlStageSpec | undefined;
1867
+ };
1868
+ type ContractDefinition$1<Family extends FamilyPackRef<string>, Target extends TargetPackRef<'sql', string>, DatabaseTypes extends Record<string, AuthoredStorageTypeInstance>, Models extends Record<string, ModelLike>, Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined, Naming extends ContractInput['naming'] | undefined, StorageHash extends string | undefined, ForeignKeyDefaults extends ForeignKeyDefaultsState | undefined, Namespaces extends readonly string[] | undefined = undefined, Enums extends Record<string, EnumTypeHandle> = Record<string, EnumTypeHandle>> = {
1869
+ readonly family: Family;
1870
+ readonly target: Target;
1871
+ readonly extensions?: Extensions;
1872
+ readonly naming?: Naming;
1873
+ readonly storageHash?: StorageHash;
1874
+ readonly foreignKeyDefaults?: ForeignKeyDefaults;
1875
+ readonly defaultControlPolicy?: ControlPolicy;
1876
+ readonly namespaces?: Namespaces;
1877
+ readonly createNamespace: (input: SqlNamespaceInput) => SqlNamespaceBase;
1878
+ readonly databaseTypes?: DatabaseTypes;
1879
+ readonly models?: Models;
1880
+ readonly codecLookup: CodecLookupWithDescriptors;
1881
+ readonly dataTypeLookup: DataTypeLookup;
1882
+ readonly enums?: Enums;
1883
+ readonly entities?: readonly PackEntityHandle[];
1884
+ };
1885
+ type ContractScaffold<Family extends FamilyPackRef<string>, Target extends TargetPackRef<'sql', string>, Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined, Naming extends ContractInput['naming'] | undefined, StorageHash extends string | undefined, ForeignKeyDefaults extends ForeignKeyDefaultsState | undefined, Namespaces extends readonly string[] | undefined = undefined, Enums extends Record<string, EnumTypeHandle> = Record<string, EnumTypeHandle>> = {
1886
+ readonly family: Family;
1887
+ readonly target: Target;
1888
+ readonly extensions?: Extensions;
1889
+ readonly naming?: Naming;
1890
+ readonly storageHash?: StorageHash;
1891
+ readonly foreignKeyDefaults?: ForeignKeyDefaults;
1892
+ readonly defaultControlPolicy?: ControlPolicy;
1893
+ readonly namespaces?: Namespaces;
1894
+ readonly createNamespace: (input: SqlNamespaceInput) => SqlNamespaceBase;
1895
+ readonly databaseTypes?: never;
1896
+ readonly models?: never;
1897
+ readonly codecLookup: CodecLookupWithDescriptors;
1898
+ readonly dataTypeLookup: DataTypeLookup;
1899
+ readonly enums?: Enums;
1900
+ readonly entities?: readonly PackEntityHandle[];
1901
+ };
1902
+ type ContractFactory<Family extends FamilyPackRef<string>, Target extends TargetPackRef<'sql', string>, DatabaseTypes extends Record<string, AuthoredStorageTypeInstance>, Models extends Record<string, ModelLike>, Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined, Enums extends Record<string, EnumTypeHandle> = Record<string, EnumTypeHandle>> = (helpers: ComposedAuthoringHelpers<Family, Target, Extensions>) => {
1903
+ readonly databaseTypes?: DatabaseTypes;
1904
+ readonly models?: Models;
1905
+ readonly enums?: Enums;
1906
+ readonly entities?: readonly PackEntityHandle[];
1907
+ };
1908
+ type BoundDefinitionInput<DatabaseTypes extends Record<string, AuthoredStorageTypeInstance> = Record<never, never>, Models extends Record<string, ModelLike> = Record<never, never>, Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined, Naming extends ContractInput['naming'] | undefined = undefined, StorageHash extends string | undefined = undefined, ForeignKeyDefaults extends ForeignKeyDefaultsState | undefined = undefined, Namespaces extends readonly string[] | undefined = undefined> = {
1909
+ readonly extensions?: Extensions;
1910
+ readonly naming?: Naming;
1911
+ readonly storageHash?: StorageHash;
1912
+ readonly foreignKeyDefaults?: ForeignKeyDefaults;
1913
+ readonly defaultControlPolicy?: ControlPolicy;
1914
+ readonly namespaces?: Namespaces;
1915
+ readonly createNamespace: (input: SqlNamespaceInput) => SqlNamespaceBase;
1916
+ readonly databaseTypes?: DatabaseTypes;
1917
+ readonly models?: Models;
1918
+ readonly codecLookup: CodecLookupWithDescriptors;
1919
+ readonly dataTypeLookup: DataTypeLookup;
1920
+ readonly enums?: Record<string, EnumTypeHandle>;
1921
+ readonly entities?: readonly PackEntityHandle[];
1922
+ };
1923
+ type LiteralEnums<E extends Record<string, EnumTypeHandle>> = string extends keyof E ? Record<never, never> : E;
1924
+ type MergeEnums<ScaffoldEnums extends Record<string, EnumTypeHandle>, FactoryEnums extends Record<string, EnumTypeHandle>> = LiteralEnums<ScaffoldEnums> & LiteralEnums<FactoryEnums>;
1925
+ type WithFamilyTarget<Input, F extends FamilyPackRef<string>, T extends TargetPackRef<'sql', string>> = Input & {
1926
+ readonly family: F;
1927
+ readonly target: T;
1928
+ };
1929
+ /**
1930
+ * Shared builder that assembles a SqlContract with pre-bound family and target.
1931
+ * Extension wrappers keep their own public overloads and delegate their impl body here;
1932
+ * this is a plain overloaded function (not a factory returning an overloaded function)
1933
+ * so no overloaded-function-return cast is needed.
1934
+ *
1935
+ * Overload 1: definition form (no factory).
1936
+ */
1937
+ declare function buildBoundContract<const F extends FamilyPackRef<string>, const T extends TargetPackRef<'sql', string>, const Definition extends BoundDefinitionInput<Record<string, AuthoredStorageTypeInstance>, Record<string, ModelLike>, Record<string, ExtensionPackRef<'sql', string>> | undefined, ContractInput['naming'] | undefined, string | undefined, ForeignKeyDefaultsState | undefined, readonly string[] | undefined>>(family: F, target: T, definition: Definition, factory?: undefined): SqlContractResult<WithFamilyTarget<Definition, F, T>>;
1938
+ /**
1939
+ * Overload 2: factory form.
1940
+ */
1941
+ declare function buildBoundContract<const F extends FamilyPackRef<string>, const T extends TargetPackRef<'sql', string>, const Definition extends BoundDefinitionInput<Record<string, AuthoredStorageTypeInstance>, Record<string, ModelLike>, Record<string, ExtensionPackRef<'sql', string>> | undefined, ContractInput['naming'] | undefined, string | undefined, ForeignKeyDefaultsState | undefined, readonly string[] | undefined>, const Built extends {
1942
+ readonly databaseTypes?: Record<string, AuthoredStorageTypeInstance>;
1943
+ readonly models?: Record<string, ModelLike>;
1944
+ readonly enums?: Record<string, EnumTypeHandle>;
1945
+ readonly entities?: readonly PackEntityHandle[];
1946
+ }>(family: F, target: T, definition: Definition, factory: (helpers: ComposedAuthoringHelpers<F, T, NonNullable<Definition['extensions']>>) => Built): SqlContractResult<WithFamilyTarget<Definition & Built, F, T>>;
1947
+ declare function defineContract<const Family extends FamilyPackRef<string>, const Target extends TargetPackRef<'sql', string>, const DatabaseTypes extends Record<string, AuthoredStorageTypeInstance> = Record<never, never>, const Models extends Record<string, ModelLike> = Record<never, never>, const Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined, const Naming extends ContractInput['naming'] | undefined = undefined, const StorageHash extends string | undefined = undefined, const ForeignKeyDefaults extends ForeignKeyDefaultsState | undefined = undefined, const Namespaces extends readonly string[] | undefined = undefined, const Enums extends Record<string, EnumTypeHandle> = Record<string, EnumTypeHandle>>(definition: ContractDefinition$1<Family, Target, DatabaseTypes, Models, Extensions, Naming, StorageHash, ForeignKeyDefaults, Namespaces, Enums>): SqlContractResult<ContractDefinition$1<Family, Target, DatabaseTypes, Models, Extensions, Naming, StorageHash, ForeignKeyDefaults, Namespaces, Enums>>;
1948
+ declare function defineContract<const Family extends FamilyPackRef<string>, const Target extends TargetPackRef<'sql', string>, const DatabaseTypes extends Record<string, AuthoredStorageTypeInstance> = Record<never, never>, const Models extends Record<string, ModelLike> = Record<never, never>, const Extensions extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined, const Naming extends ContractInput['naming'] | undefined = undefined, const StorageHash extends string | undefined = undefined, const ForeignKeyDefaults extends ForeignKeyDefaultsState | undefined = undefined, const Namespaces extends readonly string[] | undefined = undefined, const ScaffoldEnums extends Record<string, EnumTypeHandle> = Record<string, EnumTypeHandle>, const FactoryEnums extends Record<string, EnumTypeHandle> = Record<string, EnumTypeHandle>>(definition: ContractScaffold<Family, Target, Extensions, Naming, StorageHash, ForeignKeyDefaults, Namespaces, ScaffoldEnums>, factory: ContractFactory<Family, Target, DatabaseTypes, Models, Extensions, FactoryEnums>): SqlContractResult<ContractDefinition$1<Family, Target, DatabaseTypes, Models, Extensions, Naming, StorageHash, ForeignKeyDefaults, Namespaces, MergeEnums<ScaffoldEnums, FactoryEnums>>>;
1949
+ //#endregion
1950
+ //#region src/contract-lowering.d.ts
1951
+ /**
1952
+ * `ContractInput`'s `Extensions` parameter defaults to `undefined`, but lowering
1953
+ * reads the extension-pack record at runtime, so the input is widened here.
1954
+ */
1955
+ type LoweringInput = Omit<ContractInput, 'extensions'> & {
1956
+ readonly extensions?: Record<string, ExtensionPackRef<'sql', string>> | undefined;
1957
+ };
1958
+ declare function buildContractDefinition(definition: LoweringInput): ContractDefinition;
1959
+ //#endregion
1960
+ //#region src/default-functions.d.ts
1961
+ /** The database's current time, the same default PSL writes as `@default(now())`. */
1962
+ declare function now(): ColumnDefault;
1963
+ /** A database-assigned sequence value, the same default PSL writes as `@default(autoincrement())`. */
1964
+ declare function autoincrement(): ColumnDefault;
1965
+ //#endregion
1966
+ export { extensionModel as $, MergeEnums as A, UniqueConstraintNode as B, ForeignKeyTableReference as C, IndexOptionsFunction as D, IndexNode as E, ScalarFieldBuilder as F, bindEnumType as G, ValueObjectMemberNode as H, ScalarMemberNode as I, buildSqlContractFromDefinition as J, buildBoundContract as K, TableNode as L, ModelNode as M, PrimaryKeyNode as N, IndexOptionsInput as O, RelationNode as P, enumType as Q, TableProperties as R, ForeignKeyNode as S, IndexExpressionInput as T, ValueObjectNode as U, ValueObjectFieldNode as V, autoincrement as W, createComposedAuthoringHelpers as X, check as Y, defineContract as Z, EnumMember as _, CheckNode as a, rel as at, FieldNode as b, ColumnNode as c, ContractDefinition as d, field as et, ContractInput as f, DeferredIndexOptions as g, DeferredIndexExpression as h, BoundEnumType as i, now as it, ModelLike as j, ManyOptions as k, ColumnRef as l, DeferredIndexColumn as m, AuthoredColumnDefault as n, member as nt, CodecInput$1 as o, storedAsListColumn as ot, ContractModelBuilder as p, buildContractDefinition as q, AuthoredColumnDefaultLiteralValue as r, model as rt, CodecTypeMap$1 as s, AttachedEntities as t, isValueObjectMember as tt, ComposedAuthoringHelpers as u, EnumTypeHandle as v, IndexConstraint as w, ForeignKeyModelReference as x, ExtractCodecTypesFromPack as y, TargetFieldRef as z };
1967
+ //# sourceMappingURL=contract-builder-C_Zi57iD.d.mts.map