@noy-db/hub 0.3.0-pre.1 → 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.
- package/dist/aggregate/index.js +9 -8
- package/dist/aggregate/index.js.map +1 -1
- package/dist/api-YGMINAET.js +20 -0
- package/dist/as/index.js +12 -6
- package/dist/attestation/index.js +19 -13
- package/dist/attestation/index.js.map +1 -1
- package/dist/backup-XA5STIYQ.js +225 -0
- package/dist/backup-XA5STIYQ.js.map +1 -0
- package/dist/blobs/index.js +12 -6
- package/dist/blobs/index.js.map +1 -1
- package/dist/broker/index.js +92 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/bundle/index.js +21 -15
- package/dist/bundle/index.js.map +1 -1
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +32 -26
- package/dist/chunk-25NDNMQ7.js +70 -0
- package/dist/chunk-25NDNMQ7.js.map +1 -0
- package/dist/chunk-2JMMY7HZ.js +188 -0
- package/dist/chunk-2JMMY7HZ.js.map +1 -0
- package/dist/chunk-3CNQ7FQ3.js +430 -0
- package/dist/chunk-3G4KMVUN.js +291 -0
- package/dist/chunk-3G4KMVUN.js.map +1 -0
- package/dist/chunk-3MSQLQNZ.js +74 -0
- package/dist/chunk-45ZZLTFH.js +38 -0
- package/dist/chunk-45ZZLTFH.js.map +1 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-4N5QFSNQ.js +150 -0
- package/dist/chunk-4N5QFSNQ.js.map +1 -0
- package/dist/chunk-4R4Q64W5.js +34 -0
- package/dist/chunk-57V5S7PW.js +130 -0
- package/dist/chunk-57V5S7PW.js.map +1 -0
- package/dist/chunk-5JB73NMC.js +202 -0
- package/dist/chunk-5JB73NMC.js.map +1 -0
- package/dist/chunk-5XIPOCQC.js +155 -0
- package/dist/chunk-5ZOSG3RJ.js +778 -0
- package/dist/chunk-5ZOSG3RJ.js.map +1 -0
- package/dist/chunk-67TNU77I.js +36 -0
- package/dist/chunk-67TNU77I.js.map +1 -0
- package/dist/chunk-6QILBDZU.js +205 -0
- package/dist/chunk-7E67FJ33.js +155 -0
- package/dist/chunk-7ITPJFGC.js +50 -0
- package/dist/chunk-7ITPJFGC.js.map +1 -0
- package/dist/chunk-7NS43EXZ.js +117 -0
- package/dist/chunk-7QIXUSDQ.js +341 -0
- package/dist/chunk-7QIXUSDQ.js.map +1 -0
- package/dist/chunk-7VSGW5KJ.js +74 -0
- package/dist/chunk-7VSGW5KJ.js.map +1 -0
- package/dist/chunk-A2QF4JUE.js +14073 -0
- package/dist/chunk-A2QF4JUE.js.map +1 -0
- package/dist/chunk-A2Y6YFVN.js +209 -0
- package/dist/chunk-AOVDSIL3.js +1221 -0
- package/dist/chunk-AOVDSIL3.js.map +1 -0
- package/dist/chunk-ARSAMO24.js +29 -0
- package/dist/chunk-ARSAMO24.js.map +1 -0
- package/dist/chunk-AWB5JZW6.js +41 -0
- package/dist/chunk-AWB5JZW6.js.map +1 -0
- package/dist/chunk-BCYQA5BK.js +45 -0
- package/dist/chunk-BE7N3AXA.js +621 -0
- package/dist/chunk-BE7N3AXA.js.map +1 -0
- package/dist/chunk-BEIRE5K4.js +164 -0
- package/dist/chunk-BEIRE5K4.js.map +1 -0
- package/dist/chunk-BZO4WCJI.js +86 -0
- package/dist/chunk-BZO4WCJI.js.map +1 -0
- package/dist/chunk-C3YH34IL.js +75 -0
- package/dist/chunk-C3YH34IL.js.map +1 -0
- package/dist/chunk-C7NTK5I3.js +49 -0
- package/dist/chunk-C7NTK5I3.js.map +1 -0
- package/dist/chunk-CB25ONKC.js +129 -0
- package/dist/chunk-CIKY6I4W.js +21 -0
- package/dist/chunk-CKZW6P5V.js +32 -0
- package/dist/chunk-CKZW6P5V.js.map +1 -0
- package/dist/chunk-D26JB3LZ.js +54 -0
- package/dist/chunk-D3EFFFOL.js +59 -0
- package/dist/chunk-D3EFFFOL.js.map +1 -0
- package/dist/chunk-DGH65E7Q.js +466 -0
- package/dist/chunk-DGH65E7Q.js.map +1 -0
- package/dist/chunk-DIRRS7WP.js +42 -0
- package/dist/chunk-DJ3VKYFA.js +150 -0
- package/dist/chunk-DJ3VKYFA.js.map +1 -0
- package/dist/chunk-DMFNPHCX.js +247 -0
- package/dist/chunk-DMFNPHCX.js.map +1 -0
- package/dist/chunk-ELNBMFOS.js +392 -0
- package/dist/chunk-ELNBMFOS.js.map +1 -0
- package/dist/chunk-FH542DDY.js +1505 -0
- package/dist/chunk-FH542DDY.js.map +1 -0
- package/dist/chunk-FQQF23MC.js +45 -0
- package/dist/chunk-FQQF23MC.js.map +1 -0
- package/dist/chunk-FXK4X4BL.js +91 -0
- package/dist/chunk-FXK4X4BL.js.map +1 -0
- package/dist/chunk-GA2QHD6P.js +235 -0
- package/dist/chunk-GA2QHD6P.js.map +1 -0
- package/dist/chunk-GYGLAVCX.js +19 -0
- package/dist/chunk-GYGLAVCX.js.map +1 -0
- package/dist/chunk-H44ZE4IE.js +355 -0
- package/dist/chunk-H6CZSDWK.js +1697 -0
- package/dist/chunk-H6CZSDWK.js.map +1 -0
- package/dist/chunk-H6HM6CVR.js +279 -0
- package/dist/chunk-H6HM6CVR.js.map +1 -0
- package/dist/chunk-HFJIGWJC.js +382 -0
- package/dist/chunk-HUS3J5WM.js +404 -0
- package/dist/chunk-HUS3J5WM.js.map +1 -0
- package/dist/chunk-IDIV5NVH.js +99 -0
- package/dist/chunk-IDIV5NVH.js.map +1 -0
- package/dist/chunk-IGJCYUT5.js +99 -0
- package/dist/chunk-IGJCYUT5.js.map +1 -0
- package/dist/chunk-IGJHJYM6.js +515 -0
- package/dist/chunk-IGJHJYM6.js.map +1 -0
- package/dist/chunk-IP2QBAGS.js +589 -0
- package/dist/chunk-IP2QBAGS.js.map +1 -0
- package/dist/chunk-JK733I5V.js +23 -0
- package/dist/chunk-JK733I5V.js.map +1 -0
- package/dist/chunk-JOQ53DMI.js +255 -0
- package/dist/chunk-JOQ53DMI.js.map +1 -0
- package/dist/chunk-K62IUKOD.js +823 -0
- package/dist/chunk-K62IUKOD.js.map +1 -0
- package/dist/chunk-KPGX66PM.js +230 -0
- package/dist/chunk-KPZS5QAQ.js +151 -0
- package/dist/chunk-KPZS5QAQ.js.map +1 -0
- package/dist/chunk-L2SNBIV7.js +453 -0
- package/dist/chunk-L2SNBIV7.js.map +1 -0
- package/dist/chunk-LP7BEXCT.js +32 -0
- package/dist/chunk-LP7BEXCT.js.map +1 -0
- package/dist/chunk-MCEKIAO4.js +367 -0
- package/dist/chunk-MELR46EF.js +280 -0
- package/dist/chunk-MELR46EF.js.map +1 -0
- package/dist/chunk-MSPNM2OM.js +95 -0
- package/dist/chunk-MSPNM2OM.js.map +1 -0
- package/dist/chunk-NO272T7Q.js +194 -0
- package/dist/chunk-NO272T7Q.js.map +1 -0
- package/dist/chunk-O2DYPAZY.js +23 -0
- package/dist/chunk-ODJWBC5I.js +30 -0
- package/dist/chunk-OEAATWH5.js +686 -0
- package/dist/chunk-OEAATWH5.js.map +1 -0
- package/dist/chunk-OFJ5GPNA.js +71 -0
- package/dist/chunk-OOLO4LQG.js +99 -0
- package/dist/chunk-OOLO4LQG.js.map +1 -0
- package/dist/chunk-P5RY4ZWD.js +662 -0
- package/dist/chunk-P5RY4ZWD.js.map +1 -0
- package/dist/chunk-PR5LC5YX.js +265 -0
- package/dist/chunk-PR5LC5YX.js.map +1 -0
- package/dist/chunk-PXWVF7MC.js +135 -0
- package/dist/chunk-Q3XSMOZM.js +40 -0
- package/dist/chunk-QLLKLFE2.js +94 -0
- package/dist/chunk-QLLKLFE2.js.map +1 -0
- package/dist/chunk-QQJXBZCO.js +1056 -0
- package/dist/chunk-QQJXBZCO.js.map +1 -0
- package/dist/chunk-QYPKGVT4.js +261 -0
- package/dist/chunk-QYPKGVT4.js.map +1 -0
- package/dist/chunk-RKRGDAS7.js +59 -0
- package/dist/chunk-SRVQHVNX.js +164 -0
- package/dist/chunk-SYMS4546.js +29 -0
- package/dist/chunk-SYMS4546.js.map +1 -0
- package/dist/chunk-THNJ3IKU.js +17 -0
- package/dist/chunk-THNJ3IKU.js.map +1 -0
- package/dist/chunk-TPH5EO6L.js +54 -0
- package/dist/chunk-TPH5EO6L.js.map +1 -0
- package/dist/chunk-UFILRICG.js +14 -0
- package/dist/chunk-UTLEAJXC.js +97 -0
- package/dist/chunk-VA4ZWLFY.js +123 -0
- package/dist/chunk-VR24ILCR.js +367 -0
- package/dist/chunk-VYYM3MEN.js +98 -0
- package/dist/chunk-VYYM3MEN.js.map +1 -0
- package/dist/chunk-W5D62AQD.js +944 -0
- package/dist/chunk-W5D62AQD.js.map +1 -0
- package/dist/chunk-WGV4CUZT.js +167 -0
- package/dist/chunk-WGV4CUZT.js.map +1 -0
- package/dist/chunk-WTUNZACT.js +30 -0
- package/dist/chunk-WTUNZACT.js.map +1 -0
- package/dist/chunk-X6CMGUAG.js +69 -0
- package/dist/chunk-X6CMGUAG.js.map +1 -0
- package/dist/chunk-XFXUTFWQ.js +85 -0
- package/dist/chunk-XFXUTFWQ.js.map +1 -0
- package/dist/chunk-XHV25KBM.js +30 -0
- package/dist/chunk-YSXEFGND.js +124 -0
- package/dist/chunk-YXOUQ2H7.js +36 -0
- package/dist/chunk-ZP5PL65C.js +80 -0
- package/dist/classified/index.js +40 -0
- package/dist/classified-marker-LQWWQNIJ.js +24 -0
- package/dist/classified-marker-LQWWQNIJ.js.map +1 -0
- package/dist/collection-facade-YE2O4J4O.js +39 -0
- package/dist/computed-W6MVAMWZ.js +11 -0
- package/dist/consent/index.js +10 -4
- package/dist/consent/index.js.map +1 -1
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-4KXZEB3X.js +28 -0
- package/dist/dead-filter-4KXZEB3X.js.map +1 -0
- package/dist/delegation-OPUU3R2E.js +25 -0
- package/dist/derivations/index.js +13 -6
- package/dist/derive-BGUHU663.js +21 -0
- package/dist/enclave-VXAQD4XJ.js +135 -0
- package/dist/executor-GTVSUUBX.js +25 -0
- package/dist/executor-GZWMTOXB.js +9 -0
- package/dist/executor-XXGS4S3K.js +9 -0
- package/dist/export-accessible-BMULIOYB.js +23 -0
- package/dist/extract-partition-JUQTWDXR.js +36 -0
- package/dist/fanout-sidecar-CKYFH33E.js +74 -0
- package/dist/fanout-sidecar-CKYFH33E.js.map +1 -0
- package/dist/fence-watcher-DHQ775JB.js +69 -0
- package/dist/fence-watcher-DHQ775JB.js.map +1 -0
- package/dist/find-XRGCNGNN.js +11 -0
- package/dist/forget/index.js +11 -5
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +12 -6
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +50 -31
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +303 -1400
- package/dist/index.js +1525 -184
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +4 -4
- package/dist/issue-UB6AA5M6.js +19 -0
- package/dist/json-schema-I22JCYCG.js +44 -0
- package/dist/json-schema-I22JCYCG.js.map +1 -0
- package/dist/kernel/cache/index.d.ts +10 -0
- package/dist/kernel/cache/lru.d.ts +97 -0
- package/dist/kernel/cache/policy.d.ts +32 -0
- package/dist/kernel/collection-config.d.ts +781 -0
- package/dist/kernel/collection.d.ts +1505 -0
- package/dist/kernel/constants.d.ts +18 -0
- package/dist/kernel/debug.d.ts +25 -0
- package/dist/kernel/enclave/broker/proof.d.ts +154 -0
- package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
- package/dist/kernel/enclave/classify/compare.d.ts +10 -0
- package/dist/kernel/enclave/classify/digest.d.ts +8 -0
- package/dist/kernel/enclave/classify/find.d.ts +36 -0
- package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
- package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
- package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
- package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
- package/dist/kernel/enclave/classify/verify.d.ts +33 -0
- package/dist/kernel/enclave/classify/write.d.ts +8 -0
- package/dist/kernel/enclave/crypto.d.ts +263 -0
- package/dist/kernel/enclave/index.d.ts +78 -0
- package/dist/kernel/enclave/record-keys/deterministic.d.ts +54 -0
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/lifecycle.d.ts +57 -0
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +301 -0
- package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
- package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
- package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
- package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
- package/dist/kernel/env-check.d.ts +1 -0
- package/dist/kernel/errors.d.ts +1848 -0
- package/dist/kernel/events.d.ts +11 -0
- package/dist/kernel/memory-store.d.ts +17 -0
- package/dist/kernel/mutation.d.ts +14 -0
- package/dist/kernel/noydb.d.ts +818 -0
- package/dist/kernel/paths.d.ts +25 -0
- package/dist/kernel/query/builder.d.ts +520 -0
- package/dist/kernel/query/index.d.ts +31 -0
- package/dist/kernel/query/join.d.ts +205 -0
- package/dist/kernel/query/live.d.ts +111 -0
- package/dist/kernel/query/predicate.d.ts +139 -0
- package/dist/kernel/query/scan-builder.d.ts +334 -0
- package/dist/kernel/refs.d.ts +205 -0
- package/dist/kernel/schema.d.ts +134 -0
- package/dist/kernel/sync-policy.d.ts +188 -0
- package/dist/kernel/types.d.ts +3147 -0
- package/dist/kernel/util/discriminant.d.ts +58 -0
- package/dist/kernel/util/index.d.ts +14 -0
- package/dist/kernel/util/sanitize-filename.d.ts +75 -0
- package/dist/kernel/validation.d.ts +130 -0
- package/dist/kernel/vault.d.ts +1723 -0
- package/dist/kernel/via/compose.d.ts +144 -0
- package/dist/kernel/via/dispatch.d.ts +185 -0
- package/dist/kernel/via/graph-wiring.d.ts +145 -0
- package/dist/kernel/via/graph.d.ts +165 -0
- package/dist/kernel/via/index.d.ts +200 -0
- package/dist/kernel/via/pipeline.d.ts +266 -0
- package/dist/kernel/via/reconcile.d.ts +153 -0
- package/dist/kernel/via/taint-binding.d.ts +66 -0
- package/dist/kernel/write-queue.d.ts +46 -0
- package/dist/lazy/index.js +12 -0
- package/dist/ledger-FU6GH5EH.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-YUN7W5QG.js +24 -0
- package/dist/link-set-MNADSH5M.js +31 -0
- package/dist/materialized-views/index.js +20 -10
- package/dist/noydb-6JLBZU4U.js +67 -0
- package/dist/on/index.js +10 -4
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +21 -7
- package/dist/pod/index.js +12 -6
- package/dist/policy-JTFOPPUU.js +41 -0
- package/dist/port/as/index.d.ts +26 -0
- package/dist/port/at/index.d.ts +18 -0
- package/dist/port/by/default-provider.d.ts +9 -0
- package/dist/port/by/index.d.ts +17 -0
- package/dist/port/by/types.d.ts +86 -0
- package/dist/port/in/index.d.ts +21 -0
- package/dist/port/on/index.d.ts +27 -0
- package/dist/port/to/index.d.ts +19 -0
- package/dist/port/ui/index.d.ts +21 -0
- package/dist/port/with/blob-strategy.d.ts +81 -0
- package/dist/port/with/broker-strategy.d.ts +84 -0
- package/dist/port/with/capabilities.d.ts +31 -0
- package/dist/port/with/classified-marker.d.ts +9 -0
- package/dist/port/with/classified-strategy.d.ts +62 -0
- package/dist/port/with/computed-strategy.d.ts +19 -0
- package/dist/port/with/i18n-strategy.d.ts +175 -0
- package/dist/port/with/index.d.ts +18 -0
- package/dist/port/with/lazy-strategy.d.ts +48 -0
- package/dist/port/with/lookup-strategy.d.ts +128 -0
- package/dist/port/with/service-bus.d.ts +156 -0
- package/dist/port/with/team-strategy.d.ts +36 -0
- package/dist/port/with/write-hooks.d.ts +34 -0
- package/dist/portability/index.js +8 -8
- package/dist/post-register-HAWO3O7O.js +55 -0
- package/dist/post-register-HAWO3O7O.js.map +1 -0
- package/dist/public-envelope-NJVB7LPA.js +32 -0
- package/dist/purge-scope-FGNNLWHD.js +24 -0
- package/dist/purge-scope-FGNNLWHD.js.map +1 -0
- package/dist/query/index.js +9 -6
- package/dist/read-only-facade-CHCKSEPD.js +8 -0
- package/dist/register-VCKOBWKT.js +23 -0
- package/dist/registry-72UKJ2L4.js +9 -0
- package/dist/registry-BZFLJNEH.js +18 -0
- package/dist/registry-YJEYSYI5.js +19 -0
- package/dist/request-withdrawal-6MJRMFHF.js +31 -0
- package/dist/reveal-BOY7XYFH.js +38 -0
- package/dist/reveal-BOY7XYFH.js.map +1 -0
- package/dist/revoke-4KUNSVJC.js +24 -0
- package/dist/satellites/index.js +8 -0
- package/dist/sealed-record/index.js +13 -7
- package/dist/sealed-record/index.js.map +1 -1
- package/dist/seed-4RRXT42N.js +231 -0
- package/dist/seed-4RRXT42N.js.map +1 -0
- package/dist/session/index.js +10 -4
- package/dist/session/index.js.map +1 -1
- package/dist/shadow/index.js +2 -2
- package/dist/signer-DDDXP5JD.js +25 -0
- package/dist/signer-DDDXP5JD.js.map +1 -0
- package/dist/snapshots/index.js +11 -5
- package/dist/snapshots/index.js.map +1 -1
- package/dist/stale-NXPT56JA.js +14 -0
- package/dist/stale-NXPT56JA.js.map +1 -0
- package/dist/storage-IR6EEAV2.js +23 -0
- package/dist/storage-IR6EEAV2.js.map +1 -0
- package/dist/store-coordination-provider-HPYVFJCV.js +142 -0
- package/dist/sync/index.js +10 -4
- package/dist/sync/index.js.map +1 -1
- package/dist/team/index.js +25 -12
- package/dist/tiers/index.js +11 -5
- package/dist/to/index.js +1 -2
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-66RHOW7N.js +139 -0
- package/dist/verify-66RHOW7N.js.map +1 -0
- package/dist/via/blob/active.d.ts +34 -0
- package/dist/via/blob/binding.d.ts +86 -0
- package/dist/via/blob/index.d.ts +34 -0
- package/dist/via/classified/active.d.ts +3 -0
- package/dist/via/classified/binding.d.ts +83 -0
- package/dist/via/classified/config-drift.d.ts +34 -0
- package/dist/via/classified/descriptor.d.ts +66 -0
- package/dist/via/classified/errors.d.ts +19 -0
- package/dist/via/classified/guards.d.ts +23 -0
- package/dist/via/classified/index.d.ts +11 -0
- package/dist/via/classified/presets.d.ts +65 -0
- package/dist/via/classified/resolve.d.ts +9 -0
- package/dist/via/classified/strategy.d.ts +11 -0
- package/dist/via/classified/validators.d.ts +3 -0
- package/dist/via/classified/write.d.ts +4 -0
- package/dist/via/computed/binding.d.ts +34 -0
- package/dist/via/computed/descriptor.d.ts +35 -0
- package/dist/via/i18n/active.d.ts +28 -0
- package/dist/via/i18n/binding.d.ts +36 -0
- package/dist/via/i18n/core.d.ts +267 -0
- package/dist/via/i18n/densify.d.ts +24 -0
- package/dist/via/i18n/dictionary.d.ts +200 -0
- package/dist/via/i18n/index.d.ts +21 -0
- package/dist/via/i18n/policy.d.ts +44 -0
- package/dist/via/i18n/script.d.ts +26 -0
- package/dist/via/i18n/strategy.d.ts +13 -0
- package/dist/via/lookup/active.d.ts +19 -0
- package/dist/via/lookup/binding.d.ts +99 -0
- package/dist/via/lookup/descriptor.d.ts +123 -0
- package/dist/via/lookup/handle.d.ts +220 -0
- package/dist/via/lookup/index.d.ts +17 -0
- package/dist/via/lookup/registry.d.ts +219 -0
- package/dist/via/lookup/snapshot.d.ts +67 -0
- package/dist/via/money/arith.d.ts +68 -0
- package/dist/via/money/binding.d.ts +21 -0
- package/dist/via/money/branded.d.ts +61 -0
- package/dist/via/money/descriptor.d.ts +73 -0
- package/dist/via/money/fixed-point.d.ts +51 -0
- package/dist/via/money/index.d.ts +15 -0
- package/dist/via/money/iso4217.d.ts +6 -0
- package/dist/via/money/money-reducer.d.ts +33 -0
- package/dist/via/money/normalize.d.ts +105 -0
- package/dist/via/money/paths.d.ts +61 -0
- package/dist/via/money/where.d.ts +106 -0
- package/dist/walk-2RWEOCAS.js +241 -0
- package/dist/walk-2RWEOCAS.js.map +1 -0
- package/dist/with/index.js +12 -6
- package/dist/with-audit/attestation/active.d.ts +10 -0
- package/dist/with-audit/attestation/index.d.ts +16 -0
- package/dist/with-audit/attestation/issue.d.ts +29 -0
- package/dist/with-audit/attestation/revoke.d.ts +15 -0
- package/dist/with-audit/attestation/signer.d.ts +33 -0
- package/dist/with-audit/attestation/strategy.d.ts +44 -0
- package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
- package/dist/with-audit/consent/active.d.ts +14 -0
- package/dist/with-audit/consent/consent.d.ts +114 -0
- package/dist/with-audit/consent/index.d.ts +14 -0
- package/dist/with-audit/consent/strategy.d.ts +36 -0
- package/dist/with-audit/forget/active.d.ts +31 -0
- package/dist/with-audit/forget/index.d.ts +28 -0
- package/dist/with-audit/forget/purge-scope.d.ts +54 -0
- package/dist/with-audit/forget/strategy.d.ts +177 -0
- package/dist/with-audit/forget/subject-index.d.ts +83 -0
- package/dist/with-audit/guards/executor.d.ts +26 -0
- package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
- package/dist/with-audit/guards/index.d.ts +10 -0
- package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
- package/dist/with-audit/guards/registry.d.ts +83 -0
- package/dist/with-audit/guards/transition-guard.d.ts +82 -0
- package/dist/with-audit/guards/types.d.ts +134 -0
- package/dist/with-audit/guards/with-guard.d.ts +15 -0
- package/dist/with-audit/periods/active.d.ts +11 -0
- package/dist/with-audit/periods/index.d.ts +18 -0
- package/dist/with-audit/periods/periods.d.ts +417 -0
- package/dist/with-audit/periods/strategy.d.ts +32 -0
- package/dist/with-audit/periods/vault-facade.d.ts +95 -0
- package/dist/with-audit/portability/active.d.ts +11 -0
- package/dist/with-audit/portability/export-accessible.d.ts +46 -0
- package/dist/with-audit/portability/index.d.ts +18 -0
- package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
- package/dist/with-audit/portability/strategy.d.ts +31 -0
- package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
- package/dist/with-audit/sealed-record/active.d.ts +9 -0
- package/dist/with-audit/sealed-record/index.d.ts +55 -0
- package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
- package/dist/with-audit/sealed-record/types.d.ts +27 -0
- package/dist/with-audit/tiers/active.d.ts +9 -0
- package/dist/with-audit/tiers/index.d.ts +122 -0
- package/dist/with-audit/tiers/strategy.d.ts +35 -0
- package/dist/with-cargo/active.d.ts +11 -0
- package/dist/with-cargo/adopt-partition.d.ts +81 -0
- package/dist/with-cargo/decrypt-partition.d.ts +19 -0
- package/dist/with-cargo/describe-extraction.d.ts +33 -0
- package/dist/with-cargo/extract-partition.d.ts +147 -0
- package/dist/with-cargo/index.d.ts +33 -0
- package/dist/with-cargo/strategy.d.ts +30 -0
- package/dist/with-cargo/vault-diff.d.ts +144 -0
- package/dist/with-cargo/walk-closure.d.ts +38 -0
- package/dist/with-commit/crdt/active.d.ts +25 -0
- package/dist/with-commit/crdt/crdt.d.ts +42 -0
- package/dist/with-commit/crdt/index.d.ts +16 -0
- package/dist/with-commit/crdt/strategy.d.ts +25 -0
- package/dist/with-commit/history/active.d.ts +40 -0
- package/dist/with-commit/history/diff.d.ts +23 -0
- package/dist/with-commit/history/history.d.ts +27 -0
- package/dist/with-commit/history/index.d.ts +30 -0
- package/dist/with-commit/history/ledger/constants.d.ts +37 -0
- package/dist/with-commit/history/ledger/entry.d.ts +195 -0
- package/dist/with-commit/history/ledger/hash.d.ts +30 -0
- package/dist/with-commit/history/ledger/index.d.ts +19 -0
- package/dist/with-commit/history/ledger/patch.d.ts +99 -0
- package/dist/with-commit/history/ledger/store.d.ts +335 -0
- package/dist/with-commit/history/strategy.d.ts +126 -0
- package/dist/with-commit/history/time-machine.d.ts +179 -0
- package/dist/with-commit/numbering/descriptor.d.ts +27 -0
- package/dist/with-commit/numbering/index.d.ts +69 -0
- package/dist/with-commit/sequence/active.d.ts +10 -0
- package/dist/with-commit/sequence/index.d.ts +150 -0
- package/dist/with-commit/sequence/strategy.d.ts +26 -0
- package/dist/with-commit/tx/active.d.ts +27 -0
- package/dist/with-commit/tx/dry-run.d.ts +29 -0
- package/dist/with-commit/tx/elevated-handle.d.ts +58 -0
- package/dist/with-commit/tx/index.d.ts +13 -0
- package/dist/with-commit/tx/invariants.d.ts +68 -0
- package/dist/with-commit/tx/strategy.d.ts +23 -0
- package/dist/with-commit/tx/transaction.d.ts +207 -0
- package/dist/with-fork/archive/engine.d.ts +71 -0
- package/dist/with-fork/archive/index.d.ts +23 -0
- package/dist/with-fork/shadow/active.d.ts +6 -0
- package/dist/with-fork/shadow/index.d.ts +14 -0
- package/dist/with-fork/shadow/strategy.d.ts +28 -0
- package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
- package/dist/with-fork/snapshots/active.d.ts +20 -0
- package/dist/with-fork/snapshots/engine.d.ts +36 -0
- package/dist/with-fork/snapshots/index.d.ts +5 -0
- package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
- package/dist/with-fork/snapshots/policy.d.ts +23 -0
- package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
- package/dist/with-fork/snapshots/strategy.d.ts +48 -0
- package/dist/with-formula/computed/index.d.ts +48 -0
- package/dist/with-formula/computed/lazy.d.ts +13 -0
- package/dist/with-formula/derivations/executor.d.ts +61 -0
- package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
- package/dist/with-formula/derivations/index.d.ts +6 -0
- package/dist/with-formula/derivations/registry.d.ts +67 -0
- package/dist/with-formula/derivations/stale.d.ts +39 -0
- package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
- package/dist/with-formula/derivations/types.d.ts +248 -0
- package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
- package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
- package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +58 -0
- package/dist/with-formula/materialized-views/executor.d.ts +71 -0
- package/dist/with-formula/materialized-views/index.d.ts +11 -0
- package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
- package/dist/with-formula/materialized-views/registry.d.ts +99 -0
- package/dist/with-formula/materialized-views/stale.d.ts +62 -0
- package/dist/with-formula/materialized-views/types.d.ts +318 -0
- package/dist/with-formula/materialized-views/with-materialized-view.d.ts +24 -0
- package/dist/with-formula/overlay-views/index.d.ts +5 -0
- package/dist/with-formula/overlay-views/registry.d.ts +42 -0
- package/dist/with-formula/overlay-views/types.d.ts +97 -0
- package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
- package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
- package/dist/with-lookup/aggregate/active.d.ts +33 -0
- package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
- package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
- package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
- package/dist/with-lookup/aggregate/index.d.ts +23 -0
- package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
- package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
- package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
- package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
- package/dist/with-lookup/embeddings/index.d.ts +3 -0
- package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
- package/dist/with-lookup/indexing/active.d.ts +30 -0
- package/dist/with-lookup/indexing/collection-facade.d.ts +120 -0
- package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
- package/dist/with-lookup/indexing/index.d.ts +27 -0
- package/dist/with-lookup/indexing/lazy-builder.d.ts +69 -0
- package/dist/with-lookup/indexing/persisted-indexes.d.ts +186 -0
- package/dist/with-lookup/indexing/strategy.d.ts +56 -0
- package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
- package/dist/with-lookup/search/active.d.ts +10 -0
- package/dist/with-lookup/search/build-docs.d.ts +15 -0
- package/dist/with-lookup/search/collection-facade.d.ts +123 -0
- package/dist/with-lookup/search/fuse.d.ts +22 -0
- package/dist/with-lookup/search/index-store.d.ts +19 -0
- package/dist/with-lookup/search/index.d.ts +19 -0
- package/dist/with-lookup/search/inverted-index.d.ts +47 -0
- package/dist/with-lookup/search/persisted-index-store.d.ts +41 -0
- package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
- package/dist/with-lookup/search/scan.d.ts +28 -0
- package/dist/with-lookup/search/segment.d.ts +15 -0
- package/dist/with-lookup/search/serialize.d.ts +4 -0
- package/dist/with-lookup/search/snippet.d.ts +5 -0
- package/dist/with-lookup/search/strategy.d.ts +37 -0
- package/dist/with-lookup/search/tokenize.d.ts +12 -0
- package/dist/with-party/auth-introspection/index.d.ts +44 -0
- package/dist/with-party/broker/active.d.ts +23 -0
- package/dist/with-party/broker/index.d.ts +28 -0
- package/dist/with-party/broker/seed.d.ts +77 -0
- package/dist/with-party/custody/active.d.ts +10 -0
- package/dist/with-party/custody/index.d.ts +69 -0
- package/dist/with-party/custody/liberate.d.ts +64 -0
- package/dist/with-party/custody/strategy.d.ts +48 -0
- package/dist/with-party/directory/index.d.ts +11 -0
- package/dist/with-party/directory/public-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/public-envelope/schema.d.ts +24 -0
- package/dist/with-party/directory/public-envelope/storage.d.ts +59 -0
- package/dist/with-party/directory/public-envelope/types.d.ts +80 -0
- package/dist/with-party/directory/storage.d.ts +33 -0
- package/dist/with-party/directory/types.d.ts +43 -0
- package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
- package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
- package/dist/with-party/directory/visibility.d.ts +47 -0
- package/dist/with-party/policy/engine.d.ts +60 -0
- package/dist/with-party/policy/index.d.ts +15 -0
- package/dist/with-party/policy/noydb-facade.d.ts +39 -0
- package/dist/with-party/policy/presets.d.ts +38 -0
- package/dist/with-party/policy/storage.d.ts +31 -0
- package/dist/with-party/session/active.d.ts +34 -0
- package/dist/with-party/session/dev-unlock.d.ts +128 -0
- package/dist/with-party/session/index.d.ts +23 -0
- package/dist/with-party/session/session-policy.d.ts +92 -0
- package/dist/with-party/session/session.d.ts +131 -0
- package/dist/with-party/session/strategy.d.ts +42 -0
- package/dist/with-party/session/unlock-state.d.ts +47 -0
- package/dist/with-party/sync/index.d.ts +31 -0
- package/dist/with-party/tab-coordination.d.ts +73 -0
- package/dist/with-party/tab-write-relay.d.ts +39 -0
- package/dist/with-party/team/active.d.ts +13 -0
- package/dist/with-party/team/authenticators.d.ts +95 -0
- package/dist/with-party/team/deed.d.ts +97 -0
- package/dist/with-party/team/delegation.d.ts +88 -0
- package/dist/with-party/team/index.d.ts +38 -0
- package/dist/with-party/team/keyring.d.ts +318 -0
- package/dist/with-party/team/magic-link-grant.d.ts +152 -0
- package/dist/with-party/team/managed-passphrase.d.ts +280 -0
- package/dist/with-party/team/noydb-facade.d.ts +484 -0
- package/dist/with-party/team/peer-recover.d.ts +81 -0
- package/dist/with-party/team/presence.d.ts +81 -0
- package/dist/with-party/team/recovery.d.ts +191 -0
- package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
- package/dist/with-party/team/rotate-recover.d.ts +275 -0
- package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
- package/dist/with-party/team/strategy.d.ts +9 -0
- package/dist/with-party/team/sync-active.d.ts +33 -0
- package/dist/with-party/team/sync-credentials.d.ts +113 -0
- package/dist/with-party/team/sync-strategy.d.ts +67 -0
- package/dist/with-party/team/sync-transaction.d.ts +39 -0
- package/dist/with-party/team/sync.d.ts +165 -0
- package/dist/with-party/team/tiers.d.ts +39 -0
- package/dist/with-party/team/wrapped-deks.d.ts +86 -0
- package/dist/with-pod/backup.d.ts +74 -0
- package/dist/with-pod/bundle.d.ts +414 -0
- package/dist/with-pod/format.d.ts +203 -0
- package/dist/with-pod/index.d.ts +20 -0
- package/dist/with-pod/pod-store.d.ts +54 -0
- package/dist/with-pod/ulid.d.ts +64 -0
- package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
- package/dist/with-shape/blobs/blob-set.d.ts +342 -0
- package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
- package/dist/with-shape/blobs/import-external.d.ts +50 -0
- package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
- package/dist/with-shape/blobs/object-projection.d.ts +70 -0
- package/dist/with-shape/introspection/describe.d.ts +237 -0
- package/dist/with-shape/introspection/field-meta.d.ts +61 -0
- package/dist/with-shape/introspection/fields.d.ts +14 -0
- package/dist/with-shape/introspection/index.d.ts +12 -0
- package/dist/with-shape/introspection/json-schema.d.ts +13 -0
- package/dist/with-shape/introspection/meta.d.ts +22 -0
- package/dist/with-shape/introspection/projection.d.ts +13 -0
- package/dist/with-shape/introspection/types.d.ts +154 -0
- package/dist/with-shape/introspection/walk.d.ts +50 -0
- package/dist/with-shape/links/lazy-handle.d.ts +36 -0
- package/dist/with-shape/links/link-set.d.ts +67 -0
- package/dist/with-shape/links/names.d.ts +65 -0
- package/dist/with-shape/links/vault-facade.d.ts +211 -0
- package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
- package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
- package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
- package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
- package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
- package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
- package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
- package/dist/with-shape/satellites/declare.d.ts +60 -0
- package/dist/with-shape/satellites/existence.d.ts +5 -0
- package/dist/with-shape/satellites/fanout.d.ts +37 -0
- package/dist/with-shape/satellites/forget.d.ts +47 -0
- package/dist/with-shape/satellites/index.d.ts +3 -0
- package/dist/with-shape/satellites/joined.d.ts +19 -0
- package/dist/with-shape/satellites/marker.d.ts +10 -0
- package/dist/with-shape/satellites/post-register.d.ts +6 -0
- package/dist/with-shape/satellites/proxy.d.ts +37 -0
- package/dist/with-shape/satellites/raw-target.d.ts +14 -0
- package/dist/with-shape/satellites/registry.d.ts +19 -0
- package/dist/with-shape/satellites/types.d.ts +26 -0
- package/dist/with-shape/satellites/validate.d.ts +17 -0
- package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
- package/dist/with-shape/schema-update/cutover.d.ts +5 -0
- package/dist/with-shape/schema-update/delta.d.ts +2 -0
- package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
- package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
- package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
- package/dist/with-shape/schema-update/fence.d.ts +15 -0
- package/dist/with-shape/schema-update/gate.d.ts +16 -0
- package/dist/with-shape/schema-update/index.d.ts +6 -0
- package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
- package/dist/with-shape/schema-update/strategies.d.ts +12 -0
- package/dist/with-shape/schema-update/types.d.ts +53 -0
- package/dist/with-store/index.d.ts +15 -0
- package/dist/with-store/lazy/active.d.ts +12 -0
- package/dist/with-store/lazy/index.d.ts +14 -0
- package/dist/with-store/lazy/strategy.d.ts +9 -0
- package/dist/with-store/route-store.d.ts +259 -0
- package/dist/with-store/store-middleware.d.ts +189 -0
- package/dist/withdraw-accessible-CLMZEHQT.js +28 -0
- package/dist/withdraw-accessible-CLMZEHQT.js.map +1 -0
- package/package.json +56 -52
- package/dist/adapter/index.d.ts +0 -5
- package/dist/adapter/index.js +0 -15
- package/dist/aggregate/index.d.ts +0 -42
- package/dist/api-RW3KP7WU.js +0 -14
- package/dist/as/index.d.ts +0 -7
- package/dist/at/index.d.ts +0 -5
- package/dist/attestation/index.d.ts +0 -20
- package/dist/backup-XV3IOEGB.js +0 -217
- package/dist/backup-XV3IOEGB.js.map +0 -1
- package/dist/blobs/index.d.ts +0 -44
- package/dist/bundle/index.d.ts +0 -122
- package/dist/bundle-CH-H06dp.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -9
- package/dist/chunk-26LGBE4T.js +0 -42
- package/dist/chunk-26LGBE4T.js.map +0 -1
- package/dist/chunk-2P2HZEXU.js +0 -233
- package/dist/chunk-2P2HZEXU.js.map +0 -1
- package/dist/chunk-3YFXJ3ZP.js +0 -97
- package/dist/chunk-5LUY7UTV.js +0 -380
- package/dist/chunk-5LUY7UTV.js.map +0 -1
- package/dist/chunk-5N6CZTCY.js +0 -367
- package/dist/chunk-5O3AOPDT.js +0 -992
- package/dist/chunk-5O3AOPDT.js.map +0 -1
- package/dist/chunk-5R3ERCDH.js +0 -239
- package/dist/chunk-5R3ERCDH.js.map +0 -1
- package/dist/chunk-5R5JW2JT.js +0 -12502
- package/dist/chunk-5R5JW2JT.js.map +0 -1
- package/dist/chunk-5TDJ56JE.js +0 -32
- package/dist/chunk-5TDJ56JE.js.map +0 -1
- package/dist/chunk-62QYRORB.js +0 -320
- package/dist/chunk-62QYRORB.js.map +0 -1
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-76722EBH.js +0 -451
- package/dist/chunk-76722EBH.js.map +0 -1
- package/dist/chunk-AIWULCUO.js +0 -68
- package/dist/chunk-AIWULCUO.js.map +0 -1
- package/dist/chunk-AQTBSL7R.js +0 -181
- package/dist/chunk-AQTBSL7R.js.map +0 -1
- package/dist/chunk-AXRXJTE2.js +0 -59
- package/dist/chunk-AZAOEIKW.js +0 -155
- package/dist/chunk-BG3SPSR4.js +0 -53
- package/dist/chunk-BG3SPSR4.js.map +0 -1
- package/dist/chunk-BGIZAFY7.js +0 -1
- package/dist/chunk-CMGR4ZEW.js +0 -209
- package/dist/chunk-CWPPNPOH.js +0 -23
- package/dist/chunk-DFEMTNPJ.js +0 -1219
- package/dist/chunk-DFEMTNPJ.js.map +0 -1
- package/dist/chunk-DGDI2D4M.js +0 -79
- package/dist/chunk-DGDI2D4M.js.map +0 -1
- package/dist/chunk-EIZUR2XW.js +0 -36
- package/dist/chunk-FISN7WE4.js +0 -798
- package/dist/chunk-FISN7WE4.js.map +0 -1
- package/dist/chunk-GYGWYIOZ.js +0 -200
- package/dist/chunk-GYGWYIOZ.js.map +0 -1
- package/dist/chunk-HCIPRAGS.js +0 -45
- package/dist/chunk-I2NOIW44.js +0 -83
- package/dist/chunk-I2NOIW44.js.map +0 -1
- package/dist/chunk-I3TIKTJO.js +0 -132
- package/dist/chunk-I3TIKTJO.js.map +0 -1
- package/dist/chunk-IAGBDSCS.js +0 -40
- package/dist/chunk-IELYAOGG.js +0 -78
- package/dist/chunk-IELYAOGG.js.map +0 -1
- package/dist/chunk-IGUYVGGI.js +0 -205
- package/dist/chunk-IO6GRPT6.js +0 -34
- package/dist/chunk-IPB7FTQX.js +0 -273
- package/dist/chunk-IPB7FTQX.js.map +0 -1
- package/dist/chunk-ITNUCOXM.js +0 -148
- package/dist/chunk-ITNUCOXM.js.map +0 -1
- package/dist/chunk-IUEN57TV.js +0 -722
- package/dist/chunk-IUEN57TV.js.map +0 -1
- package/dist/chunk-JNUWZ6D3.js +0 -57
- package/dist/chunk-JNUWZ6D3.js.map +0 -1
- package/dist/chunk-K2WCO3NX.js +0 -1
- package/dist/chunk-KVOXU4T5.js +0 -30
- package/dist/chunk-KXGNJJXB.js +0 -135
- package/dist/chunk-LFLXAY2W.js +0 -414
- package/dist/chunk-LFLXAY2W.js.map +0 -1
- package/dist/chunk-LMTH2RM6.js +0 -129
- package/dist/chunk-LV7M27WM.js +0 -702
- package/dist/chunk-LV7M27WM.js.map +0 -1
- package/dist/chunk-LXQT4WMP.js +0 -684
- package/dist/chunk-LXQT4WMP.js.map +0 -1
- package/dist/chunk-M2YKN37S.js +0 -524
- package/dist/chunk-M2YKN37S.js.map +0 -1
- package/dist/chunk-M6OST55S.js +0 -14
- package/dist/chunk-MD3Y6J3L.js +0 -278
- package/dist/chunk-MD3Y6J3L.js.map +0 -1
- package/dist/chunk-MTMJVJ5W.js +0 -73
- package/dist/chunk-MTMJVJ5W.js.map +0 -1
- package/dist/chunk-NF5JWERG.js +0 -74
- package/dist/chunk-PKHL44ER.js +0 -124
- package/dist/chunk-PSMV73A5.js +0 -117
- package/dist/chunk-Q7SS3IME.js +0 -120
- package/dist/chunk-Q7SS3IME.js.map +0 -1
- package/dist/chunk-QHJW5EXU.js +0 -54
- package/dist/chunk-RUEKROOS.js +0 -80
- package/dist/chunk-RUIMKQTA.js +0 -23
- package/dist/chunk-RUIMKQTA.js.map +0 -1
- package/dist/chunk-SKF73JOP.js +0 -355
- package/dist/chunk-SM3AVUHC.js +0 -42
- package/dist/chunk-SMXWYP24.js +0 -155
- package/dist/chunk-SRB2XEWB.js +0 -148
- package/dist/chunk-SRB2XEWB.js.map +0 -1
- package/dist/chunk-TA66UMI4.js +0 -123
- package/dist/chunk-TEILUWOI.js +0 -664
- package/dist/chunk-TEILUWOI.js.map +0 -1
- package/dist/chunk-TJYQIGAP.js +0 -82
- package/dist/chunk-TJYQIGAP.js.map +0 -1
- package/dist/chunk-UAG5KWVA.js +0 -367
- package/dist/chunk-UDRIWL7A.js +0 -382
- package/dist/chunk-UIU2THRG.js +0 -1937
- package/dist/chunk-UIU2THRG.js.map +0 -1
- package/dist/chunk-UPJNJGGA.js +0 -572
- package/dist/chunk-UPJNJGGA.js.map +0 -1
- package/dist/chunk-UV5MFVO3.js +0 -21
- package/dist/chunk-V7RWQRG7.js +0 -430
- package/dist/chunk-VCTFO5CO.js +0 -71
- package/dist/chunk-VFQGRQIH.js +0 -97
- package/dist/chunk-VFQGRQIH.js.map +0 -1
- package/dist/chunk-WWGT2MDV.js +0 -762
- package/dist/chunk-WWGT2MDV.js.map +0 -1
- package/dist/chunk-WYSO2NIH.js +0 -30
- package/dist/chunk-XXYIOFUB.js +0 -164
- package/dist/chunk-Y22T3KQE.js +0 -261
- package/dist/chunk-Y22T3KQE.js.map +0 -1
- package/dist/chunk-ZCGAHGUS.js +0 -230
- package/dist/chunk-ZYUC53LT.js +0 -1370
- package/dist/chunk-ZYUC53LT.js.map +0 -1
- package/dist/collection-facade-GQAOGJP2.js +0 -33
- package/dist/consent/index.d.ts +0 -23
- package/dist/crdt/index.d.ts +0 -34
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-UL5HKLER.js +0 -19
- package/dist/derivations/index.d.ts +0 -70
- package/dist/describe/index.d.ts +0 -1
- package/dist/describe/index.js +0 -1
- package/dist/describe-aBkJR2sd.d.ts +0 -131
- package/dist/dev-unlock-C9Ro3v_O.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-UL5LW66V.js +0 -88
- package/dist/executor-2FWQRLMG.js +0 -15
- package/dist/executor-QZ7BXICW.js +0 -9
- package/dist/executor-Z5ZLJVTV.js +0 -9
- package/dist/export-accessible-KRV5W4GH.js +0 -17
- package/dist/extract-partition-GLKBOXFQ.js +0 -30
- package/dist/fanout-sidecar-GF3DJ6KR.js +0 -71
- package/dist/fanout-sidecar-GF3DJ6KR.js.map +0 -1
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -35
- package/dist/hash-Cp5uwiox.d.ts +0 -67
- package/dist/history/index.d.ts +0 -61
- package/dist/i18n/index.d.ts +0 -37
- package/dist/in/index.d.ts +0 -5
- package/dist/index-B9QdHytu.d.ts +0 -123
- package/dist/index-BF9_96A5.d.ts +0 -123
- package/dist/index-BzUo1B6n.d.ts +0 -20730
- package/dist/indexing/index.d.ts +0 -39
- package/dist/issue-Y6UVIR43.js +0 -13
- package/dist/kernel/index.d.ts +0 -32
- package/dist/kernel/index.js +0 -53
- package/dist/ledger-RYI35CDS.js +0 -36
- package/dist/liberate-CRPZEV7O.js +0 -18
- package/dist/materialized-views/index.d.ts +0 -173
- package/dist/mime-magic-CGhw37_E.d.ts +0 -103
- package/dist/noydb-367AM4HT.js +0 -50
- package/dist/on/index.d.ts +0 -5
- package/dist/overlay-views/index.d.ts +0 -98
- package/dist/periods/index.d.ts +0 -20
- package/dist/pod/index.d.ts +0 -63
- package/dist/policy-IXK4FVXP.js +0 -41
- package/dist/portability/index.d.ts +0 -20
- package/dist/public-envelope-JHDQCPSX.js +0 -32
- package/dist/query/index.d.ts +0 -5
- package/dist/read-only-facade-5ADRJVTM.js +0 -8
- package/dist/registry-45RJNWGU.js +0 -9
- package/dist/registry-5GRV5VXI.js +0 -13
- package/dist/registry-WEUCHBO4.js +0 -11
- package/dist/request-withdrawal-GBPH2FDY.js +0 -25
- package/dist/revoke-TUFRGI6S.js +0 -18
- package/dist/sealed-record/index.d.ts +0 -69
- package/dist/session/index.d.ts +0 -44
- package/dist/shadow/index.d.ts +0 -15
- package/dist/signer-PNKTBVF7.js +0 -19
- package/dist/snapshots/index.d.ts +0 -26
- package/dist/stale-3JWHNDIY.js +0 -14
- package/dist/store-coordination-provider-3I7XWZZK.js +0 -142
- package/dist/subject-index-O75wKshW.d.ts +0 -362
- package/dist/sync/index.d.ts +0 -41
- package/dist/team/index.d.ts +0 -116
- package/dist/tiers/index.d.ts +0 -5
- package/dist/to/index.d.ts +0 -5
- package/dist/transition-guard-C7ol6oPw.d.ts +0 -165
- package/dist/tx/index.d.ts +0 -35
- package/dist/ui/index.d.ts +0 -1
- package/dist/ulid-DRH25k3y.d.ts +0 -66
- package/dist/util/index.d.ts +0 -79
- package/dist/vault-diff-B5fYNBL7.d.ts +0 -147
- package/dist/with/index.d.ts +0 -38
- package/dist/with-materialized-view-6p0Fk8bL.d.ts +0 -27
- package/dist/with-overlayed-view-BJ6mXGMd.d.ts +0 -12
- package/dist/with-rollup-BvQo3ROo.d.ts +0 -47
- package/dist/withdraw-accessible-FFS46EOD.js +0 -22
- /package/dist/{adapter/index.js.map → api-YGMINAET.js.map} +0 -0
- /package/dist/{chunk-V7RWQRG7.js.map → chunk-3CNQ7FQ3.js.map} +0 -0
- /package/dist/{chunk-NF5JWERG.js.map → chunk-3MSQLQNZ.js.map} +0 -0
- /package/dist/{chunk-IO6GRPT6.js.map → chunk-4R4Q64W5.js.map} +0 -0
- /package/dist/{chunk-SMXWYP24.js.map → chunk-5XIPOCQC.js.map} +0 -0
- /package/dist/{chunk-IGUYVGGI.js.map → chunk-6QILBDZU.js.map} +0 -0
- /package/dist/{chunk-AZAOEIKW.js.map → chunk-7E67FJ33.js.map} +0 -0
- /package/dist/{chunk-PSMV73A5.js.map → chunk-7NS43EXZ.js.map} +0 -0
- /package/dist/{chunk-CMGR4ZEW.js.map → chunk-A2Y6YFVN.js.map} +0 -0
- /package/dist/{chunk-HCIPRAGS.js.map → chunk-BCYQA5BK.js.map} +0 -0
- /package/dist/{chunk-LMTH2RM6.js.map → chunk-CB25ONKC.js.map} +0 -0
- /package/dist/{chunk-UV5MFVO3.js.map → chunk-CIKY6I4W.js.map} +0 -0
- /package/dist/{chunk-QHJW5EXU.js.map → chunk-D26JB3LZ.js.map} +0 -0
- /package/dist/{chunk-SM3AVUHC.js.map → chunk-DIRRS7WP.js.map} +0 -0
- /package/dist/{chunk-SKF73JOP.js.map → chunk-H44ZE4IE.js.map} +0 -0
- /package/dist/{chunk-UDRIWL7A.js.map → chunk-HFJIGWJC.js.map} +0 -0
- /package/dist/{chunk-ZCGAHGUS.js.map → chunk-KPGX66PM.js.map} +0 -0
- /package/dist/{chunk-5N6CZTCY.js.map → chunk-MCEKIAO4.js.map} +0 -0
- /package/dist/{chunk-CWPPNPOH.js.map → chunk-O2DYPAZY.js.map} +0 -0
- /package/dist/{chunk-KVOXU4T5.js.map → chunk-ODJWBC5I.js.map} +0 -0
- /package/dist/{chunk-VCTFO5CO.js.map → chunk-OFJ5GPNA.js.map} +0 -0
- /package/dist/{chunk-KXGNJJXB.js.map → chunk-PXWVF7MC.js.map} +0 -0
- /package/dist/{chunk-IAGBDSCS.js.map → chunk-Q3XSMOZM.js.map} +0 -0
- /package/dist/{chunk-AXRXJTE2.js.map → chunk-RKRGDAS7.js.map} +0 -0
- /package/dist/{chunk-XXYIOFUB.js.map → chunk-SRVQHVNX.js.map} +0 -0
- /package/dist/{chunk-M6OST55S.js.map → chunk-UFILRICG.js.map} +0 -0
- /package/dist/{chunk-3YFXJ3ZP.js.map → chunk-UTLEAJXC.js.map} +0 -0
- /package/dist/{chunk-TA66UMI4.js.map → chunk-VA4ZWLFY.js.map} +0 -0
- /package/dist/{chunk-UAG5KWVA.js.map → chunk-VR24ILCR.js.map} +0 -0
- /package/dist/{chunk-WYSO2NIH.js.map → chunk-XHV25KBM.js.map} +0 -0
- /package/dist/{chunk-PKHL44ER.js.map → chunk-YSXEFGND.js.map} +0 -0
- /package/dist/{chunk-EIZUR2XW.js.map → chunk-YXOUQ2H7.js.map} +0 -0
- /package/dist/{chunk-RUEKROOS.js.map → chunk-ZP5PL65C.js.map} +0 -0
- /package/dist/{describe → classified}/index.js.map +0 -0
- /package/dist/{api-RW3KP7WU.js.map → collection-facade-YE2O4J4O.js.map} +0 -0
- /package/dist/{chunk-BGIZAFY7.js.map → computed-W6MVAMWZ.js.map} +0 -0
- /package/dist/{chunk-K2WCO3NX.js.map → delegation-OPUU3R2E.js.map} +0 -0
- /package/dist/{collection-facade-GQAOGJP2.js.map → derive-BGUHU663.js.map} +0 -0
- /package/dist/{delegation-UL5HKLER.js.map → enclave-VXAQD4XJ.js.map} +0 -0
- /package/dist/{enclave-UL5LW66V.js.map → executor-GTVSUUBX.js.map} +0 -0
- /package/dist/{executor-2FWQRLMG.js.map → executor-GZWMTOXB.js.map} +0 -0
- /package/dist/{executor-QZ7BXICW.js.map → executor-XXGS4S3K.js.map} +0 -0
- /package/dist/{executor-Z5ZLJVTV.js.map → export-accessible-BMULIOYB.js.map} +0 -0
- /package/dist/{export-accessible-KRV5W4GH.js.map → extract-partition-JUQTWDXR.js.map} +0 -0
- /package/dist/{extract-partition-GLKBOXFQ.js.map → find-XRGCNGNN.js.map} +0 -0
- /package/dist/{issue-Y6UVIR43.js.map → issue-UB6AA5M6.js.map} +0 -0
- /package/dist/{kernel → lazy}/index.js.map +0 -0
- /package/dist/{ledger-RYI35CDS.js.map → ledger-FU6GH5EH.js.map} +0 -0
- /package/dist/{liberate-CRPZEV7O.js.map → liberate-YUN7W5QG.js.map} +0 -0
- /package/dist/{noydb-367AM4HT.js.map → link-set-MNADSH5M.js.map} +0 -0
- /package/dist/{policy-IXK4FVXP.js.map → noydb-6JLBZU4U.js.map} +0 -0
- /package/dist/{public-envelope-JHDQCPSX.js.map → policy-JTFOPPUU.js.map} +0 -0
- /package/dist/{read-only-facade-5ADRJVTM.js.map → public-envelope-NJVB7LPA.js.map} +0 -0
- /package/dist/{registry-45RJNWGU.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
- /package/dist/{registry-5GRV5VXI.js.map → register-VCKOBWKT.js.map} +0 -0
- /package/dist/{registry-WEUCHBO4.js.map → registry-72UKJ2L4.js.map} +0 -0
- /package/dist/{request-withdrawal-GBPH2FDY.js.map → registry-BZFLJNEH.js.map} +0 -0
- /package/dist/{revoke-TUFRGI6S.js.map → registry-YJEYSYI5.js.map} +0 -0
- /package/dist/{signer-PNKTBVF7.js.map → request-withdrawal-6MJRMFHF.js.map} +0 -0
- /package/dist/{stale-3JWHNDIY.js.map → revoke-4KUNSVJC.js.map} +0 -0
- /package/dist/{withdraw-accessible-FFS46EOD.js.map → satellites/index.js.map} +0 -0
- /package/dist/{store-coordination-provider-3I7XWZZK.js.map → store-coordination-provider-HPYVFJCV.js.map} +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { NoydbStore, NoydbPodStore } from '../kernel/types.js';
|
|
2
|
+
export interface WrapPodStoreOptions {
|
|
3
|
+
/**
|
|
4
|
+
* When `true` (default), every `put()` and `delete()` flushes the full
|
|
5
|
+
* vault snapshot to the bundle backend. Set to `false` for bulk operations
|
|
6
|
+
* and call `store.flush(vaultId)` manually.
|
|
7
|
+
*/
|
|
8
|
+
autoFlush?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface WrappedPodNoydbStore extends NoydbStore {
|
|
11
|
+
/** Manually flush the in-memory snapshot to the bundle backend. */
|
|
12
|
+
flush(vaultId: string): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Run a batch of mutations without flushing until the callback completes.
|
|
15
|
+
* A single flush is performed at the end.
|
|
16
|
+
*/
|
|
17
|
+
batch(vaultId: string, fn: () => Promise<void>): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Convert a `NoydbPodStore` (blob-oriented read/write with OCC) into the
|
|
21
|
+
* standard six-method `NoydbStore` interface expected by `createNoydb({ store })`.
|
|
22
|
+
*
|
|
23
|
+
* Bundle stores operate on the entire vault as a single serialised unit —
|
|
24
|
+
* ideal for backends like Google Drive, WebDAV, or iCloud Drive that work
|
|
25
|
+
* best with whole-file I/O rather than per-record KV operations.
|
|
26
|
+
*
|
|
27
|
+
* ## Optimistic concurrency
|
|
28
|
+
*
|
|
29
|
+
* The wrapper tracks the `version` token from the last `readBundle` and
|
|
30
|
+
* passes it as `expectedVersion` on every flush. On
|
|
31
|
+
* `PodVersionConflictError`, it re-reads, merges the remote snapshot
|
|
32
|
+
* (last-write-wins per record key), and retries (max 3 attempts).
|
|
33
|
+
*
|
|
34
|
+
* ## Flush modes
|
|
35
|
+
*
|
|
36
|
+
* By default, flushes on every mutation (O(vault size) per write). Options:
|
|
37
|
+
* - `autoFlush: false` + explicit `store.flush(vaultId)` calls
|
|
38
|
+
* - `store.batch(vaultId, async () => { ... })` — defers flush until end
|
|
39
|
+
* - Pair with `syncPolicy: { push: { mode: 'debounce' } }` from
|
|
40
|
+
*/
|
|
41
|
+
export declare function wrapPodStore(bundle: NoydbPodStore, options?: WrapPodStoreOptions): WrappedPodNoydbStore;
|
|
42
|
+
/**
|
|
43
|
+
* Type-safe factory helper for `NoydbPodStore` implementations,
|
|
44
|
+
* analogous to `createStore` for KV stores.
|
|
45
|
+
*/
|
|
46
|
+
export declare function createPodStore<TOptions>(factory: (options: TOptions) => NoydbPodStore): (options: TOptions) => NoydbPodStore;
|
|
47
|
+
/** @deprecated Use wrapPodStore. */
|
|
48
|
+
export declare const wrapBundleStore: typeof wrapPodStore;
|
|
49
|
+
/** @deprecated Use createPodStore. */
|
|
50
|
+
export declare const createBundleStore: typeof createPodStore;
|
|
51
|
+
/** @deprecated Use WrappedPodNoydbStore. */
|
|
52
|
+
export type WrappedBundleNoydbStore = WrappedPodNoydbStore;
|
|
53
|
+
/** @deprecated Use WrapPodStoreOptions. */
|
|
54
|
+
export type WrapBundleStoreOptions = WrapPodStoreOptions;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal ULID generator — zero dependencies, Web Crypto API only.
|
|
3
|
+
*
|
|
4
|
+
*. Used by the bundle writer to generate stable opaque
|
|
5
|
+
* handles for `.noydb` containers.
|
|
6
|
+
*
|
|
7
|
+
* **What's a ULID?** A 128-bit identifier encoded as 26 Crockford
|
|
8
|
+
* base32 characters. Layout:
|
|
9
|
+
*
|
|
10
|
+
* ```
|
|
11
|
+
* 01HYABCDEFGHJKMNPQRSTVWXYZ
|
|
12
|
+
* |--------||---------------|
|
|
13
|
+
* 48-bit 80-bit
|
|
14
|
+
* timestamp randomness
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* The first 10 chars encode a millisecond Unix timestamp (so ULIDs
|
|
18
|
+
* sort lexicographically by creation time), and the remaining 16
|
|
19
|
+
* chars are random. Crockford base32 omits I/L/O/U to avoid
|
|
20
|
+
* ambiguity in handwriting and URLs.
|
|
21
|
+
*
|
|
22
|
+
* **Why hand-roll instead of pulling in `ulid`?** The package adds
|
|
23
|
+
* a dep, the implementation is ~30 lines, and the bundle module
|
|
24
|
+
* is the only consumer. Adding `ulid` would also drag in its own
|
|
25
|
+
* crypto polyfill that we don't need on Node 18+ or modern
|
|
26
|
+
* browsers.
|
|
27
|
+
*
|
|
28
|
+
* **Privacy consideration:** the timestamp prefix is observable in
|
|
29
|
+
* the bundle header. This is a deliberate trade-off:
|
|
30
|
+
* - Pro: lexicographic sortability lets bundle adapters list
|
|
31
|
+
* newest-first without an extra index.
|
|
32
|
+
* - Con: a casual observer can read the bundle's creation time
|
|
33
|
+
* from the handle. They cannot read it from any OTHER field
|
|
34
|
+
* (the header explicitly forbids `_exported_at`), and a
|
|
35
|
+
* creation timestamp is the same kind of metadata that
|
|
36
|
+
* filesystem mtime would already expose for a downloaded
|
|
37
|
+
* bundle. The leak is therefore equivalent to what's already
|
|
38
|
+
* visible from the file's mtime — not a new exposure.
|
|
39
|
+
*
|
|
40
|
+
* If a future use case needs timestamp-free handles, a v2 of the
|
|
41
|
+
* format could specify "use the random portion only" without a
|
|
42
|
+
* format break — `validateBundleHeader` only checks the regex
|
|
43
|
+
* shape, not the encoded timestamp.
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* Generate a fresh ULID. Uses `crypto.getRandomValues` for the
|
|
47
|
+
* randomness portion — same Web Crypto API the rest of the
|
|
48
|
+
* codebase uses for IVs and salt.
|
|
49
|
+
*
|
|
50
|
+
* Returns a 26-character string. Calling twice in the same
|
|
51
|
+
* millisecond produces two distinct ULIDs (the random portion
|
|
52
|
+
* differs); ULIDs from the same millisecond are NOT guaranteed
|
|
53
|
+
* to be monotonically ordered relative to each other, only
|
|
54
|
+
* relative to ULIDs from a different millisecond. The bundle
|
|
55
|
+
* format never relies on intra-millisecond ordering.
|
|
56
|
+
*/
|
|
57
|
+
export declare function generateULID(): string;
|
|
58
|
+
/**
|
|
59
|
+
* Validate that a string is a syntactically well-formed ULID. Used
|
|
60
|
+
* by the bundle header validator. Does NOT verify that the
|
|
61
|
+
* timestamp portion decodes to a sensible date — the format only
|
|
62
|
+
* cares about the encoding shape.
|
|
63
|
+
*/
|
|
64
|
+
export declare function isULID(value: string): boolean;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blob retention + compaction.
|
|
3
|
+
*
|
|
4
|
+
* Declarative per-collection / per-slot eviction policy. Two
|
|
5
|
+
* triggers:
|
|
6
|
+
*
|
|
7
|
+
* - **`retainDays`** — age-based TTL. A slot uploaded more than N
|
|
8
|
+
* days ago is evicted.
|
|
9
|
+
* - **`evictWhen(record)`** — predicate over the **decrypted**
|
|
10
|
+
* record. Lets consumers express "the image is safe to drop once
|
|
11
|
+
* the structured invoice has been reviewed and confirmed."
|
|
12
|
+
*
|
|
13
|
+
* Either trigger (or both) causes the slot to evict. Eviction removes
|
|
14
|
+
* the slot entry from `_blob_slots_{collection}`, decrements the
|
|
15
|
+
* blob's refCount (so unreferenced chunks can be GC'd by the next
|
|
16
|
+
* sweep), and writes one entry to the `_blob_eviction_audit`
|
|
17
|
+
* collection for tamper-evident record-keeping.
|
|
18
|
+
*
|
|
19
|
+
* The audit entry carries the eTag of the evicted blob (opaque HMAC
|
|
20
|
+
* of plaintext under the vault's `_blob` DEK) — no plaintext leakage,
|
|
21
|
+
* per the SPEC non-correlation invariant. Consumers reconstructing
|
|
22
|
+
* "what used to be attached" can look up the audit entry by record
|
|
23
|
+
* id.
|
|
24
|
+
*
|
|
25
|
+
* Compaction is **consumer-scheduled** — noy-db never runs a
|
|
26
|
+
* background daemon. Call `vault.compact()` whenever your workflow
|
|
27
|
+
* allows (cron, manual "tidy" button, cold-storage export prep, …).
|
|
28
|
+
*
|
|
29
|
+
* @module
|
|
30
|
+
*/
|
|
31
|
+
import type { NoydbStore, SlotInfo } from '../../kernel/types.js';
|
|
32
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
33
|
+
export interface BlobFieldPolicy<T = unknown> {
|
|
34
|
+
/**
|
|
35
|
+
* Via port brand marker — lets a `BlobFieldPolicy` satisfy the kernel's
|
|
36
|
+
* opaque `ViaDescriptor` (#629 Task 7). Optional (the
|
|
37
|
+
* `ClassifiedFieldSpec._viaBrand` precedent): `blobFields` policies are
|
|
38
|
+
* plain object literals with no declaration factory to stamp it, so a
|
|
39
|
+
* mandatory field would break every existing declaration.
|
|
40
|
+
*/
|
|
41
|
+
readonly _viaBrand?: 'blob';
|
|
42
|
+
/**
|
|
43
|
+
* Age-based TTL in days. A slot whose `uploadedAt` is older than
|
|
44
|
+
* `now - retainDays × 86400s` evicts on the next `vault.compact()`.
|
|
45
|
+
* Omit to disable age-based eviction.
|
|
46
|
+
*/
|
|
47
|
+
readonly retainDays?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Predicate evaluated against the decrypted record. When it returns
|
|
50
|
+
* `true`, every matching slot on that record evicts. Omit to
|
|
51
|
+
* disable predicate-based eviction.
|
|
52
|
+
*/
|
|
53
|
+
readonly evictWhen?: (record: T) => boolean;
|
|
54
|
+
/**
|
|
55
|
+
* **Legal hold.** When this predicate returns `true`, the slot is
|
|
56
|
+
* never evicted — `retainDays`/`evictWhen` are overridden. Use for a
|
|
57
|
+
* litigation / audit hold on a fiscal document: the blob stays until
|
|
58
|
+
* the predicate returns `false` (the hold is released). Fail-closed:
|
|
59
|
+
* if the predicate throws, the slot is treated as held.
|
|
60
|
+
*/
|
|
61
|
+
readonly legalHold?: (record: T) => boolean;
|
|
62
|
+
/**
|
|
63
|
+
* **Period-bound retention.** Returns the date (Date / ISO string /
|
|
64
|
+
* epoch ms) until which the slot must be retained — typically derived
|
|
65
|
+
* from the record's fiscal period (e.g. period end + 10 years). While
|
|
66
|
+
* `now < retainUntil`, the slot is never evicted, regardless of
|
|
67
|
+
* `retainDays`. Return `null`/`undefined` to impose no floor.
|
|
68
|
+
* Fail-closed: a throwing function holds the slot.
|
|
69
|
+
*/
|
|
70
|
+
readonly retainUntil?: (record: T) => Date | string | number | null | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* **External projection.** When `true`, this field's bytes are stored in the
|
|
73
|
+
* vault's `ObjectProjection` (`createNoydb({ objectStore })`) as a single raw,
|
|
74
|
+
* **unencrypted** object — servable directly from S3/CDN and processable by
|
|
75
|
+
* native tooling — instead of the encrypted-chunk path. The encrypted slot
|
|
76
|
+
* record remains the catalog (anchoring invariant). Requires an `objectStore`;
|
|
77
|
+
* **outside the zero-knowledge guarantee** — use only for assets meant to
|
|
78
|
+
* leave the vault. See the as-aws-s3 design spec.
|
|
79
|
+
*/
|
|
80
|
+
readonly external?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* For an `external` field: make the object world-readable (CDN origin) rather
|
|
83
|
+
* than presigned-only. Default `false` (presigned). Ignored unless `external`.
|
|
84
|
+
*/
|
|
85
|
+
readonly public?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* For an `external` field: how to stamp a **backlink** (this record's
|
|
88
|
+
* vault/collection/id/field) onto the object's metadata — the self-describing
|
|
89
|
+
* "secondary store" that powers reconcile / DR / import re-pairing.
|
|
90
|
+
* - `'opaque-token'` (default): a random id; preserves the opaque-bucket
|
|
91
|
+
* property (no names leak); the token is also recorded on the slot.
|
|
92
|
+
* - `'encrypted'`: the reference encrypted under the blob DEK (ZK-preserving;
|
|
93
|
+
* falls back to `'opaque-token'` on a plaintext vault).
|
|
94
|
+
* - `'plain'`: the reference in cleartext metadata — **leaks structure** to
|
|
95
|
+
* bucket readers; only for non-sensitive deployments.
|
|
96
|
+
* - `'none'`: no backlink.
|
|
97
|
+
*/
|
|
98
|
+
readonly backlink?: 'opaque-token' | 'encrypted' | 'plain' | 'none';
|
|
99
|
+
}
|
|
100
|
+
export type BlobFieldsConfig<T = unknown> = Record<string, BlobFieldPolicy<T>>;
|
|
101
|
+
export declare const BLOB_EVICTION_AUDIT_COLLECTION = "_blob_eviction_audit";
|
|
102
|
+
export interface BlobEvictionEntry {
|
|
103
|
+
readonly id: string;
|
|
104
|
+
readonly collection: string;
|
|
105
|
+
readonly recordId: string;
|
|
106
|
+
readonly slotName: string;
|
|
107
|
+
readonly blobHash: string;
|
|
108
|
+
readonly reason: 'ttl' | 'predicate' | 'both';
|
|
109
|
+
readonly evictedAt: string;
|
|
110
|
+
readonly actor: string;
|
|
111
|
+
}
|
|
112
|
+
export interface CompactionResult {
|
|
113
|
+
/** Number of blob slots evicted across all collections. */
|
|
114
|
+
readonly evicted: number;
|
|
115
|
+
/** Number of records touched (iterated + policy checked). */
|
|
116
|
+
readonly records: number;
|
|
117
|
+
/** Number of collections with `blobFields` configured. */
|
|
118
|
+
readonly collections: number;
|
|
119
|
+
/** Number of audit entries written. Equal to `evicted`. */
|
|
120
|
+
readonly auditEntries: number;
|
|
121
|
+
/**
|
|
122
|
+
* Number of slots that would have evicted (TTL/predicate triggered)
|
|
123
|
+
* but were retained by a `legalHold` or `retainUntil` floor.
|
|
124
|
+
*/
|
|
125
|
+
readonly held: number;
|
|
126
|
+
/** Per-collection breakdown for diagnostics. */
|
|
127
|
+
readonly byCollection: Record<string, {
|
|
128
|
+
records: number;
|
|
129
|
+
evicted: number;
|
|
130
|
+
}>;
|
|
131
|
+
}
|
|
132
|
+
export interface CompactRunOptions {
|
|
133
|
+
/** Override "now" for deterministic testing. */
|
|
134
|
+
readonly now?: Date;
|
|
135
|
+
/**
|
|
136
|
+
* Stop after this many evictions. Useful for capped batches / cron
|
|
137
|
+
* jobs that need to fit in a time window. `undefined` = unbounded.
|
|
138
|
+
*/
|
|
139
|
+
readonly maxEvictions?: number;
|
|
140
|
+
/**
|
|
141
|
+
* Dry-run — evaluate policies and return the counts, but do NOT
|
|
142
|
+
* delete slots or write audit entries. Lets a consumer preview
|
|
143
|
+
* what would happen.
|
|
144
|
+
*/
|
|
145
|
+
readonly dryRun?: boolean;
|
|
146
|
+
}
|
|
147
|
+
export interface CompactionContext {
|
|
148
|
+
readonly adapter: NoydbStore;
|
|
149
|
+
readonly vault: string;
|
|
150
|
+
readonly actor: string;
|
|
151
|
+
readonly encrypted: boolean;
|
|
152
|
+
readonly getDEK: (collection: string) => Promise<EnclaveKey>;
|
|
153
|
+
/**
|
|
154
|
+
* Resolve a collection's declared `blobFields` config. Returns an
|
|
155
|
+
* empty map for collections without the config — the walk skips
|
|
156
|
+
* those.
|
|
157
|
+
*/
|
|
158
|
+
readonly getBlobFields: <T>(collection: string) => BlobFieldsConfig<T> | null;
|
|
159
|
+
/** List collection names in the vault. */
|
|
160
|
+
readonly listCollections: () => Promise<string[]>;
|
|
161
|
+
/** List record ids in a collection. */
|
|
162
|
+
readonly listRecords: (collection: string) => Promise<string[]>;
|
|
163
|
+
/** Decrypt and return the record. Null when absent. */
|
|
164
|
+
readonly getRecord: <T>(collection: string, id: string) => Promise<T | null>;
|
|
165
|
+
/** Return the BlobSet-like handle for a record's slots. */
|
|
166
|
+
readonly listSlots: (collection: string, id: string) => Promise<SlotInfo[]>;
|
|
167
|
+
/** Delete a slot and decrement its blob's refCount. */
|
|
168
|
+
readonly deleteSlot: (collection: string, id: string, slotName: string) => Promise<void>;
|
|
169
|
+
}
|
|
170
|
+
export declare function runCompaction(ctx: CompactionContext, options?: CompactRunOptions): Promise<CompactionResult>;
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import type { NoydbStore, BlobObject, SlotInfo, VersionRecord, BlobPutOptions, BlobResponseOptions } from '../../kernel/types.js';
|
|
2
|
+
import type { ObjectProjection } from './object-projection.js';
|
|
3
|
+
import type { BlobFieldsConfig } from './blob-compaction.js';
|
|
4
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* DEK slot name for vault-shared blob data. Calling `getDEK('_blob')`
|
|
7
|
+
* auto-creates a blob DEK the first time — same lazy-creation mechanism
|
|
8
|
+
* used for any user-defined collection.
|
|
9
|
+
*/
|
|
10
|
+
export declare const BLOB_COLLECTION = "_blob";
|
|
11
|
+
/** Stores `BlobObject` metadata envelopes, keyed by eTag. */
|
|
12
|
+
export declare const BLOB_INDEX_COLLECTION = "_blob_index";
|
|
13
|
+
/**
|
|
14
|
+
* Stores encrypted chunk envelopes, keyed by `{eTag}/{chunkIndex}`.
|
|
15
|
+
* NOT loaded into the in-memory query layer. Fetched on demand by
|
|
16
|
+
* `BlobSet.get()` / `BlobSet.response()`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const BLOB_CHUNKS_COLLECTION = "_blob_chunks";
|
|
19
|
+
/** Prefix for per-collection slot metadata collections. */
|
|
20
|
+
export declare const BLOB_SLOTS_PREFIX = "_blob_slots_";
|
|
21
|
+
/** Prefix for per-collection version records. */
|
|
22
|
+
export declare const BLOB_VERSIONS_PREFIX = "_blob_versions_";
|
|
23
|
+
/**
|
|
24
|
+
* Default chunk size: 256 KB raw bytes.
|
|
25
|
+
* After AES-GCM (same size) + base64 (~33% inflation) → ~342 KB per
|
|
26
|
+
* envelope, safely within DynamoDB's 400 KB item limit.
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_CHUNK_SIZE: number;
|
|
29
|
+
/**
|
|
30
|
+
* Handle for reading, writing, versioning, and deleting binary blobs
|
|
31
|
+
* on a specific record.
|
|
32
|
+
*
|
|
33
|
+
* Obtained via `collection.blob(id)`. No I/O is performed until you
|
|
34
|
+
* call a method.
|
|
35
|
+
*
|
|
36
|
+
* ## Storage layout
|
|
37
|
+
*
|
|
38
|
+
* ```
|
|
39
|
+
* _blob_index/{eTag} BlobObject metadata (vault-shared DEK)
|
|
40
|
+
* _blob_chunks/{eTag}/{chunkIndex} Encrypted chunk data (vault-shared DEK + AAD)
|
|
41
|
+
* _blob_slots_{collection}/{recordId} Slot map (parent collection DEK)
|
|
42
|
+
* _blob_versions_{collection}/{recordId}/{slot}/{label} Published versions (parent collection DEK)
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* ## Deduplication
|
|
46
|
+
*
|
|
47
|
+
* `put()` computes `eTag = HMAC-SHA-256(blobDEK, plaintext)` — keyed so the
|
|
48
|
+
* store cannot predict eTags for known content. If another record already
|
|
49
|
+
* uploaded the same bytes, the chunks are reused and `refCount` is incremented.
|
|
50
|
+
*
|
|
51
|
+
* ## Chunk integrity
|
|
52
|
+
*
|
|
53
|
+
* Each chunk is encrypted with AES-256-GCM using AAD = `{eTag}:{index}:{count}`,
|
|
54
|
+
* preventing chunk reorder, substitution, and truncation attacks.
|
|
55
|
+
*/
|
|
56
|
+
export declare class BlobSet {
|
|
57
|
+
private readonly store;
|
|
58
|
+
private readonly vault;
|
|
59
|
+
private readonly collection;
|
|
60
|
+
private readonly recordId;
|
|
61
|
+
private readonly getDEK;
|
|
62
|
+
private readonly encrypted;
|
|
63
|
+
private readonly userId;
|
|
64
|
+
private readonly maxBlobBytes;
|
|
65
|
+
private readonly erasableBlobs;
|
|
66
|
+
private readonly debugPlaintext;
|
|
67
|
+
private readonly objectStore;
|
|
68
|
+
private readonly blobFields;
|
|
69
|
+
constructor(opts: {
|
|
70
|
+
store: NoydbStore;
|
|
71
|
+
vault: string;
|
|
72
|
+
collection: string;
|
|
73
|
+
recordId: string;
|
|
74
|
+
getDEK: (name: string) => Promise<EnclaveKey>;
|
|
75
|
+
encrypted: boolean;
|
|
76
|
+
userId?: string;
|
|
77
|
+
maxBlobBytes?: number;
|
|
78
|
+
erasableBlobs?: boolean;
|
|
79
|
+
debugPlaintext?: boolean;
|
|
80
|
+
objectStore?: ObjectProjection;
|
|
81
|
+
blobFields?: BlobFieldsConfig;
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Resolve the key the blob's CHUNKS are encrypted under.
|
|
85
|
+
*
|
|
86
|
+
* - `_cek` present (erasable blob) → unwrap the per-blob content CEK under
|
|
87
|
+
* the `_blob` DEK. Deleting the BlobObject (at `refCount → 0`) makes this
|
|
88
|
+
* key unrecoverable → the chunks are crypto-shredded.
|
|
89
|
+
* - `_cek` absent (legacy) → the `_blob` DEK encrypts chunks directly.
|
|
90
|
+
* - unencrypted vault → `null` (chunks stored as plaintext base64).
|
|
91
|
+
*/
|
|
92
|
+
private resolveChunkKey;
|
|
93
|
+
/** The internal collection that holds slot metadata for this collection's blobs. */
|
|
94
|
+
private get slotsCollection();
|
|
95
|
+
/** The internal collection that holds published versions for this collection's blobs. */
|
|
96
|
+
private get versionsCollection();
|
|
97
|
+
private loadSlots;
|
|
98
|
+
private saveSlots;
|
|
99
|
+
/**
|
|
100
|
+
* CAS retry loop for slot metadata updates. Re-reads slots on conflict
|
|
101
|
+
* and re-applies the mutation function.
|
|
102
|
+
*/
|
|
103
|
+
private casUpdateSlots;
|
|
104
|
+
private loadBlobObject;
|
|
105
|
+
private writeBlobObject;
|
|
106
|
+
/**
|
|
107
|
+
* CAS retry loop for refCount changes on a BlobObject.
|
|
108
|
+
*/
|
|
109
|
+
private casUpdateRefCount;
|
|
110
|
+
/**
|
|
111
|
+
* Release `n` references to a blob and reclaim it at refCount 0.
|
|
112
|
+
*
|
|
113
|
+
* The single reclaim choke point for every reference-drop path — slot
|
|
114
|
+
* delete/overwrite, published-version delete, and `forget()` shred — so the
|
|
115
|
+
* refCount-0 policy is uniform:
|
|
116
|
+
* - **erasable blob** (`_cek` present) → delete the `BlobObject` (the SOLE
|
|
117
|
+
* copy of the wrapped content CEK → chunks permanently undecryptable) and
|
|
118
|
+
* reclaim the chunks. The crypto-shred is EAGER on every path: GDPR erasure
|
|
119
|
+
* must not wait on orphan retention.
|
|
120
|
+
* - **legacy blob** (no `_cek`) → reclaimed only when `reclaimLegacy` (the
|
|
121
|
+
* `forget()` erasure path); otherwise left for deferred GC so the existing
|
|
122
|
+
* `BlobLifecyclePolicy.orphanRetentionDays` semantics are preserved.
|
|
123
|
+
*
|
|
124
|
+
* @returns `'shredded'` (erasable, refCount 0, chunks dead) · `'retainedShared'`
|
|
125
|
+
* (erasable, still referenced) · `'residue'` (legacy — not a crypto-shred).
|
|
126
|
+
*/
|
|
127
|
+
private releaseRef;
|
|
128
|
+
/**
|
|
129
|
+
* Crypto-shred this record's blob attachments — called by
|
|
130
|
+
* `vault.forget()`.
|
|
131
|
+
*
|
|
132
|
+
* For each distinct eTag the record references (a record may attach the same
|
|
133
|
+
* content under several slot names → several refCount holds): decrement the
|
|
134
|
+
* blob's refCount by that many. When it reaches 0:
|
|
135
|
+
* - **erasable blob** (`_cek` present) → delete the `BlobObject` (the SOLE
|
|
136
|
+
* recoverable copy of the wrapped content CEK → chunks permanently
|
|
137
|
+
* undecryptable) and reclaim the chunk bytes. This is the crypto-shred.
|
|
138
|
+
* - **legacy blob** (no `_cek`) → chunks are under the shared `_blob` DEK and
|
|
139
|
+
* stay decryptable until byte-deleted; we delete the orphaned chunks +
|
|
140
|
+
* index but report it as residue, not a cryptographic erasure.
|
|
141
|
+
* When refCount stays > 0 the content legitimately persists for its other
|
|
142
|
+
* owner — reported as `retainedShared` (or `residue` if legacy).
|
|
143
|
+
*
|
|
144
|
+
* Finally drops the record's slot map, severing the subject's link.
|
|
145
|
+
*/
|
|
146
|
+
shredAllForRecord(): Promise<{
|
|
147
|
+
shredded: string[];
|
|
148
|
+
retainedShared: string[];
|
|
149
|
+
residue: string[];
|
|
150
|
+
}>;
|
|
151
|
+
/** CAS retry loop for an arbitrary BlobObject mutation. */
|
|
152
|
+
private casUpdateBlobObject;
|
|
153
|
+
/**
|
|
154
|
+
* Migrate this record's LEGACY blobs (no `_cek`, chunks under the shared
|
|
155
|
+
* `_blob` DEK) to per-blob content CEKs so they become crypto-shreddable.
|
|
156
|
+
* Returns the eTags migrated vs. already-erasable.
|
|
157
|
+
*
|
|
158
|
+
* **Explicit maintenance pass** (mirrors the record-CEK migration posture):
|
|
159
|
+
* re-encrypts the existing compressed chunks IN PLACE under a fresh content
|
|
160
|
+
* CEK — preserving the eTag, chunkCount, chunkSize, and compression — then
|
|
161
|
+
* flips the `_cek` discriminant. Crash-safe + idempotent via `_cekPending`:
|
|
162
|
+
* 1. persist the wrapped content CEK in `_cekPending` (readers ignore it →
|
|
163
|
+
* the blob stays readable under the `_blob` DEK; the key survives a crash);
|
|
164
|
+
* 2. re-encrypt each chunk under the content CEK (a resume reads an
|
|
165
|
+
* already-migrated chunk under the content CEK, else under the `_blob` DEK);
|
|
166
|
+
* 3. promote `_cekPending` → `_cek` (atomic flip). Reads now use the CEK.
|
|
167
|
+
* A re-run after a crash resumes from whichever phase was reached.
|
|
168
|
+
*
|
|
169
|
+
* Dedup-safe: migrating a shared blob (refCount > 1) re-keys it for every
|
|
170
|
+
* referencer at once; a non-erasable collection still reads it (it unwraps
|
|
171
|
+
* `_cek` under the `_blob` DEK it holds).
|
|
172
|
+
*/
|
|
173
|
+
migrate(): Promise<{
|
|
174
|
+
migrated: string[];
|
|
175
|
+
alreadyErasable: string[];
|
|
176
|
+
}>;
|
|
177
|
+
private writeChunk;
|
|
178
|
+
private readChunk;
|
|
179
|
+
private versionKey;
|
|
180
|
+
private loadVersionRecord;
|
|
181
|
+
private writeVersionRecord;
|
|
182
|
+
private deleteVersionRecord;
|
|
183
|
+
private effectiveChunkSize;
|
|
184
|
+
private fetchAllChunks;
|
|
185
|
+
/**
|
|
186
|
+
* Upload bytes and attach them to this record under `slotName`.
|
|
187
|
+
*
|
|
188
|
+
* 1. Computes `eTag = HMAC-SHA-256(blobDEK, plaintext)` for keyed content-addressing.
|
|
189
|
+
* 2. Auto-detects MIME type from magic bytes if not provided.
|
|
190
|
+
* 3. If a blob with this eTag already exists, skips chunk upload (deduplication)
|
|
191
|
+
* and CAS-increments refCount.
|
|
192
|
+
* 4. Otherwise: compresses → splits into chunks → encrypts each chunk with
|
|
193
|
+
* AAD binding → writes `_blob_chunks` → writes `BlobObject` to `_blob_index`.
|
|
194
|
+
* 5. CAS-updates the slot metadata in `_blob_slots_{collection}`.
|
|
195
|
+
* If overwriting an existing slot, decrements the old eTag's refCount.
|
|
196
|
+
*/
|
|
197
|
+
put(slotName: string, data: Uint8Array, opts?: BlobPutOptions): Promise<void>;
|
|
198
|
+
private _deferredRefDecrement;
|
|
199
|
+
/**
|
|
200
|
+
* Fetch all bytes for the named slot.
|
|
201
|
+
* Returns `null` if the slot does not exist.
|
|
202
|
+
* Throws `NotFoundError` if the index entry exists but a chunk is missing.
|
|
203
|
+
*/
|
|
204
|
+
get(slotName: string): Promise<Uint8Array | null>;
|
|
205
|
+
/**
|
|
206
|
+
* A URL to fetch an `external` slot's object directly — presigned
|
|
207
|
+
* (time-limited) or public, per the projection. Returns `null` if the slot
|
|
208
|
+
* does not exist. Throws for a non-external slot (use `get()`/`response()`).
|
|
209
|
+
*/
|
|
210
|
+
url(slotName: string, opts?: {
|
|
211
|
+
expiresInSeconds?: number;
|
|
212
|
+
}): Promise<string | null>;
|
|
213
|
+
/**
|
|
214
|
+
* Build the backlink stamped onto an external object's metadata — the
|
|
215
|
+
* self-describing "secondary store" reference back to this record. See
|
|
216
|
+
* {@link BlobFieldPolicy.backlink}. Returns the `userMeta` to attach and, for
|
|
217
|
+
* `opaque-token`, the `token` to record on the slot.
|
|
218
|
+
*/
|
|
219
|
+
private buildBacklink;
|
|
220
|
+
/**
|
|
221
|
+
* Adopt an EXISTING object in the projection into this slot **without
|
|
222
|
+
* re-uploading** — used by import/bootstrap to anchor objects already in the
|
|
223
|
+
* bucket. Writes the external slot record (the catalog entry).
|
|
224
|
+
*/
|
|
225
|
+
adoptExternal(slotName: string, ref: {
|
|
226
|
+
key: string;
|
|
227
|
+
size?: number;
|
|
228
|
+
contentType?: string;
|
|
229
|
+
public?: boolean;
|
|
230
|
+
backlink?: string;
|
|
231
|
+
meta?: Record<string, unknown>;
|
|
232
|
+
}): Promise<void>;
|
|
233
|
+
/**
|
|
234
|
+
* Merge derived metadata (video `duration`, image `width`/`height`, arbitrary
|
|
235
|
+
* metatags) into an external slot's secondary metadata store. Typically called
|
|
236
|
+
* from an AWS-side processing callback (MediaConvert / ffprobe / Rekognition)
|
|
237
|
+
* once it has probed the object. No-op for a missing or non-external slot.
|
|
238
|
+
*/
|
|
239
|
+
setExternalMeta(slotName: string, meta: Record<string, unknown>): Promise<void>;
|
|
240
|
+
/**
|
|
241
|
+
* Read an external slot's synced derived metadata (the secondary store).
|
|
242
|
+
* Returns `null` for a missing or non-external slot, `{}` if none synced yet.
|
|
243
|
+
*/
|
|
244
|
+
externalMeta(slotName: string): Promise<Record<string, unknown> | null>;
|
|
245
|
+
/**
|
|
246
|
+
* List all slot entries for this record.
|
|
247
|
+
* Returns metadata only — no chunk data is loaded.
|
|
248
|
+
*/
|
|
249
|
+
list(): Promise<SlotInfo[]>;
|
|
250
|
+
/**
|
|
251
|
+
* Delete the named slot from this record.
|
|
252
|
+
* Decrements refCount on the blob. Chunks are GC'd by `vault.blobGC()`.
|
|
253
|
+
*/
|
|
254
|
+
delete(slotName: string): Promise<void>;
|
|
255
|
+
/**
|
|
256
|
+
* Return a native `Response` whose body streams the decrypted,
|
|
257
|
+
* decompressed blob bytes with full HTTP metadata headers.
|
|
258
|
+
*
|
|
259
|
+
* Note: implementation is buffered — all chunks are loaded into
|
|
260
|
+
* memory before being enqueued. True streaming deferred to.
|
|
261
|
+
*
|
|
262
|
+
* Returns `null` if the slot does not exist.
|
|
263
|
+
*/
|
|
264
|
+
response(slotName: string, opts?: BlobResponseOptions): Promise<Response | null>;
|
|
265
|
+
/**
|
|
266
|
+
* Decrypt the slot and wrap the bytes in a browser ObjectURL ready
|
|
267
|
+
* to feed into `<img src>`, `<a href>`, etc. The caller MUST call
|
|
268
|
+
* `revoke()` when the URL is no longer needed — otherwise the URL
|
|
269
|
+
* (and the underlying decrypted Blob) are pinned for the lifetime
|
|
270
|
+
* of the document, which leaks memory in long-lived pages.
|
|
271
|
+
*
|
|
272
|
+
* Returns `null` when the slot does not exist.
|
|
273
|
+
*
|
|
274
|
+
* Throws when `URL.createObjectURL` is unavailable in the host
|
|
275
|
+
* environment (Node without DOM, restricted workers). Framework
|
|
276
|
+
* adapters — `useBlobURL` in `@noy-db/in-vue`, etc. — guard against
|
|
277
|
+
* this for SSR contexts and stay at `null` instead of propagating.
|
|
278
|
+
*/
|
|
279
|
+
objectURL(slotName: string, opts?: {
|
|
280
|
+
mimeType?: string;
|
|
281
|
+
}): Promise<{
|
|
282
|
+
url: string;
|
|
283
|
+
revoke: () => void;
|
|
284
|
+
} | null>;
|
|
285
|
+
/**
|
|
286
|
+
* Publish the current slot content as a named version snapshot.
|
|
287
|
+
*
|
|
288
|
+
* The published version holds an independent refCount reference to
|
|
289
|
+
* the blob. Even if the slot is later overwritten or deleted, the
|
|
290
|
+
* published version keeps the blob data alive.
|
|
291
|
+
*
|
|
292
|
+
* Publishing with an existing label overwrites it — if the eTags differ,
|
|
293
|
+
* refCounts are adjusted accordingly.
|
|
294
|
+
*/
|
|
295
|
+
publish(slotName: string, label: string): Promise<void>;
|
|
296
|
+
/**
|
|
297
|
+
* Fetch bytes for a published version.
|
|
298
|
+
* Returns `null` if the version does not exist.
|
|
299
|
+
*/
|
|
300
|
+
getVersion(slotName: string, label: string): Promise<Uint8Array | null>;
|
|
301
|
+
/**
|
|
302
|
+
* List all published versions for a slot.
|
|
303
|
+
*/
|
|
304
|
+
listVersions(slotName: string): Promise<VersionRecord[]>;
|
|
305
|
+
/**
|
|
306
|
+
* Delete a published version. Decrements refCount on its blob.
|
|
307
|
+
*/
|
|
308
|
+
deleteVersion(slotName: string, label: string): Promise<void>;
|
|
309
|
+
/**
|
|
310
|
+
* Return a `Response` for a published version — same as `response()`
|
|
311
|
+
* but reads from the version record's eTag instead of the current slot.
|
|
312
|
+
*/
|
|
313
|
+
responseVersion(slotName: string, label: string, opts?: BlobResponseOptions): Promise<Response | null>;
|
|
314
|
+
/**
|
|
315
|
+
* Return the `BlobObject` metadata for the named slot.
|
|
316
|
+
* Returns `null` if the slot or blob does not exist.
|
|
317
|
+
*/
|
|
318
|
+
blobInfo(slotName: string): Promise<BlobObject | null>;
|
|
319
|
+
/**
|
|
320
|
+
* Generate a presigned URL for direct client download of the blob's
|
|
321
|
+
* ciphertext. Only works when the blob store supports `presignUrl`.
|
|
322
|
+
*
|
|
323
|
+
* **Important:** The URL returns encrypted data. The caller must
|
|
324
|
+
* decrypt client-side using `decryptResponse()` or a service worker.
|
|
325
|
+
*
|
|
326
|
+
* Returns `null` if the slot doesn't exist or the store doesn't support presigning.
|
|
327
|
+
*/
|
|
328
|
+
presignedUrl(slotName: string, expiresInSeconds?: number): Promise<string | null>;
|
|
329
|
+
/**
|
|
330
|
+
* Decrypt a ciphertext Response (e.g. from a presigned URL fetch)
|
|
331
|
+
* back into a plaintext Response with correct headers.
|
|
332
|
+
*
|
|
333
|
+
* Usage with service worker or client-side fetch:
|
|
334
|
+
* ```ts
|
|
335
|
+
* const url = await blobs.presignedUrl('invoice.pdf')
|
|
336
|
+
* const cipherResponse = await fetch(url)
|
|
337
|
+
* const plainResponse = await blobs.decryptResponse('invoice.pdf', cipherResponse)
|
|
338
|
+
* ```
|
|
339
|
+
*/
|
|
340
|
+
decryptResponse(slotName: string, cipherResponse: Response): Promise<Response | null>;
|
|
341
|
+
private buildResponse;
|
|
342
|
+
}
|