@nicia-ai/typegraph 0.50.0 → 0.51.0

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 (326) hide show
  1. package/README.md +12 -0
  2. package/dist/backend/drizzle/indexes.cjs +10 -8
  3. package/dist/backend/drizzle/indexes.d.cts +1 -1
  4. package/dist/backend/drizzle/indexes.d.ts +1 -1
  5. package/dist/backend/drizzle/indexes.js +6 -4
  6. package/dist/backend/index.cjs +183 -50
  7. package/dist/backend/index.d.cts +90 -4
  8. package/dist/backend/index.d.ts +90 -4
  9. package/dist/backend/index.js +6 -9
  10. package/dist/backend/postgres/index.cjs +30 -28
  11. package/dist/backend/postgres/index.d.cts +7 -7
  12. package/dist/backend/postgres/index.d.ts +7 -7
  13. package/dist/backend/postgres/index.js +16 -14
  14. package/dist/backend/postgres/pglite-store.cjs +6 -62
  15. package/dist/backend/postgres/pglite-store.cjs.map +1 -1
  16. package/dist/backend/postgres/pglite-store.d.cts +8 -8
  17. package/dist/backend/postgres/pglite-store.d.ts +8 -8
  18. package/dist/backend/postgres/pglite-store.js +6 -62
  19. package/dist/backend/postgres/pglite-store.js.map +1 -1
  20. package/dist/backend/postgres/pglite.cjs +18 -16
  21. package/dist/backend/postgres/pglite.d.cts +3 -3
  22. package/dist/backend/postgres/pglite.d.ts +3 -3
  23. package/dist/backend/postgres/pglite.js +17 -15
  24. package/dist/backend/sqlite/index.cjs +27 -25
  25. package/dist/backend/sqlite/index.d.cts +7 -7
  26. package/dist/backend/sqlite/index.d.ts +7 -7
  27. package/dist/backend/sqlite/index.js +14 -12
  28. package/dist/backend/sqlite/libsql.cjs +21 -19
  29. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  30. package/dist/backend/sqlite/libsql.d.cts +3 -3
  31. package/dist/backend/sqlite/libsql.d.ts +3 -3
  32. package/dist/backend/sqlite/libsql.js +16 -14
  33. package/dist/backend/sqlite/libsql.js.map +1 -1
  34. package/dist/backend/sqlite/local-store.cjs +8 -64
  35. package/dist/backend/sqlite/local-store.cjs.map +1 -1
  36. package/dist/backend/sqlite/local-store.d.cts +8 -8
  37. package/dist/backend/sqlite/local-store.d.ts +8 -8
  38. package/dist/backend/sqlite/local-store.js +7 -64
  39. package/dist/backend/sqlite/local-store.js.map +1 -1
  40. package/dist/backend/sqlite/local.cjs +22 -19
  41. package/dist/backend/sqlite/local.d.cts +3 -3
  42. package/dist/backend/sqlite/local.d.ts +3 -3
  43. package/dist/backend/sqlite/local.js +18 -15
  44. package/dist/{chunk-TUVD4DFR.cjs → chunk-2CVDZCXH.cjs} +122 -51
  45. package/dist/chunk-2CVDZCXH.cjs.map +1 -0
  46. package/dist/{chunk-I5C6OTKR.js → chunk-2DWTBNSH.js} +3 -3
  47. package/dist/{chunk-I5C6OTKR.js.map → chunk-2DWTBNSH.js.map} +1 -1
  48. package/dist/{chunk-C76WFIVZ.cjs → chunk-2KCTP3U2.cjs} +180 -127
  49. package/dist/chunk-2KCTP3U2.cjs.map +1 -0
  50. package/dist/{chunk-BYBDM423.cjs → chunk-322TBTOQ.cjs} +48 -48
  51. package/dist/{chunk-BYBDM423.cjs.map → chunk-322TBTOQ.cjs.map} +1 -1
  52. package/dist/chunk-36SX6QXP.cjs +186 -0
  53. package/dist/chunk-36SX6QXP.cjs.map +1 -0
  54. package/dist/{chunk-H3XP6BAV.js → chunk-36VYWVQU.js} +3 -3
  55. package/dist/{chunk-H3XP6BAV.js.map → chunk-36VYWVQU.js.map} +1 -1
  56. package/dist/{chunk-VTJVMP4I.js → chunk-4DKY6RIU.js} +102 -31
  57. package/dist/chunk-4DKY6RIU.js.map +1 -0
  58. package/dist/chunk-4QKOZYMV.js +9 -0
  59. package/dist/chunk-4QKOZYMV.js.map +1 -0
  60. package/dist/{chunk-U3Z7XKAG.js → chunk-57JM6NW3.js} +8 -18
  61. package/dist/chunk-57JM6NW3.js.map +1 -0
  62. package/dist/{chunk-XMY2SXOH.cjs → chunk-5WWEYV4H.cjs} +2208 -579
  63. package/dist/chunk-5WWEYV4H.cjs.map +1 -0
  64. package/dist/{chunk-WQBAQZHR.js → chunk-6NLYIMJO.js} +4 -4
  65. package/dist/{chunk-WQBAQZHR.js.map → chunk-6NLYIMJO.js.map} +1 -1
  66. package/dist/{chunk-G2TLHH6T.cjs → chunk-7B7I7YAW.cjs} +6 -6
  67. package/dist/{chunk-G2TLHH6T.cjs.map → chunk-7B7I7YAW.cjs.map} +1 -1
  68. package/dist/{chunk-EDLKIQRI.js → chunk-7G5IYROL.js} +6 -548
  69. package/dist/chunk-7G5IYROL.js.map +1 -0
  70. package/dist/{chunk-46UGOVRW.js → chunk-7QFRK6PU.js} +3 -7
  71. package/dist/chunk-7QFRK6PU.js.map +1 -0
  72. package/dist/chunk-A4C4NJ5U.cjs +12 -0
  73. package/dist/chunk-A4C4NJ5U.cjs.map +1 -0
  74. package/dist/{chunk-TYGGUWMS.cjs → chunk-B3MN7EJR.cjs} +177 -137
  75. package/dist/chunk-B3MN7EJR.cjs.map +1 -0
  76. package/dist/{chunk-K6VKTBST.cjs → chunk-BZ5MVITP.cjs} +4 -4
  77. package/dist/{chunk-K6VKTBST.cjs.map → chunk-BZ5MVITP.cjs.map} +1 -1
  78. package/dist/{chunk-R7MRFE5P.js → chunk-CAI6SMP6.js} +3 -3
  79. package/dist/{chunk-R7MRFE5P.js.map → chunk-CAI6SMP6.js.map} +1 -1
  80. package/dist/{chunk-ZAQUKCUC.js → chunk-CBOD7TXH.js} +5 -5
  81. package/dist/{chunk-ZAQUKCUC.js.map → chunk-CBOD7TXH.js.map} +1 -1
  82. package/dist/{chunk-LLVOQOWE.cjs → chunk-CRZ56SZU.cjs} +6 -5
  83. package/dist/chunk-CRZ56SZU.cjs.map +1 -0
  84. package/dist/{chunk-ON47CBE4.cjs → chunk-D3GWARN7.cjs} +47 -47
  85. package/dist/{chunk-ON47CBE4.cjs.map → chunk-D3GWARN7.cjs.map} +1 -1
  86. package/dist/{chunk-W5SOCUBL.js → chunk-D3OUDFU7.js} +5 -5
  87. package/dist/{chunk-W5SOCUBL.js.map → chunk-D3OUDFU7.js.map} +1 -1
  88. package/dist/chunk-EKG2UXNX.cjs +23 -0
  89. package/dist/chunk-EKG2UXNX.cjs.map +1 -0
  90. package/dist/{chunk-7PRMDZIA.cjs → chunk-FMMW3KX7.cjs} +21 -55
  91. package/dist/chunk-FMMW3KX7.cjs.map +1 -0
  92. package/dist/chunk-H2VWDQWC.cjs +571 -0
  93. package/dist/chunk-H2VWDQWC.cjs.map +1 -0
  94. package/dist/chunk-H4FY6OZK.js +13 -0
  95. package/dist/chunk-H4FY6OZK.js.map +1 -0
  96. package/dist/{chunk-OJHD3LXJ.cjs → chunk-H5IJSROF.cjs} +2 -8
  97. package/dist/chunk-H5IJSROF.cjs.map +1 -0
  98. package/dist/{chunk-U5EL6JUV.js → chunk-I5IOSA27.js} +101 -103
  99. package/dist/chunk-I5IOSA27.js.map +1 -0
  100. package/dist/{chunk-SHC7BCG5.cjs → chunk-I7YAY2VQ.cjs} +7 -7
  101. package/dist/{chunk-SHC7BCG5.cjs.map → chunk-I7YAY2VQ.cjs.map} +1 -1
  102. package/dist/chunk-IRCWIA3R.js +20 -0
  103. package/dist/chunk-IRCWIA3R.js.map +1 -0
  104. package/dist/chunk-IVQBLXBK.cjs +55 -0
  105. package/dist/chunk-IVQBLXBK.cjs.map +1 -0
  106. package/dist/{chunk-5PP4KRPV.js → chunk-IZD4HTCP.js} +5 -5
  107. package/dist/{chunk-5PP4KRPV.js.map → chunk-IZD4HTCP.js.map} +1 -1
  108. package/dist/{chunk-7CCMCMJO.cjs → chunk-JHRUZ73O.cjs} +75 -66
  109. package/dist/chunk-JHRUZ73O.cjs.map +1 -0
  110. package/dist/{chunk-RDP6ZRSM.cjs → chunk-JQKMEKKW.cjs} +261 -204
  111. package/dist/chunk-JQKMEKKW.cjs.map +1 -0
  112. package/dist/chunk-JVA3KDEA.cjs +691 -0
  113. package/dist/chunk-JVA3KDEA.cjs.map +1 -0
  114. package/dist/{chunk-JG5XIJDY.js → chunk-K67P5DLL.js} +62 -22
  115. package/dist/chunk-K67P5DLL.js.map +1 -0
  116. package/dist/{chunk-CS6JTQQ2.cjs → chunk-KACEYDYV.cjs} +94 -62
  117. package/dist/chunk-KACEYDYV.cjs.map +1 -0
  118. package/dist/{chunk-5OWHU7Z7.cjs → chunk-L6EVYIID.cjs} +248 -210
  119. package/dist/chunk-L6EVYIID.cjs.map +1 -0
  120. package/dist/{chunk-7OWE7WD6.js → chunk-LI4K2KEJ.js} +4 -4
  121. package/dist/{chunk-7OWE7WD6.js.map → chunk-LI4K2KEJ.js.map} +1 -1
  122. package/dist/chunk-LKZDQ2B4.js +1581 -0
  123. package/dist/chunk-LKZDQ2B4.js.map +1 -0
  124. package/dist/{chunk-45YZXI6X.cjs → chunk-LLFPQOBA.cjs} +27 -27
  125. package/dist/{chunk-45YZXI6X.cjs.map → chunk-LLFPQOBA.cjs.map} +1 -1
  126. package/dist/{chunk-ZRJTM7MT.js → chunk-LZMQ3SFK.js} +3 -3
  127. package/dist/{chunk-ZRJTM7MT.js.map → chunk-LZMQ3SFK.js.map} +1 -1
  128. package/dist/{chunk-DI6VC62F.js → chunk-M3VTS3F6.js} +3 -3
  129. package/dist/{chunk-DI6VC62F.js.map → chunk-M3VTS3F6.js.map} +1 -1
  130. package/dist/{chunk-MZ34E2GN.js → chunk-NBOS7BY3.js} +60 -21
  131. package/dist/chunk-NBOS7BY3.js.map +1 -0
  132. package/dist/{chunk-YA36ABIL.js → chunk-NGQDGL5X.js} +14 -48
  133. package/dist/chunk-NGQDGL5X.js.map +1 -0
  134. package/dist/{chunk-ZBFZGLZE.cjs → chunk-NLX5OWK7.cjs} +6 -2
  135. package/dist/chunk-NLX5OWK7.cjs.map +1 -0
  136. package/dist/chunk-NUQ2YFFH.cjs +1637 -0
  137. package/dist/chunk-NUQ2YFFH.cjs.map +1 -0
  138. package/dist/{chunk-TTCOPKUL.cjs → chunk-OGL4X4PH.cjs} +182 -184
  139. package/dist/chunk-OGL4X4PH.cjs.map +1 -0
  140. package/dist/{chunk-HY5BNOUN.cjs → chunk-OTNTGEXR.cjs} +4 -4
  141. package/dist/{chunk-HY5BNOUN.cjs.map → chunk-OTNTGEXR.cjs.map} +1 -1
  142. package/dist/chunk-OTWE63BW.js +53 -0
  143. package/dist/chunk-OTWE63BW.js.map +1 -0
  144. package/dist/chunk-PC5NGH5A.js +549 -0
  145. package/dist/chunk-PC5NGH5A.js.map +1 -0
  146. package/dist/{chunk-IPRP6TDL.cjs → chunk-PS3TUWJM.cjs} +7 -7
  147. package/dist/{chunk-IPRP6TDL.cjs.map → chunk-PS3TUWJM.cjs.map} +1 -1
  148. package/dist/{chunk-V76FGHY3.js → chunk-PVFFH7TL.js} +5 -5
  149. package/dist/{chunk-V76FGHY3.js.map → chunk-PVFFH7TL.js.map} +1 -1
  150. package/dist/chunk-QCD5JKU4.cjs +15 -0
  151. package/dist/chunk-QCD5JKU4.cjs.map +1 -0
  152. package/dist/{chunk-IRPYOHRC.js → chunk-QG5VEOKX.js} +6 -2
  153. package/dist/chunk-QG5VEOKX.js.map +1 -0
  154. package/dist/{chunk-MM3JHVKZ.cjs → chunk-QLLZM5I3.cjs} +4 -4
  155. package/dist/{chunk-MM3JHVKZ.cjs.map → chunk-QLLZM5I3.cjs.map} +1 -1
  156. package/dist/{chunk-MX7EKQPM.js → chunk-RCBG6YMT.js} +345 -97
  157. package/dist/chunk-RCBG6YMT.js.map +1 -0
  158. package/dist/{chunk-2CYI5HRH.js → chunk-RI7RJH4G.js} +49 -17
  159. package/dist/chunk-RI7RJH4G.js.map +1 -0
  160. package/dist/{chunk-5LKOVCPP.js → chunk-RVUL2HXY.js} +6 -5
  161. package/dist/chunk-RVUL2HXY.js.map +1 -0
  162. package/dist/{chunk-WK23PGTP.cjs → chunk-S5GU4LUN.cjs} +11 -11
  163. package/dist/{chunk-WK23PGTP.cjs.map → chunk-S5GU4LUN.cjs.map} +1 -1
  164. package/dist/{chunk-S33YQEL7.js → chunk-SDPWO2Z5.js} +6 -6
  165. package/dist/{chunk-S33YQEL7.js.map → chunk-SDPWO2Z5.js.map} +1 -1
  166. package/dist/{chunk-6S3PTHL4.js → chunk-SLGGT2XD.js} +3 -3
  167. package/dist/{chunk-6S3PTHL4.js.map → chunk-SLGGT2XD.js.map} +1 -1
  168. package/dist/{chunk-HSEZ7X6Y.cjs → chunk-TIJUA4I6.cjs} +45 -45
  169. package/dist/{chunk-HSEZ7X6Y.cjs.map → chunk-TIJUA4I6.cjs.map} +1 -1
  170. package/dist/{chunk-CSNOYIB4.cjs → chunk-TM54OBHX.cjs} +13 -13
  171. package/dist/{chunk-CSNOYIB4.cjs.map → chunk-TM54OBHX.cjs.map} +1 -1
  172. package/dist/{chunk-2GIV5X4P.js → chunk-TYEYRCXL.js} +86 -33
  173. package/dist/chunk-TYEYRCXL.js.map +1 -0
  174. package/dist/{chunk-MJPZNEJZ.js → chunk-UKOVGCRN.js} +2095 -496
  175. package/dist/chunk-UKOVGCRN.js.map +1 -0
  176. package/dist/chunk-UYKDYE5D.cjs +12 -0
  177. package/dist/{chunk-KWNWG4RC.cjs.map → chunk-UYKDYE5D.cjs.map} +1 -1
  178. package/dist/{chunk-FX5ZW6PN.js → chunk-VAAC7L57.js} +95 -40
  179. package/dist/chunk-VAAC7L57.js.map +1 -0
  180. package/dist/{chunk-ISKCIQF2.cjs → chunk-VKHXYVN7.cjs} +14 -25
  181. package/dist/chunk-VKHXYVN7.cjs.map +1 -0
  182. package/dist/chunk-VUQZNUHU.js +171 -0
  183. package/dist/chunk-VUQZNUHU.js.map +1 -0
  184. package/dist/{chunk-K2XYLVVB.cjs → chunk-WDM5WQK4.cjs} +175 -136
  185. package/dist/chunk-WDM5WQK4.cjs.map +1 -0
  186. package/dist/{chunk-GVYVGGPJ.js → chunk-WFSYYU4W.js} +66 -28
  187. package/dist/chunk-WFSYYU4W.js.map +1 -0
  188. package/dist/{chunk-WCLMKNQE.cjs → chunk-WRBV2FNH.cjs} +1356 -1108
  189. package/dist/chunk-WRBV2FNH.cjs.map +1 -0
  190. package/dist/chunk-XORONCV3.js +202 -0
  191. package/dist/chunk-XORONCV3.js.map +1 -0
  192. package/dist/{chunk-2Q45FAIE.js → chunk-YT2IVFAI.js} +26 -17
  193. package/dist/chunk-YT2IVFAI.js.map +1 -0
  194. package/dist/chunk-ZGVTNKTX.cjs +217 -0
  195. package/dist/chunk-ZGVTNKTX.cjs.map +1 -0
  196. package/dist/core/index.cjs +20 -20
  197. package/dist/core/index.d.cts +4 -4
  198. package/dist/core/index.d.ts +4 -4
  199. package/dist/core/index.js +4 -4
  200. package/dist/{ddl-B49O7dB_.d.ts → ddl-BvcbgzHo.d.ts} +3 -3
  201. package/dist/{ddl-DcZG660s.d.cts → ddl-Ufebz5q5.d.cts} +3 -3
  202. package/dist/graph-extension/index.d.cts +2 -4
  203. package/dist/graph-extension/index.d.ts +2 -4
  204. package/dist/graph-merge/index.cjs +140 -125
  205. package/dist/graph-merge/index.cjs.map +1 -1
  206. package/dist/graph-merge/index.d.cts +8 -9
  207. package/dist/graph-merge/index.d.ts +8 -9
  208. package/dist/graph-merge/index.js +42 -27
  209. package/dist/graph-merge/index.js.map +1 -1
  210. package/dist/index.cjs +144 -143
  211. package/dist/index.cjs.map +1 -1
  212. package/dist/index.d.cts +11 -12
  213. package/dist/index.d.ts +11 -12
  214. package/dist/index.js +30 -29
  215. package/dist/index.js.map +1 -1
  216. package/dist/indexes/index.cjs +14 -12
  217. package/dist/indexes/index.d.cts +4 -4
  218. package/dist/indexes/index.d.ts +4 -4
  219. package/dist/indexes/index.js +7 -5
  220. package/dist/{ingestion-import-target-CI8OWIkM.d.ts → ingestion-import-target-CAs1OX-l.d.cts} +1 -1
  221. package/dist/{ingestion-import-target-DCpfM1PX.d.cts → ingestion-import-target-DCQSPfNx.d.ts} +1 -1
  222. package/dist/interchange/index.cjs +41 -39
  223. package/dist/interchange/index.cjs.map +1 -1
  224. package/dist/interchange/index.d.cts +8 -8
  225. package/dist/interchange/index.d.ts +8 -8
  226. package/dist/interchange/index.js +16 -14
  227. package/dist/interchange/index.js.map +1 -1
  228. package/dist/local-store-impl-6DDTFM32.cjs +77 -0
  229. package/dist/local-store-impl-6DDTFM32.cjs.map +1 -0
  230. package/dist/local-store-impl-OXTOVU2J.js +75 -0
  231. package/dist/local-store-impl-OXTOVU2J.js.map +1 -0
  232. package/dist/{manager-Cfg1ENj1.d.ts → manager-B68OrPR2.d.ts} +1 -2
  233. package/dist/{manager-D348fa6W.d.cts → manager-D_t7oK69.d.cts} +1 -2
  234. package/dist/pglite-store-impl-6EMZGL7K.js +73 -0
  235. package/dist/pglite-store-impl-6EMZGL7K.js.map +1 -0
  236. package/dist/pglite-store-impl-GJG3Y7RP.cjs +75 -0
  237. package/dist/pglite-store-impl-GJG3Y7RP.cjs.map +1 -0
  238. package/dist/{postgres-UStOycLI.d.ts → postgres-BPLSVyHM.d.ts} +1 -1
  239. package/dist/{postgres-CH1kkM5J.d.cts → postgres-CqvtFC2y.d.cts} +1 -1
  240. package/dist/profiler/index.d.cts +9 -9
  241. package/dist/profiler/index.d.ts +9 -9
  242. package/dist/provenance/index.cjs +33 -20
  243. package/dist/provenance/index.cjs.map +1 -1
  244. package/dist/provenance/index.d.cts +7 -7
  245. package/dist/provenance/index.d.ts +7 -7
  246. package/dist/provenance/index.js +24 -11
  247. package/dist/provenance/index.js.map +1 -1
  248. package/dist/{repair-validity-windows-aWX7VNvv.d.cts → repair-validity-windows-DEzCKAdy.d.cts} +7 -3
  249. package/dist/{repair-validity-windows-BtOEe2pS.d.ts → repair-validity-windows-GMdaS2AH.d.ts} +7 -3
  250. package/dist/resolve-D_H8MHtq.d.ts +1805 -0
  251. package/dist/resolve-WEW8gWws.d.cts +1805 -0
  252. package/dist/schema/index.cjs +42 -40
  253. package/dist/schema/index.d.cts +4 -6
  254. package/dist/schema/index.d.ts +4 -6
  255. package/dist/schema/index.js +15 -13
  256. package/dist/{searchable-z4BiFfHI.d.ts → searchable-C_UREI9K.d.ts} +1 -1
  257. package/dist/{searchable-C8-RrL3l.d.cts → searchable-ClgET_i7.d.cts} +1 -1
  258. package/dist/{sqlite-axLw5Lo5.d.ts → sqlite-D1mXO9Kp.d.cts} +2 -1
  259. package/dist/{sqlite-Cyx9j9o6.d.cts → sqlite-MZA3oZNB.d.ts} +2 -1
  260. package/dist/{store-CTfQ9taw.d.ts → store-CuFX7fCx.d.cts} +38 -41
  261. package/dist/{store-DR9J7JVB.d.cts → store-D-ZjXQpW.d.ts} +38 -41
  262. package/dist/{temporal-CBOrERz5.d.ts → temporal-CpyEiRY8.d.cts} +1 -1
  263. package/dist/{temporal-B4Ky4wzh.d.cts → temporal-y0Aep9Su.d.ts} +1 -1
  264. package/dist/{types-CWg4dTjj.d.ts → types-6yf0Vv-_.d.cts} +1672 -1
  265. package/dist/{types-CWg4dTjj.d.cts → types-6yf0Vv-_.d.ts} +1672 -1
  266. package/dist/{types-BScHXVM7.d.ts → types-DzJ4dlzk.d.cts} +1 -1
  267. package/dist/{types-BE921wRl.d.cts → types-_vVSB9k-.d.ts} +1 -1
  268. package/dist/{where-BWXUPV3C.d.ts → where-DuG2LCLe.d.ts} +1 -1
  269. package/dist/{where-CNtx1aLc.d.cts → where-Mhf_yyKX.d.cts} +1 -1
  270. package/package.json +5 -1
  271. package/dist/chunk-2CYI5HRH.js.map +0 -1
  272. package/dist/chunk-2GIV5X4P.js.map +0 -1
  273. package/dist/chunk-2Q45FAIE.js.map +0 -1
  274. package/dist/chunk-46UGOVRW.js.map +0 -1
  275. package/dist/chunk-5LKOVCPP.js.map +0 -1
  276. package/dist/chunk-5OWHU7Z7.cjs.map +0 -1
  277. package/dist/chunk-6LEOAIIB.js +0 -1160
  278. package/dist/chunk-6LEOAIIB.js.map +0 -1
  279. package/dist/chunk-7CCMCMJO.cjs.map +0 -1
  280. package/dist/chunk-7PRMDZIA.cjs.map +0 -1
  281. package/dist/chunk-C76WFIVZ.cjs.map +0 -1
  282. package/dist/chunk-CS6JTQQ2.cjs.map +0 -1
  283. package/dist/chunk-EDLKIQRI.js.map +0 -1
  284. package/dist/chunk-EH3JZJUM.cjs +0 -567
  285. package/dist/chunk-EH3JZJUM.cjs.map +0 -1
  286. package/dist/chunk-FX5ZW6PN.js.map +0 -1
  287. package/dist/chunk-GHZPZNFC.cjs +0 -132
  288. package/dist/chunk-GHZPZNFC.cjs.map +0 -1
  289. package/dist/chunk-GVYVGGPJ.js.map +0 -1
  290. package/dist/chunk-IHK5KA2Q.cjs +0 -262
  291. package/dist/chunk-IHK5KA2Q.cjs.map +0 -1
  292. package/dist/chunk-IRPYOHRC.js.map +0 -1
  293. package/dist/chunk-ISKCIQF2.cjs.map +0 -1
  294. package/dist/chunk-JG5XIJDY.js.map +0 -1
  295. package/dist/chunk-K2XYLVVB.cjs.map +0 -1
  296. package/dist/chunk-KWNWG4RC.cjs +0 -12
  297. package/dist/chunk-LLVOQOWE.cjs.map +0 -1
  298. package/dist/chunk-MJPZNEJZ.js.map +0 -1
  299. package/dist/chunk-MX7EKQPM.js.map +0 -1
  300. package/dist/chunk-MZ34E2GN.js.map +0 -1
  301. package/dist/chunk-OJHD3LXJ.cjs.map +0 -1
  302. package/dist/chunk-PALYTHGM.js +0 -114
  303. package/dist/chunk-PALYTHGM.js.map +0 -1
  304. package/dist/chunk-RDP6ZRSM.cjs.map +0 -1
  305. package/dist/chunk-S3SDEQMC.js +0 -532
  306. package/dist/chunk-S3SDEQMC.js.map +0 -1
  307. package/dist/chunk-TEC24ZDA.cjs +0 -1254
  308. package/dist/chunk-TEC24ZDA.cjs.map +0 -1
  309. package/dist/chunk-TP4NJTI3.cjs +0 -1192
  310. package/dist/chunk-TP4NJTI3.cjs.map +0 -1
  311. package/dist/chunk-TTCOPKUL.cjs.map +0 -1
  312. package/dist/chunk-TUVD4DFR.cjs.map +0 -1
  313. package/dist/chunk-TYGGUWMS.cjs.map +0 -1
  314. package/dist/chunk-U3Z7XKAG.js.map +0 -1
  315. package/dist/chunk-U5EL6JUV.js.map +0 -1
  316. package/dist/chunk-VTJVMP4I.js.map +0 -1
  317. package/dist/chunk-WCLMKNQE.cjs.map +0 -1
  318. package/dist/chunk-XMY2SXOH.cjs.map +0 -1
  319. package/dist/chunk-Y55DLLEG.js +0 -247
  320. package/dist/chunk-Y55DLLEG.js.map +0 -1
  321. package/dist/chunk-YA36ABIL.js.map +0 -1
  322. package/dist/chunk-ZBFZGLZE.cjs.map +0 -1
  323. package/dist/index-B0PrmE3K.d.cts +0 -1146
  324. package/dist/index-CwcXsL5R.d.ts +0 -1146
  325. package/dist/materialize-indexes-C9GG3O3C.d.ts +0 -266
  326. package/dist/materialize-indexes-CrSiW_lT.d.cts +0 -266
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkSHC7BCG5_cjs = require('./chunk-SHC7BCG5.cjs');
4
- var chunkTEC24ZDA_cjs = require('./chunk-TEC24ZDA.cjs');
5
- var chunkOJHD3LXJ_cjs = require('./chunk-OJHD3LXJ.cjs');
3
+ var chunkI7YAY2VQ_cjs = require('./chunk-I7YAY2VQ.cjs');
4
+ var chunkJVA3KDEA_cjs = require('./chunk-JVA3KDEA.cjs');
5
+ var chunkH5IJSROF_cjs = require('./chunk-H5IJSROF.cjs');
6
6
  var pgCore = require('drizzle-orm/pg-core');
