@noy-db/hub 0.7.0 → 0.8.0-pre.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 (616) hide show
  1. package/CHANGELOG.md +105 -14
  2. package/LICENSE +202 -21
  3. package/NOTICE +1 -0
  4. package/README.md +27 -10
  5. package/codemods/0.8.0-pre.json +61 -0
  6. package/dist/api-GVYEKSJE.js +19 -0
  7. package/dist/as/index.js +11 -11
  8. package/dist/at/index.js +9 -9
  9. package/dist/attestation/index.js +20 -20
  10. package/dist/{backup-IJTB4S4M.js → backup-7TFRVFLH.js} +21 -15
  11. package/dist/backup-7TFRVFLH.js.map +1 -0
  12. package/dist/blobs/index.js +13 -13
  13. package/dist/broker/index.js +12 -12
  14. package/dist/by/index.js +2 -2
  15. package/dist/cargo/index.js +39 -36
  16. package/dist/{chunk-7O3Y4PPD.js → chunk-244VXYPG.js} +140 -16
  17. package/dist/chunk-244VXYPG.js.map +1 -0
  18. package/dist/{chunk-BUE2D7PX.js → chunk-32YV3TJT.js} +2 -2
  19. package/dist/{chunk-3RCJJBNR.js → chunk-3ELRMVJK.js} +12 -12
  20. package/dist/{chunk-6GMZ7HEE.js → chunk-3F7GLNAE.js} +6 -6
  21. package/dist/{chunk-2Y4IMKA6.js → chunk-3H5KLDZN.js} +4 -4
  22. package/dist/{chunk-VTFVLCUH.js → chunk-3JWHAR6E.js} +2 -2
  23. package/dist/{chunk-YMUFFJCO.js → chunk-3TDUWVWB.js} +5 -2
  24. package/dist/chunk-3TDUWVWB.js.map +1 -0
  25. package/dist/{chunk-JBDFMYKQ.js → chunk-4AF3TUMP.js} +2 -2
  26. package/dist/{chunk-ZORTV6NH.js → chunk-4I522ERM.js} +88 -4
  27. package/dist/chunk-4I522ERM.js.map +1 -0
  28. package/dist/{chunk-MUM7IANK.js → chunk-4MXI3ODD.js} +4 -4
  29. package/dist/chunk-4MXI3ODD.js.map +1 -0
  30. package/dist/{chunk-BLN54W3L.js → chunk-5FDLC6G7.js} +56 -3
  31. package/dist/chunk-5FDLC6G7.js.map +1 -0
  32. package/dist/chunk-5O7D6ZTW.js +53 -0
  33. package/dist/chunk-5O7D6ZTW.js.map +1 -0
  34. package/dist/{chunk-J6FXAEUG.js → chunk-6B3VNR4P.js} +12 -12
  35. package/dist/{chunk-TUFM4UZP.js → chunk-6K7DPM7D.js} +2 -2
  36. package/dist/{chunk-K6LHRFBL.js → chunk-6LMQ5R26.js} +7 -7
  37. package/dist/{chunk-SPXXX5E4.js → chunk-6LNL42F5.js} +94 -32
  38. package/dist/chunk-6LNL42F5.js.map +1 -0
  39. package/dist/{chunk-XLMEZIAJ.js → chunk-6OWXYZK2.js} +2 -2
  40. package/dist/{chunk-BOWNCWZT.js → chunk-6QSQQLSE.js} +3 -3
  41. package/dist/chunk-7JE7BDYJ.js +1558 -0
  42. package/dist/chunk-7JE7BDYJ.js.map +1 -0
  43. package/dist/{chunk-KG7TZKZG.js → chunk-7VCXZDA4.js} +5 -5
  44. package/dist/chunk-7VCXZDA4.js.map +1 -0
  45. package/dist/{chunk-NQKIUNW5.js → chunk-A6IJU4TK.js} +2 -2
  46. package/dist/{chunk-BM5TWITZ.js → chunk-ANWPSTZU.js} +38 -9
  47. package/dist/chunk-ANWPSTZU.js.map +1 -0
  48. package/dist/{chunk-QIZPZMUI.js → chunk-AOWGXU6D.js} +2 -2
  49. package/dist/{chunk-CUZLNGD5.js → chunk-B2YY6WDD.js} +1 -1
  50. package/dist/chunk-B2YY6WDD.js.map +1 -0
  51. package/dist/{chunk-SFAWCTEM.js → chunk-B57AFBY2.js} +2 -2
  52. package/dist/{chunk-GPEQUXHL.js → chunk-B6SJIBQK.js} +4 -4
  53. package/dist/chunk-BJ2IXQ5Q.js +100 -0
  54. package/dist/chunk-BJ2IXQ5Q.js.map +1 -0
  55. package/dist/{chunk-Q2PU57HC.js → chunk-BK2HHQGN.js} +2 -2
  56. package/dist/chunk-BKT776R5.js +1 -0
  57. package/dist/{chunk-KUX3OB6D.js → chunk-BP6DARYA.js} +33 -5
  58. package/dist/chunk-BP6DARYA.js.map +1 -0
  59. package/dist/{chunk-FXBIP2WD.js → chunk-BUDAGWL5.js} +6 -6
  60. package/dist/chunk-CF5UU4S7.js +757 -0
  61. package/dist/chunk-CF5UU4S7.js.map +1 -0
  62. package/dist/{chunk-BOET4NA4.js → chunk-CKNGS5MH.js} +3 -3
  63. package/dist/chunk-CY2CYVWZ.js +41 -0
  64. package/dist/chunk-CY2CYVWZ.js.map +1 -0
  65. package/dist/{chunk-2577DKXB.js → chunk-DC5QVPV7.js} +2 -2
  66. package/dist/chunk-DC5QVPV7.js.map +1 -0
  67. package/dist/{chunk-YSRUYAVU.js → chunk-DE4DH2RZ.js} +2 -2
  68. package/dist/{chunk-6I2RQCET.js → chunk-DF73H4UN.js} +4 -4
  69. package/dist/{chunk-4GVM6QZA.js → chunk-ENAG3IY7.js} +2 -2
  70. package/dist/chunk-ENAG3IY7.js.map +1 -0
  71. package/dist/{chunk-K7NTTA6P.js → chunk-EOVMT6TB.js} +2 -2
  72. package/dist/chunk-F24ZZTHQ.js +193 -0
  73. package/dist/chunk-F24ZZTHQ.js.map +1 -0
  74. package/dist/chunk-F2TDU7MQ.js +456 -0
  75. package/dist/chunk-F2TDU7MQ.js.map +1 -0
  76. package/dist/chunk-F6NCB7KT.js +13 -0
  77. package/dist/chunk-F6NCB7KT.js.map +1 -0
  78. package/dist/{chunk-SPYWXKJN.js → chunk-F7XGHL5O.js} +3 -3
  79. package/dist/chunk-F7XGHL5O.js.map +1 -0
  80. package/dist/{chunk-XTXOCYOJ.js → chunk-FCKWQE2H.js} +5 -5
  81. package/dist/{chunk-U4FOQDY4.js → chunk-FH2L2E34.js} +4 -4
  82. package/dist/chunk-FH2L2E34.js.map +1 -0
  83. package/dist/{chunk-4OZNXTO4.js → chunk-FN5EBVTQ.js} +2 -2
  84. package/dist/chunk-FQ54DWUQ.js +270 -0
  85. package/dist/chunk-FQ54DWUQ.js.map +1 -0
  86. package/dist/{chunk-NKHRDYOR.js → chunk-FQ5VRHIB.js} +4 -4
  87. package/dist/{chunk-FAHMLERK.js → chunk-FW22ZCXT.js} +2 -2
  88. package/dist/chunk-FXQBGFOX.js +524 -0
  89. package/dist/chunk-FXQBGFOX.js.map +1 -0
  90. package/dist/{chunk-AO42KJO6.js → chunk-GF5BZ7D4.js} +45 -9
  91. package/dist/chunk-GF5BZ7D4.js.map +1 -0
  92. package/dist/{chunk-TRGTKX5E.js → chunk-GHLTDZRS.js} +5 -3
  93. package/dist/{chunk-TRGTKX5E.js.map → chunk-GHLTDZRS.js.map} +1 -1
  94. package/dist/{chunk-5WDXHNSW.js → chunk-HBPPGWUM.js} +5 -5
  95. package/dist/chunk-HBPPGWUM.js.map +1 -0
  96. package/dist/{chunk-KTFRCC5C.js → chunk-HBRLNOHL.js} +82 -8
  97. package/dist/chunk-HBRLNOHL.js.map +1 -0
  98. package/dist/chunk-HLEK5VAN.js +275 -0
  99. package/dist/chunk-HLEK5VAN.js.map +1 -0
  100. package/dist/{chunk-RMS3NEA3.js → chunk-HT2AHGQI.js} +2 -2
  101. package/dist/{chunk-CHJBLCOG.js → chunk-HVSCEIYL.js} +7 -7
  102. package/dist/{chunk-UXWB3FPF.js → chunk-I3JDRCMW.js} +150 -22
  103. package/dist/chunk-I3JDRCMW.js.map +1 -0
  104. package/dist/{chunk-GY4WYNNG.js → chunk-ID6Z6E66.js} +2 -2
  105. package/dist/{chunk-EYBQEIUY.js → chunk-IEX7NK2K.js} +3 -3
  106. package/dist/{chunk-KUJDV5QH.js → chunk-ISZQJBML.js} +5 -5
  107. package/dist/{chunk-LWBCUYZW.js → chunk-IT22PWKV.js} +2 -2
  108. package/dist/{chunk-EQEYOJBM.js → chunk-IUWCVHQ7.js} +3 -3
  109. package/dist/chunk-IUWCVHQ7.js.map +1 -0
  110. package/dist/{chunk-7V4TP3AF.js → chunk-J6UOHJY5.js} +4 -4
  111. package/dist/{chunk-JMGDHKQF.js → chunk-JCN44NCY.js} +2 -2
  112. package/dist/{chunk-CARABLSQ.js → chunk-K6W7BVZ6.js} +3 -3
  113. package/dist/{chunk-77K4PG6P.js → chunk-KJFW62P4.js} +29 -11
  114. package/dist/chunk-KJFW62P4.js.map +1 -0
  115. package/dist/{chunk-453F654R.js → chunk-L7DOS3TE.js} +2 -2
  116. package/dist/chunk-LGNDFRYC.js +23 -0
  117. package/dist/chunk-LGNDFRYC.js.map +1 -0
  118. package/dist/{chunk-WEQEYLCS.js → chunk-LGRLME4M.js} +7 -7
  119. package/dist/{chunk-RMF67KCG.js → chunk-LQ4ZHOKP.js} +2 -2
  120. package/dist/{chunk-ZVO4QVPD.js → chunk-M522UYZ2.js} +5 -5
  121. package/dist/{chunk-G56KBWFY.js → chunk-M7NI3IWE.js} +45 -12
  122. package/dist/chunk-M7NI3IWE.js.map +1 -0
  123. package/dist/chunk-MDWKM2XC.js +293 -0
  124. package/dist/chunk-MDWKM2XC.js.map +1 -0
  125. package/dist/chunk-MKXXMNJH.js +204 -0
  126. package/dist/chunk-MKXXMNJH.js.map +1 -0
  127. package/dist/{chunk-SKGMN35F.js → chunk-MLPHLJIQ.js} +3 -3
  128. package/dist/chunk-MLPHLJIQ.js.map +1 -0
  129. package/dist/{chunk-2N4GY74U.js → chunk-MTL7MXGR.js} +6 -6
  130. package/dist/{chunk-TFR7DSOV.js → chunk-MVZ2TPVP.js} +2 -2
  131. package/dist/{chunk-CPWQB3N5.js → chunk-N5DNADLQ.js} +7 -7
  132. package/dist/{chunk-ELNXJMGB.js → chunk-NNARWO72.js} +6 -6
  133. package/dist/{chunk-PT43Y56J.js → chunk-NRT6QZQB.js} +102 -16
  134. package/dist/chunk-NRT6QZQB.js.map +1 -0
  135. package/dist/{chunk-QIBVIOXO.js → chunk-NWHBJQAL.js} +99 -8
  136. package/dist/chunk-NWHBJQAL.js.map +1 -0
  137. package/dist/chunk-NYMLINRP.js +28 -0
  138. package/dist/chunk-NYMLINRP.js.map +1 -0
  139. package/dist/{chunk-7MG7SJT7.js → chunk-ODVPTDPK.js} +1 -1
  140. package/dist/chunk-ODVPTDPK.js.map +1 -0
  141. package/dist/chunk-ORDURZBU.js +461 -0
  142. package/dist/chunk-ORDURZBU.js.map +1 -0
  143. package/dist/{chunk-6YXCPL4T.js → chunk-PDCG6PR5.js} +2 -2
  144. package/dist/{chunk-REDOOY2Q.js → chunk-PSIV7CJV.js} +2 -2
  145. package/dist/{chunk-NA2NIJZI.js → chunk-QBBUZ3I3.js} +126 -19
  146. package/dist/chunk-QBBUZ3I3.js.map +1 -0
  147. package/dist/{chunk-5VCRVKOZ.js → chunk-QOOUUR4A.js} +6 -4
  148. package/dist/{chunk-5VCRVKOZ.js.map → chunk-QOOUUR4A.js.map} +1 -1
  149. package/dist/{chunk-ANATMFIO.js → chunk-QWFHIOD2.js} +5 -5
  150. package/dist/{chunk-X2DLENDQ.js → chunk-QWGU66MP.js} +3 -3
  151. package/dist/chunk-RHVMZSUU.js +7 -0
  152. package/dist/chunk-RHVMZSUU.js.map +1 -0
  153. package/dist/{chunk-BSFNRLK2.js → chunk-S57HTZ6X.js} +5 -5
  154. package/dist/{chunk-SZJ3DLZA.js → chunk-SEE332EV.js} +2 -2
  155. package/dist/{chunk-YYP7WSEB.js → chunk-SI3V7D4G.js} +2 -2
  156. package/dist/{chunk-UGTBXF5U.js → chunk-SOIQ4MM4.js} +3 -3
  157. package/dist/chunk-SUZKW6UR.js +25 -0
  158. package/dist/chunk-SUZKW6UR.js.map +1 -0
  159. package/dist/{chunk-VXGSWL6L.js → chunk-SYVZW77S.js} +6 -6
  160. package/dist/{chunk-6GOE5PGN.js → chunk-T2LBQ5DV.js} +883 -227
  161. package/dist/chunk-T2LBQ5DV.js.map +1 -0
  162. package/dist/chunk-T52GX4SA.js +215 -0
  163. package/dist/chunk-T52GX4SA.js.map +1 -0
  164. package/dist/{chunk-MVMXZYXT.js → chunk-TKUOEU2F.js} +2 -2
  165. package/dist/chunk-TOPYQ6GA.js +31 -0
  166. package/dist/chunk-TOPYQ6GA.js.map +1 -0
  167. package/dist/{chunk-SMH6SRX7.js → chunk-TROR3ALR.js} +2 -2
  168. package/dist/{chunk-2C3AQB46.js → chunk-UD5EVGZ7.js} +42 -389
  169. package/dist/chunk-UD5EVGZ7.js.map +1 -0
  170. package/dist/{chunk-KJIMGIWO.js → chunk-UPD5NWI5.js} +65 -17
  171. package/dist/chunk-UPD5NWI5.js.map +1 -0
  172. package/dist/{chunk-SL3JAAKN.js → chunk-UYB234ZR.js} +30 -2
  173. package/dist/chunk-UYB234ZR.js.map +1 -0
  174. package/dist/chunk-VHM7HCKB.js +220 -0
  175. package/dist/chunk-VHM7HCKB.js.map +1 -0
  176. package/dist/{chunk-DGOZ4UZD.js → chunk-VNNRUGMM.js} +2 -2
  177. package/dist/{chunk-HDOU6I2Y.js → chunk-VNPEWFPD.js} +4 -4
  178. package/dist/{chunk-L7CIOOBW.js → chunk-WNJ4AVGE.js} +2 -2
  179. package/dist/{chunk-FMZY5Q6L.js → chunk-WX5ADGTZ.js} +3 -3
  180. package/dist/{chunk-VXANTWBJ.js → chunk-WY2XXTET.js} +92 -6
  181. package/dist/{chunk-VXANTWBJ.js.map → chunk-WY2XXTET.js.map} +1 -1
  182. package/dist/{chunk-6X6SEMEE.js → chunk-X25NWUZB.js} +33 -8
  183. package/dist/chunk-X25NWUZB.js.map +1 -0
  184. package/dist/{chunk-Q7HZX3IF.js → chunk-X4773RBR.js} +2 -2
  185. package/dist/chunk-XBKH4FOC.js +195 -0
  186. package/dist/chunk-XBKH4FOC.js.map +1 -0
  187. package/dist/{chunk-ANSIZYEG.js → chunk-YNIUIERI.js} +3 -3
  188. package/dist/chunk-YSK2CU2Q.js +936 -0
  189. package/dist/chunk-YSK2CU2Q.js.map +1 -0
  190. package/dist/{chunk-UXVWEX5L.js → chunk-Z5HTYMMQ.js} +6 -2
  191. package/dist/chunk-Z5HTYMMQ.js.map +1 -0
  192. package/dist/{chunk-RRNRNANG.js → chunk-ZE4CHIED.js} +66 -75
  193. package/dist/chunk-ZE4CHIED.js.map +1 -0
  194. package/dist/chunk-ZSX4S5XB.js +1289 -0
  195. package/dist/chunk-ZSX4S5XB.js.map +1 -0
  196. package/dist/{chunk-BZ3534YM.js → chunk-ZUVBC32X.js} +2 -2
  197. package/dist/{chunk-L742JPKZ.js → chunk-ZXABPVM6.js} +6 -6
  198. package/dist/classified/index.js +5 -5
  199. package/dist/{classified-marker-LI2SF2E4.js → classified-marker-W3USLL5M.js} +3 -3
  200. package/dist/collection-facade-QU6IJBN3.js +48 -0
  201. package/dist/{computed-VPOKQK4N.js → computed-TPFBX7U4.js} +3 -3
  202. package/dist/consent/index.js +9 -9
  203. package/dist/cover/index.js +10 -10
  204. package/dist/coverage/index.js +306 -0
  205. package/dist/coverage/index.js.map +1 -0
  206. package/dist/custody/index.js +12 -12
  207. package/dist/{dead-filter-TSWZQRR5.js → dead-filter-U2UYKSZL.js} +2 -2
  208. package/dist/debug/index.js +1 -1
  209. package/dist/{delegation-OVIFFPG4.js → delegation-S3AEPW2T.js} +11 -11
  210. package/dist/derivations/index.js +25 -22
  211. package/dist/derive-OX7F6TGG.js +21 -0
  212. package/dist/directory/index.js +10 -10
  213. package/dist/{dispatch-WC6X2M6C.js → dispatch-3CQDJV5Q.js} +5 -5
  214. package/dist/{dispatch-S73TK3IY.js → dispatch-RH4LHKBH.js} +21 -21
  215. package/dist/{enclave-KJOTOH7X.js → enclave-27SMF6GF.js} +15 -9
  216. package/dist/executor-B6SRO2QS.js +36 -0
  217. package/dist/executor-BI5CHWRY.js +8 -0
  218. package/dist/executor-RBKM5W5K.js +8 -0
  219. package/dist/export-accessible-VMA3YM5V.js +22 -0
  220. package/dist/extract-partition-NF7PXGPP.js +37 -0
  221. package/dist/{fanout-sidecar-WUFXNYP4.js → fanout-sidecar-OT6RYLOL.js} +9 -9
  222. package/dist/find-LZMP26KF.js +10 -0
  223. package/dist/forget/index.js +9 -9
  224. package/dist/guards/index.js +4 -4
  225. package/dist/history/index.js +13 -13
  226. package/dist/i18n/index.js +14 -14
  227. package/dist/index.d.ts +29 -6
  228. package/dist/index.js +999 -191
  229. package/dist/index.js.map +1 -1
  230. package/dist/indexing/index.js +13 -5
  231. package/dist/indexing/index.js.map +1 -1
  232. package/dist/introspection/index.js +11 -11
  233. package/dist/issue-IHARXWW5.js +18 -0
  234. package/dist/ivf-flat-UZ6DQDLS.js +314 -0
  235. package/dist/ivf-flat-UZ6DQDLS.js.map +1 -0
  236. package/dist/{json-schema-V3M5MUCM.js → json-schema-3SHX72CC.js} +2 -1
  237. package/dist/json-schema-3SHX72CC.js.map +1 -0
  238. package/dist/kernel/collection-config.d.ts +4 -20
  239. package/dist/kernel/collection.d.ts +29 -8
  240. package/dist/kernel/enclave/crypto.d.ts +16 -0
  241. package/dist/kernel/enclave/index.d.ts +1 -1
  242. package/dist/kernel/enclave/record-keys/record-codec.d.ts +25 -0
  243. package/dist/kernel/errors.d.ts +227 -36
  244. package/dist/kernel/generation-map.d.ts +48 -0
  245. package/dist/kernel/memory-store.d.ts +35 -7
  246. package/dist/kernel/noydb.d.ts +6 -1
  247. package/dist/kernel/present-cache.d.ts +58 -0
  248. package/dist/kernel/query/all.d.ts +7 -0
  249. package/dist/kernel/query/builder.d.ts +601 -270
  250. package/dist/kernel/query/civil-date.d.ts +64 -0
  251. package/dist/kernel/query/cursor.d.ts +40 -0
  252. package/dist/kernel/query/distinct-key.d.ts +98 -0
  253. package/dist/kernel/query/hydration.d.ts +76 -0
  254. package/dist/kernel/query/index.d.ts +31 -15
  255. package/dist/kernel/query/internal/core.d.ts +30 -0
  256. package/dist/kernel/query/internal/hooks.d.ts +22 -0
  257. package/dist/kernel/query/internal/maintenance.d.ts +43 -0
  258. package/dist/kernel/query/live/incremental.d.ts +314 -0
  259. package/dist/kernel/query/live/index.d.ts +22 -0
  260. package/dist/kernel/query/live/install.d.ts +2 -0
  261. package/dist/kernel/query/{live.d.ts → live/live.d.ts} +39 -9
  262. package/dist/kernel/query/live/methods.d.ts +107 -0
  263. package/dist/kernel/query/predicate.d.ts +119 -1
  264. package/dist/kernel/query/reduce/date-trunc.d.ts +75 -0
  265. package/dist/kernel/query/reduce/index.d.ts +36 -0
  266. package/dist/kernel/query/reduce/install.d.ts +2 -0
  267. package/dist/kernel/query/reduce/methods.d.ts +259 -0
  268. package/dist/kernel/query/reduce/scan-methods.d.ts +121 -0
  269. package/dist/kernel/query/relate/explain.d.ts +199 -0
  270. package/dist/kernel/query/relate/index.d.ts +48 -0
  271. package/dist/kernel/query/relate/install.d.ts +2 -0
  272. package/dist/kernel/query/relate/join-on.d.ts +126 -0
  273. package/dist/kernel/query/relate/join-reduce.d.ts +16 -0
  274. package/dist/kernel/query/relate/join.d.ts +452 -0
  275. package/dist/kernel/query/relate/methods.d.ts +426 -0
  276. package/dist/kernel/query/relate/partition.d.ts +87 -0
  277. package/dist/kernel/query/relate/scan-methods.d.ts +163 -0
  278. package/dist/kernel/query/relate/traverse.d.ts +109 -0
  279. package/dist/kernel/query/scan-builder.d.ts +79 -176
  280. package/dist/kernel/query/sort-key.d.ts +52 -0
  281. package/dist/kernel/tx-write-gate.d.ts +77 -0
  282. package/dist/kernel/types.d.ts +71 -3
  283. package/dist/kernel/validation.d.ts +27 -10
  284. package/dist/kernel/vault.d.ts +9 -4
  285. package/dist/kernel/via/compose.d.ts +3 -0
  286. package/dist/kernel/via/index.d.ts +56 -0
  287. package/dist/kernel/via/pipeline.d.ts +48 -0
  288. package/dist/{ledger-F33ZVMTK.js → ledger-KZPCMVZY.js} +11 -11
  289. package/dist/liberate-GRLCZMW4.js +24 -0
  290. package/dist/link-set-JCMJ7ULP.js +30 -0
  291. package/dist/{managed-secret-PQYKSR6T.js → managed-secret-S3MQ6SH6.js} +10 -10
  292. package/dist/materialized-views/index.js +30 -23
  293. package/dist/{migrate-cek-5ENH64AA.js → migrate-cek-V7GKJZ7O.js} +2 -2
  294. package/dist/money/index.js +5 -5
  295. package/dist/noydb-SWQJ3MZS.js +97 -0
  296. package/dist/overlay-views/index.js +4 -4
  297. package/dist/periods/index.js +12 -12
  298. package/dist/pod/index.js +75 -68
  299. package/dist/{pod-handle-Q736KYON.js → pod-handle-WGDFB4C2.js} +9 -9
  300. package/dist/policy/index.js +10 -10
  301. package/dist/port/with/blob-strategy.d.ts +9 -0
  302. package/dist/port/with/collection-options.d.ts +5 -0
  303. package/dist/port/with/coverage-strategy.d.ts +83 -0
  304. package/dist/port/with/service-bus.d.ts +46 -0
  305. package/dist/port/with/strategies.d.ts +2 -0
  306. package/dist/portability/index.js +8 -8
  307. package/dist/{post-register-LNE2FE2A.js → post-register-SLSXIPBV.js} +6 -6
  308. package/dist/query/all/index.js +31 -0
  309. package/dist/query/index.js +20 -32
  310. package/dist/query/live/index.js +21 -0
  311. package/dist/query/live/index.js.map +1 -0
  312. package/dist/query/reduce/index.js +33 -0
  313. package/dist/query/reduce/index.js.map +1 -0
  314. package/dist/query/relate/index.js +56 -0
  315. package/dist/query/relate/index.js.map +1 -0
  316. package/dist/reduce/index.js +72 -18
  317. package/dist/reduce/index.js.map +1 -1
  318. package/dist/register-F3OYE7MJ.js +31 -0
  319. package/dist/registry-CILQFXFK.js +8 -0
  320. package/dist/registry-XNNYQVKV.js +8 -0
  321. package/dist/registry-YCDZV3VW.js +35 -0
  322. package/dist/registry-ZGYS33TE.js +24 -0
  323. package/dist/request-withdrawal-Z5NC6TXT.js +30 -0
  324. package/dist/{reveal-67RDQRIN.js → reveal-4BCKPEC2.js} +6 -6
  325. package/dist/revoke-ZL62WC2D.js +23 -0
  326. package/dist/satellites/index.js +1 -1
  327. package/dist/schema-update/index.js +2 -2
  328. package/dist/sealed-record/index.js +12 -12
  329. package/dist/search/index.js +11 -5
  330. package/dist/{seed-G42JYN56.js → seed-4JS2RJ4A.js} +12 -12
  331. package/dist/sequence/index.js +9 -9
  332. package/dist/session/index.js +9 -9
  333. package/dist/shadow/index.js +2 -2
  334. package/dist/signer-MBZZMXTC.js +24 -0
  335. package/dist/snapshots/index.js +10 -10
  336. package/dist/{stale-DDL7WQEZ.js → stale-TJ3DYZMQ.js} +10 -10
  337. package/dist/storage-SVMKRGCW.js +22 -0
  338. package/dist/{store-coordination-provider-MEQ2MJQG.js → store-coordination-provider-2O2VUHKW.js} +10 -10
  339. package/dist/sync/index.js +10 -10
  340. package/dist/team/index.js +17 -15
  341. package/dist/tiers/index.js +13 -11
  342. package/dist/to/index.js +2 -2
  343. package/dist/transactions/index.js +3 -3
  344. package/dist/util/index.js +1 -1
  345. package/dist/vault-head/index.js +8 -8
  346. package/dist/{verify-KOV2G5D6.js → verify-RVT67IMH.js} +5 -5
  347. package/dist/via/blob/index.d.ts +1 -0
  348. package/dist/via/geo/binding.d.ts +31 -0
  349. package/dist/via/geo/descriptor.d.ts +54 -0
  350. package/dist/via/geo/geohash.d.ts +95 -0
  351. package/dist/via/geo/index.d.ts +13 -0
  352. package/dist/via/geo/where.d.ts +50 -0
  353. package/dist/via/i18n/core.d.ts +1 -1
  354. package/dist/via/lookup/registry.d.ts +1 -1
  355. package/dist/via/lookup/snapshot.d.ts +3 -3
  356. package/dist/walk-HJ42EISE.js +21 -0
  357. package/dist/walk-HJ42EISE.js.map +1 -0
  358. package/dist/with-audit/coverage/accounting.d.ts +112 -0
  359. package/dist/with-audit/coverage/active.d.ts +29 -0
  360. package/dist/with-audit/coverage/index.d.ts +61 -0
  361. package/dist/with-audit/coverage/sketch.d.ts +75 -0
  362. package/dist/with-audit/periods/periods.d.ts +55 -7
  363. package/dist/with-audit/periods/reserved-collections.d.ts +3 -0
  364. package/dist/with-audit/periods/vault-facade.d.ts +17 -0
  365. package/dist/with-audit/tiers/index.d.ts +51 -0
  366. package/dist/with-audit/tiers/strategy.d.ts +8 -0
  367. package/dist/with-cargo/floor.d.ts +2 -2
  368. package/dist/with-commit/tx/invariants.d.ts +1 -1
  369. package/dist/with-commit/tx/transaction.d.ts +13 -3
  370. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +4 -3
  371. package/dist/with-formula/materialized-views/emit-memo.d.ts +40 -0
  372. package/dist/with-formula/materialized-views/executor.d.ts +8 -0
  373. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  374. package/dist/with-formula/materialized-views/registry.d.ts +15 -0
  375. package/dist/with-formula/materialized-views/types.d.ts +106 -14
  376. package/dist/with-formula/materialized-views/window-stage.d.ts +11 -0
  377. package/dist/with-formula/overlay-views/types.d.ts +1 -1
  378. package/dist/with-formula/overlay-views/virtual-collection.d.ts +13 -4
  379. package/dist/with-lookup/embeddings/chunks.d.ts +79 -0
  380. package/dist/with-lookup/embeddings/descriptor.d.ts +21 -0
  381. package/dist/with-lookup/embeddings/index.d.ts +3 -0
  382. package/dist/with-lookup/embeddings/ivf-flat.d.ts +93 -0
  383. package/dist/with-lookup/embeddings/vector-index.d.ts +73 -0
  384. package/dist/with-lookup/embeddings/vector-set.d.ts +94 -1
  385. package/dist/with-lookup/embeddings/with-vector-index.d.ts +67 -0
  386. package/dist/with-lookup/indexing/collection-facade.d.ts +85 -2
  387. package/dist/with-lookup/indexing/compound-indexes.d.ts +129 -0
  388. package/dist/with-lookup/indexing/eager-indexes.d.ts +170 -1
  389. package/dist/with-lookup/indexing/index-snapshot.d.ts +62 -0
  390. package/dist/with-lookup/indexing/lazy-builder.d.ts +33 -0
  391. package/dist/with-lookup/indexing/persisted-field-indexes.d.ts +104 -0
  392. package/dist/with-lookup/indexing/persisted-indexes.d.ts +12 -0
  393. package/dist/with-lookup/indexing/sorted-indexes.d.ts +117 -0
  394. package/dist/with-lookup/indexing/unique-constraints.d.ts +106 -23
  395. package/dist/with-lookup/reduce/active.d.ts +2 -24
  396. package/dist/with-lookup/reduce/group-core.d.ts +43 -0
  397. package/dist/with-lookup/reduce/groupby.d.ts +195 -36
  398. package/dist/with-lookup/reduce/incremental-group.d.ts +153 -0
  399. package/dist/with-lookup/reduce/index.d.ts +26 -5
  400. package/dist/with-lookup/reduce/reducers.d.ts +255 -1
  401. package/dist/with-lookup/reduce/reduction.d.ts +44 -13
  402. package/dist/with-lookup/reduce/strategy.d.ts +43 -3
  403. package/dist/with-lookup/reduce/window.d.ts +262 -0
  404. package/dist/with-lookup/search/collection-facade.d.ts +44 -8
  405. package/dist/with-lookup/search/index-store.d.ts +5 -3
  406. package/dist/with-lookup/search/index.d.ts +4 -2
  407. package/dist/with-lookup/search/inverted-index.d.ts +38 -2
  408. package/dist/with-lookup/search/persisted-index-store.d.ts +5 -2
  409. package/dist/with-lookup/search/phrase.d.ts +28 -0
  410. package/dist/with-lookup/search/retrieve-types.d.ts +57 -1
  411. package/dist/with-lookup/search/serialize.d.ts +29 -3
  412. package/dist/with-lookup/search/strategy.d.ts +2 -6
  413. package/dist/with-party/directory/cover/index.d.ts +1 -1
  414. package/dist/with-party/directory/cover/storage.d.ts +1 -1
  415. package/dist/with-party/directory/cover/types.d.ts +1 -1
  416. package/dist/with-party/directory/index.d.ts +1 -1
  417. package/dist/with-party/directory/types.d.ts +1 -1
  418. package/dist/with-party/directory/user-envelope/api.d.ts +1 -1
  419. package/dist/with-party/policy/engine.d.ts +1 -1
  420. package/dist/with-party/policy/index.d.ts +1 -1
  421. package/dist/with-party/policy/presets.d.ts +1 -1
  422. package/dist/with-party/team/authenticators.d.ts +91 -1
  423. package/dist/with-party/team/index.d.ts +3 -2
  424. package/dist/with-party/team/keyring.d.ts +13 -6
  425. package/dist/with-party/team/managed-secret.d.ts +1 -1
  426. package/dist/with-party/team/noydb-facade.d.ts +12 -3
  427. package/dist/with-party/team/wrapped-deks.d.ts +4 -4
  428. package/dist/with-pod/format.d.ts +1 -1
  429. package/dist/with-pod/pod.d.ts +5 -5
  430. package/dist/with-shape/blobs/blob-compaction.d.ts +16 -0
  431. package/dist/with-shape/blobs/blob-set.d.ts +21 -2
  432. package/dist/with-shape/blobs/legacy-sweep.d.ts +35 -0
  433. package/dist/with-shape/introspection/describe.d.ts +6 -0
  434. package/dist/with-shape/introspection/field-meta.d.ts +18 -0
  435. package/dist/with-shape/introspection/types.d.ts +57 -1
  436. package/dist/with-shape/links/vault-facade.d.ts +1 -1
  437. package/dist/with-store/partitioned/index.d.ts +337 -0
  438. package/dist/with-sync/change-broadcast.d.ts +153 -0
  439. package/dist/withdraw-accessible-5NZUPAVA.js +27 -0
  440. package/dist/withdraw-accessible-5NZUPAVA.js.map +1 -0
  441. package/package.json +37 -10
  442. package/dist/api-TXFOVOXX.js +0 -19
  443. package/dist/backup-IJTB4S4M.js.map +0 -1
  444. package/dist/chunk-2577DKXB.js.map +0 -1
  445. package/dist/chunk-2C3AQB46.js.map +0 -1
  446. package/dist/chunk-4GVM6QZA.js.map +0 -1
  447. package/dist/chunk-5WDXHNSW.js.map +0 -1
  448. package/dist/chunk-6GOE5PGN.js.map +0 -1
  449. package/dist/chunk-6X6SEMEE.js.map +0 -1
  450. package/dist/chunk-77K4PG6P.js.map +0 -1
  451. package/dist/chunk-7MG2LHO5.js +0 -1616
  452. package/dist/chunk-7MG2LHO5.js.map +0 -1
  453. package/dist/chunk-7MG7SJT7.js.map +0 -1
  454. package/dist/chunk-7O3Y4PPD.js.map +0 -1
  455. package/dist/chunk-AO42KJO6.js.map +0 -1
  456. package/dist/chunk-ATL3ZVXT.js +0 -151
  457. package/dist/chunk-ATL3ZVXT.js.map +0 -1
  458. package/dist/chunk-BLN54W3L.js.map +0 -1
  459. package/dist/chunk-BM5TWITZ.js.map +0 -1
  460. package/dist/chunk-CUZLNGD5.js.map +0 -1
  461. package/dist/chunk-EQEYOJBM.js.map +0 -1
  462. package/dist/chunk-G56KBWFY.js.map +0 -1
  463. package/dist/chunk-I3ISCYT7.js +0 -159
  464. package/dist/chunk-I3ISCYT7.js.map +0 -1
  465. package/dist/chunk-KG7TZKZG.js.map +0 -1
  466. package/dist/chunk-KJIMGIWO.js.map +0 -1
  467. package/dist/chunk-KTFRCC5C.js.map +0 -1
  468. package/dist/chunk-KUX3OB6D.js.map +0 -1
  469. package/dist/chunk-MUM7IANK.js.map +0 -1
  470. package/dist/chunk-NA2NIJZI.js.map +0 -1
  471. package/dist/chunk-NSITFOCJ.js +0 -99
  472. package/dist/chunk-NSITFOCJ.js.map +0 -1
  473. package/dist/chunk-PT43Y56J.js.map +0 -1
  474. package/dist/chunk-QIBVIOXO.js.map +0 -1
  475. package/dist/chunk-RRNRNANG.js.map +0 -1
  476. package/dist/chunk-RTBJ5IOO.js +0 -87
  477. package/dist/chunk-RTBJ5IOO.js.map +0 -1
  478. package/dist/chunk-SKGMN35F.js.map +0 -1
  479. package/dist/chunk-SL3JAAKN.js.map +0 -1
  480. package/dist/chunk-SPXXX5E4.js.map +0 -1
  481. package/dist/chunk-SPYWXKJN.js.map +0 -1
  482. package/dist/chunk-U4FOQDY4.js.map +0 -1
  483. package/dist/chunk-UXVWEX5L.js.map +0 -1
  484. package/dist/chunk-UXWB3FPF.js.map +0 -1
  485. package/dist/chunk-YMUFFJCO.js.map +0 -1
  486. package/dist/chunk-ZN4FD4PE.js +0 -364
  487. package/dist/chunk-ZN4FD4PE.js.map +0 -1
  488. package/dist/chunk-ZORTV6NH.js.map +0 -1
  489. package/dist/collection-facade-4GRREZ6C.js +0 -45
  490. package/dist/derive-6O5SWQKN.js +0 -21
  491. package/dist/executor-5NIMLSKZ.js +0 -8
  492. package/dist/executor-AQVXV5GZ.js +0 -8
  493. package/dist/executor-PUAO6AKJ.js +0 -29
  494. package/dist/export-accessible-72EQNBMR.js +0 -22
  495. package/dist/extract-partition-PUYNU3UF.js +0 -37
  496. package/dist/find-2ABFCZX4.js +0 -10
  497. package/dist/issue-SIDORTSZ.js +0 -18
  498. package/dist/json-schema-V3M5MUCM.js.map +0 -1
  499. package/dist/kernel/query/join.d.ts +0 -232
  500. package/dist/liberate-LCDPNAG2.js +0 -24
  501. package/dist/link-set-FKNWAYKS.js +0 -30
  502. package/dist/noydb-DUXZPKSN.js +0 -90
  503. package/dist/register-I2DZXGAR.js +0 -31
  504. package/dist/registry-23WF3TGH.js +0 -8
  505. package/dist/registry-4AYVUNXK.js +0 -8
  506. package/dist/registry-VSSQPIGF.js +0 -18
  507. package/dist/registry-YLEWMGAC.js +0 -32
  508. package/dist/request-withdrawal-KFQHEZ25.js +0 -30
  509. package/dist/revoke-DQDZAZZM.js +0 -23
  510. package/dist/signer-WAMDZHEN.js +0 -24
  511. package/dist/storage-FLR73HHF.js +0 -22
  512. package/dist/walk-3UQBRMDV.js +0 -21
  513. package/dist/withdraw-accessible-EL5GXZBS.js +0 -27
  514. /package/dist/{api-TXFOVOXX.js.map → api-GVYEKSJE.js.map} +0 -0
  515. /package/dist/{chunk-BUE2D7PX.js.map → chunk-32YV3TJT.js.map} +0 -0
  516. /package/dist/{chunk-3RCJJBNR.js.map → chunk-3ELRMVJK.js.map} +0 -0
  517. /package/dist/{chunk-6GMZ7HEE.js.map → chunk-3F7GLNAE.js.map} +0 -0
  518. /package/dist/{chunk-2Y4IMKA6.js.map → chunk-3H5KLDZN.js.map} +0 -0
  519. /package/dist/{chunk-VTFVLCUH.js.map → chunk-3JWHAR6E.js.map} +0 -0
  520. /package/dist/{chunk-JBDFMYKQ.js.map → chunk-4AF3TUMP.js.map} +0 -0
  521. /package/dist/{chunk-J6FXAEUG.js.map → chunk-6B3VNR4P.js.map} +0 -0
  522. /package/dist/{chunk-TUFM4UZP.js.map → chunk-6K7DPM7D.js.map} +0 -0
  523. /package/dist/{chunk-K6LHRFBL.js.map → chunk-6LMQ5R26.js.map} +0 -0
  524. /package/dist/{chunk-XLMEZIAJ.js.map → chunk-6OWXYZK2.js.map} +0 -0
  525. /package/dist/{chunk-BOWNCWZT.js.map → chunk-6QSQQLSE.js.map} +0 -0
  526. /package/dist/{chunk-NQKIUNW5.js.map → chunk-A6IJU4TK.js.map} +0 -0
  527. /package/dist/{chunk-QIZPZMUI.js.map → chunk-AOWGXU6D.js.map} +0 -0
  528. /package/dist/{chunk-SFAWCTEM.js.map → chunk-B57AFBY2.js.map} +0 -0
  529. /package/dist/{chunk-GPEQUXHL.js.map → chunk-B6SJIBQK.js.map} +0 -0
  530. /package/dist/{chunk-Q2PU57HC.js.map → chunk-BK2HHQGN.js.map} +0 -0
  531. /package/dist/{collection-facade-4GRREZ6C.js.map → chunk-BKT776R5.js.map} +0 -0
  532. /package/dist/{chunk-FXBIP2WD.js.map → chunk-BUDAGWL5.js.map} +0 -0
  533. /package/dist/{chunk-BOET4NA4.js.map → chunk-CKNGS5MH.js.map} +0 -0
  534. /package/dist/{chunk-YSRUYAVU.js.map → chunk-DE4DH2RZ.js.map} +0 -0
  535. /package/dist/{chunk-6I2RQCET.js.map → chunk-DF73H4UN.js.map} +0 -0
  536. /package/dist/{chunk-K7NTTA6P.js.map → chunk-EOVMT6TB.js.map} +0 -0
  537. /package/dist/{chunk-XTXOCYOJ.js.map → chunk-FCKWQE2H.js.map} +0 -0
  538. /package/dist/{chunk-4OZNXTO4.js.map → chunk-FN5EBVTQ.js.map} +0 -0
  539. /package/dist/{chunk-NKHRDYOR.js.map → chunk-FQ5VRHIB.js.map} +0 -0
  540. /package/dist/{chunk-FAHMLERK.js.map → chunk-FW22ZCXT.js.map} +0 -0
  541. /package/dist/{chunk-RMS3NEA3.js.map → chunk-HT2AHGQI.js.map} +0 -0
  542. /package/dist/{chunk-CHJBLCOG.js.map → chunk-HVSCEIYL.js.map} +0 -0
  543. /package/dist/{chunk-GY4WYNNG.js.map → chunk-ID6Z6E66.js.map} +0 -0
  544. /package/dist/{chunk-EYBQEIUY.js.map → chunk-IEX7NK2K.js.map} +0 -0
  545. /package/dist/{chunk-KUJDV5QH.js.map → chunk-ISZQJBML.js.map} +0 -0
  546. /package/dist/{chunk-LWBCUYZW.js.map → chunk-IT22PWKV.js.map} +0 -0
  547. /package/dist/{chunk-7V4TP3AF.js.map → chunk-J6UOHJY5.js.map} +0 -0
  548. /package/dist/{chunk-JMGDHKQF.js.map → chunk-JCN44NCY.js.map} +0 -0
  549. /package/dist/{chunk-CARABLSQ.js.map → chunk-K6W7BVZ6.js.map} +0 -0
  550. /package/dist/{chunk-453F654R.js.map → chunk-L7DOS3TE.js.map} +0 -0
  551. /package/dist/{chunk-WEQEYLCS.js.map → chunk-LGRLME4M.js.map} +0 -0
  552. /package/dist/{chunk-RMF67KCG.js.map → chunk-LQ4ZHOKP.js.map} +0 -0
  553. /package/dist/{chunk-ZVO4QVPD.js.map → chunk-M522UYZ2.js.map} +0 -0
  554. /package/dist/{chunk-2N4GY74U.js.map → chunk-MTL7MXGR.js.map} +0 -0
  555. /package/dist/{chunk-TFR7DSOV.js.map → chunk-MVZ2TPVP.js.map} +0 -0
  556. /package/dist/{chunk-CPWQB3N5.js.map → chunk-N5DNADLQ.js.map} +0 -0
  557. /package/dist/{chunk-ELNXJMGB.js.map → chunk-NNARWO72.js.map} +0 -0
  558. /package/dist/{chunk-6YXCPL4T.js.map → chunk-PDCG6PR5.js.map} +0 -0
  559. /package/dist/{chunk-REDOOY2Q.js.map → chunk-PSIV7CJV.js.map} +0 -0
  560. /package/dist/{chunk-ANATMFIO.js.map → chunk-QWFHIOD2.js.map} +0 -0
  561. /package/dist/{chunk-X2DLENDQ.js.map → chunk-QWGU66MP.js.map} +0 -0
  562. /package/dist/{chunk-BSFNRLK2.js.map → chunk-S57HTZ6X.js.map} +0 -0
  563. /package/dist/{chunk-SZJ3DLZA.js.map → chunk-SEE332EV.js.map} +0 -0
  564. /package/dist/{chunk-YYP7WSEB.js.map → chunk-SI3V7D4G.js.map} +0 -0
  565. /package/dist/{chunk-UGTBXF5U.js.map → chunk-SOIQ4MM4.js.map} +0 -0
  566. /package/dist/{chunk-VXGSWL6L.js.map → chunk-SYVZW77S.js.map} +0 -0
  567. /package/dist/{chunk-MVMXZYXT.js.map → chunk-TKUOEU2F.js.map} +0 -0
  568. /package/dist/{chunk-SMH6SRX7.js.map → chunk-TROR3ALR.js.map} +0 -0
  569. /package/dist/{chunk-DGOZ4UZD.js.map → chunk-VNNRUGMM.js.map} +0 -0
  570. /package/dist/{chunk-HDOU6I2Y.js.map → chunk-VNPEWFPD.js.map} +0 -0
  571. /package/dist/{chunk-L7CIOOBW.js.map → chunk-WNJ4AVGE.js.map} +0 -0
  572. /package/dist/{chunk-FMZY5Q6L.js.map → chunk-WX5ADGTZ.js.map} +0 -0
  573. /package/dist/{chunk-Q7HZX3IF.js.map → chunk-X4773RBR.js.map} +0 -0
  574. /package/dist/{chunk-ANSIZYEG.js.map → chunk-YNIUIERI.js.map} +0 -0
  575. /package/dist/{chunk-BZ3534YM.js.map → chunk-ZUVBC32X.js.map} +0 -0
  576. /package/dist/{chunk-L742JPKZ.js.map → chunk-ZXABPVM6.js.map} +0 -0
  577. /package/dist/{classified-marker-LI2SF2E4.js.map → classified-marker-W3USLL5M.js.map} +0 -0
  578. /package/dist/{computed-VPOKQK4N.js.map → collection-facade-QU6IJBN3.js.map} +0 -0
  579. /package/dist/{derive-6O5SWQKN.js.map → computed-TPFBX7U4.js.map} +0 -0
  580. /package/dist/{dead-filter-TSWZQRR5.js.map → dead-filter-U2UYKSZL.js.map} +0 -0
  581. /package/dist/{delegation-OVIFFPG4.js.map → delegation-S3AEPW2T.js.map} +0 -0
  582. /package/dist/{enclave-KJOTOH7X.js.map → derive-OX7F6TGG.js.map} +0 -0
  583. /package/dist/{dispatch-WC6X2M6C.js.map → dispatch-3CQDJV5Q.js.map} +0 -0
  584. /package/dist/{dispatch-S73TK3IY.js.map → dispatch-RH4LHKBH.js.map} +0 -0
  585. /package/dist/{executor-5NIMLSKZ.js.map → enclave-27SMF6GF.js.map} +0 -0
  586. /package/dist/{executor-AQVXV5GZ.js.map → executor-B6SRO2QS.js.map} +0 -0
  587. /package/dist/{executor-PUAO6AKJ.js.map → executor-BI5CHWRY.js.map} +0 -0
  588. /package/dist/{export-accessible-72EQNBMR.js.map → executor-RBKM5W5K.js.map} +0 -0
  589. /package/dist/{extract-partition-PUYNU3UF.js.map → export-accessible-VMA3YM5V.js.map} +0 -0
  590. /package/dist/{find-2ABFCZX4.js.map → extract-partition-NF7PXGPP.js.map} +0 -0
  591. /package/dist/{fanout-sidecar-WUFXNYP4.js.map → fanout-sidecar-OT6RYLOL.js.map} +0 -0
  592. /package/dist/{issue-SIDORTSZ.js.map → find-LZMP26KF.js.map} +0 -0
  593. /package/dist/{ledger-F33ZVMTK.js.map → issue-IHARXWW5.js.map} +0 -0
  594. /package/dist/{liberate-LCDPNAG2.js.map → ledger-KZPCMVZY.js.map} +0 -0
  595. /package/dist/{link-set-FKNWAYKS.js.map → liberate-GRLCZMW4.js.map} +0 -0
  596. /package/dist/{managed-secret-PQYKSR6T.js.map → link-set-JCMJ7ULP.js.map} +0 -0
  597. /package/dist/{noydb-DUXZPKSN.js.map → managed-secret-S3MQ6SH6.js.map} +0 -0
  598. /package/dist/{migrate-cek-5ENH64AA.js.map → migrate-cek-V7GKJZ7O.js.map} +0 -0
  599. /package/dist/{register-I2DZXGAR.js.map → noydb-SWQJ3MZS.js.map} +0 -0
  600. /package/dist/{pod-handle-Q736KYON.js.map → pod-handle-WGDFB4C2.js.map} +0 -0
  601. /package/dist/{post-register-LNE2FE2A.js.map → post-register-SLSXIPBV.js.map} +0 -0
  602. /package/dist/{registry-23WF3TGH.js.map → query/all/index.js.map} +0 -0
  603. /package/dist/{registry-4AYVUNXK.js.map → register-F3OYE7MJ.js.map} +0 -0
  604. /package/dist/{registry-VSSQPIGF.js.map → registry-CILQFXFK.js.map} +0 -0
  605. /package/dist/{registry-YLEWMGAC.js.map → registry-XNNYQVKV.js.map} +0 -0
  606. /package/dist/{request-withdrawal-KFQHEZ25.js.map → registry-YCDZV3VW.js.map} +0 -0
  607. /package/dist/{revoke-DQDZAZZM.js.map → registry-ZGYS33TE.js.map} +0 -0
  608. /package/dist/{signer-WAMDZHEN.js.map → request-withdrawal-Z5NC6TXT.js.map} +0 -0
  609. /package/dist/{reveal-67RDQRIN.js.map → reveal-4BCKPEC2.js.map} +0 -0
  610. /package/dist/{stale-DDL7WQEZ.js.map → revoke-ZL62WC2D.js.map} +0 -0
  611. /package/dist/{seed-G42JYN56.js.map → seed-4JS2RJ4A.js.map} +0 -0
  612. /package/dist/{storage-FLR73HHF.js.map → signer-MBZZMXTC.js.map} +0 -0
  613. /package/dist/{walk-3UQBRMDV.js.map → stale-TJ3DYZMQ.js.map} +0 -0
  614. /package/dist/{withdraw-accessible-EL5GXZBS.js.map → storage-SVMKRGCW.js.map} +0 -0
  615. /package/dist/{store-coordination-provider-MEQ2MJQG.js.map → store-coordination-provider-2O2VUHKW.js.map} +0 -0
  616. /package/dist/{verify-KOV2G5D6.js.map → verify-RVT67IMH.js.map} +0 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Civil-date recognition for `dateTrunc()` (#1410).
3
+ *
4
+ * ## Why this module exists
5
+ *
6
+ * `dateTrunc()` buckets a value by resolving it to an instant and reading the
7
+ * civil calendar date that instant falls on in the declared `timeZone`. That is
8
+ * exactly right for a *timestamp*. It is a **category error** for a value that
9
+ * names no instant.
10
+ *
11
+ * `'2026-01-01'` — the shape `z.string().date()` produces — is a calendar date.
12
+ * ECMA-262 nonetheless resolves the ISO date-only form to **UTC midnight**, and
13
+ * converting that instant into any zone west of UTC moves it back a day. So
14
+ * `dateTrunc(..., 'month', { timeZone: 'America/New_York' })` silently bucketed
15
+ * `'2026-01-01'` into `2025-12` — a wrong year, no error, no warning. Correct at
16
+ * `+07` and UTC purely by accident of sign, which is what made it latent.
17
+ *
18
+ * ## The rule
19
+ *
20
+ * **A string carrying no timezone designator denotes CIVIL time and is used as
21
+ * written. Everything else is an instant and is converted through the zone.**
22
+ *
23
+ * That covers three shapes, all of which are zoneless:
24
+ *
25
+ * | input | denotes | why |
26
+ * |---|---|---|
27
+ * | `'2026-01-01'`, `'2026-01'`, `'2026'` | civil | ISO calendar forms; no time, no zone |
28
+ * | `'2026-01-01T08:30'`, `'2026-01-01 08:30:00.5'` | civil | offsetless date-time |
29
+ * | `'2026-01-01T00:00:00Z'`, `'…+07:00'`, `Date`, epoch ms | instant | carries, or *is*, a fixed point in time |
30
+ *
31
+ * The offsetless date-time is the subtle one and it is included **deliberately**.
32
+ * ECMA-262 parses it as *host-local*, which is the same defect one layer down:
33
+ * the bucket would depend on the machine the query ran on, and this module's
34
+ * whole premise (see `date-trunc.ts`) is that a host-local guess is never
35
+ * acceptable. Reading it as civil makes the result host-independent. The
36
+ * time-of-day is then simply discarded — every `dateTrunc` unit is a day or
37
+ * coarser, so no unit can observe it.
38
+ *
39
+ * ⚠️ **Loose, non-ISO strings are NOT recognised here** — `'01/01/2026'`,
40
+ * RFC-2822, and anything else `Date.parse` accepts by implementation extension
41
+ * stay on the instant path. Their parsing is implementation-defined, so there
42
+ * is no shape this module could claim to recognise correctly; a consumer who
43
+ * wants civil treatment should pass an ISO calendar date.
44
+ *
45
+ * ⚠️ **An out-of-range field is REFUSED, not rolled over.** V8's `Date.parse`
46
+ * accepts `'2026-02-30'` and yields 2 March; bucketing a typo under a
47
+ * wrong-but-plausible key is the failure mode this whole module exists to
48
+ * prevent, so a recognised-shape-but-impossible date throws instead.
49
+ */
50
+ /** A calendar date with no instant and no zone. `m` is 1-12. */
51
+ export interface CivilDate {
52
+ readonly y: number;
53
+ readonly m: number;
54
+ readonly d: number;
55
+ }
56
+ /**
57
+ * What a value denotes:
58
+ * - a {@link CivilDate} — a zoneless calendar shape, use it as written;
59
+ * - `'invalid'` — a recognised calendar shape naming no real day (see the
60
+ * out-of-range note above); the caller refuses it with its own context;
61
+ * - `undefined` — an instant, or an unrecognised shape: convert through the
62
+ * declared zone exactly as before.
63
+ */
64
+ export declare function civilDateOf(value: unknown): CivilDate | 'invalid' | undefined;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Keyset cursors for `Query.page()` / `Query.after()` (#1346).
3
+ *
4
+ * A cursor names a POSITION — the `(sortKey, id)` of the last row a page
5
+ * served — not an offset. That is the whole point: a record inserted or
6
+ * deleted before the position cannot shift the next window, where
7
+ * `offset(n)` would re-serve or skip a row.
8
+ *
9
+ * The encoding is deliberately OPAQUE: consumers must treat the string as a
10
+ * token and pass it back verbatim, so the shape stays free to change. It is
11
+ * an encoding, NOT a signature — a cursor carries no secret and travels only
12
+ * as far as the caller sends it. The `shape` token is an integrity check
13
+ * against consumer mistakes (a cursor replayed against another sort order or
14
+ * another collection), not against an adversary.
15
+ *
16
+ * Portability: hub/src must run in a browser/Worker/Deno/Bun, so the base64
17
+ * step uses `btoa`/`atob` over a `TextEncoder` byte string — never `Buffer`.
18
+ */
19
+ import type { OrderBy } from './builder.js';
20
+ /** The decoded keyset a cursor names. */
21
+ export interface KeysetCursor {
22
+ /** The sort spec + source identity this cursor was minted for. */
23
+ readonly shape: string;
24
+ /** The row's sort-key values, one per `orderBy` entry. */
25
+ readonly values: readonly unknown[];
26
+ /** The row's record id — the tiebreak that makes the keyset a total order. */
27
+ readonly id: string;
28
+ }
29
+ /**
30
+ * The token a cursor is bound to. Two queries may resume each other's cursors
31
+ * only when this matches: same source, same ordered sort spec.
32
+ */
33
+ export declare function keysetShape(identity: string | undefined, orderBy: readonly OrderBy[]): string;
34
+ export declare function encodeCursor(cursor: KeysetCursor): string;
35
+ /**
36
+ * Decode a cursor and REFUSE it unless it was minted for `expectedShape`.
37
+ * Silently returning a nonsense window for a mismatched cursor is the
38
+ * failure mode this exists to prevent.
39
+ */
40
+ export declare function decodeCursor(raw: string, expectedShape: string): KeysetCursor;
@@ -0,0 +1,98 @@
1
+ /**
2
+ * ⚠️ #1458 — this file is SHARED, not Reduce's.
3
+ *
4
+ * It moved into `query/reduce/` with `distinct()` and moved straight back: the
5
+ * eager index layer (`with-lookup/indexing/eager-indexes.ts`) canonicalises its
6
+ * bucket keys through `stringifyBucketKey` / `isProbeableBucketKey`, so
7
+ * `@noy-db/hub/query` reaches it at runtime through the index fast path and the
8
+ * query-tiers closure check said so. Two callers with different lifetimes —
9
+ * `distinctKeyOf` for Reduce, the bucket-key pair for Find's indexes — and the
10
+ * canonicalisation must be ONE definition or a probe and a bucket disagree.
11
+ */
12
+ /**
13
+ * The ONE definition of "are these two field values the same value?" (#1347).
14
+ *
15
+ * `distinct()`, `countDistinct()` and the eager hash index all have to answer
16
+ * that question, and they have to answer it IDENTICALLY — an index-backed
17
+ * `distinct()` reads bucket keys, a scanned one recomputes them, and the two
18
+ * are only allowed to be different code paths because they are not different
19
+ * definitions. So `stringifyBucketKey` lives here and `eager-indexes.ts`
20
+ * imports it rather than keeping a private twin; a change to one is a change
21
+ * to both by construction.
22
+ *
23
+ * ⚠️ THE KEY IS COMPUTED FROM THE **STORED** VALUE, never the decoded one.
24
+ * That is what makes a Via-covered field behave: money stores a scaled
25
+ * integer, and a legacy row written before the field was declared can hold a
26
+ * non-canonical spelling of it (`'0100'` where a canonical write produces
27
+ * `'100'`). Both denote 1.00, and `ViaPipeline.canonicalizeIndexKey` folds
28
+ * them onto one key. Dedup on the raw string reports two values; dedup on the
29
+ * FORMATTED string is worse still, because it makes distinctness depend on a
30
+ * locale the query layer does not have.
31
+ */
32
+ /**
33
+ * Stringify a value into a stable bucket key.
34
+ *
35
+ * `null`/`undefined` produce a sentinel that records will never match (so we
36
+ * never index nullish values — `where('x', '==', null)` falls back to a
37
+ * linear scan). Numbers, booleans, strings, and Date objects are coerced via
38
+ * `String()`. Objects produce a sentinel that no real record will match —
39
+ * querying with object values is a code smell.
40
+ */
41
+ export declare function stringifyBucketKey(value: unknown): string;
42
+ /**
43
+ * Is this OPERAND one a hash bucket can answer for? (#1402)
44
+ *
45
+ * ⛔ Two of {@link stringifyBucketKey}'s outputs are not addresses, and a
46
+ * probe that treats them as one returns wrong rows SILENTLY — the #1402
47
+ * failure mode, and measured on `main` for ordinary non-Via fields:
48
+ *
49
+ * - `'\0OBJECT\0'` is a COLLISION BUCKET, not a sentinel. Every non-Date
50
+ * object-valued record in the collection sits in it, so
51
+ * `where('obj', '==', { k: 1 })` matched `[a, b]` from the index against
52
+ * `[]` from the scan (the scan compares by reference and matches
53
+ * neither). The doc above says *"objects produce a sentinel that no real
54
+ * record will match"*; that was true of the OPERAND and false of the
55
+ * stored values, which is exactly the half that decides the answer.
56
+ * - `'\0NULL\0'` is an empty bucket, because nullish values are never
57
+ * inserted. Probing it returns `EMPTY_SET`, which reads as "no matches"
58
+ * rather than "I cannot answer" — so `where('tag', '==', undefined)`
59
+ * returned `[]` from the index against the records that genuinely have
60
+ * no `tag` from the scan. The doc above already claims this case *"falls
61
+ * back to a linear scan"*; it did not.
62
+ *
63
+ * Both are fixed at the PROBE, never at the bucketing: a caller that gets
64
+ * `false` here must return `null` (= "no index answer, scan it"), not an
65
+ * empty set. Bucketing is untouched, so no stored data or persisted sidecar
66
+ * moves.
67
+ *
68
+ * ⚠️ EAGER MODE ONLY, deliberately. `PersistedCollectionIndex` (lazy) has
69
+ * no scan to fall back TO — refusing there converts wrong rows into an
70
+ * `IndexRequiredError`, which is a behaviour decision of its own and is
71
+ * left open rather than smuggled in here.
72
+ */
73
+ export declare function isProbeableBucketKey(value: unknown): boolean;
74
+ /**
75
+ * The narrow slice of `ViaPipeline` a distinct key needs. Declared
76
+ * structurally so this module — kernel spine — does not have to reach into a
77
+ * `with-*` service, and so a caller holding only a money binder can satisfy it.
78
+ */
79
+ export interface BucketKeyCanonicalizer {
80
+ canonicalizeIndexKey(field: string, rawValue: unknown): string | undefined;
81
+ }
82
+ /**
83
+ * The distinct key for one stored field value, or `undefined` when the value
84
+ * is NULLISH and therefore not a distinct value at all.
85
+ *
86
+ * ⭐ NULLISH IS EXCLUDED, DELIBERATELY. Three reasons, and the first is the
87
+ * one that decides it: the hash index does not hold nullish values, so an
88
+ * index-backed `distinct()` *cannot* report them, and a scan that did would
89
+ * make the two paths disagree — a correctness bug that only appears on the
90
+ * collections large enough to have an index. Second, it matches
91
+ * `COUNT(DISTINCT x)` and Dexie's `uniqueKeys()`, so nobody is surprised.
92
+ * Third, a caller who wants the nullish bucket can ask for it directly with
93
+ * `.where(field, '==', null)`, which is cheap and says what it means.
94
+ * (`groupBy()` goes the OTHER way and buckets nullish — that is not an
95
+ * inconsistency: a group key is a partition of the rows, a distinct value is
96
+ * a member of the field's value set.)
97
+ */
98
+ export declare function distinctKeyOf(field: string, storedValue: unknown, via?: BucketKeyCanonicalizer): string | undefined;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * #1414 — the cold-collection gate.
3
+ *
4
+ * An eager collection that has never been read asynchronously holds an EMPTY
5
+ * cache. Before this module every synchronous query terminal answered out of
6
+ * that cache, so a cold collection reported `[]` / `0` / `false` with total
7
+ * confidence, forever, until some `list()`/`get()` hydrated it. Guards inherit
8
+ * the same source through `ReadOnlyVaultFacade`, and both failure directions
9
+ * were measured on shipped stable: a valid write refused because the guard's
10
+ * lookup came back empty, and — worse — a write that a warm instance REFUSES
11
+ * committing on a cold one, because the guard's `await …toArray()` saw nothing.
12
+ *
13
+ * **Empty and unable-to-answer are different facts.** Same posture as #1402
14
+ * ("an index that cannot answer must say so, not return nothing") and #1410.
15
+ *
16
+ * The fix has to serve two callers at once, and that is what shapes this
17
+ * module:
18
+ *
19
+ * - the AWAITED caller (`await q.toArray()`, and therefore every guard, since
20
+ * `GuardSpec.check` is async) must transparently hydrate and get the rows.
21
+ * This is the half that closes the bypass.
22
+ * - the SYNCHRONOUS caller must be told, loudly, that the answer it is about
23
+ * to trust is not an answer.
24
+ *
25
+ * A terminal cannot both throw and be awaitable, so a cold terminal returns a
26
+ * **pending result**: a thenable that hydrates and re-runs the terminal when
27
+ * awaited, and throws {@link CollectionNotHydratedError} on every use that
28
+ * READS it — indexing, `.length`, iteration, spread, `.map()`, `JSON.stringify`,
29
+ * `String()`, `in`, `Object.keys`, arithmetic, any property read.
30
+ *
31
+ * ⛔ **THE EXACT BOUNDARY, enumerated — because "any other use" is what this
32
+ * doc used to say, and it was not true (#1462).** Two operations answer
33
+ * without reaching a proxy trap, and NEITHER CAN BE MADE TO THROW:
34
+ *
35
+ * | use | result | why it cannot throw |
36
+ * |---|---|---|
37
+ * | `typeof rows` | `'object'` | answered from the value's type, no trap |
38
+ * | `if (rows)` / `Boolean(rows)` — truthiness | `true` | `ToBoolean` never calls a trap |
39
+ *
40
+ * Do not try to close either with a `valueOf` returning `false` — that would
41
+ * resurrect the confident-wrong-answer this whole module exists to abolish, in
42
+ * the one shape nobody would ever check.
43
+ *
44
+ * ⭐ **`Array.isArray` used to be a third row, and it was the dangerous one.**
45
+ * `toArray()` is declared `T[]`, so `Array.isArray(rows) ? rows : []` is the
46
+ * ORDINARY defensive shape for the declared type — and it returned `[]` on a
47
+ * cold collection, restoring the silent empty read this module abolishes,
48
+ * behind code that looks like it handles the edge case. It is closed: the
49
+ * proxy's target is `[]`, and `IsArray` unwraps a proxy to its target, so the
50
+ * check answers `true` and the guard falls through to the throwing path. That
51
+ * cost one character of target and no change to the design — the report that
52
+ * found it assumed it needed a real array exotic object.
53
+ *
54
+ * ⚠️ **So the rule for anyone extending this: a use that reaches a trap must
55
+ * throw, and a use that cannot reach one must be IN THE TABLE ABOVE.** The
56
+ * table is pinned by `__tests__/1462-pending-result-surface.test.ts`, which
57
+ * also asserts this comment no longer claims a total guarantee — a probe
58
+ * written against "any other use" passes vacuously, because the phrase names
59
+ * no specific use for anything to contradict.
60
+ */
61
+ export interface HydrationGate {
62
+ /** `<vault>/<collection>` — names the collection in the error. */
63
+ readonly label: string;
64
+ /** Collection name alone, for the error's structured field. */
65
+ readonly collection: string;
66
+ /** False only while the eager cache has never been bulk-loaded. */
67
+ isHydrated(): boolean;
68
+ /** Bulk-load the collection. Idempotent. */
69
+ hydrate(): Promise<void>;
70
+ }
71
+ /**
72
+ * Terminal wrapper. Returns `compute()` unchanged whenever the source is
73
+ * hydrated (or carries no gate at all — a plain-object source, a join source,
74
+ * a lazy collection), so the hot path is one property read and a boolean.
75
+ */
76
+ export declare function gateTerminal<V>(gate: HydrationGate | undefined, terminal: string, compute: () => V): V;
@@ -1,25 +1,41 @@
1
1
  /**
2
- * Query DSL barrel export.
2
+ * `@noy-db/hub/query`**Find**, the always-on group of the query DSL (#1458).
3
3
  *
4
- * Public API:
5
- * - `Query<T>` chainable, immutable builder
6
- * - `QuerySource<T>` interface for record sources (Collection implements it)
7
- * - `Operator` — comparison operators accepted by `where()`
8
- * - `QueryPlan<T>` — serializable plan object
4
+ * ```ts
5
+ * import { Query } from '@noy-db/hub/query'
6
+ * invoices.query().where('status', '==', 'paid').orderBy('date', 'desc').limit(20).toArray()
7
+ * ```
9
8
  *
10
- * Tree-shakeable: importing this barrel without calling `query()` does not
11
- * pull in the executor's runtime, since `Query` is the only entry point.
9
+ * Predicate sort slice hydrate, over one source: `where` (ten
10
+ * operators), `or`, `and`, `filter`, `wherePredicate`, `orderBy`, `limit`,
11
+ * `offset`, `page`, `after`, `first`, `toArray`, `count`, `exists`, `ids`,
12
+ * `toPlan`. Nothing here reaches a second collection, folds a result set, or
13
+ * re-runs on change.
14
+ *
15
+ * ⭐ **The other three groups are subpaths, and each is one import:**
16
+ *
17
+ * | group | import | brings |
18
+ * |---|---|---|
19
+ * | Live | `@noy-db/hub/query/live` | `subscribe`, `live` |
20
+ * | Reduce | `@noy-db/hub/query/reduce` | `aggregate`, `groupBy`, `window`, `distinct`, `dateTrunc` |
21
+ * | Relate | `@noy-db/hub/query/relate` | the joins, `traverse`, `explain` |
22
+ *
23
+ * The import is a SIDE EFFECT — it patches the methods onto `Query.prototype`
24
+ * and merges their types into `Query`, so one line at your app's entry serves
25
+ * the whole program. Calling a method whose group is not imported does not
26
+ * compile; if it reaches runtime through a cast, it throws
27
+ * {@link QueryExtensionMissingError} naming the subpath.
28
+ *
29
+ * ⚠️ **`@noy-db/hub` (the root barrel) imports all three**, so a consumer on
30
+ * the root barrel needs none of this and sees no change. The saving is for
31
+ * consumers who import this subpath directly.
12
32
  */
13
- export { Query, executePlan, DEFAULT_CROSS_JOIN_MAX_ROWS } from './builder.js';
33
+ export { Query, executePlan } from './builder.js';
14
34
  export type { QueryPlan, QuerySource, OrderBy } from './builder.js';
15
35
  export type { Operator, Clause, FieldClause, FilterClause, GroupClause, CrossJoinClause } from './predicate.js';
16
36
  export { evaluateClause, evaluateFieldClause, readPath } from './predicate.js';
17
37
  export { CollectionIndexes } from '../../with-lookup/indexing/eager-indexes.js';
18
38
  export type { IndexDef, HashIndex } from '../../with-lookup/indexing/eager-indexes.js';
19
- export { applyJoins, DEFAULT_JOIN_MAX_ROWS, resetJoinWarnings } from './join.js';
20
- export type { JoinLeg, JoinContext, JoinableSource, JoinStrategy } from './join.js';
21
- export { buildLiveQuery } from './live.js';
22
- export type { LiveQuery, LiveUpstream } from './live.js';
23
39
  export { ScanBuilder } from './scan-builder.js';
24
- export type { ScanPageProvider } from './scan-builder.js';
25
- export { GroupCardinalityError, IndexRequiredError, IndexWriteFailureError, JoinTooLargeError, DanglingReferenceError, CrossJoinTooLargeError, CrossJoinSourceUnknownError, FieldNotQueryableError, } from '../errors.js';
40
+ export type { ScanPageProvider, MultiReduceResult } from './scan-builder.js';
41
+ export { IndexRequiredError, IndexWriteFailureError, FieldNotQueryableError, UnsafePatternError, QueryExtensionMissingError, } from '../errors.js';
@@ -0,0 +1,30 @@
1
+ /**
2
+ * #1458 — how an extension group's methods reach `Query.prototype`.
3
+ *
4
+ * Each group defines its half of the builder as a MIXIN CLASS whose method
5
+ * bodies moved out of `builder.ts` unchanged — `this.plan`, `this.source`,
6
+ * `this.joinContext` and the rest still resolve, because TypeScript's
7
+ * `private` is a compile-time construct and a method installed on the
8
+ * prototype reads them like any other property. The mixin declares those
9
+ * fields with `declare`, which emits nothing.
10
+ *
11
+ * ⭐ **Why a mixin CLASS rather than a file of `Query.prototype.x = function`
12
+ * assignments.** The bodies are the point: several are 100+ lines carrying
13
+ * prose that explains a decision, and a mechanical rewrite into assignment
14
+ * form would have touched every one of them. As class methods they moved
15
+ * byte-for-byte, so the diff shows a relocation rather than a rewrite — and an
16
+ * overload set (`join`, `joinOn`, `aggregate`, `groupBy` all have them)
17
+ * survives, which an assignment form cannot express.
18
+ */
19
+ /**
20
+ * Copy a mixin's prototype methods onto a target prototype, replacing the Find
21
+ * stubs.
22
+ *
23
+ * `getOwnPropertyNames` rather than `Object.assign`: class methods are
24
+ * non-enumerable prototype properties, so `assign` copies nothing at all —
25
+ * silently, leaving every stub in place. Descriptors are copied whole so a
26
+ * getter stays a getter.
27
+ */
28
+ export declare function installMethods(target: object, mixin: {
29
+ prototype: object;
30
+ }): void;
@@ -0,0 +1,22 @@
1
+ import type { Clause, CrossJoinClause } from '../predicate.js';
2
+ import type { JoinableSource, JoinContext, JoinLeg } from '../relate/join.js';
3
+ import type { OrderBy } from '../builder.js';
4
+ /** The Relate entry points Find's executor calls. Every one is join-conditional. */
5
+ export interface RelateHooks {
6
+ applyJoins(rows: readonly unknown[], joins: readonly JoinLeg[], ctx: JoinContext, locale?: string): unknown[];
7
+ splitAroundJoins(clauses: readonly Clause[], joins: readonly JoinLeg[]): {
8
+ preJoin: readonly Clause[];
9
+ postJoin: readonly Clause[];
10
+ };
11
+ orderReferencesJoinAlias(orderBy: readonly OrderBy[], joins: readonly JoinLeg[]): boolean;
12
+ joinsDropLeftRows(joins: readonly JoinLeg[]): boolean;
13
+ applyCrossJoin(leftRel: unknown[], clause: CrossJoinClause, rightSource: JoinableSource): unknown[];
14
+ }
15
+ /** Called once by `@noy-db/hub/query/relate` on load. */
16
+ export declare function installRelateHooks(hooks: RelateHooks): void;
17
+ /**
18
+ * The Relate hooks, or the actionable error. Read only from a guarded branch —
19
+ * see this module's header for why that makes the throw unreachable for a
20
+ * consumer who never built a join.
21
+ */
22
+ export declare function relateHooks(): RelateHooks;
@@ -0,0 +1,43 @@
1
+ import type { DeclaredPredicate, InternalSource, QueryPlan } from '../builder.js';
2
+ import type { JoinContext } from '../relate/join.js';
3
+ import type { ReduceStrategy } from '../../../with-lookup/reduce/strategy.js';
4
+ /** @internal — copied onto `Query.prototype` by both Live and Reduce. */
5
+ export declare class MaintenanceMethods {
6
+ protected readonly source: InternalSource;
7
+ protected readonly plan: QueryPlan;
8
+ protected readonly joinContext: JoinContext | undefined;
9
+ protected readonly reduceStrategy: ReduceStrategy;
10
+ protected readonly predicates: ReadonlyMap<string, DeclaredPredicate> | undefined;
11
+ protected decodeVia: (records: readonly unknown[], locale?: string) => unknown[];
12
+ /**
13
+ * Build the #1341 delta maintainer for this plan, or `undefined` when the
14
+ * plan shape or the source cannot support one (the query then re-runs in
15
+ * full, exactly as it did before #1341).
16
+ *
17
+ * Everything the maintainer needs is taken from THIS query so the two paths
18
+ * cannot diverge: `matches` is the same `filterRecords` call the eager
19
+ * pipeline makes, `compare` is the same comparator `sortRecords` sorts with,
20
+ * and `decode` is the same Via result decode `toArray()` applies after
21
+ * slicing.
22
+ */
23
+ private incrementalMaintainer;
24
+ /**
25
+ * Build the #1341 grouped-maintenance seam for this plan, or `undefined`
26
+ * when the plan shape or the source cannot support one (a grouped live
27
+ * reduction then re-runs in full, exactly as it did before).
28
+ *
29
+ * Same whitelist and the same three inputs `incrementalMaintainer('records')`
30
+ * uses, for the same reason: `.groupBy()`'s record pipeline IS
31
+ * `.aggregate()`'s — `candidateRecords` + `filterRecords`, with no sort, no
32
+ * window and no Via result decode — so `orderBy`/`limit` are stripped before
33
+ * the whitelist is asked. `matches` is the same `filterRecords` call the
34
+ * eager pipeline makes, which is what stops the two paths from drifting.
35
+ *
36
+ * The one addition is `project`: `.groupBy(dateTrunc(...))` (#1350) stamps a
37
+ * derived key onto each row AFTER filtering and before bucketing, and the
38
+ * maintainer has to stamp it too or it would bucket on a field that is not
39
+ * there. It is a pure per-record map, which is the only kind of projection
40
+ * this hook may carry.
41
+ */
42
+ private groupMaintenance;
43
+ }