@noy-db/hub 0.4.0-pre.5 → 0.4.0-pre.7

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 (534) hide show
  1. package/dist/api-3NKVNZPM.js +20 -0
  2. package/dist/attestation/index.js +20 -20
  3. package/dist/{backup-YCHAC575.js → backup-PTSVXDDW.js} +13 -13
  4. package/dist/blobs/index.js +15 -12
  5. package/dist/blobs/index.js.map +1 -1
  6. package/dist/broker/index.js +12 -12
  7. package/dist/cargo/index.js +36 -36
  8. package/dist/{chunk-5WLDZZ6S.js → chunk-35NMVJ7I.js} +3 -3
  9. package/dist/{chunk-TNATF3HB.js → chunk-3HUYRN24.js} +4 -4
  10. package/dist/chunk-3HUYRN24.js.map +1 -0
  11. package/dist/{chunk-TNJVDG2B.js → chunk-3XKESW5E.js} +3 -3
  12. package/dist/{chunk-MUPZ6IZX.js → chunk-4JQK3L4V.js} +2 -2
  13. package/dist/{chunk-Z4D3YGAB.js → chunk-4ZKNC6A6.js} +2 -2
  14. package/dist/{chunk-ONB627HU.js → chunk-55LX6FSX.js} +2 -2
  15. package/dist/{chunk-QMZ5A6FQ.js → chunk-56IIVAEO.js} +2 -2
  16. package/dist/chunk-5D2ALSM5.js +19 -0
  17. package/dist/chunk-5D2ALSM5.js.map +1 -0
  18. package/dist/{chunk-FHHYCBBP.js → chunk-5DRROK5W.js} +2 -2
  19. package/dist/{chunk-GTNRMJYH.js → chunk-5GQEU4DN.js} +2 -2
  20. package/dist/{chunk-YQQPNXNO.js → chunk-6L3DKWRY.js} +6 -6
  21. package/dist/chunk-6LJY7X5A.js +18 -0
  22. package/dist/chunk-6LJY7X5A.js.map +1 -0
  23. package/dist/{chunk-M6QA2KK2.js → chunk-6M2I3DKF.js} +2 -2
  24. package/dist/{chunk-FTCGEUOY.js → chunk-6R6Q3MRN.js} +7 -7
  25. package/dist/{chunk-ZUDAK436.js → chunk-6UBZ6I5Z.js} +2 -2
  26. package/dist/{chunk-SEU6QHH4.js → chunk-6ZNSB3H6.js} +5 -17
  27. package/dist/chunk-6ZNSB3H6.js.map +1 -0
  28. package/dist/chunk-AFHQATY4.js +47 -0
  29. package/dist/chunk-AFHQATY4.js.map +1 -0
  30. package/dist/{chunk-7U6AB7DZ.js → chunk-AKKRXT23.js} +2 -2
  31. package/dist/{chunk-2PDBYF2O.js → chunk-AT2JJEKJ.js} +4 -4
  32. package/dist/chunk-AT2JJEKJ.js.map +1 -0
  33. package/dist/{chunk-OWLZONGX.js → chunk-BLBAQRBM.js} +2 -2
  34. package/dist/{chunk-QBOQI6PG.js → chunk-BN4HRYAZ.js} +2 -2
  35. package/dist/{chunk-QVGEVZ5F.js → chunk-BQ6DHN4I.js} +3 -3
  36. package/dist/{chunk-GP54LU5N.js → chunk-BYFXLDVV.js} +9 -9
  37. package/dist/{chunk-FIP7KI2P.js → chunk-C25JXSOR.js} +337 -21
  38. package/dist/chunk-C25JXSOR.js.map +1 -0
  39. package/dist/chunk-CADUYBQD.js +151 -0
  40. package/dist/chunk-CADUYBQD.js.map +1 -0
  41. package/dist/{chunk-HAPY7WFP.js → chunk-CCDP6EPB.js} +13 -355
  42. package/dist/chunk-CCDP6EPB.js.map +1 -0
  43. package/dist/{chunk-QRHEAZ2Q.js → chunk-CUZLNGD5.js} +1 -1
  44. package/dist/{chunk-YXIVUWDU.js → chunk-DGBIHDVK.js} +5 -5
  45. package/dist/chunk-DSDXAKIP.js +50 -0
  46. package/dist/chunk-DSDXAKIP.js.map +1 -0
  47. package/dist/{chunk-QZJEYZ4I.js → chunk-DZAF24PG.js} +5 -5
  48. package/dist/chunk-DZFQVICS.js +23 -0
  49. package/dist/chunk-DZFQVICS.js.map +1 -0
  50. package/dist/chunk-E23UGFVC.js +63 -0
  51. package/dist/chunk-E23UGFVC.js.map +1 -0
  52. package/dist/{chunk-X3MWEFPT.js → chunk-EBKCYQ2D.js} +14 -14
  53. package/dist/chunk-EBKCYQ2D.js.map +1 -0
  54. package/dist/chunk-EP5L47XV.js +22 -0
  55. package/dist/chunk-EP5L47XV.js.map +1 -0
  56. package/dist/{chunk-TMR64XPL.js → chunk-EZNTORXE.js} +2 -2
  57. package/dist/{chunk-JAMDDLIM.js → chunk-FMNU7IUG.js} +3 -3
  58. package/dist/{chunk-YXZNGHID.js → chunk-FO6RNKKW.js} +8 -46
  59. package/dist/chunk-FO6RNKKW.js.map +1 -0
  60. package/dist/{chunk-YMUGBZN2.js → chunk-FQ5CHJR7.js} +1 -1
  61. package/dist/chunk-FQ5CHJR7.js.map +1 -0
  62. package/dist/{chunk-YZN6NRTR.js → chunk-FRMW23UK.js} +13 -11
  63. package/dist/chunk-FRMW23UK.js.map +1 -0
  64. package/dist/chunk-GJW4HX2O.js +1 -0
  65. package/dist/{chunk-7BIJS6II.js → chunk-GP3UWP22.js} +4 -4
  66. package/dist/{chunk-YTW6ZIPD.js → chunk-GZACYEOB.js} +1 -1
  67. package/dist/chunk-GZACYEOB.js.map +1 -0
  68. package/dist/{chunk-JIHH26WQ.js → chunk-HFUAFR6B.js} +6 -6
  69. package/dist/{chunk-J5TEU77Q.js → chunk-IF6WNGAK.js} +59 -4
  70. package/dist/chunk-IF6WNGAK.js.map +1 -0
  71. package/dist/{chunk-ZX5FNWH7.js → chunk-IG6KUWBX.js} +2 -2
  72. package/dist/chunk-IG6KUWBX.js.map +1 -0
  73. package/dist/{chunk-CKUYQO2P.js → chunk-IMRB2C4O.js} +7 -5
  74. package/dist/chunk-IMRB2C4O.js.map +1 -0
  75. package/dist/{chunk-RWW3I3PO.js → chunk-ISRKW4YN.js} +3 -3
  76. package/dist/{chunk-P4NUJVWL.js → chunk-IXNCZTWA.js} +2 -2
  77. package/dist/{chunk-YFFEF6HR.js → chunk-JIDLU57U.js} +3 -3
  78. package/dist/{chunk-PTT2NB46.js → chunk-JYJFGD2H.js} +2 -2
  79. package/dist/{chunk-3OWYOECI.js → chunk-JYV4JJV2.js} +5 -5
  80. package/dist/{chunk-OGVE4IJW.js → chunk-KBPU5M2E.js} +7 -7
  81. package/dist/{chunk-I2XEBEEF.js → chunk-KFRPNHWR.js} +4 -4
  82. package/dist/chunk-KFRPNHWR.js.map +1 -0
  83. package/dist/{chunk-3LJYHE7S.js → chunk-KPXM4WO6.js} +64 -57
  84. package/dist/chunk-KPXM4WO6.js.map +1 -0
  85. package/dist/{chunk-QMMOMBH6.js → chunk-KRCBZYTZ.js} +26 -177
  86. package/dist/chunk-KRCBZYTZ.js.map +1 -0
  87. package/dist/{chunk-UTEATWHO.js → chunk-KW42W6SV.js} +6 -6
  88. package/dist/{chunk-BY5YBSXA.js → chunk-L3YYLT4E.js} +15 -2
  89. package/dist/chunk-L3YYLT4E.js.map +1 -0
  90. package/dist/{chunk-UVBHM7AK.js → chunk-MANUDU7I.js} +6 -6
  91. package/dist/{chunk-YJ3TREAC.js → chunk-MHMLXJ3I.js} +2 -2
  92. package/dist/chunk-MHMLXJ3I.js.map +1 -0
  93. package/dist/{chunk-D4LAJ737.js → chunk-MSMJJB4J.js} +2 -2
  94. package/dist/chunk-MSMJJB4J.js.map +1 -0
  95. package/dist/{chunk-DYZ5CCVM.js → chunk-MXUT7FTE.js} +2 -2
  96. package/dist/chunk-MXUT7FTE.js.map +1 -0
  97. package/dist/{chunk-7ICV4ASA.js → chunk-N5PLUFH2.js} +27 -5
  98. package/dist/chunk-N5PLUFH2.js.map +1 -0
  99. package/dist/{chunk-K7BADAOS.js → chunk-NEX7JCMO.js} +4 -4
  100. package/dist/{chunk-5HSSTOOG.js → chunk-NFZGZ4AK.js} +2 -2
  101. package/dist/{chunk-XUFAFHQM.js → chunk-NJ4DYYO5.js} +7 -4
  102. package/dist/chunk-NJ4DYYO5.js.map +1 -0
  103. package/dist/{chunk-VEGQYPCP.js → chunk-NQSO4UAH.js} +8 -8
  104. package/dist/chunk-NQSO4UAH.js.map +1 -0
  105. package/dist/{chunk-GHEMAVTN.js → chunk-NYEFP7DY.js} +4 -4
  106. package/dist/chunk-NYEFP7DY.js.map +1 -0
  107. package/dist/{chunk-S4YERMGJ.js → chunk-OBPVWOSQ.js} +4 -4
  108. package/dist/{chunk-OHV6T5JB.js → chunk-OLIWCCFM.js} +2 -5
  109. package/dist/{chunk-2CRZOVDI.js → chunk-OLSARBZU.js} +2 -2
  110. package/dist/chunk-PEOZ34EM.js +13 -0
  111. package/dist/chunk-PEOZ34EM.js.map +1 -0
  112. package/dist/{chunk-KJTIAECI.js → chunk-PT4XLP6I.js} +171 -12
  113. package/dist/chunk-PT4XLP6I.js.map +1 -0
  114. package/dist/{chunk-LC7DSMHR.js → chunk-PTHKZWEH.js} +2 -14
  115. package/dist/{chunk-LC7DSMHR.js.map → chunk-PTHKZWEH.js.map} +1 -1
  116. package/dist/chunk-PVEWA2DU.js +23 -0
  117. package/dist/chunk-PVEWA2DU.js.map +1 -0
  118. package/dist/chunk-QADFHRQM.js +367 -0
  119. package/dist/chunk-QADFHRQM.js.map +1 -0
  120. package/dist/{chunk-7LP7FFJ2.js → chunk-QD46HPZG.js} +2 -2
  121. package/dist/{chunk-G4MFQXYX.js → chunk-QJNCB5SK.js} +2 -2
  122. package/dist/{chunk-6SYOHUHM.js → chunk-QZWTRENR.js} +2 -2
  123. package/dist/chunk-QZWTRENR.js.map +1 -0
  124. package/dist/{chunk-TSNRZSRC.js → chunk-RO5NM6UI.js} +2 -2
  125. package/dist/chunk-RO5NM6UI.js.map +1 -0
  126. package/dist/{chunk-GEEJPID6.js → chunk-RZPOZPZU.js} +8 -8
  127. package/dist/chunk-SGDPRCC4.js +1075 -0
  128. package/dist/chunk-SGDPRCC4.js.map +1 -0
  129. package/dist/{chunk-YCAJDK4O.js → chunk-SGQ4N5FS.js} +5 -5
  130. package/dist/{chunk-522MBPE5.js → chunk-SHEEBRZ4.js} +2 -2
  131. package/dist/{chunk-YWZEDG7F.js → chunk-SHYIA73K.js} +6 -6
  132. package/dist/{chunk-L2CAWCQL.js → chunk-SKM35Y4Q.js} +17 -26
  133. package/dist/chunk-SKM35Y4Q.js.map +1 -0
  134. package/dist/chunk-SMY5X46Z.js +14 -0
  135. package/dist/chunk-SMY5X46Z.js.map +1 -0
  136. package/dist/{chunk-K4BWPNJO.js → chunk-TE6LH6J2.js} +5 -5
  137. package/dist/{chunk-AFAPBZAA.js → chunk-TG634KCO.js} +11 -2
  138. package/dist/chunk-TG634KCO.js.map +1 -0
  139. package/dist/{chunk-V5JUAW4M.js → chunk-TIVK6PRK.js} +9 -10
  140. package/dist/chunk-TIVK6PRK.js.map +1 -0
  141. package/dist/{chunk-JN3SGXJE.js → chunk-UADPR6F4.js} +3 -3
  142. package/dist/{chunk-JN3SGXJE.js.map → chunk-UADPR6F4.js.map} +1 -1
  143. package/dist/{chunk-SBOHNJUD.js → chunk-V6UQZA2H.js} +2 -2
  144. package/dist/chunk-VG2ZSFYD.js +32 -0
  145. package/dist/chunk-VG2ZSFYD.js.map +1 -0
  146. package/dist/{chunk-SC4JLMZI.js → chunk-VH6SOCXH.js} +2 -2
  147. package/dist/chunk-VKQCVU2Z.js +21 -0
  148. package/dist/chunk-VKQCVU2Z.js.map +1 -0
  149. package/dist/chunk-VSRSQ2CR.js +654 -0
  150. package/dist/chunk-VSRSQ2CR.js.map +1 -0
  151. package/dist/{chunk-WQN5SM7P.js → chunk-W3G5REIU.js} +2 -2
  152. package/dist/{chunk-EGU4PWQW.js → chunk-W66AM5IB.js} +2 -2
  153. package/dist/chunk-W66AM5IB.js.map +1 -0
  154. package/dist/{chunk-HQKRZIX6.js → chunk-WBKZUO5V.js} +26 -43
  155. package/dist/chunk-WBKZUO5V.js.map +1 -0
  156. package/dist/{chunk-OMSKGLYA.js → chunk-WO4T4OD5.js} +2 -2
  157. package/dist/{chunk-6RPWILRH.js → chunk-WZ3NCMK6.js} +6 -5
  158. package/dist/{chunk-BAAUFCJK.js → chunk-X4MVWPHV.js} +3 -3
  159. package/dist/{chunk-R2N37AA6.js → chunk-XIDQKFZF.js} +3 -3
  160. package/dist/{chunk-EEZCB74X.js → chunk-XOBHRD2M.js} +575 -651
  161. package/dist/chunk-XOBHRD2M.js.map +1 -0
  162. package/dist/chunk-XZHEOSQ2.js +16 -0
  163. package/dist/chunk-XZHEOSQ2.js.map +1 -0
  164. package/dist/chunk-Y2NBBT6K.js +18 -0
  165. package/dist/chunk-Y2NBBT6K.js.map +1 -0
  166. package/dist/{chunk-OWOT7CFC.js → chunk-Y6B6HVKC.js} +2 -2
  167. package/dist/{chunk-5ATANZSW.js → chunk-Y6VZQGGH.js} +6 -6
  168. package/dist/chunk-YMUFFJCO.js +23 -0
  169. package/dist/chunk-YMUFFJCO.js.map +1 -0
  170. package/dist/{chunk-YZNKFYDC.js → chunk-ZFUFAHZ3.js} +4 -4
  171. package/dist/{chunk-PWWWMRT7.js → chunk-ZTLOXFPB.js} +2 -2
  172. package/dist/chunk-ZTLOXFPB.js.map +1 -0
  173. package/dist/{walk-E3OVLBFR.js → chunk-ZWBKDKXC.js} +4 -13
  174. package/dist/{walk-E3OVLBFR.js.map → chunk-ZWBKDKXC.js.map} +1 -1
  175. package/dist/classified/index.js +5 -5
  176. package/dist/{classified-marker-52P3D72W.js → classified-marker-EOOSMWFC.js} +3 -3
  177. package/dist/collection-facade-TTRF5NFJ.js +45 -0
  178. package/dist/{computed-33DRJDOC.js → computed-AB45PS4V.js} +3 -3
  179. package/dist/consent/index.js +13 -9
  180. package/dist/consent/index.js.map +1 -1
  181. package/dist/{cover-5BSNJREH.js → cover/index.js} +7 -6
  182. package/dist/crdt/index.js +4 -0
  183. package/dist/crdt/index.js.map +1 -1
  184. package/dist/custody/index.js +26 -0
  185. package/dist/{dead-filter-JXVCKS6W.js → dead-filter-6DYY7S64.js} +2 -2
  186. package/dist/{chunk-ILM6X6CP.js → delegation-ONOZVPIP.js} +12 -6
  187. package/dist/{chunk-ILM6X6CP.js.map → delegation-ONOZVPIP.js.map} +1 -1
  188. package/dist/derivations/index.js +12 -12
  189. package/dist/derive-IGGVSUPH.js +22 -0
  190. package/dist/directory/index.js +46 -0
  191. package/dist/{dispatch-PKQQFDBT.js → dispatch-7T45NN7C.js} +19 -18
  192. package/dist/{dispatch-PKQQFDBT.js.map → dispatch-7T45NN7C.js.map} +1 -1
  193. package/dist/{dispatch-SMXUO7W5.js → dispatch-RPTLK7LJ.js} +5 -5
  194. package/dist/{enclave-I5H3GINP.js → enclave-CLJVSDFG.js} +9 -9
  195. package/dist/executor-IEBLTBCW.js +9 -0
  196. package/dist/executor-RM7XWQDU.js +9 -0
  197. package/dist/executor-XZYM4KHT.js +28 -0
  198. package/dist/export-accessible-24XCCD3A.js +23 -0
  199. package/dist/extract-partition-H2TPEEOF.js +38 -0
  200. package/dist/{fanout-sidecar-WWXVHHUH.js → fanout-sidecar-TV7CXAJ6.js} +9 -9
  201. package/dist/find-OZMTRIK3.js +11 -0
  202. package/dist/forget/index.js +11 -11
  203. package/dist/forget/index.js.map +1 -1
  204. package/dist/guards/index.js +4 -4
  205. package/dist/history/index.js +16 -12
  206. package/dist/history/index.js.map +1 -1
  207. package/dist/i18n/index.js +16 -14
  208. package/dist/i18n/index.js.map +1 -1
  209. package/dist/index.d.ts +18 -24
  210. package/dist/index.js +212 -2045
  211. package/dist/index.js.map +1 -1
  212. package/dist/indexing/index.js +4 -2
  213. package/dist/indexing/index.js.map +1 -1
  214. package/dist/introspection/index.js +28 -0
  215. package/dist/issue-55HJE7JF.js +19 -0
  216. package/dist/kernel/collection-config.d.ts +1 -1
  217. package/dist/kernel/collection.d.ts +2 -2
  218. package/dist/kernel/errors.d.ts +2 -2
  219. package/dist/kernel/lazy.d.ts +30 -0
  220. package/dist/kernel/noydb.d.ts +22 -11
  221. package/dist/kernel/query/builder.d.ts +10 -10
  222. package/dist/kernel/query/index.d.ts +0 -6
  223. package/dist/kernel/query/scan-builder.d.ts +4 -4
  224. package/dist/kernel/types.d.ts +25 -25
  225. package/dist/kernel/vault.d.ts +10 -10
  226. package/dist/{ledger-M2BKCNVS.js → ledger-XY6NP3J2.js} +11 -11
  227. package/dist/liberate-LXOJ2EMB.js +24 -0
  228. package/dist/{link-set-ZU4E5J5S.js → link-set-POQB7BU5.js} +11 -11
  229. package/dist/materialized-views/index.js +22 -19
  230. package/dist/money/index.js +31 -0
  231. package/dist/noydb-KXS35UJS.js +82 -0
  232. package/dist/overlay-views/index.js +4 -4
  233. package/dist/periods/index.js +15 -13
  234. package/dist/pod/index.js +11 -12
  235. package/dist/{policy-IY2YEA3A.js → policy/index.js} +6 -6
  236. package/dist/port/with/blob-strategy.d.ts +15 -5
  237. package/dist/port/with/collection-registries.d.ts +62 -0
  238. package/dist/port/with/strategies.d.ts +11 -11
  239. package/dist/port/with/team-strategy.d.ts +2 -1
  240. package/dist/portability/index.js +8 -8
  241. package/dist/{post-register-XIAHB6KF.js → post-register-URQANI3B.js} +6 -6
  242. package/dist/query/index.js +6 -46
  243. package/dist/{aggregate → reduce}/index.js +24 -17
  244. package/dist/reduce/index.js.map +1 -0
  245. package/dist/register-5W6CG4RM.js +25 -0
  246. package/dist/registry-7Y5WF7GS.js +9 -0
  247. package/dist/{registry-VW6P6A3J.js → registry-BWD2ED52.js} +2 -2
  248. package/dist/registry-MCSGBZXI.js +18 -0
  249. package/dist/registry-UJFP3NWF.js +19 -0
  250. package/dist/request-withdrawal-IWYDM4SO.js +31 -0
  251. package/dist/{reveal-VWXRV2XU.js → reveal-BXZGWIOP.js} +6 -6
  252. package/dist/revoke-TINYPHYY.js +24 -0
  253. package/dist/satellites/index.js +1 -1
  254. package/dist/schema-update/index.js +26 -0
  255. package/dist/sealed-record/index.js +12 -12
  256. package/dist/search/index.js +36 -0
  257. package/dist/{seed-CDBFOTIK.js → seed-F7YYQTRC.js} +11 -11
  258. package/dist/sequence/index.js +30 -0
  259. package/dist/session/index.js +13 -9
  260. package/dist/session/index.js.map +1 -1
  261. package/dist/shadow/index.js +6 -2
  262. package/dist/shadow/index.js.map +1 -1
  263. package/dist/signer-WMZKCNKC.js +25 -0
  264. package/dist/snapshots/index.js +14 -10
  265. package/dist/snapshots/index.js.map +1 -1
  266. package/dist/{stale-NBROTA66.js → stale-JOE7GBAE.js} +11 -10
  267. package/dist/storage-B3WBKXKT.js +23 -0
  268. package/dist/store/index.js +22 -0
  269. package/dist/{store-coordination-provider-P3IU5JHD.js → store-coordination-provider-5LX2UFU2.js} +3 -3
  270. package/dist/sync/index.js +14 -10
  271. package/dist/sync/index.js.map +1 -1
  272. package/dist/team/index.js +36 -29
  273. package/dist/tiers/index.js +10 -10
  274. package/dist/to/index.js +1 -1
  275. package/dist/{tx → transactions}/index.js +7 -3
  276. package/dist/transactions/index.js.map +1 -0
  277. package/dist/util/index.js +1 -1
  278. package/dist/{verify-5X37OXRY.js → verify-7XWHJWUN.js} +5 -5
  279. package/dist/via/blob/active.d.ts +7 -18
  280. package/dist/via/blob/binding.d.ts +1 -1
  281. package/dist/via/blob/index.d.ts +4 -2
  282. package/dist/via/i18n/core.d.ts +1 -1
  283. package/dist/via/i18n/index.d.ts +2 -0
  284. package/dist/via/money/money-reducer.d.ts +2 -2
  285. package/dist/walk-6OHAWGBS.js +21 -0
  286. package/dist/with-audit/consent/index.d.ts +2 -0
  287. package/dist/with-audit/forget/active.d.ts +3 -3
  288. package/dist/with-audit/forget/index.d.ts +4 -4
  289. package/dist/with-audit/forget/strategy.d.ts +3 -3
  290. package/dist/with-audit/guards/executor.d.ts +4 -4
  291. package/dist/with-audit/guards/immutable-guard.d.ts +3 -3
  292. package/dist/with-audit/guards/index.d.ts +1 -1
  293. package/dist/with-audit/guards/registry.d.ts +3 -3
  294. package/dist/with-audit/guards/transition-guard.d.ts +3 -3
  295. package/dist/with-audit/guards/types.d.ts +10 -10
  296. package/dist/with-audit/guards/with-guard.d.ts +2 -2
  297. package/dist/with-audit/periods/index.d.ts +2 -0
  298. package/dist/with-cargo/floor.d.ts +3 -3
  299. package/dist/with-commit/crdt/index.d.ts +2 -0
  300. package/dist/with-commit/history/index.d.ts +2 -0
  301. package/dist/with-commit/numbering/descriptor.d.ts +16 -6
  302. package/dist/with-commit/tx/active.d.ts +5 -5
  303. package/dist/with-commit/tx/index.d.ts +2 -2
  304. package/dist/with-commit/tx/invariants.d.ts +1 -1
  305. package/dist/with-commit/tx/strategy.d.ts +3 -3
  306. package/dist/with-fork/shadow/index.d.ts +2 -0
  307. package/dist/with-fork/snapshots/active.d.ts +2 -2
  308. package/dist/with-fork/snapshots/index.d.ts +3 -1
  309. package/dist/with-fork/snapshots/noydb-facade.d.ts +3 -3
  310. package/dist/with-fork/snapshots/strategy.d.ts +2 -2
  311. package/dist/with-formula/derivations/executor.d.ts +2 -2
  312. package/dist/with-formula/derivations/index.d.ts +2 -1
  313. package/dist/with-formula/derivations/registry.d.ts +3 -3
  314. package/dist/with-formula/derivations/stale.d.ts +2 -2
  315. package/dist/with-formula/derivations/types.d.ts +3 -3
  316. package/dist/with-formula/derivations/with-derivation.d.ts +2 -2
  317. package/dist/with-formula/derivations/with-rollup.d.ts +15 -8
  318. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +3 -3
  319. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  320. package/dist/with-formula/materialized-views/registry.d.ts +4 -4
  321. package/dist/with-formula/materialized-views/types.d.ts +11 -11
  322. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +2 -2
  323. package/dist/with-formula/overlay-views/index.d.ts +1 -1
  324. package/dist/with-formula/overlay-views/registry.d.ts +4 -4
  325. package/dist/with-formula/overlay-views/types.d.ts +3 -3
  326. package/dist/with-formula/overlay-views/virtual-collection.d.ts +2 -2
  327. package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +2 -2
  328. package/dist/with-lookup/indexing/active.d.ts +5 -5
  329. package/dist/with-lookup/indexing/index.d.ts +3 -1
  330. package/dist/with-lookup/indexing/strategy.d.ts +3 -3
  331. package/dist/with-lookup/{aggregate → reduce}/active.d.ts +8 -8
  332. package/dist/with-lookup/{aggregate → reduce}/groupby.d.ts +21 -21
  333. package/dist/with-lookup/reduce/index.d.ts +34 -0
  334. package/dist/with-lookup/{aggregate → reduce}/reducers.d.ts +10 -10
  335. package/dist/with-lookup/{aggregate/aggregation.d.ts → reduce/reduction.d.ts} +21 -21
  336. package/dist/with-lookup/{aggregate → reduce}/strategy.d.ts +15 -15
  337. package/dist/with-lookup/search/build-docs.d.ts +7 -2
  338. package/dist/with-lookup/search/index.d.ts +1 -1
  339. package/dist/with-party/directory/cover/index.d.ts +1 -0
  340. package/dist/with-party/directory/index.d.ts +2 -0
  341. package/dist/with-party/session/index.d.ts +2 -0
  342. package/dist/with-party/sync/index.d.ts +2 -0
  343. package/dist/with-party/team/index.d.ts +2 -0
  344. package/dist/with-party/team/keyring.d.ts +68 -20
  345. package/dist/with-party/team/noydb-facade.d.ts +2 -1
  346. package/dist/with-shape/blobs/blob-set.d.ts +1 -1
  347. package/dist/with-shape/introspection/index.d.ts +6 -0
  348. package/dist/with-shape/schema-update/index.d.ts +1 -0
  349. package/dist/with-store/index.d.ts +3 -2
  350. package/dist/withdraw-accessible-DEUCOO4F.js +28 -0
  351. package/dist/withdraw-accessible-DEUCOO4F.js.map +1 -0
  352. package/package.json +42 -30
  353. package/dist/aggregate/index.js.map +0 -1
  354. package/dist/api-22ES33N3.js +0 -20
  355. package/dist/as/index.js +0 -30
  356. package/dist/at/index.js +0 -1
  357. package/dist/by/index.js +0 -11
  358. package/dist/chunk-2PDBYF2O.js.map +0 -1
  359. package/dist/chunk-2YELV6TV.js +0 -1
  360. package/dist/chunk-3LJYHE7S.js.map +0 -1
  361. package/dist/chunk-6SYOHUHM.js.map +0 -1
  362. package/dist/chunk-7ICV4ASA.js.map +0 -1
  363. package/dist/chunk-AFAPBZAA.js.map +0 -1
  364. package/dist/chunk-BY5YBSXA.js.map +0 -1
  365. package/dist/chunk-CJVEAVYH.js +0 -205
  366. package/dist/chunk-CJVEAVYH.js.map +0 -1
  367. package/dist/chunk-CKUYQO2P.js.map +0 -1
  368. package/dist/chunk-D4LAJ737.js.map +0 -1
  369. package/dist/chunk-DYZ5CCVM.js.map +0 -1
  370. package/dist/chunk-EEZCB74X.js.map +0 -1
  371. package/dist/chunk-EGU4PWQW.js.map +0 -1
  372. package/dist/chunk-FIP7KI2P.js.map +0 -1
  373. package/dist/chunk-GHEMAVTN.js.map +0 -1
  374. package/dist/chunk-HAPY7WFP.js.map +0 -1
  375. package/dist/chunk-HQKRZIX6.js.map +0 -1
  376. package/dist/chunk-I2XEBEEF.js.map +0 -1
  377. package/dist/chunk-IGLU4ME7.js +0 -255
  378. package/dist/chunk-IGLU4ME7.js.map +0 -1
  379. package/dist/chunk-J5TEU77Q.js.map +0 -1
  380. package/dist/chunk-KJTIAECI.js.map +0 -1
  381. package/dist/chunk-L2CAWCQL.js.map +0 -1
  382. package/dist/chunk-LB7FD65R.js +0 -163
  383. package/dist/chunk-LB7FD65R.js.map +0 -1
  384. package/dist/chunk-PWWWMRT7.js.map +0 -1
  385. package/dist/chunk-QMMOMBH6.js.map +0 -1
  386. package/dist/chunk-SEU6QHH4.js.map +0 -1
  387. package/dist/chunk-TNATF3HB.js.map +0 -1
  388. package/dist/chunk-TSNRZSRC.js.map +0 -1
  389. package/dist/chunk-V5JUAW4M.js.map +0 -1
  390. package/dist/chunk-VEGQYPCP.js.map +0 -1
  391. package/dist/chunk-X3MWEFPT.js.map +0 -1
  392. package/dist/chunk-XUFAFHQM.js.map +0 -1
  393. package/dist/chunk-YJ3TREAC.js.map +0 -1
  394. package/dist/chunk-YMUGBZN2.js.map +0 -1
  395. package/dist/chunk-YTW6ZIPD.js.map +0 -1
  396. package/dist/chunk-YXZNGHID.js.map +0 -1
  397. package/dist/chunk-YZN6NRTR.js.map +0 -1
  398. package/dist/chunk-ZX5FNWH7.js.map +0 -1
  399. package/dist/collection-facade-XKCFHSLR.js +0 -44
  400. package/dist/delegation-WWZPEDK2.js +0 -25
  401. package/dist/derive-CWWFEQ4N.js +0 -21
  402. package/dist/executor-FCJEH3FU.js +0 -9
  403. package/dist/executor-OHET7TF7.js +0 -9
  404. package/dist/executor-SHYLIBOM.js +0 -26
  405. package/dist/export-accessible-FBL6TDSK.js +0 -23
  406. package/dist/extract-partition-ZYIRYMTI.js +0 -38
  407. package/dist/find-LEBUXVL7.js +0 -11
  408. package/dist/in/index.js +0 -1
  409. package/dist/issue-F76PAGIR.js +0 -19
  410. package/dist/liberate-ZP7UB57K.js +0 -24
  411. package/dist/noydb-BNDGEK5X.js +0 -71
  412. package/dist/on/index.js +0 -17
  413. package/dist/port/as/index.d.ts +0 -26
  414. package/dist/port/at/index.d.ts +0 -18
  415. package/dist/port/in/index.d.ts +0 -21
  416. package/dist/port/on/index.d.ts +0 -27
  417. package/dist/port/ui/index.d.ts +0 -21
  418. package/dist/port/with/index.d.ts +0 -18
  419. package/dist/register-HB4TQZSV.js +0 -23
  420. package/dist/registry-6BMBFEXT.js +0 -19
  421. package/dist/registry-7CZWF3EQ.js +0 -9
  422. package/dist/registry-JOFO7RAH.js +0 -18
  423. package/dist/request-withdrawal-UN3TRHWI.js +0 -31
  424. package/dist/revoke-OLO2OVR7.js +0 -24
  425. package/dist/signer-MGGKPYAN.js +0 -25
  426. package/dist/storage-3R37QZLA.js +0 -23
  427. package/dist/tx/index.js.map +0 -1
  428. package/dist/ui/index.js +0 -1
  429. package/dist/with/index.js +0 -31
  430. package/dist/with-lookup/aggregate/index.d.ts +0 -23
  431. package/dist/withdraw-accessible-Q2EMATCU.js +0 -28
  432. /package/dist/{api-22ES33N3.js.map → api-3NKVNZPM.js.map} +0 -0
  433. /package/dist/{backup-YCHAC575.js.map → backup-PTSVXDDW.js.map} +0 -0
  434. /package/dist/{chunk-5WLDZZ6S.js.map → chunk-35NMVJ7I.js.map} +0 -0
  435. /package/dist/{chunk-TNJVDG2B.js.map → chunk-3XKESW5E.js.map} +0 -0
  436. /package/dist/{chunk-MUPZ6IZX.js.map → chunk-4JQK3L4V.js.map} +0 -0
  437. /package/dist/{chunk-Z4D3YGAB.js.map → chunk-4ZKNC6A6.js.map} +0 -0
  438. /package/dist/{chunk-ONB627HU.js.map → chunk-55LX6FSX.js.map} +0 -0
  439. /package/dist/{chunk-QMZ5A6FQ.js.map → chunk-56IIVAEO.js.map} +0 -0
  440. /package/dist/{chunk-FHHYCBBP.js.map → chunk-5DRROK5W.js.map} +0 -0
  441. /package/dist/{chunk-GTNRMJYH.js.map → chunk-5GQEU4DN.js.map} +0 -0
  442. /package/dist/{chunk-YQQPNXNO.js.map → chunk-6L3DKWRY.js.map} +0 -0
  443. /package/dist/{chunk-M6QA2KK2.js.map → chunk-6M2I3DKF.js.map} +0 -0
  444. /package/dist/{chunk-FTCGEUOY.js.map → chunk-6R6Q3MRN.js.map} +0 -0
  445. /package/dist/{chunk-ZUDAK436.js.map → chunk-6UBZ6I5Z.js.map} +0 -0
  446. /package/dist/{chunk-7U6AB7DZ.js.map → chunk-AKKRXT23.js.map} +0 -0
  447. /package/dist/{chunk-OWLZONGX.js.map → chunk-BLBAQRBM.js.map} +0 -0
  448. /package/dist/{chunk-QBOQI6PG.js.map → chunk-BN4HRYAZ.js.map} +0 -0
  449. /package/dist/{chunk-QVGEVZ5F.js.map → chunk-BQ6DHN4I.js.map} +0 -0
  450. /package/dist/{chunk-GP54LU5N.js.map → chunk-BYFXLDVV.js.map} +0 -0
  451. /package/dist/{chunk-QRHEAZ2Q.js.map → chunk-CUZLNGD5.js.map} +0 -0
  452. /package/dist/{chunk-YXIVUWDU.js.map → chunk-DGBIHDVK.js.map} +0 -0
  453. /package/dist/{chunk-QZJEYZ4I.js.map → chunk-DZAF24PG.js.map} +0 -0
  454. /package/dist/{chunk-TMR64XPL.js.map → chunk-EZNTORXE.js.map} +0 -0
  455. /package/dist/{chunk-JAMDDLIM.js.map → chunk-FMNU7IUG.js.map} +0 -0
  456. /package/dist/{as/index.js.map → chunk-GJW4HX2O.js.map} +0 -0
  457. /package/dist/{chunk-7BIJS6II.js.map → chunk-GP3UWP22.js.map} +0 -0
  458. /package/dist/{chunk-JIHH26WQ.js.map → chunk-HFUAFR6B.js.map} +0 -0
  459. /package/dist/{chunk-RWW3I3PO.js.map → chunk-ISRKW4YN.js.map} +0 -0
  460. /package/dist/{chunk-P4NUJVWL.js.map → chunk-IXNCZTWA.js.map} +0 -0
  461. /package/dist/{chunk-YFFEF6HR.js.map → chunk-JIDLU57U.js.map} +0 -0
  462. /package/dist/{chunk-PTT2NB46.js.map → chunk-JYJFGD2H.js.map} +0 -0
  463. /package/dist/{chunk-3OWYOECI.js.map → chunk-JYV4JJV2.js.map} +0 -0
  464. /package/dist/{chunk-OGVE4IJW.js.map → chunk-KBPU5M2E.js.map} +0 -0
  465. /package/dist/{chunk-UTEATWHO.js.map → chunk-KW42W6SV.js.map} +0 -0
  466. /package/dist/{chunk-UVBHM7AK.js.map → chunk-MANUDU7I.js.map} +0 -0
  467. /package/dist/{chunk-K7BADAOS.js.map → chunk-NEX7JCMO.js.map} +0 -0
  468. /package/dist/{chunk-5HSSTOOG.js.map → chunk-NFZGZ4AK.js.map} +0 -0
  469. /package/dist/{chunk-S4YERMGJ.js.map → chunk-OBPVWOSQ.js.map} +0 -0
  470. /package/dist/{chunk-OHV6T5JB.js.map → chunk-OLIWCCFM.js.map} +0 -0
  471. /package/dist/{chunk-2CRZOVDI.js.map → chunk-OLSARBZU.js.map} +0 -0
  472. /package/dist/{chunk-7LP7FFJ2.js.map → chunk-QD46HPZG.js.map} +0 -0
  473. /package/dist/{chunk-G4MFQXYX.js.map → chunk-QJNCB5SK.js.map} +0 -0
  474. /package/dist/{chunk-GEEJPID6.js.map → chunk-RZPOZPZU.js.map} +0 -0
  475. /package/dist/{chunk-YCAJDK4O.js.map → chunk-SGQ4N5FS.js.map} +0 -0
  476. /package/dist/{chunk-522MBPE5.js.map → chunk-SHEEBRZ4.js.map} +0 -0
  477. /package/dist/{chunk-YWZEDG7F.js.map → chunk-SHYIA73K.js.map} +0 -0
  478. /package/dist/{chunk-K4BWPNJO.js.map → chunk-TE6LH6J2.js.map} +0 -0
  479. /package/dist/{chunk-SBOHNJUD.js.map → chunk-V6UQZA2H.js.map} +0 -0
  480. /package/dist/{chunk-SC4JLMZI.js.map → chunk-VH6SOCXH.js.map} +0 -0
  481. /package/dist/{chunk-WQN5SM7P.js.map → chunk-W3G5REIU.js.map} +0 -0
  482. /package/dist/{chunk-OMSKGLYA.js.map → chunk-WO4T4OD5.js.map} +0 -0
  483. /package/dist/{chunk-6RPWILRH.js.map → chunk-WZ3NCMK6.js.map} +0 -0
  484. /package/dist/{chunk-BAAUFCJK.js.map → chunk-X4MVWPHV.js.map} +0 -0
  485. /package/dist/{chunk-R2N37AA6.js.map → chunk-XIDQKFZF.js.map} +0 -0
  486. /package/dist/{chunk-OWOT7CFC.js.map → chunk-Y6B6HVKC.js.map} +0 -0
  487. /package/dist/{chunk-5ATANZSW.js.map → chunk-Y6VZQGGH.js.map} +0 -0
  488. /package/dist/{chunk-YZNKFYDC.js.map → chunk-ZFUFAHZ3.js.map} +0 -0
  489. /package/dist/{classified-marker-52P3D72W.js.map → classified-marker-EOOSMWFC.js.map} +0 -0
  490. /package/dist/{at/index.js.map → collection-facade-TTRF5NFJ.js.map} +0 -0
  491. /package/dist/{by/index.js.map → computed-AB45PS4V.js.map} +0 -0
  492. /package/dist/{in → cover}/index.js.map +0 -0
  493. /package/dist/{on → custody}/index.js.map +0 -0
  494. /package/dist/{dead-filter-JXVCKS6W.js.map → dead-filter-6DYY7S64.js.map} +0 -0
  495. /package/dist/{chunk-2YELV6TV.js.map → derive-IGGVSUPH.js.map} +0 -0
  496. /package/dist/{ui → directory}/index.js.map +0 -0
  497. /package/dist/{dispatch-SMXUO7W5.js.map → dispatch-RPTLK7LJ.js.map} +0 -0
  498. /package/dist/{collection-facade-XKCFHSLR.js.map → enclave-CLJVSDFG.js.map} +0 -0
  499. /package/dist/{computed-33DRJDOC.js.map → executor-IEBLTBCW.js.map} +0 -0
  500. /package/dist/{cover-5BSNJREH.js.map → executor-RM7XWQDU.js.map} +0 -0
  501. /package/dist/{delegation-WWZPEDK2.js.map → executor-XZYM4KHT.js.map} +0 -0
  502. /package/dist/{derive-CWWFEQ4N.js.map → export-accessible-24XCCD3A.js.map} +0 -0
  503. /package/dist/{enclave-I5H3GINP.js.map → extract-partition-H2TPEEOF.js.map} +0 -0
  504. /package/dist/{fanout-sidecar-WWXVHHUH.js.map → fanout-sidecar-TV7CXAJ6.js.map} +0 -0
  505. /package/dist/{executor-FCJEH3FU.js.map → find-OZMTRIK3.js.map} +0 -0
  506. /package/dist/{with → introspection}/index.js.map +0 -0
  507. /package/dist/{executor-OHET7TF7.js.map → issue-55HJE7JF.js.map} +0 -0
  508. /package/dist/{executor-SHYLIBOM.js.map → ledger-XY6NP3J2.js.map} +0 -0
  509. /package/dist/{export-accessible-FBL6TDSK.js.map → liberate-LXOJ2EMB.js.map} +0 -0
  510. /package/dist/{extract-partition-ZYIRYMTI.js.map → link-set-POQB7BU5.js.map} +0 -0
  511. /package/dist/{find-LEBUXVL7.js.map → money/index.js.map} +0 -0
  512. /package/dist/{issue-F76PAGIR.js.map → noydb-KXS35UJS.js.map} +0 -0
  513. /package/dist/{ledger-M2BKCNVS.js.map → policy/index.js.map} +0 -0
  514. /package/dist/{post-register-XIAHB6KF.js.map → post-register-URQANI3B.js.map} +0 -0
  515. /package/dist/{liberate-ZP7UB57K.js.map → register-5W6CG4RM.js.map} +0 -0
  516. /package/dist/{link-set-ZU4E5J5S.js.map → registry-7Y5WF7GS.js.map} +0 -0
  517. /package/dist/{noydb-BNDGEK5X.js.map → registry-BWD2ED52.js.map} +0 -0
  518. /package/dist/{policy-IY2YEA3A.js.map → registry-MCSGBZXI.js.map} +0 -0
  519. /package/dist/{register-HB4TQZSV.js.map → registry-UJFP3NWF.js.map} +0 -0
  520. /package/dist/{registry-6BMBFEXT.js.map → request-withdrawal-IWYDM4SO.js.map} +0 -0
  521. /package/dist/{reveal-VWXRV2XU.js.map → reveal-BXZGWIOP.js.map} +0 -0
  522. /package/dist/{registry-7CZWF3EQ.js.map → revoke-TINYPHYY.js.map} +0 -0
  523. /package/dist/{registry-JOFO7RAH.js.map → schema-update/index.js.map} +0 -0
  524. /package/dist/{registry-VW6P6A3J.js.map → search/index.js.map} +0 -0
  525. /package/dist/{seed-CDBFOTIK.js.map → seed-F7YYQTRC.js.map} +0 -0
  526. /package/dist/{request-withdrawal-UN3TRHWI.js.map → sequence/index.js.map} +0 -0
  527. /package/dist/{revoke-OLO2OVR7.js.map → signer-WMZKCNKC.js.map} +0 -0
  528. /package/dist/{signer-MGGKPYAN.js.map → stale-JOE7GBAE.js.map} +0 -0
  529. /package/dist/{stale-NBROTA66.js.map → storage-B3WBKXKT.js.map} +0 -0
  530. /package/dist/{storage-3R37QZLA.js.map → store/index.js.map} +0 -0
  531. /package/dist/{store-coordination-provider-P3IU5JHD.js.map → store-coordination-provider-5LX2UFU2.js.map} +0 -0
  532. /package/dist/{verify-5X37OXRY.js.map → verify-7XWHJWUN.js.map} +0 -0
  533. /package/dist/{withdraw-accessible-Q2EMATCU.js.map → walk-6OHAWGBS.js.map} +0 -0
  534. /package/dist/with-lookup/{aggregate → reduce}/canonical-key.d.ts +0 -0
