@noy-db/hub 0.3.0-pre.10 → 0.3.0-pre.11

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 (885) hide show
  1. package/dist/aggregate/index.js +4 -4
  2. package/dist/api-YGMINAET.js +20 -0
  3. package/dist/as/index.js +11 -11
  4. package/dist/attestation/index.js +18 -18
  5. package/dist/backup-XA5STIYQ.js +225 -0
  6. package/dist/blobs/index.js +10 -10
  7. package/dist/broker/index.js +92 -0
  8. package/dist/broker/index.js.map +1 -0
  9. package/dist/bundle/index.js +20 -20
  10. package/dist/by/index.js +2 -2
  11. package/dist/cargo/index.js +30 -30
  12. package/dist/chunk-25NDNMQ7.js +70 -0
  13. package/dist/chunk-2JMMY7HZ.js +188 -0
  14. package/dist/chunk-3CNQ7FQ3.js +430 -0
  15. package/dist/chunk-3G4KMVUN.js +291 -0
  16. package/dist/chunk-3MSQLQNZ.js +74 -0
  17. package/dist/chunk-45ZZLTFH.js +38 -0
  18. package/dist/chunk-4GPE63GU.js +111 -0
  19. package/dist/chunk-4GPE63GU.js.map +1 -0
  20. package/dist/chunk-4N5QFSNQ.js +150 -0
  21. package/dist/chunk-4R4Q64W5.js +34 -0
  22. package/dist/chunk-57V5S7PW.js +130 -0
  23. package/dist/chunk-5JB73NMC.js +202 -0
  24. package/dist/chunk-5XIPOCQC.js +155 -0
  25. package/dist/chunk-5ZOSG3RJ.js +778 -0
  26. package/dist/chunk-67TNU77I.js +36 -0
  27. package/dist/chunk-6QILBDZU.js +205 -0
  28. package/dist/chunk-7E67FJ33.js +155 -0
  29. package/dist/chunk-7ITPJFGC.js +50 -0
  30. package/dist/chunk-7NS43EXZ.js +117 -0
  31. package/dist/chunk-7QIXUSDQ.js +341 -0
  32. package/dist/chunk-7VSGW5KJ.js +74 -0
  33. package/dist/chunk-A2QF4JUE.js +14073 -0
  34. package/dist/chunk-A2QF4JUE.js.map +1 -0
  35. package/dist/chunk-A2Y6YFVN.js +209 -0
  36. package/dist/chunk-AOVDSIL3.js +1221 -0
  37. package/dist/chunk-ARSAMO24.js +29 -0
  38. package/dist/chunk-AWB5JZW6.js +41 -0
  39. package/dist/chunk-BCYQA5BK.js +45 -0
  40. package/dist/chunk-BE7N3AXA.js +621 -0
  41. package/dist/chunk-BEIRE5K4.js +164 -0
  42. package/dist/chunk-BZO4WCJI.js +86 -0
  43. package/dist/chunk-C3YH34IL.js +75 -0
  44. package/dist/chunk-C7NTK5I3.js +49 -0
  45. package/dist/chunk-CB25ONKC.js +129 -0
  46. package/dist/chunk-CIKY6I4W.js +21 -0
  47. package/dist/chunk-CKZW6P5V.js +32 -0
  48. package/dist/chunk-CKZW6P5V.js.map +1 -0
  49. package/dist/chunk-D26JB3LZ.js +54 -0
  50. package/dist/chunk-D3EFFFOL.js +59 -0
  51. package/dist/chunk-DGH65E7Q.js +466 -0
  52. package/dist/chunk-DIRRS7WP.js +42 -0
  53. package/dist/chunk-DJ3VKYFA.js +150 -0
  54. package/dist/chunk-DJ3VKYFA.js.map +1 -0
  55. package/dist/chunk-DMFNPHCX.js +247 -0
  56. package/dist/chunk-ELNBMFOS.js +392 -0
  57. package/dist/chunk-FH542DDY.js +1505 -0
  58. package/dist/chunk-FH542DDY.js.map +1 -0
  59. package/dist/chunk-FQQF23MC.js +45 -0
  60. package/dist/chunk-FXK4X4BL.js +91 -0
  61. package/dist/chunk-GA2QHD6P.js +235 -0
  62. package/dist/chunk-H44ZE4IE.js +355 -0
  63. package/dist/chunk-H6CZSDWK.js +1697 -0
  64. package/dist/chunk-H6HM6CVR.js +279 -0
  65. package/dist/chunk-HFJIGWJC.js +382 -0
  66. package/dist/chunk-HUS3J5WM.js +404 -0
  67. package/dist/chunk-IDIV5NVH.js +99 -0
  68. package/dist/chunk-IGJHJYM6.js +515 -0
  69. package/dist/chunk-IP2QBAGS.js +589 -0
  70. package/dist/chunk-JOQ53DMI.js +255 -0
  71. package/dist/chunk-K62IUKOD.js +823 -0
  72. package/dist/chunk-KPGX66PM.js +230 -0
  73. package/dist/chunk-L2SNBIV7.js +453 -0
  74. package/dist/chunk-MCEKIAO4.js +367 -0
  75. package/dist/chunk-MELR46EF.js +280 -0
  76. package/dist/chunk-MSPNM2OM.js +95 -0
  77. package/dist/chunk-O2DYPAZY.js +23 -0
  78. package/dist/chunk-ODJWBC5I.js +30 -0
  79. package/dist/chunk-OEAATWH5.js +686 -0
  80. package/dist/chunk-OFJ5GPNA.js +71 -0
  81. package/dist/chunk-OOLO4LQG.js +99 -0
  82. package/dist/chunk-P5RY4ZWD.js +662 -0
  83. package/dist/chunk-PR5LC5YX.js +265 -0
  84. package/dist/chunk-PXWVF7MC.js +135 -0
  85. package/dist/chunk-Q3XSMOZM.js +40 -0
  86. package/dist/chunk-QLLKLFE2.js +94 -0
  87. package/dist/chunk-QQJXBZCO.js +1056 -0
  88. package/dist/chunk-QQJXBZCO.js.map +1 -0
  89. package/dist/chunk-QYPKGVT4.js +261 -0
  90. package/dist/chunk-RKRGDAS7.js +59 -0
  91. package/dist/chunk-SRVQHVNX.js +164 -0
  92. package/dist/chunk-SYMS4546.js +29 -0
  93. package/dist/chunk-TPH5EO6L.js +54 -0
  94. package/dist/chunk-UFILRICG.js +14 -0
  95. package/dist/chunk-UTLEAJXC.js +97 -0
  96. package/dist/chunk-VA4ZWLFY.js +123 -0
  97. package/dist/chunk-VR24ILCR.js +367 -0
  98. package/dist/chunk-W5D62AQD.js +944 -0
  99. package/dist/chunk-WGV4CUZT.js +167 -0
  100. package/dist/chunk-WTUNZACT.js +30 -0
  101. package/dist/chunk-WTUNZACT.js.map +1 -0
  102. package/dist/chunk-X6CMGUAG.js +69 -0
  103. package/dist/chunk-XFXUTFWQ.js +85 -0
  104. package/dist/chunk-XHV25KBM.js +30 -0
  105. package/dist/chunk-YSXEFGND.js +124 -0
  106. package/dist/chunk-YXOUQ2H7.js +36 -0
  107. package/dist/chunk-ZP5PL65C.js +80 -0
  108. package/dist/classified/index.js +5 -5
  109. package/dist/classified-marker-LQWWQNIJ.js +24 -0
  110. package/dist/collection-facade-YE2O4J4O.js +39 -0
  111. package/dist/computed-W6MVAMWZ.js +11 -0
  112. package/dist/consent/index.js +9 -9
  113. package/dist/crdt/index.js +1 -1
  114. package/dist/dead-filter-4KXZEB3X.js +28 -0
  115. package/dist/delegation-OPUU3R2E.js +25 -0
  116. package/dist/derivations/index.js +12 -12
  117. package/dist/derive-BGUHU663.js +21 -0
  118. package/dist/enclave-VXAQD4XJ.js +135 -0
  119. package/dist/executor-GTVSUUBX.js +25 -0
  120. package/dist/executor-GZWMTOXB.js +9 -0
  121. package/dist/executor-XXGS4S3K.js +9 -0
  122. package/dist/export-accessible-BMULIOYB.js +23 -0
  123. package/dist/extract-partition-JUQTWDXR.js +36 -0
  124. package/dist/fanout-sidecar-CKYFH33E.js +74 -0
  125. package/dist/find-XRGCNGNN.js +11 -0
  126. package/dist/forget/index.js +10 -10
  127. package/dist/forget/index.js.map +1 -1
  128. package/dist/guards/index.js +3 -3
  129. package/dist/history/index.js +11 -11
  130. package/dist/i18n/index.js +15 -15
  131. package/dist/index.d.ts +303 -1492
  132. package/dist/index.js +172 -171
  133. package/dist/index.js.map +1 -1
  134. package/dist/indexing/index.js +2 -2
  135. package/dist/issue-UB6AA5M6.js +19 -0
  136. package/dist/kernel/cache/index.d.ts +10 -0
  137. package/dist/kernel/cache/lru.d.ts +97 -0
  138. package/dist/kernel/cache/policy.d.ts +32 -0
  139. package/dist/kernel/collection-config.d.ts +781 -0
  140. package/dist/kernel/collection.d.ts +1505 -0
  141. package/dist/kernel/constants.d.ts +18 -0
  142. package/dist/kernel/debug.d.ts +25 -0
  143. package/dist/kernel/enclave/broker/proof.d.ts +154 -0
  144. package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
  145. package/dist/kernel/enclave/classify/compare.d.ts +10 -0
  146. package/dist/kernel/enclave/classify/digest.d.ts +8 -0
  147. package/dist/kernel/enclave/classify/find.d.ts +36 -0
  148. package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
  149. package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
  150. package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
  151. package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
  152. package/dist/kernel/enclave/classify/verify.d.ts +33 -0
  153. package/dist/kernel/enclave/classify/write.d.ts +8 -0
  154. package/dist/kernel/enclave/crypto.d.ts +263 -0
  155. package/dist/kernel/enclave/index.d.ts +78 -0
  156. package/dist/kernel/enclave/record-keys/deterministic.d.ts +54 -0
  157. package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
  158. package/dist/kernel/enclave/record-keys/lifecycle.d.ts +57 -0
  159. package/dist/kernel/enclave/record-keys/record-codec.d.ts +301 -0
  160. package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
  161. package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
  162. package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
  163. package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
  164. package/dist/kernel/env-check.d.ts +1 -0
  165. package/dist/kernel/errors.d.ts +1848 -0
  166. package/dist/kernel/events.d.ts +11 -0
  167. package/dist/kernel/memory-store.d.ts +17 -0
  168. package/dist/kernel/mutation.d.ts +14 -0
  169. package/dist/kernel/noydb.d.ts +818 -0
  170. package/dist/kernel/paths.d.ts +25 -0
  171. package/dist/kernel/query/builder.d.ts +520 -0
  172. package/dist/kernel/query/index.d.ts +31 -0
  173. package/dist/kernel/query/join.d.ts +205 -0
  174. package/dist/kernel/query/live.d.ts +111 -0
  175. package/dist/kernel/query/predicate.d.ts +139 -0
  176. package/dist/kernel/query/scan-builder.d.ts +334 -0
  177. package/dist/kernel/refs.d.ts +205 -0
  178. package/dist/kernel/schema.d.ts +134 -0
  179. package/dist/kernel/sync-policy.d.ts +188 -0
  180. package/dist/kernel/types.d.ts +3147 -0
  181. package/dist/kernel/util/discriminant.d.ts +58 -0
  182. package/dist/kernel/util/index.d.ts +14 -0
  183. package/dist/kernel/util/sanitize-filename.d.ts +75 -0
  184. package/dist/kernel/validation.d.ts +130 -0
  185. package/dist/kernel/vault.d.ts +1723 -0
  186. package/dist/kernel/via/compose.d.ts +144 -0
  187. package/dist/kernel/via/dispatch.d.ts +185 -0
  188. package/dist/kernel/via/graph-wiring.d.ts +145 -0
  189. package/dist/kernel/via/graph.d.ts +165 -0
  190. package/dist/kernel/via/index.d.ts +200 -0
  191. package/dist/kernel/via/pipeline.d.ts +266 -0
  192. package/dist/kernel/via/reconcile.d.ts +153 -0
  193. package/dist/kernel/via/taint-binding.d.ts +66 -0
  194. package/dist/kernel/write-queue.d.ts +46 -0
  195. package/dist/ledger-FU6GH5EH.js +42 -0
  196. package/dist/legacy/bundle.d.ts +30 -0
  197. package/dist/legacy/kernel.d.ts +33 -0
  198. package/dist/liberate-YUN7W5QG.js +24 -0
  199. package/dist/link-set-MNADSH5M.js +31 -0
  200. package/dist/materialized-views/index.js +19 -19
  201. package/dist/noydb-6JLBZU4U.js +67 -0
  202. package/dist/on/index.js +9 -9
  203. package/dist/overlay-views/index.js +4 -4
  204. package/dist/periods/index.js +12 -12
  205. package/dist/pod/index.js +11 -11
  206. package/dist/policy-JTFOPPUU.js +41 -0
  207. package/dist/port/as/index.d.ts +26 -0
  208. package/dist/port/at/index.d.ts +18 -0
  209. package/dist/port/by/default-provider.d.ts +9 -0
  210. package/dist/port/by/index.d.ts +17 -0
  211. package/dist/port/by/types.d.ts +86 -0
  212. package/dist/port/in/index.d.ts +21 -0
  213. package/dist/port/on/index.d.ts +27 -0
  214. package/dist/port/to/index.d.ts +19 -0
  215. package/dist/port/ui/index.d.ts +21 -0
  216. package/dist/port/with/blob-strategy.d.ts +81 -0
  217. package/dist/port/with/broker-strategy.d.ts +84 -0
  218. package/dist/port/with/capabilities.d.ts +31 -0
  219. package/dist/port/with/classified-marker.d.ts +9 -0
  220. package/dist/port/with/classified-strategy.d.ts +62 -0
  221. package/dist/port/with/computed-strategy.d.ts +19 -0
  222. package/dist/port/with/i18n-strategy.d.ts +175 -0
  223. package/dist/port/with/index.d.ts +18 -0
  224. package/dist/port/with/lazy-strategy.d.ts +48 -0
  225. package/dist/port/with/lookup-strategy.d.ts +128 -0
  226. package/dist/port/with/service-bus.d.ts +156 -0
  227. package/dist/port/with/team-strategy.d.ts +36 -0
  228. package/dist/port/with/write-hooks.d.ts +34 -0
  229. package/dist/portability/index.js +8 -8
  230. package/dist/post-register-HAWO3O7O.js +55 -0
  231. package/dist/public-envelope-NJVB7LPA.js +32 -0
  232. package/dist/purge-scope-FGNNLWHD.js +24 -0
  233. package/dist/purge-scope-FGNNLWHD.js.map +1 -0
  234. package/dist/query/index.js +5 -5
  235. package/dist/register-VCKOBWKT.js +23 -0
  236. package/dist/registry-72UKJ2L4.js +9 -0
  237. package/dist/registry-BZFLJNEH.js +18 -0
  238. package/dist/registry-YJEYSYI5.js +19 -0
  239. package/dist/request-withdrawal-6MJRMFHF.js +31 -0
  240. package/dist/reveal-BOY7XYFH.js +38 -0
  241. package/dist/revoke-4KUNSVJC.js +24 -0
  242. package/dist/satellites/index.js +1 -1
  243. package/dist/sealed-record/index.js +12 -12
  244. package/dist/seed-4RRXT42N.js +231 -0
  245. package/dist/seed-4RRXT42N.js.map +1 -0
  246. package/dist/session/index.js +9 -9
  247. package/dist/shadow/index.js +2 -2
  248. package/dist/signer-DDDXP5JD.js +25 -0
  249. package/dist/snapshots/index.js +10 -10
  250. package/dist/stale-NXPT56JA.js +14 -0
  251. package/dist/storage-IR6EEAV2.js +23 -0
  252. package/dist/store-coordination-provider-HPYVFJCV.js +142 -0
  253. package/dist/sync/index.js +9 -9
  254. package/dist/team/index.js +15 -15
  255. package/dist/tiers/index.js +10 -10
  256. package/dist/to/index.js +1 -1
  257. package/dist/tx/index.js +3 -3
  258. package/dist/util/index.js +1 -1
  259. package/dist/verify-66RHOW7N.js +139 -0
  260. package/dist/via/blob/active.d.ts +34 -0
  261. package/dist/via/blob/binding.d.ts +86 -0
  262. package/dist/via/blob/index.d.ts +34 -0
  263. package/dist/via/classified/active.d.ts +3 -0
  264. package/dist/via/classified/binding.d.ts +83 -0
  265. package/dist/via/classified/config-drift.d.ts +34 -0
  266. package/dist/via/classified/descriptor.d.ts +66 -0
  267. package/dist/via/classified/errors.d.ts +19 -0
  268. package/dist/via/classified/guards.d.ts +23 -0
  269. package/dist/via/classified/index.d.ts +11 -0
  270. package/dist/via/classified/presets.d.ts +65 -0
  271. package/dist/via/classified/resolve.d.ts +9 -0
  272. package/dist/via/classified/strategy.d.ts +11 -0
  273. package/dist/via/classified/validators.d.ts +3 -0
  274. package/dist/via/classified/write.d.ts +4 -0
  275. package/dist/via/computed/binding.d.ts +34 -0
  276. package/dist/via/computed/descriptor.d.ts +35 -0
  277. package/dist/via/i18n/active.d.ts +28 -0
  278. package/dist/via/i18n/binding.d.ts +36 -0
  279. package/dist/via/i18n/core.d.ts +267 -0
  280. package/dist/via/i18n/densify.d.ts +24 -0
  281. package/dist/via/i18n/dictionary.d.ts +200 -0
  282. package/dist/via/i18n/index.d.ts +21 -0
  283. package/dist/via/i18n/policy.d.ts +44 -0
  284. package/dist/via/i18n/script.d.ts +26 -0
  285. package/dist/via/i18n/strategy.d.ts +13 -0
  286. package/dist/via/lookup/active.d.ts +19 -0
  287. package/dist/via/lookup/binding.d.ts +99 -0
  288. package/dist/via/lookup/descriptor.d.ts +123 -0
  289. package/dist/via/lookup/handle.d.ts +220 -0
  290. package/dist/via/lookup/index.d.ts +17 -0
  291. package/dist/via/lookup/registry.d.ts +219 -0
  292. package/dist/via/lookup/snapshot.d.ts +67 -0
  293. package/dist/via/money/arith.d.ts +68 -0
  294. package/dist/via/money/binding.d.ts +21 -0
  295. package/dist/via/money/branded.d.ts +61 -0
  296. package/dist/via/money/descriptor.d.ts +73 -0
  297. package/dist/via/money/fixed-point.d.ts +51 -0
  298. package/dist/via/money/index.d.ts +15 -0
  299. package/dist/via/money/iso4217.d.ts +6 -0
  300. package/dist/via/money/money-reducer.d.ts +33 -0
  301. package/dist/via/money/normalize.d.ts +105 -0
  302. package/dist/via/money/paths.d.ts +61 -0
  303. package/dist/via/money/where.d.ts +106 -0
  304. package/dist/walk-2RWEOCAS.js +241 -0
  305. package/dist/with/index.js +11 -11
  306. package/dist/with-audit/attestation/active.d.ts +10 -0
  307. package/dist/with-audit/attestation/index.d.ts +16 -0
  308. package/dist/with-audit/attestation/issue.d.ts +29 -0
  309. package/dist/with-audit/attestation/revoke.d.ts +15 -0
  310. package/dist/with-audit/attestation/signer.d.ts +33 -0
  311. package/dist/with-audit/attestation/strategy.d.ts +44 -0
  312. package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
  313. package/dist/with-audit/consent/active.d.ts +14 -0
  314. package/dist/with-audit/consent/consent.d.ts +114 -0
  315. package/dist/with-audit/consent/index.d.ts +14 -0
  316. package/dist/with-audit/consent/strategy.d.ts +36 -0
  317. package/dist/with-audit/forget/active.d.ts +31 -0
  318. package/dist/with-audit/forget/index.d.ts +28 -0
  319. package/dist/with-audit/forget/purge-scope.d.ts +54 -0
  320. package/dist/with-audit/forget/strategy.d.ts +177 -0
  321. package/dist/with-audit/forget/subject-index.d.ts +83 -0
  322. package/dist/with-audit/guards/executor.d.ts +26 -0
  323. package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
  324. package/dist/with-audit/guards/index.d.ts +10 -0
  325. package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
  326. package/dist/with-audit/guards/registry.d.ts +83 -0
  327. package/dist/with-audit/guards/transition-guard.d.ts +82 -0
  328. package/dist/with-audit/guards/types.d.ts +134 -0
  329. package/dist/with-audit/guards/with-guard.d.ts +15 -0
  330. package/dist/with-audit/periods/active.d.ts +11 -0
  331. package/dist/with-audit/periods/index.d.ts +18 -0
  332. package/dist/with-audit/periods/periods.d.ts +417 -0
  333. package/dist/with-audit/periods/strategy.d.ts +32 -0
  334. package/dist/with-audit/periods/vault-facade.d.ts +95 -0
  335. package/dist/with-audit/portability/active.d.ts +11 -0
  336. package/dist/with-audit/portability/export-accessible.d.ts +46 -0
  337. package/dist/with-audit/portability/index.d.ts +18 -0
  338. package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
  339. package/dist/with-audit/portability/strategy.d.ts +31 -0
  340. package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
  341. package/dist/with-audit/sealed-record/active.d.ts +9 -0
  342. package/dist/with-audit/sealed-record/index.d.ts +55 -0
  343. package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
  344. package/dist/with-audit/sealed-record/types.d.ts +27 -0
  345. package/dist/with-audit/tiers/active.d.ts +9 -0
  346. package/dist/with-audit/tiers/index.d.ts +122 -0
  347. package/dist/with-audit/tiers/strategy.d.ts +35 -0
  348. package/dist/with-cargo/active.d.ts +11 -0
  349. package/dist/with-cargo/adopt-partition.d.ts +81 -0
  350. package/dist/with-cargo/decrypt-partition.d.ts +19 -0
  351. package/dist/with-cargo/describe-extraction.d.ts +33 -0
  352. package/dist/with-cargo/extract-partition.d.ts +147 -0
  353. package/dist/with-cargo/index.d.ts +33 -0
  354. package/dist/with-cargo/strategy.d.ts +30 -0
  355. package/dist/with-cargo/vault-diff.d.ts +144 -0
  356. package/dist/with-cargo/walk-closure.d.ts +38 -0
  357. package/dist/with-commit/crdt/active.d.ts +25 -0
  358. package/dist/with-commit/crdt/crdt.d.ts +42 -0
  359. package/dist/with-commit/crdt/index.d.ts +16 -0
  360. package/dist/with-commit/crdt/strategy.d.ts +25 -0
  361. package/dist/with-commit/history/active.d.ts +40 -0
  362. package/dist/with-commit/history/diff.d.ts +23 -0
  363. package/dist/with-commit/history/history.d.ts +27 -0
  364. package/dist/with-commit/history/index.d.ts +30 -0
  365. package/dist/with-commit/history/ledger/constants.d.ts +37 -0
  366. package/dist/with-commit/history/ledger/entry.d.ts +195 -0
  367. package/dist/with-commit/history/ledger/hash.d.ts +30 -0
  368. package/dist/with-commit/history/ledger/index.d.ts +19 -0
  369. package/dist/with-commit/history/ledger/patch.d.ts +99 -0
  370. package/dist/with-commit/history/ledger/store.d.ts +335 -0
  371. package/dist/with-commit/history/strategy.d.ts +126 -0
  372. package/dist/with-commit/history/time-machine.d.ts +179 -0
  373. package/dist/with-commit/numbering/descriptor.d.ts +27 -0
  374. package/dist/with-commit/numbering/index.d.ts +69 -0
  375. package/dist/with-commit/sequence/active.d.ts +10 -0
  376. package/dist/with-commit/sequence/index.d.ts +150 -0
  377. package/dist/with-commit/sequence/strategy.d.ts +26 -0
  378. package/dist/with-commit/tx/active.d.ts +27 -0
  379. package/dist/with-commit/tx/dry-run.d.ts +29 -0
  380. package/dist/with-commit/tx/elevated-handle.d.ts +58 -0
  381. package/dist/with-commit/tx/index.d.ts +13 -0
  382. package/dist/with-commit/tx/invariants.d.ts +68 -0
  383. package/dist/with-commit/tx/strategy.d.ts +23 -0
  384. package/dist/with-commit/tx/transaction.d.ts +207 -0
  385. package/dist/with-fork/archive/engine.d.ts +71 -0
  386. package/dist/with-fork/archive/index.d.ts +23 -0
  387. package/dist/with-fork/shadow/active.d.ts +6 -0
  388. package/dist/with-fork/shadow/index.d.ts +14 -0
  389. package/dist/with-fork/shadow/strategy.d.ts +28 -0
  390. package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
  391. package/dist/with-fork/snapshots/active.d.ts +20 -0
  392. package/dist/with-fork/snapshots/engine.d.ts +36 -0
  393. package/dist/with-fork/snapshots/index.d.ts +5 -0
  394. package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
  395. package/dist/with-fork/snapshots/policy.d.ts +23 -0
  396. package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
  397. package/dist/with-fork/snapshots/strategy.d.ts +48 -0
  398. package/dist/with-formula/computed/index.d.ts +48 -0
  399. package/dist/with-formula/computed/lazy.d.ts +13 -0
  400. package/dist/with-formula/derivations/executor.d.ts +61 -0
  401. package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
  402. package/dist/with-formula/derivations/index.d.ts +6 -0
  403. package/dist/with-formula/derivations/registry.d.ts +67 -0
  404. package/dist/with-formula/derivations/stale.d.ts +39 -0
  405. package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
  406. package/dist/with-formula/derivations/types.d.ts +248 -0
  407. package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
  408. package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
  409. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +58 -0
  410. package/dist/with-formula/materialized-views/executor.d.ts +71 -0
  411. package/dist/with-formula/materialized-views/index.d.ts +11 -0
  412. package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
  413. package/dist/with-formula/materialized-views/registry.d.ts +99 -0
  414. package/dist/with-formula/materialized-views/stale.d.ts +62 -0
  415. package/dist/with-formula/materialized-views/types.d.ts +318 -0
  416. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +24 -0
  417. package/dist/with-formula/overlay-views/index.d.ts +5 -0
  418. package/dist/with-formula/overlay-views/registry.d.ts +42 -0
  419. package/dist/with-formula/overlay-views/types.d.ts +97 -0
  420. package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
  421. package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
  422. package/dist/with-lookup/aggregate/active.d.ts +33 -0
  423. package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
  424. package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
  425. package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
  426. package/dist/with-lookup/aggregate/index.d.ts +23 -0
  427. package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
  428. package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
  429. package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
  430. package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
  431. package/dist/with-lookup/embeddings/index.d.ts +3 -0
  432. package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
  433. package/dist/with-lookup/indexing/active.d.ts +30 -0
  434. package/dist/with-lookup/indexing/collection-facade.d.ts +120 -0
  435. package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
  436. package/dist/with-lookup/indexing/index.d.ts +27 -0
  437. package/dist/with-lookup/indexing/lazy-builder.d.ts +69 -0
  438. package/dist/with-lookup/indexing/persisted-indexes.d.ts +186 -0
  439. package/dist/with-lookup/indexing/strategy.d.ts +56 -0
  440. package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
  441. package/dist/with-lookup/search/active.d.ts +10 -0
  442. package/dist/with-lookup/search/build-docs.d.ts +15 -0
  443. package/dist/with-lookup/search/collection-facade.d.ts +123 -0
  444. package/dist/with-lookup/search/fuse.d.ts +22 -0
  445. package/dist/with-lookup/search/index-store.d.ts +19 -0
  446. package/dist/with-lookup/search/index.d.ts +19 -0
  447. package/dist/with-lookup/search/inverted-index.d.ts +47 -0
  448. package/dist/with-lookup/search/persisted-index-store.d.ts +41 -0
  449. package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
  450. package/dist/with-lookup/search/scan.d.ts +28 -0
  451. package/dist/with-lookup/search/segment.d.ts +15 -0
  452. package/dist/with-lookup/search/serialize.d.ts +4 -0
  453. package/dist/with-lookup/search/snippet.d.ts +5 -0
  454. package/dist/with-lookup/search/strategy.d.ts +37 -0
  455. package/dist/with-lookup/search/tokenize.d.ts +12 -0
  456. package/dist/with-party/auth-introspection/index.d.ts +44 -0
  457. package/dist/with-party/broker/active.d.ts +23 -0
  458. package/dist/with-party/broker/index.d.ts +28 -0
  459. package/dist/with-party/broker/seed.d.ts +77 -0
  460. package/dist/with-party/custody/active.d.ts +10 -0
  461. package/dist/with-party/custody/index.d.ts +69 -0
  462. package/dist/with-party/custody/liberate.d.ts +64 -0
  463. package/dist/with-party/custody/strategy.d.ts +48 -0
  464. package/dist/with-party/directory/index.d.ts +11 -0
  465. package/dist/with-party/directory/public-envelope/index.d.ts +12 -0
  466. package/dist/with-party/directory/public-envelope/schema.d.ts +24 -0
  467. package/dist/with-party/directory/public-envelope/storage.d.ts +59 -0
  468. package/dist/with-party/directory/public-envelope/types.d.ts +80 -0
  469. package/dist/with-party/directory/storage.d.ts +33 -0
  470. package/dist/with-party/directory/types.d.ts +43 -0
  471. package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
  472. package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
  473. package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
  474. package/dist/with-party/directory/visibility.d.ts +47 -0
  475. package/dist/with-party/policy/engine.d.ts +60 -0
  476. package/dist/with-party/policy/index.d.ts +15 -0
  477. package/dist/with-party/policy/noydb-facade.d.ts +39 -0
  478. package/dist/with-party/policy/presets.d.ts +38 -0
  479. package/dist/with-party/policy/storage.d.ts +31 -0
  480. package/dist/with-party/session/active.d.ts +34 -0
  481. package/dist/with-party/session/dev-unlock.d.ts +128 -0
  482. package/dist/with-party/session/index.d.ts +23 -0
  483. package/dist/with-party/session/session-policy.d.ts +92 -0
  484. package/dist/with-party/session/session.d.ts +131 -0
  485. package/dist/with-party/session/strategy.d.ts +42 -0
  486. package/dist/with-party/session/unlock-state.d.ts +47 -0
  487. package/dist/with-party/sync/index.d.ts +31 -0
  488. package/dist/with-party/tab-coordination.d.ts +73 -0
  489. package/dist/with-party/tab-write-relay.d.ts +39 -0
  490. package/dist/with-party/team/active.d.ts +13 -0
  491. package/dist/with-party/team/authenticators.d.ts +95 -0
  492. package/dist/with-party/team/deed.d.ts +97 -0
  493. package/dist/with-party/team/delegation.d.ts +88 -0
  494. package/dist/with-party/team/index.d.ts +38 -0
  495. package/dist/with-party/team/keyring.d.ts +318 -0
  496. package/dist/with-party/team/magic-link-grant.d.ts +152 -0
  497. package/dist/with-party/team/managed-passphrase.d.ts +280 -0
  498. package/dist/with-party/team/noydb-facade.d.ts +484 -0
  499. package/dist/with-party/team/peer-recover.d.ts +81 -0
  500. package/dist/with-party/team/presence.d.ts +81 -0
  501. package/dist/with-party/team/recovery.d.ts +191 -0
  502. package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
  503. package/dist/with-party/team/rotate-recover.d.ts +275 -0
  504. package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
  505. package/dist/with-party/team/strategy.d.ts +9 -0
  506. package/dist/with-party/team/sync-active.d.ts +33 -0
  507. package/dist/with-party/team/sync-credentials.d.ts +113 -0
  508. package/dist/with-party/team/sync-strategy.d.ts +67 -0
  509. package/dist/with-party/team/sync-transaction.d.ts +39 -0
  510. package/dist/with-party/team/sync.d.ts +165 -0
  511. package/dist/with-party/team/tiers.d.ts +39 -0
  512. package/dist/with-party/team/wrapped-deks.d.ts +86 -0
  513. package/dist/with-pod/backup.d.ts +74 -0
  514. package/dist/with-pod/bundle.d.ts +414 -0
  515. package/dist/with-pod/format.d.ts +203 -0
  516. package/dist/with-pod/index.d.ts +20 -0
  517. package/dist/with-pod/pod-store.d.ts +54 -0
  518. package/dist/with-pod/ulid.d.ts +64 -0
  519. package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
  520. package/dist/with-shape/blobs/blob-set.d.ts +342 -0
  521. package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
  522. package/dist/with-shape/blobs/import-external.d.ts +50 -0
  523. package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
  524. package/dist/with-shape/blobs/object-projection.d.ts +70 -0
  525. package/dist/with-shape/introspection/describe.d.ts +237 -0
  526. package/dist/with-shape/introspection/field-meta.d.ts +61 -0
  527. package/dist/with-shape/introspection/fields.d.ts +14 -0
  528. package/dist/with-shape/introspection/index.d.ts +12 -0
  529. package/dist/with-shape/introspection/json-schema.d.ts +13 -0
  530. package/dist/with-shape/introspection/meta.d.ts +22 -0
  531. package/dist/with-shape/introspection/projection.d.ts +13 -0
  532. package/dist/with-shape/introspection/types.d.ts +154 -0
  533. package/dist/with-shape/introspection/walk.d.ts +50 -0
  534. package/dist/with-shape/links/lazy-handle.d.ts +36 -0
  535. package/dist/with-shape/links/link-set.d.ts +67 -0
  536. package/dist/with-shape/links/names.d.ts +65 -0
  537. package/dist/with-shape/links/vault-facade.d.ts +211 -0
  538. package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
  539. package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
  540. package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
  541. package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
  542. package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
  543. package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
  544. package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
  545. package/dist/with-shape/satellites/declare.d.ts +60 -0
  546. package/dist/with-shape/satellites/existence.d.ts +5 -0
  547. package/dist/with-shape/satellites/fanout.d.ts +37 -0
  548. package/dist/with-shape/satellites/forget.d.ts +47 -0
  549. package/dist/with-shape/satellites/index.d.ts +3 -0
  550. package/dist/with-shape/satellites/joined.d.ts +19 -0
  551. package/dist/with-shape/satellites/marker.d.ts +10 -0
  552. package/dist/with-shape/satellites/post-register.d.ts +6 -0
  553. package/dist/with-shape/satellites/proxy.d.ts +37 -0
  554. package/dist/with-shape/satellites/raw-target.d.ts +14 -0
  555. package/dist/with-shape/satellites/registry.d.ts +19 -0
  556. package/dist/with-shape/satellites/types.d.ts +26 -0
  557. package/dist/with-shape/satellites/validate.d.ts +17 -0
  558. package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
  559. package/dist/with-shape/schema-update/cutover.d.ts +5 -0
  560. package/dist/with-shape/schema-update/delta.d.ts +2 -0
  561. package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
  562. package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
  563. package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
  564. package/dist/with-shape/schema-update/fence.d.ts +15 -0
  565. package/dist/with-shape/schema-update/gate.d.ts +16 -0
  566. package/dist/with-shape/schema-update/index.d.ts +6 -0
  567. package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
  568. package/dist/with-shape/schema-update/strategies.d.ts +12 -0
  569. package/dist/with-shape/schema-update/types.d.ts +53 -0
  570. package/dist/with-store/index.d.ts +15 -0
  571. package/dist/with-store/lazy/active.d.ts +12 -0
  572. package/dist/with-store/lazy/index.d.ts +14 -0
  573. package/dist/with-store/lazy/strategy.d.ts +9 -0
  574. package/dist/with-store/route-store.d.ts +259 -0
  575. package/dist/with-store/store-middleware.d.ts +189 -0
  576. package/dist/withdraw-accessible-CLMZEHQT.js +28 -0
  577. package/package.json +47 -43
  578. package/dist/aggregate/index.d.ts +0 -41
  579. package/dist/api-TX2EX2FX.js +0 -20
  580. package/dist/as/index.d.ts +0 -6
  581. package/dist/at/index.d.ts +0 -4
  582. package/dist/attestation/index.d.ts +0 -19
  583. package/dist/backup-R7NTDFKY.js +0 -225
  584. package/dist/blobs/index.d.ts +0 -43
  585. package/dist/bundle/index.d.ts +0 -121
  586. package/dist/bundle-D6GxiUfq.d.ts +0 -548
  587. package/dist/by/index.d.ts +0 -1
  588. package/dist/cargo/index.d.ts +0 -7
  589. package/dist/chunk-2OV5NVE7.js +0 -95
  590. package/dist/chunk-2OZXVKVP.js +0 -367
  591. package/dist/chunk-2REPHKET.js +0 -54
  592. package/dist/chunk-3JXPAHOZ.js +0 -686
  593. package/dist/chunk-3MATJ6O4.js +0 -367
  594. package/dist/chunk-3OPY6MK2.js +0 -404
  595. package/dist/chunk-3QSIU3UT.js +0 -291
  596. package/dist/chunk-4OMCIY6F.js +0 -99
  597. package/dist/chunk-5I35DOHK.js +0 -94
  598. package/dist/chunk-5VG4IJR7.js +0 -235
  599. package/dist/chunk-5YESYH2C.js +0 -155
  600. package/dist/chunk-6G5ORS5D.js +0 -202
  601. package/dist/chunk-6P5XCKSD.js +0 -71
  602. package/dist/chunk-6S7T6WC4.js +0 -111
  603. package/dist/chunk-6S7T6WC4.js.map +0 -1
  604. package/dist/chunk-7BWJHO2A.js +0 -34
  605. package/dist/chunk-7P2SDJG3.js +0 -279
  606. package/dist/chunk-ANB77BVV.js +0 -150
  607. package/dist/chunk-ANB77BVV.js.map +0 -1
  608. package/dist/chunk-BKARNZJN.js +0 -382
  609. package/dist/chunk-BQISD5ZV.js +0 -261
  610. package/dist/chunk-BUAQ7YI3.js +0 -1697
  611. package/dist/chunk-CB7CWSKW.js +0 -430
  612. package/dist/chunk-DFVUTGT2.js +0 -515
  613. package/dist/chunk-DJ7KIPLV.js +0 -23
  614. package/dist/chunk-DSKDQP3G.js +0 -14066
  615. package/dist/chunk-DSKDQP3G.js.map +0 -1
  616. package/dist/chunk-DV4HUP5G.js +0 -99
  617. package/dist/chunk-EOXAAJTY.js +0 -621
  618. package/dist/chunk-ET67AY6B.js +0 -74
  619. package/dist/chunk-F4CEK5YM.js +0 -123
  620. package/dist/chunk-FORYWFN6.js +0 -130
  621. package/dist/chunk-FRP6D2DM.js +0 -91
  622. package/dist/chunk-FUOE7UUV.js +0 -341
  623. package/dist/chunk-G4JYND6L.js +0 -42
  624. package/dist/chunk-G6XV4H65.js +0 -59
  625. package/dist/chunk-GNMXXTMN.js +0 -85
  626. package/dist/chunk-HPWKV3YB.js +0 -21
  627. package/dist/chunk-HY3AUMFI.js +0 -41
  628. package/dist/chunk-HYR4WZZ3.js +0 -69
  629. package/dist/chunk-ICXIFFYZ.js +0 -355
  630. package/dist/chunk-IVLTXX4W.js +0 -280
  631. package/dist/chunk-J4LPNIGK.js +0 -777
  632. package/dist/chunk-JJZ2LW6T.js +0 -36
  633. package/dist/chunk-KJ2BCBTL.js +0 -589
  634. package/dist/chunk-KNZB6JMR.js +0 -129
  635. package/dist/chunk-LEJIKBBB.js +0 -124
  636. package/dist/chunk-LL2NIVUR.js +0 -188
  637. package/dist/chunk-MCHVVJIA.js +0 -968
  638. package/dist/chunk-MCHVVJIA.js.map +0 -1
  639. package/dist/chunk-NUEQU36L.js +0 -392
  640. package/dist/chunk-O45M6LDB.js +0 -38
  641. package/dist/chunk-OBKWYKYC.js +0 -117
  642. package/dist/chunk-OHHKHSJP.js +0 -209
  643. package/dist/chunk-OT76OZL6.js +0 -45
  644. package/dist/chunk-OVYRLHPE.js +0 -150
  645. package/dist/chunk-OXCSVM3B.js +0 -155
  646. package/dist/chunk-P33LUIML.js +0 -205
  647. package/dist/chunk-PLS64NCS.js +0 -59
  648. package/dist/chunk-PS2NEWEX.js +0 -36
  649. package/dist/chunk-QA2KUPCP.js +0 -45
  650. package/dist/chunk-QOC3VYL2.js +0 -30
  651. package/dist/chunk-QSFOZUYL.js +0 -823
  652. package/dist/chunk-RHK32N73.js +0 -30
  653. package/dist/chunk-RW3Y22MW.js +0 -97
  654. package/dist/chunk-S7VFUQM2.js +0 -1484
  655. package/dist/chunk-S7VFUQM2.js.map +0 -1
  656. package/dist/chunk-T7WSLRAU.js +0 -49
  657. package/dist/chunk-TAKWLZZX.js +0 -944
  658. package/dist/chunk-TMBXVJKT.js +0 -75
  659. package/dist/chunk-TWKKOM55.js +0 -54
  660. package/dist/chunk-U3WZCU7E.js +0 -14
  661. package/dist/chunk-UF362QVH.js +0 -70
  662. package/dist/chunk-UN4FVIBH.js +0 -135
  663. package/dist/chunk-VEAVKDDB.js +0 -29
  664. package/dist/chunk-VEPTFUJY.js +0 -29
  665. package/dist/chunk-VJV7GKQK.js +0 -662
  666. package/dist/chunk-VQRAIPYF.js +0 -50
  667. package/dist/chunk-VRIYFLBA.js +0 -74
  668. package/dist/chunk-VWM3DAVB.js +0 -265
  669. package/dist/chunk-VWRRVE6D.js +0 -80
  670. package/dist/chunk-WBJIQSLL.js +0 -167
  671. package/dist/chunk-WIGQB62E.js +0 -164
  672. package/dist/chunk-WZSCE6RM.js +0 -466
  673. package/dist/chunk-XGDAPN6M.js +0 -255
  674. package/dist/chunk-XH7XP3OL.js +0 -1221
  675. package/dist/chunk-XREOISSI.js +0 -40
  676. package/dist/chunk-XUBPSPKD.js +0 -164
  677. package/dist/chunk-Y3A5CB5G.js +0 -247
  678. package/dist/chunk-YCXCR7VG.js +0 -230
  679. package/dist/chunk-YMVQD5Q5.js +0 -453
  680. package/dist/chunk-YN5IAHN6.js +0 -32
  681. package/dist/chunk-YN5IAHN6.js.map +0 -1
  682. package/dist/chunk-ZYJ55N7N.js +0 -86
  683. package/dist/classified/index.d.ts +0 -16
  684. package/dist/classified-marker-H6YSHYNK.js +0 -24
  685. package/dist/collection-facade-LVD22JLM.js +0 -39
  686. package/dist/computed-EXDMQODG.js +0 -11
  687. package/dist/consent/index.d.ts +0 -22
  688. package/dist/crdt/index.d.ts +0 -33
  689. package/dist/dead-filter-HQIE2YG7.js +0 -28
  690. package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
  691. package/dist/delegation-BJP73GAP.js +0 -25
  692. package/dist/derivations/index.d.ts +0 -69
  693. package/dist/derive-BME7HDWO.js +0 -21
  694. package/dist/dev-unlock-Bmm2pgJ0.d.ts +0 -263
  695. package/dist/discriminant-BN9REW3o.d.ts +0 -60
  696. package/dist/enclave-NHORSWSF.js +0 -125
  697. package/dist/executor-FE6X4LFX.js +0 -9
  698. package/dist/executor-KSHKRJXP.js +0 -25
  699. package/dist/executor-ZHTJJICG.js +0 -9
  700. package/dist/export-accessible-DACHM5VT.js +0 -23
  701. package/dist/extract-partition-RNENZZ4T.js +0 -36
  702. package/dist/fanout-sidecar-OFWN3NM7.js +0 -74
  703. package/dist/find-BNGBJNKP.js +0 -11
  704. package/dist/forget/index.d.ts +0 -36
  705. package/dist/guards/index.d.ts +0 -34
  706. package/dist/hash-DAJjMsCE.d.ts +0 -72
  707. package/dist/history/index.d.ts +0 -60
  708. package/dist/i18n/index.d.ts +0 -56
  709. package/dist/in/index.d.ts +0 -4
  710. package/dist/index-B9QdHytu.d.ts +0 -123
  711. package/dist/index-DjWbxsjb.d.ts +0 -23579
  712. package/dist/index-qwuNvO2B.d.ts +0 -144
  713. package/dist/indexing/index.d.ts +0 -38
  714. package/dist/issue-NDI4CVZU.js +0 -19
  715. package/dist/lazy/index.d.ts +0 -20
  716. package/dist/ledger-6NDS2EO4.js +0 -42
  717. package/dist/liberate-HN3RIGIP.js +0 -24
  718. package/dist/link-set-SJB2MVJV.js +0 -31
  719. package/dist/materialized-views/index.d.ts +0 -189
  720. package/dist/mime-magic-bBj5OgUC.d.ts +0 -103
  721. package/dist/noydb-BWF6EPIR.js +0 -66
  722. package/dist/on/index.d.ts +0 -4
  723. package/dist/overlay-views/index.d.ts +0 -97
  724. package/dist/periods/index.d.ts +0 -19
  725. package/dist/pod/index.d.ts +0 -62
  726. package/dist/policy-WGNAG5H6.js +0 -41
  727. package/dist/portability/index.d.ts +0 -19
  728. package/dist/post-register-CWKBQRC7.js +0 -55
  729. package/dist/public-envelope-EJLVIFX7.js +0 -32
  730. package/dist/query/index.d.ts +0 -4
  731. package/dist/register-SBIX7TVV.js +0 -23
  732. package/dist/registry-3EQG6OOE.js +0 -18
  733. package/dist/registry-CA327ACV.js +0 -9
  734. package/dist/registry-E7OXOTSV.js +0 -19
  735. package/dist/request-withdrawal-KAH2AAXC.js +0 -31
  736. package/dist/reveal-R3JLHMUF.js +0 -38
  737. package/dist/revoke-IXLOJ3IH.js +0 -24
  738. package/dist/satellites/index.d.ts +0 -4
  739. package/dist/sealed-record/index.d.ts +0 -68
  740. package/dist/session/index.d.ts +0 -43
  741. package/dist/shadow/index.d.ts +0 -14
  742. package/dist/signer-Y46N2GJ3.js +0 -25
  743. package/dist/snapshots/index.d.ts +0 -25
  744. package/dist/stale-Z7IW6RIL.js +0 -14
  745. package/dist/storage-ADNP2UWI.js +0 -23
  746. package/dist/store-coordination-provider-DTDMI6VL.js +0 -142
  747. package/dist/subject-index-CyOgGMJL.d.ts +0 -380
  748. package/dist/sync/index.d.ts +0 -40
  749. package/dist/team/index.d.ts +0 -154
  750. package/dist/tiers/index.d.ts +0 -4
  751. package/dist/to/index.d.ts +0 -4
  752. package/dist/transition-guard-DI-krBsZ.d.ts +0 -165
  753. package/dist/tx/index.d.ts +0 -34
  754. package/dist/ui/index.d.ts +0 -4
  755. package/dist/ulid-DRH25k3y.d.ts +0 -66
  756. package/dist/util/index.d.ts +0 -79
  757. package/dist/validators-BUcli5Nh.d.ts +0 -101
  758. package/dist/vault-diff-Z2DUayMe.d.ts +0 -147
  759. package/dist/verify-JPF2YR5E.js +0 -139
  760. package/dist/walk-XYA2O3LW.js +0 -241
  761. package/dist/with/index.d.ts +0 -37
  762. package/dist/with-materialized-view-BUmzlXue.d.ts +0 -27
  763. package/dist/with-overlayed-view-m4FaXXTO.d.ts +0 -12
  764. package/dist/with-rollup-DEKGI9vb.d.ts +0 -47
  765. package/dist/withdraw-accessible-WLV4MTEN.js +0 -28
  766. /package/dist/{api-TX2EX2FX.js.map → api-YGMINAET.js.map} +0 -0
  767. /package/dist/{backup-R7NTDFKY.js.map → backup-XA5STIYQ.js.map} +0 -0
  768. /package/dist/{chunk-UF362QVH.js.map → chunk-25NDNMQ7.js.map} +0 -0
  769. /package/dist/{chunk-LL2NIVUR.js.map → chunk-2JMMY7HZ.js.map} +0 -0
  770. /package/dist/{chunk-CB7CWSKW.js.map → chunk-3CNQ7FQ3.js.map} +0 -0
  771. /package/dist/{chunk-3QSIU3UT.js.map → chunk-3G4KMVUN.js.map} +0 -0
  772. /package/dist/{chunk-VRIYFLBA.js.map → chunk-3MSQLQNZ.js.map} +0 -0
  773. /package/dist/{chunk-O45M6LDB.js.map → chunk-45ZZLTFH.js.map} +0 -0
  774. /package/dist/{chunk-OVYRLHPE.js.map → chunk-4N5QFSNQ.js.map} +0 -0
  775. /package/dist/{chunk-7BWJHO2A.js.map → chunk-4R4Q64W5.js.map} +0 -0
  776. /package/dist/{chunk-FORYWFN6.js.map → chunk-57V5S7PW.js.map} +0 -0
  777. /package/dist/{chunk-6G5ORS5D.js.map → chunk-5JB73NMC.js.map} +0 -0
  778. /package/dist/{chunk-OXCSVM3B.js.map → chunk-5XIPOCQC.js.map} +0 -0
  779. /package/dist/{chunk-J4LPNIGK.js.map → chunk-5ZOSG3RJ.js.map} +0 -0
  780. /package/dist/{chunk-JJZ2LW6T.js.map → chunk-67TNU77I.js.map} +0 -0
  781. /package/dist/{chunk-P33LUIML.js.map → chunk-6QILBDZU.js.map} +0 -0
  782. /package/dist/{chunk-5YESYH2C.js.map → chunk-7E67FJ33.js.map} +0 -0
  783. /package/dist/{chunk-VQRAIPYF.js.map → chunk-7ITPJFGC.js.map} +0 -0
  784. /package/dist/{chunk-OBKWYKYC.js.map → chunk-7NS43EXZ.js.map} +0 -0
  785. /package/dist/{chunk-FUOE7UUV.js.map → chunk-7QIXUSDQ.js.map} +0 -0
  786. /package/dist/{chunk-ET67AY6B.js.map → chunk-7VSGW5KJ.js.map} +0 -0
  787. /package/dist/{chunk-OHHKHSJP.js.map → chunk-A2Y6YFVN.js.map} +0 -0
  788. /package/dist/{chunk-XH7XP3OL.js.map → chunk-AOVDSIL3.js.map} +0 -0
  789. /package/dist/{chunk-VEAVKDDB.js.map → chunk-ARSAMO24.js.map} +0 -0
  790. /package/dist/{chunk-HY3AUMFI.js.map → chunk-AWB5JZW6.js.map} +0 -0
  791. /package/dist/{chunk-OT76OZL6.js.map → chunk-BCYQA5BK.js.map} +0 -0
  792. /package/dist/{chunk-EOXAAJTY.js.map → chunk-BE7N3AXA.js.map} +0 -0
  793. /package/dist/{chunk-XUBPSPKD.js.map → chunk-BEIRE5K4.js.map} +0 -0
  794. /package/dist/{chunk-ZYJ55N7N.js.map → chunk-BZO4WCJI.js.map} +0 -0
  795. /package/dist/{chunk-TMBXVJKT.js.map → chunk-C3YH34IL.js.map} +0 -0
  796. /package/dist/{chunk-T7WSLRAU.js.map → chunk-C7NTK5I3.js.map} +0 -0
  797. /package/dist/{chunk-KNZB6JMR.js.map → chunk-CB25ONKC.js.map} +0 -0
  798. /package/dist/{chunk-HPWKV3YB.js.map → chunk-CIKY6I4W.js.map} +0 -0
  799. /package/dist/{chunk-TWKKOM55.js.map → chunk-D26JB3LZ.js.map} +0 -0
  800. /package/dist/{chunk-PLS64NCS.js.map → chunk-D3EFFFOL.js.map} +0 -0
  801. /package/dist/{chunk-WZSCE6RM.js.map → chunk-DGH65E7Q.js.map} +0 -0
  802. /package/dist/{chunk-G4JYND6L.js.map → chunk-DIRRS7WP.js.map} +0 -0
  803. /package/dist/{chunk-Y3A5CB5G.js.map → chunk-DMFNPHCX.js.map} +0 -0
  804. /package/dist/{chunk-NUEQU36L.js.map → chunk-ELNBMFOS.js.map} +0 -0
  805. /package/dist/{chunk-QA2KUPCP.js.map → chunk-FQQF23MC.js.map} +0 -0
  806. /package/dist/{chunk-FRP6D2DM.js.map → chunk-FXK4X4BL.js.map} +0 -0
  807. /package/dist/{chunk-5VG4IJR7.js.map → chunk-GA2QHD6P.js.map} +0 -0
  808. /package/dist/{chunk-ICXIFFYZ.js.map → chunk-H44ZE4IE.js.map} +0 -0
  809. /package/dist/{chunk-BUAQ7YI3.js.map → chunk-H6CZSDWK.js.map} +0 -0
  810. /package/dist/{chunk-7P2SDJG3.js.map → chunk-H6HM6CVR.js.map} +0 -0
  811. /package/dist/{chunk-BKARNZJN.js.map → chunk-HFJIGWJC.js.map} +0 -0
  812. /package/dist/{chunk-3OPY6MK2.js.map → chunk-HUS3J5WM.js.map} +0 -0
  813. /package/dist/{chunk-DV4HUP5G.js.map → chunk-IDIV5NVH.js.map} +0 -0
  814. /package/dist/{chunk-DFVUTGT2.js.map → chunk-IGJHJYM6.js.map} +0 -0
  815. /package/dist/{chunk-KJ2BCBTL.js.map → chunk-IP2QBAGS.js.map} +0 -0
  816. /package/dist/{chunk-XGDAPN6M.js.map → chunk-JOQ53DMI.js.map} +0 -0
  817. /package/dist/{chunk-QSFOZUYL.js.map → chunk-K62IUKOD.js.map} +0 -0
  818. /package/dist/{chunk-YCXCR7VG.js.map → chunk-KPGX66PM.js.map} +0 -0
  819. /package/dist/{chunk-YMVQD5Q5.js.map → chunk-L2SNBIV7.js.map} +0 -0
  820. /package/dist/{chunk-2OZXVKVP.js.map → chunk-MCEKIAO4.js.map} +0 -0
  821. /package/dist/{chunk-IVLTXX4W.js.map → chunk-MELR46EF.js.map} +0 -0
  822. /package/dist/{chunk-2OV5NVE7.js.map → chunk-MSPNM2OM.js.map} +0 -0
  823. /package/dist/{chunk-DJ7KIPLV.js.map → chunk-O2DYPAZY.js.map} +0 -0
  824. /package/dist/{chunk-RHK32N73.js.map → chunk-ODJWBC5I.js.map} +0 -0
  825. /package/dist/{chunk-3JXPAHOZ.js.map → chunk-OEAATWH5.js.map} +0 -0
  826. /package/dist/{chunk-6P5XCKSD.js.map → chunk-OFJ5GPNA.js.map} +0 -0
  827. /package/dist/{chunk-4OMCIY6F.js.map → chunk-OOLO4LQG.js.map} +0 -0
  828. /package/dist/{chunk-VJV7GKQK.js.map → chunk-P5RY4ZWD.js.map} +0 -0
  829. /package/dist/{chunk-VWM3DAVB.js.map → chunk-PR5LC5YX.js.map} +0 -0
  830. /package/dist/{chunk-UN4FVIBH.js.map → chunk-PXWVF7MC.js.map} +0 -0
  831. /package/dist/{chunk-XREOISSI.js.map → chunk-Q3XSMOZM.js.map} +0 -0
  832. /package/dist/{chunk-5I35DOHK.js.map → chunk-QLLKLFE2.js.map} +0 -0
  833. /package/dist/{chunk-BQISD5ZV.js.map → chunk-QYPKGVT4.js.map} +0 -0
  834. /package/dist/{chunk-G6XV4H65.js.map → chunk-RKRGDAS7.js.map} +0 -0
  835. /package/dist/{chunk-WIGQB62E.js.map → chunk-SRVQHVNX.js.map} +0 -0
  836. /package/dist/{chunk-VEPTFUJY.js.map → chunk-SYMS4546.js.map} +0 -0
  837. /package/dist/{chunk-2REPHKET.js.map → chunk-TPH5EO6L.js.map} +0 -0
  838. /package/dist/{chunk-U3WZCU7E.js.map → chunk-UFILRICG.js.map} +0 -0
  839. /package/dist/{chunk-RW3Y22MW.js.map → chunk-UTLEAJXC.js.map} +0 -0
  840. /package/dist/{chunk-F4CEK5YM.js.map → chunk-VA4ZWLFY.js.map} +0 -0
  841. /package/dist/{chunk-3MATJ6O4.js.map → chunk-VR24ILCR.js.map} +0 -0
  842. /package/dist/{chunk-TAKWLZZX.js.map → chunk-W5D62AQD.js.map} +0 -0
  843. /package/dist/{chunk-WBJIQSLL.js.map → chunk-WGV4CUZT.js.map} +0 -0
  844. /package/dist/{chunk-HYR4WZZ3.js.map → chunk-X6CMGUAG.js.map} +0 -0
  845. /package/dist/{chunk-GNMXXTMN.js.map → chunk-XFXUTFWQ.js.map} +0 -0
  846. /package/dist/{chunk-QOC3VYL2.js.map → chunk-XHV25KBM.js.map} +0 -0
  847. /package/dist/{chunk-LEJIKBBB.js.map → chunk-YSXEFGND.js.map} +0 -0
  848. /package/dist/{chunk-PS2NEWEX.js.map → chunk-YXOUQ2H7.js.map} +0 -0
  849. /package/dist/{chunk-VWRRVE6D.js.map → chunk-ZP5PL65C.js.map} +0 -0
  850. /package/dist/{classified-marker-H6YSHYNK.js.map → classified-marker-LQWWQNIJ.js.map} +0 -0
  851. /package/dist/{collection-facade-LVD22JLM.js.map → collection-facade-YE2O4J4O.js.map} +0 -0
  852. /package/dist/{computed-EXDMQODG.js.map → computed-W6MVAMWZ.js.map} +0 -0
  853. /package/dist/{dead-filter-HQIE2YG7.js.map → dead-filter-4KXZEB3X.js.map} +0 -0
  854. /package/dist/{delegation-BJP73GAP.js.map → delegation-OPUU3R2E.js.map} +0 -0
  855. /package/dist/{derive-BME7HDWO.js.map → derive-BGUHU663.js.map} +0 -0
  856. /package/dist/{enclave-NHORSWSF.js.map → enclave-VXAQD4XJ.js.map} +0 -0
  857. /package/dist/{executor-FE6X4LFX.js.map → executor-GTVSUUBX.js.map} +0 -0
  858. /package/dist/{executor-KSHKRJXP.js.map → executor-GZWMTOXB.js.map} +0 -0
  859. /package/dist/{executor-ZHTJJICG.js.map → executor-XXGS4S3K.js.map} +0 -0
  860. /package/dist/{export-accessible-DACHM5VT.js.map → export-accessible-BMULIOYB.js.map} +0 -0
  861. /package/dist/{extract-partition-RNENZZ4T.js.map → extract-partition-JUQTWDXR.js.map} +0 -0
  862. /package/dist/{fanout-sidecar-OFWN3NM7.js.map → fanout-sidecar-CKYFH33E.js.map} +0 -0
  863. /package/dist/{find-BNGBJNKP.js.map → find-XRGCNGNN.js.map} +0 -0
  864. /package/dist/{issue-NDI4CVZU.js.map → issue-UB6AA5M6.js.map} +0 -0
  865. /package/dist/{ledger-6NDS2EO4.js.map → ledger-FU6GH5EH.js.map} +0 -0
  866. /package/dist/{liberate-HN3RIGIP.js.map → liberate-YUN7W5QG.js.map} +0 -0
  867. /package/dist/{link-set-SJB2MVJV.js.map → link-set-MNADSH5M.js.map} +0 -0
  868. /package/dist/{noydb-BWF6EPIR.js.map → noydb-6JLBZU4U.js.map} +0 -0
  869. /package/dist/{policy-WGNAG5H6.js.map → policy-JTFOPPUU.js.map} +0 -0
  870. /package/dist/{post-register-CWKBQRC7.js.map → post-register-HAWO3O7O.js.map} +0 -0
  871. /package/dist/{public-envelope-EJLVIFX7.js.map → public-envelope-NJVB7LPA.js.map} +0 -0
  872. /package/dist/{register-SBIX7TVV.js.map → register-VCKOBWKT.js.map} +0 -0
  873. /package/dist/{registry-3EQG6OOE.js.map → registry-72UKJ2L4.js.map} +0 -0
  874. /package/dist/{registry-CA327ACV.js.map → registry-BZFLJNEH.js.map} +0 -0
  875. /package/dist/{registry-E7OXOTSV.js.map → registry-YJEYSYI5.js.map} +0 -0
  876. /package/dist/{request-withdrawal-KAH2AAXC.js.map → request-withdrawal-6MJRMFHF.js.map} +0 -0
  877. /package/dist/{reveal-R3JLHMUF.js.map → reveal-BOY7XYFH.js.map} +0 -0
  878. /package/dist/{revoke-IXLOJ3IH.js.map → revoke-4KUNSVJC.js.map} +0 -0
  879. /package/dist/{signer-Y46N2GJ3.js.map → signer-DDDXP5JD.js.map} +0 -0
  880. /package/dist/{stale-Z7IW6RIL.js.map → stale-NXPT56JA.js.map} +0 -0
  881. /package/dist/{storage-ADNP2UWI.js.map → storage-IR6EEAV2.js.map} +0 -0
  882. /package/dist/{store-coordination-provider-DTDMI6VL.js.map → store-coordination-provider-HPYVFJCV.js.map} +0 -0
  883. /package/dist/{verify-JPF2YR5E.js.map → verify-66RHOW7N.js.map} +0 -0
  884. /package/dist/{walk-XYA2O3LW.js.map → walk-2RWEOCAS.js.map} +0 -0
  885. /package/dist/{withdraw-accessible-WLV4MTEN.js.map → withdraw-accessible-CLMZEHQT.js.map} +0 -0
