@noy-db/hub 0.7.1-pre.0 → 0.8.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 (812) hide show
  1. package/CHANGELOG.md +147 -14
  2. package/LICENSE +202 -21
  3. package/NOTICE +1 -0
  4. package/README.md +5 -5
  5. package/codemods/0.8.0-pre.json +61 -0
  6. package/dist/api-OS747DS4.js +18 -0
  7. package/dist/as/index.js +11 -12
  8. package/dist/as/index.js.map +1 -1
  9. package/dist/at/index.js +9 -10
  10. package/dist/attestation/index.js +37 -26
  11. package/dist/attestation/index.js.map +1 -1
  12. package/dist/{backup-XKCXVKV3.js → backup-YE2VQ26S.js} +15 -16
  13. package/dist/backup-YE2VQ26S.js.map +1 -0
  14. package/dist/blobs/index.js +13 -14
  15. package/dist/blobs/index.js.map +1 -1
  16. package/dist/broker/index.js +12 -13
  17. package/dist/broker/index.js.map +1 -1
  18. package/dist/by/index.js +2 -2
  19. package/dist/capsule/contract.d.ts +159 -0
  20. package/dist/capsule/contract.js +95 -0
  21. package/dist/capsule/enclave-aes/bound.d.ts +52 -0
  22. package/dist/capsule/enclave-aes/capabilities.d.ts +2 -0
  23. package/dist/capsule/enclave-aes/classify/compare.d.ts +20 -0
  24. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/find.d.ts +1 -1
  25. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/reveal.d.ts +1 -1
  26. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/verify.d.ts +2 -2
  27. package/dist/{kernel/enclave → capsule/enclave-aes}/classify/write.d.ts +1 -1
  28. package/dist/{kernel/enclave → capsule/enclave-aes}/crypto.d.ts +33 -129
  29. package/dist/capsule/enclave-aes/index.d.ts +113 -0
  30. package/dist/capsule/enclave-aes/index.js +335 -0
  31. package/dist/capsule/enclave-aes/index.js.map +1 -0
  32. package/dist/capsule/enclave-aes/primitives.d.ts +29 -0
  33. package/dist/capsule/index.d.ts +27 -0
  34. package/dist/capsule/plumbing/ct-equal.d.ts +11 -0
  35. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/deterministic.d.ts +8 -21
  36. package/dist/capsule/plumbing/digest.d.ts +122 -0
  37. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/envelope-body.d.ts +44 -48
  38. package/dist/capsule/plumbing/index.d.ts +100 -0
  39. package/dist/capsule/plumbing/lifecycle.d.ts +50 -0
  40. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/record-codec.d.ts +80 -20
  41. package/dist/{kernel/enclave → capsule/plumbing}/record-envelope.d.ts +1 -1
  42. package/dist/capsule/plumbing/rekey-blob.d.ts +33 -0
  43. package/dist/capsule/plumbing/rekey.d.ts +44 -0
  44. package/dist/capsule/plumbing/sealed-slot.d.ts +22 -0
  45. package/dist/capsule/plumbing/sealed-slots.d.ts +37 -0
  46. package/dist/capsule/plumbing/sealing.d.ts +29 -0
  47. package/dist/capsule/plumbing/sign.d.ts +9 -0
  48. package/dist/{kernel/enclave/record-keys → capsule/plumbing}/tombstone.d.ts +2 -2
  49. package/dist/capsule-VOLX3QRQ.js +209 -0
  50. package/dist/cargo/index.js +39 -36
  51. package/dist/{chunk-Q2MPFCQ7.js → chunk-23D6M6VM.js} +5 -5
  52. package/dist/chunk-23D6M6VM.js.map +1 -0
  53. package/dist/{chunk-R7BX2NB3.js → chunk-244QBK7Z.js} +4 -4
  54. package/dist/chunk-244QBK7Z.js.map +1 -0
  55. package/dist/chunk-2AFX33YA.js +936 -0
  56. package/dist/chunk-2AFX33YA.js.map +1 -0
  57. package/dist/{chunk-MVMXZYXT.js → chunk-2GHDLTPE.js} +2 -2
  58. package/dist/{chunk-GYGLAVCX.js → chunk-2MG3SW7Q.js} +6 -2
  59. package/dist/chunk-2MG3SW7Q.js.map +1 -0
  60. package/dist/{chunk-XLMEZIAJ.js → chunk-2ODVB6LZ.js} +2 -2
  61. package/dist/{chunk-HJUWN7JN.js → chunk-2PVXF5CS.js} +33 -8
  62. package/dist/chunk-2PVXF5CS.js.map +1 -0
  63. package/dist/{chunk-YJRT5UQM.js → chunk-2RH777HH.js} +21 -20
  64. package/dist/{chunk-YJRT5UQM.js.map → chunk-2RH777HH.js.map} +1 -1
  65. package/dist/{chunk-7O3Y4PPD.js → chunk-37EPTBBR.js} +153 -16
  66. package/dist/chunk-37EPTBBR.js.map +1 -0
  67. package/dist/{chunk-2ENE6445.js → chunk-3A5DUZ56.js} +102 -16
  68. package/dist/chunk-3A5DUZ56.js.map +1 -0
  69. package/dist/chunk-3EWS67C7.js +461 -0
  70. package/dist/chunk-3EWS67C7.js.map +1 -0
  71. package/dist/{chunk-SGZAIJCV.js → chunk-3L2NBKDR.js} +4 -8
  72. package/dist/chunk-3L2NBKDR.js.map +1 -0
  73. package/dist/{chunk-YMUFFJCO.js → chunk-3TDUWVWB.js} +5 -2
  74. package/dist/chunk-3TDUWVWB.js.map +1 -0
  75. package/dist/{chunk-4GVM6QZA.js → chunk-3XJQBBZD.js} +26 -28
  76. package/dist/chunk-3XJQBBZD.js.map +1 -0
  77. package/dist/{chunk-4ZS56W5S.js → chunk-42ALPZ2B.js} +672 -664
  78. package/dist/chunk-42ALPZ2B.js.map +1 -0
  79. package/dist/chunk-4CIQDWRB.js +524 -0
  80. package/dist/chunk-4CIQDWRB.js.map +1 -0
  81. package/dist/{chunk-RMS3NEA3.js → chunk-4JPMZTJY.js} +2 -2
  82. package/dist/{chunk-P3MG6QCN.js → chunk-4T3SE27M.js} +5 -9
  83. package/dist/chunk-4T3SE27M.js.map +1 -0
  84. package/dist/chunk-4V3Q35WG.js +204 -0
  85. package/dist/chunk-4V3Q35WG.js.map +1 -0
  86. package/dist/{chunk-NQKIUNW5.js → chunk-52MGURXO.js} +2 -2
  87. package/dist/{chunk-EQEYOJBM.js → chunk-5A4345TG.js} +4 -4
  88. package/dist/chunk-5A4345TG.js.map +1 -0
  89. package/dist/{chunk-334WSVOW.js → chunk-5FE75J4S.js} +6 -6
  90. package/dist/chunk-5FE75J4S.js.map +1 -0
  91. package/dist/chunk-5KC7QYEC.js +565 -0
  92. package/dist/chunk-5KC7QYEC.js.map +1 -0
  93. package/dist/{chunk-RSGLUIO6.js → chunk-5UMK7GRI.js} +13 -12
  94. package/dist/chunk-5UMK7GRI.js.map +1 -0
  95. package/dist/chunk-5WWDGFOS.js +275 -0
  96. package/dist/chunk-5WWDGFOS.js.map +1 -0
  97. package/dist/{chunk-QPQUVOZ2.js → chunk-6QVKPHBF.js} +3 -5
  98. package/dist/chunk-6QVKPHBF.js.map +1 -0
  99. package/dist/{chunk-ACAQ2DSG.js → chunk-747G6CT3.js} +2 -2
  100. package/dist/chunk-747G6CT3.js.map +1 -0
  101. package/dist/{chunk-QTQUH4DS.js → chunk-7R2Q7CPL.js} +16 -16
  102. package/dist/chunk-7R2Q7CPL.js.map +1 -0
  103. package/dist/{chunk-UGTBXF5U.js → chunk-7XMHMVTS.js} +3 -3
  104. package/dist/{chunk-YJX7EOJD.js → chunk-A4XMIZT3.js} +6 -6
  105. package/dist/{chunk-YJX7EOJD.js.map → chunk-A4XMIZT3.js.map} +1 -1
  106. package/dist/{chunk-A66I4JOA.js → chunk-AEQGFRU4.js} +4 -4
  107. package/dist/chunk-AEQGFRU4.js.map +1 -0
  108. package/dist/chunk-AL6ML4LA.js +1558 -0
  109. package/dist/chunk-AL6ML4LA.js.map +1 -0
  110. package/dist/{chunk-BZ3534YM.js → chunk-AUKKUPVB.js} +2 -2
  111. package/dist/{chunk-CUZLNGD5.js → chunk-B2YY6WDD.js} +1 -1
  112. package/dist/chunk-B2YY6WDD.js.map +1 -0
  113. package/dist/chunk-BKT776R5.js +1 -0
  114. package/dist/chunk-BNWA3WG5.js +22 -0
  115. package/dist/chunk-BNWA3WG5.js.map +1 -0
  116. package/dist/{chunk-VXANTWBJ.js → chunk-BPWYQ25R.js} +92 -6
  117. package/dist/{chunk-VXANTWBJ.js.map → chunk-BPWYQ25R.js.map} +1 -1
  118. package/dist/{chunk-6LKOJBV6.js → chunk-BVCUTXE3.js} +2 -2
  119. package/dist/chunk-CY2CYVWZ.js +41 -0
  120. package/dist/chunk-CY2CYVWZ.js.map +1 -0
  121. package/dist/{chunk-M4YPHYEH.js → chunk-DHHGL42E.js} +70 -25
  122. package/dist/chunk-DHHGL42E.js.map +1 -0
  123. package/dist/{chunk-VTFVLCUH.js → chunk-DIZLQVAA.js} +2 -2
  124. package/dist/{chunk-G73UVHCA.js → chunk-DLD5LGDS.js} +11 -12
  125. package/dist/chunk-DLD5LGDS.js.map +1 -0
  126. package/dist/{chunk-WQBG4SZS.js → chunk-DQESF6RP.js} +60 -49
  127. package/dist/chunk-DQESF6RP.js.map +1 -0
  128. package/dist/{chunk-LWBCUYZW.js → chunk-E2N2T5ZO.js} +2 -2
  129. package/dist/{chunk-3PGS7TYR.js → chunk-EGVJ7TM4.js} +29 -32
  130. package/dist/chunk-EGVJ7TM4.js.map +1 -0
  131. package/dist/{chunk-JVIBCBC7.js → chunk-EJLV62NI.js} +2 -2
  132. package/dist/{chunk-KKEESNPE.js → chunk-EYG2CY2X.js} +126 -19
  133. package/dist/chunk-EYG2CY2X.js.map +1 -0
  134. package/dist/{enclave-55PAM4YO.js → chunk-EZGV6F47.js} +83 -56
  135. package/dist/chunk-EZGV6F47.js.map +1 -0
  136. package/dist/{chunk-CHQCZZWC.js → chunk-EZOAKKTB.js} +36 -27
  137. package/dist/chunk-EZOAKKTB.js.map +1 -0
  138. package/dist/chunk-F6NCB7KT.js +13 -0
  139. package/dist/chunk-F6NCB7KT.js.map +1 -0
  140. package/dist/chunk-FFJFE4T7.js +100 -0
  141. package/dist/chunk-FFJFE4T7.js.map +1 -0
  142. package/dist/{chunk-JMGDHKQF.js → chunk-FLPCETP6.js} +2 -2
  143. package/dist/chunk-FOEDQATO.js +53 -0
  144. package/dist/chunk-FOEDQATO.js.map +1 -0
  145. package/dist/{chunk-DGOZ4UZD.js → chunk-FVH5QYY2.js} +2 -2
  146. package/dist/{chunk-HIWCKBEY.js → chunk-G2MVBDFP.js} +54 -28
  147. package/dist/chunk-G2MVBDFP.js.map +1 -0
  148. package/dist/chunk-GMKGGY7V.js +234 -0
  149. package/dist/chunk-GMKGGY7V.js.map +1 -0
  150. package/dist/{chunk-EIPVYUEP.js → chunk-GQ4MF3CM.js} +3 -3
  151. package/dist/chunk-GQ4MF3CM.js.map +1 -0
  152. package/dist/{chunk-PEOZ34EM.js → chunk-GSAK56VF.js} +1 -1
  153. package/dist/chunk-GSAK56VF.js.map +1 -0
  154. package/dist/{chunk-5VCRVKOZ.js → chunk-GUZET4SG.js} +12 -4
  155. package/dist/chunk-GUZET4SG.js.map +1 -0
  156. package/dist/{chunk-JBDFMYKQ.js → chunk-GZT3NQRA.js} +2 -2
  157. package/dist/{chunk-K23VKTN4.js → chunk-H23XHRTT.js} +19 -34
  158. package/dist/chunk-H23XHRTT.js.map +1 -0
  159. package/dist/{chunk-TFR7DSOV.js → chunk-H427H63K.js} +2 -2
  160. package/dist/{chunk-DFMWUOU5.js → chunk-H7JBY4P7.js} +23 -32
  161. package/dist/chunk-H7JBY4P7.js.map +1 -0
  162. package/dist/{chunk-SKGMN35F.js → chunk-HS554XAF.js} +3 -3
  163. package/dist/chunk-HS554XAF.js.map +1 -0
  164. package/dist/{chunk-HK67PX4J.js → chunk-HW7CMKUG.js} +1 -1
  165. package/dist/chunk-HW7CMKUG.js.map +1 -0
  166. package/dist/{chunk-3BVH633C.js → chunk-IMQKWR46.js} +5 -7
  167. package/dist/chunk-IMQKWR46.js.map +1 -0
  168. package/dist/{chunk-R42NSZI6.js → chunk-IUBMZPHM.js} +7 -7
  169. package/dist/chunk-IUBMZPHM.js.map +1 -0
  170. package/dist/{chunk-CUQPWYRX.js → chunk-IUT3GWP3.js} +75 -386
  171. package/dist/chunk-IUT3GWP3.js.map +1 -0
  172. package/dist/{chunk-RF6D3Y5E.js → chunk-JDEYF3PJ.js} +4 -8
  173. package/dist/{chunk-RF6D3Y5E.js.map → chunk-JDEYF3PJ.js.map} +1 -1
  174. package/dist/{chunk-PPTHY5QO.js → chunk-JIBUPZHA.js} +99 -8
  175. package/dist/chunk-JIBUPZHA.js.map +1 -0
  176. package/dist/{chunk-SMH6SRX7.js → chunk-JOSPH3E5.js} +2 -2
  177. package/dist/chunk-JQYKPKG6.js +193 -0
  178. package/dist/chunk-JQYKPKG6.js.map +1 -0
  179. package/dist/{chunk-7APJ6CO6.js → chunk-JSMTXZR3.js} +45 -13
  180. package/dist/chunk-JSMTXZR3.js.map +1 -0
  181. package/dist/chunk-JWWYRR4Q.js +12 -0
  182. package/dist/chunk-JWWYRR4Q.js.map +1 -0
  183. package/dist/{chunk-BVN6KXL2.js → chunk-KZXDLBY6.js} +14 -9
  184. package/dist/chunk-KZXDLBY6.js.map +1 -0
  185. package/dist/chunk-LGNDFRYC.js +23 -0
  186. package/dist/chunk-LGNDFRYC.js.map +1 -0
  187. package/dist/{chunk-XKWGNJ26.js → chunk-LIOVX5TJ.js} +7 -11
  188. package/dist/chunk-LIOVX5TJ.js.map +1 -0
  189. package/dist/{chunk-AYX7AINO.js → chunk-LNSVGRHO.js} +5 -7
  190. package/dist/chunk-LNSVGRHO.js.map +1 -0
  191. package/dist/chunk-M5B2W6YY.js +293 -0
  192. package/dist/chunk-M5B2W6YY.js.map +1 -0
  193. package/dist/chunk-MBMTND6D.js +456 -0
  194. package/dist/chunk-MBMTND6D.js.map +1 -0
  195. package/dist/{chunk-3BZZJJMQ.js → chunk-MILI22XQ.js} +3 -3
  196. package/dist/{chunk-A2HKRLPV.js → chunk-MXKI4ABF.js} +18 -59
  197. package/dist/chunk-MXKI4ABF.js.map +1 -0
  198. package/dist/{chunk-ZYIYHJ5R.js → chunk-MXOQ5JCG.js} +869 -238
  199. package/dist/chunk-MXOQ5JCG.js.map +1 -0
  200. package/dist/{chunk-V7ZRRCRJ.js → chunk-N7EVQD5S.js} +9 -13
  201. package/dist/chunk-N7EVQD5S.js.map +1 -0
  202. package/dist/chunk-N7UDP5VU.js +757 -0
  203. package/dist/chunk-N7UDP5VU.js.map +1 -0
  204. package/dist/chunk-NBQ3KK6X.js +270 -0
  205. package/dist/chunk-NBQ3KK6X.js.map +1 -0
  206. package/dist/{chunk-ZORTV6NH.js → chunk-NCO25JZO.js} +88 -4
  207. package/dist/chunk-NCO25JZO.js.map +1 -0
  208. package/dist/chunk-NH2UOV3B.js +18 -0
  209. package/dist/chunk-NH2UOV3B.js.map +1 -0
  210. package/dist/chunk-NYMLINRP.js +28 -0
  211. package/dist/chunk-NYMLINRP.js.map +1 -0
  212. package/dist/{chunk-YYP7WSEB.js → chunk-O2IMQSNA.js} +2 -2
  213. package/dist/chunk-O46CHQT7.js +215 -0
  214. package/dist/chunk-O46CHQT7.js.map +1 -0
  215. package/dist/chunk-OIEO4WDL.js +27 -0
  216. package/dist/chunk-OIEO4WDL.js.map +1 -0
  217. package/dist/{chunk-TRGTKX5E.js → chunk-OKSTSITU.js} +27 -4
  218. package/dist/chunk-OKSTSITU.js.map +1 -0
  219. package/dist/chunk-OYW3I5M4.js +31 -0
  220. package/dist/chunk-OYW3I5M4.js.map +1 -0
  221. package/dist/{chunk-Q7HZX3IF.js → chunk-PD64727P.js} +2 -2
  222. package/dist/chunk-PD64727P.js.map +1 -0
  223. package/dist/{chunk-FET5XCAT.js → chunk-PP3K67AJ.js} +34 -6
  224. package/dist/chunk-PP3K67AJ.js.map +1 -0
  225. package/dist/chunk-Q2XRFWOI.js +40 -0
  226. package/dist/chunk-Q2XRFWOI.js.map +1 -0
  227. package/dist/{chunk-QIZPZMUI.js → chunk-Q4UHJ5SN.js} +2 -2
  228. package/dist/{chunk-FAHMLERK.js → chunk-QBLT6POL.js} +2 -2
  229. package/dist/chunk-QMWY2FDS.js +157 -0
  230. package/dist/chunk-QMWY2FDS.js.map +1 -0
  231. package/dist/{chunk-LH5A3ZPG.js → chunk-RB4DOPGZ.js} +150 -22
  232. package/dist/chunk-RB4DOPGZ.js.map +1 -0
  233. package/dist/chunk-RHVMZSUU.js +7 -0
  234. package/dist/chunk-RHVMZSUU.js.map +1 -0
  235. package/dist/{chunk-BUE2D7PX.js → chunk-SMV2HRDU.js} +2 -2
  236. package/dist/chunk-SUZKW6UR.js +25 -0
  237. package/dist/chunk-SUZKW6UR.js.map +1 -0
  238. package/dist/{chunk-7MG7SJT7.js → chunk-SV2PM2OY.js} +1 -1
  239. package/dist/chunk-SV2PM2OY.js.map +1 -0
  240. package/dist/{chunk-UXVWEX5L.js → chunk-SYNY3VB5.js} +6 -2
  241. package/dist/chunk-SYNY3VB5.js.map +1 -0
  242. package/dist/{chunk-4GFX6MPA.js → chunk-TEHHROZL.js} +6 -8
  243. package/dist/chunk-TEHHROZL.js.map +1 -0
  244. package/dist/chunk-TKVUE4JF.js +1289 -0
  245. package/dist/chunk-TKVUE4JF.js.map +1 -0
  246. package/dist/{chunk-SFAWCTEM.js → chunk-TZZBXPZK.js} +2 -2
  247. package/dist/{chunk-F3W6YMDC.js → chunk-U2FZNEWJ.js} +4 -4
  248. package/dist/chunk-U2FZNEWJ.js.map +1 -0
  249. package/dist/{chunk-BLN54W3L.js → chunk-UA372JHH.js} +56 -3
  250. package/dist/chunk-UA372JHH.js.map +1 -0
  251. package/dist/{chunk-6YXCPL4T.js → chunk-UEFOQH74.js} +2 -2
  252. package/dist/chunk-UEFOQH74.js.map +1 -0
  253. package/dist/{chunk-2N5ML6HT.js → chunk-UIYESRD6.js} +9 -11
  254. package/dist/chunk-UIYESRD6.js.map +1 -0
  255. package/dist/{chunk-UHHPLO3I.js → chunk-V3RWOOSO.js} +4 -4
  256. package/dist/{chunk-KTFRCC5C.js → chunk-V7ADQF5O.js} +82 -8
  257. package/dist/chunk-V7ADQF5O.js.map +1 -0
  258. package/dist/{chunk-453F654R.js → chunk-VAORSCSU.js} +3 -3
  259. package/dist/chunk-VAORSCSU.js.map +1 -0
  260. package/dist/{chunk-GPNTB4Y7.js → chunk-VFHCKG5M.js} +6 -10
  261. package/dist/chunk-VFHCKG5M.js.map +1 -0
  262. package/dist/{chunk-2577DKXB.js → chunk-VHBKYN2J.js} +3 -3
  263. package/dist/chunk-VHBKYN2J.js.map +1 -0
  264. package/dist/chunk-VHM7HCKB.js +220 -0
  265. package/dist/chunk-VHM7HCKB.js.map +1 -0
  266. package/dist/{chunk-ZHKOPKE3.js → chunk-VKI2EB3N.js} +3 -3
  267. package/dist/chunk-VKI2EB3N.js.map +1 -0
  268. package/dist/{chunk-UDHWDSRL.js → chunk-VMV5SBE4.js} +16 -17
  269. package/dist/chunk-VMV5SBE4.js.map +1 -0
  270. package/dist/{chunk-SPYWXKJN.js → chunk-VQDZYB2B.js} +3 -3
  271. package/dist/chunk-VQDZYB2B.js.map +1 -0
  272. package/dist/{chunk-Q2PU57HC.js → chunk-VVOLDVIR.js} +2 -2
  273. package/dist/{chunk-3VF3WQ4F.js → chunk-WPOYWFSE.js} +7 -7
  274. package/dist/{chunk-3VF3WQ4F.js.map → chunk-WPOYWFSE.js.map} +1 -1
  275. package/dist/{chunk-OTQZ7ZWU.js → chunk-WXE4W2U6.js} +7 -11
  276. package/dist/chunk-WXE4W2U6.js.map +1 -0
  277. package/dist/chunk-XBKH4FOC.js +195 -0
  278. package/dist/chunk-XBKH4FOC.js.map +1 -0
  279. package/dist/{chunk-TUFM4UZP.js → chunk-XQRFSKYM.js} +2 -2
  280. package/dist/{chunk-3V4KWFX7.js → chunk-XSPFDUDG.js} +58 -53
  281. package/dist/chunk-XSPFDUDG.js.map +1 -0
  282. package/dist/{chunk-GY4WYNNG.js → chunk-Y2RKVFKR.js} +2 -2
  283. package/dist/{chunk-UP4BECPY.js → chunk-Y3LPTBG7.js} +89 -27
  284. package/dist/chunk-Y3LPTBG7.js.map +1 -0
  285. package/dist/{chunk-4OZNXTO4.js → chunk-YRXFFWG4.js} +2 -2
  286. package/dist/classified/index.js +5 -5
  287. package/dist/{classified-marker-BWOFVYAC.js → classified-marker-SIYKUU5L.js} +3 -3
  288. package/dist/classified-marker-SIYKUU5L.js.map +1 -0
  289. package/dist/collection-facade-CS7CA2XO.js +47 -0
  290. package/dist/{computed-VPOKQK4N.js → computed-FAD7SED4.js} +3 -3
  291. package/dist/consent/index.js +10 -11
  292. package/dist/consent/index.js.map +1 -1
  293. package/dist/cover/index.js +10 -11
  294. package/dist/coverage/index.js +306 -0
  295. package/dist/coverage/index.js.map +1 -0
  296. package/dist/custody/index.js +12 -13
  297. package/dist/{dead-filter-PKQDLOT4.js → dead-filter-4F3LWYKH.js} +11 -3
  298. package/dist/dead-filter-4F3LWYKH.js.map +1 -0
  299. package/dist/debug/index.js +11 -2
  300. package/dist/debug/index.js.map +1 -1
  301. package/dist/{delegation-DS5NRILW.js → delegation-NANZDG4N.js} +13 -16
  302. package/dist/delegation-NANZDG4N.js.map +1 -0
  303. package/dist/derivations/index.js +25 -23
  304. package/dist/derive-XLOJVXPU.js +20 -0
  305. package/dist/directory/index.js +10 -11
  306. package/dist/{dispatch-IEPAVQUM.js → dispatch-H4HV32AM.js} +5 -5
  307. package/dist/{dispatch-Q6MWLOJY.js → dispatch-JDZNGEB3.js} +20 -21
  308. package/dist/dispatch-JDZNGEB3.js.map +1 -0
  309. package/dist/executor-FMPVN6DT.js +35 -0
  310. package/dist/executor-LBBBRTN5.js +8 -0
  311. package/dist/executor-OSRZST2U.js +8 -0
  312. package/dist/export-accessible-RAOJAAU5.js +22 -0
  313. package/dist/extract-partition-JD5CUSTG.js +37 -0
  314. package/dist/{fanout-sidecar-S3QL53YX.js → fanout-sidecar-L7NHPIOC.js} +13 -15
  315. package/dist/fanout-sidecar-L7NHPIOC.js.map +1 -0
  316. package/dist/find-JRN4RNQ5.js +10 -0
  317. package/dist/forget/index.js +9 -10
  318. package/dist/forget/index.js.map +1 -1
  319. package/dist/guards/index.js +4 -4
  320. package/dist/history/index.js +13 -14
  321. package/dist/history/index.js.map +1 -1
  322. package/dist/i18n/index.js +14 -15
  323. package/dist/i18n/index.js.map +1 -1
  324. package/dist/index.d.ts +36 -14
  325. package/dist/index.js +970 -163
  326. package/dist/index.js.map +1 -1
  327. package/dist/indexing/index.js +13 -5
  328. package/dist/indexing/index.js.map +1 -1
  329. package/dist/introspection/index.js +11 -12
  330. package/dist/issue-YIVBZUTH.js +19 -0
  331. package/dist/ivf-flat-UZ6DQDLS.js +314 -0
  332. package/dist/ivf-flat-UZ6DQDLS.js.map +1 -0
  333. package/dist/{json-schema-V3M5MUCM.js → json-schema-3SHX72CC.js} +2 -1
  334. package/dist/json-schema-3SHX72CC.js.map +1 -0
  335. package/dist/kernel/attestation-types.d.ts +62 -0
  336. package/dist/kernel/collection-config.d.ts +5 -68
  337. package/dist/kernel/collection.d.ts +30 -9
  338. package/dist/kernel/cutover-transform.d.ts +1 -1
  339. package/dist/kernel/errors.d.ts +257 -38
  340. package/dist/kernel/generation-map.d.ts +48 -0
  341. package/dist/kernel/merge-authority.d.ts +1 -1
  342. package/dist/kernel/noydb.d.ts +6 -1
  343. package/dist/kernel/paths.d.ts +29 -5
  344. package/dist/kernel/prepared-write.d.ts +1 -1
  345. package/dist/kernel/present-cache.d.ts +58 -0
  346. package/dist/kernel/query/all.d.ts +7 -0
  347. package/dist/kernel/query/builder.d.ts +601 -270
  348. package/dist/kernel/query/civil-date.d.ts +64 -0
  349. package/dist/kernel/query/cursor.d.ts +40 -0
  350. package/dist/kernel/query/distinct-key.d.ts +98 -0
  351. package/dist/kernel/query/hydration.d.ts +76 -0
  352. package/dist/kernel/query/index.d.ts +31 -15
  353. package/dist/kernel/query/internal/core.d.ts +30 -0
  354. package/dist/kernel/query/internal/hooks.d.ts +22 -0
  355. package/dist/kernel/query/internal/maintenance.d.ts +43 -0
  356. package/dist/kernel/query/live/incremental.d.ts +314 -0
  357. package/dist/kernel/query/live/index.d.ts +22 -0
  358. package/dist/kernel/query/live/install.d.ts +2 -0
  359. package/dist/kernel/query/{live.d.ts → live/live.d.ts} +39 -9
  360. package/dist/kernel/query/live/methods.d.ts +107 -0
  361. package/dist/kernel/query/predicate.d.ts +119 -1
  362. package/dist/kernel/query/reduce/date-trunc.d.ts +75 -0
  363. package/dist/kernel/query/reduce/index.d.ts +36 -0
  364. package/dist/kernel/query/reduce/install.d.ts +2 -0
  365. package/dist/kernel/query/reduce/methods.d.ts +259 -0
  366. package/dist/kernel/query/reduce/scan-methods.d.ts +121 -0
  367. package/dist/kernel/query/relate/explain.d.ts +199 -0
  368. package/dist/kernel/query/relate/index.d.ts +48 -0
  369. package/dist/kernel/query/relate/install.d.ts +2 -0
  370. package/dist/kernel/query/relate/join-on.d.ts +126 -0
  371. package/dist/kernel/query/relate/join-reduce.d.ts +16 -0
  372. package/dist/kernel/query/relate/join.d.ts +452 -0
  373. package/dist/kernel/query/relate/methods.d.ts +426 -0
  374. package/dist/kernel/query/relate/partition.d.ts +87 -0
  375. package/dist/kernel/query/relate/scan-methods.d.ts +163 -0
  376. package/dist/kernel/query/relate/traverse.d.ts +109 -0
  377. package/dist/kernel/query/scan-builder.d.ts +79 -176
  378. package/dist/kernel/query/sort-key.d.ts +52 -0
  379. package/dist/kernel/secret-mode.d.ts +1 -1
  380. package/dist/kernel/tx-write-gate.d.ts +77 -0
  381. package/dist/kernel/types.d.ts +113 -8
  382. package/dist/kernel/validation.d.ts +27 -10
  383. package/dist/kernel/vault.d.ts +11 -6
  384. package/dist/kernel/via/compose.d.ts +3 -0
  385. package/dist/kernel/via/index.d.ts +56 -0
  386. package/dist/kernel/via/pipeline.d.ts +48 -0
  387. package/dist/kernel/write-queue.d.ts +17 -0
  388. package/dist/{ledger-EDXFFZQL.js → ledger-5ZMGE44K.js} +11 -12
  389. package/dist/liberate-WZSZM2W6.js +24 -0
  390. package/dist/link-set-MFXC24VK.js +29 -0
  391. package/dist/{managed-secret-NCWEMPUQ.js → managed-secret-MFTFT22X.js} +10 -11
  392. package/dist/materialized-views/index.js +30 -24
  393. package/dist/{migrate-cek-5ENH64AA.js → migrate-cek-DZRFFOHW.js} +2 -2
  394. package/dist/money/index.js +5 -5
  395. package/dist/noydb-ITIGNKUF.js +96 -0
  396. package/dist/overlay-views/index.js +4 -4
  397. package/dist/periods/index.js +12 -13
  398. package/dist/pod/index.js +74 -67
  399. package/dist/{pod-handle-ECVCDIXW.js → pod-handle-A3LET7NO.js} +10 -11
  400. package/dist/pod-handle-A3LET7NO.js.map +1 -0
  401. package/dist/policy/index.js +10 -11
  402. package/dist/port/on/index.d.ts +1 -1
  403. package/dist/port/to/index.d.ts +1 -1
  404. package/dist/port/with/blob-strategy.d.ts +10 -1
  405. package/dist/port/with/classified-strategy.d.ts +1 -1
  406. package/dist/port/with/collection-options.d.ts +6 -1
  407. package/dist/port/with/collection-registries.d.ts +1 -1
  408. package/dist/port/with/coverage-strategy.d.ts +83 -0
  409. package/dist/port/with/lookup-strategy.d.ts +2 -2
  410. package/dist/port/with/service-bus.d.ts +46 -0
  411. package/dist/port/with/strategies.d.ts +2 -0
  412. package/dist/portability/index.js +8 -8
  413. package/dist/{post-register-3IPCSG6Q.js → post-register-7ND27CF2.js} +6 -6
  414. package/dist/post-register-7ND27CF2.js.map +1 -0
  415. package/dist/query/all/index.js +31 -0
  416. package/dist/query/index.js +20 -32
  417. package/dist/query/live/index.js +21 -0
  418. package/dist/query/live/index.js.map +1 -0
  419. package/dist/query/reduce/index.js +33 -0
  420. package/dist/query/reduce/index.js.map +1 -0
  421. package/dist/query/relate/index.js +56 -0
  422. package/dist/query/relate/index.js.map +1 -0
  423. package/dist/reduce/index.js +72 -18
  424. package/dist/reduce/index.js.map +1 -1
  425. package/dist/register-DT5HZ2LZ.js +30 -0
  426. package/dist/registry-BHRZGZHF.js +8 -0
  427. package/dist/registry-ET6ZFFWA.js +34 -0
  428. package/dist/registry-HXFGLGTG.js +8 -0
  429. package/dist/registry-THCPDEOD.js +23 -0
  430. package/dist/request-withdrawal-AV2MJJKY.js +30 -0
  431. package/dist/{reveal-QZDHSGD4.js → reveal-B2TLP4JQ.js} +10 -9
  432. package/dist/reveal-B2TLP4JQ.js.map +1 -0
  433. package/dist/revoke-6DWIEOCV.js +24 -0
  434. package/dist/satellites/index.js +1 -1
  435. package/dist/schema-update/index.js +2 -2
  436. package/dist/sealed-record/index.js +16 -18
  437. package/dist/sealed-record/index.js.map +1 -1
  438. package/dist/search/index.js +11 -5
  439. package/dist/{seed-X5CC22CQ.js → seed-XNSE4U3S.js} +15 -18
  440. package/dist/seed-XNSE4U3S.js.map +1 -0
  441. package/dist/sequence/index.js +9 -10
  442. package/dist/session/index.js +9 -10
  443. package/dist/session/index.js.map +1 -1
  444. package/dist/shadow/index.js +2 -2
  445. package/dist/signer-MHGW3OIL.js +23 -0
  446. package/dist/snapshots/index.js +11 -11
  447. package/dist/stale-6GCFMOOR.js +28 -0
  448. package/dist/storage-BYN5LO6Z.js +21 -0
  449. package/dist/storage-BYN5LO6Z.js.map +1 -0
  450. package/dist/store/index.js +1 -1
  451. package/dist/{store-coordination-provider-4WZAIRHC.js → store-coordination-provider-C4BPT5XF.js} +11 -12
  452. package/dist/store-coordination-provider-C4BPT5XF.js.map +1 -0
  453. package/dist/sync/index.js +10 -11
  454. package/dist/sync/index.js.map +1 -1
  455. package/dist/team/index.js +17 -16
  456. package/dist/tiers/index.js +13 -12
  457. package/dist/to/index.js +2 -2
  458. package/dist/transactions/index.js +3 -3
  459. package/dist/util/index.js +1 -1
  460. package/dist/vault-head/index.js +11 -14
  461. package/dist/vault-head/index.js.map +1 -1
  462. package/dist/{verify-6MDTIUEV.js → verify-UKALW7C2.js} +14 -12
  463. package/dist/verify-UKALW7C2.js.map +1 -0
  464. package/dist/via/blob/index.d.ts +1 -0
  465. package/dist/via/classified/binding.d.ts +2 -2
  466. package/dist/via/classified/config-drift.d.ts +2 -2
  467. package/dist/via/classified/errors.d.ts +1 -1
  468. package/dist/via/geo/binding.d.ts +31 -0
  469. package/dist/via/geo/descriptor.d.ts +54 -0
  470. package/dist/via/geo/geohash.d.ts +95 -0
  471. package/dist/via/geo/index.d.ts +13 -0
  472. package/dist/via/geo/where.d.ts +50 -0
  473. package/dist/via/i18n/core.d.ts +1 -1
  474. package/dist/via/lookup/handle.d.ts +4 -4
  475. package/dist/via/lookup/registry.d.ts +1 -1
  476. package/dist/via/lookup/snapshot.d.ts +3 -3
  477. package/dist/walk-4VPK7AS4.js +20 -0
  478. package/dist/walk-4VPK7AS4.js.map +1 -0
  479. package/dist/with-audit/attestation/index.d.ts +2 -1
  480. package/dist/with-audit/attestation/issue.d.ts +2 -2
  481. package/dist/with-audit/attestation/revoke.d.ts +2 -2
  482. package/dist/with-audit/attestation/scheme.d.ts +7 -0
  483. package/dist/with-audit/attestation/signer.d.ts +1 -1
  484. package/dist/with-audit/attestation/strategy.d.ts +2 -2
  485. package/dist/with-audit/attestation/types.d.ts +10 -0
  486. package/dist/with-audit/attestation/vault-facade.d.ts +2 -2
  487. package/dist/with-audit/attestation/verifier.d.ts +6 -0
  488. package/dist/with-audit/consent/consent.d.ts +1 -1
  489. package/dist/with-audit/consent/strategy.d.ts +1 -1
  490. package/dist/with-audit/coverage/accounting.d.ts +112 -0
  491. package/dist/with-audit/coverage/active.d.ts +29 -0
  492. package/dist/with-audit/coverage/index.d.ts +61 -0
  493. package/dist/with-audit/coverage/sketch.d.ts +75 -0
  494. package/dist/with-audit/forget/subject-index.d.ts +1 -1
  495. package/dist/with-audit/periods/periods.d.ts +55 -7
  496. package/dist/with-audit/periods/reserved-collections.d.ts +3 -0
  497. package/dist/with-audit/periods/vault-facade.d.ts +18 -1
  498. package/dist/with-audit/sealed-record/index.d.ts +2 -2
  499. package/dist/with-audit/sealed-record/strategy.d.ts +1 -1
  500. package/dist/with-audit/tiers/index.d.ts +53 -2
  501. package/dist/with-audit/tiers/strategy.d.ts +8 -0
  502. package/dist/with-cargo/adopt-partition.d.ts +1 -1
  503. package/dist/with-cargo/extract-partition.d.ts +1 -1
  504. package/dist/with-cargo/floor.d.ts +3 -3
  505. package/dist/with-commit/history/history.d.ts +2 -2
  506. package/dist/with-commit/history/index.d.ts +1 -1
  507. package/dist/with-commit/history/ledger/store.d.ts +1 -1
  508. package/dist/with-commit/history/strategy.d.ts +1 -1
  509. package/dist/with-commit/history/time-machine.d.ts +1 -1
  510. package/dist/with-commit/numbering/index.d.ts +1 -1
  511. package/dist/with-commit/sequence/index.d.ts +1 -1
  512. package/dist/with-commit/tx/invariants.d.ts +1 -1
  513. package/dist/with-commit/tx/transaction.d.ts +13 -3
  514. package/dist/with-commit/vault-head/head.d.ts +1 -1
  515. package/dist/with-commit/vault-head/index.d.ts +1 -1
  516. package/dist/with-commit/vault-head/strategy.d.ts +1 -1
  517. package/dist/with-commit/vault-head/verify.d.ts +1 -1
  518. package/dist/with-formula/derivations/dispatch.d.ts +1 -1
  519. package/dist/with-formula/derivations/fanout-sidecar.d.ts +1 -1
  520. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +4 -3
  521. package/dist/with-formula/materialized-views/emit-memo.d.ts +40 -0
  522. package/dist/with-formula/materialized-views/executor.d.ts +8 -0
  523. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  524. package/dist/with-formula/materialized-views/registry.d.ts +15 -0
  525. package/dist/with-formula/materialized-views/types.d.ts +106 -14
  526. package/dist/with-formula/materialized-views/window-stage.d.ts +11 -0
  527. package/dist/with-formula/overlay-views/types.d.ts +1 -1
  528. package/dist/with-formula/overlay-views/virtual-collection.d.ts +13 -4
  529. package/dist/with-lookup/embeddings/chunks.d.ts +79 -0
  530. package/dist/with-lookup/embeddings/descriptor.d.ts +21 -0
  531. package/dist/with-lookup/embeddings/index.d.ts +3 -0
  532. package/dist/with-lookup/embeddings/ivf-flat.d.ts +93 -0
  533. package/dist/with-lookup/embeddings/vector-index.d.ts +73 -0
  534. package/dist/with-lookup/embeddings/vector-set.d.ts +94 -1
  535. package/dist/with-lookup/embeddings/with-vector-index.d.ts +67 -0
  536. package/dist/with-lookup/indexing/collection-facade.d.ts +86 -3
  537. package/dist/with-lookup/indexing/compound-indexes.d.ts +129 -0
  538. package/dist/with-lookup/indexing/eager-indexes.d.ts +170 -1
  539. package/dist/with-lookup/indexing/index-snapshot.d.ts +62 -0
  540. package/dist/with-lookup/indexing/lazy-builder.d.ts +33 -0
  541. package/dist/with-lookup/indexing/persisted-field-indexes.d.ts +104 -0
  542. package/dist/with-lookup/indexing/persisted-indexes.d.ts +12 -0
  543. package/dist/with-lookup/indexing/sorted-indexes.d.ts +117 -0
  544. package/dist/with-lookup/indexing/unique-constraints.d.ts +106 -23
  545. package/dist/with-lookup/reduce/active.d.ts +2 -24
  546. package/dist/with-lookup/reduce/group-core.d.ts +43 -0
  547. package/dist/with-lookup/reduce/groupby.d.ts +195 -36
  548. package/dist/with-lookup/reduce/incremental-group.d.ts +153 -0
  549. package/dist/with-lookup/reduce/index.d.ts +26 -5
  550. package/dist/with-lookup/reduce/reducers.d.ts +255 -1
  551. package/dist/with-lookup/reduce/reduction.d.ts +44 -13
  552. package/dist/with-lookup/reduce/strategy.d.ts +43 -3
  553. package/dist/with-lookup/reduce/window.d.ts +262 -0
  554. package/dist/with-lookup/search/collection-facade.d.ts +45 -9
  555. package/dist/with-lookup/search/index-store.d.ts +5 -3
  556. package/dist/with-lookup/search/index.d.ts +4 -2
  557. package/dist/with-lookup/search/inverted-index.d.ts +38 -2
  558. package/dist/with-lookup/search/persisted-index-store.d.ts +5 -2
  559. package/dist/with-lookup/search/phrase.d.ts +28 -0
  560. package/dist/with-lookup/search/retrieve-types.d.ts +57 -1
  561. package/dist/with-lookup/search/serialize.d.ts +29 -3
  562. package/dist/with-lookup/search/strategy.d.ts +2 -6
  563. package/dist/with-party/broker/index.d.ts +3 -3
  564. package/dist/with-party/directory/cover/index.d.ts +1 -1
  565. package/dist/with-party/directory/cover/storage.d.ts +1 -1
  566. package/dist/with-party/directory/cover/types.d.ts +1 -1
  567. package/dist/with-party/directory/index.d.ts +1 -1
  568. package/dist/with-party/directory/types.d.ts +1 -1
  569. package/dist/with-party/directory/user-envelope/api.d.ts +1 -1
  570. package/dist/with-party/directory/user-envelope/storage.d.ts +1 -1
  571. package/dist/with-party/policy/engine.d.ts +1 -1
  572. package/dist/with-party/policy/index.d.ts +1 -1
  573. package/dist/with-party/policy/presets.d.ts +1 -1
  574. package/dist/with-party/team/authenticators.d.ts +91 -1
  575. package/dist/with-party/team/delegation.d.ts +1 -1
  576. package/dist/with-party/team/echo-secret.d.ts +2 -2
  577. package/dist/with-party/team/index.d.ts +4 -3
  578. package/dist/with-party/team/keyring.d.ts +2 -2
  579. package/dist/with-party/team/magic-link-grant.d.ts +1 -1
  580. package/dist/with-party/team/managed-secret.d.ts +1 -1
  581. package/dist/with-party/team/noydb-facade.d.ts +12 -3
  582. package/dist/with-party/team/recovery.d.ts +1 -1
  583. package/dist/with-party/team/roster-tag.d.ts +1 -1
  584. package/dist/with-party/team/rotate-recover.d.ts +1 -1
  585. package/dist/with-party/team/wrapped-deks.d.ts +1 -1
  586. package/dist/with-pod/format.d.ts +1 -1
  587. package/dist/with-pod/index.d.ts +1 -1
  588. package/dist/with-pod/pod.d.ts +1 -1
  589. package/dist/with-shape/blobs/blob-compaction.d.ts +17 -1
  590. package/dist/with-shape/blobs/blob-intent.d.ts +1 -1
  591. package/dist/with-shape/blobs/blob-set.d.ts +23 -4
  592. package/dist/with-shape/blobs/legacy-sweep.d.ts +35 -0
  593. package/dist/with-shape/introspection/describe.d.ts +7 -1
  594. package/dist/with-shape/introspection/field-meta.d.ts +18 -0
  595. package/dist/with-shape/introspection/types.d.ts +57 -1
  596. package/dist/with-shape/introspection/walk.d.ts +1 -1
  597. package/dist/with-shape/links/lazy-handle.d.ts +1 -1
  598. package/dist/with-shape/links/link-set.d.ts +1 -1
  599. package/dist/with-shape/links/vault-facade.d.ts +1 -1
  600. package/dist/with-shape/manifest/derive.d.ts +1 -1
  601. package/dist/with-shape/manifest/storage.d.ts +1 -1
  602. package/dist/with-shape/persisted-schemas/register.d.ts +1 -1
  603. package/dist/with-shape/persisted-schemas/storage.d.ts +1 -1
  604. package/dist/with-shape/satellites/dead-filter.d.ts +1 -1
  605. package/dist/with-shape/satellites/declare.d.ts +1 -1
  606. package/dist/with-shape/satellites/marker.d.ts +1 -1
  607. package/dist/with-shape/satellites/post-register.d.ts +1 -1
  608. package/dist/with-store/partitioned/index.d.ts +337 -0
  609. package/dist/with-sync/change-broadcast.d.ts +153 -0
  610. package/dist/with-sync/presence.d.ts +5 -10
  611. package/dist/withdraw-accessible-HL7GACUE.js +27 -0
  612. package/dist/withdraw-accessible-HL7GACUE.js.map +1 -0
  613. package/package.json +48 -12
  614. package/dist/api-WYW4YEQG.js +0 -19
  615. package/dist/backup-XKCXVKV3.js.map +0 -1
  616. package/dist/chunk-2577DKXB.js.map +0 -1
  617. package/dist/chunk-2ENE6445.js.map +0 -1
  618. package/dist/chunk-2N5ML6HT.js.map +0 -1
  619. package/dist/chunk-334WSVOW.js.map +0 -1
  620. package/dist/chunk-3BVH633C.js.map +0 -1
  621. package/dist/chunk-3PGS7TYR.js.map +0 -1
  622. package/dist/chunk-3V4KWFX7.js.map +0 -1
  623. package/dist/chunk-453F654R.js.map +0 -1
  624. package/dist/chunk-4GFX6MPA.js.map +0 -1
  625. package/dist/chunk-4GVM6QZA.js.map +0 -1
  626. package/dist/chunk-4ZS56W5S.js.map +0 -1
  627. package/dist/chunk-5VCRVKOZ.js.map +0 -1
  628. package/dist/chunk-6YXCPL4T.js.map +0 -1
  629. package/dist/chunk-7APJ6CO6.js.map +0 -1
  630. package/dist/chunk-7MG2LHO5.js +0 -1616
  631. package/dist/chunk-7MG2LHO5.js.map +0 -1
  632. package/dist/chunk-7MG7SJT7.js.map +0 -1
  633. package/dist/chunk-7O3Y4PPD.js.map +0 -1
  634. package/dist/chunk-A2HKRLPV.js.map +0 -1
  635. package/dist/chunk-A66I4JOA.js.map +0 -1
  636. package/dist/chunk-ACAQ2DSG.js.map +0 -1
  637. package/dist/chunk-ATL3ZVXT.js +0 -151
  638. package/dist/chunk-ATL3ZVXT.js.map +0 -1
  639. package/dist/chunk-AYX7AINO.js.map +0 -1
  640. package/dist/chunk-BLN54W3L.js.map +0 -1
  641. package/dist/chunk-BRLKZUBT.js +0 -95
  642. package/dist/chunk-BRLKZUBT.js.map +0 -1
  643. package/dist/chunk-BTDR2PXY.js +0 -29
  644. package/dist/chunk-BTDR2PXY.js.map +0 -1
  645. package/dist/chunk-BVN6KXL2.js.map +0 -1
  646. package/dist/chunk-CHQCZZWC.js.map +0 -1
  647. package/dist/chunk-CUQPWYRX.js.map +0 -1
  648. package/dist/chunk-CUZLNGD5.js.map +0 -1
  649. package/dist/chunk-DFMWUOU5.js.map +0 -1
  650. package/dist/chunk-EIPVYUEP.js.map +0 -1
  651. package/dist/chunk-EQEYOJBM.js.map +0 -1
  652. package/dist/chunk-F3W6YMDC.js.map +0 -1
  653. package/dist/chunk-FET5XCAT.js.map +0 -1
  654. package/dist/chunk-G73UVHCA.js.map +0 -1
  655. package/dist/chunk-GPNTB4Y7.js.map +0 -1
  656. package/dist/chunk-GYGLAVCX.js.map +0 -1
  657. package/dist/chunk-HIWCKBEY.js.map +0 -1
  658. package/dist/chunk-HJUWN7JN.js.map +0 -1
  659. package/dist/chunk-HK67PX4J.js.map +0 -1
  660. package/dist/chunk-HPVZCW43.js +0 -479
  661. package/dist/chunk-HPVZCW43.js.map +0 -1
  662. package/dist/chunk-I3ISCYT7.js +0 -159
  663. package/dist/chunk-I3ISCYT7.js.map +0 -1
  664. package/dist/chunk-K23VKTN4.js.map +0 -1
  665. package/dist/chunk-KKEESNPE.js.map +0 -1
  666. package/dist/chunk-KTFRCC5C.js.map +0 -1
  667. package/dist/chunk-LH5A3ZPG.js.map +0 -1
  668. package/dist/chunk-LP7BEXCT.js +0 -32
  669. package/dist/chunk-LP7BEXCT.js.map +0 -1
  670. package/dist/chunk-M4YPHYEH.js.map +0 -1
  671. package/dist/chunk-NSITFOCJ.js +0 -99
  672. package/dist/chunk-NSITFOCJ.js.map +0 -1
  673. package/dist/chunk-OTQZ7ZWU.js.map +0 -1
  674. package/dist/chunk-P3MG6QCN.js.map +0 -1
  675. package/dist/chunk-PEOZ34EM.js.map +0 -1
  676. package/dist/chunk-PPTHY5QO.js.map +0 -1
  677. package/dist/chunk-Q2MPFCQ7.js.map +0 -1
  678. package/dist/chunk-Q7HZX3IF.js.map +0 -1
  679. package/dist/chunk-QPQUVOZ2.js.map +0 -1
  680. package/dist/chunk-QTQUH4DS.js.map +0 -1
  681. package/dist/chunk-R42NSZI6.js.map +0 -1
  682. package/dist/chunk-R7BX2NB3.js.map +0 -1
  683. package/dist/chunk-RSGLUIO6.js.map +0 -1
  684. package/dist/chunk-RTBJ5IOO.js +0 -87
  685. package/dist/chunk-RTBJ5IOO.js.map +0 -1
  686. package/dist/chunk-SGZAIJCV.js.map +0 -1
  687. package/dist/chunk-SKGMN35F.js.map +0 -1
  688. package/dist/chunk-SPYWXKJN.js.map +0 -1
  689. package/dist/chunk-SZJ3DLZA.js +0 -66
  690. package/dist/chunk-SZJ3DLZA.js.map +0 -1
  691. package/dist/chunk-TRGTKX5E.js.map +0 -1
  692. package/dist/chunk-UDHWDSRL.js.map +0 -1
  693. package/dist/chunk-UP4BECPY.js.map +0 -1
  694. package/dist/chunk-UXVWEX5L.js.map +0 -1
  695. package/dist/chunk-V7ZRRCRJ.js.map +0 -1
  696. package/dist/chunk-WQBG4SZS.js.map +0 -1
  697. package/dist/chunk-XKWGNJ26.js.map +0 -1
  698. package/dist/chunk-YMUFFJCO.js.map +0 -1
  699. package/dist/chunk-ZHKOPKE3.js.map +0 -1
  700. package/dist/chunk-ZN4FD4PE.js +0 -364
  701. package/dist/chunk-ZN4FD4PE.js.map +0 -1
  702. package/dist/chunk-ZORTV6NH.js.map +0 -1
  703. package/dist/chunk-ZYIYHJ5R.js.map +0 -1
  704. package/dist/classified-marker-BWOFVYAC.js.map +0 -1
  705. package/dist/collection-facade-JSJYIKS4.js +0 -45
  706. package/dist/dead-filter-PKQDLOT4.js.map +0 -1
  707. package/dist/delegation-DS5NRILW.js.map +0 -1
  708. package/dist/derive-E642AOUB.js +0 -21
  709. package/dist/dispatch-Q6MWLOJY.js.map +0 -1
  710. package/dist/executor-5NIMLSKZ.js +0 -8
  711. package/dist/executor-7UQ3BZ4F.js +0 -29
  712. package/dist/executor-AQVXV5GZ.js +0 -8
  713. package/dist/export-accessible-ORMKLA3E.js +0 -22
  714. package/dist/extract-partition-NKYO3WNG.js +0 -37
  715. package/dist/fanout-sidecar-S3QL53YX.js.map +0 -1
  716. package/dist/find-NOGJ25VX.js +0 -10
  717. package/dist/issue-3DTQ7VJJ.js +0 -18
  718. package/dist/json-schema-V3M5MUCM.js.map +0 -1
  719. package/dist/kernel/enclave/classify/compare.d.ts +0 -10
  720. package/dist/kernel/enclave/index.d.ts +0 -87
  721. package/dist/kernel/enclave/record-keys/lifecycle.d.ts +0 -124
  722. package/dist/kernel/enclave/record-keys/rekey-blob.d.ts +0 -88
  723. package/dist/kernel/enclave/record-keys/rekey.d.ts +0 -91
  724. package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +0 -14
  725. package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +0 -123
  726. package/dist/kernel/enclave/record-keys/sealing.d.ts +0 -70
  727. package/dist/kernel/query/join.d.ts +0 -232
  728. package/dist/liberate-V35QUHJP.js +0 -24
  729. package/dist/link-set-2TTM3IZC.js +0 -30
  730. package/dist/noydb-62MX4QUG.js +0 -90
  731. package/dist/pod-handle-ECVCDIXW.js.map +0 -1
  732. package/dist/post-register-3IPCSG6Q.js.map +0 -1
  733. package/dist/register-HHLXEQDN.js +0 -31
  734. package/dist/registry-23WF3TGH.js +0 -8
  735. package/dist/registry-4AYVUNXK.js +0 -8
  736. package/dist/registry-JS3YFQQM.js +0 -18
  737. package/dist/registry-XX2Z7B46.js +0 -32
  738. package/dist/request-withdrawal-CHPATE4G.js +0 -30
  739. package/dist/reveal-QZDHSGD4.js.map +0 -1
  740. package/dist/revoke-7M2VW4ON.js +0 -23
  741. package/dist/seed-X5CC22CQ.js.map +0 -1
  742. package/dist/signer-SJQJVSM6.js +0 -24
  743. package/dist/stale-BZS6H2RY.js +0 -29
  744. package/dist/storage-RW4QBS23.js +0 -22
  745. package/dist/store-coordination-provider-4WZAIRHC.js.map +0 -1
  746. package/dist/verify-6MDTIUEV.js.map +0 -1
  747. package/dist/walk-ZURCH6RZ.js +0 -21
  748. package/dist/withdraw-accessible-PXR4IXDX.js +0 -27
  749. /package/dist/{api-WYW4YEQG.js.map → api-OS747DS4.js.map} +0 -0
  750. /package/dist/{computed-VPOKQK4N.js.map → capsule/contract.js.map} +0 -0
  751. /package/dist/{kernel/enclave → capsule/enclave-aes}/broker/proof.d.ts +0 -0
  752. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/bidx.d.ts +0 -0
  753. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/digest.d.ts +0 -0
  754. /package/dist/{kernel/enclave → capsule/enclave-aes}/classify/vdig.d.ts +0 -0
  755. /package/dist/{kernel/enclave/classify → capsule/plumbing}/kofn.d.ts +0 -0
  756. /package/dist/{kernel/enclave/classify → capsule/plumbing}/normalize.d.ts +0 -0
  757. /package/dist/{kernel/enclave → capsule/plumbing}/record-aad.d.ts +0 -0
  758. /package/dist/{collection-facade-JSJYIKS4.js.map → capsule-VOLX3QRQ.js.map} +0 -0
  759. /package/dist/{chunk-MVMXZYXT.js.map → chunk-2GHDLTPE.js.map} +0 -0
  760. /package/dist/{chunk-XLMEZIAJ.js.map → chunk-2ODVB6LZ.js.map} +0 -0
  761. /package/dist/{chunk-RMS3NEA3.js.map → chunk-4JPMZTJY.js.map} +0 -0
  762. /package/dist/{chunk-NQKIUNW5.js.map → chunk-52MGURXO.js.map} +0 -0
  763. /package/dist/{chunk-UGTBXF5U.js.map → chunk-7XMHMVTS.js.map} +0 -0
  764. /package/dist/{chunk-BZ3534YM.js.map → chunk-AUKKUPVB.js.map} +0 -0
  765. /package/dist/{derive-E642AOUB.js.map → chunk-BKT776R5.js.map} +0 -0
  766. /package/dist/{chunk-6LKOJBV6.js.map → chunk-BVCUTXE3.js.map} +0 -0
  767. /package/dist/{chunk-VTFVLCUH.js.map → chunk-DIZLQVAA.js.map} +0 -0
  768. /package/dist/{chunk-LWBCUYZW.js.map → chunk-E2N2T5ZO.js.map} +0 -0
  769. /package/dist/{chunk-JVIBCBC7.js.map → chunk-EJLV62NI.js.map} +0 -0
  770. /package/dist/{chunk-JMGDHKQF.js.map → chunk-FLPCETP6.js.map} +0 -0
  771. /package/dist/{chunk-DGOZ4UZD.js.map → chunk-FVH5QYY2.js.map} +0 -0
  772. /package/dist/{chunk-JBDFMYKQ.js.map → chunk-GZT3NQRA.js.map} +0 -0
  773. /package/dist/{chunk-TFR7DSOV.js.map → chunk-H427H63K.js.map} +0 -0
  774. /package/dist/{chunk-SMH6SRX7.js.map → chunk-JOSPH3E5.js.map} +0 -0
  775. /package/dist/{chunk-3BZZJJMQ.js.map → chunk-MILI22XQ.js.map} +0 -0
  776. /package/dist/{chunk-YYP7WSEB.js.map → chunk-O2IMQSNA.js.map} +0 -0
  777. /package/dist/{chunk-QIZPZMUI.js.map → chunk-Q4UHJ5SN.js.map} +0 -0
  778. /package/dist/{chunk-FAHMLERK.js.map → chunk-QBLT6POL.js.map} +0 -0
  779. /package/dist/{chunk-BUE2D7PX.js.map → chunk-SMV2HRDU.js.map} +0 -0
  780. /package/dist/{chunk-SFAWCTEM.js.map → chunk-TZZBXPZK.js.map} +0 -0
  781. /package/dist/{chunk-UHHPLO3I.js.map → chunk-V3RWOOSO.js.map} +0 -0
  782. /package/dist/{chunk-Q2PU57HC.js.map → chunk-VVOLDVIR.js.map} +0 -0
  783. /package/dist/{chunk-TUFM4UZP.js.map → chunk-XQRFSKYM.js.map} +0 -0
  784. /package/dist/{chunk-GY4WYNNG.js.map → chunk-Y2RKVFKR.js.map} +0 -0
  785. /package/dist/{chunk-4OZNXTO4.js.map → chunk-YRXFFWG4.js.map} +0 -0
  786. /package/dist/{enclave-55PAM4YO.js.map → collection-facade-CS7CA2XO.js.map} +0 -0
  787. /package/dist/{executor-5NIMLSKZ.js.map → computed-FAD7SED4.js.map} +0 -0
  788. /package/dist/{executor-7UQ3BZ4F.js.map → derive-XLOJVXPU.js.map} +0 -0
  789. /package/dist/{dispatch-IEPAVQUM.js.map → dispatch-H4HV32AM.js.map} +0 -0
  790. /package/dist/{executor-AQVXV5GZ.js.map → executor-FMPVN6DT.js.map} +0 -0
  791. /package/dist/{export-accessible-ORMKLA3E.js.map → executor-LBBBRTN5.js.map} +0 -0
  792. /package/dist/{extract-partition-NKYO3WNG.js.map → executor-OSRZST2U.js.map} +0 -0
  793. /package/dist/{find-NOGJ25VX.js.map → export-accessible-RAOJAAU5.js.map} +0 -0
  794. /package/dist/{issue-3DTQ7VJJ.js.map → extract-partition-JD5CUSTG.js.map} +0 -0
  795. /package/dist/{ledger-EDXFFZQL.js.map → find-JRN4RNQ5.js.map} +0 -0
  796. /package/dist/{liberate-V35QUHJP.js.map → issue-YIVBZUTH.js.map} +0 -0
  797. /package/dist/{link-set-2TTM3IZC.js.map → ledger-5ZMGE44K.js.map} +0 -0
  798. /package/dist/{managed-secret-NCWEMPUQ.js.map → liberate-WZSZM2W6.js.map} +0 -0
  799. /package/dist/{noydb-62MX4QUG.js.map → link-set-MFXC24VK.js.map} +0 -0
  800. /package/dist/{register-HHLXEQDN.js.map → managed-secret-MFTFT22X.js.map} +0 -0
  801. /package/dist/{migrate-cek-5ENH64AA.js.map → migrate-cek-DZRFFOHW.js.map} +0 -0
  802. /package/dist/{registry-23WF3TGH.js.map → noydb-ITIGNKUF.js.map} +0 -0
  803. /package/dist/{registry-4AYVUNXK.js.map → query/all/index.js.map} +0 -0
  804. /package/dist/{registry-JS3YFQQM.js.map → register-DT5HZ2LZ.js.map} +0 -0
  805. /package/dist/{registry-XX2Z7B46.js.map → registry-BHRZGZHF.js.map} +0 -0
  806. /package/dist/{request-withdrawal-CHPATE4G.js.map → registry-ET6ZFFWA.js.map} +0 -0
  807. /package/dist/{revoke-7M2VW4ON.js.map → registry-HXFGLGTG.js.map} +0 -0
  808. /package/dist/{signer-SJQJVSM6.js.map → registry-THCPDEOD.js.map} +0 -0
  809. /package/dist/{stale-BZS6H2RY.js.map → request-withdrawal-AV2MJJKY.js.map} +0 -0
  810. /package/dist/{storage-RW4QBS23.js.map → revoke-6DWIEOCV.js.map} +0 -0
  811. /package/dist/{walk-ZURCH6RZ.js.map → signer-MHGW3OIL.js.map} +0 -0
  812. /package/dist/{withdraw-accessible-PXR4IXDX.js.map → stale-6GCFMOOR.js.map} +0 -0
