@nicia-ai/typegraph 0.49.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 (370) hide show
  1. package/README.md +12 -0
  2. package/dist/backend/drizzle/indexes.cjs +11 -9
  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 +7 -5
  6. package/dist/backend/index.cjs +190 -53
  7. package/dist/backend/index.d.cts +90 -4
  8. package/dist/backend/index.d.ts +90 -4
  9. package/dist/backend/index.js +9 -12
  10. package/dist/backend/postgres/index.cjs +36 -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 +19 -15
  14. package/dist/backend/postgres/pglite-store.cjs +7 -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 +7 -62
  19. package/dist/backend/postgres/pglite-store.js.map +1 -1
  20. package/dist/backend/postgres/pglite.cjs +21 -17
  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 +20 -16
  24. package/dist/backend/sqlite/index.cjs +33 -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 +17 -13
  28. package/dist/backend/sqlite/libsql.cjs +24 -20
  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 +19 -15
  33. package/dist/backend/sqlite/libsql.js.map +1 -1
  34. package/dist/backend/sqlite/local-store.cjs +9 -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 +8 -64
  39. package/dist/backend/sqlite/local-store.js.map +1 -1
  40. package/dist/backend/sqlite/local.cjs +25 -20
  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 +21 -16
  44. package/dist/chunk-2CVDZCXH.cjs +1278 -0
  45. package/dist/chunk-2CVDZCXH.cjs.map +1 -0
  46. package/dist/{chunk-MYKHJI2J.js → chunk-2DWTBNSH.js} +3 -3
  47. package/dist/{chunk-MYKHJI2J.js.map → chunk-2DWTBNSH.js.map} +1 -1
  48. package/dist/{chunk-JB6T4GLL.cjs → chunk-2KCTP3U2.cjs} +870 -528
  49. package/dist/chunk-2KCTP3U2.cjs.map +1 -0
  50. package/dist/{chunk-OORXGFL5.cjs → chunk-322TBTOQ.cjs} +48 -48
  51. package/dist/{chunk-OORXGFL5.cjs.map → chunk-322TBTOQ.cjs.map} +1 -1
  52. package/dist/{chunk-FA2AFWLP.cjs → chunk-36SX6QXP.cjs} +31 -12
  53. package/dist/chunk-36SX6QXP.cjs.map +1 -0
  54. package/dist/{chunk-SDBBMD4N.js → chunk-36VYWVQU.js} +3 -3
  55. package/dist/{chunk-SDBBMD4N.js.map → chunk-36VYWVQU.js.map} +1 -1
  56. package/dist/chunk-4DKY6RIU.js +1253 -0
  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-WIC7DRXW.js → chunk-57JM6NW3.js} +9 -19
  61. package/dist/chunk-57JM6NW3.js.map +1 -0
  62. package/dist/chunk-5WWEYV4H.cjs +5113 -0
  63. package/dist/chunk-5WWEYV4H.cjs.map +1 -0
  64. package/dist/chunk-6KQEICJ6.cjs +12 -0
  65. package/dist/{chunk-MKJ4KXL5.cjs.map → chunk-6KQEICJ6.cjs.map} +1 -1
  66. package/dist/{chunk-DZAICA5J.js → chunk-6NKSE5AU.js} +4 -4
  67. package/dist/{chunk-DZAICA5J.js.map → chunk-6NKSE5AU.js.map} +1 -1
  68. package/dist/{chunk-KKBDXCLQ.js → chunk-6NLYIMJO.js} +4 -4
  69. package/dist/{chunk-KKBDXCLQ.js.map → chunk-6NLYIMJO.js.map} +1 -1
  70. package/dist/{chunk-BFUOME67.cjs → chunk-7B7I7YAW.cjs} +20 -11
  71. package/dist/chunk-7B7I7YAW.cjs.map +1 -0
  72. package/dist/{chunk-ZDKTPBGV.js → chunk-7G5IYROL.js} +6 -548
  73. package/dist/chunk-7G5IYROL.js.map +1 -0
  74. package/dist/{chunk-3DMMGT6S.js → chunk-7QFRK6PU.js} +4 -8
  75. package/dist/chunk-7QFRK6PU.js.map +1 -0
  76. package/dist/chunk-A4C4NJ5U.cjs +12 -0
  77. package/dist/chunk-A4C4NJ5U.cjs.map +1 -0
  78. package/dist/{chunk-CHAOFCHV.js → chunk-AH2A74OZ.js} +3 -3
  79. package/dist/{chunk-CHAOFCHV.js.map → chunk-AH2A74OZ.js.map} +1 -1
  80. package/dist/{chunk-UGHQV7MP.cjs → chunk-B3MN7EJR.cjs} +228 -162
  81. package/dist/chunk-B3MN7EJR.cjs.map +1 -0
  82. package/dist/{chunk-TZEGUG6D.cjs → chunk-BZ5MVITP.cjs} +4 -4
  83. package/dist/{chunk-TZEGUG6D.cjs.map → chunk-BZ5MVITP.cjs.map} +1 -1
  84. package/dist/{chunk-YVF2EM7B.js → chunk-CAI6SMP6.js} +3 -3
  85. package/dist/{chunk-YVF2EM7B.js.map → chunk-CAI6SMP6.js.map} +1 -1
  86. package/dist/{chunk-JONXFAPO.js → chunk-CBOD7TXH.js} +5 -5
  87. package/dist/{chunk-JONXFAPO.js.map → chunk-CBOD7TXH.js.map} +1 -1
  88. package/dist/{chunk-FQPEMEWX.cjs → chunk-CRZ56SZU.cjs} +81 -32
  89. package/dist/chunk-CRZ56SZU.cjs.map +1 -0
  90. package/dist/{chunk-DO7SAMEK.cjs → chunk-D3GWARN7.cjs} +47 -47
  91. package/dist/{chunk-DO7SAMEK.cjs.map → chunk-D3GWARN7.cjs.map} +1 -1
  92. package/dist/{chunk-QTD6HX4O.js → chunk-D3OUDFU7.js} +5 -5
  93. package/dist/{chunk-QTD6HX4O.js.map → chunk-D3OUDFU7.js.map} +1 -1
  94. package/dist/{chunk-2QGYQBS2.cjs → chunk-DWUDZ66O.cjs} +10 -10
  95. package/dist/{chunk-2QGYQBS2.cjs.map → chunk-DWUDZ66O.cjs.map} +1 -1
  96. package/dist/chunk-EKG2UXNX.cjs +23 -0
  97. package/dist/chunk-EKG2UXNX.cjs.map +1 -0
  98. package/dist/chunk-FMMW3KX7.cjs +148 -0
  99. package/dist/chunk-FMMW3KX7.cjs.map +1 -0
  100. package/dist/{chunk-XVWOYKIK.js → chunk-FZHF5UWR.js} +3 -3
  101. package/dist/{chunk-XVWOYKIK.js.map → chunk-FZHF5UWR.js.map} +1 -1
  102. package/dist/chunk-H2VWDQWC.cjs +571 -0
  103. package/dist/chunk-H2VWDQWC.cjs.map +1 -0
  104. package/dist/chunk-H4FY6OZK.js +13 -0
  105. package/dist/chunk-H4FY6OZK.js.map +1 -0
  106. package/dist/{chunk-EDN4Y4ZG.cjs → chunk-H5IJSROF.cjs} +9 -15
  107. package/dist/chunk-H5IJSROF.cjs.map +1 -0
  108. package/dist/chunk-HZUB5CON.js +27 -0
  109. package/dist/chunk-HZUB5CON.js.map +1 -0
  110. package/dist/{chunk-NACVVDWB.js → chunk-I5IOSA27.js} +103 -105
  111. package/dist/chunk-I5IOSA27.js.map +1 -0
  112. package/dist/{chunk-OI2GQ25X.cjs → chunk-I7YAY2VQ.cjs} +7 -7
  113. package/dist/{chunk-OI2GQ25X.cjs.map → chunk-I7YAY2VQ.cjs.map} +1 -1
  114. package/dist/chunk-IRCWIA3R.js +20 -0
  115. package/dist/chunk-IRCWIA3R.js.map +1 -0
  116. package/dist/chunk-IVQBLXBK.cjs +55 -0
  117. package/dist/chunk-IVQBLXBK.cjs.map +1 -0
  118. package/dist/{chunk-7SQSZN2J.js → chunk-IZD4HTCP.js} +5 -5
  119. package/dist/{chunk-7SQSZN2J.js.map → chunk-IZD4HTCP.js.map} +1 -1
  120. package/dist/{chunk-3FPR224C.cjs → chunk-JHRUZ73O.cjs} +116 -107
  121. package/dist/chunk-JHRUZ73O.cjs.map +1 -0
  122. package/dist/{chunk-EZEEWCFJ.cjs → chunk-JQKMEKKW.cjs} +525 -298
  123. package/dist/chunk-JQKMEKKW.cjs.map +1 -0
  124. package/dist/chunk-JVA3KDEA.cjs +691 -0
  125. package/dist/chunk-JVA3KDEA.cjs.map +1 -0
  126. package/dist/{chunk-5K2BKEBD.js → chunk-K46SDNQD.js} +10 -4
  127. package/dist/chunk-K46SDNQD.js.map +1 -0
  128. package/dist/{chunk-7LZJNLA5.js → chunk-K67P5DLL.js} +108 -42
  129. package/dist/chunk-K67P5DLL.js.map +1 -0
  130. package/dist/{chunk-3G5W2U2L.cjs → chunk-KACEYDYV.cjs} +335 -258
  131. package/dist/chunk-KACEYDYV.cjs.map +1 -0
  132. package/dist/{chunk-JFRT7S3B.cjs → chunk-L6EVYIID.cjs} +318 -478
  133. package/dist/chunk-L6EVYIID.cjs.map +1 -0
  134. package/dist/{chunk-SHFBB23Q.js → chunk-LI4K2KEJ.js} +6 -4
  135. package/dist/chunk-LI4K2KEJ.js.map +1 -0
  136. package/dist/chunk-LKZDQ2B4.js +1581 -0
  137. package/dist/chunk-LKZDQ2B4.js.map +1 -0
  138. package/dist/{chunk-WODMN3Q2.cjs → chunk-LLFPQOBA.cjs} +27 -27
  139. package/dist/{chunk-WODMN3Q2.cjs.map → chunk-LLFPQOBA.cjs.map} +1 -1
  140. package/dist/{chunk-P6YLZTRE.js → chunk-LZMQ3SFK.js} +3 -3
  141. package/dist/{chunk-P6YLZTRE.js.map → chunk-LZMQ3SFK.js.map} +1 -1
  142. package/dist/{chunk-HEV35TGT.js → chunk-M3VTS3F6.js} +13 -4
  143. package/dist/chunk-M3VTS3F6.js.map +1 -0
  144. package/dist/{chunk-TQHGE7UC.cjs → chunk-M5MSP3BI.cjs} +18 -10
  145. package/dist/chunk-M5MSP3BI.cjs.map +1 -0
  146. package/dist/{chunk-D4QLTJSM.js → chunk-NBOS7BY3.js} +63 -23
  147. package/dist/chunk-NBOS7BY3.js.map +1 -0
  148. package/dist/chunk-NGQDGL5X.js +140 -0
  149. package/dist/chunk-NGQDGL5X.js.map +1 -0
  150. package/dist/{chunk-SIT26LAZ.cjs → chunk-NLX5OWK7.cjs} +33 -5
  151. package/dist/chunk-NLX5OWK7.cjs.map +1 -0
  152. package/dist/chunk-NUQ2YFFH.cjs +1637 -0
  153. package/dist/chunk-NUQ2YFFH.cjs.map +1 -0
  154. package/dist/{chunk-UMGZDVOA.cjs → chunk-OGL4X4PH.cjs} +206 -208
  155. package/dist/chunk-OGL4X4PH.cjs.map +1 -0
  156. package/dist/{chunk-LRQKXRXO.cjs → chunk-OTNTGEXR.cjs} +4 -4
  157. package/dist/{chunk-LRQKXRXO.cjs.map → chunk-OTNTGEXR.cjs.map} +1 -1
  158. package/dist/chunk-OTWE63BW.js +53 -0
  159. package/dist/chunk-OTWE63BW.js.map +1 -0
  160. package/dist/chunk-PC5NGH5A.js +549 -0
  161. package/dist/chunk-PC5NGH5A.js.map +1 -0
  162. package/dist/{chunk-26YKDNUD.cjs → chunk-PS3TUWJM.cjs} +12 -10
  163. package/dist/chunk-PS3TUWJM.cjs.map +1 -0
  164. package/dist/{chunk-OMZ37BM2.js → chunk-PVFFH7TL.js} +5 -5
  165. package/dist/{chunk-OMZ37BM2.js.map → chunk-PVFFH7TL.js.map} +1 -1
  166. package/dist/chunk-QCD5JKU4.cjs +15 -0
  167. package/dist/chunk-QCD5JKU4.cjs.map +1 -0
  168. package/dist/{chunk-UGHG7PGX.js → chunk-QG5VEOKX.js} +30 -4
  169. package/dist/chunk-QG5VEOKX.js.map +1 -0
  170. package/dist/{chunk-TUNPBZY3.cjs → chunk-QLLZM5I3.cjs} +4 -4
  171. package/dist/{chunk-TUNPBZY3.cjs.map → chunk-QLLZM5I3.cjs.map} +1 -1
  172. package/dist/{chunk-BRRP76WO.js → chunk-RCBG6YMT.js} +781 -375
  173. package/dist/chunk-RCBG6YMT.js.map +1 -0
  174. package/dist/{chunk-LTXQOEIC.js → chunk-RI7RJH4G.js} +281 -204
  175. package/dist/chunk-RI7RJH4G.js.map +1 -0
  176. package/dist/{chunk-GYEG3ZLZ.cjs → chunk-RJMHU2MG.cjs} +121 -18
  177. package/dist/chunk-RJMHU2MG.cjs.map +1 -0
  178. package/dist/{chunk-GLHXM7C4.js → chunk-RVUL2HXY.js} +61 -23
  179. package/dist/chunk-RVUL2HXY.js.map +1 -0
  180. package/dist/chunk-RWUWTJQY.cjs +30 -0
  181. package/dist/chunk-RWUWTJQY.cjs.map +1 -0
  182. package/dist/{chunk-2O4PCIZ6.cjs → chunk-S5GU4LUN.cjs} +13 -13
  183. package/dist/{chunk-2O4PCIZ6.cjs.map → chunk-S5GU4LUN.cjs.map} +1 -1
  184. package/dist/{chunk-JPD2CTC3.js → chunk-SDPWO2Z5.js} +7 -7
  185. package/dist/{chunk-JPD2CTC3.js.map → chunk-SDPWO2Z5.js.map} +1 -1
  186. package/dist/{chunk-OVI7IXYX.js → chunk-SLGGT2XD.js} +3 -3
  187. package/dist/{chunk-OVI7IXYX.js.map → chunk-SLGGT2XD.js.map} +1 -1
  188. package/dist/{chunk-ROR5ZR6A.cjs → chunk-TIJUA4I6.cjs} +45 -45
  189. package/dist/{chunk-ROR5ZR6A.cjs.map → chunk-TIJUA4I6.cjs.map} +1 -1
  190. package/dist/{chunk-AOSSQDVO.cjs → chunk-TM54OBHX.cjs} +13 -13
  191. package/dist/{chunk-AOSSQDVO.cjs.map → chunk-TM54OBHX.cjs.map} +1 -1
  192. package/dist/{chunk-KF6K7TGH.js → chunk-TYEYRCXL.js} +766 -433
  193. package/dist/chunk-TYEYRCXL.js.map +1 -0
  194. package/dist/{chunk-Z2JCLZFJ.js → chunk-UKOVGCRN.js} +2151 -570
  195. package/dist/chunk-UKOVGCRN.js.map +1 -0
  196. package/dist/chunk-UYKDYE5D.cjs +12 -0
  197. package/dist/{chunk-CICO5GXD.cjs.map → chunk-UYKDYE5D.cjs.map} +1 -1
  198. package/dist/{chunk-S5TERQVW.js → chunk-VAAC7L57.js} +284 -66
  199. package/dist/chunk-VAAC7L57.js.map +1 -0
  200. package/dist/{chunk-7UOLHNWC.cjs → chunk-VKHXYVN7.cjs} +22 -33
  201. package/dist/chunk-VKHXYVN7.cjs.map +1 -0
  202. package/dist/{chunk-6NGW27EO.cjs → chunk-VLBTRXA2.cjs} +10 -10
  203. package/dist/{chunk-6NGW27EO.cjs.map → chunk-VLBTRXA2.cjs.map} +1 -1
  204. package/dist/{chunk-YIURNGXI.js → chunk-VUQZNUHU.js} +22 -6
  205. package/dist/chunk-VUQZNUHU.js.map +1 -0
  206. package/dist/{chunk-YYUHLYM2.cjs → chunk-WDM5WQK4.cjs} +183 -143
  207. package/dist/chunk-WDM5WQK4.cjs.map +1 -0
  208. package/dist/{chunk-ZFMCDJGB.js → chunk-WFSYYU4W.js} +70 -220
  209. package/dist/chunk-WFSYYU4W.js.map +1 -0
  210. package/dist/{chunk-SR725PWF.cjs → chunk-WRBV2FNH.cjs} +2065 -1659
  211. package/dist/chunk-WRBV2FNH.cjs.map +1 -0
  212. package/dist/{chunk-MRDBBHIZ.cjs → chunk-X4GDXBOP.cjs} +2 -2
  213. package/dist/chunk-X4GDXBOP.cjs.map +1 -0
  214. package/dist/chunk-XORONCV3.js +202 -0
  215. package/dist/chunk-XORONCV3.js.map +1 -0
  216. package/dist/{chunk-D5R42W5D.js → chunk-XZW2CTNO.js} +115 -12
  217. package/dist/chunk-XZW2CTNO.js.map +1 -0
  218. package/dist/{chunk-ZLONH2UD.js → chunk-YDEJQWOL.js} +2 -2
  219. package/dist/chunk-YDEJQWOL.js.map +1 -0
  220. package/dist/{chunk-2TYSSBU5.js → chunk-YT2IVFAI.js} +30 -21
  221. package/dist/chunk-YT2IVFAI.js.map +1 -0
  222. package/dist/chunk-ZGVTNKTX.cjs +217 -0
  223. package/dist/chunk-ZGVTNKTX.cjs.map +1 -0
  224. package/dist/core/index.cjs +29 -28
  225. package/dist/core/index.d.cts +4 -4
  226. package/dist/core/index.d.ts +4 -4
  227. package/dist/core/index.js +9 -8
  228. package/dist/{ddl-D_oW-EVO.d.ts → ddl-BvcbgzHo.d.ts} +3 -3
  229. package/dist/{ddl-BL1NZLMY.d.cts → ddl-Ufebz5q5.d.cts} +3 -3
  230. package/dist/graph-extension/index.cjs +21 -20
  231. package/dist/graph-extension/index.d.cts +2 -4
  232. package/dist/graph-extension/index.d.ts +2 -4
  233. package/dist/graph-extension/index.js +5 -4
  234. package/dist/graph-merge/index.cjs +324 -307
  235. package/dist/graph-merge/index.cjs.map +1 -1
  236. package/dist/graph-merge/index.d.cts +8 -9
  237. package/dist/graph-merge/index.d.ts +8 -9
  238. package/dist/graph-merge/index.js +51 -34
  239. package/dist/graph-merge/index.js.map +1 -1
  240. package/dist/index.cjs +224 -222
  241. package/dist/index.cjs.map +1 -1
  242. package/dist/index.d.cts +11 -12
  243. package/dist/index.d.ts +11 -12
  244. package/dist/index.js +38 -36
  245. package/dist/index.js.map +1 -1
  246. package/dist/indexes/index.cjs +15 -13
  247. package/dist/indexes/index.d.cts +4 -4
  248. package/dist/indexes/index.d.ts +4 -4
  249. package/dist/indexes/index.js +8 -6
  250. package/dist/{ingestion-import-target-dNeL7iAv.d.ts → ingestion-import-target-CAs1OX-l.d.cts} +1 -1
  251. package/dist/{ingestion-import-target-XPxZYw89.d.cts → ingestion-import-target-DCQSPfNx.d.ts} +1 -1
  252. package/dist/interchange/index.cjs +57 -54
  253. package/dist/interchange/index.cjs.map +1 -1
  254. package/dist/interchange/index.d.cts +19 -8
  255. package/dist/interchange/index.d.ts +19 -8
  256. package/dist/interchange/index.js +21 -18
  257. package/dist/interchange/index.js.map +1 -1
  258. package/dist/local-store-impl-6DDTFM32.cjs +77 -0
  259. package/dist/local-store-impl-6DDTFM32.cjs.map +1 -0
  260. package/dist/local-store-impl-OXTOVU2J.js +75 -0
  261. package/dist/local-store-impl-OXTOVU2J.js.map +1 -0
  262. package/dist/{manager-CYaff3n3.d.cts → manager-B68OrPR2.d.ts} +29 -2
  263. package/dist/{manager-D9eRT_ns.d.ts → manager-D_t7oK69.d.cts} +29 -2
  264. package/dist/pglite-store-impl-6EMZGL7K.js +73 -0
  265. package/dist/pglite-store-impl-6EMZGL7K.js.map +1 -0
  266. package/dist/pglite-store-impl-GJG3Y7RP.cjs +75 -0
  267. package/dist/pglite-store-impl-GJG3Y7RP.cjs.map +1 -0
  268. package/dist/{postgres-CcL4bAHS.d.ts → postgres-BPLSVyHM.d.ts} +279 -2
  269. package/dist/{postgres-DMj39MEu.d.cts → postgres-CqvtFC2y.d.cts} +279 -2
  270. package/dist/profiler/index.d.cts +9 -9
  271. package/dist/profiler/index.d.ts +9 -9
  272. package/dist/provenance/index.cjs +59 -44
  273. package/dist/provenance/index.cjs.map +1 -1
  274. package/dist/provenance/index.d.cts +7 -7
  275. package/dist/provenance/index.d.ts +7 -7
  276. package/dist/provenance/index.js +28 -13
  277. package/dist/provenance/index.js.map +1 -1
  278. package/dist/{repair-validity-windows-BFNZvd_H.d.cts → repair-validity-windows-DEzCKAdy.d.cts} +7 -3
  279. package/dist/{repair-validity-windows-DlUSqwCg.d.ts → repair-validity-windows-GMdaS2AH.d.ts} +7 -3
  280. package/dist/resolve-D_H8MHtq.d.ts +1805 -0
  281. package/dist/resolve-WEW8gWws.d.cts +1805 -0
  282. package/dist/schema/index.cjs +48 -46
  283. package/dist/schema/index.d.cts +4 -6
  284. package/dist/schema/index.d.ts +4 -6
  285. package/dist/schema/index.js +21 -19
  286. package/dist/{searchable-bpE1bBfc.d.ts → searchable-C_UREI9K.d.ts} +1 -1
  287. package/dist/{searchable-DHJMh_nj.d.cts → searchable-ClgET_i7.d.cts} +1 -1
  288. package/dist/{sqlite-YppHrNFb.d.cts → sqlite-D1mXO9Kp.d.cts} +310 -2
  289. package/dist/{sqlite-D7Oz0SQh.d.ts → sqlite-MZA3oZNB.d.ts} +310 -2
  290. package/dist/{store-bphCSo7z.d.cts → store-CuFX7fCx.d.cts} +117 -31
  291. package/dist/{store-DRrFCx5x.d.ts → store-D-ZjXQpW.d.ts} +117 -31
  292. package/dist/{temporal-CbnLzTmM.d.ts → temporal-CpyEiRY8.d.cts} +1 -1
  293. package/dist/{temporal-5GqpYCk2.d.cts → temporal-y0Aep9Su.d.ts} +1 -1
  294. package/dist/{types-BqFZTQmV.d.cts → types-6yf0Vv-_.d.cts} +2016 -94
  295. package/dist/{types-BqFZTQmV.d.ts → types-6yf0Vv-_.d.ts} +2016 -94
  296. package/dist/{types-Bx74kaTt.d.ts → types-DzJ4dlzk.d.cts} +1 -1
  297. package/dist/{types-CXAhpW-c.d.cts → types-_vVSB9k-.d.ts} +1 -1
  298. package/dist/{where-O-k2wgYm.d.ts → where-DuG2LCLe.d.ts} +1 -1
  299. package/dist/{where-DI_Fqz-X.d.cts → where-Mhf_yyKX.d.cts} +1 -1
  300. package/package.json +7 -2
  301. package/dist/chunk-26YKDNUD.cjs.map +0 -1
  302. package/dist/chunk-2TYSSBU5.js.map +0 -1
  303. package/dist/chunk-3DMMGT6S.js.map +0 -1
  304. package/dist/chunk-3FPR224C.cjs.map +0 -1
  305. package/dist/chunk-3G5W2U2L.cjs.map +0 -1
  306. package/dist/chunk-3KOY4FH3.cjs +0 -934
  307. package/dist/chunk-3KOY4FH3.cjs.map +0 -1
  308. package/dist/chunk-3QNZ5SAJ.cjs +0 -3502
  309. package/dist/chunk-3QNZ5SAJ.cjs.map +0 -1
  310. package/dist/chunk-3U5ABFDW.cjs +0 -259
  311. package/dist/chunk-3U5ABFDW.cjs.map +0 -1
  312. package/dist/chunk-5K2BKEBD.js.map +0 -1
  313. package/dist/chunk-5PRKMB24.cjs +0 -124
  314. package/dist/chunk-5PRKMB24.cjs.map +0 -1
  315. package/dist/chunk-6LN7FIVU.js +0 -107
  316. package/dist/chunk-6LN7FIVU.js.map +0 -1
  317. package/dist/chunk-6SWPJEYN.js +0 -1126
  318. package/dist/chunk-6SWPJEYN.js.map +0 -1
  319. package/dist/chunk-7LZJNLA5.js.map +0 -1
  320. package/dist/chunk-7UOLHNWC.cjs.map +0 -1
  321. package/dist/chunk-BFUOME67.cjs.map +0 -1
  322. package/dist/chunk-BRRP76WO.js.map +0 -1
  323. package/dist/chunk-CICO5GXD.cjs +0 -12
  324. package/dist/chunk-D4QLTJSM.js.map +0 -1
  325. package/dist/chunk-D5R42W5D.js.map +0 -1
  326. package/dist/chunk-EDN4Y4ZG.cjs.map +0 -1
  327. package/dist/chunk-EZEEWCFJ.cjs.map +0 -1
  328. package/dist/chunk-FA2AFWLP.cjs.map +0 -1
  329. package/dist/chunk-FQPEMEWX.cjs.map +0 -1
  330. package/dist/chunk-GLHXM7C4.js.map +0 -1
  331. package/dist/chunk-GYEG3ZLZ.cjs.map +0 -1
  332. package/dist/chunk-HDL2ARHX.cjs +0 -1156
  333. package/dist/chunk-HDL2ARHX.cjs.map +0 -1
  334. package/dist/chunk-HEV35TGT.js.map +0 -1
  335. package/dist/chunk-I4GAZH5Z.js +0 -913
  336. package/dist/chunk-I4GAZH5Z.js.map +0 -1
  337. package/dist/chunk-JB6T4GLL.cjs.map +0 -1
  338. package/dist/chunk-JBQQ7THH.js +0 -20
  339. package/dist/chunk-JBQQ7THH.js.map +0 -1
  340. package/dist/chunk-JFRT7S3B.cjs.map +0 -1
  341. package/dist/chunk-KF6K7TGH.js.map +0 -1
  342. package/dist/chunk-L3LQNR34.cjs +0 -1254
  343. package/dist/chunk-L3LQNR34.cjs.map +0 -1
  344. package/dist/chunk-LTXQOEIC.js.map +0 -1
  345. package/dist/chunk-MKJ4KXL5.cjs +0 -12
  346. package/dist/chunk-MRDBBHIZ.cjs.map +0 -1
  347. package/dist/chunk-NACVVDWB.js.map +0 -1
  348. package/dist/chunk-NVY5CJFP.js +0 -244
  349. package/dist/chunk-NVY5CJFP.js.map +0 -1
  350. package/dist/chunk-PWLJ77UV.cjs +0 -23
  351. package/dist/chunk-PWLJ77UV.cjs.map +0 -1
  352. package/dist/chunk-S5TERQVW.js.map +0 -1
  353. package/dist/chunk-SHFBB23Q.js.map +0 -1
  354. package/dist/chunk-SIT26LAZ.cjs.map +0 -1
  355. package/dist/chunk-SR725PWF.cjs.map +0 -1
  356. package/dist/chunk-TQHGE7UC.cjs.map +0 -1
  357. package/dist/chunk-UGHG7PGX.js.map +0 -1
  358. package/dist/chunk-UGHQV7MP.cjs.map +0 -1
  359. package/dist/chunk-UMGZDVOA.cjs.map +0 -1
  360. package/dist/chunk-WIC7DRXW.js.map +0 -1
  361. package/dist/chunk-YIURNGXI.js.map +0 -1
  362. package/dist/chunk-YYUHLYM2.cjs.map +0 -1
  363. package/dist/chunk-Z2JCLZFJ.js.map +0 -1
  364. package/dist/chunk-ZDKTPBGV.js.map +0 -1
  365. package/dist/chunk-ZFMCDJGB.js.map +0 -1
  366. package/dist/chunk-ZLONH2UD.js.map +0 -1
  367. package/dist/index-COs_z6nV.d.cts +0 -1132
  368. package/dist/index-D7d1u2gr.d.ts +0 -1132
  369. package/dist/materialize-indexes-DJ3ykH59.d.ts +0 -266
  370. package/dist/materialize-indexes-DTtAnvfY.d.cts +0 -266