package/dist/index.js CHANGED
@@ -1,14 +1,3 @@
1
- import {
2
- UserApi
3
- } from "./chunk-TNJVDG2B.js";
4
- import {
5
- DEFAULT_FRESHNESS_MS,
6
- PERSONAL_POLICY,
7
- STRICT_POLICY,
8
- checkGate,
9
- describeGate,
10
- mergePolicy
11
- } from "./chunk-JAMDDLIM.js";
12
1
  import {
13
2
  Collection,
14
3
  ELEVATION_AUDIT_COLLECTION,
@@ -20,10 +9,6 @@ import {
20
9
  RefScopeError,
21
10
  Vault,
22
11
  createNoydb,
23
- describeAllUsersAuth,
24
- describeAuthConfig,
25
- describeUserAuth,
26
- diagramAuthConfig,
27
12
  isRefArray,
28
13
  isViaFieldSpec,
29
14
  memoryStore,
@@ -31,190 +16,222 @@ import {
31
16
  refArray,
32
17
  via,
33
18
  withArchive
34
- } from "./chunk-EEZCB74X.js";
35
- import {
36
- META_COLLECTION,
37
- POLICY_RECORD_ID,
38
- loadVaultPolicy,
39
- saveVaultPolicy
40
- } from "./chunk-QMZ5A6FQ.js";
41
- import {
42
- DELEGATIONS_COLLECTION,
43
- issueDelegation,
44
- loadActiveDelegations,
45
- revokeDelegation
46
- } from "./chunk-ILM6X6CP.js";
47
- import "./chunk-VYYM3MEN.js";
48
- import {
49
- COVER_FIELDS,
50
- DEFAULT_COVER_SCHEMA,
51
- resolveSchema
52
- } from "./chunk-QRHEAZ2Q.js";
53
- import {
54
- NO_SEQUENCE,
55
- SequenceStore,
56
- compileSequenceFormat,
57
- resolveSequenceKey,
58
- withSequence
59
- } from "./chunk-X3MWEFPT.js";
19
+ } from "./chunk-XOBHRD2M.js";
20
+ import "./chunk-NJ4DYYO5.js";
60
21
  import {
61
22
  persistSchemaIfNeeded
62
- } from "./chunk-YXZNGHID.js";
23
+ } from "./chunk-FO6RNKKW.js";
63
24
  import {
64
25
  LinkEndpointError
65
- } from "./chunk-JIHH26WQ.js";
26
+ } from "./chunk-HFUAFR6B.js";
66
27
  import {
67
28
  LinkIntegrityError,
68
29
  isLinkCollectionName
69
- } from "./chunk-MUPZ6IZX.js";
70
- import "./chunk-522MBPE5.js";
71
- import "./chunk-XUFAFHQM.js";
72
- import "./chunk-M6QA2KK2.js";
73
- import {
74
- NO_SEARCH,
75
- tokenize,
76
- withSearch
77
- } from "./chunk-HAPY7WFP.js";
78
- import {
79
- derivePersistedSchema,
80
- isZodSchema
81
- } from "./chunk-SEU6QHH4.js";
30
+ } from "./chunk-4JQK3L4V.js";
31
+ import "./chunk-SHEEBRZ4.js";
82
32
  import {
83
33
  ComputedFieldError,
84
34
  evalComputedFields
85
- } from "./chunk-FHHYCBBP.js";
86
- import "./chunk-GYGLAVCX.js";
35
+ } from "./chunk-5DRROK5W.js";
87
36
  import {
88
37
  WithdrawalRequestError,
89
38
  approveWithdrawal,
90
39
  listWithdrawalRequests,
91
40
  rejectWithdrawal,
92
41
  requestWithdrawal
93
- } from "./chunk-3OWYOECI.js";
42
+ } from "./chunk-JYV4JJV2.js";
43
+ import "./chunk-6M2I3DKF.js";
44
+ import "./chunk-CCDP6EPB.js";
45
+ import {
46
+ COVER_FIELDS,
47
+ DEFAULT_COVER_SCHEMA,
48
+ resolveSchema
49
+ } from "./chunk-CUZLNGD5.js";
50
+ import {
51
+ additiveOnly,
52
+ blindUpdate,
53
+ coordinatedCutover,
54
+ lockSchema
55
+ } from "./chunk-E23UGFVC.js";
56
+ import "./chunk-6LJY7X5A.js";
57
+ import "./chunk-DSDXAKIP.js";
58
+ import {
59
+ DEFAULT_FRESHNESS_MS,
60
+ PERSONAL_POLICY,
61
+ STRICT_POLICY,
62
+ checkGate,
63
+ describeGate,
64
+ mergePolicy
65
+ } from "./chunk-FMNU7IUG.js";
66
+ import "./chunk-GJW4HX2O.js";
67
+ import {
68
+ UserApi
69
+ } from "./chunk-3XKESW5E.js";
70
+ import "./chunk-GYGLAVCX.js";
71
+ import "./chunk-6R6Q3MRN.js";
72
+ import "./chunk-BLBAQRBM.js";
94
73
  import {
95
74
  decryptExtractedPartition,
75
+ diffVault,
96
76
  withCargo
97
- } from "./chunk-KJTIAECI.js";
77
+ } from "./chunk-PT4XLP6I.js";
98
78
  import {
99
- CustodyApi,
100
- NO_CARGO,
101
- NO_CUSTODY,
102
- withCustody
103
- } from "./chunk-L2CAWCQL.js";
104
- import "./chunk-GP54LU5N.js";
79
+ NO_CARGO
80
+ } from "./chunk-TG634KCO.js";
81
+ import "./chunk-BYFXLDVV.js";
105
82
  import {
106
- DEED_RECORD_ID,
107
83
  createDeedOwner,
108
84
  isDeedVault,
109
85
  liberateVault,
110
86
  loadDeedMarker
111
- } from "./chunk-V5JUAW4M.js";
87
+ } from "./chunk-TIVK6PRK.js";
112
88
  import {
113
89
  MemoryRecipientSealer,
114
90
  MemorySealingKeyProvider,
115
- SEALED_SECRET_RECORD_ID,
116
91
  aesGcmOpen,
117
- loadSealedSecret,
118
92
  parseRsaOaepTlv,
119
- parseSealedEnvelope,
120
- saveSealedSecret,
121
93
  sealRsaOaepTlv
122
- } from "./chunk-OHV6T5JB.js";
94
+ } from "./chunk-OLIWCCFM.js";
123
95
  import {
124
- fuseRetrieval
125
- } from "./chunk-AURFOK3D.js";
96
+ withdrawAccessibleData
97
+ } from "./chunk-TE6LH6J2.js";
126
98
  import {
127
- diffVault
128
- } from "./chunk-LB7FD65R.js";
99
+ exportAccessibleData
100
+ } from "./chunk-WO4T4OD5.js";
101
+ import {
102
+ routeStore,
103
+ withCache,
104
+ withCircuitBreaker,
105
+ withHealthCheck,
106
+ withLogging,
107
+ withMetrics,
108
+ withRetry,
109
+ wrapStore
110
+ } from "./chunk-VSRSQ2CR.js";
111
+ import {
112
+ applyListProjection
113
+ } from "./chunk-VG2ZSFYD.js";
114
+ import "./chunk-VYYM3MEN.js";
115
+ import {
116
+ derivePersistedSchema,
117
+ isZodSchema
118
+ } from "./chunk-6ZNSB3H6.js";
119
+ import "./chunk-Y2NBBT6K.js";
129
120
  import {
130
121
  SCHEMAS_COLLECTION,
131
122
  loadPersistedSchema,
132
123
  savePersistedSchema
133
- } from "./chunk-S4YERMGJ.js";
124
+ } from "./chunk-OBPVWOSQ.js";
134
125
  import {
135
- withdrawAccessibleData
136
- } from "./chunk-K4BWPNJO.js";
126
+ MoneyCurrencyError,
127
+ MoneyPrecisionError,
128
+ MoneyUnsupportedError,
129
+ allocate,
130
+ asMoney,
131
+ isMoneyDescriptor,
132
+ isMoneyString,
133
+ money,
134
+ moneyNumber,
135
+ mulRate,
136
+ scaleForCurrency
137
+ } from "./chunk-SGDPRCC4.js";
137
138
  import {
138
- exportAccessibleData
139
- } from "./chunk-OMSKGLYA.js";
140
- import "./chunk-IGLU4ME7.js";
141
- import "./chunk-AFAPBZAA.js";
139
+ withDerivation,
140
+ withRollup
141
+ } from "./chunk-NYEFP7DY.js";
142
+ import "./chunk-AT2JJEKJ.js";
143
+ import "./chunk-4ZKNC6A6.js";
144
+ import "./chunk-MHMLXJ3I.js";
145
+ import {
146
+ withMaterializedView
147
+ } from "./chunk-MXUT7FTE.js";
148
+ import "./chunk-FRMW23UK.js";
149
+ import {
150
+ buildLookupSnapshot
151
+ } from "./chunk-GP3UWP22.js";
152
+ import "./chunk-3HUYRN24.js";
153
+ import "./chunk-IMRB2C4O.js";
154
+ import {
155
+ withOverlayedView
156
+ } from "./chunk-MSMJJB4J.js";
157
+ import "./chunk-ZTLOXFPB.js";
158
+ import "./chunk-IG6KUWBX.js";
159
+ import "./chunk-EP5L47XV.js";
142
160
  import {
143
161
  isDiscriminant
144
162
  } from "./chunk-PY4KJPYU.js";