@@ -0,0 +1,314 @@
1
+ /**
2
+ * Incremental (delta) maintenance for `.live()` — #1341.
3
+ *
4
+ * A live query used to re-run its whole plan on every change event: scan
5
+ * every record in the collection, re-evaluate every clause, re-sort, re-slice.
6
+ * That is O(N log N) per keystroke-sized mutation and is what makes a reactive
7
+ * list unusable at 10k+ rows.
8
+ *
9
+ * This module maintains the match set instead. Given a change event
10
+ * `{ id, action }` it re-evaluates the predicate for **that record only** and
11
+ * splices it into (or out of) a sorted array, so the per-change cost is
12
+ * O(log k) comparisons + one array splice, where k is the number of MATCHING
13
+ * records rather than N.
14
+ *
15
+ * ## The correctness contract
16
+ *
17
+ * The maintained array must be **identical** — same records, same order — to
18
+ * what a full re-run would produce, at every step. Two things buy that:
19
+ *
20
+ * 1. **Membership is delegated.** The caller passes the very `matches()`
21
+ * closure the full pipeline uses (`filterRecords` over the plan's
22
+ * clauses), so a maintained membership decision cannot drift from an
23
+ * eagerly-computed one. This module never re-implements a predicate.
24
+ *
25
+ * 2. **The ordering is delegated too, and then made total.** The sort keys
26
+ * are read and ranked by the query's own order key plan — the same
27
+ * `buildOrderKeyPlan`/`orderKeyOf`/`compareOrderKeys` trio `sortRecords`
28
+ * sorts with and the keyset cursor compares against (#1346), so there is
29
+ * one definition of "what order is this query in" rather than two that
30
+ * drift. What that trio does NOT decide is equal keys: `compareOrderKeys`
31
+ * is handed two KEY TUPLES, not two records, so with equal keys its
32
+ * inputs are indistinguishable and 0 is the only answer it can give —
33
+ * structurally, not by convention. (#1346 breaks its own ties one level
34
+ * up, at the `page()` call site, never inside the comparator.) The eager
35
+ * path lets its stable sort resolve those, leaving them in candidate =
36
+ * snapshot order; we append each record's snapshot position as a final
37
+ * key, which is the same resolution stated explicitly — and being
38
+ * explicit is what lets a binary search land on an exact index.
39
+ *
40
+ * ⚠️ That rests on one property of the backing cache: **snapshot order is
41
+ * `Map` insertion order.** `Map.set` on an existing key keeps its slot
42
+ * (so an update never moves a record), a new key appends (so a new record
43
+ * sorts last among ties), and `delete` removes without reordering the
44
+ * rest. `Collection`'s eager cache is a `Map`, so this holds. A source
45
+ * whose snapshot order is not insertion-stable must not be maintained —
46
+ * it would produce a correct SET in a wrong ORDER among ties.
47
+ *
48
+ * Anything not provably patchable falls back to a full rebuild: an unknown
49
+ * (payload-less) change event, an error thrown mid-patch, or a plan shape
50
+ * `canMaintainIncrementally()` refuses. **The fallback is the default** —
51
+ * `canMaintainIncrementally` is a whitelist, not a blacklist.
52
+ *
53
+ * ## Stacking on top of it
54
+ *
55
+ * `apply()` reports what it did as a `PatchOutcome`, and `maintainedEntries()`
56
+ * exposes the set with its snapshot sequence numbers. Together those let a
57
+ * DERIVED maintainer mirror this one without forking its membership logic —
58
+ * which is exactly what per-group maintenance for
59
+ * `groupBy().aggregate().live()` does (`with-lookup/reduce/incremental-group.ts`).
60
+ * A layer built that way inherits the whitelist and the fallback rather than
61
+ * re-deciding them, so there is one answer to "can this plan be maintained"
62
+ * rather than two that drift.
63
+ */
64
+ import type { Clause } from '../predicate.js';
65
+ import type { OrderBy } from '../builder.js';
66
+ /**
67
+ * The delta a source hands to its `subscribe` callback: which record changed
68
+ * and whether it was written or removed. Deliberately the same shape as the
69
+ * hub-level `ChangeEvent` minus the vault/collection routing fields, which
70
+ * the source has already filtered on.
71
+ *
72
+ * A source that cannot say WHICH record changed simply calls its callback with
73
+ * no argument — every consumer treats that as "rebuild from scratch", which is
74
+ * exactly the pre-#1341 behaviour.
75
+ */
76
+ export interface SourceChange {
77
+ readonly id: string;
78
+ readonly action: 'put' | 'delete';
79
+ }
80
+ /**
81
+ * One side of a patch: a record that entered or left the maintained set, with
82
+ * the snapshot sequence number it occupies. `seq` is what makes a patch
83
+ * composable — a layer built ON TOP of the match set (grouped aggregation,
84
+ * #1341's second half) can place the record in its own ordering without
85
+ * re-deriving snapshot position, and sequence numbers are stable across an
86
+ * update because `Map.set` on an existing key keeps its slot.
87
+ */
88
+ export interface PatchDelta {
89
+ readonly seq: number;
90
+ readonly record: unknown;
91
+ }
92
+ /**
93
+ * What `apply()` did, so a layer stacked on the maintained set can mirror it.
94
+ *
95
+ * `'rebuilt'` is the honest answer for everything that is NOT a clean patch —
96
+ * a payload-less event, a detached maintainer, an already-stale one. A
97
+ * consumer reading it must invalidate its own derived state; it must never
98
+ * read `'rebuilt'` as "nothing happened".
99
+ *
100
+ * A `'patched'` outcome with neither `removed` nor `inserted` DID happen: a
101
+ * non-member changed and stayed a non-member. That is a no-op for every
102
+ * derived layer, which is exactly why it is reported as a patch rather than a
103
+ * rebuild.
104
+ */
105
+ export type PatchOutcome = {
106
+ readonly kind: 'rebuilt';
107
+ } | {
108
+ readonly kind: 'patched';
109
+ readonly id: string;
110
+ readonly removed?: PatchDelta;
111
+ readonly inserted?: PatchDelta;
112
+ };
113
+ /** An id-paired member of the maintained set, in maintained order. */
114
+ export interface MaintainedEntry {
115
+ readonly id: string;
116
+ readonly seq: number;
117
+ readonly record: unknown;
118
+ }
119
+ /**
120
+ * The subset of a query source a DERIVED maintainer needs (#1341, grouped
121
+ * half). Deliberately a kernel type even though its only consumer today is
122
+ * the reduce service: everything in it is a kernel concept, and declaring it
123
+ * here is what lets `kernel/query/builder.ts` hand one to the service without
124
+ * a new spine to service import specifier.
125
+ */
126
+ export interface GroupMaintenanceSource {
127
+ /**
128
+ * Id-paired snapshot, in snapshot (Map insertion) order.
129
+ *
130
+ * ⚠️ Declared as function-typed PROPERTIES, not methods: every member here
131
+ * is a standalone closure the query builder binds before handing it over,
132
+ * and property syntax says so — a method declaration would invite a `this`
133
+ * these closures do not have.
134
+ */
135
+ readonly snapshotEntries: () => readonly {
136
+ id: string;
137
+ record: unknown;
138
+ }[];
139
+ /** O(1) current-state lookup for the AFTER state of a change. */
140
+ readonly lookupById: (id: string) => unknown;
141
+ /** The plan's membership test — the same one the eager path runs. */
142
+ readonly matches: (record: unknown) => boolean;
143
+ /**
144
+ * Per-record projection the eager grouping pipeline applies AFTER filtering
145
+ * and before bucketing — today only `projectDateTruncKeys` (#1350). Applied
146
+ * per record here because the eager path applies it per record too; a
147
+ * projection that read across records could not be maintained and must not
148
+ * be plumbed through this hook.
149
+ */
150
+ readonly project?: (record: unknown) => unknown;
151
+ }
152
+ /** Everything the maintainer needs, supplied by the query builder. */
153
+ export interface MaintainerConfig {
154
+ /** Id-paired snapshot, in snapshot (Map insertion) order. */
155
+ snapshotEntries(): readonly {
156
+ id: string;
157
+ record: unknown;
158
+ }[];
159
+ /** O(1) current-state lookup, used to read the AFTER state of a change. */
160
+ lookupById(id: string): unknown;
161
+ /** The plan's membership test — the same one the eager path runs. */
162
+ matches(record: unknown): boolean;
163
+ /**
164
+ * The plan's ordering, in the same key-plan shape `sortRecords` and the
165
+ * keyset cursor use (#1346): read a record's sort-key tuple, and compare two
166
+ * of those tuples. `undefined` when the plan has no `orderBy` — result order
167
+ * is then snapshot order alone.
168
+ *
169
+ * `compare` need not be a total order: it returns 0 for equal sort keys,
170
+ * exactly as it does for the eager sort, and the maintainer resolves those
171
+ * ties by snapshot sequence.
172
+ */
173
+ order?: {
174
+ keyOf(record: unknown): unknown[];
175
+ compare(a: readonly unknown[], b: readonly unknown[]): number;
176
+ };
177
+ /** Plan offset (0 when unset). */
178
+ offset: number;
179
+ /** Plan limit, or undefined for "all matching rows". */
180
+ limit: number | undefined;
181
+ /**
182
+ * Post-slice projection the eager path applies to the emitted window (Via
183
+ * result decoding). Applied to the window, never to the maintained records,
184
+ * mirroring `toArray()` which decodes AFTER filter/sort/slice.
185
+ */
186
+ decode?: (rows: readonly unknown[]) => unknown[];
187
+ }
188
+ /**
189
+ * Reject any plan whose result set cannot be provably patched from a single
190
+ * record's delta. Everything this refuses still works — it just re-runs in
191
+ * full, as it did before #1341.
192
+ *
193
+ * Refused, and why:
194
+ * - **joins / crossJoin** — a row's membership depends on other collections'
195
+ * records, so a left-side delta does not determine the new result.
196
+ * - **`.filter(fn)`** — an arbitrary consumer closure with no determinism
197
+ * guarantee. `r => r.due < Date.now()` changes its verdict for records that
198
+ * never changed, which a full re-run observes and a patch cannot.
199
+ * (`.wherePredicate()` is admitted: it is DECLARED deterministic and
200
+ * carries a body hash saying so.)
201
+ * - **`orderBy(..., { by: 'label' })`** — the label maps are built eagerly
202
+ * from a dictionary collection's snapshot, so the comparator would be
203
+ * captured at subscribe time and go stale when that dictionary changes.
204
+ * - **an index-driven plan** — the rows then reach the pipeline in INDEX
205
+ * order rather than snapshot order, so snapshot sequence is the wrong
206
+ * tiebreak among equal sort keys. Three shapes qualify, and all three are
207
+ * refused: an `==`/`in` clause on any indexed field, a range clause on a
208
+ * SORTED-indexed field, and #1344's `orderedIndexRows()` page, which
209
+ * serves `orderBy(f).limit(n)` straight off a sorted index with no
210
+ * predicate at all. Little is lost: each of those re-runs is already
211
+ * proportional to the page or the match set, not to the collection.
212
+ */
213
+ export declare function canMaintainIncrementally(plan: {
214
+ readonly clauses: readonly Clause[];
215
+ readonly orderBy: readonly OrderBy[];
216
+ readonly limit?: number | undefined;
217
+ readonly joins: readonly unknown[];
218
+ }, indexes: IndexProbe | null): boolean;
219
+ /**
220
+ * What the maintainer needs to know about the source's indexes: which fields
221
+ * carry ANY index, and which carry a SORTED one. Both matter — the sorted
222
+ * index feeds two paths (#1344) the hash index does not.
223
+ */
224
+ export interface IndexProbe {
225
+ covers(field: string): boolean;
226
+ sorted(field: string): boolean;
227
+ }
228
+ /**
229
+ * The maintained result set behind one live query.
230
+ *
231
+ * Lifecycle: `attach()` when a subscription opens, `apply(change)` per upstream
232
+ * event, `rows()` to read the current window. Before `attach()` (and after any
233
+ * fallback) `rows()` recomputes from the snapshot, so a detached maintainer is
234
+ * simply an eager executor and is safe to read at any time.
235
+ */
236
+ export declare class LiveMaintainer {
237
+ private readonly cfg;
238
+ private entries;
239
+ private readonly memberById;
240
+ private seqById;
241
+ private maxSeq;
242
+ /** Maintained state is stale — the next `rows()` rebuilds from the snapshot. */
243
+ private stale;
244
+ /** True once a subscription is driving `apply()`. */
245
+ private attached;
246
+ constructor(cfg: MaintainerConfig);
247
+ /**
248
+ * Start accepting deltas. Every read before this rebuilds from the snapshot,
249
+ * so a detached maintainer is just an eager executor.
250
+ *
251
+ * ⚠️ Call this in the SAME synchronous turn as a read — either immediately
252
+ * before the first `rows()` (the `.live()` path) or immediately after the
253
+ * initial one (the `.aggregate().live()` path, where the reduction computes
254
+ * before it subscribes). Attaching in a turn of its own would let a mutation
255
+ * slip past unrecorded: it arrives with no subscription to `apply()` it, and
256
+ * the maintained state would then be trusted while already behind.
257
+ */
258
+ attach(): void;
259
+ /**
260
+ * Stop accepting deltas — the subscription feeding them has gone. Every
261
+ * later read rebuilds, because nothing is keeping the state current any
262
+ * more. Without this, a `Reduction` whose `.live()` was stopped would keep
263
+ * serving its last maintained value from `.run()`.
264
+ */
265
+ detach(): void;
266
+ /** Force the next read to rebuild — the caller saw something it can't patch. */
267
+ invalidate(): void;
268
+ /**
269
+ * Fold one upstream change into the maintained set. A change with no
270
+ * payload (the source could not say which record moved) invalidates
271
+ * instead — the next read pays for a full rebuild.
272
+ */
273
+ apply(change: SourceChange | undefined): PatchOutcome;
274
+ /** The current result window — a fresh array on every call. */
275
+ rows(): unknown[];
276
+ /**
277
+ * The whole maintained set — every matching record, in maintained order,
278
+ * paired with its id and snapshot sequence. Ignores `offset`/`limit`/
279
+ * `decode` on purpose: this is the input a DERIVED maintainer rebuilds from,
280
+ * and grouped aggregation reduces the full match set, never a window.
281
+ *
282
+ * Rebuilds first when detached or stale, exactly as `rows()` does, so a
283
+ * caller can read it at any time.
284
+ */
285
+ maintainedEntries(): readonly MaintainedEntry[];
286
+ /**
287
+ * Full recompute from the source snapshot. Equivalent to the eager path by
288
+ * construction: filter in snapshot order, then sort with snapshot sequence
289
+ * as the tiebreak — which is what a stable sort of the same input does.
290
+ */
291
+ private rebuild;
292
+ private patch;
293
+ private removeEntry;
294
+ /** First index whose entry does not sort before `probe`. */
295
+ private lowerBound;
296
+ private keyOf;
297
+ /**
298
+ * The eager path's ordering, made total.
299
+ *
300
+ * `order.compare` is the query's own `compareOrderKeys`, the identical
301
+ * function `sortRecords` sorts with, so sort keys cannot be read or ranked
302
+ * differently here. It returns 0 for equal keys — it can do nothing else,
303
+ * having been handed the keys rather than the records — and the eager sort
304
+ * then leaves those in the order they arrived, which is candidate order,
305
+ * which is snapshot order given `canMaintainIncrementally` has refused every
306
+ * plan whose candidates arrive in index order. The sequence number below is
307
+ * that same resolution, made explicit so a binary search has an exact
308
+ * position to find. ⚠️ If the eager path ever grows a tiebreak of its own
309
+ * (an id, say), this stops agreeing with it — which is what
310
+ * `__tests__/query-incremental.test.ts`'s "inherits an order key plan that
311
+ * leaves equal keys to the tiebreak" is there to catch.
312
+ */
313
+ private compareEntries;
314
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `@noy-db/hub/query/live` — **the Live group of the query DSL.**
3
+ *
4
+ * ```ts
5
+ * import '@noy-db/hub/query/live' // once, in your app's entry
6
+ *
7
+ * const stop = invoices.query().where('status', '==', 'paid').subscribe(rows => render(rows))
8
+ * ```
9
+ *
10
+ * ⭐ **Imported for its side effect** — it patches `subscribe` and `live` onto
11
+ * `Query.prototype` and merges their types into `Query`. See
12
+ * `../relate/index.ts` for the full note on why `package.json`'s `sideEffects`
13
+ * array must keep naming this file.
14
+ */
15
+ import type { LiveSurface } from './methods.js';
16
+ declare module '../builder.js' {
17
+ interface Query<T, S extends keyof T = never, Q extends keyof T & string = never, M extends keyof T & string = never> extends LiveSurface<T, S, Q, M> {
18
+ }
19
+ }
20
+ export { buildLiveQuery } from './live.js';
21
+ export type { LiveQuery, LiveUpstream, LiveBuildOptions } from './live.js';
22
+ export type { SourceChange } from './incremental.js';
@@ -0,0 +1,2 @@
1
+ /** Idempotent: the root barrel and the subpath entry both call it. */
2
+ export declare function installLive(): void;
@@ -38,18 +38,26 @@
38
38
  * vault + name. Vault's `resolveSource` reads from
39
39
  * `collectionCache` so this assumption holds.
40
40
  *
41
- * **What .live() does NOT do in v1:**
42
- * - No granular delta updates — the whole query re-runs on every
43
- * change. Granular delta tracking is a v2 optimization once
44
- * the API is stable.
45
- * - No batching of bursty changes one event in, one re-run
46
- * out. Batching with microtask coalescing is a v2 enhancement.
47
- * - No async notifications every notification is synchronous
41
+ * **Delta maintenance (#1341).** A live query over a plan
42
+ * `canMaintainIncrementally()` admits no longer re-runs: the change event
43
+ * carries which record moved, and `LiveMaintainer` patches the result set —
44
+ * one predicate evaluation, a binary search, a splice. The emitted value is
45
+ * identical to a re-run's, because the maintainer is handed the query's OWN
46
+ * membership test and sort comparator. Every other plan, and every
47
+ * notification that arrives without a delta, re-runs exactly as before.
48
+ *
49
+ * **What .live() still does NOT do:**
50
+ * - No batching unless asked — `live({ batch: true })` coalesces a burst
51
+ * into one recompute + one notification on a microtask; the default stays
52
+ * one event in, one notification out, because batching makes `value`
53
+ * stale until the microtask runs.
54
+ * - No async notifications — every unbatched notification is synchronous
48
55
  * within the source's change handler.
49
56
  * - No re-planning under live mutations — the planner picks once
50
57
  * at subscription time and reuses the same plan for every
51
58
  * re-run.
52
59
  */
60
+ import type { LiveMaintainer, SourceChange } from './incremental.js';
53
61
  /**
54
62
  * The reactive primitive returned by `Query.live()`.
55
63
  *
@@ -118,7 +126,29 @@ export interface LiveQuery<T> {
118
126
  * `JoinableSource.subscribe` (added in ).
119
127
  */
120
128
  export interface LiveUpstream {
121
- subscribe(cb: () => void): () => void;
129
+ /**
130
+ * `cb` may be handed the delta that caused the notification (#1341) so the
131
+ * live query can patch its result set instead of re-running. Calling it with
132
+ * NO argument is always valid and always correct — it means "something
133
+ * changed, I can't say what", and the live query answers with a full re-run.
134
+ */
135
+ subscribe(cb: (change?: SourceChange) => void): () => void;
136
+ }
137
+ /** Options for {@link buildLiveQuery}. */
138
+ export interface LiveBuildOptions {
139
+ /**
140
+ * Coalesce a burst of upstream changes into ONE recompute and ONE
141
+ * notification, flushed on a microtask (#1341). Off by default: with it on,
142
+ * `live.value` is stale until the microtask runs, so a consumer that reads
143
+ * synchronously after an `await put()` would see the old value.
144
+ */
145
+ readonly batch?: boolean;
146
+ /**
147
+ * Incremental maintainer for this query's result set. When present it
148
+ * REPLACES `recompute` as the value source — it patches per delta and
149
+ * rebuilds itself whenever a delta is not provably patchable.
150
+ */
151
+ readonly maintainer?: LiveMaintainer;
122
152
  }
123
153
  /**
124
154
  * Build a LiveQuery from a `recompute` callback (typically the
@@ -130,4 +160,4 @@ export interface LiveUpstream {
130
160
  * thrown by recompute are caught and stored in `error` instead of
131
161
  * propagating — see the file docstring for the rationale.
132
162
  */
133
- export declare function buildLiveQuery<T>(recompute: () => T[], upstreams: readonly LiveUpstream[]): LiveQuery<T>;
163
+ export declare function buildLiveQuery<T>(recompute: () => T[], upstreams: readonly LiveUpstream[], options?: LiveBuildOptions): LiveQuery<T>;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * #1458 — **Live**: the same plan, re-run on change.
3
+ *
4
+ * `subscribe` · `live`
5
+ *
6
+ * Bodies moved out of `kernel/query/builder.ts` unchanged; see
7
+ * `../relate/methods.ts` for why `this.plan` still resolves.
8
+ */
9
+ import type { DeclaredPredicate, InternalSource, QueryPlan } from '../builder.js';
10
+ import type { JoinContext } from '../relate/join.js';
11
+ import type { ReduceStrategy } from '../../../with-lookup/reduce/strategy.js';
12
+ import type { LiveQuery } from './live.js';
13
+ import type { LiveMaintainer } from './incremental.js';
14
+ import type { DateTruncKey } from '../reduce/date-trunc.js';
15
+ import type { GroupMaintenanceSource } from './incremental.js';
16
+ /** @internal — the mixin whose prototype `./index.ts` copies onto `Query`. */
17
+ export declare class LiveMethods<T, S extends keyof T = never, Q extends keyof T & string = never, M extends keyof T & string = never> {
18
+ protected readonly source: InternalSource;
19
+ protected readonly plan: QueryPlan;
20
+ protected readonly joinContext: JoinContext | undefined;
21
+ protected readonly reduceStrategy: ReduceStrategy;
22
+ protected readonly predicates: ReadonlyMap<string, DeclaredPredicate> | undefined;
23
+ protected decodeVia: (records: readonly unknown[], locale?: string) => unknown[];
24
+ protected incrementalMaintainer: (mode: 'rows' | 'records') => LiveMaintainer | undefined;
25
+ protected groupMaintenance: (derived: readonly DateTruncKey[]) => GroupMaintenanceSource | undefined;
26
+ toArray: (opts?: {
27
+ locale?: string;
28
+ }) => T[];
29
+ /**
30
+ * Re-run the query whenever the source notifies of changes.
31
+ * Returns an unsubscribe function. The callback receives the latest result.
32
+ * Throws if the source does not support subscriptions.
33
+ *
34
+ * **For joined queries, prefer `.live()`** — `subscribe()`
35
+ * only re-fires on LEFT-side changes, so joined data can be
36
+ * stale if the right side mutates between emissions. `.live()`
37
+ * merges change streams from every join target.
38
+ */
39
+ subscribe(cb: (result: T[]) => void): () => void;
40
+ /**
41
+ * Reactive terminal — returns a `LiveQuery<T>` that re-runs the
42
+ * query and updates its `value` whenever any source feeding it
43
+ * mutates..
44
+ *
45
+ * For non-joined queries, `.live()` is a convenience over the
46
+ * existing `.subscribe()` callback shape: a hand-rolled reactive
47
+ * primitive with `value` / `error` fields and a `subscribe(cb)`
48
+ * notification channel. Frame-agnostic — Vue / React / Solid
49
+ * adapters wrap it in their own primitive.
50
+ *
51
+ * For joined queries, `.live()` additionally subscribes to every
52
+ * join target's change stream. Mutations on a right-side
53
+ * collection (insert / update / delete of a client referenced by
54
+ * an invoice) re-fire the live query and re-evaluate every
55
+ * dependent left row. Right-side targets are deduped by
56
+ * collection name, so a chain that joins the same target twice
57
+ * (e.g. billing client + shipping client → both 'clients') only
58
+ * subscribes once.
59
+ *
60
+ * **Ref-mode behavior on right-side disappearance** — matches the
61
+ * eager `.toArray()` contract from :
62
+ * - `strict` → re-run throws `DanglingReferenceError`. The
63
+ * LiveQuery catches the throw, stores it in `live.error`, and
64
+ * notifies listeners (the throw does NOT propagate out of
65
+ * the source's change handler — that would tear down the
66
+ * emitter). Consumers check `live.error` after each
67
+ * notification and render an error state in the UI.
68
+ * - `warn` → joined value flips to `null`; the existing
69
+ * warn-channel deduplication keeps repeated re-runs from
70
+ * spamming the console.
71
+ * - `cascade` → no special handling needed; the cascade-
72
+ * delete mechanism propagates the right-side delete into the
73
+ * left collection on the next tick, and the live query
74
+ * naturally re-fires with the orphaned left rows gone.
75
+ *
76
+ * Always call `live.stop()` when finished — it tears down every
77
+ * upstream subscription. The Vue layer's `onUnmounted` hook
78
+ * should call `stop()` automatically; raw consumers must do it
79
+ * themselves.
80
+ *
81
+ * **Incremental maintenance (#1341).** For a plan
82
+ * `incrementalMaintainer()` accepts — no joins, no `.filter(fn)`, no
83
+ * label-sort, and nothing an index would serve in index order (an `==`/`in`
84
+ * probe, #1344's sorted-index range, or #1344's `orderBy(f).limit(n)`
85
+ * index page) — the result set is PATCHED per change
86
+ * event instead of re-run: one predicate evaluation for the changed record,
87
+ * a binary search, a splice. Everything else, and any change event that
88
+ * arrives without a delta, still re-runs the whole plan. Either way the
89
+ * emitted value is identical to `toArray()` — the maintainer reuses this
90
+ * query's own membership test and sort comparator.
91
+ *
92
+ * `options.batch` coalesces a burst of changes into one recompute and one
93
+ * notification on a microtask. It is OFF by default because it makes
94
+ * `live.value` stale until the microtask runs: a consumer that reads
95
+ * synchronously after `await put()` would see the previous value.
96
+ *
97
+ * **Limitations:**
98
+ * - No re-planning under live mutations — the planner picks
99
+ * once at subscription time and reuses the same plan.
100
+ * - Streaming live joins are deferred.
101
+ */
102
+ live(options?: {
103
+ batch?: boolean;
104
+ }): LiveQuery<T>;
105
+ }
106
+ /** The public Live surface — merged into `Query` by `./index.ts`. */
107
+ export type LiveSurface<T, S extends keyof T = never, Q extends keyof T & string = never, M extends keyof T & string = never> = Pick<LiveMethods<T, S, Q, M>, 'subscribe' | 'live'>;
@@ -7,7 +7,45 @@
7
7
  * dependency on any Via feature's implementation — still tree-shakeable.
8
8
  */
9
9
  /** Comparison operators supported by the where() builder. */
10
- export type Operator = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'contains' | 'startsWith' | 'between';
10
+ export type Operator = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'in'
11
+ /**
12
+ * Set non-membership (#1351) — the anti-semi-join half of `in`.
13
+ *
14
+ * ⚠️ A NULLISH stored value MATCHES `!in`, deliberately: this module
15
+ * treats an absent field as "not equal" everywhere (`!=`, and money's
16
+ * `evaluateMoneyClause`), so `!in` follows. SQL's `NOT IN (…)` is
17
+ * three-valued and would EXCLUDE the row; noy-db has no NULL logic and
18
+ * inventing one here would make `!in` disagree with `!=` on the same
19
+ * record. Spell the SQL behaviour as `.where(f, '!=', undefined)` before
20
+ * the `!in`.
21
+ *
22
+ * ⛔ Never index-served. A hash bucket answers "which ids hold this
23
+ * value"; a negation needs the complement, which is the whole
24
+ * collection minus a bucket — so `!in` always falls to the scan, the
25
+ * same as `!=`.
26
+ */
27
+ | '!in' | 'contains' | 'startsWith' | 'between'
28
+ /**
29
+ * Regex / SQL-LIKE pattern match (#1357). Operand: a `RegExp`, or a
30
+ * LIKE string. Normalized at `where()` time by {@link normalizeMatches}
31
+ * — an anchored literal prefix is LOWERED to `startsWith` (so it takes
32
+ * the sorted index), everything else is stored as `{ source, flags }`
33
+ * and evaluated per record.
34
+ */
35
+ | 'matches'
36
+ /**
37
+ * Proximity (#1355) — operand `{ lat, lng, radiusKm }`, matching a
38
+ * record whose stored point is within `radiusKm` great-circle
39
+ * kilometres of the centre.
40
+ *
41
+ * ⛔ MEANINGFUL ONLY OVER A `geo()`-DECLARED FIELD. Every other field
42
+ * has no point to measure, so the case below returns false rather than
43
+ * guessing at a `{lat,lng}`-shaped object — the geo binding owns both
44
+ * the comparison and the index cover, and an undeclared field has
45
+ * neither. `where()` is where a malformed operand throws; here a
46
+ * type mismatch is simply "no match", as it is for every operator.
47
+ */
48
+ | 'near';
11
49
  /**
12
50
  * A single field comparison clause inside a query plan.
13
51
  * Plans are JSON-serializable, so this type uses primitives only.
@@ -41,6 +79,21 @@ export interface FieldClause {
41
79
  */
42
80
  readonly indexValue?: unknown;
43
81
  };
82
+ /**
83
+ * Provenance of an `in`/`!in` operand that arrived as a SUBQUERY (#1351)
84
+ * rather than as a literal array. Set by {@link normalizeSubqueryOperand};
85
+ * `value` already holds the RESOLVED id array by the time this is present.
86
+ *
87
+ * Plain data on purpose — it is part of the plan JSON, so it folds into an
88
+ * MV's `queryHash` and discriminates two queries whose resolved id sets
89
+ * happen to coincide but whose inner sources differ.
90
+ */
91
+ readonly subquery?: {
92
+ /** The inner source's `identity` (`<vault>/<collection>`), or `'(unnamed)'`. */
93
+ readonly from: string;
94
+ /** How many ids the inner query produced. */
95
+ readonly ids: number;
96
+ };
44
97
  }
