@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
@@ -46,6 +46,16 @@ export interface FieldDescriptor {
46
46
  readonly optional?: boolean;
47
47
  /** Foreign-key target as `<collection>.<field>` when declared. */
48
48
  readonly references?: string;
49
+ /**
50
+ * Read-shape sensitivity, declared as `FieldMeta.bulk` (#1363). Present only
51
+ * when the collection is live in this process (the declaration lives in the
52
+ * `fieldMeta` channel, which is not persisted with the schema).
53
+ *
54
+ * ⚠️ Telemetry, never a control: it tells a coverage sensor which
55
+ * collections have a corpus worth accounting for. Against an insider holding
56
+ * the device and local keys it prevents nothing — key custody does.
57
+ */
58
+ readonly bulk?: 'sensitive';
49
59
  }
50
60
  export interface CollectionStats {
51
61
  readonly records: number;
@@ -113,6 +123,23 @@ export interface CollectionDescriptor {
113
123
  readonly stats?: CollectionStats;
114
124
  readonly meta?: CollectionMeta;
115
125
  readonly config?: CollectionConfig;
126
+ /**
127
+ * #1447 — fields the datastore itself computes or resolves, as
128
+ * `field → the via brands covering it` (`money`, `computed`, `i18n`,
129
+ * `lookup`, `geo`, `classified`, `blob`). Absent when the collection
130
+ * declares no via pipeline.
131
+ *
132
+ * Exists so a consumer can gate documentation against what the vault
133
+ * actually enforces. The reported case: a rulebook described three
134
+ * vault-computed fields as app-owned — the UNDERSTATING direction, which is
135
+ * silent, because it produces app-side reimplementation of a guarantee that
136
+ * already exists rather than a missing behaviour someone trips over.
137
+ *
138
+ * ⛔ Brand and field only. A binding's CONFIGURATION is deliberately absent:
139
+ * a dump saying "this field is classified, sensitivity pii" is a map of the
140
+ * columns worth attacking, in an artefact that by design leaves the vault.
141
+ */
142
+ readonly via?: Record<string, readonly string[]>;
116
143
  }
117
144
  export interface MaterializedViewDescriptor {
118
145
  readonly sources: ReadonlyArray<string>;
@@ -134,8 +161,37 @@ export interface InternalCollectionStats {
134
161
  readonly records: number;
135
162
  readonly bytes: number;
136
163
  }
164
+ /**
165
+ * A report section `dumpSchema()` is capable of emitting (#1447).
166
+ *
167
+ * ⛔ CAPABILITY OF THE EMITTER, NEVER CONTENT OF THIS DUMP. `reports` lists
168
+ * what this hub *would* have reported, not what it found — a vault that
169
+ * genuinely declares no via fields still lists `'via'`.
170
+ *
171
+ * That distinction is the entire point. A content-based list reintroduces the
172
+ * ambiguity it exists to remove: a consumer could not tell "no via fields
173
+ * here" from "this hub cannot report them", which is exactly how a
174
+ * documentation gate switching to the live report passes VACUOUSLY on a hub
175
+ * too old to answer. Measured by a consumer attempting that adoption.
176
+ */
177
+ export type SnapshotReport = 'via' | 'stats';
137
178
  export interface VaultSchemaSnapshot {
138
- readonly _noydb_snapshot: 1;
179
+ readonly _noydb_snapshot: 2;
180
+ /**
181
+ * Which report sections this snapshot's emitter can produce (#1447).
182
+ *
183
+ * Check this before concluding anything from an ABSENT section:
184
+ *
185
+ * ```ts
186
+ * if (!snap.reports.includes('via')) throw new Error('hub cannot report via')
187
+ * // only now is a missing `via` key evidence that a collection declares none
188
+ * ```
189
+ *
190
+ * Required, and required deliberately: an optional field would leave
191
+ * `undefined` meaning "old emitter", which is the same ambiguity one level up.
192
+ * Every snapshot states what it can say.
193
+ */
194
+ readonly reports: readonly SnapshotReport[];
139
195
  readonly vault: string;
140
196
  readonly emittedAt: string;
141
197
  readonly subsystems: Record<string, boolean>;
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import { type RefDescriptor, type RefViolation, type RefRegistry } from '../../kernel/refs.js';
18
18
  import { type LinkSpec, type LinkSetHandle } from './names.js';
19
- import type { JoinableSource } from '../../kernel/query/index.js';
19
+ import type { JoinableSource } from '../../kernel/query/relate/join.js';
20
20
  import type { Collection } from '../../kernel/collection.js';
21
21
  import type { NoydbStore } from '../../kernel/types.js';
22
22
  import type { TxContext } from '../../with-commit/tx/transaction.js';
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Partitioned collections — the union read path and the declaration surface
3
+ * (#1342, ADR 0007 "partitioning is collection-shaped").
4
+ *
5
+ * ## What was ruled, and what that left to build
6
+ *
7
+ * ADR 0007 ruled **NO** on lifting a partition value into a storage key or
8
+ * into cleartext envelope metadata: it is a permanent per-record
9
+ * classification handed to the backend, and it widens `@noy-db/hub/to` across
10
+ * every `to-*` adapter and the conformance kit to buy a win on one read path.
11
+ * `NoydbStore.listPage` is untouched by this file, and must stay untouched.
12
+ *
13
+ * It ruled instead that **a partition IS a collection**. The store already
14
+ * sees collection names in cleartext — `listPage(vault, collection, cursor,
15
+ * limit)` takes the name as a parameter — so `invoices@FY2026-Q1` prunes for
16
+ * free: `listPage` never fetches an excluded partition because it is never
17
+ * asked to. No seam change, no new leak class, and partition = collection =
18
+ * DEK makes it a REAL boundary rather than an advisory one (per-collection
19
+ * wrapping, #1004): a principal granted only Q1 cannot decrypt Q2, and a
20
+ * closed period's DEK can be archived or dropped outright — something a
21
+ * scoped predicate can never do.
22
+ *
23
+ * The honest cost of that ruling was three missing pieces. This module is
24
+ * them:
25
+ *
26
+ * 1. **a cross-collection union read path** — there was none, so a query
27
+ * spanning four quarters meant running four and merging by hand;
28
+ * 2. **cheap partition enumeration** — `vault.collections()` is
29
+ * `adapter.loadAll(vault)`, the WHOLE vault snapshot, so even LISTING
30
+ * partitions cost a full load;
31
+ * 3. **a declaration** binding a set of collections into one logical
32
+ * collection with a partition key, so a `where` on that key can prune.
33
+ *
34
+ * ## Where the win actually is
35
+ *
36
+ * `collection.query()` runs over an already-decrypted in-memory cache with
37
+ * hash / sorted / compound dispatch in front of it (#1344, #1345), so pruning
38
+ * there is strictly weaker than an index that already ships. `scan()` is the
39
+ * prize: every page is DECRYPTED, so a partition never fetched is a page
40
+ * never decrypted. {@link PartitionedScan} is where the measured win lives;
41
+ * {@link PartitionedQuery} exists because a union that only streams is not a
42
+ * union read path.
43
+ *
44
+ * ## Why this is a free function and not `vault.partitioned()`
45
+ *
46
+ * `check-architecture`'s kernel-surface ratchet leaves `vault.ts` one line of
47
+ * headroom, and a service that re-couples itself into the kernel is exactly
48
+ * what that ratchet exists to catch. It is also not a `with*()` factory: once
49
+ * ADR 0007 removed the storage-layout policy (there is no key prefixing to
50
+ * configure — the partition is a collection), nothing is left to opt into.
51
+ * What remains is a query-shaped helper over collections the caller already
52
+ * owns, so it is a plain function, tree-shaken when unused.
53
+ *
54
+ * ## The immutability precondition, stated once
55
+ *
56
+ * ⛔ **A record's partition key must be immutable.** If a record can be edited
57
+ * from one partition to another, a scope derived at plan time and a scope
58
+ * derived at read time can disagree, and the difference is silently missing
59
+ * rows. {@link PartitionedCollection.put} routes on `record[key]` and will
60
+ * happily write the same id into two partitions if the key changes; it does
61
+ * not police this, because it cannot see the prior value without reading
62
+ * every partition — which is the cost the whole design exists to avoid.
63
+ */
64
+ import type { Collection } from '../../kernel/collection.js';
65
+ import type { Vault } from '../../kernel/vault.js';
66
+ import type { Operator } from '../../kernel/query/predicate.js';
67
+ import type { OrderBy } from '../../kernel/query/builder.js';
68
+ import type { QueryExplanation } from '../../kernel/query/relate/explain.js';
69
+ import { ScanBuilder } from '../../kernel/query/scan-builder.js';
70
+ import type { ScanPageProvider } from '../../kernel/query/scan-builder.js';
71
+ import type { ReduceResult, ReduceSpec } from '../../with-lookup/reduce/reduction.js';
72
+ import type { PartitionScope } from '../../kernel/query/relate/partition.js';
73
+ /**
74
+ * The collection holding one registry record per partitioned logical
75
+ * collection. A normal, ENCRYPTED collection — the partition list is record
76
+ * content, not a record id, so declaring a partition set adds no cleartext
77
+ * channel of its own. (The partition VALUES do become collection names, and
78
+ * that exposure is ADR 0007's deliberate, developer-visible trade; this
79
+ * registry does not widen it.)
80
+ */
81
+ export declare const PARTITION_REGISTRY_COLLECTION = "_partition_sets";
82
+ /** How a partition value becomes a collection name. */
83
+ export type PartitionNamer = (logicalName: string, partition: string) => string;
84
+ /** The default: `invoices` + `FY2026-Q1` → `invoices@FY2026-Q1`. */
85
+ export declare const defaultPartitionNamer: PartitionNamer;
86
+ export interface PartitionSpec<T> {
87
+ /** The logical collection name. Never itself a stored collection. */
88
+ readonly name: string;
89
+ /**
90
+ * The field whose value names the partition. ⛔ Must be immutable per
91
+ * record — see this module's header.
92
+ */
93
+ readonly key: keyof T & string;
94
+ /**
95
+ * Partition values known to the caller. Merged with whatever the registry
96
+ * already holds, so a caller may declare none and rely on the registry, or
97
+ * declare the full set and never write one.
98
+ */
99
+ readonly partitions?: readonly string[];
100
+ /** Override the partition → collection-name mapping. */
101
+ readonly namer?: PartitionNamer;
102
+ /**
103
+ * Options passed to every member `vault.collection()` — indexes, refs,
104
+ * schema. Identical across partitions by construction: they are one logical
105
+ * collection, and a per-partition shape would make the union unsound.
106
+ */
107
+ readonly collectionOptions?: unknown;
108
+ }
109
+ /**
110
+ * Bind a set of collections into one partitioned logical collection.
111
+ *
112
+ * ```ts
113
+ * const invoices = partitioned<Invoice>(vault, {
114
+ * name: 'invoices',
115
+ * key: 'period',
116
+ * partitions: ['FY2026-Q1', 'FY2026-Q2', 'FY2026-Q3', 'FY2026-Q4'],
117
+ * })
118
+ *
119
+ * await invoices.put('inv-1', { id: 'inv-1', period: 'FY2026-Q1', amount: 100 })
120
+ *
121
+ * // reads ONE collection — the other three are never asked for
122
+ * const q1 = await invoices.query().where('period', '==', 'FY2026-Q1').all()
123
+ *
124
+ * // reads all four, merged, sorted and paged AFTER the union
125
+ * const top = await invoices.query().orderBy('amount', 'desc').limit(10).all()
126
+ * ```
127
+ */
128
+ export declare function partitioned<T>(vault: Vault, spec: PartitionSpec<T>): PartitionedCollection<T>;
129
+ export declare class PartitionedCollection<T> {
130
+ readonly name: string;
131
+ readonly key: string;
132
+ private readonly vault;
133
+ private readonly namer;
134
+ private readonly collectionOptions;
135
+ private readonly declared;
136
+ /**
137
+ * Session cache of the REGISTRY's partition list — deliberately not of the
138
+ * merged set. The two are different questions and conflating them cost a
139
+ * red test: `ensurePartition` must persist a partition the caller DECLARED
140
+ * but never wrote, and a cache of the merged set makes every declared value
141
+ * look already-known, so the registry stays empty and a later session that
142
+ * declares nothing enumerates nothing.
143
+ */
144
+ private stored;
145
+ constructor(vault: Vault, spec: PartitionSpec<T>);
146
+ /** The member collection name for a partition value. */
147
+ collectionNameOf(partition: string): string;
148
+ /** The member `Collection` for one partition. */
149
+ partition(value: string): Collection<T>;
150
+ /**
151
+ * The declared partition set, in declaration order.
152
+ *
153
+ * ⭐ **This is the "cheap enumeration" half of #1342, and cheap means a
154
+ * measured thing.** `vault.collections()` is `adapter.loadAll(vault)` — the
155
+ * whole vault snapshot, every collection, every envelope — so enumerating
156
+ * twelve quarters cost a full load before this existed. Here it is ONE
157
+ * record read out of {@link PARTITION_REGISTRY_COLLECTION}, and zero reads
158
+ * once the session has resolved it.
159
+ * `__tests__/partitioned-collection.test.ts` asserts the `loadAll` count is
160
+ * zero rather than trusting the sentence.
161
+ */
162
+ partitions(): Promise<readonly string[]>;
163
+ /**
164
+ * Declare a partition, persisting it so a later session enumerates it
165
+ * without the caller re-declaring. Idempotent, and keyed on what the
166
+ * REGISTRY holds rather than on what this handle declared.
167
+ */
168
+ ensurePartition(value: string): Promise<void>;
169
+ private loadStored;
170
+ /**
171
+ * Write a record into the partition its key names, declaring that partition
172
+ * if it is new.
173
+ *
174
+ * Throws when `record[key]` is not a string — a partition value names a
175
+ * collection, and routing a record to a partition derived by coercion is
176
+ * how a record ends up somewhere no query will look for it.
177
+ */
178
+ put(id: string, record: T): Promise<void>;
179
+ /** A union query across the member collections, pruned by the predicate. */
180
+ query(): PartitionedQuery<T>;
181
+ /**
182
+ * A union scan across the member collections, pruned by the predicate.
183
+ * Pages are decrypted, so an excluded partition is decryption never paid.
184
+ */
185
+ scan(opts?: {
186
+ pageSize?: number;
187
+ }): PartitionedScan<T>;
188
+ /** @internal — the normalizer for clause shapes, and the union's legs. */
189
+ _registryName(): string;
190
+ private registry;
191
+ }
192
+ /** `record[partitionKey]` was absent, empty, or not a string. */
193
+ export declare class PartitionKeyError extends Error {
194
+ constructor(collection: string, key: string, value: unknown);
195
+ }
196
+ /**
197
+ * One recorded builder call, replayed onto each in-scope member's own
198
+ * builder.
199
+ *
200
+ * ⭐ **Replay, not re-implementation.** The alternative was to build `Clause`
201
+ * objects here, which would have meant a second copy of `Query.where()`'s
202
+ * normalization — the `matches` lowering (#1357), the subquery resolution
203
+ * (#1351), the Via posture gate and the operand rewrite. A second copy is a
204
+ * second thing to drift. Instead every leg is a real `Query` / `ScanBuilder`
205
+ * that normalized the call itself, and the PRUNING reads the normalized
206
+ * `Clause[]` back off one of them — so the clause the pruner classifies is
207
+ * byte-identical to the clause the executor evaluates.
208
+ */
209
+ type Step<T> = {
210
+ readonly kind: 'where';
211
+ readonly field: string;
212
+ readonly op: Operator;
213
+ readonly value: unknown;
214
+ } | {
215
+ readonly kind: 'filter';
216
+ readonly fn: (record: T) => boolean;
217
+ };
218
+ /**
219
+ * A union query across a partitioned collection's members.
220
+ *
221
+ * **Filtering runs per leg; ordering and paging run AFTER the union** — the
222
+ * same shape `orderBy('client.name')` needed when the sort moved after the
223
+ * join legs (#1337). A `limit` is deliberately NOT pushed down: the top ten
224
+ * of the union is not the top ten of any one leg, and a leg-local limit would
225
+ * be correct only for an unordered query, which is the case nobody writes.
226
+ */
227
+ export declare class PartitionedQuery<T> {
228
+ private readonly col;
229
+ private readonly steps;
230
+ private readonly orderBys;
231
+ private readonly limitN;
232
+ private readonly offsetN;
233
+ constructor(col: PartitionedCollection<T>, steps: readonly Step<T>[], orderBys: readonly OrderBy[], limitN: number | undefined, offsetN: number);
234
+ private with;
235
+ where(field: keyof T & string, op: Operator, value: unknown): PartitionedQuery<T>;
236
+ filter(fn: (record: T) => boolean): PartitionedQuery<T>;
237
+ orderBy(field: keyof T & string, direction?: 'asc' | 'desc'): PartitionedQuery<T>;
238
+ limit(n: number): PartitionedQuery<T>;
239
+ offset(n: number): PartitionedQuery<T>;
240
+ /** The pruning decision for this query, and the set it was taken against. */
241
+ scope(): Promise<{
242
+ declared: readonly string[];
243
+ scope: PartitionScope;
244
+ }>;
245
+ /**
246
+ * The matched rows, unordered and unpaged — the set every reduce-shaped
247
+ * terminal reports over, matching `Query.count()`'s rule that orderBy /
248
+ * limit / offset describe a page and a reduction is not paginated.
249
+ */
250
+ private matched;
251
+ /** The union, sorted then paged. */
252
+ all(): Promise<T[]>;
253
+ first(): Promise<T | null>;
254
+ count(): Promise<number>;
255
+ aggregate<Spec extends ReduceSpec>(spec: Spec): Promise<ReduceResult<Spec>>;
256
+ /**
257
+ * The plan, with the partition decision as its first line:
258
+ *
259
+ * ```
260
+ * partitions partitions: 1 of 12 scanned [partitions:pruned] -- key "period"; FY2026-Q1
261
+ * source snapshot (no indexes) [source] rows=500
262
+ * where period == "FY2026-Q1" [scan] rows=500
263
+ * ```
264
+ *
265
+ * ⭐ The dispatch label is decided by {@link resolvePartitionScope} — the
266
+ * SAME call the executor makes, not a mirror of it. `explain.ts`'s header
267
+ * warns that its index dispatch mirrors `candidateRecords`; #1375 deleted
268
+ * one such mirror, and a partition dispatch would have been a third site.
269
+ *
270
+ * The nodes after the partition line are the FIRST in-scope member's own
271
+ * explanation. Every member runs the same plan over the same shape, so one
272
+ * leg's nodes describe them all; the partition line is what says how many
273
+ * legs there are.
274
+ */
275
+ explain(): Promise<QueryExplanation>;
276
+ }
277
+ /**
278
+ * A union scan across a partitioned collection's members — **the path where
279
+ * pruning pays.**
280
+ *
281
+ * Each page is fetched through the member collection's `listPage`, which
282
+ * DECRYPTS it. An excluded partition is therefore not merely a store call
283
+ * skipped, it is every envelope in that partition never decrypted. That is
284
+ * the whole return on ADR 0007, and `__tests__/partitioned-scan-cost.test.ts`
285
+ * measures it rather than asserting it.
286
+ *
287
+ * The builder records `where`/`filter` and only materializes a
288
+ * {@link ScanBuilder} at the terminal, because the partition set cannot be
289
+ * decided before the predicate is known — a provider fixed at `scan()` time
290
+ * would already have committed to every partition.
291
+ */
292
+ export declare class PartitionedScan<T> {
293
+ private readonly col;
294
+ private readonly steps;
295
+ private readonly pageSize;
296
+ constructor(col: PartitionedCollection<T>, steps: readonly Step<T>[], pageSize: number);
297
+ where(field: keyof T & string, op: Operator, value: unknown): PartitionedScan<T>;
298
+ filter(fn: (record: T) => boolean): PartitionedScan<T>;
299
+ /** The pruning decision for this scan, and the set it was taken against. */
300
+ scope(): Promise<{
301
+ declared: readonly string[];
302
+ scope: PartitionScope;
303
+ }>;
304
+ /**
305
+ * The union as a single {@link ScanBuilder} — so `.aggregate()`,
306
+ * `.groupBy()` and `for await` come from the streaming machinery that
307
+ * already exists, at its existing O(reducers) memory bound, rather than
308
+ * from a second implementation of it.
309
+ */
310
+ builder(): Promise<ScanBuilder<T>>;
311
+ [Symbol.asyncIterator](): AsyncIterator<T>;
312
+ aggregate<Spec extends ReduceSpec>(spec: Spec): Promise<ReduceResult<Spec>>;
313
+ /**
314
+ * **ASYNC here, unlike `Query.toArray()` (#1413).** Same method name, a
315
+ * different contract, because the surface underneath differs: this one
316
+ * genuinely fetches across every partition leg, so it genuinely awaits. `Query`'s terminal reads an
317
+ * already-decrypted in-memory cache and returns `T[]` synchronously.
318
+ */
319
+ toArray(): Promise<T[]>;
320
+ }
321
+ /**
322
+ * Walk a list of member collections as ONE paged stream.
323
+ *
324
+ * The composite cursor is `"<memberIndex>|<memberCursor>"`. Two properties
325
+ * make it safe to hand back to a consumer that stores it:
326
+ *
327
+ * - it is opaque in exactly the way a store's own cursor is — the member
328
+ * cursor is passed through verbatim and never parsed;
329
+ * - a member's LAST page returns a cursor pointing at the NEXT member with
330
+ * an empty inner cursor, so exhaustion is detected once, not per page.
331
+ *
332
+ * ⚠️ A member that returns an empty page with a non-null cursor is walked
333
+ * again rather than treated as exhausted — the store contract explicitly
334
+ * allows a store to return fewer items than the limit while more exist.
335
+ */
336
+ export declare function unionPageProvider<T>(members: readonly Collection<T>[]): ScanPageProvider<T>;
337
+ export {};
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Cross-tab / cross-process change signals for `.live()` — #1362.
3
+ *
4
+ * A live query is in-process only: a write in tab A leaves tab B's `.live()`
5
+ * showing the old rows until B happens to read again. This module closes that
6
+ * without an external coordinator: every locally-committed change posts a
7
+ * compact ADDRESS on a channel named per store, and every listening instance
8
+ * re-reads that address **through its own keyring** and re-fires the live
9
+ * queries that touch it.
10
+ *
11
+ * ## The zero-knowledge constraint is the feature
12
+ *
13
+ * The frame is `{ vault, collection, id, ts }` and nothing else. No record, no
14
+ * field, no ciphertext, no key, not even the VERB — see below. Encryption
15
+ * happens in hub before any store, and a broadcast channel is **not a store**:
16
+ * it is a side channel with no authentication and no access control, so it is
17
+ * treated as untrusted in BOTH directions.
18
+ *
19
+ * - **Untrusted egress** — only the address leaves. A peer that should not
20
+ * be able to read a record learns, at most, that a record at that address
21
+ * changed. `change-broadcast.test.ts` asserts on the exact bytes posted and
22
+ * fails if anything resembling record content ever appears in them; that
23
+ * test is the thing that catches a future change which starts sending
24
+ * payloads.
25
+ * - **Untrusted ingress** — the frame carries no `action`. A peer's claim
26
+ * "this was a delete" is not evidence, and it is free not to need it: the
27
+ * receiver re-reads the address and decides the verb from what IT can
28
+ * decrypt. So a hostile or buggy peer on the channel can cost a wasted
29
+ * re-read, and cannot make a receiver report a state its own store does
30
+ * not hold.
31
+ *
32
+ * ## Why the receiver re-reads rather than patches
33
+ *
34
+ * #1341's `LiveMaintainer` patches a result set from a delta it TRUSTS —
35
+ * trustworthy because it was derived from a local write the same process
36
+ * observed, with the record in hand. A remote signal is a different animal: it
37
+ * says only "id X in collection Y changed", and the receiving instance has not
38
+ * decrypted the new record and knows neither the before nor the after state.
39
+ * Feeding it to the maintainer as if it were a local delta would patch a set
40
+ * from an address. So a remote-origin change re-reads and re-runs: the
41
+ * `ChangeEvent` it produces is tagged `remote: true`, and `Collection`'s query
42
+ * source hands the live query NO delta for such an event — which the maintainer
43
+ * already understands as "rebuild from scratch", the pre-#1341 behaviour.
44
+ *
45
+ * ## Transport
46
+ *
47
+ * `BroadcastChannel` when the host has one (browsers, Node >= 18,
48
+ * Deno, Bun) — feature-detected at enable time, never assumed. With no channel
49
+ * the whole feature is an inert no-op and behaviour is exactly what it is
50
+ * today. Any other host transport (Electron IPC, a worker `MessagePort`, a
51
+ * test bus) is supported by passing a `channel` that satisfies `TabChannel`.
52
+ */
53
+ import type { TabChannel } from './tab-coordination.js';
54
+ import type { ChangeEvent } from '../kernel/types.js';
55
+ /**
56
+ * The frame on the wire. `kind` discriminates it from any other traffic
57
+ * sharing the channel; `origin` identifies the sender so a channel that echoes
58
+ * to itself cannot feed an instance its own signal.
59
+ *
60
+ * ⛔ **Do not add a field carrying record state to this interface.** Not the
61
+ * record, not a field of it, not a hash of it, not the verb. Everything here
62
+ * is an ADDRESS plus routing. The test asserting on the posted bytes is what
63
+ * holds the line; it will fail loudly, which is the point.
64
+ */
65
+ export interface ChangeSignal {
66
+ readonly kind: 'noydb:change';
67
+ /** Sending instance's id — an incoming frame with our own id is ignored. */
68
+ readonly origin: string;
69
+ readonly vault: string;
70
+ readonly collection: string;
71
+ readonly id: string;
72
+ /** Sender's wall clock at post time. Diagnostic only; never compared for ordering. */
73
+ readonly ts: number;
74
+ }
75
+ export interface ChangeBroadcastOptions {
76
+ /**
77
+ * Host-provided transport. Supply this for a host with no
78
+ * `BroadcastChannel` (Electron IPC, a worker `MessagePort`, a test bus) or to
79
+ * take ownership of the channel's lifetime. Default: an inline
80
+ * `BroadcastChannel` if the host has one, else nothing at all.
81
+ */
82
+ readonly channel?: TabChannel;
83
+ /**
84
+ * Discriminator for the default channel name — `noydb:change:<storeId>`.
85
+ *
86
+ * ⚠️ Defaults to `store.name`, which is the backend KIND ('memory', 'file',
87
+ * 'idb'), not a per-dataset identity: two different IndexedDB databases both
88
+ * reporting `'idb'` would share one channel and re-read each other's
89
+ * addresses (harmless — a miss costs one read that finds nothing — but
90
+ * wasteful). Pass a `storeId` that names the DATASET whenever a host can
91
+ * open more than one.
92
+ */
93
+ readonly storeId?: string;
94
+ /** This instance's id. Default: a random one. */
95
+ readonly originId?: string;
96
+ /** Clock for the frame's `ts`. Default: `Date.now`. */
97
+ readonly now?: () => number;
98
+ }
99
+ /** The slice of `Noydb` this needs. Structural, so there is no import cycle. */
100
+ export interface ChangeBroadcastHost {
101
+ on(event: 'change', handler: (e: ChangeEvent) => void): void;
102
+ off(event: 'change', handler: (e: ChangeEvent) => void): void;
103
+ /** @internal Store backend name, for the default channel name. */
104
+ readonly _storeName: string | undefined;
105
+ /** @internal Re-read one address through this instance's own keyring. */
106
+ _applyRemoteSignal(vault: string, collection: string, id: string): Promise<void>;
107
+ }
108
+ /**
109
+ * An inline `BroadcastChannel` wrapper, or `undefined` when the host has none.
110
+ *
111
+ * ⚠️ Deliberately does NOT gate on `window`, and that asymmetry with
112
+ * `defaultChannel()` is the cross-process half of this feature, not an
113
+ * oversight. That gate exists because a presence HEARTBEAT and a Web-Locks role
114
+ * ELECTION are browser-tab concepts that should not start running in Node; a
115
+ * change signal is the opposite — Node workers and Electron processes sharing a
116
+ * store are exactly the case #1362 names, and gating on `window` would silently
117
+ * exclude them.
118
+ */
119
+ export declare function defaultChangeChannel(name: string): TabChannel | undefined;
120
+ /** Channel name for a store. One namespace per store so unrelated datasets never cross-signal. */
121
+ export declare function changeChannelName(storeId: string): string;
122
+ /**
123
+ * The relay itself: local change out as an address, remote address in as a
124
+ * re-read. Started by {@link enableChangeBroadcast}.
125
+ */
126
+ export declare class ChangeBroadcast {
127
+ #private;
128
+ constructor(host: ChangeBroadcastHost, channel: TabChannel, opts: {
129
+ originId: string;
130
+ now: () => number;
131
+ ownsChannel: boolean;
132
+ });
133
+ get originId(): string;
134
+ start(): void;
135
+ dispose(): void;
136
+ }
137
+ /**
138
+ * Opt in to cross-tab / cross-process live-query reactivity.
139
+ *
140
+ * ```ts
141
+ * const stop = enableChangeBroadcast(db, { storeId: 'invoices-2026' })
142
+ * // …a put in another tab now re-fires this tab's `.live()` queries…
143
+ * stop.dispose()
144
+ * ```
145
+ *
146
+ * Opt-in on purpose: it is a side channel, and a host that does not want one
147
+ * gets exactly today's behaviour by not calling this. **With no channel
148
+ * available it is also a no-op** — it returns a disposable that does nothing,
149
+ * never throws, and leaves in-process reactivity untouched.
150
+ */
151
+ export declare function enableChangeBroadcast(host: ChangeBroadcastHost, opts?: ChangeBroadcastOptions): {
152
+ dispose: () => void;
153
+ };
@@ -0,0 +1,27 @@
1
+ import {
2
+ FROZEN_SNAPSHOTS_COLLECTION,
3
+ freezeAndDeleteClosure,
4
+ freezeSnapshotOnly,
5
+ randomId,
6
+ withdrawAccessibleData
7
+ } from "./chunk-S57HTZ6X.js";
8
+ import "./chunk-WNJ4AVGE.js";
9
+ import "./chunk-HBPPGWUM.js";
10
+ import "./chunk-IUWCVHQ7.js";
11
+ import "./chunk-KJFW62P4.js";
12
+ import "./chunk-SEE332EV.js";
13
+ import "./chunk-6QSQQLSE.js";
14
+ import "./chunk-DE4DH2RZ.js";
15
+ import "./chunk-LQ4ZHOKP.js";
16
+ import "./chunk-LP7BEXCT.js";
17
+ import "./chunk-UYB234ZR.js";
18
+ import "./chunk-ODVPTDPK.js";
19
+ import "./chunk-244VXYPG.js";
20
+ export {
21
+ FROZEN_SNAPSHOTS_COLLECTION,
22
+ freezeAndDeleteClosure,
23
+ freezeSnapshotOnly,
24
+ randomId,
25
+ withdrawAccessibleData
26
+ };
27
+ //# sourceMappingURL=withdraw-accessible-5NZUPAVA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}