@nicia-ai/typegraph 0.34.0 → 0.36.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 (287) hide show
  1. package/dist/backend/postgres/index.cjs +29 -29
  2. package/dist/backend/postgres/index.d.cts +39 -7
  3. package/dist/backend/postgres/index.d.ts +39 -7
  4. package/dist/backend/postgres/index.js +16 -16
  5. package/dist/backend/postgres/pglite.cjs +21 -21
  6. package/dist/backend/postgres/pglite.d.cts +4 -4
  7. package/dist/backend/postgres/pglite.d.ts +4 -4
  8. package/dist/backend/postgres/pglite.js +16 -16
  9. package/dist/backend/sqlite/index.cjs +25 -26
  10. package/dist/backend/sqlite/index.d.cts +8 -8
  11. package/dist/backend/sqlite/index.d.ts +8 -8
  12. package/dist/backend/sqlite/index.js +13 -14
  13. package/dist/backend/sqlite/libsql.cjs +19 -19
  14. package/dist/backend/sqlite/libsql.d.cts +4 -4
  15. package/dist/backend/sqlite/libsql.d.ts +4 -4
  16. package/dist/backend/sqlite/libsql.js +15 -15
  17. package/dist/backend/sqlite/local.cjs +101 -21
  18. package/dist/backend/sqlite/local.cjs.map +1 -1
  19. package/dist/backend/sqlite/local.d.cts +95 -5
  20. package/dist/backend/sqlite/local.d.ts +95 -5
  21. package/dist/backend/sqlite/local.js +95 -16
  22. package/dist/backend/sqlite/local.js.map +1 -1
  23. package/dist/{chunk-T6SPUYLX.cjs → chunk-2THZ3TQI.cjs} +116 -10
  24. package/dist/chunk-2THZ3TQI.cjs.map +1 -0
  25. package/dist/{chunk-UJLOZYKT.cjs → chunk-456Z2U7Y.cjs} +441 -115
  26. package/dist/chunk-456Z2U7Y.cjs.map +1 -0
  27. package/dist/chunk-4BCU6VFZ.cjs +100 -0
  28. package/dist/chunk-4BCU6VFZ.cjs.map +1 -0
  29. package/dist/chunk-4BMPGT35.cjs +12 -0
  30. package/dist/{chunk-HMFK4BXR.cjs.map → chunk-4BMPGT35.cjs.map} +1 -1
  31. package/dist/chunk-4CAXEB2F.cjs +1366 -0
  32. package/dist/chunk-4CAXEB2F.cjs.map +1 -0
  33. package/dist/{chunk-RY2VIWAM.js → chunk-4GX2JJXS.js} +355 -32
  34. package/dist/chunk-4GX2JJXS.js.map +1 -0
  35. package/dist/{chunk-GQANNXXT.cjs → chunk-5A6FNS6N.cjs} +75 -20
  36. package/dist/chunk-5A6FNS6N.cjs.map +1 -0
  37. package/dist/{chunk-3Z6TW3CT.cjs → chunk-5AQIKK56.cjs} +65 -25
  38. package/dist/chunk-5AQIKK56.cjs.map +1 -0
  39. package/dist/{chunk-WLRIWYHQ.js → chunk-5DIPR3L3.js} +2145 -1937
  40. package/dist/chunk-5DIPR3L3.js.map +1 -0
  41. package/dist/{chunk-BVTWD66D.js → chunk-5SEGFTZX.js} +3 -3
  42. package/dist/{chunk-BVTWD66D.js.map → chunk-5SEGFTZX.js.map} +1 -1
  43. package/dist/{chunk-A7SZZFAG.js → chunk-5VTR2F2K.js} +452 -109
  44. package/dist/chunk-5VTR2F2K.js.map +1 -0
  45. package/dist/{chunk-JJRCLAUN.cjs → chunk-5W4L6DLF.cjs} +116 -10
  46. package/dist/chunk-5W4L6DLF.cjs.map +1 -0
  47. package/dist/{chunk-6GNSY7AV.js → chunk-6FR2MMS6.js} +7 -7
  48. package/dist/chunk-6FR2MMS6.js.map +1 -0
  49. package/dist/{chunk-3BRVBQQD.cjs → chunk-7BQLPXK6.cjs} +2648 -2440
  50. package/dist/chunk-7BQLPXK6.cjs.map +1 -0
  51. package/dist/chunk-7YSP4V4R.cjs +69 -0
  52. package/dist/chunk-7YSP4V4R.cjs.map +1 -0
  53. package/dist/chunk-A42GCBGX.cjs +28 -0
  54. package/dist/chunk-A42GCBGX.cjs.map +1 -0
  55. package/dist/{chunk-ZV5N4DBG.js → chunk-BJVEU3ZL.js} +300 -58
  56. package/dist/chunk-BJVEU3ZL.js.map +1 -0
  57. package/dist/chunk-BYPOGQWK.js +25 -0
  58. package/dist/chunk-BYPOGQWK.js.map +1 -0
  59. package/dist/chunk-CUHM5CWJ.cjs +12 -0
  60. package/dist/chunk-CUHM5CWJ.cjs.map +1 -0
  61. package/dist/{chunk-2JXB3NYJ.cjs → chunk-D7ZEOS56.cjs} +25 -32
  62. package/dist/chunk-D7ZEOS56.cjs.map +1 -0
  63. package/dist/chunk-DFVLCOP6.js +10 -0
  64. package/dist/chunk-DFVLCOP6.js.map +1 -0
  65. package/dist/{chunk-JIEJCTDS.cjs → chunk-DIK74MXX.cjs} +37 -4
  66. package/dist/chunk-DIK74MXX.cjs.map +1 -0
  67. package/dist/chunk-DN5VP4JC.js +1343 -0
  68. package/dist/chunk-DN5VP4JC.js.map +1 -0
  69. package/dist/chunk-EOLERH7Y.cjs +40 -0
  70. package/dist/chunk-EOLERH7Y.cjs.map +1 -0
  71. package/dist/{chunk-TGJE22RM.cjs → chunk-FACJJWGF.cjs} +24 -6
  72. package/dist/chunk-FACJJWGF.cjs.map +1 -0
  73. package/dist/{chunk-WVC2Q2FD.cjs → chunk-FN35DLCN.cjs} +31 -9
  74. package/dist/chunk-FN35DLCN.cjs.map +1 -0
  75. package/dist/{chunk-KUTNI6SI.js → chunk-FPIZFYHE.js} +10 -18
  76. package/dist/chunk-FPIZFYHE.js.map +1 -0
  77. package/dist/{chunk-VCGO4V26.js → chunk-FRV5Q5IO.js} +64 -9
  78. package/dist/chunk-FRV5Q5IO.js.map +1 -0
  79. package/dist/{chunk-K5P5OZXS.js → chunk-G6Q5UM7U.js} +2 -2
  80. package/dist/{chunk-K5P5OZXS.js.map → chunk-G6Q5UM7U.js.map} +1 -1
  81. package/dist/{chunk-JQGIPGVL.cjs → chunk-H7YNSMA7.cjs} +43 -2
  82. package/dist/chunk-H7YNSMA7.cjs.map +1 -0
  83. package/dist/chunk-HW3LW7DH.cjs +1271 -0
  84. package/dist/chunk-HW3LW7DH.cjs.map +1 -0
  85. package/dist/{chunk-V3QNTB7Z.js → chunk-IU46OHVW.js} +194 -114
  86. package/dist/chunk-IU46OHVW.js.map +1 -0
  87. package/dist/{chunk-HK5SATYM.cjs → chunk-J3LEGNQB.cjs} +16 -109
  88. package/dist/chunk-J3LEGNQB.cjs.map +1 -0
  89. package/dist/{chunk-ZP5WHI4C.cjs → chunk-JFMEONLG.cjs} +358 -116
  90. package/dist/chunk-JFMEONLG.cjs.map +1 -0
  91. package/dist/{chunk-2MRAX3UE.js → chunk-JFUPDJXD.js} +47 -4
  92. package/dist/chunk-JFUPDJXD.js.map +1 -0
  93. package/dist/{chunk-Z5XBMDXU.js → chunk-KBGQIPRQ.js} +42 -3
  94. package/dist/chunk-KBGQIPRQ.js.map +1 -0
  95. package/dist/{chunk-K2TGS3EN.js → chunk-M75SUBFG.js} +138 -89
  96. package/dist/chunk-M75SUBFG.js.map +1 -0
  97. package/dist/chunk-OHMP6N2J.js +47 -0
  98. package/dist/chunk-OHMP6N2J.js.map +1 -0
  99. package/dist/{chunk-4DIBPQNJ.js → chunk-OR5ZA5WP.js} +135 -25
  100. package/dist/chunk-OR5ZA5WP.js.map +1 -0
  101. package/dist/{chunk-6HVOHZHS.cjs → chunk-PWGX5DF5.cjs} +213 -168
  102. package/dist/chunk-PWGX5DF5.cjs.map +1 -0
  103. package/dist/chunk-PZKNKG5M.js +1252 -0
  104. package/dist/chunk-PZKNKG5M.js.map +1 -0
  105. package/dist/{chunk-DEQFL35G.js → chunk-Q5TEXCTB.js} +61 -7
  106. package/dist/chunk-Q5TEXCTB.js.map +1 -0
  107. package/dist/{chunk-QV245VMN.js → chunk-RAXU3RMB.js} +100 -6
  108. package/dist/chunk-RAXU3RMB.js.map +1 -0
  109. package/dist/{chunk-RHZWOJVA.cjs → chunk-RSSQKPSZ.cjs} +52 -4
  110. package/dist/chunk-RSSQKPSZ.cjs.map +1 -0
  111. package/dist/{chunk-G6SOJEDI.cjs → chunk-S55OV6PW.cjs} +15 -15
  112. package/dist/chunk-S55OV6PW.cjs.map +1 -0
  113. package/dist/chunk-S5F7ZLP2.js +94 -0
  114. package/dist/chunk-S5F7ZLP2.js.map +1 -0
  115. package/dist/{chunk-3E7SNSIA.cjs → chunk-SJDMVITW.cjs} +4 -4
  116. package/dist/{chunk-3E7SNSIA.cjs.map → chunk-SJDMVITW.cjs.map} +1 -1
  117. package/dist/{chunk-CHXTTSC6.js → chunk-SKCOUWAX.js} +104 -5
  118. package/dist/chunk-SKCOUWAX.js.map +1 -0
  119. package/dist/{chunk-XLUNB2TZ.js → chunk-SNXVDZAJ.js} +3 -3
  120. package/dist/{chunk-XLUNB2TZ.js.map → chunk-SNXVDZAJ.js.map} +1 -1
  121. package/dist/{chunk-ZURTTSCM.js → chunk-SXGE7ITL.js} +6 -94
  122. package/dist/chunk-SXGE7ITL.js.map +1 -0
  123. package/dist/{chunk-RBV7YCQD.js → chunk-T2WUSPDA.js} +49 -9
  124. package/dist/chunk-T2WUSPDA.js.map +1 -0
  125. package/dist/{chunk-KGC4LY5T.cjs → chunk-TCOCYN2P.cjs} +75 -21
  126. package/dist/chunk-TCOCYN2P.cjs.map +1 -0
  127. package/dist/{chunk-FLRCVI2G.cjs → chunk-TDXIBCGY.cjs} +2 -2
  128. package/dist/{chunk-FLRCVI2G.cjs.map → chunk-TDXIBCGY.cjs.map} +1 -1
  129. package/dist/{chunk-ZY4GXIVN.cjs → chunk-TEDRJXOG.cjs} +5 -5
  130. package/dist/{chunk-ZY4GXIVN.cjs.map → chunk-TEDRJXOG.cjs.map} +1 -1
  131. package/dist/{chunk-WL2SG7ZV.cjs → chunk-UMDVATGY.cjs} +6 -6
  132. package/dist/{chunk-WL2SG7ZV.cjs.map → chunk-UMDVATGY.cjs.map} +1 -1
  133. package/dist/chunk-UT3S4SEN.js +31 -0
  134. package/dist/chunk-UT3S4SEN.js.map +1 -0
  135. package/dist/{chunk-RRKQAKD6.cjs → chunk-UUT7UN2N.cjs} +149 -39
  136. package/dist/chunk-UUT7UN2N.cjs.map +1 -0
  137. package/dist/{chunk-SHLY4MCM.js → chunk-UZV3AZKF.js} +21 -3
  138. package/dist/chunk-UZV3AZKF.js.map +1 -0
  139. package/dist/{chunk-CYX2JTDG.js → chunk-VHMPG6UL.js} +29 -7
  140. package/dist/chunk-VHMPG6UL.js.map +1 -0
  141. package/dist/{chunk-LANHCOXB.js → chunk-VQEXF5D4.js} +485 -83
  142. package/dist/chunk-VQEXF5D4.js.map +1 -0
  143. package/dist/{chunk-K34OPSJK.js → chunk-W63OVYY4.js} +3 -3
  144. package/dist/{chunk-K34OPSJK.js.map → chunk-W63OVYY4.js.map} +1 -1
  145. package/dist/{chunk-TQOYM4LN.js → chunk-WI7ISNQF.js} +35 -5
  146. package/dist/chunk-WI7ISNQF.js.map +1 -0
  147. package/dist/{chunk-UNNPKQUG.cjs → chunk-X4JBT642.cjs} +246 -155
  148. package/dist/chunk-X4JBT642.cjs.map +1 -0
  149. package/dist/chunk-ZAMFOJ5P.cjs +1176 -0
  150. package/dist/chunk-ZAMFOJ5P.cjs.map +1 -0
  151. package/dist/{chunk-T46GR2VY.js → chunk-ZIGXMKQQ.js} +3 -3
  152. package/dist/{chunk-T46GR2VY.js.map → chunk-ZIGXMKQQ.js.map} +1 -1
  153. package/dist/{chunk-5IQIX7LU.cjs → chunk-ZUNQ5BEP.cjs} +518 -172
  154. package/dist/chunk-ZUNQ5BEP.cjs.map +1 -0
  155. package/dist/{ddl-BrmPg61z.d.ts → ddl-C2rZ-Aen.d.ts} +4 -4
  156. package/dist/{ddl-j1-sH6lE.d.cts → ddl-CZz7a0E8.d.cts} +4 -4
  157. package/dist/{extension-types-YGFJPrzK.d.cts → extension-types-ixRpJVUp.d.cts} +24 -1
  158. package/dist/{extension-types-YGFJPrzK.d.ts → extension-types-ixRpJVUp.d.ts} +24 -1
  159. package/dist/{types-DkNnF-7K.d.cts → fulltext-strategy-B57yvC5Q.d.ts} +2562 -2133
  160. package/dist/{types-D1Sqeyxy.d.ts → fulltext-strategy-CDkSSYhq.d.cts} +2562 -2133
  161. package/dist/graph-extension/index.cjs +20 -19
  162. package/dist/graph-extension/index.d.cts +4 -4
  163. package/dist/graph-extension/index.d.ts +4 -4
  164. package/dist/graph-extension/index.js +5 -4
  165. package/dist/graph-merge/index.cjs +255 -164
  166. package/dist/graph-merge/index.cjs.map +1 -1
  167. package/dist/graph-merge/index.d.cts +63 -33
  168. package/dist/graph-merge/index.d.ts +63 -33
  169. package/dist/graph-merge/index.js +135 -44
  170. package/dist/graph-merge/index.js.map +1 -1
  171. package/dist/{index-DGX6D9j1.d.ts → index-BFvdmBPV.d.ts} +301 -93
  172. package/dist/{index-SEvUHDA6.d.cts → index-BLtQWKRj.d.cts} +301 -93
  173. package/dist/index.cjs +216 -188
  174. package/dist/index.d.cts +11 -11
  175. package/dist/index.d.ts +11 -11
  176. package/dist/index.js +33 -33
  177. package/dist/indexes/index.cjs +19 -20
  178. package/dist/indexes/index.d.cts +5 -5
  179. package/dist/indexes/index.d.ts +5 -5
  180. package/dist/indexes/index.js +10 -11
  181. package/dist/interchange/index.cjs +48 -26
  182. package/dist/interchange/index.d.cts +126 -12
  183. package/dist/interchange/index.d.ts +126 -12
  184. package/dist/interchange/index.js +15 -13
  185. package/dist/{manager-ms9cKdc6.d.cts → manager-DwQi8eV0.d.cts} +9 -2
  186. package/dist/{manager-BZUeN_BU.d.ts → manager-ejUCB52T.d.ts} +9 -2
  187. package/dist/{materialize-indexes-D20xNluI.d.cts → materialize-indexes-B4e9360H.d.cts} +20 -4
  188. package/dist/{materialize-indexes-CAkIYFV-.d.ts → materialize-indexes-te9TPMMJ.d.ts} +20 -4
  189. package/dist/{postgres-BhpxGMC5.d.cts → postgres-CfEqsRMp.d.cts} +152 -1
  190. package/dist/{postgres-CWHLwNl1.d.ts → postgres-DQ5R6rzV.d.ts} +152 -1
  191. package/dist/profiler/index.cjs +11 -11
  192. package/dist/profiler/index.d.cts +7 -7
  193. package/dist/profiler/index.d.ts +7 -7
  194. package/dist/profiler/index.js +4 -4
  195. package/dist/provenance/index.cjs +40 -41
  196. package/dist/provenance/index.cjs.map +1 -1
  197. package/dist/provenance/index.d.cts +5 -5
  198. package/dist/provenance/index.d.ts +5 -5
  199. package/dist/provenance/index.js +11 -12
  200. package/dist/provenance/index.js.map +1 -1
  201. package/dist/schema/index.cjs +53 -40
  202. package/dist/schema/index.cjs.map +1 -1
  203. package/dist/schema/index.d.cts +57 -57
  204. package/dist/schema/index.d.ts +57 -57
  205. package/dist/schema/index.js +28 -15
  206. package/dist/schema/index.js.map +1 -1
  207. package/dist/{sqlite-XrDxNaa7.d.cts → sqlite-D7zBinNR.d.cts} +92 -1
  208. package/dist/{sqlite-CGu5SLsw.d.ts → sqlite-DvQndLky.d.ts} +92 -1
  209. package/dist/{store-view-D09po4H6.d.cts → store-view-9KDOpZzF.d.cts} +643 -58
  210. package/dist/{store-view-BlgnhEYf.d.ts → store-view-DplHC3Nt.d.ts} +643 -58
  211. package/dist/{types-DiE1AO7p.d.cts → types-Bv9DcS_E.d.cts} +2 -2
  212. package/dist/{types-B1TbZJYS.d.ts → types-CoxuV7EJ.d.ts} +2 -2
  213. package/dist/{where-DKjuofPr.d.cts → where-7RKFOsXt.d.ts} +2 -2
  214. package/dist/{where-DrUIIWHb.d.ts → where-DdMIXOtH.d.cts} +2 -2
  215. package/package.json +14 -13
  216. package/dist/chunk-2EBMPJBO.js +0 -16
  217. package/dist/chunk-2EBMPJBO.js.map +0 -1
  218. package/dist/chunk-2JXB3NYJ.cjs.map +0 -1
  219. package/dist/chunk-2MRAX3UE.js.map +0 -1
  220. package/dist/chunk-3BRVBQQD.cjs.map +0 -1
  221. package/dist/chunk-3EUKJEQ3.js +0 -77
  222. package/dist/chunk-3EUKJEQ3.js.map +0 -1
  223. package/dist/chunk-3Z6TW3CT.cjs.map +0 -1
  224. package/dist/chunk-4DIBPQNJ.js.map +0 -1
  225. package/dist/chunk-4S2FXGBJ.js +0 -9
  226. package/dist/chunk-4S2FXGBJ.js.map +0 -1
  227. package/dist/chunk-5IQIX7LU.cjs.map +0 -1
  228. package/dist/chunk-6GNSY7AV.js.map +0 -1
  229. package/dist/chunk-6HVOHZHS.cjs.map +0 -1
  230. package/dist/chunk-6SCVW4AS.js +0 -20
  231. package/dist/chunk-6SCVW4AS.js.map +0 -1
  232. package/dist/chunk-A7SZZFAG.js.map +0 -1
  233. package/dist/chunk-CHXTTSC6.js.map +0 -1
  234. package/dist/chunk-CYX2JTDG.js.map +0 -1
  235. package/dist/chunk-DEQFL35G.js.map +0 -1
  236. package/dist/chunk-G6SOJEDI.cjs.map +0 -1
  237. package/dist/chunk-GQANNXXT.cjs.map +0 -1
  238. package/dist/chunk-GZCNZ7QW.js +0 -24
  239. package/dist/chunk-GZCNZ7QW.js.map +0 -1
  240. package/dist/chunk-HK5SATYM.cjs.map +0 -1
  241. package/dist/chunk-HMFK4BXR.cjs +0 -12
  242. package/dist/chunk-HTGDWIDE.cjs +0 -89
  243. package/dist/chunk-HTGDWIDE.cjs.map +0 -1
  244. package/dist/chunk-JIEJCTDS.cjs.map +0 -1
  245. package/dist/chunk-JJRCLAUN.cjs.map +0 -1
  246. package/dist/chunk-JQGIPGVL.cjs.map +0 -1
  247. package/dist/chunk-K2TGS3EN.js.map +0 -1
  248. package/dist/chunk-KGC4LY5T.cjs.map +0 -1
  249. package/dist/chunk-KNHYNQQ3.cjs +0 -663
  250. package/dist/chunk-KNHYNQQ3.cjs.map +0 -1
  251. package/dist/chunk-KUTNI6SI.js.map +0 -1
  252. package/dist/chunk-LANHCOXB.js.map +0 -1
  253. package/dist/chunk-N6WTUSBV.cjs +0 -23
  254. package/dist/chunk-N6WTUSBV.cjs.map +0 -1
  255. package/dist/chunk-NAUA4PW5.cjs +0 -28
  256. package/dist/chunk-NAUA4PW5.cjs.map +0 -1
  257. package/dist/chunk-QV245VMN.js.map +0 -1
  258. package/dist/chunk-RBV7YCQD.js.map +0 -1
  259. package/dist/chunk-RHZWOJVA.cjs.map +0 -1
  260. package/dist/chunk-RRKQAKD6.cjs.map +0 -1
  261. package/dist/chunk-RY2VIWAM.js.map +0 -1
  262. package/dist/chunk-SHLY4MCM.js.map +0 -1
  263. package/dist/chunk-T2DWPQNE.js +0 -649
  264. package/dist/chunk-T2DWPQNE.js.map +0 -1
  265. package/dist/chunk-T6SPUYLX.cjs.map +0 -1
  266. package/dist/chunk-TGJE22RM.cjs.map +0 -1
  267. package/dist/chunk-TOTPVGOG.cjs +0 -774
  268. package/dist/chunk-TOTPVGOG.cjs.map +0 -1
  269. package/dist/chunk-TQOYM4LN.js.map +0 -1
  270. package/dist/chunk-UJLOZYKT.cjs.map +0 -1
  271. package/dist/chunk-UNNPKQUG.cjs.map +0 -1
  272. package/dist/chunk-V3QNTB7Z.js.map +0 -1
  273. package/dist/chunk-VCGO4V26.js.map +0 -1
  274. package/dist/chunk-WLRIWYHQ.js.map +0 -1
  275. package/dist/chunk-WVC2Q2FD.cjs.map +0 -1
  276. package/dist/chunk-XXVEULWX.js +0 -39
  277. package/dist/chunk-XXVEULWX.js.map +0 -1
  278. package/dist/chunk-YAZE7QZR.cjs +0 -32
  279. package/dist/chunk-YAZE7QZR.cjs.map +0 -1
  280. package/dist/chunk-YC6PWTHY.cjs +0 -44
  281. package/dist/chunk-YC6PWTHY.cjs.map +0 -1
  282. package/dist/chunk-Z5HBYM7U.cjs +0 -11
  283. package/dist/chunk-Z5HBYM7U.cjs.map +0 -1
  284. package/dist/chunk-Z5XBMDXU.js.map +0 -1
  285. package/dist/chunk-ZP5WHI4C.cjs.map +0 -1
  286. package/dist/chunk-ZURTTSCM.js.map +0 -1
  287. package/dist/chunk-ZV5N4DBG.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/indexes/ddl.ts"],"names":[],"mappings":"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","file":"chunk-SHLY4MCM.js","sourcesContent":["import { type SQL, sql } from \"drizzle-orm\";\nimport { CasingCache } from \"drizzle-orm/casing\";\n\nimport { getDialect } from \"../query/dialect\";\nimport { type SqlDialect } from \"../query/dialect/types\";\nimport {\n compileEdgeIndexKeys,\n compileIndexWhere,\n compileNodeIndexKeys,\n type IndexCompilationContext,\n} from \"./compiler\";\nimport {\n type EdgeIndexDeclaration,\n type NodeIndexDeclaration,\n type RelationalIndexDeclaration,\n type SystemColumnName,\n} from \"./types\";\n\nexport type GenerateIndexDdlOptions = Readonly<{\n nodesTableName?: string | undefined;\n edgesTableName?: string | undefined;\n ifNotExists?: boolean | undefined;\n /**\n * Emit `CREATE INDEX CONCURRENTLY` (Postgres only). Required for\n * `store.materializeIndexes()` so live tables don't take an\n * `AccessExclusiveLock`. Ignored on SQLite (no equivalent; SQLite is\n * single-writer regardless). When true on Postgres, the resulting\n * statement cannot be executed inside a transaction.\n */\n concurrent?: boolean | undefined;\n}>;\n\n/**\n * Generate `CREATE INDEX` DDL for a single relational index declaration.\n *\n * Vector index declarations (`entity: \"vector\"`) are NOT handled here —\n * they go through `backend.createVectorIndex` instead because the DDL\n * is dialect-specific (`USING hnsw (...) WITH (m=..., ef_construction=...)`\n * on Postgres) and operates on the strategy's per-`(kind, field)` embedding\n * tables, not `typegraph_nodes` / `typegraph_edges`. Callers narrow to the\n * relational subset before calling this function.\n */\nexport function generateIndexDDL(\n index: RelationalIndexDeclaration,\n dialect: SqlDialect,\n options: GenerateIndexDdlOptions = {},\n): string {\n if (index.entity === \"node\") {\n return generateNodeIndexDDL(index, dialect, options);\n }\n return generateEdgeIndexDDL(index, dialect, options);\n}\n\nexport function generateNodeIndexDDL(\n index: NodeIndexDeclaration,\n dialect: SqlDialect,\n options: GenerateIndexDdlOptions = {},\n): string {\n const tableName = options.nodesTableName ?? \"typegraph_nodes\";\n return generateTableIndexDDL(index, dialect, tableName, options);\n}\n\nexport function generateEdgeIndexDDL(\n index: EdgeIndexDeclaration,\n dialect: SqlDialect,\n options: GenerateIndexDdlOptions = {},\n): string {\n const tableName = options.edgesTableName ?? \"typegraph_edges\";\n return generateTableIndexDDL(index, dialect, tableName, options);\n}\n\nfunction generateTableIndexDDL(\n index: RelationalIndexDeclaration,\n dialect: SqlDialect,\n tableName: string,\n options: GenerateIndexDdlOptions,\n): string {\n const ifNotExists = options.ifNotExists ?? true;\n const propsColumn = sql.raw('\"props\"');\n const systemColumn = (column: SystemColumnName): SQL =>\n sql.raw(quoteIdentifier(column));\n\n const keys =\n index.entity === \"node\" ?\n compileNodeIndexKeys(index, dialect, propsColumn, systemColumn).keys\n : compileEdgeIndexKeys(index, dialect, propsColumn, systemColumn).keys;\n\n const whereSql =\n index.where ?\n sqlToInlineString(\n compileIndexWhere(\n {\n dialect,\n propsColumn,\n systemColumn,\n } satisfies IndexCompilationContext,\n index.where,\n ),\n dialect,\n )\n : undefined;\n\n const keySql = keys.map((k) => sqlToInlineString(k, dialect)).join(\", \");\n const unique = index.unique ? \"UNIQUE \" : \"\";\n const concurrent =\n options.concurrent === true && dialect === \"postgres\" ?\n \"CONCURRENTLY \"\n : \"\";\n const ifNotExistsSql = ifNotExists ? \"IF NOT EXISTS \" : \"\";\n\n const whereClause = whereSql ? ` WHERE ${whereSql}` : \"\";\n\n return `CREATE ${unique}INDEX ${concurrent}${ifNotExistsSql}${quoteIdentifier(index.name)} ON ${quoteIdentifier(tableName)} (${keySql})${whereClause};`;\n}\n\nfunction quoteIdentifier(identifier: string): string {\n return `\"${identifier.replaceAll('\"', '\"\"')}\"`;\n}\n\nfunction sqlToInlineString(object: SQL, dialect: SqlDialect): string {\n const query = object.toQuery({\n casing: new CasingCache(),\n escapeName: (name) => name,\n escapeParam: (_number, value) => inlineParam(value, dialect),\n escapeString: (value) => escapeStringLiteral(value),\n inlineParams: true,\n invokeSource: \"indexes\",\n });\n\n if (query.params.length > 0) {\n throw new Error(\n \"Index DDL generation produced parameters; expected fully inlined SQL\",\n );\n }\n\n return query.sql;\n}\n\nfunction inlineParam(value: unknown, dialect: SqlDialect): string {\n if (value === null || value === undefined) {\n return \"NULL\";\n }\n if (value instanceof Date) {\n return escapeStringLiteral(value.toISOString());\n }\n\n if (typeof value === \"string\") {\n return escapeStringLiteral(value);\n }\n if (typeof value === \"number\") {\n return value.toString();\n }\n if (typeof value === \"boolean\") {\n return getDialect(dialect).booleanLiteralString(value);\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n throw new TypeError(\n \"Index DDL generation received an unsupported SQL parameter value\",\n );\n}\n\nfunction escapeStringLiteral(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n}\n"]}