45
98
  /**
46
99
  * A user-supplied predicate function escape hatch. Not serializable.
@@ -95,6 +148,18 @@ export interface CrossJoinClause {
95
148
  readonly target: string;
96
149
  /** Alias under which the right-side record is exposed on each result row. */
97
150
  readonly as: string;
151
+ /**
152
+ * Alias under which the LEFT row is exposed (#1289, `.crossJoinWith()`).
153
+ * `undefined` — every clause `.crossJoin()` builds — spreads the left row's
154
+ * own fields at the top level, which is the pre-#1289 shape.
155
+ *
156
+ * Set, the row becomes `{ [leftAs]: left, [as]: right }` and NO field sits
157
+ * at the top level. That is the whole point (a self-join needs both sides
158
+ * distinguishable) and also its whole cost: Via dressing keys by bare field
159
+ * name, so an aliased row is invisible to the top-level decode and must be
160
+ * dressed per alias instead. See `dressAliases` in `builder.ts`.
161
+ */
162
+ readonly leftAs?: string;
98
163
  /**
99
164
  * Lateral filter callback. `undefined` → full cartesian product.
100
165
  * Two call shapes:
@@ -128,6 +193,59 @@ export declare function readPath(record: unknown, path: string): unknown;
128
193
  * exclude non-matching records by definition.
129
194
  */