@@ -0,0 +1,549 @@
1
+ import { sql } from './chunk-7QFRK6PU.js';
2
+ import { UnsupportedBackendCapabilityError, ConfigurationError } from './chunk-YDEJQWOL.js';
3
+ import { requireDefined } from './chunk-DYATYRY4.js';
4
+
5
+ // src/backend/table-contribution.ts
6
+ var FULLTEXT_CONTRIBUTION_NAME = "fulltext";
7
+ var BASE_CONTRIBUTION_OWNER = "base";
8
+
9
+ // src/query/dialect/fulltext-strategy.ts
10
+ var ALL_FULLTEXT_MODES = [
11
+ "websearch",
12
+ "phrase",
13
+ "plain",
14
+ "raw"
15
+ ];
16
+ function buildFulltextCapabilities(strategy) {
17
+ return {
18
+ supported: true,
19
+ languages: strategy.languages,
20
+ phraseQueries: strategy.supportedModes.includes("phrase"),
21
+ prefixQueries: strategy.supportsPrefix,
22
+ highlighting: strategy.supportsSnippets
23
+ };
24
+ }
25
+ function buildFulltextGraphDelete(tableName, graphId) {
26
+ return sql`
27
+ DELETE FROM ${sql.identifier(tableName)}
28
+ WHERE "graph_id" = ${graphId}
29
+ `;
30
+ }
31
+ function buildForeignFulltextGraphProbe(tableName, graphId, limit) {
32
+ return sql`
33
+ SELECT DISTINCT "graph_id"
34
+ FROM ${sql.identifier(tableName)}
35
+ WHERE "graph_id" <> ${graphId}
36
+ LIMIT ${limit}
37
+ `;
38
+ }
39
+ function quoteIdentifier(name) {
40
+ return `"${name.replaceAll('"', '""')}"`;
41
+ }
42
+ function tsvectorColumn(tableName) {
43
+ return sql`${sql.identifier(tableName)}."tsv"`;
44
+ }
45
+ function dedupeFulltextBatchRows(rows) {
46
+ const seen = /* @__PURE__ */ new Map();
47
+ for (const row of rows) seen.set(row.nodeId, row);
48
+ return [...seen.values()];
49
+ }
50
+ function buildPkScopedDelete(tableName, params) {
51
+ const table = sql.identifier(tableName);
52
+ return sql`
53
+ DELETE FROM ${table}
54
+ WHERE "graph_id" = ${params.graphId}
55
+ AND "node_kind" = ${params.nodeKind}
56
+ AND "node_id" = ${params.nodeId}
57
+ `;
58
+ }
59
+ function buildPkScopedBatchDelete(tableName, params) {
60
+ if (params.nodeIds.length === 0) return void 0;
61
+ const unique = [...new Set(params.nodeIds)];
62
+ const table = sql.identifier(tableName);
63
+ return sql`
64
+ DELETE FROM ${table}
65
+ WHERE "graph_id" = ${params.graphId}
66
+ AND "node_kind" = ${params.nodeKind}
67
+ AND "node_id" IN (${sql.join(
68
+ unique.map((id) => sql`${id}`),
69
+ sql`, `
70
+ )})
71
+ `;
72
+ }
73
+ function postgresTsquery(mode, query, language) {
74
+ const langExpr = language === void 0 ? sql`"language"` : sql`${language}::regconfig`;
75
+ switch (mode) {
76
+ case "websearch": {
77
+ return sql`websearch_to_tsquery(${langExpr}, ${query})`;
78
+ }
79
+ case "phrase": {
80
+ return sql`phraseto_tsquery(${langExpr}, ${query})`;
81
+ }
82
+ case "plain": {
83
+ return sql`plainto_tsquery(${langExpr}, ${query})`;
84
+ }
85
+ case "raw": {
86
+ return sql`to_tsquery(${langExpr}, ${query})`;
87
+ }
88
+ default: {
89
+ const _exhaustive = mode;
90
+ throw new Error(`Unsupported fulltext mode: ${String(_exhaustive)}`);
91
+ }
92
+ }
93
+ }
94
+ var tsvectorStrategy = {
95
+ name: "tsvector",
96
+ supportedModes: ALL_FULLTEXT_MODES,
97
+ supportsSnippets: true,
98
+ // `raw` mode exposes `foo:*` prefix-match syntax to callers.
99
+ supportsPrefix: true,
100
+ supportsLanguageOverride: true,
101
+ // Canonical Postgres stemmers; every stock install ships these plus a
102
+ // few others. Runtime `to_tsvector` accepts any installed regconfig
103
+ // name — this list is advisory for capability discovery.
104
+ languages: [
105
+ "simple",
106
+ "english",
107
+ "french",
108
+ "german",
109
+ "italian",
110
+ "portuguese",
111
+ "russian",
112
+ "spanish",
113
+ "swedish"
114
+ ],
115
+ matchCondition(tableName, query, mode, language) {
116
+ const q = postgresTsquery(mode, query, language);
117
+ return sql`${tsvectorColumn(tableName)} @@ ${q}`;
118
+ },
119
+ rankExpression(tableName, query, mode, language) {
120
+ const q = postgresTsquery(mode, query, language);
121
+ return sql`ts_rank_cd(${tsvectorColumn(tableName)}, ${q})`;
122
+ },
123
+ snippetExpression(_tableName, query, mode, language) {
124
+ const langExpr = language === void 0 ? sql`"language"` : sql`${language}::regconfig`;
125
+ const q = postgresTsquery(mode, query, language);
126
+ return sql`ts_headline(${langExpr}, "content", ${q}, 'StartSel=<mark>,StopSel=</mark>,MaxFragments=1,MinWords=5,MaxWords=30,ShortWord=3')`;
127
+ },
128
+ ownedTables(primaryTableName) {
129
+ const name = quoteIdentifier(primaryTableName);
130
+ const gin = quoteIdentifier(`${primaryTableName}_tsv_idx`);
131
+ const kind = quoteIdentifier(`${primaryTableName}_kind_idx`);
132
+ const createDdl = [
133
+ `CREATE TABLE IF NOT EXISTS ${name} (
134
+ "graph_id" TEXT NOT NULL,
135
+ "node_kind" TEXT NOT NULL,
136
+ "node_id" TEXT NOT NULL,
137
+ "content" TEXT NOT NULL,
138
+ "language" regconfig NOT NULL,
139
+ "tsv" tsvector NOT NULL
140
+ GENERATED ALWAYS AS (to_tsvector("language", "content")) STORED,
141
+ "updated_at" TIMESTAMPTZ NOT NULL,
142
+ PRIMARY KEY ("graph_id", "node_kind", "node_id")
143
+ );`,
144
+ `CREATE INDEX IF NOT EXISTS ${gin} ON ${name} USING GIN ("tsv");`,
145
+ `CREATE INDEX IF NOT EXISTS ${kind} ON ${name} ("graph_id", "node_kind");`
146
+ ];
147
+ return [
148
+ {
149
+ logicalName: FULLTEXT_CONTRIBUTION_NAME,
150
+ owner: "tsvector",
151
+ tableName: primaryTableName,
152
+ createDdl,
153
+ // Both indexes belong to the table, so Postgres drops them with
154
+ // it; no separate DROP INDEX is needed or wanted (naming them
155
+ // would break the moment a future createDdl renames one).
156
+ dropDdl: [`DROP TABLE IF EXISTS ${name};`],
157
+ runtimeEnsure: true
158
+ }
159
+ ];
160
+ },
161
+ buildUpsert(tableName, params, timestamp) {
162
+ const table = sql.identifier(tableName);
163
+ return [
164
+ sql`
165
+ INSERT INTO ${table} ("graph_id", "node_kind", "node_id", "content", "language", "updated_at")
166
+ VALUES (
167
+ ${params.graphId}, ${params.nodeKind}, ${params.nodeId},
168
+ ${params.content}, ${params.language}::regconfig,
169
+ ${timestamp}
170
+ )
171
+ ON CONFLICT ("graph_id", "node_kind", "node_id")
172
+ DO UPDATE SET
173
+ "content" = EXCLUDED."content",
174
+ "language" = EXCLUDED."language",
175
+ "updated_at" = EXCLUDED."updated_at"
176
+ `
177
+ ];
178
+ },
179
+ buildBatchUpsert(tableName, params, timestamp) {
180
+ const rows = dedupeFulltextBatchRows(params.rows);
181
+ if (rows.length === 0) return [];
182
+ const table = sql.identifier(tableName);
183
+ const valueTuples = rows.map(
184
+ (row) => sql`
185
+ (
186
+ ${params.graphId}, ${params.nodeKind}, ${row.nodeId},
187
+ ${row.content}, ${row.language}::regconfig,
188
+ ${timestamp}
189
+ )
190
+ `
191
+ );
192
+ return [
193
+ sql`
194
+ INSERT INTO ${table} ("graph_id", "node_kind", "node_id", "content", "language", "updated_at")
195
+ VALUES ${sql.join(valueTuples, sql`, `)}
196
+ ON CONFLICT ("graph_id", "node_kind", "node_id")
197
+ DO UPDATE SET
198
+ "content" = EXCLUDED."content",
199
+ "language" = EXCLUDED."language",
200
+ "updated_at" = EXCLUDED."updated_at"
201
+ `
202
+ ];
203
+ },
204
+ buildDelete(tableName, params) {
205
+ return [buildPkScopedDelete(tableName, params)];
206
+ },
207
+ buildBatchDelete(tableName, params) {
208
+ const stmt = buildPkScopedBatchDelete(tableName, params);
209
+ return stmt === void 0 ? [] : [stmt];
210
+ }
211
+ };
212
+ function translateToFts5Query(query, mode) {
213
+ switch (mode) {
214
+ case "phrase": {
215
+ return `"${query.replaceAll('"', '""')}"`;
216
+ }
217
+ case "plain": {
218
+ return query.trim().split(/\s+/u).filter((token) => token.length > 0).map((token) => `"${token.replaceAll('"', '""')}"`).join(" ");
219
+ }
220
+ case "websearch": {
221
+ return translateWebsearchToFts5(query);
222
+ }
223
+ case "raw": {
224
+ return query;
225
+ }
226
+ default: {
227
+ const _exhaustive = mode;
228
+ throw new Error(`Unsupported fulltext mode: ${String(_exhaustive)}`);
229
+ }
230
+ }
231
+ }
232
+ function translateWebsearchToFts5(query) {
233
+ const tokens = [];
234
+ let index = 0;
235
+ function skipWhitespace() {
236
+ while (index < query.length && /\s/u.test(query[index] ?? "")) {
237
+ index += 1;
238
+ }
239
+ }
240
+ function readPhrase() {
241
+ index += 1;
242
+ let content = "";
243
+ while (index < query.length && query[index] !== '"') {
244
+ content += query[index] ?? "";
245
+ index += 1;
246
+ }
247
+ if (query[index] === '"') index += 1;
248
+ return `"${content.replaceAll('"', '""')}"`;
249
+ }
250
+ function readBareTerm() {
251
+ let term = "";
252
+ while (index < query.length && !/\s/u.test(query[index] ?? "")) {
253
+ term += query[index] ?? "";
254
+ index += 1;
255
+ }
256
+ return term;
257
+ }
258
+ while (index < query.length) {
259
+ skipWhitespace();
260
+ if (index >= query.length) break;
261
+ const ch = query[index];
262
+ if (ch === '"') {
263
+ tokens.push(readPhrase());
264
+ continue;
265
+ }
266
+ if (ch === "-") {
267
+ index += 1;
268
+ const term = query[index] === '"' ? readPhrase() : `"${readBareTerm().replaceAll('"', '""')}"`;
269
+ tokens.push(`NOT ${term}`);
270
+ continue;
271
+ }
272
+ if (ch === "+") {
273
+ index += 1;
274
+ continue;
275
+ }
276
+ const bare = readBareTerm();
277
+ if (bare.length === 0) continue;
278
+ if (bare.toUpperCase() === "OR") {
279
+ tokens.push("OR");
280
+ continue;
281
+ }
282
+ tokens.push(`"${bare.replaceAll('"', '""')}"`);
283
+ }
284
+ if (tokens.length > 0 && tokens[0]?.startsWith("NOT ")) {
285
+ tokens.shift();
286
+ }
287
+ return tokens.join(" ");
288
+ }
289
+ var fts5Strategy = {
290
+ name: "fts5",
291
+ supportedModes: ALL_FULLTEXT_MODES,
292
+ supportsSnippets: true,
293
+ // FTS5 supports `foo*` prefix matching natively.
294
+ supportsPrefix: true,
295
+ // FTS5 tokenizer is fixed at table-create time; per-row / per-query
296
+ // language metadata is stored but not consulted.
297
+ supportsLanguageOverride: false,
298
+ // The built-in tokenizer is `porter unicode61 remove_diacritics 2`; the
299
+ // `language` field on searchable() is recorded for future use but not
300
+ // applied at query time.
301
+ languages: ["porter", "unicode61", "trigram"],
302
+ matchCondition(tableName, query, mode, _language) {
303
+ const matchExpression = translateToFts5Query(query, mode);
304
+ return sql`${sql.identifier(tableName)} MATCH ${matchExpression}`;
305
+ },
306
+ rankExpression(tableName, _query, _mode, _language) {
307
+ return sql`-bm25(${sql.identifier(tableName)})`;
308
+ },
309
+ snippetExpression(tableName, _query, _mode, _language) {
310
+ return sql`snippet(${sql.identifier(tableName)}, -1, '<mark>', '</mark>', '…', 20)`;
311
+ },
312
+ ownedTables(primaryTableName) {
313
+ const name = quoteIdentifier(primaryTableName);
314
+ return [
315
+ {
316
+ logicalName: FULLTEXT_CONTRIBUTION_NAME,
317
+ owner: "fts5",
318
+ tableName: primaryTableName,
319
+ createDdl: [
320
+ `CREATE VIRTUAL TABLE IF NOT EXISTS ${name} USING fts5(
321
+ graph_id UNINDEXED,
322
+ node_kind UNINDEXED,
323
+ node_id UNINDEXED,
324
+ language UNINDEXED,
325
+ updated_at UNINDEXED,
326
+ content,
327
+ tokenize='porter unicode61 remove_diacritics 2'
328
+ );`
329
+ ],
330
+ // `DROP TABLE` on an FTS5 virtual table also removes the shadow
331
+ // tables (`_data`, `_idx`, `_content`, …) the module created, so
332
+ // one statement is the whole teardown.
333
+ dropDdl: [`DROP TABLE IF EXISTS ${name};`],
334
+ runtimeEnsure: true
335
+ }
336
+ ];
337
+ },
338
+ buildUpsert(tableName, params, timestamp) {
339
+ const table = sql.identifier(tableName);
340
+ return [
341
+ sql`
342
+ DELETE FROM ${table}
343
+ WHERE "graph_id" = ${params.graphId}
344
+ AND "node_kind" = ${params.nodeKind}
345
+ AND "node_id" = ${params.nodeId}
346
+ `,
347
+ sql`
348
+ INSERT INTO ${table} (graph_id, node_kind, node_id, content, language, updated_at)
349
+ VALUES (${params.graphId}, ${params.nodeKind}, ${params.nodeId}, ${params.content}, ${params.language}, ${timestamp})
350
+ `
351
+ ];
352
+ },
353
+ buildBatchUpsert(tableName, params, timestamp) {
354
+ const rows = dedupeFulltextBatchRows(params.rows);
355
+ if (rows.length === 0) return [];
356
+ const table = sql.identifier(tableName);
357
+ const nodeIds = rows.map((row) => row.nodeId);
358
+ const deleteStmt = sql`
359
+ DELETE FROM ${table}
360
+ WHERE "graph_id" = ${params.graphId}
361
+ AND "node_kind" = ${params.nodeKind}
362
+ AND "node_id" IN (${sql.join(
363
+ nodeIds.map((id) => sql`${id}`),
364
+ sql`, `
365
+ )})
366
+ `;
367
+ const valueTuples = rows.map(
368
+ (row) => sql`
369
+ (
370
+ ${params.graphId}, ${params.nodeKind}, ${row.nodeId},
371
+ ${row.content}, ${row.language}, ${timestamp}
372
+ )
373
+ `
374
+ );
375
+ const insertStmt = sql`
376
+ INSERT INTO ${table} (graph_id, node_kind, node_id, content, language, updated_at)
377
+ VALUES ${sql.join(valueTuples, sql`, `)}
378
+ `;
379
+ return [deleteStmt, insertStmt];
380
+ },
381
+ buildDelete(tableName, params) {
382
+ return [buildPkScopedDelete(tableName, params)];
383
+ },
384
+ buildBatchDelete(tableName, params) {
385
+ const stmt = buildPkScopedBatchDelete(tableName, params);
386
+ return stmt === void 0 ? [] : [stmt];
387
+ }
388
+ };
389
+
390
+ // src/query/dialect/vector-strategy.ts
391
+ var VECTOR_CONTRIBUTION_PREFIX = "vector";
392
+ function buildVectorCapabilities(strategy) {
393
+ return strategy.capabilities;
394
+ }
395
+ function vectorScoreExpression(distanceExpression, metric) {
396
+ switch (metric) {
397
+ case "cosine": {
398
+ return sql`(1 - (${distanceExpression}))`;
399
+ }
400
+ case "l2":
401
+ case "inner_product": {
402
+ return distanceExpression;
403
+ }
404
+ default: {
405
+ const _exhaustive = metric;
406
+ throw new Error(`Unsupported vector metric: ${String(_exhaustive)}`);
407
+ }
408
+ }
409
+ }
410
+ function vectorMinScoreCondition(distanceExpression, metric, minScore) {
411
+ assertVectorMinScore(minScore, metric);
412
+ switch (metric) {
413
+ case "cosine": {
414
+ return sql`${distanceExpression} <= ${1 - minScore}`;
415
+ }
416
+ case "l2": {
417
+ return sql`${distanceExpression} <= ${minScore}`;
418
+ }
419
+ case "inner_product": {
420
+ return sql`${distanceExpression} <= ${-minScore}`;
421
+ }
422
+ default: {
423
+ const _exhaustive = metric;
424
+ throw new Error(`Unsupported vector metric: ${String(_exhaustive)}`);
425
+ }
426
+ }
427
+ }
428
+ function assertFiniteEmbedding(embedding, name) {
429
+ for (const [index, value] of embedding.entries()) {
430
+ if (typeof value !== "number" || !Number.isFinite(value)) {
431
+ throw new TypeError(
432
+ `${name}[${index}] must be a finite number, got: ${value}`
433
+ );
434
+ }
435
+ }
436
+ }
437
+ function assertVectorSearchLimit(limit) {
438
+ if (!Number.isInteger(limit) || limit <= 0) {
439
+ throw new RangeError(
440
+ `vectorSearch limit must be a positive integer, got: ${limit}`
441
+ );
442
+ }
443
+ }
444
+ function vectorSearchFrontierTuning(strategy) {
445
+ return strategy?.capabilities.searchFrontierTuning ?? {
446
+ tunable: false,
447
+ reason: "vector support is disabled on this backend"
448
+ };
449
+ }
450
+ function resolveEfSearchOverride(applicability) {
451
+ const { efSearch, indexType, tuning, transactions, dialect, engine } = applicability;
452
+ if (efSearch === void 0) return void 0;
453
+ if (!tuning.tunable) {
454
+ throw new UnsupportedBackendCapabilityError(
455
+ `${dialect} efSearch override`,
456
+ "vector.searchFrontierTuning",
457
+ { efSearch, engine, reason: tuning.reason },
458
+ `Omit efSearch: ${engine} has no per-search ANN frontier parameter (${tuning.reason}). Tune recall with the search limit, or use an exact search.`
459
+ );
460
+ }
461
+ if (indexType !== tuning.indexType) {
462
+ throw new ConfigurationError(
463
+ `${dialect} efSearch requires an ${tuning.indexType.toUpperCase()} vector index.`,
464
+ { efSearch, indexType },
465
+ {
466
+ suggestion: `Configure the embedding with index: { type: "${tuning.indexType}" }, or omit efSearch.`
467
+ }
468
+ );
469
+ }
470
+ if (tuning.requiresTransactionScope && !transactions) {
471
+ throw new UnsupportedBackendCapabilityError(
472
+ `${dialect} efSearch override`,
473
+ "transactions",
474
+ { efSearch, engine, parameter: tuning.parameter },
475
+ `Use a transactional ${dialect} driver: ${tuning.parameter} is scoped to the search's own transaction, and a session-wide setting would leak into concurrent searches.`
476
+ );
477
+ }
478
+ return tuning.parameter;
479
+ }
480
+ function assertApproximateMetricSupported(request) {
481
+ const {
482
+ approximate,
483
+ requestedMetric,
484
+ declaredMetric,
485
+ indexType,
486
+ nodeKind,
487
+ fieldPath
488
+ } = request;
489
+ if (approximate !== true) return;
490
+ if (indexType === "none") return;
491
+ if (requestedMetric === void 0 || requestedMetric === declaredMetric) {
492
+ return;
493
+ }
494
+ throw new ConfigurationError(
495
+ `Approximate retrieval for "${nodeKind}.${fieldPath}" cannot use metric "${requestedMetric}": its ${indexType.toUpperCase()} index is built for "${declaredMetric}", and an ANN structure only retrieves under the metric it was built for.`,
496
+ {
497
+ nodeKind,
498
+ fieldPath,
499
+ requestedMetric,
500
+ declaredMetric,
501
+ indexType
502
+ },
503
+ {
504
+ suggestion: `Omit metric (or pass "${declaredMetric}") to keep approximate retrieval, or drop approximate to scan exactly under "${requestedMetric}".`
505
+ }
506
+ );
507
+ }
508
+ function assertVectorMinScore(minScore, metric, label = "minScore") {
509
+ if (!Number.isFinite(minScore)) {
510
+ throw new RangeError(`${label} must be a finite number, got: ${minScore}`);
511
+ }
512
+ if (metric === "cosine" && Math.abs(minScore) > 1) {
513
+ throw new RangeError(
514
+ `${label} for the cosine metric must be between -1 and 1, got: ${minScore}`
515
+ );
516
+ }
517
+ }
518
+ var MAX_VECTOR_IDENTIFIER_LENGTH = 63;
519
+ function sanitizeIdentifierPart(value) {
520
+ return value.toLowerCase().replaceAll(/[^a-z0-9_]/g, "_");
521
+ }
522
+ function shortHash(input) {
523
+ let h1 = 3735928559;
524
+ let h2 = 1103547991;
525
+ for (let index = 0; index < input.length; index++) {
526
+ const ch = requireDefined(input.codePointAt(index));
527
+ h1 = Math.imul(h1 ^ ch, 2654435761);
528
+ h2 = Math.imul(h2 ^ ch, 1597334677);
529
+ }
530
+ h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);
531
+ h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);
532
+ const hi = (h2 >>> 0).toString(16).padStart(8, "0");
533
+ const lo = (h1 >>> 0).toString(16).padStart(8, "0");
534
+ return `${hi}${lo}`.slice(0, 8);
535
+ }
536
+ function vectorPhysicalName(prefix, graphId, nodeKind, fieldPath) {
537
+ const readable = `${prefix}_${sanitizeIdentifierPart(graphId)}_${sanitizeIdentifierPart(nodeKind)}_${sanitizeIdentifierPart(fieldPath)}`;
538
+ const hash = shortHash(JSON.stringify([graphId, nodeKind, fieldPath]));
539
+ const full = `${readable}_${hash}`;
540
+ if (full.length <= MAX_VECTOR_IDENTIFIER_LENGTH) return full;
541
+ return `${readable.slice(0, MAX_VECTOR_IDENTIFIER_LENGTH - 1 - hash.length)}_${hash}`;
542
+ }
543
+ function quoteIdentifier2(name) {
544
+ return `"${name.replaceAll('"', '""')}"`;
545
+ }
546
+
547
+ export { ALL_FULLTEXT_MODES, BASE_CONTRIBUTION_OWNER, FULLTEXT_CONTRIBUTION_NAME, VECTOR_CONTRIBUTION_PREFIX, assertApproximateMetricSupported, assertFiniteEmbedding, assertVectorMinScore, assertVectorSearchLimit, buildForeignFulltextGraphProbe, buildFulltextCapabilities, buildFulltextGraphDelete, buildVectorCapabilities, fts5Strategy, quoteIdentifier2 as quoteIdentifier, resolveEfSearchOverride, shortHash, tsvectorStrategy, vectorMinScoreCondition, vectorPhysicalName, vectorScoreExpression, vectorSearchFrontierTuning };
548
+ //# sourceMappingURL=chunk-PC5NGH5A.js.map
549
+ //# sourceMappingURL=chunk-PC5NGH5A.js.map