@prisma/orm-family-sql 0.16.0-dev.36

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 (325) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +28 -0
  3. package/dist/ast-BstHjAoG.mjs +325 -0
  4. package/dist/ast-BstHjAoG.mjs.map +1 -0
  5. package/dist/ast-DSuzmsWn.d.mts +287 -0
  6. package/dist/ast-DSuzmsWn.d.mts.map +1 -0
  7. package/dist/authoring-type-constructors-Blqoa2Ua-DyCmD6mp.mjs +316 -0
  8. package/dist/authoring-type-constructors-Blqoa2Ua-DyCmD6mp.mjs.map +1 -0
  9. package/dist/build-contract-DBCz_YSs-DO0wMHai.mjs +778 -0
  10. package/dist/build-contract-DBCz_YSs-DO0wMHai.mjs.map +1 -0
  11. package/dist/builder.d.mts +3 -0
  12. package/dist/builder.mjs +1 -0
  13. package/dist/builder__runtime.d.mts +42 -0
  14. package/dist/builder__runtime.d.mts.map +1 -0
  15. package/dist/builder__runtime.mjs +955 -0
  16. package/dist/builder__runtime.mjs.map +1 -0
  17. package/dist/builder__types.d.mts +3 -0
  18. package/dist/builder__types.mjs +1 -0
  19. package/dist/canonicalization-hooks-CYnW_sGn.d.mts +10 -0
  20. package/dist/canonicalization-hooks-CYnW_sGn.d.mts.map +1 -0
  21. package/dist/canonicalization-hooks-DfIc_lOO.mjs +87 -0
  22. package/dist/canonicalization-hooks-DfIc_lOO.mjs.map +1 -0
  23. package/dist/codec-descriptor-registry-BJVJRftS.mjs +96 -0
  24. package/dist/codec-descriptor-registry-BJVJRftS.mjs.map +1 -0
  25. package/dist/codec-types-MOaceoPi-C5eL2sao.d.mts +116 -0
  26. package/dist/codec-types-MOaceoPi-C5eL2sao.d.mts.map +1 -0
  27. package/dist/config-types-47qB33rW.d.mts +21 -0
  28. package/dist/config-types-47qB33rW.d.mts.map +1 -0
  29. package/dist/config-types-N7PJc6VN.mjs +65 -0
  30. package/dist/config-types-N7PJc6VN.mjs.map +1 -0
  31. package/dist/contract-builder-MvJJrQ-5.d.mts +1306 -0
  32. package/dist/contract-builder-MvJJrQ-5.d.mts.map +1 -0
  33. package/dist/contract-builder-YjMQcvZ1.mjs +1615 -0
  34. package/dist/contract-builder-YjMQcvZ1.mjs.map +1 -0
  35. package/dist/contract-emitter.d.mts +25 -0
  36. package/dist/contract-emitter.d.mts.map +1 -0
  37. package/dist/contract-emitter.mjs +2 -0
  38. package/dist/contract-errors-BCN6RVI5-5IHBF_lg.mjs +9 -0
  39. package/dist/contract-errors-BCN6RVI5-5IHBF_lg.mjs.map +1 -0
  40. package/dist/contract-psl.d.mts +65 -0
  41. package/dist/contract-psl.d.mts.map +1 -0
  42. package/dist/contract-psl.mjs +2 -0
  43. package/dist/contract-psl__provider.d.mts +23 -0
  44. package/dist/contract-psl__provider.d.mts.map +1 -0
  45. package/dist/contract-psl__provider.mjs +105 -0
  46. package/dist/contract-psl__provider.mjs.map +1 -0
  47. package/dist/contract-ts.d.mts +3 -0
  48. package/dist/contract-ts.mjs +4 -0
  49. package/dist/contract-ts__config-types.d.mts +2 -0
  50. package/dist/contract-ts__config-types.mjs +2 -0
  51. package/dist/contract-ts__contract-builder.d.mts +2 -0
  52. package/dist/contract-ts__contract-builder.mjs +3 -0
  53. package/dist/contract-view-BMR5IWk4.mjs +39 -0
  54. package/dist/contract-view-BMR5IWk4.mjs.map +1 -0
  55. package/dist/contract-view-BbWQp6r4.d.mts +61 -0
  56. package/dist/contract-view-BbWQp6r4.d.mts.map +1 -0
  57. package/dist/contract.d.mts +26 -0
  58. package/dist/contract.mjs +17 -0
  59. package/dist/contract__canonicalization-hooks.d.mts +2 -0
  60. package/dist/contract__canonicalization-hooks.mjs +2 -0
  61. package/dist/contract__contract-view.d.mts +2 -0
  62. package/dist/contract__contract-view.mjs +2 -0
  63. package/dist/contract__entity-handle-lowering-hook.d.mts +2 -0
  64. package/dist/contract__entity-handle-lowering-hook.mjs +2 -0
  65. package/dist/contract__entity-kinds.d.mts +2 -0
  66. package/dist/contract__entity-kinds.mjs +2 -0
  67. package/dist/contract__factories.d.mts +2 -0
  68. package/dist/contract__factories.mjs +2 -0
  69. package/dist/contract__foreign-key-materialization.d.mts +2 -0
  70. package/dist/contract__foreign-key-materialization.mjs +2 -0
  71. package/dist/contract__index-naming.d.mts +2 -0
  72. package/dist/contract__index-naming.mjs +2 -0
  73. package/dist/contract__index-type-validation.d.mts +2 -0
  74. package/dist/contract__index-type-validation.mjs +2 -0
  75. package/dist/contract__index-types.d.mts +3 -0
  76. package/dist/contract__index-types.mjs +2 -0
  77. package/dist/contract__pack-types.d.mts +2 -0
  78. package/dist/contract__pack-types.mjs +1 -0
  79. package/dist/contract__referential-action-sql.d.mts +2 -0
  80. package/dist/contract__referential-action-sql.mjs +2 -0
  81. package/dist/contract__resolve-storage-table.d.mts +2 -0
  82. package/dist/contract__resolve-storage-table.mjs +2 -0
  83. package/dist/contract__types.d.mts +11 -0
  84. package/dist/contract__types.mjs +4 -0
  85. package/dist/contract__validators.d.mts +2 -0
  86. package/dist/contract__validators.mjs +3 -0
  87. package/dist/contract__value-set-derivation-hook.d.mts +2 -0
  88. package/dist/contract__value-set-derivation-hook.mjs +2 -0
  89. package/dist/control-B7iS4jv4.mjs +1326 -0
  90. package/dist/control-B7iS4jv4.mjs.map +1 -0
  91. package/dist/control-BHmsZudH.d.mts +948 -0
  92. package/dist/control-BHmsZudH.d.mts.map +1 -0
  93. package/dist/control-adapter-4y1O8Ps3.d.mts +1 -0
  94. package/dist/control-adapter-C99J7aEF-C-17lFY8.d.mts +191 -0
  95. package/dist/control-adapter-C99J7aEF-C-17lFY8.d.mts.map +1 -0
  96. package/dist/db-DhMsmBS--DKENDi3l.d.mts +365 -0
  97. package/dist/db-DhMsmBS--DKENDi3l.d.mts.map +1 -0
  98. package/dist/ddl-types-BMp2bWVS-D1waZJ4n.mjs +153 -0
  99. package/dist/ddl-types-BMp2bWVS-D1waZJ4n.mjs.map +1 -0
  100. package/dist/ddl-types-rrMsf77U-DGctYf-T.d.mts +149 -0
  101. package/dist/ddl-types-rrMsf77U-DGctYf-T.d.mts.map +1 -0
  102. package/dist/diff-B16bL_IR.mjs +13 -0
  103. package/dist/diff-B16bL_IR.mjs.map +1 -0
  104. package/dist/diff-DhlzHOMD.d.mts +104 -0
  105. package/dist/diff-DhlzHOMD.d.mts.map +1 -0
  106. package/dist/dist-C_q1_QR9.mjs +9 -0
  107. package/dist/dist-C_q1_QR9.mjs.map +1 -0
  108. package/dist/dist-DrScXbhq.mjs +414 -0
  109. package/dist/dist-DrScXbhq.mjs.map +1 -0
  110. package/dist/dist-x6jvtkKM.mjs +68 -0
  111. package/dist/dist-x6jvtkKM.mjs.map +1 -0
  112. package/dist/entity-handle-lowering-hook-CIvRKBfa.d.mts +92 -0
  113. package/dist/entity-handle-lowering-hook-CIvRKBfa.d.mts.map +1 -0
  114. package/dist/entity-handle-lowering-hook-DwLIKNiS.mjs +11 -0
  115. package/dist/entity-handle-lowering-hook-DwLIKNiS.mjs.map +1 -0
  116. package/dist/entity-kinds-DKxwKolf-CcsY-iYV.mjs +136 -0
  117. package/dist/entity-kinds-DKxwKolf-CcsY-iYV.mjs.map +1 -0
  118. package/dist/entity-kinds-Dh6VH4uK.d.mts +29 -0
  119. package/dist/entity-kinds-Dh6VH4uK.d.mts.map +1 -0
  120. package/dist/errors-B5g0xWro-mWH2C07F.mjs +9 -0
  121. package/dist/errors-B5g0xWro-mWH2C07F.mjs.map +1 -0
  122. package/dist/errors.d.mts +63 -0
  123. package/dist/errors.d.mts.map +1 -0
  124. package/dist/errors.mjs +2 -0
  125. package/dist/expression-DIf8F4Mc.d.mts +167 -0
  126. package/dist/expression-DIf8F4Mc.d.mts.map +1 -0
  127. package/dist/expression-RUO52bJB.mjs +109 -0
  128. package/dist/expression-RUO52bJB.mjs.map +1 -0
  129. package/dist/factories-B7tA4y9D.d.mts +39 -0
  130. package/dist/factories-B7tA4y9D.d.mts.map +1 -0
  131. package/dist/factories-CDG9zBxC.mjs +77 -0
  132. package/dist/factories-CDG9zBxC.mjs.map +1 -0
  133. package/dist/family.d.mts +13 -0
  134. package/dist/family.mjs +12 -0
  135. package/dist/family__control-adapter.d.mts +3 -0
  136. package/dist/family__control-adapter.mjs +1 -0
  137. package/dist/family__control.d.mts +4 -0
  138. package/dist/family__control.mjs +4 -0
  139. package/dist/family__diff.d.mts +3 -0
  140. package/dist/family__diff.mjs +3 -0
  141. package/dist/family__ir.d.mts +2 -0
  142. package/dist/family__ir.mjs +3 -0
  143. package/dist/family__migration.d.mts +2 -0
  144. package/dist/family__migration.mjs +2 -0
  145. package/dist/family__pack.d.mts +249 -0
  146. package/dist/family__pack.d.mts.map +1 -0
  147. package/dist/family__pack.mjs +18 -0
  148. package/dist/family__pack.mjs.map +1 -0
  149. package/dist/family__psl-infer.d.mts +2 -0
  150. package/dist/family__psl-infer.mjs +2 -0
  151. package/dist/family__runtime.d.mts +3 -0
  152. package/dist/family__runtime.mjs +3 -0
  153. package/dist/family__verify.d.mts +2 -0
  154. package/dist/family__verify.mjs +2 -0
  155. package/dist/foreign-key-BSy9u4O4-BnsOe5Nf.d.mts +85 -0
  156. package/dist/foreign-key-BSy9u4O4-BnsOe5Nf.d.mts.map +1 -0
  157. package/dist/foreign-key-materialization-Ca-wRbmj.d.mts +65 -0
  158. package/dist/foreign-key-materialization-Ca-wRbmj.d.mts.map +1 -0
  159. package/dist/foreign-key-materialization-HI7BIQrG.mjs +72 -0
  160. package/dist/foreign-key-materialization-HI7BIQrG.mjs.map +1 -0
  161. package/dist/index-Bb9U36N4.d.mts +511 -0
  162. package/dist/index-Bb9U36N4.d.mts.map +1 -0
  163. package/dist/index-BgaTJRxj.d.mts +25 -0
  164. package/dist/index-BgaTJRxj.d.mts.map +1 -0
  165. package/dist/index-naming-BZWoh45T.d.mts +62 -0
  166. package/dist/index-naming-BZWoh45T.d.mts.map +1 -0
  167. package/dist/index-naming-BoGBcMmI-DiJAr66H.mjs +108 -0
  168. package/dist/index-naming-BoGBcMmI-DiJAr66H.mjs.map +1 -0
  169. package/dist/index-type-validation-COH4d78M.mjs +17 -0
  170. package/dist/index-type-validation-COH4d78M.mjs.map +1 -0
  171. package/dist/index-type-validation-DN0L2mqm.d.mts +10 -0
  172. package/dist/index-type-validation-DN0L2mqm.d.mts.map +1 -0
  173. package/dist/index-types-CNhHgKHi.d.mts +1 -0
  174. package/dist/index-types-DJQ_xwaE.mjs +40 -0
  175. package/dist/index-types-DJQ_xwaE.mjs.map +1 -0
  176. package/dist/index-types-DPVhsW0v-D-BikM4h.d.mts +31 -0
  177. package/dist/index-types-DPVhsW0v-D-BikM4h.d.mts.map +1 -0
  178. package/dist/interpreter-5WgpL-ax-_nqHLUTr.mjs +3526 -0
  179. package/dist/interpreter-5WgpL-ax-_nqHLUTr.mjs.map +1 -0
  180. package/dist/ir-B3bKMnGQ.d.mts +123 -0
  181. package/dist/ir-B3bKMnGQ.d.mts.map +1 -0
  182. package/dist/ir-I-xciGUH.mjs +36 -0
  183. package/dist/ir-I-xciGUH.mjs.map +1 -0
  184. package/dist/lane-query-builder.d.mts +236 -0
  185. package/dist/lane-query-builder.d.mts.map +1 -0
  186. package/dist/lane-query-builder.mjs +67 -0
  187. package/dist/lane-query-builder.mjs.map +1 -0
  188. package/dist/middleware-B4XbF4d4-tfwBl6mX.d.mts +119 -0
  189. package/dist/middleware-B4XbF4d4-tfwBl6mX.d.mts.map +1 -0
  190. package/dist/middleware-ByRsXxxq.d.mts +1 -0
  191. package/dist/middleware-CMr4CHNz-DHIUdxlm.mjs +80 -0
  192. package/dist/middleware-CMr4CHNz-DHIUdxlm.mjs.map +1 -0
  193. package/dist/migration-CK4oePIo.mjs +44 -0
  194. package/dist/migration-CK4oePIo.mjs.map +1 -0
  195. package/dist/migration-CW0ZJLxP.d.mts +44 -0
  196. package/dist/migration-CW0ZJLxP.d.mts.map +1 -0
  197. package/dist/naming-BwqqVcZy-BgTObIQw.mjs +177 -0
  198. package/dist/naming-BwqqVcZy-BgTObIQw.mjs.map +1 -0
  199. package/dist/naming-jLgdauLi-C84G_UHi.d.mts +133 -0
  200. package/dist/naming-jLgdauLi-C84G_UHi.d.mts.map +1 -0
  201. package/dist/operations.d.mts +2 -0
  202. package/dist/operations.mjs +2 -0
  203. package/dist/orm-client.d.mts +1316 -0
  204. package/dist/orm-client.d.mts.map +1 -0
  205. package/dist/orm-client.mjs +4544 -0
  206. package/dist/orm-client.mjs.map +1 -0
  207. package/dist/pack-types-BcLTpwbv.d.mts +14 -0
  208. package/dist/pack-types-BcLTpwbv.d.mts.map +1 -0
  209. package/dist/plan-BTD8xFfa-Dd_K-A1R.d.mts +45 -0
  210. package/dist/plan-BTD8xFfa-Dd_K-A1R.d.mts.map +1 -0
  211. package/dist/plan-CkpcgUaM.mjs +34 -0
  212. package/dist/plan-CkpcgUaM.mjs.map +1 -0
  213. package/dist/plan-Cm4jaoNM.d.mts +2 -0
  214. package/dist/psl-infer-6je61Z6J.d.mts +119 -0
  215. package/dist/psl-infer-6je61Z6J.d.mts.map +1 -0
  216. package/dist/psl-infer-DGftl-HW.mjs +362 -0
  217. package/dist/psl-infer-DGftl-HW.mjs.map +1 -0
  218. package/dist/query-lane-context-Bz8XJZ45.d.mts +1 -0
  219. package/dist/query-lane-context-DtdVMqoz-C2Tj5QHA.d.mts +94 -0
  220. package/dist/query-lane-context-DtdVMqoz-C2Tj5QHA.d.mts.map +1 -0
  221. package/dist/referential-action-sql-Csd6dA8G.d.mts +12 -0
  222. package/dist/referential-action-sql-Csd6dA8G.d.mts.map +1 -0
  223. package/dist/referential-action-sql-DSqkrySN.mjs +17 -0
  224. package/dist/referential-action-sql-DSqkrySN.mjs.map +1 -0
  225. package/dist/relational-core.d.mts +13 -0
  226. package/dist/relational-core.mjs +8 -0
  227. package/dist/relational-core__ast.d.mts +5 -0
  228. package/dist/relational-core__ast.mjs +5 -0
  229. package/dist/relational-core__codec-descriptor-registry.d.mts +39 -0
  230. package/dist/relational-core__codec-descriptor-registry.d.mts.map +1 -0
  231. package/dist/relational-core__codec-descriptor-registry.mjs +2 -0
  232. package/dist/relational-core__contract-free.d.mts +220 -0
  233. package/dist/relational-core__contract-free.d.mts.map +1 -0
  234. package/dist/relational-core__contract-free.mjs +393 -0
  235. package/dist/relational-core__contract-free.mjs.map +1 -0
  236. package/dist/relational-core__expression.d.mts +2 -0
  237. package/dist/relational-core__expression.mjs +2 -0
  238. package/dist/relational-core__middleware.d.mts +3 -0
  239. package/dist/relational-core__middleware.mjs +2 -0
  240. package/dist/relational-core__plan.d.mts +4 -0
  241. package/dist/relational-core__plan.mjs +2 -0
  242. package/dist/relational-core__query-lane-context.d.mts +3 -0
  243. package/dist/relational-core__query-lane-context.mjs +1 -0
  244. package/dist/relational-core__types.d.mts +3 -0
  245. package/dist/relational-core__types.mjs +1 -0
  246. package/dist/resolve-storage-table-DUwyRJmP.d.mts +21 -0
  247. package/dist/resolve-storage-table-DUwyRJmP.d.mts.map +1 -0
  248. package/dist/resolve-storage-table-DZsfnzeW.mjs +46 -0
  249. package/dist/resolve-storage-table-DZsfnzeW.mjs.map +1 -0
  250. package/dist/runtime-DNewRuec.d.mts +46 -0
  251. package/dist/runtime-DNewRuec.d.mts.map +1 -0
  252. package/dist/runtime-tIHpGCcG.mjs +55 -0
  253. package/dist/runtime-tIHpGCcG.mjs.map +1 -0
  254. package/dist/runtime.d.mts +4 -0
  255. package/dist/runtime.mjs +1606 -0
  256. package/dist/runtime.mjs.map +1 -0
  257. package/dist/schema-differ-DpG_gnur-g5_iks8G.d.mts +47 -0
  258. package/dist/schema-differ-DpG_gnur-g5_iks8G.d.mts.map +1 -0
  259. package/dist/schema-ir.d.mts +2 -0
  260. package/dist/schema-ir.mjs +2 -0
  261. package/dist/schema-ir__naming.d.mts +2 -0
  262. package/dist/schema-ir__naming.mjs +2 -0
  263. package/dist/schema-ir__types.d.mts +3 -0
  264. package/dist/schema-ir__types.mjs +2 -0
  265. package/dist/schema-verify-vtFZbmGq-BNfTr6fU.mjs +222 -0
  266. package/dist/schema-verify-vtFZbmGq-BNfTr6fU.mjs.map +1 -0
  267. package/dist/serialized-index-B96AwqtU-DcqcB4q_.d.mts +26 -0
  268. package/dist/serialized-index-B96AwqtU-DcqcB4q_.d.mts.map +1 -0
  269. package/dist/serialized-index-Dp5_EjXD-DMsw8jf3.mjs +64 -0
  270. package/dist/serialized-index-Dp5_EjXD-DMsw8jf3.mjs.map +1 -0
  271. package/dist/sql-contract-serializer-2oBWuxTe-B9hzBBv1.mjs +171 -0
  272. package/dist/sql-contract-serializer-2oBWuxTe-B9hzBBv1.mjs.map +1 -0
  273. package/dist/sql-execution-plan-CJmsCP7n-DoEpNn7r.d.mts +32 -0
  274. package/dist/sql-execution-plan-CJmsCP7n-DoEpNn7r.d.mts.map +1 -0
  275. package/dist/sql-index-DsI8HAeK-BJsn-jvD.d.mts +72 -0
  276. package/dist/sql-index-DsI8HAeK-BJsn-jvD.d.mts.map +1 -0
  277. package/dist/sql-node-kEz6YFZo-v2F7delx.d.mts +42 -0
  278. package/dist/sql-node-kEz6YFZo-v2F7delx.d.mts.map +1 -0
  279. package/dist/sql-storage-B0QwiTg6-B8DVctJm.d.mts +171 -0
  280. package/dist/sql-storage-B0QwiTg6-B8DVctJm.d.mts.map +1 -0
  281. package/dist/storage-table-BBaAmanc-BwR37LMA.d.mts +130 -0
  282. package/dist/storage-table-BBaAmanc-BwR37LMA.d.mts.map +1 -0
  283. package/dist/storage-table-_LWDmPfv-DFhU2dML.mjs +277 -0
  284. package/dist/storage-table-_LWDmPfv-DFhU2dML.mjs.map +1 -0
  285. package/dist/storage-value-set-BGlj5Uus-CvZD--GG.d.mts +41 -0
  286. package/dist/storage-value-set-BGlj5Uus-CvZD--GG.d.mts.map +1 -0
  287. package/dist/timestamp-now-generator-DRXygu32-DN9Qb1uI.mjs +173 -0
  288. package/dist/timestamp-now-generator-DRXygu32-DN9Qb1uI.mjs.map +1 -0
  289. package/dist/types-BchwQpmO.d.mts +16 -0
  290. package/dist/types-BchwQpmO.d.mts.map +1 -0
  291. package/dist/types-BgkZru_1-H7yfikSQ.mjs +1444 -0
  292. package/dist/types-BgkZru_1-H7yfikSQ.mjs.map +1 -0
  293. package/dist/types-CMMQS6aG.mjs +111 -0
  294. package/dist/types-CMMQS6aG.mjs.map +1 -0
  295. package/dist/types-CuDrWc5v-ISVXBmBs.d.mts +134 -0
  296. package/dist/types-CuDrWc5v-ISVXBmBs.d.mts.map +1 -0
  297. package/dist/types-CvbBw1Jo-3KQdErJY.d.mts +688 -0
  298. package/dist/types-CvbBw1Jo-3KQdErJY.d.mts.map +1 -0
  299. package/dist/types-DIBA80mc-wf5wLmON.d.mts +723 -0
  300. package/dist/types-DIBA80mc-wf5wLmON.d.mts.map +1 -0
  301. package/dist/types-DMxc5KZa.d.mts +1 -0
  302. package/dist/types-Dl20lxky-DC_jdA0T.d.mts +247 -0
  303. package/dist/types-Dl20lxky-DC_jdA0T.d.mts.map +1 -0
  304. package/dist/types-DmhUVq4u-BpqqjPJx.mjs +719 -0
  305. package/dist/types-DmhUVq4u-BpqqjPJx.mjs.map +1 -0
  306. package/dist/types-IqZMLrFC-DtdJNICr.d.mts +426 -0
  307. package/dist/types-IqZMLrFC-DtdJNICr.d.mts.map +1 -0
  308. package/dist/types-TvBZ2Ne9.d.mts +1 -0
  309. package/dist/unique-constraint-jQWfH7dg-zLWtFp99.d.mts +32 -0
  310. package/dist/unique-constraint-jQWfH7dg-zLWtFp99.d.mts.map +1 -0
  311. package/dist/util-DQQgv2j1-D6INZaRG.mjs +34 -0
  312. package/dist/util-DQQgv2j1-D6INZaRG.mjs.map +1 -0
  313. package/dist/validators-C4PItWnf.mjs +0 -0
  314. package/dist/validators-C4PItWnf.mjs.map +1 -0
  315. package/dist/validators-CxeHhHrf.d.mts +206 -0
  316. package/dist/validators-CxeHhHrf.d.mts.map +1 -0
  317. package/dist/value-set-derivation-hook-BhgGVtw0.d.mts +35 -0
  318. package/dist/value-set-derivation-hook-BhgGVtw0.d.mts.map +1 -0
  319. package/dist/value-set-derivation-hook-Di9JZ0X7.mjs +22 -0
  320. package/dist/value-set-derivation-hook-Di9JZ0X7.mjs.map +1 -0
  321. package/dist/verify-E6Dd2vYp-gYwnlhLm.mjs +86 -0
  322. package/dist/verify-E6Dd2vYp-gYwnlhLm.mjs.map +1 -0
  323. package/dist/verify-zDRnw0Rn.d.mts +26 -0
  324. package/dist/verify-zDRnw0Rn.d.mts.map +1 -0
  325. package/package.json +112 -0
