@nicia-ai/typegraph 0.33.0 → 0.35.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 (284) hide show
  1. package/README.md +20 -0
  2. package/dist/backend/postgres/index.cjs +30 -26
  3. package/dist/backend/postgres/index.d.cts +39 -7
  4. package/dist/backend/postgres/index.d.ts +39 -7
  5. package/dist/backend/postgres/index.js +17 -13
  6. package/dist/backend/postgres/pglite.cjs +22 -18
  7. package/dist/backend/postgres/pglite.cjs.map +1 -1
  8. package/dist/backend/postgres/pglite.d.cts +4 -4
  9. package/dist/backend/postgres/pglite.d.ts +4 -4
  10. package/dist/backend/postgres/pglite.js +17 -13
  11. package/dist/backend/postgres/pglite.js.map +1 -1
  12. package/dist/backend/sqlite/index.cjs +26 -23
  13. package/dist/backend/sqlite/index.d.cts +8 -8
  14. package/dist/backend/sqlite/index.d.ts +8 -8
  15. package/dist/backend/sqlite/index.js +14 -11
  16. package/dist/backend/sqlite/libsql.cjs +21 -17
  17. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  18. package/dist/backend/sqlite/libsql.d.cts +13 -6
  19. package/dist/backend/sqlite/libsql.d.ts +13 -6
  20. package/dist/backend/sqlite/libsql.js +17 -13
  21. package/dist/backend/sqlite/libsql.js.map +1 -1
  22. package/dist/backend/sqlite/local.cjs +102 -18
  23. package/dist/backend/sqlite/local.cjs.map +1 -1
  24. package/dist/backend/sqlite/local.d.cts +95 -5
  25. package/dist/backend/sqlite/local.d.ts +95 -5
  26. package/dist/backend/sqlite/local.js +96 -13
  27. package/dist/backend/sqlite/local.js.map +1 -1
  28. package/dist/{chunk-JHOBXD7O.js → chunk-3TWF3SH4.js} +332 -64
  29. package/dist/chunk-3TWF3SH4.js.map +1 -0
  30. package/dist/chunk-4JEZZJ6S.cjs +1271 -0
  31. package/dist/chunk-4JEZZJ6S.cjs.map +1 -0
  32. package/dist/{chunk-I4W7MKVG.cjs → chunk-4TOD4LBZ.cjs} +249 -294
  33. package/dist/chunk-4TOD4LBZ.cjs.map +1 -0
  34. package/dist/chunk-55MZDDZV.js +239 -0
  35. package/dist/chunk-55MZDDZV.js.map +1 -0
  36. package/dist/{chunk-LM2IC4ZJ.cjs → chunk-5A6FNS6N.cjs} +75 -19
  37. package/dist/chunk-5A6FNS6N.cjs.map +1 -0
  38. package/dist/{chunk-FDN43KXV.cjs → chunk-5AQIKK56.cjs} +65 -24
  39. package/dist/chunk-5AQIKK56.cjs.map +1 -0
  40. package/dist/{chunk-IZ4PCL47.js → chunk-5SEGFTZX.js} +4 -66
  41. package/dist/chunk-5SEGFTZX.js.map +1 -0
  42. package/dist/{chunk-CWFPJ3RC.js → chunk-6FR2MMS6.js} +7 -7
  43. package/dist/chunk-6FR2MMS6.js.map +1 -0
  44. package/dist/chunk-7YSP4V4R.cjs +69 -0
  45. package/dist/chunk-7YSP4V4R.cjs.map +1 -0
  46. package/dist/chunk-A42GCBGX.cjs +28 -0
  47. package/dist/chunk-A42GCBGX.cjs.map +1 -0
  48. package/dist/chunk-ACSVZPK7.cjs +21 -0
  49. package/dist/chunk-ACSVZPK7.cjs.map +1 -0
  50. package/dist/{chunk-OIE2UPVG.cjs → chunk-BLZDPRXT.cjs} +52 -21
  51. package/dist/chunk-BLZDPRXT.cjs.map +1 -0
  52. package/dist/chunk-BYPOGQWK.js +25 -0
  53. package/dist/chunk-BYPOGQWK.js.map +1 -0
  54. package/dist/{chunk-NG5N7R45.cjs → chunk-CK5BVQOW.cjs} +325 -213
  55. package/dist/chunk-CK5BVQOW.cjs.map +1 -0
  56. package/dist/chunk-CTTSDJLY.cjs +261 -0
  57. package/dist/chunk-CTTSDJLY.cjs.map +1 -0
  58. package/dist/chunk-CUHM5CWJ.cjs +12 -0
  59. package/dist/chunk-CUHM5CWJ.cjs.map +1 -0
  60. package/dist/chunk-CZQ3FO2Q.js +2320 -0
  61. package/dist/chunk-CZQ3FO2Q.js.map +1 -0
  62. package/dist/{chunk-CFNT3ITG.cjs → chunk-D7ZEOS56.cjs} +25 -52
  63. package/dist/chunk-D7ZEOS56.cjs.map +1 -0
  64. package/dist/chunk-DFVLCOP6.js +10 -0
  65. package/dist/chunk-DFVLCOP6.js.map +1 -0
  66. package/dist/chunk-DI74SMXS.cjs +29 -0
  67. package/dist/chunk-DI74SMXS.cjs.map +1 -0
  68. package/dist/{chunk-KY5SDVA7.cjs → chunk-EM3CWPND.cjs} +442 -113
  69. package/dist/chunk-EM3CWPND.cjs.map +1 -0
  70. package/dist/chunk-EMF62TZG.cjs +1176 -0
  71. package/dist/chunk-EMF62TZG.cjs.map +1 -0
  72. package/dist/chunk-EOLERH7Y.cjs +40 -0
  73. package/dist/chunk-EOLERH7Y.cjs.map +1 -0
  74. package/dist/{chunk-3QRBXYT5.cjs → chunk-FACJJWGF.cjs} +24 -6
  75. package/dist/chunk-FACJJWGF.cjs.map +1 -0
  76. package/dist/{chunk-KTIEB7VH.cjs → chunk-FL472AMI.cjs} +49 -165
  77. package/dist/chunk-FL472AMI.cjs.map +1 -0
  78. package/dist/{chunk-4RBAJVEC.cjs → chunk-FN35DLCN.cjs} +31 -9
  79. package/dist/chunk-FN35DLCN.cjs.map +1 -0
  80. package/dist/{chunk-C4C4Q7A6.js → chunk-FPIZFYHE.js} +12 -35
  81. package/dist/chunk-FPIZFYHE.js.map +1 -0
  82. package/dist/{chunk-XKNAK27R.js → chunk-FRV5Q5IO.js} +64 -8
  83. package/dist/chunk-FRV5Q5IO.js.map +1 -0
  84. package/dist/{chunk-K5P5OZXS.js → chunk-G6Q5UM7U.js} +2 -2
  85. package/dist/{chunk-K5P5OZXS.js.map → chunk-G6Q5UM7U.js.map} +1 -1
  86. package/dist/chunk-GSQ6NPH6.cjs +100 -0
  87. package/dist/chunk-GSQ6NPH6.cjs.map +1 -0
  88. package/dist/chunk-GUR2FNB5.cjs +12 -0
  89. package/dist/{chunk-6ZR4QC3O.cjs.map → chunk-GUR2FNB5.cjs.map} +1 -1
  90. package/dist/{chunk-ZFWNO3GE.cjs → chunk-H7YNSMA7.cjs} +107 -2
  91. package/dist/chunk-H7YNSMA7.cjs.map +1 -0
  92. package/dist/{chunk-GYVBEZAO.js → chunk-I7ZUZKFD.js} +47 -19
  93. package/dist/chunk-I7ZUZKFD.js.map +1 -0
  94. package/dist/chunk-ITE4IXAK.js +25 -0
  95. package/dist/chunk-ITE4IXAK.js.map +1 -0
  96. package/dist/{chunk-D3EWZ67S.cjs → chunk-J7WFGBJR.cjs} +3372 -4970
  97. package/dist/chunk-J7WFGBJR.cjs.map +1 -0
  98. package/dist/{chunk-PYD3UCDU.js → chunk-JBTOYDMN.js} +202 -251
  99. package/dist/chunk-JBTOYDMN.js.map +1 -0
  100. package/dist/{chunk-XVUJY72M.js → chunk-K3PPLHY7.js} +234 -118
  101. package/dist/chunk-K3PPLHY7.js.map +1 -0
  102. package/dist/{chunk-454I6GDF.js → chunk-KBGQIPRQ.js} +102 -3
  103. package/dist/chunk-KBGQIPRQ.js.map +1 -0
  104. package/dist/chunk-KMI7LYAF.js +1252 -0
  105. package/dist/chunk-KMI7LYAF.js.map +1 -0
  106. package/dist/{chunk-JIEJCTDS.cjs → chunk-LGEALRC6.cjs} +21 -4
  107. package/dist/chunk-LGEALRC6.cjs.map +1 -0
  108. package/dist/{chunk-TQOYM4LN.js → chunk-MP2JQKSG.js} +21 -5
  109. package/dist/chunk-MP2JQKSG.js.map +1 -0
  110. package/dist/{chunk-3642VBVC.cjs → chunk-O7UN7OXA.cjs} +389 -121
  111. package/dist/chunk-O7UN7OXA.cjs.map +1 -0
  112. package/dist/chunk-OHMP6N2J.js +47 -0
  113. package/dist/chunk-OHMP6N2J.js.map +1 -0
  114. package/dist/{chunk-6NRFUHMS.js → chunk-OR5ZA5WP.js} +135 -24
  115. package/dist/chunk-OR5ZA5WP.js.map +1 -0
  116. package/dist/{chunk-PRMKPFN5.js → chunk-Q5TEXCTB.js} +61 -6
  117. package/dist/chunk-Q5TEXCTB.js.map +1 -0
  118. package/dist/chunk-QNKSQTKQ.js +1312 -0
  119. package/dist/chunk-QNKSQTKQ.js.map +1 -0
  120. package/dist/{chunk-YCV72E6L.js → chunk-QOTI55H7.js} +7 -116
  121. package/dist/chunk-QOTI55H7.js.map +1 -0
  122. package/dist/{chunk-QBYTJSAY.js → chunk-QWEUYILR.js} +99 -34
  123. package/dist/chunk-QWEUYILR.js.map +1 -0
  124. package/dist/{chunk-OS6KS3HV.js → chunk-RGP33ZJ5.js} +485 -82
  125. package/dist/chunk-RGP33ZJ5.js.map +1 -0
  126. package/dist/chunk-RGPG7EOJ.js +94 -0
  127. package/dist/chunk-RGPG7EOJ.js.map +1 -0
  128. package/dist/{chunk-WWVV44DY.cjs → chunk-S55OV6PW.cjs} +15 -15
  129. package/dist/chunk-S55OV6PW.cjs.map +1 -0
  130. package/dist/{chunk-3E7SNSIA.cjs → chunk-SJDMVITW.cjs} +4 -4
  131. package/dist/{chunk-3E7SNSIA.cjs.map → chunk-SJDMVITW.cjs.map} +1 -1
  132. package/dist/{chunk-XLUNB2TZ.js → chunk-SNXVDZAJ.js} +3 -3
  133. package/dist/{chunk-XLUNB2TZ.js.map → chunk-SNXVDZAJ.js.map} +1 -1
  134. package/dist/{chunk-CEF2QOTO.js → chunk-T2WUSPDA.js} +49 -8
  135. package/dist/chunk-T2WUSPDA.js.map +1 -0
  136. package/dist/{chunk-YW7GHMF4.cjs → chunk-TCOCYN2P.cjs} +75 -20
  137. package/dist/chunk-TCOCYN2P.cjs.map +1 -0
  138. package/dist/{chunk-FLRCVI2G.cjs → chunk-TDXIBCGY.cjs} +2 -2
  139. package/dist/{chunk-FLRCVI2G.cjs.map → chunk-TDXIBCGY.cjs.map} +1 -1
  140. package/dist/chunk-TEDRJXOG.cjs +32 -0
  141. package/dist/chunk-TEDRJXOG.cjs.map +1 -0
  142. package/dist/{chunk-WLP6TKFB.js → chunk-UES55P7G.js} +2809 -4398
  143. package/dist/chunk-UES55P7G.js.map +1 -0
  144. package/dist/{chunk-EF3Z645U.cjs → chunk-UMDVATGY.cjs} +6 -72
  145. package/dist/chunk-UMDVATGY.cjs.map +1 -0
  146. package/dist/chunk-UR7W5YQK.js +18 -0
  147. package/dist/chunk-UR7W5YQK.js.map +1 -0
  148. package/dist/chunk-UT3S4SEN.js +31 -0
  149. package/dist/chunk-UT3S4SEN.js.map +1 -0
  150. package/dist/{chunk-3IR2GEMJ.cjs → chunk-UUT7UN2N.cjs} +149 -38
  151. package/dist/chunk-UUT7UN2N.cjs.map +1 -0
  152. package/dist/{chunk-PIHXFF73.js → chunk-UZV3AZKF.js} +21 -3
  153. package/dist/chunk-UZV3AZKF.js.map +1 -0
  154. package/dist/{chunk-DJYRRDHA.js → chunk-VHMPG6UL.js} +29 -7
  155. package/dist/chunk-VHMPG6UL.js.map +1 -0
  156. package/dist/{chunk-MBLXCV2Y.cjs → chunk-VPYHY3LJ.cjs} +111 -43
  157. package/dist/chunk-VPYHY3LJ.cjs.map +1 -0
  158. package/dist/{chunk-WYTUF3QO.js → chunk-VSPCZAXF.js} +3 -3
  159. package/dist/{chunk-WYTUF3QO.js.map → chunk-VSPCZAXF.js.map} +1 -1
  160. package/dist/chunk-W63OVYY4.js +29 -0
  161. package/dist/chunk-W63OVYY4.js.map +1 -0
  162. package/dist/{chunk-UPDMJEW6.js → chunk-WDBCBWC4.js} +356 -30
  163. package/dist/chunk-WDBCBWC4.js.map +1 -0
  164. package/dist/chunk-WJT7OU7E.cjs +1334 -0
  165. package/dist/chunk-WJT7OU7E.cjs.map +1 -0
  166. package/dist/chunk-XOX22WHL.cjs +2383 -0
  167. package/dist/chunk-XOX22WHL.cjs.map +1 -0
  168. package/dist/{ddl-CVnHJcar.d.ts → ddl-C2rZ-Aen.d.ts} +4 -4
  169. package/dist/{ddl-Dxt_fBHr.d.cts → ddl-CZz7a0E8.d.cts} +4 -4
  170. package/dist/{extension-types-YGFJPrzK.d.cts → extension-types-ixRpJVUp.d.cts} +24 -1
  171. package/dist/{extension-types-YGFJPrzK.d.ts → extension-types-ixRpJVUp.d.ts} +24 -1
  172. package/dist/{types-DGylBhWo.d.ts → fulltext-strategy-B57yvC5Q.d.ts} +2558 -2125
  173. package/dist/{types-C_UnQOQp.d.cts → fulltext-strategy-CDkSSYhq.d.cts} +2558 -2125
  174. package/dist/graph-extension/index.cjs +21 -19
  175. package/dist/graph-extension/index.d.cts +4 -4
  176. package/dist/graph-extension/index.d.ts +4 -4
  177. package/dist/graph-extension/index.js +6 -4
  178. package/dist/graph-merge/index.cjs +408 -169
  179. package/dist/graph-merge/index.cjs.map +1 -1
  180. package/dist/graph-merge/index.d.cts +63 -33
  181. package/dist/graph-merge/index.d.ts +63 -33
  182. package/dist/graph-merge/index.js +286 -47
  183. package/dist/graph-merge/index.js.map +1 -1
  184. package/dist/{index-DGX6D9j1.d.ts → index-6CSUAq-x.d.ts} +234 -93
  185. package/dist/{index-SEvUHDA6.d.cts → index-Bks_3HHK.d.cts} +234 -93
  186. package/dist/index.cjs +240 -211
  187. package/dist/index.cjs.map +1 -1
  188. package/dist/index.d.cts +11 -11
  189. package/dist/index.d.ts +11 -11
  190. package/dist/index.js +35 -27
  191. package/dist/index.js.map +1 -1
  192. package/dist/indexes/index.cjs +28 -27
  193. package/dist/indexes/index.d.cts +5 -5
  194. package/dist/indexes/index.d.ts +5 -5
  195. package/dist/indexes/index.js +10 -9
  196. package/dist/interchange/index.cjs +47 -17
  197. package/dist/interchange/index.d.cts +126 -12
  198. package/dist/interchange/index.d.ts +126 -12
  199. package/dist/interchange/index.js +14 -4
  200. package/dist/{manager-BYl_zyZR.d.cts → manager-DwQi8eV0.d.cts} +9 -2
  201. package/dist/{manager-C0_r0ALf.d.ts → manager-ejUCB52T.d.ts} +9 -2
  202. package/dist/{materialize-indexes-D20xNluI.d.cts → materialize-indexes-B4e9360H.d.cts} +20 -4
  203. package/dist/{materialize-indexes-CAkIYFV-.d.ts → materialize-indexes-te9TPMMJ.d.ts} +20 -4
  204. package/dist/{postgres-_9psmVGm.d.cts → postgres-CfEqsRMp.d.cts} +152 -1
  205. package/dist/{postgres-MzBPkYzq.d.ts → postgres-DQ5R6rzV.d.ts} +152 -1
  206. package/dist/profiler/index.cjs +11 -11
  207. package/dist/profiler/index.d.cts +7 -7
  208. package/dist/profiler/index.d.ts +7 -7
  209. package/dist/profiler/index.js +4 -4
  210. package/dist/provenance/index.cjs +590 -0
  211. package/dist/provenance/index.cjs.map +1 -0
  212. package/dist/provenance/index.d.cts +73 -0
  213. package/dist/provenance/index.d.ts +73 -0
  214. package/dist/provenance/index.js +588 -0
  215. package/dist/provenance/index.js.map +1 -0
  216. package/dist/schema/index.cjs +55 -38
  217. package/dist/schema/index.cjs.map +1 -1
  218. package/dist/schema/index.d.cts +57 -57
  219. package/dist/schema/index.d.ts +57 -57
  220. package/dist/schema/index.js +30 -13
  221. package/dist/schema/index.js.map +1 -1
  222. package/dist/{sqlite-gm44dShb.d.ts → sqlite-D7zBinNR.d.cts} +92 -1
  223. package/dist/{sqlite-BfksSb45.d.cts → sqlite-DvQndLky.d.ts} +92 -1
  224. package/dist/{store-view-FfE5_7eo.d.ts → store-view-BSpqvAxK.d.cts} +445 -46
  225. package/dist/{store-view-9jQ2rPum.d.cts → store-view-CKbHFRnn.d.ts} +445 -46
  226. package/dist/{types-B6mhrcLv.d.cts → types-Bv9DcS_E.d.cts} +2 -2
  227. package/dist/{types-CdWxK-nD.d.ts → types-CoxuV7EJ.d.ts} +2 -2
  228. package/dist/{where-Bpp2ul_z.d.cts → where-7RKFOsXt.d.ts} +2 -2
  229. package/dist/{where-BsEXraKW.d.ts → where-DdMIXOtH.d.cts} +2 -2
  230. package/package.json +21 -14
  231. package/dist/chunk-2YMGNYXY.js +0 -40
  232. package/dist/chunk-2YMGNYXY.js.map +0 -1
  233. package/dist/chunk-3642VBVC.cjs.map +0 -1
  234. package/dist/chunk-3EUKJEQ3.js +0 -77
  235. package/dist/chunk-3EUKJEQ3.js.map +0 -1
  236. package/dist/chunk-3IR2GEMJ.cjs.map +0 -1
  237. package/dist/chunk-3QRBXYT5.cjs.map +0 -1
  238. package/dist/chunk-454I6GDF.js.map +0 -1
  239. package/dist/chunk-4RBAJVEC.cjs.map +0 -1
  240. package/dist/chunk-6NRFUHMS.js.map +0 -1
  241. package/dist/chunk-6ZR4QC3O.cjs +0 -12
  242. package/dist/chunk-73KASJGO.cjs +0 -52
  243. package/dist/chunk-73KASJGO.cjs.map +0 -1
  244. package/dist/chunk-BF3ZDEUE.cjs +0 -773
  245. package/dist/chunk-BF3ZDEUE.cjs.map +0 -1
  246. package/dist/chunk-C4C4Q7A6.js.map +0 -1
  247. package/dist/chunk-CEF2QOTO.js.map +0 -1
  248. package/dist/chunk-CFNT3ITG.cjs.map +0 -1
  249. package/dist/chunk-CWFPJ3RC.js.map +0 -1
  250. package/dist/chunk-D3EWZ67S.cjs.map +0 -1
  251. package/dist/chunk-DJYRRDHA.js.map +0 -1
  252. package/dist/chunk-EF3Z645U.cjs.map +0 -1
  253. package/dist/chunk-FDN43KXV.cjs.map +0 -1
  254. package/dist/chunk-GYVBEZAO.js.map +0 -1
  255. package/dist/chunk-HTGDWIDE.cjs +0 -89
  256. package/dist/chunk-HTGDWIDE.cjs.map +0 -1
  257. package/dist/chunk-I4W7MKVG.cjs.map +0 -1
  258. package/dist/chunk-IZ4PCL47.js.map +0 -1
  259. package/dist/chunk-JHOBXD7O.js.map +0 -1
  260. package/dist/chunk-JIEJCTDS.cjs.map +0 -1
  261. package/dist/chunk-KTIEB7VH.cjs.map +0 -1
  262. package/dist/chunk-KY5SDVA7.cjs.map +0 -1
  263. package/dist/chunk-LM2IC4ZJ.cjs.map +0 -1
  264. package/dist/chunk-MBLXCV2Y.cjs.map +0 -1
  265. package/dist/chunk-NG5N7R45.cjs.map +0 -1
  266. package/dist/chunk-OIE2UPVG.cjs.map +0 -1
  267. package/dist/chunk-OS6KS3HV.js.map +0 -1
  268. package/dist/chunk-PIHXFF73.js.map +0 -1
  269. package/dist/chunk-PRMKPFN5.js.map +0 -1
  270. package/dist/chunk-PYD3UCDU.js.map +0 -1
  271. package/dist/chunk-QBYTJSAY.js.map +0 -1
  272. package/dist/chunk-SPT5JMME.js +0 -610
  273. package/dist/chunk-SPT5JMME.js.map +0 -1
  274. package/dist/chunk-SST7XDY6.cjs +0 -624
  275. package/dist/chunk-SST7XDY6.cjs.map +0 -1
  276. package/dist/chunk-TQOYM4LN.js.map +0 -1
  277. package/dist/chunk-UPDMJEW6.js.map +0 -1
  278. package/dist/chunk-WLP6TKFB.js.map +0 -1
  279. package/dist/chunk-WWVV44DY.cjs.map +0 -1
  280. package/dist/chunk-XKNAK27R.js.map +0 -1
  281. package/dist/chunk-XVUJY72M.js.map +0 -1
  282. package/dist/chunk-YCV72E6L.js.map +0 -1
  283. package/dist/chunk-YW7GHMF4.cjs.map +0 -1
  284. package/dist/chunk-ZFWNO3GE.cjs.map +0 -1