7
7
  var sqliteCore = require('drizzle-orm/sqlite-core');
8
8
  var drizzleOrm = require('drizzle-orm');
@@ -12,8 +12,8 @@ var DIALECT_BY_BACKEND_NAME = {
12
12
  SQLite: "sqlite"
13
13
  };
14
14
  function compileQueryWithDialect(db, query, backendName) {
15
- if (chunkOJHD3LXJ_cjs.isSqlFragment(query)) {
16
- return chunkOJHD3LXJ_cjs.renderSql(query, DIALECT_BY_BACKEND_NAME[backendName]);
15
+ if (chunkH5IJSROF_cjs.isSqlFragment(query)) {
16
+ return chunkH5IJSROF_cjs.renderSql(query, DIALECT_BY_BACKEND_NAME[backendName]);
17
17
  }
18
18
  const databaseWithCompiler = db;
19
19
  const compiler = databaseWithCompiler.dialect;
@@ -32,13 +32,13 @@ function toDrizzleSql(fragment, dialect) {
32
32
  return drizzleOrm.sql.raw(`"${chunk.value.replaceAll('"', '""')}"`);
33
33
  }
34
34
  case "parameter": {
35
- return drizzleOrm.sql.param(chunkOJHD3LXJ_cjs.bindSqlValue(chunk.value, dialect));
35
+ return drizzleOrm.sql.param(chunkH5IJSROF_cjs.bindSqlValue(chunk.value, dialect));
36
36
  }
37
37
  case "placeholder": {
38
38
  return drizzleOrm.sql.placeholder(chunk.value.name);
39
39
  }
40
40
  default: {
41
- return chunkOJHD3LXJ_cjs.throwUnsupportedSqlChunk(chunk);
41
+ return chunkH5IJSROF_cjs.throwUnsupportedSqlChunk(chunk);
42
42
  }
43
43
  }
44
44
  });
@@ -51,9 +51,9 @@ function buildPostgresNodeIndexBuilders(table, indexes) {
51
51
  (index) => index.entity === "node" && index.method === void 0
52
52
  );