145
- import "./chunk-GTNRMJYH.js";
163
+ import "./chunk-5GQEU4DN.js";
146
164
  import {
147
165
  classified,
148
166
  luhnCheck
149
- } from "./chunk-YQQPNXNO.js";
167
+ } from "./chunk-6L3DKWRY.js";
150
168
  import {
151
169
  ClassifiedNeverStoredError,
152
170
  ClassifiedValidationError,
153
171
  isClassifiedFieldSpec,
154
172
  isClassifiedGroup,
155
173
  resolveClassifiedFields
156
- } from "./chunk-YZNKFYDC.js";
157
- import "./chunk-FTCGEUOY.js";
158
- import "./chunk-OWLZONGX.js";
159
- import "./chunk-QBOQI6PG.js";
160
- import "./chunk-7ICV4ASA.js";
174
+ } from "./chunk-ZFUFAHZ3.js";
175
+ import "./chunk-BN4HRYAZ.js";
176
+ import "./chunk-N5PLUFH2.js";
161
177
  import "./chunk-GHVIKOHT.js";
162
178
  import {
163
179
  immutableGuard,
164
180
  transitionGuard,
165
181
  withGuard
166
- } from "./chunk-TSNRZSRC.js";
167
- import "./chunk-YMUGBZN2.js";
182
+ } from "./chunk-RO5NM6UI.js";
183
+ import "./chunk-FQ5CHJR7.js";
168
184
  import "./chunk-JK733I5V.js";
169
- import "./chunk-EGU4PWQW.js";
185
+ import "./chunk-W66AM5IB.js";
170
186
  import {
171
187
  CollectionFrame,
172
188
  VaultFrame
173
- } from "./chunk-ONB627HU.js";
189
+ } from "./chunk-55LX6FSX.js";
190
+ import "./chunk-SMY5X46Z.js";
191
+ import "./chunk-DZFQVICS.js";
174
192
  import {
175
193
  TxCollection,
176
194
  TxContext,
177
195
  TxVault,
178
196
  runTransaction
179
- } from "./chunk-QVGEVZ5F.js";
197
+ } from "./chunk-BQ6DHN4I.js";
198
+ import "./chunk-5D2ALSM5.js";
180
199
  import {
181
- withDerivation,
182
- withRollup
183
- } from "./chunk-GHEMAVTN.js";
184
- import "./chunk-2PDBYF2O.js";
185
- import "./chunk-Z4D3YGAB.js";
186
- import "./chunk-YJ3TREAC.js";
200
+ NO_SEARCH,
201
+ tokenize,
202
+ withSearch
203
+ } from "./chunk-QADFHRQM.js";
187
204
  import {
188
- withMaterializedView
189
- } from "./chunk-DYZ5CCVM.js";
190
- import "./chunk-YZN6NRTR.js";
191
- import "./chunk-TNATF3HB.js";
192
- import "./chunk-CKUYQO2P.js";
205
+ fuseRetrieval
206
+ } from "./chunk-AURFOK3D.js";
193
207
  import {
194
- buildLookupSnapshot
195
- } from "./chunk-7BIJS6II.js";
208
+ NO_SEQUENCE,
209
+ SequenceStore,
210
+ compileSequenceFormat,
211
+ resolveSequenceKey,
212
+ withSequence
213
+ } from "./chunk-EBKCYQ2D.js";
196
214
  import {
197
- withOverlayedView
198
- } from "./chunk-D4LAJ737.js";
199
- import "./chunk-PWWWMRT7.js";
200
- import "./chunk-ZX5FNWH7.js";
215
+ CustodyApi,
216
+ NO_CUSTODY,
217
+ withCustody
218
+ } from "./chunk-SKM35Y4Q.js";
201
219
  import {
202
220
  DEFAULT_CROSS_JOIN_MAX_ROWS,
203
221
  Query,
204
222
  ScanBuilder,
205
223
  buildLiveQuery,
206
224
  executePlan
207
- } from "./chunk-HQKRZIX6.js";
225
+ } from "./chunk-WBKZUO5V.js";
208
226
  import {
209
227
  DEFAULT_JOIN_MAX_ROWS,
210
- applyJoins,
211
- resetJoinWarnings
212
- } from "./chunk-SBOHNJUD.js";
228
+ applyJoins
229
+ } from "./chunk-V6UQZA2H.js";
213
230
  import {
214
231
  importExternalObjects,
215
232
  memoryObjectProjection
216
233
  } from "./chunk-4Q6HSHHL.js";