@@ -1,68 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZFWNO3GE_cjs = require('./chunk-ZFWNO3GE.cjs');
4
- var zod = require('zod');
5
-
6
- var SEARCHABLE_FIELD_KEY = "_searchableField";
7
- var DEFAULT_SEARCHABLE_LANGUAGE = "english";
8
- var SEARCHABLE_WRAPPER_TYPES = /* @__PURE__ */ new Set([
9
- "optional",
10
- "nullable",
11
- "default",
12
- "prefault",
13
- "catch",
14
- "readonly",
15
- "nonoptional",
16
- "success"
17
- ]);
18
- function readSearchableMetadata(value) {
19
- if (typeof value !== "object" || value === null) {
20
- return void 0;
21
- }
22
- const language = value.language;
23
- return typeof language === "string" ? { language } : void 0;
24
- }
25
- function getSearchableMetadataFromSchemaMeta(schema) {
26
- const meta = schema.meta();
27
- return readSearchableMetadata(meta?.[SEARCHABLE_FIELD_KEY]);
28
- }
29
- function searchable(options = {}) {
30
- const language = options.language ?? DEFAULT_SEARCHABLE_LANGUAGE;
31
- if (language.length === 0) {
32
- throw new Error("searchable() language must be a non-empty string");
33
- }
34
- const metadata = { language };
35
- const schema = zod.z.string().meta({
36
- [SEARCHABLE_FIELD_KEY]: metadata
37
- });
38
- return Object.assign(schema, {
39
- [SEARCHABLE_FIELD_KEY]: metadata
40
- });
41
- }
42
- function isSearchableSchema(value) {
43
- if (typeof value !== "object" || value === null) return false;
44
- if (!(SEARCHABLE_FIELD_KEY in value)) return false;
45
- return readSearchableMetadata(
46
- value[SEARCHABLE_FIELD_KEY]
47
- ) !== void 0;
48
- }
49
- function getSearchableMetadata(schema) {
50
- if (isSearchableSchema(schema)) {
51
- return schema[SEARCHABLE_FIELD_KEY];
52
- }
53
- const directMetadata = getSearchableMetadataFromSchemaMeta(schema);
54
- if (directMetadata !== void 0) {
55
- return directMetadata;
56
- }
57
- const def = schema.def;
58
- if (SEARCHABLE_WRAPPER_TYPES.has(schema.type) && def.innerType !== void 0) {
59
- return getSearchableMetadata(def.innerType);
60
- }
61
- if (schema.type === "pipe") {
62
- return (def.in === void 0 ? void 0 : getSearchableMetadata(def.in)) ?? (def.out === void 0 ? void 0 : getSearchableMetadata(def.out));
63
- }
64
- return void 0;
65
- }
3
+ var chunkH7YNSMA7_cjs = require('./chunk-H7YNSMA7.cjs');
66
4
 