@@ -0,0 +1,14 @@
1
+ //#region ../../../2-sql/1-core/contract/dist/pack-types.d.mts
2
+ //#region src/pack-types.d.ts
3
+ /**
4
+ * Storage type metadata for pack refs.
5
+ */
6
+ interface StorageTypeMetadata {
7
+ readonly typeId: string;
8
+ readonly familyId: string;
9
+ readonly targetId: string;
10
+ readonly nativeType?: string;
11
+ }
12
+ //#endregion
13
+ export { StorageTypeMetadata as t };
14
+ //# sourceMappingURL=pack-types-BcLTpwbv.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-types-BcLTpwbv.d.mts","names":[],"sources":["../../../../2-sql/1-core/contract/dist/pack-types.d.mts"],"mappings":";;;;;UAIU;WACC;WACA;WACA;WACA"}
@@ -0,0 +1,45 @@
1
+ import { c as SqlStorage } from "./sql-storage-B0QwiTg6-B8DVctJm.mjs";
2
+ import "./types-BchwQpmO.mjs";
3
+ import { p as AnyQueryAst } from "./types-DIBA80mc-wf5wLmON.mjs";
4
+ import { Contract } from "@prisma/orm-framework/contract/types";
5
+ import { QueryPlan } from "@prisma/orm-framework/components/runtime";
6
+ //#region ../../../2-sql/4-lanes/relational-core/dist/plan-BTD8xFfa.d.mts
7
+ //#region src/plan.d.ts
8
+ /**
9
+ * SQL query plan produced by lanes before lowering.
10
+ *
11
+ * Lanes build ASTs and metadata but do not perform SQL lowering. The `sql`
12
+ * field is absent — `RuntimeCore` (the runtime base class in
13
+ * `@internal/framework-components/runtime`) drives lowering via the
14
+ * SQL adapter and produces a `SqlExecutionPlan`.
15
+ *
16
+ * Extends the framework-level `QueryPlan<Row>` marker (`meta + _row`) and
17
+ * adds SQL-specific fields (`ast`, `params`). The phantom `_row` property
18
+ * (inherited from `QueryPlan`) is what `ResultType<P>` inspects to recover
19
+ * the row type.
20
+ */
21
+ interface SqlQueryPlan<Row = unknown> extends QueryPlan<Row> {
22
+ readonly ast: AnyQueryAst;
23
+ readonly params: readonly unknown[];
24
+ }
25
+ /**
26
+ * Wraps an `AnyQueryAst` (typically a `RawSqlExpr` constructed package-internally
27
+ * by an extension's migration factory) in a fully-populated `SqlQueryPlan`
28
+ * whose `meta` is sourced from the supplied contract.
29
+ *
30
+ * Centralising the envelope here means consumers (cipherstash migration
31
+ * factories today; future raw-sql callers) cannot drift on `storageHash` /
32
+ * `target` / `targetFamily`, which would otherwise surface as a subtle
33
+ * `assertContractMatches` failure inside `dataTransform`. `params` defaults
34
+ * to `[]` because parameters embedded in the AST as `ParamRef`s are resolved
35
+ * at lowering time (`encodeParams` walks `plan.ast.collectParamRefs()`),
36
+ * not at plan-construction time.
37
+ *
38
+ * The default `laneId` of `'raw'` reflects raw-SQL plans' standard lane tag;
39
+ * callers (e.g. a future `sql-raw-factory`) may override to differentiate
40
+ * the plan's provenance.
41
+ */
42
+ declare function planFromAst<Row = unknown>(ast: AnyQueryAst, contract: Contract<SqlStorage>, laneId?: string): SqlQueryPlan<Row>;
43
+ //#endregion
44
+ export { planFromAst as n, SqlQueryPlan as t };
45
+ //# sourceMappingURL=plan-BTD8xFfa-Dd_K-A1R.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-BTD8xFfa-Dd_K-A1R.d.mts","names":[],"sources":["../../../../2-sql/4-lanes/relational-core/dist/plan-BTD8xFfa.d.mts"],"mappings":";;;;;;;;;;;;;;;;;;;;UAkBU,aAAa,uBAAuB,UAAU;WAC7C,KAAK;WACL;;;;;;;;;;;;;;;;;;;iBAmBM,YAAY,eAAe,KAAK,aAAa,UAAU,SAAS,aAAa,kBAAkB,aAAa"}
@@ -0,0 +1,34 @@
1
+ //#region ../../../2-sql/4-lanes/relational-core/dist/exports/plan.mjs
2
+ /**
3
+ * Wraps an `AnyQueryAst` (typically a `RawSqlExpr` constructed package-internally
4
+ * by an extension's migration factory) in a fully-populated `SqlQueryPlan`
5
+ * whose `meta` is sourced from the supplied contract.
6
+ *
7
+ * Centralising the envelope here means consumers (cipherstash migration
8
+ * factories today; future raw-sql callers) cannot drift on `storageHash` /
9
+ * `target` / `targetFamily`, which would otherwise surface as a subtle
10
+ * `assertContractMatches` failure inside `dataTransform`. `params` defaults
11
+ * to `[]` because parameters embedded in the AST as `ParamRef`s are resolved
12
+ * at lowering time (`encodeParams` walks `plan.ast.collectParamRefs()`),
13
+ * not at plan-construction time.
14
+ *
15
+ * The default `laneId` of `'raw'` reflects raw-SQL plans' standard lane tag;
16
+ * callers (e.g. a future `sql-raw-factory`) may override to differentiate
17
+ * the plan's provenance.
18
+ */
19
+ function planFromAst(ast, contract, laneId = "raw") {
20
+ return {
21
+ ast,
22
+ params: [],
23
+ meta: {
24
+ target: contract.target,
25
+ targetFamily: contract.targetFamily,
26
+ storageHash: contract.storage.storageHash,
27
+ lane: laneId
28
+ }
29
+ };
30
+ }
31
+ //#endregion
32
+ export { planFromAst as t };
33
+
34
+ //# sourceMappingURL=plan-CkpcgUaM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-CkpcgUaM.mjs","names":[],"sources":["../../../../2-sql/4-lanes/relational-core/dist/exports/plan.mjs"],"sourcesContent":["//#region src/plan.ts\n/**\n* Wraps an `AnyQueryAst` (typically a `RawSqlExpr` constructed package-internally\n* by an extension's migration factory) in a fully-populated `SqlQueryPlan`\n* whose `meta` is sourced from the supplied contract.\n*\n* Centralising the envelope here means consumers (cipherstash migration\n* factories today; future raw-sql callers) cannot drift on `storageHash` /\n* `target` / `targetFamily`, which would otherwise surface as a subtle\n* `assertContractMatches` failure inside `dataTransform`. `params` defaults\n* to `[]` because parameters embedded in the AST as `ParamRef`s are resolved\n* at lowering time (`encodeParams` walks `plan.ast.collectParamRefs()`),\n* not at plan-construction time.\n*\n* The default `laneId` of `'raw'` reflects raw-SQL plans' standard lane tag;\n* callers (e.g. a future `sql-raw-factory`) may override to differentiate\n* the plan's provenance.\n*/\nfunction planFromAst(ast, contract, laneId = \"raw\") {\n\treturn {\n\t\tast,\n\t\tparams: [],\n\t\tmeta: {\n\t\t\ttarget: contract.target,\n\t\t\ttargetFamily: contract.targetFamily,\n\t\t\tstorageHash: contract.storage.storageHash,\n\t\t\tlane: laneId\n\t\t}\n\t};\n}\n//#endregion\nexport { planFromAst };\n\n//# sourceMappingURL=plan.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAS,YAAY,KAAK,UAAU,SAAS,OAAO;CACnD,OAAO;EACN;EACA,QAAQ,CAAC;EACT,MAAM;GACL,QAAQ,SAAS;GACjB,cAAc,SAAS;GACvB,aAAa,SAAS,QAAQ;GAC9B,MAAM;EACP;CACD;AACD"}
@@ -0,0 +1,2 @@
1
+ import "./sql-execution-plan-CJmsCP7n-DoEpNn7r.mjs";
2
+ import "./plan-BTD8xFfa-Dd_K-A1R.mjs";
@@ -0,0 +1,119 @@
1
+ import { d as SqlForeignKeyIR, y as SqlTableIR } from "./types-CvbBw1Jo-3KQdErJY.mjs";
2
+ import "./types-TvBZ2Ne9.mjs";
3
+ import { ColumnDefault } from "@prisma/orm-framework/contract/types";
4
+ //#region ../../../2-sql/9-family/dist/psl-infer.d.mts
5
+ //#region src/core/psl-contract-infer/default-mapping.d.ts
6
+ interface DefaultMappingOptions {
7
+ readonly functionAttributes?: Readonly<Record<string, string>>;
8
+ readonly fallbackFunctionAttribute?: ((expression: string) => string | undefined) | undefined;
9
+ }
10
+ type DefaultMappingResult = {
11
+ readonly attribute: string;
12
+ } | {
13
+ readonly comment: string;
14
+ };
15
+ declare function mapDefault(columnDefault: ColumnDefault, options?: DefaultMappingOptions): DefaultMappingResult;
16
+ //#endregion
17
+ //#region src/core/psl-contract-infer/name-transforms.d.ts
18
+ type NameResult = {
19
+ readonly name: string;
20
+ readonly map?: string;
21
+ };
22
+ declare function toModelName(tableName: string): NameResult;
23
+ declare function toFieldName(columnName: string): NameResult;
24
+ declare function toEnumName(pgTypeName: string): NameResult;
25
+ /**
26
+ * PSL member name for a native-enum value. The value itself always prints
27
+ * explicitly (`member = "value"`), so the returned name never needs a map:
28
+ * a value that already is a valid, non-reserved identifier is kept verbatim
29
+ * (case included); anything else is camelCased/escaped like a field name.
30
+ */
31
+ declare function toEnumMemberName(value: string): string;
32
+ declare function pluralize(word: string): string;
33
+ declare function deriveRelationFieldName(fkColumns: readonly string[], referencedTableName: string): string;
34
+ declare function deriveBackRelationFieldName(childModelName: string, isOneToOne: boolean): string;
35
+ //#endregion
36
+ //#region src/core/psl-contract-infer/printer-config.d.ts
37
+ type PslTypeReference = {
38
+ readonly name: string;
39
+ readonly args?: readonly string[];
40
+ };
41
+ type PslTypeResolution = {
42
+ readonly pslType: PslTypeReference;
43
+ readonly nativeType: string;
44
+ readonly typeParams?: Record<string, unknown>;
45
+ } | {
46
+ readonly unsupported: true;
47
+ readonly nativeType: string;
48
+ };
49
+ interface PslTypeMap {
50
+ resolve(nativeType: string, annotations?: Record<string, unknown>): PslTypeResolution;
51
+ }
52
+ interface EnumInfo {
53
+ readonly typeNames: ReadonlySet<string>;
54
+ readonly definitions: ReadonlyMap<string, readonly string[]>;
55
+ }
56
+ interface PslPrinterOptions {
57
+ readonly typeMap: PslTypeMap;
58
+ readonly defaultMapping?: DefaultMappingOptions;
59
+ readonly enumInfo?: EnumInfo;
60
+ readonly parseRawDefault?: (rawDefault: string, nativeType?: string) => ColumnDefault | undefined;
61
+ }
62
+ type RelationField = {
63
+ readonly fieldName: string;
64
+ readonly typeName: string;
65
+ /**
66
+ * Namespace qualifier for a cross-space relation (e.g. `"auth"` for a
67
+ * relation into `supabase:auth.AuthUser`). Absent for a same-namespace
68
+ * relation.
69
+ */
70
+ readonly typeNamespaceId?: string | undefined;
71
+ /**
72
+ * Contract-space qualifier for a relation into another stack extension
73
+ * pack's contract space (e.g. `"supabase"`). Absent for a same-space
74
+ * relation.
75
+ */
76
+ readonly typeContractSpaceId?: string | undefined;
77
+ readonly referencedTableName?: string | undefined;
78
+ readonly optional: boolean;
79
+ readonly list: boolean;
80
+ readonly relationName?: string | undefined;
81
+ readonly fkName?: string | undefined;
82
+ readonly fields?: readonly string[] | undefined;
83
+ readonly references?: readonly string[] | undefined;
84
+ readonly onDelete?: string | undefined;
85
+ readonly onUpdate?: string | undefined;
86
+ /** `false` when the FK's source columns have no live backing index; omitted (the default) otherwise. */
87
+ readonly index?: boolean | undefined;
88
+ };
89
+ //#endregion
90
+ //#region src/core/psl-contract-infer/raw-default-parser.d.ts
91
+ declare function parseRawDefault(rawDefault: string, nativeType?: string): ColumnDefault | undefined;
92
+ //#endregion
93
+ //#region src/core/psl-contract-infer/relation-inference.d.ts
94
+ type InferredRelations = {
95
+ readonly relationsByTable: ReadonlyMap<string, readonly RelationField[]>;
96
+ };
97
+ declare function inferRelations(tables: Record<string, SqlTableIR>, modelNameMap: ReadonlyMap<string, string>): InferredRelations;
98
+ /**
99
+ * Builds the child-side {@link RelationField} for a single foreign key:
100
+ * `typeName` is the parent model name, `fields`/`references` are the FK's raw
101
+ * columns, and `onDelete`/`onUpdate` are normalized to their PSL spelling.
102
+ * Exported so a caller resolving a foreign key against a model outside
103
+ * `tables` (e.g. a cross-space reference into another contract) can reuse the
104
+ * same normalization instead of duplicating it.
105
+ *
106
+ * `hostTable` is the table the FK is declared on (i.e. `table`, not the
107
+ * referenced parent) — its own indexes/uniques/primary key are what a
108
+ * backing index for this FK would be. When none of them exactly match the
109
+ * FK's source columns (in order), `index: false` is stamped so the emitted
110
+ * `@relation` opts out of the framework's default derived backing-index
111
+ * expectation, matching what `db verify` will find live. Passing the table
112
+ * is optional so existing single-FK callers (e.g. cross-space resolution
113
+ * before a host table reference is threaded through) can omit it and keep
114
+ * the framework default.
115
+ */
116
+ declare function buildChildRelationField(fieldName: string, parentModelName: string, fk: SqlForeignKeyIR, optional: boolean, relationName?: string, hostTable?: SqlTableIR): RelationField;
117
+ //#endregion
118
+ export { toEnumMemberName as _, PslPrinterOptions as a, toModelName as b, PslTypeResolution as c, deriveBackRelationFieldName as d, deriveRelationFieldName as f, pluralize as g, parseRawDefault as h, InferredRelations as i, RelationField as l, mapDefault as m, DefaultMappingResult as n, PslTypeMap as o, inferRelations as p, EnumInfo as r, PslTypeReference as s, DefaultMappingOptions as t, buildChildRelationField as u, toEnumName as v, toFieldName as y };
119
+ //# sourceMappingURL=psl-infer-6je61Z6J.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psl-infer-6je61Z6J.d.mts","names":[],"sources":["../../../../2-sql/9-family/dist/psl-infer.d.mts"],"mappings":";;;;;UAGU;WACC,qBAAqB,SAAS;WAC9B,8BAA8B;;KAEpC;WACM;;WAEA;;iBAEM,WAAW,eAAe,eAAe,UAAU,wBAAwB;;;KAGvF;WACM;WACA;;iBAEM,YAAY,oBAAoB;iBAChC,YAAY,qBAAqB;iBACjC,WAAW,qBAAqB;;;;;;;iBAOhC,iBAAiB;iBACjB,UAAU;iBACV,wBAAwB,8BAA8B;iBACtD,4BAA4B,wBAAwB;;;KAGhE;WACM;WACA;;KAEN;WACM,SAAS;WACT;WACA,aAAa;;WAEb;WACA;;UAED;EACR,QAAQ,oBAAoB,cAAc,0BAA0B;;UAE5D;WACC,WAAW;WACX,aAAa;;UAEd;WACC,SAAS;WACT,iBAAiB;WACjB,WAAW;WACX,mBAAmB,oBAAoB,wBAAwB;;KAErE;WACM;WACA;;;;;;WAMA;;;;;;WAMA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;;;;iBAIM,gBAAgB,oBAAoB,sBAAsB;;;KAGtE;WACM,kBAAkB,6BAA6B;;iBAEzC,eAAe,QAAQ,eAAe,aAAa,cAAc,8BAA8B;;;;;;;;;;;;;;;;;;;iBAmB/F,wBAAwB,mBAAmB,yBAAyB,IAAI,iBAAiB,mBAAmB,uBAAuB,YAAY,aAAa"}
@@ -0,0 +1,362 @@
1
+ import { n as isBackedByColumnKeys, t as backingIndexColumnKeys } from "./foreign-key-materialization-HI7BIQrG.mjs";
2
+ import pluralizeLib from "pluralize";
3
+ //#region ../../../2-sql/9-family/dist/psl-infer.mjs
4
+ const DEFAULT_FUNCTION_ATTRIBUTES = {
5
+ "autoincrement()": "@default(autoincrement())",
6
+ "now()": "@default(now())"
7
+ };
8
+ function mapDefault(columnDefault, options) {
9
+ switch (columnDefault.kind) {
10
+ case "literal": return { attribute: `@default(${formatLiteralValue(columnDefault.value)})` };
11
+ case "function": {
12
+ const attribute = options?.functionAttributes?.[columnDefault.expression] ?? DEFAULT_FUNCTION_ATTRIBUTES[columnDefault.expression] ?? options?.fallbackFunctionAttribute?.(columnDefault.expression);
13
+ return attribute ? { attribute } : { comment: `// Raw default: ${columnDefault.expression.replace(/[\r\n]+/g, " ")}` };
14
+ }
15
+ }
16
+ }
17
+ function formatLiteralValue(value) {
18
+ if (value === null) return "null";
19
+ switch (typeof value) {
20
+ case "boolean":
21
+ case "number": return String(value);
22
+ case "string": return quoteString(value);
23
+ default: return quoteString(JSON.stringify(value));
24
+ }
25
+ }
26
+ function quoteString(str) {
27
+ return `"${escapeString(str)}"`;
28
+ }
29
+ function escapeString(str) {
30
+ return JSON.stringify(str).slice(1, -1);
31
+ }
32
+ const PSL_RESERVED_WORDS = /* @__PURE__ */ new Set([
33
+ "model",
34
+ "enum",
35
+ "types",
36
+ "type",
37
+ "generator",
38
+ "datasource"
39
+ ]);
40
+ const IDENTIFIER_PART_PATTERN = /[A-Za-z0-9]+/g;
41
+ function hasSeparators(input) {
42
+ return /[^A-Za-z0-9]/.test(input);
43
+ }
44
+ function extractIdentifierParts(input) {
45
+ return input.match(IDENTIFIER_PART_PATTERN) ?? [];
46
+ }
47
+ function createSyntheticIdentifier(input) {
48
+ let hash = 2166136261;
49
+ for (const char of input) {
50
+ hash ^= char.codePointAt(0) ?? 0;
51
+ hash = Math.imul(hash, 16777619);
52
+ }
53
+ return `x${(hash >>> 0).toString(16)}`;
54
+ }
55
+ function sanitizeIdentifierCharacters(input) {
56
+ const sanitized = input.replace(/[^\w]/g, "");
57
+ return sanitized.length > 0 ? sanitized : createSyntheticIdentifier(input);
58
+ }
59
+ function capitalize(word) {
60
+ return word.charAt(0).toUpperCase() + word.slice(1);
61
+ }
62
+ function snakeToPascalCase(input) {
63
+ const parts = extractIdentifierParts(input);
64
+ if (parts.length === 0) return capitalize(sanitizeIdentifierCharacters(input));
65
+ return parts.map(capitalize).join("");
66
+ }
67
+ function snakeToCamelCase(input) {
68
+ const parts = extractIdentifierParts(input);
69
+ if (parts.length === 0) return sanitizeIdentifierCharacters(input);
70
+ const [firstPart = input, ...rest] = parts;
71
+ return firstPart.charAt(0).toLowerCase() + firstPart.slice(1) + rest.map(capitalize).join("");
72
+ }
73
+ function needsEscaping(name) {
74
+ return PSL_RESERVED_WORDS.has(name.toLowerCase()) || /^\d/.test(name);
75
+ }
76
+ function escapeName(name) {
77
+ return `_${name}`;
78
+ }
79
+ function escapeIfNeeded(name) {
80
+ return needsEscaping(name) ? escapeName(name) : name;
81
+ }
82
+ function toModelName(tableName) {
83
+ let name;
84
+ if (hasSeparators(tableName)) name = snakeToPascalCase(tableName);
85
+ else name = tableName.charAt(0).toUpperCase() + tableName.slice(1);
86
+ if (needsEscaping(name)) return {
87
+ name: escapeName(name),
88
+ map: tableName
89
+ };
90
+ if (name !== tableName) return {
91
+ name,
92
+ map: tableName
93
+ };
94
+ return { name };
95
+ }
96
+ function toFieldName(columnName) {
97
+ let name;
98
+ if (hasSeparators(columnName)) name = snakeToCamelCase(columnName);
99
+ else name = columnName.charAt(0).toLowerCase() + columnName.slice(1);
100
+ if (needsEscaping(name)) return {
101
+ name: escapeName(name),
102
+ map: columnName
103
+ };
104
+ if (name !== columnName) return {
105
+ name,
106
+ map: columnName
107
+ };
108
+ return { name };
109
+ }
110
+ function toEnumName(pgTypeName) {
111
+ let name;
112
+ if (hasSeparators(pgTypeName)) name = snakeToPascalCase(pgTypeName);
113
+ else name = pgTypeName.charAt(0).toUpperCase() + pgTypeName.slice(1);
114
+ if (needsEscaping(name)) return {
115
+ name: escapeName(name),
116
+ map: pgTypeName
117
+ };
118
+ if (name !== pgTypeName) return {
119
+ name,
120
+ map: pgTypeName
121
+ };
122
+ return { name };
123
+ }
124
+ const VALID_IDENTIFIER_PATTERN = /^[A-Za-z_]\w*$/;
125
+ /**
126
+ * PSL member name for a native-enum value. The value itself always prints
127
+ * explicitly (`member = "value"`), so the returned name never needs a map:
128
+ * a value that already is a valid, non-reserved identifier is kept verbatim
129
+ * (case included); anything else is camelCased/escaped like a field name.
130
+ */
131
+ function toEnumMemberName(value) {
132
+ if (VALID_IDENTIFIER_PATTERN.test(value) && !needsEscaping(value)) return value;
133
+ return escapeIfNeeded(snakeToCamelCase(value));
134
+ }
135
+ function pluralize(word) {
136
+ return pluralizeLib.plural(word);
137
+ }
138
+ function deriveRelationFieldName(fkColumns, referencedTableName) {
139
+ if (fkColumns.length === 1) {
140
+ const [col = referencedTableName] = fkColumns;
141
+ const stripped = col.replace(/_id$/i, "").replace(/Id$/, "");
142
+ if (stripped.length > 0 && stripped !== col) return escapeIfNeeded(snakeToCamelCase(stripped));
143
+ return escapeIfNeeded(snakeToCamelCase(referencedTableName));
144
+ }
145
+ return escapeIfNeeded(snakeToCamelCase(referencedTableName));
146
+ }
147
+ function deriveBackRelationFieldName(childModelName, isOneToOne) {
148
+ const base = childModelName.charAt(0).toLowerCase() + childModelName.slice(1);
149
+ return isOneToOne ? base : pluralize(base);
150
+ }
151
+ const NEXTVAL_PATTERN = /^nextval\s*\(/i;
152
+ const NOW_FUNCTION_PATTERN = /^(now\s*\(\s*\)|CURRENT_TIMESTAMP)$/i;
153
+ const CLOCK_TIMESTAMP_PATTERN = /^clock_timestamp\s*\(\s*\)$/i;
154
+ const TIMESTAMP_CAST_SUFFIX = /::timestamp(?:tz|\s+(?:with|without)\s+time\s+zone)?$/i;
155
+ const TEXT_CAST_SUFFIX = /::text$/i;
156
+ const NOW_LITERAL_PATTERN = /^'now'$/i;
157
+ const UUID_PATTERN = /^gen_random_uuid\s*\(\s*\)$/i;
158
+ const UUID_OSSP_PATTERN = /^uuid_generate_v4\s*\(\s*\)$/i;
159
+ const NULL_PATTERN = /^NULL(?:::.+)?$/i;
160
+ const TRUE_PATTERN = /^true$/i;
161
+ const FALSE_PATTERN = /^false$/i;
162
+ const NUMERIC_PATTERN = /^-?\d+(\.\d+)?$/;
163
+ const JSON_CAST_SUFFIX = /::jsonb?$/i;
164
+ const STRING_LITERAL_PATTERN = /^'((?:[^']|'')*)'(?:::(?:"[^"]+"|[\w\s]+)(?:\(\d+\))?)?$/;
165
+ function canonicalizeTimestampDefault(expr) {
166
+ if (NOW_FUNCTION_PATTERN.test(expr)) return "now()";
167
+ if (CLOCK_TIMESTAMP_PATTERN.test(expr)) return "clock_timestamp()";
168
+ if (!TIMESTAMP_CAST_SUFFIX.test(expr)) return void 0;
169
+ let inner = expr.replace(TIMESTAMP_CAST_SUFFIX, "").trim();
170
+ if (inner.startsWith("(") && inner.endsWith(")")) inner = inner.slice(1, -1).trim();
171
+ if (NOW_FUNCTION_PATTERN.test(inner)) return "now()";
172
+ if (CLOCK_TIMESTAMP_PATTERN.test(inner)) return "clock_timestamp()";
173
+ inner = inner.replace(TEXT_CAST_SUFFIX, "").trim();
174
+ if (NOW_LITERAL_PATTERN.test(inner)) return "now()";
175
+ }
176
+ function parseRawDefault(rawDefault, nativeType) {
177
+ const trimmed = rawDefault.trim();
178
+ const normalizedType = nativeType?.toLowerCase();
179
+ if (NEXTVAL_PATTERN.test(trimmed)) return {
180
+ kind: "function",
181
+ expression: "autoincrement()"
182
+ };
183
+ const canonicalTimestamp = canonicalizeTimestampDefault(trimmed);
184
+ if (canonicalTimestamp) return {
185
+ kind: "function",
186
+ expression: canonicalTimestamp
187
+ };
188
+ if (UUID_PATTERN.test(trimmed) || UUID_OSSP_PATTERN.test(trimmed)) return {
189
+ kind: "function",
190
+ expression: "gen_random_uuid()"
191
+ };
192
+ if (NULL_PATTERN.test(trimmed)) return {
193
+ kind: "literal",
194
+ value: null
195
+ };
196
+ if (TRUE_PATTERN.test(trimmed)) return {
197
+ kind: "literal",
198
+ value: true
199
+ };
200
+ if (FALSE_PATTERN.test(trimmed)) return {
201
+ kind: "literal",
202
+ value: false
203
+ };
204
+ if (NUMERIC_PATTERN.test(trimmed)) return {
205
+ kind: "literal",
206
+ value: Number(trimmed)
207
+ };
208
+ const stringMatch = trimmed.match(STRING_LITERAL_PATTERN);
209
+ if (stringMatch?.[1] !== void 0) {
210
+ const unescaped = stringMatch[1].replace(/''/g, "'");
211
+ if (normalizedType === "json" || normalizedType === "jsonb") {
212
+ if (JSON_CAST_SUFFIX.test(trimmed)) return {
213
+ kind: "function",
214
+ expression: trimmed
215
+ };
216
+ try {
217
+ return {
218
+ kind: "literal",
219
+ value: JSON.parse(unescaped)
220
+ };
221
+ } catch {}
222
+ }
223
+ return {
224
+ kind: "literal",
225
+ value: unescaped
226
+ };
227
+ }
228
+ return {
229
+ kind: "function",
230
+ expression: trimmed
231
+ };
232
+ }
233
+ const DEFAULT_ON_DELETE = "noAction";
234
+ const DEFAULT_ON_UPDATE = "noAction";
235
+ const REFERENTIAL_ACTION_PSL = {
236
+ noAction: "NoAction",
237
+ restrict: "Restrict",
238
+ cascade: "Cascade",
239
+ setNull: "SetNull",
240
+ setDefault: "SetDefault"
241
+ };
242
+ function inferRelations(tables, modelNameMap) {
243
+ const relationsByTable = /* @__PURE__ */ new Map();
244
+ const fkCountByPair = /* @__PURE__ */ new Map();
245
+ for (const table of Object.values(tables)) for (const fk of table.foreignKeys) {
246
+ const pairKey = `${table.name}→${fk.referencedTable}`;
247
+ fkCountByPair.set(pairKey, (fkCountByPair.get(pairKey) ?? 0) + 1);
248
+ }
249
+ const usedFieldNames = /* @__PURE__ */ new Map();
250
+ for (const table of Object.values(tables)) {
251
+ const names = /* @__PURE__ */ new Set();
252
+ for (const col of Object.values(table.columns)) names.add(col.name);
253
+ usedFieldNames.set(table.name, names);
254
+ }
255
+ for (const table of Object.values(tables)) for (const fk of table.foreignKeys) {
256
+ const childTableName = table.name;
257
+ const parentTableName = fk.referencedTable;
258
+ const childUsed = usedFieldNames.get(childTableName);
259
+ const childModelName = modelNameMap.get(childTableName) ?? childTableName;
260
+ const parentModelName = modelNameMap.get(parentTableName) ?? parentTableName;
261
+ const pairKey = `${childTableName}→${parentTableName}`;
262
+ const isSelfRelation = childTableName === parentTableName;
263
+ const needsRelationName = fkCountByPair.get(pairKey) > 1 || isSelfRelation;
264
+ const isOneToOne = detectOneToOne(fk, table);
265
+ const childRelFieldName = resolveUniqueFieldName(deriveRelationFieldName(fk.columns, parentTableName), childUsed, parentModelName);
266
+ const relationName = needsRelationName ? deriveRelationName(fk, childRelFieldName, parentModelName, isSelfRelation) : void 0;
267
+ addRelationField(relationsByTable, childTableName, buildChildRelationField(childRelFieldName, parentModelName, fk, fk.columns.some((columnName) => table.columns[columnName]?.nullable ?? false), relationName, table));
268
+ childUsed.add(childRelFieldName);
269
+ const parentUsed = usedFieldNames.get(parentTableName) ?? /* @__PURE__ */ new Set();
270
+ usedFieldNames.set(parentTableName, parentUsed);
271
+ const backRelFieldName = resolveUniqueFieldName(deriveBackRelationFieldName(childModelName, isOneToOne), parentUsed, childModelName);
272
+ addRelationField(relationsByTable, parentTableName, {
273
+ fieldName: backRelFieldName,
274
+ typeName: childModelName,
275
+ optional: isOneToOne,
276
+ list: !isOneToOne,
277
+ relationName
278
+ });
279
+ parentUsed.add(backRelFieldName);
280
+ }
281
+ return { relationsByTable };
282
+ }
283
+ function detectOneToOne(fk, table) {
284
+ const fkCols = [...fk.columns].sort();
285
+ if (table.primaryKey) {
286
+ const pkCols = [...table.primaryKey.columns].sort();
287
+ if (pkCols.length === fkCols.length && pkCols.every((c, i) => c === fkCols[i])) return true;
288
+ }
289
+ for (const unique of table.uniques) {
290
+ const uniqueCols = [...unique.columns].sort();
291
+ if (uniqueCols.length === fkCols.length && uniqueCols.every((c, i) => c === fkCols[i])) return true;
292
+ }
293
+ for (const index of table.indexes) {
294
+ if (!index.unique || index.partial || index.columns === void 0) continue;
295
+ const indexCols = [...index.columns].sort();
296
+ if (indexCols.length === fkCols.length && indexCols.every((c, i) => c === fkCols[i])) return true;
297
+ }
298
+ return false;
299
+ }
300
+ function deriveRelationName(fk, childRelationFieldName, parentModelName, isSelfRelation) {
301
+ if (fk.name) return fk.name;
302
+ if (isSelfRelation) return `${childRelationFieldName.charAt(0).toUpperCase() + childRelationFieldName.slice(1)}${pluralize(parentModelName)}`;
303
+ return fk.columns.join("_");
304
+ }
305
+ /**
306
+ * Builds the child-side {@link RelationField} for a single foreign key:
307
+ * `typeName` is the parent model name, `fields`/`references` are the FK's raw
308
+ * columns, and `onDelete`/`onUpdate` are normalized to their PSL spelling.
309
+ * Exported so a caller resolving a foreign key against a model outside
310
+ * `tables` (e.g. a cross-space reference into another contract) can reuse the
311
+ * same normalization instead of duplicating it.
312
+ *
313
+ * `hostTable` is the table the FK is declared on (i.e. `table`, not the
314
+ * referenced parent) — its own indexes/uniques/primary key are what a
315
+ * backing index for this FK would be. When none of them exactly match the
316
+ * FK's source columns (in order), `index: false` is stamped so the emitted
317
+ * `@relation` opts out of the framework's default derived backing-index
318
+ * expectation, matching what `db verify` will find live. Passing the table
319
+ * is optional so existing single-FK callers (e.g. cross-space resolution
320
+ * before a host table reference is threaded through) can omit it and keep
321
+ * the framework default.
322
+ */
323
+ function buildChildRelationField(fieldName, parentModelName, fk, optional, relationName, hostTable) {
324
+ const onDelete = fk.onDelete && fk.onDelete !== DEFAULT_ON_DELETE ? fk.onDelete : void 0;
325
+ const onUpdate = fk.onUpdate && fk.onUpdate !== DEFAULT_ON_UPDATE ? fk.onUpdate : void 0;
326
+ const index = hostTable && !isBackedByColumnKeys(fk.columns, backingIndexColumnKeys({
327
+ indexes: hostTable.indexes.filter((i) => i.where === void 0),
328
+ uniques: hostTable.uniques,
329
+ primaryKey: hostTable.primaryKey
330
+ })) ? false : void 0;
331
+ return {
332
+ fieldName,
333
+ typeName: parentModelName,
334
+ referencedTableName: fk.referencedTable,
335
+ optional,
336
+ list: false,
337
+ relationName,
338
+ fkName: fk.name,
339
+ fields: fk.columns,
340
+ references: fk.referencedColumns,
341
+ onDelete: onDelete ? REFERENTIAL_ACTION_PSL[onDelete] : void 0,
342
+ onUpdate: onUpdate ? REFERENTIAL_ACTION_PSL[onUpdate] : void 0,
343
+ index
344
+ };
345
+ }
346
+ function resolveUniqueFieldName(desired, usedNames, fallbackSuffix) {
347
+ if (!usedNames.has(desired)) return desired;
348
+ const withSuffix = `${desired}${fallbackSuffix}`;
349
+ if (!usedNames.has(withSuffix)) return withSuffix;
350
+ let counter = 2;
351
+ while (usedNames.has(`${desired}${counter}`)) counter++;
352
+ return `${desired}${counter}`;
353
+ }
354
+ function addRelationField(map, tableName, field) {
355
+ const existing = map.get(tableName);
356
+ if (existing) existing.push(field);
357
+ else map.set(tableName, [field]);
358
+ }
359
+ //#endregion
360
+ export { mapDefault as a, toEnumMemberName as c, toModelName as d, inferRelations as i, toEnumName as l, deriveBackRelationFieldName as n, parseRawDefault as o, deriveRelationFieldName as r, pluralize as s, buildChildRelationField as t, toFieldName as u };
361
+
362
+ //# sourceMappingURL=psl-infer-DGftl-HW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psl-infer-DGftl-HW.mjs","names":[],"sources":["../../../../2-sql/9-family/dist/psl-infer.mjs"],"sourcesContent":["import pluralizeLib from \"pluralize\";\nimport { backingIndexColumnKeys, isBackedByColumnKeys } from \"@internal/sql-contract/foreign-key-materialization\";\n//#region src/core/psl-contract-infer/default-mapping.ts\nconst DEFAULT_FUNCTION_ATTRIBUTES = {\n\t\"autoincrement()\": \"@default(autoincrement())\",\n\t\"now()\": \"@default(now())\"\n};\nfunction mapDefault(columnDefault, options) {\n\tswitch (columnDefault.kind) {\n\t\tcase \"literal\": return { attribute: `@default(${formatLiteralValue(columnDefault.value)})` };\n\t\tcase \"function\": {\n\t\t\tconst attribute = options?.functionAttributes?.[columnDefault.expression] ?? DEFAULT_FUNCTION_ATTRIBUTES[columnDefault.expression] ?? options?.fallbackFunctionAttribute?.(columnDefault.expression);\n\t\t\treturn attribute ? { attribute } : { comment: `// Raw default: ${columnDefault.expression.replace(/[\\r\\n]+/g, \" \")}` };\n\t\t}\n\t}\n}\nfunction formatLiteralValue(value) {\n\tif (value === null) return \"null\";\n\tswitch (typeof value) {\n\t\tcase \"boolean\":\n\t\tcase \"number\": return String(value);\n\t\tcase \"string\": return quoteString(value);\n\t\tdefault: return quoteString(JSON.stringify(value));\n\t}\n}\nfunction quoteString(str) {\n\treturn `\"${escapeString(str)}\"`;\n}\nfunction escapeString(str) {\n\treturn JSON.stringify(str).slice(1, -1);\n}\n//#endregion\n//#region src/core/psl-contract-infer/name-transforms.ts\nconst PSL_RESERVED_WORDS = /* @__PURE__ */ new Set([\n\t\"model\",\n\t\"enum\",\n\t\"types\",\n\t\"type\",\n\t\"generator\",\n\t\"datasource\"\n]);\nconst IDENTIFIER_PART_PATTERN = /[A-Za-z0-9]+/g;\nfunction hasSeparators(input) {\n\treturn /[^A-Za-z0-9]/.test(input);\n}\nfunction extractIdentifierParts(input) {\n\treturn input.match(IDENTIFIER_PART_PATTERN) ?? [];\n}\nfunction createSyntheticIdentifier(input) {\n\tlet hash = 2166136261;\n\tfor (const char of input) {\n\t\thash ^= char.codePointAt(0) ?? 0;\n\t\thash = Math.imul(hash, 16777619);\n\t}\n\treturn `x${(hash >>> 0).toString(16)}`;\n}\nfunction sanitizeIdentifierCharacters(input) {\n\tconst sanitized = input.replace(/[^\\w]/g, \"\");\n\treturn sanitized.length > 0 ? sanitized : createSyntheticIdentifier(input);\n}\nfunction capitalize(word) {\n\treturn word.charAt(0).toUpperCase() + word.slice(1);\n}\nfunction snakeToPascalCase(input) {\n\tconst parts = extractIdentifierParts(input);\n\tif (parts.length === 0) return capitalize(sanitizeIdentifierCharacters(input));\n\treturn parts.map(capitalize).join(\"\");\n}\nfunction snakeToCamelCase(input) {\n\tconst parts = extractIdentifierParts(input);\n\tif (parts.length === 0) return sanitizeIdentifierCharacters(input);\n\tconst [firstPart = input, ...rest] = parts;\n\treturn firstPart.charAt(0).toLowerCase() + firstPart.slice(1) + rest.map(capitalize).join(\"\");\n}\nfunction needsEscaping(name) {\n\treturn PSL_RESERVED_WORDS.has(name.toLowerCase()) || /^\\d/.test(name);\n}\nfunction escapeName(name) {\n\treturn `_${name}`;\n}\nfunction escapeIfNeeded(name) {\n\treturn needsEscaping(name) ? escapeName(name) : name;\n}\nfunction toModelName(tableName) {\n\tlet name;\n\tif (hasSeparators(tableName)) name = snakeToPascalCase(tableName);\n\telse name = tableName.charAt(0).toUpperCase() + tableName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: tableName\n\t};\n\tif (name !== tableName) return {\n\t\tname,\n\t\tmap: tableName\n\t};\n\treturn { name };\n}\nfunction toFieldName(columnName) {\n\tlet name;\n\tif (hasSeparators(columnName)) name = snakeToCamelCase(columnName);\n\telse name = columnName.charAt(0).toLowerCase() + columnName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: columnName\n\t};\n\tif (name !== columnName) return {\n\t\tname,\n\t\tmap: columnName\n\t};\n\treturn { name };\n}\nfunction toEnumName(pgTypeName) {\n\tlet name;\n\tif (hasSeparators(pgTypeName)) name = snakeToPascalCase(pgTypeName);\n\telse name = pgTypeName.charAt(0).toUpperCase() + pgTypeName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: pgTypeName\n\t};\n\tif (name !== pgTypeName) return {\n\t\tname,\n\t\tmap: pgTypeName\n\t};\n\treturn { name };\n}\nconst VALID_IDENTIFIER_PATTERN = /^[A-Za-z_]\\w*$/;\n/**\n* PSL member name for a native-enum value. The value itself always prints\n* explicitly (`member = \"value\"`), so the returned name never needs a map:\n* a value that already is a valid, non-reserved identifier is kept verbatim\n* (case included); anything else is camelCased/escaped like a field name.\n*/\nfunction toEnumMemberName(value) {\n\tif (VALID_IDENTIFIER_PATTERN.test(value) && !needsEscaping(value)) return value;\n\treturn escapeIfNeeded(snakeToCamelCase(value));\n}\nfunction pluralize(word) {\n\treturn pluralizeLib.plural(word);\n}\nfunction deriveRelationFieldName(fkColumns, referencedTableName) {\n\tif (fkColumns.length === 1) {\n\t\tconst [col = referencedTableName] = fkColumns;\n\t\tconst stripped = col.replace(/_id$/i, \"\").replace(/Id$/, \"\");\n\t\tif (stripped.length > 0 && stripped !== col) return escapeIfNeeded(snakeToCamelCase(stripped));\n\t\treturn escapeIfNeeded(snakeToCamelCase(referencedTableName));\n\t}\n\treturn escapeIfNeeded(snakeToCamelCase(referencedTableName));\n}\nfunction deriveBackRelationFieldName(childModelName, isOneToOne) {\n\tconst base = childModelName.charAt(0).toLowerCase() + childModelName.slice(1);\n\treturn isOneToOne ? base : pluralize(base);\n}\n//#endregion\n//#region src/core/psl-contract-infer/raw-default-parser.ts\nconst NEXTVAL_PATTERN = /^nextval\\s*\\(/i;\nconst NOW_FUNCTION_PATTERN = /^(now\\s*\\(\\s*\\)|CURRENT_TIMESTAMP)$/i;\nconst CLOCK_TIMESTAMP_PATTERN = /^clock_timestamp\\s*\\(\\s*\\)$/i;\nconst TIMESTAMP_CAST_SUFFIX = /::timestamp(?:tz|\\s+(?:with|without)\\s+time\\s+zone)?$/i;\nconst TEXT_CAST_SUFFIX = /::text$/i;\nconst NOW_LITERAL_PATTERN = /^'now'$/i;\nconst UUID_PATTERN = /^gen_random_uuid\\s*\\(\\s*\\)$/i;\nconst UUID_OSSP_PATTERN = /^uuid_generate_v4\\s*\\(\\s*\\)$/i;\nconst NULL_PATTERN = /^NULL(?:::.+)?$/i;\nconst TRUE_PATTERN = /^true$/i;\nconst FALSE_PATTERN = /^false$/i;\nconst NUMERIC_PATTERN = /^-?\\d+(\\.\\d+)?$/;\nconst JSON_CAST_SUFFIX = /::jsonb?$/i;\nconst STRING_LITERAL_PATTERN = /^'((?:[^']|'')*)'(?:::(?:\"[^\"]+\"|[\\w\\s]+)(?:\\(\\d+\\))?)?$/;\nfunction canonicalizeTimestampDefault(expr) {\n\tif (NOW_FUNCTION_PATTERN.test(expr)) return \"now()\";\n\tif (CLOCK_TIMESTAMP_PATTERN.test(expr)) return \"clock_timestamp()\";\n\tif (!TIMESTAMP_CAST_SUFFIX.test(expr)) return void 0;\n\tlet inner = expr.replace(TIMESTAMP_CAST_SUFFIX, \"\").trim();\n\tif (inner.startsWith(\"(\") && inner.endsWith(\")\")) inner = inner.slice(1, -1).trim();\n\tif (NOW_FUNCTION_PATTERN.test(inner)) return \"now()\";\n\tif (CLOCK_TIMESTAMP_PATTERN.test(inner)) return \"clock_timestamp()\";\n\tinner = inner.replace(TEXT_CAST_SUFFIX, \"\").trim();\n\tif (NOW_LITERAL_PATTERN.test(inner)) return \"now()\";\n}\nfunction parseRawDefault(rawDefault, nativeType) {\n\tconst trimmed = rawDefault.trim();\n\tconst normalizedType = nativeType?.toLowerCase();\n\tif (NEXTVAL_PATTERN.test(trimmed)) return {\n\t\tkind: \"function\",\n\t\texpression: \"autoincrement()\"\n\t};\n\tconst canonicalTimestamp = canonicalizeTimestampDefault(trimmed);\n\tif (canonicalTimestamp) return {\n\t\tkind: \"function\",\n\t\texpression: canonicalTimestamp\n\t};\n\tif (UUID_PATTERN.test(trimmed) || UUID_OSSP_PATTERN.test(trimmed)) return {\n\t\tkind: \"function\",\n\t\texpression: \"gen_random_uuid()\"\n\t};\n\tif (NULL_PATTERN.test(trimmed)) return {\n\t\tkind: \"literal\",\n\t\tvalue: null\n\t};\n\tif (TRUE_PATTERN.test(trimmed)) return {\n\t\tkind: \"literal\",\n\t\tvalue: true\n\t};\n\tif (FALSE_PATTERN.test(trimmed)) return {\n\t\tkind: \"literal\",\n\t\tvalue: false\n\t};\n\tif (NUMERIC_PATTERN.test(trimmed)) return {\n\t\tkind: \"literal\",\n\t\tvalue: Number(trimmed)\n\t};\n\tconst stringMatch = trimmed.match(STRING_LITERAL_PATTERN);\n\tif (stringMatch?.[1] !== void 0) {\n\t\tconst unescaped = stringMatch[1].replace(/''/g, \"'\");\n\t\tif (normalizedType === \"json\" || normalizedType === \"jsonb\") {\n\t\t\tif (JSON_CAST_SUFFIX.test(trimmed)) return {\n\t\t\t\tkind: \"function\",\n\t\t\t\texpression: trimmed\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"literal\",\n\t\t\t\t\tvalue: JSON.parse(unescaped)\n\t\t\t\t};\n\t\t\t} catch {}\n\t\t}\n\t\treturn {\n\t\t\tkind: \"literal\",\n\t\t\tvalue: unescaped\n\t\t};\n\t}\n\treturn {\n\t\tkind: \"function\",\n\t\texpression: trimmed\n\t};\n}\n//#endregion\n//#region src/core/psl-contract-infer/relation-inference.ts\nconst DEFAULT_ON_DELETE = \"noAction\";\nconst DEFAULT_ON_UPDATE = \"noAction\";\nconst REFERENTIAL_ACTION_PSL = {\n\tnoAction: \"NoAction\",\n\trestrict: \"Restrict\",\n\tcascade: \"Cascade\",\n\tsetNull: \"SetNull\",\n\tsetDefault: \"SetDefault\"\n};\nfunction inferRelations(tables, modelNameMap) {\n\tconst relationsByTable = /* @__PURE__ */ new Map();\n\tconst fkCountByPair = /* @__PURE__ */ new Map();\n\tfor (const table of Object.values(tables)) for (const fk of table.foreignKeys) {\n\t\tconst pairKey = `${table.name}→${fk.referencedTable}`;\n\t\tfkCountByPair.set(pairKey, (fkCountByPair.get(pairKey) ?? 0) + 1);\n\t}\n\tconst usedFieldNames = /* @__PURE__ */ new Map();\n\tfor (const table of Object.values(tables)) {\n\t\tconst names = /* @__PURE__ */ new Set();\n\t\tfor (const col of Object.values(table.columns)) names.add(col.name);\n\t\tusedFieldNames.set(table.name, names);\n\t}\n\tfor (const table of Object.values(tables)) for (const fk of table.foreignKeys) {\n\t\tconst childTableName = table.name;\n\t\tconst parentTableName = fk.referencedTable;\n\t\tconst childUsed = usedFieldNames.get(childTableName);\n\t\tconst childModelName = modelNameMap.get(childTableName) ?? childTableName;\n\t\tconst parentModelName = modelNameMap.get(parentTableName) ?? parentTableName;\n\t\tconst pairKey = `${childTableName}→${parentTableName}`;\n\t\tconst isSelfRelation = childTableName === parentTableName;\n\t\tconst needsRelationName = fkCountByPair.get(pairKey) > 1 || isSelfRelation;\n\t\tconst isOneToOne = detectOneToOne(fk, table);\n\t\tconst childRelFieldName = resolveUniqueFieldName(deriveRelationFieldName(fk.columns, parentTableName), childUsed, parentModelName);\n\t\tconst relationName = needsRelationName ? deriveRelationName(fk, childRelFieldName, parentModelName, isSelfRelation) : void 0;\n\t\taddRelationField(relationsByTable, childTableName, buildChildRelationField(childRelFieldName, parentModelName, fk, fk.columns.some((columnName) => table.columns[columnName]?.nullable ?? false), relationName, table));\n\t\tchildUsed.add(childRelFieldName);\n\t\tconst parentUsed = usedFieldNames.get(parentTableName) ?? /* @__PURE__ */ new Set();\n\t\tusedFieldNames.set(parentTableName, parentUsed);\n\t\tconst backRelFieldName = resolveUniqueFieldName(deriveBackRelationFieldName(childModelName, isOneToOne), parentUsed, childModelName);\n\t\taddRelationField(relationsByTable, parentTableName, {\n\t\t\tfieldName: backRelFieldName,\n\t\t\ttypeName: childModelName,\n\t\t\toptional: isOneToOne,\n\t\t\tlist: !isOneToOne,\n\t\t\trelationName\n\t\t});\n\t\tparentUsed.add(backRelFieldName);\n\t}\n\treturn { relationsByTable };\n}\nfunction detectOneToOne(fk, table) {\n\tconst fkCols = [...fk.columns].sort();\n\tif (table.primaryKey) {\n\t\tconst pkCols = [...table.primaryKey.columns].sort();\n\t\tif (pkCols.length === fkCols.length && pkCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\tfor (const unique of table.uniques) {\n\t\tconst uniqueCols = [...unique.columns].sort();\n\t\tif (uniqueCols.length === fkCols.length && uniqueCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\tfor (const index of table.indexes) {\n\t\tif (!index.unique || index.partial || index.columns === void 0) continue;\n\t\tconst indexCols = [...index.columns].sort();\n\t\tif (indexCols.length === fkCols.length && indexCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\treturn false;\n}\nfunction deriveRelationName(fk, childRelationFieldName, parentModelName, isSelfRelation) {\n\tif (fk.name) return fk.name;\n\tif (isSelfRelation) return `${childRelationFieldName.charAt(0).toUpperCase() + childRelationFieldName.slice(1)}${pluralize(parentModelName)}`;\n\treturn fk.columns.join(\"_\");\n}\n/**\n* Builds the child-side {@link RelationField} for a single foreign key:\n* `typeName` is the parent model name, `fields`/`references` are the FK's raw\n* columns, and `onDelete`/`onUpdate` are normalized to their PSL spelling.\n* Exported so a caller resolving a foreign key against a model outside\n* `tables` (e.g. a cross-space reference into another contract) can reuse the\n* same normalization instead of duplicating it.\n*\n* `hostTable` is the table the FK is declared on (i.e. `table`, not the\n* referenced parent) — its own indexes/uniques/primary key are what a\n* backing index for this FK would be. When none of them exactly match the\n* FK's source columns (in order), `index: false` is stamped so the emitted\n* `@relation` opts out of the framework's default derived backing-index\n* expectation, matching what `db verify` will find live. Passing the table\n* is optional so existing single-FK callers (e.g. cross-space resolution\n* before a host table reference is threaded through) can omit it and keep\n* the framework default.\n*/\nfunction buildChildRelationField(fieldName, parentModelName, fk, optional, relationName, hostTable) {\n\tconst onDelete = fk.onDelete && fk.onDelete !== DEFAULT_ON_DELETE ? fk.onDelete : void 0;\n\tconst onUpdate = fk.onUpdate && fk.onUpdate !== DEFAULT_ON_UPDATE ? fk.onUpdate : void 0;\n\tconst index = hostTable && !isBackedByColumnKeys(fk.columns, backingIndexColumnKeys({\n\t\tindexes: hostTable.indexes.filter((i) => i.where === void 0),\n\t\tuniques: hostTable.uniques,\n\t\tprimaryKey: hostTable.primaryKey\n\t})) ? false : void 0;\n\treturn {\n\t\tfieldName,\n\t\ttypeName: parentModelName,\n\t\treferencedTableName: fk.referencedTable,\n\t\toptional,\n\t\tlist: false,\n\t\trelationName,\n\t\tfkName: fk.name,\n\t\tfields: fk.columns,\n\t\treferences: fk.referencedColumns,\n\t\tonDelete: onDelete ? REFERENTIAL_ACTION_PSL[onDelete] : void 0,\n\t\tonUpdate: onUpdate ? REFERENTIAL_ACTION_PSL[onUpdate] : void 0,\n\t\tindex\n\t};\n}\nfunction resolveUniqueFieldName(desired, usedNames, fallbackSuffix) {\n\tif (!usedNames.has(desired)) return desired;\n\tconst withSuffix = `${desired}${fallbackSuffix}`;\n\tif (!usedNames.has(withSuffix)) return withSuffix;\n\tlet counter = 2;\n\twhile (usedNames.has(`${desired}${counter}`)) counter++;\n\treturn `${desired}${counter}`;\n}\nfunction addRelationField(map, tableName, field) {\n\tconst existing = map.get(tableName);\n\tif (existing) existing.push(field);\n\telse map.set(tableName, [field]);\n}\n//#endregion\nexport { buildChildRelationField, deriveBackRelationFieldName, deriveRelationFieldName, inferRelations, mapDefault, parseRawDefault, pluralize, toEnumMemberName, toEnumName, toFieldName, toModelName };\n\n//# sourceMappingURL=psl-infer.mjs.map"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "./query-lane-context-DtdVMqoz-C2Tj5QHA.mjs";