@nicia-ai/typegraph 0.49.0 → 0.50.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 (327) hide show
  1. package/dist/backend/drizzle/indexes.cjs +9 -9
  2. package/dist/backend/drizzle/indexes.d.cts +1 -1
  3. package/dist/backend/drizzle/indexes.d.ts +1 -1
  4. package/dist/backend/drizzle/indexes.js +5 -5
  5. package/dist/backend/index.cjs +56 -52
  6. package/dist/backend/index.d.cts +3 -3
  7. package/dist/backend/index.d.ts +3 -3
  8. package/dist/backend/index.js +11 -11
  9. package/dist/backend/postgres/index.cjs +34 -28
  10. package/dist/backend/postgres/index.d.cts +7 -7
  11. package/dist/backend/postgres/index.d.ts +7 -7
  12. package/dist/backend/postgres/index.js +17 -15
  13. package/dist/backend/postgres/pglite-store.cjs +36 -35
  14. package/dist/backend/postgres/pglite-store.cjs.map +1 -1
  15. package/dist/backend/postgres/pglite-store.d.cts +8 -8
  16. package/dist/backend/postgres/pglite-store.d.ts +8 -8
  17. package/dist/backend/postgres/pglite-store.js +32 -31
  18. package/dist/backend/postgres/pglite-store.js.map +1 -1
  19. package/dist/backend/postgres/pglite.cjs +19 -17
  20. package/dist/backend/postgres/pglite.d.cts +3 -3
  21. package/dist/backend/postgres/pglite.d.ts +3 -3
  22. package/dist/backend/postgres/pglite.js +18 -16
  23. package/dist/backend/sqlite/index.cjs +31 -25
  24. package/dist/backend/sqlite/index.d.cts +7 -7
  25. package/dist/backend/sqlite/index.d.ts +7 -7
  26. package/dist/backend/sqlite/index.js +15 -13
  27. package/dist/backend/sqlite/libsql.cjs +22 -20
  28. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  29. package/dist/backend/sqlite/libsql.d.cts +3 -3
  30. package/dist/backend/sqlite/libsql.d.ts +3 -3
  31. package/dist/backend/sqlite/libsql.js +17 -15
  32. package/dist/backend/sqlite/libsql.js.map +1 -1
  33. package/dist/backend/sqlite/local-store.cjs +37 -36
  34. package/dist/backend/sqlite/local-store.cjs.map +1 -1
  35. package/dist/backend/sqlite/local-store.d.cts +8 -8
  36. package/dist/backend/sqlite/local-store.d.ts +8 -8
  37. package/dist/backend/sqlite/local-store.js +33 -32
  38. package/dist/backend/sqlite/local-store.js.map +1 -1
  39. package/dist/backend/sqlite/local.cjs +20 -18
  40. package/dist/backend/sqlite/local.d.cts +3 -3
  41. package/dist/backend/sqlite/local.d.ts +3 -3
  42. package/dist/backend/sqlite/local.js +18 -16
  43. package/dist/{chunk-LTXQOEIC.js → chunk-2CYI5HRH.js} +248 -203
  44. package/dist/chunk-2CYI5HRH.js.map +1 -0
  45. package/dist/{chunk-KF6K7TGH.js → chunk-2GIV5X4P.js} +702 -422
  46. package/dist/chunk-2GIV5X4P.js.map +1 -0
  47. package/dist/{chunk-2TYSSBU5.js → chunk-2Q45FAIE.js} +15 -15
  48. package/dist/{chunk-2TYSSBU5.js.map → chunk-2Q45FAIE.js.map} +1 -1
  49. package/dist/{chunk-WODMN3Q2.cjs → chunk-45YZXI6X.cjs} +27 -27
  50. package/dist/{chunk-WODMN3Q2.cjs.map → chunk-45YZXI6X.cjs.map} +1 -1
  51. package/dist/{chunk-3DMMGT6S.js → chunk-46UGOVRW.js} +3 -3
  52. package/dist/{chunk-3DMMGT6S.js.map → chunk-46UGOVRW.js.map} +1 -1
  53. package/dist/{chunk-GLHXM7C4.js → chunk-5LKOVCPP.js} +60 -23
  54. package/dist/chunk-5LKOVCPP.js.map +1 -0
  55. package/dist/{chunk-JFRT7S3B.cjs → chunk-5OWHU7Z7.cjs} +261 -459
  56. package/dist/chunk-5OWHU7Z7.cjs.map +1 -0
  57. package/dist/{chunk-7SQSZN2J.js → chunk-5PP4KRPV.js} +5 -5
  58. package/dist/{chunk-7SQSZN2J.js.map → chunk-5PP4KRPV.js.map} +1 -1
  59. package/dist/chunk-6KQEICJ6.cjs +12 -0
  60. package/dist/{chunk-MKJ4KXL5.cjs.map → chunk-6KQEICJ6.cjs.map} +1 -1
  61. package/dist/{chunk-6SWPJEYN.js → chunk-6LEOAIIB.js} +40 -6
  62. package/dist/chunk-6LEOAIIB.js.map +1 -0
  63. package/dist/{chunk-DZAICA5J.js → chunk-6NKSE5AU.js} +4 -4
  64. package/dist/{chunk-DZAICA5J.js.map → chunk-6NKSE5AU.js.map} +1 -1
  65. package/dist/{chunk-OVI7IXYX.js → chunk-6S3PTHL4.js} +3 -3
  66. package/dist/{chunk-OVI7IXYX.js.map → chunk-6S3PTHL4.js.map} +1 -1
  67. package/dist/{chunk-3FPR224C.cjs → chunk-7CCMCMJO.cjs} +102 -102
  68. package/dist/{chunk-3FPR224C.cjs.map → chunk-7CCMCMJO.cjs.map} +1 -1
  69. package/dist/{chunk-SHFBB23Q.js → chunk-7OWE7WD6.js} +6 -4
  70. package/dist/chunk-7OWE7WD6.js.map +1 -0
  71. package/dist/chunk-7PRMDZIA.cjs +182 -0
  72. package/dist/chunk-7PRMDZIA.cjs.map +1 -0
  73. package/dist/{chunk-CHAOFCHV.js → chunk-AH2A74OZ.js} +3 -3
  74. package/dist/{chunk-CHAOFCHV.js.map → chunk-AH2A74OZ.js.map} +1 -1
  75. package/dist/{chunk-OORXGFL5.cjs → chunk-BYBDM423.cjs} +48 -48
  76. package/dist/{chunk-OORXGFL5.cjs.map → chunk-BYBDM423.cjs.map} +1 -1
  77. package/dist/{chunk-JB6T4GLL.cjs → chunk-C76WFIVZ.cjs} +808 -519
  78. package/dist/chunk-C76WFIVZ.cjs.map +1 -0
  79. package/dist/{chunk-3G5W2U2L.cjs → chunk-CS6JTQQ2.cjs} +302 -257
  80. package/dist/chunk-CS6JTQQ2.cjs.map +1 -0
  81. package/dist/{chunk-AOSSQDVO.cjs → chunk-CSNOYIB4.cjs} +13 -13
  82. package/dist/{chunk-AOSSQDVO.cjs.map → chunk-CSNOYIB4.cjs.map} +1 -1
  83. package/dist/{chunk-HEV35TGT.js → chunk-DI6VC62F.js} +13 -4
  84. package/dist/chunk-DI6VC62F.js.map +1 -0
  85. package/dist/{chunk-2QGYQBS2.cjs → chunk-DWUDZ66O.cjs} +10 -10
  86. package/dist/{chunk-2QGYQBS2.cjs.map → chunk-DWUDZ66O.cjs.map} +1 -1
  87. package/dist/{chunk-ZDKTPBGV.js → chunk-EDLKIQRI.js} +4 -4
  88. package/dist/{chunk-ZDKTPBGV.js.map → chunk-EDLKIQRI.js.map} +1 -1
  89. package/dist/chunk-EH3JZJUM.cjs +567 -0
  90. package/dist/chunk-EH3JZJUM.cjs.map +1 -0
  91. package/dist/{chunk-S5TERQVW.js → chunk-FX5ZW6PN.js} +196 -33
  92. package/dist/chunk-FX5ZW6PN.js.map +1 -0
  93. package/dist/{chunk-XVWOYKIK.js → chunk-FZHF5UWR.js} +3 -3
  94. package/dist/{chunk-XVWOYKIK.js.map → chunk-FZHF5UWR.js.map} +1 -1
  95. package/dist/{chunk-BFUOME67.cjs → chunk-G2TLHH6T.cjs} +20 -11
  96. package/dist/chunk-G2TLHH6T.cjs.map +1 -0
  97. package/dist/{chunk-5PRKMB24.cjs → chunk-GHZPZNFC.cjs} +12 -4
  98. package/dist/chunk-GHZPZNFC.cjs.map +1 -0
  99. package/dist/{chunk-ZFMCDJGB.js → chunk-GVYVGGPJ.js} +11 -199
  100. package/dist/chunk-GVYVGGPJ.js.map +1 -0
  101. package/dist/{chunk-SDBBMD4N.js → chunk-H3XP6BAV.js} +3 -3
  102. package/dist/{chunk-SDBBMD4N.js.map → chunk-H3XP6BAV.js.map} +1 -1
  103. package/dist/{chunk-ROR5ZR6A.cjs → chunk-HSEZ7X6Y.cjs} +45 -45
  104. package/dist/{chunk-ROR5ZR6A.cjs.map → chunk-HSEZ7X6Y.cjs.map} +1 -1
  105. package/dist/{chunk-LRQKXRXO.cjs → chunk-HY5BNOUN.cjs} +4 -4
  106. package/dist/{chunk-LRQKXRXO.cjs.map → chunk-HY5BNOUN.cjs.map} +1 -1
  107. package/dist/chunk-HZUB5CON.js +27 -0
  108. package/dist/chunk-HZUB5CON.js.map +1 -0
  109. package/dist/{chunk-MYKHJI2J.js → chunk-I5C6OTKR.js} +3 -3
  110. package/dist/{chunk-MYKHJI2J.js.map → chunk-I5C6OTKR.js.map} +1 -1
  111. package/dist/{chunk-3U5ABFDW.cjs → chunk-IHK5KA2Q.cjs} +31 -28
  112. package/dist/chunk-IHK5KA2Q.cjs.map +1 -0
  113. package/dist/{chunk-26YKDNUD.cjs → chunk-IPRP6TDL.cjs} +12 -10
  114. package/dist/chunk-IPRP6TDL.cjs.map +1 -0
  115. package/dist/{chunk-UGHG7PGX.js → chunk-IRPYOHRC.js} +26 -4
  116. package/dist/chunk-IRPYOHRC.js.map +1 -0
  117. package/dist/{chunk-7UOLHNWC.cjs → chunk-ISKCIQF2.cjs} +20 -20
  118. package/dist/{chunk-7UOLHNWC.cjs.map → chunk-ISKCIQF2.cjs.map} +1 -1
  119. package/dist/{chunk-7LZJNLA5.js → chunk-JG5XIJDY.js} +57 -31
  120. package/dist/chunk-JG5XIJDY.js.map +1 -0
  121. package/dist/{chunk-YYUHLYM2.cjs → chunk-K2XYLVVB.cjs} +134 -133
  122. package/dist/chunk-K2XYLVVB.cjs.map +1 -0
  123. package/dist/{chunk-5K2BKEBD.js → chunk-K46SDNQD.js} +10 -4
  124. package/dist/chunk-K46SDNQD.js.map +1 -0
  125. package/dist/{chunk-TZEGUG6D.cjs → chunk-K6VKTBST.cjs} +4 -4
  126. package/dist/{chunk-TZEGUG6D.cjs.map → chunk-K6VKTBST.cjs.map} +1 -1
  127. package/dist/chunk-KWNWG4RC.cjs +12 -0
  128. package/dist/{chunk-CICO5GXD.cjs.map → chunk-KWNWG4RC.cjs.map} +1 -1
  129. package/dist/{chunk-FQPEMEWX.cjs → chunk-LLVOQOWE.cjs} +80 -32
  130. package/dist/chunk-LLVOQOWE.cjs.map +1 -0
  131. package/dist/{chunk-TQHGE7UC.cjs → chunk-M5MSP3BI.cjs} +18 -10
  132. package/dist/chunk-M5MSP3BI.cjs.map +1 -0
  133. package/dist/{chunk-Z2JCLZFJ.js → chunk-MJPZNEJZ.js} +273 -291
  134. package/dist/chunk-MJPZNEJZ.js.map +1 -0
  135. package/dist/{chunk-TUNPBZY3.cjs → chunk-MM3JHVKZ.cjs} +4 -4
  136. package/dist/{chunk-TUNPBZY3.cjs.map → chunk-MM3JHVKZ.cjs.map} +1 -1
  137. package/dist/{chunk-BRRP76WO.js → chunk-MX7EKQPM.js} +457 -299
  138. package/dist/chunk-MX7EKQPM.js.map +1 -0
  139. package/dist/{chunk-D4QLTJSM.js → chunk-MZ34E2GN.js} +13 -12
  140. package/dist/chunk-MZ34E2GN.js.map +1 -0
  141. package/dist/{chunk-EDN4Y4ZG.cjs → chunk-OJHD3LXJ.cjs} +9 -9
  142. package/dist/{chunk-EDN4Y4ZG.cjs.map → chunk-OJHD3LXJ.cjs.map} +1 -1
  143. package/dist/{chunk-DO7SAMEK.cjs → chunk-ON47CBE4.cjs} +47 -47
  144. package/dist/{chunk-DO7SAMEK.cjs.map → chunk-ON47CBE4.cjs.map} +1 -1
  145. package/dist/{chunk-6LN7FIVU.js → chunk-PALYTHGM.js} +11 -4
  146. package/dist/chunk-PALYTHGM.js.map +1 -0
  147. package/dist/{chunk-YVF2EM7B.js → chunk-R7MRFE5P.js} +3 -3
  148. package/dist/{chunk-YVF2EM7B.js.map → chunk-R7MRFE5P.js.map} +1 -1
  149. package/dist/{chunk-EZEEWCFJ.cjs → chunk-RDP6ZRSM.cjs} +435 -265
  150. package/dist/chunk-RDP6ZRSM.cjs.map +1 -0
  151. package/dist/{chunk-GYEG3ZLZ.cjs → chunk-RJMHU2MG.cjs} +121 -18
  152. package/dist/chunk-RJMHU2MG.cjs.map +1 -0
  153. package/dist/chunk-RWUWTJQY.cjs +30 -0
  154. package/dist/chunk-RWUWTJQY.cjs.map +1 -0
  155. package/dist/{chunk-JPD2CTC3.js → chunk-S33YQEL7.js} +7 -7
  156. package/dist/{chunk-JPD2CTC3.js.map → chunk-S33YQEL7.js.map} +1 -1
  157. package/dist/chunk-S3SDEQMC.js +532 -0
  158. package/dist/chunk-S3SDEQMC.js.map +1 -0
  159. package/dist/{chunk-OI2GQ25X.cjs → chunk-SHC7BCG5.cjs} +7 -7
  160. package/dist/{chunk-OI2GQ25X.cjs.map → chunk-SHC7BCG5.cjs.map} +1 -1
  161. package/dist/{chunk-L3LQNR34.cjs → chunk-TEC24ZDA.cjs} +161 -161
  162. package/dist/{chunk-L3LQNR34.cjs.map → chunk-TEC24ZDA.cjs.map} +1 -1
  163. package/dist/{chunk-HDL2ARHX.cjs → chunk-TP4NJTI3.cjs} +63 -27
  164. package/dist/chunk-TP4NJTI3.cjs.map +1 -0
  165. package/dist/{chunk-UMGZDVOA.cjs → chunk-TTCOPKUL.cjs} +124 -124
  166. package/dist/{chunk-UMGZDVOA.cjs.map → chunk-TTCOPKUL.cjs.map} +1 -1
  167. package/dist/chunk-TUVD4DFR.cjs +1207 -0
  168. package/dist/chunk-TUVD4DFR.cjs.map +1 -0
  169. package/dist/{chunk-UGHQV7MP.cjs → chunk-TYGGUWMS.cjs} +178 -152
  170. package/dist/chunk-TYGGUWMS.cjs.map +1 -0
  171. package/dist/{chunk-WIC7DRXW.js → chunk-U3Z7XKAG.js} +7 -7
  172. package/dist/{chunk-WIC7DRXW.js.map → chunk-U3Z7XKAG.js.map} +1 -1
  173. package/dist/{chunk-NACVVDWB.js → chunk-U5EL6JUV.js} +10 -10
  174. package/dist/{chunk-NACVVDWB.js.map → chunk-U5EL6JUV.js.map} +1 -1
  175. package/dist/{chunk-OMZ37BM2.js → chunk-V76FGHY3.js} +5 -5
  176. package/dist/{chunk-OMZ37BM2.js.map → chunk-V76FGHY3.js.map} +1 -1
  177. package/dist/{chunk-6NGW27EO.cjs → chunk-VLBTRXA2.cjs} +10 -10
  178. package/dist/{chunk-6NGW27EO.cjs.map → chunk-VLBTRXA2.cjs.map} +1 -1
  179. package/dist/chunk-VTJVMP4I.js +1182 -0
  180. package/dist/chunk-VTJVMP4I.js.map +1 -0
  181. package/dist/{chunk-QTD6HX4O.js → chunk-W5SOCUBL.js} +5 -5
  182. package/dist/{chunk-QTD6HX4O.js.map → chunk-W5SOCUBL.js.map} +1 -1
  183. package/dist/{chunk-SR725PWF.cjs → chunk-WCLMKNQE.cjs} +1750 -1592
  184. package/dist/chunk-WCLMKNQE.cjs.map +1 -0
  185. package/dist/{chunk-2O4PCIZ6.cjs → chunk-WK23PGTP.cjs} +13 -13
  186. package/dist/{chunk-2O4PCIZ6.cjs.map → chunk-WK23PGTP.cjs.map} +1 -1
  187. package/dist/{chunk-KKBDXCLQ.js → chunk-WQBAQZHR.js} +4 -4
  188. package/dist/{chunk-KKBDXCLQ.js.map → chunk-WQBAQZHR.js.map} +1 -1
  189. package/dist/{chunk-MRDBBHIZ.cjs → chunk-X4GDXBOP.cjs} +2 -2
  190. package/dist/chunk-X4GDXBOP.cjs.map +1 -0
  191. package/dist/{chunk-3QNZ5SAJ.cjs → chunk-XMY2SXOH.cjs} +437 -455
  192. package/dist/chunk-XMY2SXOH.cjs.map +1 -0
  193. package/dist/{chunk-D5R42W5D.js → chunk-XZW2CTNO.js} +115 -12
  194. package/dist/chunk-XZW2CTNO.js.map +1 -0
  195. package/dist/{chunk-NVY5CJFP.js → chunk-Y55DLLEG.js} +9 -6
  196. package/dist/chunk-Y55DLLEG.js.map +1 -0
  197. package/dist/chunk-YA36ABIL.js +174 -0
  198. package/dist/chunk-YA36ABIL.js.map +1 -0
  199. package/dist/{chunk-ZLONH2UD.js → chunk-YDEJQWOL.js} +2 -2
  200. package/dist/chunk-YDEJQWOL.js.map +1 -0
  201. package/dist/{chunk-JONXFAPO.js → chunk-ZAQUKCUC.js} +5 -5
  202. package/dist/{chunk-JONXFAPO.js.map → chunk-ZAQUKCUC.js.map} +1 -1
  203. package/dist/{chunk-SIT26LAZ.cjs → chunk-ZBFZGLZE.cjs} +29 -5
  204. package/dist/chunk-ZBFZGLZE.cjs.map +1 -0
  205. package/dist/{chunk-P6YLZTRE.js → chunk-ZRJTM7MT.js} +3 -3
  206. package/dist/{chunk-P6YLZTRE.js.map → chunk-ZRJTM7MT.js.map} +1 -1
  207. package/dist/core/index.cjs +29 -28
  208. package/dist/core/index.d.cts +4 -4
  209. package/dist/core/index.d.ts +4 -4
  210. package/dist/core/index.js +9 -8
  211. package/dist/{ddl-D_oW-EVO.d.ts → ddl-B49O7dB_.d.ts} +3 -3
  212. package/dist/{ddl-BL1NZLMY.d.cts → ddl-DcZG660s.d.cts} +3 -3
  213. package/dist/graph-extension/index.cjs +21 -20
  214. package/dist/graph-extension/index.d.cts +4 -4
  215. package/dist/graph-extension/index.d.ts +4 -4
  216. package/dist/graph-extension/index.js +5 -4
  217. package/dist/graph-merge/index.cjs +305 -303
  218. package/dist/graph-merge/index.cjs.map +1 -1
  219. package/dist/graph-merge/index.d.cts +9 -9
  220. package/dist/graph-merge/index.d.ts +9 -9
  221. package/dist/graph-merge/index.js +29 -27
  222. package/dist/graph-merge/index.js.map +1 -1
  223. package/dist/{index-D7d1u2gr.d.ts → index-B0PrmE3K.d.cts} +16 -2
  224. package/dist/{index-COs_z6nV.d.cts → index-CwcXsL5R.d.ts} +16 -2
  225. package/dist/index.cjs +223 -222
  226. package/dist/index.cjs.map +1 -1
  227. package/dist/index.d.cts +12 -12
  228. package/dist/index.d.ts +12 -12
  229. package/dist/index.js +37 -36
  230. package/dist/index.js.map +1 -1
  231. package/dist/indexes/index.cjs +13 -13
  232. package/dist/indexes/index.d.cts +4 -4
  233. package/dist/indexes/index.d.ts +4 -4
  234. package/dist/indexes/index.js +6 -6
  235. package/dist/{ingestion-import-target-dNeL7iAv.d.ts → ingestion-import-target-CI8OWIkM.d.ts} +1 -1
  236. package/dist/{ingestion-import-target-XPxZYw89.d.cts → ingestion-import-target-DCpfM1PX.d.cts} +1 -1
  237. package/dist/interchange/index.cjs +55 -54
  238. package/dist/interchange/index.cjs.map +1 -1
  239. package/dist/interchange/index.d.cts +19 -8
  240. package/dist/interchange/index.d.ts +19 -8
  241. package/dist/interchange/index.js +19 -18
  242. package/dist/interchange/index.js.map +1 -1
  243. package/dist/{manager-D9eRT_ns.d.ts → manager-Cfg1ENj1.d.ts} +30 -2
  244. package/dist/{manager-CYaff3n3.d.cts → manager-D348fa6W.d.cts} +30 -2
  245. package/dist/{materialize-indexes-DJ3ykH59.d.ts → materialize-indexes-C9GG3O3C.d.ts} +1 -1
  246. package/dist/{materialize-indexes-DTtAnvfY.d.cts → materialize-indexes-CrSiW_lT.d.cts} +1 -1
  247. package/dist/{postgres-CcL4bAHS.d.ts → postgres-CH1kkM5J.d.cts} +279 -2
  248. package/dist/{postgres-DMj39MEu.d.cts → postgres-UStOycLI.d.ts} +279 -2
  249. package/dist/profiler/index.d.cts +9 -9
  250. package/dist/profiler/index.d.ts +9 -9
  251. package/dist/provenance/index.cjs +46 -44
  252. package/dist/provenance/index.cjs.map +1 -1
  253. package/dist/provenance/index.d.cts +7 -7
  254. package/dist/provenance/index.d.ts +7 -7
  255. package/dist/provenance/index.js +12 -10
  256. package/dist/provenance/index.js.map +1 -1
  257. package/dist/{repair-validity-windows-DlUSqwCg.d.ts → repair-validity-windows-BtOEe2pS.d.ts} +2 -2
  258. package/dist/{repair-validity-windows-BFNZvd_H.d.cts → repair-validity-windows-aWX7VNvv.d.cts} +2 -2
  259. package/dist/schema/index.cjs +46 -46
  260. package/dist/schema/index.d.cts +6 -6
  261. package/dist/schema/index.d.ts +6 -6
  262. package/dist/schema/index.js +19 -19
  263. package/dist/{searchable-DHJMh_nj.d.cts → searchable-C8-RrL3l.d.cts} +1 -1
  264. package/dist/{searchable-bpE1bBfc.d.ts → searchable-z4BiFfHI.d.ts} +1 -1
  265. package/dist/{sqlite-YppHrNFb.d.cts → sqlite-Cyx9j9o6.d.cts} +309 -2
  266. package/dist/{sqlite-D7Oz0SQh.d.ts → sqlite-axLw5Lo5.d.ts} +309 -2
  267. package/dist/{store-bphCSo7z.d.cts → store-CTfQ9taw.d.ts} +102 -13
  268. package/dist/{store-DRrFCx5x.d.ts → store-DR9J7JVB.d.cts} +102 -13
  269. package/dist/{temporal-5GqpYCk2.d.cts → temporal-B4Ky4wzh.d.cts} +1 -1
  270. package/dist/{temporal-CbnLzTmM.d.ts → temporal-CBOrERz5.d.ts} +1 -1
  271. package/dist/{types-CXAhpW-c.d.cts → types-BE921wRl.d.cts} +1 -1
  272. package/dist/{types-Bx74kaTt.d.ts → types-BScHXVM7.d.ts} +1 -1
  273. package/dist/{types-BqFZTQmV.d.cts → types-CWg4dTjj.d.cts} +257 -6
  274. package/dist/{types-BqFZTQmV.d.ts → types-CWg4dTjj.d.ts} +257 -6
  275. package/dist/{where-O-k2wgYm.d.ts → where-BWXUPV3C.d.ts} +1 -1
  276. package/dist/{where-DI_Fqz-X.d.cts → where-CNtx1aLc.d.cts} +1 -1
  277. package/package.json +3 -2
  278. package/dist/chunk-26YKDNUD.cjs.map +0 -1
  279. package/dist/chunk-3G5W2U2L.cjs.map +0 -1
  280. package/dist/chunk-3KOY4FH3.cjs +0 -934
  281. package/dist/chunk-3KOY4FH3.cjs.map +0 -1
  282. package/dist/chunk-3QNZ5SAJ.cjs.map +0 -1
  283. package/dist/chunk-3U5ABFDW.cjs.map +0 -1
  284. package/dist/chunk-5K2BKEBD.js.map +0 -1
  285. package/dist/chunk-5PRKMB24.cjs.map +0 -1
  286. package/dist/chunk-6LN7FIVU.js.map +0 -1
  287. package/dist/chunk-6SWPJEYN.js.map +0 -1
  288. package/dist/chunk-7LZJNLA5.js.map +0 -1
  289. package/dist/chunk-BFUOME67.cjs.map +0 -1
  290. package/dist/chunk-BRRP76WO.js.map +0 -1
  291. package/dist/chunk-CICO5GXD.cjs +0 -12
  292. package/dist/chunk-D4QLTJSM.js.map +0 -1
  293. package/dist/chunk-D5R42W5D.js.map +0 -1
  294. package/dist/chunk-EZEEWCFJ.cjs.map +0 -1
  295. package/dist/chunk-FA2AFWLP.cjs +0 -167
  296. package/dist/chunk-FA2AFWLP.cjs.map +0 -1
  297. package/dist/chunk-FQPEMEWX.cjs.map +0 -1
  298. package/dist/chunk-GLHXM7C4.js.map +0 -1
  299. package/dist/chunk-GYEG3ZLZ.cjs.map +0 -1
  300. package/dist/chunk-HDL2ARHX.cjs.map +0 -1
  301. package/dist/chunk-HEV35TGT.js.map +0 -1
  302. package/dist/chunk-I4GAZH5Z.js +0 -913
  303. package/dist/chunk-I4GAZH5Z.js.map +0 -1
  304. package/dist/chunk-JB6T4GLL.cjs.map +0 -1
  305. package/dist/chunk-JBQQ7THH.js +0 -20
  306. package/dist/chunk-JBQQ7THH.js.map +0 -1
  307. package/dist/chunk-JFRT7S3B.cjs.map +0 -1
  308. package/dist/chunk-KF6K7TGH.js.map +0 -1
  309. package/dist/chunk-LTXQOEIC.js.map +0 -1
  310. package/dist/chunk-MKJ4KXL5.cjs +0 -12
  311. package/dist/chunk-MRDBBHIZ.cjs.map +0 -1
  312. package/dist/chunk-NVY5CJFP.js.map +0 -1
  313. package/dist/chunk-PWLJ77UV.cjs +0 -23
  314. package/dist/chunk-PWLJ77UV.cjs.map +0 -1
  315. package/dist/chunk-S5TERQVW.js.map +0 -1
  316. package/dist/chunk-SHFBB23Q.js.map +0 -1
  317. package/dist/chunk-SIT26LAZ.cjs.map +0 -1
  318. package/dist/chunk-SR725PWF.cjs.map +0 -1
  319. package/dist/chunk-TQHGE7UC.cjs.map +0 -1
  320. package/dist/chunk-UGHG7PGX.js.map +0 -1
  321. package/dist/chunk-UGHQV7MP.cjs.map +0 -1
  322. package/dist/chunk-YIURNGXI.js +0 -155
  323. package/dist/chunk-YIURNGXI.js.map +0 -1
  324. package/dist/chunk-YYUHLYM2.cjs.map +0 -1
  325. package/dist/chunk-Z2JCLZFJ.js.map +0 -1
  326. package/dist/chunk-ZFMCDJGB.js.map +0 -1
  327. package/dist/chunk-ZLONH2UD.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { createPostgresBackend } from './chunk-7LZJNLA5.js';
