@noy-db/hub 0.4.0-pre.6 → 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 (454) hide show
  1. package/dist/api-3NKVNZPM.js +20 -0
  2. package/dist/attestation/index.js +18 -18
  3. package/dist/{backup-USYSNCYM.js → backup-PTSVXDDW.js} +13 -13
  4. package/dist/blobs/index.js +13 -13
  5. package/dist/blobs/index.js.map +1 -1
  6. package/dist/broker/index.js +12 -12
  7. package/dist/cargo/index.js +31 -29
  8. package/dist/{chunk-5WLDZZ6S.js → chunk-35NMVJ7I.js} +3 -3
  9. package/dist/{chunk-ZGEFBDPR.js → chunk-3HUYRN24.js} +3 -3
  10. package/dist/chunk-3HUYRN24.js.map +1 -0
  11. package/dist/{chunk-NA374QG7.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-M7W2KYTL.js → chunk-56IIVAEO.js} +2 -2
  16. package/dist/{chunk-FHHYCBBP.js → chunk-5DRROK5W.js} +2 -2
  17. package/dist/{chunk-GTNRMJYH.js → chunk-5GQEU4DN.js} +2 -2
  18. package/dist/{chunk-XSOGLHGY.js → chunk-6L3DKWRY.js} +6 -6
  19. package/dist/chunk-6LJY7X5A.js +18 -0
  20. package/dist/chunk-6LJY7X5A.js.map +1 -0
  21. package/dist/{chunk-44Y3P5U6.js → chunk-6M2I3DKF.js} +2 -2
  22. package/dist/{chunk-HDF5R2K6.js → chunk-6R6Q3MRN.js} +7 -7
  23. package/dist/{chunk-ZUDAK436.js → chunk-6UBZ6I5Z.js} +2 -2
  24. package/dist/{chunk-SEU6QHH4.js → chunk-6ZNSB3H6.js} +5 -17
  25. package/dist/chunk-6ZNSB3H6.js.map +1 -0
  26. package/dist/{chunk-7U6AB7DZ.js → chunk-AKKRXT23.js} +2 -2
  27. package/dist/{chunk-2PDBYF2O.js → chunk-AT2JJEKJ.js} +4 -4
  28. package/dist/chunk-AT2JJEKJ.js.map +1 -0
  29. package/dist/{chunk-OWLZONGX.js → chunk-BLBAQRBM.js} +2 -2
  30. package/dist/{chunk-XONZGK6J.js → chunk-BN4HRYAZ.js} +2 -2
  31. package/dist/{chunk-QVGEVZ5F.js → chunk-BQ6DHN4I.js} +3 -3
  32. package/dist/{chunk-LG2GUYRX.js → chunk-BYFXLDVV.js} +9 -9
  33. package/dist/{chunk-M4GO4ZJK.js → chunk-C25JXSOR.js} +137 -11
  34. package/dist/chunk-C25JXSOR.js.map +1 -0
  35. package/dist/{chunk-3TZUC4WS.js → chunk-CCDP6EPB.js} +13 -355
  36. package/dist/chunk-CCDP6EPB.js.map +1 -0
  37. package/dist/{chunk-QRHEAZ2Q.js → chunk-CUZLNGD5.js} +1 -1
  38. package/dist/{chunk-HXVRRJBD.js → chunk-DGBIHDVK.js} +5 -5
  39. package/dist/chunk-DSDXAKIP.js +50 -0
  40. package/dist/chunk-DSDXAKIP.js.map +1 -0
  41. package/dist/{chunk-JGOKAZNB.js → chunk-DZAF24PG.js} +5 -5
  42. package/dist/{chunk-NIKO2BBZ.js → chunk-DZFQVICS.js} +2 -2
  43. package/dist/chunk-DZFQVICS.js.map +1 -0
  44. package/dist/chunk-E23UGFVC.js +63 -0
  45. package/dist/chunk-E23UGFVC.js.map +1 -0
  46. package/dist/{chunk-YGMREQAK.js → chunk-EBKCYQ2D.js} +14 -14
  47. package/dist/chunk-EBKCYQ2D.js.map +1 -0
  48. package/dist/{chunk-TMR64XPL.js → chunk-EZNTORXE.js} +2 -2
  49. package/dist/{chunk-WCJJQV2D.js → chunk-FMNU7IUG.js} +3 -3
  50. package/dist/{chunk-H5GMROCB.js → chunk-FO6RNKKW.js} +8 -46
  51. package/dist/chunk-FO6RNKKW.js.map +1 -0
  52. package/dist/{chunk-YMUGBZN2.js → chunk-FQ5CHJR7.js} +1 -1
  53. package/dist/chunk-FQ5CHJR7.js.map +1 -0
  54. package/dist/{chunk-MQBFT2OT.js → chunk-FRMW23UK.js} +7 -7
  55. package/dist/chunk-FRMW23UK.js.map +1 -0
  56. package/dist/chunk-GJW4HX2O.js +1 -0
  57. package/dist/{chunk-JTIPVW4J.js → chunk-GP3UWP22.js} +4 -4
  58. package/dist/{chunk-DOZFU7OZ.js → chunk-GZACYEOB.js} +1 -1
  59. package/dist/chunk-GZACYEOB.js.map +1 -0
  60. package/dist/{chunk-XG7OZDOS.js → chunk-HFUAFR6B.js} +6 -6
  61. package/dist/{chunk-LN3MQFUE.js → chunk-IF6WNGAK.js} +9 -6
  62. package/dist/chunk-IF6WNGAK.js.map +1 -0
  63. package/dist/{chunk-ZX5FNWH7.js → chunk-IG6KUWBX.js} +2 -2
  64. package/dist/chunk-IG6KUWBX.js.map +1 -0
  65. package/dist/{chunk-VDTWFN2P.js → chunk-IMRB2C4O.js} +3 -3
  66. package/dist/{chunk-2BVW754E.js → chunk-ISRKW4YN.js} +3 -3
  67. package/dist/{chunk-P4NUJVWL.js → chunk-IXNCZTWA.js} +2 -2
  68. package/dist/{chunk-ZHZ4PET5.js → chunk-JIDLU57U.js} +3 -3
  69. package/dist/{chunk-PTT2NB46.js → chunk-JYJFGD2H.js} +2 -2
  70. package/dist/{chunk-XY6MNSAF.js → chunk-JYV4JJV2.js} +5 -5
  71. package/dist/{chunk-ZHMUFYZF.js → chunk-KBPU5M2E.js} +7 -7
  72. package/dist/{chunk-AZXEOEQK.js → chunk-KFRPNHWR.js} +4 -4
  73. package/dist/chunk-KFRPNHWR.js.map +1 -0
  74. package/dist/{chunk-ZDFU34XY.js → chunk-KPXM4WO6.js} +58 -54
  75. package/dist/chunk-KPXM4WO6.js.map +1 -0
  76. package/dist/{chunk-HA7P3BTB.js → chunk-KRCBZYTZ.js} +4 -4
  77. package/dist/{chunk-VNJMLOQS.js → chunk-KW42W6SV.js} +6 -6
  78. package/dist/{chunk-GQT6J4FJ.js → chunk-L3YYLT4E.js} +2 -2
  79. package/dist/chunk-L3YYLT4E.js.map +1 -0
  80. package/dist/{chunk-3GXDB3NQ.js → chunk-MANUDU7I.js} +6 -6
  81. package/dist/{chunk-YJ3TREAC.js → chunk-MHMLXJ3I.js} +2 -2
  82. package/dist/chunk-MHMLXJ3I.js.map +1 -0
  83. package/dist/{chunk-D4LAJ737.js → chunk-MSMJJB4J.js} +2 -2
  84. package/dist/chunk-MSMJJB4J.js.map +1 -0
  85. package/dist/{chunk-RM5EXCFF.js → chunk-MXUT7FTE.js} +2 -2
  86. package/dist/chunk-MXUT7FTE.js.map +1 -0
  87. package/dist/{chunk-IUATR5UE.js → chunk-N5PLUFH2.js} +5 -5
  88. package/dist/{chunk-C2V7AJO2.js → chunk-NEX7JCMO.js} +4 -4
  89. package/dist/{chunk-5HSSTOOG.js → chunk-NFZGZ4AK.js} +2 -2
  90. package/dist/{chunk-5ABOFAHN.js → chunk-NJ4DYYO5.js} +2 -2
  91. package/dist/chunk-NJ4DYYO5.js.map +1 -0
  92. package/dist/{chunk-2ZSC454H.js → chunk-NQSO4UAH.js} +8 -8
  93. package/dist/chunk-NQSO4UAH.js.map +1 -0
  94. package/dist/{chunk-GHEMAVTN.js → chunk-NYEFP7DY.js} +4 -4
  95. package/dist/chunk-NYEFP7DY.js.map +1 -0
  96. package/dist/{chunk-32467U5J.js → chunk-OBPVWOSQ.js} +4 -4
  97. package/dist/{chunk-6SSWOUUS.js → chunk-OLIWCCFM.js} +2 -5
  98. package/dist/{chunk-UNREYBZO.js → chunk-OLSARBZU.js} +2 -2
  99. package/dist/{chunk-V2R2VWER.js → chunk-PT4XLP6I.js} +12 -12
  100. package/dist/{chunk-V2R2VWER.js.map → chunk-PT4XLP6I.js.map} +1 -1
  101. package/dist/{chunk-LC7DSMHR.js → chunk-PTHKZWEH.js} +2 -14
  102. package/dist/{chunk-LC7DSMHR.js.map → chunk-PTHKZWEH.js.map} +1 -1
  103. package/dist/chunk-QADFHRQM.js +367 -0
  104. package/dist/chunk-QADFHRQM.js.map +1 -0
  105. package/dist/{chunk-7LP7FFJ2.js → chunk-QD46HPZG.js} +2 -2
  106. package/dist/{chunk-G4MFQXYX.js → chunk-QJNCB5SK.js} +2 -2
  107. package/dist/{chunk-6SYOHUHM.js → chunk-QZWTRENR.js} +2 -2
  108. package/dist/chunk-QZWTRENR.js.map +1 -0
  109. package/dist/{chunk-TSNRZSRC.js → chunk-RO5NM6UI.js} +2 -2
  110. package/dist/chunk-RO5NM6UI.js.map +1 -0
  111. package/dist/{chunk-MMVQ3SUO.js → chunk-RZPOZPZU.js} +8 -8
  112. package/dist/chunk-SGDPRCC4.js +1075 -0
  113. package/dist/chunk-SGDPRCC4.js.map +1 -0
  114. package/dist/{chunk-E7FSBI6I.js → chunk-SGQ4N5FS.js} +5 -5
  115. package/dist/{chunk-522MBPE5.js → chunk-SHEEBRZ4.js} +2 -2
  116. package/dist/{chunk-EPME33Y4.js → chunk-SHYIA73K.js} +6 -6
  117. package/dist/chunk-SKM35Y4Q.js +77 -0
  118. package/dist/chunk-SKM35Y4Q.js.map +1 -0
  119. package/dist/{chunk-MLCTPWSO.js → chunk-TE6LH6J2.js} +5 -5
  120. package/dist/chunk-TG634KCO.js +63 -0
  121. package/dist/chunk-TG634KCO.js.map +1 -0
  122. package/dist/{chunk-QVIZDLAR.js → chunk-TIVK6PRK.js} +9 -10
  123. package/dist/chunk-TIVK6PRK.js.map +1 -0
  124. package/dist/{chunk-JOCMXSR2.js → chunk-UADPR6F4.js} +3 -3
  125. package/dist/{chunk-SBOHNJUD.js → chunk-V6UQZA2H.js} +2 -2
  126. package/dist/chunk-VG2ZSFYD.js +32 -0
  127. package/dist/chunk-VG2ZSFYD.js.map +1 -0
  128. package/dist/{chunk-KCZAFDP5.js → chunk-VH6SOCXH.js} +2 -2
  129. package/dist/chunk-VSRSQ2CR.js +654 -0
  130. package/dist/chunk-VSRSQ2CR.js.map +1 -0
  131. package/dist/{chunk-4B3DL75F.js → chunk-W3G5REIU.js} +2 -2
  132. package/dist/{chunk-EGU4PWQW.js → chunk-W66AM5IB.js} +2 -2
  133. package/dist/chunk-W66AM5IB.js.map +1 -0
  134. package/dist/{chunk-MPPWL64H.js → chunk-WBKZUO5V.js} +3 -3
  135. package/dist/{chunk-WWBC4KLB.js → chunk-WO4T4OD5.js} +2 -2
  136. package/dist/{chunk-7IQWHYL2.js → chunk-WZ3NCMK6.js} +6 -5
  137. package/dist/{chunk-BAAUFCJK.js → chunk-X4MVWPHV.js} +3 -3
  138. package/dist/{chunk-HVPW6PCX.js → chunk-XIDQKFZF.js} +3 -3
  139. package/dist/{chunk-EWPS35AR.js → chunk-XOBHRD2M.js} +185 -333
  140. package/dist/chunk-XOBHRD2M.js.map +1 -0
  141. package/dist/chunk-Y2NBBT6K.js +18 -0
  142. package/dist/chunk-Y2NBBT6K.js.map +1 -0
  143. package/dist/{chunk-OWOT7CFC.js → chunk-Y6B6HVKC.js} +2 -2
  144. package/dist/{chunk-ICYC5YNI.js → chunk-Y6VZQGGH.js} +6 -6
  145. package/dist/{chunk-ZM72UO3Y.js → chunk-ZFUFAHZ3.js} +4 -4
  146. package/dist/{chunk-PWWWMRT7.js → chunk-ZTLOXFPB.js} +2 -2
  147. package/dist/chunk-ZTLOXFPB.js.map +1 -0
  148. package/dist/{walk-JXMWKKQW.js → chunk-ZWBKDKXC.js} +4 -13
  149. package/dist/{walk-JXMWKKQW.js.map → chunk-ZWBKDKXC.js.map} +1 -1
  150. package/dist/classified/index.js +5 -5
  151. package/dist/{classified-marker-SVDRXLD3.js → classified-marker-EOOSMWFC.js} +3 -3
  152. package/dist/collection-facade-TTRF5NFJ.js +45 -0
  153. package/dist/{computed-33DRJDOC.js → computed-AB45PS4V.js} +3 -3
  154. package/dist/consent/index.js +9 -9
  155. package/dist/{cover-ADBCTIKN.js → cover/index.js} +7 -6
  156. package/dist/custody/index.js +26 -0
  157. package/dist/{dead-filter-HKDMTMVY.js → dead-filter-6DYY7S64.js} +2 -2
  158. package/dist/{chunk-ZF572E2M.js → delegation-ONOZVPIP.js} +12 -6
  159. package/dist/{chunk-ZF572E2M.js.map → delegation-ONOZVPIP.js.map} +1 -1
  160. package/dist/derivations/index.js +12 -12
  161. package/dist/derive-IGGVSUPH.js +22 -0
  162. package/dist/directory/index.js +46 -0
  163. package/dist/{dispatch-SPMYNXNW.js → dispatch-7T45NN7C.js} +18 -18
  164. package/dist/{dispatch-V5MSMQYX.js → dispatch-RPTLK7LJ.js} +5 -5
  165. package/dist/{enclave-ZA7C3H2L.js → enclave-CLJVSDFG.js} +9 -9
  166. package/dist/executor-IEBLTBCW.js +9 -0
  167. package/dist/executor-RM7XWQDU.js +9 -0
  168. package/dist/executor-XZYM4KHT.js +28 -0
  169. package/dist/export-accessible-24XCCD3A.js +23 -0
  170. package/dist/extract-partition-H2TPEEOF.js +38 -0
  171. package/dist/{fanout-sidecar-HRMHC34B.js → fanout-sidecar-TV7CXAJ6.js} +9 -9
  172. package/dist/find-OZMTRIK3.js +11 -0
  173. package/dist/forget/index.js +11 -11
  174. package/dist/forget/index.js.map +1 -1
  175. package/dist/guards/index.js +4 -4
  176. package/dist/history/index.js +12 -12
  177. package/dist/i18n/index.js +14 -14
  178. package/dist/index.d.ts +14 -17
  179. package/dist/index.js +192 -1968
  180. package/dist/index.js.map +1 -1
  181. package/dist/indexing/index.js +2 -2
  182. package/dist/indexing/index.js.map +1 -1
  183. package/dist/introspection/index.js +28 -0
  184. package/dist/issue-55HJE7JF.js +19 -0
  185. package/dist/kernel/collection-config.d.ts +1 -1
  186. package/dist/kernel/collection.d.ts +2 -2
  187. package/dist/kernel/errors.d.ts +2 -2
  188. package/dist/kernel/noydb.d.ts +1 -1
  189. package/dist/kernel/types.d.ts +20 -20
  190. package/dist/kernel/vault.d.ts +10 -10
  191. package/dist/{ledger-K6JBFL3Z.js → ledger-XY6NP3J2.js} +11 -11
  192. package/dist/liberate-LXOJ2EMB.js +24 -0
  193. package/dist/{link-set-XVZY2ODC.js → link-set-POQB7BU5.js} +11 -11
  194. package/dist/materialized-views/index.js +19 -19
  195. package/dist/money/index.js +31 -0
  196. package/dist/noydb-KXS35UJS.js +82 -0
  197. package/dist/overlay-views/index.js +4 -4
  198. package/dist/periods/index.js +13 -13
  199. package/dist/pod/index.js +11 -11
  200. package/dist/{policy-QWGJB7P7.js → policy/index.js} +6 -6
  201. package/dist/port/with/blob-strategy.d.ts +15 -5
  202. package/dist/port/with/strategies.d.ts +9 -9
  203. package/dist/portability/index.js +8 -8
  204. package/dist/{post-register-5VHHVFJY.js → post-register-URQANI3B.js} +6 -6
  205. package/dist/query/index.js +3 -3
  206. package/dist/reduce/index.js +4 -4
  207. package/dist/register-5W6CG4RM.js +25 -0
  208. package/dist/registry-7Y5WF7GS.js +9 -0
  209. package/dist/{registry-VW6P6A3J.js → registry-BWD2ED52.js} +2 -2
  210. package/dist/registry-MCSGBZXI.js +18 -0
  211. package/dist/registry-UJFP3NWF.js +19 -0
  212. package/dist/request-withdrawal-IWYDM4SO.js +31 -0
  213. package/dist/{reveal-7OOT5XPD.js → reveal-BXZGWIOP.js} +6 -6
  214. package/dist/revoke-TINYPHYY.js +24 -0
  215. package/dist/satellites/index.js +1 -1
  216. package/dist/schema-update/index.js +26 -0
  217. package/dist/schema-update/index.js.map +1 -0
  218. package/dist/sealed-record/index.js +12 -12
  219. package/dist/search/index.js +36 -0
  220. package/dist/search/index.js.map +1 -0
  221. package/dist/{seed-GVOI6QP6.js → seed-F7YYQTRC.js} +11 -11
  222. package/dist/sequence/index.js +30 -0
  223. package/dist/sequence/index.js.map +1 -0
  224. package/dist/session/index.js +9 -9
  225. package/dist/shadow/index.js +2 -2
  226. package/dist/signer-WMZKCNKC.js +25 -0
  227. package/dist/signer-WMZKCNKC.js.map +1 -0
  228. package/dist/snapshots/index.js +11 -11
  229. package/dist/snapshots/index.js.map +1 -1
  230. package/dist/{stale-BJO2WIN7.js → stale-JOE7GBAE.js} +10 -10
  231. package/dist/stale-JOE7GBAE.js.map +1 -0
  232. package/dist/storage-B3WBKXKT.js +23 -0
  233. package/dist/storage-B3WBKXKT.js.map +1 -0
  234. package/dist/store/index.js +22 -0
  235. package/dist/store/index.js.map +1 -0
  236. package/dist/{store-coordination-provider-DX5HECK3.js → store-coordination-provider-5LX2UFU2.js} +3 -3
  237. package/dist/sync/index.js +10 -10
  238. package/dist/team/index.js +29 -20
  239. package/dist/tiers/index.js +10 -10
  240. package/dist/to/index.js +1 -1
  241. package/dist/{tx → transactions}/index.js +3 -3
  242. package/dist/{tx → transactions}/index.js.map +1 -1
  243. package/dist/util/index.js +1 -1
  244. package/dist/{verify-5X37OXRY.js → verify-7XWHJWUN.js} +5 -5
  245. package/dist/via/blob/active.d.ts +7 -18
  246. package/dist/via/blob/binding.d.ts +1 -1
  247. package/dist/via/blob/index.d.ts +2 -2
  248. package/dist/walk-6OHAWGBS.js +21 -0
  249. package/dist/walk-6OHAWGBS.js.map +1 -0
  250. package/dist/with-audit/forget/active.d.ts +3 -3
  251. package/dist/with-audit/forget/index.d.ts +4 -4
  252. package/dist/with-audit/forget/strategy.d.ts +3 -3
  253. package/dist/with-audit/guards/executor.d.ts +4 -4
  254. package/dist/with-audit/guards/immutable-guard.d.ts +3 -3
  255. package/dist/with-audit/guards/index.d.ts +1 -1
  256. package/dist/with-audit/guards/registry.d.ts +3 -3
  257. package/dist/with-audit/guards/transition-guard.d.ts +3 -3
  258. package/dist/with-audit/guards/types.d.ts +10 -10
  259. package/dist/with-audit/guards/with-guard.d.ts +2 -2
  260. package/dist/with-commit/numbering/descriptor.d.ts +16 -6
  261. package/dist/with-commit/tx/active.d.ts +5 -5
  262. package/dist/with-commit/tx/index.d.ts +2 -2
  263. package/dist/with-commit/tx/invariants.d.ts +1 -1
  264. package/dist/with-commit/tx/strategy.d.ts +3 -3
  265. package/dist/with-fork/snapshots/active.d.ts +2 -2
  266. package/dist/with-fork/snapshots/index.d.ts +1 -1
  267. package/dist/with-fork/snapshots/noydb-facade.d.ts +3 -3
  268. package/dist/with-fork/snapshots/strategy.d.ts +2 -2
  269. package/dist/with-formula/derivations/executor.d.ts +2 -2
  270. package/dist/with-formula/derivations/index.d.ts +2 -1
  271. package/dist/with-formula/derivations/registry.d.ts +3 -3
  272. package/dist/with-formula/derivations/stale.d.ts +2 -2
  273. package/dist/with-formula/derivations/types.d.ts +3 -3
  274. package/dist/with-formula/derivations/with-derivation.d.ts +2 -2
  275. package/dist/with-formula/derivations/with-rollup.d.ts +15 -8
  276. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +3 -3
  277. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  278. package/dist/with-formula/materialized-views/registry.d.ts +4 -4
  279. package/dist/with-formula/materialized-views/types.d.ts +4 -4
  280. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +2 -2
  281. package/dist/with-formula/overlay-views/index.d.ts +1 -1
  282. package/dist/with-formula/overlay-views/registry.d.ts +4 -4
  283. package/dist/with-formula/overlay-views/types.d.ts +3 -3
  284. package/dist/with-formula/overlay-views/virtual-collection.d.ts +2 -2
  285. package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +2 -2
  286. package/dist/with-lookup/indexing/active.d.ts +5 -5
  287. package/dist/with-lookup/indexing/index.d.ts +1 -1
  288. package/dist/with-lookup/indexing/strategy.d.ts +3 -3
  289. package/dist/with-lookup/search/build-docs.d.ts +7 -2
  290. package/dist/with-lookup/search/index.d.ts +1 -1
  291. package/dist/with-party/directory/cover/index.d.ts +1 -0
  292. package/dist/with-party/directory/index.d.ts +2 -0
  293. package/dist/with-party/team/index.d.ts +2 -0
  294. package/dist/with-party/team/keyring.d.ts +49 -20
  295. package/dist/with-party/team/noydb-facade.d.ts +2 -2
  296. package/dist/with-shape/blobs/blob-set.d.ts +1 -1
  297. package/dist/with-shape/introspection/index.d.ts +6 -0
  298. package/dist/with-shape/schema-update/index.d.ts +1 -0
  299. package/dist/with-store/index.d.ts +3 -2
  300. package/dist/withdraw-accessible-DEUCOO4F.js +28 -0
  301. package/dist/withdraw-accessible-DEUCOO4F.js.map +1 -0
  302. package/package.json +45 -5
  303. package/dist/api-5QVQX4HG.js +0 -20
  304. package/dist/chunk-2PDBYF2O.js.map +0 -1
  305. package/dist/chunk-2ZSC454H.js.map +0 -1
  306. package/dist/chunk-3S2YNMUS.js +0 -134
  307. package/dist/chunk-3S2YNMUS.js.map +0 -1
  308. package/dist/chunk-3TZUC4WS.js.map +0 -1
  309. package/dist/chunk-5ABOFAHN.js.map +0 -1
  310. package/dist/chunk-6SYOHUHM.js.map +0 -1
  311. package/dist/chunk-AZXEOEQK.js.map +0 -1
  312. package/dist/chunk-D4LAJ737.js.map +0 -1
  313. package/dist/chunk-DOZFU7OZ.js.map +0 -1
  314. package/dist/chunk-EGU4PWQW.js.map +0 -1
  315. package/dist/chunk-EWPS35AR.js.map +0 -1
  316. package/dist/chunk-GHEMAVTN.js.map +0 -1
  317. package/dist/chunk-GQT6J4FJ.js.map +0 -1
  318. package/dist/chunk-H5GMROCB.js.map +0 -1
  319. package/dist/chunk-LN3MQFUE.js.map +0 -1
  320. package/dist/chunk-M4GO4ZJK.js.map +0 -1
  321. package/dist/chunk-MQBFT2OT.js.map +0 -1
  322. package/dist/chunk-NIKO2BBZ.js.map +0 -1
  323. package/dist/chunk-PWWWMRT7.js.map +0 -1
  324. package/dist/chunk-QVIZDLAR.js.map +0 -1
  325. package/dist/chunk-RM5EXCFF.js.map +0 -1
  326. package/dist/chunk-SEU6QHH4.js.map +0 -1
  327. package/dist/chunk-TSNRZSRC.js.map +0 -1
  328. package/dist/chunk-YGMREQAK.js.map +0 -1
  329. package/dist/chunk-YJ3TREAC.js.map +0 -1
  330. package/dist/chunk-YMUGBZN2.js.map +0 -1
  331. package/dist/chunk-ZDFU34XY.js.map +0 -1
  332. package/dist/chunk-ZGEFBDPR.js.map +0 -1
  333. package/dist/chunk-ZX5FNWH7.js.map +0 -1
  334. package/dist/collection-facade-S5PPKZD5.js +0 -44
  335. package/dist/delegation-EV7LKJPH.js +0 -25
  336. package/dist/derive-5LDJW76F.js +0 -21
  337. package/dist/executor-FCJEH3FU.js +0 -9
  338. package/dist/executor-OHET7TF7.js +0 -9
  339. package/dist/executor-SVHAJZ4A.js +0 -28
  340. package/dist/export-accessible-S35YKIBL.js +0 -23
  341. package/dist/extract-partition-UVHAM5WZ.js +0 -38
  342. package/dist/find-LEBUXVL7.js +0 -11
  343. package/dist/issue-5X3SMCF4.js +0 -19
  344. package/dist/liberate-NHTCKBU4.js +0 -24
  345. package/dist/noydb-TI3RFU6M.js +0 -78
  346. package/dist/register-CEX7R7NE.js +0 -23
  347. package/dist/registry-7CZWF3EQ.js +0 -9
  348. package/dist/registry-DIKMRXUC.js +0 -19
  349. package/dist/registry-EWIB5NTI.js +0 -18
  350. package/dist/request-withdrawal-AAG57QO4.js +0 -31
  351. package/dist/revoke-U5LCIJMF.js +0 -24
  352. package/dist/signer-NAA2OX7H.js +0 -25
  353. package/dist/storage-FL7XXZTN.js +0 -23
  354. package/dist/withdraw-accessible-GO6KQJVM.js +0 -28
  355. /package/dist/{api-5QVQX4HG.js.map → api-3NKVNZPM.js.map} +0 -0
  356. /package/dist/{backup-USYSNCYM.js.map → backup-PTSVXDDW.js.map} +0 -0
  357. /package/dist/{chunk-5WLDZZ6S.js.map → chunk-35NMVJ7I.js.map} +0 -0
  358. /package/dist/{chunk-NA374QG7.js.map → chunk-3XKESW5E.js.map} +0 -0
  359. /package/dist/{chunk-MUPZ6IZX.js.map → chunk-4JQK3L4V.js.map} +0 -0
  360. /package/dist/{chunk-Z4D3YGAB.js.map → chunk-4ZKNC6A6.js.map} +0 -0
  361. /package/dist/{chunk-ONB627HU.js.map → chunk-55LX6FSX.js.map} +0 -0
  362. /package/dist/{chunk-M7W2KYTL.js.map → chunk-56IIVAEO.js.map} +0 -0
  363. /package/dist/{chunk-FHHYCBBP.js.map → chunk-5DRROK5W.js.map} +0 -0
  364. /package/dist/{chunk-GTNRMJYH.js.map → chunk-5GQEU4DN.js.map} +0 -0
  365. /package/dist/{chunk-XSOGLHGY.js.map → chunk-6L3DKWRY.js.map} +0 -0
  366. /package/dist/{chunk-44Y3P5U6.js.map → chunk-6M2I3DKF.js.map} +0 -0
  367. /package/dist/{chunk-HDF5R2K6.js.map → chunk-6R6Q3MRN.js.map} +0 -0
  368. /package/dist/{chunk-ZUDAK436.js.map → chunk-6UBZ6I5Z.js.map} +0 -0
  369. /package/dist/{chunk-7U6AB7DZ.js.map → chunk-AKKRXT23.js.map} +0 -0
  370. /package/dist/{chunk-OWLZONGX.js.map → chunk-BLBAQRBM.js.map} +0 -0
  371. /package/dist/{chunk-XONZGK6J.js.map → chunk-BN4HRYAZ.js.map} +0 -0
  372. /package/dist/{chunk-QVGEVZ5F.js.map → chunk-BQ6DHN4I.js.map} +0 -0
  373. /package/dist/{chunk-LG2GUYRX.js.map → chunk-BYFXLDVV.js.map} +0 -0
  374. /package/dist/{chunk-QRHEAZ2Q.js.map → chunk-CUZLNGD5.js.map} +0 -0
  375. /package/dist/{chunk-HXVRRJBD.js.map → chunk-DGBIHDVK.js.map} +0 -0
  376. /package/dist/{chunk-JGOKAZNB.js.map → chunk-DZAF24PG.js.map} +0 -0
  377. /package/dist/{chunk-TMR64XPL.js.map → chunk-EZNTORXE.js.map} +0 -0
  378. /package/dist/{chunk-WCJJQV2D.js.map → chunk-FMNU7IUG.js.map} +0 -0
  379. /package/dist/{collection-facade-S5PPKZD5.js.map → chunk-GJW4HX2O.js.map} +0 -0
  380. /package/dist/{chunk-JTIPVW4J.js.map → chunk-GP3UWP22.js.map} +0 -0
  381. /package/dist/{chunk-XG7OZDOS.js.map → chunk-HFUAFR6B.js.map} +0 -0
  382. /package/dist/{chunk-VDTWFN2P.js.map → chunk-IMRB2C4O.js.map} +0 -0
  383. /package/dist/{chunk-2BVW754E.js.map → chunk-ISRKW4YN.js.map} +0 -0
  384. /package/dist/{chunk-P4NUJVWL.js.map → chunk-IXNCZTWA.js.map} +0 -0
  385. /package/dist/{chunk-ZHZ4PET5.js.map → chunk-JIDLU57U.js.map} +0 -0
  386. /package/dist/{chunk-PTT2NB46.js.map → chunk-JYJFGD2H.js.map} +0 -0
  387. /package/dist/{chunk-XY6MNSAF.js.map → chunk-JYV4JJV2.js.map} +0 -0
  388. /package/dist/{chunk-ZHMUFYZF.js.map → chunk-KBPU5M2E.js.map} +0 -0
  389. /package/dist/{chunk-HA7P3BTB.js.map → chunk-KRCBZYTZ.js.map} +0 -0
  390. /package/dist/{chunk-VNJMLOQS.js.map → chunk-KW42W6SV.js.map} +0 -0
  391. /package/dist/{chunk-3GXDB3NQ.js.map → chunk-MANUDU7I.js.map} +0 -0
  392. /package/dist/{chunk-IUATR5UE.js.map → chunk-N5PLUFH2.js.map} +0 -0
  393. /package/dist/{chunk-C2V7AJO2.js.map → chunk-NEX7JCMO.js.map} +0 -0
  394. /package/dist/{chunk-5HSSTOOG.js.map → chunk-NFZGZ4AK.js.map} +0 -0
  395. /package/dist/{chunk-32467U5J.js.map → chunk-OBPVWOSQ.js.map} +0 -0
  396. /package/dist/{chunk-6SSWOUUS.js.map → chunk-OLIWCCFM.js.map} +0 -0
  397. /package/dist/{chunk-UNREYBZO.js.map → chunk-OLSARBZU.js.map} +0 -0
  398. /package/dist/{chunk-7LP7FFJ2.js.map → chunk-QD46HPZG.js.map} +0 -0
  399. /package/dist/{chunk-G4MFQXYX.js.map → chunk-QJNCB5SK.js.map} +0 -0
  400. /package/dist/{chunk-MMVQ3SUO.js.map → chunk-RZPOZPZU.js.map} +0 -0
  401. /package/dist/{chunk-E7FSBI6I.js.map → chunk-SGQ4N5FS.js.map} +0 -0
  402. /package/dist/{chunk-522MBPE5.js.map → chunk-SHEEBRZ4.js.map} +0 -0
  403. /package/dist/{chunk-EPME33Y4.js.map → chunk-SHYIA73K.js.map} +0 -0
  404. /package/dist/{chunk-MLCTPWSO.js.map → chunk-TE6LH6J2.js.map} +0 -0
  405. /package/dist/{chunk-JOCMXSR2.js.map → chunk-UADPR6F4.js.map} +0 -0
  406. /package/dist/{chunk-SBOHNJUD.js.map → chunk-V6UQZA2H.js.map} +0 -0
  407. /package/dist/{chunk-KCZAFDP5.js.map → chunk-VH6SOCXH.js.map} +0 -0
  408. /package/dist/{chunk-4B3DL75F.js.map → chunk-W3G5REIU.js.map} +0 -0
  409. /package/dist/{chunk-MPPWL64H.js.map → chunk-WBKZUO5V.js.map} +0 -0
  410. /package/dist/{chunk-WWBC4KLB.js.map → chunk-WO4T4OD5.js.map} +0 -0
  411. /package/dist/{chunk-7IQWHYL2.js.map → chunk-WZ3NCMK6.js.map} +0 -0
  412. /package/dist/{chunk-BAAUFCJK.js.map → chunk-X4MVWPHV.js.map} +0 -0
  413. /package/dist/{chunk-HVPW6PCX.js.map → chunk-XIDQKFZF.js.map} +0 -0
  414. /package/dist/{chunk-OWOT7CFC.js.map → chunk-Y6B6HVKC.js.map} +0 -0
  415. /package/dist/{chunk-ICYC5YNI.js.map → chunk-Y6VZQGGH.js.map} +0 -0
  416. /package/dist/{chunk-ZM72UO3Y.js.map → chunk-ZFUFAHZ3.js.map} +0 -0
  417. /package/dist/{classified-marker-SVDRXLD3.js.map → classified-marker-EOOSMWFC.js.map} +0 -0
  418. /package/dist/{computed-33DRJDOC.js.map → collection-facade-TTRF5NFJ.js.map} +0 -0
  419. /package/dist/{cover-ADBCTIKN.js.map → computed-AB45PS4V.js.map} +0 -0
  420. /package/dist/{delegation-EV7LKJPH.js.map → cover/index.js.map} +0 -0
  421. /package/dist/{derive-5LDJW76F.js.map → custody/index.js.map} +0 -0
  422. /package/dist/{dead-filter-HKDMTMVY.js.map → dead-filter-6DYY7S64.js.map} +0 -0
  423. /package/dist/{enclave-ZA7C3H2L.js.map → derive-IGGVSUPH.js.map} +0 -0
  424. /package/dist/{executor-FCJEH3FU.js.map → directory/index.js.map} +0 -0
  425. /package/dist/{dispatch-SPMYNXNW.js.map → dispatch-7T45NN7C.js.map} +0 -0
  426. /package/dist/{dispatch-V5MSMQYX.js.map → dispatch-RPTLK7LJ.js.map} +0 -0
  427. /package/dist/{executor-OHET7TF7.js.map → enclave-CLJVSDFG.js.map} +0 -0
  428. /package/dist/{executor-SVHAJZ4A.js.map → executor-IEBLTBCW.js.map} +0 -0
  429. /package/dist/{export-accessible-S35YKIBL.js.map → executor-RM7XWQDU.js.map} +0 -0
  430. /package/dist/{extract-partition-UVHAM5WZ.js.map → executor-XZYM4KHT.js.map} +0 -0
  431. /package/dist/{find-LEBUXVL7.js.map → export-accessible-24XCCD3A.js.map} +0 -0
  432. /package/dist/{issue-5X3SMCF4.js.map → extract-partition-H2TPEEOF.js.map} +0 -0
  433. /package/dist/{fanout-sidecar-HRMHC34B.js.map → fanout-sidecar-TV7CXAJ6.js.map} +0 -0
  434. /package/dist/{ledger-K6JBFL3Z.js.map → find-OZMTRIK3.js.map} +0 -0
  435. /package/dist/{liberate-NHTCKBU4.js.map → introspection/index.js.map} +0 -0
  436. /package/dist/{link-set-XVZY2ODC.js.map → issue-55HJE7JF.js.map} +0 -0
  437. /package/dist/{noydb-TI3RFU6M.js.map → ledger-XY6NP3J2.js.map} +0 -0
  438. /package/dist/{policy-QWGJB7P7.js.map → liberate-LXOJ2EMB.js.map} +0 -0
  439. /package/dist/{register-CEX7R7NE.js.map → link-set-POQB7BU5.js.map} +0 -0
  440. /package/dist/{registry-7CZWF3EQ.js.map → money/index.js.map} +0 -0
  441. /package/dist/{registry-DIKMRXUC.js.map → noydb-KXS35UJS.js.map} +0 -0
  442. /package/dist/{registry-EWIB5NTI.js.map → policy/index.js.map} +0 -0
  443. /package/dist/{post-register-5VHHVFJY.js.map → post-register-URQANI3B.js.map} +0 -0
  444. /package/dist/{registry-VW6P6A3J.js.map → register-5W6CG4RM.js.map} +0 -0
  445. /package/dist/{request-withdrawal-AAG57QO4.js.map → registry-7Y5WF7GS.js.map} +0 -0
  446. /package/dist/{revoke-U5LCIJMF.js.map → registry-BWD2ED52.js.map} +0 -0
  447. /package/dist/{signer-NAA2OX7H.js.map → registry-MCSGBZXI.js.map} +0 -0
  448. /package/dist/{stale-BJO2WIN7.js.map → registry-UJFP3NWF.js.map} +0 -0
  449. /package/dist/{storage-FL7XXZTN.js.map → request-withdrawal-IWYDM4SO.js.map} +0 -0
  450. /package/dist/{reveal-7OOT5XPD.js.map → reveal-BXZGWIOP.js.map} +0 -0
  451. /package/dist/{withdraw-accessible-GO6KQJVM.js.map → revoke-TINYPHYY.js.map} +0 -0
  452. /package/dist/{seed-GVOI6QP6.js.map → seed-F7YYQTRC.js.map} +0 -0
  453. /package/dist/{store-coordination-provider-DX5HECK3.js.map → store-coordination-provider-5LX2UFU2.js.map} +0 -0
  454. /package/dist/{verify-5X37OXRY.js.map → verify-7XWHJWUN.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/with-commit/tx/dry-run.ts","../../src/with-commit/tx/active.ts"],"sourcesContent":["/**\n * Dry-run transactions. Runs the tx body to STAGE ops, then builds\n * the directly-affected diff (before = current committed via collection.get,\n * after = staged record) and collects guard violations — without executing\n * phase 2. No adapter writes, no write-hooks, no commit. MV/derivation\n * cascade is NOT simulated (v2). Mirrors the guard loop in\n * `Collection._putInternal` — keep the two in sync.\n */\nimport type { Noydb } from '../../kernel/noydb.js'\nimport { TxContext, type StagedOp } from './transaction.js'\n\nimport { lazy } from '../../kernel/lazy.js'\n\n/** #846c — one memoized binding instead of a cast at the call site. */\nconst loadGuardExecutor = lazy(() => import('../../with-audit/guards/executor.js'))\n\nexport interface AffectedDocument {\n readonly vault: string\n readonly op: 'create' | 'update' | 'delete'\n readonly collection: string\n readonly docId: string\n readonly before: unknown // current committed record; null when creating\n readonly after: unknown // staged record; null when deleting\n}\n\nexport interface GuardViolation {\n readonly vault: string\n readonly collection: string\n readonly docId: string\n readonly message: string\n}\n\nexport interface DryRunResult {\n readonly affected: ReadonlyArray<AffectedDocument>\n readonly guardViolations: ReadonlyArray<GuardViolation>\n}\n\nconst SEP = ' '\nconst keyOf = (op: StagedOp) => `${op.vaultName}${SEP}${op.collectionName}${SEP}${op.id}`\n\nexport async function runDryRun(\n db: Noydb,\n fn: (tx: TxContext) => unknown,\n): Promise<DryRunResult> {\n const ctx = new TxContext(db)\n await fn(ctx) // stage ops (reads see staged writes via TxCollection); nothing committed\n\n // Dedup by (vault, collection, id) — last staged op wins.\n const lastOp = new Map<string, StagedOp>()\n for (const op of ctx._ops) lastOp.set(keyOf(op), op)\n\n const affected: AffectedDocument[] = []\n const guardViolations: GuardViolation[] = []\n\n for (const op of lastOp.values()) {\n const v = db.vault(op.vaultName)\n const coll = v.collection(op.collectionName)\n const before = await coll.get(op.id)\n\n if (op.type === 'delete') {\n affected.push({ vault: op.vaultName, op: 'delete', collection: op.collectionName, docId: op.id, before, after: null })\n continue\n }\n\n const after = op.record ?? null\n affected.push({\n vault: op.vaultName,\n op: before === null ? 'create' : 'update',\n collection: op.collectionName,\n docId: op.id,\n before,\n after,\n })\n\n // Guard violations — run the SAME checks Collection._putInternal does,\n // with the SAME ctx (existing + read-only facade + userId + role), but\n // collect the first thrown error instead of aborting.\n const registry = v._getGuardRegistry()\n if (!registry) continue\n const guards = registry.guardsFor(op.collectionName)\n if (guards.length === 0) continue\n const facade = v._getReadOnlyFacade()\n if (!facade) continue\n const gctx = { existing: before as Record<string, unknown> | null, vault: facade, userId: v.userId, role: v.role }\n try {\n await registry.runChecks(op.collectionName, after as Record<string, unknown>, gctx)\n const { GuardExecutor } = await loadGuardExecutor()\n for (const g of guards) {\n await GuardExecutor.checkFrozenFields(g, op.id, before as Record<string, unknown> | null, after as Record<string, unknown>)\n }\n } catch (err) {\n guardViolations.push({\n vault: op.vaultName,\n collection: op.collectionName,\n docId: op.id,\n message: err instanceof Error ? err.message : String(err),\n })\n }\n }\n\n return { affected, guardViolations }\n}\n","/**\n * Active transactions strategy. Only reachable via `@noy-db/hub/tx`.\n */\n\nimport { runTransaction } from './transaction.js'\nimport { runDryRun } from './dry-run.js'\nimport type { TxStrategy } from './strategy.js'\nimport type { TransactionInvariant } from './invariants.js'\n\n/**\n * Options for {@link withTransactions}. Currently only commit-time\n * changeset `invariants` (see {@link TransactionInvariant}).\n */\nexport interface TransactionStrategyOptions {\n /**\n * Commit-time set-level invariants run over the changeset on every\n * commit (ordinary AND amendment). See {@link TransactionInvariant}.\n */\n invariants?: ReadonlyArray<TransactionInvariant>\n}\n\n/**\n * Build the default transactions strategy. Pass into\n * `createNoydb({ txStrategy: withTransactions() })` to enable\n * `db.transaction(fn)` (and `db.transaction({ dryRun: true }, fn)`).\n *\n * Supply `{ invariants }` to register commit-time changeset invariants —\n * set-level constraints that fire after the writes commit and revert the\n * transaction on a throw. Unlike `amendment.invariant`, these run for\n * ordinary `db.transaction(fn)` calls (and amendments) with no role gate.\n */\nexport function withTransactions(opts?: TransactionStrategyOptions): TxStrategy {\n const invariants = opts?.invariants ?? []\n return {\n runTransaction: (db, fn, options) => runTransaction(db, fn, options, invariants),\n runDryRun,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,oBAAoB,KAAK,MAAM,OAAO,yBAAqC,CAAC;AAuBlF,IAAM,MAAM;AACZ,IAAM,QAAQ,CAAC,OAAiB,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,GAAG,EAAE;AAEvF,eAAsB,UACpB,IACA,IACuB;AACvB,QAAM,MAAM,IAAI,UAAU,EAAE;AAC5B,QAAM,GAAG,GAAG;AAGZ,QAAM,SAAS,oBAAI,IAAsB;AACzC,aAAW,MAAM,IAAI,KAAM,QAAO,IAAI,MAAM,EAAE,GAAG,EAAE;AAEnD,QAAM,WAA+B,CAAC;AACtC,QAAM,kBAAoC,CAAC;AAE3C,aAAW,MAAM,OAAO,OAAO,GAAG;AAChC,UAAM,IAAI,GAAG,MAAM,GAAG,SAAS;AAC/B,UAAM,OAAO,EAAE,WAAW,GAAG,cAAc;AAC3C,UAAM,SAAS,MAAM,KAAK,IAAI,GAAG,EAAE;AAEnC,QAAI,GAAG,SAAS,UAAU;AACxB,eAAS,KAAK,EAAE,OAAO,GAAG,WAAW,IAAI,UAAU,YAAY,GAAG,gBAAgB,OAAO,GAAG,IAAI,QAAQ,OAAO,KAAK,CAAC;AACrH;AAAA,IACF;AAEA,UAAM,QAAQ,GAAG,UAAU;AAC3B,aAAS,KAAK;AAAA,MACZ,OAAO,GAAG;AAAA,MACV,IAAI,WAAW,OAAO,WAAW;AAAA,MACjC,YAAY,GAAG;AAAA,MACf,OAAO,GAAG;AAAA,MACV;AAAA,MACA;AAAA,IACF,CAAC;AAKD,UAAM,WAAW,EAAE,kBAAkB;AACrC,QAAI,CAAC,SAAU;AACf,UAAM,SAAS,SAAS,UAAU,GAAG,cAAc;AACnD,QAAI,OAAO,WAAW,EAAG;AACzB,UAAM,SAAS,EAAE,mBAAmB;AACpC,QAAI,CAAC,OAAQ;AACb,UAAM,OAAO,EAAE,UAAU,QAA0C,OAAO,QAAQ,QAAQ,EAAE,QAAQ,MAAM,EAAE,KAAK;AACjH,QAAI;AACF,YAAM,SAAS,UAAU,GAAG,gBAAgB,OAAkC,IAAI;AAClF,YAAM,EAAE,cAAc,IAAI,MAAM,kBAAkB;AAClD,iBAAW,KAAK,QAAQ;AACtB,cAAM,cAAc,kBAAkB,GAAG,GAAG,IAAI,QAA0C,KAAgC;AAAA,MAC5H;AAAA,IACF,SAAS,KAAK;AACZ,sBAAgB,KAAK;AAAA,QACnB,OAAO,GAAG;AAAA,QACV,YAAY,GAAG;AAAA,QACf,OAAO,GAAG;AAAA,QACV,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,EAAE,UAAU,gBAAgB;AACrC;;;ACtEO,SAAS,iBAAiB,MAA+C;AAC9E,QAAM,aAAa,MAAM,cAAc,CAAC;AACxC,SAAO;AAAA,IACL,gBAAgB,CAAC,IAAI,IAAI,YAAY,eAAe,IAAI,IAAI,SAAS,UAAU;AAAA,IAC/E;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/with-commit/tx/dry-run.ts","../../src/with-commit/tx/active.ts"],"sourcesContent":["/**\n * Dry-run transactions. Runs the tx body to STAGE ops, then builds\n * the directly-affected diff (before = current committed via collection.get,\n * after = staged record) and collects guard violations — without executing\n * phase 2. No adapter writes, no write-hooks, no commit. MV/derivation\n * cascade is NOT simulated (v2). Mirrors the guard loop in\n * `Collection._putInternal` — keep the two in sync.\n */\nimport type { Noydb } from '../../kernel/noydb.js'\nimport { TxContext, type StagedOp } from './transaction.js'\n\nimport { lazy } from '../../kernel/lazy.js'\n\n/** #846c — one memoized binding instead of a cast at the call site. */\nconst loadGuardExecutor = lazy(() => import('../../with-audit/guards/executor.js'))\n\nexport interface AffectedDocument {\n readonly vault: string\n readonly op: 'create' | 'update' | 'delete'\n readonly collection: string\n readonly docId: string\n readonly before: unknown // current committed record; null when creating\n readonly after: unknown // staged record; null when deleting\n}\n\nexport interface GuardViolation {\n readonly vault: string\n readonly collection: string\n readonly docId: string\n readonly message: string\n}\n\nexport interface DryRunResult {\n readonly affected: ReadonlyArray<AffectedDocument>\n readonly guardViolations: ReadonlyArray<GuardViolation>\n}\n\nconst SEP = ' '\nconst keyOf = (op: StagedOp) => `${op.vaultName}${SEP}${op.collectionName}${SEP}${op.id}`\n\nexport async function runDryRun(\n db: Noydb,\n fn: (tx: TxContext) => unknown,\n): Promise<DryRunResult> {\n const ctx = new TxContext(db)\n await fn(ctx) // stage ops (reads see staged writes via TxCollection); nothing committed\n\n // Dedup by (vault, collection, id) — last staged op wins.\n const lastOp = new Map<string, StagedOp>()\n for (const op of ctx._ops) lastOp.set(keyOf(op), op)\n\n const affected: AffectedDocument[] = []\n const guardViolations: GuardViolation[] = []\n\n for (const op of lastOp.values()) {\n const v = db.vault(op.vaultName)\n const coll = v.collection(op.collectionName)\n const before = await coll.get(op.id)\n\n if (op.type === 'delete') {\n affected.push({ vault: op.vaultName, op: 'delete', collection: op.collectionName, docId: op.id, before, after: null })\n continue\n }\n\n const after = op.record ?? null\n affected.push({\n vault: op.vaultName,\n op: before === null ? 'create' : 'update',\n collection: op.collectionName,\n docId: op.id,\n before,\n after,\n })\n\n // Guard violations — run the SAME checks Collection._putInternal does,\n // with the SAME ctx (existing + read-only facade + userId + role), but\n // collect the first thrown error instead of aborting.\n const registry = v._getGuardRegistry()\n if (!registry) continue\n const guards = registry.guardsFor(op.collectionName)\n if (guards.length === 0) continue\n const facade = v._getReadOnlyFacade()\n if (!facade) continue\n const gctx = { existing: before as Record<string, unknown> | null, vault: facade, userId: v.userId, role: v.role }\n try {\n await registry.runChecks(op.collectionName, after as Record<string, unknown>, gctx)\n const { GuardExecutor } = await loadGuardExecutor()\n for (const g of guards) {\n await GuardExecutor.checkFrozenFields(g, op.id, before as Record<string, unknown> | null, after as Record<string, unknown>)\n }\n } catch (err) {\n guardViolations.push({\n vault: op.vaultName,\n collection: op.collectionName,\n docId: op.id,\n message: err instanceof Error ? err.message : String(err),\n })\n }\n }\n\n return { affected, guardViolations }\n}\n","/**\n * Active transactions strategy. Only reachable via `@noy-db/hub/transactions`.\n */\n\nimport { runTransaction } from './transaction.js'\nimport { runDryRun } from './dry-run.js'\nimport type { TransactionsStrategy } from './strategy.js'\nimport type { TransactionInvariant } from './invariants.js'\n\n/**\n * Options for {@link withTransactions}. Currently only commit-time\n * changeset `invariants` (see {@link TransactionInvariant}).\n */\nexport interface WithTransactionsOptions {\n /**\n * Commit-time set-level invariants run over the changeset on every\n * commit (ordinary AND amendment). See {@link TransactionInvariant}.\n */\n invariants?: ReadonlyArray<TransactionInvariant>\n}\n\n/**\n * Build the default transactions strategy. Pass into\n * `createNoydb({ transactionsStrategy: withTransactions() })` to enable\n * `db.transaction(fn)` (and `db.transaction({ dryRun: true }, fn)`).\n *\n * Supply `{ invariants }` to register commit-time changeset invariants —\n * set-level constraints that fire after the writes commit and revert the\n * transaction on a throw. Unlike `amendment.invariant`, these run for\n * ordinary `db.transaction(fn)` calls (and amendments) with no role gate.\n */\nexport function withTransactions(opts?: WithTransactionsOptions): TransactionsStrategy {\n const invariants = opts?.invariants ?? []\n return {\n runTransaction: (db, fn, options) => runTransaction(db, fn, options, invariants),\n runDryRun,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,oBAAoB,KAAK,MAAM,OAAO,yBAAqC,CAAC;AAuBlF,IAAM,MAAM;AACZ,IAAM,QAAQ,CAAC,OAAiB,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,GAAG,EAAE;AAEvF,eAAsB,UACpB,IACA,IACuB;AACvB,QAAM,MAAM,IAAI,UAAU,EAAE;AAC5B,QAAM,GAAG,GAAG;AAGZ,QAAM,SAAS,oBAAI,IAAsB;AACzC,aAAW,MAAM,IAAI,KAAM,QAAO,IAAI,MAAM,EAAE,GAAG,EAAE;AAEnD,QAAM,WAA+B,CAAC;AACtC,QAAM,kBAAoC,CAAC;AAE3C,aAAW,MAAM,OAAO,OAAO,GAAG;AAChC,UAAM,IAAI,GAAG,MAAM,GAAG,SAAS;AAC/B,UAAM,OAAO,EAAE,WAAW,GAAG,cAAc;AAC3C,UAAM,SAAS,MAAM,KAAK,IAAI,GAAG,EAAE;AAEnC,QAAI,GAAG,SAAS,UAAU;AACxB,eAAS,KAAK,EAAE,OAAO,GAAG,WAAW,IAAI,UAAU,YAAY,GAAG,gBAAgB,OAAO,GAAG,IAAI,QAAQ,OAAO,KAAK,CAAC;AACrH;AAAA,IACF;AAEA,UAAM,QAAQ,GAAG,UAAU;AAC3B,aAAS,KAAK;AAAA,MACZ,OAAO,GAAG;AAAA,MACV,IAAI,WAAW,OAAO,WAAW;AAAA,MACjC,YAAY,GAAG;AAAA,MACf,OAAO,GAAG;AAAA,MACV;AAAA,MACA;AAAA,IACF,CAAC;AAKD,UAAM,WAAW,EAAE,kBAAkB;AACrC,QAAI,CAAC,SAAU;AACf,UAAM,SAAS,SAAS,UAAU,GAAG,cAAc;AACnD,QAAI,OAAO,WAAW,EAAG;AACzB,UAAM,SAAS,EAAE,mBAAmB;AACpC,QAAI,CAAC,OAAQ;AACb,UAAM,OAAO,EAAE,UAAU,QAA0C,OAAO,QAAQ,QAAQ,EAAE,QAAQ,MAAM,EAAE,KAAK;AACjH,QAAI;AACF,YAAM,SAAS,UAAU,GAAG,gBAAgB,OAAkC,IAAI;AAClF,YAAM,EAAE,cAAc,IAAI,MAAM,kBAAkB;AAClD,iBAAW,KAAK,QAAQ;AACtB,cAAM,cAAc,kBAAkB,GAAG,GAAG,IAAI,QAA0C,KAAgC;AAAA,MAC5H;AAAA,IACF,SAAS,KAAK;AACZ,sBAAgB,KAAK;AAAA,QACnB,OAAO,GAAG;AAAA,QACV,YAAY,GAAG;AAAA,QACf,OAAO,GAAG;AAAA,QACV,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,EAAE,UAAU,gBAAgB;AACrC;;;ACtEO,SAAS,iBAAiB,MAAsD;AACrF,QAAM,aAAa,MAAM,cAAc,CAAC;AACxC,SAAO;AAAA,IACL,gBAAgB,CAAC,IAAI,IAAI,YAAY,eAAe,IAAI,IAAI,SAAS,UAAU;AAAA,IAC/E;AAAA,EACF;AACF;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "../chunk-PY4KJPYU.js";
4
4
  import {
5
5
  FilenameSanitizationError
6
- } from "../chunk-6SYOHUHM.js";
6
+ } from "../chunk-QZWTRENR.js";
7
7
  import "../chunk-PZ5AY32C.js";
8
8
 
9
9
  // src/kernel/util/sanitize-filename.ts
@@ -2,10 +2,10 @@ import {
2
2
  blindedEqual,
3
3
  evaluateKofN,
4
4
  openVdigPayload
5
- } from "./chunk-5WLDZZ6S.js";
5
+ } from "./chunk-35NMVJ7I.js";
6
6
  import {
7
7
  dualReadSealedSlot
8
- } from "./chunk-5HSSTOOG.js";
8
+ } from "./chunk-NFZGZ4AK.js";
9
9
  import {
10
10
  VDIG_ITERATIONS,
11
11
  normalizeForVerify,
@@ -14,11 +14,11 @@ import {
14
14
  import {
15
15
  base64ToBuffer,
16
16
  generateSalt
17
- } from "./chunk-7U6AB7DZ.js";
17
+ } from "./chunk-AKKRXT23.js";
18
18
  import {
19
19
  ClassifiedConfigError,
20
20
  ClassifiedVerifyError
21
- } from "./chunk-6SYOHUHM.js";
21
+ } from "./chunk-QZWTRENR.js";
22
22
  import "./chunk-PZ5AY32C.js";