@@ -1,279 +0,0 @@
1
- import {
2
- assertTierAccess,
3
- dekKey
4
- } from "./chunk-7BWJHO2A.js";
5
- import {
6
- rewrapBodyToDek
7
- } from "./chunk-MCHVVJIA.js";
8
- import {
9
- decrypt,
10
- encrypt,
11
- unwrapCek
12
- } from "./chunk-3OPY6MK2.js";
13
- import {
14
- NOYDB_FORMAT_VERSION
15
- } from "./chunk-YN5IAHN6.js";
16
- import {
17
- TierDemoteDeniedError,
18
- TiersNotEnabledError
19
- } from "./chunk-S7VFUQM2.js";
20
-
21
- // src/with-audit/tiers/active.ts
22
- function withTiers() {
23
- return {
24
- async putAtTier(ctx, id, record, tier, opts) {
25
- const { putAtTier: putAtTier2 } = await import("./tiers/index.js");
26
- return putAtTier2(ctx, id, record, tier, opts);
27
- },
28
- async getAtTier(ctx, id) {
29
- const { getAtTier: getAtTier2 } = await import("./tiers/index.js");
30
- return getAtTier2(ctx, id);
31
- },
32
- async listAtTier(ctx) {
33
- const { listAtTier: listAtTier2 } = await import("./tiers/index.js");
34
- return listAtTier2(ctx);
35
- },
36
- async elevate(ctx, id, toTier) {
37
- const { elevate: elevate2 } = await import("./tiers/index.js");
38
- return elevate2(ctx, id, toTier);
39
- },
40
- async demote(ctx, id, toTier) {
41
- const { demote: demote2 } = await import("./tiers/index.js");
42
- return demote2(ctx, id, toTier);
43
- }
44
- };
45
- }
46
-
47
- // src/with-audit/tiers/strategy.ts
48
- var NO_TIERS = {
49
- async putAtTier() {
50
- throw new TiersNotEnabledError();
51
- },
52
- async getAtTier() {
53
- throw new TiersNotEnabledError();
54
- },
55
- async listAtTier() {
56
- throw new TiersNotEnabledError();
57
- },
58
- async elevate() {
59
- throw new TiersNotEnabledError();
60
- },
61
- async demote() {
62
- throw new TiersNotEnabledError();
63
- }
64
- };
65
-
66
- // src/with-audit/tiers/index.ts
67
- function assertTiersEnabled(ctx) {
68
- if (!ctx.tiers) {
69
- throw new Error(
70
- `Collection "${ctx.name}": hierarchical tiers are not enabled. Pass { tiers: [0, 1, 2, \u2026] } to vault.collection() to opt in.`
71
- );
72
- }
73
- }
74
- function assertDeclaredTier(ctx, tier) {
75
- if (tier < 0 || !Number.isInteger(tier)) {
76
- throw new Error(`Collection "${ctx.name}": tier must be a non-negative integer, got ${tier}`);
77
- }
78
- if (tier === 0) return;
79
- if (!ctx.tiers || !ctx.tiers.has(tier)) {
80
- throw new Error(
81
- `Collection "${ctx.name}": tier ${tier} is not declared in { tiers: [...] }`
82
- );
83
- }
84
- }
85
- function isElevatorOrOwner(ctx) {
86
- return ctx.keyring.role === "owner" || ctx.keyring.role === "admin";
87
- }
88
- async function putAtTier(ctx, id, record, tier, opts) {
89
- assertTiersEnabled(ctx);
90
- assertDeclaredTier(ctx, tier);
91
- assertTierAccess(ctx.keyring, ctx.name, tier);
92
- const key = dekKey(ctx.name, tier);
93
- const dek = await ctx.getDEK(key);
94
- const existing = await ctx.adapter.get(ctx.vault, ctx.name, id);
95
- const version = existing ? existing._v + 1 : 1;
96
- const json = JSON.stringify(record);
97
- const { iv, data } = await encrypt(json, dek);
98
- const envelope = {
99
- _noydb: NOYDB_FORMAT_VERSION,
100
- _v: version,
101
- _ts: (/* @__PURE__ */ new Date()).toISOString(),
102
- _iv: iv,
103
- _data: data,
104
- _by: ctx.keyring.userId,
105
- ...tier > 0 && { _tier: tier },
106
- ...ctx.provenance && opts?.source !== void 0 ? { _source: opts.source, _sourceTs: opts.sourceTs ?? (/* @__PURE__ */ new Date()).toISOString() } : {}
107
- };
108
- await ctx.adapter.put(ctx.vault, ctx.name, id, envelope);
109
- if (tier > 0) {
110
- ctx.emitCrossTierEvent({
111
- actor: ctx.keyring.userId,
112
- collection: ctx.name,
113
- id,
114
- tier,
115
- authorization: opts?.elevation ? "elevation" : "inherent",
116
- op: "put",
117
- ts: envelope._ts,
118
- ...opts?.elevation && {
119
- reason: opts.elevation.reason,
120
- elevatedFrom: opts.elevation.fromTier
121
- }
122
- });
123
- }
124
- }
125
- async function getAtTier(ctx, id) {
126
- assertTiersEnabled(ctx);
127
- const envelope = await ctx.adapter.get(ctx.vault, ctx.name, id);
128
- if (!envelope) return null;
129
- const tier = envelope._tier ?? 0;
130
- if (tier === 0) {
131
- return ctx.codec.decryptRecord(envelope, { id });
132
- }
133
- const key = dekKey(ctx.name, tier);
134
- if (!ctx.keyring.deks.has(key)) {
135
- if (ctx.tierMode === "ghost") {
136
- return { _ghost: true, _tier: tier };
137
- }
138
- return null;
139
- }
140
- const dek = await ctx.getDEK(key);
141
- let plaintext;
142
- let cek;
143
- if (envelope._cek !== void 0) {
144
- cek = await unwrapCek(envelope._cek, dek);
145
- ctx.cekCache?.set(id, cek, 1);
146
- plaintext = await decrypt(envelope._iv, envelope._data, cek);
147
- } else {
148
- plaintext = await decrypt(envelope._iv, envelope._data, dek);
149
- }
150
- let record = JSON.parse(plaintext);
151
- if (envelope._sealed !== void 0) {
152
- record = await ctx.codec.applySealedSlots(record, envelope._sealed, cek, { id });
153
- }
154
- ctx.emitCrossTierEvent({
155
- actor: ctx.keyring.userId,
156
- collection: ctx.name,
157
- id,
158
- tier,
159
- authorization: isElevatorOrOwner(ctx) ? "inherent" : "delegation",
160
- op: "get",
161
- ts: (/* @__PURE__ */ new Date()).toISOString()
162
- });
163
- return record;
164
- }
165
- async function listAtTier(ctx) {
166
- assertTiersEnabled(ctx);
167
- const ids = await ctx.adapter.list(ctx.vault, ctx.name);
168
- const out = [];
169
- for (const id of ids) {
170
- const env = await ctx.adapter.get(ctx.vault, ctx.name, id);
171
- if (!env) continue;
172
- const tier = env._tier ?? 0;
173
- const readable = tier === 0 || ctx.keyring.deks.has(dekKey(ctx.name, tier));
174
- if (!readable && ctx.tierMode === "invisibility") continue;
175
- out.push({ id, tier, readable });
176
- }
177
- return out;
178
- }
179
- async function elevate(ctx, id, toTier) {
180
- assertTiersEnabled(ctx);
181
- assertDeclaredTier(ctx, toTier);
182
- assertTierAccess(ctx.keyring, ctx.name, toTier);
183
- const envelope = await ctx.adapter.get(ctx.vault, ctx.name, id);
184
- if (!envelope) throw new Error(`Record "${id}" not found in collection "${ctx.name}"`);
185
- const fromTier = envelope._tier ?? 0;
186
- if (toTier === fromTier) return;
187
- if (toTier < fromTier) {
188
- throw new Error(`Use demote() to lower the tier of "${id}" from ${fromTier} to ${toTier}`);
189
- }
190
- if (fromTier > 0) assertTierAccess(ctx.keyring, ctx.name, fromTier);
191
- const fromKey = dekKey(ctx.name, fromTier);
192
- const toKey = dekKey(ctx.name, toTier);
193
- const fromDek = await ctx.getDEK(fromKey);
194
- const toDek = await ctx.getDEK(toKey);
195
- const now = (/* @__PURE__ */ new Date()).toISOString();
196
- const body = await rewrapBodyToDek(envelope, fromDek, toDek);
197
- if (body.cek) ctx.cekCache?.set(id, body.cek, 1);
198
- const next = {
199
- _noydb: NOYDB_FORMAT_VERSION,
200
- _v: envelope._v + 1,
201
- _ts: now,
202
- _iv: body._iv,
203
- _data: body._data,
204
- _by: ctx.keyring.userId,
205
- _tier: toTier,
206
- _elevatedBy: ctx.keyring.userId,
207
- ...body._cek !== void 0 ? { _cek: body._cek } : {}
208
- };
209
- await ctx.adapter.put(ctx.vault, ctx.name, id, next);
210
- ctx.emitCrossTierEvent({
211
- actor: ctx.keyring.userId,
212
- collection: ctx.name,
213
- id,
214
- tier: toTier,
215
- authorization: "elevation",
216
- op: "elevate",
217
- ts: now
218
- });
219
- }
220
- async function demote(ctx, id, toTier) {
221
- assertTiersEnabled(ctx);
222
- if (toTier < 0) throw new Error(`Cannot demote to negative tier ${toTier}`);
223
- const envelope = await ctx.adapter.get(ctx.vault, ctx.name, id);
224
- if (!envelope) throw new Error(`Record "${id}" not found in collection "${ctx.name}"`);
225
- const fromTier = envelope._tier ?? 0;
226
- if (toTier === fromTier) return;
227
- if (toTier > fromTier) {
228
- throw new Error(`Use elevate() to raise the tier of "${id}" from ${fromTier} to ${toTier}`);
229
- }
230
- const isOwner = ctx.keyring.role === "owner";
231
- const isOriginalElevator = envelope._elevatedBy === ctx.keyring.userId;
232
- if (!isOwner && !isOriginalElevator) {
233
- throw new TierDemoteDeniedError(id, fromTier);
234
- }
235
- assertTierAccess(ctx.keyring, ctx.name, fromTier);
236
- if (toTier > 0) assertDeclaredTier(ctx, toTier);
237
- const fromDek = await ctx.getDEK(dekKey(ctx.name, fromTier));
238
- const toDek = await ctx.getDEK(dekKey(ctx.name, toTier));
239
- const now = (/* @__PURE__ */ new Date()).toISOString();
240
- const body = await rewrapBodyToDek(envelope, fromDek, toDek);
241
- if (body.cek) ctx.cekCache?.set(id, body.cek, 1);
242
- const next = {
243
- _noydb: NOYDB_FORMAT_VERSION,
244
- _v: envelope._v + 1,
245
- _ts: now,
246
- _iv: body._iv,
247
- _data: body._data,
248
- _by: ctx.keyring.userId,
249
- ...toTier > 0 && { _tier: toTier },
250
- ...body._cek !== void 0 ? { _cek: body._cek } : {}
251
- };
252
- await ctx.adapter.put(ctx.vault, ctx.name, id, next);
253
- ctx.emitCrossTierEvent({
254
- actor: ctx.keyring.userId,
255
- collection: ctx.name,
256
- id,
257
- tier: fromTier,
258
- authorization: "elevation",
259
- op: "demote",
260
- ts: now
261
- });
262
- }
263
- function classifySealedShred(ctx, live) {
264
- return ctx.codec.classifySealedShred(live);
265
- }
266
-
267
- export {
268
- withTiers,
269
- NO_TIERS,
270
- assertTiersEnabled,
271
- assertDeclaredTier,
272
- putAtTier,
273
- getAtTier,
274
- listAtTier,
275
- elevate,
276
- demote,
277
- classifySealedShred
278
- };
279
- //# sourceMappingURL=chunk-7P2SDJG3.js.map
@@ -1,150 +0,0 @@
1
- import {
2
- openEnvelopeJson
3
- } from "./chunk-MCHVVJIA.js";
4
- import {
5
- encrypt,
6
- hmacSha256Hex,
7
- sha256Hex
8
- } from "./chunk-3OPY6MK2.js";
9
- import {
10
- NOYDB_FORMAT_VERSION
11
- } from "./chunk-YN5IAHN6.js";
12
-
13
- // src/with-audit/forget/strategy.ts
14
- var NO_FORGET = { subjects: {} };
15
-
16
- // src/with-audit/forget/subject-index.ts
17
- var SUBJECT_INDEX_COLLECTION = "_subject_index";
18
- var REF_LIST_BUCKET = 256;
19
- async function sha256HexString(input) {
20
- return sha256Hex(new TextEncoder().encode(input));
21
- }
22
- async function subjectKeys(getDEK, encrypted, subjectId) {
23
- const legacy = await sha256HexString(subjectId);
24
- if (!encrypted) return [legacy];
25
- const dek = await getDEK(SUBJECT_INDEX_COLLECTION);
26
- const keyed = await hmacSha256Hex(dek, new TextEncoder().encode(subjectId));
27
- return keyed === legacy ? [keyed] : [keyed, legacy];
28
- }
29
- async function primarySubjectKey(getDEK, encrypted, subjectId) {
30
- return (await subjectKeys(getDEK, encrypted, subjectId))[0];
31
- }
32
- function parseRefs(json) {
33
- const parsed = JSON.parse(json);
34
- return Array.isArray(parsed) ? parsed : parsed.r;
35
- }
36
- function serializeRefs(refs) {
37
- const base = JSON.stringify({ r: refs, p: "" });
38
- const pad = Math.ceil(base.length / REF_LIST_BUCKET) * REF_LIST_BUCKET - base.length;
39
- return JSON.stringify({ r: refs, p: " ".repeat(pad) });
40
- }
41
- async function readRefs(adapter, vault, getDEK, encrypted, key) {
42
- const env = await adapter.get(vault, SUBJECT_INDEX_COLLECTION, key);
43
- if (!env || !env._data) return [];
44
- if (!encrypted) return parseRefs(env._data);
45
- const dek = await getDEK(SUBJECT_INDEX_COLLECTION);
46
- const json = await openEnvelopeJson(env, dek);
47
- return parseRefs(json);
48
- }
49
- async function writeRefs(adapter, vault, getDEK, encrypted, key, refs) {
50
- let env;
51
- if (!encrypted) {
52
- env = { _noydb: NOYDB_FORMAT_VERSION, _v: 1, _ts: (/* @__PURE__ */ new Date()).toISOString(), _iv: "", _data: JSON.stringify(refs) };
53
- } else {
54
- const dek = await getDEK(SUBJECT_INDEX_COLLECTION);
55
- const { iv, data } = await encrypt(serializeRefs(refs), dek);
56
- env = { _noydb: NOYDB_FORMAT_VERSION, _v: 1, _ts: (/* @__PURE__ */ new Date()).toISOString(), _iv: iv, _data: data };
57
- }
58
- await adapter.put(vault, SUBJECT_INDEX_COLLECTION, key, env);
59
- }
60
- async function addSubjectRef(adapter, vault, getDEK, encrypted, subjectId, ref) {
61
- const key = await primarySubjectKey(getDEK, encrypted, subjectId);
62
- const refs = await readRefs(adapter, vault, getDEK, encrypted, key);
63
- if (refs.some((r) => r.collection === ref.collection && r.id === ref.id)) return;
64
- refs.push(ref);
65
- await writeRefs(adapter, vault, getDEK, encrypted, key, refs);
66
- }
67
- async function removeSubjectRef(adapter, vault, getDEK, encrypted, subjectId, ref) {
68
- for (const key of await subjectKeys(getDEK, encrypted, subjectId)) {
69
- const refs = await readRefs(adapter, vault, getDEK, encrypted, key);
70
- const next = refs.filter((r) => !(r.collection === ref.collection && r.id === ref.id));
71
- if (next.length === refs.length) continue;
72
- if (next.length === 0) {
73
- await adapter.delete(vault, SUBJECT_INDEX_COLLECTION, key);
74
- } else {
75
- await writeRefs(adapter, vault, getDEK, encrypted, key, next);
76
- }
77
- }
78
- }
79
- async function lookupSubject(adapter, vault, getDEK, encrypted, subjectId) {
80
- const keys = await subjectKeys(getDEK, encrypted, subjectId);
81
- const seen = /* @__PURE__ */ new Set();
82
- const out = [];
83
- for (const key of keys) {
84
- for (const ref of await readRefs(adapter, vault, getDEK, encrypted, key)) {
85
- const dedup = `${ref.collection}\0${ref.id}`;
86
- if (seen.has(dedup)) continue;
87
- seen.add(dedup);
88
- out.push(ref);
89
- }
90
- }
91
- return out;
92
- }
93
- async function rebuildSubjectIndex(adapter, vault, getDEK, encrypted, subjects, decodeRecord) {
94
- const existing = await adapter.list(vault, SUBJECT_INDEX_COLLECTION);
95
- for (const k of existing) {
96
- await adapter.delete(vault, SUBJECT_INDEX_COLLECTION, k);
97
- }
98
- const bySubject = /* @__PURE__ */ new Map();
99
- for (const [collection, field] of Object.entries(subjects)) {
100
- const ids = await adapter.list(vault, collection);
101
- for (const id of ids) {
102
- if (id.startsWith("_")) continue;
103
- const env = await adapter.get(vault, collection, id);
104
- if (!env || !env._data) continue;
105
- const record = await decodeRecord(collection, id, env);
106
- if (record === null) continue;
107
- const subjectValue = readDottedPath(record, field);
108
- if (subjectValue === void 0 || subjectValue === null) continue;
109
- const subjectId = coerceSubjectId(subjectValue);
110
- const list = bySubject.get(subjectId) ?? [];
111
- list.push({ collection, id });
112
- bySubject.set(subjectId, list);
113
- }
114
- }
115
- let entries = 0;
116
- for (const [subjectId, refs] of bySubject) {
117
- const key = await primarySubjectKey(getDEK, encrypted, subjectId);
118
- await writeRefs(adapter, vault, getDEK, encrypted, key, refs);
119
- entries++;
120
- }
121
- return entries;
122
- }
123
- function coerceSubjectId(value) {
124
- if (typeof value === "string") return value;
125
- if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
126
- return String(value);
127
- }
128
- return JSON.stringify(value);
129
- }
130
- function readDottedPath(record, field) {
131
- if (!field.includes(".")) return record[field];
132
- let cursor = record;
133
- for (const segment of field.split(".")) {
134
- if (cursor === null || cursor === void 0) return void 0;
135
- cursor = cursor[segment];
136
- }
137
- return cursor;
138
- }
139
-
140
- export {
141
- NO_FORGET,
142
- SUBJECT_INDEX_COLLECTION,
143
- addSubjectRef,
144
- removeSubjectRef,
145
- lookupSubject,
146
- rebuildSubjectIndex,
147
- coerceSubjectId,
148
- readDottedPath
149
- };
150
- //# sourceMappingURL=chunk-ANB77BVV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/with-audit/forget/strategy.ts","../src/with-audit/forget/subject-index.ts"],"sourcesContent":["/**\n * `withForgetCascade` — declaration surface for GDPR right-to-erasure via\n * per-record CEK crypto-shred.\n *\n * This file holds only the *declaration* shape and the disabled sentinel.\n * The actual erasure machinery lives in:\n * - `subject-index.ts` — the encrypted `_subject_index` reserved collection\n * - `vault.ts` `forget()` — the per-record tombstone + ledger flow\n * - `collection.ts` `_writeTombstone` — the envelope rewrite\n *\n * A `ForgetStrategy` declares which collections carry erasable subject data\n * and the (dotted-path) field on each record that names the data subject.\n * Declaring a collection here ALSO forces `perRecordKeys: true` for it (a\n * shred can only erase a record whose body is keyed off a per-record CEK),\n * so adopters opt into the CEK foundation transitively.\n *\n * @module\n */\nimport type { LedgerEntry } from '../../with-commit/history/ledger/entry.js'\n\n/**\n * User-supplied declaration passed to {@link withForgetCascade}. Maps a\n * collection name to the record field (dotted path supported, e.g.\n * `'billing.buyerId'`) that identifies the data subject for erasure.\n *\n * ```ts\n * withForgetCascade({ subjects: { invoices: 'buyerId', contacts: 'id' } })\n * ```\n */\nexport interface SubjectDeclaration {\n readonly subjects: Record<string, string>\n}\n\n/**\n * Resolved forget strategy threaded through Noydb → every Vault. Carries\n * the same `subjects` map the user declared. `NO_FORGET` (empty map) is the\n * off-by-default sentinel; `vault.forget()` throws\n * `ForgetStrategyNotConfiguredError` when the map is empty.\n */\nexport interface ForgetStrategy {\n /** Collection → subject-field (dotted path). Empty under `NO_FORGET`. */\n readonly subjects: Readonly<Record<string, string>>\n}\n\n/**\n * Disabled sentinel — no collections declare a subject field. `vault.forget()`\n * refuses with `ForgetStrategyNotConfiguredError`; no write hooks register; no\n * collection is forced into `perRecordKeys`. Non-adopters pay nothing.\n */\nexport const NO_FORGET: ForgetStrategy = { subjects: {} }\n\n// The `withForgetCascade` factory lives in `active.ts` (canonical\n// strategy.ts/active.ts/index.ts split); this file holds only the\n// declaration shape + disabled sentinel.\n\n/**\n * The outcome of a `vault.forget(subjectId)` call.\n *\n * `unmigratedRecords` lists `collection:id` pairs that were tombstoned but\n * whose body had NOT been migrated to a per-record CEK at shred time (legacy\n * body still under the shared collection DEK). Those records are tombstoned\n * (live envelope + history stripped) but their pre-shred ciphertext, if it\n * leaked into a backup before migration, remains decryptable under the\n * collection DEK — so erasure-completeness is NOT guaranteed for them. Run\n * the per-record-CEK migration pass, then re-forget, to close the gap.\n *\n * Blob attachments: a shredded record's **erasable** blobs (on a\n * `perRecordKeys` collection) are crypto-shredded inline — `blobsShredded`\n * counts those taken to refCount 0 (BlobObject deleted → chunks permanently\n * undecryptable), `blobsRetainedShared` counts those still referenced by\n * another record (shared content legitimately persists for its other owner).\n * `blobResidueCollections` now lists only collections with blobs that could\n * NOT be crypto-shredded: **legacy** blobs (no per-blob `_cek`, chunks under\n * the shared `_blob` DEK — migrate them), or a session without the blob\n * service loaded. An all-erasable subject yields an empty residue list.\n */\nexport interface ForgetResult {\n /** The subject id passed to `forget()`. Echoed for caller convenience. */\n readonly subject: string\n /** Count of live records rewritten to a tombstone. */\n readonly recordsShredded: number\n /** Count of `_history` envelopes tombstoned across all shredded records. */\n readonly historyVersionsShredded: number\n /** Distinct collections that had at least one record shredded. */\n readonly collections: readonly string[]\n /** `collection:id` pairs shredded while still un-migrated (see type docs). */\n readonly unmigratedRecords: readonly string[]\n /** Count of erasable blobs crypto-shredded (refCount → 0, BlobObject deleted). */\n readonly blobsShredded: number\n /** Count of erasable blobs retained because still referenced elsewhere (shared). */\n readonly blobsRetainedShared: number\n /** Collections with blobs that could NOT be crypto-shredded — legacy (no `_cek`) or blobs disabled (see type docs). */\n readonly blobResidueCollections: readonly string[]\n /**\n * Count of persisted `_idx/<field>/<recordId>` index side-cars hard-deleted\n * across the shredded records. These live under the retained\n * collection DEK, so crypto-shred alone would leave the indexed field VALUES\n * readable — `forget()` must delete them.\n */\n readonly indexPostingsPurged: number\n /**\n * `collection:id:field` entries whose persisted `_idx` side-car could NOT be\n * deleted — index residue that still leaks the indexed value under the\n * retained collection DEK. Non-empty means erasure is INCOMPLETE: retry, or\n * purge the side-car out of band.\n */\n readonly indexResidue: readonly string[]\n /**\n * Count of `_sealed[field]` slots dropped from the live store across the\n * shredded records. For slots written under `sensitive` +\n * `perRecordKeys` (the current path), the key derives off the per-record CEK,\n * so tombstoning the record — which drops `_cek` and `_sealed` — also\n * crypto-shreds the value. A legacy slot (written before per-record CEKs) keys\n * off the collection DEK instead, so dropping it removes it from the live store but a\n * pre-forget backup remains recoverable by a DEK holder (same caveat `_data`\n * carries); migrate by re-`put`ting before forgetting for full crypto-shred.\n */\n readonly sealedFieldsShredded: number\n /** Count of `_sealed_cek` host-delivery envelopes deleted (#H-1). A record sealed to an\n * at-* host via sealRecordToHost persists its raw CEK there; forget() must destroy them. */\n readonly sealedCekEnvelopesPurged: number\n /** `collection:id` whose `_sealed_cek` purge failed (residue — the host-recoverable CEK may survive). */\n readonly sealedCekResidue: readonly string[]\n /** `collection:id:field` sealed slots that were DEK-derived (legacy, written before per-record CEKs) and thus NOT crypto-shredded\n * by dropping `_cek` — the collection DEK is retained, so synced/backup copies stay decryptable (#M-1). */\n readonly sealedResidue: readonly string[]\n /** The single `op:'forget'` ledger entry appended for this erasure. */\n readonly ledgerEntry: LedgerEntry\n /** #622 — record-grain derived artifacts (MV rows, per-record derived copies) erased\n * because their source subject was forgotten. Overlay outputs are intentionally out of\n * scope here — an overlay is always sourced from an MV, never directly from a subject\n * collection, so the personal-data-bearing MV rows it reads are already erased above. */\n readonly derivedRecordsErased: number\n /** #622 — aggregate-grain targets (rollups) recomputed without the forgotten contribution. */\n readonly derivedAggregatesRecomputed: number\n /** #622 — `collection:id` derived writes SKIPPED because the target period is frozen\n * (recompute deferred; the aggregate retains the forgotten contribution — audited). */\n readonly derivedResidueFrozen: readonly string[]\n /** #650 Task 5 (#648) — referencing records tombstoned via a `'ref'` edge's `cascade` policy. */\n readonly lookupReferencesCascaded: number\n /** #650 Task 5 (#648) — referencing fields cleared via a `'ref'` edge's `nullify` policy. */\n readonly lookupReferencesNullified: number\n /** #650 Task 5 review (Important fix) — `'ref'` edges whose compare-key could NOT be resolved,\n * even from the LIVE pre-shred backing row — cascade/nullify propagation was SKIPPED for these.\n * Always empty in the ordinary case; non-empty means the skip is reported, never silent. */\n readonly lookupReferencesResidue: readonly string[]\n}\n","/**\n * The encrypted subject index.\n *\n * GDPR crypto-shred needs to answer \"which records belong to data subject\n * X?\" portably (the index must travel with the vault/bundle) WITHOUT leaking\n * subject-equivalence to the store. The rejected alternative — an unencrypted\n * subject tag in envelope metadata — would let anyone with store access see\n * which records share a subject. Instead we keep a reserved `_subject_index`\n * collection, encrypted under its OWN DEK (`getDEK('_subject_index')`):\n *\n * - record id = `HMAC-SHA256(indexDEK, subjectId)` (M-2). A bare\n * `sha256Hex(subjectId)` would be offline-computable: an attacker with\n * store access and a candidate list (emails / customer ids are low-entropy)\n * could dictionary the hash to confirm \"subject X is present here.\" Keying\n * the id with the vault-only index DEK removes that capability — without the\n * DEK the id cannot be derived. (Legacy entries written before M-2 used the\n * bare sha256 id; the read/remove paths dual-look-up both forms.)\n * - record body = AES-GCM(JSON `{ r: [{ collection, id }], p }`) under the\n * index DEK, where `p` pads the plaintext to a bucketed length so the\n * ciphertext `_data` length does not leak the approximate record count.\n * Legacy bodies were a bare `[{ collection, id }]` array; reads accept both.\n *\n * ## Concurrency (RISK #3 — known v1 limitation)\n *\n * `addSubjectRef` / `removeSubjectRef` are read-modify-write with no CAS. The\n * design assumes a SINGLE WRITER (the noy-db single-process write model). Two\n * concurrent writers racing on the SAME subject can lose an entry (last-write\n * wins on the ref list). This is documented, not fixed in v1:\n * `rebuildSubjectIndex` performs a full scan to recover a correct index from\n * the canonical records, so a lost ref is recoverable. A CAS-backed index is\n * deferred to a later slice.\n *\n * @module\n */\nimport { encrypt, openEnvelopeJson, hmacSha256Hex, sha256Hex, type EnclaveKey } from '../../kernel/enclave/index.js'\nimport type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js'\nimport { NOYDB_FORMAT_VERSION } from '../../kernel/types.js'\n\n/** Reserved collection holding the encrypted subject → records index. */\nexport const SUBJECT_INDEX_COLLECTION = '_subject_index'\n\n/**\n * Bucket (bytes) the encrypted ref-list plaintext is padded up to, so the\n * ciphertext `_data` length leaks only `count` rounded up to a bucket — not the\n * exact record count. 256 keeps small subjects (the common case) indistinguishable.\n */\nconst REF_LIST_BUCKET = 256\n\n/** A single record reference held in a subject's index entry. */\nexport interface SubjectRef {\n readonly collection: string\n readonly id: string\n}\n\ntype GetDEK = (collectionName: string) => Promise<EnclaveKey>\n\n/** SHA-256 hex of a UTF-8 string. The LEGACY (pre-M-2) subject-index key. */\nasync function sha256HexString(input: string): Promise<string> {\n return sha256Hex(new TextEncoder().encode(input))\n}\n\n/**\n * The subject-index record id(s) to consult for a subject, most-current first.\n *\n * - Encrypted vault: the PRIMARY id is `HMAC-SHA256(indexDEK, subjectId)` (M-2)\n * — not offline-computable. The LEGACY `sha256Hex(subjectId)` id is also\n * returned so reads/removes still find entries written before M-2 (dual-lookup).\n * - Plaintext/debug vault: no DEK to key with, so the only id is the legacy\n * sha256 form (unchanged behaviour — plaintext mode is not zero-knowledge anyway).\n */\nasync function subjectKeys(getDEK: GetDEK, encrypted: boolean, subjectId: string): Promise<string[]> {\n const legacy = await sha256HexString(subjectId)\n if (!encrypted) return [legacy]\n const dek = await getDEK(SUBJECT_INDEX_COLLECTION)\n const keyed = await hmacSha256Hex(dek, new TextEncoder().encode(subjectId))\n return keyed === legacy ? [keyed] : [keyed, legacy]\n}\n\n/** The id new writes land under (keyed when encrypted, else legacy sha256). */\nasync function primarySubjectKey(getDEK: GetDEK, encrypted: boolean, subjectId: string): Promise<string> {\n return (await subjectKeys(getDEK, encrypted, subjectId))[0]!\n}\n\n/** Parse a stored ref-list body: new padded `{ r, p }` wrapper OR legacy bare array. */\nfunction parseRefs(json: string): SubjectRef[] {\n const parsed = JSON.parse(json) as SubjectRef[] | { r: SubjectRef[] }\n return Array.isArray(parsed) ? parsed : parsed.r\n}\n\n/** Serialize + pad the ref list to a bucket boundary (encrypted vaults only). */\nfunction serializeRefs(refs: SubjectRef[]): string {\n const base = JSON.stringify({ r: refs, p: '' })\n const pad = Math.ceil(base.length / REF_LIST_BUCKET) * REF_LIST_BUCKET - base.length\n return JSON.stringify({ r: refs, p: ' '.repeat(pad) })\n}\n\n/** Read + decrypt the ref list at a SINGLE index key. Returns `[]` when absent. */\nasync function readRefs(\n adapter: NoydbStore,\n vault: string,\n getDEK: GetDEK,\n encrypted: boolean,\n key: string,\n): Promise<SubjectRef[]> {\n const env = await adapter.get(vault, SUBJECT_INDEX_COLLECTION, key)\n if (!env || !env._data) return []\n if (!encrypted) return parseRefs(env._data)\n const dek = await getDEK(SUBJECT_INDEX_COLLECTION)\n const json = await openEnvelopeJson(env, dek)\n return parseRefs(json)\n}\n\n/** Encrypt + write a ref list for a subject under its derived key. */\nasync function writeRefs(\n adapter: NoydbStore,\n vault: string,\n getDEK: GetDEK,\n encrypted: boolean,\n key: string,\n refs: SubjectRef[],\n): Promise<void> {\n let env: EncryptedEnvelope\n if (!encrypted) {\n // Plaintext/debug vault: keep the legacy bare-array form (no padding needed).\n env = { _noydb: NOYDB_FORMAT_VERSION, _v: 1, _ts: new Date().toISOString(), _iv: '', _data: JSON.stringify(refs) }\n } else {\n const dek = await getDEK(SUBJECT_INDEX_COLLECTION)\n const { iv, data } = await encrypt(serializeRefs(refs), dek)\n env = { _noydb: NOYDB_FORMAT_VERSION, _v: 1, _ts: new Date().toISOString(), _iv: iv, _data: data }\n }\n await adapter.put(vault, SUBJECT_INDEX_COLLECTION, key, env)\n}\n\n/**\n * Add a `{ collection, id }` ref to a subject's index entry (idempotent —\n * a duplicate ref is not appended). Read-modify-write; see the concurrency\n * note in the module docstring.\n */\nexport async function addSubjectRef(\n adapter: NoydbStore,\n vault: string,\n getDEK: GetDEK,\n encrypted: boolean,\n subjectId: string,\n ref: SubjectRef,\n): Promise<void> {\n const key = await primarySubjectKey(getDEK, encrypted, subjectId)\n const refs = await readRefs(adapter, vault, getDEK, encrypted, key)\n if (refs.some((r) => r.collection === ref.collection && r.id === ref.id)) return\n refs.push(ref)\n await writeRefs(adapter, vault, getDEK, encrypted, key, refs)\n}\n\n/**\n * Remove a `{ collection, id }` ref from a subject's index entry. When the\n * last ref is removed the (now empty) entry is deleted so the store holds no\n * residual key for an erased subject.\n */\nexport async function removeSubjectRef(\n adapter: NoydbStore,\n vault: string,\n getDEK: GetDEK,\n encrypted: boolean,\n subjectId: string,\n ref: SubjectRef,\n): Promise<void> {\n // Dual-lookup: drop the ref from BOTH the keyed (M-2) and the legacy sha256\n // entry, so a pre-M-2 subject is still fully erased.\n for (const key of await subjectKeys(getDEK, encrypted, subjectId)) {\n const refs = await readRefs(adapter, vault, getDEK, encrypted, key)\n const next = refs.filter((r) => !(r.collection === ref.collection && r.id === ref.id))\n if (next.length === refs.length) continue\n if (next.length === 0) {\n await adapter.delete(vault, SUBJECT_INDEX_COLLECTION, key)\n } else {\n await writeRefs(adapter, vault, getDEK, encrypted, key, next)\n }\n }\n}\n\n/**\n * Look up every record ref for a subject. Returns `[]` when none exist. Unions\n * the keyed (M-2) and legacy sha256 entries (dual-lookup), deduplicated, so a\n * subject indexed before M-2 is still fully found.\n */\nexport async function lookupSubject(\n adapter: NoydbStore,\n vault: string,\n getDEK: GetDEK,\n encrypted: boolean,\n subjectId: string,\n): Promise<SubjectRef[]> {\n const keys = await subjectKeys(getDEK, encrypted, subjectId)\n const seen = new Set<string>()\n const out: SubjectRef[] = []\n for (const key of keys) {\n for (const ref of await readRefs(adapter, vault, getDEK, encrypted, key)) {\n const dedup = `${ref.collection}\\u0000${ref.id}`\n if (seen.has(dedup)) continue\n seen.add(dedup)\n out.push(ref)\n }\n }\n return out\n}\n\n/**\n * Rebuild the entire subject index from the canonical records (the recovery\n * path for the documented read-modify-write race). Scans each declared\n * collection, reads `record[subjectField]` (dotted path), and rewrites the\n * index from scratch. Tombstoned (already-shredded) records contribute no\n * ref — their body is gone, so they cannot be re-indexed.\n *\n * `decodeRecord` decrypts an envelope to a plain object (or returns null for\n * a tombstone / unreadable record); supplied by the caller so this module\n * stays free of Collection internals.\n */\nexport async function rebuildSubjectIndex(\n adapter: NoydbStore,\n vault: string,\n getDEK: GetDEK,\n encrypted: boolean,\n subjects: Readonly<Record<string, string>>,\n decodeRecord: (collection: string, id: string, env: EncryptedEnvelope) => Promise<Record<string, unknown> | null>,\n): Promise<number> {\n // Drop every existing index entry first so removed refs don't linger.\n const existing = await adapter.list(vault, SUBJECT_INDEX_COLLECTION)\n for (const k of existing) {\n await adapter.delete(vault, SUBJECT_INDEX_COLLECTION, k)\n }\n\n // subjectId → refs, accumulated across all declared collections.\n const bySubject = new Map<string, SubjectRef[]>()\n for (const [collection, field] of Object.entries(subjects)) {\n const ids = await adapter.list(vault, collection)\n for (const id of ids) {\n if (id.startsWith('_')) continue\n const env = await adapter.get(vault, collection, id)\n if (!env || !env._data) continue // missing or tombstone\n const record = await decodeRecord(collection, id, env)\n if (record === null) continue\n const subjectValue = readDottedPath(record, field)\n if (subjectValue === undefined || subjectValue === null) continue\n const subjectId = coerceSubjectId(subjectValue)\n const list = bySubject.get(subjectId) ?? []\n list.push({ collection, id })\n bySubject.set(subjectId, list)\n }\n }\n\n let entries = 0\n for (const [subjectId, refs] of bySubject) {\n const key = await primarySubjectKey(getDEK, encrypted, subjectId)\n await writeRefs(adapter, vault, getDEK, encrypted, key, refs)\n entries++\n }\n return entries\n}\n\n/**\n * Coerce a read subject-field value to a stable string id. Primitives use\n * their natural string form; objects/arrays are JSON-stringified so structural\n * subjects still get a deterministic key (avoids the `[object Object]` trap).\n */\nexport function coerceSubjectId(value: unknown): string {\n if (typeof value === 'string') return value\n if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n return String(value)\n }\n return JSON.stringify(value)\n}\n\n/** Read a (possibly dotted) field path from a plain record. */\nexport function readDottedPath(record: Record<string, unknown>, field: string): unknown {\n if (!field.includes('.')) return record[field]\n let cursor: unknown = record\n for (const segment of field.split('.')) {\n if (cursor === null || cursor === undefined) return undefined\n cursor = (cursor as Record<string, unknown>)[segment]\n }\n return cursor\n}\n"],"mappings":"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","names":[]}