130
195
  export declare function evaluateFieldClause(record: unknown, clause: FieldClause): boolean;
196
+ /**
197
+ * The generic comparison, with no record and no Via involved.
198
+ *
199
+ * Split out of {@link evaluateFieldClause} (#1355) so a Via binding can
200
+ * DELEGATE the operators it does not itself define. That matters more than
201
+ * it sounds: a binding that claims a field for one operator and declines
202
+ * the rest leaves the others with `clause.via` unset, and an unset `via` is
203
+ * exactly what tells `candidateRecords()` a secondary index may serve the
204
+ * clause. For a binding that also rewrites the index KEY
205
+ * (`canonicalizeIndexKey`), that combination lets the index and the scan
206
+ * answer the same clause differently. Claiming every operator and routing
207
+ * the uninteresting ones back here keeps the two in step.
208
+ */
209
+ export declare function evaluateOperator(actual: unknown, op: Operator, value: unknown): boolean;
210
+ /**
211
+ * Resolve a SUBQUERY operand of `in`/`!in` into the literal id array the rest
212
+ * of the engine already knows how to handle (#1351).
213
+ *
214
+ * ⭐ THE INNER QUERY RUNS HERE — ONCE, at `where()` BUILD time — and never
215
+ * again. That is the whole design, and it is what keeps an O(n) filter from
216
+ * becoming O(n·m): by the time a record is evaluated the clause holds a plain
217
+ * array, so `candidateRecords()` dispatches it through the hash index exactly
218
+ * as it does a hand-written list. `__tests__/query-subquery-in.test.ts`
219
+ * witnesses it with an evaluation counter, not by inspection.
220
+ *
221
+ * ⚠️ THE PRICE, stated once: the operand is a SNAPSHOT taken when `where()`
222
+ * was called. A query object built now and executed later — `.live()` being
223
+ * the case that matters — keeps the id set it was built with, so a change to
224
+ * the INNER collection does not re-fire the outer live query and does not
225
+ * change its answer. Rebuild the query to pick up a new inner result.
226
+ *
227
+ * Every other operator, and an operand that is not a Query, passes through
228
+ * untouched — including a malformed one, which keeps this a resolution step
229
+ * and not a new validation gate.
230
+ */
231
+ export declare function normalizeSubqueryOperand(op: Operator, value: unknown): {
232
+ op: Operator;
233
+ value: unknown;
234
+ subquery?: FieldClause['subquery'];
235
+ };
236
+ /**
237
+ * Normalize a `where(field, 'matches', operand)` at BUILD time: refuse an
238
+ * unsafe pattern, lower an anchored literal prefix to `startsWith`, and
239
+ * otherwise serialize to `{ source, flags }`. Every other operator passes
240
+ * through untouched.
241
+ *
242
+ * Called by every `where()` (`Query`, `ScanBuilder`, `LazyQuery`) so all
243
+ * three build the same clause for the same call.
244
+ */
245
+ export declare function normalizeMatches(op: Operator, value: unknown): {
246
+ op: Operator;
247
+ value: unknown;
248
+ };
131
249
  /**
132
250
  * Evaluate any clause (field / filter / group) against a record.
133
251
  * The recursion depth is bounded by the user's query expression — no risk of