@@ -1,649 +0,0 @@
1
- import { runInWriteTransaction } from './chunk-6SCVW4AS.js';
2
- import { getNodeKinds, getEdgeKinds } from './chunk-CHXTTSC6.js';
3
- import { applyNodeInsertSideEffects, validateEdgeEndpoints, applyNodeUpdate, checkUniquenessConstraints } from './chunk-A7SZZFAG.js';
4
- import { isLiveNodeRow } from './chunk-V3QNTB7Z.js';
5
- import { isCanonicalIsoDate, nowIso, validateOptionalCanonicalIsoDate } from './chunk-XXVEULWX.js';
6
- import { UniquenessError } from './chunk-TQOYM4LN.js';
7
- import { z } from 'zod';
8
-
9
- var FORMAT_VERSION = "1.0";
10
- var ValidityTimestampSchema = z.iso.datetime().refine((value) => isCanonicalIsoDate(value), {
11
- message: "Expected canonical UTC ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ); convert with new Date(value).toISOString()."
12
- });
13
- var InterchangeNodeSchema = z.object({
14
- kind: z.string().min(1),
15
- id: z.string().min(1),
16
- properties: z.record(z.string(), z.unknown()),
17
- validFrom: ValidityTimestampSchema.optional(),
18
- validTo: ValidityTimestampSchema.optional(),
19
- meta: z.object({
20
- version: z.number().int().positive().optional(),
21
- createdAt: z.iso.datetime().optional(),
22
- updatedAt: z.iso.datetime().optional()
23
- }).optional()
24
- });
25
- var InterchangeEdgeSchema = z.object({
26
- kind: z.string().min(1),
27
- id: z.string().min(1),
28
- from: z.object({
29
- kind: z.string().min(1),
30
- id: z.string().min(1)
31
- }),
32
- to: z.object({
33
- kind: z.string().min(1),
34
- id: z.string().min(1)
35
- }),
36
- properties: z.record(z.string(), z.unknown()).default({}),
37
- validFrom: ValidityTimestampSchema.optional(),
38
- validTo: ValidityTimestampSchema.optional(),
39
- meta: z.object({
40
- createdAt: z.iso.datetime().optional(),
41
- updatedAt: z.iso.datetime().optional()
42
- }).optional()
43
- });
44
- var ConflictStrategySchema = z.enum(["skip", "update", "error"]);
45
- var UnknownPropertyStrategySchema = z.enum([
46
- "error",
47
- "strip",
48
- "allow"
49
- ]);
50
- var ImportOptionsSchema = z.object({
51
- /** How to handle existing nodes/edges with the same ID */
52
- onConflict: ConflictStrategySchema,
53
- /** How to handle properties not in the schema */
54
- onUnknownProperty: UnknownPropertyStrategySchema.default("error"),
55
- /** Whether to validate that edge endpoints exist */
56
- validateReferences: z.boolean().default(true),
57
- /** Number of items to process in each batch */
58
- batchSize: z.number().int().positive().default(100)
59
- });
60
- var GraphDataSourceSchema = z.discriminatedUnion("type", [
61
- z.object({
62
- type: z.literal("typegraph-export"),
63
- graphId: z.string(),
64
- schemaVersion: z.number().int().positive()
65
- }),
66
- z.object({
67
- type: z.literal("external"),
68
- description: z.string().optional()
69
- })
70
- ]);
71
- var GraphDataSchema = z.object({
72
- formatVersion: z.literal(FORMAT_VERSION),
73
- exportedAt: z.iso.datetime(),
74
- source: GraphDataSourceSchema,
75
- nodes: z.array(InterchangeNodeSchema),
76
- edges: z.array(InterchangeEdgeSchema)
77
- });
78
- var ImportErrorSchema = z.object({
79
- entityType: z.enum(["node", "edge"]),
80
- kind: z.string(),
81
- id: z.string(),
82
- error: z.string()
83
- });
84
- var ImportResultSchema = z.object({
85
- success: z.boolean(),
86
- nodes: z.object({
87
- created: z.number().int().nonnegative(),
88
- updated: z.number().int().nonnegative(),
89
- skipped: z.number().int().nonnegative()
90
- }),
91
- edges: z.object({
92
- created: z.number().int().nonnegative(),
93
- updated: z.number().int().nonnegative(),
94
- skipped: z.number().int().nonnegative()
95
- }),
96
- errors: z.array(ImportErrorSchema)
97
- });
98
- var ExportOptionsSchema = z.object({
99
- /** Filter to specific node kinds (undefined = all) */
100
- nodeKinds: z.array(z.string()).optional(),
101
- /** Filter to specific edge kinds (undefined = all) */
102
- edgeKinds: z.array(z.string()).optional(),
103
- /** Include temporal fields (validFrom, validTo) */
104
- includeTemporal: z.boolean().default(false),
105
- /** Include metadata (version, timestamps) */
106
- includeMeta: z.boolean().default(false),
107
- /** Include soft-deleted records */
108
- includeDeleted: z.boolean().default(false)
109
- });
110
-
111
- // src/interchange/export.ts
112
- async function exportGraph(store, options) {
113
- const options_ = {
114
- nodeKinds: options?.nodeKinds,
115
- edgeKinds: options?.edgeKinds,
116
- includeTemporal: options?.includeTemporal ?? false,
117
- includeMeta: options?.includeMeta ?? false,
118
- includeDeleted: options?.includeDeleted ?? false
119
- };
120
- const graph = store.graph;
121
- const graphId = store.graphId;
122
- const backend = store.backend;
123
- const nodeKindsToExport = options_.nodeKinds ?? getNodeKinds(graph);
124
- const edgeKindsToExport = options_.edgeKinds ?? getEdgeKinds(graph);
125
- const nodes = [];
126
- for (const kind of nodeKindsToExport) {
127
- const kindNodes = await exportNodesOfKind(backend, graphId, kind, options_);
128
- nodes.push(...kindNodes);
129
- }
130
- const edges = [];
131
- for (const kind of edgeKindsToExport) {
132
- const kindEdges = await exportEdgesOfKind(backend, graphId, kind, options_);
133
- edges.push(...kindEdges);
134
- }
135
- const schemaVersion = await backend.getActiveSchema(graphId);
136
- return {
137
- formatVersion: FORMAT_VERSION,
138
- exportedAt: nowIso(),
139
- source: {
140
- type: "typegraph-export",
141
- graphId,
142
- schemaVersion: schemaVersion?.version ?? 1
143
- },
144
- nodes,
145
- edges
146
- };
147
- }
148
- async function exportNodesOfKind(backend, graphId, kind, options) {
149
- const rows = await backend.findNodesByKind({
150
- graphId,
151
- kind,
152
- excludeDeleted: !options.includeDeleted
153
- });
154
- return rows.map((row) => {
155
- const node = {
156
- kind: row.kind,
157
- id: row.id,
158
- properties: JSON.parse(row.props)
159
- };
160
- if (options.includeTemporal) {
161
- if (row.valid_from) {
162
- node.validFrom = row.valid_from;
163
- }
164
- if (row.valid_to) {
165
- node.validTo = row.valid_to;
166
- }
167
- }
168
- if (options.includeMeta) {
169
- node.meta = {
170
- version: row.version,
171
- createdAt: row.created_at,
172
- updatedAt: row.updated_at
173
- };
174
- }
175
- return node;
176
- });
177
- }
178
- async function exportEdgesOfKind(backend, graphId, kind, options) {
179
- const rows = await backend.findEdgesByKind({
180
- graphId,
181
- kind,
182
- excludeDeleted: !options.includeDeleted
183
- });
184
- return rows.map((row) => {
185
- const edge = {
186
- kind: row.kind,
187
- id: row.id,
188
- from: {
189
- kind: row.from_kind,
190
- id: row.from_id
191
- },
192
- to: {
193
- kind: row.to_kind,
194
- id: row.to_id
195
- },
196
- properties: JSON.parse(row.props)
197
- };
198
- if (options.includeTemporal) {
199
- if (row.valid_from) {
200
- edge.validFrom = row.valid_from;
201
- }
202
- if (row.valid_to) {
203
- edge.validTo = row.valid_to;
204
- }
205
- }
206
- if (options.includeMeta) {
207
- edge.meta = {
208
- createdAt: row.created_at,
209
- updatedAt: row.updated_at
210
- };
211
- }
212
- return edge;
213
- });
214
- }
215
-
216
- // src/interchange/import.ts
217
- async function importGraph(store, data, options) {
218
- const result = {
219
- success: true,
220
- nodes: { created: 0, updated: 0, skipped: 0 },
221
- edges: { created: 0, updated: 0, skipped: 0 },
222
- errors: []
223
- };
224
- const errors = [];
225
- const graph = store.graph;
226
- const graphId = store.graphId;
227
- const backend = store.backend;
228
- const registry = store.registry;
229
- const nodeSchemas = buildNodeSchemaMap(graph);
230
- const edgeSchemas = buildEdgeSchemaMap(graph);
231
- const importedNodeIds = /* @__PURE__ */ new Set();
232
- await runInWriteTransaction(store, backend, async (target, lock) => {
233
- await processNodes(
234
- target,
235
- graphId,
236
- registry,
237
- data.nodes,
238
- nodeSchemas,
239
- options,
240
- result,
241
- errors,
242
- importedNodeIds,
243
- lock
244
- );
245
- await processEdges(
246
- target,
247
- graphId,
248
- registry,
249
- data.edges,
250
- edgeSchemas,
251
- nodeSchemas,
252
- options,
253
- result,
254
- errors,
255
- importedNodeIds
256
- );
257
- });
258
- return {
259
- ...result,
260
- success: errors.length === 0,
261
- errors
262
- };
263
- }
264
- function buildNodeSchemaMap(graph) {
265
- const map = /* @__PURE__ */ new Map();
266
- for (const kindName of getNodeKinds(graph)) {
267
- const registration = graph.nodes[kindName];
268
- map.set(kindName, {
269
- registration,
270
- schema: registration.type.schema
271
- });
272
- }
273
- return map;
274
- }
275
- function buildEdgeSchemaMap(graph) {
276
- const map = /* @__PURE__ */ new Map();
277
- for (const kindName of getEdgeKinds(graph)) {
278
- const registration = graph.edges[kindName];
279
- map.set(kindName, {
280
- registration,
281
- schema: registration.type.schema
282
- });
283
- }
284
- return map;
285
- }
286
- async function processNodes(backend, graphId, registry, nodes, schemas, options, result, errors, importedNodeIds, lock) {
287
- const batchSize = options.batchSize;
288
- for (let index = 0; index < nodes.length; index += batchSize) {
289
- const batch = nodes.slice(index, index + batchSize);
290
- for (const node of batch) {
291
- const importResult = await processNode(
292
- backend,
293
- graphId,
294
- registry,
295
- node,
296
- schemas,
297
- options,
298
- lock
299
- );
300
- switch (importResult.status) {
301
- case "created": {
302
- result.nodes.created++;
303
- importedNodeIds.add(makeNodeKey(node.kind, node.id));
304
- break;
305
- }
306
- case "updated": {
307
- result.nodes.updated++;
308
- importedNodeIds.add(makeNodeKey(node.kind, node.id));
309
- break;
310
- }
311
- case "skipped": {
312
- result.nodes.skipped++;
313
- if (importResult.liveTarget) {
314
- importedNodeIds.add(makeNodeKey(node.kind, node.id));
315
- }
316
- break;
317
- }
318
- case "error": {
319
- errors.push({
320
- entityType: "node",
321
- kind: node.kind,
322
- id: node.id,
323
- error: importResult.error
324
- });
325
- break;
326
- }
327
- }
328
- }
329
- }
330
- }
331
- async function catchUniquenessError(fn) {
332
- try {
333
- return { ok: true, value: await fn() };
334
- } catch (error) {
335
- if (error instanceof UniquenessError) {
336
- return { ok: false, error: error.message };
337
- }
338
- throw error;
339
- }
340
- }
341
- function validateValidityWindow(entity) {
342
- try {
343
- validateOptionalCanonicalIsoDate(entity.validFrom, "validFrom");
344
- validateOptionalCanonicalIsoDate(entity.validTo, "validTo");
345
- return void 0;
346
- } catch (error) {
347
- return error instanceof Error ? error.message : String(error);
348
- }
349
- }
350
- async function processNode(backend, graphId, registry, node, schemas, options, lock) {
351
- const schemaEntry = schemas.get(node.kind);
352
- if (!schemaEntry) {
353
- return { status: "error", error: `Unknown node kind: ${node.kind}` };
354
- }
355
- const propsResult = validateProperties(
356
- node.properties,
357
- schemaEntry.schema,
358
- options.onUnknownProperty
359
- );
360
- if (!propsResult.success) {
361
- return { status: "error", error: propsResult.error };
362
- }
363
- const validityError = validateValidityWindow(node);
364
- if (validityError !== void 0) {
365
- return { status: "error", error: validityError };
366
- }
367
- const { registration } = schemaEntry;
368
- const uniqueConstraints = registration.unique ?? [];
369
- const writeContext = { graphId, registry, lock };
370
- const existing = await backend.getNode(graphId, node.kind, node.id);
371
- if (existing) {
372
- switch (options.onConflict) {
373
- case "skip": {
374
- return { status: "skipped", liveTarget: isLiveNodeRow(existing) };
375
- }
376
- case "error": {
377
- return {
378
- status: "error",
379
- error: `Node already exists: ${node.kind}:${node.id}`
380
- };
381
- }
382
- case "update": {
383
- if (!isLiveNodeRow(existing)) {
384
- return { status: "skipped", liveTarget: false };
385
- }
386
- const updateResult = await catchUniquenessError(
387
- () => applyNodeUpdate(
388
- writeContext,
389
- {
390
- existing,
391
- schema: registration.type.schema,
392
- validatedProps: propsResult.data,
393
- uniqueConstraints,
394
- ...node.validTo !== void 0 && { validTo: node.validTo }
395
- },
396
- backend
397
- )
398
- );
399
- if (!updateResult.ok) {
400
- return { status: "error", error: updateResult.error };
401
- }
402
- return { status: "updated" };
403
- }
404
- }
405
- }
406
- const uniquenessResult = await catchUniquenessError(
407
- () => checkUniquenessConstraints(
408
- { graphId, registry, backend },
409
- node.kind,
410
- node.id,
411
- propsResult.data,
412
- uniqueConstraints
413
- )
414
- );
415
- if (!uniquenessResult.ok) {
416
- return { status: "error", error: uniquenessResult.error };
417
- }
418
- await backend.insertNode({
419
- graphId,
420
- kind: node.kind,
421
- id: node.id,
422
- props: propsResult.data,
423
- ...node.validFrom !== void 0 && { validFrom: node.validFrom },
424
- ...node.validTo !== void 0 && { validTo: node.validTo }
425
- });
426
- await applyNodeInsertSideEffects(
427
- writeContext,
428
- {
429
- kind: node.kind,
430
- id: node.id,
431
- schema: registration.type.schema,
432
- props: propsResult.data,
433
- uniqueConstraints
434
- },
435
- backend
436
- );
437
- return { status: "created" };
438
- }
439
- async function processEdges(backend, graphId, registry, edges, edgeSchemas, nodeSchemas, options, result, errors, importedNodeIds) {
440
- const batchSize = options.batchSize;
441
- for (let index = 0; index < edges.length; index += batchSize) {
442
- const batch = edges.slice(index, index + batchSize);
443
- for (const edge of batch) {
444
- const importResult = await processEdge(
445
- backend,
446
- graphId,
447
- registry,
448
- edge,
449
- edgeSchemas,
450
- nodeSchemas,
451
- options,
452
- importedNodeIds
453
- );
454
- switch (importResult.status) {
455
- case "created": {
456
- result.edges.created++;
457
- break;
458
- }
459
- case "updated": {
460
- result.edges.updated++;
461
- break;
462
- }
463
- case "skipped": {
464
- result.edges.skipped++;
465
- break;
466
- }
467
- case "error": {
468
- errors.push({
469
- entityType: "edge",
470
- kind: edge.kind,
471
- id: edge.id,
472
- error: importResult.error
473
- });
474
- break;
475
- }
476
- }
477
- }
478
- }
479
- }
480
- async function processEdge(backend, graphId, registry, edge, edgeSchemas, nodeSchemas, options, importedNodeIds) {
481
- const schemaEntry = edgeSchemas.get(edge.kind);
482
- if (!schemaEntry) {
483
- return { status: "error", error: `Unknown edge kind: ${edge.kind}` };
484
- }
485
- if (!nodeSchemas.has(edge.from.kind)) {
486
- return {
487
- status: "error",
488
- error: `Unknown from node kind: ${edge.from.kind}`
489
- };
490
- }
491
- if (!nodeSchemas.has(edge.to.kind)) {
492
- return { status: "error", error: `Unknown to node kind: ${edge.to.kind}` };
493
- }
494
- const endpointError = validateEdgeEndpoints(
495
- edge.kind,
496
- edge.from.kind,
497
- edge.to.kind,
498
- schemaEntry.registration,
499
- registry
500
- );
501
- if (endpointError !== void 0) {
502
- return { status: "error", error: endpointError.message };
503
- }
504
- if (options.validateReferences) {
505
- const fromKey = makeNodeKey(edge.from.kind, edge.from.id);
506
- const toKey = makeNodeKey(edge.to.kind, edge.to.id);
507
- if (!importedNodeIds.has(fromKey)) {
508
- const fromExists = await backend.getNode(
509
- graphId,
510
- edge.from.kind,
511
- edge.from.id
512
- );
513
- if (fromExists === void 0 || !isLiveNodeRow(fromExists)) {
514
- return {
515
- status: "error",
516
- error: `From node not found: ${edge.from.kind}:${edge.from.id}`
517
- };
518
- }
519
- }
520
- if (!importedNodeIds.has(toKey)) {
521
- const toExists = await backend.getNode(graphId, edge.to.kind, edge.to.id);
522
- if (toExists === void 0 || !isLiveNodeRow(toExists)) {
523
- return {
524
- status: "error",
525
- error: `To node not found: ${edge.to.kind}:${edge.to.id}`
526
- };
527
- }
528
- }
529
- }
530
- const propsResult = validateProperties(
531
- edge.properties,
532
- schemaEntry.schema,
533
- options.onUnknownProperty
534
- );
535
- if (!propsResult.success) {
536
- return { status: "error", error: propsResult.error };
537
- }
538
- const validityError = validateValidityWindow(edge);
539
- if (validityError !== void 0) {
540
- return { status: "error", error: validityError };
541
- }
542
- const existing = await backend.getEdge(graphId, edge.id);
543
- if (existing) {
544
- switch (options.onConflict) {
545
- case "skip": {
546
- return {
547
- status: "skipped",
548
- liveTarget: existing.deleted_at === void 0
549
- };
550
- }
551
- case "error": {
552
- return { status: "error", error: `Edge already exists: ${edge.id}` };
553
- }
554
- case "update": {
555
- if (existing.deleted_at !== void 0) {
556
- return { status: "skipped", liveTarget: false };
557
- }
558
- await backend.updateEdge({
559
- graphId,
560
- id: edge.id,
561
- props: propsResult.data,
562
- ...edge.validTo !== void 0 && { validTo: edge.validTo }
563
- });
564
- return { status: "updated" };
565
- }
566
- }
567
- }
568
- await backend.insertEdge({
569
- graphId,
570
- id: edge.id,
571
- kind: edge.kind,
572
- fromKind: edge.from.kind,
573
- fromId: edge.from.id,
574
- toKind: edge.to.kind,
575
- toId: edge.to.id,
576
- props: propsResult.data,
577
- ...edge.validFrom !== void 0 && { validFrom: edge.validFrom },
578
- ...edge.validTo !== void 0 && { validTo: edge.validTo }
579
- });
580
- return { status: "created" };
581
- }
582
- function validateProperties(properties, schema, unknownStrategy) {
583
- try {
584
- const knownKeys = new Set(Object.keys(schema.shape));
585
- const unknownKeys = Object.keys(properties).filter(
586
- (key) => !knownKeys.has(key)
587
- );
588
- if (unknownKeys.length > 0) {
589
- switch (unknownStrategy) {
590
- case "error": {
591
- return {
592
- success: false,
593
- error: `Unknown properties: ${unknownKeys.join(", ")}`
594
- };
595
- }
596
- case "strip": {
597
- const stripped = {};
598
- for (const key of knownKeys) {
599
- if (key in properties) {
600
- stripped[key] = properties[key];
601
- }
602
- }
603
- const result2 = schema.safeParse(stripped);
604
- if (!result2.success) {
605
- return {
606
- success: false,
607
- error: formatZodError(result2.error)
608
- };
609
- }
610
- return {
611
- success: true,
612
- data: result2.data
613
- };
614
- }
615
- case "allow": {
616
- const result2 = schema.safeParse(properties);
617
- if (!result2.success) {
618
- return {
619
- success: false,
620
- error: formatZodError(result2.error)
621
- };
622
- }
623
- return { success: true, data: properties };
624
- }
625
- }
626
- }
627
- const result = schema.safeParse(properties);
628
- if (!result.success) {
629
- return { success: false, error: formatZodError(result.error) };
630
- }
631
- return { success: true, data: result.data };
632
- } catch (error) {
633
- const message = error instanceof Error ? error.message : String(error);
634
- return { success: false, error: `Validation error: ${message}` };
635
- }
636
- }
637
- function formatZodError(error) {
638
- return error.issues.map((issue) => {
639
- const path = issue.path.join(".");
640
- return path ? `${path}: ${issue.message}` : issue.message;
641
- }).join("; ");
642
- }
643
- function makeNodeKey(kind, id) {
644
- return `${kind}:${id}`;
645
- }
646
-
647
- export { ConflictStrategySchema, ExportOptionsSchema, FORMAT_VERSION, GraphDataSchema, GraphDataSourceSchema, ImportErrorSchema, ImportOptionsSchema, ImportResultSchema, InterchangeEdgeSchema, InterchangeNodeSchema, UnknownPropertyStrategySchema, exportGraph, importGraph };
648
- //# sourceMappingURL=chunk-T2DWPQNE.js.map
649
- //# sourceMappingURL=chunk-T2DWPQNE.js.map