2
- import { tables, generatePostgresMigrationSQL, generatePostgresDDL } from './chunk-6SWPJEYN.js';
3
- import { wrapWithManagedClose } from './chunk-UGHG7PGX.js';
4
- import { closeAfterFailure } from './chunk-6LN7FIVU.js';
5
- import { ConfigurationError } from './chunk-ZLONH2UD.js';
1
+ import { createPostgresBackend } from './chunk-JG5XIJDY.js';
2
+ import { tables, generatePostgresMigrationSQL, generatePostgresDDL } from './chunk-6LEOAIIB.js';
3
+ import { wrapWithManagedClose } from './chunk-IRPYOHRC.js';
4
+ import { closeAfterFailure } from './chunk-PALYTHGM.js';
5
+ import { ConfigurationError } from './chunk-YDEJQWOL.js';
6
6
  import { PGlite } from '@electric-sql/pglite';
7
7
  import { drizzle } from 'drizzle-orm/pglite';
8
8
 
@@ -44,5 +44,5 @@ async function createLocalPgliteBackend(options = {}) {
44
44
  }
45
45
 
46
46
  export { createLocalPgliteBackend };
47
- //# sourceMappingURL=chunk-JPD2CTC3.js.map
48
- //# sourceMappingURL=chunk-JPD2CTC3.js.map
47
+ //# sourceMappingURL=chunk-S33YQEL7.js.map
48
+ //# sourceMappingURL=chunk-S33YQEL7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/backend/postgres/pglite.ts"],"names":["tables"],"mappings":";;;;;;;;AAqIA,eAAe,4BAAA,GAAmD;AAChE,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,MAAM,OAAO,+BAA+B,CAAA;AAC5D,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,EACjB,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,2PAAA;AAAA,MAIA,EAAE,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,+BAAA,EAAgC;AAAA,MACjE,EAAE,OAAO,KAAA;AAAM,KACjB;AAAA,EACF;AACF;AAoBA,eAAsB,wBAAA,CACpB,OAAA,GAAqC,EAAC,EACH;AACnC,EAAA,MAAMA,OAAAA,GAAS,QAAQ,MAAA,IAAU,MAAA;AAMjC,EAAA,MAAM,eAAA,GACJ,QAAQ,MAAA,KAAW,KAAA,GACjB,SACC,OAAA,CAAQ,MAAA,IAAW,MAAM,4BAAA,EAA6B;AAC3D,EAAA,MAAM,gBAAgB,eAAA,KAAoB,MAAA;AAO1C,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,MAAA,CAAO;AAAA,IACjC,GAAI,QAAQ,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAQ;AAAA,IACpE,GAAI,eAAA,KAAoB,MAAA,GACtB,EAAC,GACD,EAAE,UAAA,EAAY,EAAE,MAAA,EAAQ,eAAA,EAAgB;AAAE,GAC7C,CAAA;AAED,EAAA,IAAI;AAGF,IAAA,MAAM,YAAA,GACJ,gBACE,4BAAA,CAA6BA,OAAM,IACnC,mBAAA,CAAoBA,OAAM,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AAC3C,IAAA,MAAM,MAAA,CAAO,KAAK,YAAY,CAAA;AAE9B,IAAA,MAAM,EAAA,GAAK,QAAQ,MAAM,CAAA;AACzB,IAAA,MAAM,OAAA,GAAU,sBAAsB,EAAA,EAAI;AAAA,MACxC,MAAA,EAAAA,OAAAA;AAAA,MACA,GAAI,aAAA,GAAgB,EAAC,GAAI,EAAE,QAAQ,KAAA;AAAM,KAC1C,CAAA;AACD,IAAA,MAAM,cAAA,GAAiB,oBAAA,CAAqB,OAAA,EAAS,YAAY;AAC/D,MAAA,MAAM,OAAO,KAAA,EAAM;AAAA,IACrB,CAAC,CAAA;AAED,IAAA,OAAO,EAAE,OAAA,EAAS,cAAA,EAAgB,EAAA,EAAI,MAAA,EAAO;AAAA,EAC/C,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,iBAAA,CAAkB,QAAQ,KAAK,CAAA;AAAA,EACxC;AACF","file":"chunk-JPD2CTC3.js","sourcesContent":["/**\n * Local PGlite backend — Postgres-in-WASM, running in-process.\n *\n * [PGlite](https://pglite.dev/) is a full Postgres compiled to WebAssembly\n * that runs inside the Node/Bun/Deno/browser process with no server and no\n * native addon. This is the batteries-included Postgres analog of\n * `createLocalSqliteBackend`: it constructs a PGlite instance, loads the\n * pgvector extension, runs the schema DDL, and returns a ready\n * `{ backend, db }` pair whose `close()` disposes the engine.\n *\n * `@electric-sql/pglite` is an optional peer dependency. Vector support\n * additionally needs `@electric-sql/pglite-pgvector` (PGlite ≥ 0.5 ships\n * pgvector as a separate package). Install what you need:\n *\n * ```bash\n * pnpm add @electric-sql/pglite @electric-sql/pglite-pgvector\n * ```\n *\n * @example In-memory database (default, vector enabled)\n * ```typescript\n * import { createLocalPgliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/postgres/pglite\";\n *\n * const { backend } = await createLocalPgliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example Persistent on-disk database\n * ```typescript\n * const { backend, db } = await createLocalPgliteBackend({ dataDir: \"./pgdata\" });\n * ```\n *\n * @example No vector support (skip the pgvector extension)\n * ```typescript\n * const { backend } = await createLocalPgliteBackend({ vector: false });\n * ```\n *\n * PGlite is single-connection and serial: there is no pooling, so concurrent\n * `store.transaction()` calls queue rather than run in parallel.\n */\nimport { type Extension, PGlite } from \"@electric-sql/pglite\";\nimport { drizzle, type PgliteDatabase } from \"drizzle-orm/pglite\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { wrapWithManagedClose } from \"../derive-backend\";\nexport type { GraphIdentityConfig } from \"../../core/define-graph\";\nimport {\n generatePostgresDDL,\n generatePostgresMigrationSQL,\n} from \"../drizzle/ddl\";\nimport { type AnyPgTransaction } from \"../drizzle/execution\";\nexport type { AnyPgDatabase, AnyPgTransaction } from \"../drizzle/execution\";\nimport {\n createPostgresBackend,\n type PostgresTables,\n tables as defaultTables,\n} from \"../drizzle/postgres\";\nimport { type AdapterBackend, closeAfterFailure } from \"../types\";\nexport type {\n ContributionDiagnostic,\n ContributionDiagnosticState,\n ContributionRepairEntry,\n ContributionRepairResult,\n} from \"../types\";\n\n// ============================================================\n// Types\n// ============================================================\n\n/**\n * Options for creating a local PGlite backend.\n */\nexport type LocalPgliteBackendOptions = Readonly<{\n /**\n * PGlite data directory. Omit for an in-memory database (the default).\n * Accepts any PGlite data-dir spec: a filesystem path (`\"./pgdata\"`),\n * `\"memory://\"`, or a browser/runtime-specific scheme such as\n * `\"idb://my-db\"`.\n */\n dataDir?: string;\n\n /**\n * Custom table definitions. Defaults to standard TypeGraph table names.\n */\n tables?: PostgresTables;\n\n /**\n * Controls the pgvector stack:\n *\n * - **omitted (default)** — load pgvector from `@electric-sql/pglite-pgvector`\n * and run `CREATE EXTENSION vector`, so embedding fields work out of the\n * box. Throws a {@link ConfigurationError} if the package isn't installed.\n * - **`false`** — skip the extension entirely; the backend advertises no\n * vector capability (mirroring a SQLite connection without sqlite-vec).\n * Use when a graph carries no embeddings, or to avoid the extension dep.\n * - **a PGlite `Extension`** — bring your own pgvector build or custom\n * extension packaging. Decouples this helper from a specific pgvector\n * package version.\n */\n vector?: false | Extension;\n}>;\n\n/**\n * Result of creating a local PGlite backend.\n */\nexport type LocalPgliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore. Its `close()`\n * disposes the underlying PGlite engine.\n */\n backend: AdapterBackend<AnyPgTransaction>;\n\n /**\n * The underlying Drizzle database instance. Useful for direct SQL access.\n */\n db: PgliteDatabase;\n\n /**\n * The raw PGlite instance, for engine-specific operations such as\n * `dumpDataDir()` / `clone()` not surfaced through Drizzle.\n */\n client: PGlite;\n}>;\n\n// ============================================================\n// Vector extension loading\n// ============================================================\n\n/**\n * Dynamically loads the default pgvector extension from\n * `@electric-sql/pglite-pgvector`. Kept as a runtime import so the package\n * stays an optional peer dependency — callers using `vector: false` or\n * supplying their own extension never need it installed.\n */\nasync function loadDefaultPgvectorExtension(): Promise<Extension> {\n try {\n const module_ = await import(\"@electric-sql/pglite-pgvector\");\n return module_.vector;\n } catch (error) {\n throw new ConfigurationError(\n \"createLocalPgliteBackend needs the pgvector extension but \" +\n \"`@electric-sql/pglite-pgvector` could not be loaded. Install it \" +\n \"(`pnpm add @electric-sql/pglite-pgvector`), pass your own `vector` \" +\n \"extension, or set `vector: false` to disable vector support.\",\n { backend: \"pglite\", dependency: \"@electric-sql/pglite-pgvector\" },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a TypeGraph backend backed by an in-process PGlite database.\n *\n * Constructs the PGlite engine (loading pgvector unless disabled), executes\n * the schema DDL, and wires the standard Postgres backend. The returned\n * backend owns the engine: call `backend.close()` to dispose it.\n *\n * For production Postgres, or a PGlite instance you construct yourself,\n * use `createPostgresBackend` directly with your own Drizzle database — the\n * execution fast path detects PGlite and routes it correctly.\n *\n * @param options - Configuration options\n * @returns Backend, Drizzle database, and raw PGlite client\n */\nexport async function createLocalPgliteBackend(\n options: LocalPgliteBackendOptions = {},\n): Promise<LocalPgliteBackendResult> {\n const tables = options.tables ?? defaultTables;\n\n // pgvector lives in the WASM instance, so the extension must be passed at\n // construction — `CREATE EXTENSION vector` alone can't pull it in. An\n // explicitly supplied extension wins; `false` disables; otherwise load the\n // default package.\n const vectorExtension =\n options.vector === false ?\n undefined\n : (options.vector ?? (await loadDefaultPgvectorExtension()));\n const vectorEnabled = vectorExtension !== undefined;\n\n // Construct via the single options-object form (passing `dataDir` as a\n // field), not the positional `create(dataDir, options)` overload: with a\n // leading `undefined` dataDir, that overload silently drops `extensions`\n // (\"extension vector is not available\"). The options form loads them for\n // both the in-memory and on-disk cases.\n const client = await PGlite.create({\n ...(options.dataDir === undefined ? {} : { dataDir: options.dataDir }),\n ...(vectorExtension === undefined ?\n {}\n : { extensions: { vector: vectorExtension } }),\n });\n\n try {\n // `exec` runs a multi-statement batch (DDL + the pgvector `CREATE\n // EXTENSION` when enabled) in one round trip.\n const migrationSql =\n vectorEnabled ?\n generatePostgresMigrationSQL(tables)\n : generatePostgresDDL(tables).join(\"\\n\\n\");\n await client.exec(migrationSql);\n\n const db = drizzle(client);\n const backend = createPostgresBackend(db, {\n tables,\n ...(vectorEnabled ? {} : { vector: false }),\n });\n const managedBackend = wrapWithManagedClose(backend, async () => {\n await client.close();\n });\n\n return { backend: managedBackend, db, client };\n } catch (error) {\n return closeAfterFailure(client, error);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/backend/postgres/pglite.ts"],"names":["tables"],"mappings":";;;;;;;;AAqIA,eAAe,4BAAA,GAAmD;AAChE,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,MAAM,OAAO,+BAA+B,CAAA;AAC5D,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,EACjB,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,2PAAA;AAAA,MAIA,EAAE,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,+BAAA,EAAgC;AAAA,MACjE,EAAE,OAAO,KAAA;AAAM,KACjB;AAAA,EACF;AACF;AAoBA,eAAsB,wBAAA,CACpB,OAAA,GAAqC,EAAC,EACH;AACnC,EAAA,MAAMA,OAAAA,GAAS,QAAQ,MAAA,IAAU,MAAA;AAMjC,EAAA,MAAM,eAAA,GACJ,QAAQ,MAAA,KAAW,KAAA,GACjB,SACC,OAAA,CAAQ,MAAA,IAAW,MAAM,4BAAA,EAA6B;AAC3D,EAAA,MAAM,gBAAgB,eAAA,KAAoB,MAAA;AAO1C,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,MAAA,CAAO;AAAA,IACjC,GAAI,QAAQ,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAQ;AAAA,IACpE,GAAI,eAAA,KAAoB,MAAA,GACtB,EAAC,GACD,EAAE,UAAA,EAAY,EAAE,MAAA,EAAQ,eAAA,EAAgB;AAAE,GAC7C,CAAA;AAED,EAAA,IAAI;AAGF,IAAA,MAAM,YAAA,GACJ,gBACE,4BAAA,CAA6BA,OAAM,IACnC,mBAAA,CAAoBA,OAAM,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AAC3C,IAAA,MAAM,MAAA,CAAO,KAAK,YAAY,CAAA;AAE9B,IAAA,MAAM,EAAA,GAAK,QAAQ,MAAM,CAAA;AACzB,IAAA,MAAM,OAAA,GAAU,sBAAsB,EAAA,EAAI;AAAA,MACxC,MAAA,EAAAA,OAAAA;AAAA,MACA,GAAI,aAAA,GAAgB,EAAC,GAAI,EAAE,QAAQ,KAAA;AAAM,KAC1C,CAAA;AACD,IAAA,MAAM,cAAA,GAAiB,oBAAA,CAAqB,OAAA,EAAS,YAAY;AAC/D,MAAA,MAAM,OAAO,KAAA,EAAM;AAAA,IACrB,CAAC,CAAA;AAED,IAAA,OAAO,EAAE,OAAA,EAAS,cAAA,EAAgB,EAAA,EAAI,MAAA,EAAO;AAAA,EAC/C,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,iBAAA,CAAkB,QAAQ,KAAK,CAAA;AAAA,EACxC;AACF","file":"chunk-S33YQEL7.js","sourcesContent":["/**\n * Local PGlite backend — Postgres-in-WASM, running in-process.\n *\n * [PGlite](https://pglite.dev/) is a full Postgres compiled to WebAssembly\n * that runs inside the Node/Bun/Deno/browser process with no server and no\n * native addon. This is the batteries-included Postgres analog of\n * `createLocalSqliteBackend`: it constructs a PGlite instance, loads the\n * pgvector extension, runs the schema DDL, and returns a ready\n * `{ backend, db }` pair whose `close()` disposes the engine.\n *\n * `@electric-sql/pglite` is an optional peer dependency. Vector support\n * additionally needs `@electric-sql/pglite-pgvector` (PGlite ≥ 0.5 ships\n * pgvector as a separate package). Install what you need:\n *\n * ```bash\n * pnpm add @electric-sql/pglite @electric-sql/pglite-pgvector\n * ```\n *\n * @example In-memory database (default, vector enabled)\n * ```typescript\n * import { createLocalPgliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/postgres/pglite\";\n *\n * const { backend } = await createLocalPgliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example Persistent on-disk database\n * ```typescript\n * const { backend, db } = await createLocalPgliteBackend({ dataDir: \"./pgdata\" });\n * ```\n *\n * @example No vector support (skip the pgvector extension)\n * ```typescript\n * const { backend } = await createLocalPgliteBackend({ vector: false });\n * ```\n *\n * PGlite is single-connection and serial: there is no pooling, so concurrent\n * `store.transaction()` calls queue rather than run in parallel.\n */\nimport { type Extension, PGlite } from \"@electric-sql/pglite\";\nimport { drizzle, type PgliteDatabase } from \"drizzle-orm/pglite\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { wrapWithManagedClose } from \"../derive-backend\";\nexport type { GraphIdentityConfig } from \"../../core/define-graph\";\nimport {\n generatePostgresDDL,\n generatePostgresMigrationSQL,\n} from \"../drizzle/ddl\";\nimport { type AnyPgTransaction } from \"../drizzle/execution\";\nexport type { AnyPgDatabase, AnyPgTransaction } from \"../drizzle/execution\";\nimport {\n createPostgresBackend,\n type PostgresTables,\n tables as defaultTables,\n} from \"../drizzle/postgres\";\nimport { type AdapterBackend, closeAfterFailure } from \"../types\";\nexport type {\n ContributionDiagnostic,\n ContributionDiagnosticState,\n ContributionRepairEntry,\n ContributionRepairResult,\n} from \"../types\";\n\n// ============================================================\n// Types\n// ============================================================\n\n/**\n * Options for creating a local PGlite backend.\n */\nexport type LocalPgliteBackendOptions = Readonly<{\n /**\n * PGlite data directory. Omit for an in-memory database (the default).\n * Accepts any PGlite data-dir spec: a filesystem path (`\"./pgdata\"`),\n * `\"memory://\"`, or a browser/runtime-specific scheme such as\n * `\"idb://my-db\"`.\n */\n dataDir?: string;\n\n /**\n * Custom table definitions. Defaults to standard TypeGraph table names.\n */\n tables?: PostgresTables;\n\n /**\n * Controls the pgvector stack:\n *\n * - **omitted (default)** — load pgvector from `@electric-sql/pglite-pgvector`\n * and run `CREATE EXTENSION vector`, so embedding fields work out of the\n * box. Throws a {@link ConfigurationError} if the package isn't installed.\n * - **`false`** — skip the extension entirely; the backend advertises no\n * vector capability (mirroring a SQLite connection without sqlite-vec).\n * Use when a graph carries no embeddings, or to avoid the extension dep.\n * - **a PGlite `Extension`** — bring your own pgvector build or custom\n * extension packaging. Decouples this helper from a specific pgvector\n * package version.\n */\n vector?: false | Extension;\n}>;\n\n/**\n * Result of creating a local PGlite backend.\n */\nexport type LocalPgliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore. Its `close()`\n * disposes the underlying PGlite engine.\n */\n backend: AdapterBackend<AnyPgTransaction>;\n\n /**\n * The underlying Drizzle database instance. Useful for direct SQL access.\n */\n db: PgliteDatabase;\n\n /**\n * The raw PGlite instance, for engine-specific operations such as\n * `dumpDataDir()` / `clone()` not surfaced through Drizzle.\n */\n client: PGlite;\n}>;\n\n// ============================================================\n// Vector extension loading\n// ============================================================\n\n/**\n * Dynamically loads the default pgvector extension from\n * `@electric-sql/pglite-pgvector`. Kept as a runtime import so the package\n * stays an optional peer dependency — callers using `vector: false` or\n * supplying their own extension never need it installed.\n */\nasync function loadDefaultPgvectorExtension(): Promise<Extension> {\n try {\n const module_ = await import(\"@electric-sql/pglite-pgvector\");\n return module_.vector;\n } catch (error) {\n throw new ConfigurationError(\n \"createLocalPgliteBackend needs the pgvector extension but \" +\n \"`@electric-sql/pglite-pgvector` could not be loaded. Install it \" +\n \"(`pnpm add @electric-sql/pglite-pgvector`), pass your own `vector` \" +\n \"extension, or set `vector: false` to disable vector support.\",\n { backend: \"pglite\", dependency: \"@electric-sql/pglite-pgvector\" },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a TypeGraph backend backed by an in-process PGlite database.\n *\n * Constructs the PGlite engine (loading pgvector unless disabled), executes\n * the schema DDL, and wires the standard Postgres backend. The returned\n * backend owns the engine: call `backend.close()` to dispose it.\n *\n * For production Postgres, or a PGlite instance you construct yourself,\n * use `createPostgresBackend` directly with your own Drizzle database — the\n * execution fast path detects PGlite and routes it correctly.\n *\n * @param options - Configuration options\n * @returns Backend, Drizzle database, and raw PGlite client\n */\nexport async function createLocalPgliteBackend(\n options: LocalPgliteBackendOptions = {},\n): Promise<LocalPgliteBackendResult> {\n const tables = options.tables ?? defaultTables;\n\n // pgvector lives in the WASM instance, so the extension must be passed at\n // construction — `CREATE EXTENSION vector` alone can't pull it in. An\n // explicitly supplied extension wins; `false` disables; otherwise load the\n // default package.\n const vectorExtension =\n options.vector === false ?\n undefined\n : (options.vector ?? (await loadDefaultPgvectorExtension()));\n const vectorEnabled = vectorExtension !== undefined;\n\n // Construct via the single options-object form (passing `dataDir` as a\n // field), not the positional `create(dataDir, options)` overload: with a\n // leading `undefined` dataDir, that overload silently drops `extensions`\n // (\"extension vector is not available\"). The options form loads them for\n // both the in-memory and on-disk cases.\n const client = await PGlite.create({\n ...(options.dataDir === undefined ? {} : { dataDir: options.dataDir }),\n ...(vectorExtension === undefined ?\n {}\n : { extensions: { vector: vectorExtension } }),\n });\n\n try {\n // `exec` runs a multi-statement batch (DDL + the pgvector `CREATE\n // EXTENSION` when enabled) in one round trip.\n const migrationSql =\n vectorEnabled ?\n generatePostgresMigrationSQL(tables)\n : generatePostgresDDL(tables).join(\"\\n\\n\");\n await client.exec(migrationSql);\n\n const db = drizzle(client);\n const backend = createPostgresBackend(db, {\n tables,\n ...(vectorEnabled ? {} : { vector: false }),\n });\n const managedBackend = wrapWithManagedClose(backend, async () => {\n await client.close();\n });\n\n return { backend: managedBackend, db, client };\n } catch (error) {\n return closeAfterFailure(client, error);\n }\n}\n"]}
@@ -0,0 +1,532 @@
1
+ import { edgeCardinalityClaimTarget, EDGE_CARDINALITY_SPECS, edgeCardinalityAxesForKind } from './chunk-YA36ABIL.js';
2
+ import { rowPropsToJsonText } from './chunk-PALYTHGM.js';
3
+ import { claimOwnerMatchesSql } from './chunk-5LKOVCPP.js';
4
+ import { canonicalizeDatabaseTimestamp } from './chunk-K46SDNQD.js';
5
+ import { sql as sql$1 } from './chunk-46UGOVRW.js';
6
+ import { DatabaseOperationError } from './chunk-YDEJQWOL.js';
7
+ import { getTableName, sql } from 'drizzle-orm';
8
+
9
+ // src/backend/row-mappers.ts
10
+ function asString(value, field) {
11
+ if (typeof value !== "string") {
12
+ throw new DatabaseOperationError(
13
+ `Expected ${field} to be string, got ${typeof value}`,
14
+ { operation: "select", entity: "row" }
15
+ );
16
+ }
17
+ return value;
18
+ }
19
+ function asNumber(value, field) {
20
+ if (typeof value !== "number") {
21
+ throw new DatabaseOperationError(
22
+ `Expected ${field} to be number, got ${typeof value}`,
23
+ { operation: "select", entity: "row" }
24
+ );
25
+ }
26
+ return value;
27
+ }
28
+ function nowIso() {
29
+ return (/* @__PURE__ */ new Date()).toISOString();
30
+ }
31
+ function formatPostgresTimestamp(value) {
32
+ if (value === null || value === void 0) return void 0;
33
+ if (value instanceof Date) return value.toISOString();
34
+ if (typeof value === "string") {
35
+ if (value.includes("T")) return value;
36
+ const date = new Date(value);
37
+ if (!Number.isNaN(date.getTime())) return date.toISOString();
38
+ return value;
39
+ }
40
+ return void 0;
41
+ }
42
+ function normalizeRowTimestamp(value, field) {
43
+ if (value === null || value === void 0) return void 0;
44
+ const canonical = canonicalizeDatabaseTimestamp(value);
45
+ if (canonical === void 0) {
46
+ throw new DatabaseOperationError(
47
+ `Expected ${field} to be a database timestamp, got ${typeof value}`,
48
+ { operation: "select", entity: "row" }
49
+ );
50
+ }
51
+ return canonical;
52
+ }
53
+ function normalizeRequiredRowTimestamp(value, field) {
54
+ const timestamp = normalizeRowTimestamp(value, field);
55
+ if (timestamp === void 0) {
56
+ throw new DatabaseOperationError(`Expected non-null ${field} timestamp`, {
57
+ operation: "select",
58
+ entity: "row"
59
+ });
60
+ }
61
+ return timestamp;
62
+ }
63
+ function coerceNumericScore(value) {
64
+ if (typeof value === "number") return value;
65
+ const parsed = Number.parseFloat(value);
66
+ if (Number.isNaN(parsed)) {
67
+ throw new TypeError(
68
+ `Backend returned non-numeric fulltext score: ${JSON.stringify(value)}`
69
+ );
70
+ }
71
+ return parsed;
72
+ }
73
+ function normalizeJsonColumn(value) {
74
+ if (typeof value === "string") return value;
75
+ if (value !== null && typeof value === "object") {
76
+ return value;
77
+ }
78
+ return JSON.stringify(value ?? {});
79
+ }
80
+ var SQLITE_ROW_MAPPER_CONFIG = {
81
+ normalizeJson: (value) => {
82
+ if (typeof value !== "string") {
83
+ throw new DatabaseOperationError(
84
+ `Expected JSON column to be string, got ${typeof value}`,
85
+ { operation: "select", entity: "row" }
86
+ );
87
+ }
88
+ return value;
89
+ }
90
+ };
91
+ var POSTGRES_ROW_MAPPER_CONFIG = {
92
+ normalizeJson: normalizeJsonColumn
93
+ };
94
+ function createNodeRowMapper(config) {
95
+ return (row) => ({
96
+ graph_id: asString(row["graph_id"], "graph_id"),
97
+ kind: asString(row["kind"], "kind"),
98
+ id: asString(row["id"], "id"),
99
+ props: config.normalizeJson(row["props"]),
100
+ version: asNumber(row["version"], "version"),
101
+ valid_from: normalizeRowTimestamp(row["valid_from"], "valid_from"),
102
+ valid_to: normalizeRowTimestamp(row["valid_to"], "valid_to"),
103
+ created_at: normalizeRequiredRowTimestamp(row["created_at"], "created_at"),
104
+ updated_at: normalizeRequiredRowTimestamp(row["updated_at"], "updated_at"),
105
+ deleted_at: normalizeRowTimestamp(row["deleted_at"], "deleted_at")
106
+ });
107
+ }
108
+ function createEdgeRowMapper(config) {
109
+ return (row) => ({
110
+ graph_id: asString(row["graph_id"], "graph_id"),
111
+ id: asString(row["id"], "id"),
112
+ kind: asString(row["kind"], "kind"),
113
+ from_kind: asString(row["from_kind"], "from_kind"),
114
+ from_id: asString(row["from_id"], "from_id"),
115
+ to_kind: asString(row["to_kind"], "to_kind"),
116
+ to_id: asString(row["to_id"], "to_id"),
117
+ props: config.normalizeJson(row["props"]),
118
+ valid_from: normalizeRowTimestamp(row["valid_from"], "valid_from"),
119
+ valid_to: normalizeRowTimestamp(row["valid_to"], "valid_to"),
120
+ created_at: normalizeRequiredRowTimestamp(row["created_at"], "created_at"),
121
+ updated_at: normalizeRequiredRowTimestamp(row["updated_at"], "updated_at"),
122
+ deleted_at: normalizeRowTimestamp(row["deleted_at"], "deleted_at")
123
+ });
124
+ }
125
+ function mapUniqueRow(row) {
126
+ return {
127
+ graph_id: asString(row["graph_id"], "graph_id"),
128
+ node_kind: asString(row["node_kind"], "node_kind"),
129
+ constraint_name: asString(row["constraint_name"], "constraint_name"),
130
+ key: asString(row["key"], "key"),
131
+ node_id: asString(row["node_id"], "node_id"),
132
+ concrete_kind: asString(row["concrete_kind"], "concrete_kind"),
133
+ deleted_at: normalizeRowTimestamp(row["deleted_at"], "deleted_at")
134
+ };
135
+ }
136
+ function createUniqueRowMapper(_config) {
137
+ return mapUniqueRow;
138
+ }
139
+ function createSchemaVersionRowMapper(config) {
140
+ return (row) => {
141
+ const isActiveValue = row["is_active"];
142
+ const isActive = isActiveValue === true || isActiveValue === 1 || isActiveValue === "1";
143
+ return {
144
+ graph_id: asString(row["graph_id"], "graph_id"),
145
+ version: asNumber(row["version"], "version"),
146
+ schema_hash: asString(row["schema_hash"], "schema_hash"),
147
+ schema_doc: rowPropsToJsonText(config.normalizeJson(row["schema_doc"])),
148
+ created_at: normalizeRequiredRowTimestamp(
149
+ row["created_at"],
150
+ "created_at"
151
+ ),
152
+ is_active: isActive
153
+ };
154
+ };
155
+ }
156
+ function primaryKeyConstraintNames(relation, keyColumns) {
157
+ return [`${relation}_pkey`, `${relation}_${keyColumns.join("_")}_pk`];
158
+ }
159
+ function nodePrimaryKeyConstraint(nodes) {
160
+ const relation = getTableName(nodes);
161
+ return {
162
+ table: relation,
163
+ constraintNames: primaryKeyConstraintNames(relation, [
164
+ nodes.graphId.name,
165
+ nodes.kind.name,
166
+ nodes.id.name
167
+ ])
168
+ };
169
+ }
170
+ function edgePrimaryKeyConstraint(edges) {
171
+ const relation = getTableName(edges);
172
+ return {
173
+ table: relation,
174
+ constraintNames: primaryKeyConstraintNames(relation, [
175
+ edges.graphId.name,
176
+ edges.id.name
177
+ ])
178
+ };
179
+ }
180
+ function sqlNull(value) {
181
+ return value ?? sql.raw("NULL");
182
+ }
183
+ function expectedValidFromPredicate(column, expected) {
184
+ if (expected === void 0) return sql.empty();
185
+ if (expected === null) return sql` AND ${column} IS NULL`;
186
+ return sql` AND ${column} = ${expected}`;
187
+ }
188
+ function quotedColumn(column) {
189
+ return sql.raw(`"${column.name.replaceAll('"', '""')}"`);
190
+ }
191
+ function quotedTableName(tableName) {
192
+ return sql.raw(`"${tableName.replaceAll('"', '""')}"`);
193
+ }
194
+ var CODE_POINT_ORDER_BUILDERS = {
195
+ postgres: (value) => sql`${value} COLLATE "C"`,
196
+ sqlite: (value) => value
197
+ };
198
+ function codePointOrderKey(column, dialect) {
199
+ return CODE_POINT_ORDER_BUILDERS[dialect](column);
200
+ }
201
+ function liveNodeIdsSubquery(nodes, graphId, nodeKind, nowIso2) {
202
+ return sql`SELECT ${nodes.id} AS node_id FROM ${nodes} WHERE ${nodes.graphId} = ${graphId} AND ${nodes.kind} = ${nodeKind} AND ${nodes.deletedAt} IS NULL AND (${nodes.validFrom} IS NULL OR ${nodes.validFrom} <= ${nowIso2}) AND (${nodes.validTo} IS NULL OR ${nodes.validTo} > ${nowIso2})`;
203
+ }
204
+ function nodeColumnList(nodes) {
205
+ return sql.raw(
206
+ `"${nodes.graphId.name}", "${nodes.kind.name}", "${nodes.id.name}", "${nodes.props.name}", "${nodes.version.name}", "${nodes.validFrom.name}", "${nodes.validTo.name}", "${nodes.createdAt.name}", "${nodes.updatedAt.name}"`
207
+ );
208
+ }
209
+ function edgeColumnList(edges) {
210
+ return sql.raw(
211
+ `"${edges.graphId.name}", "${edges.id.name}", "${edges.kind.name}", "${edges.fromKind.name}", "${edges.fromId.name}", "${edges.toKind.name}", "${edges.toId.name}", "${edges.props.name}", "${edges.validFrom.name}", "${edges.validTo.name}", "${edges.createdAt.name}", "${edges.updatedAt.name}"`
212
+ );
213
+ }
214
+ function qualified(tableName, column) {
215
+ return sql.raw(`"${tableName}"."${column.name}"`);
216
+ }
217
+ function buildLockEdgeClaims(tables, entries, timestamp) {
218
+ const { edgeClaims } = tables;
219
+ const claimsName = getTableName(edgeClaims);
220
+ const columns = sql.raw(
221
+ `"${edgeClaims.graphId.name}", "${edgeClaims.axis.name}", "${edgeClaims.key.name}", "${edgeClaims.edgeId.name}", "${edgeClaims.updatedAt.name}"`
222
+ );
223
+ const conflictColumns = sql.raw(
224
+ `"${edgeClaims.graphId.name}", "${edgeClaims.axis.name}", "${edgeClaims.key.name}"`
225
+ );
226
+ const valueRows = sql.join(
227
+ entries.map((entry) => {
228
+ const target = edgeCardinalityClaimTarget(entry);
229
+ return sql`(${entry.graphId}, ${target.axis}, ${target.key}, ${entry.edgeId}, ${timestamp})`;
230
+ }),
231
+ sql`, `
232
+ );
233
+ return sql`
234
+ INSERT INTO ${edgeClaims} (${columns})
235
+ VALUES ${valueRows}
236
+ ON CONFLICT (${conflictColumns})
237
+ DO UPDATE SET ${quotedColumn(edgeClaims.updatedAt)} = ${qualified(claimsName, edgeClaims.updatedAt)}
238
+ RETURNING
239
+ ${quotedColumn(edgeClaims.axis)} as axis,
240
+ ${quotedColumn(edgeClaims.key)} as key,
241
+ ${quotedColumn(edgeClaims.edgeId)} as holder_edge_id
242
+ `;
243
+ }
244
+ function buildTakeOverEdgeClaim(tables, params, timestamp) {
245
+ const { edgeClaims, edges } = tables;
246
+ const claimsName = getTableName(edgeClaims);
247
+ const edgesName = getTableName(edges);
248
+ const spec = EDGE_CARDINALITY_SPECS[params.cardinality];
249
+ const target = edgeCardinalityClaimTarget(params);
250
+ const toEndpointTerms = spec.keyShape === "fromAndTo" ? sql` AND ${qualified(edgesName, edges.toKind)} = ${params.toKind} AND ${qualified(edgesName, edges.toId)} = ${params.toId}` : sql``;
251
+ const activeTerm = spec.holderLiveness === "liveAndActive" ? sql` AND ${qualified(edgesName, edges.validTo)} IS NULL` : sql``;
252
+ return sql`
253
+ UPDATE ${edgeClaims}
254
+ SET ${quotedColumn(edgeClaims.edgeId)} = ${params.edgeId},
255
+ ${quotedColumn(edgeClaims.updatedAt)} = ${timestamp}
256
+ WHERE ${qualified(claimsName, edgeClaims.graphId)} = ${params.graphId}
257
+ AND ${qualified(claimsName, edgeClaims.axis)} = ${target.axis}
258
+ AND ${qualified(claimsName, edgeClaims.key)} = ${target.key}
259
+ AND ${qualified(claimsName, edgeClaims.edgeId)} <> ${params.edgeId}
260
+ AND NOT EXISTS (
261
+ SELECT 1 FROM ${edges}
262
+ WHERE ${qualified(edgesName, edges.graphId)} = ${qualified(claimsName, edgeClaims.graphId)}
263
+ AND ${qualified(edgesName, edges.id)} = ${qualified(claimsName, edgeClaims.edgeId)}
264
+ AND ${qualified(edgesName, edges.deletedAt)} IS NULL
265
+ AND ${qualified(edgesName, edges.kind)} = ${params.edgeKind}
266
+ AND ${qualified(edgesName, edges.fromKind)} = ${params.fromKind}
267
+ AND ${qualified(edgesName, edges.fromId)} = ${params.fromId}${toEndpointTerms}${activeTerm}
268
+ )
269
+ RETURNING ${quotedColumn(edgeClaims.edgeId)} as holder_edge_id
270
+ `;
271
+ }
272
+ function buildPurgeEdgeClaims(tables, params) {
273
+ const { edgeClaims } = tables;
274
+ return sql`
275
+ DELETE FROM ${edgeClaims}
276
+ WHERE ${edgeClaims.graphId} = ${params.graphId}
277
+ AND ${edgeClaims.edgeId} IN (${sql.join(
278
+ params.edgeIds.map((edgeId) => sql`${edgeId}`),
279
+ sql`, `
280
+ )})
281
+ `;
282
+ }
283
+ function buildHardDeleteEdgeClaimsByEdgeKind(edgeClaimsTableName, params) {
284
+ const axes = edgeCardinalityAxesForKind(params.edgeKind).map(
285
+ (axis) => sql$1`${axis}`
286
+ );
287
+ return sql$1`DELETE FROM ${sql$1.identifier(edgeClaimsTableName)} WHERE ${sql$1.identifier("graph_id")} = ${params.graphId} AND ${sql$1.identifier("axis")} IN (${sql$1.join(axes, sql$1`, `)})`;
288
+ }
289
+ function buildHardDeleteEdgeClaimsByNodeKind(edgeClaimsTableName, edgesTableName, params) {
290
+ return sql$1`DELETE FROM ${sql$1.identifier(edgeClaimsTableName)} WHERE ${sql$1.identifier("graph_id")} = ${params.graphId} AND ${sql$1.identifier("edge_id")} IN (SELECT ${sql$1.identifier("id")} FROM ${sql$1.identifier(edgesTableName)} WHERE ${sql$1.identifier("graph_id")} = ${params.graphId} AND (${sql$1.identifier("from_kind")} = ${params.nodeKind} OR ${sql$1.identifier("to_kind")} = ${params.nodeKind}))`;
291
+ }
292
+ function boundOwnerColumn(uniques, params) {
293
+ return (column) => column.name === uniques.nodeId.name ? sql`${params.nodeId}` : sql`${params.concreteKind}`;
294
+ }
295
+ function buildInsertUniqueSqlite(tables, params) {
296
+ const { uniques } = tables;
297
+ const columns = sql.raw(
298
+ `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`
299
+ );
300
+ const conflictColumns = sql.raw(
301
+ `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`
302
+ );
303
+ const ownerMatches = claimOwnerMatchesSql(
304
+ (column) => quotedColumn(column),
305
+ boundOwnerColumn(uniques, params),
306
+ uniques
307
+ );
308
+ return sql`
309
+ INSERT INTO ${uniques} (${columns})
310
+ VALUES (
311
+ ${params.graphId}, ${params.nodeKind}, ${params.constraintName},
312
+ ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw("NULL")}
313
+ )
314
+ ON CONFLICT (${conflictColumns})
315
+ DO UPDATE SET
316
+ ${quotedColumn(uniques.nodeId)} = CASE
317
+ WHEN ${ownerMatches} THEN ${params.nodeId}
318
+ WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}
319
+ ELSE ${quotedColumn(uniques.nodeId)}
320
+ END,
321
+ ${quotedColumn(uniques.concreteKind)} = CASE
322
+ WHEN ${ownerMatches} THEN ${params.concreteKind}
323
+ WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
324
+ ELSE ${quotedColumn(uniques.concreteKind)}
325
+ END,
326
+ ${quotedColumn(uniques.deletedAt)} = CASE
327
+ WHEN ${ownerMatches} THEN NULL
328
+ WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN NULL
329
+ ELSE ${quotedColumn(uniques.deletedAt)}
330
+ END
331
+ RETURNING
332
+ ${quotedColumn(uniques.nodeId)} as node_id,
333
+ ${quotedColumn(uniques.concreteKind)} as concrete_kind
334
+ `;
335
+ }
336
+ function buildInsertUniquePostgres(tables, params) {
337
+ const { uniques } = tables;
338
+ const columns = sql.raw(
339
+ `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`
340
+ );
341
+ const conflictColumns = sql.raw(
342
+ `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`
343
+ );
344
+ const tableName = getTableName(uniques);
345
+ const existingColumn = (column) => sql.raw(`"${tableName}"."${column.name}"`);
346
+ const ownerMatches = claimOwnerMatchesSql(
347
+ (column) => existingColumn(column),
348
+ boundOwnerColumn(uniques, params),
349
+ uniques
350
+ );
351
+ return sql`
352
+ INSERT INTO ${uniques} (${columns})
353
+ VALUES (
354
+ ${params.graphId}, ${params.nodeKind}, ${params.constraintName},
355
+ ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw("NULL")}
356
+ )
357
+ ON CONFLICT (${conflictColumns})
358
+ DO UPDATE SET
359
+ ${quotedColumn(uniques.nodeId)} = CASE
360
+ WHEN ${ownerMatches} THEN ${params.nodeId}
361
+ WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}
362
+ ELSE ${existingColumn(uniques.nodeId)}
363
+ END,
364
+ ${quotedColumn(uniques.concreteKind)} = CASE
365
+ WHEN ${ownerMatches} THEN ${params.concreteKind}
366
+ WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
367
+ ELSE ${existingColumn(uniques.concreteKind)}
368
+ END,
369
+ ${quotedColumn(uniques.deletedAt)} = CASE
370
+ WHEN ${ownerMatches} THEN NULL
371
+ WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN NULL
372
+ ELSE ${existingColumn(uniques.deletedAt)}
373
+ END
374
+ RETURNING
375
+ ${quotedColumn(uniques.nodeId)} as node_id,
376
+ ${quotedColumn(uniques.concreteKind)} as concrete_kind
377
+ `;
378
+ }
379
+ var UNIQUE_INSERT_BUILDERS = {
380
+ postgres: buildInsertUniquePostgres,
381
+ sqlite: buildInsertUniqueSqlite
382
+ };
383
+ function buildInsertUnique(tables, dialect, params) {
384
+ const builder = UNIQUE_INSERT_BUILDERS[dialect];
385
+ return builder(tables, params);
386
+ }
387
+ function buildInsertUniqueBatch(tables, dialect, entries) {
388
+ const { uniques } = tables;
389
+ const columns = sql.raw(
390
+ `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`
391
+ );
392
+ const conflictColumns = sql.raw(
393
+ `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`
394
+ );
395
+ const tableName = getTableName(uniques);
396
+ const existingColumn = (column) => {
397
+ switch (dialect) {
398
+ case "postgres": {
399
+ return sql.raw(`"${tableName}"."${column.name}"`);
400
+ }
401
+ case "sqlite": {
402
+ return sql.raw(`"${column.name}"`);
403
+ }
404
+ default: {
405
+ return dialect;
406
+ }
407
+ }
408
+ };
409
+ const excludedColumn = (column) => sql.raw(`excluded."${column.name}"`);
410
+ const ownerMatches = claimOwnerMatchesSql(
411
+ (column) => existingColumn(column),
412
+ (column) => excludedColumn(column),
413
+ uniques
414
+ );
415
+ const valueRows = sql.join(
416
+ entries.map(
417
+ (params) => sql`(${params.graphId}, ${params.nodeKind}, ${params.constraintName}, ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw("NULL")})`
418
+ ),
419
+ sql`, `
420
+ );
421
+ return sql`
422
+ INSERT INTO ${uniques} (${columns})
423
+ VALUES ${valueRows}
424
+ ON CONFLICT (${conflictColumns})
425
+ DO UPDATE SET
426
+ ${quotedColumn(uniques.nodeId)} = CASE
427
+ WHEN ${ownerMatches} THEN ${excludedColumn(uniques.nodeId)}
428
+ WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques.nodeId)}
429
+ ELSE ${existingColumn(uniques.nodeId)}
430
+ END,
431
+ ${quotedColumn(uniques.concreteKind)} = CASE
432
+ WHEN ${ownerMatches} THEN ${excludedColumn(uniques.concreteKind)}
433
+ WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques.concreteKind)}
434
+ ELSE ${existingColumn(uniques.concreteKind)}
435
+ END,
436
+ ${quotedColumn(uniques.deletedAt)} = CASE
437
+ WHEN ${ownerMatches} THEN NULL
438
+ WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN NULL
439
+ ELSE ${existingColumn(uniques.deletedAt)}
440
+ END
441
+ RETURNING
442
+ ${quotedColumn(uniques.nodeKind)} as node_kind,
443
+ ${quotedColumn(uniques.constraintName)} as constraint_name,
444
+ ${quotedColumn(uniques.key)} as key,
445
+ ${quotedColumn(uniques.nodeId)} as node_id,
446
+ ${quotedColumn(uniques.concreteKind)} as concrete_kind
447
+ `;
448
+ }
449
+ function buildDeleteUnique(tables, params, timestamp) {
450
+ const { uniques } = tables;
451
+ const axisTerm = params.nodeKind === void 0 ? sql`` : sql` AND ${uniques.nodeKind} = ${params.nodeKind}`;
452
+ return sql`
453
+ UPDATE ${uniques}
454
+ SET ${quotedColumn(uniques.deletedAt)} = ${timestamp}
455
+ WHERE ${uniques.graphId} = ${params.graphId}
456
+ AND ${uniques.concreteKind} = ${params.concreteKind}
457
+ AND ${uniques.nodeId} = ${params.nodeId}
458
+ AND ${uniques.constraintName} = ${params.constraintName}
459
+ AND ${uniques.key} = ${params.key}${axisTerm}
460
+ AND ${uniques.deletedAt} IS NULL
461
+ `;
462
+ }
463
+ function buildHardDeleteUniquesByNode(tables, graphId, concreteKind, nodeId) {
464
+ return buildHardDeleteUniquesByNodeIds(tables, {
465
+ graphId,
466
+ concreteKind,
467
+ nodeIds: [nodeId]
468
+ });
469
+ }
470
+ function buildHardDeleteUniquesByNodeIds(tables, params) {
471
+ const { uniques } = tables;
472
+ return sql`
473
+ DELETE FROM ${uniques}
474
+ WHERE ${uniques.graphId} = ${params.graphId}
475
+ AND ${uniques.concreteKind} = ${params.concreteKind}
476
+ AND ${uniques.nodeId} IN (${sql.join(
477
+ params.nodeIds.map((nodeId) => sql`${nodeId}`),
478
+ sql`, `
479
+ )})
480
+ `;
481
+ }
482
+ function buildHardDeleteUniquesByConcreteKind(uniquesTableName, params) {
483
+ return sql$1`DELETE FROM ${sql$1.identifier(uniquesTableName)} WHERE ${sql$1.identifier("graph_id")} = ${params.graphId} AND ${sql$1.identifier("concrete_kind")} = ${params.concreteKind}`;
484
+ }
485
+ function buildCheckUnique(tables, params) {
486
+ const { uniques } = tables;
487
+ if (params.includeDeleted) {
488
+ return sql`
489
+ SELECT * FROM ${uniques}
490
+ WHERE ${uniques.graphId} = ${params.graphId}
491
+ AND ${uniques.nodeKind} = ${params.nodeKind}
492
+ AND ${uniques.constraintName} = ${params.constraintName}
493
+ AND ${uniques.key} = ${params.key}
494
+ `;
495
+ }
496
+ return sql`
497
+ SELECT * FROM ${uniques}
498
+ WHERE ${uniques.graphId} = ${params.graphId}
499
+ AND ${uniques.nodeKind} = ${params.nodeKind}
500
+ AND ${uniques.constraintName} = ${params.constraintName}
501
+ AND ${uniques.key} = ${params.key}
502
+ AND ${uniques.deletedAt} IS NULL
503
+ `;
504
+ }
505
+ function buildCheckUniqueBatch(tables, params) {
506
+ const { uniques } = tables;
507
+ const keyPlaceholders = sql.join(
508
+ params.keys.map((key) => sql`${key}`),
509
+ sql`, `
510
+ );
511
+ if (params.includeDeleted) {
512
+ return sql`
513
+ SELECT * FROM ${uniques}
514
+ WHERE ${uniques.graphId} = ${params.graphId}
515
+ AND ${uniques.nodeKind} = ${params.nodeKind}
516
+ AND ${uniques.constraintName} = ${params.constraintName}
517
+ AND ${uniques.key} IN (${keyPlaceholders})
518
+ `;
519
+ }
520
+ return sql`
521
+ SELECT * FROM ${uniques}
522
+ WHERE ${uniques.graphId} = ${params.graphId}
523
+ AND ${uniques.nodeKind} = ${params.nodeKind}
524
+ AND ${uniques.constraintName} = ${params.constraintName}
525
+ AND ${uniques.key} IN (${keyPlaceholders})
526
+ AND ${uniques.deletedAt} IS NULL
527
+ `;
528
+ }
529
+
530
+ export { POSTGRES_ROW_MAPPER_CONFIG, SQLITE_ROW_MAPPER_CONFIG, buildCheckUnique, buildCheckUniqueBatch, buildDeleteUnique, buildHardDeleteEdgeClaimsByEdgeKind, buildHardDeleteEdgeClaimsByNodeKind, buildHardDeleteUniquesByConcreteKind, buildHardDeleteUniquesByNode, buildHardDeleteUniquesByNodeIds, buildInsertUnique, buildInsertUniqueBatch, buildLockEdgeClaims, buildPurgeEdgeClaims, buildTakeOverEdgeClaim, codePointOrderKey, coerceNumericScore, createEdgeRowMapper, createNodeRowMapper, createSchemaVersionRowMapper, createUniqueRowMapper, edgeColumnList, edgePrimaryKeyConstraint, expectedValidFromPredicate, formatPostgresTimestamp, liveNodeIdsSubquery, nodeColumnList, nodePrimaryKeyConstraint, normalizeRequiredRowTimestamp, normalizeRowTimestamp, nowIso, quotedColumn, quotedTableName, sqlNull };
531
+ //# sourceMappingURL=chunk-S3SDEQMC.js.map
532
+ //# sourceMappingURL=chunk-S3SDEQMC.js.map