217
- import "./chunk-J5TEU77Q.js";
234
+ import "./chunk-IF6WNGAK.js";
218
235
  import {
219
236
  BLOB_CHUNKS_COLLECTION,
220
237
  BLOB_COLLECTION,
@@ -231,8 +248,8 @@ import {
231
248
  getIntent,
232
249
  isPreCompressed,
233
250
  sweepBlobIntents
234
- } from "./chunk-VEGQYPCP.js";
235
- import "./chunk-BY5YBSXA.js";
251
+ } from "./chunk-NQSO4UAH.js";
252
+ import "./chunk-L3YYLT4E.js";
236
253
  import {
237
254
  CollectionIndexes
238
255
  } from "./chunk-KPZS5QAQ.js";
@@ -244,25 +261,10 @@ import {
244
261
  estimateRecordBytes,
245
262
  parseBytes
246
263
  } from "./chunk-NO272T7Q.js";
247
- import {
248
- Aggregation,
249
- GROUPBY_MAX_CARDINALITY,
250
- GROUPBY_WARN_CARDINALITY,
251
- GroupedAggregation,
252
- GroupedQuery,
253
- GroupedQueryN,
254
- avg,
255
- count,
256
- groupAndReduce,
257
- max,
258
- min,
259
- moneyMax,
260
- moneyMin,
261
- moneySum,
262
- reduceRecords,
263
- reducerBuilder,
264
- sum
265
- } from "./chunk-QMMOMBH6.js";
264
+ import "./chunk-KRCBZYTZ.js";
265
+ import "./chunk-XZHEOSQ2.js";
266
+ import "./chunk-YMUFFJCO.js";
267
+ import "./chunk-CADUYBQD.js";
266
268
  import {
267
269
  evaluateClause,
268
270
  evaluateFieldClause,
@@ -272,12 +274,13 @@ import {
272
274
  mergeCrdtStates,
273
275
  resolveCrdtSnapshot
274
276
  } from "./chunk-4GPE63GU.js";
277
+ import "./chunk-PVEWA2DU.js";
275
278
  import {
276
279
  createBundleStore,
277
280
  createPodStore,
278
281
  wrapBundleStore,
279
282
  wrapPodStore
280
- } from "./chunk-OWOT7CFC.js";
283
+ } from "./chunk-Y6B6HVKC.js";
281
284
  import {
282
285
  NOYDB_BUNDLE_FORMAT_VERSION,
283
286
  NOYDB_BUNDLE_MAGIC,
@@ -288,10 +291,9 @@ import {
288
291
  readPod,
289
292
  readPodCover,
290
293
  readPodHeader,
291
- resetBrotliSupportCache,
292
294
  writeNoydbBundle,
293
295
  writePod
294
- } from "./chunk-YCAJDK4O.js";
296
+ } from "./chunk-SGQ4N5FS.js";
295
297
  import {
296
298
  COVER_RECORD_ID,
297
299
  isCover,
@@ -299,20 +301,21 @@ import {
299
301
  readCover,
300
302
  saveCover,
301
303
  validateCoverInput
302
- } from "./chunk-YFFEF6HR.js";
304
+ } from "./chunk-JIDLU57U.js";
303
305
  import {
304
306
  CONSENT_AUDIT_COLLECTION
305
- } from "./chunk-R2N37AA6.js";
306
- import "./chunk-2CRZOVDI.js";
307
+ } from "./chunk-XIDQKFZF.js";
308
+ import "./chunk-PEOZ34EM.js";
309
+ import "./chunk-OLSARBZU.js";
307
310
  import {
308
311
  dictKey,
309
312
  staticDict
310
- } from "./chunk-WQN5SM7P.js";
313
+ } from "./chunk-W3G5REIU.js";
311
314
  import {
312
315
  DICT_COLLECTION_PREFIX,
313
316
  LookupHandle,
314
317
  dictCollectionName
315
- } from "./chunk-K7BADAOS.js";
318
+ } from "./chunk-NEX7JCMO.js";
316
319
  import {
317
320
  applyI18nLocale,
318
321
  enforceScript,
@@ -327,10 +330,10 @@ import {
327
330
  resolvePolicy,
328
331
  setAtPathInPlace,
329
332
  validateI18nTextValue
330
- } from "./chunk-JN3SGXJE.js";
333
+ } from "./chunk-UADPR6F4.js";
331
334
  import {
332
335
  installViaBinder
333
- } from "./chunk-ZUDAK436.js";
336
+ } from "./chunk-6UBZ6I5Z.js";
334
337
  import {
335
338
  credentialStatus,
336
339
  deleteCredential,
@@ -338,27 +341,55 @@ import {
338
341
  listCredentials,
339
342
  putCredential,
340
343
  withTeam
341
- } from "./chunk-YWZEDG7F.js";
344
+ } from "./chunk-SHYIA73K.js";
342
345
  import {
343
- MAGIC_LINK_CONTENT_INFO_PREFIX,
344
346
  MAGIC_LINK_GRANTS_COLLECTION,
345
- MAGIC_LINK_KEK_INFO_PREFIX,
346
347
  NO_TEAM,
348
+ burnPaperRecoveryEntry,
347
349
  deriveMagicLinkContentKey,
350
+ describeAllUsersAuth,
351
+ describeAuthConfig,
352
+ describeUserAuth,
353
+ diagramAuthConfig,
348
354
  enrollAuthenticator,
349
355
  findAuthenticator,
350
356
  isMagicLinkGrantExpired,
351
357
  listMagicLinkGrants,
358
+ loadPaperRecoveryEntries,
352
359
  magicLinkGrantRecordId,
360
+ mintPaperRecoveryEntry,
361
+ mintWrappedDeksBlob,
353
362
  readMagicLinkGrantRecord,
354
- recoverSecret,
355
363
  recoverUser,
356
364
  removeAuthenticator,
357
365
  revokeMagicLinkGrant,
358
366
  rotateSecret,
367
+ savePaperRecoveryEntries,
368
+ unwrapDeksFromBlob,
369
+ unwrapDeksFromPaperEntry,
359
370
  unwrapMagicLinkGrant,
360
371
  writeMagicLinkGrant
361
- } from "./chunk-FIP7KI2P.js";
372
+ } from "./chunk-C25JXSOR.js";
373
+ import {
374
+ META_COLLECTION,
375
+ POLICY_RECORD_ID,
376
+ loadVaultPolicy,
377
+ saveVaultPolicy
378
+ } from "./chunk-56IIVAEO.js";
379
+ import {
380
+ PresenceHandle,
381
+ SyncEngine,
382
+ SyncTransaction
383
+ } from "./chunk-KBPU5M2E.js";
384
+ import {
385
+ BUNDLE_STORE_POLICY,
386
+ INDEXED_STORE_POLICY,
387
+ POD_STORE_POLICY,
388
+ SyncScheduler
389
+ } from "./chunk-VQNJ7UZL.js";
390
+ import {
391
+ PERIODS_COLLECTION
392
+ } from "./chunk-EZNTORXE.js";
362
393
  import {
363
394
  SYNC_CREDENTIALS_COLLECTION,
364
395
  WeakSecretError,
@@ -372,7 +403,7 @@ import {
372
403
  listUsers,
373
404
  listUsersWithEnvelopes,
374
405
  validateSecret
375
- } from "./chunk-3LJYHE7S.js";
406
+ } from "./chunk-KPXM4WO6.js";
376
407
  import {
377
408
  DIRECTORY_RECORD_ID,
378
409
  VISIBILITY_RECORD_PREFIX,
@@ -386,41 +417,9 @@ import {
386
417
  readUserVisibility,
387
418
  saveUserEnvelope,
388
419
  visibilityRecordId
389
- } from "./chunk-6RPWILRH.js";
390
- import {
391
- burnPaperRecoveryEntry,
392
- hasRecoveryEnrolled,
393
- loadPaperRecoveryEntries,
394
- loadShamirRecoveryEntries,
395
- mintPaperRecoveryEntry,
396
- mintShamirRecoveryEntry,
397
- mintWrappedDeksBlob,
398
- savePaperRecoveryEntries,
399
- saveShamirRecoveryEntries,
400
- unwrapDeksFromBlob,
401
- unwrapDeksFromPaperEntry,
402
- unwrapDeksFromShamirEntry
403
- } from "./chunk-CJVEAVYH.js";
404
- import {
405
- PresenceHandle,
406
- SyncEngine,
407
- SyncTransaction
408
- } from "./chunk-OGVE4IJW.js";
409
- import {
410
- BUNDLE_STORE_POLICY,
411
- INDEXED_STORE_POLICY,
412
- POD_STORE_POLICY,
413
- SyncScheduler
414
- } from "./chunk-VQNJ7UZL.js";
415
- import {
416
- PERIODS_COLLECTION
417
- } from "./chunk-TMR64XPL.js";
418
- import {
419
- assertTierAccess,
420
- dekKey,
421
- effectiveClearance
422
- } from "./chunk-LC7DSMHR.js";
423
- import "./chunk-P4NUJVWL.js";
420
+ } from "./chunk-WZ3NCMK6.js";
421
+ import "./chunk-PTHKZWEH.js";
422
+ import "./chunk-IXNCZTWA.js";
424
423
  import {
425
424
  PolicyEnforcer,
426
425
  activeSessionCount,
@@ -435,7 +434,8 @@ import {
435
434
  revokeAllSessions,
436
435
  revokeSession,
437
436
  validateSessionPolicy
438
- } from "./chunk-BAAUFCJK.js";
437
+ } from "./chunk-X4MVWPHV.js";
438
+ import "./chunk-VKQCVU2Z.js";
439
439
  import {
440
440
  generateULID,
441
441
  isULID
@@ -443,7 +443,8 @@ import {
443
443
  import {
444
444
  CollectionInstant,
445
445
  VaultInstant
446
- } from "./chunk-UVBHM7AK.js";
446
+ } from "./chunk-MANUDU7I.js";
447
+ import "./chunk-AFHQATY4.js";
447
448
  import {
448
449
  diff,
449
450
  formatDiff
@@ -452,12 +453,12 @@ import {
452
453
  LedgerStore,
453
454
  applyPatch,
454
455
  computePatch
455
- } from "./chunk-5ATANZSW.js";
456
+ } from "./chunk-Y6VZQGGH.js";
456
457
  import {
457
458
  LEDGER_COLLECTION,
458
459
  LEDGER_DELTAS_COLLECTION
459
460
  } from "./chunk-I7FD46FF.js";
460
- import "./chunk-PTT2NB46.js";
461
+ import "./chunk-JYJFGD2H.js";
461
462
  import {
462
463
  canonicalJson,
463
464
  envelopePayloadHash,
@@ -465,17 +466,17 @@ import {
465
466
  paddedIndex,
466
467
  parseIndex,
467
468
  sha256Hex
468
- } from "./chunk-RWW3I3PO.js";
469
- import "./chunk-I2XEBEEF.js";
470
- import "./chunk-7LP7FFJ2.js";
469
+ } from "./chunk-ISRKW4YN.js";
470
+ import "./chunk-KFRPNHWR.js";
471
+ import "./chunk-QD46HPZG.js";
471
472
  import {
472
473
  validateSchemaInput,
473
474
  validateSchemaOutput
474
- } from "./chunk-GEEJPID6.js";
475
- import "./chunk-SC4JLMZI.js";
476
- import "./chunk-5WLDZZ6S.js";
477
- import "./chunk-5HSSTOOG.js";
478
- import "./chunk-G4MFQXYX.js";
475
+ } from "./chunk-RZPOZPZU.js";
476
+ import "./chunk-VH6SOCXH.js";
477
+ import "./chunk-35NMVJ7I.js";
478
+ import "./chunk-NFZGZ4AK.js";
479
+ import "./chunk-QJNCB5SK.js";
479
480
  import "./chunk-LP7BEXCT.js";
