@nicia-ai/typegraph 0.37.0 → 0.38.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 (372) hide show
  1. package/README.md +12 -10
  2. package/dist/backend/drizzle/indexes.cjs +32 -0
  3. package/dist/backend/drizzle/indexes.cjs.map +1 -0
  4. package/dist/backend/drizzle/indexes.d.cts +43 -0
  5. package/dist/backend/drizzle/indexes.d.ts +43 -0
  6. package/dist/backend/drizzle/indexes.js +11 -0
  7. package/dist/backend/drizzle/indexes.js.map +1 -0
  8. package/dist/backend/index.cjs +161 -0
  9. package/dist/backend/index.cjs.map +1 -0
  10. package/dist/backend/index.d.cts +3 -0
  11. package/dist/backend/index.d.ts +3 -0
  12. package/dist/backend/index.js +8 -0
  13. package/dist/backend/index.js.map +1 -0
  14. package/dist/backend/postgres/index.cjs +32 -28
  15. package/dist/backend/postgres/index.d.cts +13 -12
  16. package/dist/backend/postgres/index.d.ts +13 -12
  17. package/dist/backend/postgres/index.js +19 -15
  18. package/dist/backend/postgres/pglite-store.cjs +67 -0
  19. package/dist/backend/postgres/pglite-store.cjs.map +1 -0
  20. package/dist/backend/postgres/pglite-store.d.cts +38 -0
  21. package/dist/backend/postgres/pglite-store.d.ts +38 -0
  22. package/dist/backend/postgres/pglite-store.js +65 -0
  23. package/dist/backend/postgres/pglite-store.js.map +1 -0
  24. package/dist/backend/postgres/pglite.cjs +25 -50
  25. package/dist/backend/postgres/pglite.cjs.map +1 -1
  26. package/dist/backend/postgres/pglite.d.cts +10 -9
  27. package/dist/backend/postgres/pglite.d.ts +10 -9
  28. package/dist/backend/postgres/pglite.js +20 -52
  29. package/dist/backend/postgres/pglite.js.map +1 -1
  30. package/dist/backend/sqlite/index.cjs +29 -25
  31. package/dist/backend/sqlite/index.d.cts +11 -11
  32. package/dist/backend/sqlite/index.d.ts +11 -11
  33. package/dist/backend/sqlite/index.js +17 -13
  34. package/dist/backend/sqlite/libsql.cjs +23 -19
  35. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  36. package/dist/backend/sqlite/libsql.d.cts +9 -10
  37. package/dist/backend/sqlite/libsql.d.ts +9 -10
  38. package/dist/backend/sqlite/libsql.js +19 -15
  39. package/dist/backend/sqlite/libsql.js.map +1 -1
  40. package/dist/backend/sqlite/local-store.cjs +72 -0
  41. package/dist/backend/sqlite/local-store.cjs.map +1 -0
  42. package/dist/backend/sqlite/local-store.d.cts +42 -0
  43. package/dist/backend/sqlite/local-store.d.ts +42 -0
  44. package/dist/backend/sqlite/local-store.js +67 -0
  45. package/dist/backend/sqlite/local-store.js.map +1 -0
  46. package/dist/backend/sqlite/local.cjs +28 -183
  47. package/dist/backend/sqlite/local.cjs.map +1 -1
  48. package/dist/backend/sqlite/local.d.cts +8 -81
  49. package/dist/backend/sqlite/local.d.ts +8 -81
  50. package/dist/backend/sqlite/local.js +20 -180
  51. package/dist/backend/sqlite/local.js.map +1 -1
  52. package/dist/chunk-2EBMPJBO.js +16 -0
  53. package/dist/chunk-2EBMPJBO.js.map +1 -0
  54. package/dist/{chunk-NBP2WTJW.cjs → chunk-2SL7OGPR.cjs} +2900 -1597
  55. package/dist/chunk-2SL7OGPR.cjs.map +1 -0
  56. package/dist/chunk-35S6P5ZU.js +27 -0
  57. package/dist/chunk-35S6P5ZU.js.map +1 -0
  58. package/dist/chunk-3LKL3S6X.js +50 -0
  59. package/dist/chunk-3LKL3S6X.js.map +1 -0
  60. package/dist/chunk-6G5CQ6JX.js +47 -0
  61. package/dist/chunk-6G5CQ6JX.js.map +1 -0
  62. package/dist/chunk-6XDBRDZE.js +312 -0
  63. package/dist/chunk-6XDBRDZE.js.map +1 -0
  64. package/dist/chunk-764JHTLT.cjs +15 -0
  65. package/dist/chunk-764JHTLT.cjs.map +1 -0
  66. package/dist/chunk-76HE7DJP.js +68 -0
  67. package/dist/chunk-76HE7DJP.js.map +1 -0
  68. package/dist/{chunk-VGDDG3XJ.cjs → chunk-7M3NACL3.cjs} +12 -12
  69. package/dist/{chunk-VGDDG3XJ.cjs.map → chunk-7M3NACL3.cjs.map} +1 -1
  70. package/dist/{chunk-NXQFATMF.cjs → chunk-7VLCN3JB.cjs} +153 -123
  71. package/dist/chunk-7VLCN3JB.cjs.map +1 -0
  72. package/dist/{chunk-552KNYQJ.js → chunk-A2FGSWMQ.js} +1907 -607
  73. package/dist/chunk-A2FGSWMQ.js.map +1 -0
  74. package/dist/chunk-AOL64O4Z.js +165 -0
  75. package/dist/chunk-AOL64O4Z.js.map +1 -0
  76. package/dist/{chunk-27SSDCEP.cjs → chunk-B63IFHXR.cjs} +53 -74
  77. package/dist/chunk-B63IFHXR.cjs.map +1 -0
  78. package/dist/{chunk-3XXGYU62.cjs → chunk-BKAKAVRW.cjs} +56 -53
  79. package/dist/chunk-BKAKAVRW.cjs.map +1 -0
  80. package/dist/{chunk-YTSN73ND.js → chunk-BQITNFQJ.js} +3 -3
  81. package/dist/{chunk-YTSN73ND.js.map → chunk-BQITNFQJ.js.map} +1 -1
  82. package/dist/{chunk-NUIG3BCV.cjs → chunk-CQC6VBAF.cjs} +93 -155
  83. package/dist/chunk-CQC6VBAF.cjs.map +1 -0
  84. package/dist/{chunk-6EEO3OVU.cjs → chunk-CWX77JB4.cjs} +22 -59
  85. package/dist/chunk-CWX77JB4.cjs.map +1 -0
  86. package/dist/{chunk-UGZUAYAR.js → chunk-D7PG5D5K.js} +4 -3
  87. package/dist/chunk-D7PG5D5K.js.map +1 -0
  88. package/dist/chunk-DDCIXXOO.js +9 -0
  89. package/dist/chunk-DDCIXXOO.js.map +1 -0
  90. package/dist/chunk-DDCYVIVV.cjs +44 -0
  91. package/dist/chunk-DDCYVIVV.cjs.map +1 -0
  92. package/dist/{chunk-XPCZADMT.cjs → chunk-DOVMTPKE.cjs} +89 -27
  93. package/dist/chunk-DOVMTPKE.cjs.map +1 -0
  94. package/dist/{chunk-5PNMDJ7J.js → chunk-DPNA466P.js} +14 -9
  95. package/dist/chunk-DPNA466P.js.map +1 -0
  96. package/dist/{chunk-BYPOGQWK.js → chunk-DRACN6XG.js} +6 -4
  97. package/dist/chunk-DRACN6XG.js.map +1 -0
  98. package/dist/chunk-E6TXEISH.cjs +175 -0
  99. package/dist/chunk-E6TXEISH.cjs.map +1 -0
  100. package/dist/{chunk-TKT2XHED.js → chunk-E6YZRKMM.js} +13 -12
  101. package/dist/chunk-E6YZRKMM.js.map +1 -0
  102. package/dist/{chunk-3C2RYI6L.cjs → chunk-EOJFGECD.cjs} +11 -11
  103. package/dist/chunk-EOJFGECD.cjs.map +1 -0
  104. package/dist/{chunk-XWV4JT34.js → chunk-ERZ4QPQX.js} +27 -22
  105. package/dist/chunk-ERZ4QPQX.js.map +1 -0
  106. package/dist/{chunk-DFVLCOP6.js → chunk-EZH7FNUS.js} +3 -3
  107. package/dist/{chunk-DFVLCOP6.js.map → chunk-EZH7FNUS.js.map} +1 -1
  108. package/dist/{chunk-WWFHO375.cjs → chunk-FJMPR3OH.cjs} +4 -3
  109. package/dist/chunk-FJMPR3OH.cjs.map +1 -0
  110. package/dist/chunk-FMNUSGZ4.cjs +12 -0
  111. package/dist/chunk-FMNUSGZ4.cjs.map +1 -0
  112. package/dist/{chunk-K3Q3LJY3.js → chunk-G32AO634.js} +201 -100
  113. package/dist/chunk-G32AO634.js.map +1 -0
  114. package/dist/{chunk-EXU3RASM.js → chunk-G3CSQLLT.js} +20 -474
  115. package/dist/chunk-G3CSQLLT.js.map +1 -0
  116. package/dist/chunk-GNPGGLAE.cjs +212 -0
  117. package/dist/chunk-GNPGGLAE.cjs.map +1 -0
  118. package/dist/{chunk-QARBLBXT.cjs → chunk-GUUWKPTK.cjs} +7 -7
  119. package/dist/{chunk-QARBLBXT.cjs.map → chunk-GUUWKPTK.cjs.map} +1 -1
  120. package/dist/chunk-GYA4JRP5.js +31 -0
  121. package/dist/chunk-GYA4JRP5.js.map +1 -0
  122. package/dist/chunk-I6FX7AAG.js +39 -0
  123. package/dist/chunk-I6FX7AAG.js.map +1 -0
  124. package/dist/chunk-IMQKXL4E.cjs +12 -0
  125. package/dist/{chunk-QSXTWU4U.cjs.map → chunk-IMQKXL4E.cjs.map} +1 -1
  126. package/dist/chunk-J6IJARLG.js +94 -0
  127. package/dist/chunk-J6IJARLG.js.map +1 -0
  128. package/dist/{chunk-W63OVYY4.js → chunk-K34OPSJK.js} +3 -3
  129. package/dist/{chunk-W63OVYY4.js.map → chunk-K34OPSJK.js.map} +1 -1
  130. package/dist/{chunk-TGOMW4MB.cjs → chunk-KCLZHYPU.cjs} +110 -109
  131. package/dist/chunk-KCLZHYPU.cjs.map +1 -0
  132. package/dist/{chunk-XGPUQ56G.js → chunk-KFLXWVUJ.js} +4 -38
  133. package/dist/chunk-KFLXWVUJ.js.map +1 -0
  134. package/dist/{chunk-3DS7Z4T4.cjs → chunk-LZ3TVJY4.cjs} +44 -43
  135. package/dist/chunk-LZ3TVJY4.cjs.map +1 -0
  136. package/dist/{chunk-UXLSNRYL.js → chunk-MTNEGGM2.js} +4 -4
  137. package/dist/chunk-MTNEGGM2.js.map +1 -0
  138. package/dist/{chunk-IP3CGGPA.cjs → chunk-N2V3HJFV.cjs} +92 -185
  139. package/dist/chunk-N2V3HJFV.cjs.map +1 -0
  140. package/dist/chunk-NAUA4PW5.cjs +28 -0
  141. package/dist/chunk-NAUA4PW5.cjs.map +1 -0
  142. package/dist/chunk-NMQ6C6TS.cjs +61 -0
  143. package/dist/chunk-NMQ6C6TS.cjs.map +1 -0
  144. package/dist/{chunk-2N6EOBTH.cjs → chunk-NPWACFQJ.cjs} +58 -53
  145. package/dist/chunk-NPWACFQJ.cjs.map +1 -0
  146. package/dist/{chunk-5KEQ74YU.cjs → chunk-NT6ILURI.cjs} +9 -86
  147. package/dist/chunk-NT6ILURI.cjs.map +1 -0
  148. package/dist/chunk-NU23DUSJ.cjs +192 -0
  149. package/dist/chunk-NU23DUSJ.cjs.map +1 -0
  150. package/dist/{chunk-WOJMKB3N.cjs → chunk-NWYCOFEZ.cjs} +1677 -308
  151. package/dist/chunk-NWYCOFEZ.cjs.map +1 -0
  152. package/dist/{chunk-3GH67G4Z.cjs → chunk-O5H62ZWJ.cjs} +4 -42
  153. package/dist/chunk-O5H62ZWJ.cjs.map +1 -0
  154. package/dist/{chunk-3SLPDKHQ.js → chunk-PH4IJ3V5.js} +5 -77
  155. package/dist/chunk-PH4IJ3V5.js.map +1 -0
  156. package/dist/chunk-PWXGB77L.cjs +56 -0
  157. package/dist/chunk-PWXGB77L.cjs.map +1 -0
  158. package/dist/chunk-PZHC5GCD.js +193 -0
  159. package/dist/chunk-PZHC5GCD.js.map +1 -0
  160. package/dist/chunk-QMQLUA66.js +12 -0
  161. package/dist/chunk-QMQLUA66.js.map +1 -0
  162. package/dist/{chunk-5WWVZMVX.js → chunk-QZ7A6HBM.js} +2 -2
  163. package/dist/{chunk-5WWVZMVX.js.map → chunk-QZ7A6HBM.js.map} +1 -1
  164. package/dist/{chunk-VKGKDOKR.js → chunk-RQPRCEIO.js} +1539 -206
  165. package/dist/chunk-RQPRCEIO.js.map +1 -0
  166. package/dist/chunk-RW24SAHI.cjs +74 -0
  167. package/dist/chunk-RW24SAHI.cjs.map +1 -0
  168. package/dist/{chunk-BVRDGYXQ.cjs → chunk-SAFZ6JTI.cjs} +14 -9
  169. package/dist/chunk-SAFZ6JTI.cjs.map +1 -0
  170. package/dist/{chunk-L7HQ2OSI.js → chunk-SCTZRFW5.js} +87 -166
  171. package/dist/chunk-SCTZRFW5.js.map +1 -0
  172. package/dist/{chunk-5KPNWT6X.js → chunk-SDHV2MWU.js} +24 -45
  173. package/dist/chunk-SDHV2MWU.js.map +1 -0
  174. package/dist/chunk-SVJ5GEXW.cjs +45 -0
  175. package/dist/chunk-SVJ5GEXW.cjs.map +1 -0
  176. package/dist/chunk-SVUKGWSN.cjs +102 -0
  177. package/dist/chunk-SVUKGWSN.cjs.map +1 -0
  178. package/dist/chunk-TAUGGLNQ.js +59 -0
  179. package/dist/chunk-TAUGGLNQ.js.map +1 -0
  180. package/dist/{chunk-J4IUSYFF.js → chunk-TE5ZA4VX.js} +69 -27
  181. package/dist/chunk-TE5ZA4VX.js.map +1 -0
  182. package/dist/{chunk-A42GCBGX.cjs → chunk-TRF4EBJT.cjs} +6 -4
  183. package/dist/chunk-TRF4EBJT.cjs.map +1 -0
  184. package/dist/{chunk-KQJ54OG5.js → chunk-U4JDJKPD.js} +19 -56
  185. package/dist/chunk-U4JDJKPD.js.map +1 -0
  186. package/dist/chunk-UH2USOMG.cjs +627 -0
  187. package/dist/chunk-UH2USOMG.cjs.map +1 -0
  188. package/dist/{chunk-RCVLFTCT.js → chunk-UPXDVI3T.js} +13 -12
  189. package/dist/chunk-UPXDVI3T.js.map +1 -0
  190. package/dist/{chunk-5VQM6VWP.cjs → chunk-UWG5GX6E.cjs} +2 -2
  191. package/dist/{chunk-5VQM6VWP.cjs.map → chunk-UWG5GX6E.cjs.map} +1 -1
  192. package/dist/{chunk-3RWZPJKV.js → chunk-VBH7ZXSZ.js} +21 -78
  193. package/dist/chunk-VBH7ZXSZ.js.map +1 -0
  194. package/dist/{chunk-K5UBVGJN.js → chunk-VDYA2HMS.js} +6 -6
  195. package/dist/{chunk-K5UBVGJN.js.map → chunk-VDYA2HMS.js.map} +1 -1
  196. package/dist/chunk-X4PVHAZ6.cjs +83 -0
  197. package/dist/chunk-X4PVHAZ6.cjs.map +1 -0
  198. package/dist/{chunk-UYQMBBWJ.js → chunk-X6CNEA32.js} +23 -20
  199. package/dist/chunk-X6CNEA32.js.map +1 -0
  200. package/dist/chunk-X6RDQ5NB.cjs +335 -0
  201. package/dist/chunk-X6RDQ5NB.cjs.map +1 -0
  202. package/dist/chunk-XD6X7O5R.js +184 -0
  203. package/dist/chunk-XD6X7O5R.js.map +1 -0
  204. package/dist/{chunk-DIQ3AV5W.cjs → chunk-XFY73JWD.cjs} +324 -224
  205. package/dist/chunk-XFY73JWD.cjs.map +1 -0
  206. package/dist/{chunk-DEFQM7JU.cjs → chunk-XRU7V7FF.cjs} +7 -7
  207. package/dist/{chunk-DEFQM7JU.cjs.map → chunk-XRU7V7FF.cjs.map} +1 -1
  208. package/dist/{chunk-TPF25IG6.js → chunk-XZA3Y4YH.js} +3 -3
  209. package/dist/{chunk-TPF25IG6.js.map → chunk-XZA3Y4YH.js.map} +1 -1
  210. package/dist/chunk-Y7M44XEK.js +462 -0
  211. package/dist/chunk-Y7M44XEK.js.map +1 -0
  212. package/dist/{chunk-RRSNR3TP.js → chunk-YIRLBUNN.js} +3 -3
  213. package/dist/{chunk-RRSNR3TP.js.map → chunk-YIRLBUNN.js.map} +1 -1
  214. package/dist/{chunk-IXGYRP2P.js → chunk-YJDSPA5E.js} +79 -49
  215. package/dist/chunk-YJDSPA5E.js.map +1 -0
  216. package/dist/{chunk-JBNOGRKW.cjs → chunk-YLINFV7Z.cjs} +157 -115
  217. package/dist/chunk-YLINFV7Z.cjs.map +1 -0
  218. package/dist/{chunk-QERAIDRJ.js → chunk-Z2PPIVOO.js} +82 -22
  219. package/dist/chunk-Z2PPIVOO.js.map +1 -0
  220. package/dist/chunk-Z5QHVL5U.cjs +12 -0
  221. package/dist/chunk-Z5QHVL5U.cjs.map +1 -0
  222. package/dist/chunk-ZDH3DX3C.cjs +30 -0
  223. package/dist/chunk-ZDH3DX3C.cjs.map +1 -0
  224. package/dist/chunk-ZE6NVENI.js +77 -0
  225. package/dist/chunk-ZE6NVENI.js.map +1 -0
  226. package/dist/chunk-ZHX4KEM7.cjs +49 -0
  227. package/dist/chunk-ZHX4KEM7.cjs.map +1 -0
  228. package/dist/chunk-ZKZAIX42.cjs +479 -0
  229. package/dist/chunk-ZKZAIX42.cjs.map +1 -0
  230. package/dist/{chunk-TEDRJXOG.cjs → chunk-ZY4GXIVN.cjs} +5 -5
  231. package/dist/{chunk-TEDRJXOG.cjs.map → chunk-ZY4GXIVN.cjs.map} +1 -1
  232. package/dist/core/index.cjs +117 -0
  233. package/dist/core/index.cjs.map +1 -0
  234. package/dist/core/index.d.cts +225 -0
  235. package/dist/core/index.d.ts +225 -0
  236. package/dist/core/index.js +12 -0
  237. package/dist/core/index.js.map +1 -0
  238. package/dist/{ddl-CS0KUVwB.d.ts → ddl-Dx3Z0_WC.d.ts} +3 -3
  239. package/dist/{ddl-BD-ZfKeX.d.cts → ddl-J6sDyABg.d.cts} +3 -3
  240. package/dist/define-graph-CzEvA_8F.d.cts +174 -0
  241. package/dist/define-graph-DRo9xpYN.d.ts +174 -0
  242. package/dist/{extension-types-BM2ACfYO.d.cts → extension-types-BLEVH4SG.d.cts} +1 -1
  243. package/dist/{extension-types-BM2ACfYO.d.ts → extension-types-BLEVH4SG.d.ts} +1 -1
  244. package/dist/graph-extension/index.cjs +21 -19
  245. package/dist/graph-extension/index.d.cts +4 -4
  246. package/dist/graph-extension/index.d.ts +4 -4
  247. package/dist/graph-extension/index.js +6 -4
  248. package/dist/graph-merge/index.cjs +265 -214
  249. package/dist/graph-merge/index.cjs.map +1 -1
  250. package/dist/graph-merge/index.d.cts +8 -89
  251. package/dist/graph-merge/index.d.ts +8 -89
  252. package/dist/graph-merge/index.js +141 -90
  253. package/dist/graph-merge/index.js.map +1 -1
  254. package/dist/{index-BeacbPoe.d.ts → index-BD_3TCgh.d.ts} +6 -4
  255. package/dist/{index-BPM59vsg.d.cts → index-BihFPsPu.d.cts} +6 -4
  256. package/dist/{fulltext-strategy-C27vXaeB.d.cts → index-Bq7vSPHy.d.ts} +3195 -2646
  257. package/dist/{fulltext-strategy-DebsMrqg.d.ts → index-CrFL_ENI.d.cts} +3195 -2646
  258. package/dist/index.cjs +326 -315
  259. package/dist/index.cjs.map +1 -1
  260. package/dist/index.d.cts +59 -240
  261. package/dist/index.d.ts +59 -240
  262. package/dist/index.js +46 -79
  263. package/dist/index.js.map +1 -1
  264. package/dist/indexes/index.cjs +26 -38
  265. package/dist/indexes/index.d.cts +6 -41
  266. package/dist/indexes/index.d.ts +6 -41
  267. package/dist/indexes/index.js +14 -10
  268. package/dist/interchange/index.cjs +48 -39
  269. package/dist/interchange/index.cjs.map +1 -1
  270. package/dist/interchange/index.d.cts +7 -8
  271. package/dist/interchange/index.d.ts +7 -8
  272. package/dist/interchange/index.js +23 -14
  273. package/dist/interchange/index.js.map +1 -1
  274. package/dist/local-options-CZ1BnIoF.d.cts +29 -0
  275. package/dist/local-options-CZ1BnIoF.d.ts +29 -0
  276. package/dist/{manager-D00_NXvT.d.ts → manager-CASfhmzV.d.ts} +4 -173
  277. package/dist/{manager-nU1vTJLy.d.cts → manager-nCEJiYBb.d.cts} +4 -173
  278. package/dist/{materialize-indexes-zK2J_flP.d.ts → materialize-indexes-D4iei4Kp.d.ts} +1 -1
  279. package/dist/{materialize-indexes-CuR3gAZb.d.cts → materialize-indexes-ExQ6OrAh.d.cts} +1 -1
  280. package/dist/{postgres-IaBA4RgE.d.ts → postgres-Cl1ZAN1G.d.ts} +1 -1
  281. package/dist/{postgres-YrYmPlaU.d.cts → postgres-DMgIKQU-.d.cts} +1 -1
  282. package/dist/postgres-execution-fKW0qRiN.d.cts +14 -0
  283. package/dist/postgres-execution-fKW0qRiN.d.ts +14 -0
  284. package/dist/profiler/index.cjs +9 -8
  285. package/dist/profiler/index.cjs.map +1 -1
  286. package/dist/profiler/index.d.cts +9 -17
  287. package/dist/profiler/index.d.ts +9 -17
  288. package/dist/profiler/index.js +8 -7
  289. package/dist/profiler/index.js.map +1 -1
  290. package/dist/provenance/index.cjs +61 -55
  291. package/dist/provenance/index.cjs.map +1 -1
  292. package/dist/provenance/index.d.cts +7 -8
  293. package/dist/provenance/index.d.ts +7 -8
  294. package/dist/provenance/index.js +34 -28
  295. package/dist/provenance/index.js.map +1 -1
  296. package/dist/schema/index.cjs +46 -37
  297. package/dist/schema/index.cjs.map +1 -1
  298. package/dist/schema/index.d.cts +8 -10
  299. package/dist/schema/index.d.ts +8 -10
  300. package/dist/schema/index.js +22 -13
  301. package/dist/schema/index.js.map +1 -1
  302. package/dist/{sqlite-BUOHPx7p.d.ts → sqlite-BDkW39aa.d.cts} +1 -1
  303. package/dist/{sqlite-Pp8O19WE.d.cts → sqlite-CYfhvESj.d.ts} +1 -1
  304. package/dist/sqlite-execution-DwbE2a9y.d.cts +32 -0
  305. package/dist/sqlite-execution-DwbE2a9y.d.ts +32 -0
  306. package/dist/{store-view-X96Rd00T.d.cts → store-view-BoHqdHjB.d.cts} +394 -1393
  307. package/dist/{store-view-ANL6mTph.d.ts → store-view-Ctq-3OHy.d.ts} +394 -1393
  308. package/dist/temporal-BC_NQV5Y.d.cts +281 -0
  309. package/dist/temporal-DqtOEo_B.d.ts +281 -0
  310. package/dist/{types-r-Zyq2Hz.d.cts → types-COq3-vMC.d.cts} +2 -2
  311. package/dist/{types-wsvuBgPK.d.ts → types-CUevi_D1.d.ts} +2 -2
  312. package/dist/{where-CJOpJj3a.d.ts → where-BdE_cYtx.d.ts} +5 -5
  313. package/dist/{where-K3uBP33l.d.cts → where-C92TXCzT.d.cts} +5 -5
  314. package/package.json +37 -6
  315. package/dist/chunk-27SSDCEP.cjs.map +0 -1
  316. package/dist/chunk-2N6EOBTH.cjs.map +0 -1
  317. package/dist/chunk-3C2RYI6L.cjs.map +0 -1
  318. package/dist/chunk-3DS7Z4T4.cjs.map +0 -1
  319. package/dist/chunk-3GH67G4Z.cjs.map +0 -1
  320. package/dist/chunk-3RWZPJKV.js.map +0 -1
  321. package/dist/chunk-3SLPDKHQ.js.map +0 -1
  322. package/dist/chunk-3XXGYU62.cjs.map +0 -1
  323. package/dist/chunk-44TA22QT.js +0 -1478
  324. package/dist/chunk-44TA22QT.js.map +0 -1
  325. package/dist/chunk-552KNYQJ.js.map +0 -1
  326. package/dist/chunk-5KEQ74YU.cjs.map +0 -1
  327. package/dist/chunk-5KPNWT6X.js.map +0 -1
  328. package/dist/chunk-5PNMDJ7J.js.map +0 -1
  329. package/dist/chunk-6EEO3OVU.cjs.map +0 -1
  330. package/dist/chunk-7YSP4V4R.cjs +0 -69
  331. package/dist/chunk-7YSP4V4R.cjs.map +0 -1
  332. package/dist/chunk-A42GCBGX.cjs.map +0 -1
  333. package/dist/chunk-BVRDGYXQ.cjs.map +0 -1
  334. package/dist/chunk-BYPOGQWK.js.map +0 -1
  335. package/dist/chunk-CUHM5CWJ.cjs +0 -12
  336. package/dist/chunk-CUHM5CWJ.cjs.map +0 -1
  337. package/dist/chunk-DIQ3AV5W.cjs.map +0 -1
  338. package/dist/chunk-EXU3RASM.js.map +0 -1
  339. package/dist/chunk-IP3CGGPA.cjs.map +0 -1
  340. package/dist/chunk-IPSVVTWT.cjs +0 -1540
  341. package/dist/chunk-IPSVVTWT.cjs.map +0 -1
  342. package/dist/chunk-IXGYRP2P.js.map +0 -1
  343. package/dist/chunk-J4IUSYFF.js.map +0 -1
  344. package/dist/chunk-JBNOGRKW.cjs.map +0 -1
  345. package/dist/chunk-K3Q3LJY3.js.map +0 -1
  346. package/dist/chunk-KQJ54OG5.js.map +0 -1
  347. package/dist/chunk-L7HQ2OSI.js.map +0 -1
  348. package/dist/chunk-M6VES7V6.js +0 -239
  349. package/dist/chunk-M6VES7V6.js.map +0 -1
  350. package/dist/chunk-NBP2WTJW.cjs.map +0 -1
  351. package/dist/chunk-NUIG3BCV.cjs.map +0 -1
  352. package/dist/chunk-NXQFATMF.cjs.map +0 -1
  353. package/dist/chunk-OHMP6N2J.js +0 -47
  354. package/dist/chunk-OHMP6N2J.js.map +0 -1
  355. package/dist/chunk-QERAIDRJ.js.map +0 -1
  356. package/dist/chunk-QSXTWU4U.cjs +0 -12
  357. package/dist/chunk-RCVLFTCT.js.map +0 -1
  358. package/dist/chunk-TGOMW4MB.cjs.map +0 -1
  359. package/dist/chunk-TKT2XHED.js.map +0 -1
  360. package/dist/chunk-UGZUAYAR.js.map +0 -1
  361. package/dist/chunk-UXLSNRYL.js.map +0 -1
  362. package/dist/chunk-UYQMBBWJ.js.map +0 -1
  363. package/dist/chunk-VKGKDOKR.js.map +0 -1
  364. package/dist/chunk-VL2V6PEN.cjs +0 -261
  365. package/dist/chunk-VL2V6PEN.cjs.map +0 -1
  366. package/dist/chunk-WOJMKB3N.cjs.map +0 -1
  367. package/dist/chunk-WWFHO375.cjs.map +0 -1
  368. package/dist/chunk-XGPUQ56G.js.map +0 -1
  369. package/dist/chunk-XGU7DZDA.cjs +0 -1095
  370. package/dist/chunk-XGU7DZDA.cjs.map +0 -1
  371. package/dist/chunk-XPCZADMT.cjs.map +0 -1
  372. package/dist/chunk-XWV4JT34.js.map +0 -1
