@nicia-ai/typegraph 0.46.0 → 0.46.2

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 (267) 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 +49 -49
  6. package/dist/backend/index.d.cts +3 -3
  7. package/dist/backend/index.d.ts +3 -3
  8. package/dist/backend/index.js +10 -10
  9. package/dist/backend/postgres/index.cjs +26 -26
  10. package/dist/backend/postgres/index.d.cts +6 -6
  11. package/dist/backend/postgres/index.d.ts +6 -6
  12. package/dist/backend/postgres/index.js +13 -13
  13. package/dist/backend/postgres/pglite-store.cjs +33 -33
  14. package/dist/backend/postgres/pglite-store.d.cts +8 -8
  15. package/dist/backend/postgres/pglite-store.d.ts +8 -8
  16. package/dist/backend/postgres/pglite-store.js +29 -29
  17. package/dist/backend/postgres/pglite.cjs +15 -15
  18. package/dist/backend/postgres/pglite.d.cts +3 -3
  19. package/dist/backend/postgres/pglite.d.ts +3 -3
  20. package/dist/backend/postgres/pglite.js +14 -14
  21. package/dist/backend/sqlite/index.cjs +23 -23
  22. package/dist/backend/sqlite/index.d.cts +6 -6
  23. package/dist/backend/sqlite/index.d.ts +6 -6
  24. package/dist/backend/sqlite/index.js +11 -11
  25. package/dist/backend/sqlite/libsql.cjs +18 -18
  26. package/dist/backend/sqlite/libsql.d.cts +3 -3
  27. package/dist/backend/sqlite/libsql.d.ts +3 -3
  28. package/dist/backend/sqlite/libsql.js +13 -13
  29. package/dist/backend/sqlite/local-store.cjs +34 -34
  30. package/dist/backend/sqlite/local-store.d.cts +8 -8
  31. package/dist/backend/sqlite/local-store.d.ts +8 -8
  32. package/dist/backend/sqlite/local-store.js +30 -30
  33. package/dist/backend/sqlite/local.cjs +16 -16
  34. package/dist/backend/sqlite/local.d.cts +3 -3
  35. package/dist/backend/sqlite/local.d.ts +3 -3
  36. package/dist/backend/sqlite/local.js +14 -14
  37. package/dist/{chunk-VCRRKBLN.cjs → chunk-2ZWM2RFH.cjs} +9 -9
  38. package/dist/{chunk-VCRRKBLN.cjs.map → chunk-2ZWM2RFH.cjs.map} +1 -1
  39. package/dist/{chunk-TTAITEPJ.cjs → chunk-32UETY6S.cjs} +26 -26
  40. package/dist/chunk-32UETY6S.cjs.map +1 -0
  41. package/dist/{chunk-JXA2ZP2Q.js → chunk-36LIJXWC.js} +4 -4
  42. package/dist/{chunk-JXA2ZP2Q.js.map → chunk-36LIJXWC.js.map} +1 -1
  43. package/dist/{chunk-Q7Q4WSLJ.cjs → chunk-5PDSCELM.cjs} +18 -14
  44. package/dist/chunk-5PDSCELM.cjs.map +1 -0
  45. package/dist/{chunk-775A4ZMN.js → chunk-5ZJOB5YS.js} +4 -4
  46. package/dist/{chunk-775A4ZMN.js.map → chunk-5ZJOB5YS.js.map} +1 -1
  47. package/dist/{chunk-J3WZ3FA2.js → chunk-62ZXBMSD.js} +24 -3
  48. package/dist/chunk-62ZXBMSD.js.map +1 -0
  49. package/dist/{chunk-7BQXPCGN.cjs → chunk-6BD6ZBKT.cjs} +10 -10
  50. package/dist/{chunk-7BQXPCGN.cjs.map → chunk-6BD6ZBKT.cjs.map} +1 -1
  51. package/dist/chunk-6LAXM4J2.cjs +12 -0
  52. package/dist/{chunk-VQH4VAWD.cjs.map → chunk-6LAXM4J2.cjs.map} +1 -1
  53. package/dist/{chunk-MSY7FSX4.js → chunk-72WUT4GG.js} +4 -4
  54. package/dist/{chunk-MSY7FSX4.js.map → chunk-72WUT4GG.js.map} +1 -1
  55. package/dist/chunk-73MWKDFK.cjs +12 -0
  56. package/dist/{chunk-A4OC4DVN.cjs.map → chunk-73MWKDFK.cjs.map} +1 -1
  57. package/dist/{chunk-BKCUOV7A.js → chunk-7TKNK32B.js} +5 -5
  58. package/dist/{chunk-BKCUOV7A.js.map → chunk-7TKNK32B.js.map} +1 -1
  59. package/dist/{chunk-JIVMTW7W.js → chunk-A2LJG5GM.js} +9 -9
  60. package/dist/{chunk-JIVMTW7W.js.map → chunk-A2LJG5GM.js.map} +1 -1
  61. package/dist/{chunk-XMQSEJCF.cjs → chunk-A4R3H7RU.cjs} +237 -237
  62. package/dist/{chunk-XMQSEJCF.cjs.map → chunk-A4R3H7RU.cjs.map} +1 -1
  63. package/dist/{chunk-RMQLSPA2.cjs → chunk-A7NMUYEL.cjs} +27 -27
  64. package/dist/{chunk-RMQLSPA2.cjs.map → chunk-A7NMUYEL.cjs.map} +1 -1
  65. package/dist/{chunk-U63GDNRC.cjs → chunk-AF3TWL5C.cjs} +4 -4
  66. package/dist/{chunk-U63GDNRC.cjs.map → chunk-AF3TWL5C.cjs.map} +1 -1
  67. package/dist/{chunk-XBYVV3MP.cjs → chunk-ANKOXPCC.cjs} +4 -4
  68. package/dist/chunk-ANKOXPCC.cjs.map +1 -0
  69. package/dist/{chunk-OH5E5KIO.js → chunk-AT3MLMJV.js} +10 -10
  70. package/dist/{chunk-OH5E5KIO.js.map → chunk-AT3MLMJV.js.map} +1 -1
  71. package/dist/{chunk-UV3SN74I.js → chunk-AU3IJNNP.js} +5 -5
  72. package/dist/{chunk-UV3SN74I.js.map → chunk-AU3IJNNP.js.map} +1 -1
  73. package/dist/{chunk-YAAM3M2S.cjs → chunk-BEB4OFZF.cjs} +10 -10
  74. package/dist/{chunk-YAAM3M2S.cjs.map → chunk-BEB4OFZF.cjs.map} +1 -1
  75. package/dist/{chunk-7GT72YHH.cjs → chunk-BQM5P2NO.cjs} +169 -167
  76. package/dist/chunk-BQM5P2NO.cjs.map +1 -0
  77. package/dist/{chunk-YWGVVALJ.js → chunk-BRN3RGD2.js} +3 -3
  78. package/dist/{chunk-YWGVVALJ.js.map → chunk-BRN3RGD2.js.map} +1 -1
  79. package/dist/{chunk-UDISNXDL.cjs → chunk-BZZI7B43.cjs} +47 -47
  80. package/dist/{chunk-UDISNXDL.cjs.map → chunk-BZZI7B43.cjs.map} +1 -1
  81. package/dist/{chunk-TQR4KBY2.cjs → chunk-C2ZP5YS6.cjs} +135 -133
  82. package/dist/chunk-C2ZP5YS6.cjs.map +1 -0
  83. package/dist/{chunk-PNN7RHVR.cjs → chunk-C4DYN2SD.cjs} +48 -48
  84. package/dist/{chunk-PNN7RHVR.cjs.map → chunk-C4DYN2SD.cjs.map} +1 -1
  85. package/dist/{chunk-XDF2UPEQ.cjs → chunk-C6KE2HSQ.cjs} +1364 -1311
  86. package/dist/chunk-C6KE2HSQ.cjs.map +1 -0
  87. package/dist/{chunk-LBJKZXDE.cjs → chunk-D6GCNNMK.cjs} +10 -10
  88. package/dist/{chunk-LBJKZXDE.cjs.map → chunk-D6GCNNMK.cjs.map} +1 -1
  89. package/dist/{chunk-JZUR7ZWE.js → chunk-DSAWGCMP.js} +3 -3
  90. package/dist/{chunk-JZUR7ZWE.js.map → chunk-DSAWGCMP.js.map} +1 -1
  91. package/dist/{chunk-U5SON7R2.cjs → chunk-DYPRZ53S.cjs} +27 -27
  92. package/dist/{chunk-U5SON7R2.cjs.map → chunk-DYPRZ53S.cjs.map} +1 -1
  93. package/dist/{chunk-YVWGEQJE.cjs → chunk-E4OSGBCM.cjs} +139 -133
  94. package/dist/chunk-E4OSGBCM.cjs.map +1 -0
  95. package/dist/{chunk-YDFDBE6D.js → chunk-EAMVXR5B.js} +4 -4
  96. package/dist/{chunk-YDFDBE6D.js.map → chunk-EAMVXR5B.js.map} +1 -1
  97. package/dist/{chunk-NQ6BRJBE.js → chunk-EDHV4CBU.js} +8 -8
  98. package/dist/{chunk-NQ6BRJBE.js.map → chunk-EDHV4CBU.js.map} +1 -1
  99. package/dist/{chunk-DCQVHAYQ.js → chunk-EDJDDY6H.js} +4 -4
  100. package/dist/{chunk-DCQVHAYQ.js.map → chunk-EDJDDY6H.js.map} +1 -1
  101. package/dist/{chunk-5262ZMTR.js → chunk-EJSYWAEV.js} +5 -5
  102. package/dist/{chunk-5262ZMTR.js.map → chunk-EJSYWAEV.js.map} +1 -1
  103. package/dist/{chunk-N3257XE6.cjs → chunk-F36KZDFX.cjs} +91 -91
  104. package/dist/{chunk-N3257XE6.cjs.map → chunk-F36KZDFX.cjs.map} +1 -1
  105. package/dist/{chunk-AKLS3BYZ.js → chunk-FA6Z7B5L.js} +3 -3
  106. package/dist/chunk-FA6Z7B5L.js.map +1 -0
  107. package/dist/{chunk-ASTI57H3.js → chunk-FCIZNUW5.js} +3 -3
  108. package/dist/{chunk-ASTI57H3.js.map → chunk-FCIZNUW5.js.map} +1 -1
  109. package/dist/{chunk-CBTIUB76.js → chunk-FSLTU57P.js} +3 -3
  110. package/dist/{chunk-CBTIUB76.js.map → chunk-FSLTU57P.js.map} +1 -1
  111. package/dist/{chunk-2LG2XB2M.js → chunk-FXNHZFZV.js} +3 -3
  112. package/dist/{chunk-2LG2XB2M.js.map → chunk-FXNHZFZV.js.map} +1 -1
  113. package/dist/{chunk-BSFJMMV3.cjs → chunk-GVAMRRZR.cjs} +4 -4
  114. package/dist/{chunk-BSFJMMV3.cjs.map → chunk-GVAMRRZR.cjs.map} +1 -1
  115. package/dist/{chunk-CNV4TXJG.js → chunk-GWUWRZXW.js} +3 -3
  116. package/dist/{chunk-CNV4TXJG.js.map → chunk-GWUWRZXW.js.map} +1 -1
  117. package/dist/{chunk-C23WSN5E.js → chunk-GWXXHOLU.js} +20 -14
  118. package/dist/chunk-GWXXHOLU.js.map +1 -0
  119. package/dist/{chunk-ONU3HIED.cjs → chunk-HNYLMPQQ.cjs} +68 -68
  120. package/dist/{chunk-ONU3HIED.cjs.map → chunk-HNYLMPQQ.cjs.map} +1 -1
  121. package/dist/{chunk-NMWDXFPH.js → chunk-IHRDX7K6.js} +4 -4
  122. package/dist/{chunk-NMWDXFPH.js.map → chunk-IHRDX7K6.js.map} +1 -1
  123. package/dist/{chunk-VGTJPTIC.js → chunk-JCNTKRAK.js} +5 -5
  124. package/dist/{chunk-VGTJPTIC.js.map → chunk-JCNTKRAK.js.map} +1 -1
  125. package/dist/{chunk-MXJDTH5B.cjs → chunk-JL5UEBWT.cjs} +45 -45
  126. package/dist/{chunk-MXJDTH5B.cjs.map → chunk-JL5UEBWT.cjs.map} +1 -1
  127. package/dist/{chunk-QLRESYPU.js → chunk-KA4L2NZ3.js} +14 -14
  128. package/dist/{chunk-QLRESYPU.js.map → chunk-KA4L2NZ3.js.map} +1 -1
  129. package/dist/{chunk-NI72YOJB.cjs → chunk-KCH7WQA5.cjs} +24 -2
  130. package/dist/chunk-KCH7WQA5.cjs.map +1 -0
  131. package/dist/{chunk-2NA5DYLO.cjs → chunk-KOAI3KIV.cjs} +4 -4
  132. package/dist/{chunk-2NA5DYLO.cjs.map → chunk-KOAI3KIV.cjs.map} +1 -1
  133. package/dist/{chunk-7VQXLT5O.js → chunk-KXSMF6PL.js} +101 -25
  134. package/dist/chunk-KXSMF6PL.js.map +1 -0
  135. package/dist/{chunk-WEVQJ5LH.js → chunk-LHYSY6SE.js} +6 -6
  136. package/dist/chunk-LHYSY6SE.js.map +1 -0
  137. package/dist/{chunk-WDGA7IYB.js → chunk-LNIWCQR4.js} +3 -3
  138. package/dist/{chunk-WDGA7IYB.js.map → chunk-LNIWCQR4.js.map} +1 -1
  139. package/dist/{chunk-XNSI2FJO.cjs → chunk-N3QTGPC7.cjs} +99 -99
  140. package/dist/{chunk-XNSI2FJO.cjs.map → chunk-N3QTGPC7.cjs.map} +1 -1
  141. package/dist/{chunk-K5ELX2GT.js → chunk-OZJCH7ZS.js} +3 -3
  142. package/dist/{chunk-K5ELX2GT.js.map → chunk-OZJCH7ZS.js.map} +1 -1
  143. package/dist/{chunk-62ZP23AW.cjs → chunk-PYKF7UIL.cjs} +13 -13
  144. package/dist/{chunk-62ZP23AW.cjs.map → chunk-PYKF7UIL.cjs.map} +1 -1
  145. package/dist/{chunk-PQBQG7IM.js → chunk-QOJ2L2AD.js} +3 -3
  146. package/dist/{chunk-PQBQG7IM.js.map → chunk-QOJ2L2AD.js.map} +1 -1
  147. package/dist/{chunk-XNLIZYRZ.cjs → chunk-QPOQX2DI.cjs} +235 -235
  148. package/dist/{chunk-XNLIZYRZ.cjs.map → chunk-QPOQX2DI.cjs.map} +1 -1
  149. package/dist/{chunk-NFCVHQ5P.cjs → chunk-QU7QLJA4.cjs} +26 -26
  150. package/dist/{chunk-NFCVHQ5P.cjs.map → chunk-QU7QLJA4.cjs.map} +1 -1
  151. package/dist/{chunk-DLNROMQ7.js → chunk-R7EWHKID.js} +7 -4
  152. package/dist/chunk-R7EWHKID.js.map +1 -0
  153. package/dist/{chunk-HFHTMECK.js → chunk-RFDEYLIK.js} +7 -7
  154. package/dist/{chunk-HFHTMECK.js.map → chunk-RFDEYLIK.js.map} +1 -1
  155. package/dist/{chunk-MUK4BU7K.cjs → chunk-RHDOAQCT.cjs} +200 -124
  156. package/dist/chunk-RHDOAQCT.cjs.map +1 -0
  157. package/dist/{chunk-YBFHZUXX.js → chunk-S3G5VLSW.js} +6 -6
  158. package/dist/{chunk-YBFHZUXX.js.map → chunk-S3G5VLSW.js.map} +1 -1
  159. package/dist/{chunk-M4BDU5RX.cjs → chunk-S7WIRFNS.cjs} +12 -12
  160. package/dist/{chunk-M4BDU5RX.cjs.map → chunk-S7WIRFNS.cjs.map} +1 -1
  161. package/dist/{chunk-T4XNKYXB.js → chunk-SXWLLQ3D.js} +4 -4
  162. package/dist/{chunk-T4XNKYXB.js.map → chunk-SXWLLQ3D.js.map} +1 -1
  163. package/dist/{chunk-NK5Q7UNE.cjs → chunk-TCT66A7N.cjs} +10 -10
  164. package/dist/{chunk-NK5Q7UNE.cjs.map → chunk-TCT66A7N.cjs.map} +1 -1
  165. package/dist/{chunk-3DHZCOT7.cjs → chunk-UTVQPZPN.cjs} +20 -20
  166. package/dist/{chunk-3DHZCOT7.cjs.map → chunk-UTVQPZPN.cjs.map} +1 -1
  167. package/dist/{chunk-CXBHOOIQ.cjs → chunk-WA64ZSCA.cjs} +11 -11
  168. package/dist/{chunk-CXBHOOIQ.cjs.map → chunk-WA64ZSCA.cjs.map} +1 -1
  169. package/dist/{chunk-QWX5YA3K.js → chunk-WEJHA7AD.js} +18 -16
  170. package/dist/chunk-WEJHA7AD.js.map +1 -0
  171. package/dist/{chunk-5UVRGXD3.js → chunk-WHS2Y43J.js} +5 -5
  172. package/dist/{chunk-5UVRGXD3.js.map → chunk-WHS2Y43J.js.map} +1 -1
  173. package/dist/{chunk-I5MOXA4H.js → chunk-WMKEGJG4.js} +3 -3
  174. package/dist/{chunk-I5MOXA4H.js.map → chunk-WMKEGJG4.js.map} +1 -1
  175. package/dist/{chunk-5763DULU.js → chunk-WYFB7BN3.js} +16 -14
  176. package/dist/chunk-WYFB7BN3.js.map +1 -0
  177. package/dist/{chunk-XQSCL77R.cjs → chunk-XBHRKLZU.cjs} +4 -4
  178. package/dist/{chunk-XQSCL77R.cjs.map → chunk-XBHRKLZU.cjs.map} +1 -1
  179. package/dist/{chunk-7Z5OR7KO.js → chunk-YQ4JONWE.js} +102 -49
  180. package/dist/chunk-YQ4JONWE.js.map +1 -0
  181. package/dist/{chunk-RJS7DECT.js → chunk-Z43KWLZF.js} +8 -8
  182. package/dist/{chunk-RJS7DECT.js.map → chunk-Z43KWLZF.js.map} +1 -1
  183. package/dist/{chunk-E4WNQBEF.cjs → chunk-ZBVZ7HXD.cjs} +12 -12
  184. package/dist/{chunk-E4WNQBEF.cjs.map → chunk-ZBVZ7HXD.cjs.map} +1 -1
  185. package/dist/{chunk-4UGOKMI5.cjs → chunk-ZHOAZD7Q.cjs} +161 -161
  186. package/dist/{chunk-4UGOKMI5.cjs.map → chunk-ZHOAZD7Q.cjs.map} +1 -1
  187. package/dist/{chunk-XCAGZAKP.cjs → chunk-ZIH42CRX.cjs} +7 -7
  188. package/dist/{chunk-XCAGZAKP.cjs.map → chunk-ZIH42CRX.cjs.map} +1 -1
  189. package/dist/core/index.cjs +27 -27
  190. package/dist/core/index.d.cts +4 -4
  191. package/dist/core/index.d.ts +4 -4
  192. package/dist/core/index.js +7 -7
  193. package/dist/{ddl-BJcOp4WZ.d.cts → ddl-mE07h_EM.d.cts} +3 -3
  194. package/dist/{ddl-BXfGHbPN.d.ts → ddl-opIn8DfX.d.ts} +3 -3
  195. package/dist/graph-extension/index.cjs +20 -20
  196. package/dist/graph-extension/index.d.cts +4 -4
  197. package/dist/graph-extension/index.d.ts +4 -4
  198. package/dist/graph-extension/index.js +4 -4
  199. package/dist/graph-merge/index.cjs +248 -248
  200. package/dist/graph-merge/index.d.cts +8 -8
  201. package/dist/graph-merge/index.d.ts +8 -8
  202. package/dist/graph-merge/index.js +24 -24
  203. package/dist/{index-DxaYCv8Y.d.cts → index-Deyu8IXL.d.ts} +20 -3
  204. package/dist/{index-BSHvKfok.d.ts → index-DrRS51Ld.d.cts} +20 -3
  205. package/dist/index.cjs +219 -215
  206. package/dist/index.d.cts +11 -11
  207. package/dist/index.d.ts +11 -11
  208. package/dist/index.js +34 -34
  209. package/dist/indexes/index.cjs +13 -13
  210. package/dist/indexes/index.d.cts +4 -4
  211. package/dist/indexes/index.d.ts +4 -4
  212. package/dist/indexes/index.js +6 -6
  213. package/dist/interchange/index.cjs +52 -52
  214. package/dist/interchange/index.d.cts +7 -7
  215. package/dist/interchange/index.d.ts +7 -7
  216. package/dist/interchange/index.js +16 -16
  217. package/dist/{manager-CfZAimti.d.ts → manager-DX983gJ0.d.ts} +2 -2
  218. package/dist/{manager-HGk6E_HW.d.cts → manager-ptr3JLRP.d.cts} +2 -2
  219. package/dist/{materialize-indexes-6A7dWGtb.d.cts → materialize-indexes-BXz77YqO.d.cts} +1 -1
  220. package/dist/{materialize-indexes-BMJP6Tms.d.ts → materialize-indexes-CpXoggWU.d.ts} +1 -1
  221. package/dist/{postgres-DFYWENdR.d.cts → postgres-DwgEXSPI.d.cts} +1 -1
  222. package/dist/{postgres-e7a9TdvR.d.ts → postgres-QdOMHTBz.d.ts} +1 -1
  223. package/dist/profiler/index.d.cts +9 -9
  224. package/dist/profiler/index.d.ts +9 -9
  225. package/dist/provenance/index.cjs +42 -42
  226. package/dist/provenance/index.d.cts +7 -7
  227. package/dist/provenance/index.d.ts +7 -7
  228. package/dist/provenance/index.js +9 -9
  229. package/dist/schema/index.cjs +44 -44
  230. package/dist/schema/index.d.cts +6 -6
  231. package/dist/schema/index.d.ts +6 -6
  232. package/dist/schema/index.js +17 -17
  233. package/dist/{searchable-9OQoPuRs.d.ts → searchable-BOUuA83f.d.ts} +1 -1
  234. package/dist/{searchable-CIje5XYD.d.cts → searchable-BrUh0pdc.d.cts} +1 -1
  235. package/dist/{sqlite-DerU5tc7.d.ts → sqlite-BfYcV61E.d.cts} +1 -1
  236. package/dist/{sqlite-DitnISa9.d.cts → sqlite-DK40XVR1.d.ts} +1 -1
  237. package/dist/{store-DawaWWjJ.d.ts → store-Bo1psfVZ.d.ts} +27 -8
  238. package/dist/{store-RwTJx8LX.d.cts → store-FTqBpuJD.d.cts} +27 -8
  239. package/dist/{temporal-Bn-Fi8FJ.d.cts → temporal-CXewwLTB.d.cts} +1 -1
  240. package/dist/{temporal-BtM4UALv.d.ts → temporal-DPtn0HOu.d.ts} +1 -1
  241. package/dist/{types-KFfk-8Ah.d.ts → types-CeT7xM4M.d.ts} +1 -1
  242. package/dist/{types-HkveCCx0.d.cts → types-Du78EvpN.d.cts} +7 -6
  243. package/dist/{types-HkveCCx0.d.ts → types-Du78EvpN.d.ts} +7 -6
  244. package/dist/{types-CoIx8HX5.d.cts → types-XR1nHERK.d.cts} +1 -1
  245. package/dist/{where--fk7_0kv.d.cts → where-CJsp-YUf.d.cts} +1 -1
  246. package/dist/{where-ws5hf-Ov.d.ts → where-CMbFiWwp.d.ts} +1 -1
  247. package/package.json +3 -3
  248. package/dist/chunk-5763DULU.js.map +0 -1
  249. package/dist/chunk-7GT72YHH.cjs.map +0 -1
  250. package/dist/chunk-7VQXLT5O.js.map +0 -1
  251. package/dist/chunk-7Z5OR7KO.js.map +0 -1
  252. package/dist/chunk-A4OC4DVN.cjs +0 -12
  253. package/dist/chunk-AKLS3BYZ.js.map +0 -1
  254. package/dist/chunk-C23WSN5E.js.map +0 -1
  255. package/dist/chunk-DLNROMQ7.js.map +0 -1
  256. package/dist/chunk-J3WZ3FA2.js.map +0 -1
  257. package/dist/chunk-MUK4BU7K.cjs.map +0 -1
  258. package/dist/chunk-NI72YOJB.cjs.map +0 -1
  259. package/dist/chunk-Q7Q4WSLJ.cjs.map +0 -1
  260. package/dist/chunk-QWX5YA3K.js.map +0 -1
  261. package/dist/chunk-TQR4KBY2.cjs.map +0 -1
  262. package/dist/chunk-TTAITEPJ.cjs.map +0 -1
  263. package/dist/chunk-VQH4VAWD.cjs +0 -12
  264. package/dist/chunk-WEVQJ5LH.js.map +0 -1
  265. package/dist/chunk-XBYVV3MP.cjs.map +0 -1
  266. package/dist/chunk-XDF2UPEQ.cjs.map +0 -1
  267. package/dist/chunk-YVWGEQJE.cjs.map +0 -1
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var chunkCXBHOOIQ_cjs = require('./chunk-CXBHOOIQ.cjs');
4
- var chunkLBJKZXDE_cjs = require('./chunk-LBJKZXDE.cjs');
3
+ var chunkWA64ZSCA_cjs = require('./chunk-WA64ZSCA.cjs');
4
+ var chunkD6GCNNMK_cjs = require('./chunk-D6GCNNMK.cjs');
5
5
  var zod = require('zod');