480
481
  import {
481
482
  base64ToBuffer,
@@ -485,7 +486,7 @@ import {
485
486
  derivePresenceKey,
486
487
  encryptBytes,
487
488
  encryptDeterministic
488
- } from "./chunk-7U6AB7DZ.js";
489
+ } from "./chunk-AKKRXT23.js";
489
490
  import {
490
491
  NOYDB_BACKUP_VERSION,
491
492
  NOYDB_FORMAT_VERSION,
@@ -493,7 +494,7 @@ import {
493
494
  NOYDB_SYNC_VERSION,
494
495
  SealedHandle,
495
496
  createStore
496
- } from "./chunk-YTW6ZIPD.js";
497
+ } from "./chunk-GZACYEOB.js";
497
498
  import {
498
499
  AlreadyElevatedError,
499
500
  AmendmentForbiddenError,
@@ -518,8 +519,6 @@ import {
518
519
  CustodyNotEnabledError,
519
520
  DanglingReferenceError,
520
521
  DataResidencyError,
521
- DebugPlaintextError,
522
- DebugReservedFieldError,
523
522
  DecryptionError,
524
523
  DelegationTargetMissingError,
525
524
  DerivationCapExceededError,
@@ -625,1807 +624,17 @@ import {
625
624
  UserEnvelopeOversizedError,
626
625
  ValidationError,
627
626
  VaultTemplateNotFoundError
628
- } from "./chunk-6SYOHUHM.js";
627
+ } from "./chunk-QZWTRENR.js";
629
628
  import "./chunk-PZ5AY32C.js";
630
629
 
631
- // src/kernel/debug.ts
632
- function readPlaintextRecord(envelope) {
633
- if (envelope._iv !== "") {
634
- throw new Error(
635
- "readPlaintextRecord: envelope is encrypted (non-empty _iv) \u2014 decrypt via the vault, not this helper"
636
- );
637
- }
638
- if (envelope._debug !== void 0) {
639
- const record = {};
640
- for (const [key, value] of Object.entries(envelope)) {
641
- if (!key.startsWith("_")) record[key] = value;
642
- }
643
- return record;
644
- }
645
- if (!envelope._data) return null;
646
- return JSON.parse(envelope._data);
647
- }
648
-
649
- // src/with-shape/introspection/projection.ts
650
- function applyListProjection(desc, record, opts) {
651
- const out = { ...record };
652
- for (const f of desc.fields) {
653
- if (f.classified !== void 0) {
654
- const list = f.classified.list;
655
- if (list === "omit") {
656
- delete out[f.key];
657
- continue;
658
- }
659
- if ("mask" in list) {
660
- out[f.key] = list.mask.replace(/\$\{(\w+)\}/g, (_m, rider) => {
661
- const v = record[`${f.key}_${rider}`];
662
- return v === void 0 || v === null ? "\u2022" : `${v}`;
663
- });
664
- continue;
665
- }
666
- out[f.key] = record[`${f.key}_${list.rider}`];
667
- continue;
668
- }
669
- if (opts?.sensitivity !== void 0 && (f.sensitivity === "pii" || f.sensitivity === "secret")) {
670
- if (opts.sensitivity === "omit") delete out[f.key];
671
- else out[f.key] = "\u2022\u2022\u2022";
672
- }
673
- }
674
- return out;
675
- }
676
-
677
- // src/with-shape/schema-update/strategies.ts
678
- function blindUpdate() {
679
- return { name: "blindUpdate", onSchemaDelta: () => ({ action: "allow" }) };
680
- }
681
- function additiveOnly() {
682
- return {
683
- name: "additiveOnly",
684
- onSchemaDelta(delta) {
685
- if (delta.kind === "non-additive") {
686
- return {
687
- action: "reject",
688
- error: new NonAdditiveSchemaChangeError(
689
- `Non-additive schema change to "${delta.collection}" (added: [${delta.added.join(", ")}], removed: [${delta.removed.join(", ")}], changed: [${delta.changed.map((c) => c.field).join(", ")}]). Register a coordinatedCutover() strategy to migrate, or revert the change.`
690
- )
691
- };
692
- }
693
- return { action: "allow" };
694
- }
695
- };
696
- }
697
- function lockSchema(opts) {
698
- const fields = opts?.fields;
699
- return {
700
- name: "lockSchema",
701
- onSchemaDelta(delta) {
702
- if (delta.kind === "none") return { action: "allow" };
703
- const touched = fields ? [...delta.added, ...delta.removed, ...delta.changed.map((c) => c.field)].filter((f) => fields.includes(f)) : ["<any>"];
704
- if (touched.length === 0) return { action: "allow" };
705
- return {
706
- action: "reject",
707
- error: new SchemaLockedError(
708
- `Schema for "${delta.collection}" is locked` + (fields ? ` on fields [${fields.join(", ")}] (touched: [${touched.join(", ")}])` : "") + `; the change was refused.`
709
- )
710
- };
711
- }
712
- };
713
- }
714
-
715
- // src/with-shape/schema-update/cutover.ts
716
- function coordinatedCutover(opts) {
630
+ // src/with-commit/numbering/descriptor.ts
631
+ function withDeferredNumbering(opts) {
717
632
  return {
718
- name: "coordinatedCutover",
719
- onSchemaDelta(delta) {
720
- if (delta.kind === "non-additive") {
721
- return { action: "cutover", transform: opts.transform };
722
- }
723
- return { action: "allow" };
724
- }
725
- };
726
- }
727
-
728
- // src/with-store/route-store.ts
729
- var BLOB_CHUNKS = "_blob_chunks";
730
- var BLOB_INDEX = "_blob_index";
731
- var BLOB_SLOTS = "_blob_slots_";
732
- var BLOB_VERSIONS = "_blob_versions_";
733
- function routeStore(opts) {
734
- const primary = opts.default;
735
- const blobsIsSimple = opts.blobs && "get" in opts.blobs;
736
- const simpleBlobStore = blobsIsSimple ? opts.blobs : void 0;
737
- const tieredBlobs = !blobsIsSimple ? opts.blobs : void 0;
738
- const blobThreshold = tieredBlobs?.threshold ?? 400 * 1024;
739
- const allStores = /* @__PURE__ */ new Set([primary]);
740
- if (simpleBlobStore) allStores.add(simpleBlobStore);
741
- if (tieredBlobs?.large) allStores.add(tieredBlobs.large);
742
- if (tieredBlobs?.small) allStores.add(tieredBlobs.small);
743
- if (opts.age?.cold) allStores.add(opts.age.cold);
744
- if (opts.routes) for (const s of Object.values(opts.routes)) allStores.add(s);
745
- if (opts.vaultRoutes) for (const s of Object.values(opts.vaultRoutes)) allStores.add(s);
746
- if (opts.blobRoutes) for (const s of Object.values(opts.blobRoutes)) allStores.add(s);
747
- if (opts.overflow) allStores.add(opts.overflow);
748
- if (opts.blobLifecycle?.archiveStore) allStores.add(opts.blobLifecycle.archiveStore);
749
- const overrides = /* @__PURE__ */ new Map();
750
- const suspended = /* @__PURE__ */ new Set();
751
- const writeQueues = /* @__PURE__ */ new Map();
752
- const NULL_STORE = {
753
- name: "suspended",
754
- async get() {
755
- return null;
756
- },
757
- async put() {
758
- },
759
- async delete() {
760
- },
761
- async list() {
762
- return [];
763
- },
764
- async loadAll() {
765
- return {};
766
- },
767
- async saveAll() {
768
- }
769
- };
770
- function routeNameFor(vault, collection) {
771
- if (opts.vaultRoutes) {
772
- for (const prefix of Object.keys(opts.vaultRoutes)) {
773
- if (vault.startsWith(prefix)) return prefix;
774
- }
775
- }
776
- if (opts.routes && !collection.startsWith("_") && opts.routes[collection]) {
777
- return collection;
778
- }
779
- if (isBlobChunks(collection) && (simpleBlobStore || tieredBlobs)) return "blobs";
780
- if (opts.routeBlobMeta && isBlobMeta(collection) && (simpleBlobStore || tieredBlobs)) return "blobs";
781
- if (opts.age && !collection.startsWith("_")) {
782
- }
783
- return "default";
784
- }
785
- const quotaExceeded = false;
786
- function resolveOriginalStore(route) {
787
- if (route === "blobs") return simpleBlobStore ?? tieredBlobs?.large ?? primary;
788
- if (route === "cold") return opts.age?.cold ?? primary;
789
- if (opts.routes?.[route]) return opts.routes[route];
790
- if (opts.vaultRoutes?.[route]) return opts.vaultRoutes[route];
791
- return primary;
792
- }
793
- function maybeQueueWrite(routeName, method, vault, collection, id, envelope, expectedVersion) {
794
- if (!suspended.has(routeName)) return false;
795
- const queue = writeQueues.get(routeName);
796
- if (!queue) return false;
797
- if (queue.writes.length >= queue.maxSize) {
798
- queue.writes.shift();
799
- }
800
- queue.writes.push({
801
- method,
802
- vault,
803
- collection,
804
- id,
805
- ...envelope !== void 0 ? { envelope } : {},
806
- ...expectedVersion !== void 0 ? { expectedVersion } : {}
807
- });
808
- return true;
809
- }
810
- function isBlobChunks(collection) {
811
- return collection === BLOB_CHUNKS;
812
- }
813
- function isBlobMeta(collection) {
814
- return collection === BLOB_INDEX || collection.startsWith(BLOB_SLOTS) || collection.startsWith(BLOB_VERSIONS);
815
- }
816
- function isInternal(collection) {
817
- return collection.startsWith("_");
818
- }
819
- function storeFor(vault, collection) {
820
- const rName = routeNameFor(vault, collection);
821
- if (suspended.has(rName)) return NULL_STORE;
822
- if (overrides.has(rName)) return overrides.get(rName);
823
- if (opts.vaultRoutes) {
824
- for (const [prefix, store2] of Object.entries(opts.vaultRoutes)) {
825
- if (vault.startsWith(prefix)) return store2;
826
- }
827
- }
828
- if (opts.routes && !isInternal(collection) && opts.routes[collection]) {
829
- return opts.routes[collection];
830
- }
831
- if (isBlobChunks(collection)) {
832
- if (simpleBlobStore) return simpleBlobStore;
833
- if (tieredBlobs) return tieredBlobs.large;
834
- }
835
- if (opts.routeBlobMeta && isBlobMeta(collection)) {
836
- if (simpleBlobStore) return simpleBlobStore;
837
- if (tieredBlobs) return tieredBlobs.large;
838
- }
839
- if (quotaExceeded && opts.overflow) return opts.overflow;
840
- return primary;
841
- }
842
- function blobStoreForSize(dataSize) {
843
- if (!tieredBlobs) return simpleBlobStore ?? primary;
844
- if (dataSize <= blobThreshold) {
845
- return tieredBlobs.small ?? primary;
846
- }
847
- return tieredBlobs.large;
848
- }
849
- function isCold(collection, envelope, before) {
850
- if (!opts.age) return false;
851
- if (isInternal(collection)) return false;
852
- if (opts.age.collections && opts.age.collections.length > 0) {
853
- if (!opts.age.collections.includes(collection)) return false;
854
- }
855
- const cutoffIso = before ?? (opts.age.coldAfterDays != null ? new Date(Date.now() - opts.age.coldAfterDays * 24 * 60 * 60 * 1e3).toISOString() : void 0);
856
- if (cutoffIso === void 0) return false;
857
- return envelope._ts < cutoffIso;
858
- }
859
- const store = {
860
- name: buildName(),
861
- ...opts.age?.cold ? { capabilities: { ...primary.capabilities, coldArchival: true } } : primary.capabilities ? { capabilities: { ...primary.capabilities, coldArchival: false } } : {},
862
- async get(vault, collection, id) {
863
- const s = storeFor(vault, collection);
864
- const result = await s.get(vault, collection, id);
865
- if (result === null && opts.age && !isInternal(collection)) {
866
- if (!opts.age.collections?.length || opts.age.collections.includes(collection)) {
867
- return opts.age.cold.get(vault, collection, id);
868
- }
869
- }
870
- return result;
871
- },
872
- async put(vault, collection, id, envelope, expectedVersion) {
873
- const rn = routeNameFor(vault, collection);
874
- if (maybeQueueWrite(rn, "put", vault, collection, id, envelope, expectedVersion)) return;
875
- if (isBlobChunks(collection) && tieredBlobs) {
876
- const dataSize = envelope._data.length;
877
- const s2 = blobStoreForSize(dataSize);
878
- return s2.put(vault, collection, id, envelope, expectedVersion);
879
- }
880
- const s = storeFor(vault, collection);
881
- if (opts.age && !isInternal(collection)) {
882
- opts.age.cold.delete(vault, collection, id).catch(() => {
883
- });
884
- }
885
- return s.put(vault, collection, id, envelope, expectedVersion);
886
- },
887
- async delete(vault, collection, id) {
888
- const rn = routeNameFor(vault, collection);
889
- if (maybeQueueWrite(rn, "delete", vault, collection, id)) return;
890
- const s = storeFor(vault, collection);
891
- await s.delete(vault, collection, id);
892
- if (opts.age && !isInternal(collection)) {
893
- await opts.age.cold.delete(vault, collection, id).catch(() => {
894
- });
895
- }
896
- },
897
- async list(vault, collection) {
898
- const s = storeFor(vault, collection);
899
- const ids = await s.list(vault, collection);
900
- if (opts.age && !isInternal(collection)) {
901
- if (!opts.age.collections?.length || opts.age.collections.includes(collection)) {
902
- const coldIds = await opts.age.cold.list(vault, collection).catch(() => []);
903
- if (coldIds.length > 0) {
904
- const merged = new Set(ids);
905
- for (const id of coldIds) merged.add(id);
906
- return [...merged];
907
- }
908
- }
909
- }
910
- return ids;
911
- },
912
- async loadAll(vault) {
913
- const stores = getStoresForVault(vault);
914
- const snapshots = await Promise.all(
915
- stores.map((s) => s.loadAll(vault).catch(() => ({})))
916
- );
917
- return mergeSnapshots(snapshots);
918
- },
919
- async saveAll(vault, data) {
920
- const partitioned = /* @__PURE__ */ new Map();
921
- for (const [collection, records] of Object.entries(data)) {
922
- const s = storeFor(vault, collection);
923
- if (!partitioned.has(s)) partitioned.set(s, {});
924
- partitioned.get(s)[collection] = records;
925
- }
926
- await Promise.all(
927
- [...partitioned.entries()].map(([s, snap]) => s.saveAll(vault, snap))
928
- );
929
- },
930
- async compact(vault, compactOpts) {
931
- if (!opts.age) return 0;
932
- let migrated = 0;
933
- const collections = opts.age.collections?.length ? opts.age.collections : Object.keys(await primary.loadAll(vault).catch(() => ({})));
934
- for (const collection of collections) {
935
- const ids = await primary.list(vault, collection).catch(() => []);
936
- for (const id of ids) {
937
- const envelope = await primary.get(vault, collection, id);
938
- if (!envelope) continue;
939
- if (isCold(collection, envelope, compactOpts?.before)) {
940
- await opts.age.cold.put(vault, collection, id, envelope);
941
- await primary.delete(vault, collection, id);
942
- migrated++;
943
- }
944
- }
945
- }
946
- return migrated;
947
- },
948
- // ── Runtime override / suspend ──────────────────────
949
- override(route, overrideStore, overrideOpts) {
950
- if (overrideOpts?.hydrate) {
951
- return (async () => {
952
- overrides.set(route, overrideStore);
953
- })();
954
- }
955
- overrides.set(route, overrideStore);
956
- },
957
- clearOverride(route) {
958
- overrides.delete(route);
959
- },
960
- suspend(route, suspendOpts) {
961
- suspended.add(route);
962
- if (suspendOpts?.queue) {
963
- writeQueues.set(route, {
964
- writes: [],
965
- maxSize: suspendOpts.maxQueueSize ?? 1e4
966
- });
967
- }
968
- },
969
- async resume(route) {
970
- suspended.delete(route);
971
- const queue = writeQueues.get(route);
972
- if (!queue || queue.writes.length === 0) {
973
- writeQueues.delete(route);
974
- return 0;
975
- }
976
- let replayed = 0;
977
- const target = overrides.get(route) ?? resolveOriginalStore(route);
978
- for (const write of queue.writes) {
979
- try {
980
- if (write.method === "put" && write.envelope) {
981
- await target.put(write.vault, write.collection, write.id, write.envelope, write.expectedVersion);
982
- } else if (write.method === "delete") {
983
- await target.delete(write.vault, write.collection, write.id);
984
- }
985
- replayed++;
986
- } catch {
987
- }
988
- }
989
- writeQueues.delete(route);
990
- return replayed;
991
- },
992
- routeStatus() {
993
- const ov = {};
994
- for (const [k, v] of overrides) ov[k] = v.name ?? "unnamed";
995
- const q = {};
996
- for (const [k, v] of writeQueues) q[k] = v.writes.length;
997
- return { overrides: ov, suspended: [...suspended], queued: q };
998
- },
999
- resolveBackend(vaultId) {
1000
- if (opts.vaultRoutes) {
1001
- for (const [prefix, s] of Object.entries(opts.vaultRoutes)) {
1002
- if (vaultId.startsWith(prefix)) return s;
1003
- }
1004
- }
1005
- return primary;
1006
- }
633
+ series: opts.series,
634
+ collection: opts.collection,
635
+ field: opts.field,
636
+ settleWindowMs: opts.settleWindowMs ?? 0
1007
637
  };
1008
- if (anyHas("listVaults")) {
1009
- store.listVaults = async () => {
1010
- const results = await Promise.all(
1011
- [...allStores].filter((s) => s.listVaults !== void 0).map((s) => s.listVaults().catch(() => []))
1012
- );
1013
- return [...new Set(results.flat())];
1014
- };
1015
- }
1016
- if (anyHas("ping")) {
1017
- store.ping = async () => {
1018
- const results = await Promise.all(
1019
- [...allStores].filter((s) => s.ping !== void 0).map((s) => s.ping().catch(() => false))
1020
- );
1021
- return results.some(Boolean);
1022
- };
1023
- }
1024
- return store;
1025
- function buildName() {
1026
- const names = [...allStores].map((s) => s.name ?? "?").join("+");
1027
- return `route(${names})`;
1028
- }
1029
- function anyHas(method) {
1030
- return [...allStores].some((s) => s[method]);
1031
- }
1032
- function getStoresForVault(vault) {
1033
- const stores = /* @__PURE__ */ new Set();
1034
- if (opts.vaultRoutes) {
1035
- for (const [prefix, s] of Object.entries(opts.vaultRoutes)) {
1036
- if (vault.startsWith(prefix)) {
1037
- stores.add(s);
1038
- return [...stores];
1039
- }
1040
- }
1041
- }
1042
- stores.add(primary);
1043
- if (simpleBlobStore) stores.add(simpleBlobStore);
1044
- if (tieredBlobs?.large) stores.add(tieredBlobs.large);
1045
- if (tieredBlobs?.small && tieredBlobs.small !== primary) stores.add(tieredBlobs.small);
1046
- if (opts.age?.cold) stores.add(opts.age.cold);
1047
- if (opts.routes) {
1048
- for (const s of Object.values(opts.routes)) stores.add(s);
1049
- }
1050
- return [...stores];
1051
- }
1052
- }
1053
- function mergeSnapshots(snapshots) {
1054
- const merged = {};
1055
- for (const snap of snapshots) {
1056
- for (const [collection, records] of Object.entries(snap)) {
1057
- if (!merged[collection]) {
1058
- merged[collection] = { ...records };
1059
- continue;
1060
- }
1061
- for (const [id, envelope] of Object.entries(records)) {
1062
- const existing = merged[collection][id];
1063
- if (!existing || envelope._ts >= existing._ts) {
1064
- merged[collection][id] = envelope;
1065
- }
1066
- }
1067
- }
1068
- }
1069
- return merged;
1070
- }
1071
-
1072
- // src/with-store/store-middleware.ts
1073
- function wrapStore(store, ...middlewares) {
1074
- let result = store;
1075
- for (let i = middlewares.length - 1; i >= 0; i--) {
1076
- result = middlewares[i](result);
1077
- }
1078
- return result;
1079
- }
1080
- function withRetry(opts = {}) {
1081
- const maxRetries = opts.maxRetries ?? 3;
1082
- const backoffMs = opts.backoffMs ?? 500;
1083
- const jitter = opts.jitter ?? 0.3;
1084
- const retryOn = opts.retryOn ? new Set(opts.retryOn) : null;
1085
- function shouldRetry(err) {
1086
- if (!retryOn) return true;
1087
- if (err && typeof err === "object" && "code" in err) {
1088
- return retryOn.has(err.code);
1089
- }
1090
- return true;
1091
- }
1092
- async function retryable(fn) {
1093
- let lastError;
1094
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
1095
- try {
1096
- return await fn();
1097
- } catch (err) {
1098
- lastError = err;
1099
- if (attempt >= maxRetries || !shouldRetry(err)) throw err;
1100
- const delay = backoffMs * Math.pow(2, attempt) * (1 + Math.random() * jitter);
1101
- await new Promise((r) => setTimeout(r, delay));
1102
- }
1103
- }
1104
- throw lastError;
1105
- }
1106
- return (next) => ({
1107
- ...next,
1108
- name: next.name ? `retry(${next.name})` : "retry",
1109
- get: (v, c, id) => retryable(() => next.get(v, c, id)),
1110
- put: (v, c, id, env, ev) => retryable(() => next.put(v, c, id, env, ev)),
1111
- delete: (v, c, id) => retryable(() => next.delete(v, c, id)),
1112
- list: (v, c) => retryable(() => next.list(v, c)),
1113
- loadAll: (v) => retryable(() => next.loadAll(v)),
1114
- saveAll: (v, d) => retryable(() => next.saveAll(v, d))
1115
- });
1116
- }
1117
- var LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
1118
- function withLogging(opts = {}) {
1119
- const minLevel = LOG_LEVELS[opts.level ?? "info"];
1120
- const logger = opts.logger ?? console;
1121
- const logData = opts.logData ?? false;
1122
- function log(level, method, args, durationMs) {
1123
- if (LOG_LEVELS[level] < minLevel) return;
1124
- const parts = [`[noydb:${method}]`, ...Object.entries(args).map(([k, v]) => `${k}=${String(v)}`)];
1125
- if (durationMs !== void 0) parts.push(`${durationMs}ms`);
1126
- logger[level](parts.join(" "));
1127
- }
1128
- function timed(method, args, fn) {
1129
- const start = Date.now();
1130
- return fn().then(
1131
- (result) => {
1132
- log("debug", method, args, Date.now() - start);
1133
- return result;
1134
- },
1135
- (err) => {
1136
- log("error", method, { ...args, error: err.message }, Date.now() - start);
1137
- throw err;
1138
- }
1139
- );
1140
- }
1141
- return (next) => ({
1142
- ...next,
1143
- name: next.name ? `log(${next.name})` : "log",
1144
- get: (v, c, id) => timed("get", { vault: v, collection: c, id }, () => next.get(v, c, id)),
1145
- put: (v, c, id, env, ev) => timed("put", {
1146
- vault: v,
1147
- collection: c,
1148
- id,
1149
- version: env._v,
1150
- ...logData ? { data: env._data.slice(0, 40) + "..." } : {}
1151
- }, () => next.put(v, c, id, env, ev)),
1152
- delete: (v, c, id) => timed("delete", { vault: v, collection: c, id }, () => next.delete(v, c, id)),
1153
- list: (v, c) => timed("list", { vault: v, collection: c }, () => next.list(v, c)),
1154
- loadAll: (v) => timed("loadAll", { vault: v }, () => next.loadAll(v)),
1155
- saveAll: (v, d) => timed("saveAll", { vault: v }, () => next.saveAll(v, d))
1156
- });
1157
- }
1158
- function withMetrics(opts) {
1159
- function tracked(method, vault, fn, collection, id) {
1160
- const start = Date.now();
1161
- return fn().then(
1162
- (result) => {
1163
- opts.onOperation({
1164
- method,
1165
- vault,
1166
- ...collection !== void 0 ? { collection } : {},
1167
- ...id !== void 0 ? { id } : {},
1168
- durationMs: Date.now() - start,
1169
- success: true
1170
- });
1171
- return result;
1172
- },
1173
- (err) => {
1174
- opts.onOperation({
1175
- method,
1176
- vault,
1177
- ...collection !== void 0 ? { collection } : {},
1178
- ...id !== void 0 ? { id } : {},
1179
- durationMs: Date.now() - start,
1180
- success: false,
1181
- error: err
1182
- });
1183
- throw err;
1184
- }
1185
- );
1186
- }
1187
- return (next) => ({
1188
- ...next,
1189
- name: next.name ? `metrics(${next.name})` : "metrics",
1190
- get: (v, c, id) => tracked("get", v, () => next.get(v, c, id), c, id),
1191
- put: (v, c, id, env, ev) => tracked("put", v, () => next.put(v, c, id, env, ev), c, id),
1192
- delete: (v, c, id) => tracked("delete", v, () => next.delete(v, c, id), c, id),
1193
- list: (v, c) => tracked("list", v, () => next.list(v, c), c),
1194
- loadAll: (v) => tracked("loadAll", v, () => next.loadAll(v)),
1195
- saveAll: (v, d) => tracked("saveAll", v, () => next.saveAll(v, d))
1196
- });
1197
- }
1198
- function withCircuitBreaker(opts = {}) {
1199
- const threshold = opts.failureThreshold ?? 5;
1200
- const resetMs = opts.resetTimeoutMs ?? 3e4;
1201
- let state = "closed";
1202
- let failures = 0;
1203
- let lastFailureTime = 0;
1204
- function recordSuccess() {
1205
- if (state === "half-open") {
1206
- state = "closed";
1207
- failures = 0;
1208
- opts.onClose?.();
1209
- }
1210
- failures = 0;
1211
- }
1212
- function recordFailure() {
1213
- failures++;
1214
- lastFailureTime = Date.now();
1215
- if (failures >= threshold && state === "closed") {
1216
- state = "open";
1217
- opts.onOpen?.();
1218
- }
1219
- }
1220
- function canAttempt() {
1221
- if (state === "closed") return true;
1222
- if (state === "open") {
1223
- if (Date.now() - lastFailureTime >= resetMs) {
1224
- state = "half-open";
1225
- return true;
1226
- }
1227
- return false;
1228
- }
1229
- return true;
1230
- }
1231
- async function guarded(fn, fallback) {
1232
- if (!canAttempt()) return fallback;
1233
- try {
1234
- const result = await fn();
1235
- recordSuccess();
1236
- return result;
1237
- } catch (err) {
1238
- recordFailure();
1239
- throw err;
1240
- }
1241
- }
1242
- return (next) => ({
1243
- ...next,
1244
- name: next.name ? `cb(${next.name})` : "cb",
1245
- get: (v, c, id) => guarded(() => next.get(v, c, id), null),
1246
- put: (v, c, id, env, ev) => guarded(() => next.put(v, c, id, env, ev), void 0),
1247
- delete: (v, c, id) => guarded(() => next.delete(v, c, id), void 0),
1248
- list: (v, c) => guarded(() => next.list(v, c), []),
1249
- loadAll: (v) => guarded(() => next.loadAll(v), {}),
1250
- saveAll: (v, d) => guarded(() => next.saveAll(v, d), void 0)
1251
- });
1252
- }
1253
- function withCache(opts = {}) {
1254
- const maxEntries = opts.maxEntries ?? 500;
1255
- const ttlMs = opts.ttlMs ?? 6e4;
1256
- const cache = /* @__PURE__ */ new Map();
1257
- function cacheKey(vault, collection, id) {
1258
- return `${vault}\0${collection}\0${id}`;
1259
- }
1260
- function getFromCache(key) {
1261
- const entry = cache.get(key);
1262
- if (!entry) return void 0;
1263
- if (ttlMs > 0 && Date.now() - entry.cachedAt > ttlMs) {
1264
- cache.delete(key);
1265
- return void 0;
1266
- }
1267
- cache.delete(key);
1268
- cache.set(key, entry);
1269
- return entry.envelope;
1270
- }
1271
- function setInCache(key, envelope) {
1272
- if (cache.size >= maxEntries) {
1273
- const oldest = cache.keys().next().value;
1274
- if (oldest !== void 0) cache.delete(oldest);
1275
- }
1276
- cache.set(key, { envelope, cachedAt: Date.now() });
1277
- }
1278
- function invalidate(key) {
1279
- cache.delete(key);
1280
- }
1281
- return (next) => ({
1282
- ...next,
1283
- name: next.name ? `cache(${next.name})` : "cache",
1284
- async get(vault, collection, id) {
1285
- const key = cacheKey(vault, collection, id);
1286
- const cached = getFromCache(key);
1287
- if (cached !== void 0) return cached;
1288
- const result = await next.get(vault, collection, id);
1289
- setInCache(key, result);
1290
- return result;
1291
- },
1292
- async put(vault, collection, id, env, ev) {
1293
- invalidate(cacheKey(vault, collection, id));
1294
- await next.put(vault, collection, id, env, ev);
1295
- setInCache(cacheKey(vault, collection, id), env);
1296
- },
1297
- async delete(vault, collection, id) {
1298
- invalidate(cacheKey(vault, collection, id));
1299
- await next.delete(vault, collection, id);
1300
- },
1301
- list: (v, c) => next.list(v, c),
1302
- loadAll: (v) => next.loadAll(v),
1303
- saveAll: (v, d) => next.saveAll(v, d)
1304
- });
1305
- }
1306
- function withHealthCheck(opts = {}) {
1307
- const intervalMs = opts.checkIntervalMs ?? 3e4;
1308
- const failThreshold = opts.suspendAfterFailures ?? 3;
1309
- const successThreshold = opts.resumeAfterSuccess ?? 1;
1310
- let isSuspended = false;
1311
- let consecutiveFailures = 0;
1312
- let consecutiveSuccesses = 0;
1313
- return (next) => {
1314
- const checkFn = opts.check ?? (next.ping ? () => next.ping() : async () => {
1315
- await next.list("__health__", "__ping__");
1316
- return true;
1317
- });
1318
- async function doCheck() {
1319
- try {
1320
- const ok = await checkFn();
1321
- if (ok) {
1322
- consecutiveFailures = 0;
1323
- consecutiveSuccesses++;
1324
- if (isSuspended && consecutiveSuccesses >= successThreshold) {
1325
- isSuspended = false;
1326
- consecutiveSuccesses = 0;
1327
- opts.onResume?.();
1328
- }
1329
- } else {
1330
- throw new Error("Health check returned false");
1331
- }
1332
- } catch {
1333
- consecutiveSuccesses = 0;
1334
- consecutiveFailures++;
1335
- if (!isSuspended && consecutiveFailures >= failThreshold) {
1336
- isSuspended = true;
1337
- consecutiveFailures = 0;
1338
- opts.onSuspend?.();
1339
- }
1340
- }
1341
- }
1342
- setInterval(() => {
1343
- void doCheck();
1344
- }, intervalMs);
1345
- const wrapped = {
1346
- ...next,
1347
- name: next.name ? `health(${next.name})` : "health",
1348
- async get(v, c, id) {
1349
- return isSuspended ? null : next.get(v, c, id);
1350
- },
1351
- async put(v, c, id, env, ev) {
1352
- if (!isSuspended) await next.put(v, c, id, env, ev);
1353
- },
1354
- async delete(v, c, id) {
1355
- if (!isSuspended) await next.delete(v, c, id);
1356
- },
1357
- async list(v, c) {
1358
- return isSuspended ? [] : next.list(v, c);
1359
- },
1360
- async loadAll(v) {
1361
- return isSuspended ? {} : next.loadAll(v);
1362
- },
1363
- async saveAll(v, d) {
1364
- if (!isSuspended) await next.saveAll(v, d);
1365
- }
1366
- };
1367
- return wrapped;
1368
- };
1369
- }
1370
-
1371
- // src/with-commit/numbering/descriptor.ts
1372
- function withDeferredNumbering(config) {
1373
- return {
1374
- series: config.series,
1375
- collection: config.collection,
1376
- field: config.field,
1377
- settleWindowMs: config.settleWindowMs ?? 0
1378
- };
1379
- }
1380
-
1381
- // src/via/money/iso4217.ts
1382
- var MINOR_UNITS = {
1383
- // 2-decimal majors
1384
- EUR: 2,
1385
- USD: 2,
1386
- GBP: 2,
1387
- CHF: 2,
1388
- CAD: 2,
1389
- AUD: 2,
1390
- NZD: 2,
1391
- SGD: 2,
1392
- HKD: 2,
1393
- CNY: 2,
1394
- INR: 2,
1395
- BRL: 2,
1396
- MXN: 2,
1397
- ZAR: 2,
1398
- RUB: 2,
1399
- TRY: 2,
1400
- PLN: 2,
1401
- SEK: 2,
1402
- NOK: 2,
1403
- DKK: 2,
1404
- CZK: 2,
1405
- HUF: 2,
1406
- RON: 2,
1407
- ILS: 2,
1408
- THB: 2,
1409
- PHP: 2,
1410
- MYR: 2,
1411
- IDR: 2,
1412
- AED: 2,
1413
- SAR: 2,
1414
- QAR: 2,
1415
- EGP: 2,
1416
- // 0-decimal
1417
- JPY: 0,
1418
- KRW: 0,
1419
- ISK: 0,
1420
- CLP: 0,
1421
- VND: 0,
1422
- XOF: 0,
1423
- XAF: 0,
1424
- PYG: 0,
1425
- // 3-decimal
1426
- BHD: 3,
1427
- KWD: 3,
1428
- OMR: 3,
1429
- TND: 3,
1430
- JOD: 3,
1431
- IQD: 3,
1432
- LYD: 3
1433
- };
1434
- function scaleForCurrency(code) {
1435
- const v = MINOR_UNITS[code];
1436
- return v === void 0 ? null : v;
1437
- }
1438
-
1439
- // src/via/money/fixed-point.ts
1440
- function expandExponent(s) {
1441
- const m = /^([+-]?)(\d+)(?:\.(\d+))?[eE]([+-]?\d+)$/.exec(s);
1442
- if (!m) return s;
1443
- const sign = m[1] === "-" ? "-" : "";
1444
- const intp = m[2];
1445
- const frac = m[3] ?? "";
1446
- const exp = Number(m[4]);
1447
- const digits = intp + frac;
1448
- const pointPos = intp.length + exp;
1449
- let body;
1450
- if (pointPos <= 0) {
1451
- body = "0." + "0".repeat(-pointPos) + digits;
1452
- } else if (pointPos >= digits.length) {
1453
- body = digits + "0".repeat(pointPos - digits.length);
1454
- } else {
1455
- body = digits.slice(0, pointPos) + "." + digits.slice(pointPos);
1456
- }
1457
- return sign + body;
1458
- }
1459
- function toCanonicalDecimalString(input) {
1460
- let s;
1461
- if (typeof input === "number") {
1462
- if (!Number.isFinite(input)) return null;
1463
- s = String(input);
1464
- } else {
1465
- s = input.trim();
1466
- }
1467
- s = expandExponent(s);
1468
- if (s.startsWith("+")) s = s.slice(1);
1469
- if (!/^-?(\d+(\.\d*)?|\.\d+)$/.test(s)) return null;
1470
- return s;
1471
- }
1472
- function shouldRoundUp(negative, lastKeptDigit, firstDiscarded, hasMoreNonZeroAfterFirst, mode) {
1473
- switch (mode) {
1474
- case "up":
1475
- return true;
1476
- case "down":
1477
- return false;
1478
- case "ceil":
1479
- return !negative;
1480
- case "floor":
1481
- return negative;
1482
- case "half-up":
1483
- return firstDiscarded >= 5;
1484
- case "half-down":
1485
- return firstDiscarded > 5 || firstDiscarded === 5 && hasMoreNonZeroAfterFirst;
1486
- case "half-even":
1487
- if (firstDiscarded > 5) return true;
1488
- if (firstDiscarded < 5) return false;
1489
- return hasMoreNonZeroAfterFirst || lastKeptDigit % 2 === 1;
1490
- }
1491
- }
1492
- function parseToScaledInt(input, scale, rounding) {
1493
- const canonical = toCanonicalDecimalString(input);
1494
- if (canonical === null) return { ok: false, reason: "nonfinite" };
1495
- const negative = canonical.startsWith("-");
1496
- const unsigned = negative ? canonical.slice(1) : canonical;
1497
- const dot = unsigned.indexOf(".");
1498
- const intPart = dot === -1 ? unsigned : unsigned.slice(0, dot);
1499
- const fracPart = dot === -1 ? "" : unsigned.slice(dot + 1);
1500
- const intDigits = intPart === "" ? "0" : intPart;
1501
- if (fracPart.length <= scale) {
1502
- const keep2 = fracPart.padEnd(scale, "0");
1503
- const magnitude2 = BigInt(intDigits + keep2);
1504
- return { ok: true, value: negative && magnitude2 !== 0n ? -magnitude2 : magnitude2 };
1505
- }
1506
- const keep = fracPart.slice(0, scale);
1507
- const tail = fracPart.slice(scale);
1508
- const magnitudeDigits = intDigits + keep;
1509
- let magnitude = BigInt(magnitudeDigits);
1510
- if (/^0+$/.test(tail)) {
1511
- return { ok: true, value: negative && magnitude !== 0n ? -magnitude : magnitude };
1512
- }
1513
- if (rounding === void 0) return { ok: false, reason: "precision" };
1514
- const lastKeptDigit = Number(magnitudeDigits[magnitudeDigits.length - 1]);
1515
- const firstDiscarded = Number(tail[0]);
1516
- const hasMoreNonZeroAfterFirst = /[1-9]/.test(tail.slice(1));
1517
- if (shouldRoundUp(negative, lastKeptDigit, firstDiscarded, hasMoreNonZeroAfterFirst, rounding)) {
1518
- magnitude += 1n;
1519
- }
1520
- return { ok: true, value: negative && magnitude !== 0n ? -magnitude : magnitude };
1521
- }
1522
- function decimalScaleOf(input) {
1523
- const s = toCanonicalDecimalString(input);
1524
- if (s === null) return null;
1525
- const dot = s.indexOf(".");
1526
- return dot === -1 ? 0 : s.length - dot - 1;
1527
- }
1528
- function rescaleScaledInt(value, fromScale, toScale, rounding = "half-up") {
1529
- if (toScale >= fromScale) return value * 10n ** BigInt(toScale - fromScale);
1530
- const drop = fromScale - toScale;
1531
- const negative = value < 0n;
1532
- const absStr = (negative ? -value : value).toString().padStart(drop + 1, "0");
1533
- const keptStr = absStr.slice(0, absStr.length - drop);
1534
- const tail = absStr.slice(absStr.length - drop);
1535
- let magnitude = BigInt(keptStr);
1536
- if (!/^0+$/.test(tail)) {
1537
- const lastKeptDigit = Number(keptStr[keptStr.length - 1]);
1538
- const firstDiscarded = Number(tail[0]);
1539
- const hasMoreNonZeroAfterFirst = /[1-9]/.test(tail.slice(1));
1540
- if (shouldRoundUp(negative, lastKeptDigit, firstDiscarded, hasMoreNonZeroAfterFirst, rounding)) {
1541
- magnitude += 1n;
1542
- }
1543
- }
1544
- return negative && magnitude !== 0n ? -magnitude : magnitude;
1545
- }
1546
- function formatScaledInt(value, scale) {
1547
- const negative = value < 0n;
1548
- const abs = (negative ? -value : value).toString();
1549
- if (scale === 0) return (negative ? "-" : "") + abs;
1550
- const padded = abs.padStart(scale + 1, "0");
1551
- const cut = padded.length - scale;
1552
- const intPart = padded.slice(0, cut);
1553
- const fracPart = padded.slice(cut);
1554
- return (negative ? "-" : "") + intPart + "." + fracPart;
1555
- }
1556
-
1557
- // src/via/money/paths.ts
1558
- var SEGMENT_RE = /^(\*|[^.[\]*]+)(\[\])?$/;
1559
- var parseCache = /* @__PURE__ */ new Map();
1560
- function parseMoneyPath(path) {
1561
- const cached = parseCache.get(path);
1562
- if (cached) return cached;
1563
- if (typeof path !== "string" || path.length === 0) {
1564
- throw new ValidationError("moneyFields: path must be a non-empty string");
1565
- }
1566
- const segments = [];
1567
- for (const part of path.split(".")) {
1568
- const m = SEGMENT_RE.exec(part);
1569
- if (!m) {
1570
- throw new ValidationError(
1571
- `moneyFields: invalid path "${path}" \u2014 segment "${part}" must be a key, "key[]", "*", or "*[]"`
1572
- );
1573
- }
1574
- const array = m[2] === "[]";
1575
- segments.push(
1576
- m[1] === "*" ? { kind: "wildcard", array } : { kind: "key", key: m[1], array }
1577
- );
1578
- }
1579
- parseCache.set(path, segments);
1580
- return segments;
1581
- }
1582
- function isSimpleMoneyPath(path) {
1583
- return !path.includes(".") && !path.includes("[") && !path.includes("*");
1584
- }
1585
- function validateMoneyFieldPaths(moneyFields) {
1586
- for (const path of Object.keys(moneyFields)) parseMoneyPath(path);
1587
- }
1588
- function transformAtMoneyPath(node, path, segments, index, visit, lenient) {
1589
- if (node === null || node === void 0) return node;
1590
- const seg = segments[index];
1591
- const last = index === segments.length - 1;
1592
- if (seg.kind === "key") {
1593
- if (typeof node !== "object" || Array.isArray(node)) {
1594
- if (lenient) return node;
1595
- throw new ValidationError(
1596
- `moneyFields: path "${path}" expected an object at segment "${seg.key}", got ${Array.isArray(node) ? "an array" : typeof node}`
1597
- );
1598
- }
1599
- const obj2 = node;
1600
- if (!(seg.key in obj2) || obj2[seg.key] === null || obj2[seg.key] === void 0) return node;
1601
- if (seg.array) {
1602
- const arr = obj2[seg.key];
1603
- if (!Array.isArray(arr)) {
1604
- if (lenient) return node;
1605
- throw new ValidationError(
1606
- `moneyFields: path "${path}" declares "${seg.key}[]" but the value is not an array`
1607
- );
1608
- }
1609
- const cloned = [...arr];
1610
- if (last) {
1611
- for (let i = 0; i < cloned.length; i++) visit(cloned, i);
1612
- } else {
1613
- for (let i = 0; i < cloned.length; i++) {
1614
- cloned[i] = transformAtMoneyPath(cloned[i], path, segments, index + 1, visit, lenient);
1615
- }
1616
- }
1617
- return { ...obj2, [seg.key]: cloned };
1618
- }
1619
- const clone2 = { ...obj2 };
1620
- if (last) {
1621
- visit(clone2, seg.key);
1622
- } else {
1623
- clone2[seg.key] = transformAtMoneyPath(clone2[seg.key], path, segments, index + 1, visit, lenient);
1624
- }
1625
- return clone2;
1626
- }
1627
- if (seg.array) {
1628
- if (!Array.isArray(node)) {
1629
- if (lenient) return node;
1630
- throw new ValidationError(`moneyFields: path "${path}" declares "*[]" but the value is not an array`);
1631
- }
1632
- const cloned = [...node];
1633
- if (last) {
1634
- for (let i = 0; i < cloned.length; i++) visit(cloned, i);
1635
- } else {
1636
- for (let i = 0; i < cloned.length; i++) {
1637
- cloned[i] = transformAtMoneyPath(cloned[i], path, segments, index + 1, visit, lenient);
1638
- }
1639
- }
1640
- return cloned;
1641
- }
1642
- if (typeof node !== "object" || Array.isArray(node)) {
1643
- if (lenient) return node;
1644
- throw new ValidationError(
1645
- `moneyFields: path "${path}" applies "*" to a non-object (${Array.isArray(node) ? 'array \u2014 use "*[]"' : typeof node})`
1646
- );
1647
- }
1648
- const obj = node;
1649
- const clone = { ...obj };
1650
- for (const key of Object.keys(obj)) {
1651
- const v = clone[key];
1652
- if (v === null || v === void 0) continue;
1653
- if (last) visit(clone, key);
1654
- else clone[key] = transformAtMoneyPath(v, path, segments, index + 1, visit, lenient);
1655
- }
1656
- return clone;
1657
- }
1658
-
1659
- // src/via/money/normalize.ts
1660
- function isMoneyValueObject(v) {
1661
- return typeof v === "object" && v !== null && "currency" in v;
1662
- }
1663
- function quantizeAmount(field, input, scale, rounding) {
1664
- const r = parseToScaledInt(input, scale, rounding);
1665
- if (!r.ok) {
1666
- if (r.reason === "precision") throw new MoneyPrecisionError(field, input, scale);
1667
- throw new TypeError(`money: field "${field}" value ${JSON.stringify(input)} is not a finite decimal`);
1668
- }
1669
- return r.value.toString();
1670
- }
1671
- function canonicalizeStoredMoney(record, moneyFields) {
1672
- if (record === null || record === void 0) return record;
1673
- if (!moneyFields || Object.keys(moneyFields).length === 0) return record;
1674
- return decodeMoneyFields(record, moneyFields, "raw");
1675
- }
1676
- function canonicalizeIncomingMoney(record, moneyFields) {
1677
- if (!moneyFields || Object.keys(moneyFields).length === 0) return record;
1678
- try {
1679
- return decodeMoneyFields(
1680
- quantizeMoneyFields(record, moneyFields),
1681
- moneyFields,
1682
- "raw"
1683
- );
1684
- } catch {
1685
- return record;
1686
- }
1687
- }
1688
- function quantizeValue(field, raw, desc) {
1689
- if (desc.mode === "fixed") {
1690
- const currency2 = desc.fixedCurrency;
1691
- return quantizeAmount(field, raw, desc.scaleFor(currency2), desc.rounding);
1692
- }
1693
- let amount;
1694
- let currency;
1695
- if (isMoneyValueObject(raw)) {
1696
- currency = String(raw.currency);
1697
- amount = raw.amount;
1698
- } else {
1699
- const sole = desc.soleCurrency();
1700
- if (sole === void 0) {
1701
- throw new TypeError(
1702
- `money: field "${field}" is multi-currency \u2014 write { amount, currency }, not a bare amount`
1703
- );
1704
- }
1705
- currency = sole;
1706
- amount = raw;
1707
- }
1708
- const scale = desc.scaleFor(currency);
1709
- return { amount: quantizeAmount(field, amount, scale, desc.rounding), currency };
1710
- }
1711
- function quantizeMoneyFields(record, moneyFields) {
1712
- let out = { ...record };
1713
- for (const [path, desc] of Object.entries(moneyFields)) {
1714
- if (isSimpleMoneyPath(path)) {
1715
- const raw = out[path];
1716
- if (raw === null || raw === void 0) continue;
1717
- out[path] = quantizeValue(path, raw, desc);
1718
- continue;
1719
- }
1720
- out = transformAtMoneyPath(
1721
- out,
1722
- path,
1723
- parseMoneyPath(path),
1724
- 0,
1725
- (container, key) => {
1726
- const raw = container[key];
1727
- if (raw === null || raw === void 0) return;
1728
- container[key] = quantizeValue(path, raw, desc);
1729
- },
1730
- /* lenient */
1731
- false
1732
- );
1733
- }
1734
- return out;
1735
- }
1736
- function formatCurrency(decimal, currency, scale, locale) {
1737
- const fmt = new Intl.NumberFormat(locale, {
1738
- style: "currency",
1739
- currency,
1740
- minimumFractionDigits: scale,
1741
- maximumFractionDigits: scale
1742
- });
1743
- return fmt.format(decimal);
1744
- }
1745
- function moneyScaledValue(stored, desc) {
1746
- let raw;
1747
- if (desc.mode === "fixed") {
1748
- raw = stored;
1749
- } else {
1750
- if (!isMoneyValueObject(stored)) return null;
1751
- raw = stored.amount;
1752
- }
1753
- if (typeof raw !== "string" && typeof raw !== "number") return null;
1754
- try {
1755
- return BigInt(String(raw));
1756
- } catch {
1757
- return null;
1758
- }
1759
- }
1760
- function canonicalizeMoneyIndexKey(field, rawValue, moneyFields) {
1761
- const desc = moneyFields[field];
1762
- if (!desc || desc.mode !== "fixed") return void 0;
1763
- return moneyScaledValue(rawValue, desc)?.toString();
1764
- }
1765
- function decodeValue(stored, desc) {
1766
- let currency;
1767
- let scaledIntString;
1768
- if (desc.mode === "fixed") {
1769
- if (typeof stored !== "string" && typeof stored !== "number") return null;
1770
- currency = desc.fixedCurrency;
1771
- scaledIntString = String(stored);
1772
- } else {
1773
- if (!isMoneyValueObject(stored)) return null;
1774
- const amount = stored.amount;
1775
- if (typeof stored.currency !== "string" || typeof amount !== "string" && typeof amount !== "number") return null;
1776
- currency = stored.currency;
1777
- scaledIntString = String(amount);
1778
- }
1779
- const scale = desc.scaleFor(currency);
1780
- let decimal;
1781
- try {
1782
- decimal = formatScaledInt(BigInt(scaledIntString), scale);
1783
- } catch {
1784
- return null;
1785
- }
1786
- return {
1787
- decoded: desc.mode === "fixed" ? decimal : { amount: decimal, currency },
1788
- decimal,
1789
- currency,
1790
- scale
1791
- };
1792
- }
1793
- function presentVirtualMoneyFields(record, moneyFields, virtualMoney, locale) {
1794
- let out = record;
1795
- const format = locale !== "raw";
1796
- const fmtLocale = typeof locale === "string" && locale !== "raw" ? locale : "en-US";
1797
- for (const field of virtualMoney) {
1798
- const desc = moneyFields[field];
1799
- if (!desc || desc.mode !== "fixed") continue;
1800
- const raw = out[field];
1801
- if (raw === null || raw === void 0) continue;
1802
- if (typeof raw !== "number" && typeof raw !== "string") continue;
1803
- const currency = desc.fixedCurrency;
1804
- const scale = desc.scaleFor(currency);
1805
- const r = parseToScaledInt(raw, scale, desc.rounding);
1806
- if (!r.ok) continue;
1807
- if (out === record) out = { ...record };
1808
- const decimal = formatScaledInt(r.value, scale);
1809
- out[field] = decimal;
1810
- if (format) {
1811
- out[`${field}Formatted`] = formatCurrency(decimal, currency, scale, fmtLocale);
1812
- out[`${field}Number`] = Number(decimal);
1813
- }
1814
- }
1815
- return out;
1816
- }
1817
- function decodeMoneyFields(record, moneyFields, locale) {
1818
- let out = { ...record };
1819
- const format = locale !== "raw";
1820
- const fmtLocale = typeof locale === "string" && locale !== "raw" ? locale : "en-US";
1821
- for (const [path, desc] of Object.entries(moneyFields)) {
1822
- if (isSimpleMoneyPath(path)) {
1823
- const stored = out[path];
1824
- if (stored === null || stored === void 0) continue;
1825
- const r = decodeValue(stored, desc);
1826
- if (r === null) continue;
1827
- out[path] = r.decoded;
1828
- if (format) {
1829
- out[`${path}Formatted`] = formatCurrency(r.decimal, r.currency, r.scale, fmtLocale);
1830
- out[`${path}Number`] = Number(r.decimal);
1831
- }
1832
- continue;
1833
- }
1834
- out = transformAtMoneyPath(
1835
- out,
1836
- path,
1837
- parseMoneyPath(path),
1838
- 0,
1839
- (container, key) => {
1840
- const stored = container[key];
1841
- if (stored === null || stored === void 0) return;
1842
- const r = decodeValue(stored, desc);
1843
- if (r === null) return;
1844
- container[key] = r.decoded;
1845
- if (format && typeof key === "string" && !Array.isArray(container)) {
1846
- container[`${key}Formatted`] = formatCurrency(r.decimal, r.currency, r.scale, fmtLocale);
1847
- container[`${key}Number`] = Number(r.decimal);
1848
- }
1849
- },
1850
- /* lenient */
1851
- true
1852
- );
1853
- }
1854
- return out;
1855
- }
1856
-
1857
- // src/via/money/where.ts
1858
- function isMoneyValueObject2(v) {
1859
- return typeof v === "object" && v !== null && "currency" in v;
1860
- }
1861
- function parseOperand(field, raw, desc) {
1862
- let amount;
1863
- let currency;
1864
- if (desc.mode === "fixed") {
1865
- currency = desc.fixedCurrency;
1866
- amount = raw;
1867
- } else if (isMoneyValueObject2(raw)) {
1868
- currency = String(raw.currency);
1869
- amount = raw.amount;
1870
- } else {
1871
- const sole = desc.soleCurrency();
1872
- if (sole === void 0) {
1873
- throw new MoneyUnsupportedError(
1874
- `where("${field}"): field is multi-currency \u2014 compare against { amount, currency }, not a bare amount`
1875
- );
1876
- }
1877
- currency = sole;
1878
- amount = raw;
1879
- }
1880
- if (typeof amount !== "number" && typeof amount !== "string") {
1881
- throw new MoneyUnsupportedError(
1882
- `where("${field}"): operand ${JSON.stringify(raw)} is not a money amount`
1883
- );
1884
- }
1885
- const r = parseToScaledInt(amount, desc.scaleFor(currency), desc.rounding);
1886
- if (!r.ok) {
1887
- throw new MoneyUnsupportedError(
1888
- `where("${field}"): operand ${JSON.stringify(amount)} is not a finite decimal`
1889
- );
1890
- }
1891
- return { scaled: r.value.toString(), currency };
1892
- }
1893
- function moneyFieldClause(field, op, value, desc) {
1894
- switch (op) {
1895
- case "==":
1896
- case "!=":
1897
- case "<":
1898
- case "<=":
1899
- case ">":
1900
- case ">=": {
1901
- const e = parseOperand(field, value, desc);
1902
- return { mode: desc.mode, entries: [e] };
1903
- }
1904
- case "between": {
1905
- if (!Array.isArray(value) || value.length !== 2) {
1906
- throw new MoneyUnsupportedError(`where("${field}"): 'between' needs a [lo, hi] tuple`);
1907
- }
1908
- const lo = parseOperand(field, value[0], desc);
1909
- const hi = parseOperand(field, value[1], desc);
1910
- if (lo.currency !== hi.currency) {
1911
- throw new MoneyUnsupportedError(
1912
- `where("${field}"): 'between' bounds mix currencies (${lo.currency} vs ${hi.currency})`
1913
- );
1914
- }
1915
- return { mode: desc.mode, entries: [lo, hi] };
1916
- }
1917
- case "in": {
1918
- if (!Array.isArray(value)) {
1919
- throw new MoneyUnsupportedError(`where("${field}"): 'in' needs an array of amounts`);
1920
- }
1921
- return { mode: desc.mode, entries: value.map((v) => parseOperand(field, v, desc)) };
1922
- }
1923
- default:
1924
- throw new MoneyUnsupportedError(
1925
- `where("${field}"): operator '${op}' is not supported on a money field`
1926
- );
1927
- }
1928
- }
1929
- function moneyIndexProbe(op, payload) {
1930
- if (payload.mode !== "fixed") return void 0;
1931
- if (op === "==") return payload.entries[0]?.scaled;
1932
- if (op === "in") return payload.entries.map((e) => e.scaled);
1933
- return void 0;
1934
- }
1935
- function readStored(actual, operand) {
1936
- let amount;
1937
- let currency;
1938
- if (operand.mode === "fixed") {
1939
- if (typeof actual !== "string" && typeof actual !== "number") return null;
1940
- amount = actual;
1941
- currency = operand.entries[0]?.currency ?? "";
1942
- } else {
1943
- if (!isMoneyValueObject2(actual)) return null;
1944
- if (typeof actual.currency !== "string") return null;
1945
- amount = actual.amount;
1946
- currency = actual.currency;
1947
- }
1948
- if (typeof amount !== "string" && typeof amount !== "number") return null;
1949
- try {
1950
- return { scaled: BigInt(amount).toString(), currency };
1951
- } catch {
1952
- return null;
1953
- }
1954
- }
1955
- function evaluateMoneyClause(actual, op, operand) {
1956
- const stored = readStored(actual, operand);
1957
- if (stored === null) return op === "!=";
1958
- const a = BigInt(stored.scaled);
1959
- if (op === "in") {
1960
- return operand.entries.some(
1961
- (e2) => e2.currency === stored.currency && BigInt(e2.scaled) === a
1962
- );
1963
- }
1964
- if (op === "between") {
1965
- const [lo, hi] = operand.entries;
1966
- if (!lo || !hi || lo.currency !== stored.currency) return false;
1967
- return a >= BigInt(lo.scaled) && a <= BigInt(hi.scaled);
1968
- }
1969
- const e = operand.entries[0];
1970
- if (!e) return false;
1971
- if (e.currency !== stored.currency) return op === "!=";
1972
- const b = BigInt(e.scaled);
1973
- switch (op) {
1974
- case "==":
1975
- return a === b;
1976
- case "!=":
1977
- return a !== b;
1978
- case "<":
1979
- return a < b;
1980
- case "<=":
1981
- return a <= b;
1982
- case ">":
1983
- return a > b;
1984
- case ">=":
1985
- return a >= b;
1986
- default:
1987
- return false;
1988
- }
1989
- }
1990
-
1991
- // src/via/money/money-reducer.ts
1992
- function toScaledIntFromAny(v, scale) {
1993
- if (typeof v === "bigint") return v;
1994
- if (typeof v === "number") {
1995
- const r = parseToScaledInt(v, scale);
1996
- return r.ok ? r.value : null;
1997
- }
1998
- if (typeof v === "string") {
1999
- if (!v.includes(".")) {
2000
- try {
2001
- return BigInt(v);
2002
- } catch {
2003
- return null;
2004
- }
2005
- }
2006
- const r = parseToScaledInt(v, scale);
2007
- return r.ok ? r.value : null;
2008
- }
2009
- return null;
2010
- }
2011
- function readMoney(record, field, desc) {
2012
- const raw = readPath(record, field);
2013
- if (raw === null || raw === void 0) return null;
2014
- if (desc.mode === "fixed") {
2015
- const cur = desc.fixedCurrency;
2016
- const value2 = toScaledIntFromAny(raw, desc.scaleFor(cur));
2017
- return value2 === null ? null : { currency: cur, value: value2 };
2018
- }
2019
- if (typeof raw !== "object") return null;
2020
- const o = raw;
2021
- if (typeof o.currency !== "string") return null;
2022
- const scale = desc.allows(o.currency) ? desc.scaleFor(o.currency) : 0;
2023
- const value = toScaledIntFromAny(o.amount, scale);
2024
- return value === null ? null : { currency: o.currency, value };
2025
- }
2026
- function targetScaleFor(desc, currency) {
2027
- if (desc.allows(currency)) return desc.scaleFor(currency);
2028
- const s = scaleForCurrency(currency);
2029
- if (s === null) {
2030
- throw new Error(`money: cannot determine scale for conversion target "${currency}"`);
2031
- }
2032
- return s;
2033
- }
2034
- function parseRate(rate) {
2035
- const s = String(rate).trim();
2036
- const neg = s.startsWith("-");
2037
- const body = neg ? s.slice(1) : s;
2038
- const dot = body.indexOf(".");
2039
- const intPart = dot === -1 ? body : body.slice(0, dot);
2040
- const fracPart = dot === -1 ? "" : body.slice(dot + 1);
2041
- const int = BigInt((intPart === "" ? "0" : intPart) + fracPart);
2042
- return { int: neg ? -int : int, scale: fracPart.length };
2043
- }
2044
- function divRoundHalfEven(n, d) {
2045
- const q = n / d;
2046
- const r = n % d;
2047
- const twiceR = (r < 0n ? -r : r) * 2n;
2048
- if (twiceR < d) return q;
2049
- if (twiceR > d) return q + (n < 0n ? -1n : 1n);
2050
- return q % 2n === 0n ? q : q + (n < 0n ? -1n : 1n);
2051
- }
2052
- function convertScaled(value, srcScale, rate, targetScale) {
2053
- const { int: rateInt, scale: rateScale } = parseRate(rate);
2054
- const product = value * rateInt;
2055
- const curScale = srcScale + rateScale;
2056
- if (curScale === targetScale) return product;
2057
- if (curScale < targetScale) return product * 10n ** BigInt(targetScale - curScale);
2058
- return divRoundHalfEven(product, 10n ** BigInt(curScale - targetScale));
2059
- }
2060
- function finalizeSum(state, desc, convertTo, fx) {
2061
- if (convertTo !== void 0) {
2062
- if (fx === void 0) {
2063
- throw new Error(`money: sum convertTo "${convertTo}" requires an fx rate map`);
2064
- }
2065
- const targetScale = targetScaleFor(desc, convertTo);
2066
- let total = 0n;
2067
- for (const [cur, v] of state) {
2068
- if (cur === convertTo) {
2069
- total += convertScaled(v, desc.scaleFor(cur), 1, targetScale);
2070
- continue;
2071
- }
2072
- const rate = fx[`${cur}->${convertTo}`];
2073
- if (rate === void 0) {
2074
- throw new Error(`money: no fx rate for "${cur}->${convertTo}"`);
2075
- }
2076
- total += convertScaled(v, desc.scaleFor(cur), rate, targetScale);
2077
- }
2078
- return formatScaledInt(total, targetScale);
2079
- }
2080
- if (desc.mode === "fixed") {
2081
- const cur = desc.fixedCurrency;
2082
- return formatScaledInt(state.get(cur) ?? 0n, desc.scaleFor(cur));
2083
- }
2084
- const out = {};
2085
- for (const [cur, v] of state) out[cur] = formatScaledInt(v, desc.scaleFor(cur));
2086
- return out;
2087
- }
2088
- function moneySumReducer(field, desc, convertTo, fx) {
2089
- return {
2090
- op: "sum",
2091
- field,
2092
- init: () => /* @__PURE__ */ new Map(),
2093
- step: (state, record) => {
2094
- const m = readMoney(record, field, desc);
2095
- if (m) state.set(m.currency, (state.get(m.currency) ?? 0n) + m.value);
2096
- return state;
2097
- },
2098
- remove: (state, record) => {
2099
- const m = readMoney(record, field, desc);
2100
- if (m) state.set(m.currency, (state.get(m.currency) ?? 0n) - m.value);
2101
- return state;
2102
- },
2103
- finalize: (state) => finalizeSum(state, desc, convertTo, fx)
2104
- };
2105
- }
2106
- function extremum(values, op) {
2107
- let out = values[0];
2108
- for (let i = 1; i < values.length; i++) {
2109
- const v = values[i];
2110
- if (op === "min" ? v < out : v > out) out = v;
2111
- }
2112
- return out;
2113
- }
2114
- function moneyMinMaxReducer(op, field, desc) {
2115
- return {
2116
- op,
2117
- field,
2118
- init: () => /* @__PURE__ */ new Map(),
2119
- step: (state, record) => {
2120
- const m = readMoney(record, field, desc);
2121
- if (m) {
2122
- const arr = state.get(m.currency);
2123
- if (arr) arr.push(m.value);
2124
- else state.set(m.currency, [m.value]);
2125
- }
2126
- return state;
2127
- },
2128
- remove: (state, record) => {
2129
- const m = readMoney(record, field, desc);
2130
- if (m) {
2131
- const arr = state.get(m.currency);
2132
- if (arr) {
2133
- const idx = arr.indexOf(m.value);
2134
- if (idx >= 0) arr.splice(idx, 1);
2135
- }
2136
- }
2137
- return state;
2138
- },
2139
- finalize: (state) => {
2140
- if (desc.mode === "fixed") {
2141
- const cur = desc.fixedCurrency;
2142
- const arr = state.get(cur);
2143
- if (!arr || arr.length === 0) return null;
2144
- return formatScaledInt(extremum(arr, op), desc.scaleFor(cur));
2145
- }
2146
- const out = {};
2147
- for (const [cur, arr] of state) {
2148
- if (arr.length > 0) out[cur] = formatScaledInt(extremum(arr, op), desc.scaleFor(cur));
2149
- }
2150
- return out;
2151
- }
2152
- };
2153
- }
2154
- function wrapMoneyReducers(spec, moneyFields) {
2155
- let changed = false;
2156
- const out = {};
2157
- for (const [key, reducer] of Object.entries(spec)) {
2158
- const field = reducer.field;
2159
- const desc = field ? moneyFields[field] : void 0;
2160
- if (desc && reducer.op === "avg") {
2161
- throw new MoneyUnsupportedError(
2162
- field,
2163
- `avg() is not supported on money field "${field}" in v1 \u2014 use sum() and count() and divide at the boundary.`
2164
- );
2165
- }
2166
- if (desc && (reducer.op === "sum" || reducer.op === "min" || reducer.op === "max")) {
2167
- changed = true;
2168
- out[key] = reducer.op === "sum" ? moneySumReducer(field, desc, reducer.convertTo, reducer.fx) : moneyMinMaxReducer(reducer.op, field, desc);
2169
- } else {
2170
- out[key] = reducer;
2171
- }
2172
- }
2173
- return changed ? out : spec;
2174
- }
2175
-
2176
- // src/via/money/binding.ts
2177
- function moneyBinding(moneyFields, virtualMoneyFields) {
2178
- validateMoneyFieldPaths(moneyFields);
2179
- const hasVirtualMoney = virtualMoneyFields !== void 0 && virtualMoneyFields.size > 0;
2180
- const ordinaryPresentFields = hasVirtualMoney ? Object.fromEntries(Object.entries(moneyFields).filter(([f]) => !virtualMoneyFields.has(f))) : moneyFields;
2181
- return {
2182
- brand: "money",
2183
- posture: { encryptedAtRest: "envelope", queryable: "ordered", exportable: true, forgettable: true },
2184
- covers: (field) => field in moneyFields,
2185
- ingest: (r) => canonicalizeIncomingMoney(r, moneyFields),
2186
- canonicalizeStored: (r) => canonicalizeStoredMoney(r, moneyFields),
2187
- encodeWrite: (r) => quantizeMoneyFields(r, moneyFields),
2188
- present: (r, ctx) => decodeMoneyFields(r, ordinaryPresentFields, typeof ctx.locale === "string" ? ctx.locale : void 0),
2189
- ...hasVirtualMoney ? {
2190
- presentLate: (r, ctx) => presentVirtualMoneyFields(r, moneyFields, virtualMoneyFields, typeof ctx.locale === "string" ? ctx.locale : void 0)
2191
- } : {},
2192
- buildClause: (field, op, value) => {
2193
- const desc = moneyFields[field];
2194
- if (!desc) return void 0;
2195
- return moneyFieldClause(field, op, value, desc);
2196
- },
2197
- evaluateClause: (actual, op, payload) => evaluateMoneyClause(actual, op, payload),
2198
- indexProbe: (op, payload) => moneyIndexProbe(op, payload),
2199
- canonicalizeIndexKey: (field, rawValue) => canonicalizeMoneyIndexKey(field, rawValue, moneyFields),
2200
- decodeResults: (r) => decodeMoneyFields(r, moneyFields, "raw"),
2201
- compareForOrder: (field, a, b) => {
2202
- const desc = moneyFields[field];
2203
- if (!desc) return void 0;
2204
- const av = moneyScaledValue(a, desc);
2205
- const bv = moneyScaledValue(b, desc);
2206
- if (av === null) return bv === null ? 0 : 1;
2207
- if (bv === null) return -1;
2208
- return av < bv ? -1 : av > bv ? 1 : 0;
2209
- },
2210
- wrapReducers: (spec) => wrapMoneyReducers(spec, moneyFields)
2211
- };
2212
- }
2213
- function linkMoneyVia() {
2214
- installViaBinder("money", (cfg) => {
2215
- const c = cfg;
2216
- return moneyBinding(c.moneyFields, c.virtualMoneyFields);
2217
- });
2218
- }
2219
-
2220
- // src/via/money/descriptor.ts
2221
- var MoneyPrecisionError = class extends NoydbError {
2222
- constructor(field, value, scale) {
2223
- super(
2224
- "MONEY_PRECISION",
2225
- `money: value ${JSON.stringify(value)} for field "${field}" exceeds scale ${scale} and no rounding mode is configured`
2226
- );
2227
- this.field = field;
2228
- this.value = value;
2229
- this.scale = scale;
2230
- this.name = "MoneyPrecisionError";
2231
- }
2232
- field;
2233
- value;
2234
- scale;
2235
- };
2236
- var MoneyCurrencyError = class extends NoydbError {
2237
- constructor(currency, reason, field) {
2238
- super(
2239
- "MONEY_CURRENCY",
2240
- reason === "not-allowed" ? `money: currency "${currency}" is not allowed${field ? ` for field "${field}"` : ""}` : `money: no scale known for currency "${currency}"${field ? ` (field "${field}")` : ""} \u2014 pass an explicit scale / scaleOverrides`
2241
- );
2242
- this.currency = currency;
2243
- this.reason = reason;
2244
- this.field = field;
2245
- this.name = "MoneyCurrencyError";
2246
- }
2247
- currency;
2248
- reason;
2249
- field;
2250
- };
2251
- var MoneyUnsupportedError = class extends NoydbError {
2252
- constructor(field, message) {
2253
- super(
2254
- "MONEY_UNSUPPORTED",
2255
- message ?? `money: operation is not supported on field "${field}" \u2014 use sum() and count() and divide at the boundary`
2256
- );
2257
- this.field = field;
2258
- this.name = "MoneyUnsupportedError";
2259
- }
2260
- field;
2261
- };
2262
- function isMultiOptions(o) {
2263
- return "currencies" in o;
2264
- }
2265
- function money(options) {
2266
- linkMoneyVia();
2267
- const hasFixed = "currency" in options;
2268
- const hasMulti = "currencies" in options;
2269
- if (hasFixed && hasMulti) {
2270
- throw new TypeError("money: `currency` and `currencies` are mutually exclusive");
2271
- }
2272
- if (!hasFixed && !hasMulti) {
2273
- throw new TypeError("money: one of `currency` or `currencies` is required");
2274
- }
2275
- const rounding = options.rounding;
2276
- if (isMultiOptions(options)) {
2277
- const overrides = options.scaleOverrides ?? {};
2278
- const allowList = options.currencies;
2279
- const allows = (c) => allowList === "any" ? true : allowList.includes(c);
2280
- const scaleFor = (c) => {
2281
- if (!allows(c)) throw new MoneyCurrencyError(c, "not-allowed");
2282
- const s = overrides[c] ?? scaleForCurrency(c);
2283
- if (s === null || s === void 0) throw new MoneyCurrencyError(c, "unknown-scale");
2284
- return s;
2285
- };
2286
- if (allowList !== "any") for (const c of allowList) scaleFor(c);
2287
- const soleCurrency = () => allowList !== "any" && allowList.length === 1 ? allowList[0] : void 0;
2288
- return {
2289
- _noydbMoney: true,
2290
- _viaBrand: "money",
2291
- mode: "multi",
2292
- options,
2293
- rounding,
2294
- fixedCurrency: void 0,
2295
- scaleFor,
2296
- allows,
2297
- soleCurrency
2298
- };
2299
- }
2300
- const currency = options.currency;
2301
- const resolvedScale = options.scale ?? scaleForCurrency(currency);
2302
- if (resolvedScale === null || resolvedScale === void 0) {
2303
- throw new MoneyCurrencyError(currency, "unknown-scale");
2304
- }
2305
- return {
2306
- _noydbMoney: true,
2307
- _viaBrand: "money",
2308
- mode: "fixed",
2309
- options,
2310
- rounding,
2311
- fixedCurrency: currency,
2312
- scaleFor(c) {
2313
- if (c !== currency) throw new MoneyCurrencyError(c, "not-allowed");
2314
- return resolvedScale;
2315
- },
2316
- allows: (c) => c === currency,
2317
- soleCurrency: () => currency
2318
- };
2319
- }
2320
- function isMoneyDescriptor(x) {
2321
- return typeof x === "object" && x !== null && x._noydbMoney === true;
2322
- }
2323
-
2324
- // src/via/money/arith.ts
2325
- function parseAmount(label, amount, scale, rounding) {
2326
- const r = parseToScaledInt(amount, scale, rounding);
2327
- if (!r.ok) {
2328
- throw new MoneyUnsupportedError(
2329
- r.reason === "precision" ? `${label}: amount ${JSON.stringify(amount)} has more precision than scale ${scale} and no rounding mode is configured` : `${label}: amount ${JSON.stringify(amount)} is not a finite decimal`
2330
- );
2331
- }
2332
- return r.value;
2333
- }
2334
- function resolveScale(label, amount, explicit) {
2335
- if (explicit !== void 0) {
2336
- if (!Number.isInteger(explicit) || explicit < 0) {
2337
- throw new MoneyUnsupportedError(`${label}: scale must be a non-negative integer`);
2338
- }
2339
- return explicit;
2340
- }
2341
- const inferred = decimalScaleOf(amount);
2342
- if (inferred === null) {
2343
- throw new MoneyUnsupportedError(`${label}: amount ${JSON.stringify(amount)} is not a finite decimal`);
2344
- }
2345
- return inferred;
2346
- }
2347
- function mulRate(amount, rate, opts = {}) {
2348
- const scale = resolveScale("mulRate", amount, opts.scale);
2349
- const rounding = opts.rounding ?? "half-up";
2350
- const a = parseAmount("mulRate", amount, scale, rounding);
2351
- const rateScale = decimalScaleOf(rate);
2352
- if (rateScale === null) {
2353
- throw new MoneyUnsupportedError(`mulRate: rate ${JSON.stringify(rate)} is not a finite decimal`);
2354
- }
2355
- const r = parseToScaledInt(rate, rateScale);
2356
- if (!r.ok) {
2357
- throw new MoneyUnsupportedError(`mulRate: rate ${JSON.stringify(rate)} is not a finite decimal`);
2358
- }
2359
- const product = a * r.value;
2360
- return formatScaledInt(rescaleScaledInt(product, scale + rateScale, scale, rounding), scale);
2361
- }
2362
- function allocate(amount, weights, opts = {}) {
2363
- if (weights.length === 0) {
2364
- throw new MoneyUnsupportedError("allocate: weights must not be empty");
2365
- }
2366
- const scale = resolveScale("allocate", amount, opts.scale);
2367
- const a = parseAmount("allocate", amount, scale);
2368
- let weightScale = 0;
2369
- for (const w of weights) {
2370
- const s = decimalScaleOf(w);
2371
- if (s === null) {
2372
- throw new MoneyUnsupportedError(`allocate: weight ${JSON.stringify(w)} is not a finite decimal`);
2373
- }
2374
- if (s > weightScale) weightScale = s;
2375
- }
2376
- const scaledWeights = weights.map((w) => {
2377
- const r = parseToScaledInt(w, weightScale);
2378
- if (!r.ok || r.value < 0n) {
2379
- throw new MoneyUnsupportedError(`allocate: weight ${JSON.stringify(w)} must be a non-negative decimal`);
2380
- }
2381
- return r.value;
2382
- });
2383
- const sumW = scaledWeights.reduce((acc, w) => acc + w, 0n);
2384
- if (sumW === 0n) {
2385
- throw new MoneyUnsupportedError("allocate: weights must not all be zero");
2386
- }
2387
- const negative = a < 0n;
2388
- const mag = negative ? -a : a;
2389
- const base = [];
2390
- const remainders = [];
2391
- let distributed = 0n;
2392
- for (let i = 0; i < scaledWeights.length; i++) {
2393
- const product = mag * scaledWeights[i];
2394
- const share = product / sumW;
2395
- base.push(share);
2396
- distributed += share;
2397
- remainders.push({ index: i, rem: product % sumW });
2398
- }
2399
- let leftover = mag - distributed;
2400
- remainders.sort((x, y) => y.rem > x.rem ? 1 : y.rem < x.rem ? -1 : x.index - y.index);
2401
- for (const { index } of remainders) {
2402
- if (leftover === 0n) break;
2403
- base[index] = base[index] + 1n;
2404
- leftover -= 1n;
2405
- }
2406
- return base.map((p) => formatScaledInt(negative && p !== 0n ? -p : p, scale));
2407
- }
2408
-
2409
- // src/via/money/branded.ts
2410
- function asMoney(value) {
2411
- if (!isMoneyLike(value)) {
2412
- throw new MoneyUnsupportedError(`asMoney: ${JSON.stringify(value)} is not a finite decimal`);
2413
- }
2414
- return String(value).trim();
2415
- }
2416
- function isMoneyString(value) {
2417
- return typeof value === "string" && isMoneyLike(value);
2418
- }
2419
- function moneyNumber(value) {
2420
- if (!isMoneyLike(value)) {
2421
- throw new MoneyUnsupportedError(`moneyNumber: ${JSON.stringify(value)} is not a finite decimal`);
2422
- }
2423
- return Number(value);
2424
- }
2425
- function isMoneyLike(value) {
2426
- if (typeof value === "number") return Number.isFinite(value);
2427
- if (typeof value !== "string") return false;
2428
- return decimalScaleOf(value) !== null;
2429
638
  }
2430
639
 
2431
640
  // src/via/computed/descriptor.ts
@@ -2718,7 +927,6 @@ function dict(dimension, opts) {
2718
927
  };
2719
928
  }
