@nicia-ai/typegraph 0.48.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-AX6JGVTZ.js → chunk-2CYI5HRH.js} +276 -206
  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-OTUPEF2W.cjs → chunk-CS6JTQQ2.cjs} +328 -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-7XUYFFR4.cjs → chunk-ISKCIQF2.cjs} +20 -20
  118. package/dist/{chunk-7XUYFFR4.cjs.map → chunk-ISKCIQF2.cjs.map} +1 -1
  119. package/dist/{chunk-OD4SSY2U.js → chunk-JG5XIJDY.js} +57 -31
  120. package/dist/chunk-JG5XIJDY.js.map +1 -0
  121. package/dist/{chunk-2HIYYMWY.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-ACGSAMD3.js → chunk-MJPZNEJZ.js} +274 -292
  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-2SYZXD54.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-CT3ZKTOF.js → chunk-S33YQEL7.js} +7 -7
  156. package/dist/{chunk-CT3ZKTOF.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-PFBRJBUL.cjs → chunk-TYGGUWMS.cjs} +178 -152
  170. package/dist/chunk-TYGGUWMS.cjs.map +1 -0
  171. package/dist/{chunk-4WMMBDS5.js → chunk-U3Z7XKAG.js} +7 -7
  172. package/dist/{chunk-4WMMBDS5.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-TKZXMWQF.cjs → chunk-WK23PGTP.cjs} +13 -13
  186. package/dist/{chunk-TKZXMWQF.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-WCCATHMB.cjs → chunk-XMY2SXOH.cjs} +438 -456
  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 +327 -302
  218. package/dist/graph-merge/index.cjs.map +1 -1
  219. package/dist/graph-merge/index.d.cts +14 -11
  220. package/dist/graph-merge/index.d.ts +14 -11
  221. package/dist/graph-merge/index.js +52 -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-CI8OWIkM.d.ts +17 -0
  236. package/dist/ingestion-import-target-DCpfM1PX.d.cts +17 -0
  237. package/dist/interchange/index.cjs +55 -54
  238. package/dist/interchange/index.cjs.map +1 -1
  239. package/dist/interchange/index.d.cts +26 -12
  240. package/dist/interchange/index.d.ts +26 -12
  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-DMj39MEu.d.cts → postgres-CH1kkM5J.d.cts} +279 -2
  248. package/dist/{postgres-CcL4bAHS.d.ts → 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-D7Oz0SQh.d.ts → sqlite-Cyx9j9o6.d.cts} +309 -2
  266. package/dist/{sqlite-YppHrNFb.d.cts → sqlite-axLw5Lo5.d.ts} +309 -2
  267. package/dist/{store-JUVvtmR4.d.cts → store-CTfQ9taw.d.ts} +110 -13
  268. package/dist/{store-UzrGvZOo.d.ts → store-DR9J7JVB.d.cts} +110 -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 +4 -4
  278. package/dist/chunk-26YKDNUD.cjs.map +0 -1
  279. package/dist/chunk-2HIYYMWY.cjs.map +0 -1
  280. package/dist/chunk-2SYZXD54.js.map +0 -1
  281. package/dist/chunk-3KOY4FH3.cjs +0 -934
  282. package/dist/chunk-3KOY4FH3.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-ACGSAMD3.js.map +0 -1
  289. package/dist/chunk-AX6JGVTZ.js.map +0 -1
  290. package/dist/chunk-BFUOME67.cjs.map +0 -1
  291. package/dist/chunk-BRRP76WO.js.map +0 -1
  292. package/dist/chunk-CICO5GXD.cjs +0 -12
  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-MKJ4KXL5.cjs +0 -12
  310. package/dist/chunk-MRDBBHIZ.cjs.map +0 -1
  311. package/dist/chunk-NVY5CJFP.js.map +0 -1
  312. package/dist/chunk-OD4SSY2U.js.map +0 -1
  313. package/dist/chunk-OTUPEF2W.cjs.map +0 -1
  314. package/dist/chunk-PFBRJBUL.cjs.map +0 -1
  315. package/dist/chunk-PWLJ77UV.cjs +0 -23
  316. package/dist/chunk-PWLJ77UV.cjs.map +0 -1
  317. package/dist/chunk-S5TERQVW.js.map +0 -1
  318. package/dist/chunk-SHFBB23Q.js.map +0 -1
  319. package/dist/chunk-SIT26LAZ.cjs.map +0 -1
  320. package/dist/chunk-SR725PWF.cjs.map +0 -1
  321. package/dist/chunk-TQHGE7UC.cjs.map +0 -1
  322. package/dist/chunk-UGHG7PGX.js.map +0 -1
  323. package/dist/chunk-WCCATHMB.cjs.map +0 -1
  324. package/dist/chunk-YIURNGXI.js +0 -155
  325. package/dist/chunk-YIURNGXI.js.map +0 -1
  326. package/dist/chunk-ZFMCDJGB.js.map +0 -1
  327. package/dist/chunk-ZLONH2UD.js.map +0 -1
