@noy-db/hub 0.3.0-pre.10 → 0.3.0-pre.12
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 +4 -4
- package/dist/api-3TH2GOFQ.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +18 -18
- package/dist/backup-2WVBIVXW.js +225 -0
- package/dist/blobs/index.js +10 -10
- package/dist/broker/index.js +92 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/bundle/index.js +20 -20
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +30 -30
- package/dist/chunk-2MTRJCBI.js +75 -0
- package/dist/chunk-37WOJQWY.js +404 -0
- package/dist/chunk-3QSOFZQB.js +589 -0
- package/dist/chunk-44IL5G3W.js +99 -0
- package/dist/chunk-45QPICLE.js +69 -0
- package/dist/chunk-4BQXMCE5.js +164 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-5HNX4OD4.js +30 -0
- package/dist/chunk-65VLRG3I.js +54 -0
- package/dist/chunk-6MA575R5.js +59 -0
- package/dist/chunk-6S7ENMRE.js +524 -0
- package/dist/chunk-6S7ENMRE.js.map +1 -0
- package/dist/chunk-7GAXFU2O.js +123 -0
- package/dist/chunk-7QLY64AD.js +202 -0
- package/dist/chunk-7ZOSHEVS.js +235 -0
- package/dist/chunk-AAIIDAUC.js +371 -0
- package/dist/chunk-AAIIDAUC.js.map +1 -0
- package/dist/chunk-AKEOHKMT.js +282 -0
- package/dist/chunk-AKEOHKMT.js.map +1 -0
- package/dist/chunk-APHLCXVC.js +124 -0
- package/dist/chunk-BDEMZD4F.js +129 -0
- package/dist/chunk-BDPAVYGJ.js +662 -0
- package/dist/chunk-BLUT46UP.js +42 -0
- package/dist/chunk-CCIR2OJH.js +778 -0
- package/dist/chunk-CXC3JLAQ.js +155 -0
- package/dist/chunk-CZMCOFEA.js +1221 -0
- package/dist/chunk-DIB2BOIH.js +164 -0
- package/dist/chunk-DJ7MRXNA.js +344 -0
- package/dist/chunk-DJ7MRXNA.js.map +1 -0
- package/dist/chunk-EHW5KTTA.js +150 -0
- package/dist/chunk-EHW5KTTA.js.map +1 -0
- package/dist/chunk-EIZ4YOG2.js +70 -0
- package/dist/chunk-EVHBK7BN.js +515 -0
- package/dist/chunk-EXGDL2UQ.js +74 -0
- package/dist/chunk-F3LGBRSV.js +453 -0
- package/dist/chunk-F44XWXOA.js +392 -0
- package/dist/chunk-FF7S3XDW.js +230 -0
- package/dist/chunk-FJTWLQV3.js +155 -0
- package/dist/chunk-FYNE4WLC.js +36 -0
- package/dist/chunk-FZCGIJEJ.js +1505 -0
- package/dist/chunk-FZCGIJEJ.js.map +1 -0
- package/dist/chunk-GL3JV5EV.js +130 -0
- package/dist/chunk-GXLZXD2W.js +29 -0
- package/dist/chunk-HA6ZQWA2.js +1056 -0
- package/dist/chunk-HA6ZQWA2.js.map +1 -0
- package/dist/chunk-HBBZWEC5.js +686 -0
- package/dist/chunk-HG76BZ6G.js +188 -0
- package/dist/chunk-HGAB325C.js +38 -0
- package/dist/chunk-HIOLCOK3.js +30 -0
- package/dist/chunk-HIOLCOK3.js.map +1 -0
- package/dist/chunk-HK4XTXO4.js +49 -0
- package/dist/chunk-HYG32HCM.js +14 -0
- package/dist/chunk-ILF5GARW.js +135 -0
- package/dist/chunk-INBQ43DI.js +382 -0
- package/dist/chunk-IQIVD7TP.js +247 -0
- package/dist/chunk-J3JIYFYL.js +45 -0
- package/dist/chunk-JC75UBMT.js +32 -0
- package/dist/chunk-JC75UBMT.js.map +1 -0
- package/dist/chunk-JGUZMC3I.js +150 -0
- package/dist/chunk-JRKE5MAZ.js +80 -0
- package/dist/chunk-K2DLLK34.js +255 -0
- package/dist/chunk-KKYEZCQG.js +34 -0
- package/dist/chunk-NAR6IDKH.js +54 -0
- package/dist/chunk-NEYKOESM.js +117 -0
- package/dist/chunk-NM3IFKBL.js +29 -0
- package/dist/chunk-NRYNRSGV.js +99 -0
- package/dist/chunk-NT2ZO4KI.js +59 -0
- package/dist/chunk-P2LJI6JE.js +94 -0
- package/dist/chunk-PH7G7ZI7.js +823 -0
- package/dist/chunk-PN5332SU.js +209 -0
- package/dist/chunk-QF5LGMSV.js +45 -0
- package/dist/chunk-QG5RQQBO.js +367 -0
- package/dist/chunk-QYPDYN23.js +23 -0
- package/dist/chunk-R3NHNVS5.js +478 -0
- package/dist/chunk-R3NHNVS5.js.map +1 -0
- package/dist/chunk-RNXJ2VO6.js +280 -0
- package/dist/chunk-RXTMLYJS.js +97 -0
- package/dist/chunk-S2OWPVSO.js +30 -0
- package/dist/chunk-S7TAPIRS.js +205 -0
- package/dist/chunk-SAL5X5OK.js +40 -0
- package/dist/chunk-SGJGWBSC.js +85 -0
- package/dist/chunk-SIAIYP6G.js +50 -0
- package/dist/chunk-SXPCZ6LL.js +1697 -0
- package/dist/chunk-SXPCZ6LL.js.map +1 -0
- package/dist/chunk-TBNF5DV5.js +261 -0
- package/dist/chunk-TVOHSPVK.js +21 -0
- package/dist/chunk-TVS6BUUR.js +41 -0
- package/dist/chunk-UMC5QZTX.js +86 -0
- package/dist/chunk-US34HTOI.js +367 -0
- package/dist/chunk-VCUQR6ZL.js +621 -0
- package/dist/chunk-VXZNSPJM.js +957 -0
- package/dist/chunk-VXZNSPJM.js.map +1 -0
- package/dist/chunk-WEHIQYQH.js +71 -0
- package/dist/chunk-WHQHTNT7.js +265 -0
- package/dist/chunk-X6Y5MXTH.js +74 -0
- package/dist/chunk-XJ47GS53.js +291 -0
- package/dist/chunk-XS6DLN67.js +95 -0
- package/dist/chunk-Y5TWPBNW.js +91 -0
- package/dist/chunk-YCXKFB7J.js +14181 -0
- package/dist/chunk-YCXKFB7J.js.map +1 -0
- package/dist/chunk-ZHOJOT6S.js +36 -0
- package/dist/chunk-ZL6PRULX.js +167 -0
- package/dist/chunk-ZL6PRULX.js.map +1 -0
- package/dist/classified/index.js +5 -5
- package/dist/classified-marker-M7K3OJPM.js +28 -0
- package/dist/classified-marker-M7K3OJPM.js.map +1 -0
- package/dist/collection-facade-DWA735G2.js +39 -0
- package/dist/computed-ORCGM5JE.js +11 -0
- package/dist/consent/index.js +9 -9
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-OV5FGKOG.js +28 -0
- package/dist/delegation-YVSHMIZZ.js +25 -0
- package/dist/derivations/index.js +12 -12
- package/dist/derive-BUO555L5.js +21 -0
- package/dist/enclave-XXFUKJC6.js +135 -0
- package/dist/executor-6OCCE5VM.js +25 -0
- package/dist/executor-JFVAJY42.js +9 -0
- package/dist/executor-UPSH5O3F.js +9 -0
- package/dist/export-accessible-L4A2QZA5.js +23 -0
- package/dist/extract-partition-ZHQ4RGGM.js +36 -0
- package/dist/fanout-sidecar-IO2KDUWV.js +74 -0
- package/dist/find-ZFZDZQ2U.js +11 -0
- package/dist/forget/index.js +10 -10
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +3 -3
- package/dist/history/index.js +11 -11
- package/dist/i18n/index.js +15 -15
- package/dist/index.d.ts +303 -1492
- package/dist/index.js +172 -171
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +5 -5
- package/dist/indexing/index.js.map +1 -1
- package/dist/issue-OG4V23SQ.js +19 -0
- package/dist/kernel/best-effort-revert.d.ts +52 -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 +789 -0
- package/dist/kernel/collection.d.ts +1519 -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 +826 -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 +3166 -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 +1737 -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 +166 -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/ledger-UAQKPWNM.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-GFUQJRK5.js +24 -0
- package/dist/link-set-DGYUOFVD.js +31 -0
- package/dist/materialized-views/index.js +19 -19
- package/dist/noydb-AKH4AMCR.js +67 -0
- package/dist/on/index.js +9 -9
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +12 -12
- package/dist/pod/index.js +11 -11
- package/dist/policy-5POYLI26.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 +129 -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-LB3P4XQU.js +60 -0
- package/dist/post-register-LB3P4XQU.js.map +1 -0
- package/dist/public-envelope-GOG4LUM7.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 +5 -5
- package/dist/register-ZI7YI7US.js +23 -0
- package/dist/registry-DZ2T4LL7.js +9 -0
- package/dist/registry-NVWEQ2GU.js +18 -0
- package/dist/registry-SEKL74ET.js +19 -0
- package/dist/request-withdrawal-ZP3JIRVS.js +31 -0
- package/dist/reveal-NPVROV4D.js +38 -0
- package/dist/revoke-VF6TAJK2.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/seed-VI4FU7UH.js +231 -0
- package/dist/seed-VI4FU7UH.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-DRDDCCHW.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/stale-TJXFQKOJ.js +14 -0
- package/dist/storage-GR7KZRH4.js +23 -0
- package/dist/store-coordination-provider-5KDS2RRP.js +142 -0
- package/dist/sync/index.js +9 -9
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +10 -10
- package/dist/to/index.js +1 -1
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-QK76NJ4G.js +139 -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 +228 -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 +127 -0
- package/dist/walk-XQCBKSBW.js +241 -0
- package/dist/with/index.js +11 -11
- 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 +212 -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 +102 -0
- package/dist/with-lookup/indexing/persisted-indexes.d.ts +229 -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 +174 -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 +38 -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/migrate-cek.d.ts +26 -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 +37 -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-FMN4LPJZ.js +28 -0
- package/package.json +47 -43
- package/dist/aggregate/index.d.ts +0 -41
- package/dist/api-TX2EX2FX.js +0 -20
- package/dist/as/index.d.ts +0 -6
- package/dist/at/index.d.ts +0 -4
- package/dist/attestation/index.d.ts +0 -19
- package/dist/backup-R7NTDFKY.js +0 -225
- package/dist/blobs/index.d.ts +0 -43
- package/dist/bundle/index.d.ts +0 -121
- package/dist/bundle-D6GxiUfq.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -7
- package/dist/chunk-2OV5NVE7.js +0 -95
- package/dist/chunk-2OZXVKVP.js +0 -367
- package/dist/chunk-2REPHKET.js +0 -54
- package/dist/chunk-3JXPAHOZ.js +0 -686
- package/dist/chunk-3MATJ6O4.js +0 -367
- package/dist/chunk-3OPY6MK2.js +0 -404
- package/dist/chunk-3QSIU3UT.js +0 -291
- package/dist/chunk-4OMCIY6F.js +0 -99
- package/dist/chunk-5I35DOHK.js +0 -94
- package/dist/chunk-5VG4IJR7.js +0 -235
- package/dist/chunk-5YESYH2C.js +0 -155
- package/dist/chunk-6G5ORS5D.js +0 -202
- package/dist/chunk-6P5XCKSD.js +0 -71
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-7BWJHO2A.js +0 -34
- package/dist/chunk-7P2SDJG3.js +0 -279
- package/dist/chunk-7P2SDJG3.js.map +0 -1
- package/dist/chunk-ANB77BVV.js +0 -150
- package/dist/chunk-ANB77BVV.js.map +0 -1
- package/dist/chunk-BKARNZJN.js +0 -382
- package/dist/chunk-BQISD5ZV.js +0 -261
- package/dist/chunk-BUAQ7YI3.js +0 -1697
- package/dist/chunk-BUAQ7YI3.js.map +0 -1
- package/dist/chunk-CB7CWSKW.js +0 -430
- package/dist/chunk-CB7CWSKW.js.map +0 -1
- package/dist/chunk-DFVUTGT2.js +0 -515
- package/dist/chunk-DJ7KIPLV.js +0 -23
- package/dist/chunk-DSKDQP3G.js +0 -14066
- package/dist/chunk-DSKDQP3G.js.map +0 -1
- package/dist/chunk-DV4HUP5G.js +0 -99
- package/dist/chunk-EOXAAJTY.js +0 -621
- package/dist/chunk-ET67AY6B.js +0 -74
- package/dist/chunk-F4CEK5YM.js +0 -123
- package/dist/chunk-FORYWFN6.js +0 -130
- package/dist/chunk-FRP6D2DM.js +0 -91
- package/dist/chunk-FUOE7UUV.js +0 -341
- package/dist/chunk-FUOE7UUV.js.map +0 -1
- package/dist/chunk-G4JYND6L.js +0 -42
- package/dist/chunk-G6XV4H65.js +0 -59
- package/dist/chunk-GNMXXTMN.js +0 -85
- package/dist/chunk-HPWKV3YB.js +0 -21
- package/dist/chunk-HY3AUMFI.js +0 -41
- package/dist/chunk-HYR4WZZ3.js +0 -69
- package/dist/chunk-ICXIFFYZ.js +0 -355
- package/dist/chunk-ICXIFFYZ.js.map +0 -1
- package/dist/chunk-IVLTXX4W.js +0 -280
- package/dist/chunk-J4LPNIGK.js +0 -777
- package/dist/chunk-JJZ2LW6T.js +0 -36
- package/dist/chunk-KJ2BCBTL.js +0 -589
- package/dist/chunk-KNZB6JMR.js +0 -129
- package/dist/chunk-LEJIKBBB.js +0 -124
- package/dist/chunk-LL2NIVUR.js +0 -188
- package/dist/chunk-MCHVVJIA.js +0 -968
- package/dist/chunk-MCHVVJIA.js.map +0 -1
- package/dist/chunk-NUEQU36L.js +0 -392
- package/dist/chunk-O45M6LDB.js +0 -38
- package/dist/chunk-OBKWYKYC.js +0 -117
- package/dist/chunk-OHHKHSJP.js +0 -209
- package/dist/chunk-OT76OZL6.js +0 -45
- package/dist/chunk-OVYRLHPE.js +0 -150
- package/dist/chunk-OXCSVM3B.js +0 -155
- package/dist/chunk-P33LUIML.js +0 -205
- package/dist/chunk-PLS64NCS.js +0 -59
- package/dist/chunk-PS2NEWEX.js +0 -36
- package/dist/chunk-QA2KUPCP.js +0 -45
- package/dist/chunk-QOC3VYL2.js +0 -30
- package/dist/chunk-QSFOZUYL.js +0 -823
- package/dist/chunk-RHK32N73.js +0 -30
- package/dist/chunk-RW3Y22MW.js +0 -97
- package/dist/chunk-S7VFUQM2.js +0 -1484
- package/dist/chunk-S7VFUQM2.js.map +0 -1
- package/dist/chunk-T7WSLRAU.js +0 -49
- package/dist/chunk-TAKWLZZX.js +0 -944
- package/dist/chunk-TAKWLZZX.js.map +0 -1
- package/dist/chunk-TMBXVJKT.js +0 -75
- package/dist/chunk-TWKKOM55.js +0 -54
- package/dist/chunk-U3WZCU7E.js +0 -14
- package/dist/chunk-UF362QVH.js +0 -70
- package/dist/chunk-UN4FVIBH.js +0 -135
- package/dist/chunk-VEAVKDDB.js +0 -29
- package/dist/chunk-VEPTFUJY.js +0 -29
- package/dist/chunk-VJV7GKQK.js +0 -662
- package/dist/chunk-VQRAIPYF.js +0 -50
- package/dist/chunk-VRIYFLBA.js +0 -74
- package/dist/chunk-VWM3DAVB.js +0 -265
- package/dist/chunk-VWRRVE6D.js +0 -80
- package/dist/chunk-WBJIQSLL.js +0 -167
- package/dist/chunk-WBJIQSLL.js.map +0 -1
- package/dist/chunk-WIGQB62E.js +0 -164
- package/dist/chunk-WZSCE6RM.js +0 -466
- package/dist/chunk-WZSCE6RM.js.map +0 -1
- package/dist/chunk-XGDAPN6M.js +0 -255
- package/dist/chunk-XH7XP3OL.js +0 -1221
- package/dist/chunk-XREOISSI.js +0 -40
- package/dist/chunk-XUBPSPKD.js +0 -164
- package/dist/chunk-Y3A5CB5G.js +0 -247
- package/dist/chunk-YCXCR7VG.js +0 -230
- package/dist/chunk-YMVQD5Q5.js +0 -453
- package/dist/chunk-YN5IAHN6.js +0 -32
- package/dist/chunk-YN5IAHN6.js.map +0 -1
- package/dist/chunk-ZYJ55N7N.js +0 -86
- package/dist/classified/index.d.ts +0 -16
- package/dist/classified-marker-H6YSHYNK.js +0 -24
- package/dist/classified-marker-H6YSHYNK.js.map +0 -1
- package/dist/collection-facade-LVD22JLM.js +0 -39
- package/dist/computed-EXDMQODG.js +0 -11
- package/dist/consent/index.d.ts +0 -22
- package/dist/crdt/index.d.ts +0 -33
- package/dist/dead-filter-HQIE2YG7.js +0 -28
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-BJP73GAP.js +0 -25
- package/dist/derivations/index.d.ts +0 -69
- package/dist/derive-BME7HDWO.js +0 -21
- package/dist/dev-unlock-Bmm2pgJ0.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-NHORSWSF.js +0 -125
- package/dist/executor-FE6X4LFX.js +0 -9
- package/dist/executor-KSHKRJXP.js +0 -25
- package/dist/executor-ZHTJJICG.js +0 -9
- package/dist/export-accessible-DACHM5VT.js +0 -23
- package/dist/extract-partition-RNENZZ4T.js +0 -36
- package/dist/fanout-sidecar-OFWN3NM7.js +0 -74
- package/dist/find-BNGBJNKP.js +0 -11
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -34
- package/dist/hash-DAJjMsCE.d.ts +0 -72
- package/dist/history/index.d.ts +0 -60
- package/dist/i18n/index.d.ts +0 -56
- package/dist/in/index.d.ts +0 -4
- package/dist/index-B9QdHytu.d.ts +0 -123
- package/dist/index-DjWbxsjb.d.ts +0 -23579
- package/dist/index-qwuNvO2B.d.ts +0 -144
- package/dist/indexing/index.d.ts +0 -38
- package/dist/issue-NDI4CVZU.js +0 -19
- package/dist/lazy/index.d.ts +0 -20
- package/dist/ledger-6NDS2EO4.js +0 -42
- package/dist/liberate-HN3RIGIP.js +0 -24
- package/dist/link-set-SJB2MVJV.js +0 -31
- package/dist/materialized-views/index.d.ts +0 -189
- package/dist/mime-magic-bBj5OgUC.d.ts +0 -103
- package/dist/noydb-BWF6EPIR.js +0 -66
- package/dist/on/index.d.ts +0 -4
- package/dist/overlay-views/index.d.ts +0 -97
- package/dist/periods/index.d.ts +0 -19
- package/dist/pod/index.d.ts +0 -62
- package/dist/policy-WGNAG5H6.js +0 -41
- package/dist/portability/index.d.ts +0 -19
- package/dist/post-register-CWKBQRC7.js +0 -55
- package/dist/post-register-CWKBQRC7.js.map +0 -1
- package/dist/public-envelope-EJLVIFX7.js +0 -32
- package/dist/query/index.d.ts +0 -4
- package/dist/register-SBIX7TVV.js +0 -23
- package/dist/registry-3EQG6OOE.js +0 -18
- package/dist/registry-CA327ACV.js +0 -9
- package/dist/registry-E7OXOTSV.js +0 -19
- package/dist/request-withdrawal-KAH2AAXC.js +0 -31
- package/dist/reveal-R3JLHMUF.js +0 -38
- package/dist/revoke-IXLOJ3IH.js +0 -24
- package/dist/satellites/index.d.ts +0 -4
- package/dist/sealed-record/index.d.ts +0 -68
- package/dist/session/index.d.ts +0 -43
- package/dist/shadow/index.d.ts +0 -14
- package/dist/signer-Y46N2GJ3.js +0 -25
- package/dist/snapshots/index.d.ts +0 -25
- package/dist/stale-Z7IW6RIL.js +0 -14
- package/dist/storage-ADNP2UWI.js +0 -23
- package/dist/store-coordination-provider-DTDMI6VL.js +0 -142
- package/dist/subject-index-CyOgGMJL.d.ts +0 -380
- package/dist/sync/index.d.ts +0 -40
- package/dist/team/index.d.ts +0 -154
- package/dist/tiers/index.d.ts +0 -4
- package/dist/to/index.d.ts +0 -4
- package/dist/transition-guard-DI-krBsZ.d.ts +0 -165
- package/dist/tx/index.d.ts +0 -34
- package/dist/ui/index.d.ts +0 -4
- package/dist/ulid-DRH25k3y.d.ts +0 -66
- package/dist/util/index.d.ts +0 -79
- package/dist/validators-BUcli5Nh.d.ts +0 -101
- package/dist/vault-diff-Z2DUayMe.d.ts +0 -147
- package/dist/verify-JPF2YR5E.js +0 -139
- package/dist/walk-XYA2O3LW.js +0 -241
- package/dist/with/index.d.ts +0 -37
- package/dist/with-materialized-view-BUmzlXue.d.ts +0 -27
- package/dist/with-overlayed-view-m4FaXXTO.d.ts +0 -12
- package/dist/with-rollup-DEKGI9vb.d.ts +0 -47
- package/dist/withdraw-accessible-WLV4MTEN.js +0 -28
- /package/dist/{api-TX2EX2FX.js.map → api-3TH2GOFQ.js.map} +0 -0
- /package/dist/{backup-R7NTDFKY.js.map → backup-2WVBIVXW.js.map} +0 -0
- /package/dist/{chunk-TMBXVJKT.js.map → chunk-2MTRJCBI.js.map} +0 -0
- /package/dist/{chunk-3OPY6MK2.js.map → chunk-37WOJQWY.js.map} +0 -0
- /package/dist/{chunk-KJ2BCBTL.js.map → chunk-3QSOFZQB.js.map} +0 -0
- /package/dist/{chunk-DV4HUP5G.js.map → chunk-44IL5G3W.js.map} +0 -0
- /package/dist/{chunk-HYR4WZZ3.js.map → chunk-45QPICLE.js.map} +0 -0
- /package/dist/{chunk-XUBPSPKD.js.map → chunk-4BQXMCE5.js.map} +0 -0
- /package/dist/{chunk-RHK32N73.js.map → chunk-5HNX4OD4.js.map} +0 -0
- /package/dist/{chunk-2REPHKET.js.map → chunk-65VLRG3I.js.map} +0 -0
- /package/dist/{chunk-G6XV4H65.js.map → chunk-6MA575R5.js.map} +0 -0
- /package/dist/{chunk-F4CEK5YM.js.map → chunk-7GAXFU2O.js.map} +0 -0
- /package/dist/{chunk-6G5ORS5D.js.map → chunk-7QLY64AD.js.map} +0 -0
- /package/dist/{chunk-5VG4IJR7.js.map → chunk-7ZOSHEVS.js.map} +0 -0
- /package/dist/{chunk-LEJIKBBB.js.map → chunk-APHLCXVC.js.map} +0 -0
- /package/dist/{chunk-KNZB6JMR.js.map → chunk-BDEMZD4F.js.map} +0 -0
- /package/dist/{chunk-VJV7GKQK.js.map → chunk-BDPAVYGJ.js.map} +0 -0
- /package/dist/{chunk-G4JYND6L.js.map → chunk-BLUT46UP.js.map} +0 -0
- /package/dist/{chunk-J4LPNIGK.js.map → chunk-CCIR2OJH.js.map} +0 -0
- /package/dist/{chunk-5YESYH2C.js.map → chunk-CXC3JLAQ.js.map} +0 -0
- /package/dist/{chunk-XH7XP3OL.js.map → chunk-CZMCOFEA.js.map} +0 -0
- /package/dist/{chunk-WIGQB62E.js.map → chunk-DIB2BOIH.js.map} +0 -0
- /package/dist/{chunk-UF362QVH.js.map → chunk-EIZ4YOG2.js.map} +0 -0
- /package/dist/{chunk-DFVUTGT2.js.map → chunk-EVHBK7BN.js.map} +0 -0
- /package/dist/{chunk-ET67AY6B.js.map → chunk-EXGDL2UQ.js.map} +0 -0
- /package/dist/{chunk-YMVQD5Q5.js.map → chunk-F3LGBRSV.js.map} +0 -0
- /package/dist/{chunk-NUEQU36L.js.map → chunk-F44XWXOA.js.map} +0 -0
- /package/dist/{chunk-YCXCR7VG.js.map → chunk-FF7S3XDW.js.map} +0 -0
- /package/dist/{chunk-OXCSVM3B.js.map → chunk-FJTWLQV3.js.map} +0 -0
- /package/dist/{chunk-PS2NEWEX.js.map → chunk-FYNE4WLC.js.map} +0 -0
- /package/dist/{chunk-FORYWFN6.js.map → chunk-GL3JV5EV.js.map} +0 -0
- /package/dist/{chunk-VEAVKDDB.js.map → chunk-GXLZXD2W.js.map} +0 -0
- /package/dist/{chunk-3JXPAHOZ.js.map → chunk-HBBZWEC5.js.map} +0 -0
- /package/dist/{chunk-LL2NIVUR.js.map → chunk-HG76BZ6G.js.map} +0 -0
- /package/dist/{chunk-O45M6LDB.js.map → chunk-HGAB325C.js.map} +0 -0
- /package/dist/{chunk-T7WSLRAU.js.map → chunk-HK4XTXO4.js.map} +0 -0
- /package/dist/{chunk-U3WZCU7E.js.map → chunk-HYG32HCM.js.map} +0 -0
- /package/dist/{chunk-UN4FVIBH.js.map → chunk-ILF5GARW.js.map} +0 -0
- /package/dist/{chunk-BKARNZJN.js.map → chunk-INBQ43DI.js.map} +0 -0
- /package/dist/{chunk-Y3A5CB5G.js.map → chunk-IQIVD7TP.js.map} +0 -0
- /package/dist/{chunk-QA2KUPCP.js.map → chunk-J3JIYFYL.js.map} +0 -0
- /package/dist/{chunk-OVYRLHPE.js.map → chunk-JGUZMC3I.js.map} +0 -0
- /package/dist/{chunk-VWRRVE6D.js.map → chunk-JRKE5MAZ.js.map} +0 -0
- /package/dist/{chunk-XGDAPN6M.js.map → chunk-K2DLLK34.js.map} +0 -0
- /package/dist/{chunk-7BWJHO2A.js.map → chunk-KKYEZCQG.js.map} +0 -0
- /package/dist/{chunk-TWKKOM55.js.map → chunk-NAR6IDKH.js.map} +0 -0
- /package/dist/{chunk-OBKWYKYC.js.map → chunk-NEYKOESM.js.map} +0 -0
- /package/dist/{chunk-VEPTFUJY.js.map → chunk-NM3IFKBL.js.map} +0 -0
- /package/dist/{chunk-4OMCIY6F.js.map → chunk-NRYNRSGV.js.map} +0 -0
- /package/dist/{chunk-PLS64NCS.js.map → chunk-NT2ZO4KI.js.map} +0 -0
- /package/dist/{chunk-5I35DOHK.js.map → chunk-P2LJI6JE.js.map} +0 -0
- /package/dist/{chunk-QSFOZUYL.js.map → chunk-PH7G7ZI7.js.map} +0 -0
- /package/dist/{chunk-OHHKHSJP.js.map → chunk-PN5332SU.js.map} +0 -0
- /package/dist/{chunk-OT76OZL6.js.map → chunk-QF5LGMSV.js.map} +0 -0
- /package/dist/{chunk-3MATJ6O4.js.map → chunk-QG5RQQBO.js.map} +0 -0
- /package/dist/{chunk-DJ7KIPLV.js.map → chunk-QYPDYN23.js.map} +0 -0
- /package/dist/{chunk-IVLTXX4W.js.map → chunk-RNXJ2VO6.js.map} +0 -0
- /package/dist/{chunk-RW3Y22MW.js.map → chunk-RXTMLYJS.js.map} +0 -0
- /package/dist/{chunk-QOC3VYL2.js.map → chunk-S2OWPVSO.js.map} +0 -0
- /package/dist/{chunk-P33LUIML.js.map → chunk-S7TAPIRS.js.map} +0 -0
- /package/dist/{chunk-XREOISSI.js.map → chunk-SAL5X5OK.js.map} +0 -0
- /package/dist/{chunk-GNMXXTMN.js.map → chunk-SGJGWBSC.js.map} +0 -0
- /package/dist/{chunk-VQRAIPYF.js.map → chunk-SIAIYP6G.js.map} +0 -0
- /package/dist/{chunk-BQISD5ZV.js.map → chunk-TBNF5DV5.js.map} +0 -0
- /package/dist/{chunk-HPWKV3YB.js.map → chunk-TVOHSPVK.js.map} +0 -0
- /package/dist/{chunk-HY3AUMFI.js.map → chunk-TVS6BUUR.js.map} +0 -0
- /package/dist/{chunk-ZYJ55N7N.js.map → chunk-UMC5QZTX.js.map} +0 -0
- /package/dist/{chunk-2OZXVKVP.js.map → chunk-US34HTOI.js.map} +0 -0
- /package/dist/{chunk-EOXAAJTY.js.map → chunk-VCUQR6ZL.js.map} +0 -0
- /package/dist/{chunk-6P5XCKSD.js.map → chunk-WEHIQYQH.js.map} +0 -0
- /package/dist/{chunk-VWM3DAVB.js.map → chunk-WHQHTNT7.js.map} +0 -0
- /package/dist/{chunk-VRIYFLBA.js.map → chunk-X6Y5MXTH.js.map} +0 -0
- /package/dist/{chunk-3QSIU3UT.js.map → chunk-XJ47GS53.js.map} +0 -0
- /package/dist/{chunk-2OV5NVE7.js.map → chunk-XS6DLN67.js.map} +0 -0
- /package/dist/{chunk-FRP6D2DM.js.map → chunk-Y5TWPBNW.js.map} +0 -0
- /package/dist/{chunk-JJZ2LW6T.js.map → chunk-ZHOJOT6S.js.map} +0 -0
- /package/dist/{collection-facade-LVD22JLM.js.map → collection-facade-DWA735G2.js.map} +0 -0
- /package/dist/{computed-EXDMQODG.js.map → computed-ORCGM5JE.js.map} +0 -0
- /package/dist/{dead-filter-HQIE2YG7.js.map → dead-filter-OV5FGKOG.js.map} +0 -0
- /package/dist/{delegation-BJP73GAP.js.map → delegation-YVSHMIZZ.js.map} +0 -0
- /package/dist/{derive-BME7HDWO.js.map → derive-BUO555L5.js.map} +0 -0
- /package/dist/{enclave-NHORSWSF.js.map → enclave-XXFUKJC6.js.map} +0 -0
- /package/dist/{executor-FE6X4LFX.js.map → executor-6OCCE5VM.js.map} +0 -0
- /package/dist/{executor-KSHKRJXP.js.map → executor-JFVAJY42.js.map} +0 -0
- /package/dist/{executor-ZHTJJICG.js.map → executor-UPSH5O3F.js.map} +0 -0
- /package/dist/{export-accessible-DACHM5VT.js.map → export-accessible-L4A2QZA5.js.map} +0 -0
- /package/dist/{extract-partition-RNENZZ4T.js.map → extract-partition-ZHQ4RGGM.js.map} +0 -0
- /package/dist/{fanout-sidecar-OFWN3NM7.js.map → fanout-sidecar-IO2KDUWV.js.map} +0 -0
- /package/dist/{find-BNGBJNKP.js.map → find-ZFZDZQ2U.js.map} +0 -0
- /package/dist/{issue-NDI4CVZU.js.map → issue-OG4V23SQ.js.map} +0 -0
- /package/dist/{ledger-6NDS2EO4.js.map → ledger-UAQKPWNM.js.map} +0 -0
- /package/dist/{liberate-HN3RIGIP.js.map → liberate-GFUQJRK5.js.map} +0 -0
- /package/dist/{link-set-SJB2MVJV.js.map → link-set-DGYUOFVD.js.map} +0 -0
- /package/dist/{noydb-BWF6EPIR.js.map → noydb-AKH4AMCR.js.map} +0 -0
- /package/dist/{policy-WGNAG5H6.js.map → policy-5POYLI26.js.map} +0 -0
- /package/dist/{public-envelope-EJLVIFX7.js.map → public-envelope-GOG4LUM7.js.map} +0 -0
- /package/dist/{register-SBIX7TVV.js.map → register-ZI7YI7US.js.map} +0 -0
- /package/dist/{registry-3EQG6OOE.js.map → registry-DZ2T4LL7.js.map} +0 -0
- /package/dist/{registry-CA327ACV.js.map → registry-NVWEQ2GU.js.map} +0 -0
- /package/dist/{registry-E7OXOTSV.js.map → registry-SEKL74ET.js.map} +0 -0
- /package/dist/{request-withdrawal-KAH2AAXC.js.map → request-withdrawal-ZP3JIRVS.js.map} +0 -0
- /package/dist/{reveal-R3JLHMUF.js.map → reveal-NPVROV4D.js.map} +0 -0
- /package/dist/{revoke-IXLOJ3IH.js.map → revoke-VF6TAJK2.js.map} +0 -0
- /package/dist/{signer-Y46N2GJ3.js.map → signer-DRDDCCHW.js.map} +0 -0
- /package/dist/{stale-Z7IW6RIL.js.map → stale-TJXFQKOJ.js.map} +0 -0
- /package/dist/{storage-ADNP2UWI.js.map → storage-GR7KZRH4.js.map} +0 -0
- /package/dist/{store-coordination-provider-DTDMI6VL.js.map → store-coordination-provider-5KDS2RRP.js.map} +0 -0
- /package/dist/{verify-JPF2YR5E.js.map → verify-QK76NJ4G.js.map} +0 -0
- /package/dist/{walk-XYA2O3LW.js.map → walk-XQCBKSBW.js.map} +0 -0
- /package/dist/{withdraw-accessible-WLV4MTEN.js.map → withdraw-accessible-FMN4LPJZ.js.map} +0 -0
package/dist/chunk-J4LPNIGK.js
DELETED
|
@@ -1,777 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
deleteUserEnvelope,
|
|
3
|
-
deleteUserVisibility,
|
|
4
|
-
loadUserEnvelope,
|
|
5
|
-
readDirectoryConfig,
|
|
6
|
-
readUserVisibility,
|
|
7
|
-
saveUserEnvelope
|
|
8
|
-
} from "./chunk-OVYRLHPE.js";
|
|
9
|
-
import {
|
|
10
|
-
base64ToBuffer,
|
|
11
|
-
bufferToBase64,
|
|
12
|
-
decrypt,
|
|
13
|
-
deriveKey,
|
|
14
|
-
encrypt,
|
|
15
|
-
generateDEK,
|
|
16
|
-
generateSalt,
|
|
17
|
-
unwrapKey,
|
|
18
|
-
wrapKey
|
|
19
|
-
} from "./chunk-3OPY6MK2.js";
|
|
20
|
-
import {
|
|
21
|
-
NOYDB_FORMAT_VERSION,
|
|
22
|
-
NOYDB_KEYRING_VERSION
|
|
23
|
-
} from "./chunk-YN5IAHN6.js";
|
|
24
|
-
import {
|
|
25
|
-
DirectoryDisabledError,
|
|
26
|
-
InvalidKeyError,
|
|
27
|
-
KeyringCorruptError,
|
|
28
|
-
KeyringExpiredError,
|
|
29
|
-
NoAccessError,
|
|
30
|
-
NoydbError,
|
|
31
|
-
PermissionDeniedError,
|
|
32
|
-
PrivilegeEscalationError,
|
|
33
|
-
USER_ENVELOPE_COLLECTION,
|
|
34
|
-
ValidationError
|
|
35
|
-
} from "./chunk-S7VFUQM2.js";
|
|
36
|
-
|
|
37
|
-
// src/kernel/validation.ts
|
|
38
|
-
var WeakPassphraseError = class extends NoydbError {
|
|
39
|
-
reason;
|
|
40
|
-
suggestion;
|
|
41
|
-
constructor(reason, suggestion) {
|
|
42
|
-
super("WEAK_PASSPHRASE", `Weak passphrase (${reason}). ${suggestion}`);
|
|
43
|
-
this.name = "WeakPassphraseError";
|
|
44
|
-
this.reason = reason;
|
|
45
|
-
this.suggestion = suggestion;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
var DEFAULT_MIN_WORDS = 6;
|
|
49
|
-
var DEFAULT_MIN_WORD_LENGTH = 3;
|
|
50
|
-
var SUGGESTIONS = {
|
|
51
|
-
empty: "Provide a phrase of at least 6 lowercase words separated by single spaces.",
|
|
52
|
-
"invalid-chars": "Use only lowercase letters [a-z] and single spaces. No punctuation, symbols, digits, or uppercase.",
|
|
53
|
-
"leading-or-trailing-space": "Trim leading and trailing spaces.",
|
|
54
|
-
"double-space": "Use exactly one space between words.",
|
|
55
|
-
"too-few-words": 'Use at least 6 words by default (8 under strict policy). Example: "correct horse battery staple printer toaster".',
|
|
56
|
-
"word-too-short": 'Each word must be at least 3 characters. Drop short fillers like "a", "is", "of".',
|
|
57
|
-
"repeated-adjacent": "Avoid repeating the same word twice in a row."
|
|
58
|
-
};
|
|
59
|
-
function validatePassphrase(s, opts) {
|
|
60
|
-
if (opts?.customValidator) {
|
|
61
|
-
return opts.customValidator(s);
|
|
62
|
-
}
|
|
63
|
-
const minWords = opts?.minWords ?? DEFAULT_MIN_WORDS;
|
|
64
|
-
const minWordLength = opts?.minWordLength ?? DEFAULT_MIN_WORD_LENGTH;
|
|
65
|
-
const rejectRepeated = opts?.rejectRepeatedAdjacent ?? true;
|
|
66
|
-
if (s.length === 0) {
|
|
67
|
-
return { ok: false, reason: "empty" };
|
|
68
|
-
}
|
|
69
|
-
if (s !== s.trim()) {
|
|
70
|
-
return { ok: false, reason: "leading-or-trailing-space" };
|
|
71
|
-
}
|
|
72
|
-
if (s.includes(" ")) {
|
|
73
|
-
return { ok: false, reason: "double-space" };
|
|
74
|
-
}
|
|
75
|
-
const charPattern = opts?.pattern ?? /^[a-z]+( [a-z]+)*$/;
|
|
76
|
-
if (!charPattern.test(s)) {
|
|
77
|
-
return { ok: false, reason: "invalid-chars" };
|
|
78
|
-
}
|
|
79
|
-
const words = s.split(" ");
|
|
80
|
-
if (words.length < minWords) {
|
|
81
|
-
return { ok: false, reason: "too-few-words", minimum: minWords, got: words.length };
|
|
82
|
-
}
|
|
83
|
-
for (const w of words) {
|
|
84
|
-
if (w.length < minWordLength) {
|
|
85
|
-
return { ok: false, reason: "word-too-short", minimum: minWordLength, got: w.length };
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (rejectRepeated) {
|
|
89
|
-
for (let i = 1; i < words.length; i++) {
|
|
90
|
-
if (words[i] === words[i - 1]) {
|
|
91
|
-
return { ok: false, reason: "repeated-adjacent" };
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return { ok: true, words: words.length };
|
|
96
|
-
}
|
|
97
|
-
function assertStrongPassphrase(s, opts) {
|
|
98
|
-
if (opts?.allowWeakPassphrase) return;
|
|
99
|
-
const result = validatePassphrase(s, opts);
|
|
100
|
-
if (result.ok) return;
|
|
101
|
-
throw new WeakPassphraseError(result.reason, SUGGESTIONS[result.reason]);
|
|
102
|
-
}
|
|
103
|
-
function estimateEntropy(passphrase) {
|
|
104
|
-
const result = validatePassphrase(passphrase);
|
|
105
|
-
if (!result.ok) return 0;
|
|
106
|
-
return Math.round(result.words * Math.log2(7776));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// src/with-party/team/reserved-secret-collections.ts
|
|
110
|
-
var SYNC_CREDENTIALS_COLLECTION = "_sync_credentials";
|
|
111
|
-
var BROKER_COLLECTION = "_broker";
|
|
112
|
-
var SECRET_BEARING_RESERVED_COLLECTIONS = /* @__PURE__ */ new Set([
|
|
113
|
-
SYNC_CREDENTIALS_COLLECTION,
|
|
114
|
-
BROKER_COLLECTION
|
|
115
|
-
]);
|
|
116
|
-
function isSecretBearingReservedCollection(name) {
|
|
117
|
-
return SECRET_BEARING_RESERVED_COLLECTIONS.has(name);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// src/with-party/team/keyring.ts
|
|
121
|
-
var ADMIN_GRANTABLE_TARGETS = ["operator", "viewer", "client", "admin"];
|
|
122
|
-
function canGrant(callerRole, targetRole) {
|
|
123
|
-
if (callerRole === "owner") return true;
|
|
124
|
-
if (callerRole === "custodian") return false;
|
|
125
|
-
if (callerRole === "admin") return ADMIN_GRANTABLE_TARGETS.includes(targetRole);
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
function canRevoke(callerRole, targetRole) {
|
|
129
|
-
if (targetRole === "owner") return false;
|
|
130
|
-
if (callerRole === "owner") return true;
|
|
131
|
-
if (callerRole === "custodian") return false;
|
|
132
|
-
if (callerRole === "admin") return ADMIN_GRANTABLE_TARGETS.includes(targetRole);
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
function canUpdateRole(callerRole, targetRole) {
|
|
136
|
-
if (callerRole === "owner") return true;
|
|
137
|
-
if (callerRole === "admin") return ADMIN_GRANTABLE_TARGETS.includes(targetRole);
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
var CANARY_PLAINTEXT_BYTES = new Uint8Array(32);
|
|
141
|
-
var canaryKeyPromise = null;
|
|
142
|
-
function getCanaryKey() {
|
|
143
|
-
if (canaryKeyPromise === null) {
|
|
144
|
-
canaryKeyPromise = globalThis.crypto.subtle.importKey(
|
|
145
|
-
"raw",
|
|
146
|
-
CANARY_PLAINTEXT_BYTES,
|
|
147
|
-
{ name: "AES-GCM", length: 256 },
|
|
148
|
-
true,
|
|
149
|
-
// extractable so AES-KW can wrap it
|
|
150
|
-
["encrypt", "decrypt"]
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
return canaryKeyPromise;
|
|
154
|
-
}
|
|
155
|
-
async function mintKeyringCanary(kek) {
|
|
156
|
-
const canaryKey = await getCanaryKey();
|
|
157
|
-
return wrapKey(canaryKey, kek);
|
|
158
|
-
}
|
|
159
|
-
async function verifyKeyringCanary(wrappedCanary, kek) {
|
|
160
|
-
try {
|
|
161
|
-
await unwrapKey(wrappedCanary, kek);
|
|
162
|
-
return true;
|
|
163
|
-
} catch {
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
async function loadKeyring(adapter, vault, userId, passphrase) {
|
|
168
|
-
const envelope = await adapter.get(vault, "_keyring", userId);
|
|
169
|
-
if (!envelope) {
|
|
170
|
-
throw new NoAccessError(`No keyring found for user "${userId}" in vault "${vault}"`);
|
|
171
|
-
}
|
|
172
|
-
const keyringFile = JSON.parse(envelope._data);
|
|
173
|
-
if (keyringFile.expires_at !== void 0) {
|
|
174
|
-
const cutoff = Date.parse(keyringFile.expires_at);
|
|
175
|
-
if (Number.isFinite(cutoff) && Date.now() >= cutoff) {
|
|
176
|
-
throw new KeyringExpiredError({ userId: keyringFile.user_id, expiresAt: keyringFile.expires_at });
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
const salt = base64ToBuffer(keyringFile.salt);
|
|
180
|
-
const kek = await deriveKey(passphrase, salt);
|
|
181
|
-
const canaryOk = keyringFile.canary !== void 0 ? await verifyKeyringCanary(keyringFile.canary, kek) : null;
|
|
182
|
-
const deks = /* @__PURE__ */ new Map();
|
|
183
|
-
const failedCollections = [];
|
|
184
|
-
let firstUnwrapError = null;
|
|
185
|
-
for (const [collName, wrappedDek] of Object.entries(keyringFile.deks)) {
|
|
186
|
-
try {
|
|
187
|
-
const dek = await unwrapKey(wrappedDek, kek);
|
|
188
|
-
deks.set(collName, dek);
|
|
189
|
-
} catch (err) {
|
|
190
|
-
failedCollections.push(collName);
|
|
191
|
-
if (firstUnwrapError === null) firstUnwrapError = err;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
if (canaryOk === true) {
|
|
195
|
-
if (failedCollections.length > 0) {
|
|
196
|
-
throw new KeyringCorruptError({ failedCollections, intactCount: deks.size });
|
|
197
|
-
}
|
|
198
|
-
} else if (canaryOk === false) {
|
|
199
|
-
if (deks.size > 0) {
|
|
200
|
-
throw new KeyringCorruptError({
|
|
201
|
-
failedCollections: [...failedCollections, "_canary"],
|
|
202
|
-
intactCount: deks.size
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
throw firstUnwrapError instanceof Error ? firstUnwrapError : new InvalidKeyError();
|
|
206
|
-
} else {
|
|
207
|
-
if (failedCollections.length > 0) {
|
|
208
|
-
if (deks.size > 0) {
|
|
209
|
-
throw new KeyringCorruptError({ failedCollections, intactCount: deks.size });
|
|
210
|
-
}
|
|
211
|
-
throw firstUnwrapError instanceof Error ? firstUnwrapError : new InvalidKeyError();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return {
|
|
215
|
-
userId: keyringFile.user_id,
|
|
216
|
-
displayName: keyringFile.display_name,
|
|
217
|
-
role: keyringFile.role,
|
|
218
|
-
permissions: keyringFile.permissions,
|
|
219
|
-
deks,
|
|
220
|
-
kek,
|
|
221
|
-
salt,
|
|
222
|
-
authenticators: keyringFile.authenticators ?? [],
|
|
223
|
-
...keyringFile.export_capability !== void 0 && { exportCapability: keyringFile.export_capability },
|
|
224
|
-
...keyringFile.import_capability !== void 0 && { importCapability: keyringFile.import_capability },
|
|
225
|
-
...keyringFile.policy !== void 0 && { policy: keyringFile.policy }
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
async function assertKeyringOpenAllowed(store, vault, userId, create) {
|
|
229
|
-
const keyringUsers = await store.list(vault, "_keyring");
|
|
230
|
-
if (keyringUsers.includes(userId)) return;
|
|
231
|
-
if (!create) {
|
|
232
|
-
throw new NoAccessError(`Vault "${vault}" not opened: create disabled and no keyring for "${userId}".`);
|
|
233
|
-
}
|
|
234
|
-
if (keyringUsers.length > 0) {
|
|
235
|
-
throw new NoAccessError(
|
|
236
|
-
`No keyring for user "${userId}" in vault "${vault}" (held by other principals) \u2014 refusing to self-provision.`
|
|
237
|
-
);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
async function createOwnerKeyring(adapter, vault, userId, passphrase, passphraseOpts) {
|
|
241
|
-
if (passphraseOpts?.validate && !passphraseOpts.allowWeakPassphrase) {
|
|
242
|
-
assertStrongPassphrase(passphrase, passphraseOpts);
|
|
243
|
-
}
|
|
244
|
-
const salt = generateSalt();
|
|
245
|
-
const kek = await deriveKey(passphrase, salt);
|
|
246
|
-
const userEnvelopeDek = await generateDEK();
|
|
247
|
-
const wrappedUserEnvelopeDek = await wrapKey(userEnvelopeDek, kek);
|
|
248
|
-
const canary = await mintKeyringCanary(kek);
|
|
249
|
-
const keyringFile = {
|
|
250
|
-
_noydb_keyring: NOYDB_KEYRING_VERSION,
|
|
251
|
-
user_id: userId,
|
|
252
|
-
display_name: userId,
|
|
253
|
-
role: "owner",
|
|
254
|
-
permissions: {},
|
|
255
|
-
deks: { [USER_ENVELOPE_COLLECTION]: wrappedUserEnvelopeDek },
|
|
256
|
-
salt: bufferToBase64(salt),
|
|
257
|
-
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
258
|
-
granted_by: userId,
|
|
259
|
-
canary
|
|
260
|
-
};
|
|
261
|
-
await writeKeyringFile(adapter, vault, userId, keyringFile);
|
|
262
|
-
return {
|
|
263
|
-
userId,
|
|
264
|
-
displayName: userId,
|
|
265
|
-
role: "owner",
|
|
266
|
-
permissions: {},
|
|
267
|
-
deks: /* @__PURE__ */ new Map([[USER_ENVELOPE_COLLECTION, userEnvelopeDek]]),
|
|
268
|
-
kek,
|
|
269
|
-
salt,
|
|
270
|
-
authenticators: []
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
async function grant(adapter, vault, callerKeyring, options) {
|
|
274
|
-
if (!callerKeyring.kek) {
|
|
275
|
-
throw new ValidationError(
|
|
276
|
-
"grant: caller keyring has no KEK \u2014 tier-2 wrap-DEKs and tier-3 PIN-resume sessions cannot grant access to other users. Re-authenticate at tier 1 (passphrase) before granting."
|
|
277
|
-
);
|
|
278
|
-
}
|
|
279
|
-
if (!canGrant(callerKeyring.role, options.role)) {
|
|
280
|
-
throw new PermissionDeniedError(
|
|
281
|
-
`Role "${callerKeyring.role}" cannot grant role "${options.role}"`
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
if (options.validatePassphrase && !options.allowWeakPassphrase) {
|
|
285
|
-
assertStrongPassphrase(options.passphrase);
|
|
286
|
-
}
|
|
287
|
-
const permissions = resolvePermissions(options.role, options.permissions);
|
|
288
|
-
const newSalt = generateSalt();
|
|
289
|
-
const newKek = await deriveKey(options.passphrase, newSalt);
|
|
290
|
-
const granteeMayHoldSecrets = options.role === "owner" || options.role === "admin";
|
|
291
|
-
const wrappedDeks = {};
|
|
292
|
-
for (const collName of Object.keys(permissions)) {
|
|
293
|
-
if (isSecretBearingReservedCollection(collName) && !granteeMayHoldSecrets) continue;
|
|
294
|
-
const dek = callerKeyring.deks.get(collName);
|
|
295
|
-
if (dek) {
|
|
296
|
-
wrappedDeks[collName] = await wrapKey(dek, newKek);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
if (options.role === "owner" || options.role === "admin" || options.role === "custodian" || options.role === "viewer") {
|
|
300
|
-
for (const [collName, dek] of callerKeyring.deks) {
|
|
301
|
-
if (collName in wrappedDeks) continue;
|
|
302
|
-
if (isSecretBearingReservedCollection(collName) && !granteeMayHoldSecrets) continue;
|
|
303
|
-
wrappedDeks[collName] = await wrapKey(dek, newKek);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
for (const [collName, dek] of callerKeyring.deks) {
|
|
307
|
-
if (!collName.startsWith("_") || collName in wrappedDeks) continue;
|
|
308
|
-
if (isSecretBearingReservedCollection(collName) && !granteeMayHoldSecrets) continue;
|
|
309
|
-
wrappedDeks[collName] = await wrapKey(dek, newKek);
|
|
310
|
-
}
|
|
311
|
-
for (const collName of Object.keys(wrappedDeks)) {
|
|
312
|
-
if (!callerKeyring.deks.has(collName)) {
|
|
313
|
-
throw new PrivilegeEscalationError(collName);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
const canary = await mintKeyringCanary(newKek);
|
|
317
|
-
const keyringFile = {
|
|
318
|
-
_noydb_keyring: NOYDB_KEYRING_VERSION,
|
|
319
|
-
user_id: options.userId,
|
|
320
|
-
display_name: options.displayName,
|
|
321
|
-
role: options.role,
|
|
322
|
-
permissions,
|
|
323
|
-
deks: wrappedDeks,
|
|
324
|
-
salt: bufferToBase64(newSalt),
|
|
325
|
-
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
326
|
-
granted_by: callerKeyring.userId,
|
|
327
|
-
canary,
|
|
328
|
-
...options.exportCapability !== void 0 && { export_capability: options.exportCapability },
|
|
329
|
-
...options.importCapability !== void 0 && { import_capability: options.importCapability }
|
|
330
|
-
};
|
|
331
|
-
await writeKeyringFile(adapter, vault, options.userId, keyringFile);
|
|
332
|
-
const userEnvelopeDek = callerKeyring.deks.get(USER_ENVELOPE_COLLECTION);
|
|
333
|
-
if (userEnvelopeDek) {
|
|
334
|
-
const initialPayload = options.initialProfile ?? {};
|
|
335
|
-
await saveUserEnvelope(
|
|
336
|
-
adapter,
|
|
337
|
-
vault,
|
|
338
|
-
options.userId,
|
|
339
|
-
initialPayload,
|
|
340
|
-
userEnvelopeDek
|
|
341
|
-
);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
async function findAdminDescendants(adapter, vault, rootUserId) {
|
|
345
|
-
const allUserIds = await adapter.list(vault, "_keyring");
|
|
346
|
-
const childrenByParent = /* @__PURE__ */ new Map();
|
|
347
|
-
for (const userId of allUserIds) {
|
|
348
|
-
const env = await adapter.get(vault, "_keyring", userId);
|
|
349
|
-
if (!env) continue;
|
|
350
|
-
const kf = JSON.parse(env._data);
|
|
351
|
-
if (kf.role !== "admin") continue;
|
|
352
|
-
if (kf.user_id === rootUserId) continue;
|
|
353
|
-
const list = childrenByParent.get(kf.granted_by) ?? [];
|
|
354
|
-
list.push(kf.user_id);
|
|
355
|
-
childrenByParent.set(kf.granted_by, list);
|
|
356
|
-
}
|
|
357
|
-
const visited = /* @__PURE__ */ new Set();
|
|
358
|
-
const order = [];
|
|
359
|
-
const stack = [...childrenByParent.get(rootUserId) ?? []];
|
|
360
|
-
while (stack.length > 0) {
|
|
361
|
-
const next = stack.pop();
|
|
362
|
-
if (visited.has(next)) continue;
|
|
363
|
-
visited.add(next);
|
|
364
|
-
order.push(next);
|
|
365
|
-
for (const grandchild of childrenByParent.get(next) ?? []) {
|
|
366
|
-
if (!visited.has(grandchild)) stack.push(grandchild);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
return order;
|
|
370
|
-
}
|
|
371
|
-
async function revoke(adapter, vault, callerKeyring, options) {
|
|
372
|
-
const targetEnvelope = await adapter.get(vault, "_keyring", options.userId);
|
|
373
|
-
if (!targetEnvelope) {
|
|
374
|
-
throw new NoAccessError(`User "${options.userId}" has no keyring in vault "${vault}"`);
|
|
375
|
-
}
|
|
376
|
-
const targetKeyring = JSON.parse(targetEnvelope._data);
|
|
377
|
-
if (!canRevoke(callerKeyring.role, targetKeyring.role)) {
|
|
378
|
-
throw new PermissionDeniedError(
|
|
379
|
-
`Role "${callerKeyring.role}" cannot revoke role "${targetKeyring.role}"`
|
|
380
|
-
);
|
|
381
|
-
}
|
|
382
|
-
const cascadeMode = options.cascade ?? "strict";
|
|
383
|
-
const usersToRevoke = [options.userId];
|
|
384
|
-
const affectedCollections = new Set(Object.keys(targetKeyring.deks));
|
|
385
|
-
if (targetKeyring.role === "admin") {
|
|
386
|
-
const descendants = await findAdminDescendants(adapter, vault, options.userId);
|
|
387
|
-
if (descendants.length > 0) {
|
|
388
|
-
if (cascadeMode === "warn") {
|
|
389
|
-
console.warn(
|
|
390
|
-
`[noy-db] revoke(${options.userId}): cascade='warn' \u2014 leaving ${descendants.length} descendant admin(s) in place: ${descendants.join(", ")}. These admins were granted by the revoked user (transitively) and will become orphans in the delegation tree.`
|
|
391
|
-
);
|
|
392
|
-
} else {
|
|
393
|
-
for (const userId of descendants) {
|
|
394
|
-
const descEnv = await adapter.get(vault, "_keyring", userId);
|
|
395
|
-
if (!descEnv) continue;
|
|
396
|
-
const descKf = JSON.parse(descEnv._data);
|
|
397
|
-
usersToRevoke.push(userId);
|
|
398
|
-
for (const c of Object.keys(descKf.deks)) affectedCollections.add(c);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
for (const userId of usersToRevoke) {
|
|
404
|
-
await adapter.delete(vault, "_keyring", userId);
|
|
405
|
-
await deleteUserEnvelope(adapter, vault, userId);
|
|
406
|
-
await deleteUserVisibility(adapter, vault, userId);
|
|
407
|
-
}
|
|
408
|
-
if (options.rotateKeys !== false && affectedCollections.size > 0) {
|
|
409
|
-
await rotateKeys(adapter, vault, callerKeyring, [...affectedCollections]);
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
async function updateKeyringIdentity(adapter, vault, callerKeyring, options) {
|
|
413
|
-
if (options.role === void 0 && options.displayName === void 0 && options.permissions === void 0) {
|
|
414
|
-
throw new ValidationError(
|
|
415
|
-
`updateUser: at least one of role / displayName / permissions must be provided (userId: "${options.userId}").`
|
|
416
|
-
);
|
|
417
|
-
}
|
|
418
|
-
const env = await adapter.get(vault, "_keyring", options.userId);
|
|
419
|
-
if (!env) {
|
|
420
|
-
throw new NoAccessError(
|
|
421
|
-
`updateUser: user "${options.userId}" has no keyring in vault "${vault}".`
|
|
422
|
-
);
|
|
423
|
-
}
|
|
424
|
-
const target = JSON.parse(env._data);
|
|
425
|
-
if (!canUpdateRole(callerKeyring.role, target.role)) {
|
|
426
|
-
throw new PermissionDeniedError(
|
|
427
|
-
`Role "${callerKeyring.role}" cannot update a keyring with role "${target.role}"`
|
|
428
|
-
);
|
|
429
|
-
}
|
|
430
|
-
if (options.role !== void 0 && options.role !== target.role && !canUpdateRole(callerKeyring.role, options.role)) {
|
|
431
|
-
throw new PermissionDeniedError(
|
|
432
|
-
`Role "${callerKeyring.role}" cannot promote target to role "${options.role}"`
|
|
433
|
-
);
|
|
434
|
-
}
|
|
435
|
-
const next = {
|
|
436
|
-
...target,
|
|
437
|
-
...options.role !== void 0 && { role: options.role },
|
|
438
|
-
...options.displayName !== void 0 && {
|
|
439
|
-
// null clears the field (stored as ""); a string sets it.
|
|
440
|
-
display_name: options.displayName ?? ""
|
|
441
|
-
},
|
|
442
|
-
...options.permissions !== void 0 && { permissions: options.permissions }
|
|
443
|
-
};
|
|
444
|
-
await writeKeyringFile(adapter, vault, options.userId, next);
|
|
445
|
-
}
|
|
446
|
-
async function rotateKeys(adapter, vault, callerKeyring, collections) {
|
|
447
|
-
if (callerKeyring.role === "custodian") {
|
|
448
|
-
throw new PermissionDeniedError(
|
|
449
|
-
"custodian cannot rotate keys (FR-6: re-key is an owner-only meta-capability; use the Deed owner)"
|
|
450
|
-
);
|
|
451
|
-
}
|
|
452
|
-
const newDeks = /* @__PURE__ */ new Map();
|
|
453
|
-
for (const collName of collections) {
|
|
454
|
-
newDeks.set(collName, await generateDEK());
|
|
455
|
-
}
|
|
456
|
-
for (const collName of collections) {
|
|
457
|
-
const oldDek = callerKeyring.deks.get(collName);
|
|
458
|
-
const newDek = newDeks.get(collName);
|
|
459
|
-
if (!oldDek) continue;
|
|
460
|
-
const ids = await adapter.list(vault, collName);
|
|
461
|
-
for (const id of ids) {
|
|
462
|
-
const envelope = await adapter.get(vault, collName, id);
|
|
463
|
-
if (!envelope || !envelope._iv) continue;
|
|
464
|
-
const plaintext = await decrypt(envelope._iv, envelope._data, oldDek);
|
|
465
|
-
const { iv, data } = await encrypt(plaintext, newDek);
|
|
466
|
-
const newEnvelope = {
|
|
467
|
-
_noydb: NOYDB_FORMAT_VERSION,
|
|
468
|
-
_v: envelope._v,
|
|
469
|
-
_ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
470
|
-
_iv: iv,
|
|
471
|
-
_data: data
|
|
472
|
-
};
|
|
473
|
-
await adapter.put(vault, collName, id, newEnvelope);
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
for (const [collName, newDek] of newDeks) {
|
|
477
|
-
callerKeyring.deks.set(collName, newDek);
|
|
478
|
-
}
|
|
479
|
-
await persistKeyring(adapter, vault, callerKeyring);
|
|
480
|
-
const userIds = await adapter.list(vault, "_keyring");
|
|
481
|
-
for (const userId of userIds) {
|
|
482
|
-
if (userId === callerKeyring.userId) continue;
|
|
483
|
-
const userEnvelope = await adapter.get(vault, "_keyring", userId);
|
|
484
|
-
if (!userEnvelope) continue;
|
|
485
|
-
const userKeyringFile = JSON.parse(userEnvelope._data);
|
|
486
|
-
const updatedDeks = { ...userKeyringFile.deks };
|
|
487
|
-
for (const collName of collections) {
|
|
488
|
-
delete updatedDeks[collName];
|
|
489
|
-
}
|
|
490
|
-
const updatedPermissions = { ...userKeyringFile.permissions };
|
|
491
|
-
for (const collName of collections) {
|
|
492
|
-
delete updatedPermissions[collName];
|
|
493
|
-
}
|
|
494
|
-
const updatedKeyring = {
|
|
495
|
-
...userKeyringFile,
|
|
496
|
-
deks: updatedDeks,
|
|
497
|
-
permissions: updatedPermissions
|
|
498
|
-
};
|
|
499
|
-
await writeKeyringFile(adapter, vault, userId, updatedKeyring);
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
async function changeSecret(adapter, vault, keyring, newPassphrase, passphraseOpts) {
|
|
503
|
-
if (!passphraseOpts?.allowWeakPassphrase) {
|
|
504
|
-
assertStrongPassphrase(newPassphrase, passphraseOpts);
|
|
505
|
-
}
|
|
506
|
-
const newSalt = generateSalt();
|
|
507
|
-
const newKek = await deriveKey(newPassphrase, newSalt);
|
|
508
|
-
const wrappedDeks = {};
|
|
509
|
-
for (const [collName, dek] of keyring.deks) {
|
|
510
|
-
wrappedDeks[collName] = await wrapKey(dek, newKek);
|
|
511
|
-
}
|
|
512
|
-
const canary = await mintKeyringCanary(newKek);
|
|
513
|
-
const keyringFile = {
|
|
514
|
-
_noydb_keyring: NOYDB_KEYRING_VERSION,
|
|
515
|
-
user_id: keyring.userId,
|
|
516
|
-
display_name: keyring.displayName,
|
|
517
|
-
role: keyring.role,
|
|
518
|
-
permissions: keyring.permissions,
|
|
519
|
-
deks: wrappedDeks,
|
|
520
|
-
salt: bufferToBase64(newSalt),
|
|
521
|
-
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
522
|
-
granted_by: keyring.userId,
|
|
523
|
-
canary
|
|
524
|
-
};
|
|
525
|
-
await writeKeyringFile(adapter, vault, keyring.userId, keyringFile);
|
|
526
|
-
return {
|
|
527
|
-
userId: keyring.userId,
|
|
528
|
-
displayName: keyring.displayName,
|
|
529
|
-
role: keyring.role,
|
|
530
|
-
permissions: keyring.permissions,
|
|
531
|
-
deks: keyring.deks,
|
|
532
|
-
// Same DEKs, different wrapping
|
|
533
|
-
kek: newKek,
|
|
534
|
-
salt: newSalt,
|
|
535
|
-
// Tier-2 slots are NOT preserved through `changeSecret` —
|
|
536
|
-
// each slot wraps the OLD KEK, so the new keyring has no
|
|
537
|
-
// authenticator slots until the user re-enrolls. The higher-level
|
|
538
|
-
// `db.rotatePassphrase()` preserves slots by rewrapping the
|
|
539
|
-
// KEK reference, not the KEK itself.
|
|
540
|
-
authenticators: [],
|
|
541
|
-
...keyring.policy !== void 0 && { policy: keyring.policy }
|
|
542
|
-
};
|
|
543
|
-
}
|
|
544
|
-
async function buildRecipientKeyringFile(callerKeyring, recipient) {
|
|
545
|
-
if (!callerKeyring.kek) {
|
|
546
|
-
throw new ValidationError(
|
|
547
|
-
"buildRecipientKeyringFile: caller keyring has no KEK \u2014 tier-2 wrap-DEKs and tier-3 PIN-resume sessions cannot create bundle recipients. Re-authenticate at tier 1 (passphrase) before building a bundle."
|
|
548
|
-
);
|
|
549
|
-
}
|
|
550
|
-
const role = recipient.role ?? "viewer";
|
|
551
|
-
const permissions = resolvePermissions(role, recipient.permissions);
|
|
552
|
-
const newSalt = generateSalt();
|
|
553
|
-
const newKek = await deriveKey(recipient.passphrase, newSalt);
|
|
554
|
-
const wrappedDeks = {};
|
|
555
|
-
for (const collName of Object.keys(permissions)) {
|
|
556
|
-
const dek = callerKeyring.deks.get(collName);
|
|
557
|
-
if (dek) {
|
|
558
|
-
wrappedDeks[collName] = await wrapKey(dek, newKek);
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
if (role === "owner" || role === "admin" || role === "custodian" || role === "viewer") {
|
|
562
|
-
for (const [collName, dek] of callerKeyring.deks) {
|
|
563
|
-
if (!(collName in wrappedDeks)) {
|
|
564
|
-
wrappedDeks[collName] = await wrapKey(dek, newKek);
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
for (const [collName, dek] of callerKeyring.deks) {
|
|
569
|
-
if (collName.startsWith("_") && !(collName in wrappedDeks)) {
|
|
570
|
-
wrappedDeks[collName] = await wrapKey(dek, newKek);
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
for (const collName of Object.keys(wrappedDeks)) {
|
|
574
|
-
if (!callerKeyring.deks.has(collName)) {
|
|
575
|
-
throw new PrivilegeEscalationError(collName);
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
const canary = await mintKeyringCanary(newKek);
|
|
579
|
-
return {
|
|
580
|
-
_noydb_keyring: NOYDB_KEYRING_VERSION,
|
|
581
|
-
user_id: recipient.id,
|
|
582
|
-
display_name: recipient.displayName ?? recipient.id,
|
|
583
|
-
role,
|
|
584
|
-
permissions,
|
|
585
|
-
deks: wrappedDeks,
|
|
586
|
-
salt: bufferToBase64(newSalt),
|
|
587
|
-
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
588
|
-
granted_by: callerKeyring.userId,
|
|
589
|
-
canary,
|
|
590
|
-
...recipient.exportCapability !== void 0 ? { export_capability: recipient.exportCapability } : {},
|
|
591
|
-
...recipient.importCapability !== void 0 ? { import_capability: recipient.importCapability } : {},
|
|
592
|
-
...recipient.expiresAt !== void 0 ? { expires_at: recipient.expiresAt } : {}
|
|
593
|
-
};
|
|
594
|
-
}
|
|
595
|
-
async function listUsers(adapter, vault) {
|
|
596
|
-
const userIds = await adapter.list(vault, "_keyring");
|
|
597
|
-
const users = [];
|
|
598
|
-
for (const userId of userIds) {
|
|
599
|
-
const envelope = await adapter.get(vault, "_keyring", userId);
|
|
600
|
-
if (!envelope) continue;
|
|
601
|
-
const kf = JSON.parse(envelope._data);
|
|
602
|
-
users.push({
|
|
603
|
-
userId: kf.user_id,
|
|
604
|
-
displayName: kf.display_name,
|
|
605
|
-
role: kf.role,
|
|
606
|
-
permissions: kf.permissions,
|
|
607
|
-
createdAt: kf.created_at,
|
|
608
|
-
grantedBy: kf.granted_by
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
return users;
|
|
612
|
-
}
|
|
613
|
-
async function listUsersWithEnvelopes(adapter, vault, userEnvelopeDek, callerRole, options = {}) {
|
|
614
|
-
const isPrivileged = callerRole === "owner" || callerRole === "admin";
|
|
615
|
-
const dirConfig = await readDirectoryConfig(adapter, vault);
|
|
616
|
-
if (dirConfig?.enabled === false && !isPrivileged) {
|
|
617
|
-
throw new DirectoryDisabledError(vault);
|
|
618
|
-
}
|
|
619
|
-
if (options.includeHidden && !isPrivileged) {
|
|
620
|
-
throw new PermissionDeniedError(
|
|
621
|
-
"Permission denied \u2014 listUsersWithEnvelopes({ includeHidden: true }) requires owner or admin role"
|
|
622
|
-
);
|
|
623
|
-
}
|
|
624
|
-
const users = await listUsers(adapter, vault);
|
|
625
|
-
const out = [];
|
|
626
|
-
for (const user of users) {
|
|
627
|
-
if (!options.includeHidden) {
|
|
628
|
-
const visibility = await readUserVisibility(adapter, vault, user.userId);
|
|
629
|
-
if (visibility?.hidden) continue;
|
|
630
|
-
}
|
|
631
|
-
const envelope = await loadUserEnvelope(
|
|
632
|
-
adapter,
|
|
633
|
-
vault,
|
|
634
|
-
user.userId,
|
|
635
|
-
userEnvelopeDek
|
|
636
|
-
);
|
|
637
|
-
out.push({ user, envelope });
|
|
638
|
-
}
|
|
639
|
-
return out;
|
|
640
|
-
}
|
|
641
|
-
async function ensureCollectionDEK(adapter, vault, keyring) {
|
|
642
|
-
const inFlight = /* @__PURE__ */ new Map();
|
|
643
|
-
return async (collectionName) => {
|
|
644
|
-
const existing = keyring.deks.get(collectionName);
|
|
645
|
-
if (existing) return existing;
|
|
646
|
-
const pending = inFlight.get(collectionName);
|
|
647
|
-
if (pending) return pending;
|
|
648
|
-
const promise = (async () => {
|
|
649
|
-
const dek = await generateDEK();
|
|
650
|
-
keyring.deks.set(collectionName, dek);
|
|
651
|
-
await persistKeyring(adapter, vault, keyring);
|
|
652
|
-
return dek;
|
|
653
|
-
})();
|
|
654
|
-
inFlight.set(collectionName, promise);
|
|
655
|
-
try {
|
|
656
|
-
return await promise;
|
|
657
|
-
} finally {
|
|
658
|
-
inFlight.delete(collectionName);
|
|
659
|
-
}
|
|
660
|
-
};
|
|
661
|
-
}
|
|
662
|
-
function hasWritePermission(keyring, collectionName) {
|
|
663
|
-
if (keyring.role === "owner" || keyring.role === "admin" || keyring.role === "custodian") return true;
|
|
664
|
-
if (keyring.role === "viewer" || keyring.role === "client") return false;
|
|
665
|
-
return keyring.permissions[collectionName] === "rw";
|
|
666
|
-
}
|
|
667
|
-
function hasAccess(keyring, collectionName) {
|
|
668
|
-
if (keyring.role === "owner" || keyring.role === "admin" || keyring.role === "custodian" || keyring.role === "viewer")
|
|
669
|
-
return true;
|
|
670
|
-
return collectionName in keyring.permissions;
|
|
671
|
-
}
|
|
672
|
-
async function persistKeyring(adapter, vault, keyring) {
|
|
673
|
-
if (!keyring.kek) {
|
|
674
|
-
throw new ValidationError(
|
|
675
|
-
"persistKeyring: keyring.kek is null \u2014 cannot wrap DEKs without the KEK. This typically means the keyring was opened via tier-3 PIN resume, session restore, or a wrap-DEKs tier-2 unlock. Re-authenticate at tier 1 (passphrase) before persisting."
|
|
676
|
-
);
|
|
677
|
-
}
|
|
678
|
-
const wrappedDeks = {};
|
|
679
|
-
for (const [collName, dek] of keyring.deks) {
|
|
680
|
-
wrappedDeks[collName] = await wrapKey(dek, keyring.kek);
|
|
681
|
-
}
|
|
682
|
-
const canary = await mintKeyringCanary(keyring.kek);
|
|
683
|
-
const keyringFile = {
|
|
684
|
-
_noydb_keyring: NOYDB_KEYRING_VERSION,
|
|
685
|
-
user_id: keyring.userId,
|
|
686
|
-
display_name: keyring.displayName,
|
|
687
|
-
role: keyring.role,
|
|
688
|
-
permissions: keyring.permissions,
|
|
689
|
-
deks: wrappedDeks,
|
|
690
|
-
salt: bufferToBase64(keyring.salt),
|
|
691
|
-
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
692
|
-
granted_by: keyring.userId,
|
|
693
|
-
canary,
|
|
694
|
-
...keyring.exportCapability !== void 0 && { export_capability: keyring.exportCapability },
|
|
695
|
-
...keyring.importCapability !== void 0 && { import_capability: keyring.importCapability },
|
|
696
|
-
...keyring.authenticators.length > 0 && { authenticators: keyring.authenticators },
|
|
697
|
-
...keyring.policy !== void 0 && { policy: keyring.policy }
|
|
698
|
-
};
|
|
699
|
-
await writeKeyringFile(adapter, vault, keyring.userId, keyringFile);
|
|
700
|
-
}
|
|
701
|
-
function defaultBundleCapability(role) {
|
|
702
|
-
return role === "owner" || role === "admin";
|
|
703
|
-
}
|
|
704
|
-
function hasExportCapability(keyring, tier, format) {
|
|
705
|
-
const cap = keyring.exportCapability;
|
|
706
|
-
if (tier === "plaintext") {
|
|
707
|
-
const allowed = cap?.plaintext ?? [];
|
|
708
|
-
return allowed.includes("*") || format !== void 0 && allowed.includes(format);
|
|
709
|
-
}
|
|
710
|
-
return cap?.bundle ?? defaultBundleCapability(keyring.role);
|
|
711
|
-
}
|
|
712
|
-
function evaluateExportCapability(capability, role, tier, format) {
|
|
713
|
-
if (tier === "plaintext") {
|
|
714
|
-
const allowed = capability?.plaintext ?? [];
|
|
715
|
-
return allowed.includes("*") || format !== void 0 && allowed.includes(format);
|
|
716
|
-
}
|
|
717
|
-
return capability?.bundle ?? defaultBundleCapability(role);
|
|
718
|
-
}
|
|
719
|
-
function hasImportCapability(keyring, tier, format) {
|
|
720
|
-
const cap = keyring.importCapability;
|
|
721
|
-
if (tier === "plaintext") {
|
|
722
|
-
const allowed = cap?.plaintext ?? [];
|
|
723
|
-
return allowed.includes("*") || format !== void 0 && allowed.includes(format);
|
|
724
|
-
}
|
|
725
|
-
return cap?.bundle === true;
|
|
726
|
-
}
|
|
727
|
-
function evaluateImportCapability(capability, _role, tier, format) {
|
|
728
|
-
if (tier === "plaintext") {
|
|
729
|
-
const allowed = capability?.plaintext ?? [];
|
|
730
|
-
return allowed.includes("*") || format !== void 0 && allowed.includes(format);
|
|
731
|
-
}
|
|
732
|
-
return capability?.bundle === true;
|
|
733
|
-
}
|
|
734
|
-
function resolvePermissions(role, explicit) {
|
|
735
|
-
if (role === "owner" || role === "admin" || role === "custodian" || role === "viewer") return {};
|
|
736
|
-
return explicit ?? {};
|
|
737
|
-
}
|
|
738
|
-
async function writeKeyringFile(adapter, vault, userId, keyringFile) {
|
|
739
|
-
const envelope = {
|
|
740
|
-
_noydb: 1,
|
|
741
|
-
_v: 1,
|
|
742
|
-
_ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
743
|
-
_iv: "",
|
|
744
|
-
_data: JSON.stringify(keyringFile)
|
|
745
|
-
};
|
|
746
|
-
await adapter.put(vault, "_keyring", userId, envelope);
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
export {
|
|
750
|
-
WeakPassphraseError,
|
|
751
|
-
validatePassphrase,
|
|
752
|
-
assertStrongPassphrase,
|
|
753
|
-
estimateEntropy,
|
|
754
|
-
SYNC_CREDENTIALS_COLLECTION,
|
|
755
|
-
isSecretBearingReservedCollection,
|
|
756
|
-
mintKeyringCanary,
|
|
757
|
-
loadKeyring,
|
|
758
|
-
assertKeyringOpenAllowed,
|
|
759
|
-
createOwnerKeyring,
|
|
760
|
-
grant,
|
|
761
|
-
revoke,
|
|
762
|
-
updateKeyringIdentity,
|
|
763
|
-
rotateKeys,
|
|
764
|
-
changeSecret,
|
|
765
|
-
buildRecipientKeyringFile,
|
|
766
|
-
listUsers,
|
|
767
|
-
listUsersWithEnvelopes,
|
|
768
|
-
ensureCollectionDEK,
|
|
769
|
-
hasWritePermission,
|
|
770
|
-
hasAccess,
|
|
771
|
-
persistKeyring,
|
|
772
|
-
hasExportCapability,
|
|
773
|
-
evaluateExportCapability,
|
|
774
|
-
hasImportCapability,
|
|
775
|
-
evaluateImportCapability
|
|
776
|
-
};
|
|
777
|
-
//# sourceMappingURL=chunk-J4LPNIGK.js.map
|