67
5
  // src/query/schema-introspector.ts
68
6
  var SUPPORTED_SCHEMA_TYPES = [
@@ -199,17 +137,17 @@ function createSchemaIntrospector(nodeKinds, edgeKinds) {
199
137
  };
200
138
  }
201
139
  function resolveFieldTypeInfo(schema) {
202
- const embeddingDimensions = chunkZFWNO3GE_cjs.getEmbeddingDimensions(schema);
140
+ const embeddingDimensions = chunkH7YNSMA7_cjs.getEmbeddingDimensions(schema);
203
141
  if (embeddingDimensions !== void 0) {
204
142
  return { valueType: "embedding", dimensions: embeddingDimensions };
205
143
  }
206
- const searchableMetadata = getSearchableMetadata(schema);
144
+ const searchableMetadata = chunkH7YNSMA7_cjs.getSearchableMetadata(schema);
207
145
  const searchableStringSchema = searchableMetadata === void 0 ? void 0 : unwrapSearchableStringSchema(schema);
208
146
  if (searchableMetadata !== void 0 && searchableStringSchema !== void 0) {
209
147
  return { valueType: "string", searchable: searchableMetadata };
210
148
  }
211
149
  const unwrapped = unwrapSchema(schema);
212
- const unwrappedEmbeddingDimensions = chunkZFWNO3GE_cjs.getEmbeddingDimensions(unwrapped);
150
+ const unwrappedEmbeddingDimensions = chunkH7YNSMA7_cjs.getEmbeddingDimensions(unwrapped);
213
151
  if (unwrappedEmbeddingDimensions !== void 0) {
214
152
  return { valueType: "embedding", dimensions: unwrappedEmbeddingDimensions };
215
153
  }
@@ -418,10 +356,6 @@ function unwrapSchema(schema) {
418
356
  return schema;
419
357
  }
420
358
 
421
- exports.DEFAULT_SEARCHABLE_LANGUAGE = DEFAULT_SEARCHABLE_LANGUAGE;
422
359
  exports.createSchemaIntrospector = createSchemaIntrospector;
423
- exports.getSearchableMetadata = getSearchableMetadata;
424
- exports.isSearchableSchema = isSearchableSchema;
425
- exports.searchable = searchable;
426
- //# sourceMappingURL=chunk-EF3Z645U.cjs.map
427
- //# sourceMappingURL=chunk-EF3Z645U.cjs.map
360
+ //# sourceMappingURL=chunk-UMDVATGY.cjs.map
361
+ //# sourceMappingURL=chunk-UMDVATGY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/query/schema-introspector.ts"],"names":["getEmbeddingDimensions","getSearchableMetadata","shape"],"mappings":"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","file":"chunk-UMDVATGY.cjs","sourcesContent":["import { type z } from \"zod\";\n\nimport { getEmbeddingDimensions } from \"../core/embedding\";\nimport {\n getSearchableMetadata,\n type SearchableMetadata,\n} from \"../core/searchable\";\nimport { type ValueType } from \"./ast\";\n\nconst SUPPORTED_SCHEMA_TYPES = [\n \"string\",\n \"number\",\n \"nan\",\n \"boolean\",\n \"date\",\n \"literal\",\n \"enum\",\n \"nativeEnum\",\n \"array\",\n \"tuple\",\n \"object\",\n \"record\",\n \"union\",\n \"discriminatedUnion\",\n \"intersection\",\n] as const;\n\ntype SupportedSchemaType = (typeof SUPPORTED_SCHEMA_TYPES)[number];\n\n// Use Set<string> to allow checking arbitrary strings while maintaining type safety\nconst SUPPORTED_SCHEMA_TYPE_SET: ReadonlySet<string> = new Set(\n SUPPORTED_SCHEMA_TYPES,\n);\n\nfunction isSupportedSchemaType(type: string): type is SupportedSchemaType {\n return SUPPORTED_SCHEMA_TYPE_SET.has(type);\n}\n\nexport type FieldTypeInfo = Readonly<{\n valueType: ValueType;\n elementType?: ValueType | undefined;\n elementTypeInfo?: FieldTypeInfo | undefined;\n shape?: Readonly<Record<string, FieldTypeInfo>> | undefined;\n recordValueType?: FieldTypeInfo | undefined;\n /** For embedding types: the number of dimensions */\n dimensions?: number | undefined;\n /** For fulltext-searchable string types: field-level metadata */\n searchable?: SearchableMetadata | undefined;\n}>;\n\nexport type SchemaIntrospector = Readonly<{\n getFieldTypeInfo: (\n kindName: string,\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n getSharedFieldTypeInfo: (\n kindNames: readonly string[],\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n getEdgeFieldTypeInfo: (\n edgeKindName: string,\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n getSharedEdgeFieldTypeInfo: (\n edgeKindNames: readonly string[],\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n /**\n * True iff every kind in `kindNames` has at least one `searchable()`\n * field. For polymorphic aliases, `$fulltext` is available only when\n * every resolved kind has searchable content — otherwise `.matches()`\n * would silently miss some kinds.\n */\n hasSearchableField: (kindNames: readonly string[]) => boolean;\n}>;\n\nfunction sharedCacheKey(\n kindNames: readonly string[],\n fieldName: string,\n): string {\n return `${[...kindNames].toSorted().join(\"|\")}|${fieldName}`;\n}\n\nexport function createSchemaIntrospector(\n nodeKinds: ReadonlyMap<string, { schema: z.ZodType }>,\n edgeKinds?: ReadonlyMap<string, { schema: z.ZodType }>,\n): SchemaIntrospector {\n const nodeShapeCache = new Map<\n string,\n Readonly<Record<string, FieldTypeInfo>>\n >();\n const edgeShapeCache = new Map<\n string,\n Readonly<Record<string, FieldTypeInfo>>\n >();\n // Proxy-based field accessors trigger a fresh merge on every property\n // read during a `whereNode(n => ...)` callback. For polymorphic\n // aliases with N kinds and M field accesses, that is O(N*M) per\n // compile; caching collapses it to O(1) after the first access.\n const sharedFieldTypeInfoCache = new Map<string, FieldTypeInfo | undefined>();\n const sharedEdgeFieldTypeInfoCache = new Map<\n string,\n FieldTypeInfo | undefined\n >();\n const searchableCache = new Map<string, boolean>();\n\n function getFieldTypeInfo(\n kindName: string,\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const shape = getShapeForKind(kindName);\n return shape?.[fieldName];\n }\n\n function getSharedFieldTypeInfo(\n kindNames: readonly string[],\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const cacheKey = sharedCacheKey(kindNames, fieldName);\n if (sharedFieldTypeInfoCache.has(cacheKey)) {\n return sharedFieldTypeInfoCache.get(cacheKey);\n }\n\n const infos = kindNames\n .map((kindName) => getFieldTypeInfo(kindName, fieldName))\n .filter((info): info is FieldTypeInfo => info !== undefined);\n\n const merged =\n infos.length !== kindNames.length || infos.length === 0 ?\n undefined\n : mergeFieldTypeInfos(infos);\n sharedFieldTypeInfoCache.set(cacheKey, merged);\n return merged;\n }\n\n function getEdgeFieldTypeInfo(\n edgeKindName: string,\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const shape = getShapeForEdgeKind(edgeKindName);\n return shape?.[fieldName];\n }\n\n function getSharedEdgeFieldTypeInfo(\n edgeKindNames: readonly string[],\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const cacheKey = sharedCacheKey(edgeKindNames, fieldName);\n if (sharedEdgeFieldTypeInfoCache.has(cacheKey)) {\n return sharedEdgeFieldTypeInfoCache.get(cacheKey);\n }\n\n const infos = edgeKindNames\n .map((kindName) => getEdgeFieldTypeInfo(kindName, fieldName))\n .filter((info): info is FieldTypeInfo => info !== undefined);\n\n const merged =\n infos.length !== edgeKindNames.length || infos.length === 0 ?\n undefined\n : mergeFieldTypeInfos(infos);\n sharedEdgeFieldTypeInfoCache.set(cacheKey, merged);\n return merged;\n }\n\n function getShapeForKind(\n kindName: string,\n ): Readonly<Record<string, FieldTypeInfo>> | undefined {\n const cached = nodeShapeCache.get(kindName);\n if (cached) {\n return cached;\n }\n\n const kind = nodeKinds.get(kindName);\n if (!kind) {\n return undefined;\n }\n\n const schema = kind.schema;\n if (schema.type !== \"object\") {\n return undefined;\n }\n\n const shape = (schema.def as { shape?: Record<string, z.ZodType> }).shape;\n if (!shape) {\n return undefined;\n }\n\n const entries = Object.entries(shape).map(\n ([key, value]) => [key, resolveFieldTypeInfo(value)] as const,\n );\n const resolved = Object.freeze(Object.fromEntries(entries));\n nodeShapeCache.set(kindName, resolved);\n return resolved;\n }\n\n function getShapeForEdgeKind(\n edgeKindName: string,\n ): Readonly<Record<string, FieldTypeInfo>> | undefined {\n if (!edgeKinds) {\n return undefined;\n }\n\n const cached = edgeShapeCache.get(edgeKindName);\n if (cached) {\n return cached;\n }\n\n const kind = edgeKinds.get(edgeKindName);\n if (!kind) {\n return undefined;\n }\n\n const schema = kind.schema;\n if (schema.type !== \"object\") {\n return undefined;\n }\n\n const shape = (schema.def as { shape?: Record<string, z.ZodType> }).shape;\n if (!shape) {\n return undefined;\n }\n\n const entries = Object.entries(shape).map(\n ([key, value]) => [key, resolveFieldTypeInfo(value)] as const,\n );\n const resolved = Object.freeze(Object.fromEntries(entries));\n edgeShapeCache.set(edgeKindName, resolved);\n return resolved;\n }\n\n function hasSearchableField(kindNames: readonly string[]): boolean {\n const cacheKey = [...kindNames].toSorted().join(\"|\");\n const cached = searchableCache.get(cacheKey);\n if (cached !== undefined) return cached;\n\n const result =\n kindNames.length > 0 &&\n kindNames.every((kindName) => {\n const shape = getShapeForKind(kindName);\n if (!shape) return false;\n return Object.values(shape).some(\n (info) => info.searchable !== undefined,\n );\n });\n searchableCache.set(cacheKey, result);\n return result;\n }\n\n return {\n getFieldTypeInfo,\n getSharedFieldTypeInfo,\n getEdgeFieldTypeInfo,\n getSharedEdgeFieldTypeInfo,\n hasSearchableField,\n };\n}\n\nfunction resolveFieldTypeInfo(schema: z.ZodType): FieldTypeInfo {\n // Check for embedding type before unwrapping\n // (embedding metadata is attached to the outer schema)\n const embeddingDimensions = getEmbeddingDimensions(schema);\n if (embeddingDimensions !== undefined) {\n return { valueType: \"embedding\", dimensions: embeddingDimensions };\n }\n\n const searchableMetadata = getSearchableMetadata(schema);\n const searchableStringSchema =\n searchableMetadata === undefined ? undefined : (\n unwrapSearchableStringSchema(schema)\n );\n if (\n searchableMetadata !== undefined &&\n searchableStringSchema !== undefined\n ) {\n return { valueType: \"string\", searchable: searchableMetadata };\n }\n\n const unwrapped = unwrapSchema(schema);\n\n // Check embedding on unwrapped schema too (for z.optional(embedding(...)))\n const unwrappedEmbeddingDimensions = getEmbeddingDimensions(unwrapped);\n if (unwrappedEmbeddingDimensions !== undefined) {\n return { valueType: \"embedding\", dimensions: unwrappedEmbeddingDimensions };\n }\n\n // Cast to string to detach from Zod's internal type union,\n // then let the type guard narrow to our SupportedSchemaType.\n const rawType = unwrapped.type as string;\n\n if (!isSupportedSchemaType(rawType)) {\n return { valueType: \"unknown\" };\n }\n\n // After the type guard, rawType is SupportedSchemaType.\n const schemaType = rawType;\n\n // Handle each schema type individually\n if (schemaType === \"string\") {\n return { valueType: \"string\" };\n }\n if (schemaType === \"number\" || schemaType === \"nan\") {\n return { valueType: \"number\" };\n }\n if (schemaType === \"boolean\") {\n return { valueType: \"boolean\" };\n }\n if (schemaType === \"date\") {\n return { valueType: \"date\" };\n }\n if (schemaType === \"literal\") {\n const literalValue = (unwrapped.def as { value?: unknown }).value;\n return resolveLiteralTypeInfo(literalValue);\n }\n if (schemaType === \"enum\") {\n return { valueType: \"string\" };\n }\n if (schemaType === \"nativeEnum\") {\n const values = Object.values(\n (unwrapped.def as { values?: Record<string, unknown> }).values ?? {},\n );\n const valueType = resolveEnumValueType(values);\n return { valueType };\n }\n if (schemaType === \"array\") {\n const elementSchema = (unwrapped.def as { element?: z.ZodType }).element;\n const elementInfo =\n elementSchema ? resolveFieldTypeInfo(elementSchema) : undefined;\n return {\n valueType: \"array\",\n elementType: elementInfo?.valueType,\n elementTypeInfo: elementInfo,\n };\n }\n if (schemaType === \"tuple\") {\n return {\n valueType: \"array\",\n elementType: \"unknown\",\n };\n }\n if (schemaType === \"object\") {\n const shape = (unwrapped.def as { shape?: Record<string, z.ZodType> })\n .shape;\n if (!shape) {\n return { valueType: \"object\" };\n }\n const entries = Object.entries(shape).map(\n ([key, value]) => [key, resolveFieldTypeInfo(value)] as const,\n );\n const resolved = Object.freeze(Object.fromEntries(entries));\n return {\n valueType: \"object\",\n shape: resolved,\n };\n }\n if (schemaType === \"record\") {\n const valueSchema = (unwrapped.def as { valueType?: z.ZodType }).valueType;\n const valueInfo =\n valueSchema ? resolveFieldTypeInfo(valueSchema) : undefined;\n return {\n valueType: \"object\",\n recordValueType: valueInfo,\n };\n }\n if (schemaType === \"union\" || schemaType === \"discriminatedUnion\") {\n const unionOptions = (unwrapped.def as { options?: readonly z.ZodType[] })\n .options;\n if (!unionOptions || unionOptions.length === 0) {\n return { valueType: \"unknown\" };\n }\n const optionInfos = unionOptions.map((option) =>\n resolveFieldTypeInfo(option),\n );\n return mergeFieldTypeInfos(optionInfos) ?? { valueType: \"unknown\" };\n }\n\n // Only \"intersection\" remains after all other cases\n const left = (unwrapped.def as { left?: z.ZodType }).left;\n const right = (unwrapped.def as { right?: z.ZodType }).right;\n if (!left || !right) {\n return { valueType: \"unknown\" };\n }\n const leftInfo = resolveFieldTypeInfo(left);\n const rightInfo = resolveFieldTypeInfo(right);\n return mergeFieldTypeInfos([leftInfo, rightInfo]) ?? { valueType: \"unknown\" };\n}\n\nfunction resolveLiteralTypeInfo(value: unknown): FieldTypeInfo {\n if (value instanceof Date) {\n return { valueType: \"date\" };\n }\n if (typeof value === \"string\") {\n return { valueType: \"string\" };\n }\n if (typeof value === \"number\") {\n return { valueType: \"number\" };\n }\n if (typeof value === \"boolean\") {\n return { valueType: \"boolean\" };\n }\n return { valueType: \"unknown\" };\n}\n\nfunction resolveEnumValueType(values: readonly unknown[]): ValueType {\n const uniqueTypes = new Set(values.map((value) => typeof value));\n if (uniqueTypes.size !== 1) {\n return \"unknown\";\n }\n\n const type = uniqueTypes.values().next().value;\n if (type === \"string\") {\n return \"string\";\n }\n if (type === \"number\") {\n return \"number\";\n }\n if (type === \"boolean\") {\n return \"boolean\";\n }\n return \"unknown\";\n}\n\nfunction mergeFieldTypeInfos(\n infos: readonly FieldTypeInfo[],\n): FieldTypeInfo | undefined {\n const [first, ...rest] = infos;\n if (!first) {\n return undefined;\n }\n\n const sameValueType = rest.every(\n (info) => info.valueType === first.valueType,\n );\n if (!sameValueType) {\n return undefined;\n }\n\n if (first.valueType === \"array\") {\n const elementType =\n rest.every((info) => info.elementType === first.elementType) ?\n first.elementType\n : \"unknown\";\n const elementTypeInfo =\n (\n rest.every(\n (info) =>\n info.elementTypeInfo?.valueType ===\n first.elementTypeInfo?.valueType,\n )\n ) ?\n first.elementTypeInfo\n : undefined;\n return {\n valueType: \"array\",\n elementType,\n elementTypeInfo,\n };\n }\n\n if (first.valueType === \"object\") {\n const shapes = infos\n .map((info) => info.shape)\n .filter(\n (shape): shape is Readonly<Record<string, FieldTypeInfo>> =>\n shape !== undefined,\n );\n\n const shape =\n shapes.length === infos.length ? intersectShapes(shapes) : undefined;\n\n const recordValueType =\n (\n rest.every(\n (info) =>\n info.recordValueType?.valueType ===\n first.recordValueType?.valueType,\n )\n ) ?\n first.recordValueType\n : undefined;\n\n return {\n valueType: \"object\",\n shape,\n recordValueType,\n };\n }\n\n // Strings: only mark the merged result as searchable if every kind\n // in the polymorphic alias declares the field as searchable. A field\n // that isn't uniformly searchable would silently search only some\n // kinds via `.matches()`.\n if (first.valueType === \"string\") {\n const allSearchable =\n first.searchable !== undefined &&\n rest.every((info) => info.searchable !== undefined);\n return allSearchable ?\n { valueType: \"string\", searchable: first.searchable }\n : { valueType: \"string\" };\n }\n\n return first;\n}\n\nfunction intersectShapes(\n shapes: readonly Readonly<Record<string, FieldTypeInfo>>[],\n): Readonly<Record<string, FieldTypeInfo>> {\n const [first, ...rest] = shapes;\n if (!first) {\n return Object.freeze({});\n }\n\n const keys = Object.keys(first).filter((key) =>\n rest.every((shape) => key in shape),\n );\n\n const entries = keys\n .map((key) => {\n const infos = shapes.map((shape) => shape[key]!);\n const merged = mergeFieldTypeInfos(infos);\n if (!merged) {\n return;\n }\n return [key, merged] as const;\n })\n .filter(\n (entry): entry is readonly [string, FieldTypeInfo] => entry !== undefined,\n );\n\n return Object.freeze(Object.fromEntries(entries));\n}\n\nfunction unwrapSearchableStringSchema(\n schema: z.ZodType,\n): z.ZodType | undefined {\n const type = schema.type;\n const def = schema.def as {\n innerType?: z.ZodType;\n in?: z.ZodType;\n out?: z.ZodType;\n };\n\n if (\n (type === \"optional\" ||\n type === \"nullable\" ||\n type === \"default\" ||\n type === \"prefault\" ||\n type === \"catch\" ||\n type === \"readonly\" ||\n type === \"nonoptional\" ||\n type === \"success\") &&\n def.innerType\n ) {\n return unwrapSearchableStringSchema(def.innerType);\n }\n\n if (type === \"pipe\") {\n return (\n (def.in === undefined ?\n undefined\n : unwrapSearchableStringSchema(def.in)) ??\n (def.out === undefined ?\n undefined\n : unwrapSearchableStringSchema(def.out))\n );\n }\n\n const unwrapped = unwrapSchema(schema);\n return unwrapped.type === \"string\" ? unwrapped : undefined;\n}\n\nfunction unwrapSchema(schema: z.ZodType): z.ZodType {\n const type = schema.type;\n const def = schema.def as {\n innerType?: z.ZodType;\n out?: z.ZodType;\n };\n\n if (\n (type === \"optional\" ||\n type === \"nullable\" ||\n type === \"default\" ||\n type === \"prefault\" ||\n type === \"catch\" ||\n type === \"readonly\" ||\n type === \"nonoptional\" ||\n type === \"success\") &&\n def.innerType\n ) {\n return unwrapSchema(def.innerType);\n }\n\n if (type === \"pipe\" && def.out) {\n return unwrapSchema(def.out);\n }\n\n return schema;\n}\n"]}
@@ -0,0 +1,18 @@
1
+ // src/schema/canonical.ts
2
+ function sortedReplacer(_key, value) {
3
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
4
+ const sorted = {};
5
+ for (const key of Object.keys(value).toSorted()) {
6
+ sorted[key] = value[key];
7
+ }
8
+ return sorted;
9
+ }
10
+ return value;
11
+ }
12
+ function canonicalEqual(a, b) {
13
+ return JSON.stringify(a, sortedReplacer) === JSON.stringify(b, sortedReplacer);
14
+ }
15
+
16
+ export { canonicalEqual, sortedReplacer };
17
+ //# sourceMappingURL=chunk-UR7W5YQK.js.map
18
+ //# sourceMappingURL=chunk-UR7W5YQK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema/canonical.ts"],"names":[],"mappings":";AAiBO,SAAS,cAAA,CAAe,MAAc,KAAA,EAAyB;AACpE,EAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxE,IAAA,MAAM,SAAkC,EAAC;AACzC,IAAA,KAAA,MAAW,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,UAAS,EAAG;AAC/C,MAAA,MAAA,CAAO,GAAG,CAAA,GAAK,KAAA,CAAkC,GAAG,CAAA;AAAA,IACtD;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAaO,SAAS,cAAA,CAAe,GAAY,CAAA,EAAqB;AAC9D,EAAA,OACE,IAAA,CAAK,UAAU,CAAA,EAAG,cAAc,MAAM,IAAA,CAAK,SAAA,CAAU,GAAG,cAAc,CAAA;AAE1E","file":"chunk-UR7W5YQK.js","sourcesContent":["/**\n * Canonical-form helpers for deterministic schema serialization.\n *\n * Used by both content-hashing (`computeSchemaHash`) and structural diffing\n * (`computeSchemaDiff`) to ensure that semantically-equivalent objects with\n * differently-ordered keys produce identical canonical strings.\n */\n\n/**\n * `JSON.stringify` replacer that sorts object keys recursively.\n *\n * Apply via `JSON.stringify(value, sortedReplacer)` to obtain output in\n * which sibling keys at every depth appear in lexicographic order.\n *\n * Arrays are passed through unchanged — array order is semantically\n * meaningful and must not be normalized.\n */\nexport function sortedReplacer(_key: string, value: unknown): unknown {\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n const sorted: Record<string, unknown> = {};\n for (const key of Object.keys(value).toSorted()) {\n sorted[key] = (value as Record<string, unknown>)[key];\n }\n return sorted;\n }\n return value;\n}\n\n/**\n * Compare two values for canonical-form equality.\n *\n * Returns `true` when both values produce identical JSON under `sortedReplacer`\n * — i.e., they have the same JSON structure regardless of object key order.\n * Used by diff machinery to detect semantic changes in JSON-shaped fields.\n *\n * Note: callers must handle `undefined` themselves — `JSON.stringify(undefined)`\n * returns `undefined`, so two `undefined` inputs would compare equal here, which\n * may or may not be the desired semantics depending on context.\n */\nexport function canonicalEqual(a: unknown, b: unknown): boolean {\n return (\n JSON.stringify(a, sortedReplacer) === JSON.stringify(b, sortedReplacer)\n );\n}\n"]}
@@ -0,0 +1,31 @@
1
+ // src/query/sql-intent.ts
2
+ function asCompiledRowsSql(query) {
3
+ return query;
4
+ }
5
+ function asCompiledSelectSql(query) {
6
+ return asCompiledRowsSql(query);
7
+ }
8
+ function asCompiledStatementSql(query) {
9
+ return query;
10
+ }
11
+ var forceCustomPlanQueries = /* @__PURE__ */ new WeakSet();
12
+ function markForceCustomPlan(query) {
13
+ forceCustomPlanQueries.add(query);
14
+ }
15
+ function shouldForceCustomPlan(query) {
16
+ return forceCustomPlanQueries.has(query);
17
+ }
18
+ var annIndexScanQueries = /* @__PURE__ */ new WeakMap();
19
+ function markAnnIndexScan(query, indexTypes) {
20
+ annIndexScanQueries.set(query, indexTypes);
21
+ }
22
+ function annIndexScanTypes(query) {
23
+ return annIndexScanQueries.get(query);
24
+ }
25
+ function isRawExecutable(query) {
26
+ return !shouldForceCustomPlan(query) && annIndexScanTypes(query) === void 0;
27
+ }
28
+
29
+ export { annIndexScanTypes, asCompiledRowsSql, asCompiledSelectSql, asCompiledStatementSql, isRawExecutable, markAnnIndexScan, markForceCustomPlan, shouldForceCustomPlan };
30
+ //# sourceMappingURL=chunk-UT3S4SEN.js.map
31
+ //# sourceMappingURL=chunk-UT3S4SEN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/query/sql-intent.ts"],"names":[],"mappings":";AAaO,SAAS,kBAAkB,KAAA,EAA6B;AAC7D,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,oBAAoB,KAAA,EAA+B;AACjE,EAAA,OAAO,kBAAkB,KAAK,CAAA;AAChC;AAEO,SAAS,uBAAuB,KAAA,EAAkC;AACvE,EAAA,OAAO,KAAA;AACT;AAYA,IAAM,sBAAA,uBAA6B,OAAA,EAAa;AAEzC,SAAS,oBAAoB,KAAA,EAAkB;AACpD,EAAA,sBAAA,CAAuB,IAAI,KAAK,CAAA;AAClC;AAEO,SAAS,sBAAsB,KAAA,EAAqB;AACzD,EAAA,OAAO,sBAAA,CAAuB,IAAI,KAAK,CAAA;AACzC;AAaA,IAAM,mBAAA,uBAA0B,OAAA,EAAgC;AAEzD,SAAS,gBAAA,CACd,OACA,UAAA,EACM;AACN,EAAA,mBAAA,CAAoB,GAAA,CAAI,OAAO,UAAU,CAAA;AAC3C;AAEO,SAAS,kBAAkB,KAAA,EAA2C;AAC3E,EAAA,OAAO,mBAAA,CAAoB,IAAI,KAAK,CAAA;AACtC;AAYO,SAAS,gBAAgB,KAAA,EAAqB;AACnD,EAAA,OACE,CAAC,qBAAA,CAAsB,KAAK,CAAA,IAAK,iBAAA,CAAkB,KAAK,CAAA,KAAM,MAAA;AAElE","file":"chunk-UT3S4SEN.js","sourcesContent":["import { type SQL } from \"drizzle-orm\";\n\ndeclare const SqlIntentBrand: unique symbol;\n\nexport type SqlIntent = \"rows\" | \"statement\";\n\nexport type IntentSql<I extends SqlIntent> = SQL &\n Readonly<{ [SqlIntentBrand]: I }>;\n\nexport type CompiledRowsSql = IntentSql<\"rows\">;\nexport type CompiledSelectSql = CompiledRowsSql;\nexport type CompiledStatementSql = IntentSql<\"statement\">;\n\nexport function asCompiledRowsSql(query: SQL): CompiledRowsSql {\n return query as CompiledRowsSql;\n}\n\nexport function asCompiledSelectSql(query: SQL): CompiledSelectSql {\n return asCompiledRowsSql(query);\n}\n\nexport function asCompiledStatementSql(query: SQL): CompiledStatementSql {\n return query as CompiledStatementSql;\n}\n\n/**\n * Statements whose good plan depends on the bound parameter values —\n * e.g. an id-array membership filter where the array cardinality varies\n * per call. PostgreSQL's prepared-statement machinery switches to a\n * generic (parameter-blind) plan after five executions, which for these\n * statements is catastrophically wrong (measured 21ms -> 310ms on the\n * subgraph edge fetch). Marked statements are executed unnamed so every\n * call is planned against the actual parameters; the re-parse cost is\n * ~1ms, the generic-plan cliff it avoids is 10-300ms.\n */\nconst forceCustomPlanQueries = new WeakSet<SQL>();\n\nexport function markForceCustomPlan(query: SQL): void {\n forceCustomPlanQueries.add(query);\n}\n\nexport function shouldForceCustomPlan(query: SQL): boolean {\n return forceCustomPlanQueries.has(query);\n}\n\n/**\n * Statements whose plan includes an engine ANN index scan (the inline\n * `.similarTo(..., { approximate: true })` branch). The PostgreSQL\n * backend wraps their execution with the same pgvector GUC overrides\n * the search facade applies (`hnsw.iterative_scan = strict_order` /\n * `ivfflat.iterative_scan = relaxed_order` on pgvector >= 0.8), so a\n * filtered approximate query keeps scanning past the default ef_search\n * frontier instead of starving. Carries the slot index types so the\n * backend knows which GUCs apply. Backends without GUC semantics\n * ignore the brand.\n */\nconst annIndexScanQueries = new WeakMap<SQL, readonly string[]>();\n\nexport function markAnnIndexScan(\n query: SQL,\n indexTypes: readonly string[],\n): void {\n annIndexScanQueries.set(query, indexTypes);\n}\n\nexport function annIndexScanTypes(query: SQL): readonly string[] | undefined {\n return annIndexScanQueries.get(query);\n}\n\n/**\n * Whether a compiled statement can be run as raw text (`executeRaw`) without\n * losing execution semantics. Both brands above ride on the SQL *object* and\n * are honored only by `backend.execute`: the force-custom-plan flag makes\n * PostgreSQL re-plan against the actual parameters (opposed to reusing a\n * cached statement), and the ANN-scan brand drives the pgvector iterative-scan\n * GUC wrapper. A statement carrying either must not be flattened to text and\n * cached — callers fall back to `backend.execute`. Keeping this predicate\n * beside the brands means a future brand updates one place, not every caller.\n */\nexport function isRawExecutable(query: SQL): boolean {\n return (\n !shouldForceCustomPlan(query) && annIndexScanTypes(query) === undefined\n );\n}\n"]}
@@ -1,9 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkEF3Z645U_cjs = require('./chunk-EF3Z645U.cjs');
4
- var chunk73KASJGO_cjs = require('./chunk-73KASJGO.cjs');
5
- var chunk3E7SNSIA_cjs = require('./chunk-3E7SNSIA.cjs');
6
- var chunkFLRCVI2G_cjs = require('./chunk-FLRCVI2G.cjs');
3
+ var chunkTEDRJXOG_cjs = require('./chunk-TEDRJXOG.cjs');
4
+ var chunkD7ZEOS56_cjs = require('./chunk-D7ZEOS56.cjs');
5
+ var chunkUMDVATGY_cjs = require('./chunk-UMDVATGY.cjs');
6
+ var chunk7YSP4V4R_cjs = require('./chunk-7YSP4V4R.cjs');
7
+ var chunkSJDMVITW_cjs = require('./chunk-SJDMVITW.cjs');
8
+ var chunkTDXIBCGY_cjs = require('./chunk-TDXIBCGY.cjs');
7
9
 