53
53
  return nodeIndexes.map((index) => {
54
- const propsColumn = chunkOJHD3LXJ_cjs.sql.identifier(table.props.name);
55
- const systemColumn = (column) => chunkOJHD3LXJ_cjs.sql.identifier(getPostgresNodeSystemColumn(table, column).name);
56
- const { keys } = chunkTEC24ZDA_cjs.compileNodeIndexKeys(
54
+ const propsColumn = chunkH5IJSROF_cjs.sql.identifier(table.props.name);
55
+ const systemColumn = (column) => chunkH5IJSROF_cjs.sql.identifier(getPostgresNodeSystemColumn(table, column).name);
56
+ const { keys } = chunkJVA3KDEA_cjs.compileNodeIndexKeys(
57
57
  index,
58
58
  "postgres",
59
59
  propsColumn,
@@ -72,7 +72,7 @@ function buildPostgresNodeIndexBuilders(table, indexes) {
72
72
  systemColumn
73
73
  };
74
74
  builder.where(
75
- toDrizzleSql(chunkTEC24ZDA_cjs.compileIndexWhere(ctx, index.where), "postgres")
75
+ toDrizzleSql(chunkJVA3KDEA_cjs.compileIndexWhere(ctx, index.where), "postgres")
76
76
  );
77
77
  }
78
78
  return builder;
@@ -83,9 +83,9 @@ function buildPostgresEdgeIndexBuilders(table, indexes) {
83
83
  (index) => index.entity === "edge" && index.method === void 0
84
84
  );
85
85
  return edgeIndexes.map((index) => {
86
- const propsColumn = chunkOJHD3LXJ_cjs.sql.identifier(table.props.name);
87
- const systemColumn = (column) => chunkOJHD3LXJ_cjs.sql.identifier(getPostgresEdgeSystemColumn(table, column).name);
88
- const { keys } = chunkTEC24ZDA_cjs.compileEdgeIndexKeys(
86
+ const propsColumn = chunkH5IJSROF_cjs.sql.identifier(table.props.name);
87
+ const systemColumn = (column) => chunkH5IJSROF_cjs.sql.identifier(getPostgresEdgeSystemColumn(table, column).name);
88
+ const { keys } = chunkJVA3KDEA_cjs.compileEdgeIndexKeys(
89
89
  index,
90
90
  "postgres",
91
91
  propsColumn,
@@ -104,7 +104,7 @@ function buildPostgresEdgeIndexBuilders(table, indexes) {
104
104
  systemColumn
105
105
  };
106
106
  builder.where(
107
- toDrizzleSql(chunkTEC24ZDA_cjs.compileIndexWhere(ctx, index.where), "postgres")
107
+ toDrizzleSql(chunkJVA3KDEA_cjs.compileIndexWhere(ctx, index.where), "postgres")
108
108
  );
109
109
  }
110
110
  return builder;
@@ -195,9 +195,9 @@ function buildSqliteNodeIndexBuilders(table, indexes) {
195
195
  (index) => index.entity === "node" && index.method === void 0
196
196
  );
197
197
  return nodeIndexes.map((index) => {
198
- const propsColumn = chunkOJHD3LXJ_cjs.sql.identifier(table.props.name);
199
- const systemColumn = (column) => chunkOJHD3LXJ_cjs.sql.identifier(getSqliteNodeSystemColumn(table, column).name);
200
- const { keys } = chunkTEC24ZDA_cjs.compileNodeIndexKeys(
198
+ const propsColumn = chunkH5IJSROF_cjs.sql.identifier(table.props.name);
199
+ const systemColumn = (column) => chunkH5IJSROF_cjs.sql.identifier(getSqliteNodeSystemColumn(table, column).name);
200
+ const { keys } = chunkJVA3KDEA_cjs.compileNodeIndexKeys(
201
201
  index,
202
202
  "sqlite",
203
203
  propsColumn,
@@ -216,7 +216,7 @@ function buildSqliteNodeIndexBuilders(table, indexes) {
216
216
  systemColumn
217
217
  };
218
218
  builder.where(
219
- toDrizzleSql(chunkTEC24ZDA_cjs.compileIndexWhere(ctx, index.where), "sqlite")
219
+ toDrizzleSql(chunkJVA3KDEA_cjs.compileIndexWhere(ctx, index.where), "sqlite")
220
220
  );
221
221
  }
222
222
  return builder;
@@ -227,9 +227,9 @@ function buildSqliteEdgeIndexBuilders(table, indexes) {
227
227
  (index) => index.entity === "edge" && index.method === void 0
228
228
  );
229
229
  return edgeIndexes.map((index) => {
230
- const propsColumn = chunkOJHD3LXJ_cjs.sql.identifier(table.props.name);
231
- const systemColumn = (column) => chunkOJHD3LXJ_cjs.sql.identifier(getSqliteEdgeSystemColumn(table, column).name);
232
- const { keys } = chunkTEC24ZDA_cjs.compileEdgeIndexKeys(
230
+ const propsColumn = chunkH5IJSROF_cjs.sql.identifier(table.props.name);
231
+ const systemColumn = (column) => chunkH5IJSROF_cjs.sql.identifier(getSqliteEdgeSystemColumn(table, column).name);
232
+ const { keys } = chunkJVA3KDEA_cjs.compileEdgeIndexKeys(
233
233
  index,
234
234
  "sqlite",
235
235
  propsColumn,
@@ -248,7 +248,7 @@ function buildSqliteEdgeIndexBuilders(table, indexes) {
248
248
  systemColumn
249
249
  };
250
250
  builder.where(
251
- toDrizzleSql(chunkTEC24ZDA_cjs.compileIndexWhere(ctx, index.where), "sqlite")
251
+ toDrizzleSql(chunkJVA3KDEA_cjs.compileIndexWhere(ctx, index.where), "sqlite")
252
252
  );
253
253
  }
254
254
  return builder;
@@ -350,10 +350,10 @@ function resolveSystemIndexColumns(declaration, columns) {
350
350
  return resolved;
351
351
  }
352
352
  function buildSystemIndexBuilders(tableKey, physicalTableName, columns, indexFactory) {
353
- return chunkSHC7BCG5_cjs.SYSTEM_INDEX_DECLARATIONS.filter(
353
+ return chunkI7YAY2VQ_cjs.SYSTEM_INDEX_DECLARATIONS.filter(
354
354
  (declaration) => declaration.table === tableKey
355
355
  ).map(
356
- (declaration) => indexFactory(chunkSHC7BCG5_cjs.systemIndexName(physicalTableName, declaration.suffix)).on(
356
+ (declaration) => indexFactory(chunkI7YAY2VQ_cjs.systemIndexName(physicalTableName, declaration.suffix)).on(
357
357
  ...resolveSystemIndexColumns(declaration, columns)
358
358
  )
359
359
  );
@@ -388,5 +388,5 @@ exports.buildSqliteNodeIndexBuilders = buildSqliteNodeIndexBuilders;
388
388
  exports.buildSqliteSystemIndexBuilders = buildSqliteSystemIndexBuilders;
389
389
  exports.compileQueryWithDialect = compileQueryWithDialect;
390
390
  exports.toDrizzleSql = toDrizzleSql;
391
- //# sourceMappingURL=chunk-45YZXI6X.cjs.map
392
- //# sourceMappingURL=chunk-45YZXI6X.cjs.map
391
+ //# sourceMappingURL=chunk-LLFPQOBA.cjs.map
392
+ //# sourceMappingURL=chunk-LLFPQOBA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/backend/drizzle/execution/types.ts","../src/indexes/drizzle.ts"],"names":["isSqlFragment","renderSql","drizzleSql","bindSqlValue","throwUnsupportedSqlChunk","sql","compileNodeIndexKeys","pgUniqueIndex","pgIndex","compileIndexWhere","compileEdgeIndexKeys","sqliteUniqueIndex","sqliteIndex","SYSTEM_INDEX_DECLARATIONS","systemIndexName"],"mappings":";;;;;;;;;AA2DA,IAAM,uBAAA,GAA0B;AAAA,EAC9B,UAAA,EAAY,UAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;AAEO,SAAS,uBAAA,CACd,EAAA,EACA,KAAA,EACA,WAAA,EACkB;AAClB,EAAA,IAAIA,+BAAA,CAAc,KAAK,CAAA,EAAG;AACxB,IAAA,OAAOC,2BAAA,CAAU,KAAA,EAAO,uBAAA,CAAwB,WAAW,CAAC,CAAA;AAAA,EAC9D;AACA,EAAA,MAAM,oBAAA,GAAuB,EAAA;AAC7B,EAAA,MAAM,WAAW,oBAAA,CAAqB,OAAA;AACtC,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,WAAW,CAAA,kCAAA,CAAoC,CAAA;AAAA,EACpE;AACA,EAAA,OAAO,QAAA,CAAS,WAAW,KAAK,CAAA;AAClC;AASO,SAAS,YAAA,CACd,UACA,OAAA,EACY;AACZ,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AAC5C,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,MAAA,EAAQ;AACX,QAAA,OAAOC,cAAA,CAAW,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA;AAAA,MACnC;AAAA,MACA,KAAK,YAAA,EAAc;AAKjB,QAAA,OAAOA,cAAA,CAAW,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,MAAM,UAAA,CAAW,GAAA,EAAK,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AAAA,MAChE;AAAA,MACA,KAAK,WAAA,EAAa;AAChB,QAAA,OAAOA,eAAW,KAAA,CAAMC,8BAAA,CAAa,KAAA,CAAM,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,MAC5D;AAAA,MACA,KAAK,aAAA,EAAe;AAClB,QAAA,OAAOD,cAAA,CAAW,WAAA,CAAY,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAAA,MAChD;AAAA,MACA,SAAS;AACP,QAAA,OAAOE,2CAAyB,KAAK,CAAA;AAAA,MACvC;AAAA;AACF,EACF,CAAC,CAAA;AACD,EAAA,OAAOF,cAAA,CAAW,KAAK,MAAM,CAAA;AAC/B;;;AC5EO,SAAS,8BAAA,CACd,OACA,OAAA,EAC2B;AAI3B,EAAA,MAAM,cAAc,OAAA,CAAQ,MAAA;AAAA,IAC1B,CAAC,KAAA,KACC,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,MAAM,MAAA,KAAW;AAAA,GAChD;AAEA,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,KAAA,KAAU;AAChC,IAAA,MAAM,WAAA,GAAcG,qBAAA,CAAY,UAAA,CAAW,KAAA,CAAM,MAAM,IAAI,CAAA;AAC3D,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KACpBA,qBAAA,CAAY,WAAW,2BAAA,CAA4B,KAAA,EAAO,MAAM,CAAA,CAAE,IAAI,CAAA;AAExE,IAAA,MAAM,EAAE,MAAK,GAAIC,sCAAA;AAAA,MACf,KAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,cAAA,CAAe,IAAA,EAAM,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AAEjD,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,GAASC,kBAAA,CAAc,MAAM,IAAI,CAAA,GAAIC,YAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAE1E,IAAA,MAAM,WAAA,GAAc,KAAK,GAAA,CAAI,CAAC,QAAQ,YAAA,CAAa,GAAA,EAAK,UAAU,CAAC,CAAA;AACnE,IAAA,cAAA,CAAe,WAAA,EAAa,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AACxD,IAAA,MAAM,CAAC,QAAA,EAAU,GAAG,aAAa,CAAA,GAAI,WAAA;AACrC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,EAAA,CAAG,QAAA,EAAU,GAAG,aAAa,CAAA;AAElD,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,MAAM,GAAA,GAA+B;AAAA,QACnC,OAAA,EAAS,UAAA;AAAA,QACT,WAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,KAAA;AAAA,QACN,aAAaC,mCAAA,CAAkB,GAAA,EAAK,KAAA,CAAM,KAAK,GAAG,UAAU;AAAA,OAC9D;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEO,SAAS,8BAAA,CACd,OACA,OAAA,EAC2B;AAC3B,EAAA,MAAM,cAAc,OAAA,CAAQ,MAAA;AAAA,IAC1B,CAAC,KAAA,KACC,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,MAAM,MAAA,KAAW;AAAA,GAChD;AAEA,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,KAAA,KAAU;AAChC,IAAA,MAAM,WAAA,GAAcJ,qBAAA,CAAY,UAAA,CAAW,KAAA,CAAM,MAAM,IAAI,CAAA;AAC3D,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KACpBA,qBAAA,CAAY,WAAW,2BAAA,CAA4B,KAAA,EAAO,MAAM,CAAA,CAAE,IAAI,CAAA;AAExE,IAAA,MAAM,EAAE,MAAK,GAAIK,sCAAA;AAAA,MACf,KAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,cAAA,CAAe,IAAA,EAAM,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AAEjD,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,GAASH,kBAAA,CAAc,MAAM,IAAI,CAAA,GAAIC,YAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAE1E,IAAA,MAAM,WAAA,GAAc,KAAK,GAAA,CAAI,CAAC,QAAQ,YAAA,CAAa,GAAA,EAAK,UAAU,CAAC,CAAA;AACnE,IAAA,cAAA,CAAe,WAAA,EAAa,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AACxD,IAAA,MAAM,CAAC,QAAA,EAAU,GAAG,aAAa,CAAA,GAAI,WAAA;AACrC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,EAAA,CAAG,QAAA,EAAU,GAAG,aAAa,CAAA;AAElD,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,MAAM,GAAA,GAA+B;AAAA,QACnC,OAAA,EAAS,UAAA;AAAA,QACT,WAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,KAAA;AAAA,QACN,aAAaC,mCAAA,CAAkB,GAAA,EAAK,KAAA,CAAM,KAAK,GAAG,UAAU;AAAA,OAC9D;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,2BAAA,CACP,OACA,MAAA,EACiB;AACjB,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,IACA,KAAK,IAAA,EAAM;AACT,MAAA,OAAO,KAAA,CAAM,EAAA;AAAA,IACf;AAAA,IACA,KAAK,WAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4CAAA,EAA+C,MAAM,CAAA,CAAE,CAAA;AAAA,IACzE;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA;AAEJ;AAEA,SAAS,2BAAA,CACP,OACA,MAAA,EACiB;AACjB,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,IACA,KAAK,IAAA,EAAM;AACT,MAAA,OAAO,KAAA,CAAM,EAAA;AAAA,IACf;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,OAAO,KAAA,CAAM,QAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,OAAO,KAAA,CAAM,MAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,OAAO,KAAA,CAAM,MAAA;AAAA,IACf;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4CAAA,EAA+C,MAAM,CAAA,CAAE,CAAA;AAAA,IACzE;AAAA;AAEJ;AAMO,SAAS,4BAAA,CACd,OACA,OAAA,EAC+B;AAI/B,EAAA,MAAM,cAAc,OAAA,CAAQ,MAAA;AAAA,IAC1B,CAAC,KAAA,KACC,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,MAAM,MAAA,KAAW;AAAA,GAChD;AAEA,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,KAAA,KAAU;AAChC,IAAA,MAAM,WAAA,GAAcJ,qBAAA,CAAY,UAAA,CAAW,KAAA,CAAM,MAAM,IAAI,CAAA;AAC3D,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KACpBA,qBAAA,CAAY,WAAW,yBAAA,CAA0B,KAAA,EAAO,MAAM,CAAA,CAAE,IAAI,CAAA;AAEtE,IAAA,MAAM,EAAE,MAAK,GAAIC,sCAAA;AAAA,MACf,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,cAAA,CAAe,IAAA,EAAM,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AAEjD,IAAA,MAAM,IAAA,GACJ,MAAM,MAAA,GAASK,sBAAA,CAAkB,MAAM,IAAI,CAAA,GAAIC,gBAAA,CAAY,KAAA,CAAM,IAAI,CAAA;AAEvE,IAAA,MAAM,WAAA,GAAc,KAAK,GAAA,CAAI,CAAC,QAAQ,YAAA,CAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AACjE,IAAA,cAAA,CAAe,WAAA,EAAa,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AACxD,IAAA,MAAM,CAAC,QAAA,EAAU,GAAG,aAAa,CAAA,GAAI,WAAA;AACrC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,EAAA,CAAG,QAAA,EAAU,GAAG,aAAa,CAAA;AAElD,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,MAAM,GAAA,GAA+B;AAAA,QACnC,OAAA,EAAS,QAAA;AAAA,QACT,WAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,KAAA;AAAA,QACN,aAAaH,mCAAA,CAAkB,GAAA,EAAK,KAAA,CAAM,KAAK,GAAG,QAAQ;AAAA,OAC5D;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEO,SAAS,4BAAA,CACd,OACA,OAAA,EAC+B;AAC/B,EAAA,MAAM,cAAc,OAAA,CAAQ,MAAA;AAAA,IAC1B,CAAC,KAAA,KACC,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,MAAM,MAAA,KAAW;AAAA,GAChD;AAEA,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,KAAA,KAAU;AAChC,IAAA,MAAM,WAAA,GAAcJ,qBAAA,CAAY,UAAA,CAAW,KAAA,CAAM,MAAM,IAAI,CAAA;AAC3D,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KACpBA,qBAAA,CAAY,WAAW,yBAAA,CAA0B,KAAA,EAAO,MAAM,CAAA,CAAE,IAAI,CAAA;AAEtE,IAAA,MAAM,EAAE,MAAK,GAAIK,sCAAA;AAAA,MACf,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,cAAA,CAAe,IAAA,EAAM,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AAEjD,IAAA,MAAM,IAAA,GACJ,MAAM,MAAA,GAASC,sBAAA,CAAkB,MAAM,IAAI,CAAA,GAAIC,gBAAA,CAAY,KAAA,CAAM,IAAI,CAAA;AAEvE,IAAA,MAAM,WAAA,GAAc,KAAK,GAAA,CAAI,CAAC,QAAQ,YAAA,CAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AACjE,IAAA,cAAA,CAAe,WAAA,EAAa,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AACxD,IAAA,MAAM,CAAC,QAAA,EAAU,GAAG,aAAa,CAAA,GAAI,WAAA;AACrC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,EAAA,CAAG,QAAA,EAAU,GAAG,aAAa,CAAA;AAElD,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,MAAM,GAAA,GAA+B;AAAA,QACnC,OAAA,EAAS,QAAA;AAAA,QACT,WAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,KAAA;AAAA,QACN,aAAaH,mCAAA,CAAkB,GAAA,EAAK,KAAA,CAAM,KAAK,GAAG,QAAQ;AAAA,OAC5D;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,yBAAA,CACP,OACA,MAAA,EACiB;AACjB,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,IACA,KAAK,IAAA,EAAM;AACT,MAAA,OAAO,KAAA,CAAM,EAAA;AAAA,IACf;AAAA,IACA,KAAK,WAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4CAAA,EAA+C,MAAM,CAAA,CAAE,CAAA;AAAA,IACzE;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA;AAEJ;AAEA,SAAS,yBAAA,CACP,OACA,MAAA,EACiB;AACjB,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,IACA,KAAK,IAAA,EAAM;AACT,MAAA,OAAO,KAAA,CAAM,EAAA;AAAA,IACf;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,OAAO,KAAA,CAAM,QAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,OAAO,KAAA,CAAM,MAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,OAAO,KAAA,CAAM,MAAA;AAAA,IACf;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4CAAA,EAA+C,MAAM,CAAA,CAAE,CAAA;AAAA,IACzE;AAAA;AAEJ;AAuBA,SAAS,yBAAA,CACP,aACA,OAAA,EACsB;AACtB,EAAA,MAAM,iBAAiB,IAAI,GAAA;AAAA,IACzB,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,CAAE,GAAA,CAAI,CAAC,MAAA,KAAW,CAAC,MAAA,CAAO,IAAA,EAAM,MAAM,CAAC;AAAA,GAC9D;AACA,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACnD,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,MAAM,CAAA;AACvC,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,cAAA,EAAiB,WAAA,CAAY,KAAK,CAAA,CAAA,EAAI,WAAA,CAAY,MAAM,CAAA,uBAAA,EACzC,MAAM,CAAA,MAAA,EAAS,WAAA,CAAY,KAAK,CAAA,sBAAA;AAAA,OACjD;AAAA,IACF;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,OAAO,QAAA;AACT;AAQA,SAAS,wBAAA,CACP,QAAA,EACA,iBAAA,EACA,OAAA,EACA,YAAA,EACc;AACd,EAAA,OAAOI,2CAAA,CAA0B,MAAA;AAAA,IAC/B,CAAC,WAAA,KAAgB,WAAA,CAAY,KAAA,KAAU;AAAA,GACzC,CAAE,GAAA;AAAA,IAAI,CAAC,gBACL,YAAA,CAAaC,iCAAA,CAAgB,mBAAmB,WAAA,CAAY,MAAM,CAAC,CAAA,CAAE,EAAA;AAAA,MACnE,GAAG,yBAAA,CAA0B,WAAA,EAAa,OAAO;AAAA;AACnD,GACF;AACF;AAEO,SAAS,8BAAA,CACd,QAAA,EACA,iBAAA,EACA,OAAA,EAC+B;AAC/B,EAAA,OAAO,wBAAA;AAAA,IACL,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,IAAA,KAASF,gBAAA,CAAY,IAAI;AAAA,GAC5B;AACF;AAEO,SAAS,gCAAA,CACd,QAAA,EACA,iBAAA,EACA,OAAA,EAC2B;AAC3B,EAAA,OAAO,wBAAA;AAAA,IACL,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,IAAA,KAASJ,YAAA,CAAQ,IAAI;AAAA,GACxB;AACF;AAqCA,SAAS,cAAA,CACP,QACA,KAAA,EACwC;AACxC,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kCAAA,EAAqC,KAAK,CAAA,CAAA,CAAG,CAAA;AAAA,EAC/D;AACF","file":"chunk-45YZXI6X.cjs","sourcesContent":["import { type SQL as DrizzleSql, sql as drizzleSql } from \"drizzle-orm\";\n\nimport { bindSqlValue } from \"../../../query/dialect/profile\";\nimport { type SqlDialect } from \"../../../query/dialect/types\";\nimport {\n isSqlFragment,\n renderSql,\n type SqlFragment,\n throwUnsupportedSqlChunk,\n} from \"../../../query/sql-fragment\";\n\nexport type ExecutableSql = DrizzleSql | SqlFragment;\n\nexport type CompiledSqlQuery = Readonly<{\n params: readonly unknown[];\n sql: string;\n}>;\n\nexport type PreparedSqlStatement = Readonly<{\n execute: <TRow>(params: readonly unknown[]) => Promise<readonly TRow[]>;\n}>;\n\nexport type SqlExecutionAdapter = Readonly<{\n compile: (query: ExecutableSql) => CompiledSqlQuery;\n execute: <TRow>(query: ExecutableSql) => Promise<readonly TRow[]>;\n executeCompiled?: <TRow>(\n compiledQuery: CompiledSqlQuery,\n ) => Promise<readonly TRow[]>;\n prepare?: (sqlText: string) => PreparedSqlStatement;\n /**\n * Runs `critical` with exclusive use of the connection: no statement from\n * anywhere else can interleave with the ones it issues.\n *\n * Statement-at-a-time serialization is not enough for a *sequence* that must\n * be atomic. `SET LOCAL` around a query is the motivating case — snapshot,\n * set, select, restore. Two searches whose statements merely take turns can\n * still interleave as `A snapshot → B snapshot → A set → B set → A select`,\n * and `A` then runs under `B`'s settings.\n *\n * `critical` is handed the unqueued adapter, so it must not attempt to\n * re-enter the queue. Present only on transaction-scoped (serialized)\n * adapters; a pooled adapter needs no exclusion because every statement gets\n * its own connection.\n */\n runExclusive?: <T>(\n critical: (connection: SqlExecutionAdapter) => Promise<T>,\n ) => Promise<T>;\n}>;\n\ntype SqlCompiler = Readonly<{\n sqlToQuery: (query: DrizzleSql) => CompiledSqlQuery;\n}>;\n\ntype DatabaseWithCompiler = Readonly<{\n dialect?: SqlCompiler;\n}>;\n\ntype BackendName = \"PostgreSQL\" | \"SQLite\";\n\nconst DIALECT_BY_BACKEND_NAME = {\n PostgreSQL: \"postgres\",\n SQLite: \"sqlite\",\n} as const satisfies Record<BackendName, SqlDialect>;\n\nexport function compileQueryWithDialect(\n db: unknown,\n query: ExecutableSql,\n backendName: BackendName,\n): CompiledSqlQuery {\n if (isSqlFragment(query)) {\n return renderSql(query, DIALECT_BY_BACKEND_NAME[backendName]);\n }\n const databaseWithCompiler = db as DatabaseWithCompiler;\n const compiler = databaseWithCompiler.dialect;\n if (compiler === undefined) {\n throw new Error(`${backendName} backend is missing a SQL compiler`);\n }\n return compiler.sqlToQuery(query);\n}\n\n/**\n * Translates TypeGraph's fragment IR into Drizzle's adapter-native SQL object.\n *\n * Most execution paths render directly to text and parameters. Async SQLite\n * drivers expose only Drizzle's execution method, so that adapter needs this\n * lossless bridge at its final boundary.\n */\nexport function toDrizzleSql(\n fragment: SqlFragment,\n dialect: SqlDialect,\n): DrizzleSql {\n const chunks = fragment.chunks.map((chunk) => {\n switch (chunk.kind) {\n case \"text\": {\n return drizzleSql.raw(chunk.value);\n }\n case \"identifier\": {\n // Drizzle's schema builders treat Name chunks as bare index-column\n // references and omit dialect quoting. Preserve the portable IR's\n // identifier semantics by handing the adapter an already-quoted,\n // trusted SQL token instead.\n return drizzleSql.raw(`\"${chunk.value.replaceAll('\"', '\"\"')}\"`);\n }\n case \"parameter\": {\n return drizzleSql.param(bindSqlValue(chunk.value, dialect));\n }\n case \"placeholder\": {\n return drizzleSql.placeholder(chunk.value.name);\n }\n default: {\n return throwUnsupportedSqlChunk(chunk);\n }\n }\n });\n return drizzleSql.join(chunks);\n}\n","import { type SQLWrapper } from \"drizzle-orm\";\nimport {\n index as pgIndex,\n type IndexBuilder as PgIndexBuilder,\n type PgColumn,\n uniqueIndex as pgUniqueIndex,\n} from \"drizzle-orm/pg-core\";\nimport {\n index as sqliteIndex,\n type IndexBuilder as SqliteIndexBuilder,\n type SQLiteColumn,\n uniqueIndex as sqliteUniqueIndex,\n} from \"drizzle-orm/sqlite-core\";\n\nimport { toDrizzleSql } from \"../backend/drizzle/execution/types\";\nimport { sql as portableSql, type SqlFragment } from \"../query/sql-fragment\";\nimport {\n compileEdgeIndexKeys,\n compileIndexWhere,\n compileNodeIndexKeys,\n type IndexCompilationContext,\n} from \"./compiler\";\nimport {\n SYSTEM_INDEX_DECLARATIONS,\n type SystemIndexDeclaration,\n systemIndexName,\n type SystemIndexTable,\n} from \"./system\";\nimport {\n type EdgeIndexDeclaration,\n type IndexDeclaration,\n type NodeIndexDeclaration,\n type SystemColumnName,\n} from \"./types\";\n\n// ============================================================\n// PostgreSQL (Drizzle Schema)\n// ============================================================\n\nexport function buildPostgresNodeIndexBuilders(\n table: NodeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly PgIndexBuilder[] {\n // GIN-family declarations (method: \"gin\" / \"trigram\") are\n // materialize-only — like pgvector ANN indexes, they are a pure\n // materialization concern and never ride the Drizzle table extras.\n const nodeIndexes = indexes.filter(\n (index): index is NodeIndexDeclaration =>\n index.entity === \"node\" && index.method === undefined,\n );\n\n return nodeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getPostgresNodeSystemColumn(table, column).name);\n\n const { keys } = compileNodeIndexKeys(\n index,\n \"postgres\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `node index \"${index.name}\"`);\n\n const base = index.unique ? pgUniqueIndex(index.name) : pgIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"postgres\"));\n assertNonEmpty(drizzleKeys, `node index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"postgres\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"postgres\"),\n );\n }\n\n return builder;\n });\n}\n\nexport function buildPostgresEdgeIndexBuilders(\n table: EdgeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly PgIndexBuilder[] {\n const edgeIndexes = indexes.filter(\n (index): index is EdgeIndexDeclaration =>\n index.entity === \"edge\" && index.method === undefined,\n );\n\n return edgeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getPostgresEdgeSystemColumn(table, column).name);\n\n const { keys } = compileEdgeIndexKeys(\n index,\n \"postgres\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `edge index \"${index.name}\"`);\n\n const base = index.unique ? pgUniqueIndex(index.name) : pgIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"postgres\"));\n assertNonEmpty(drizzleKeys, `edge index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"postgres\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"postgres\"),\n );\n }\n\n return builder;\n });\n}\n\nfunction getPostgresNodeSystemColumn(\n table: NodeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\":\n case \"from_id\":\n case \"to_kind\":\n case \"to_id\": {\n throw new Error(`Unsupported node system column for indexes: ${column}`);\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n return table.version;\n }\n }\n}\n\nfunction getPostgresEdgeSystemColumn(\n table: EdgeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\": {\n return table.fromKind;\n }\n case \"from_id\": {\n return table.fromId;\n }\n case \"to_kind\": {\n return table.toKind;\n }\n case \"to_id\": {\n return table.toId;\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n throw new Error(`Unsupported edge system column for indexes: ${column}`);\n }\n }\n}\n\n// ============================================================\n// SQLite (Drizzle Schema)\n// ============================================================\n\nexport function buildSqliteNodeIndexBuilders(\n table: NodeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly SqliteIndexBuilder[] {\n // GIN-family declarations (method: \"gin\" / \"trigram\") are\n // materialize-only — like pgvector ANN indexes, they are a pure\n // materialization concern and never ride the Drizzle table extras.\n const nodeIndexes = indexes.filter(\n (index): index is NodeIndexDeclaration =>\n index.entity === \"node\" && index.method === undefined,\n );\n\n return nodeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getSqliteNodeSystemColumn(table, column).name);\n\n const { keys } = compileNodeIndexKeys(\n index,\n \"sqlite\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `node index \"${index.name}\"`);\n\n const base =\n index.unique ? sqliteUniqueIndex(index.name) : sqliteIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"sqlite\"));\n assertNonEmpty(drizzleKeys, `node index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"sqlite\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"sqlite\"),\n );\n }\n\n return builder;\n });\n}\n\nexport function buildSqliteEdgeIndexBuilders(\n table: EdgeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly SqliteIndexBuilder[] {\n const edgeIndexes = indexes.filter(\n (index): index is EdgeIndexDeclaration =>\n index.entity === \"edge\" && index.method === undefined,\n );\n\n return edgeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getSqliteEdgeSystemColumn(table, column).name);\n\n const { keys } = compileEdgeIndexKeys(\n index,\n \"sqlite\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `edge index \"${index.name}\"`);\n\n const base =\n index.unique ? sqliteUniqueIndex(index.name) : sqliteIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"sqlite\"));\n assertNonEmpty(drizzleKeys, `edge index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"sqlite\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"sqlite\"),\n );\n }\n\n return builder;\n });\n}\n\nfunction getSqliteNodeSystemColumn(\n table: NodeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\":\n case \"from_id\":\n case \"to_kind\":\n case \"to_id\": {\n throw new Error(`Unsupported node system column for indexes: ${column}`);\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n return table.version;\n }\n }\n}\n\nfunction getSqliteEdgeSystemColumn(\n table: EdgeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\": {\n return table.fromKind;\n }\n case \"from_id\": {\n return table.fromId;\n }\n case \"to_kind\": {\n return table.toKind;\n }\n case \"to_id\": {\n return table.toId;\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n throw new Error(`Unsupported edge system column for indexes: ${column}`);\n }\n }\n}\n\n// ============================================================\n// System indexes (both dialects)\n// ============================================================\n//\n// The schema factories derive their system-index Drizzle builders from\n// `SYSTEM_INDEX_DECLARATIONS` so both dialects emit the same index set by\n// construction. The builders receive the table's real column objects (not\n// SQL wrappers) so the DDL generator renders plain quoted column names —\n// byte-identical to the runtime DDL `materializeSystemIndexes` emits.\n\ntype SystemIndexColumns<C extends { name: string }> = Readonly<\n Record<string, C>\n>;\n\n/**\n * Resolves a declaration's physical column names against the table's own\n * column objects by each column's `.name` — the SQL name Drizzle carries on\n * the column itself — so no naming convention sits between the declaration\n * and the schema. A column the table doesn't define throws at\n * table-construction time (exercised by the system-index parity tests).\n */\nfunction resolveSystemIndexColumns<C extends { name: string }>(\n declaration: SystemIndexDeclaration,\n columns: SystemIndexColumns<C>,\n): readonly [C, ...C[]] {\n const byPhysicalName = new Map(\n Object.values(columns).map((column) => [column.name, column]),\n );\n const resolved = declaration.columns.map((column) => {\n const value = byPhysicalName.get(column);\n if (value === undefined) {\n throw new Error(\n `System index \"${declaration.table}_${declaration.suffix}\" references ` +\n `a column \"${column}\" the ${declaration.table} table does not define`,\n );\n }\n return value;\n });\n // `declaration.columns` is non-empty by type, so `resolved` is too.\n return resolved as [C, ...C[]];\n}\n\n/**\n * The two dialect variants do no dialect-specific work (no unique, no\n * where, no expression compilation — unlike the node/edge builder pairs\n * above), so they share one body parameterized by the dialect's index\n * factory.\n */\nfunction buildSystemIndexBuilders<C extends { name: string }, B>(\n tableKey: SystemIndexTable,\n physicalTableName: string,\n columns: SystemIndexColumns<C>,\n indexFactory: (name: string) => { on: (...cols: [C, ...C[]]) => B },\n): readonly B[] {\n return SYSTEM_INDEX_DECLARATIONS.filter(\n (declaration) => declaration.table === tableKey,\n ).map((declaration) =>\n indexFactory(systemIndexName(physicalTableName, declaration.suffix)).on(\n ...resolveSystemIndexColumns(declaration, columns),\n ),\n );\n}\n\nexport function buildSqliteSystemIndexBuilders(\n tableKey: SystemIndexTable,\n physicalTableName: string,\n columns: SystemIndexColumns<SQLiteColumn>,\n): readonly SqliteIndexBuilder[] {\n return buildSystemIndexBuilders(\n tableKey,\n physicalTableName,\n columns,\n (name) => sqliteIndex(name),\n );\n}\n\nexport function buildPostgresSystemIndexBuilders(\n tableKey: SystemIndexTable,\n physicalTableName: string,\n columns: SystemIndexColumns<PgColumn>,\n): readonly PgIndexBuilder[] {\n return buildSystemIndexBuilders(\n tableKey,\n physicalTableName,\n columns,\n (name) => pgIndex(name),\n );\n}\n\n// ============================================================\n// Minimal table shapes (shared between dialect schemas)\n// ============================================================\n\ntype NamedSqlWrapper = SQLWrapper & Readonly<{ name: string }>;\n\ntype NodeIndexTable = Readonly<{\n graphId: NamedSqlWrapper;\n kind: NamedSqlWrapper;\n id: NamedSqlWrapper;\n props: NamedSqlWrapper;\n version: NamedSqlWrapper;\n validFrom: NamedSqlWrapper;\n validTo: NamedSqlWrapper;\n createdAt: NamedSqlWrapper;\n updatedAt: NamedSqlWrapper;\n deletedAt: NamedSqlWrapper;\n}>;\n\ntype EdgeIndexTable = Readonly<{\n graphId: NamedSqlWrapper;\n id: NamedSqlWrapper;\n kind: NamedSqlWrapper;\n fromKind: NamedSqlWrapper;\n fromId: NamedSqlWrapper;\n toKind: NamedSqlWrapper;\n toId: NamedSqlWrapper;\n props: NamedSqlWrapper;\n validFrom: NamedSqlWrapper;\n validTo: NamedSqlWrapper;\n createdAt: NamedSqlWrapper;\n updatedAt: NamedSqlWrapper;\n deletedAt: NamedSqlWrapper;\n}>;\n\nfunction assertNonEmpty<T>(\n values: readonly T[],\n label: string,\n): asserts values is readonly [T, ...T[]] {\n if (values.length === 0) {\n throw new Error(`Index must have at least one key (${label})`);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/backend/drizzle/execution/types.ts","../src/indexes/drizzle.ts"],"names":["isSqlFragment","renderSql","drizzleSql","bindSqlValue","throwUnsupportedSqlChunk","sql","compileNodeIndexKeys","pgUniqueIndex","pgIndex","compileIndexWhere","compileEdgeIndexKeys","sqliteUniqueIndex","sqliteIndex","SYSTEM_INDEX_DECLARATIONS","systemIndexName"],"mappings":"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","file":"chunk-LLFPQOBA.cjs","sourcesContent":["import { type SQL as DrizzleSql, sql as drizzleSql } from \"drizzle-orm\";\n\nimport { bindSqlValue } from \"../../../query/dialect/profile\";\nimport { type SqlDialect } from \"../../../query/dialect/types\";\nimport {\n isSqlFragment,\n renderSql,\n type SqlFragment,\n throwUnsupportedSqlChunk,\n} from \"../../../query/sql-fragment\";\n\nexport type ExecutableSql = DrizzleSql | SqlFragment;\n\nexport type CompiledSqlQuery = Readonly<{\n params: readonly unknown[];\n sql: string;\n}>;\n\nexport type PreparedSqlStatement = Readonly<{\n execute: <TRow>(params: readonly unknown[]) => Promise<readonly TRow[]>;\n}>;\n\nexport type SqlExecutionAdapter = Readonly<{\n compile: (query: ExecutableSql) => CompiledSqlQuery;\n execute: <TRow>(query: ExecutableSql) => Promise<readonly TRow[]>;\n executeCompiled?: <TRow>(\n compiledQuery: CompiledSqlQuery,\n ) => Promise<readonly TRow[]>;\n prepare?: (sqlText: string) => PreparedSqlStatement;\n /**\n * Runs `critical` with exclusive use of the connection: no statement from\n * anywhere else can interleave with the ones it issues.\n *\n * Statement-at-a-time serialization is not enough for a *sequence* that must\n * be atomic. `SET LOCAL` around a query is the motivating case — snapshot,\n * set, select, restore. Two searches whose statements merely take turns can\n * still interleave as `A snapshot → B snapshot → A set → B set → A select`,\n * and `A` then runs under `B`'s settings.\n *\n * `critical` is handed the unqueued adapter, so it must not attempt to\n * re-enter the queue. Present only on transaction-scoped (serialized)\n * adapters; a pooled adapter needs no exclusion because every statement gets\n * its own connection.\n */\n runExclusive?: <T>(\n critical: (connection: SqlExecutionAdapter) => Promise<T>,\n ) => Promise<T>;\n}>;\n\ntype SqlCompiler = Readonly<{\n sqlToQuery: (query: DrizzleSql) => CompiledSqlQuery;\n}>;\n\ntype DatabaseWithCompiler = Readonly<{\n dialect?: SqlCompiler;\n}>;\n\ntype BackendName = \"PostgreSQL\" | \"SQLite\";\n\nconst DIALECT_BY_BACKEND_NAME = {\n PostgreSQL: \"postgres\",\n SQLite: \"sqlite\",\n} as const satisfies Record<BackendName, SqlDialect>;\n\nexport function compileQueryWithDialect(\n db: unknown,\n query: ExecutableSql,\n backendName: BackendName,\n): CompiledSqlQuery {\n if (isSqlFragment(query)) {\n return renderSql(query, DIALECT_BY_BACKEND_NAME[backendName]);\n }\n const databaseWithCompiler = db as DatabaseWithCompiler;\n const compiler = databaseWithCompiler.dialect;\n if (compiler === undefined) {\n throw new Error(`${backendName} backend is missing a SQL compiler`);\n }\n return compiler.sqlToQuery(query);\n}\n\n/**\n * Translates TypeGraph's fragment IR into Drizzle's adapter-native SQL object.\n *\n * Most execution paths render directly to text and parameters. Async SQLite\n * drivers expose only Drizzle's execution method, so that adapter needs this\n * lossless bridge at its final boundary.\n */\nexport function toDrizzleSql(\n fragment: SqlFragment,\n dialect: SqlDialect,\n): DrizzleSql {\n const chunks = fragment.chunks.map((chunk) => {\n switch (chunk.kind) {\n case \"text\": {\n return drizzleSql.raw(chunk.value);\n }\n case \"identifier\": {\n // Drizzle's schema builders treat Name chunks as bare index-column\n // references and omit dialect quoting. Preserve the portable IR's\n // identifier semantics by handing the adapter an already-quoted,\n // trusted SQL token instead.\n return drizzleSql.raw(`\"${chunk.value.replaceAll('\"', '\"\"')}\"`);\n }\n case \"parameter\": {\n return drizzleSql.param(bindSqlValue(chunk.value, dialect));\n }\n case \"placeholder\": {\n return drizzleSql.placeholder(chunk.value.name);\n }\n default: {\n return throwUnsupportedSqlChunk(chunk);\n }\n }\n });\n return drizzleSql.join(chunks);\n}\n","import { type SQLWrapper } from \"drizzle-orm\";\nimport {\n index as pgIndex,\n type IndexBuilder as PgIndexBuilder,\n type PgColumn,\n uniqueIndex as pgUniqueIndex,\n} from \"drizzle-orm/pg-core\";\nimport {\n index as sqliteIndex,\n type IndexBuilder as SqliteIndexBuilder,\n type SQLiteColumn,\n uniqueIndex as sqliteUniqueIndex,\n} from \"drizzle-orm/sqlite-core\";\n\nimport { toDrizzleSql } from \"../backend/drizzle/execution/types\";\nimport { sql as portableSql, type SqlFragment } from \"../query/sql-fragment\";\nimport {\n compileEdgeIndexKeys,\n compileIndexWhere,\n compileNodeIndexKeys,\n type IndexCompilationContext,\n} from \"./compiler\";\nimport {\n SYSTEM_INDEX_DECLARATIONS,\n type SystemIndexDeclaration,\n systemIndexName,\n type SystemIndexTable,\n} from \"./system\";\nimport {\n type EdgeIndexDeclaration,\n type IndexDeclaration,\n type NodeIndexDeclaration,\n type SystemColumnName,\n} from \"./types\";\n\n// ============================================================\n// PostgreSQL (Drizzle Schema)\n// ============================================================\n\nexport function buildPostgresNodeIndexBuilders(\n table: NodeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly PgIndexBuilder[] {\n // GIN-family declarations (method: \"gin\" / \"trigram\") are\n // materialize-only — like pgvector ANN indexes, they are a pure\n // materialization concern and never ride the Drizzle table extras.\n const nodeIndexes = indexes.filter(\n (index): index is NodeIndexDeclaration =>\n index.entity === \"node\" && index.method === undefined,\n );\n\n return nodeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getPostgresNodeSystemColumn(table, column).name);\n\n const { keys } = compileNodeIndexKeys(\n index,\n \"postgres\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `node index \"${index.name}\"`);\n\n const base = index.unique ? pgUniqueIndex(index.name) : pgIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"postgres\"));\n assertNonEmpty(drizzleKeys, `node index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"postgres\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"postgres\"),\n );\n }\n\n return builder;\n });\n}\n\nexport function buildPostgresEdgeIndexBuilders(\n table: EdgeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly PgIndexBuilder[] {\n const edgeIndexes = indexes.filter(\n (index): index is EdgeIndexDeclaration =>\n index.entity === \"edge\" && index.method === undefined,\n );\n\n return edgeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getPostgresEdgeSystemColumn(table, column).name);\n\n const { keys } = compileEdgeIndexKeys(\n index,\n \"postgres\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `edge index \"${index.name}\"`);\n\n const base = index.unique ? pgUniqueIndex(index.name) : pgIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"postgres\"));\n assertNonEmpty(drizzleKeys, `edge index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"postgres\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"postgres\"),\n );\n }\n\n return builder;\n });\n}\n\nfunction getPostgresNodeSystemColumn(\n table: NodeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\":\n case \"from_id\":\n case \"to_kind\":\n case \"to_id\": {\n throw new Error(`Unsupported node system column for indexes: ${column}`);\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n return table.version;\n }\n }\n}\n\nfunction getPostgresEdgeSystemColumn(\n table: EdgeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\": {\n return table.fromKind;\n }\n case \"from_id\": {\n return table.fromId;\n }\n case \"to_kind\": {\n return table.toKind;\n }\n case \"to_id\": {\n return table.toId;\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n throw new Error(`Unsupported edge system column for indexes: ${column}`);\n }\n }\n}\n\n// ============================================================\n// SQLite (Drizzle Schema)\n// ============================================================\n\nexport function buildSqliteNodeIndexBuilders(\n table: NodeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly SqliteIndexBuilder[] {\n // GIN-family declarations (method: \"gin\" / \"trigram\") are\n // materialize-only — like pgvector ANN indexes, they are a pure\n // materialization concern and never ride the Drizzle table extras.\n const nodeIndexes = indexes.filter(\n (index): index is NodeIndexDeclaration =>\n index.entity === \"node\" && index.method === undefined,\n );\n\n return nodeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getSqliteNodeSystemColumn(table, column).name);\n\n const { keys } = compileNodeIndexKeys(\n index,\n \"sqlite\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `node index \"${index.name}\"`);\n\n const base =\n index.unique ? sqliteUniqueIndex(index.name) : sqliteIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"sqlite\"));\n assertNonEmpty(drizzleKeys, `node index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"sqlite\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"sqlite\"),\n );\n }\n\n return builder;\n });\n}\n\nexport function buildSqliteEdgeIndexBuilders(\n table: EdgeIndexTable,\n indexes: readonly IndexDeclaration[],\n): readonly SqliteIndexBuilder[] {\n const edgeIndexes = indexes.filter(\n (index): index is EdgeIndexDeclaration =>\n index.entity === \"edge\" && index.method === undefined,\n );\n\n return edgeIndexes.map((index) => {\n const propsColumn = portableSql.identifier(table.props.name);\n const systemColumn = (column: SystemColumnName): SqlFragment =>\n portableSql.identifier(getSqliteEdgeSystemColumn(table, column).name);\n\n const { keys } = compileEdgeIndexKeys(\n index,\n \"sqlite\",\n propsColumn,\n systemColumn,\n );\n assertNonEmpty(keys, `edge index \"${index.name}\"`);\n\n const base =\n index.unique ? sqliteUniqueIndex(index.name) : sqliteIndex(index.name);\n\n const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"sqlite\"));\n assertNonEmpty(drizzleKeys, `edge index \"${index.name}\"`);\n const [firstKey, ...remainingKeys] = drizzleKeys;\n const builder = base.on(firstKey, ...remainingKeys);\n\n if (index.where) {\n const ctx: IndexCompilationContext = {\n dialect: \"sqlite\",\n propsColumn,\n systemColumn,\n };\n builder.where(\n toDrizzleSql(compileIndexWhere(ctx, index.where), \"sqlite\"),\n );\n }\n\n return builder;\n });\n}\n\nfunction getSqliteNodeSystemColumn(\n table: NodeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\":\n case \"from_id\":\n case \"to_kind\":\n case \"to_id\": {\n throw new Error(`Unsupported node system column for indexes: ${column}`);\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n return table.version;\n }\n }\n}\n\nfunction getSqliteEdgeSystemColumn(\n table: EdgeIndexTable,\n column: SystemColumnName,\n): NamedSqlWrapper {\n switch (column) {\n case \"graph_id\": {\n return table.graphId;\n }\n case \"kind\": {\n return table.kind;\n }\n case \"id\": {\n return table.id;\n }\n case \"from_kind\": {\n return table.fromKind;\n }\n case \"from_id\": {\n return table.fromId;\n }\n case \"to_kind\": {\n return table.toKind;\n }\n case \"to_id\": {\n return table.toId;\n }\n case \"deleted_at\": {\n return table.deletedAt;\n }\n case \"valid_from\": {\n return table.validFrom;\n }\n case \"valid_to\": {\n return table.validTo;\n }\n case \"created_at\": {\n return table.createdAt;\n }\n case \"updated_at\": {\n return table.updatedAt;\n }\n case \"version\": {\n throw new Error(`Unsupported edge system column for indexes: ${column}`);\n }\n }\n}\n\n// ============================================================\n// System indexes (both dialects)\n// ============================================================\n//\n// The schema factories derive their system-index Drizzle builders from\n// `SYSTEM_INDEX_DECLARATIONS` so both dialects emit the same index set by\n// construction. The builders receive the table's real column objects (not\n// SQL wrappers) so the DDL generator renders plain quoted column names —\n// byte-identical to the runtime DDL `materializeSystemIndexes` emits.\n\ntype SystemIndexColumns<C extends { name: string }> = Readonly<\n Record<string, C>\n>;\n\n/**\n * Resolves a declaration's physical column names against the table's own\n * column objects by each column's `.name` — the SQL name Drizzle carries on\n * the column itself — so no naming convention sits between the declaration\n * and the schema. A column the table doesn't define throws at\n * table-construction time (exercised by the system-index parity tests).\n */\nfunction resolveSystemIndexColumns<C extends { name: string }>(\n declaration: SystemIndexDeclaration,\n columns: SystemIndexColumns<C>,\n): readonly [C, ...C[]] {\n const byPhysicalName = new Map(\n Object.values(columns).map((column) => [column.name, column]),\n );\n const resolved = declaration.columns.map((column) => {\n const value = byPhysicalName.get(column);\n if (value === undefined) {\n throw new Error(\n `System index \"${declaration.table}_${declaration.suffix}\" references ` +\n `a column \"${column}\" the ${declaration.table} table does not define`,\n );\n }\n return value;\n });\n // `declaration.columns` is non-empty by type, so `resolved` is too.\n return resolved as [C, ...C[]];\n}\n\n/**\n * The two dialect variants do no dialect-specific work (no unique, no\n * where, no expression compilation — unlike the node/edge builder pairs\n * above), so they share one body parameterized by the dialect's index\n * factory.\n */\nfunction buildSystemIndexBuilders<C extends { name: string }, B>(\n tableKey: SystemIndexTable,\n physicalTableName: string,\n columns: SystemIndexColumns<C>,\n indexFactory: (name: string) => { on: (...cols: [C, ...C[]]) => B },\n): readonly B[] {\n return SYSTEM_INDEX_DECLARATIONS.filter(\n (declaration) => declaration.table === tableKey,\n ).map((declaration) =>\n indexFactory(systemIndexName(physicalTableName, declaration.suffix)).on(\n ...resolveSystemIndexColumns(declaration, columns),\n ),\n );\n}\n\nexport function buildSqliteSystemIndexBuilders(\n tableKey: SystemIndexTable,\n physicalTableName: string,\n columns: SystemIndexColumns<SQLiteColumn>,\n): readonly SqliteIndexBuilder[] {\n return buildSystemIndexBuilders(\n tableKey,\n physicalTableName,\n columns,\n (name) => sqliteIndex(name),\n );\n}\n\nexport function buildPostgresSystemIndexBuilders(\n tableKey: SystemIndexTable,\n physicalTableName: string,\n columns: SystemIndexColumns<PgColumn>,\n): readonly PgIndexBuilder[] {\n return buildSystemIndexBuilders(\n tableKey,\n physicalTableName,\n columns,\n (name) => pgIndex(name),\n );\n}\n\n// ============================================================\n// Minimal table shapes (shared between dialect schemas)\n// ============================================================\n\ntype NamedSqlWrapper = SQLWrapper & Readonly<{ name: string }>;\n\ntype NodeIndexTable = Readonly<{\n graphId: NamedSqlWrapper;\n kind: NamedSqlWrapper;\n id: NamedSqlWrapper;\n props: NamedSqlWrapper;\n version: NamedSqlWrapper;\n validFrom: NamedSqlWrapper;\n validTo: NamedSqlWrapper;\n createdAt: NamedSqlWrapper;\n updatedAt: NamedSqlWrapper;\n deletedAt: NamedSqlWrapper;\n}>;\n\ntype EdgeIndexTable = Readonly<{\n graphId: NamedSqlWrapper;\n id: NamedSqlWrapper;\n kind: NamedSqlWrapper;\n fromKind: NamedSqlWrapper;\n fromId: NamedSqlWrapper;\n toKind: NamedSqlWrapper;\n toId: NamedSqlWrapper;\n props: NamedSqlWrapper;\n validFrom: NamedSqlWrapper;\n validTo: NamedSqlWrapper;\n createdAt: NamedSqlWrapper;\n updatedAt: NamedSqlWrapper;\n deletedAt: NamedSqlWrapper;\n}>;\n\nfunction assertNonEmpty<T>(\n values: readonly T[],\n label: string,\n): asserts values is readonly [T, ...T[]] {\n if (values.length === 0) {\n throw new Error(`Index must have at least one key (${label})`);\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { fnv1aBase36 } from './chunk-K34OPSJK.js';
2
+ import { getNodeScopeColumns } from './chunk-7G5IYROL.js';
2
3
  import { MAX_PG_IDENTIFIER_LENGTH, TRUNCATED_IDENTIFIER_MAX_LENGTH, IDENTIFIER_COMPONENT_MAX_LENGTH } from './chunk-2EBMPJBO.js';
3
- import { getNodeScopeColumns } from './chunk-EDLKIQRI.js';
4
4
  import { createSchemaIntrospector } from './chunk-AMKPPFUO.js';
5
5
  import { resolveFieldTypeInfoAtJsonPointer } from './chunk-W6OG3HDG.js';
6
6
  import { jsonPointer, normalizeJsonPointer, parseJsonPointer } from './chunk-FWJKWH6U.js';
@@ -615,5 +615,5 @@ function sanitizeIdentifierComponent(value) {
615
615
  }
616
616
 
617
617
  export { EDGE_META_KEYS, NODE_META_KEYS, defineEdgeIndex, defineNodeIndex };
618
- //# sourceMappingURL=chunk-ZRJTM7MT.js.map
619
- //# sourceMappingURL=chunk-ZRJTM7MT.js.map
618
+ //# sourceMappingURL=chunk-LZMQ3SFK.js.map
619
+ //# sourceMappingURL=chunk-LZMQ3SFK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/system-fields.ts","../src/indexes/define-index.ts"],"names":[],"mappings":"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","file":"chunk-ZRJTM7MT.js","sourcesContent":["export const NODE_META_KEYS = [\n \"version\",\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n\nexport const EDGE_META_KEYS = [\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n","import { type z } from \"zod\";\n\nimport {\n IDENTIFIER_COMPONENT_MAX_LENGTH,\n MAX_PG_IDENTIFIER_LENGTH,\n TRUNCATED_IDENTIFIER_MAX_LENGTH,\n} from \"../constants\";\nimport {\n type AnyEdgeType,\n type KindEntity,\n type NodeType,\n} from \"../core/types\";\nimport { type ValueType } from \"../query/ast\";\nimport { resolveFieldTypeInfoAtJsonPointer } from \"../query/field-type-info\";\nimport {\n type JsonPointer,\n jsonPointer,\n type JsonPointerInput,\n type JsonPointerSegment,\n normalizeJsonPointer,\n parseJsonPointer,\n} from \"../query/json-pointer\";\nimport {\n createSchemaIntrospector,\n type FieldTypeInfo,\n} from \"../query/schema-introspector\";\nimport { EDGE_META_KEYS, NODE_META_KEYS } from \"../system-fields\";\nimport { fnv1aBase36 } from \"../utils/hash\";\nimport { hasOwnKey, isInteropProbeKey } from \"../utils/object\";\nimport { getNodeScopeColumns } from \"./compiler\";\nimport {\n type EdgeIndexConfig,\n type EdgeIndexDeclaration,\n type EdgeIndexDirection,\n type EdgeIndexWhereBuilder,\n type IndexFieldInput,\n type IndexScope,\n type IndexWhereExpression,\n type IndexWhereFieldBuilder,\n type IndexWhereLiteral,\n type IndexWhereOp,\n type IndexWhereOperand,\n type NodeIndexConfig,\n type NodeIndexDeclaration,\n type NodeIndexWhereBuilder,\n type RelationalIndexMethod,\n type SystemColumnName,\n} from \"./types\";\n\n// `keySystemColumns` on a node index must fail closed: reject anything that\n// isn't a known node-valid column, not just the known edge-only ones. A\n// caller whose array escapes TypeScript's literal-union checking (`any`-typed\n// data, a value round-tripped through JSON) could otherwise pass a typo'd or\n// otherwise-invalid column that silently reaches SQL DDL generation instead\n// of failing here with a clear error. Derived from the single source of\n// truth (`createSystemColumnMapForNode`, hoisted — see below) rather than a\n// second hand-maintained list, so it can't drift from it.\nconst NODE_KEY_SYSTEM_COLUMNS: ReadonlySet<SystemColumnName> = new Set(\n [...createSystemColumnMapForNode().values()].map((entry) => entry.column),\n);\n\n// ============================================================\n// Public API\n// ============================================================\n\nexport function defineNodeIndex<N extends NodeType>(\n node: N,\n config: NodeIndexConfig<N>,\n): NodeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n const keySystemColumns = normalizeKeySystemColumnsOrThrow(\n config.keySystemColumns ?? [],\n scope,\n unique,\n );\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map([[node.kind, { schema: node.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.fields ?? [],\n schemaIntrospector,\n \"fields\",\n // GIN containment indexes exist precisely for array/object fields,\n // which the btree guard otherwise rejects.\n { allowJsonFields: config.method === \"gin\" },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n {},\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n if (\n fields.length === 0 &&\n coveringFields.length === 0 &&\n keySystemColumns.length === 0\n ) {\n throw new Error(\n \"Index must declare at least one of fields, coveringFields, or keySystemColumns\",\n );\n }\n\n const where = normalizeWhereInput(config.where, () =>\n createNodeWhereBuilder(node, schemaIntrospector),\n );\n\n const method = resolveAdvancedIndexMethod(config.method, {\n fieldCount: fields.length,\n fieldValueType: fieldValueTypes[0],\n coveringFieldCount: coveringFields.length,\n keySystemColumnCount: keySystemColumns.length,\n unique,\n hasWhere: where !== undefined,\n });\n\n const defaultName = generateDefaultIndexName({\n kind: \"node\",\n kindName: node.kind,\n unique,\n scope,\n direction: \"none\",\n fields,\n coveringFields,\n keySystemColumns,\n });\n const name =\n config.name ??\n (method === undefined ? defaultName : `${defaultName}_${method}`);\n\n // `origin` is intentionally omitted: `\"compile-time\"` is the default\n // and is canonicalized by absence so the serialized form stays\n // byte-identical for legacy graphs. `method` and `keySystemColumns`\n // follow the same rule (absence == \"btree\" / no system key columns).\n return {\n entity: \"node\",\n kind: node.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n where,\n ...(method === undefined ? {} : { method }),\n ...(keySystemColumns.length === 0 ? {} : { keySystemColumns }),\n };\n}\n\n/**\n * Validates `keySystemColumns`: must be node system columns (not\n * edge-only `from_kind`/`from_id`/`to_kind`/`to_id`), must not repeat\n * each other, must not repeat a column `scope` already prefixes the key\n * with, and must not combine `\"id\"` with `unique` (every node's `id` is\n * already unique per row, so that combination can never enforce a\n * meaningful constraint across the index's other key columns).\n */\nfunction normalizeKeySystemColumnsOrThrow(\n columns: readonly SystemColumnName[],\n scope: IndexScope,\n unique: boolean,\n): readonly SystemColumnName[] {\n if (columns.length === 0) return [];\n\n for (const column of columns) {\n if (!NODE_KEY_SYSTEM_COLUMNS.has(column)) {\n throw new Error(\n `Node index keySystemColumns does not support \"${column}\" (edge-only system column)`,\n );\n }\n }\n assertUnique(columns, \"keySystemColumns\");\n\n const scopeColumns = new Set(getNodeScopeColumns(scope));\n for (const column of columns) {\n if (scopeColumns.has(column)) {\n throw new Error(\n `Node index keySystemColumns must not repeat a column already implied by scope \"${scope}\": \"${column}\"`,\n );\n }\n }\n\n if (unique && columns.includes(\"id\")) {\n throw new Error(\n `unique node indexes cannot include keySystemColumns: [\"id\"]; id is already unique per node, so including it defeats uniqueness across the prop fields`,\n );\n }\n\n // Return a fresh array: the declaration must own an immutable snapshot, not\n // a reference to the caller's array. Otherwise a post-call mutation of the\n // original `config.keySystemColumns` bypasses these checks and desyncs the\n // already-computed name/hash from the compiled index keys.\n return [...columns];\n}\n\nexport function defineEdgeIndex<E extends AnyEdgeType>(\n edge: E,\n config: EdgeIndexConfig<E>,\n): EdgeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n const direction = config.direction ?? \"none\";\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map(),\n new Map([[edge.kind, { schema: edge.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.fields,\n schemaIntrospector,\n \"fields\",\n { allowEmpty: false, allowJsonFields: config.method === \"gin\" },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n { allowEmpty: true },\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n const where = normalizeWhereInput(config.where, () =>\n createEdgeWhereBuilder(edge, schemaIntrospector),\n );\n\n const method = resolveAdvancedIndexMethod(config.method, {\n fieldCount: fields.length,\n fieldValueType: fieldValueTypes[0],\n coveringFieldCount: coveringFields.length,\n keySystemColumnCount: 0,\n unique,\n hasWhere: where !== undefined,\n });\n\n const defaultName = generateDefaultIndexName({\n kind: \"edge\",\n kindName: edge.kind,\n unique,\n scope,\n direction,\n fields,\n coveringFields,\n });\n const name =\n config.name ??\n (method === undefined ? defaultName : `${defaultName}_${method}`);\n\n return {\n entity: \"edge\",\n kind: edge.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n direction,\n where,\n ...(method === undefined ? {} : { method }),\n };\n}\n\n/**\n * Validates and canonicalizes a declaration's index method. `\"btree\"` (or\n * absent) canonicalizes to `undefined` so serialized declarations and\n * materialization signatures from before `method` existed stay\n * byte-identical. GIN-family methods index one expression and have no\n * ordered key columns, so multi-field, covering, unique, and partial\n * variants are rejected at declaration time rather than failing as\n * confusing DDL errors at materialization time.\n */\nfunction resolveAdvancedIndexMethod(\n method: RelationalIndexMethod | undefined,\n details: Readonly<{\n fieldCount: number;\n fieldValueType: ValueType | undefined;\n coveringFieldCount: number;\n keySystemColumnCount: number;\n unique: boolean;\n hasWhere: boolean;\n }>,\n): Exclude<RelationalIndexMethod, \"btree\"> | undefined {\n const resolved = method ?? \"btree\";\n if (resolved === \"btree\") return undefined;\n if (details.fieldCount !== 1) {\n throw new Error(\n `Index method \"${resolved}\" requires exactly one field (a GIN indexes one expression), got ${details.fieldCount}`,\n );\n }\n // Enforce the field-type contract the methods advertise: gin serves the\n // array containment predicates, trigram serves the string substring /\n // case-insensitive predicates. Anything else (including unresolvable\n // field types) would materialize an index no documented predicate can\n // ever use, so it is rejected here rather than silently costing write\n // amplification for nothing.\n if (resolved === \"gin\" && details.fieldValueType !== \"array\") {\n throw new Error(\n details.fieldValueType === \"string\" ?\n 'Index method \"gin\" serves array containment; for substring or case-insensitive matching on a string field use method: \"trigram\"'\n : `Index method \"gin\" requires an array field (it serves the array containment predicates), got field type \"${details.fieldValueType ?? \"unresolved\"}\"`,\n );\n }\n if (resolved === \"trigram\" && details.fieldValueType !== \"string\") {\n throw new Error(\n details.fieldValueType === \"array\" ?\n 'Index method \"trigram\" serves substring matching on string fields; for array containment use method: \"gin\"'\n : `Index method \"trigram\" requires a string field (it serves substring and case-insensitive matches), got field type \"${details.fieldValueType ?? \"unresolved\"}\"`,\n );\n }\n const extraKeyColumns: readonly [string, number][] = [\n [\"coveringFields\", details.coveringFieldCount],\n [\"keySystemColumns\", details.keySystemColumnCount],\n ];\n for (const [label, count] of extraKeyColumns) {\n if (count > 0) {\n throw new Error(\n `Index method \"${resolved}\" does not support ${label} (GIN indexes cannot serve index-only scans over extra columns)`,\n );\n }\n }\n if (details.unique) {\n throw new Error(\n `Index method \"${resolved}\" does not support unique (GIN indexes cannot enforce uniqueness)`,\n );\n }\n if (details.hasWhere) {\n throw new Error(\n `Index method \"${resolved}\" does not support a partial where clause`,\n );\n }\n return resolved;\n}\n\n// ============================================================\n// WHERE Builder\n// ============================================================\n\n/**\n * The WHERE builder currently only supports top-level fields.\n * Nested field access (e.g., `where.metadata.priority.gt(5)`) is not supported.\n * Use top-level field predicates like `where.status.eq(\"active\")`.\n *\n * For complex nested predicates, use `andWhere()`, `orWhere()`, and `notWhere()`\n * to compose multiple top-level conditions.\n */\n\nfunction normalizeWhereInput<Builder>(\n input:\n | ((where: Builder) => IndexWhereExpression)\n | IndexWhereExpression\n | undefined,\n createBuilder: () => Builder,\n): IndexWhereExpression | undefined {\n if (input === undefined) {\n return undefined;\n }\n\n if (typeof input === \"function\") {\n return input(createBuilder());\n }\n\n return input;\n}\n\ntype NodeShape = Readonly<Record<string, z.ZodType>>;\ntype EdgeShape = Readonly<Record<string, z.ZodType>>;\n\nfunction createNodeWhereBuilder<N extends NodeType>(\n node: N,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): NodeIndexWhereBuilder<N> {\n const shape = getSchemaShape(node.schema);\n const system = createSystemColumnMapForNode();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!hasOwnKey(shape, key)) {\n throw new Error(\n `Unknown field \"${key}\" in node index WHERE clause for \"${node.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getFieldTypeInfo(node.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<NodeIndexWhereBuilder<N>>(\n (key) => getOperand(key),\n (key) => system.has(key) || hasOwnKey(shape, key),\n );\n}\n\nfunction createEdgeWhereBuilder<E extends AnyEdgeType>(\n edge: E,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): EdgeIndexWhereBuilder<E> {\n const shape = getSchemaShape(edge.schema);\n const system = createSystemColumnMapForEdge();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!hasOwnKey(shape, key)) {\n throw new Error(\n `Unknown field \"${key}\" in edge index WHERE clause for \"${edge.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getEdgeFieldTypeInfo(edge.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<EdgeIndexWhereBuilder<E>>(\n (key) => getOperand(key),\n (key) => system.has(key) || hasOwnKey(shape, key),\n );\n}\n\nfunction createWhereProxy<TBuilder extends object>(\n getOperand: (key: string) => IndexWhereOperand,\n declaresField: (key: string) => boolean,\n): TBuilder {\n // An ORDINARY object target, even though the target is never read: a proxy's\n // target is what `instanceof`, `Object.getPrototypeOf` and every other\n // internal method resolve against, and this proxy is handed to the CALLER's\n // `where:` callback. A null-prototype target made `builder instanceof Object`\n // answer `false` for no benefit — nothing is ever written to it, so it was\n // not even the `__proto__`-write protection a data-keyed bag exists for.\n return new Proxy({} as TBuilder, {\n get: (_target, property: string | symbol) => {\n if (typeof property !== \"string\") return;\n\n // A DECLARED field wins over the interop exemption, for the reason\n // `isInteropProbeKey` documents: `then` and `toJSON` are legal schema\n // field names, and refusing them here left a partial index unable to\n // reference a field the schema declares. Only an UNDECLARED probe\n // resolves to `undefined`, keeping the builder safe to await or\n // stringify.\n if (isInteropProbeKey(property) && !declaresField(property)) return;\n\n const operand = getOperand(property);\n return createIndexWhereFieldBuilder(operand);\n },\n });\n}\n\nfunction createIndexWhereFieldBuilder<T>(\n operand: IndexWhereOperand,\n): IndexWhereFieldBuilder<T> {\n function isNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNull\" };\n }\n\n function isNotNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNotNull\" };\n }\n\n function comparison(op: IndexWhereOp, value: unknown): IndexWhereExpression {\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: toLiteralOrThrow(value, operand.valueType),\n };\n }\n\n function listComparison(\n op: IndexWhereOp,\n values: readonly unknown[],\n ): IndexWhereExpression {\n const literals = values.map((value) =>\n toLiteralOrThrow(value, operand.valueType),\n );\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: literals,\n };\n }\n\n return {\n eq: (value) => comparison(\"eq\", value),\n neq: (value) => comparison(\"neq\", value),\n gt: (value) => comparison(\"gt\", value),\n gte: (value) => comparison(\"gte\", value),\n lt: (value) => comparison(\"lt\", value),\n lte: (value) => comparison(\"lte\", value),\n in: (values) => listComparison(\"in\", values),\n notIn: (values) => listComparison(\"notIn\", values),\n isNull,\n isNotNull,\n };\n}\n\nfunction toLiteralOrThrow(\n value: unknown,\n preferredType: ValueType | undefined,\n): IndexWhereLiteral {\n if (value instanceof Date) {\n return {\n __type: \"index_where_literal\",\n value: value.toISOString(),\n valueType: \"date\",\n };\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n const valueType = inferValueType(value, preferredType);\n return { __type: \"index_where_literal\", value, valueType };\n }\n\n throw new Error(\n `Unsupported literal value type in index WHERE clause: ${String(value)}`,\n );\n}\n\nfunction inferValueType(\n value: string | number | boolean,\n preferredType: ValueType | undefined,\n): ValueType {\n if (preferredType === \"date\" && typeof value === \"string\") {\n return \"date\";\n }\n if (preferredType === \"number\" && typeof value === \"string\") {\n return \"number\";\n }\n if (preferredType === \"boolean\" && typeof value === \"string\") {\n return \"boolean\";\n }\n\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"number\") return \"number\";\n return \"boolean\";\n}\n\nfunction toSystemColumnName(metaKey: string): SystemColumnName {\n const snake = metaKey.replaceAll(/([A-Z])/g, \"_$1\").toLowerCase();\n\n switch (snake) {\n case \"deleted_at\":\n case \"valid_from\":\n case \"valid_to\":\n case \"created_at\":\n case \"updated_at\": {\n return snake;\n }\n default: {\n throw new Error(`Unsupported system meta key: ${metaKey}`);\n }\n }\n}\n\nfunction createSystemColumnMapForNode(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n ];\n\n for (const key of NODE_META_KEYS) {\n if (key === \"version\") {\n entries.push([key, { column: \"version\", valueType: \"number\" }]);\n continue;\n }\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction createSystemColumnMapForEdge(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n [\"fromKind\", { column: \"from_kind\", valueType: \"string\" }],\n [\"fromId\", { column: \"from_id\", valueType: \"string\" }],\n [\"toKind\", { column: \"to_kind\", valueType: \"string\" }],\n [\"toId\", { column: \"to_id\", valueType: \"string\" }],\n ];\n\n for (const key of EDGE_META_KEYS) {\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction getSchemaShape(schema: z.ZodType): NodeShape | EdgeShape {\n if (schema.type !== \"object\") {\n throw new Error(\"Index definitions require an object schema\");\n }\n\n const def = schema.def as { shape?: Record<string, z.ZodType> };\n const shape = def.shape;\n if (!shape) {\n throw new Error(\"Index definitions require a resolvable object shape\");\n }\n\n return shape;\n}\n\n// ============================================================\n// Validation\n// ============================================================\n\nfunction assertNonEmpty(values: readonly unknown[], label: string): void {\n if (values.length === 0) {\n throw new Error(`Index ${label} must not be empty`);\n }\n}\n\nfunction assertUnique(values: readonly string[], label: string): void {\n const set = new Set<string>();\n for (const value of values) {\n if (set.has(value)) {\n throw new Error(`Index ${label} contains duplicate value: ${value}`);\n }\n set.add(value);\n }\n}\n\nfunction assertNoOverlap(\n a: readonly string[],\n b: readonly string[],\n aLabel: string,\n bLabel: string,\n): void {\n const set = new Set(a);\n for (const value of b) {\n if (set.has(value)) {\n throw new Error(`Index ${bLabel} must not overlap ${aLabel}: ${value}`);\n }\n }\n}\n\nfunction assertIndexableValueType(\n valueType: ValueType,\n context: string,\n options: Readonly<{ allowJsonFields: boolean }>,\n): void {\n if (valueType === \"embedding\") {\n throw new Error(\n `Cannot create props index for embedding field (${context}); embedding() fields are indexed automatically in the vector strategy's per-(kind, field) storage`,\n );\n }\n\n if (\n (valueType === \"array\" || valueType === \"object\") &&\n !options.allowJsonFields\n ) {\n throw new Error(\n `Cannot create btree props index for ${valueType} field (${context}); use method: \"gin\" instead`,\n );\n }\n}\n\ntype NormalizedIndexFields = Readonly<{\n pointers: readonly JsonPointer[];\n valueTypes: readonly (ValueType | undefined)[];\n}>;\n\nfunction normalizeNodeIndexFieldsOrThrow<N extends NodeType>(\n node: N,\n inputs: readonly IndexFieldInput<z.infer<N[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowJsonFields?: boolean }>,\n): NormalizedIndexFields {\n // Node `fields`/`coveringFields` are both optional (an index can be keyed\n // by `keySystemColumns` alone), so unlike the edge equivalent below, an\n // empty input is always valid here — `defineNodeIndex` enforces that at\n // least one of `fields`/`coveringFields`/`keySystemColumns` is non-empty.\n if (inputs.length === 0) {\n return { pointers: [], valueTypes: [] };\n }\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveNodeFieldTypeInfoOrThrow(\n node.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `node \"${node.kind}\" ${pointer}`, {\n allowJsonFields: options.allowJsonFields ?? false,\n });\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeEdgeIndexFieldsOrThrow<E extends AnyEdgeType>(\n edge: E,\n inputs: readonly IndexFieldInput<z.infer<E[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowEmpty: boolean; allowJsonFields?: boolean }>,\n): NormalizedIndexFields {\n if (inputs.length === 0 && options.allowEmpty) {\n return { pointers: [], valueTypes: [] };\n }\n assertNonEmpty(inputs, label);\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveEdgeFieldTypeInfoOrThrow(\n edge.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `edge \"${edge.kind}\" ${pointer}`, {\n allowJsonFields: options.allowJsonFields ?? false,\n });\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeIndexFieldPointer<T>(input: IndexFieldInput<T>): JsonPointer {\n if (Array.isArray(input)) {\n if (input.length === 0) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return jsonPointer(input as readonly JsonPointerSegment[]);\n }\n\n if (typeof input === \"string\") {\n if (input.startsWith(\"/\")) {\n const pointer = normalizeJsonPointer(\n input as JsonPointerInput<Record<string, unknown>>,\n );\n if (pointer === \"\") {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return pointer;\n }\n return jsonPointer([input]);\n }\n\n throw new Error(`Unsupported index field input: ${String(input)}`);\n}\n\nfunction resolveNodeFieldTypeInfoOrThrow(\n nodeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getFieldTypeInfo(nodeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\nfunction resolveEdgeFieldTypeInfoOrThrow(\n edgeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getEdgeFieldTypeInfo(edgeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\n// ============================================================\n// Default Name Generation\n// ============================================================\n\ntype DefaultNameParts = Readonly<{\n kind: KindEntity;\n kindName: string;\n unique: boolean;\n scope: IndexScope;\n direction: EdgeIndexDirection;\n fields: readonly string[];\n coveringFields: readonly string[];\n /**\n * Node-only, defaults to `[]` for edges. Folded into the hash/name only\n * when non-empty so indexes that don't use it keep byte-identical\n * default names to before this field existed.\n */\n keySystemColumns?: readonly string[];\n}>;\n\nfunction generateDefaultIndexName(parts: DefaultNameParts): string {\n const keySystemColumns = parts.keySystemColumns ?? [];\n const hash = fnv1aBase36(\n JSON.stringify({\n kind: parts.kind,\n kindName: parts.kindName,\n unique: parts.unique,\n scope: parts.scope,\n direction: parts.direction,\n fields: parts.fields,\n covering: parts.coveringFields,\n ...(keySystemColumns.length > 0 ? { keySystemColumns } : {}),\n }),\n );\n\n const nameParts = [\n \"idx\",\n \"tg\",\n parts.kind,\n sanitizeIdentifierComponent(parts.kindName),\n parts.fields.length > 0 ?\n sanitizeIdentifierComponent(parts.fields.join(\"_\"))\n : undefined,\n parts.coveringFields.length > 0 ?\n `cov_${sanitizeIdentifierComponent(parts.coveringFields.join(\"_\"))}`\n : undefined,\n keySystemColumns.length > 0 ?\n `sys_${sanitizeIdentifierComponent(keySystemColumns.join(\"_\"))}`\n : undefined,\n parts.direction === \"none\" ? undefined : parts.direction,\n parts.unique ? \"uniq\" : undefined,\n parts.scope === \"graphAndKind\" ?\n undefined\n : sanitizeIdentifierComponent(parts.scope),\n hash,\n ].filter((part) => part !== undefined);\n\n const joined = nameParts.join(\"_\");\n return joined.length <= MAX_PG_IDENTIFIER_LENGTH ?\n joined\n : `${joined.slice(0, TRUNCATED_IDENTIFIER_MAX_LENGTH)}_${hash}`;\n}\n\nfunction sanitizeIdentifierComponent(value: string): string {\n return value\n .toLowerCase()\n .replaceAll(/[^a-z0-9_]+/g, \"_\")\n .replaceAll(/^_+|_+$/g, \"\")\n .slice(0, IDENTIFIER_COMPONENT_MAX_LENGTH);\n}\n"]}
1
+ {"version":3,"sources":["../src/system-fields.ts","../src/indexes/define-index.ts"],"names":[],"mappings":"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","file":"chunk-LZMQ3SFK.js","sourcesContent":["export const NODE_META_KEYS = [\n \"version\",\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n\nexport const EDGE_META_KEYS = [\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n","import { type z } from \"zod\";\n\nimport {\n IDENTIFIER_COMPONENT_MAX_LENGTH,\n MAX_PG_IDENTIFIER_LENGTH,\n TRUNCATED_IDENTIFIER_MAX_LENGTH,\n} from \"../constants\";\nimport {\n type AnyEdgeType,\n type KindEntity,\n type NodeType,\n} from \"../core/types\";\nimport { type ValueType } from \"../query/ast\";\nimport { resolveFieldTypeInfoAtJsonPointer } from \"../query/field-type-info\";\nimport {\n type JsonPointer,\n jsonPointer,\n type JsonPointerInput,\n type JsonPointerSegment,\n normalizeJsonPointer,\n parseJsonPointer,\n} from \"../query/json-pointer\";\nimport {\n createSchemaIntrospector,\n type FieldTypeInfo,\n} from \"../query/schema-introspector\";\nimport { EDGE_META_KEYS, NODE_META_KEYS } from \"../system-fields\";\nimport { fnv1aBase36 } from \"../utils/hash\";\nimport { hasOwnKey, isInteropProbeKey } from \"../utils/object\";\nimport { getNodeScopeColumns } from \"./compiler\";\nimport {\n type EdgeIndexConfig,\n type EdgeIndexDeclaration,\n type EdgeIndexDirection,\n type EdgeIndexWhereBuilder,\n type IndexFieldInput,\n type IndexScope,\n type IndexWhereExpression,\n type IndexWhereFieldBuilder,\n type IndexWhereLiteral,\n type IndexWhereOp,\n type IndexWhereOperand,\n type NodeIndexConfig,\n type NodeIndexDeclaration,\n type NodeIndexWhereBuilder,\n type RelationalIndexMethod,\n type SystemColumnName,\n} from \"./types\";\n\n// `keySystemColumns` on a node index must fail closed: reject anything that\n// isn't a known node-valid column, not just the known edge-only ones. A\n// caller whose array escapes TypeScript's literal-union checking (`any`-typed\n// data, a value round-tripped through JSON) could otherwise pass a typo'd or\n// otherwise-invalid column that silently reaches SQL DDL generation instead\n// of failing here with a clear error. Derived from the single source of\n// truth (`createSystemColumnMapForNode`, hoisted — see below) rather than a\n// second hand-maintained list, so it can't drift from it.\nconst NODE_KEY_SYSTEM_COLUMNS: ReadonlySet<SystemColumnName> = new Set(\n [...createSystemColumnMapForNode().values()].map((entry) => entry.column),\n);\n\n// ============================================================\n// Public API\n// ============================================================\n\nexport function defineNodeIndex<N extends NodeType>(\n node: N,\n config: NodeIndexConfig<N>,\n): NodeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n const keySystemColumns = normalizeKeySystemColumnsOrThrow(\n config.keySystemColumns ?? [],\n scope,\n unique,\n );\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map([[node.kind, { schema: node.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.fields ?? [],\n schemaIntrospector,\n \"fields\",\n // GIN containment indexes exist precisely for array/object fields,\n // which the btree guard otherwise rejects.\n { allowJsonFields: config.method === \"gin\" },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n {},\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n if (\n fields.length === 0 &&\n coveringFields.length === 0 &&\n keySystemColumns.length === 0\n ) {\n throw new Error(\n \"Index must declare at least one of fields, coveringFields, or keySystemColumns\",\n );\n }\n\n const where = normalizeWhereInput(config.where, () =>\n createNodeWhereBuilder(node, schemaIntrospector),\n );\n\n const method = resolveAdvancedIndexMethod(config.method, {\n fieldCount: fields.length,\n fieldValueType: fieldValueTypes[0],\n coveringFieldCount: coveringFields.length,\n keySystemColumnCount: keySystemColumns.length,\n unique,\n hasWhere: where !== undefined,\n });\n\n const defaultName = generateDefaultIndexName({\n kind: \"node\",\n kindName: node.kind,\n unique,\n scope,\n direction: \"none\",\n fields,\n coveringFields,\n keySystemColumns,\n });\n const name =\n config.name ??\n (method === undefined ? defaultName : `${defaultName}_${method}`);\n\n // `origin` is intentionally omitted: `\"compile-time\"` is the default\n // and is canonicalized by absence so the serialized form stays\n // byte-identical for legacy graphs. `method` and `keySystemColumns`\n // follow the same rule (absence == \"btree\" / no system key columns).\n return {\n entity: \"node\",\n kind: node.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n where,\n ...(method === undefined ? {} : { method }),\n ...(keySystemColumns.length === 0 ? {} : { keySystemColumns }),\n };\n}\n\n/**\n * Validates `keySystemColumns`: must be node system columns (not\n * edge-only `from_kind`/`from_id`/`to_kind`/`to_id`), must not repeat\n * each other, must not repeat a column `scope` already prefixes the key\n * with, and must not combine `\"id\"` with `unique` (every node's `id` is\n * already unique per row, so that combination can never enforce a\n * meaningful constraint across the index's other key columns).\n */\nfunction normalizeKeySystemColumnsOrThrow(\n columns: readonly SystemColumnName[],\n scope: IndexScope,\n unique: boolean,\n): readonly SystemColumnName[] {\n if (columns.length === 0) return [];\n\n for (const column of columns) {\n if (!NODE_KEY_SYSTEM_COLUMNS.has(column)) {\n throw new Error(\n `Node index keySystemColumns does not support \"${column}\" (edge-only system column)`,\n );\n }\n }\n assertUnique(columns, \"keySystemColumns\");\n\n const scopeColumns = new Set(getNodeScopeColumns(scope));\n for (const column of columns) {\n if (scopeColumns.has(column)) {\n throw new Error(\n `Node index keySystemColumns must not repeat a column already implied by scope \"${scope}\": \"${column}\"`,\n );\n }\n }\n\n if (unique && columns.includes(\"id\")) {\n throw new Error(\n `unique node indexes cannot include keySystemColumns: [\"id\"]; id is already unique per node, so including it defeats uniqueness across the prop fields`,\n );\n }\n\n // Return a fresh array: the declaration must own an immutable snapshot, not\n // a reference to the caller's array. Otherwise a post-call mutation of the\n // original `config.keySystemColumns` bypasses these checks and desyncs the\n // already-computed name/hash from the compiled index keys.\n return [...columns];\n}\n\nexport function defineEdgeIndex<E extends AnyEdgeType>(\n edge: E,\n config: EdgeIndexConfig<E>,\n): EdgeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n const direction = config.direction ?? \"none\";\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map(),\n new Map([[edge.kind, { schema: edge.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.fields,\n schemaIntrospector,\n \"fields\",\n { allowEmpty: false, allowJsonFields: config.method === \"gin\" },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n { allowEmpty: true },\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n const where = normalizeWhereInput(config.where, () =>\n createEdgeWhereBuilder(edge, schemaIntrospector),\n );\n\n const method = resolveAdvancedIndexMethod(config.method, {\n fieldCount: fields.length,\n fieldValueType: fieldValueTypes[0],\n coveringFieldCount: coveringFields.length,\n keySystemColumnCount: 0,\n unique,\n hasWhere: where !== undefined,\n });\n\n const defaultName = generateDefaultIndexName({\n kind: \"edge\",\n kindName: edge.kind,\n unique,\n scope,\n direction,\n fields,\n coveringFields,\n });\n const name =\n config.name ??\n (method === undefined ? defaultName : `${defaultName}_${method}`);\n\n return {\n entity: \"edge\",\n kind: edge.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n direction,\n where,\n ...(method === undefined ? {} : { method }),\n };\n}\n\n/**\n * Validates and canonicalizes a declaration's index method. `\"btree\"` (or\n * absent) canonicalizes to `undefined` so serialized declarations and\n * materialization signatures from before `method` existed stay\n * byte-identical. GIN-family methods index one expression and have no\n * ordered key columns, so multi-field, covering, unique, and partial\n * variants are rejected at declaration time rather than failing as\n * confusing DDL errors at materialization time.\n */\nfunction resolveAdvancedIndexMethod(\n method: RelationalIndexMethod | undefined,\n details: Readonly<{\n fieldCount: number;\n fieldValueType: ValueType | undefined;\n coveringFieldCount: number;\n keySystemColumnCount: number;\n unique: boolean;\n hasWhere: boolean;\n }>,\n): Exclude<RelationalIndexMethod, \"btree\"> | undefined {\n const resolved = method ?? \"btree\";\n if (resolved === \"btree\") return undefined;\n if (details.fieldCount !== 1) {\n throw new Error(\n `Index method \"${resolved}\" requires exactly one field (a GIN indexes one expression), got ${details.fieldCount}`,\n );\n }\n // Enforce the field-type contract the methods advertise: gin serves the\n // array containment predicates, trigram serves the string substring /\n // case-insensitive predicates. Anything else (including unresolvable\n // field types) would materialize an index no documented predicate can\n // ever use, so it is rejected here rather than silently costing write\n // amplification for nothing.\n if (resolved === \"gin\" && details.fieldValueType !== \"array\") {\n throw new Error(\n details.fieldValueType === \"string\" ?\n 'Index method \"gin\" serves array containment; for substring or case-insensitive matching on a string field use method: \"trigram\"'\n : `Index method \"gin\" requires an array field (it serves the array containment predicates), got field type \"${details.fieldValueType ?? \"unresolved\"}\"`,\n );\n }\n if (resolved === \"trigram\" && details.fieldValueType !== \"string\") {\n throw new Error(\n details.fieldValueType === \"array\" ?\n 'Index method \"trigram\" serves substring matching on string fields; for array containment use method: \"gin\"'\n : `Index method \"trigram\" requires a string field (it serves substring and case-insensitive matches), got field type \"${details.fieldValueType ?? \"unresolved\"}\"`,\n );\n }\n const extraKeyColumns: readonly [string, number][] = [\n [\"coveringFields\", details.coveringFieldCount],\n [\"keySystemColumns\", details.keySystemColumnCount],\n ];\n for (const [label, count] of extraKeyColumns) {\n if (count > 0) {\n throw new Error(\n `Index method \"${resolved}\" does not support ${label} (GIN indexes cannot serve index-only scans over extra columns)`,\n );\n }\n }\n if (details.unique) {\n throw new Error(\n `Index method \"${resolved}\" does not support unique (GIN indexes cannot enforce uniqueness)`,\n );\n }\n if (details.hasWhere) {\n throw new Error(\n `Index method \"${resolved}\" does not support a partial where clause`,\n );\n }\n return resolved;\n}\n\n// ============================================================\n// WHERE Builder\n// ============================================================\n\n/**\n * The WHERE builder currently only supports top-level fields.\n * Nested field access (e.g., `where.metadata.priority.gt(5)`) is not supported.\n * Use top-level field predicates like `where.status.eq(\"active\")`.\n *\n * For complex nested predicates, use `andWhere()`, `orWhere()`, and `notWhere()`\n * to compose multiple top-level conditions.\n */\n\nfunction normalizeWhereInput<Builder>(\n input:\n | ((where: Builder) => IndexWhereExpression)\n | IndexWhereExpression\n | undefined,\n createBuilder: () => Builder,\n): IndexWhereExpression | undefined {\n if (input === undefined) {\n return undefined;\n }\n\n if (typeof input === \"function\") {\n return input(createBuilder());\n }\n\n return input;\n}\n\ntype NodeShape = Readonly<Record<string, z.ZodType>>;\ntype EdgeShape = Readonly<Record<string, z.ZodType>>;\n\nfunction createNodeWhereBuilder<N extends NodeType>(\n node: N,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): NodeIndexWhereBuilder<N> {\n const shape = getSchemaShape(node.schema);\n const system = createSystemColumnMapForNode();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!hasOwnKey(shape, key)) {\n throw new Error(\n `Unknown field \"${key}\" in node index WHERE clause for \"${node.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getFieldTypeInfo(node.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<NodeIndexWhereBuilder<N>>(\n (key) => getOperand(key),\n (key) => system.has(key) || hasOwnKey(shape, key),\n );\n}\n\nfunction createEdgeWhereBuilder<E extends AnyEdgeType>(\n edge: E,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): EdgeIndexWhereBuilder<E> {\n const shape = getSchemaShape(edge.schema);\n const system = createSystemColumnMapForEdge();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!hasOwnKey(shape, key)) {\n throw new Error(\n `Unknown field \"${key}\" in edge index WHERE clause for \"${edge.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getEdgeFieldTypeInfo(edge.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<EdgeIndexWhereBuilder<E>>(\n (key) => getOperand(key),\n (key) => system.has(key) || hasOwnKey(shape, key),\n );\n}\n\nfunction createWhereProxy<TBuilder extends object>(\n getOperand: (key: string) => IndexWhereOperand,\n declaresField: (key: string) => boolean,\n): TBuilder {\n // An ORDINARY object target, even though the target is never read: a proxy's\n // target is what `instanceof`, `Object.getPrototypeOf` and every other\n // internal method resolve against, and this proxy is handed to the CALLER's\n // `where:` callback. A null-prototype target made `builder instanceof Object`\n // answer `false` for no benefit — nothing is ever written to it, so it was\n // not even the `__proto__`-write protection a data-keyed bag exists for.\n return new Proxy({} as TBuilder, {\n get: (_target, property: string | symbol) => {\n if (typeof property !== \"string\") return;\n\n // A DECLARED field wins over the interop exemption, for the reason\n // `isInteropProbeKey` documents: `then` and `toJSON` are legal schema\n // field names, and refusing them here left a partial index unable to\n // reference a field the schema declares. Only an UNDECLARED probe\n // resolves to `undefined`, keeping the builder safe to await or\n // stringify.\n if (isInteropProbeKey(property) && !declaresField(property)) return;\n\n const operand = getOperand(property);\n return createIndexWhereFieldBuilder(operand);\n },\n });\n}\n\nfunction createIndexWhereFieldBuilder<T>(\n operand: IndexWhereOperand,\n): IndexWhereFieldBuilder<T> {\n function isNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNull\" };\n }\n\n function isNotNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNotNull\" };\n }\n\n function comparison(op: IndexWhereOp, value: unknown): IndexWhereExpression {\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: toLiteralOrThrow(value, operand.valueType),\n };\n }\n\n function listComparison(\n op: IndexWhereOp,\n values: readonly unknown[],\n ): IndexWhereExpression {\n const literals = values.map((value) =>\n toLiteralOrThrow(value, operand.valueType),\n );\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: literals,\n };\n }\n\n return {\n eq: (value) => comparison(\"eq\", value),\n neq: (value) => comparison(\"neq\", value),\n gt: (value) => comparison(\"gt\", value),\n gte: (value) => comparison(\"gte\", value),\n lt: (value) => comparison(\"lt\", value),\n lte: (value) => comparison(\"lte\", value),\n in: (values) => listComparison(\"in\", values),\n notIn: (values) => listComparison(\"notIn\", values),\n isNull,\n isNotNull,\n };\n}\n\nfunction toLiteralOrThrow(\n value: unknown,\n preferredType: ValueType | undefined,\n): IndexWhereLiteral {\n if (value instanceof Date) {\n return {\n __type: \"index_where_literal\",\n value: value.toISOString(),\n valueType: \"date\",\n };\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n const valueType = inferValueType(value, preferredType);\n return { __type: \"index_where_literal\", value, valueType };\n }\n\n throw new Error(\n `Unsupported literal value type in index WHERE clause: ${String(value)}`,\n );\n}\n\nfunction inferValueType(\n value: string | number | boolean,\n preferredType: ValueType | undefined,\n): ValueType {\n if (preferredType === \"date\" && typeof value === \"string\") {\n return \"date\";\n }\n if (preferredType === \"number\" && typeof value === \"string\") {\n return \"number\";\n }\n if (preferredType === \"boolean\" && typeof value === \"string\") {\n return \"boolean\";\n }\n\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"number\") return \"number\";\n return \"boolean\";\n}\n\nfunction toSystemColumnName(metaKey: string): SystemColumnName {\n const snake = metaKey.replaceAll(/([A-Z])/g, \"_$1\").toLowerCase();\n\n switch (snake) {\n case \"deleted_at\":\n case \"valid_from\":\n case \"valid_to\":\n case \"created_at\":\n case \"updated_at\": {\n return snake;\n }\n default: {\n throw new Error(`Unsupported system meta key: ${metaKey}`);\n }\n }\n}\n\nfunction createSystemColumnMapForNode(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n ];\n\n for (const key of NODE_META_KEYS) {\n if (key === \"version\") {\n entries.push([key, { column: \"version\", valueType: \"number\" }]);\n continue;\n }\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction createSystemColumnMapForEdge(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n [\"fromKind\", { column: \"from_kind\", valueType: \"string\" }],\n [\"fromId\", { column: \"from_id\", valueType: \"string\" }],\n [\"toKind\", { column: \"to_kind\", valueType: \"string\" }],\n [\"toId\", { column: \"to_id\", valueType: \"string\" }],\n ];\n\n for (const key of EDGE_META_KEYS) {\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction getSchemaShape(schema: z.ZodType): NodeShape | EdgeShape {\n if (schema.type !== \"object\") {\n throw new Error(\"Index definitions require an object schema\");\n }\n\n const def = schema.def as { shape?: Record<string, z.ZodType> };\n const shape = def.shape;\n if (!shape) {\n throw new Error(\"Index definitions require a resolvable object shape\");\n }\n\n return shape;\n}\n\n// ============================================================\n// Validation\n// ============================================================\n\nfunction assertNonEmpty(values: readonly unknown[], label: string): void {\n if (values.length === 0) {\n throw new Error(`Index ${label} must not be empty`);\n }\n}\n\nfunction assertUnique(values: readonly string[], label: string): void {\n const set = new Set<string>();\n for (const value of values) {\n if (set.has(value)) {\n throw new Error(`Index ${label} contains duplicate value: ${value}`);\n }\n set.add(value);\n }\n}\n\nfunction assertNoOverlap(\n a: readonly string[],\n b: readonly string[],\n aLabel: string,\n bLabel: string,\n): void {\n const set = new Set(a);\n for (const value of b) {\n if (set.has(value)) {\n throw new Error(`Index ${bLabel} must not overlap ${aLabel}: ${value}`);\n }\n }\n}\n\nfunction assertIndexableValueType(\n valueType: ValueType,\n context: string,\n options: Readonly<{ allowJsonFields: boolean }>,\n): void {\n if (valueType === \"embedding\") {\n throw new Error(\n `Cannot create props index for embedding field (${context}); embedding() fields are indexed automatically in the vector strategy's per-(kind, field) storage`,\n );\n }\n\n if (\n (valueType === \"array\" || valueType === \"object\") &&\n !options.allowJsonFields\n ) {\n throw new Error(\n `Cannot create btree props index for ${valueType} field (${context}); use method: \"gin\" instead`,\n );\n }\n}\n\ntype NormalizedIndexFields = Readonly<{\n pointers: readonly JsonPointer[];\n valueTypes: readonly (ValueType | undefined)[];\n}>;\n\nfunction normalizeNodeIndexFieldsOrThrow<N extends NodeType>(\n node: N,\n inputs: readonly IndexFieldInput<z.infer<N[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowJsonFields?: boolean }>,\n): NormalizedIndexFields {\n // Node `fields`/`coveringFields` are both optional (an index can be keyed\n // by `keySystemColumns` alone), so unlike the edge equivalent below, an\n // empty input is always valid here — `defineNodeIndex` enforces that at\n // least one of `fields`/`coveringFields`/`keySystemColumns` is non-empty.\n if (inputs.length === 0) {\n return { pointers: [], valueTypes: [] };\n }\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveNodeFieldTypeInfoOrThrow(\n node.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `node \"${node.kind}\" ${pointer}`, {\n allowJsonFields: options.allowJsonFields ?? false,\n });\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeEdgeIndexFieldsOrThrow<E extends AnyEdgeType>(\n edge: E,\n inputs: readonly IndexFieldInput<z.infer<E[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowEmpty: boolean; allowJsonFields?: boolean }>,\n): NormalizedIndexFields {\n if (inputs.length === 0 && options.allowEmpty) {\n return { pointers: [], valueTypes: [] };\n }\n assertNonEmpty(inputs, label);\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveEdgeFieldTypeInfoOrThrow(\n edge.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `edge \"${edge.kind}\" ${pointer}`, {\n allowJsonFields: options.allowJsonFields ?? false,\n });\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeIndexFieldPointer<T>(input: IndexFieldInput<T>): JsonPointer {\n if (Array.isArray(input)) {\n if (input.length === 0) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return jsonPointer(input as readonly JsonPointerSegment[]);\n }\n\n if (typeof input === \"string\") {\n if (input.startsWith(\"/\")) {\n const pointer = normalizeJsonPointer(\n input as JsonPointerInput<Record<string, unknown>>,\n );\n if (pointer === \"\") {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return pointer;\n }\n return jsonPointer([input]);\n }\n\n throw new Error(`Unsupported index field input: ${String(input)}`);\n}\n\nfunction resolveNodeFieldTypeInfoOrThrow(\n nodeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getFieldTypeInfo(nodeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\nfunction resolveEdgeFieldTypeInfoOrThrow(\n edgeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getEdgeFieldTypeInfo(edgeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\n// ============================================================\n// Default Name Generation\n// ============================================================\n\ntype DefaultNameParts = Readonly<{\n kind: KindEntity;\n kindName: string;\n unique: boolean;\n scope: IndexScope;\n direction: EdgeIndexDirection;\n fields: readonly string[];\n coveringFields: readonly string[];\n /**\n * Node-only, defaults to `[]` for edges. Folded into the hash/name only\n * when non-empty so indexes that don't use it keep byte-identical\n * default names to before this field existed.\n */\n keySystemColumns?: readonly string[];\n}>;\n\nfunction generateDefaultIndexName(parts: DefaultNameParts): string {\n const keySystemColumns = parts.keySystemColumns ?? [];\n const hash = fnv1aBase36(\n JSON.stringify({\n kind: parts.kind,\n kindName: parts.kindName,\n unique: parts.unique,\n scope: parts.scope,\n direction: parts.direction,\n fields: parts.fields,\n covering: parts.coveringFields,\n ...(keySystemColumns.length > 0 ? { keySystemColumns } : {}),\n }),\n );\n\n const nameParts = [\n \"idx\",\n \"tg\",\n parts.kind,\n sanitizeIdentifierComponent(parts.kindName),\n parts.fields.length > 0 ?\n sanitizeIdentifierComponent(parts.fields.join(\"_\"))\n : undefined,\n parts.coveringFields.length > 0 ?\n `cov_${sanitizeIdentifierComponent(parts.coveringFields.join(\"_\"))}`\n : undefined,\n keySystemColumns.length > 0 ?\n `sys_${sanitizeIdentifierComponent(keySystemColumns.join(\"_\"))}`\n : undefined,\n parts.direction === \"none\" ? undefined : parts.direction,\n parts.unique ? \"uniq\" : undefined,\n parts.scope === \"graphAndKind\" ?\n undefined\n : sanitizeIdentifierComponent(parts.scope),\n hash,\n ].filter((part) => part !== undefined);\n\n const joined = nameParts.join(\"_\");\n return joined.length <= MAX_PG_IDENTIFIER_LENGTH ?\n joined\n : `${joined.slice(0, TRUNCATED_IDENTIFIER_MAX_LENGTH)}_${hash}`;\n}\n\nfunction sanitizeIdentifierComponent(value: string): string {\n return value\n .toLowerCase()\n .replaceAll(/[^a-z0-9_]+/g, \"_\")\n .replaceAll(/^_+|_+$/g, \"\")\n .slice(0, IDENTIFIER_COMPONENT_MAX_LENGTH);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { assertClaimAxisSafe, assertWhereFieldDeclared } from './chunk-5LKOVCPP.js';
1
+ import { assertClaimAxisSafe, assertWhereFieldDeclared } from './chunk-RVUL2HXY.js';
2
2
  import { getEmbeddingIndex, isEmbeddingSchema } from './chunk-PC2UBAUB.js';
3
3
  import { ConfigurationError, ValidationError } from './chunk-YDEJQWOL.js';
4
4
  import { createDataKeyedBag } from './chunk-DYATYRY4.js';
@@ -316,5 +316,5 @@ function isKnownKind(graph, name) {
316
316
  }
317
317
 
318
318
  export { EDGE_TYPE_BRAND, NODE_TYPE_BRAND, asEdgeId, asNodeId, autoDeriveVectorIndexes, defineGraph, defineInternalGraph, getEdgeKinds, getNodeKinds, isEdgeType, isEdgeTypeWithEndpoints, isGraphDef, isKnownKind, isNodeType, mergeVectorIndexes };
319
- //# sourceMappingURL=chunk-DI6VC62F.js.map
320
- //# sourceMappingURL=chunk-DI6VC62F.js.map
319
+ //# sourceMappingURL=chunk-M3VTS3F6.js.map
320
+ //# sourceMappingURL=chunk-M3VTS3F6.js.map