@noy-db/hub 0.3.0-pre.8 → 0.3.0-pre.9

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 (400) hide show
  1. package/dist/adapter/index.d.ts +2 -3
  2. package/dist/adapter/index.js +1 -1
  3. package/dist/aggregate/index.d.ts +3 -4
  4. package/dist/aggregate/index.js +9 -8
  5. package/dist/aggregate/index.js.map +1 -1
  6. package/dist/api-HV4PDUWF.js +20 -0
  7. package/dist/as/index.d.ts +4 -5
  8. package/dist/as/index.js +11 -11
  9. package/dist/at/index.d.ts +2 -3
  10. package/dist/attestation/index.d.ts +3 -4
  11. package/dist/attestation/index.js +18 -18
  12. package/dist/{backup-WRGNTGJF.js → backup-ODXO7OGA.js} +12 -12
  13. package/dist/blobs/index.d.ts +4 -5
  14. package/dist/blobs/index.js +11 -11
  15. package/dist/blobs/index.js.map +1 -1
  16. package/dist/bundle/index.d.ts +5 -6
  17. package/dist/bundle/index.js +20 -20
  18. package/dist/{bundle-DzWtVw7w.d.ts → bundle-DlSxo31R.d.ts} +1 -1
  19. package/dist/by/index.js +2 -2
  20. package/dist/cargo/index.d.ts +4 -5
  21. package/dist/cargo/index.js +23 -22
  22. package/dist/{chunk-X6VNIRHS.js → chunk-2644KEGW.js} +18 -10
  23. package/dist/chunk-2644KEGW.js.map +1 -0
  24. package/dist/{chunk-XW5LZYV4.js → chunk-2HVUKRNE.js} +2 -2
  25. package/dist/{chunk-VFQOE76I.js → chunk-2KOSJTMU.js} +2 -2
  26. package/dist/{chunk-2PJB6H3H.js → chunk-2UQ4RMHV.js} +4 -4
  27. package/dist/{chunk-5GQE5IDB.js → chunk-2XE6LIXT.js} +13 -11
  28. package/dist/chunk-2XE6LIXT.js.map +1 -0
  29. package/dist/{chunk-VIWOGJ2O.js → chunk-34RRRIC3.js} +2 -2
  30. package/dist/{chunk-BASCPHNM.js → chunk-3C5CKXFI.js} +289 -48
  31. package/dist/chunk-3C5CKXFI.js.map +1 -0
  32. package/dist/{chunk-LFGJG4XZ.js → chunk-3I4KYWNP.js} +2 -2
  33. package/dist/{chunk-723XB5NX.js → chunk-42KVY3OC.js} +4 -4
  34. package/dist/{chunk-56JB2BGI.js → chunk-4C4WBS4V.js} +1739 -920
  35. package/dist/chunk-4C4WBS4V.js.map +1 -0
  36. package/dist/{chunk-62APEMF3.js → chunk-4G3IT7J7.js} +7 -7
  37. package/dist/{chunk-W3JABOVB.js → chunk-4RQ62VSR.js} +2 -2
  38. package/dist/{chunk-WPNP3NF5.js → chunk-4ZSGSRBI.js} +8 -8
  39. package/dist/{chunk-C4NOLA5X.js → chunk-5GAX2QOH.js} +2 -2
  40. package/dist/{chunk-5HRJQSKN.js → chunk-5SAZMBW7.js} +7 -7
  41. package/dist/{chunk-II6DLDZM.js → chunk-5TZZUL5X.js} +2 -2
  42. package/dist/{chunk-TUL5YQWF.js → chunk-6CU3FN74.js} +8 -8
  43. package/dist/chunk-6G2SCQYS.js +29 -0
  44. package/dist/chunk-6G2SCQYS.js.map +1 -0
  45. package/dist/{chunk-UWZ7O4NR.js → chunk-6MWUANRF.js} +2 -2
  46. package/dist/{chunk-U7LV2DUN.js → chunk-6ULCYCMU.js} +2 -2
  47. package/dist/{chunk-6Z435B6N.js → chunk-7HAPHVRJ.js} +131 -92
  48. package/dist/chunk-7HAPHVRJ.js.map +1 -0
  49. package/dist/{chunk-GDOOG5YQ.js → chunk-7IZQTCTR.js} +3 -3
  50. package/dist/chunk-7ZANJ6JZ.js +265 -0
  51. package/dist/chunk-7ZANJ6JZ.js.map +1 -0
  52. package/dist/{chunk-VVLOWY74.js → chunk-A2APWS32.js} +6 -6
  53. package/dist/chunk-A2APWS32.js.map +1 -0
  54. package/dist/{chunk-TIAYXOEI.js → chunk-A4MAD6PO.js} +5 -5
  55. package/dist/chunk-ANDBBA2P.js +36 -0
  56. package/dist/chunk-ANDBBA2P.js.map +1 -0
  57. package/dist/{chunk-5HZULLHE.js → chunk-AUR7MRHA.js} +2 -2
  58. package/dist/{chunk-44DV37ZV.js → chunk-AYGZMQP5.js} +3 -3
  59. package/dist/chunk-AYGZMQP5.js.map +1 -0
  60. package/dist/{chunk-P2PEPSPK.js → chunk-CJEMA2Z6.js} +2 -2
  61. package/dist/{chunk-L6Q5NA22.js → chunk-CTSFKDGA.js} +2 -2
  62. package/dist/{chunk-OJ64XMPJ.js → chunk-CU62BBRB.js} +32 -1
  63. package/dist/chunk-CU62BBRB.js.map +1 -0
  64. package/dist/{chunk-J5YUA6JB.js → chunk-CWCCYH34.js} +2 -2
  65. package/dist/{chunk-NTPWQH4S.js → chunk-DEYAO3N6.js} +10 -10
  66. package/dist/{chunk-M3OYTM5Z.js → chunk-DFIBOSOQ.js} +8 -8
  67. package/dist/{chunk-FZK3JJJK.js → chunk-E5AHO65E.js} +7 -7
  68. package/dist/{chunk-F3EKFGUS.js → chunk-FC3XK5JT.js} +8 -8
  69. package/dist/{chunk-XBPUVQDO.js → chunk-FGOGS7CE.js} +10 -12
  70. package/dist/chunk-FGOGS7CE.js.map +1 -0
  71. package/dist/{chunk-3KBK5LU4.js → chunk-GX2BYNCT.js} +7 -7
  72. package/dist/{chunk-YTCCC6NG.js → chunk-GZ2MOPVX.js} +34 -63
  73. package/dist/chunk-GZ2MOPVX.js.map +1 -0
  74. package/dist/chunk-H57P2SJB.js +126 -0
  75. package/dist/chunk-H57P2SJB.js.map +1 -0
  76. package/dist/{chunk-55LSDABW.js → chunk-HBTT7YQX.js} +2 -2
  77. package/dist/{chunk-PYIUDUGS.js → chunk-HOCEGVGQ.js} +2 -2
  78. package/dist/{chunk-5JQMX2EH.js → chunk-ICV32FPK.js} +2 -2
  79. package/dist/{chunk-PMMV5SQC.js → chunk-IIP5WFVT.js} +138 -92
  80. package/dist/chunk-IIP5WFVT.js.map +1 -0
  81. package/dist/{chunk-37JZR7CY.js → chunk-IUKGIB2Q.js} +4 -4
  82. package/dist/{chunk-OWGAXPRE.js → chunk-IWTYFS3D.js} +2 -2
  83. package/dist/{chunk-FCOZ7DEC.js → chunk-JC5R7P44.js} +3 -3
  84. package/dist/{chunk-IARAK3PK.js → chunk-KBBWY46Y.js} +2 -2
  85. package/dist/{chunk-RNYDHIQL.js → chunk-KBF5GSGX.js} +3 -3
  86. package/dist/{chunk-6P5AJ2ZS.js → chunk-KCG3BHFG.js} +2 -23
  87. package/dist/chunk-KCG3BHFG.js.map +1 -0
  88. package/dist/{chunk-GLVXQU3E.js → chunk-KNXN47MO.js} +3 -3
  89. package/dist/{chunk-VK6OC22R.js → chunk-KWLD2D75.js} +4 -3
  90. package/dist/chunk-KWLD2D75.js.map +1 -0
  91. package/dist/{chunk-J7OH6R4K.js → chunk-KXKLKJW4.js} +6 -6
  92. package/dist/{chunk-PAJCRV7O.js → chunk-KYC4LIEU.js} +2 -2
  93. package/dist/{chunk-R4IVPJHN.js → chunk-LEOXZY36.js} +8 -8
  94. package/dist/{chunk-25G7PUTA.js → chunk-M5I354EE.js} +9 -9
  95. package/dist/{chunk-26FSVNBL.js → chunk-MK2BSS44.js} +2 -2
  96. package/dist/{chunk-UMH35AQV.js → chunk-MSVY7ULZ.js} +3 -3
  97. package/dist/{chunk-5YBUFCFF.js → chunk-NNWK3PSY.js} +9 -9
  98. package/dist/{chunk-X5QZAJDB.js → chunk-NSZ6J5DF.js} +7 -7
  99. package/dist/{chunk-I6URUNTD.js → chunk-NUEFXLZU.js} +7 -7
  100. package/dist/{chunk-PPPZIBKY.js → chunk-NYVQCZ54.js} +5 -5
  101. package/dist/chunk-NYVQCZ54.js.map +1 -0
  102. package/dist/{chunk-DCVVCJVB.js → chunk-OQAODTYR.js} +2 -2
  103. package/dist/{chunk-QYMMMKOO.js → chunk-OV4CMJGR.js} +5 -5
  104. package/dist/{chunk-V76PHWLE.js → chunk-PEDZFFKW.js} +2 -2
  105. package/dist/chunk-PF3FQCCF.js +164 -0
  106. package/dist/chunk-PF3FQCCF.js.map +1 -0
  107. package/dist/{chunk-BJ2XF2RC.js → chunk-Q2KVKTC2.js} +5 -5
  108. package/dist/{chunk-RUIMKQTA.js → chunk-QJR3W3MF.js} +1 -1
  109. package/dist/chunk-QJR3W3MF.js.map +1 -0
  110. package/dist/{chunk-QABECTNN.js → chunk-QTXQ6RNZ.js} +3 -3
  111. package/dist/{chunk-P6TZ3IVN.js → chunk-RJ5522XX.js} +12 -12
  112. package/dist/{chunk-BM6E4MUT.js → chunk-RMUXPHIH.js} +56 -7
  113. package/dist/chunk-RMUXPHIH.js.map +1 -0
  114. package/dist/{chunk-CHK5VVMI.js → chunk-S6AQXDN4.js} +2 -2
  115. package/dist/{chunk-4VDFUBTS.js → chunk-SSFC3IYA.js} +9 -9
  116. package/dist/chunk-SSFC3IYA.js.map +1 -0
  117. package/dist/{chunk-MOQ5M46U.js → chunk-SZCHEDML.js} +2 -2
  118. package/dist/{chunk-UB3XHGFG.js → chunk-TDPEJINP.js} +14 -7
  119. package/dist/chunk-TDPEJINP.js.map +1 -0
  120. package/dist/{chunk-REWTMYSF.js → chunk-UNJU345Q.js} +1 -1
  121. package/dist/chunk-UNJU345Q.js.map +1 -0
  122. package/dist/chunk-V7RNIND6.js +265 -0
  123. package/dist/chunk-V7RNIND6.js.map +1 -0
  124. package/dist/{chunk-FWART3VA.js → chunk-VJ3NQK4K.js} +5 -5
  125. package/dist/{chunk-3YKBGS3I.js → chunk-WNA6T3MA.js} +8 -8
  126. package/dist/{chunk-7CZ6YXMO.js → chunk-WVCQ75OK.js} +2 -2
  127. package/dist/{chunk-BTFTHF6Q.js → chunk-X66MXMR5.js} +2 -2
  128. package/dist/{chunk-7TAV3BFQ.js → chunk-XHD3L3JO.js} +199 -35
  129. package/dist/chunk-XHD3L3JO.js.map +1 -0
  130. package/dist/{chunk-6PALJTC2.js → chunk-XJK2WIYN.js} +3 -3
  131. package/dist/{chunk-5UOPIPZC.js → chunk-XQ7UYPVN.js} +3 -3
  132. package/dist/{chunk-HU55NPHZ.js → chunk-Y2OCKFZ3.js} +2 -2
  133. package/dist/{chunk-TCGVRKOS.js → chunk-YBFOBRTO.js} +3 -3
  134. package/dist/{chunk-I6JJ6VJS.js → chunk-YLN33ADH.js} +2 -2
  135. package/dist/{chunk-PVC2FBCQ.js → chunk-Z5YFRMG5.js} +2 -2
  136. package/dist/{chunk-EU7HDMT3.js → chunk-ZWQFOXBR.js} +2 -2
  137. package/dist/classified/index.d.ts +4 -5
  138. package/dist/classified/index.js +5 -3
  139. package/dist/{config-drift-RFEVGBKR.js → classified-marker-IO5EBW7Q.js} +4 -4
  140. package/dist/classified-marker-IO5EBW7Q.js.map +1 -0
  141. package/dist/collection-facade-3RAXG2OU.js +38 -0
  142. package/dist/{computed-6FOFXQPE.js → computed-R62HGCO4.js} +3 -3
  143. package/dist/consent/index.d.ts +3 -4
  144. package/dist/consent/index.js +9 -9
  145. package/dist/crdt/index.d.ts +3 -4
  146. package/dist/{dead-filter-RHMNYOXP.js → dead-filter-VNA4M3GP.js} +2 -2
  147. package/dist/delegation-ZKII5UBI.js +25 -0
  148. package/dist/derivations/index.d.ts +4 -5
  149. package/dist/derivations/index.js +12 -11
  150. package/dist/derive-5D2C3WG4.js +21 -0
  151. package/dist/describe/index.d.ts +4 -1
  152. package/dist/{dev-unlock-wgQ7Ci5I.d.ts → dev-unlock-DDTafVO6.d.ts} +1 -1
  153. package/dist/{enclave-KGEUW2GL.js → enclave-EUBEJGPG.js} +11 -9
  154. package/dist/executor-IL7SRNUZ.js +23 -0
  155. package/dist/executor-OUA2Y6YC.js +9 -0
  156. package/dist/executor-WAEI6PDV.js +9 -0
  157. package/dist/export-accessible-O55RKAGC.js +23 -0
  158. package/dist/extract-partition-VBGCBA6Q.js +36 -0
  159. package/dist/{fanout-sidecar-NBDKKCHT.js → fanout-sidecar-CI5BCMQM.js} +11 -11
  160. package/dist/find-FISGUWSK.js +11 -0
  161. package/dist/forget/index.d.ts +2 -2
  162. package/dist/forget/index.js +9 -9
  163. package/dist/guards/index.d.ts +4 -5
  164. package/dist/guards/index.js +4 -4
  165. package/dist/{hash-CwHnoKyW.d.ts → hash-DBkZfIBW.d.ts} +1 -1
  166. package/dist/history/index.d.ts +4 -5
  167. package/dist/history/index.js +11 -11
  168. package/dist/i18n/index.d.ts +24 -5
  169. package/dist/i18n/index.js +45 -34
  170. package/dist/i18n/index.js.map +1 -1
  171. package/dist/in/index.d.ts +2 -3
  172. package/dist/{index-CTvUp94-.d.ts → index-CyclmyDr.d.ts} +2 -3
  173. package/dist/{index-Dn5GzPg_.d.ts → index-DzhNI2vE.d.ts} +7114 -5992
  174. package/dist/index.d.ts +51 -17
  175. package/dist/index.js +403 -125
  176. package/dist/index.js.map +1 -1
  177. package/dist/indexing/index.d.ts +3 -4
  178. package/dist/indexing/index.js +4 -4
  179. package/dist/issue-EQAWIYFQ.js +19 -0
  180. package/dist/kernel/index.d.ts +3 -4
  181. package/dist/kernel/index.js +13 -12
  182. package/dist/lazy/index.d.ts +3 -4
  183. package/dist/{ledger-3LR3YO2W.js → ledger-AJA2SR3C.js} +11 -11
  184. package/dist/liberate-SEGR4JLY.js +24 -0
  185. package/dist/{link-set-NSUIX6BR.js → link-set-YBAC2DQT.js} +11 -11
  186. package/dist/materialized-views/index.d.ts +14 -5
  187. package/dist/materialized-views/index.js +17 -15
  188. package/dist/{mime-magic-CYbFNQ4h.d.ts → mime-magic-CbV1quyp.d.ts} +1 -1
  189. package/dist/noydb-AMEOU456.js +65 -0
  190. package/dist/on/index.d.ts +2 -3
  191. package/dist/on/index.js +9 -9
  192. package/dist/overlay-views/index.d.ts +4 -5
  193. package/dist/overlay-views/index.js +4 -4
  194. package/dist/periods/index.d.ts +3 -4
  195. package/dist/periods/index.js +12 -12
  196. package/dist/pod/index.d.ts +3 -4
  197. package/dist/pod/index.js +11 -11
  198. package/dist/{policy-Y7HL2KGA.js → policy-SDGRWVIL.js} +5 -5
  199. package/dist/portability/index.d.ts +3 -4
  200. package/dist/portability/index.js +8 -8
  201. package/dist/{post-register-KOFRTCDD.js → post-register-MROIUA5O.js} +6 -6
  202. package/dist/{public-envelope-NC7SPNMV.js → public-envelope-J5PLQOW2.js} +4 -4
  203. package/dist/query/index.d.ts +2 -3
  204. package/dist/query/index.js +9 -6
  205. package/dist/{read-only-facade-5ADRJVTM.js → read-only-facade-UCYNRE56.js} +2 -2
  206. package/dist/register-OVJKW7BS.js +23 -0
  207. package/dist/registry-5RJSK5AJ.js +9 -0
  208. package/dist/registry-DQRNTWRL.js +18 -0
  209. package/dist/registry-LTGLERS7.js +19 -0
  210. package/dist/request-withdrawal-27O77D2V.js +31 -0
  211. package/dist/{reveal-5Y777N5Q.js → reveal-LT3I2K4P.js} +6 -6
  212. package/dist/revoke-4N45G7D2.js +24 -0
  213. package/dist/satellites/index.d.ts +2 -3
  214. package/dist/satellites/index.js +1 -1
  215. package/dist/sealed-record/index.d.ts +3 -4
  216. package/dist/sealed-record/index.js +12 -12
  217. package/dist/session/index.d.ts +4 -5
  218. package/dist/session/index.js +9 -9
  219. package/dist/shadow/index.d.ts +3 -4
  220. package/dist/shadow/index.js +2 -2
  221. package/dist/signer-XJCOV7JD.js +25 -0
  222. package/dist/snapshots/index.d.ts +3 -4
  223. package/dist/snapshots/index.js +10 -10
  224. package/dist/{stale-77LP2EEF.js → stale-IYYXEH3U.js} +2 -2
  225. package/dist/storage-Y44CAPE6.js +23 -0
  226. package/dist/{store-coordination-provider-NJDDZ264.js → store-coordination-provider-WKGAE2WI.js} +3 -3
  227. package/dist/{subject-index-O75wKshW.d.ts → subject-index-CyOgGMJL.d.ts} +18 -0
  228. package/dist/sync/index.d.ts +2 -3
  229. package/dist/sync/index.js +9 -9
  230. package/dist/team/index.d.ts +3 -4
  231. package/dist/team/index.js +15 -15
  232. package/dist/tiers/index.d.ts +2 -3
  233. package/dist/tiers/index.js +10 -10
  234. package/dist/to/index.d.ts +2 -3
  235. package/dist/to/index.js +1 -1
  236. package/dist/{transition-guard-D5RLJv8S.d.ts → transition-guard-BOUkzQU4.d.ts} +1 -1
  237. package/dist/tx/index.d.ts +3 -4
  238. package/dist/tx/index.js +3 -3
  239. package/dist/ui/index.d.ts +4 -1
  240. package/dist/util/index.js +1 -1
  241. package/dist/{validators-C3lrVF-c.d.ts → validators-B3SalxlJ.d.ts} +1 -1
  242. package/dist/{vault-diff-_LSIcOMv.d.ts → vault-diff-Dt9NkLzw.d.ts} +1 -1
  243. package/dist/{verify-CAYGXYNO.js → verify-GH6CWVSW.js} +5 -5
  244. package/dist/{walk-SMAE4IEI.js → walk-76UCFXYV.js} +11 -11
  245. package/dist/with/index.d.ts +3 -4
  246. package/dist/with/index.js +11 -11
  247. package/dist/{with-materialized-view-Xv1-9Bh0.d.ts → with-materialized-view-BP33v1Z6.d.ts} +1 -1
  248. package/dist/{with-overlayed-view-CuWhq_-C.d.ts → with-overlayed-view-DntFpOKN.d.ts} +1 -1
  249. package/dist/{with-rollup-K_iwal4b.d.ts → with-rollup-ClCHO6-4.d.ts} +1 -1
  250. package/dist/withdraw-accessible-6J2UH3IN.js +28 -0
  251. package/package.json +3 -3
  252. package/dist/api-JDWL67WL.js +0 -20
  253. package/dist/chunk-44DV37ZV.js.map +0 -1
  254. package/dist/chunk-47C4CI7R.js +0 -108
  255. package/dist/chunk-47C4CI7R.js.map +0 -1
  256. package/dist/chunk-4VDFUBTS.js.map +0 -1
  257. package/dist/chunk-56JB2BGI.js.map +0 -1
  258. package/dist/chunk-5GQE5IDB.js.map +0 -1
  259. package/dist/chunk-6P5AJ2ZS.js.map +0 -1
  260. package/dist/chunk-6Z435B6N.js.map +0 -1
  261. package/dist/chunk-7KTL4RHZ.js +0 -120
  262. package/dist/chunk-7KTL4RHZ.js.map +0 -1
  263. package/dist/chunk-7TAV3BFQ.js.map +0 -1
  264. package/dist/chunk-BASCPHNM.js.map +0 -1
  265. package/dist/chunk-BM6E4MUT.js.map +0 -1
  266. package/dist/chunk-OJ64XMPJ.js.map +0 -1
  267. package/dist/chunk-PMMV5SQC.js.map +0 -1
  268. package/dist/chunk-PPPZIBKY.js.map +0 -1
  269. package/dist/chunk-REWTMYSF.js.map +0 -1
  270. package/dist/chunk-RUIMKQTA.js.map +0 -1
  271. package/dist/chunk-UB3XHGFG.js.map +0 -1
  272. package/dist/chunk-VK6OC22R.js.map +0 -1
  273. package/dist/chunk-VVLOWY74.js.map +0 -1
  274. package/dist/chunk-X6VNIRHS.js.map +0 -1
  275. package/dist/chunk-XBPUVQDO.js.map +0 -1
  276. package/dist/chunk-YTCCC6NG.js.map +0 -1
  277. package/dist/collection-facade-EJVIN2BY.js +0 -39
  278. package/dist/config-drift-RFEVGBKR.js.map +0 -1
  279. package/dist/delegation-IHXOASHV.js +0 -25
  280. package/dist/derive-CD3ZVIXK.js +0 -21
  281. package/dist/describe-C6iHNlqJ.d.ts +0 -162
  282. package/dist/executor-EUPYHCLU.js +0 -9
  283. package/dist/executor-KZ4B3PRT.js +0 -9
  284. package/dist/executor-MHUM2VZK.js +0 -21
  285. package/dist/export-accessible-Z3NSZZHN.js +0 -23
  286. package/dist/extract-partition-VSKT35JG.js +0 -36
  287. package/dist/find-OH4BEULF.js +0 -11
  288. package/dist/issue-AEOL6RXA.js +0 -19
  289. package/dist/liberate-XSEPRWEA.js +0 -24
  290. package/dist/noydb-POVTIVQ6.js +0 -62
  291. package/dist/register-3D6R2MKN.js +0 -23
  292. package/dist/registry-AI4E46PD.js +0 -19
  293. package/dist/registry-HSNQ4NBP.js +0 -9
  294. package/dist/registry-WIX6QCV5.js +0 -17
  295. package/dist/request-withdrawal-GU4XS2R5.js +0 -31
  296. package/dist/revoke-ZFETCLYV.js +0 -24
  297. package/dist/signer-GAIMQQ2J.js +0 -25
  298. package/dist/storage-KEXIXLGM.js +0 -23
  299. package/dist/withdraw-accessible-Q7BULAN5.js +0 -28
  300. /package/dist/{api-JDWL67WL.js.map → api-HV4PDUWF.js.map} +0 -0
  301. /package/dist/{backup-WRGNTGJF.js.map → backup-ODXO7OGA.js.map} +0 -0
  302. /package/dist/{chunk-XW5LZYV4.js.map → chunk-2HVUKRNE.js.map} +0 -0
  303. /package/dist/{chunk-VFQOE76I.js.map → chunk-2KOSJTMU.js.map} +0 -0
  304. /package/dist/{chunk-2PJB6H3H.js.map → chunk-2UQ4RMHV.js.map} +0 -0
  305. /package/dist/{chunk-VIWOGJ2O.js.map → chunk-34RRRIC3.js.map} +0 -0
  306. /package/dist/{chunk-LFGJG4XZ.js.map → chunk-3I4KYWNP.js.map} +0 -0
  307. /package/dist/{chunk-723XB5NX.js.map → chunk-42KVY3OC.js.map} +0 -0
  308. /package/dist/{chunk-62APEMF3.js.map → chunk-4G3IT7J7.js.map} +0 -0
  309. /package/dist/{chunk-W3JABOVB.js.map → chunk-4RQ62VSR.js.map} +0 -0
  310. /package/dist/{chunk-WPNP3NF5.js.map → chunk-4ZSGSRBI.js.map} +0 -0
  311. /package/dist/{chunk-C4NOLA5X.js.map → chunk-5GAX2QOH.js.map} +0 -0
  312. /package/dist/{chunk-5HRJQSKN.js.map → chunk-5SAZMBW7.js.map} +0 -0
  313. /package/dist/{chunk-II6DLDZM.js.map → chunk-5TZZUL5X.js.map} +0 -0
  314. /package/dist/{chunk-TUL5YQWF.js.map → chunk-6CU3FN74.js.map} +0 -0
  315. /package/dist/{chunk-UWZ7O4NR.js.map → chunk-6MWUANRF.js.map} +0 -0
  316. /package/dist/{chunk-U7LV2DUN.js.map → chunk-6ULCYCMU.js.map} +0 -0
  317. /package/dist/{chunk-GDOOG5YQ.js.map → chunk-7IZQTCTR.js.map} +0 -0
  318. /package/dist/{chunk-TIAYXOEI.js.map → chunk-A4MAD6PO.js.map} +0 -0
  319. /package/dist/{chunk-5HZULLHE.js.map → chunk-AUR7MRHA.js.map} +0 -0
  320. /package/dist/{chunk-P2PEPSPK.js.map → chunk-CJEMA2Z6.js.map} +0 -0
  321. /package/dist/{chunk-L6Q5NA22.js.map → chunk-CTSFKDGA.js.map} +0 -0
  322. /package/dist/{chunk-J5YUA6JB.js.map → chunk-CWCCYH34.js.map} +0 -0
  323. /package/dist/{chunk-NTPWQH4S.js.map → chunk-DEYAO3N6.js.map} +0 -0
  324. /package/dist/{chunk-M3OYTM5Z.js.map → chunk-DFIBOSOQ.js.map} +0 -0
  325. /package/dist/{chunk-FZK3JJJK.js.map → chunk-E5AHO65E.js.map} +0 -0
  326. /package/dist/{chunk-F3EKFGUS.js.map → chunk-FC3XK5JT.js.map} +0 -0
  327. /package/dist/{chunk-3KBK5LU4.js.map → chunk-GX2BYNCT.js.map} +0 -0
  328. /package/dist/{chunk-55LSDABW.js.map → chunk-HBTT7YQX.js.map} +0 -0
  329. /package/dist/{chunk-PYIUDUGS.js.map → chunk-HOCEGVGQ.js.map} +0 -0
  330. /package/dist/{chunk-5JQMX2EH.js.map → chunk-ICV32FPK.js.map} +0 -0
  331. /package/dist/{chunk-37JZR7CY.js.map → chunk-IUKGIB2Q.js.map} +0 -0
  332. /package/dist/{chunk-OWGAXPRE.js.map → chunk-IWTYFS3D.js.map} +0 -0
  333. /package/dist/{chunk-FCOZ7DEC.js.map → chunk-JC5R7P44.js.map} +0 -0
  334. /package/dist/{chunk-IARAK3PK.js.map → chunk-KBBWY46Y.js.map} +0 -0
  335. /package/dist/{chunk-RNYDHIQL.js.map → chunk-KBF5GSGX.js.map} +0 -0
  336. /package/dist/{chunk-GLVXQU3E.js.map → chunk-KNXN47MO.js.map} +0 -0
  337. /package/dist/{chunk-J7OH6R4K.js.map → chunk-KXKLKJW4.js.map} +0 -0
  338. /package/dist/{chunk-PAJCRV7O.js.map → chunk-KYC4LIEU.js.map} +0 -0
  339. /package/dist/{chunk-R4IVPJHN.js.map → chunk-LEOXZY36.js.map} +0 -0
  340. /package/dist/{chunk-25G7PUTA.js.map → chunk-M5I354EE.js.map} +0 -0
  341. /package/dist/{chunk-26FSVNBL.js.map → chunk-MK2BSS44.js.map} +0 -0
  342. /package/dist/{chunk-UMH35AQV.js.map → chunk-MSVY7ULZ.js.map} +0 -0
  343. /package/dist/{chunk-5YBUFCFF.js.map → chunk-NNWK3PSY.js.map} +0 -0
  344. /package/dist/{chunk-X5QZAJDB.js.map → chunk-NSZ6J5DF.js.map} +0 -0
  345. /package/dist/{chunk-I6URUNTD.js.map → chunk-NUEFXLZU.js.map} +0 -0
  346. /package/dist/{chunk-DCVVCJVB.js.map → chunk-OQAODTYR.js.map} +0 -0
  347. /package/dist/{chunk-QYMMMKOO.js.map → chunk-OV4CMJGR.js.map} +0 -0
  348. /package/dist/{chunk-V76PHWLE.js.map → chunk-PEDZFFKW.js.map} +0 -0
  349. /package/dist/{chunk-BJ2XF2RC.js.map → chunk-Q2KVKTC2.js.map} +0 -0
  350. /package/dist/{chunk-QABECTNN.js.map → chunk-QTXQ6RNZ.js.map} +0 -0
  351. /package/dist/{chunk-P6TZ3IVN.js.map → chunk-RJ5522XX.js.map} +0 -0
  352. /package/dist/{chunk-CHK5VVMI.js.map → chunk-S6AQXDN4.js.map} +0 -0
  353. /package/dist/{chunk-MOQ5M46U.js.map → chunk-SZCHEDML.js.map} +0 -0
  354. /package/dist/{chunk-FWART3VA.js.map → chunk-VJ3NQK4K.js.map} +0 -0
  355. /package/dist/{chunk-3YKBGS3I.js.map → chunk-WNA6T3MA.js.map} +0 -0
  356. /package/dist/{chunk-7CZ6YXMO.js.map → chunk-WVCQ75OK.js.map} +0 -0
  357. /package/dist/{chunk-BTFTHF6Q.js.map → chunk-X66MXMR5.js.map} +0 -0
  358. /package/dist/{chunk-6PALJTC2.js.map → chunk-XJK2WIYN.js.map} +0 -0
  359. /package/dist/{chunk-5UOPIPZC.js.map → chunk-XQ7UYPVN.js.map} +0 -0
  360. /package/dist/{chunk-HU55NPHZ.js.map → chunk-Y2OCKFZ3.js.map} +0 -0
  361. /package/dist/{chunk-TCGVRKOS.js.map → chunk-YBFOBRTO.js.map} +0 -0
  362. /package/dist/{chunk-I6JJ6VJS.js.map → chunk-YLN33ADH.js.map} +0 -0
  363. /package/dist/{chunk-PVC2FBCQ.js.map → chunk-Z5YFRMG5.js.map} +0 -0
  364. /package/dist/{chunk-EU7HDMT3.js.map → chunk-ZWQFOXBR.js.map} +0 -0
  365. /package/dist/{collection-facade-EJVIN2BY.js.map → collection-facade-3RAXG2OU.js.map} +0 -0
  366. /package/dist/{computed-6FOFXQPE.js.map → computed-R62HGCO4.js.map} +0 -0
  367. /package/dist/{dead-filter-RHMNYOXP.js.map → dead-filter-VNA4M3GP.js.map} +0 -0
  368. /package/dist/{delegation-IHXOASHV.js.map → delegation-ZKII5UBI.js.map} +0 -0
  369. /package/dist/{derive-CD3ZVIXK.js.map → derive-5D2C3WG4.js.map} +0 -0
  370. /package/dist/{enclave-KGEUW2GL.js.map → enclave-EUBEJGPG.js.map} +0 -0
  371. /package/dist/{executor-EUPYHCLU.js.map → executor-IL7SRNUZ.js.map} +0 -0
  372. /package/dist/{executor-KZ4B3PRT.js.map → executor-OUA2Y6YC.js.map} +0 -0
  373. /package/dist/{executor-MHUM2VZK.js.map → executor-WAEI6PDV.js.map} +0 -0
  374. /package/dist/{export-accessible-Z3NSZZHN.js.map → export-accessible-O55RKAGC.js.map} +0 -0
  375. /package/dist/{extract-partition-VSKT35JG.js.map → extract-partition-VBGCBA6Q.js.map} +0 -0
  376. /package/dist/{fanout-sidecar-NBDKKCHT.js.map → fanout-sidecar-CI5BCMQM.js.map} +0 -0
  377. /package/dist/{find-OH4BEULF.js.map → find-FISGUWSK.js.map} +0 -0
  378. /package/dist/{issue-AEOL6RXA.js.map → issue-EQAWIYFQ.js.map} +0 -0
  379. /package/dist/{ledger-3LR3YO2W.js.map → ledger-AJA2SR3C.js.map} +0 -0
  380. /package/dist/{liberate-XSEPRWEA.js.map → liberate-SEGR4JLY.js.map} +0 -0
  381. /package/dist/{link-set-NSUIX6BR.js.map → link-set-YBAC2DQT.js.map} +0 -0
  382. /package/dist/{noydb-POVTIVQ6.js.map → noydb-AMEOU456.js.map} +0 -0
  383. /package/dist/{policy-Y7HL2KGA.js.map → policy-SDGRWVIL.js.map} +0 -0
  384. /package/dist/{post-register-KOFRTCDD.js.map → post-register-MROIUA5O.js.map} +0 -0
  385. /package/dist/{public-envelope-NC7SPNMV.js.map → public-envelope-J5PLQOW2.js.map} +0 -0
  386. /package/dist/{read-only-facade-5ADRJVTM.js.map → read-only-facade-UCYNRE56.js.map} +0 -0
  387. /package/dist/{register-3D6R2MKN.js.map → register-OVJKW7BS.js.map} +0 -0
  388. /package/dist/{registry-AI4E46PD.js.map → registry-5RJSK5AJ.js.map} +0 -0
  389. /package/dist/{registry-HSNQ4NBP.js.map → registry-DQRNTWRL.js.map} +0 -0
  390. /package/dist/{registry-WIX6QCV5.js.map → registry-LTGLERS7.js.map} +0 -0
  391. /package/dist/{request-withdrawal-GU4XS2R5.js.map → request-withdrawal-27O77D2V.js.map} +0 -0
  392. /package/dist/{reveal-5Y777N5Q.js.map → reveal-LT3I2K4P.js.map} +0 -0
  393. /package/dist/{revoke-ZFETCLYV.js.map → revoke-4N45G7D2.js.map} +0 -0
  394. /package/dist/{signer-GAIMQQ2J.js.map → signer-XJCOV7JD.js.map} +0 -0
  395. /package/dist/{stale-77LP2EEF.js.map → stale-IYYXEH3U.js.map} +0 -0
  396. /package/dist/{storage-KEXIXLGM.js.map → storage-Y44CAPE6.js.map} +0 -0
  397. /package/dist/{store-coordination-provider-NJDDZ264.js.map → store-coordination-provider-WKGAE2WI.js.map} +0 -0
  398. /package/dist/{verify-CAYGXYNO.js.map → verify-GH6CWVSW.js.map} +0 -0
  399. /package/dist/{walk-SMAE4IEI.js.map → walk-76UCFXYV.js.map} +0 -0
  400. /package/dist/{withdraw-accessible-Q7BULAN5.js.map → withdraw-accessible-6J2UH3IN.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/with-shape/classified/descriptor.ts","../src/with-shape/classified/errors.ts","../src/with-shape/classified/resolve.ts","../src/with-shape/classified/write.ts","../src/with-shape/classified/strategy.ts"],"sourcesContent":["/**\n * Classified fields — behavioral sensitive-field descriptors (stage 1).\n * Design: docs/superpowers/specs/2026-07-04-classified-fields-design.md\n * Law: open on write, declarative on read — read-side behavior is this\n * closed vocabulary; there are no read-side callbacks.\n * @module\n */\n\nexport type ClassifiedStorage = 'recoverable' | 'never' | 'digest-only'\n\nexport type ClassifiedList =\n | { readonly kind: 'omit' }\n | { readonly kind: 'mask'; readonly pattern: string }\n | { readonly kind: 'rider'; readonly rider: string }\n\nexport type ClassifiedRider = (value: unknown) => unknown\n\nexport interface ClassifiedFieldSpec {\n readonly _noydbClassified: true\n readonly preset: string\n readonly storage: ClassifiedStorage\n readonly list: ClassifiedList\n readonly sensitivity: 'pii' | 'secret'\n /** Write-time safe projections; companion field name is `<field>_<rider>`. */\n readonly riders?: Record<string, ClassifiedRider>\n /** Write-time validator: error message, or null when valid. */\n readonly validate?: (value: unknown) => string | null\n /** Digest-only verify policy (stage 2). Mode both sides normalize under. */\n readonly verifyNormalize?: 'password' | 'secret-answer'\n /** Decorate ok:true verdicts with mustRotate after this many days (I1). */\n readonly rotateDays?: number\n /** Refuse reuse of the last N values on rotate (cap 8, spec Q4). */\n readonly notLastN?: number\n /** Member of the collection's matchGroup (secretAnswer preset). */\n readonly verifyGroupMember?: true\n /**\n * Opt into a store-visible blind-index (`_bidx`) tag so equal values become\n * queryable/joinable while staying digest-only. Digest-only knob (R7); gated\n * behind the collection's `acknowledgeEquatableRisk` door (R8). Equal values\n * produce equal tags — a partition leak a DEK holder can offline-dictionary\n * at the PBKDF2 floor. Absent/false ⇒ refused-by-default.\n */\n readonly equatable?: true\n}\n\nexport interface ClassifiedGroup {\n readonly _noydbClassifiedGroup: true\n readonly preset: string\n /** member record-field name -> spec (differential per-member policy). */\n readonly members: Record<string, ClassifiedFieldSpec>\n}\n\nexport type ClassifiedEntry = ClassifiedFieldSpec | ClassifiedGroup\n\nexport function isClassifiedFieldSpec(x: unknown): x is ClassifiedFieldSpec {\n return typeof x === 'object' && x !== null\n && (x as { _noydbClassified?: unknown })._noydbClassified === true\n}\n\nexport function isClassifiedGroup(x: unknown): x is ClassifiedGroup {\n return typeof x === 'object' && x !== null\n && (x as { _noydbClassifiedGroup?: unknown })._noydbClassifiedGroup === true\n}\n","/**\n * Configuration/write errors for classified fields. @module\n *\n * `ClassifiedConfigError` / `ClassifiedRevealError` moved to `kernel/errors.ts`\n * (stage 2) so `kernel/enclave/classify/*` can throw them without importing\n * with-*. Re-exported here under the same names so existing import paths\n * keep working.\n */\nexport { ClassifiedConfigError, ClassifiedRevealError, ClassifiedVerifyError, ClassifiedRotationError } from '../../kernel/errors.js'\n\nexport class ClassifiedNeverStoredError extends Error {\n constructor(public readonly collection: string, public readonly field: string) {\n super(`Field \"${field}\" in collection \"${collection}\" is classified storage:'never' `\n + `(e.g. a CVC) and must not be persisted. Validate it at capture and drop it before put().`)\n this.name = 'ClassifiedNeverStoredError'\n }\n}\n\nexport class ClassifiedValidationError extends Error {\n constructor(public readonly collection: string, public readonly field: string, detail: string) {\n super(`Classified field \"${field}\" in collection \"${collection}\" failed validation: ${detail}`)\n this.name = 'ClassifiedValidationError'\n }\n}\n","/** Flatten a classifiedFields config into a per-field map + rider computed entries. @module */\n\nimport { isClassifiedGroup, type ClassifiedEntry, type ClassifiedFieldSpec } from './descriptor.js'\nimport { ClassifiedConfigError } from './errors.js'\n\nexport type { ClassifiedEntry, ClassifiedFieldSpec, ClassifiedGroup, ClassifiedList } from './descriptor.js'\nexport { ClassifiedConfigError } from './errors.js'\n\nexport interface ResolvedClassified {\n readonly byField: Record<string, ClassifiedFieldSpec>\n readonly riderComputed: Record<string, (record: Record<string, unknown>) => unknown>\n}\n\nexport function resolveClassifiedFields(\n collection: string,\n config: Record<string, ClassifiedEntry>,\n): ResolvedClassified {\n const byField: Record<string, ClassifiedFieldSpec> = {}\n const claim = (field: string, spec: ClassifiedFieldSpec): void => {\n if (byField[field] !== undefined) {\n throw new ClassifiedConfigError(collection,\n `field \"${field}\" is claimed twice — storage forms are mutually exclusive per field (R5): ` +\n `a field is digest-only OR recoverable OR never, exactly one`)\n }\n byField[field] = spec\n }\n for (const [key, entry] of Object.entries(config)) {\n if (isClassifiedGroup(entry)) {\n for (const [field, spec] of Object.entries(entry.members)) claim(field, spec)\n } else {\n claim(key, entry)\n }\n }\n const riderComputed: Record<string, (record: Record<string, unknown>) => unknown> = {}\n for (const [field, spec] of Object.entries(byField)) {\n for (const [name, rider] of Object.entries(spec.riders ?? {})) {\n const companion = `${field}_${name}`\n if (byField[companion] !== undefined || riderComputed[companion] !== undefined) {\n throw new ClassifiedConfigError(collection, `rider companion \"${companion}\" collides with a declared field`)\n }\n riderComputed[companion] = (record) =>\n record[field] === undefined ? undefined : rider(record[field])\n }\n }\n return { byField, riderComputed }\n}\n","/** Write-path enforcement: storage:'never' rejection + preset validators.\n * Runs BEFORE riders/computed and BEFORE schema validation. Pure. @module */\n\nimport type { ClassifiedFieldSpec } from './descriptor.js'\nimport { ClassifiedNeverStoredError, ClassifiedValidationError } from './errors.js'\n\nexport function enforceClassifiedWrite(\n record: Record<string, unknown>,\n byField: Record<string, ClassifiedFieldSpec>,\n collection: string,\n): void {\n for (const [field, spec] of Object.entries(byField)) {\n const value = record[field]\n if (value === undefined) continue\n if (value === null && spec.storage === 'digest-only') continue // explicit clear (C6 branch 3)\n if (spec.storage === 'never') throw new ClassifiedNeverStoredError(collection, field)\n const problem = spec.validate?.(value) ?? null\n if (problem !== null) throw new ClassifiedValidationError(collection, field, problem)\n }\n}\n","/** The ② capability seam for classified read-egress ops (stage 1: reveal; stage 2: verify). @module */\nimport type { ClassifiedFieldSpec } from './descriptor.js'\nimport { ClassifiedNotEnabledError } from '../../kernel/errors.js'\nimport type { EncryptedEnvelope } from '../../kernel/types.js'\nimport type { EnclaveKey } from '../../kernel/enclave/index.js'\n\nexport type { ClassifiedVerdict } from '../../kernel/types.js'\nimport type { ClassifiedVerdict } from '../../kernel/types.js'\n\nexport interface ClassifiedRevealCtx {\n readonly collection: string\n readonly spec: ClassifiedFieldSpec\n /** True on an encrypted collection — false selects the plaintext-body read. */\n readonly encrypted: boolean\n readonly getEnvelope: (id: string) => Promise<EncryptedEnvelope | null>\n readonly resolveCek: (env: EncryptedEnvelope) => Promise<EnclaveKey | undefined>\n readonly getDEK: () => Promise<EnclaveKey>\n readonly onAccess?: ((op: 'reveal', id: string) => Promise<void>) | undefined\n}\n\nexport interface ClassifiedVerifyCtx {\n readonly collection: string\n readonly spec: ClassifiedFieldSpec\n readonly getEnvelope: (id: string) => Promise<EncryptedEnvelope | null> // raw envelope, NOT a decrypted view\n readonly resolveCek: (env: EncryptedEnvelope) => Promise<EnclaveKey | undefined>\n readonly getDEK: () => Promise<EnclaveKey>\n readonly now: () => number // injected (Q7)\n /** Group members resolved by the collection (matchGroup only). */\n readonly groupMembers?: ReadonlyArray<{ readonly field: string; readonly spec: ClassifiedFieldSpec }>\n readonly onAccess?: ((op: 'verify' | 'find', id: string) => Promise<void>) | undefined\n}\n\nexport interface ClassifiedStrategy {\n reveal(ctx: ClassifiedRevealCtx, id: string, field: string): Promise<unknown>\n verify(ctx: ClassifiedVerifyCtx, id: string, field: string, candidate: string): Promise<ClassifiedVerdict>\n verifyText(ctx: ClassifiedVerifyCtx, id: string, field: string, candidate: string): Promise<ClassifiedVerdict>\n matchGroup(ctx: ClassifiedVerifyCtx, id: string, answers: Record<string, string>,\n opts: { readonly min: number }): Promise<{ readonly passed: boolean }>\n computeTarget(ctx: ClassifiedVerifyCtx, field: string, candidate: string, costByte?: number): Promise<string | null>\n}\n\nexport const NO_CLASSIFIED: ClassifiedStrategy = {\n async reveal() { throw new ClassifiedNotEnabledError() },\n async verify() { throw new ClassifiedNotEnabledError() },\n async verifyText() { throw new ClassifiedNotEnabledError() },\n async matchGroup() { throw new ClassifiedNotEnabledError() },\n async computeTarget() { throw new ClassifiedNotEnabledError() },\n}\n"],"mappings":";;;;;;AAsDO,SAAS,sBAAsB,GAAsC;AAC1E,SAAO,OAAO,MAAM,YAAY,MAAM,QAChC,EAAqC,qBAAqB;AAClE;AAEO,SAAS,kBAAkB,GAAkC;AAClE,SAAO,OAAO,MAAM,YAAY,MAAM,QAChC,EAA0C,0BAA0B;AAC5E;;;ACpDO,IAAM,6BAAN,cAAyC,MAAM;AAAA,EACpD,YAA4B,YAAoC,OAAe;AAC7E,UAAM,UAAU,KAAK,oBAAoB,UAAU,0HAC2C;AAFpE;AAAoC;AAG9D,SAAK,OAAO;AAAA,EACd;AAAA,EAJ4B;AAAA,EAAoC;AAKlE;AAEO,IAAM,4BAAN,cAAwC,MAAM;AAAA,EACnD,YAA4B,YAAoC,OAAe,QAAgB;AAC7F,UAAM,qBAAqB,KAAK,oBAAoB,UAAU,wBAAwB,MAAM,EAAE;AADpE;AAAoC;AAE9D,SAAK,OAAO;AAAA,EACd;AAAA,EAH4B;AAAA,EAAoC;AAIlE;;;ACVO,SAAS,wBACd,YACA,QACoB;AACpB,QAAM,UAA+C,CAAC;AACtD,QAAM,QAAQ,CAAC,OAAe,SAAoC;AAChE,QAAI,QAAQ,KAAK,MAAM,QAAW;AAChC,YAAM,IAAI;AAAA,QAAsB;AAAA,QAC9B,UAAU,KAAK;AAAA,MAC8C;AAAA,IACjE;AACA,YAAQ,KAAK,IAAI;AAAA,EACnB;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,kBAAkB,KAAK,GAAG;AAC5B,iBAAW,CAAC,OAAO,IAAI,KAAK,OAAO,QAAQ,MAAM,OAAO,EAAG,OAAM,OAAO,IAAI;AAAA,IAC9E,OAAO;AACL,YAAM,KAAK,KAAK;AAAA,IAClB;AAAA,EACF;AACA,QAAM,gBAA8E,CAAC;AACrF,aAAW,CAAC,OAAO,IAAI,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,eAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,GAAG;AAC7D,YAAM,YAAY,GAAG,KAAK,IAAI,IAAI;AAClC,UAAI,QAAQ,SAAS,MAAM,UAAa,cAAc,SAAS,MAAM,QAAW;AAC9E,cAAM,IAAI,sBAAsB,YAAY,oBAAoB,SAAS,kCAAkC;AAAA,MAC7G;AACA,oBAAc,SAAS,IAAI,CAAC,WAC1B,OAAO,KAAK,MAAM,SAAY,SAAY,MAAM,OAAO,KAAK,CAAC;AAAA,IACjE;AAAA,EACF;AACA,SAAO,EAAE,SAAS,cAAc;AAClC;;;ACvCO,SAAS,uBACd,QACA,SACA,YACM;AACN,aAAW,CAAC,OAAO,IAAI,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAM,QAAQ,OAAO,KAAK;AAC1B,QAAI,UAAU,OAAW;AACzB,QAAI,UAAU,QAAQ,KAAK,YAAY,cAAe;AACtD,QAAI,KAAK,YAAY,QAAS,OAAM,IAAI,2BAA2B,YAAY,KAAK;AACpF,UAAM,UAAU,KAAK,WAAW,KAAK,KAAK;AAC1C,QAAI,YAAY,KAAM,OAAM,IAAI,0BAA0B,YAAY,OAAO,OAAO;AAAA,EACtF;AACF;;;ACsBO,IAAM,gBAAoC;AAAA,EAC/C,MAAM,SAAS;AAAE,UAAM,IAAI,0BAA0B;AAAA,EAAE;AAAA,EACvD,MAAM,SAAS;AAAE,UAAM,IAAI,0BAA0B;AAAA,EAAE;AAAA,EACvD,MAAM,aAAa;AAAE,UAAM,IAAI,0BAA0B;AAAA,EAAE;AAAA,EAC3D,MAAM,aAAa;AAAE,UAAM,IAAI,0BAA0B;AAAA,EAAE;AAAA,EAC3D,MAAM,gBAAgB;AAAE,UAAM,IAAI,0BAA0B;AAAA,EAAE;AAChE;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/with-audit/tiers/active.ts","../src/with-audit/tiers/strategy.ts","../src/with-audit/tiers/index.ts"],"sourcesContent":["/**\n * Enable the hierarchical-tiers capability.\n * Pass to `createNoydb({ tiersStrategy: withTiers() })` to make a collection's\n * `putAtTier` / `getAtTier` / `listAtTier` / `elevate` / `demote` methods live.\n * The tier read/write/re-key engine is dynamically imported here, so it stays\n * out of the floor bundle until opted in.\n */\nimport type { TiersStrategy } from './strategy.js'\n\nexport function withTiers(): TiersStrategy {\n return {\n async putAtTier(ctx, id, record, tier, opts) {\n const { putAtTier } = await import('./index.js')\n return putAtTier(ctx, id, record, tier, opts)\n },\n async getAtTier(ctx, id) {\n const { getAtTier } = await import('./index.js')\n return getAtTier(ctx, id)\n },\n async listAtTier(ctx) {\n const { listAtTier } = await import('./index.js')\n return listAtTier(ctx)\n },\n async elevate(ctx, id, toTier) {\n const { elevate } = await import('./index.js')\n return elevate(ctx, id, toTier)\n },\n async demote(ctx, id, toTier) {\n const { demote } = await import('./index.js')\n return demote(ctx, id, toTier)\n },\n }\n}\n","/**\n * Tiers capability strategy — the five on-demand collection-level tier\n * operations the `Collection` routes through. The active engine\n * ({@link withTiers}) dynamically imports the tier cores (keeping them out of\n * the floor bundle); {@link NO_TIERS} throws. Collection always builds its\n * per-call {@link TiersContext} and delegates here, so an un-opted-in caller\n * hits `NO_TIERS`'s throw.\n * @internal\n */\nimport type { GhostRecord } from '../../kernel/types.js'\nimport type { TiersContext } from './index.js'\nimport { TiersNotEnabledError } from '../../kernel/errors.js'\n\nexport interface TiersStrategy {\n putAtTier<T>(\n ctx: TiersContext<T>,\n id: string,\n record: T,\n tier: number,\n opts?: { elevation?: { reason: string; fromTier: number }; source?: string; sourceTs?: string },\n ): Promise<void>\n getAtTier<T>(ctx: TiersContext<T>, id: string): Promise<T | GhostRecord | null>\n listAtTier<T>(ctx: TiersContext<T>): Promise<Array<{ id: string; tier: number; readable: boolean }>>\n elevate<T>(ctx: TiersContext<T>, id: string, toTier: number): Promise<void>\n demote<T>(ctx: TiersContext<T>, id: string, toTier: number): Promise<void>\n}\n\n/**\n * No-op stub — the floor default. Every capability method throws\n * {@link TiersNotEnabledError}; opt in with `tiersStrategy: withTiers()` in\n * createNoydb. @internal\n */\nexport const NO_TIERS: TiersStrategy = {\n async putAtTier() { throw new TiersNotEnabledError() },\n async getAtTier() { throw new TiersNotEnabledError() },\n async listAtTier() { throw new TiersNotEnabledError() },\n async elevate() { throw new TiersNotEnabledError() },\n async demote() { throw new TiersNotEnabledError() },\n}\n","/**\n * Hierarchical access — the collection-level tier operations\n * (`putAtTier` / `getAtTier` / `listAtTier` / `elevate` / `demote`).\n *\n * A collection opted into `{ tiers: [...] }` stamps `_tier: N` on each envelope\n * and encrypts its body under the tier-N DEK. These helpers are the read/write\n * surface for that scheme: write at a tier, read with tier-aware visibility\n * (invisibility vs. ghost), and move a record up (`elevate`) or down (`demote`)\n * the tier ladder by re-wrapping its body key.\n *\n * Each function takes a small {@link TiersContext} (the exact `this.*` the\n * moving methods touched) instead of `this`, mirroring the `record-keys/`\n * siblings. Behaviour is byte-identical to the inline code it replaced.\n *\n * The crux is `cekCache`: `elevate`/`demote`/`getAtTier` write the SAME `Lru`\n * reference `Collection` owns (never a copy) so a per-record CEK re-wrap stays\n * synchronous with the cache the kernel's write/read path also mutates. The\n * cross-tier event sink stays collection-resident and is reached via the\n * `emitCrossTierEvent` callback.\n *\n * Internal service — not exported as a `@noy-db/hub/*` subpath.\n */\nexport { withTiers } from './active.js'\nexport { NO_TIERS, type TiersStrategy } from './strategy.js'\nexport { TiersNotEnabledError } from '../../kernel/errors.js'\nimport { encrypt, decrypt, unwrapCek, rewrapBodyToDek, type RecordCodec, type EnclaveKey, type SealedShredSlot } from '../../kernel/enclave/index.js'\nimport { TierDemoteDeniedError } from '../../kernel/errors.js'\nimport { dekKey, assertTierAccess } from '../../with-party/team/tiers.js'\nimport type { UnlockedKeyring } from '../../with-party/team/keyring.js'\nimport type { Lru } from '../../kernel/cache/index.js'\nimport {\n NOYDB_FORMAT_VERSION,\n type NoydbStore,\n type EncryptedEnvelope,\n type GhostRecord,\n type TierMode,\n type CrossTierAccessEvent,\n} from '../../kernel/types.js'\n\n/** Everything the moving tier methods touched on `this.*`, as a flat context. */\nexport interface TiersContext<T> {\n /** Collection name — the crypto AAD scope and tier-DEK key prefix. */\n readonly name: string\n /** Vault namespace the records live under. */\n readonly vault: string\n /** The ciphertext store. */\n readonly adapter: NoydbStore\n /** The caller's unlocked keyring (tier-DEK holdings + role + userId). */\n readonly keyring: UnlockedKeyring\n /** The record codec — decrypts a tier-0 envelope to T. */\n readonly codec: RecordCodec<T>\n /**\n * The collection's per-record CEK cache (SHARED reference, not a copy).\n * `elevate`/`demote`/`getAtTier` re-wrap a record's CEK and `set` it here so\n * the move stays synchronous with the cache the kernel's read/write path\n * owns. `null` → no caching.\n */\n readonly cekCache: Lru<string, EnclaveKey> | null\n /** Emit `_source`/`_sourceTs` provenance fields when a source is supplied. */\n readonly provenance: boolean\n /** Declared tiers, or null when the feature is off. */\n readonly tiers: ReadonlySet<number> | null\n /** Above-tier read visibility mode (`'invisibility'` | `'ghost'`). */\n readonly tierMode: TierMode\n /** Resolve a tier DEK by its `dekKey(name, tier)`. */\n getDEK(key: string): Promise<EnclaveKey>\n /** Fire a cross-tier access event (sink stays collection-resident). */\n emitCrossTierEvent(event: CrossTierAccessEvent): void\n}\n\nexport function assertTiersEnabled<T>(ctx: TiersContext<T>): void {\n if (!ctx.tiers) {\n throw new Error(\n `Collection \"${ctx.name}\": hierarchical tiers are not enabled. ` +\n `Pass { tiers: [0, 1, 2, …] } to vault.collection() to opt in.`,\n )\n }\n}\n\nexport function assertDeclaredTier<T>(ctx: TiersContext<T>, tier: number): void {\n if (tier < 0 || !Number.isInteger(tier)) {\n throw new Error(`Collection \"${ctx.name}\": tier must be a non-negative integer, got ${tier}`)\n }\n if (tier === 0) return\n if (!ctx.tiers || !ctx.tiers.has(tier)) {\n throw new Error(\n `Collection \"${ctx.name}\": tier ${tier} is not declared in { tiers: [...] }`,\n )\n }\n}\n\nfunction isElevatorOrOwner<T>(ctx: TiersContext<T>): boolean {\n return ctx.keyring.role === 'owner' || ctx.keyring.role === 'admin'\n}\n\n/**\n * tier-aware put. Encrypts the record with the collection's tier-N DEK and\n * stamps `_tier: N` on the envelope. The caller's keyring must hold the tier-N\n * DEK (directly, by delegation, or by virtue of being the grantor); otherwise\n * throws `TierNotGrantedError`.\n *\n * accepts an optional `elevation` context. When present, the emitted cross-tier\n * event is stamped with `authorization: 'elevation'`, the elevation's reason,\n * and the caller's pre-elevation tier. `vault.elevate(...).collection().put`\n * threads this through; direct `putAtTier` calls leave it undefined and fall\n * back to the inherent-write event shape.\n */\nexport async function putAtTier<T>(\n ctx: TiersContext<T>,\n id: string,\n record: T,\n tier: number,\n opts?: { elevation?: { reason: string; fromTier: number }; source?: string; sourceTs?: string },\n): Promise<void> {\n assertTiersEnabled(ctx)\n assertDeclaredTier(ctx, tier)\n assertTierAccess(ctx.keyring, ctx.name, tier)\n\n const key = dekKey(ctx.name, tier)\n const dek = await ctx.getDEK(key)\n\n const existing = await ctx.adapter.get(ctx.vault, ctx.name, id)\n const version = existing ? existing._v + 1 : 1\n const json = JSON.stringify(record)\n const { iv, data } = await encrypt(json, dek)\n const envelope: EncryptedEnvelope = {\n _noydb: NOYDB_FORMAT_VERSION,\n _v: version,\n _ts: new Date().toISOString(),\n _iv: iv,\n _data: data,\n _by: ctx.keyring.userId,\n ...(tier > 0 && { _tier: tier }),\n ...(ctx.provenance && opts?.source !== undefined ? { _source: opts.source, _sourceTs: opts.sourceTs ?? new Date().toISOString() } : {}),\n }\n\n await ctx.adapter.put(ctx.vault, ctx.name, id, envelope)\n\n if (tier > 0) {\n ctx.emitCrossTierEvent({\n actor: ctx.keyring.userId,\n collection: ctx.name,\n id,\n tier,\n authorization: opts?.elevation ? 'elevation' : 'inherent',\n op: 'put',\n ts: envelope._ts,\n ...(opts?.elevation && {\n reason: opts.elevation.reason,\n elevatedFrom: opts.elevation.fromTier,\n }),\n })\n }\n}\n\n/**\n * tier-aware get. When the stored record is at a tier the caller cannot\n * decrypt:\n * - `'invisibility'` mode (default) → returns `null`.\n * - `'ghost'` mode → returns a `GhostRecord` placeholder with the tier and\n * the record id (the record exists but contents are withheld).\n *\n * Fully-cleared reads return the plaintext record and fire a cross-tier event\n * when `_tier > 0`.\n */\nexport async function getAtTier<T>(ctx: TiersContext<T>, id: string): Promise<T | GhostRecord | null> {\n assertTiersEnabled(ctx)\n const envelope = await ctx.adapter.get(ctx.vault, ctx.name, id)\n if (!envelope) return null\n const tier = envelope._tier ?? 0\n if (tier === 0) {\n return ctx.codec.decryptRecord(envelope)\n }\n\n const key = dekKey(ctx.name, tier)\n if (!ctx.keyring.deks.has(key)) {\n if (ctx.tierMode === 'ghost') {\n return { _ghost: true, _tier: tier } as GhostRecord\n }\n return null\n }\n\n const dek = await ctx.getDEK(key)\n // A tiered record may carry a per-record CEK (e.g. a CEK record\n // elevated via `elevate()`): the CEK is wrapped under the TIER DEK, so\n // unwrap under the tier DEK then decrypt the body under the CEK. Legacy\n // tiered records decrypt directly under the tier DEK.\n let plaintext: string\n if (envelope._cek !== undefined) {\n const cek = await unwrapCek(envelope._cek, dek)\n ctx.cekCache?.set(id, cek, 1)\n plaintext = await decrypt(envelope._iv, envelope._data, cek)\n } else {\n plaintext = await decrypt(envelope._iv, envelope._data, dek)\n }\n const record = JSON.parse(plaintext) as T\n\n ctx.emitCrossTierEvent({\n actor: ctx.keyring.userId,\n collection: ctx.name,\n id,\n tier,\n authorization: isElevatorOrOwner(ctx) ? 'inherent' : 'delegation',\n op: 'get',\n ts: new Date().toISOString(),\n })\n\n return record\n}\n\n/**\n * list ids grouped by the caller's readability. Returns only ids whose tier the\n * caller can read. Above-tier ids are omitted in `'invisibility'` mode and\n * included (with tier metadata) in `'ghost'` mode.\n */\nexport async function listAtTier<T>(ctx: TiersContext<T>): Promise<Array<{ id: string; tier: number; readable: boolean }>> {\n assertTiersEnabled(ctx)\n const ids = await ctx.adapter.list(ctx.vault, ctx.name)\n const out: Array<{ id: string; tier: number; readable: boolean }> = []\n for (const id of ids) {\n const env = await ctx.adapter.get(ctx.vault, ctx.name, id)\n if (!env) continue\n const tier = env._tier ?? 0\n const readable = tier === 0 || ctx.keyring.deks.has(dekKey(ctx.name, tier))\n if (!readable && ctx.tierMode === 'invisibility') continue\n out.push({ id, tier, readable })\n }\n return out\n}\n\n/**\n * elevate a record to a higher tier. Re-encrypts with the target tier's DEK.\n * The caller must hold DEKs for both the current tier (to decrypt) and the\n * target tier (to re-encrypt). Stamps `_elevatedBy` with the caller id so\n * `demote()` can check the reverse operation.\n */\nexport async function elevate<T>(ctx: TiersContext<T>, id: string, toTier: number): Promise<void> {\n assertTiersEnabled(ctx)\n assertDeclaredTier(ctx, toTier)\n assertTierAccess(ctx.keyring, ctx.name, toTier)\n\n const envelope = await ctx.adapter.get(ctx.vault, ctx.name, id)\n if (!envelope) throw new Error(`Record \"${id}\" not found in collection \"${ctx.name}\"`)\n const fromTier = envelope._tier ?? 0\n if (toTier === fromTier) return\n if (toTier < fromTier) {\n throw new Error(`Use demote() to lower the tier of \"${id}\" from ${fromTier} to ${toTier}`)\n }\n // Caller must have access at the existing tier to decrypt.\n if (fromTier > 0) assertTierAccess(ctx.keyring, ctx.name, fromTier)\n\n const fromKey = dekKey(ctx.name, fromTier)\n const toKey = dekKey(ctx.name, toTier)\n const fromDek = await ctx.getDEK(fromKey)\n const toDek = await ctx.getDEK(toKey)\n\n // Per-record CEK composes with tiers: the body key is unchanged (history\n // chain identity preserved); only the wrapping key moves with the tier.\n // Legacy (no `_cek`) records take the direct-DEK path unchanged.\n const now = new Date().toISOString()\n const body = await rewrapBodyToDek(envelope, fromDek, toDek)\n if (body.cek) ctx.cekCache?.set(id, body.cek, 1)\n const next: EncryptedEnvelope = {\n _noydb: NOYDB_FORMAT_VERSION,\n _v: envelope._v + 1,\n _ts: now,\n _iv: body._iv,\n _data: body._data,\n _by: ctx.keyring.userId,\n _tier: toTier,\n _elevatedBy: ctx.keyring.userId,\n ...(body._cek !== undefined ? { _cek: body._cek } : {}),\n }\n await ctx.adapter.put(ctx.vault, ctx.name, id, next)\n\n ctx.emitCrossTierEvent({\n actor: ctx.keyring.userId,\n collection: ctx.name,\n id,\n tier: toTier,\n authorization: 'elevation',\n op: 'elevate',\n ts: now,\n })\n}\n\n/**\n * demote a record to a lower tier. Allowed only for the user who performed the\n * last elevation or an owner.\n */\nexport async function demote<T>(ctx: TiersContext<T>, id: string, toTier: number): Promise<void> {\n assertTiersEnabled(ctx)\n if (toTier < 0) throw new Error(`Cannot demote to negative tier ${toTier}`)\n\n const envelope = await ctx.adapter.get(ctx.vault, ctx.name, id)\n if (!envelope) throw new Error(`Record \"${id}\" not found in collection \"${ctx.name}\"`)\n const fromTier = envelope._tier ?? 0\n if (toTier === fromTier) return\n if (toTier > fromTier) {\n throw new Error(`Use elevate() to raise the tier of \"${id}\" from ${fromTier} to ${toTier}`)\n }\n const isOwner = ctx.keyring.role === 'owner'\n const isOriginalElevator = envelope._elevatedBy === ctx.keyring.userId\n if (!isOwner && !isOriginalElevator) {\n throw new TierDemoteDeniedError(id, fromTier)\n }\n // Caller must still hold the DEK of the current tier to decrypt.\n assertTierAccess(ctx.keyring, ctx.name, fromTier)\n if (toTier > 0) assertDeclaredTier(ctx, toTier)\n\n const fromDek = await ctx.getDEK(dekKey(ctx.name, fromTier))\n const toDek = await ctx.getDEK(dekKey(ctx.name, toTier))\n\n // CEK re-wrap on demote — same body key, moved from the source tier\n // DEK to the target tier DEK. Legacy records take the direct-DEK path.\n const now = new Date().toISOString()\n const body = await rewrapBodyToDek(envelope, fromDek, toDek)\n if (body.cek) ctx.cekCache?.set(id, body.cek, 1)\n const next: EncryptedEnvelope = {\n _noydb: NOYDB_FORMAT_VERSION,\n _v: envelope._v + 1,\n _ts: now,\n _iv: body._iv,\n _data: body._data,\n _by: ctx.keyring.userId,\n ...(toTier > 0 && { _tier: toTier }),\n ...(body._cek !== undefined ? { _cek: body._cek } : {}),\n }\n await ctx.adapter.put(ctx.vault, ctx.name, id, next)\n\n ctx.emitCrossTierEvent({\n actor: ctx.keyring.userId,\n collection: ctx.name,\n id,\n tier: fromTier,\n authorization: 'elevation',\n op: 'demote',\n ts: now,\n })\n}\n\n/**\n * Classify a live envelope's `_sealed` slots for crypto-shred completeness\n * (#M-1). Thin delegate to {@link RecordCodec.classifySealedShred}; surfaced\n * here because `vault.ts` forget() reaches in via `collection._classifySealedShred`.\n */\nexport function classifySealedShred<T>(\n ctx: TiersContext<T>,\n live: EncryptedEnvelope,\n): Promise<{ readonly slots: readonly SealedShredSlot[] }> {\n return ctx.codec.classifySealedShred(live)\n}\n"],"mappings":"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","names":["putAtTier","getAtTier","listAtTier","elevate","demote"]}