8
10
  // src/system-fields.ts
9
11
  var NODE_META_KEYS = [
@@ -23,40 +25,65 @@ var EDGE_META_KEYS = [
23
25
  ];
24
26
 
25
27
  // src/indexes/define-index.ts
28
+ var NODE_KEY_SYSTEM_COLUMNS = new Set(
29
+ [...createSystemColumnMapForNode().values()].map((entry) => entry.column)
30
+ );
26
31
  function defineNodeIndex(node, config) {
27
32
  const scope = config.scope ?? "graphAndKind";
28
33
  const unique = config.unique ?? false;
29
- const schemaIntrospector = chunkEF3Z645U_cjs.createSchemaIntrospector(
34
+ const keySystemColumns = normalizeKeySystemColumnsOrThrow(
35
+ config.keySystemColumns ?? [],
36
+ scope,
37
+ unique
38
+ );
39
+ const schemaIntrospector = chunkUMDVATGY_cjs.createSchemaIntrospector(
30
40
  /* @__PURE__ */ new Map([[node.kind, { schema: node.schema }]])
31
41
  );
32
42
  const { pointers: fields, valueTypes: fieldValueTypes } = normalizeNodeIndexFieldsOrThrow(
33
43
  node,
34
- config.fields,
44
+ config.fields ?? [],
35
45
  schemaIntrospector,
36
46
  "fields",
37
- { allowEmpty: false }
47
+ // GIN containment indexes exist precisely for array/object fields,
48
+ // which the btree guard otherwise rejects.
49
+ { allowJsonFields: config.method === "gin" }
38
50
  );
39
51
  const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } = normalizeNodeIndexFieldsOrThrow(
40
52
  node,
41
53
  config.coveringFields ?? [],
42
54
  schemaIntrospector,
43
55
  "coveringFields",
44
- { allowEmpty: true }
56
+ {}
45
57
  );
46
58
  assertNoOverlap(fields, coveringFields, "fields", "coveringFields");
59
+ if (fields.length === 0 && coveringFields.length === 0 && keySystemColumns.length === 0) {
60
+ throw new Error(
61
+ "Index must declare at least one of fields, coveringFields, or keySystemColumns"
62
+ );
63
+ }
47
64
  const where = normalizeWhereInput(
48
65
  config.where,
49
66
  () => createNodeWhereBuilder(node, schemaIntrospector)
50
67
  );
51
- const name = config.name ?? generateDefaultIndexName({
68
+ const method = resolveAdvancedIndexMethod(config.method, {
69
+ fieldCount: fields.length,
70
+ fieldValueType: fieldValueTypes[0],
71
+ coveringFieldCount: coveringFields.length,
72
+ keySystemColumnCount: keySystemColumns.length,
73
+ unique,
74
+ hasWhere: where !== void 0
75
+ });
76
+ const defaultName = generateDefaultIndexName({
52
77
  kind: "node",
53
78
  kindName: node.kind,
54
79
  unique,
55
80
  scope,
56
81
  direction: "none",
57
82
  fields,
58
- coveringFields
83
+ coveringFields,
84
+ keySystemColumns
59
85
  });
86
+ const name = config.name ?? (method === void 0 ? defaultName : `${defaultName}_${method}`);
60
87
  return {
61
88
  entity: "node",
62
89
  kind: node.kind,
@@ -67,14 +94,41 @@ function defineNodeIndex(node, config) {
67
94
  coveringFieldValueTypes,
68
95
  unique,
69
96
  scope,
70
- where
97
+ where,
98
+ ...method === void 0 ? {} : { method },
99
+ ...keySystemColumns.length === 0 ? {} : { keySystemColumns }
71
100
  };
72
101
  }
102
+ function normalizeKeySystemColumnsOrThrow(columns, scope, unique) {
103
+ if (columns.length === 0) return [];
104
+ for (const column of columns) {
105
+ if (!NODE_KEY_SYSTEM_COLUMNS.has(column)) {
106
+ throw new Error(
107
+ `Node index keySystemColumns does not support "${column}" (edge-only system column)`
108
+ );
109
+ }
110
+ }
111
+ assertUnique(columns, "keySystemColumns");
112
+ const scopeColumns = new Set(chunkD7ZEOS56_cjs.getNodeScopeColumns(scope));
113
+ for (const column of columns) {
114
+ if (scopeColumns.has(column)) {
115
+ throw new Error(
116
+ `Node index keySystemColumns must not repeat a column already implied by scope "${scope}": "${column}"`
117
+ );
118
+ }
119
+ }
120
+ if (unique && columns.includes("id")) {
121
+ throw new Error(
122
+ `unique node indexes cannot include keySystemColumns: ["id"]; id is already unique per node, so including it defeats uniqueness across the prop fields`
123
+ );
124
+ }
125
+ return [...columns];
126
+ }
73
127
  function defineEdgeIndex(edge, config) {
74
128
  const scope = config.scope ?? "graphAndKind";
75
129
  const unique = config.unique ?? false;
76
130
  const direction = config.direction ?? "none";
77
- const schemaIntrospector = chunkEF3Z645U_cjs.createSchemaIntrospector(
131
+ const schemaIntrospector = chunkUMDVATGY_cjs.createSchemaIntrospector(
78
132
  /* @__PURE__ */ new Map(),
79
133
  /* @__PURE__ */ new Map([[edge.kind, { schema: edge.schema }]])
80
134
  );
@@ -83,7 +137,7 @@ function defineEdgeIndex(edge, config) {
83
137
  config.fields,
84
138
  schemaIntrospector,
85
139
  "fields",
86
- { allowEmpty: false }
140
+ { allowEmpty: false, allowJsonFields: config.method === "gin" }
87
141
  );
88
142
  const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } = normalizeEdgeIndexFieldsOrThrow(
89
143
  edge,
@@ -97,7 +151,15 @@ function defineEdgeIndex(edge, config) {
97
151
  config.where,
98
152
  () => createEdgeWhereBuilder(edge, schemaIntrospector)
99
153
  );
100
- const name = config.name ?? generateDefaultIndexName({
154
+ const method = resolveAdvancedIndexMethod(config.method, {
155
+ fieldCount: fields.length,
156
+ fieldValueType: fieldValueTypes[0],
157
+ coveringFieldCount: coveringFields.length,
158
+ keySystemColumnCount: 0,
159
+ unique,
160
+ hasWhere: where !== void 0
161
+ });
162
+ const defaultName = generateDefaultIndexName({
101
163
  kind: "edge",
102
164
  kindName: edge.kind,
103
165
  unique,
@@ -106,6 +168,7 @@ function defineEdgeIndex(edge, config) {
106
168
  fields,
107
169
  coveringFields
108
170
  });
171
+ const name = config.name ?? (method === void 0 ? defaultName : `${defaultName}_${method}`);
109
172
  return {
110
173
  entity: "edge",
111
174
  kind: edge.kind,
@@ -117,9 +180,51 @@ function defineEdgeIndex(edge, config) {
117
180
  unique,
118
181
  scope,
119
182
  direction,
120
- where
183
+ where,
184
+ ...method === void 0 ? {} : { method }
121
185
  };
122
186
  }
187
+ function resolveAdvancedIndexMethod(method, details) {
188
+ const resolved = method ?? "btree";
189
+ if (resolved === "btree") return void 0;
190
+ if (details.fieldCount !== 1) {
191
+ throw new Error(
192
+ `Index method "${resolved}" requires exactly one field (a GIN indexes one expression), got ${details.fieldCount}`
193
+ );
194
+ }
195
+ if (resolved === "gin" && details.fieldValueType !== "array") {
196
+ throw new Error(
197
+ details.fieldValueType === "string" ? 'Index method "gin" serves array containment; for substring or case-insensitive matching on a string field use method: "trigram"' : `Index method "gin" requires an array field (it serves the array containment predicates), got field type "${details.fieldValueType ?? "unresolved"}"`
198
+ );
199
+ }
200
+ if (resolved === "trigram" && details.fieldValueType !== "string") {
201
+ throw new Error(
202
+ details.fieldValueType === "array" ? 'Index method "trigram" serves substring matching on string fields; for array containment use method: "gin"' : `Index method "trigram" requires a string field (it serves substring and case-insensitive matches), got field type "${details.fieldValueType ?? "unresolved"}"`
203
+ );
204
+ }
205
+ const extraKeyColumns = [
206
+ ["coveringFields", details.coveringFieldCount],
207
+ ["keySystemColumns", details.keySystemColumnCount]
208
+ ];
209
+ for (const [label, count] of extraKeyColumns) {
210
+ if (count > 0) {
211
+ throw new Error(
212
+ `Index method "${resolved}" does not support ${label} (GIN indexes cannot serve index-only scans over extra columns)`
213
+ );
214
+ }
215
+ }
216
+ if (details.unique) {
217
+ throw new Error(
218
+ `Index method "${resolved}" does not support unique (GIN indexes cannot enforce uniqueness)`
219
+ );
220
+ }
221
+ if (details.hasWhere) {
222
+ throw new Error(
223
+ `Index method "${resolved}" does not support a partial where clause`
224
+ );
225
+ }
226
+ return resolved;
227
+ }
123
228
  function normalizeWhereInput(input, createBuilder) {
124
229
  if (input === void 0) {
125
230
  return void 0;
@@ -341,23 +446,22 @@ function assertNoOverlap(a, b, aLabel, bLabel) {
341
446
  }
342
447
  }
343
448
  }
344
- function assertIndexableValueType(valueType, context) {
449
+ function assertIndexableValueType(valueType, context, options) {
345
450
  if (valueType === "embedding") {
346
451
  throw new Error(
347
452
  `Cannot create props index for embedding field (${context}); embedding() fields are indexed automatically in the vector strategy's per-(kind, field) storage`
348
453
  );
349
454
  }
350
- if (valueType === "array" || valueType === "object") {
455
+ if ((valueType === "array" || valueType === "object") && !options.allowJsonFields) {
351
456
  throw new Error(
352
- `Cannot create btree props index for ${valueType} field (${context}); use a GIN/JSON index strategy instead`
457
+ `Cannot create btree props index for ${valueType} field (${context}); use method: "gin" instead`
353
458
  );
354
459
  }
355
460
  }
356
461
  function normalizeNodeIndexFieldsOrThrow(node, inputs, schemaIntrospector, label, options) {
357
- if (inputs.length === 0 && options.allowEmpty) {
462
+ if (inputs.length === 0) {
358
463
  return { pointers: [], valueTypes: [] };
359
464
  }
360
- assertNonEmpty(inputs, label);
361
465
  const pointers = [];
362
466
  const valueTypes = [];
363
467
  for (const input of inputs) {
@@ -367,7 +471,9 @@ function normalizeNodeIndexFieldsOrThrow(node, inputs, schemaIntrospector, label
367
471
  pointer,
368
472
  schemaIntrospector
369
473
  );
370
- assertIndexableValueType(info.valueType, `node "${node.kind}" ${pointer}`);
474
+ assertIndexableValueType(info.valueType, `node "${node.kind}" ${pointer}`, {
475
+ allowJsonFields: options.allowJsonFields ?? false
476
+ });
371
477
  pointers.push(pointer);
372
478
  valueTypes.push(info.valueType);
373
479
  }
@@ -388,7 +494,9 @@ function normalizeEdgeIndexFieldsOrThrow(edge, inputs, schemaIntrospector, label
388
494
  pointer,
389
495
  schemaIntrospector
390
496
  );
391
- assertIndexableValueType(info.valueType, `edge "${edge.kind}" ${pointer}`);
497
+ assertIndexableValueType(info.valueType, `edge "${edge.kind}" ${pointer}`, {
498
+ allowJsonFields: options.allowJsonFields ?? false
499
+ });
392
500
  pointers.push(pointer);
393
501
  valueTypes.push(info.valueType);
394
502
  }
@@ -400,11 +508,11 @@ function normalizeIndexFieldPointer(input) {
400
508
  if (input.length === 0) {
401
509
  throw new Error("Index field JSON pointer must not be empty");
402
510
  }
403
- return chunkFLRCVI2G_cjs.jsonPointer(input);
511
+ return chunkTDXIBCGY_cjs.jsonPointer(input);
404
512
  }
405
513
  if (typeof input === "string") {
406
514
  if (input.startsWith("/")) {
407
- const pointer = chunkFLRCVI2G_cjs.normalizeJsonPointer(
515
+ const pointer = chunkTDXIBCGY_cjs.normalizeJsonPointer(
408
516
  input
409
517
  );
410
518
  if (pointer === "") {
@@ -412,12 +520,12 @@ function normalizeIndexFieldPointer(input) {
412
520
  }
413
521
  return pointer;
414
522
  }
415
- return chunkFLRCVI2G_cjs.jsonPointer([input]);
523
+ return chunkTDXIBCGY_cjs.jsonPointer([input]);
416
524
  }
417
525
  throw new Error(`Unsupported index field input: ${String(input)}`);
418
526
  }
419
527
  function resolveNodeFieldTypeInfoOrThrow(nodeKind, pointer, schemaIntrospector) {
420
- const segments = chunkFLRCVI2G_cjs.parseJsonPointer(pointer);
528
+ const segments = chunkTDXIBCGY_cjs.parseJsonPointer(pointer);
421
529
  const [first, ...rest] = segments;
422
530
  if (!first) {
423
531
  throw new Error("Index field JSON pointer must not be empty");
@@ -431,9 +539,9 @@ function resolveNodeFieldTypeInfoOrThrow(nodeKind, pointer, schemaIntrospector)
431
539
  if (rest.length === 0) {
432
540
  return rootInfo;
433
541
  }
434
- const resolved = chunk3E7SNSIA_cjs.resolveFieldTypeInfoAtJsonPointer(
542
+ const resolved = chunkSJDMVITW_cjs.resolveFieldTypeInfoAtJsonPointer(
435
543
  rootInfo,
436
- chunkFLRCVI2G_cjs.jsonPointer(rest)
544
+ chunkTDXIBCGY_cjs.jsonPointer(rest)
437
545
  );
438
546
  if (!resolved) {
439
547
  throw new Error(
@@ -443,7 +551,7 @@ function resolveNodeFieldTypeInfoOrThrow(nodeKind, pointer, schemaIntrospector)
443
551
  return resolved;
444
552
  }
445
553
  function resolveEdgeFieldTypeInfoOrThrow(edgeKind, pointer, schemaIntrospector) {
446
- const segments = chunkFLRCVI2G_cjs.parseJsonPointer(pointer);
554
+ const segments = chunkTDXIBCGY_cjs.parseJsonPointer(pointer);
447
555
  const [first, ...rest] = segments;
448
556
  if (!first) {
449
557
  throw new Error("Index field JSON pointer must not be empty");
@@ -457,9 +565,9 @@ function resolveEdgeFieldTypeInfoOrThrow(edgeKind, pointer, schemaIntrospector)
457
565
  if (rest.length === 0) {
458
566
  return rootInfo;
459
567
  }
460
- const resolved = chunk3E7SNSIA_cjs.resolveFieldTypeInfoAtJsonPointer(
568
+ const resolved = chunkSJDMVITW_cjs.resolveFieldTypeInfoAtJsonPointer(
461
569
  rootInfo,
462
- chunkFLRCVI2G_cjs.jsonPointer(rest)
570
+ chunkTDXIBCGY_cjs.jsonPointer(rest)
463
571
  );
464
572
  if (!resolved) {
465
573
  throw new Error(
@@ -469,7 +577,8 @@ function resolveEdgeFieldTypeInfoOrThrow(edgeKind, pointer, schemaIntrospector)
469
577
  return resolved;
470
578
  }
471
579
  function generateDefaultIndexName(parts) {
472
- const hash = chunk73KASJGO_cjs.fnv1aBase36(
580
+ const keySystemColumns = parts.keySystemColumns ?? [];
581
+ const hash = chunkTEDRJXOG_cjs.fnv1aBase36(
473
582
  JSON.stringify({
474
583
  kind: parts.kind,
475
584
  kindName: parts.kindName,
@@ -477,7 +586,8 @@ function generateDefaultIndexName(parts) {
477
586
  scope: parts.scope,
478
587
  direction: parts.direction,
479
588
  fields: parts.fields,
480
- covering: parts.coveringFields
589
+ covering: parts.coveringFields,
590
+ ...keySystemColumns.length > 0 ? { keySystemColumns } : {}
481
591
  })
482
592
  );
483
593
  const nameParts = [
@@ -485,23 +595,24 @@ function generateDefaultIndexName(parts) {
485
595
  "tg",
486
596
  parts.kind,
487
597
  sanitizeIdentifierComponent(parts.kindName),
488
- sanitizeIdentifierComponent(parts.fields.join("_")),
598
+ parts.fields.length > 0 ? sanitizeIdentifierComponent(parts.fields.join("_")) : void 0,
489
599
  parts.coveringFields.length > 0 ? `cov_${sanitizeIdentifierComponent(parts.coveringFields.join("_"))}` : void 0,
600
+ keySystemColumns.length > 0 ? `sys_${sanitizeIdentifierComponent(keySystemColumns.join("_"))}` : void 0,
490
601
  parts.direction === "none" ? void 0 : parts.direction,
491
602
  parts.unique ? "uniq" : void 0,
492
603
  parts.scope === "graphAndKind" ? void 0 : sanitizeIdentifierComponent(parts.scope),
493
604
  hash
494
605
  ].filter((part) => part !== void 0);
495
606
  const joined = nameParts.join("_");
496
- return joined.length <= chunk73KASJGO_cjs.MAX_PG_IDENTIFIER_LENGTH ? joined : `${joined.slice(0, chunk73KASJGO_cjs.TRUNCATED_IDENTIFIER_MAX_LENGTH)}_${hash}`;
607
+ return joined.length <= chunk7YSP4V4R_cjs.MAX_PG_IDENTIFIER_LENGTH ? joined : `${joined.slice(0, chunk7YSP4V4R_cjs.TRUNCATED_IDENTIFIER_MAX_LENGTH)}_${hash}`;
497
608
  }
498
609
  function sanitizeIdentifierComponent(value) {
499
- return value.toLowerCase().replaceAll(/[^a-z0-9_]+/g, "_").replaceAll(/^_+|_+$/g, "").slice(0, chunk73KASJGO_cjs.IDENTIFIER_COMPONENT_MAX_LENGTH);
610
+ return value.toLowerCase().replaceAll(/[^a-z0-9_]+/g, "_").replaceAll(/^_+|_+$/g, "").slice(0, chunk7YSP4V4R_cjs.IDENTIFIER_COMPONENT_MAX_LENGTH);
500
611
  }
501
612
 
502
613
  exports.EDGE_META_KEYS = EDGE_META_KEYS;
503
614
  exports.NODE_META_KEYS = NODE_META_KEYS;
504
615
  exports.defineEdgeIndex = defineEdgeIndex;
505
616
  exports.defineNodeIndex = defineNodeIndex;
506
- //# sourceMappingURL=chunk-3IR2GEMJ.cjs.map
507
- //# sourceMappingURL=chunk-3IR2GEMJ.cjs.map
617
+ //# sourceMappingURL=chunk-UUT7UN2N.cjs.map
618
+ //# sourceMappingURL=chunk-UUT7UN2N.cjs.map