6
6
 
7
7
  // src/core/node.ts
8
8
  function validateSchemaKeys(schema, name) {
9
- chunkLBJKZXDE_cjs.assertSchemaKeysAreFree("Node", name, schema, chunkLBJKZXDE_cjs.RESERVED_NODE_KEYS);
9
+ chunkD6GCNNMK_cjs.assertSchemaKeysAreFree("Node", name, schema, chunkD6GCNNMK_cjs.RESERVED_NODE_KEYS);
10
10
  }
11
11
  function defineNode(name, options) {
12
12
  validateSchemaKeys(options.schema, name);
13
13
  if (options.annotations !== void 0) {
14
- chunkLBJKZXDE_cjs.assertJsonValue(options.annotations, "annotations", `Node "${name}"`);
14
+ chunkD6GCNNMK_cjs.assertJsonValue(options.annotations, "annotations", `Node "${name}"`);
15
15
  }
16
16
  return Object.freeze({
17
- [chunkCXBHOOIQ_cjs.NODE_TYPE_BRAND]: true,
17
+ [chunkWA64ZSCA_cjs.NODE_TYPE_BRAND]: true,
18
18
  kind: name,
19
19
  schema: options.schema,
20
20
  description: options.description,
@@ -23,16 +23,16 @@ function defineNode(name, options) {
23
23
  }
24
24
  var EMPTY_SCHEMA = zod.z.object({});
25
25
  function validateSchemaKeys2(schema, name) {
26
- chunkLBJKZXDE_cjs.assertSchemaKeysAreFree("Edge", name, schema, chunkLBJKZXDE_cjs.RESERVED_EDGE_KEYS);
26
+ chunkD6GCNNMK_cjs.assertSchemaKeysAreFree("Edge", name, schema, chunkD6GCNNMK_cjs.RESERVED_EDGE_KEYS);
27
27
  }
28
28
  function defineEdge(name, options) {
29
29
  const schema = options?.schema ?? EMPTY_SCHEMA;
30
30
  validateSchemaKeys2(schema, name);
31
31
  if (options?.annotations !== void 0) {
32
- chunkLBJKZXDE_cjs.assertJsonValue(options.annotations, "annotations", `Edge "${name}"`);
32
+ chunkD6GCNNMK_cjs.assertJsonValue(options.annotations, "annotations", `Edge "${name}"`);
33
33
  }
34
34
  return Object.freeze({
35
- [chunkCXBHOOIQ_cjs.EDGE_TYPE_BRAND]: true,
35
+ [chunkWA64ZSCA_cjs.EDGE_TYPE_BRAND]: true,
36
36
  kind: name,
37
37
  schema,
38
38
  description: options?.description,
@@ -59,5 +59,5 @@ exports.defineEdge = defineEdge;
59
59
  exports.defineNode = defineNode;
60
60
  exports.getTypeName = getTypeName;
61
61
  exports.isMetaEdge = isMetaEdge;
62
- //# sourceMappingURL=chunk-NK5Q7UNE.cjs.map
63
- //# sourceMappingURL=chunk-NK5Q7UNE.cjs.map
62
+ //# sourceMappingURL=chunk-TCT66A7N.cjs.map
63
+ //# sourceMappingURL=chunk-TCT66A7N.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/node.ts","../src/core/edge.ts","../src/ontology/types.ts"],"names":["assertSchemaKeysAreFree","RESERVED_NODE_KEYS","assertJsonValue","NODE_TYPE_BRAND","z","validateSchemaKeys","RESERVED_EDGE_KEYS","EDGE_TYPE_BRAND"],"mappings":";;;;;;;AAmCA,SAAS,kBAAA,CACP,QACA,IAAA,EACM;AACN,EAAAA,yCAAA,CAAwB,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQC,oCAAkB,CAAA;AAClE;AAgBO,SAAS,UAAA,CAGd,MAAS,OAAA,EAA+C;AACxD,EAAA,kBAAA,CAAmB,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACvC,EAAA,IAAI,OAAA,CAAQ,gBAAgB,MAAA,EAAW;AACrC,IAAAC,iCAAA,CAAgB,OAAA,CAAQ,WAAA,EAAa,aAAA,EAAe,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACtE;AAEA,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,CAACC,iCAAe,GAAG,IAAA;AAAA,IACnB,IAAA,EAAM,IAAA;AAAA,IACN,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,aAAa,OAAA,CAAQ,WAAA;AAAA,IACrB,aAAa,OAAA,CAAQ;AAAA,GACtB,CAAA;AACH;ACxBA,IAAM,YAAA,GAAeC,KAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAOhC,SAASC,mBAAAA,CACP,QACA,IAAA,EACM;AACN,EAAAL,yCAAA,CAAwB,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQM,oCAAkB,CAAA;AAClE;AAgDO,SAAS,UAAA,CAMd,MACA,OAAA,EACqD;AACrD,EAAA,MAAM,MAAA,GAAS,SAAS,MAAA,IAAU,YAAA;AAClC,EAAAD,mBAAAA,CAAmB,QAAQ,IAAI,CAAA;AAC/B,EAAA,IAAI,OAAA,EAAS,gBAAgB,MAAA,EAAW;AACtC,IAAAH,iCAAA,CAAgB,OAAA,CAAQ,WAAA,EAAa,aAAA,EAAe,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACtE;AAEA,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,CAACK,iCAAe,GAAG,IAAA;AAAA,IACnB,IAAA,EAAM,IAAA;AAAA,IACN,MAAA;AAAA,IACA,aAAa,OAAA,EAAS,WAAA;AAAA,IACtB,aAAa,OAAA,EAAS,WAAA;AAAA,IACtB,MAAM,OAAA,EAAS,IAAA;AAAA,IACf,IAAI,OAAA,EAAS;AAAA,GACd,CAAA;AACH;;;AC7HO,IAAM,eAAA,GAAkB;AA+ExB,SAAS,WAAW,KAAA,EAAmC;AAC5D,EAAA,OACE,OAAO,UAAU,QAAA,IACjB,KAAA,KAAU,QACV,eAAA,IAAmB,KAAA,IAClB,KAAA,CAAkC,eAAe,CAAA,KAAM,IAAA;AAE5D;AAKO,SAAS,YAAY,SAAA,EAAiD;AAC3E,EAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,OAAO,SAAA,CAAU,IAAA;AACnB","file":"chunk-NK5Q7UNE.cjs","sourcesContent":["import { type z } from \"zod\";\n\nimport {\n assertSchemaKeysAreFree,\n RESERVED_NODE_KEYS,\n} from \"../store/reserved-keys\";\nimport { assertJsonValue } from \"./json-value\";\nimport { type KindAnnotations, NODE_TYPE_BRAND, type NodeType } from \"./types\";\n\n// ============================================================\n// Node Factory Options\n// ============================================================\n\n/**\n * Options for defining a node type.\n */\nexport type DefineNodeOptions<S extends z.ZodObject<z.ZodRawShape>> = Readonly<{\n /** Zod schema for node properties */\n schema: S;\n /** Optional description for documentation */\n description?: string;\n /**\n * Consumer-owned structured annotations for the kind.\n *\n * Stored in the canonical schema and **participates in schema hashing** —\n * any change bumps the schema version and shows up as a `safe`-severity\n * diff in `getSchemaChanges`. See `KindAnnotations` for the contract.\n */\n annotations?: KindAnnotations;\n}>;\n\n// ============================================================\n// Node Factory\n// ============================================================\n\nfunction validateSchemaKeys(\n schema: z.ZodObject<z.ZodRawShape>,\n name: string,\n): void {\n assertSchemaKeysAreFree(\"Node\", name, schema, RESERVED_NODE_KEYS);\n}\n\n/**\n * Creates a node type definition.\n *\n * @example\n * ```typescript\n * const Person = defineNode(\"Person\", {\n * schema: z.object({\n * fullName: z.string().min(1),\n * email: z.string().email().optional(),\n * }),\n * description: \"A person in the system\",\n * });\n * ```\n */\nexport function defineNode<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n>(name: K, options: DefineNodeOptions<S>): NodeType<K, S> {\n validateSchemaKeys(options.schema, name);\n if (options.annotations !== undefined) {\n assertJsonValue(options.annotations, \"annotations\", `Node \"${name}\"`);\n }\n\n return Object.freeze({\n [NODE_TYPE_BRAND]: true as const,\n kind: name,\n schema: options.schema,\n description: options.description,\n annotations: options.annotations,\n });\n}\n","import { z } from \"zod\";\n\nimport {\n assertSchemaKeysAreFree,\n RESERVED_EDGE_KEYS,\n} from \"../store/reserved-keys\";\nimport { assertJsonValue } from \"./json-value\";\nimport {\n EDGE_TYPE_BRAND,\n type EdgeType,\n type KindAnnotations,\n type NodeType,\n} from \"./types\";\n\n// ============================================================\n// Edge Factory Options\n// ============================================================\n\n/**\n * Options for defining an edge type.\n */\nexport type DefineEdgeOptions<\n S extends z.ZodObject<z.ZodRawShape>,\n From extends readonly NodeType[] | undefined = undefined,\n To extends readonly NodeType[] | undefined = undefined,\n> = Readonly<{\n /** Zod schema for edge properties (defaults to empty object) */\n schema?: S;\n /** Optional description for documentation */\n description?: string;\n /**\n * Consumer-owned structured annotations for the kind.\n *\n * Stored in the canonical schema and **participates in schema hashing** —\n * any change bumps the schema version and shows up as a `safe`-severity\n * diff in `getSchemaChanges`. See `KindAnnotations` for the contract.\n */\n annotations?: KindAnnotations;\n /** Node types that can be the source of this edge (domain constraint) */\n from?: From;\n /** Node types that can be the target of this edge (range constraint) */\n to?: To;\n}>;\n\n// ============================================================\n// Empty Schema\n// ============================================================\n\nconst EMPTY_SCHEMA = z.object({});\ntype EmptySchema = typeof EMPTY_SCHEMA;\n\n// ============================================================\n// Edge Factory\n// ============================================================\n\nfunction validateSchemaKeys(\n schema: z.ZodObject<z.ZodRawShape>,\n name: string,\n): void {\n assertSchemaKeysAreFree(\"Edge\", name, schema, RESERVED_EDGE_KEYS);\n}\n\n/**\n * Creates an edge type definition.\n *\n * @example\n * ```typescript\n * // Edge with no properties\n * const hasEpisode = defineEdge(\"hasEpisode\");\n *\n * // Edge with properties\n * const employedAt = defineEdge(\"employedAt\", {\n * schema: z.object({\n * isPrimary: z.boolean().default(true),\n * startedAt: z.date(),\n * }),\n * description: \"Employment relationship\",\n * });\n *\n * // Edge with domain/range constraints (can be used directly in defineGraph)\n * const worksAt = defineEdge(\"worksAt\", {\n * schema: z.object({ role: z.string() }),\n * from: [Person],\n * to: [Company],\n * });\n * ```\n */\n// Overload: no options - returns edge without domain/range\nexport function defineEdge<K extends string>(name: K): EdgeType<K, EmptySchema>;\n\n// Overload: options with both from and to - returns edge with domain/range\nexport function defineEdge<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n From extends readonly NodeType[],\n To extends readonly NodeType[],\n>(\n name: K,\n options: DefineEdgeOptions<S, From, To> & { from: From; to: To },\n): EdgeType<K, S, From, To>;\n\n// Overload: options without from/to - returns edge without domain/range\nexport function defineEdge<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n>(name: K, options: DefineEdgeOptions<S>): EdgeType<K, S>;\n\n// Implementation\nexport function defineEdge<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n From extends readonly NodeType[] | undefined,\n To extends readonly NodeType[] | undefined,\n>(\n name: K,\n options?: DefineEdgeOptions<S, From, To>,\n): EdgeType<K, S, From, To> | EdgeType<K, EmptySchema> {\n const schema = options?.schema ?? EMPTY_SCHEMA;\n validateSchemaKeys(schema, name);\n if (options?.annotations !== undefined) {\n assertJsonValue(options.annotations, \"annotations\", `Edge \"${name}\"`);\n }\n\n return Object.freeze({\n [EDGE_TYPE_BRAND]: true as const,\n kind: name,\n schema,\n description: options?.description,\n annotations: options?.annotations,\n from: options?.from,\n to: options?.to,\n }) as EdgeType<K, S, From, To> | EdgeType<K, EmptySchema>;\n}\n","import { type EdgeType, type NodeType } from \"../core/types\";\n\n// ============================================================\n// Brand Key\n// ============================================================\n\n/** Brand key for MetaEdge */\nexport const META_EDGE_BRAND = \"__metaEdge\" as const;\n\n// ============================================================\n// Inference Types\n// ============================================================\n\n/**\n * How a meta-edge affects queries and validation.\n */\nexport type InferenceType =\n | \"subsumption\" // Query for X includes instances of subclasses\n | \"hierarchy\" // Enables broader/narrower traversal\n | \"substitution\" // Can substitute equivalent types\n | \"constraint\" // Validation rules\n | \"composition\" // Part-whole navigation\n | \"association\" // Discovery/recommendation\n | \"none\"; // No automatic inference\n\n// ============================================================\n// Meta-Edge Properties\n// ============================================================\n\n/**\n * Properties of a meta-edge.\n */\nexport type MetaEdgeProperties = Readonly<{\n transitive: boolean; // A→B, B→C implies A→C\n symmetric: boolean; // A→B implies B→A\n reflexive: boolean; // A→A is always true\n inverse: string | undefined; // Name of inverse meta-edge\n inference: InferenceType; // How this affects queries\n description: string | undefined;\n}>;\n\n// ============================================================\n// Meta-Edge Type\n// ============================================================\n\n/**\n * A meta-edge definition.\n *\n * Meta-edges represent type-level relationships (between kinds),\n * not instance-level relationships (between nodes).\n */\nexport type MetaEdge<K extends string = string> = Readonly<{\n [META_EDGE_BRAND]: true;\n name: K;\n properties: MetaEdgeProperties;\n}>;\n\n// ============================================================\n// Ontology Relation\n// ============================================================\n\n/**\n * A relation in the ontology (instance of meta-edge between types).\n *\n * @example\n * ```typescript\n * // Podcast subClassOf Media\n * subClassOf(Podcast, Media)\n *\n * // Person equivalentTo schema:Person\n * equivalentTo(Person, \"https://schema.org/Person\")\n * ```\n */\nexport type OntologyRelation = Readonly<{\n metaEdge: MetaEdge;\n from: NodeType | EdgeType | string; // string for external IRIs\n to: NodeType | EdgeType | string;\n}>;\n\n// ============================================================\n// Type Guards\n// ============================================================\n\n/**\n * Checks if a value is a MetaEdge.\n */\nexport function isMetaEdge(value: unknown): value is MetaEdge {\n return (\n typeof value === \"object\" &&\n value !== null &&\n META_EDGE_BRAND in value &&\n (value as Record<string, unknown>)[META_EDGE_BRAND] === true\n );\n}\n\n/**\n * Gets the type name from a NodeType, EdgeType, or IRI string.\n */\nexport function getTypeName(typeOrIri: NodeType | EdgeType | string): string {\n if (typeof typeOrIri === \"string\") {\n return typeOrIri;\n }\n return typeOrIri.kind;\n}\n"]}
1
+ {"version":3,"sources":["../src/core/node.ts","../src/core/edge.ts","../src/ontology/types.ts"],"names":["assertSchemaKeysAreFree","RESERVED_NODE_KEYS","assertJsonValue","NODE_TYPE_BRAND","z","validateSchemaKeys","RESERVED_EDGE_KEYS","EDGE_TYPE_BRAND"],"mappings":";;;;;;;AAmCA,SAAS,kBAAA,CACP,QACA,IAAA,EACM;AACN,EAAAA,yCAAA,CAAwB,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQC,oCAAkB,CAAA;AAClE;AAgBO,SAAS,UAAA,CAGd,MAAS,OAAA,EAA+C;AACxD,EAAA,kBAAA,CAAmB,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACvC,EAAA,IAAI,OAAA,CAAQ,gBAAgB,MAAA,EAAW;AACrC,IAAAC,iCAAA,CAAgB,OAAA,CAAQ,WAAA,EAAa,aAAA,EAAe,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACtE;AAEA,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,CAACC,iCAAe,GAAG,IAAA;AAAA,IACnB,IAAA,EAAM,IAAA;AAAA,IACN,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,aAAa,OAAA,CAAQ,WAAA;AAAA,IACrB,aAAa,OAAA,CAAQ;AAAA,GACtB,CAAA;AACH;ACxBA,IAAM,YAAA,GAAeC,KAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAOhC,SAASC,mBAAAA,CACP,QACA,IAAA,EACM;AACN,EAAAL,yCAAA,CAAwB,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQM,oCAAkB,CAAA;AAClE;AAgDO,SAAS,UAAA,CAMd,MACA,OAAA,EACqD;AACrD,EAAA,MAAM,MAAA,GAAS,SAAS,MAAA,IAAU,YAAA;AAClC,EAAAD,mBAAAA,CAAmB,QAAQ,IAAI,CAAA;AAC/B,EAAA,IAAI,OAAA,EAAS,gBAAgB,MAAA,EAAW;AACtC,IAAAH,iCAAA,CAAgB,OAAA,CAAQ,WAAA,EAAa,aAAA,EAAe,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACtE;AAEA,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,CAACK,iCAAe,GAAG,IAAA;AAAA,IACnB,IAAA,EAAM,IAAA;AAAA,IACN,MAAA;AAAA,IACA,aAAa,OAAA,EAAS,WAAA;AAAA,IACtB,aAAa,OAAA,EAAS,WAAA;AAAA,IACtB,MAAM,OAAA,EAAS,IAAA;AAAA,IACf,IAAI,OAAA,EAAS;AAAA,GACd,CAAA;AACH;;;AC7HO,IAAM,eAAA,GAAkB;AA+ExB,SAAS,WAAW,KAAA,EAAmC;AAC5D,EAAA,OACE,OAAO,UAAU,QAAA,IACjB,KAAA,KAAU,QACV,eAAA,IAAmB,KAAA,IAClB,KAAA,CAAkC,eAAe,CAAA,KAAM,IAAA;AAE5D;AAKO,SAAS,YAAY,SAAA,EAAiD;AAC3E,EAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,OAAO,SAAA,CAAU,IAAA;AACnB","file":"chunk-TCT66A7N.cjs","sourcesContent":["import { type z } from \"zod\";\n\nimport {\n assertSchemaKeysAreFree,\n RESERVED_NODE_KEYS,\n} from \"../store/reserved-keys\";\nimport { assertJsonValue } from \"./json-value\";\nimport { type KindAnnotations, NODE_TYPE_BRAND, type NodeType } from \"./types\";\n\n// ============================================================\n// Node Factory Options\n// ============================================================\n\n/**\n * Options for defining a node type.\n */\nexport type DefineNodeOptions<S extends z.ZodObject<z.ZodRawShape>> = Readonly<{\n /** Zod schema for node properties */\n schema: S;\n /** Optional description for documentation */\n description?: string;\n /**\n * Consumer-owned structured annotations for the kind.\n *\n * Stored in the canonical schema and **participates in schema hashing** —\n * any change bumps the schema version and shows up as a `safe`-severity\n * diff in `getSchemaChanges`. See `KindAnnotations` for the contract.\n */\n annotations?: KindAnnotations;\n}>;\n\n// ============================================================\n// Node Factory\n// ============================================================\n\nfunction validateSchemaKeys(\n schema: z.ZodObject<z.ZodRawShape>,\n name: string,\n): void {\n assertSchemaKeysAreFree(\"Node\", name, schema, RESERVED_NODE_KEYS);\n}\n\n/**\n * Creates a node type definition.\n *\n * @example\n * ```typescript\n * const Person = defineNode(\"Person\", {\n * schema: z.object({\n * fullName: z.string().min(1),\n * email: z.string().email().optional(),\n * }),\n * description: \"A person in the system\",\n * });\n * ```\n */\nexport function defineNode<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n>(name: K, options: DefineNodeOptions<S>): NodeType<K, S> {\n validateSchemaKeys(options.schema, name);\n if (options.annotations !== undefined) {\n assertJsonValue(options.annotations, \"annotations\", `Node \"${name}\"`);\n }\n\n return Object.freeze({\n [NODE_TYPE_BRAND]: true as const,\n kind: name,\n schema: options.schema,\n description: options.description,\n annotations: options.annotations,\n });\n}\n","import { z } from \"zod\";\n\nimport {\n assertSchemaKeysAreFree,\n RESERVED_EDGE_KEYS,\n} from \"../store/reserved-keys\";\nimport { assertJsonValue } from \"./json-value\";\nimport {\n EDGE_TYPE_BRAND,\n type EdgeType,\n type KindAnnotations,\n type NodeType,\n} from \"./types\";\n\n// ============================================================\n// Edge Factory Options\n// ============================================================\n\n/**\n * Options for defining an edge type.\n */\nexport type DefineEdgeOptions<\n S extends z.ZodObject<z.ZodRawShape>,\n From extends readonly NodeType[] | undefined = undefined,\n To extends readonly NodeType[] | undefined = undefined,\n> = Readonly<{\n /** Zod schema for edge properties (defaults to empty object) */\n schema?: S;\n /** Optional description for documentation */\n description?: string;\n /**\n * Consumer-owned structured annotations for the kind.\n *\n * Stored in the canonical schema and **participates in schema hashing** —\n * any change bumps the schema version and shows up as a `safe`-severity\n * diff in `getSchemaChanges`. See `KindAnnotations` for the contract.\n */\n annotations?: KindAnnotations;\n /** Node types that can be the source of this edge (domain constraint) */\n from?: From;\n /** Node types that can be the target of this edge (range constraint) */\n to?: To;\n}>;\n\n// ============================================================\n// Empty Schema\n// ============================================================\n\nconst EMPTY_SCHEMA = z.object({});\ntype EmptySchema = typeof EMPTY_SCHEMA;\n\n// ============================================================\n// Edge Factory\n// ============================================================\n\nfunction validateSchemaKeys(\n schema: z.ZodObject<z.ZodRawShape>,\n name: string,\n): void {\n assertSchemaKeysAreFree(\"Edge\", name, schema, RESERVED_EDGE_KEYS);\n}\n\n/**\n * Creates an edge type definition.\n *\n * @example\n * ```typescript\n * // Edge with no properties\n * const hasEpisode = defineEdge(\"hasEpisode\");\n *\n * // Edge with properties\n * const employedAt = defineEdge(\"employedAt\", {\n * schema: z.object({\n * isPrimary: z.boolean().default(true),\n * startedAt: z.date(),\n * }),\n * description: \"Employment relationship\",\n * });\n *\n * // Edge with domain/range constraints (can be used directly in defineGraph)\n * const worksAt = defineEdge(\"worksAt\", {\n * schema: z.object({ role: z.string() }),\n * from: [Person],\n * to: [Company],\n * });\n * ```\n */\n// Overload: no options - returns edge without domain/range\nexport function defineEdge<K extends string>(name: K): EdgeType<K, EmptySchema>;\n\n// Overload: options with both from and to - returns edge with domain/range\nexport function defineEdge<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n From extends readonly NodeType[],\n To extends readonly NodeType[],\n>(\n name: K,\n options: DefineEdgeOptions<S, From, To> & { from: From; to: To },\n): EdgeType<K, S, From, To>;\n\n// Overload: options without from/to - returns edge without domain/range\nexport function defineEdge<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n>(name: K, options: DefineEdgeOptions<S>): EdgeType<K, S>;\n\n// Implementation\nexport function defineEdge<\n K extends string,\n S extends z.ZodObject<z.ZodRawShape>,\n From extends readonly NodeType[] | undefined,\n To extends readonly NodeType[] | undefined,\n>(\n name: K,\n options?: DefineEdgeOptions<S, From, To>,\n): EdgeType<K, S, From, To> | EdgeType<K, EmptySchema> {\n const schema = options?.schema ?? EMPTY_SCHEMA;\n validateSchemaKeys(schema, name);\n if (options?.annotations !== undefined) {\n assertJsonValue(options.annotations, \"annotations\", `Edge \"${name}\"`);\n }\n\n return Object.freeze({\n [EDGE_TYPE_BRAND]: true as const,\n kind: name,\n schema,\n description: options?.description,\n annotations: options?.annotations,\n from: options?.from,\n to: options?.to,\n }) as EdgeType<K, S, From, To> | EdgeType<K, EmptySchema>;\n}\n","import { type EdgeType, type NodeType } from \"../core/types\";\n\n// ============================================================\n// Brand Key\n// ============================================================\n\n/** Brand key for MetaEdge */\nexport const META_EDGE_BRAND = \"__metaEdge\" as const;\n\n// ============================================================\n// Inference Types\n// ============================================================\n\n/**\n * How a meta-edge affects queries and validation.\n */\nexport type InferenceType =\n | \"subsumption\" // Query for X includes instances of subclasses\n | \"hierarchy\" // Enables broader/narrower traversal\n | \"substitution\" // Can substitute equivalent types\n | \"constraint\" // Validation rules\n | \"composition\" // Part-whole navigation\n | \"association\" // Discovery/recommendation\n | \"none\"; // No automatic inference\n\n// ============================================================\n// Meta-Edge Properties\n// ============================================================\n\n/**\n * Properties of a meta-edge.\n */\nexport type MetaEdgeProperties = Readonly<{\n transitive: boolean; // A→B, B→C implies A→C\n symmetric: boolean; // A→B implies B→A\n reflexive: boolean; // A→A is always true\n inverse: string | undefined; // Name of inverse meta-edge\n inference: InferenceType; // How this affects queries\n description: string | undefined;\n}>;\n\n// ============================================================\n// Meta-Edge Type\n// ============================================================\n\n/**\n * A meta-edge definition.\n *\n * Meta-edges represent type-level relationships (between kinds),\n * not instance-level relationships (between nodes).\n */\nexport type MetaEdge<K extends string = string> = Readonly<{\n [META_EDGE_BRAND]: true;\n name: K;\n properties: MetaEdgeProperties;\n}>;\n\n// ============================================================\n// Ontology Relation\n// ============================================================\n\n/**\n * A relation in the ontology (instance of meta-edge between types).\n *\n * @example\n * ```typescript\n * // Podcast subClassOf Media\n * subClassOf(Podcast, Media)\n *\n * // Person equivalentTo schema:Person\n * equivalentTo(Person, \"https://schema.org/Person\")\n * ```\n */\nexport type OntologyRelation = Readonly<{\n metaEdge: MetaEdge;\n from: NodeType | EdgeType | string; // string for external IRIs\n to: NodeType | EdgeType | string;\n}>;\n\n// ============================================================\n// Type Guards\n// ============================================================\n\n/**\n * Checks if a value is a MetaEdge.\n */\nexport function isMetaEdge(value: unknown): value is MetaEdge {\n return (\n typeof value === \"object\" &&\n value !== null &&\n META_EDGE_BRAND in value &&\n (value as Record<string, unknown>)[META_EDGE_BRAND] === true\n );\n}\n\n/**\n * Gets the type name from a NodeType, EdgeType, or IRI string.\n */\nexport function getTypeName(typeOrIri: NodeType | EdgeType | string): string {\n if (typeof typeOrIri === \"string\") {\n return typeOrIri;\n }\n return typeOrIri.kind;\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkYVWGEQJE_cjs = require('./chunk-YVWGEQJE.cjs');
4
- var chunkPNN7RHVR_cjs = require('./chunk-PNN7RHVR.cjs');
5
- var chunkRMQLSPA2_cjs = require('./chunk-RMQLSPA2.cjs');
6
- var chunkXBYVV3MP_cjs = require('./chunk-XBYVV3MP.cjs');
7
- var chunkNI72YOJB_cjs = require('./chunk-NI72YOJB.cjs');
3
+ var chunkE4OSGBCM_cjs = require('./chunk-E4OSGBCM.cjs');
4
+ var chunkC4DYN2SD_cjs = require('./chunk-C4DYN2SD.cjs');
5
+ var chunkA7NMUYEL_cjs = require('./chunk-A7NMUYEL.cjs');
6
+ var chunkANKOXPCC_cjs = require('./chunk-ANKOXPCC.cjs');
7
+ var chunkKCH7WQA5_cjs = require('./chunk-KCH7WQA5.cjs');
8
8
  var module$1 = require('module');
9
9
  var Database = require('better-sqlite3');
10
10
  var betterSqlite3 = require('drizzle-orm/better-sqlite3');
@@ -25,7 +25,7 @@ var DEFAULT_LOCAL_SQLITE_PRAGMAS = {
25
25
  };
26
26
 
27
27
  // src/backend/sqlite/local.ts
28
- var nodeRequire = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-3DHZCOT7.cjs', document.baseURI).href)));
28
+ var nodeRequire = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-UTVQPZPN.cjs', document.baseURI).href)));
29
29
  function getUnknownErrorMessage(error) {
30
30
  if (error instanceof Error) return error.message;
31
31
  return String(error);
@@ -47,7 +47,7 @@ function createDatabase(path) {
47
47
  const message = getUnknownErrorMessage(error);
48
48
  const mismatch = parseNodeModuleVersionMismatchMessage(message);
49
49
  if (!mismatch) throw error;
50
- throw new chunkNI72YOJB_cjs.ConfigurationError(
50
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
51
51
  [
52
52
  "Failed to load better-sqlite3 native addon.",
53
53
  `It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,
@@ -86,37 +86,37 @@ function applyConnectionPragmas(sqlite, pragmas) {
86
86
  ...pragmas
87
87
  };
88
88
  if (!LOCAL_SQLITE_JOURNAL_MODES.includes(resolved.journalMode)) {
89
- throw new chunkNI72YOJB_cjs.ConfigurationError(
89
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
90
90
  `Invalid journalMode pragma: ${resolved.journalMode}. Expected one of: ${LOCAL_SQLITE_JOURNAL_MODES.join(", ")}.`,
91
91
  { journalMode: resolved.journalMode }
92
92
  );
93
93
  }
94
94
  if (!LOCAL_SQLITE_SYNCHRONOUS_MODES.includes(resolved.synchronous)) {
95
- throw new chunkNI72YOJB_cjs.ConfigurationError(
95
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
96
96
  `Invalid synchronous pragma: ${resolved.synchronous}. Expected one of: ${LOCAL_SQLITE_SYNCHRONOUS_MODES.join(", ")}.`,
97
97
  { synchronous: resolved.synchronous }
98
98
  );
99
99
  }
100
100
  if (!Number.isSafeInteger(resolved.busyTimeoutMs) || resolved.busyTimeoutMs < 0) {
101
- throw new chunkNI72YOJB_cjs.ConfigurationError(
101
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
102
102
  `Invalid busyTimeoutMs pragma: ${String(resolved.busyTimeoutMs)}. Expected a non-negative integer number of milliseconds.`,
103
103
  { busyTimeoutMs: resolved.busyTimeoutMs }
104
104
  );
105
105
  }
106
106
  if (resolved.cacheSizeKib !== void 0 && (!Number.isSafeInteger(resolved.cacheSizeKib) || resolved.cacheSizeKib >= 0)) {
107
- throw new chunkNI72YOJB_cjs.ConfigurationError(
107
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
108
108
  `Invalid cacheSizeKib pragma: ${String(resolved.cacheSizeKib)}. Expected a negative safe integer \u2014 SQLite's own cache_size pragma interprets a positive value as a page count, not KiB, so a caller who passes e.g. 131072 meaning "131072 KiB" silently gets 131072 pages (~512MiB at the default 4KiB page size) instead.`,
109
109
  { cacheSizeKib: resolved.cacheSizeKib }
110
110
  );
111
111
  }
112
112
  if (resolved.mmapSizeBytes !== void 0 && (!Number.isSafeInteger(resolved.mmapSizeBytes) || resolved.mmapSizeBytes < 0)) {
113
- throw new chunkNI72YOJB_cjs.ConfigurationError(
113
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
114
114
  `Invalid mmapSizeBytes pragma: ${String(resolved.mmapSizeBytes)}. Expected a non-negative safe integer number of bytes.`,
115
115
  { mmapSizeBytes: resolved.mmapSizeBytes }
116
116
  );
117
117
  }
118
118
  if (resolved.walAutocheckpointPages !== void 0 && (!Number.isSafeInteger(resolved.walAutocheckpointPages) || resolved.walAutocheckpointPages < 0 || resolved.walAutocheckpointPages > SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES)) {
119
- throw new chunkNI72YOJB_cjs.ConfigurationError(
119
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
120
120
  `Invalid walAutocheckpointPages pragma: ${String(resolved.walAutocheckpointPages)}. Expected an integer between 0 and ${SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES} WAL pages (0 disables automatic checkpointing entirely).`,
121
121
  { walAutocheckpointPages: resolved.walAutocheckpointPages }
122
122
  );
@@ -136,22 +136,22 @@ function applyConnectionPragmas(sqlite, pragmas) {
136
136
  }
137
137
  function createLocalSqliteBackend(options = {}) {
138
138
  const path = options.path ?? ":memory:";
139
- const tables2 = options.tables ?? chunkRMQLSPA2_cjs.tables2;
139
+ const tables2 = options.tables ?? chunkA7NMUYEL_cjs.tables2;
140
140
  const sqlite = createDatabase(path);
141
141
  try {
142
142
  applyConnectionPragmas(sqlite, options.pragmas);
143
143
  const hasSqliteVec = tryLoadSqliteVec(sqlite);
144
144
  const db = betterSqlite3.drizzle(sqlite);
145
- const ddlStatements = chunkRMQLSPA2_cjs.generateSqliteDDL(tables2);
145
+ const ddlStatements = chunkA7NMUYEL_cjs.generateSqliteDDL(tables2);
146
146
  for (const statement of ddlStatements) {
147
147
  sqlite.exec(statement);
148
148
  }
149
- const backend = chunkYVWGEQJE_cjs.createSqliteBackend(db, {
149
+ const backend = chunkE4OSGBCM_cjs.createSqliteBackend(db, {
150
150
  executionProfile: {
151
151
  isSync: true
152
152
  },
153
153
  tables: tables2,
154
- ...hasSqliteVec ? { vector: chunkPNN7RHVR_cjs.sqliteVecStrategy } : {},
154
+ ...hasSqliteVec ? { vector: chunkC4DYN2SD_cjs.sqliteVecStrategy } : {},
155
155
  capabilities: {
156
156
  ...options.capabilities,
157
157
  graphAnalytics: {
@@ -160,7 +160,7 @@ function createLocalSqliteBackend(options = {}) {
160
160
  }
161
161
  }
162
162
  });
163
- const managedBackend = chunkXBYVV3MP_cjs.wrapWithManagedClose(backend, () => {
163
+ const managedBackend = chunkANKOXPCC_cjs.wrapWithManagedClose(backend, () => {
164
164
  sqlite.close();
165
165
  });
166
166
  return { backend: managedBackend, db };
@@ -187,5 +187,5 @@ function tryLoadSqliteVec(sqlite) {
187
187
 
188
188
  exports.DEFAULT_LOCAL_SQLITE_PRAGMAS = DEFAULT_LOCAL_SQLITE_PRAGMAS;
189
189
  exports.createLocalSqliteBackend = createLocalSqliteBackend;
190
- //# sourceMappingURL=chunk-3DHZCOT7.cjs.map
191
- //# sourceMappingURL=chunk-3DHZCOT7.cjs.map
190
+ //# sourceMappingURL=chunk-UTVQPZPN.cjs.map
191
+ //# sourceMappingURL=chunk-UTVQPZPN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/backend/sqlite/local-options.ts","../src/backend/sqlite/local.ts"],"names":["createRequire","Database","ConfigurationError","tables","drizzle","generateSqliteDDL","createSqliteBackend","sqliteVecStrategy","wrapWithManagedClose"],"mappings":"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","file":"chunk-3DHZCOT7.cjs","sourcesContent":["/** Journal modes accepted by local SQLite connections. */\nexport type LocalSqliteJournalMode =\n \"wal\" | \"delete\" | \"truncate\" | \"persist\" | \"memory\" | \"off\";\n\n/** Synchronous levels accepted by local SQLite connections. */\nexport type LocalSqliteSynchronousMode = \"off\" | \"normal\" | \"full\" | \"extra\";\n\n/** Connection pragmas applied when TypeGraph opens a local SQLite database. */\nexport type LocalSqlitePragmaOptions = Readonly<{\n /** `PRAGMA journal_mode`. Default: `\"wal\"` (no-op on `\":memory:\"`). */\n journalMode?: LocalSqliteJournalMode;\n /** `PRAGMA synchronous`. Default: `\"normal\"`. */\n synchronous?: LocalSqliteSynchronousMode;\n /** `PRAGMA busy_timeout`, in milliseconds. Default: `5000`. */\n busyTimeoutMs?: number;\n /**\n * `PRAGMA cache_size`, expressed as a negative KiB value. Positive values\n * mean pages in SQLite and are rejected to prevent accidental oversizing.\n */\n cacheSizeKib?: number | undefined;\n /** `PRAGMA mmap_size`, in non-negative bytes. */\n mmapSizeBytes?: number | undefined;\n /**\n * `PRAGMA wal_autocheckpoint`, in WAL pages. Use `0` to disable automatic\n * checkpoints and run them explicitly after controlled bulk loads.\n */\n walAutocheckpointPages?: number | undefined;\n}>;\n\n/** Defaults for TypeGraph-owned local SQLite connections. */\nexport const DEFAULT_LOCAL_SQLITE_PRAGMAS: Required<LocalSqlitePragmaOptions> =\n {\n journalMode: \"wal\",\n synchronous: \"normal\",\n busyTimeoutMs: 5000,\n cacheSizeKib: undefined,\n mmapSizeBytes: undefined,\n walAutocheckpointPages: undefined,\n };\n","/**\n * Local SQLite backend using better-sqlite3.\n *\n * This module depends on the `better-sqlite3` native addon and should only\n * be imported in Node.js environments. For bundler-friendly SQLite DDL\n * generation and Drizzle backend creation, import from `@nicia-ai/typegraph/adapters/drizzle/sqlite`.\n *\n * @example In-memory database (default)\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database for persistent local development\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend({ path: \"./dev.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nimport { createRequire } from \"node:module\";\n\nimport Database from \"better-sqlite3\";\nimport {\n type BetterSQLite3Database,\n drizzle,\n} from \"drizzle-orm/better-sqlite3\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { sqliteVecStrategy } from \"../../query/dialect/vector/sqlite-vec-strategy\";\nimport { generateSqliteDDL } from \"../drizzle/ddl\";\nimport { type AnySqliteDatabase } from \"../drizzle/execution\";\nexport type { AnySqliteDatabase } from \"../drizzle/execution\";\nimport {\n createSqliteBackend,\n type SqliteTables,\n tables as defaultTables,\n} from \"../drizzle/sqlite\";\nimport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\n\nexport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\nimport {\n type AdapterBackend,\n type BackendCapabilities,\n wrapWithManagedClose,\n} from \"../types\";\n\nexport type {\n ContributionDiagnostic,\n ContributionDiagnosticState,\n ContributionRepairEntry,\n ContributionRepairResult,\n} from \"../types\";\n\nconst nodeRequire = createRequire(import.meta.url);\n\n// ============================================================\n// Native Addon Helpers\n// ============================================================\n\ntype NodeModuleVersionMismatch = Readonly<{\n compiled: number;\n required: number;\n}>;\n\nfunction getUnknownErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nfunction parseNodeModuleVersionMismatchMessage(\n message: string,\n): NodeModuleVersionMismatch | undefined {\n const regexp =\n /NODE_MODULE_VERSION (?<compiled>\\d+)[\\s\\S]*?NODE_MODULE_VERSION (?<required>\\d+)/;\n const match = regexp.exec(message);\n if (!match?.groups) return undefined;\n\n const compiled = Number(match.groups[\"compiled\"]);\n const required = Number(match.groups[\"required\"]);\n\n if (!Number.isFinite(compiled) || !Number.isFinite(required))\n return undefined;\n\n return { compiled, required };\n}\n\nfunction createDatabase(path: string): Database.Database {\n try {\n return new Database(path);\n } catch (error) {\n const message = getUnknownErrorMessage(error);\n const mismatch = parseNodeModuleVersionMismatchMessage(message);\n if (!mismatch) throw error;\n\n throw new ConfigurationError(\n [\n \"Failed to load better-sqlite3 native addon.\",\n `It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,\n \"This usually happens after switching Node versions without rebuilding native dependencies.\",\n \"Rebuild with: pnpm rebuild better-sqlite3 (or npm rebuild better-sqlite3).\",\n ].join(\" \"),\n {\n nodeVersion: process.version,\n nodeModuleVersion: process.versions.modules,\n compiledNodeModuleVersion: mismatch.compiled,\n requiredNodeModuleVersion: mismatch.required,\n },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Types\n// ============================================================\n\nconst LOCAL_SQLITE_JOURNAL_MODES: readonly LocalSqliteJournalMode[] = [\n \"wal\",\n \"delete\",\n \"truncate\",\n \"persist\",\n \"memory\",\n \"off\",\n];\n\nconst LOCAL_SQLITE_SYNCHRONOUS_MODES: readonly LocalSqliteSynchronousMode[] = [\n \"off\",\n \"normal\",\n \"full\",\n \"extra\",\n];\n\nconst SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES = 2_147_483_647;\n\nfunction applyConnectionPragmas(\n sqlite: Database.Database,\n pragmas: LocalSqlitePragmaOptions | false | undefined,\n): void {\n if (pragmas === false) return;\n const resolved: Required<LocalSqlitePragmaOptions> = {\n ...DEFAULT_LOCAL_SQLITE_PRAGMAS,\n ...pragmas,\n };\n\n // Runtime guards mirror the compile-time unions: pragma values are spliced\n // into pragma statements, so reject anything outside the allowlists rather\n // than forwarding it to SQLite.\n if (!LOCAL_SQLITE_JOURNAL_MODES.includes(resolved.journalMode)) {\n throw new ConfigurationError(\n `Invalid journalMode pragma: ${resolved.journalMode}. ` +\n `Expected one of: ${LOCAL_SQLITE_JOURNAL_MODES.join(\", \")}.`,\n { journalMode: resolved.journalMode },\n );\n }\n if (!LOCAL_SQLITE_SYNCHRONOUS_MODES.includes(resolved.synchronous)) {\n throw new ConfigurationError(\n `Invalid synchronous pragma: ${resolved.synchronous}. ` +\n `Expected one of: ${LOCAL_SQLITE_SYNCHRONOUS_MODES.join(\", \")}.`,\n { synchronous: resolved.synchronous },\n );\n }\n if (\n !Number.isSafeInteger(resolved.busyTimeoutMs) ||\n resolved.busyTimeoutMs < 0\n ) {\n throw new ConfigurationError(\n `Invalid busyTimeoutMs pragma: ${String(resolved.busyTimeoutMs)}. ` +\n \"Expected a non-negative integer number of milliseconds.\",\n { busyTimeoutMs: resolved.busyTimeoutMs },\n );\n }\n if (\n resolved.cacheSizeKib !== undefined &&\n (!Number.isSafeInteger(resolved.cacheSizeKib) || resolved.cacheSizeKib >= 0)\n ) {\n throw new ConfigurationError(\n `Invalid cacheSizeKib pragma: ${String(resolved.cacheSizeKib)}. ` +\n \"Expected a negative safe integer — SQLite's own cache_size pragma \" +\n \"interprets a positive value as a page count, not KiB, so a caller \" +\n 'who passes e.g. 131072 meaning \"131072 KiB\" silently gets ' +\n \"131072 pages (~512MiB at the default 4KiB page size) instead.\",\n { cacheSizeKib: resolved.cacheSizeKib },\n );\n }\n if (\n resolved.mmapSizeBytes !== undefined &&\n (!Number.isSafeInteger(resolved.mmapSizeBytes) ||\n resolved.mmapSizeBytes < 0)\n ) {\n throw new ConfigurationError(\n `Invalid mmapSizeBytes pragma: ${String(resolved.mmapSizeBytes)}. ` +\n \"Expected a non-negative safe integer number of bytes.\",\n { mmapSizeBytes: resolved.mmapSizeBytes },\n );\n }\n if (\n resolved.walAutocheckpointPages !== undefined &&\n (!Number.isSafeInteger(resolved.walAutocheckpointPages) ||\n resolved.walAutocheckpointPages < 0 ||\n resolved.walAutocheckpointPages > SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES)\n ) {\n throw new ConfigurationError(\n `Invalid walAutocheckpointPages pragma: ${String(resolved.walAutocheckpointPages)}. ` +\n `Expected an integer between 0 and ${SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES} ` +\n \"WAL pages (0 disables automatic checkpointing entirely).\",\n { walAutocheckpointPages: resolved.walAutocheckpointPages },\n );\n }\n\n // \":memory:\" databases always journal in memory; SQLite answers the WAL\n // request with \"memory\" instead of erroring, so no special-casing needed.\n sqlite.pragma(`journal_mode = ${resolved.journalMode}`);\n sqlite.pragma(`synchronous = ${resolved.synchronous}`);\n sqlite.pragma(`busy_timeout = ${resolved.busyTimeoutMs}`);\n if (resolved.cacheSizeKib !== undefined) {\n sqlite.pragma(`cache_size = ${resolved.cacheSizeKib}`);\n }\n if (resolved.mmapSizeBytes !== undefined) {\n sqlite.pragma(`mmap_size = ${resolved.mmapSizeBytes}`);\n }\n if (resolved.walAutocheckpointPages !== undefined) {\n sqlite.pragma(`wal_autocheckpoint = ${resolved.walAutocheckpointPages}`);\n }\n}\n\n/**\n * Options for creating a local SQLite backend.\n */\nexport type LocalSqliteBackendOptions = Readonly<{\n /**\n * Path to the SQLite database file.\n * Defaults to \":memory:\" for an in-memory database.\n */\n path?: string;\n\n /**\n * Connection pragmas applied at open. Defaults to\n * {@link DEFAULT_LOCAL_SQLITE_PRAGMAS} (WAL, `synchronous=NORMAL`, 5s busy\n * timeout, and SQLite's own tiny built-in page cache / disabled mmap\n * left untouched). Individual values merge over the defaults; pass\n * `false` to skip pragma configuration entirely and keep the driver\n * defaults (rollback journal, `synchronous=FULL`, and better-sqlite3's\n * own 5s busy timeout from its `timeout` constructor option). Set\n * `cacheSizeKib`/`mmapSizeBytes` explicitly once a database's working\n * set is known to exceed SQLite's 2MiB default cache — otherwise every\n * query pays a fresh disk read per page past that tiny working set. Set\n * `walAutocheckpointPages` explicitly for a bulk-insert-heavy workload —\n * SQLite's own default checkpoints every ~4MiB of WAL growth, which gets\n * more expensive as the database file grows over a large load.\n */\n pragmas?: LocalSqlitePragmaOptions | false;\n\n /**\n * Custom table definitions.\n * Defaults to standard TypeGraph table names.\n */\n tables?: SqliteTables;\n\n /**\n * Override specific backend capabilities — e.g. to simulate an engine-level\n * gap like missing SQL window functions in tests. Forwarded to\n * createSqliteBackend.\n */\n capabilities?: Partial<BackendCapabilities>;\n}>;\n\n/**\n * Result of creating a local SQLite backend.\n */\nexport type LocalSqliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore.\n */\n backend: AdapterBackend<AnySqliteDatabase>;\n\n /**\n * The underlying Drizzle database instance.\n * Useful for direct SQL access or cleanup.\n */\n db: BetterSQLite3Database;\n}>;\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a SQLite backend with minimal configuration.\n *\n * This is a convenience function for local development and testing.\n * It handles database creation, schema migration, and backend setup.\n *\n * For production deployments or custom configurations, use createSqliteBackend\n * directly with your own Drizzle database instance.\n *\n * @param options - Configuration options\n * @returns Backend and database instances\n *\n * @example In-memory database (default)\n * ```typescript\n * const { backend } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database\n * ```typescript\n * const { backend, db } = createLocalSqliteBackend({ path: \"./data.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nexport function createLocalSqliteBackend(\n options: LocalSqliteBackendOptions = {},\n): LocalSqliteBackendResult {\n const path = options.path ?? \":memory:\";\n const tables = options.tables ?? defaultTables;\n\n const sqlite = createDatabase(path);\n try {\n applyConnectionPragmas(sqlite, options.pragmas);\n\n // Best-effort: load sqlite-vec so embedding fields are persisted to\n // per-`(kind, field)` `vec0` storage. Without it, nodes with\n // `embedding()` fields validate and insert but their vectors are silently\n // dropped. When the user has installed sqlite-vec as a peer dep we load\n // it and wire the strategy; otherwise we proceed without vector support.\n const hasSqliteVec = tryLoadSqliteVec(sqlite);\n\n const db = drizzle(sqlite);\n\n // Generate and execute DDL from schema\n const ddlStatements = generateSqliteDDL(tables);\n for (const statement of ddlStatements) {\n sqlite.exec(statement);\n }\n\n const backend = createSqliteBackend(db, {\n executionProfile: {\n isSync: true,\n },\n tables,\n ...(hasSqliteVec ? { vector: sqliteVecStrategy } : {}),\n capabilities: {\n ...options.capabilities,\n graphAnalytics: {\n supported:\n options.capabilities?.graphAnalytics?.supported ??\n options.capabilities?.transactions !== false,\n mathFunctions:\n options.capabilities?.graphAnalytics?.mathFunctions ?? true,\n },\n },\n });\n const managedBackend = wrapWithManagedClose(backend, () => {\n sqlite.close();\n });\n\n return { backend: managedBackend, db };\n } catch (error) {\n try {\n sqlite.close();\n } catch {\n // Preserve the provisioning error; a cleanup failure is secondary.\n }\n throw error;\n }\n}\n\nfunction tryLoadSqliteVec(sqlite: Database.Database): boolean {\n try {\n // `sqlite-vec` is an optional peer dep; resolved via createRequire so\n // bundlers don't mark it as a hard import. Node resolves the package\n // only when it's actually installed.\n const module_: unknown = nodeRequire(\"sqlite-vec\");\n if (\n typeof module_ === \"object\" &&\n module_ !== null &&\n \"load\" in module_ &&\n typeof module_.load === \"function\"\n ) {\n (module_ as { load: (db: Database.Database) => void }).load(sqlite);\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\nexport type { GraphIdentityConfig } from \"../../core/define-graph\";\n"]}
1
+ {"version":3,"sources":["../src/backend/sqlite/local-options.ts","../src/backend/sqlite/local.ts"],"names":["createRequire","Database","ConfigurationError","tables","drizzle","generateSqliteDDL","createSqliteBackend","sqliteVecStrategy","wrapWithManagedClose"],"mappings":"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","file":"chunk-UTVQPZPN.cjs","sourcesContent":["/** Journal modes accepted by local SQLite connections. */\nexport type LocalSqliteJournalMode =\n \"wal\" | \"delete\" | \"truncate\" | \"persist\" | \"memory\" | \"off\";\n\n/** Synchronous levels accepted by local SQLite connections. */\nexport type LocalSqliteSynchronousMode = \"off\" | \"normal\" | \"full\" | \"extra\";\n\n/** Connection pragmas applied when TypeGraph opens a local SQLite database. */\nexport type LocalSqlitePragmaOptions = Readonly<{\n /** `PRAGMA journal_mode`. Default: `\"wal\"` (no-op on `\":memory:\"`). */\n journalMode?: LocalSqliteJournalMode;\n /** `PRAGMA synchronous`. Default: `\"normal\"`. */\n synchronous?: LocalSqliteSynchronousMode;\n /** `PRAGMA busy_timeout`, in milliseconds. Default: `5000`. */\n busyTimeoutMs?: number;\n /**\n * `PRAGMA cache_size`, expressed as a negative KiB value. Positive values\n * mean pages in SQLite and are rejected to prevent accidental oversizing.\n */\n cacheSizeKib?: number | undefined;\n /** `PRAGMA mmap_size`, in non-negative bytes. */\n mmapSizeBytes?: number | undefined;\n /**\n * `PRAGMA wal_autocheckpoint`, in WAL pages. Use `0` to disable automatic\n * checkpoints and run them explicitly after controlled bulk loads.\n */\n walAutocheckpointPages?: number | undefined;\n}>;\n\n/** Defaults for TypeGraph-owned local SQLite connections. */\nexport const DEFAULT_LOCAL_SQLITE_PRAGMAS: Required<LocalSqlitePragmaOptions> =\n {\n journalMode: \"wal\",\n synchronous: \"normal\",\n busyTimeoutMs: 5000,\n cacheSizeKib: undefined,\n mmapSizeBytes: undefined,\n walAutocheckpointPages: undefined,\n };\n","/**\n * Local SQLite backend using better-sqlite3.\n *\n * This module depends on the `better-sqlite3` native addon and should only\n * be imported in Node.js environments. For bundler-friendly SQLite DDL\n * generation and Drizzle backend creation, import from `@nicia-ai/typegraph/adapters/drizzle/sqlite`.\n *\n * @example In-memory database (default)\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database for persistent local development\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend({ path: \"./dev.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nimport { createRequire } from \"node:module\";\n\nimport Database from \"better-sqlite3\";\nimport {\n type BetterSQLite3Database,\n drizzle,\n} from \"drizzle-orm/better-sqlite3\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { sqliteVecStrategy } from \"../../query/dialect/vector/sqlite-vec-strategy\";\nimport { generateSqliteDDL } from \"../drizzle/ddl\";\nimport { type AnySqliteDatabase } from \"../drizzle/execution\";\nexport type { AnySqliteDatabase } from \"../drizzle/execution\";\nimport {\n createSqliteBackend,\n type SqliteTables,\n tables as defaultTables,\n} from \"../drizzle/sqlite\";\nimport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\n\nexport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\nimport {\n type AdapterBackend,\n type BackendCapabilities,\n wrapWithManagedClose,\n} from \"../types\";\n\nexport type {\n ContributionDiagnostic,\n ContributionDiagnosticState,\n ContributionRepairEntry,\n ContributionRepairResult,\n} from \"../types\";\n\nconst nodeRequire = createRequire(import.meta.url);\n\n// ============================================================\n// Native Addon Helpers\n// ============================================================\n\ntype NodeModuleVersionMismatch = Readonly<{\n compiled: number;\n required: number;\n}>;\n\nfunction getUnknownErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nfunction parseNodeModuleVersionMismatchMessage(\n message: string,\n): NodeModuleVersionMismatch | undefined {\n const regexp =\n /NODE_MODULE_VERSION (?<compiled>\\d+)[\\s\\S]*?NODE_MODULE_VERSION (?<required>\\d+)/;\n const match = regexp.exec(message);\n if (!match?.groups) return undefined;\n\n const compiled = Number(match.groups[\"compiled\"]);\n const required = Number(match.groups[\"required\"]);\n\n if (!Number.isFinite(compiled) || !Number.isFinite(required))\n return undefined;\n\n return { compiled, required };\n}\n\nfunction createDatabase(path: string): Database.Database {\n try {\n return new Database(path);\n } catch (error) {\n const message = getUnknownErrorMessage(error);\n const mismatch = parseNodeModuleVersionMismatchMessage(message);\n if (!mismatch) throw error;\n\n throw new ConfigurationError(\n [\n \"Failed to load better-sqlite3 native addon.\",\n `It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,\n \"This usually happens after switching Node versions without rebuilding native dependencies.\",\n \"Rebuild with: pnpm rebuild better-sqlite3 (or npm rebuild better-sqlite3).\",\n ].join(\" \"),\n {\n nodeVersion: process.version,\n nodeModuleVersion: process.versions.modules,\n compiledNodeModuleVersion: mismatch.compiled,\n requiredNodeModuleVersion: mismatch.required,\n },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Types\n// ============================================================\n\nconst LOCAL_SQLITE_JOURNAL_MODES: readonly LocalSqliteJournalMode[] = [\n \"wal\",\n \"delete\",\n \"truncate\",\n \"persist\",\n \"memory\",\n \"off\",\n];\n\nconst LOCAL_SQLITE_SYNCHRONOUS_MODES: readonly LocalSqliteSynchronousMode[] = [\n \"off\",\n \"normal\",\n \"full\",\n \"extra\",\n];\n\nconst SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES = 2_147_483_647;\n\nfunction applyConnectionPragmas(\n sqlite: Database.Database,\n pragmas: LocalSqlitePragmaOptions | false | undefined,\n): void {\n if (pragmas === false) return;\n const resolved: Required<LocalSqlitePragmaOptions> = {\n ...DEFAULT_LOCAL_SQLITE_PRAGMAS,\n ...pragmas,\n };\n\n // Runtime guards mirror the compile-time unions: pragma values are spliced\n // into pragma statements, so reject anything outside the allowlists rather\n // than forwarding it to SQLite.\n if (!LOCAL_SQLITE_JOURNAL_MODES.includes(resolved.journalMode)) {\n throw new ConfigurationError(\n `Invalid journalMode pragma: ${resolved.journalMode}. ` +\n `Expected one of: ${LOCAL_SQLITE_JOURNAL_MODES.join(\", \")}.`,\n { journalMode: resolved.journalMode },\n );\n }\n if (!LOCAL_SQLITE_SYNCHRONOUS_MODES.includes(resolved.synchronous)) {\n throw new ConfigurationError(\n `Invalid synchronous pragma: ${resolved.synchronous}. ` +\n `Expected one of: ${LOCAL_SQLITE_SYNCHRONOUS_MODES.join(\", \")}.`,\n { synchronous: resolved.synchronous },\n );\n }\n if (\n !Number.isSafeInteger(resolved.busyTimeoutMs) ||\n resolved.busyTimeoutMs < 0\n ) {\n throw new ConfigurationError(\n `Invalid busyTimeoutMs pragma: ${String(resolved.busyTimeoutMs)}. ` +\n \"Expected a non-negative integer number of milliseconds.\",\n { busyTimeoutMs: resolved.busyTimeoutMs },\n );\n }\n if (\n resolved.cacheSizeKib !== undefined &&\n (!Number.isSafeInteger(resolved.cacheSizeKib) || resolved.cacheSizeKib >= 0)\n ) {\n throw new ConfigurationError(\n `Invalid cacheSizeKib pragma: ${String(resolved.cacheSizeKib)}. ` +\n \"Expected a negative safe integer — SQLite's own cache_size pragma \" +\n \"interprets a positive value as a page count, not KiB, so a caller \" +\n 'who passes e.g. 131072 meaning \"131072 KiB\" silently gets ' +\n \"131072 pages (~512MiB at the default 4KiB page size) instead.\",\n { cacheSizeKib: resolved.cacheSizeKib },\n );\n }\n if (\n resolved.mmapSizeBytes !== undefined &&\n (!Number.isSafeInteger(resolved.mmapSizeBytes) ||\n resolved.mmapSizeBytes < 0)\n ) {\n throw new ConfigurationError(\n `Invalid mmapSizeBytes pragma: ${String(resolved.mmapSizeBytes)}. ` +\n \"Expected a non-negative safe integer number of bytes.\",\n { mmapSizeBytes: resolved.mmapSizeBytes },\n );\n }\n if (\n resolved.walAutocheckpointPages !== undefined &&\n (!Number.isSafeInteger(resolved.walAutocheckpointPages) ||\n resolved.walAutocheckpointPages < 0 ||\n resolved.walAutocheckpointPages > SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES)\n ) {\n throw new ConfigurationError(\n `Invalid walAutocheckpointPages pragma: ${String(resolved.walAutocheckpointPages)}. ` +\n `Expected an integer between 0 and ${SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES} ` +\n \"WAL pages (0 disables automatic checkpointing entirely).\",\n { walAutocheckpointPages: resolved.walAutocheckpointPages },\n );\n }\n\n // \":memory:\" databases always journal in memory; SQLite answers the WAL\n // request with \"memory\" instead of erroring, so no special-casing needed.\n sqlite.pragma(`journal_mode = ${resolved.journalMode}`);\n sqlite.pragma(`synchronous = ${resolved.synchronous}`);\n sqlite.pragma(`busy_timeout = ${resolved.busyTimeoutMs}`);\n if (resolved.cacheSizeKib !== undefined) {\n sqlite.pragma(`cache_size = ${resolved.cacheSizeKib}`);\n }\n if (resolved.mmapSizeBytes !== undefined) {\n sqlite.pragma(`mmap_size = ${resolved.mmapSizeBytes}`);\n }\n if (resolved.walAutocheckpointPages !== undefined) {\n sqlite.pragma(`wal_autocheckpoint = ${resolved.walAutocheckpointPages}`);\n }\n}\n\n/**\n * Options for creating a local SQLite backend.\n */\nexport type LocalSqliteBackendOptions = Readonly<{\n /**\n * Path to the SQLite database file.\n * Defaults to \":memory:\" for an in-memory database.\n */\n path?: string;\n\n /**\n * Connection pragmas applied at open. Defaults to\n * {@link DEFAULT_LOCAL_SQLITE_PRAGMAS} (WAL, `synchronous=NORMAL`, 5s busy\n * timeout, and SQLite's own tiny built-in page cache / disabled mmap\n * left untouched). Individual values merge over the defaults; pass\n * `false` to skip pragma configuration entirely and keep the driver\n * defaults (rollback journal, `synchronous=FULL`, and better-sqlite3's\n * own 5s busy timeout from its `timeout` constructor option). Set\n * `cacheSizeKib`/`mmapSizeBytes` explicitly once a database's working\n * set is known to exceed SQLite's 2MiB default cache — otherwise every\n * query pays a fresh disk read per page past that tiny working set. Set\n * `walAutocheckpointPages` explicitly for a bulk-insert-heavy workload —\n * SQLite's own default checkpoints every ~4MiB of WAL growth, which gets\n * more expensive as the database file grows over a large load.\n */\n pragmas?: LocalSqlitePragmaOptions | false;\n\n /**\n * Custom table definitions.\n * Defaults to standard TypeGraph table names.\n */\n tables?: SqliteTables;\n\n /**\n * Override specific backend capabilities — e.g. to simulate an engine-level\n * gap like missing SQL window functions in tests. Forwarded to\n * createSqliteBackend.\n */\n capabilities?: Partial<BackendCapabilities>;\n}>;\n\n/**\n * Result of creating a local SQLite backend.\n */\nexport type LocalSqliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore.\n */\n backend: AdapterBackend<AnySqliteDatabase>;\n\n /**\n * The underlying Drizzle database instance.\n * Useful for direct SQL access or cleanup.\n */\n db: BetterSQLite3Database;\n}>;\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a SQLite backend with minimal configuration.\n *\n * This is a convenience function for local development and testing.\n * It handles database creation, schema migration, and backend setup.\n *\n * For production deployments or custom configurations, use createSqliteBackend\n * directly with your own Drizzle database instance.\n *\n * @param options - Configuration options\n * @returns Backend and database instances\n *\n * @example In-memory database (default)\n * ```typescript\n * const { backend } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database\n * ```typescript\n * const { backend, db } = createLocalSqliteBackend({ path: \"./data.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nexport function createLocalSqliteBackend(\n options: LocalSqliteBackendOptions = {},\n): LocalSqliteBackendResult {\n const path = options.path ?? \":memory:\";\n const tables = options.tables ?? defaultTables;\n\n const sqlite = createDatabase(path);\n try {\n applyConnectionPragmas(sqlite, options.pragmas);\n\n // Best-effort: load sqlite-vec so embedding fields are persisted to\n // per-`(kind, field)` `vec0` storage. Without it, nodes with\n // `embedding()` fields validate and insert but their vectors are silently\n // dropped. When the user has installed sqlite-vec as a peer dep we load\n // it and wire the strategy; otherwise we proceed without vector support.\n const hasSqliteVec = tryLoadSqliteVec(sqlite);\n\n const db = drizzle(sqlite);\n\n // Generate and execute DDL from schema\n const ddlStatements = generateSqliteDDL(tables);\n for (const statement of ddlStatements) {\n sqlite.exec(statement);\n }\n\n const backend = createSqliteBackend(db, {\n executionProfile: {\n isSync: true,\n },\n tables,\n ...(hasSqliteVec ? { vector: sqliteVecStrategy } : {}),\n capabilities: {\n ...options.capabilities,\n graphAnalytics: {\n supported:\n options.capabilities?.graphAnalytics?.supported ??\n options.capabilities?.transactions !== false,\n mathFunctions:\n options.capabilities?.graphAnalytics?.mathFunctions ?? true,\n },\n },\n });\n const managedBackend = wrapWithManagedClose(backend, () => {\n sqlite.close();\n });\n\n return { backend: managedBackend, db };\n } catch (error) {\n try {\n sqlite.close();\n } catch {\n // Preserve the provisioning error; a cleanup failure is secondary.\n }\n throw error;\n }\n}\n\nfunction tryLoadSqliteVec(sqlite: Database.Database): boolean {\n try {\n // `sqlite-vec` is an optional peer dep; resolved via createRequire so\n // bundlers don't mark it as a hard import. Node resolves the package\n // only when it's actually installed.\n const module_: unknown = nodeRequire(\"sqlite-vec\");\n if (\n typeof module_ === \"object\" &&\n module_ !== null &&\n \"load\" in module_ &&\n typeof module_.load === \"function\"\n ) {\n (module_ as { load: (db: Database.Database) => void }).load(sqlite);\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\nexport type { GraphIdentityConfig } from \"../../core/define-graph\";\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkE4WNQBEF_cjs = require('./chunk-E4WNQBEF.cjs');
3
+ var chunkZBVZ7HXD_cjs = require('./chunk-ZBVZ7HXD.cjs');
4
4
  var chunkHAHNRASW_cjs = require('./chunk-HAHNRASW.cjs');
5
- var chunkNI72YOJB_cjs = require('./chunk-NI72YOJB.cjs');
5
+ var chunkKCH7WQA5_cjs = require('./chunk-KCH7WQA5.cjs');
6
6
  var chunkN66HCGCY_cjs = require('./chunk-N66HCGCY.cjs');
7
7
 
8
8
  // src/core/types.ts
@@ -12,7 +12,7 @@ function assertNonEmptyId(value, path) {
12
12
  if (value.length > 0) {
13
13
  return;
14
14
  }
15
- throw new chunkNI72YOJB_cjs.ValidationError(
15
+ throw new chunkKCH7WQA5_cjs.ValidationError(
16
16
  `${path} must be a non-empty string.`,
17
17
  {
18
18
  issues: [
@@ -138,7 +138,7 @@ function validateConstraintNarrowing(name, edgeType, registration) {
138
138
  const builtInFromNames = new Set(edgeType.from.map((node) => node.kind));
139
139
  for (const fromNode of registration.from) {
140
140
  if (!builtInFromNames.has(fromNode.kind)) {
141
- throw new chunkNI72YOJB_cjs.ConfigurationError(
141
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
142
142
  `Edge "${name}" registration has 'from' kind "${fromNode.kind}" not in edge's built-in domain: [${[...builtInFromNames].join(", ")}]`,
143
143
  {
144
144
  edgeName: name,
@@ -154,7 +154,7 @@ function validateConstraintNarrowing(name, edgeType, registration) {
154
154
  const builtInToNames = new Set(edgeType.to.map((node) => node.kind));
155
155
  for (const toNode of registration.to) {
156
156
  if (!builtInToNames.has(toNode.kind)) {
157
- throw new chunkNI72YOJB_cjs.ConfigurationError(
157
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
158
158
  `Edge "${name}" registration has 'to' kind "${toNode.kind}" not in edge's built-in range: [${[...builtInToNames].join(", ")}]`,
159
159
  {
160
160
  edgeName: name,
@@ -233,7 +233,7 @@ function assertUniqueConstraintsAreDeclared(nodes) {
233
233
  for (const constraint of constraints) {
234
234
  if (shape === void 0) {
235
235
  if (constraint.where === void 0) continue;
236
- throw new chunkNI72YOJB_cjs.ConfigurationError(
236
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
237
237
  `Unique constraint "${constraint.name}" on node kind "${registration.type.kind}" has a \`where\` clause, but the kind's schema is not an object schema, so its declared fields cannot be checked.`,
238
238
  {
239
239
  kind: registration.type.kind,
@@ -244,7 +244,7 @@ function assertUniqueConstraintsAreDeclared(nodes) {
244
244
  }
245
245
  );
246
246
  }
247
- chunkE4WNQBEF_cjs.assertWhereFieldDeclared(registration.type.kind, constraint, shape);
247
+ chunkZBVZ7HXD_cjs.assertWhereFieldDeclared(registration.type.kind, constraint, shape);
248
248
  }
249
249
  }
250
250
  }
@@ -262,7 +262,7 @@ function normalizeIndexes(inputs, nodes, edges) {
262
262
  assertKindRegistered(declaration, edgeKinds, "edge");
263
263
  }
264
264
  if (seenNames.has(declaration.name)) {
265
- throw new chunkNI72YOJB_cjs.ConfigurationError(
265
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
266
266
  `Duplicate index name "${declaration.name}" in defineGraph({ indexes }). Index names must be unique within a graph.`,
267
267
  { indexName: declaration.name },
268
268
  {
@@ -285,7 +285,7 @@ function assertKindRegistered(declaration, registeredKinds, entity) {
285
285
  if (registeredKinds.has(declaration.kind)) return;
286
286
  const slot = entity === "node" ? "nodes" : "edges";
287
287
  const suggestion = entity === "node" ? `Add { ${declaration.kind}: { type: ${declaration.kind} } } to defineGraph({ nodes }) or remove the index from "indexes".` : `Register the edge in defineGraph({ edges }) or remove the index from "indexes".`;
288
- throw new chunkNI72YOJB_cjs.ConfigurationError(
288
+ throw new chunkKCH7WQA5_cjs.ConfigurationError(
289
289
  `Index "${declaration.name}" references ${entity} kind "${declaration.kind}" which is not registered in this graph's "${slot}".`,
290
290
  {
291
291
  indexName: declaration.name,
@@ -323,5 +323,5 @@ exports.isGraphDef = isGraphDef;
323
323
  exports.isKnownKind = isKnownKind;
324
324
  exports.isNodeType = isNodeType;
325
325
  exports.mergeVectorIndexes = mergeVectorIndexes;
326
- //# sourceMappingURL=chunk-CXBHOOIQ.cjs.map
327
- //# sourceMappingURL=chunk-CXBHOOIQ.cjs.map
326
+ //# sourceMappingURL=chunk-WA64ZSCA.cjs.map
327
+ //# sourceMappingURL=chunk-WA64ZSCA.cjs.map