2720
929
  export {
2721
- Aggregation,
2722
930
  AlreadyElevatedError,
2723
931
  AmendmentForbiddenError,
2724
932
  AttestationError,
@@ -2759,19 +967,15 @@ export {
2759
967
  CrossJoinTooLargeError,
2760
968
  CustodyApi,
2761
969
  CustodyNotEnabledError,
2762
- DEED_RECORD_ID,
2763
970
  DEFAULT_CHUNK_SIZE,
2764
971
  DEFAULT_COVER_SCHEMA,
2765
972
  DEFAULT_CROSS_JOIN_MAX_ROWS,
2766
973
  DEFAULT_FRESHNESS_MS,
2767
974
  DEFAULT_JOIN_MAX_ROWS,
2768
- DELEGATIONS_COLLECTION,
2769
975
  DICT_COLLECTION_PREFIX,
2770
976
  DIRECTORY_RECORD_ID,
2771
977
  DanglingReferenceError,
2772
978
  DataResidencyError,
2773
- DebugPlaintextError,
2774
- DebugReservedFieldError,
2775
979
  DecryptionError,
2776
980
  DelegationTargetMissingError,
2777
981
  DerivationCapExceededError,
@@ -2794,12 +998,7 @@ export {
2794
998
  FieldNotQueryableError,
2795
999
  FilenameSanitizationError,
2796
1000
  ForgetStrategyNotConfiguredError,
2797
- GROUPBY_MAX_CARDINALITY,
2798
- GROUPBY_WARN_CARDINALITY,
2799
1001
  GroupCardinalityError,
2800
- GroupedAggregation,
2801
- GroupedQuery,
2802
- GroupedQueryN,
2803
1002
  INDEXED_STORE_POLICY,
2804
1003
  IllegalTransitionError,
2805
1004
  ImportCapabilityError,
@@ -2818,9 +1017,7 @@ export {
2818
1017
  LinkIntegrityError,
2819
1018
  LocaleNotSpecifiedError,
2820
1019
  Lru,
2821
- MAGIC_LINK_CONTENT_INFO_PREFIX,
2822
1020
  MAGIC_LINK_GRANTS_COLLECTION,
2823
- MAGIC_LINK_KEK_INFO_PREFIX,
2824
1021
  META_COLLECTION,
2825
1022
  ManagedRecoveryNotEnrolledError,
2826
1023
  MaterializedViewConfigError,
@@ -2888,7 +1085,6 @@ export {
2888
1085
  ReservedVaultNameError,
2889
1086
  RestrictRefUnresolvableError,
2890
1087
  SCHEMAS_COLLECTION,
2891
- SEALED_SECRET_RECORD_ID,
2892
1088
  STATE_VAULT_NAME,
2893
1089
  STRICT_POLICY,
2894
1090
  SYNC_CREDENTIALS_COLLECTION,
@@ -2956,8 +1152,6 @@ export {
2956
1152
  approveWithdrawal,
2957
1153
  asMoney,
2958
1154
  assertStrongSecret,
2959
- assertTierAccess,
2960
- avg,
2961
1155
  base64ToBuffer,
2962
1156
  blindUpdate,
2963
1157
  bufferToBase64,
@@ -2972,7 +1166,6 @@ export {
2972
1166
  computePatch,
2973
1167
  computed,
2974
1168
  coordinatedCutover,
2975
- count,
2976
1169
  createBundleStore,
2977
1170
  createDeedOwner,
2978
1171
  createEnforcer,
@@ -2985,7 +1178,6 @@ export {
2985
1178
  decryptBytes,
2986
1179
  decryptDeterministic,
2987
1180
  decryptExtractedPartition,
2988
- dekKey,
2989
1181
  deleteCredential,
2990
1182
  deleteIntent,
2991
1183
  deleteUserEnvelope,
@@ -3005,7 +1197,6 @@ export {
3005
1197
  dictKey,
3006
1198
  diff,
3007
1199
  diffVault,
3008
- effectiveClearance,
3009
1200
  enableDevUnlock,
3010
1201
  encryptBytes,
3011
1202
  encryptDeterministic,
@@ -3029,11 +1220,9 @@ export {
3029
1220
  generateULID,
3030
1221
  getCredential,
3031
1222
  getIntent,
3032
- groupAndReduce,
3033
1223
  hasExportCapability,
3034
1224
  hasImportCapability,
3035
1225
  hasNoydbBundleMagic,
3036
- hasRecoveryEnrolled,
3037
1226
  hashEntry,
3038
1227
  i18nText,
3039
1228
  immutableGuard,
@@ -3060,8 +1249,6 @@ export {
3060
1249
  isULID,
3061
1250
  isViaFieldSpec,
3062
1251
  isZodSchema,
3063
- issueDelegation,
3064
- recoverSecret as keyringRecoverSecret,
3065
1252
  rotateSecret as keyringRotateSecret,
3066
1253
  liberateVault,
3067
1254
  listCredentials,
@@ -3070,40 +1257,30 @@ export {
3070
1257
  listUsers,
3071
1258
  listUsersWithEnvelopes,
3072
1259
  listWithdrawalRequests,
3073
- loadActiveDelegations,
3074
1260
  loadCover,
3075
1261
  loadDeedMarker,
3076
1262
  loadDevUnlock,
3077
1263
  loadPaperRecoveryEntries,
3078
1264
  loadPersistedSchema,
3079
- loadSealedSecret,
3080
- loadShamirRecoveryEntries,
3081
1265
  loadUserEnvelope,
3082
1266
  loadVaultPolicy,
3083
1267
  lockSchema,
3084
1268
  lookup,
3085
1269
  luhnCheck,
3086
1270
  magicLinkGrantRecordId,
3087
- max,
3088
1271
  memoryObjectProjection,
3089
1272
  memoryStore,
3090
1273
  mergeCrdtStates,
3091
1274
  mergePolicy,
3092
- min,
3093
1275
  mintPaperRecoveryEntry,
3094
- mintShamirRecoveryEntry,
3095
1276
  mintWrappedDeksBlob,
3096
1277
  money,
3097
- moneyMax,
3098
- moneyMin,
3099
1278
  moneyNumber,
3100
- moneySum,
3101
1279
  mulRate,
3102
1280
  paddedIndex,
3103
1281
  parseBytes,
3104
1282
  parseIndex,
3105
1283
  parseRsaOaepTlv,
3106
- parseSealedEnvelope,
3107
1284
  persistDirectoryConfig,
3108
1285
  persistSchemaIfNeeded,
3109
1286
  persistUserVisibility,
@@ -3114,21 +1291,16 @@ export {
3114
1291
  readNoydbBundle,
3115
1292
  readNoydbBundleHeader,
3116
1293
  readPath,
3117
- readPlaintextRecord,
3118
1294
  readPod,
3119
1295
  readPodCover,
3120
1296
  readPodHeader,
3121
1297
  readUserVisibility,
3122
1298
  recoverUser,
3123
- reduceRecords,
3124
- reducerBuilder,
3125
1299
  ref,
3126
1300
  refArray,
3127
1301
  rejectWithdrawal,
3128
1302
  removeAuthenticator,
3129
1303
  requestWithdrawal,
3130
- resetBrotliSupportCache,
3131
- resetJoinWarnings,
3132
1304
  resolveClassifiedFields,
3133
1305
  resolveSchema as resolveCoverSchema,
3134
1306
  resolveCrdtSnapshot,
@@ -3137,7 +1309,6 @@ export {
3137
1309
  resolveSequenceKey,
3138
1310
  resolveSession,
3139
1311
  revokeAllSessions,
3140
- revokeDelegation,
3141
1312
  revokeMagicLinkGrant,
3142
1313
  revokeSession,
3143
1314
  routeStore,
@@ -3145,21 +1316,17 @@ export {
3145
1316
  saveCover,
3146
1317
  savePaperRecoveryEntries,
3147
1318
  savePersistedSchema,
3148
- saveSealedSecret,
3149
- saveShamirRecoveryEntries,
3150
1319
  saveUserEnvelope,
3151
1320
  saveVaultPolicy,
3152
1321
  scaleForCurrency,
3153
1322
  sealRsaOaepTlv,
3154
1323
  sha256Hex,
3155
1324
  staticDict,
3156
- sum,
3157
1325
  sweepBlobIntents,
3158
1326
  tokenize,
3159
1327
  transitionGuard,
3160
1328
  unwrapDeksFromBlob,
3161
1329
  unwrapDeksFromPaperEntry,
3162
- unwrapDeksFromShamirEntry,
3163
1330
  unwrapMagicLinkGrant,
3164
1331
  validateCoverInput,
3165
1332
  validateI18nTextValue,