@@ -0,0 +1,1207 @@
1
+ 'use strict';
2
+
3
+ var chunk7PRMDZIA_cjs = require('./chunk-7PRMDZIA.cjs');
4
+ var chunkRDP6ZRSM_cjs = require('./chunk-RDP6ZRSM.cjs');
5
+ var chunkZBFZGLZE_cjs = require('./chunk-ZBFZGLZE.cjs');
6
+ var chunkGHZPZNFC_cjs = require('./chunk-GHZPZNFC.cjs');
7
+ var chunkLLVOQOWE_cjs = require('./chunk-LLVOQOWE.cjs');
8
+ var chunkM5MSP3BI_cjs = require('./chunk-M5MSP3BI.cjs');
9
+ var chunkOJHD3LXJ_cjs = require('./chunk-OJHD3LXJ.cjs');
10
+ var chunkHAHNRASW_cjs = require('./chunk-HAHNRASW.cjs');
11
+ var chunkX4GDXBOP_cjs = require('./chunk-X4GDXBOP.cjs');
12
+ var chunkN66HCGCY_cjs = require('./chunk-N66HCGCY.cjs');
13
+
14
+ // src/store/types.ts
15
+ var AUTO_REFRESH_STATISTICS_ROW_THRESHOLD = 1e3;
16
+ var TRANSACTION_RUNTIME = chunkOJHD3LXJ_cjs.typeGraphGlobalSymbol(
17
+ "transaction-runtime-v1"
18
+ );
19
+
20
+ // src/store/runtime-port.ts
21
+ var STORE_RUNTIME = chunkOJHD3LXJ_cjs.typeGraphGlobalSymbol("store-runtime-v1");
22
+ function storeRuntime(store) {
23
+ const runtime = store[STORE_RUNTIME];
24
+ if (runtime === void 0) {
25
+ throw new TypeError(
26
+ "Cannot access this Store's runtime port. The Store may come from an incompatible TypeGraph version."
27
+ );
28
+ }
29
+ return runtime;
30
+ }
31
+ function storeBackend(store) {
32
+ return storeRuntime(store).backend;
33
+ }
34
+ function transactionBackend(transaction) {
35
+ const runtime = transaction[TRANSACTION_RUNTIME];
36
+ if (runtime === void 0) {
37
+ throw new TypeError(
38
+ "Cannot access this transaction's runtime port. The transaction may come from an incompatible TypeGraph version."
39
+ );
40
+ }
41
+ return runtime.backend;
42
+ }
43
+ function transactionNodeOperationHookRunner(transaction) {
44
+ const runtime = transaction[TRANSACTION_RUNTIME];
45
+ if (runtime === void 0) {
46
+ throw new TypeError(
47
+ "Cannot access this transaction's runtime port. The transaction may come from an incompatible TypeGraph version."
48
+ );
49
+ }
50
+ return runtime.runNodeOperationHooks;
51
+ }
52
+
53
+ // src/store/claims/sites.ts
54
+ function disjointnessSites(registry, kind) {
55
+ return registry.getDisjointKinds(kind).map((otherKind) => ({
56
+ axis: chunkLLVOQOWE_cjs.disjointnessClaimAxis(kind, otherKind, registry),
57
+ constraintName: chunkLLVOQOWE_cjs.DISJOINT_CONSTRAINT_NAME,
58
+ needsLockFence: true,
59
+ placement: "pre-insert",
60
+ refusalReason: "nodeDisjointness",
61
+ refusal: { kind: "disjointness", ownKind: kind, otherKind }
62
+ }));
63
+ }
64
+ function nodeClaimSites(registry, kind, uniqueConstraints, operation) {
65
+ const uniqueness = uniqueConstraints.map((constraint) => {
66
+ const target = chunkLLVOQOWE_cjs.uniquenessClaimTarget(kind, constraint.scope, registry);
67
+ return {
68
+ axis: target.axis,
69
+ constraintName: constraint.name,
70
+ needsLockFence: target.crossKind,
71
+ placement: operation !== "create" || target.crossKind ? "pre-insert" : "post-insert",
72
+ refusalReason: target.crossKind ? "nodeUniquenessScope" : "nodeUniquenessClaim",
73
+ refusal: { kind: "uniqueness", constraint }
74
+ };
75
+ });
76
+ return operation === "update" ? uniqueness : [...disjointnessSites(registry, kind), ...uniqueness];
77
+ }
78
+
79
+ // src/store/claims/node-claims.ts
80
+ function createUniquenessContext(graphId, registry, backend) {
81
+ return { graphId, registry, backend };
82
+ }
83
+ function claimKeyFor(refusal, id, props) {
84
+ if (refusal.kind === "disjointness") return id;
85
+ return chunkLLVOQOWE_cjs.checkWherePredicate(refusal.constraint, props) ? chunkLLVOQOWE_cjs.computeUniqueKey(
86
+ props,
87
+ refusal.constraint.fields,
88
+ refusal.constraint.collation
89
+ ) : void 0;
90
+ }
91
+ function nodeClaimEntries(registry, kind, id, props, constraints, operation) {
92
+ return nodeClaimSites(registry, kind, constraints, operation).flatMap(
93
+ (site) => {
94
+ const key = claimKeyFor(site.refusal, id, props);
95
+ return key === void 0 ? [] : [
96
+ {
97
+ axis: site.axis,
98
+ constraintName: site.constraintName,
99
+ key,
100
+ placement: site.placement,
101
+ refusalReason: site.refusalReason,
102
+ refusal: site.refusal
103
+ }
104
+ ];
105
+ }
106
+ );
107
+ }
108
+ function mapClaimRefusal(error, entries) {
109
+ const owed = entries.find(
110
+ (entry) => entry.refusal.kind === "disjointness" && entry.constraintName === error.details.constraintName && entry.key === error.details.newId && (error.details.axis === void 0 || entry.axis === error.details.axis)
111
+ );
112
+ if (owed === void 0) throw error;
113
+ throw new chunkX4GDXBOP_cjs.DisjointError(
114
+ {
115
+ nodeId: error.details.newId,
116
+ attemptedKind: owed.refusal.ownKind,
117
+ conflictingKind: error.details.kind
118
+ },
119
+ { cause: error }
120
+ );
121
+ }
122
+ async function issuingClaims(entries, issue) {
123
+ try {
124
+ await issue();
125
+ } catch (error) {
126
+ if (error instanceof chunkX4GDXBOP_cjs.UniquenessError) mapClaimRefusal(error, entries);
127
+ throw error;
128
+ }
129
+ }
130
+ function claimFenceRefusal(ctx, backend, entries) {
131
+ const gating = entries.find((entry) => entry.placement === "pre-insert");
132
+ if (gating === void 0) return void 0;
133
+ return chunkRDP6ZRSM_cjs.constraintFenceRefusal(ctx, backend, gating.refusalReason);
134
+ }
135
+ function isUniquenessClaimEntry(entry) {
136
+ return entry.refusal.kind === "uniqueness";
137
+ }
138
+ async function probeUniqueKey(ctx, kind, id, entry) {
139
+ const mine = { concreteKind: kind, nodeId: id };
140
+ let heldByThisNode = false;
141
+ for (const kindToCheck of chunkLLVOQOWE_cjs.uniquenessProbeKinds(
142
+ kind,
143
+ entry.refusal.constraint.scope,
144
+ ctx.registry
145
+ )) {
146
+ const existing = await ctx.backend.checkUnique({
147
+ graphId: ctx.graphId,
148
+ nodeKind: kindToCheck,
149
+ constraintName: entry.constraintName,
150
+ key: entry.key
151
+ });
152
+ if (existing === void 0) continue;
153
+ if (!chunkLLVOQOWE_cjs.isSameClaimOwner(
154
+ { concreteKind: existing.concrete_kind, nodeId: existing.node_id },
155
+ mine
156
+ )) {
157
+ throw new chunkX4GDXBOP_cjs.UniquenessError({
158
+ constraintName: entry.constraintName,
159
+ kind: existing.concrete_kind,
160
+ existingId: existing.node_id,
161
+ newId: id,
162
+ fields: entry.refusal.constraint.fields
163
+ });
164
+ }
165
+ if (kindToCheck === entry.axis) heldByThisNode = true;
166
+ }
167
+ return heldByThisNode;
168
+ }
169
+ async function checkUniquenessConstraints(ctx, kind, id, props, constraints) {
170
+ for (const entry of nodeClaimEntries(
171
+ ctx.registry,
172
+ kind,
173
+ id,
174
+ props,
175
+ constraints,
176
+ "create"
177
+ )) {
178
+ if (isUniquenessClaimEntry(entry))
179
+ await probeUniqueKey(ctx, kind, id, entry);
180
+ }
181
+ }
182
+ function claimTarget(graphId, entry) {
183
+ return {
184
+ relation: "uniques",
185
+ graphId,
186
+ axis: entry.axis,
187
+ constraintName: entry.constraintName,
188
+ key: entry.key
189
+ };
190
+ }
191
+ function claimInsertParams(graphId, claim) {
192
+ return {
193
+ graphId,
194
+ nodeKind: claim.entry.axis,
195
+ constraintName: claim.entry.constraintName,
196
+ key: claim.entry.key,
197
+ nodeId: claim.item.id,
198
+ concreteKind: claim.item.kind
199
+ };
200
+ }
201
+ async function issueClaimsIndividually(ctx, claims, onIssued) {
202
+ for (const claim of claims) {
203
+ await issuingClaims(
204
+ [claim.entry],
205
+ () => ctx.backend.insertUnique(claimInsertParams(ctx.graphId, claim))
206
+ );
207
+ onIssued?.([claim]);
208
+ }
209
+ }
210
+ async function issueClaimsBatched(ctx, claims, onIssued) {
211
+ if (claims.length === 0) return;
212
+ const batch = ctx.backend.insertUniqueBatch;
213
+ if (batch === void 0) {
214
+ await issueClaimsIndividually(ctx, claims, onIssued);
215
+ return;
216
+ }
217
+ await issuingClaims(
218
+ claims.map((claim) => claim.entry),
219
+ async () => {
220
+ await batch(claims.map((claim) => claimInsertParams(ctx.graphId, claim)));
221
+ }
222
+ );
223
+ onIssued?.(claims);
224
+ }
225
+ async function claimGroupThenWrite(ctx, issue, gating, gatedWrite) {
226
+ const issued = [];
227
+ try {
228
+ await issue(ctx, gating, (landed) => {
229
+ issued.push(...landed);
230
+ });
231
+ return await gatedWrite();
232
+ } catch (error) {
233
+ for (const claim of issued.toReversed()) {
234
+ await releaseClaimedUniqueKeys(ctx, claim.item.kind, claim.item.id, [
235
+ {
236
+ axis: claim.entry.axis,
237
+ constraintName: claim.entry.constraintName,
238
+ key: claim.entry.key
239
+ }
240
+ ]);
241
+ }
242
+ throw error;
243
+ }
244
+ }
245
+ async function withNodeCreateClaimsIssuedBy(ctx, items, backend, issue, gatedInsert) {
246
+ const claimContext = createUniquenessContext(
247
+ ctx.graphId,
248
+ ctx.registry,
249
+ backend
250
+ );
251
+ const claims = items.flatMap(
252
+ (item) => nodeClaimEntries(
253
+ ctx.registry,
254
+ item.kind,
255
+ item.id,
256
+ item.props,
257
+ item.constraints,
258
+ "create"
259
+ ).map((entry) => ({
260
+ item,
261
+ entry,
262
+ target: claimTarget(ctx.graphId, entry)
263
+ }))
264
+ );
265
+ const refusal = claimFenceRefusal(
266
+ ctx,
267
+ backend,
268
+ claims.map((claim) => claim.entry)
269
+ );
270
+ if (refusal !== void 0) throw refusal;
271
+ const inPlacement = (placement) => claims.filter((claim) => claim.entry.placement === placement).toSorted(
272
+ (left, right) => chunkLLVOQOWE_cjs.compareClaimTargets(left.target, right.target)
273
+ );
274
+ const result = await claimGroupThenWrite(
275
+ claimContext,
276
+ issue,
277
+ inPlacement("pre-insert"),
278
+ gatedInsert
279
+ );
280
+ await issue(claimContext, inPlacement("post-insert"));
281
+ return result;
282
+ }
283
+ function withNodeCreateClaims(ctx, item, backend, gatedInsert) {
284
+ return withNodeCreateClaimsIssuedBy(
285
+ ctx,
286
+ [item],
287
+ backend,
288
+ issueClaimsIndividually,
289
+ gatedInsert
290
+ );
291
+ }
292
+ function withNodeCreateClaimsBatch(ctx, items, backend, gatedInsert) {
293
+ return withNodeCreateClaimsIssuedBy(
294
+ ctx,
295
+ items,
296
+ backend,
297
+ issueClaimsBatched,
298
+ gatedInsert
299
+ );
300
+ }
301
+ function alreadyAppliedRowWrite() {
302
+ return Promise.resolve(void 0);
303
+ }
304
+ async function deleteUniquenessEntries(ctx, kind, id, props, constraints) {
305
+ await releaseOwnedUniqueKeys(
306
+ ctx,
307
+ kind,
308
+ id,
309
+ nodeClaimEntries(ctx.registry, kind, id, props, constraints, "create")
310
+ );
311
+ }
312
+ async function hardDeleteClaimsByNodeIds(ctx, concreteKind, nodeIds) {
313
+ await chunkN66HCGCY_cjs.requireDefined(ctx.backend.hardDeleteUniquesByNodeIds)({
314
+ graphId: ctx.graphId,
315
+ concreteKind,
316
+ nodeIds
317
+ });
318
+ }
319
+ async function planNodeClaimUpdate(ctx, kind, id, oldProps, newProps, constraints) {
320
+ const oldKeys = new Map(
321
+ nodeClaimEntries(
322
+ ctx.registry,
323
+ kind,
324
+ id,
325
+ oldProps,
326
+ constraints,
327
+ "update"
328
+ ).map((entry) => [entry.constraintName, entry.key])
329
+ );
330
+ const newEntries = new Map(
331
+ nodeClaimEntries(ctx.registry, kind, id, newProps, constraints, "update").filter(
332
+ (entry) => isUniquenessClaimEntry(entry)
333
+ ).map((entry) => [entry.constraintName, entry])
334
+ );
335
+ const pending = [];
336
+ for (const constraint of constraints) {
337
+ const oldKey = oldKeys.get(constraint.name);
338
+ const newEntry = newEntries.get(constraint.name);
339
+ if (oldKey === void 0 && newEntry === void 0) continue;
340
+ if (oldKey !== void 0 && oldKey === newEntry?.key) continue;
341
+ const alreadyHeld = newEntry === void 0 ? false : await probeUniqueKey(ctx, kind, id, newEntry);
342
+ pending.push({
343
+ constraintName: constraint.name,
344
+ release: oldKey,
345
+ claim: newEntry === void 0 || alreadyHeld ? void 0 : newEntry
346
+ });
347
+ }
348
+ return pending;
349
+ }
350
+ async function planNodeClaimReinsert(ctx, kind, id, props, constraints) {
351
+ const pending = [];
352
+ for (const entry of nodeClaimEntries(
353
+ ctx.registry,
354
+ kind,
355
+ id,
356
+ props,
357
+ constraints,
358
+ "resurrect"
359
+ )) {
360
+ const alreadyHeld = isUniquenessClaimEntry(entry) ? await probeUniqueKey(ctx, kind, id, entry) : false;
361
+ pending.push({
362
+ constraintName: entry.constraintName,
363
+ release: void 0,
364
+ claim: alreadyHeld ? void 0 : entry
365
+ });
366
+ }
367
+ return pending;
368
+ }
369
+ async function releaseOwnedUniqueKeys(ctx, kind, id, keys) {
370
+ for (const entry of keys) {
371
+ await ctx.backend.deleteUnique({
372
+ graphId: ctx.graphId,
373
+ constraintName: entry.constraintName,
374
+ key: entry.key,
375
+ concreteKind: kind,
376
+ nodeId: id
377
+ });
378
+ }
379
+ }
380
+ async function releaseClaimedUniqueKeys(ctx, kind, id, keys) {
381
+ for (const entry of keys) {
382
+ await ctx.backend.deleteUnique({
383
+ graphId: ctx.graphId,
384
+ nodeKind: entry.axis,
385
+ constraintName: entry.constraintName,
386
+ key: entry.key,
387
+ concreteKind: kind,
388
+ nodeId: id
389
+ });
390
+ }
391
+ }
392
+ async function claimUniqueKeysThen(ctx, kind, id, plan, gatedWrite) {
393
+ const claimed = [];
394
+ try {
395
+ for (const mutation of plan) {
396
+ const claim = mutation.claim;
397
+ if (claim === void 0) continue;
398
+ await issuingClaims(
399
+ [claim],
400
+ () => ctx.backend.insertUnique({
401
+ graphId: ctx.graphId,
402
+ nodeKind: claim.axis,
403
+ constraintName: mutation.constraintName,
404
+ key: claim.key,
405
+ nodeId: id,
406
+ concreteKind: kind
407
+ })
408
+ );
409
+ claimed.push({
410
+ axis: claim.axis,
411
+ constraintName: mutation.constraintName,
412
+ key: claim.key
413
+ });
414
+ }
415
+ return await gatedWrite();
416
+ } catch (error) {
417
+ await releaseClaimedUniqueKeys(ctx, kind, id, claimed);
418
+ throw error;
419
+ }
420
+ }
421
+ async function withNodeClaimTransition(ctx, kind, id, plan, gatedWrite) {
422
+ const refusal = claimFenceRefusal(
423
+ ctx,
424
+ ctx.backend,
425
+ plan.flatMap(
426
+ (mutation) => mutation.claim === void 0 ? [] : [mutation.claim]
427
+ )
428
+ );
429
+ if (refusal !== void 0) throw refusal;
430
+ const result = await claimUniqueKeysThen(ctx, kind, id, plan, gatedWrite);
431
+ await releaseOwnedUniqueKeys(
432
+ ctx,
433
+ kind,
434
+ id,
435
+ plan.flatMap(
436
+ (mutation) => mutation.release === void 0 ? [] : [{ constraintName: mutation.constraintName, key: mutation.release }]
437
+ )
438
+ );
439
+ return result;
440
+ }
441
+
442
+ // src/store/claims/resolved-node-claims.ts
443
+ function claimRowKey(entry) {
444
+ return chunkLLVOQOWE_cjs.encodeTupleKey([entry.constraintName, entry.key]);
445
+ }
446
+ function claimsCompete(left, right) {
447
+ return claimRowKey(left.entry) === claimRowKey(right.entry) && (right.probeKinds.includes(left.entry.axis) || left.probeKinds.includes(right.entry.axis));
448
+ }
449
+ function proposedClaimRefusal(incumbent, challenger) {
450
+ return new chunkX4GDXBOP_cjs.UniquenessError({
451
+ constraintName: challenger.entry.constraintName,
452
+ kind: incumbent.owner.concreteKind,
453
+ existingId: incumbent.owner.nodeId,
454
+ newId: challenger.owner.nodeId,
455
+ fields: challenger.entry.refusal.constraint.fields
456
+ });
457
+ }
458
+ function proposedClaims(ctx, upserts) {
459
+ const accepted = [];
460
+ for (const upsert of upserts) {
461
+ const owner = {
462
+ concreteKind: upsert.kind,
463
+ nodeId: upsert.id
464
+ };
465
+ const entries = nodeClaimEntries(
466
+ ctx.registry,
467
+ upsert.kind,
468
+ upsert.id,
469
+ { ...upsert.props },
470
+ upsert.constraints,
471
+ "create"
472
+ );
473
+ for (const entry of entries) {
474
+ if (!isUniquenessClaimEntry(entry)) continue;
475
+ const proposal = {
476
+ owner,
477
+ entry,
478
+ probeKinds: chunkLLVOQOWE_cjs.uniquenessProbeKinds(
479
+ upsert.kind,
480
+ entry.refusal.constraint.scope,
481
+ ctx.registry
482
+ )
483
+ };
484
+ const incumbent = accepted.find(
485
+ (candidate) => !chunkLLVOQOWE_cjs.isSameClaimOwner(candidate.owner, proposal.owner) && claimsCompete(candidate, proposal)
486
+ );
487
+ if (incumbent !== void 0) {
488
+ throw proposedClaimRefusal(incumbent, proposal);
489
+ }
490
+ accepted.push(proposal);
491
+ }
492
+ }
493
+ return accepted;
494
+ }
495
+ function groupClaimsForProbe(claims) {
496
+ const groups = /* @__PURE__ */ new Map();
497
+ for (const claim of claims) {
498
+ for (const probeKind of claim.probeKinds) {
499
+ const groupKey = chunkLLVOQOWE_cjs.encodeTupleKey([probeKind, claim.entry.constraintName]);
500
+ const existing = groups.get(groupKey);
501
+ if (existing === void 0) {
502
+ groups.set(groupKey, {
503
+ probeKind,
504
+ constraintName: claim.entry.constraintName,
505
+ claimsByKey: /* @__PURE__ */ new Map([[claim.entry.key, claim]])
506
+ });
507
+ continue;
508
+ }
509
+ existing.claimsByKey.set(claim.entry.key, claim);
510
+ }
511
+ }
512
+ return [...groups.values()];
513
+ }
514
+ function requireBatchProbe(ctx) {
515
+ const checkUniqueBatch = ctx.backend.checkUniqueBatch;
516
+ if (checkUniqueBatch === void 0) {
517
+ throw new chunkX4GDXBOP_cjs.ConfigurationError(
518
+ "Resolved node writes require batched uniqueness probes",
519
+ { code: "RESOLVED_NODE_UNIQUENESS_UNSUPPORTED" }
520
+ );
521
+ }
522
+ return checkUniqueBatch;
523
+ }
524
+ async function validateResolvedNodeClaims(ctx, upserts, releases = []) {
525
+ const checkUniqueBatch = requireBatchProbe(ctx);
526
+ const claims = proposedClaims(ctx, upserts);
527
+ if (claims.length === 0) return;
528
+ const affectedOwners = new Set(
529
+ [...upserts, ...releases].map(
530
+ (reference) => chunkLLVOQOWE_cjs.claimOwnerKey({ concreteKind: reference.kind, nodeId: reference.id })
531
+ )
532
+ );
533
+ for (const group of groupClaimsForProbe(claims)) {
534
+ const existingRows = await checkUniqueBatch({
535
+ graphId: ctx.graphId,
536
+ nodeKind: group.probeKind,
537
+ constraintName: group.constraintName,
538
+ keys: [...group.claimsByKey.keys()]
539
+ });
540
+ for (const existing of existingRows) {
541
+ if (affectedOwners.has(
542
+ chunkLLVOQOWE_cjs.claimOwnerKey({
543
+ concreteKind: existing.concrete_kind,
544
+ nodeId: existing.node_id
545
+ })
546
+ )) {
547
+ continue;
548
+ }
549
+ const claim = group.claimsByKey.get(existing.key);
550
+ if (claim === void 0) continue;
551
+ throw new chunkX4GDXBOP_cjs.UniquenessError({
552
+ constraintName: group.constraintName,
553
+ // The holder's own kind, never `group.probeKind`: that is the claim
554
+ // AXIS, which a shared scope folds across kinds and which the caller
555
+ // never wrote. The probe and the fence report the same value.
556
+ kind: existing.concrete_kind,
557
+ existingId: existing.node_id,
558
+ newId: claim.owner.nodeId,
559
+ fields: claim.entry.refusal.constraint.fields
560
+ });
561
+ }
562
+ }
563
+ }
564
+ async function prepareResolvedNodeClaims(ctx, upserts, releases) {
565
+ const hardDeleteUniquesByNodeIds = ctx.backend.hardDeleteUniquesByNodeIds;
566
+ if (ctx.backend.checkUniqueBatch === void 0 || ctx.backend.insertUniqueBatch === void 0 || hardDeleteUniquesByNodeIds === void 0) {
567
+ throw new chunkX4GDXBOP_cjs.ConfigurationError(
568
+ "Resolved node writes require batched uniqueness operations",
569
+ { code: "RESOLVED_NODE_UNIQUENESS_UNSUPPORTED" }
570
+ );
571
+ }
572
+ await validateResolvedNodeClaims(ctx, upserts, releases);
573
+ const idsByKind = /* @__PURE__ */ new Map();
574
+ for (const reference of [...upserts, ...releases]) {
575
+ const ids = idsByKind.get(reference.kind) ?? /* @__PURE__ */ new Set();
576
+ ids.add(reference.id);
577
+ idsByKind.set(reference.kind, ids);
578
+ }
579
+ for (const [concreteKind, nodeIds] of idsByKind) {
580
+ await hardDeleteUniquesByNodeIds({
581
+ graphId: ctx.graphId,
582
+ concreteKind,
583
+ nodeIds: [...nodeIds]
584
+ });
585
+ }
586
+ }
587
+ async function applyResolvedNodeClaims(ctx, backend, upserts, releases, apply) {
588
+ const claimContext = {
589
+ graphId: ctx.graphId,
590
+ registry: ctx.registry,
591
+ backend
592
+ };
593
+ await prepareResolvedNodeClaims(claimContext, upserts, releases);
594
+ const result = await apply();
595
+ await withNodeCreateClaimsBatch(
596
+ ctx,
597
+ upserts.map((upsert) => ({
598
+ kind: upsert.kind,
599
+ id: upsert.id,
600
+ props: { ...upsert.props },
601
+ constraints: upsert.constraints
602
+ })),
603
+ backend,
604
+ alreadyAppliedRowWrite
605
+ );
606
+ return result;
607
+ }
608
+
609
+ // src/store/embedding-sync.ts
610
+ var embeddingFieldsCache = /* @__PURE__ */ new WeakMap();
611
+ function getEmbeddingFields(schema) {
612
+ const cached = embeddingFieldsCache.get(schema);
613
+ if (cached) return cached;
614
+ const fields = chunkHAHNRASW_cjs.resolveEmbeddingFields(schema);
615
+ embeddingFieldsCache.set(schema, fields);
616
+ return fields;
617
+ }
618
+ async function syncEmbeddings(ctx, schema, props) {
619
+ const { backend } = ctx;
620
+ if (!backend.upsertEmbedding || !backend.deleteEmbedding) {
621
+ return;
622
+ }
623
+ const embeddingFields = getEmbeddingFields(schema);
624
+ if (embeddingFields.length === 0) {
625
+ return;
626
+ }
627
+ for (const field of embeddingFields) {
628
+ const value = chunkN66HCGCY_cjs.readOwnProperty(props, field.fieldPath);
629
+ if (isValidEmbeddingValue(value)) {
630
+ await backend.upsertEmbedding({
631
+ graphId: ctx.graphId,
632
+ nodeKind: ctx.nodeKind,
633
+ nodeId: ctx.nodeId,
634
+ fieldPath: field.fieldPath,
635
+ embedding: value,
636
+ dimensions: field.dimensions,
637
+ metric: field.metric,
638
+ indexType: field.indexType
639
+ });
640
+ } else if (value === void 0) {
641
+ await backend.deleteEmbedding({
642
+ graphId: ctx.graphId,
643
+ nodeKind: ctx.nodeKind,
644
+ nodeId: ctx.nodeId,
645
+ fieldPath: field.fieldPath,
646
+ dimensions: field.dimensions,
647
+ metric: field.metric,
648
+ indexType: field.indexType
649
+ });
650
+ }
651
+ }
652
+ }
653
+ async function syncEmbeddingsBatchForKind(args, schema, items) {
654
+ const { graphId, nodeKind, backend } = args;
655
+ if (!backend.upsertEmbedding || !backend.deleteEmbedding) {
656
+ return;
657
+ }
658
+ const embeddingFields = getEmbeddingFields(schema);
659
+ if (embeddingFields.length === 0) {
660
+ return;
661
+ }
662
+ for (const field of embeddingFields) {
663
+ const rows = [];
664
+ const deletionIds = [];
665
+ for (const item of items) {
666
+ const value = chunkN66HCGCY_cjs.readOwnProperty(item.props, field.fieldPath);
667
+ if (isValidEmbeddingValue(value)) {
668
+ rows.push({ nodeId: item.nodeId, embedding: value });
669
+ } else if (value === void 0) {
670
+ deletionIds.push(item.nodeId);
671
+ }
672
+ }
673
+ if (rows.length > 0) {
674
+ if (backend.upsertEmbeddingBatch === void 0) {
675
+ for (const row of rows) {
676
+ await backend.upsertEmbedding({
677
+ graphId,
678
+ nodeKind,
679
+ nodeId: row.nodeId,
680
+ fieldPath: field.fieldPath,
681
+ embedding: row.embedding,
682
+ dimensions: field.dimensions,
683
+ metric: field.metric,
684
+ indexType: field.indexType
685
+ });
686
+ }
687
+ } else {
688
+ await backend.upsertEmbeddingBatch({
689
+ graphId,
690
+ nodeKind,
691
+ fieldPath: field.fieldPath,
692
+ dimensions: field.dimensions,
693
+ metric: field.metric,
694
+ indexType: field.indexType,
695
+ rows
696
+ });
697
+ }
698
+ }
699
+ if (deletionIds.length > 0 && backend.deleteEmbeddingBatch !== void 0) {
700
+ await backend.deleteEmbeddingBatch({
701
+ graphId,
702
+ nodeKind,
703
+ nodeIds: deletionIds,
704
+ fieldPath: field.fieldPath,
705
+ dimensions: field.dimensions,
706
+ metric: field.metric,
707
+ indexType: field.indexType
708
+ });
709
+ } else {
710
+ for (const nodeId of deletionIds) {
711
+ await backend.deleteEmbedding({
712
+ graphId,
713
+ nodeKind,
714
+ nodeId,
715
+ fieldPath: field.fieldPath,
716
+ dimensions: field.dimensions,
717
+ metric: field.metric,
718
+ indexType: field.indexType
719
+ });
720
+ }
721
+ }
722
+ }
723
+ }
724
+ async function deleteNodeEmbeddings(ctx, schema) {
725
+ const { backend } = ctx;
726
+ if (!backend.deleteEmbedding) {
727
+ return;
728
+ }
729
+ const embeddingFields = getEmbeddingFields(schema);
730
+ if (embeddingFields.length === 0) {
731
+ return;
732
+ }
733
+ for (const field of embeddingFields) {
734
+ await backend.deleteEmbedding({
735
+ graphId: ctx.graphId,
736
+ nodeKind: ctx.nodeKind,
737
+ nodeId: ctx.nodeId,
738
+ fieldPath: field.fieldPath,
739
+ dimensions: field.dimensions,
740
+ metric: field.metric,
741
+ indexType: field.indexType
742
+ });
743
+ }
744
+ }
745
+ function isValidEmbeddingValue(value) {
746
+ if (!Array.isArray(value)) {
747
+ return false;
748
+ }
749
+ return value.every((n) => typeof n === "number" && Number.isFinite(n));
750
+ }
751
+
752
+ // src/store/fulltext-sync.ts
753
+ var FIELD_SEPARATOR = "\n";
754
+ function resolveCombinedLanguage(fields) {
755
+ return fields[0]?.metadata.language ?? chunkHAHNRASW_cjs.DEFAULT_SEARCHABLE_LANGUAGE;
756
+ }
757
+ function computeFulltextContent(schema, props) {
758
+ const searchableFields = chunkHAHNRASW_cjs.getSearchableFields(schema);
759
+ if (searchableFields.length === 0) return void 0;
760
+ const parts = [];
761
+ for (const field of searchableFields) {
762
+ const value = chunkN66HCGCY_cjs.readOwnProperty(props, field.fieldPath);
763
+ if (typeof value === "string" && value.length > 0) {
764
+ parts.push(value);
765
+ }
766
+ }
767
+ if (parts.length === 0) return void 0;
768
+ return {
769
+ content: parts.join(FIELD_SEPARATOR),
770
+ language: resolveCombinedLanguage(searchableFields)
771
+ };
772
+ }
773
+ async function syncFulltext(ctx, schema, props) {
774
+ const { backend } = ctx;
775
+ if (!backend.upsertFulltext || !backend.deleteFulltext) {
776
+ return;
777
+ }
778
+ const computed = computeFulltextContent(schema, props);
779
+ if (computed !== void 0) {
780
+ await backend.upsertFulltext({
781
+ graphId: ctx.graphId,
782
+ nodeKind: ctx.nodeKind,
783
+ nodeId: ctx.nodeId,
784
+ content: computed.content,
785
+ language: computed.language
786
+ });
787
+ return;
788
+ }
789
+ if (chunkHAHNRASW_cjs.getSearchableFields(schema).length === 0) return;
790
+ await backend.deleteFulltext({
791
+ graphId: ctx.graphId,
792
+ nodeKind: ctx.nodeKind,
793
+ nodeId: ctx.nodeId
794
+ });
795
+ }
796
+ async function syncFulltextBatchForKind(args, schema, items) {
797
+ const { graphId, nodeKind, backend } = args;
798
+ if (!backend.upsertFulltext || !backend.deleteFulltext) {
799
+ return;
800
+ }
801
+ const rows = [];
802
+ const emptyContentIds = [];
803
+ const hasSearchableFields = chunkHAHNRASW_cjs.getSearchableFields(schema).length > 0;
804
+ for (const item of items) {
805
+ const computed = computeFulltextContent(schema, item.props);
806
+ if (computed !== void 0) {
807
+ rows.push({
808
+ nodeId: item.nodeId,
809
+ content: computed.content,
810
+ language: computed.language
811
+ });
812
+ } else if (hasSearchableFields) {
813
+ emptyContentIds.push(item.nodeId);
814
+ }
815
+ }
816
+ if (rows.length > 0) {
817
+ if (backend.upsertFulltextBatch === void 0) {
818
+ for (const row of rows) {
819
+ await backend.upsertFulltext({
820
+ graphId,
821
+ nodeKind,
822
+ nodeId: row.nodeId,
823
+ content: row.content,
824
+ language: row.language
825
+ });
826
+ }
827
+ } else {
828
+ await backend.upsertFulltextBatch({ graphId, nodeKind, rows });
829
+ }
830
+ }
831
+ if (emptyContentIds.length > 0) {
832
+ if (backend.deleteFulltextBatch === void 0) {
833
+ for (const nodeId of emptyContentIds) {
834
+ await backend.deleteFulltext({ graphId, nodeKind, nodeId });
835
+ }
836
+ } else {
837
+ await backend.deleteFulltextBatch({
838
+ graphId,
839
+ nodeKind,
840
+ nodeIds: emptyContentIds
841
+ });
842
+ }
843
+ }
844
+ }
845
+ async function deleteNodeFulltext(ctx, schema) {
846
+ const { backend } = ctx;
847
+ if (!backend.deleteFulltext) {
848
+ return;
849
+ }
850
+ if (chunkHAHNRASW_cjs.getSearchableFields(schema).length === 0) {
851
+ return;
852
+ }
853
+ await backend.deleteFulltext({
854
+ graphId: ctx.graphId,
855
+ nodeKind: ctx.nodeKind,
856
+ nodeId: ctx.nodeId
857
+ });
858
+ }
859
+
860
+ // src/store/operations/node-write-pipeline.ts
861
+ function createNodeWriteContext(graphId, registry, lock) {
862
+ return { graphId, registry, lock };
863
+ }
864
+ function uniquenessContext(ctx, backend) {
865
+ return createUniquenessContext(ctx.graphId, ctx.registry, backend);
866
+ }
867
+ function nodeSyncContext(ctx, kind, id, backend) {
868
+ return { graphId: ctx.graphId, nodeKind: kind, nodeId: id, backend };
869
+ }
870
+ async function enforceNodeDeleteBehavior(ctx, args, backend, policy) {
871
+ if (policy?.enforceDeleteBehavior === false) return;
872
+ const behavior = args.onDelete ?? "restrict";
873
+ const connectedEdges = await backend.findEdgesConnectedTo({
874
+ graphId: ctx.graphId,
875
+ nodeKind: args.kind,
876
+ nodeId: args.id
877
+ });
878
+ if (connectedEdges.length === 0) return;
879
+ switch (behavior) {
880
+ case "restrict": {
881
+ throw new chunkX4GDXBOP_cjs.RestrictedDeleteError({
882
+ nodeKind: args.kind,
883
+ nodeId: args.id,
884
+ edgeCount: connectedEdges.length,
885
+ edgeKinds: [...new Set(connectedEdges.map((edge) => edge.kind))]
886
+ });
887
+ }
888
+ case "cascade":
889
+ case "disconnect": {
890
+ const connectedEdgeIds = connectedEdges.map((edge) => edge.id);
891
+ const batchDelete = args.mode === "hard" ? backend.hardDeleteEdgesBatch : backend.deleteEdgesBatch;
892
+ if (batchDelete === void 0) {
893
+ for (const edge of connectedEdges) {
894
+ await (args.mode === "hard" ? backend.hardDeleteEdge({ graphId: ctx.graphId, id: edge.id }) : backend.deleteEdge({ graphId: ctx.graphId, id: edge.id }));
895
+ }
896
+ } else {
897
+ await batchDelete({
898
+ graphId: ctx.graphId,
899
+ ids: connectedEdgeIds
900
+ });
901
+ }
902
+ if (args.mode === "hard") {
903
+ await chunk7PRMDZIA_cjs.purgeEdgeClaims(backend, ctx.graphId, connectedEdgeIds);
904
+ }
905
+ break;
906
+ }
907
+ }
908
+ }
909
+ async function applyNodeInsertSyncFans(ctx, args, backend) {
910
+ await Promise.all([
911
+ syncEmbeddings(
912
+ nodeSyncContext(ctx, args.kind, args.id, backend),
913
+ args.schema,
914
+ args.props
915
+ ),
916
+ syncFulltext(
917
+ nodeSyncContext(ctx, args.kind, args.id, backend),
918
+ args.schema,
919
+ args.props
920
+ )
921
+ ]);
922
+ }
923
+ async function applyNodeInsertSyncFansBatch(ctx, items, backend) {
924
+ if (items.length === 0) return;
925
+ const byKind = /* @__PURE__ */ new Map();
926
+ for (const item of items) {
927
+ const group = byKind.get(item.kind) ?? { schema: item.schema, rows: [] };
928
+ group.rows.push({ nodeId: item.id, props: item.props });
929
+ byKind.set(item.kind, group);
930
+ }
931
+ await Promise.all(
932
+ [...byKind.entries()].flatMap(([kind, group]) => {
933
+ const syncArguments = { graphId: ctx.graphId, nodeKind: kind, backend };
934
+ return [
935
+ syncEmbeddingsBatchForKind(syncArguments, group.schema, group.rows),
936
+ syncFulltextBatchForKind(syncArguments, group.schema, group.rows)
937
+ ];
938
+ })
939
+ );
940
+ }
941
+ function parseRowProps(row) {
942
+ return chunkGHZPZNFC_cjs.rowPropsToObject(row.props);
943
+ }
944
+ async function planNodeUpdateUniqueness(ctx, args, backend) {
945
+ const { kind, id } = args.existing;
946
+ if (args.existing.deleted_at !== void 0) {
947
+ return planNodeClaimReinsert(
948
+ uniquenessContext(ctx, backend),
949
+ kind,
950
+ id,
951
+ args.validatedProps,
952
+ args.uniqueConstraints
953
+ );
954
+ }
955
+ return planNodeClaimUpdate(
956
+ uniquenessContext(ctx, backend),
957
+ kind,
958
+ id,
959
+ parseRowProps(args.existing),
960
+ args.validatedProps,
961
+ args.uniqueConstraints
962
+ );
963
+ }
964
+ async function applyNodeUpdate(ctx, args, backend) {
965
+ const { kind, id } = args.existing;
966
+ const plan = await planNodeUpdateUniqueness(
967
+ ctx,
968
+ {
969
+ existing: args.existing,
970
+ validatedProps: args.validatedProps,
971
+ uniqueConstraints: args.uniqueConstraints
972
+ },
973
+ backend
974
+ );
975
+ const updateParams = {
976
+ graphId: ctx.graphId,
977
+ kind,
978
+ id,
979
+ props: args.validatedProps,
980
+ incrementVersion: true
981
+ };
982
+ if (args.validFrom !== void 0) updateParams.validFrom = args.validFrom;
983
+ if (chunkM5MSP3BI_cjs.assertsStoredLowerBound(args)) {
984
+ updateParams.expectedValidFrom = args.expectedValidFrom;
985
+ }
986
+ if (args.clearDeleted) updateParams.clearDeleted = true;
987
+ const row = await withNodeClaimTransition(
988
+ uniquenessContext(ctx, backend),
989
+ kind,
990
+ id,
991
+ plan,
992
+ () => backend.updateNode({
993
+ ...updateParams,
994
+ ...args.clearValidTo === true ? { clearValidTo: true } : args.validTo === void 0 ? {} : { validTo: args.validTo }
995
+ })
996
+ );
997
+ await Promise.all([
998
+ syncEmbeddings(
999
+ nodeSyncContext(ctx, kind, id, backend),
1000
+ args.schema,
1001
+ args.validatedProps
1002
+ ),
1003
+ syncFulltext(
1004
+ nodeSyncContext(ctx, kind, id, backend),
1005
+ args.schema,
1006
+ args.validatedProps
1007
+ )
1008
+ ]);
1009
+ return row;
1010
+ }
1011
+ async function applyNodeSoftDelete(ctx, args, backend, policy) {
1012
+ const { kind, id } = args.existing;
1013
+ await enforceNodeDeleteBehavior(
1014
+ ctx,
1015
+ { kind, id, mode: "soft", onDelete: args.onDelete },
1016
+ backend,
1017
+ policy
1018
+ );
1019
+ await backend.deleteNode({
1020
+ graphId: ctx.graphId,
1021
+ kind,
1022
+ id
1023
+ });
1024
+ await deleteUniquenessEntries(
1025
+ uniquenessContext(ctx, backend),
1026
+ kind,
1027
+ id,
1028
+ parseRowProps(args.existing),
1029
+ args.uniqueConstraints
1030
+ );
1031
+ await deleteNodeEmbeddings(
1032
+ nodeSyncContext(ctx, kind, id, backend),
1033
+ args.schema
1034
+ );
1035
+ await deleteNodeFulltext(
1036
+ nodeSyncContext(ctx, kind, id, backend),
1037
+ args.schema
1038
+ );
1039
+ }
1040
+ async function applyNodeHardDelete(ctx, args, backend) {
1041
+ await enforceNodeDeleteBehavior(
1042
+ ctx,
1043
+ { kind: args.kind, id: args.id, mode: "hard", onDelete: args.onDelete },
1044
+ backend
1045
+ );
1046
+ await backend.hardDeleteNode({
1047
+ graphId: ctx.graphId,
1048
+ kind: args.kind,
1049
+ id: args.id
1050
+ });
1051
+ await deleteNodeEmbeddings(
1052
+ nodeSyncContext(ctx, args.kind, args.id, backend),
1053
+ args.schema
1054
+ );
1055
+ }
1056
+ async function applyNodeResurrect(ctx, args, backend) {
1057
+ const { kind, id } = args.existing;
1058
+ const props = parseRowProps(args.existing);
1059
+ const plan = await planNodeClaimReinsert(
1060
+ uniquenessContext(ctx, backend),
1061
+ kind,
1062
+ id,
1063
+ props,
1064
+ args.uniqueConstraints
1065
+ );
1066
+ const row = await withNodeClaimTransition(
1067
+ uniquenessContext(ctx, backend),
1068
+ kind,
1069
+ id,
1070
+ plan,
1071
+ () => backend.updateNode({
1072
+ graphId: ctx.graphId,
1073
+ kind,
1074
+ id,
1075
+ props,
1076
+ incrementVersion: true,
1077
+ clearDeleted: true
1078
+ })
1079
+ );
1080
+ await Promise.all([
1081
+ syncEmbeddings(nodeSyncContext(ctx, kind, id, backend), args.schema, props),
1082
+ syncFulltext(nodeSyncContext(ctx, kind, id, backend), args.schema, props)
1083
+ ]);
1084
+ return row;
1085
+ }
1086
+ async function applyNodeSetUpdate(ctx, args, backend) {
1087
+ const { kind, schema, uniqueConstraints } = args;
1088
+ const updateNodeSet = backend.updateNodeSet;
1089
+ if (updateNodeSet === void 0) {
1090
+ throw new chunkX4GDXBOP_cjs.ConfigurationError(
1091
+ "The transaction backend does not support set-based node updates",
1092
+ { code: "SET_UPDATE_UNSUPPORTED", kind }
1093
+ );
1094
+ }
1095
+ if (uniqueConstraints.length > 0 && (backend.hardDeleteUniquesByNodeIds === void 0 || backend.insertUniqueBatch === void 0 || backend.checkUniqueBatch === void 0)) {
1096
+ throw new chunkX4GDXBOP_cjs.ConfigurationError(
1097
+ "The transaction backend lacks batched uniqueness operations",
1098
+ { code: "SET_UPDATE_UNIQUENESS_UNSUPPORTED", kind }
1099
+ );
1100
+ }
1101
+ if (chunkHAHNRASW_cjs.getSearchableFields(schema).length > 0 && (backend.upsertFulltext === void 0 || backend.deleteFulltext === void 0 || backend.upsertFulltextBatch === void 0 || backend.deleteFulltextBatch === void 0)) {
1102
+ throw new chunkX4GDXBOP_cjs.ConfigurationError(
1103
+ "The transaction backend lacks batched fulltext operations",
1104
+ { code: "SET_UPDATE_FULLTEXT_UNSUPPORTED", kind }
1105
+ );
1106
+ }
1107
+ if (getEmbeddingFields(schema).length > 0 && (backend.upsertEmbedding === void 0 || backend.deleteEmbedding === void 0 || backend.upsertEmbeddingBatch === void 0 || backend.deleteEmbeddingBatch === void 0)) {
1108
+ throw new chunkX4GDXBOP_cjs.ConfigurationError(
1109
+ "The transaction backend lacks batched vector operations",
1110
+ { code: "SET_UPDATE_VECTOR_UNSUPPORTED", kind }
1111
+ );
1112
+ }
1113
+ const result = await updateNodeSet({
1114
+ graphId: ctx.graphId,
1115
+ kind,
1116
+ patch: args.patch,
1117
+ unsetProperties: args.unsetProperties,
1118
+ candidateIds: args.candidateIds,
1119
+ candidateIdColumn: args.candidateIdColumn
1120
+ });
1121
+ if (result.affectedCount === 0) return { affectedCount: 0 };
1122
+ const sidecarItems = result.rows.map((row) => {
1123
+ const props = chunkGHZPZNFC_cjs.rowPropsToObject(row.props);
1124
+ const validatedProps = chunkRDP6ZRSM_cjs.validateNodeProps(schema, props, {
1125
+ kind,
1126
+ operation: "update",
1127
+ id: row.id
1128
+ });
1129
+ if (!chunkZBFZGLZE_cjs.canonicalEqual(validatedProps, props)) {
1130
+ throw new chunkX4GDXBOP_cjs.ValidationError(
1131
+ `Set update would persist a non-canonical ${kind} row`,
1132
+ {
1133
+ entityType: "node",
1134
+ kind,
1135
+ operation: "update",
1136
+ id: row.id,
1137
+ issues: [
1138
+ {
1139
+ path: "props",
1140
+ message: "The complete row requires schema normalization"
1141
+ }
1142
+ ]
1143
+ }
1144
+ );
1145
+ }
1146
+ return {
1147
+ kind,
1148
+ id: row.id,
1149
+ schema,
1150
+ props: validatedProps,
1151
+ uniqueConstraints
1152
+ };
1153
+ });
1154
+ const claimItems = sidecarItems.map((item) => ({
1155
+ kind: item.kind,
1156
+ id: item.id,
1157
+ props: item.props,
1158
+ constraints: item.uniqueConstraints
1159
+ }));
1160
+ if (uniqueConstraints.length > 0) {
1161
+ await validateResolvedNodeClaims(
1162
+ createUniquenessContext(ctx.graphId, ctx.registry, backend),
1163
+ claimItems,
1164
+ []
1165
+ );
1166
+ await hardDeleteClaimsByNodeIds(
1167
+ uniquenessContext(ctx, backend),
1168
+ kind,
1169
+ result.rows.map((row) => row.id)
1170
+ );
1171
+ }
1172
+ await withNodeCreateClaimsBatch(
1173
+ ctx,
1174
+ claimItems,
1175
+ backend,
1176
+ alreadyAppliedRowWrite
1177
+ );
1178
+ await applyNodeInsertSyncFansBatch(ctx, sidecarItems, backend);
1179
+ return { affectedCount: result.affectedCount };
1180
+ }
1181
+
1182
+ exports.AUTO_REFRESH_STATISTICS_ROW_THRESHOLD = AUTO_REFRESH_STATISTICS_ROW_THRESHOLD;
1183
+ exports.STORE_RUNTIME = STORE_RUNTIME;
1184
+ exports.TRANSACTION_RUNTIME = TRANSACTION_RUNTIME;
1185
+ exports.applyNodeHardDelete = applyNodeHardDelete;
1186
+ exports.applyNodeInsertSyncFans = applyNodeInsertSyncFans;
1187
+ exports.applyNodeInsertSyncFansBatch = applyNodeInsertSyncFansBatch;
1188
+ exports.applyNodeResurrect = applyNodeResurrect;
1189
+ exports.applyNodeSetUpdate = applyNodeSetUpdate;
1190
+ exports.applyNodeSoftDelete = applyNodeSoftDelete;
1191
+ exports.applyNodeUpdate = applyNodeUpdate;
1192
+ exports.applyResolvedNodeClaims = applyResolvedNodeClaims;
1193
+ exports.checkUniquenessConstraints = checkUniquenessConstraints;
1194
+ exports.computeFulltextContent = computeFulltextContent;
1195
+ exports.createNodeWriteContext = createNodeWriteContext;
1196
+ exports.createUniquenessContext = createUniquenessContext;
1197
+ exports.getEmbeddingFields = getEmbeddingFields;
1198
+ exports.nodeClaimEntries = nodeClaimEntries;
1199
+ exports.nodeClaimSites = nodeClaimSites;
1200
+ exports.storeBackend = storeBackend;
1201
+ exports.storeRuntime = storeRuntime;
1202
+ exports.transactionBackend = transactionBackend;
1203
+ exports.transactionNodeOperationHookRunner = transactionNodeOperationHookRunner;
1204
+ exports.withNodeCreateClaims = withNodeCreateClaims;
1205
+ exports.withNodeCreateClaimsBatch = withNodeCreateClaimsBatch;
1206
+ //# sourceMappingURL=chunk-TUVD4DFR.cjs.map
1207
+ //# sourceMappingURL=chunk-TUVD4DFR.cjs.map