23
23
 
24
24
  // src/kernel/enclave/classify/verify.ts
@@ -137,4 +137,4 @@ export {
137
137
  verifyDigestField,
138
138
  verifyTextField
139
139
  };
140
- //# sourceMappingURL=verify-5X37OXRY.js.map
140
+ //# sourceMappingURL=verify-7XWHJWUN.js.map
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Active blob strategy factory. Calling `blobs()` returns a
3
- * `BlobStrategy` whose `openSlot` constructs a real `BlobSet` bound
3
+ * `BlobsStrategy` whose `openSlot` constructs a real `BlobSet` bound
4
4
  * to the caller's record. The returned strategy is passed into
5
- * `createNoydb({ blobStrategy: blobs() })` to light up the
5
+ * `createNoydb({ blobsStrategy: blobs() })` to light up the
6
6
  * `collection.blob(id)` path.
7
7
  *
8
8
  * This module is only reachable through the `@noy-db/hub/blobs`
9
9
  * subpath — a consumer that never imports the subpath ships none of
10
10
  * this (ESM tree-shaking + hub's `"sideEffects": false`).
11
11
  */
12
- import type { BlobStrategy } from '../../port/with/blob-strategy.js';
13
- import type { BlobPinStore, BlobCacheStats } from '../../with-shape/blobs/blob-pinning.js';
12
+ import type { BlobsStrategy } from '../../port/with/blob-strategy.js';
13
+ import type { BlobPinStore } from '../../with-shape/blobs/blob-pinning.js';
14
14
  /** Options for {@link withBlobs} (#808). */
15
15
  export interface WithBlobsOptions {
16
16
  /**
@@ -23,18 +23,7 @@ export interface WithBlobsOptions {
23
23
  readonly pinStore?: BlobPinStore;
24
24
  }
25
25
  /**
26
- * The strategy `withBlobs()` returns — a `BlobStrategy` plus the device-local
27
- * blob-cache KPI surface (#808).
28
- */
29
- export interface BlobsService extends BlobStrategy {
30
- /**
31
- * Snapshot of this device's blob-cache KPI counters: local-read hits,
32
- * network misses, and total bytes downloaded from the object store.
33
- */
34
- cacheStats(): BlobCacheStats;
35
- }
36
- /**
37
- * Build a default `BlobStrategy` ready to pass into `createNoydb`.
26
+ * Build a default `BlobsStrategy` ready to pass into `createNoydb`.
38
27
  *
39
28
  * Named `withBlobs` (plugin-pattern canonical) rather than `blobs` to
40
29
  * avoid shadowing the very common local idiom
@@ -50,7 +39,7 @@ export interface BlobsService extends BlobStrategy {
50
39
  *
51
40
  * const db = await createNoydb({
52
41
  * store, user, secret,
53
- * blobStrategy: withBlobs(),
42
+ * blobsStrategy: withBlobs(),
54
43
  * })
55
44
  *
56
45
  * // Now live — delegates to BlobSet.
@@ -58,4 +47,4 @@ export interface BlobsService extends BlobStrategy {
58
47
  * await vault.collection('invoices').blob('inv-1').put('receipt.pdf', bytes)
59
48
  * ```
60
49
  */
61
- export declare function withBlobs(options?: WithBlobsOptions): BlobsService;
50
+ export declare function withBlobs(options?: WithBlobsOptions): BlobsStrategy;
@@ -45,7 +45,7 @@ import type { BlobFieldsConfig } from '../../with-shape/blobs/blob-compaction.js
45
45
  * DELIBERATELY left unwired by `compileViaBindings` (#629 Task 10, resolved
46
46
  * within parity-first — see task-10-report.md "blob purge" section):
47
47
  * `per-blob-cek.test.ts`/`forget.test.ts` prove blob-shred-on-forget is
48
- * gated SOLELY on the vault's `blobStrategy` being configured, never on a
48
+ * gated SOLELY on the vault's `blobsStrategy` being configured, never on a
49
49
  * given collection's OWN `blobFields` declaration (`.blob(id)` is callable,
50
50
  * and IS exercised by those tests, on collections with no `blobFields` at
51
51
  * all). Routing it exclusively through this binding would silently stop
@@ -19,8 +19,8 @@
19
19
  * code should prefer this subpath so the import boundary is explicit.
20
20
  */
21
21
  export { withBlobs } from './active.js';
22
- export type { WithBlobsOptions, BlobsService } from './active.js';
23
- export type { BlobStrategy, BlobStrategyOpenArgs } from '../../port/with/blob-strategy.js';
22
+ export type { WithBlobsOptions } from './active.js';
23
+ export type { BlobsStrategy, BlobsStrategyOpenArgs } from '../../port/with/blob-strategy.js';
24
24
  export { memoryBlobPinStore, blobPinKey } from '../../with-shape/blobs/blob-pinning.js';
25
25
  export type { BlobPinStore, BlobPinEntry, BlobCacheStats } from '../../with-shape/blobs/blob-pinning.js';
26
26
  export { BlobOfflineError } from '../../kernel/errors.js';
@@ -0,0 +1,21 @@
1
+ import {
2
+ dumpVaultSchema
3
+ } from "./chunk-ZWBKDKXC.js";
4
+ import "./chunk-VYYM3MEN.js";
5
+ import "./chunk-6ZNSB3H6.js";
6
+ import "./chunk-Y2NBBT6K.js";
7
+ import "./chunk-OBPVWOSQ.js";
8
+ import "./chunk-RZPOZPZU.js";
9
+ import "./chunk-VH6SOCXH.js";
10
+ import "./chunk-35NMVJ7I.js";
11
+ import "./chunk-NFZGZ4AK.js";
12
+ import "./chunk-QJNCB5SK.js";
13
+ import "./chunk-LP7BEXCT.js";
14
+ import "./chunk-AKKRXT23.js";
15
+ import "./chunk-GZACYEOB.js";
16
+ import "./chunk-QZWTRENR.js";
17
+ import "./chunk-PZ5AY32C.js";
18
+ export {
19
+ dumpVaultSchema
20
+ };
21
+ //# sourceMappingURL=walk-6OHAWGBS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `withForgetCascade` — the active factory for GDPR right-to-erasure via
2
+ * `withForget` — the active factory for GDPR right-to-erasure via
3
3
  * per-record CEK crypto-shred. Mirrors the canonical
4
4
  * `strategy.ts` (type + `NO_FORGET` sentinel) / `active.ts` (factory) split
5
5
  * used by the other services.
@@ -22,10 +22,10 @@ import type { SubjectDeclaration, ForgetStrategy } from './strategy.js';
22
22
  * ```ts
23
23
  * createNoydb({
24
24
  * secret, user,
25
- * forgetStrategy: withForgetCascade({ subjects: { invoices: 'buyerId' } }),
25
+ * forgetStrategy: withForget({ subjects: { invoices: 'buyerId' } }),
26
26
  * })
27
27
  * const result = await vault.forget('buyer-123')
28
28
  * // → { subject, recordsShredded, historyVersionsShredded, collections, … }
29
29
  * ```
30
30
  */
31
- export declare function withForgetCascade(opts: SubjectDeclaration): ForgetStrategy;
31
+ export declare function withForget(opts: SubjectDeclaration): ForgetStrategy;
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * `@noy-db/hub/forget` — GDPR right-to-erasure via per-record CEK crypto-shred.
3
- * Import `withForgetCascade` and pass it to `createNoydb`:
3
+ * Import `withForget` and pass it to `createNoydb`:
4
4
  *
5
5
  * ```ts
6
6
  * import { createNoydb } from '@noy-db/hub'
7
- * import { withForgetCascade } from '@noy-db/hub/forget'
7
+ * import { withForget } from '@noy-db/hub/forget'
8
8
  *
9
9
  * const db = createNoydb({
10
10
  * secret, user,
11
11
  * historyStrategy: withHistory(), // ledger for the erasure proof
12
- * forgetStrategy: withForgetCascade({ subjects: { invoices: 'buyerId' } }),
12
+ * forgetStrategy: withForget({ subjects: { invoices: 'buyerId' } }),
13
13
  * })
14
14
  * const vault = await db.openVault('main')
15
15
  * const result = await vault.forget('buyer-123')
@@ -22,7 +22,7 @@
22
22
  *
23
23
  * @module
24
24
  */
25
- export { withForgetCascade } from './active.js';
25
+ export { withForget } from './active.js';
26
26
  export { NO_FORGET } from './strategy.js';
27
27
  export type { SubjectDeclaration, ForgetStrategy, ForgetResult, ScopedPurgeResidueNotice, } from './strategy.js';
28
28
  export type { SubjectRef } from './subject-index.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `withForgetCascade` — declaration surface for GDPR right-to-erasure via
2
+ * `withForget` — declaration surface for GDPR right-to-erasure via
3
3
  * per-record CEK crypto-shred.
4
4
  *
5
5
  * This file holds only the *declaration* shape and the disabled sentinel.
@@ -18,12 +18,12 @@
18
18
  */
19
19
  import type { LedgerEntry } from '../../with-commit/history/ledger/entry.js';
20
20
  /**
21
- * User-supplied declaration passed to {@link withForgetCascade}. Maps a
21
+ * User-supplied declaration passed to {@link withForget}. Maps a
22
22
  * collection name to the record field (dotted path supported, e.g.
23
23
  * `'billing.buyerId'`) that identifies the data subject for erasure.
24
24
  *
25
25
  * ```ts
26
- * withForgetCascade({ subjects: { invoices: 'buyerId', contacts: 'id' } })
26
+ * withForget({ subjects: { invoices: 'buyerId', contacts: 'id' } })
27
27
  * ```
28
28
  */
29
29
  export interface SubjectDeclaration {
@@ -1,6 +1,6 @@
1
- import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
1
+ import type { GuardSpec, GuardContext, GuardChange } from './types.js';
2
2
  /**
3
- * Pure functions that execute the work declared by a `GuardStrategy`.
3
+ * Pure functions that execute the work declared by a `GuardSpec`.
4
4
  * Stateless — `GuardRegistry` decides when to call these.
5
5
  *
6
6
  * @internal
@@ -17,10 +17,10 @@ export declare const GuardExecutor: {
17
17
  * `existing[field]` vs `incoming[field]` would always look like a
18
18
  * change even when the computed result is unchanged.
19
19
  */
20
- checkFrozenFields<T extends Record<string, unknown>>(guard: GuardStrategy<T>, id: string, existing: T | null, incoming: T, skipFields?: ReadonlySet<string>): Promise<void>;
20
+ checkFrozenFields<T extends Record<string, unknown>>(guard: GuardSpec<T>, id: string, existing: T | null, incoming: T, skipFields?: ReadonlySet<string>): Promise<void>;
21
21
  /**
22
22
  * Run a single guard's invariant over its slice of the change-set.
23
23
  * Any throw is converted to `InvariantError` unless it already is one.
24
24
  */
25
- runInvariant<T extends Record<string, unknown>>(guard: GuardStrategy<T>, changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>): Promise<void>;
25
+ runInvariant<T extends Record<string, unknown>>(guard: GuardSpec<T>, changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>): Promise<void>;
26
26
  };
@@ -25,7 +25,7 @@
25
25
  * ledgered by the guard amendment mechanism). `appendOnly: true` is
26
26
  * shorthand for `after: () => true` — immutable from creation.
27
27
  */
28
- import type { GuardStrategyHandle, GuardContext, GuardChange } from './types.js';
28
+ import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
29
29
  export interface ImmutableGuardConfig<T extends Record<string, unknown>> {
30
30
  /** The collection to make WORM. */
31
31
  collection: string;
@@ -42,7 +42,7 @@ export interface ImmutableGuardConfig<T extends Record<string, unknown>> {
42
42
  amendmentRoles?: ReadonlyArray<'admin' | 'owner'>;
43
43
  /**
44
44
  * Optional set-level invariant run over the amendment change-set after
45
- * the writes execute. Signature matches `GuardStrategy.amendment.invariant`
45
+ * the writes execute. Signature matches `GuardSpec.amendment.invariant`
46
46
  * exactly: it receives every {before, after} pair touching this
47
47
  * collection in the amendment plus the guard context; throwing reverts
48
48
  * the whole amendment and surfaces as `InvariantError`.
@@ -60,4 +60,4 @@ export interface ImmutableGuardConfig<T extends Record<string, unknown>> {
60
60
  * Build an immutability guard. Pass the returned handle to
61
61
  * `createNoydb({ guardStrategies: [...] })`.
62
62
  */
63
- export declare function immutableGuard<T extends Record<string, unknown>>(config: ImmutableGuardConfig<T>): GuardStrategyHandle<T>;
63
+ export declare function immutableGuard<T extends Record<string, unknown>>(config: ImmutableGuardConfig<T>): GuardStrategy<T>;
@@ -6,5 +6,5 @@ export type { TransitionGuardConfig } from './transition-guard.js';
6
6
  export { GuardRegistry } from './registry.js';
7
7
  export { GuardExecutor } from './executor.js';
8
8
  export { ReadOnlyVaultFacade } from './read-only-facade.js';
9
- export type { GuardStrategy, GuardStrategyHandle, GuardContext, GuardChange, } from './types.js';
9
+ export type { GuardSpec, GuardStrategy, GuardContext, GuardChange, } from './types.js';
10
10
  export { RecordLockedError, FieldFrozenError, IllegalTransitionError, InvariantError, AmendmentForbiddenError, } from '../../kernel/errors.js';
@@ -1,4 +1,4 @@
1
- import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
1
+ import type { GuardSpec, GuardContext, GuardChange } from './types.js';
2
2
  /**
3
3
  * Per-record metadata attached to every entry in an amendment's
4
4
  * change-set. Carried in a parallel map alongside `_amendmentChanges`
@@ -20,14 +20,14 @@ export interface AmendmentChangeMeta {
20
20
  *
21
21
  * @internal
22
22
  */
23
- type AnyGuard = GuardStrategy<Record<string, unknown>>;
23
+ type AnyGuard = GuardSpec<Record<string, unknown>>;
24
24
  type AnyChange = GuardChange<Record<string, unknown>>;
25
25
  export declare class GuardRegistry {
26
26
  private readonly _byCollection;
27
27
  private _amendmentChanges;
28
28
  private _amendmentMeta;
29
29
  /** Register a guard. Multiple guards per collection are allowed. */
30
- register<T extends Record<string, unknown>>(spec: GuardStrategy<T>): void;
30
+ register<T extends Record<string, unknown>>(spec: GuardSpec<T>): void;
31
31
  /** All guards registered against `collection` in registration order. */
32
32
  guardsFor(collection: string): ReadonlyArray<AnyGuard>;
33
33
  /** Per-collection guard counts, for introspection. */
@@ -42,7 +42,7 @@
42
42
  *
43
43
  * The status graph is caller-supplied data — no UI, no domain logic.
44
44
  */
45
- import type { GuardStrategyHandle, GuardContext, GuardChange } from './types.js';
45
+ import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
46
46
  export interface TransitionGuardConfig<T extends Record<string, unknown>> {
47
47
  /** The collection whose state field is governed. */
48
48
  collection: string;
@@ -68,7 +68,7 @@ export interface TransitionGuardConfig<T extends Record<string, unknown>> {
68
68
  amendmentRoles?: ReadonlyArray<'admin' | 'owner'>;
69
69
  /**
70
70
  * Optional set-level invariant run over the amendment change-set after
71
- * the writes execute. Signature matches `GuardStrategy.amendment.invariant`
71
+ * the writes execute. Signature matches `GuardSpec.amendment.invariant`
72
72
  * exactly. When omitted the amendment is unconditionally allowed (the
73
73
  * amendment itself is the sanctioned, ledgered override) — the
74
74
  * backward-compatible default. Mirrors {@link immutableGuard}.
@@ -79,4 +79,4 @@ export interface TransitionGuardConfig<T extends Record<string, unknown>> {
79
79
  * Build a state-machine transition guard. Pass the returned handle to
80
80
  * `createNoydb({ guardStrategies: [...] })`.
81
81
  */
82
- export declare function transitionGuard<T extends Record<string, unknown>>(config: TransitionGuardConfig<T>): GuardStrategyHandle<T>;
82
+ export declare function transitionGuard<T extends Record<string, unknown>>(config: TransitionGuardConfig<T>): GuardStrategy<T>;
@@ -36,16 +36,16 @@ export interface GuardChange<T> {
36
36
  after: T;
37
37
  }
38
38
  /** @internal — output of {@link withGuard}. */
39
- export interface GuardStrategyHandle<T extends Record<string, unknown>> {
39
+ export interface GuardStrategy<T extends Record<string, unknown>> {
40
40
  readonly __noydb_strategy: 'guard';
41
- readonly spec: GuardStrategy<T>;
41
+ readonly spec: GuardSpec<T>;
42
42
  }
43
43
  /**
44
- * Existential erasure of `GuardStrategyHandle<T>` — used as the
44
+ * Existential erasure of `GuardStrategy<T>` — used as the
45
45
  * element type of `ReadonlyArray<>` fields where the per-handle T
46
46
  * differs (e.g. `guardStrategies: [invoiceGuard, disbursementGuard]`).
47
47
  *
48
- * Background: `GuardStrategyHandle<T>` is INVARIANT in T because T
48
+ * Background: `GuardStrategy<T>` is INVARIANT in T because T
49
49
  * appears in callback positions on the spec (`check(incoming: T, ctx)`,
50
50
  * `invariant(changes: ReadonlyArray<GuardChange<T>>, ctx)`). So
51
51
  * `Handle<Invoice>` is not assignable to `Handle<Record<string, unknown>>`.
@@ -55,9 +55,9 @@ export interface GuardStrategyHandle<T extends Record<string, unknown>> {
55
55
  * interface that ERASES T from both the discriminant and the spec.
56
56
  *
57
57
  * Consumers continue to construct typed handles via `withGuard<T>(...)`
58
- * which returns `GuardStrategyHandle<T>`. Both `Handle<Invoice>` and
59
- * `Handle<Disbursement>` structurally assign to `GuardStrategyHandleAny`,
60
- * so an array of them is `GuardStrategyHandleAny[]`.
58
+ * which returns `GuardStrategy<T>`. Both `Handle<Invoice>` and
59
+ * `Handle<Disbursement>` structurally assign to `GuardStrategyAny`,
60
+ * so an array of them is `GuardStrategyAny[]`.
61
61
  *
62
62
  * Internal code that needs T re-narrows via the runtime discriminant
63
63
  * (`__noydb_strategy === 'guard'`) plus per-handle type information
@@ -69,12 +69,12 @@ export interface GuardStrategyHandle<T extends Record<string, unknown>> {
69
69
  *
70
70
  * @internal
71
71
  */
72
- export interface GuardStrategyHandleAny {
72
+ export interface GuardStrategyAny {
73
73
  readonly __noydb_strategy: 'guard';
74
- readonly spec: GuardStrategy<any>;
74
+ readonly spec: GuardSpec<any>;
75
75
  }
76
76
  /** Public registration shape. See `withGuard()`. */
77
- export interface GuardStrategy<T extends Record<string, unknown>> {
77
+ export interface GuardSpec<T extends Record<string, unknown>> {
78
78
  collection: string;
79
79
  /**
80
80
  * Fires on `Collection.put` (insert + update). The `incoming` argument
@@ -1,4 +1,4 @@
1
- import type { GuardStrategy, GuardStrategyHandle } from './types.js';
1
+ import type { GuardSpec, GuardStrategy } from './types.js';
2
2
  /**
3
3
  * Register a guard for a collection. Guards run on every `put()` /
4
4
  * `delete()` for the named collection (after permissions, before
@@ -12,4 +12,4 @@ import type { GuardStrategy, GuardStrategyHandle } from './types.js';
12
12
  *
13
13
  * @see docs/superpowers/specs/2026-05-18-guards-design.md
14
14
  */
15
- export declare function withGuard<T extends Record<string, unknown>>(strategy: GuardStrategy<T>): GuardStrategyHandle<T>;
15
+ export declare function withGuard<T extends Record<string, unknown>>(strategy: GuardSpec<T>): GuardStrategy<T>;
@@ -18,10 +18,20 @@ export interface DeferredNumberingConfig {
18
18
  */
19
19
  readonly settleWindowMs: number;
20
20
  }
21
+ /**
22
+ * Options for {@link withDeferredNumbering} (#844b — was an inline literal, so
23
+ * unnameable). Same shape as {@link DeferredNumberingConfig} except
24
+ * `settleWindowMs` is optional; the factory defaults it to 0.
25
+ */
26
+ export interface WithDeferredNumberingOptions {
27
+ /** Series name — the key passed to `vault.sequence(series)`. */
28
+ readonly series: string;
29
+ /** Collection holding the records to number. */
30
+ readonly collection: string;
31
+ /** Field on each record where the assigned serial is written. */
32
+ readonly field: string;
33
+ /** See {@link DeferredNumberingConfig.settleWindowMs}. Default 0. */
34
+ readonly settleWindowMs?: number;
35
+ }
21
36
  /** Declare a deferred-numbering series. Pass the result in `createNoydb({ numbering: [...] })`. */
22
- export declare function withDeferredNumbering(config: {
23
- series: string;
24
- collection: string;
25
- field: string;
26
- settleWindowMs?: number;
27
- }): DeferredNumberingConfig;
37
+ export declare function withDeferredNumbering(opts: WithDeferredNumberingOptions): DeferredNumberingConfig;
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Active transactions strategy. Only reachable via `@noy-db/hub/tx`.
2
+ * Active transactions strategy. Only reachable via `@noy-db/hub/transactions`.
3
3
  */
4
- import type { TxStrategy } from './strategy.js';
4
+ import type { TransactionsStrategy } from './strategy.js';
5
5
  import type { TransactionInvariant } from './invariants.js';
6
6
  /**
7
7
  * Options for {@link withTransactions}. Currently only commit-time
8
8
  * changeset `invariants` (see {@link TransactionInvariant}).
9
9
  */
10
- export interface TransactionStrategyOptions {
10
+ export interface WithTransactionsOptions {
11
11
  /**
12
12
  * Commit-time set-level invariants run over the changeset on every
13
13
  * commit (ordinary AND amendment). See {@link TransactionInvariant}.
@@ -16,7 +16,7 @@ export interface TransactionStrategyOptions {
16
16
  }
17
17
  /**
18
18
  * Build the default transactions strategy. Pass into
19
- * `createNoydb({ txStrategy: withTransactions() })` to enable
19
+ * `createNoydb({ transactionsStrategy: withTransactions() })` to enable
20
20
  * `db.transaction(fn)` (and `db.transaction({ dryRun: true }, fn)`).
21
21
  *
22
22
  * Supply `{ invariants }` to register commit-time changeset invariants —
@@ -24,4 +24,4 @@ export interface TransactionStrategyOptions {
24
24
  * transaction on a throw. Unlike `amendment.invariant`, these run for
25
25
  * ordinary `db.transaction(fn)` calls (and amendments) with no role gate.
26
26
  */
27
- export declare function withTransactions(opts?: TransactionStrategyOptions): TxStrategy;
27
+ export declare function withTransactions(opts?: WithTransactionsOptions): TransactionsStrategy;
@@ -6,8 +6,8 @@
6
6
  * code.
7
7
  */
8
8
  export { withTransactions } from './active.js';
9
- export type { TransactionStrategyOptions } from './active.js';
10
- export type { TxStrategy } from './strategy.js';
9
+ export type { WithTransactionsOptions } from './active.js';
10
+ export type { TransactionsStrategy } from './strategy.js';
11
11
  export type { TransactionInvariant } from './invariants.js';
12
12
  export { TxContext, TxVault, TxCollection, runTransaction } from './transaction.js';
13
13
  export type { AmendmentTxOptions } from './transaction.js';
@@ -30,7 +30,7 @@
30
30
  * `InvariantError` thrown by the check passes through unwrapped).
31
31
  *
32
32
  * ```ts
33
- * createNoydb({ txStrategy: withTransactions({
33
+ * createNoydb({ transactionsStrategy: withTransactions({
34
34
  * invariants: [{
35
35
  * scope: 'payments',
36
36
  * check(changes) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Strategy seam for the optional multi-record transaction service.
3
3
  * `runTransaction` is only reachable through `withTransactions()`
4
- * exported from `@noy-db/hub/tx`. Consumers who don't use
4
+ * exported from `@noy-db/hub/transactions`. Consumers who don't use
5
5
  * `db.transaction(fn)` ship none of the ~288 LOC.
6
6
  *
7
7
  * @internal
@@ -13,11 +13,11 @@ import type { TransactionInvariant } from './invariants.js';
13
13
  /**
14
14
  * @internal
15
15
  */
16
- export interface TxStrategy {
16
+ export interface TransactionsStrategy {
17
17
  runTransaction<T>(db: Noydb, fn: (tx: TxContext) => Promise<T> | T, options?: AmendmentTxOptions, txInvariants?: ReadonlyArray<TransactionInvariant>): Promise<T>;
18
18
  runDryRun(db: Noydb, fn: (tx: TxContext) => unknown): Promise<DryRunResult>;
19
19
  }
20
20
  /**
21
21
  * @internal
22
22
  */
23
- export declare const NO_TX: TxStrategy;
23
+ export declare const NO_TRANSACTIONS: TransactionsStrategy;
@@ -1,4 +1,4 @@
1
- import type { SnapshotStrategy, RetentionPolicy } from './strategy.js';
1
+ import type { SnapshotsStrategy, RetentionPolicy } from './strategy.js';
2
2
  import type { SnapshotPolicy } from './policy.js';
3
3
  import type { NoydbPodStore } from '../../kernel/types.js';
4
4
  export interface WithSnapshotsOptions {
@@ -17,4 +17,4 @@ export interface WithSnapshotsOptions {
17
17
  */
18
18
  snapshotPolicy?: SnapshotPolicy;
19
19
  }
20
- export declare function withSnapshots(opts: WithSnapshotsOptions): SnapshotStrategy;
20
+ export declare function withSnapshots(opts: WithSnapshotsOptions): SnapshotsStrategy;
@@ -1,6 +1,6 @@
1
1
  export { withSnapshots } from './active.js';
2
2
  export type { WithSnapshotsOptions } from './active.js';
3
- export type { SnapshotStrategy, SnapshotMeta, RetentionPolicy } from './strategy.js';
3
+ export type { SnapshotsStrategy, SnapshotMeta, RetentionPolicy } from './strategy.js';
4
4
  export type { SnapshotPolicy, SnapshotMode } from './policy.js';
5
5
  export { SnapshotNotFoundError } from '../../kernel/errors.js';
6
6
  /** The un-opted-in stub for this service — exported so callers can compare against it (#844). */
@@ -9,13 +9,13 @@
9
9
  *
10
10
  * Internal service — reached through `noydb.snapshot(...)` etc.
11
11
  */
12
- import { NO_SNAPSHOTS, type SnapshotStrategy, type SnapshotMeta } from './strategy.js';
12
+ import { NO_SNAPSHOTS, type SnapshotsStrategy, type SnapshotMeta } from './strategy.js';
13
13
  import type { Vault } from '../../kernel/vault.js';
14
14
  import type { WriteHook, Unsubscribe } from '../../port/with/write-hooks.js';
15
15
  /** Everything the moving snapshot methods touched on the Noydb instance's `this.*`. */
16
16
  export interface NoydbSnapshotsDeps {
17
17
  /** Resolved snapshot strategy (NO_SNAPSHOTS when not configured). */
18
- readonly strategy: SnapshotStrategy;
18
+ readonly strategy: SnapshotsStrategy;
19
19
  /** Acting user id, used as the snapshot `by`. */
20
20
  readonly user: string;
21
21
  /** Whether the owning instance has been closed. */
@@ -32,7 +32,7 @@ export declare class NoydbSnapshots {
32
32
  constructor(deps: NoydbSnapshotsDeps);
33
33
  /**
34
34
  * Take an on-demand checkpoint of the given vault.
35
- * Requires `snapshotStrategy: withSnapshots({ store })` in `createNoydb`.
35
+ * Requires `snapshotsStrategy: withSnapshots({ store })` in `createNoydb`.
36
36
  * @throws ValidationError when the vault is not open
37
37
  */
38
38
  snapshot(vault: string, opts?: {
@@ -29,7 +29,7 @@ export interface SnapshotIndex {
29
29
  auto?: SnapshotMeta;
30
30
  }
31
31
  /** @internal */
32
- export interface SnapshotStrategy {
32
+ export interface SnapshotsStrategy {
33
33
  snapshot(vault: unknown, by: string, opts?: {
34
34
  label?: string;
35
35
  note?: string;
@@ -45,4 +45,4 @@ export interface SnapshotStrategy {
45
45
  readonly policy?: SnapshotPolicy;
46
46
  }
47
47
  /** No-op stub. @internal */
48
- export declare const NO_SNAPSHOTS: SnapshotStrategy;
48
+ export declare const NO_SNAPSHOTS: SnapshotsStrategy;
@@ -1,4 +1,4 @@
1
- import type { DerivationContext, DerivationStrategy } from './types.js';
1
+ import type { DerivationContext, DerivationSpec } from './types.js';
2
2
  export interface RunResult {
3
3
  outputs: Record<string, OutputResult>;
4
4
  failed: boolean;
@@ -55,7 +55,7 @@ export declare const DerivationExecutor: {
55
55
  * `_derivedFrom` onto every output. Returns per-output success or
56
56
  * failure; throws only for shape mismatches (a contract violation).
57
57
  */
58
- run<TSource extends Record<string, unknown>, TOutputs extends Record<string, Record<string, unknown> | ReadonlyArray<Record<string, unknown>>>>(strategy: DerivationStrategy<TSource, TOutputs>, source: TSource & {
58
+ run<TSource extends Record<string, unknown>, TOutputs extends Record<string, Record<string, unknown> | ReadonlyArray<Record<string, unknown>>>>(strategy: DerivationSpec<TSource, TOutputs>, source: TSource & {
59
59
  id: string;
60
60
  }, sourceVersion: number, strategyHash: string, ctx: DerivationContext): Promise<RunResult>;
61
61
  };
@@ -1,8 +1,9 @@
1
1
  export { withDerivation } from './with-derivation.js';
2
2
  export { withRollup } from './with-rollup.js';
3
+ export type { WithRollupOptions } from './with-rollup.js';
3
4
  export { DerivationRegistry } from './registry.js';
4
5
  export { DerivationExecutor } from './executor.js';
5
- export type { DerivationStrategy, DerivationStrategyHandle, DerivedFromMeta, OutputSpec, RecordOutputSpec, ArrayOutputSpec, } from './types.js';
6
+ export type { DerivationSpec, DerivationStrategy, DerivedFromMeta, OutputSpec, RecordOutputSpec, ArrayOutputSpec, } from './types.js';
6
7
  export { DerivationCycleError, DerivationDepthError, DerivationOutputUnknownError, DerivationOutputShapeError, DerivationCapExceededError, } from '../../kernel/errors.js';
7
8
  export type { DerivationContext } from './types.js';
8
9
  export type { RunResult } from './executor.js';