@@ -1,1540 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk3GH67G4Z_cjs = require('./chunk-3GH67G4Z.cjs');
4
- var chunk7YSP4V4R_cjs = require('./chunk-7YSP4V4R.cjs');
5
- var chunkSJDMVITW_cjs = require('./chunk-SJDMVITW.cjs');
6
- var chunkBVRDGYXQ_cjs = require('./chunk-BVRDGYXQ.cjs');
7
- var chunkTDXIBCGY_cjs = require('./chunk-TDXIBCGY.cjs');
8
- var drizzleOrm = require('drizzle-orm');
9
-
10
- // src/backend/types.ts
11
- function normalizeGraphAnalyticsCapabilities(capabilities) {
12
- if (capabilities.graphAnalytics?.supported !== true || capabilities.transactions && capabilities.windowFunctions && capabilities.returning !== false) {
13
- return capabilities;
14
- }
15
- return {
16
- ...capabilities,
17
- graphAnalytics: { ...capabilities.graphAnalytics, supported: false }
18
- };
19
- }
20
- function rowPropsToObject(props) {
21
- return typeof props === "string" ? JSON.parse(props) : props;
22
- }
23
- function rowPropsToJsonText(props) {
24
- return typeof props === "string" ? props : JSON.stringify(props);
25
- }
26
- function isLiveNodeRow(row) {
27
- return row.deleted_at === void 0;
28
- }
29
- function isTombstonedNodeRow(row) {
30
- return row.deleted_at !== void 0;
31
- }
32
- var INTERNAL_TEMPORARY_WRITES = /* @__PURE__ */ Symbol(
33
- "typegraph.internalTemporaryWrites"
34
- );
35
- function createBackendOverlay(target, overlay) {
36
- const boundTargetMethods = /* @__PURE__ */ new Map();
37
- function hasOverlayProperty(property) {
38
- return Object.hasOwn(overlay, property);
39
- }
40
- function targetValue(targetObject, property) {
41
- const value = Reflect.get(targetObject, property, targetObject);
42
- if (typeof value !== "function") return value;
43
- const cached = boundTargetMethods.get(property);
44
- if (cached !== void 0) return cached;
45
- const method = value;
46
- const bound = method.bind(targetObject);
47
- boundTargetMethods.set(property, bound);
48
- return bound;
49
- }
50
- return new Proxy(target, {
51
- get(targetObject, property) {
52
- if (hasOverlayProperty(property)) {
53
- return Reflect.get(overlay, property, overlay);
54
- }
55
- return targetValue(targetObject, property);
56
- },
57
- has(targetObject, property) {
58
- return hasOverlayProperty(property) || Reflect.has(targetObject, property);
59
- },
60
- ownKeys(targetObject) {
61
- return [
62
- .../* @__PURE__ */ new Set([
63
- ...Reflect.ownKeys(targetObject),
64
- ...Reflect.ownKeys(overlay)
65
- ])
66
- ];
67
- },
68
- getOwnPropertyDescriptor(targetObject, property) {
69
- if (hasOverlayProperty(property)) {
70
- const descriptor = Reflect.getOwnPropertyDescriptor(overlay, property);
71
- if (descriptor === void 0) return;
72
- return { ...descriptor, configurable: true };
73
- }
74
- return Reflect.getOwnPropertyDescriptor(targetObject, property);
75
- },
76
- set(targetObject, property, value) {
77
- if (hasOverlayProperty(property)) {
78
- return Reflect.set(overlay, property, value, overlay);
79
- }
80
- return Reflect.set(targetObject, property, value, targetObject);
81
- },
82
- defineProperty(targetObject, property, attributes) {
83
- if (hasOverlayProperty(property)) {
84
- return Reflect.defineProperty(overlay, property, attributes);
85
- }
86
- return Reflect.defineProperty(targetObject, property, attributes);
87
- },
88
- deleteProperty(targetObject, property) {
89
- if (hasOverlayProperty(property)) {
90
- return Reflect.deleteProperty(overlay, property);
91
- }
92
- return Reflect.deleteProperty(targetObject, property);
93
- }
94
- });
95
- }
96
- function wrapWithManagedClose(backend, teardown) {
97
- let isClosed = false;
98
- return createBackendOverlay(backend, {
99
- async close() {
100
- if (isClosed) return;
101
- isClosed = true;
102
- await backend.close();
103
- await teardown();
104
- }
105
- });
106
- }
107
- async function runOptionallyInTransaction(backend, fn, fallback) {
108
- if ("transaction" in backend && backend.capabilities.transactions) {
109
- return backend.transaction((tx) => fn(tx));
110
- }
111
- return fn(fallback ?? backend);
112
- }
113
- var SQLITE_MAX_BIND_PARAMETERS = 999;
114
- var MODERN_SQLITE_MAX_BIND_PARAMETERS = 32766;
115
- var D1_MAX_BIND_PARAMETERS = 100;
116
- var DURABLE_OBJECT_MAX_BIND_PARAMETERS = 100;
117
- var POSTGRES_MAX_BIND_PARAMETERS = 65535;
118
- var SQLITE_CAPABILITIES = {
119
- transactions: true,
120
- // SQLite supports transactions
121
- windowFunctions: true,
122
- // SQLite has supported window functions since 3.25.0
123
- returning: true,
124
- // SQLite has supported RETURNING since 3.35.0
125
- maxBindParameters: SQLITE_MAX_BIND_PARAMETERS,
126
- // Generic SQLite builds do not guarantee ENABLE_MATH_FUNCTIONS. The local
127
- // better-sqlite3 factory overrides this flag for its bundled build contract.
128
- graphAnalytics: { supported: true, mathFunctions: false }
129
- };
130
- var POSTGRES_CAPABILITIES = {
131
- transactions: true,
132
- // PostgreSQL supports transactions
133
- windowFunctions: true,
134
- // PostgreSQL supports ROW_NUMBER() and related windows
135
- returning: true,
136
- // PostgreSQL has supported RETURNING since 8.2
137
- maxBindParameters: POSTGRES_MAX_BIND_PARAMETERS,
138
- graphAnalytics: { supported: true, mathFunctions: true }
139
- };
140
-
141
- // src/query/sql-intent.ts
142
- function asCompiledRowsSql(query) {
143
- return query;
144
- }
145
- function asCompiledSelectSql(query) {
146
- return asCompiledRowsSql(query);
147
- }
148
- function asCompiledStatementSql(query) {
149
- return query;
150
- }
151
- function asCompiledTemporaryStatementSql(query) {
152
- return query;
153
- }
154
- var forceCustomPlanQueries = /* @__PURE__ */ new WeakSet();
155
- function markForceCustomPlan(query) {
156
- forceCustomPlanQueries.add(query);
157
- }
158
- function shouldForceCustomPlan(query) {
159
- return forceCustomPlanQueries.has(query);
160
- }
161
- var annIndexScanQueries = /* @__PURE__ */ new WeakMap();
162
- function markAnnIndexScan(query, indexTypes) {
163
- annIndexScanQueries.set(query, indexTypes);
164
- }
165
- function annIndexScanTypes(query) {
166
- return annIndexScanQueries.get(query);
167
- }
168
- function isRawExecutable(query) {
169
- return !shouldForceCustomPlan(query) && annIndexScanTypes(query) === void 0;
170
- }
171
- var pinnedReadInstant;
172
- function withPinnedReadInstant(emit) {
173
- if (pinnedReadInstant !== void 0) return emit();
174
- pinnedReadInstant = chunk3GH67G4Z_cjs.nowIso();
175
- try {
176
- return emit();
177
- } finally {
178
- pinnedReadInstant = void 0;
179
- }
180
- }
181
- function currentReadInstant() {
182
- return drizzleOrm.sql`${pinnedReadInstant ?? chunk3GH67G4Z_cjs.nowIso()}`;
183
- }
184
- var CURRENT_READ_INSTANT_PLACEHOLDER = "__typegraph_current_read_instant__";
185
- function currentReadInstantPlaceholder() {
186
- return drizzleOrm.sql`${drizzleOrm.sql.placeholder(CURRENT_READ_INSTANT_PLACEHOLDER)}`;
187
- }
188
- function currentReadInstantFor(mode) {
189
- return mode === "placeholder" ? currentReadInstantPlaceholder() : currentReadInstant();
190
- }
191
- function compileTemporalFilter(options) {
192
- const { mode, asOf, tableAlias, currentTimestamp, recordedAsOf } = options;
193
- const prefix = tableAlias ? drizzleOrm.sql.raw(`${tableAlias}.`) : drizzleOrm.sql.raw("");
194
- const deletedAt = drizzleOrm.sql`${prefix}deleted_at`;
195
- const validFrom = drizzleOrm.sql`${prefix}valid_from`;
196
- const validTo = drizzleOrm.sql`${prefix}valid_to`;
197
- const validFilter = (() => {
198
- switch (mode) {
199
- case "current": {
200
- const now = recordedAsOf === void 0 ? currentTimestamp ?? currentReadInstant() : drizzleOrm.sql`${recordedAsOf}`;
201
- return drizzleOrm.sql`${deletedAt} IS NULL AND (${validFrom} IS NULL OR ${validFrom} <= ${now}) AND (${validTo} IS NULL OR ${validTo} > ${now})`;
202
- }
203
- case "asOf": {
204
- if (asOf === void 0) {
205
- throw new Error(
206
- `asOf timestamp is required for temporal mode "asOf"`
207
- );
208
- }
209
- const timestamp = asOf;
210
- return drizzleOrm.sql`${deletedAt} IS NULL AND (${validFrom} IS NULL OR ${validFrom} <= ${timestamp}) AND (${validTo} IS NULL OR ${validTo} > ${timestamp})`;
211
- }
212
- case "includeEnded": {
213
- return drizzleOrm.sql`${deletedAt} IS NULL`;
214
- }
215
- case "includeTombstones": {
216
- return drizzleOrm.sql.raw("1=1");
217
- }
218
- }
219
- })();
220
- if (recordedAsOf === void 0) return validFilter;
221
- const recordedFrom = drizzleOrm.sql`${prefix}recorded_from`;
222
- const recordedTo = drizzleOrm.sql`${prefix}recorded_to`;
223
- return drizzleOrm.sql`(${validFilter}) AND ${recordedFrom} <= ${recordedAsOf} AND ${recordedAsOf} < ${recordedTo}`;
224
- }
225
- function extractTemporalOptions(ast, tableAlias) {
226
- return {
227
- mode: ast.temporalMode.mode,
228
- asOf: ast.temporalMode.asOf,
229
- recordedAsOf: ast.recordedAsOf,
230
- tableAlias
231
- };
232
- }
233
-
234
- // src/query/subquery-utils.ts
235
- function normalizeValueType(valueType) {
236
- if (valueType === void 0 || valueType === "unknown") {
237
- return void 0;
238
- }
239
- return valueType;
240
- }
241
- function isUnsupportedInSubqueryValueType(valueType) {
242
- const normalized = normalizeValueType(valueType);
243
- return normalized === "array" || normalized === "object" || normalized === "embedding";
244
- }
245
- function isInSubqueryTypeCompatible(left, right) {
246
- const normalizedLeft = normalizeValueType(left);
247
- const normalizedRight = normalizeValueType(right);
248
- if (normalizedLeft === void 0 || normalizedRight === void 0) {
249
- return true;
250
- }
251
- return normalizedLeft === normalizedRight;
252
- }
253
- function getAggregateValueType(aggregate) {
254
- switch (aggregate.function) {
255
- case "count":
256
- case "countDistinct":
257
- case "sum":
258
- case "avg": {
259
- return "number";
260
- }
261
- case "min":
262
- case "max": {
263
- return normalizeValueType(aggregate.field.valueType);
264
- }
265
- }
266
- }
267
- function getProjectedValueTypes(subquery) {
268
- if (subquery.selectiveFields && subquery.selectiveFields.length > 0) {
269
- return subquery.selectiveFields.map(
270
- (field) => normalizeValueType(field.valueType)
271
- );
272
- }
273
- return subquery.projection.fields.map((field) => {
274
- if (field.source.__type === "aggregate") {
275
- return getAggregateValueType(field.source);
276
- }
277
- return normalizeValueType(field.source.valueType);
278
- });
279
- }
280
- function getSubqueryColumnCount(subquery) {
281
- return getProjectedValueTypes(subquery).length;
282
- }
283
- function getSingleSubqueryColumnValueType(subquery) {
284
- const valueTypes = getProjectedValueTypes(subquery);
285
- if (valueTypes.length !== 1) {
286
- return void 0;
287
- }
288
- return valueTypes[0];
289
- }
290
-
291
- // src/query/predicates.ts
292
- function predicate(expr) {
293
- return {
294
- __expr: expr,
295
- and: (other) => predicate({
296
- __type: "and",
297
- predicates: [expr, other.__expr]
298
- }),
299
- or: (other) => predicate({
300
- __type: "or",
301
- predicates: [expr, other.__expr]
302
- }),
303
- not: () => predicate({
304
- __type: "not",
305
- predicate: expr
306
- })
307
- };
308
- }
309
- function param(name) {
310
- if (name === CURRENT_READ_INSTANT_PLACEHOLDER) {
311
- throw new chunkBVRDGYXQ_cjs.ConfigurationError(
312
- `Parameter name "${name}" is reserved for internal use`,
313
- { parameterName: name }
314
- );
315
- }
316
- return { __type: "parameter", name };
317
- }
318
- function isParameterRef(value) {
319
- if (typeof value !== "object" || value === null) return false;
320
- return value.__type === "parameter";
321
- }
322
- function fieldRef(alias, path, options) {
323
- return {
324
- __type: "field_ref",
325
- alias,
326
- path,
327
- ...options?.jsonPointer !== void 0 && {
328
- jsonPointer: options.jsonPointer
329
- },
330
- ...options?.valueType !== void 0 && { valueType: options.valueType },
331
- ...options?.elementType !== void 0 && {
332
- elementType: options.elementType
333
- }
334
- };
335
- }
336
- function coerceLiteralValue(value) {
337
- if (value instanceof Date) {
338
- return value;
339
- }
340
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
341
- return value;
342
- }
343
- throw new Error(`Unsupported literal value type: ${typeof value}`);
344
- }
345
- function inferLiteralValueType(value) {
346
- if (typeof value === "string") {
347
- return "string";
348
- }
349
- if (typeof value === "number") {
350
- return "number";
351
- }
352
- return "boolean";
353
- }
354
- function literal(value) {
355
- if (value instanceof Date) {
356
- return { __type: "literal", value: value.toISOString(), valueType: "date" };
357
- }
358
- const valueType = inferLiteralValueType(value);
359
- return {
360
- __type: "literal",
361
- value,
362
- valueType
363
- };
364
- }
365
- function comparison(op, field, value) {
366
- if (isParameterRef(value)) {
367
- const expr2 = {
368
- __type: "comparison",
369
- op,
370
- left: field,
371
- right: value
372
- };
373
- return predicate(expr2);
374
- }
375
- const coercedValue = coerceLiteralValue(value);
376
- const expr = {
377
- __type: "comparison",
378
- op,
379
- left: field,
380
- right: literal(coercedValue)
381
- };
382
- return predicate(expr);
383
- }
384
- function inComparison(op, field, values) {
385
- const literals = values.map((value) => literal(coerceLiteralValue(value)));
386
- const expr = {
387
- __type: "comparison",
388
- op,
389
- left: field,
390
- right: literals
391
- };
392
- return predicate(expr);
393
- }
394
- function stringOp(op, field, pattern) {
395
- if (isParameterRef(pattern)) {
396
- const expr2 = {
397
- __type: "string_op",
398
- op,
399
- field,
400
- pattern
401
- };
402
- return predicate(expr2);
403
- }
404
- const expr = {
405
- __type: "string_op",
406
- op,
407
- field,
408
- pattern
409
- };
410
- return predicate(expr);
411
- }
412
- function nullCheck(op, field) {
413
- const expr = {
414
- __type: "null_check",
415
- op,
416
- field
417
- };
418
- return predicate(expr);
419
- }
420
- function between(field, lower, upper) {
421
- const expr = {
422
- __type: "between",
423
- field,
424
- lower: isParameterRef(lower) ? lower : literal(lower),
425
- upper: isParameterRef(upper) ? upper : literal(upper)
426
- };
427
- return predicate(expr);
428
- }
429
- function baseFieldBuilder(field) {
430
- return {
431
- eq: (value) => comparison("eq", field, value),
432
- neq: (value) => comparison("neq", field, value),
433
- isNull: () => nullCheck("isNull", field),
434
- isNotNull: () => nullCheck("isNotNull", field),
435
- in: (values) => inComparison("in", field, values),
436
- notIn: (values) => inComparison("notIn", field, values)
437
- };
438
- }
439
- function stringField(field) {
440
- return {
441
- ...baseFieldBuilder(field),
442
- gt: (value) => comparison("gt", field, value),
443
- gte: (value) => comparison("gte", field, value),
444
- lt: (value) => comparison("lt", field, value),
445
- lte: (value) => comparison("lte", field, value),
446
- contains: (pattern) => stringOp("contains", field, pattern),
447
- startsWith: (pattern) => stringOp("startsWith", field, pattern),
448
- endsWith: (pattern) => stringOp("endsWith", field, pattern),
449
- like: (pattern) => stringOp("like", field, pattern),
450
- ilike: (pattern) => stringOp("ilike", field, pattern)
451
- };
452
- }
453
- var DEFAULT_FULLTEXT_MATCH_K = 50;
454
- function createFulltextAccessor(alias, hasSearchableField) {
455
- return {
456
- matches: (query, k, options) => {
457
- if (!hasSearchableField()) {
458
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
459
- `Cannot call .$fulltext.matches() on alias "${alias}" \u2014 its node kind has no fields declared with searchable(). Add at least one: \`title: searchable({ language: "english" })\`.`
460
- );
461
- }
462
- return fulltextMatch(
463
- fieldRef(alias, ["$fulltext"]),
464
- query,
465
- k ?? DEFAULT_FULLTEXT_MATCH_K,
466
- options
467
- );
468
- }
469
- };
470
- }
471
- function fulltextMatch(field, query, limit, options) {
472
- if (!Number.isFinite(limit) || limit <= 0) {
473
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
474
- `matches() limit must be a positive finite number, got ${String(limit)}`
475
- );
476
- }
477
- const expr = {
478
- __type: "fulltext_match",
479
- field,
480
- query,
481
- mode: options?.mode ?? "websearch",
482
- limit,
483
- ...options?.language === void 0 ? {} : { language: options.language },
484
- ...options?.minScore === void 0 ? {} : { minScore: options.minScore }
485
- };
486
- return predicate(expr);
487
- }
488
- function numberField(field) {
489
- return {
490
- ...baseFieldBuilder(field),
491
- gt: (value) => comparison("gt", field, value),
492
- gte: (value) => comparison("gte", field, value),
493
- lt: (value) => comparison("lt", field, value),
494
- lte: (value) => comparison("lte", field, value),
495
- between: (lower, upper) => between(field, lower, upper)
496
- };
497
- }
498
- function dateField(field) {
499
- return {
500
- ...baseFieldBuilder(field),
501
- gt: (value) => comparison("gt", field, value),
502
- gte: (value) => comparison("gte", field, value),
503
- lt: (value) => comparison("lt", field, value),
504
- lte: (value) => comparison("lte", field, value),
505
- between: (lower, upper) => between(field, lower, upper)
506
- };
507
- }
508
- function baseField(field) {
509
- return baseFieldBuilder(field);
510
- }
511
- function arrayOp(op, field, values, length) {
512
- const expr = {
513
- __type: "array_op",
514
- op,
515
- field,
516
- ...values !== void 0 && {
517
- values: values.map((value) => literal(coerceLiteralValue(value)))
518
- },
519
- ...length !== void 0 && { length }
520
- };
521
- return predicate(expr);
522
- }
523
- function arrayField(field) {
524
- return {
525
- ...baseFieldBuilder(field),
526
- contains: (value) => arrayOp("contains", field, [value]),
527
- containsAll: (values) => arrayOp("containsAll", field, values),
528
- containsAny: (values) => arrayOp("containsAny", field, values),
529
- isEmpty: () => arrayOp("isEmpty", field),
530
- isNotEmpty: () => arrayOp("isNotEmpty", field),
531
- lengthEq: (length) => arrayOp("lengthEq", field, void 0, length),
532
- lengthGt: (length) => arrayOp("lengthGt", field, void 0, length),
533
- lengthGte: (length) => arrayOp("lengthGte", field, void 0, length),
534
- lengthLt: (length) => arrayOp("lengthLt", field, void 0, length),
535
- lengthLte: (length) => arrayOp("lengthLte", field, void 0, length)
536
- };
537
- }
538
- function vectorSimilarity(field, queryEmbedding, limit, options) {
539
- const expr = {
540
- __type: "vector_similarity",
541
- field,
542
- queryEmbedding,
543
- // Leave metric unset when the caller didn't specify one, so the compiler
544
- // resolves the field's declared metric per kind. Defaulting to "cosine"
545
- // here would mis-rank l2/inner_product fields and bypass their ANN index.
546
- ...options?.metric !== void 0 && { metric: options.metric },
547
- limit,
548
- ...options?.minScore !== void 0 && { minScore: options.minScore },
549
- ...options?.approximate !== void 0 && {
550
- approximate: options.approximate
551
- }
552
- };
553
- return predicate(expr);
554
- }
555
- function embeddingField(field) {
556
- return {
557
- ...baseFieldBuilder(field),
558
- similarTo: (queryEmbedding, k, options) => vectorSimilarity(field, queryEmbedding, k, options)
559
- };
560
- }
561
- function buildFieldBuilderForTypeInfo(field, typeInfo) {
562
- if (!typeInfo) {
563
- return baseField(field);
564
- }
565
- switch (typeInfo.valueType) {
566
- case "string": {
567
- return stringField(field);
568
- }
569
- case "number": {
570
- return numberField(field);
571
- }
572
- case "boolean": {
573
- return baseField(field);
574
- }
575
- case "date": {
576
- return dateField(field);
577
- }
578
- case "array": {
579
- return arrayField(field);
580
- }
581
- case "object": {
582
- return objectField(field, { typeInfo });
583
- }
584
- case "embedding": {
585
- return embeddingField(field);
586
- }
587
- case "unknown": {
588
- return baseField(field);
589
- }
590
- }
591
- }
592
- function resolvePointerTypeInfo(typeInfo, pointer) {
593
- return chunkSJDMVITW_cjs.resolveFieldTypeInfoAtJsonPointer(typeInfo, pointer);
594
- }
595
- function objectOp(op, field, pointer, value, options) {
596
- const expr = {
597
- __type: "object_op",
598
- op,
599
- field,
600
- pointer,
601
- ...value !== void 0 && {
602
- value: literal(coerceLiteralValue(value))
603
- },
604
- ...options?.valueType !== void 0 && { valueType: options.valueType },
605
- ...options?.elementType !== void 0 && {
606
- elementType: options.elementType
607
- }
608
- };
609
- return predicate(expr);
610
- }
611
- function objectField(field, options) {
612
- const basePointer = field.jsonPointer;
613
- return {
614
- ...baseFieldBuilder(field),
615
- get: (key) => {
616
- const pointer = chunkTDXIBCGY_cjs.jsonPointer([key]);
617
- const nestedPointer = chunkTDXIBCGY_cjs.joinJsonPointers(basePointer, pointer);
618
- const resolved = resolvePointerTypeInfo(options?.typeInfo, pointer);
619
- const nestedRef = fieldRef(field.alias, field.path, {
620
- jsonPointer: nestedPointer,
621
- ...resolved?.valueType !== void 0 && {
622
- valueType: resolved.valueType
623
- },
624
- ...resolved?.elementType !== void 0 && {
625
- elementType: resolved.elementType
626
- }
627
- });
628
- return buildFieldBuilderForTypeInfo(nestedRef, resolved);
629
- },
630
- hasKey: (key) => {
631
- const pointer = chunkTDXIBCGY_cjs.jsonPointer([key]);
632
- resolvePointerTypeInfo(options?.typeInfo, pointer);
633
- return objectOp("hasKey", field, pointer);
634
- },
635
- hasPath: (pointer) => {
636
- const normalized = chunkTDXIBCGY_cjs.normalizeJsonPointer(pointer);
637
- resolvePointerTypeInfo(options?.typeInfo, normalized);
638
- return objectOp("hasPath", field, normalized);
639
- },
640
- pathEquals: (pointer, value) => {
641
- const normalized = chunkTDXIBCGY_cjs.normalizeJsonPointer(pointer);
642
- const resolved = resolvePointerTypeInfo(options?.typeInfo, normalized);
643
- if (resolved && (resolved.valueType === "array" || resolved.valueType === "object")) {
644
- throw new Error("pathEquals is only supported for scalar JSON values");
645
- }
646
- const predicateOptions = resolved?.valueType === void 0 ? void 0 : { valueType: resolved.valueType };
647
- return objectOp("pathEquals", field, normalized, value, predicateOptions);
648
- },
649
- pathContains: (pointer, value) => {
650
- const normalized = chunkTDXIBCGY_cjs.normalizeJsonPointer(pointer);
651
- const resolved = resolvePointerTypeInfo(options?.typeInfo, normalized);
652
- if (resolved && resolved.valueType !== "array") {
653
- throw new Error("pathContains is only supported for JSON array values");
654
- }
655
- const predicateOptions = resolved?.elementType === void 0 ? void 0 : { elementType: resolved.elementType };
656
- return objectOp(
657
- "pathContains",
658
- field,
659
- normalized,
660
- value,
661
- predicateOptions
662
- );
663
- },
664
- pathIsNull: (pointer) => {
665
- const normalized = chunkTDXIBCGY_cjs.normalizeJsonPointer(pointer);
666
- const resolved = resolvePointerTypeInfo(options?.typeInfo, normalized);
667
- const predicateOptions = resolved?.valueType === void 0 ? void 0 : { valueType: resolved.valueType };
668
- return objectOp(
669
- "pathIsNull",
670
- field,
671
- normalized,
672
- void 0,
673
- predicateOptions
674
- );
675
- },
676
- pathIsNotNull: (pointer) => {
677
- const normalized = chunkTDXIBCGY_cjs.normalizeJsonPointer(pointer);
678
- const resolved = resolvePointerTypeInfo(options?.typeInfo, normalized);
679
- const predicateOptions = resolved?.valueType === void 0 ? void 0 : { valueType: resolved.valueType };
680
- return objectOp(
681
- "pathIsNotNull",
682
- field,
683
- normalized,
684
- void 0,
685
- predicateOptions
686
- );
687
- },
688
- field: (pointer) => {
689
- const normalized = chunkTDXIBCGY_cjs.normalizeJsonPointer(pointer);
690
- const nestedPointer = chunkTDXIBCGY_cjs.joinJsonPointers(basePointer, normalized);
691
- const resolved = resolvePointerTypeInfo(options?.typeInfo, normalized);
692
- const nestedRef = fieldRef(field.alias, field.path, {
693
- jsonPointer: nestedPointer,
694
- ...resolved?.valueType !== void 0 && {
695
- valueType: resolved.valueType
696
- },
697
- ...resolved?.elementType !== void 0 && {
698
- elementType: resolved.elementType
699
- }
700
- });
701
- return buildFieldBuilderForTypeInfo(nestedRef, resolved);
702
- }
703
- };
704
- }
705
- function exists(subquery) {
706
- const expr = {
707
- __type: "exists",
708
- subquery,
709
- negated: false
710
- };
711
- return predicate(expr);
712
- }
713
- function notExists(subquery) {
714
- const expr = {
715
- __type: "exists",
716
- subquery,
717
- negated: true
718
- };
719
- return predicate(expr);
720
- }
721
- function inSubquery(field, subquery) {
722
- assertSingleColumnSubquery(subquery);
723
- assertCompatibleSubqueryValueTypes(field, subquery);
724
- const expr = {
725
- __type: "in_subquery",
726
- field,
727
- subquery,
728
- negated: false
729
- };
730
- return predicate(expr);
731
- }
732
- function notInSubquery(field, subquery) {
733
- assertSingleColumnSubquery(subquery);
734
- assertCompatibleSubqueryValueTypes(field, subquery);
735
- const expr = {
736
- __type: "in_subquery",
737
- field,
738
- subquery,
739
- negated: true
740
- };
741
- return predicate(expr);
742
- }
743
- function assertSingleColumnSubquery(subquery) {
744
- const columnCount = getSubqueryColumnCount(subquery);
745
- if (columnCount === 1) return;
746
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
747
- `IN/NOT IN subquery must project exactly 1 column, but got ${columnCount}`,
748
- { subqueryColumnCount: columnCount },
749
- {
750
- suggestion: "Use aggregate() with exactly one projected field for scalar IN/NOT IN subqueries."
751
- }
752
- );
753
- }
754
- function assertCompatibleSubqueryValueTypes(field, subquery) {
755
- const fieldValueType = field.valueType;
756
- const subqueryValueType = getSingleSubqueryColumnValueType(subquery);
757
- const resolvedValueType = fieldValueType ?? subqueryValueType;
758
- if (isUnsupportedInSubqueryValueType(resolvedValueType)) {
759
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
760
- `IN/NOT IN subquery does not support ${String(resolvedValueType)} values`,
761
- { valueType: resolvedValueType },
762
- {
763
- suggestion: "Use scalar fields (string/number/boolean/date) in IN/NOT IN predicates."
764
- }
765
- );
766
- }
767
- if (isInSubqueryTypeCompatible(fieldValueType, subqueryValueType)) {
768
- return;
769
- }
770
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
771
- `IN/NOT IN type mismatch: field type "${String(fieldValueType)}" does not match subquery column type "${String(subqueryValueType)}"`,
772
- {
773
- fieldValueType,
774
- subqueryValueType
775
- }
776
- );
777
- }
778
- var COMPARISON_OP_SQL = {
779
- eq: "=",
780
- neq: "!=",
781
- gt: ">",
782
- gte: ">=",
783
- lt: "<",
784
- lte: "<="
785
- };
786
- function compileFieldColumn(field, cteAlias, cteColumnPrefix) {
787
- if (cteColumnPrefix !== void 0) {
788
- const qualifier2 = cteColumnPrefix === "" ? "" : `${cteColumnPrefix}.`;
789
- if (field.path.length === 1 && field.path[0] === "id") {
790
- return drizzleOrm.sql.raw(`${qualifier2}id`);
791
- }
792
- if (field.path.length === 1 && field.path[0] === "kind") {
793
- return drizzleOrm.sql.raw(`${qualifier2}kind`);
794
- }
795
- if (field.path.length > 0 && field.path[0] === "props") {
796
- return drizzleOrm.sql.raw(`${qualifier2}props`);
797
- }
798
- return drizzleOrm.sql.raw(`${qualifier2}${field.path.join("_")}`);
799
- }
800
- const prefix = field.alias;
801
- const qualifier = cteAlias ? `${cteAlias}.` : "";
802
- if (field.path.length === 1 && field.path[0] === "id") {
803
- return drizzleOrm.sql.raw(`${qualifier}${prefix}_id`);
804
- }
805
- if (field.path.length === 1 && field.path[0] === "kind") {
806
- return drizzleOrm.sql.raw(`${qualifier}${prefix}_kind`);
807
- }
808
- if (field.path.length > 0 && field.path[0] === "props") {
809
- return drizzleOrm.sql.raw(`${qualifier}${prefix}_props`);
810
- }
811
- return drizzleOrm.sql.raw(`${qualifier}${prefix}_${field.path.join("_")}`);
812
- }
813
- function getFieldPointer(field) {
814
- if (field.jsonPointer !== void 0) {
815
- return field.jsonPointer;
816
- }
817
- if (field.path.length > 1 && field.path[0] === "props") {
818
- return chunkTDXIBCGY_cjs.jsonPointer(field.path.slice(1));
819
- }
820
- return void 0;
821
- }
822
- function isJsonField(field) {
823
- return field.path.length > 0 && field.path[0] === "props";
824
- }
825
- function normalizeValueType2(valueType) {
826
- if (!valueType || valueType === "unknown") {
827
- return void 0;
828
- }
829
- return valueType;
830
- }
831
- function compileFieldValue(field, dialect, valueType, cteAlias, pointerOverride, cteColumnPrefix) {
832
- const resolved = normalizeValueType2(valueType);
833
- const column = compileFieldColumn(field, cteAlias, cteColumnPrefix);
834
- if (!isJsonField(field)) {
835
- return column;
836
- }
837
- const pointer = pointerOverride ?? getFieldPointer(field);
838
- if (!pointer || pointer === "") {
839
- return column;
840
- }
841
- switch (resolved) {
842
- case "number": {
843
- return dialect.jsonExtractNumber(column, pointer);
844
- }
845
- case "boolean": {
846
- return dialect.jsonExtractBoolean(column, pointer);
847
- }
848
- case "date": {
849
- return dialect.jsonExtractDate(column, pointer);
850
- }
851
- case "array":
852
- case "object":
853
- case "embedding": {
854
- return dialect.jsonExtract(column, pointer);
855
- }
856
- case "string":
857
- case "unknown":
858
- case void 0: {
859
- return dialect.jsonExtractText(column, pointer);
860
- }
861
- }
862
- }
863
- function compileFieldTextValue(field, dialect, cteAlias, pointerOverride, cteColumnPrefix) {
864
- const column = compileFieldColumn(field, cteAlias, cteColumnPrefix);
865
- if (!isJsonField(field)) {
866
- return column;
867
- }
868
- const pointer = getFieldPointer(field);
869
- if (!pointer || pointer === "") {
870
- return column;
871
- }
872
- return dialect.jsonExtractText(column, pointer);
873
- }
874
- function compileFieldJsonValue(field, dialect, cteAlias, pointerOverride, cteColumnPrefix) {
875
- const column = compileFieldColumn(field, cteAlias, cteColumnPrefix);
876
- if (!isJsonField(field)) {
877
- return column;
878
- }
879
- const pointer = pointerOverride ?? getFieldPointer(field);
880
- if (!pointer || pointer === "") {
881
- return column;
882
- }
883
- return dialect.jsonExtract(column, pointer);
884
- }
885
- function resolveLiteralValueTypes(literals) {
886
- const resolved = /* @__PURE__ */ new Set();
887
- for (const literal2 of literals) {
888
- const valueType = normalizeValueType2(literal2.valueType);
889
- if (valueType) {
890
- resolved.add(valueType);
891
- }
892
- }
893
- if (resolved.size > 1) {
894
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
895
- "Mixed literal value types are not supported in predicates",
896
- { valueTypes: [...resolved] }
897
- );
898
- }
899
- return resolved.values().next().value;
900
- }
901
- function resolveComparisonValueType(field, right) {
902
- if (isParameterRef(right)) {
903
- return normalizeValueType2(right.valueType) ?? normalizeValueType2(field.valueType);
904
- }
905
- const literals = Array.isArray(right) ? right : [right];
906
- const literalType = resolveLiteralValueTypes(literals);
907
- const fieldType = normalizeValueType2(field.valueType);
908
- if (fieldType === "date" && literalType === "string") {
909
- return fieldType;
910
- }
911
- if (literalType) {
912
- return literalType;
913
- }
914
- return fieldType;
915
- }
916
- function resolvePredicateValueType(preferred, literal2) {
917
- const normalizedPreferred = normalizeValueType2(preferred);
918
- if (normalizedPreferred) {
919
- return normalizedPreferred;
920
- }
921
- return literal2 ? normalizeValueType2(literal2.valueType) : void 0;
922
- }
923
- function convertValueForSql(value, dialect) {
924
- return dialect.bindValue(value);
925
- }
926
- function compileStringPattern(op, pattern) {
927
- const escaped = pattern.replaceAll(
928
- chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER,
929
- `${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}`
930
- ).replaceAll("%", `${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}%`).replaceAll("_", `${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}_`);
931
- switch (op) {
932
- case "contains": {
933
- return `%${escaped}%`;
934
- }
935
- case "startsWith": {
936
- return `${escaped}%`;
937
- }
938
- case "endsWith": {
939
- return `%${escaped}`;
940
- }
941
- case "like":
942
- case "ilike": {
943
- return pattern;
944
- }
945
- default: {
946
- return escaped;
947
- }
948
- }
949
- }
950
- function escapeLikePatternParameter(parameter) {
951
- const doubledEscape = `${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}`;
952
- return drizzleOrm.sql`REPLACE(REPLACE(REPLACE(${parameter}, ${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}, ${doubledEscape}), '%', ${`${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}%`}), '_', ${`${chunk7YSP4V4R_cjs.LIKE_ESCAPE_CHARACTER}_`})`;
953
- }
954
- function compileParameterizedStringPattern(op, parameter) {
955
- switch (op) {
956
- case "contains": {
957
- const escaped = escapeLikePatternParameter(parameter);
958
- return drizzleOrm.sql`'%' || ${escaped} || '%'`;
959
- }
960
- case "startsWith": {
961
- const escaped = escapeLikePatternParameter(parameter);
962
- return drizzleOrm.sql`${escaped} || '%'`;
963
- }
964
- case "endsWith": {
965
- const escaped = escapeLikePatternParameter(parameter);
966
- return drizzleOrm.sql`'%' || ${escaped}`;
967
- }
968
- case "like":
969
- case "ilike": {
970
- return parameter;
971
- }
972
- default: {
973
- return escapeLikePatternParameter(parameter);
974
- }
975
- }
976
- }
977
- function compilePredicateExpression(expr, ctx) {
978
- const { dialect } = ctx;
979
- const cteColumnPrefix = ctx.cteColumnPrefix;
980
- switch (expr.__type) {
981
- case "comparison": {
982
- return compileComparisonPredicate(expr, dialect, cteColumnPrefix);
983
- }
984
- case "string_op": {
985
- const field = compileFieldTextValue(
986
- expr.field,
987
- dialect,
988
- void 0,
989
- void 0,
990
- cteColumnPrefix
991
- );
992
- if (isParameterRef(expr.pattern)) {
993
- const placeholder = drizzleOrm.sql`${drizzleOrm.sql.placeholder(expr.pattern.name)}`;
994
- const pattern2 = compileParameterizedStringPattern(expr.op, placeholder);
995
- if (expr.op === "ilike" || expr.op === "contains" || expr.op === "startsWith" || expr.op === "endsWith") {
996
- return dialect.ilike(field, pattern2);
997
- }
998
- return drizzleOrm.sql`${field} LIKE ${pattern2} ${chunk7YSP4V4R_cjs.likeEscapeClause}`;
999
- }
1000
- const pattern = compileStringPattern(expr.op, expr.pattern);
1001
- if (expr.op === "ilike" || expr.op === "contains" || expr.op === "startsWith" || expr.op === "endsWith") {
1002
- return dialect.ilike(field, pattern);
1003
- }
1004
- return drizzleOrm.sql`${field} LIKE ${pattern} ${chunk7YSP4V4R_cjs.likeEscapeClause}`;
1005
- }
1006
- case "null_check": {
1007
- const field = compileFieldTextValue(
1008
- expr.field,
1009
- dialect,
1010
- void 0,
1011
- void 0,
1012
- cteColumnPrefix
1013
- );
1014
- return expr.op === "isNull" ? drizzleOrm.sql`${field} IS NULL` : drizzleOrm.sql`${field} IS NOT NULL`;
1015
- }
1016
- case "between": {
1017
- const lowerIsParam = isParameterRef(expr.lower);
1018
- const upperIsParam = isParameterRef(expr.upper);
1019
- const boundsForType = [];
1020
- if (!lowerIsParam) boundsForType.push(expr.lower);
1021
- if (!upperIsParam) boundsForType.push(expr.upper);
1022
- const valueType = boundsForType.length > 0 ? resolveComparisonValueType(expr.field, boundsForType) : normalizeValueType2(expr.field.valueType);
1023
- if (valueType === "array" || valueType === "object") {
1024
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1025
- "Between comparisons are not supported for JSON arrays or objects"
1026
- );
1027
- }
1028
- const field = compileFieldValue(
1029
- expr.field,
1030
- dialect,
1031
- valueType,
1032
- void 0,
1033
- void 0,
1034
- cteColumnPrefix
1035
- );
1036
- const lower = lowerIsParam ? drizzleOrm.sql.placeholder(expr.lower.name) : convertValueForSql(expr.lower.value, dialect);
1037
- const upper = upperIsParam ? drizzleOrm.sql.placeholder(expr.upper.name) : convertValueForSql(expr.upper.value, dialect);
1038
- return drizzleOrm.sql`${field} BETWEEN ${lower} AND ${upper}`;
1039
- }
1040
- case "and": {
1041
- const parts = expr.predicates.map(
1042
- (p) => compilePredicateExpression(p, ctx)
1043
- );
1044
- return drizzleOrm.sql`(${drizzleOrm.sql.join(parts, drizzleOrm.sql` AND `)})`;
1045
- }
1046
- case "or": {
1047
- const parts = expr.predicates.map(
1048
- (p) => compilePredicateExpression(p, ctx)
1049
- );
1050
- return drizzleOrm.sql`(${drizzleOrm.sql.join(parts, drizzleOrm.sql` OR `)})`;
1051
- }
1052
- case "not": {
1053
- const inner = compilePredicateExpression(expr.predicate, ctx);
1054
- return drizzleOrm.sql`NOT (${inner})`;
1055
- }
1056
- case "array_op": {
1057
- return compileArrayPredicate(expr, dialect, cteColumnPrefix);
1058
- }
1059
- case "object_op": {
1060
- return compileObjectPredicate(expr, dialect, cteColumnPrefix);
1061
- }
1062
- case "aggregate_comparison": {
1063
- return compileAggregatePredicate(expr, dialect);
1064
- }
1065
- case "exists": {
1066
- return compileExistsSubquery(expr, ctx);
1067
- }
1068
- case "in_subquery": {
1069
- return compileInSubquery(expr, ctx);
1070
- }
1071
- case "vector_similarity":
1072
- case "fulltext_match": {
1073
- return STRUCTURAL_PREDICATE_NOOP;
1074
- }
1075
- }
1076
- }
1077
- var STRUCTURAL_PREDICATE_NOOP = drizzleOrm.sql.raw("1=1");
1078
- function compileComparisonPredicate(expr, dialect, cteColumnPrefix) {
1079
- if (isParameterRef(expr.right)) {
1080
- const parameterValueType = normalizeValueType2(expr.right.valueType) ?? normalizeValueType2(expr.left.valueType);
1081
- const left2 = compileFieldValue(
1082
- expr.left,
1083
- dialect,
1084
- parameterValueType,
1085
- void 0,
1086
- void 0,
1087
- cteColumnPrefix
1088
- );
1089
- const opSql2 = COMPARISON_OP_SQL[expr.op];
1090
- if (!opSql2) {
1091
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1092
- `Comparison operation "${expr.op}" is not supported for parameterized predicates`
1093
- );
1094
- }
1095
- return drizzleOrm.sql`${left2} ${drizzleOrm.sql.raw(opSql2)} ${drizzleOrm.sql.placeholder(expr.right.name)}`;
1096
- }
1097
- const valueType = resolveComparisonValueType(expr.left, expr.right);
1098
- if (valueType === "array" || valueType === "object") {
1099
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1100
- `Comparison operation "${expr.op}" is not supported for ${valueType} values`
1101
- );
1102
- }
1103
- const left = compileFieldValue(
1104
- expr.left,
1105
- dialect,
1106
- valueType,
1107
- void 0,
1108
- void 0,
1109
- cteColumnPrefix
1110
- );
1111
- if (expr.op === "in" || expr.op === "notIn") {
1112
- const values = Array.isArray(expr.right) ? expr.right : [expr.right];
1113
- if (values.length === 0) {
1114
- return expr.op === "in" ? drizzleOrm.sql.raw("1=0") : drizzleOrm.sql.raw("1=1");
1115
- }
1116
- const convertedValues = values.map(
1117
- (value) => convertValueForSql(value.value, dialect)
1118
- );
1119
- return dialect.inList(left, convertedValues, expr.op === "notIn");
1120
- }
1121
- const right = expr.right;
1122
- const rightValue = Array.isArray(right) ? right[0] : right;
1123
- const convertedRight = convertValueForSql(rightValue.value, dialect);
1124
- const opSql = COMPARISON_OP_SQL[expr.op];
1125
- if (!opSql) {
1126
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1127
- `Comparison operation "${expr.op}" is not supported`
1128
- );
1129
- }
1130
- return drizzleOrm.sql`${left} ${drizzleOrm.sql.raw(opSql)} ${convertedRight}`;
1131
- }
1132
- function compileArrayPredicate(expr, dialect, cteColumnPrefix) {
1133
- const field = compileFieldJsonValue(
1134
- expr.field,
1135
- dialect,
1136
- void 0,
1137
- void 0,
1138
- cteColumnPrefix
1139
- );
1140
- const values = expr.values?.map((v) => convertValueForSql(v.value, dialect)) ?? [];
1141
- switch (expr.op) {
1142
- case "isEmpty": {
1143
- return drizzleOrm.sql`(${field} IS NULL OR ${dialect.jsonArrayLength(field)} = 0)`;
1144
- }
1145
- case "isNotEmpty": {
1146
- return drizzleOrm.sql`(${field} IS NOT NULL AND ${dialect.jsonArrayLength(field)} > 0)`;
1147
- }
1148
- case "lengthEq": {
1149
- return drizzleOrm.sql`${dialect.jsonArrayLength(field)} = ${expr.length}`;
1150
- }
1151
- case "lengthGt": {
1152
- return drizzleOrm.sql`${dialect.jsonArrayLength(field)} > ${expr.length}`;
1153
- }
1154
- case "lengthGte": {
1155
- return drizzleOrm.sql`${dialect.jsonArrayLength(field)} >= ${expr.length}`;
1156
- }
1157
- case "lengthLt": {
1158
- return drizzleOrm.sql`${dialect.jsonArrayLength(field)} < ${expr.length}`;
1159
- }
1160
- case "lengthLte": {
1161
- return drizzleOrm.sql`${dialect.jsonArrayLength(field)} <= ${expr.length}`;
1162
- }
1163
- case "contains": {
1164
- const value = values[0];
1165
- if (value === void 0) {
1166
- return drizzleOrm.sql.raw("1=0");
1167
- }
1168
- return dialect.jsonArrayContains(field, value);
1169
- }
1170
- case "containsAll": {
1171
- return dialect.jsonArrayContainsAll(field, values);
1172
- }
1173
- case "containsAny": {
1174
- return dialect.jsonArrayContainsAny(field, values);
1175
- }
1176
- }
1177
- }
1178
- function compileObjectPredicate(expr, dialect, cteColumnPrefix) {
1179
- const basePointer = getFieldPointer(expr.field);
1180
- const pointer = chunkTDXIBCGY_cjs.joinJsonPointers(basePointer, expr.pointer);
1181
- const column = compileFieldColumn(expr.field, void 0, cteColumnPrefix);
1182
- switch (expr.op) {
1183
- case "hasKey":
1184
- case "hasPath": {
1185
- return dialect.jsonHasPath(column, pointer);
1186
- }
1187
- case "pathEquals": {
1188
- if (!expr.value) {
1189
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1190
- "pathEquals requires a comparison value"
1191
- );
1192
- }
1193
- const valueType = resolvePredicateValueType(expr.valueType, expr.value);
1194
- if (valueType === "array" || valueType === "object") {
1195
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1196
- "pathEquals is not supported for JSON arrays or objects"
1197
- );
1198
- }
1199
- const left = compileFieldValue(
1200
- expr.field,
1201
- dialect,
1202
- valueType,
1203
- void 0,
1204
- pointer,
1205
- cteColumnPrefix
1206
- );
1207
- return drizzleOrm.sql`${left} = ${convertValueForSql(expr.value.value, dialect)}`;
1208
- }
1209
- case "pathContains": {
1210
- if (!expr.value) {
1211
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1212
- "pathContains requires a comparison value"
1213
- );
1214
- }
1215
- const arrayField2 = compileFieldJsonValue(
1216
- expr.field,
1217
- dialect,
1218
- void 0,
1219
- pointer,
1220
- cteColumnPrefix
1221
- );
1222
- return dialect.jsonArrayContains(
1223
- arrayField2,
1224
- convertValueForSql(expr.value.value, dialect)
1225
- );
1226
- }
1227
- case "pathIsNull": {
1228
- return dialect.jsonPathIsNull(column, pointer);
1229
- }
1230
- case "pathIsNotNull": {
1231
- return dialect.jsonPathIsNotNull(column, pointer);
1232
- }
1233
- }
1234
- }
1235
- function compileAggregatePredicate(expr, dialect) {
1236
- const aggregate = compileAggregateExpr(expr.aggregate, dialect);
1237
- const op = COMPARISON_OP_SQL[expr.op];
1238
- if (!op) {
1239
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1240
- `Comparison operation "${expr.op}" is not supported for aggregate predicates`
1241
- );
1242
- }
1243
- const convertedValue = convertValueForSql(expr.value.value, dialect);
1244
- return drizzleOrm.sql`${aggregate} ${drizzleOrm.sql.raw(op)} ${convertedValue}`;
1245
- }
1246
- function compileAggregateExpr(expr, dialect) {
1247
- const cteAlias = `cte_${expr.field.alias}`;
1248
- const field = compileFieldValue(
1249
- expr.field,
1250
- dialect,
1251
- expr.field.valueType,
1252
- cteAlias
1253
- );
1254
- switch (expr.function) {
1255
- case "count": {
1256
- return drizzleOrm.sql`COUNT(${field})`;
1257
- }
1258
- case "countDistinct": {
1259
- return drizzleOrm.sql`COUNT(DISTINCT ${field})`;
1260
- }
1261
- case "sum": {
1262
- return drizzleOrm.sql`SUM(${field})`;
1263
- }
1264
- case "avg": {
1265
- return drizzleOrm.sql`AVG(${field})`;
1266
- }
1267
- case "min": {
1268
- return drizzleOrm.sql`MIN(${field})`;
1269
- }
1270
- case "max": {
1271
- return drizzleOrm.sql`MAX(${field})`;
1272
- }
1273
- default: {
1274
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1275
- `Unknown aggregate function: ${expr.function}`
1276
- );
1277
- }
1278
- }
1279
- }
1280
- function compileExistsSubquery(expr, ctx) {
1281
- if (expr.subquery.graphId === void 0) {
1282
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError("EXISTS subquery must have a graphId");
1283
- }
1284
- const subSql = ctx.compileQuery(expr.subquery, expr.subquery.graphId);
1285
- return expr.negated ? drizzleOrm.sql`NOT EXISTS (${subSql})` : drizzleOrm.sql`EXISTS (${subSql})`;
1286
- }
1287
- function compileInSubquery(expr, ctx) {
1288
- const subqueryColumnCount = getSubqueryColumnCount(expr.subquery);
1289
- if (subqueryColumnCount !== 1) {
1290
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1291
- `IN/NOT IN subquery must project exactly 1 column, but got ${subqueryColumnCount}`,
1292
- { subqueryColumnCount }
1293
- );
1294
- }
1295
- const fieldValueType = normalizeValueType2(expr.field.valueType);
1296
- const subqueryValueType = getSingleSubqueryColumnValueType(expr.subquery);
1297
- const resolvedValueType = fieldValueType ?? subqueryValueType;
1298
- if (isUnsupportedInSubqueryValueType(resolvedValueType)) {
1299
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1300
- `IN/NOT IN subquery does not support ${String(resolvedValueType)} values`,
1301
- { valueType: resolvedValueType }
1302
- );
1303
- }
1304
- if (!isInSubqueryTypeCompatible(fieldValueType, subqueryValueType)) {
1305
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1306
- `IN/NOT IN type mismatch: field type "${String(fieldValueType)}" does not match subquery column type "${String(subqueryValueType)}"`,
1307
- {
1308
- fieldValueType,
1309
- subqueryValueType
1310
- }
1311
- );
1312
- }
1313
- const valueType = fieldValueType ?? subqueryValueType;
1314
- if (expr.subquery.graphId === void 0) {
1315
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(
1316
- "IN/NOT IN subquery must have a graphId"
1317
- );
1318
- }
1319
- const fieldSql = compileFieldValue(
1320
- expr.field,
1321
- ctx.dialect,
1322
- valueType,
1323
- void 0,
1324
- void 0,
1325
- ctx.cteColumnPrefix
1326
- );
1327
- const subSql = ctx.compileQuery(expr.subquery, expr.subquery.graphId);
1328
- return expr.negated ? drizzleOrm.sql`${fieldSql} NOT IN (${subSql})` : drizzleOrm.sql`${fieldSql} IN (${subSql})`;
1329
- }
1330
- function extractStructuralPredicates(predicates, isMatch, rejectionMessage) {
1331
- const results = [];
1332
- function visit(expr, inDisallowedBranch) {
1333
- if (isMatch(expr)) {
1334
- if (inDisallowedBranch) {
1335
- throw new chunkBVRDGYXQ_cjs.UnsupportedPredicateError(rejectionMessage);
1336
- }
1337
- results.push(expr);
1338
- return;
1339
- }
1340
- switch (expr.__type) {
1341
- case "and": {
1342
- for (const child of expr.predicates) visit(child, inDisallowedBranch);
1343
- return;
1344
- }
1345
- case "or": {
1346
- for (const child of expr.predicates) visit(child, true);
1347
- return;
1348
- }
1349
- case "not": {
1350
- visit(expr.predicate, true);
1351
- return;
1352
- }
1353
- case "comparison":
1354
- case "string_op":
1355
- case "null_check":
1356
- case "between":
1357
- case "array_op":
1358
- case "object_op":
1359
- case "aggregate_comparison":
1360
- case "exists":
1361
- case "in_subquery":
1362
- case "vector_similarity":
1363
- case "fulltext_match": {
1364
- return;
1365
- }
1366
- }
1367
- }
1368
- for (const pred of predicates) visit(pred.expression, false);
1369
- return results;
1370
- }
1371
- function extractVectorSimilarityPredicates(predicates) {
1372
- return extractStructuralPredicates(
1373
- predicates,
1374
- (expr) => expr.__type === "vector_similarity",
1375
- "Vector similarity predicates cannot be nested under OR or NOT. Use top-level AND combinations instead."
1376
- );
1377
- }
1378
- function extractFulltextMatchPredicates(predicates) {
1379
- return extractStructuralPredicates(
1380
- predicates,
1381
- (expr) => expr.__type === "fulltext_match",
1382
- "Fulltext match predicates cannot be nested under OR or NOT. Use top-level AND combinations instead."
1383
- );
1384
- }
1385
- var EMPTY_PREDICATES = [];
1386
- function sqlValueList(values) {
1387
- return drizzleOrm.sql.join(
1388
- values.map((value) => drizzleOrm.sql`${value}`),
1389
- drizzleOrm.sql`, `
1390
- );
1391
- }
1392
- function buildPredicateIndexKey(alias, targetType) {
1393
- return `${alias}\0${targetType}`;
1394
- }
1395
- function resolvePredicateTargetType(predicate2) {
1396
- return predicate2.targetType === "edge" ? "edge" : "node";
1397
- }
1398
- function buildPredicateIndex(ast) {
1399
- const byAliasAndType = /* @__PURE__ */ new Map();
1400
- for (const predicate2 of ast.predicates) {
1401
- const key = buildPredicateIndexKey(
1402
- predicate2.targetAlias,
1403
- resolvePredicateTargetType(predicate2)
1404
- );
1405
- const existing = byAliasAndType.get(key);
1406
- if (existing === void 0) {
1407
- byAliasAndType.set(key, [predicate2]);
1408
- } else {
1409
- existing.push(predicate2);
1410
- }
1411
- }
1412
- return { byAliasAndType };
1413
- }
1414
- function getPredicatesForAlias(predicateIndex, alias, targetType) {
1415
- return predicateIndex.byAliasAndType.get(
1416
- buildPredicateIndexKey(alias, targetType)
1417
- ) ?? EMPTY_PREDICATES;
1418
- }
1419
- function compilePredicateClauses(predicates, predicateContext) {
1420
- return predicates.map(
1421
- (predicate2) => compilePredicateExpression(predicate2.expression, predicateContext)
1422
- );
1423
- }
1424
- function compileKindFilter(column, kinds) {
1425
- if (kinds.length === 0) {
1426
- return drizzleOrm.sql`1 = 0`;
1427
- }
1428
- if (kinds.length === 1) {
1429
- return drizzleOrm.sql`${column} = ${kinds[0]}`;
1430
- }
1431
- return drizzleOrm.sql`${column} IN (${sqlValueList(kinds)})`;
1432
- }
1433
- function getNodeKindsForAlias(ast, alias) {
1434
- if (alias === ast.start.alias) {
1435
- return ast.start.kinds;
1436
- }
1437
- for (const traversal of ast.traversals) {
1438
- if (traversal.nodeAlias === alias) {
1439
- return traversal.nodeKinds;
1440
- }
1441
- }
1442
- throw new chunkBVRDGYXQ_cjs.CompilerInvariantError(`Unknown traversal source alias: ${alias}`);
1443
- }
1444
- function getHybridTargetAlias(vectorPredicate, fulltextPredicate) {
1445
- if (!vectorPredicate || !fulltextPredicate) return void 0;
1446
- return vectorPredicate.field.alias === fulltextPredicate.field.alias ? vectorPredicate.field.alias : void 0;
1447
- }
1448
-
1449
- // src/utils/array.ts
1450
- function chunk(items, size) {
1451
- if (!Number.isSafeInteger(size) || size < 1) {
1452
- throw new RangeError(`chunk size must be a positive integer, got: ${size}`);
1453
- }
1454
- if (items.length === 0) return [];
1455
- if (items.length <= size) return [items];
1456
- const chunks = [];
1457
- for (let start = 0; start < items.length; start += size) {
1458
- chunks.push(items.slice(start, start + size));
1459
- }
1460
- return chunks;
1461
- }
1462
- function groupBy(items, keyFor) {
1463
- const groups = /* @__PURE__ */ new Map();
1464
- for (const item of items) {
1465
- const key = keyFor(item);
1466
- const group = groups.get(key) ?? [];
1467
- group.push(item);
1468
- groups.set(key, group);
1469
- }
1470
- return groups;
1471
- }
1472
-
1473
- // src/utils/presence.ts
1474
- function isPresent(value) {
1475
- return value !== null && value !== void 0;
1476
- }
1477
-
1478
- exports.CURRENT_READ_INSTANT_PLACEHOLDER = CURRENT_READ_INSTANT_PLACEHOLDER;
1479
- exports.D1_MAX_BIND_PARAMETERS = D1_MAX_BIND_PARAMETERS;
1480
- exports.DURABLE_OBJECT_MAX_BIND_PARAMETERS = DURABLE_OBJECT_MAX_BIND_PARAMETERS;
1481
- exports.INTERNAL_TEMPORARY_WRITES = INTERNAL_TEMPORARY_WRITES;
1482
- exports.MODERN_SQLITE_MAX_BIND_PARAMETERS = MODERN_SQLITE_MAX_BIND_PARAMETERS;
1483
- exports.POSTGRES_CAPABILITIES = POSTGRES_CAPABILITIES;
1484
- exports.POSTGRES_MAX_BIND_PARAMETERS = POSTGRES_MAX_BIND_PARAMETERS;
1485
- exports.SQLITE_CAPABILITIES = SQLITE_CAPABILITIES;
1486
- exports.SQLITE_MAX_BIND_PARAMETERS = SQLITE_MAX_BIND_PARAMETERS;
1487
- exports.annIndexScanTypes = annIndexScanTypes;
1488
- exports.arrayField = arrayField;
1489
- exports.asCompiledRowsSql = asCompiledRowsSql;
1490
- exports.asCompiledSelectSql = asCompiledSelectSql;
1491
- exports.asCompiledStatementSql = asCompiledStatementSql;
1492
- exports.asCompiledTemporaryStatementSql = asCompiledTemporaryStatementSql;
1493
- exports.baseField = baseField;
1494
- exports.buildFieldBuilderForTypeInfo = buildFieldBuilderForTypeInfo;
1495
- exports.buildPredicateIndex = buildPredicateIndex;
1496
- exports.chunk = chunk;
1497
- exports.compileFieldValue = compileFieldValue;
1498
- exports.compileKindFilter = compileKindFilter;
1499
- exports.compilePredicateClauses = compilePredicateClauses;
1500
- exports.compilePredicateExpression = compilePredicateExpression;
1501
- exports.compileTemporalFilter = compileTemporalFilter;
1502
- exports.createBackendOverlay = createBackendOverlay;
1503
- exports.createFulltextAccessor = createFulltextAccessor;
1504
- exports.currentReadInstant = currentReadInstant;
1505
- exports.currentReadInstantFor = currentReadInstantFor;
1506
- exports.dateField = dateField;
1507
- exports.exists = exists;
1508
- exports.extractFulltextMatchPredicates = extractFulltextMatchPredicates;
1509
- exports.extractTemporalOptions = extractTemporalOptions;
1510
- exports.extractVectorSimilarityPredicates = extractVectorSimilarityPredicates;
1511
- exports.fieldRef = fieldRef;
1512
- exports.getFieldPointer = getFieldPointer;
1513
- exports.getHybridTargetAlias = getHybridTargetAlias;
1514
- exports.getNodeKindsForAlias = getNodeKindsForAlias;
1515
- exports.getPredicatesForAlias = getPredicatesForAlias;
1516
- exports.groupBy = groupBy;
1517
- exports.inSubquery = inSubquery;
1518
- exports.isLiveNodeRow = isLiveNodeRow;
1519
- exports.isParameterRef = isParameterRef;
1520
- exports.isPresent = isPresent;
1521
- exports.isRawExecutable = isRawExecutable;
1522
- exports.isTombstonedNodeRow = isTombstonedNodeRow;
1523
- exports.markAnnIndexScan = markAnnIndexScan;
1524
- exports.markForceCustomPlan = markForceCustomPlan;
1525
- exports.normalizeGraphAnalyticsCapabilities = normalizeGraphAnalyticsCapabilities;
1526
- exports.notExists = notExists;
1527
- exports.notInSubquery = notInSubquery;
1528
- exports.numberField = numberField;
1529
- exports.objectField = objectField;
1530
- exports.param = param;
1531
- exports.rowPropsToJsonText = rowPropsToJsonText;
1532
- exports.rowPropsToObject = rowPropsToObject;
1533
- exports.runOptionallyInTransaction = runOptionallyInTransaction;
1534
- exports.shouldForceCustomPlan = shouldForceCustomPlan;
1535
- exports.sqlValueList = sqlValueList;
1536
- exports.stringField = stringField;
1537
- exports.withPinnedReadInstant = withPinnedReadInstant;
1538
- exports.wrapWithManagedClose = wrapWithManagedClose;
1539
- //# sourceMappingURL=chunk-IPSVVTWT.cjs.map
1540
- //# sourceMappingURL=chunk-IPSVVTWT.cjs.map