@noy-db/hub 0.3.0-pre.8 → 0.3.0
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-ZGS6LCOF.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +18 -18
- package/dist/backup-BJ57IKAO.js +242 -0
- package/dist/backup-BJ57IKAO.js.map +1 -0
- package/dist/blobs/index.js +13 -11
- 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 +25 -22
- package/dist/bundle/index.js.map +1 -1
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +31 -31
- package/dist/chunk-2NVOWNI3.js +167 -0
- package/dist/chunk-2NVOWNI3.js.map +1 -0
- package/dist/chunk-3B5VVCNY.js +71 -0
- package/dist/chunk-3LQ2YKO4.js +230 -0
- package/dist/chunk-3QCRBHCY.js +54 -0
- package/dist/chunk-454JXE57.js +1697 -0
- package/dist/chunk-454JXE57.js.map +1 -0
- package/dist/chunk-4CTHCN4J.js +480 -0
- package/dist/chunk-4CTHCN4J.js.map +1 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-4JBYV75E.js +150 -0
- package/dist/chunk-4NXKCLLQ.js +97 -0
- package/dist/chunk-4VNQOLML.js +29 -0
- package/dist/chunk-4VNQOLML.js.map +1 -0
- package/dist/chunk-5M5DVGV7.js +69 -0
- package/dist/chunk-5O3XF4DV.js +150 -0
- package/dist/chunk-5O3XF4DV.js.map +1 -0
- package/dist/chunk-5YOLBEQ6.js +30 -0
- package/dist/chunk-6CRIV7DE.js +129 -0
- package/dist/chunk-6JTIAGHD.js +621 -0
- package/dist/chunk-6JTIAGHD.js.map +1 -0
- package/dist/chunk-6QTNZJBS.js +255 -0
- package/dist/chunk-6T2SCQRU.js +86 -0
- package/dist/chunk-7DSTRQIJ.js +45 -0
- package/dist/chunk-AUSTCW2X.js +589 -0
- package/dist/chunk-B3HJYUOF.js +209 -0
- package/dist/chunk-BDVFPG6Y.js +164 -0
- package/dist/chunk-BIOUI4HL.js +1554 -0
- package/dist/chunk-BIOUI4HL.js.map +1 -0
- package/dist/chunk-CAF6WOK7.js +36 -0
- package/dist/chunk-CDUQTA3Z.js +381 -0
- package/dist/chunk-CDUQTA3Z.js.map +1 -0
- package/dist/chunk-CIE2BASH.js +404 -0
- package/dist/chunk-CRI4OUV4.js +42 -0
- package/dist/chunk-DLG74CNB.js +91 -0
- package/dist/chunk-E5ZQT5KX.js +30 -0
- package/dist/chunk-E5ZQT5KX.js.map +1 -0
- package/dist/chunk-EQO2UVP4.js +247 -0
- package/dist/chunk-EQO2UVP4.js.map +1 -0
- package/dist/chunk-ERJ7FU55.js +367 -0
- package/dist/chunk-EVVGJDRQ.js +205 -0
- package/dist/chunk-EVX47VBM.js +74 -0
- package/dist/chunk-EVX47VBM.js.map +1 -0
- package/dist/chunk-EXK7QRWF.js +59 -0
- package/dist/chunk-EYZ6IQ6X.js +202 -0
- package/dist/chunk-F64IRYG3.js +45 -0
- package/dist/chunk-FHS2HQSH.js +823 -0
- package/dist/chunk-FM3G3NOY.js +206 -0
- package/dist/chunk-FM3G3NOY.js.map +1 -0
- package/dist/chunk-FUG4SFN3.js +36 -0
- package/dist/chunk-FUG4SFN3.js.map +1 -0
- package/dist/chunk-GKEWXIV5.js +80 -0
- package/dist/chunk-GTGPO5KW.js +59 -0
- package/dist/chunk-HB3RFQSC.js +95 -0
- package/dist/chunk-HDMEGAQE.js +957 -0
- package/dist/chunk-HDMEGAQE.js.map +1 -0
- package/dist/chunk-HDQIIUPH.js +135 -0
- package/dist/chunk-HDQIIUPH.js.map +1 -0
- package/dist/chunk-HTJQYHZP.js +344 -0
- package/dist/chunk-HTJQYHZP.js.map +1 -0
- package/dist/chunk-I6GALP6E.js +99 -0
- package/dist/chunk-IGJCYUT5.js +99 -0
- package/dist/chunk-IGJCYUT5.js.map +1 -0
- package/dist/chunk-IL6POWCW.js +130 -0
- package/dist/chunk-IU6SNYX6.js +117 -0
- package/dist/chunk-J2ZX2XUV.js +778 -0
- package/dist/chunk-JIF24JPM.js +495 -0
- package/dist/chunk-JIF24JPM.js.map +1 -0
- package/dist/chunk-JK733I5V.js +23 -0
- package/dist/chunk-JK733I5V.js.map +1 -0
- package/dist/chunk-JKJOGPZN.js +29 -0
- package/dist/chunk-JNAI2HN2.js +32 -0
- package/dist/chunk-JNAI2HN2.js.map +1 -0
- package/dist/chunk-JZUV47FZ.js +41 -0
- package/dist/chunk-K5IMOGHB.js +30 -0
- package/dist/chunk-KPZS5QAQ.js +151 -0
- package/dist/chunk-KPZS5QAQ.js.map +1 -0
- package/dist/chunk-KSKBRKGJ.js +291 -0
- package/dist/chunk-KSKBRKGJ.js.map +1 -0
- package/dist/chunk-LASZKVMO.js +382 -0
- package/dist/chunk-LXEXBTKL.js +515 -0
- package/dist/chunk-LXEXBTKL.js.map +1 -0
- package/dist/chunk-M4CV6BRT.js +524 -0
- package/dist/chunk-M4CV6BRT.js.map +1 -0
- package/dist/chunk-MEFJPTZ4.js +371 -0
- package/dist/chunk-MEFJPTZ4.js.map +1 -0
- package/dist/chunk-MV43JSJF.js +265 -0
- package/dist/chunk-MV43JSJF.js.map +1 -0
- package/dist/chunk-NJ4EOKMB.js +392 -0
- package/dist/chunk-NJ4EOKMB.js.map +1 -0
- package/dist/chunk-NR5LT5RY.js +135 -0
- package/dist/chunk-NWSGI5C7.js +261 -0
- package/dist/chunk-NWSGI5C7.js.map +1 -0
- package/dist/chunk-OSDB5WW3.js +739 -0
- package/dist/chunk-OSDB5WW3.js.map +1 -0
- package/dist/chunk-PN2XMATY.js +37 -0
- package/dist/chunk-PN2XMATY.js.map +1 -0
- package/dist/chunk-Q5VNKNE5.js +70 -0
- package/dist/chunk-QLWMEXCT.js +21 -0
- package/dist/chunk-QRB7NAOJ.js +123 -0
- package/dist/chunk-R4ROFEYC.js +74 -0
- package/dist/chunk-RCVJZMFE.js +164 -0
- package/dist/chunk-RCVJZMFE.js.map +1 -0
- package/dist/chunk-RIX4V2TB.js +367 -0
- package/dist/chunk-RYCTDFUX.js +40 -0
- package/dist/chunk-RZ5SVOYR.js +155 -0
- package/dist/chunk-SLFHQTTW.js +99 -0
- package/dist/chunk-SNZ6URZZ.js +2782 -0
- package/dist/chunk-SNZ6URZZ.js.map +1 -0
- package/dist/chunk-T2FFWNPK.js +75 -0
- package/dist/chunk-T2FFWNPK.js.map +1 -0
- package/dist/chunk-UNFPPVNI.js +23 -0
- package/dist/chunk-VFUPHI2Z.js +333 -0
- package/dist/chunk-VFUPHI2Z.js.map +1 -0
- package/dist/chunk-VLFCJYTL.js +235 -0
- package/dist/chunk-VN3DBQAU.js +124 -0
- package/dist/chunk-VYYM3MEN.js +98 -0
- package/dist/chunk-VYYM3MEN.js.map +1 -0
- package/dist/chunk-VZRODIM3.js +49 -0
- package/dist/chunk-W22IKJE2.js +94 -0
- package/dist/chunk-X3YYQWOQ.js +155 -0
- package/dist/chunk-X7QBD67R.js +14405 -0
- package/dist/chunk-X7QBD67R.js.map +1 -0
- package/dist/chunk-XDYREZWE.js +1128 -0
- package/dist/chunk-XDYREZWE.js.map +1 -0
- package/dist/chunk-XWZVFISC.js +720 -0
- package/dist/chunk-XWZVFISC.js.map +1 -0
- package/dist/chunk-YFXZEAYK.js +85 -0
- package/dist/chunk-ZAJAVEXY.js +50 -0
- package/dist/chunk-ZICD77GM.js +34 -0
- package/dist/chunk-ZJ2AK4V7.js +38 -0
- package/dist/chunk-ZJ2AK4V7.js.map +1 -0
- package/dist/chunk-ZUODRVHY.js +14 -0
- package/dist/classified/index.js +5 -3
- package/dist/classified-marker-CZKA6ITE.js +28 -0
- package/dist/classified-marker-CZKA6ITE.js.map +1 -0
- package/dist/collection-facade-TLWIPI76.js +44 -0
- package/dist/computed-ZIQTYTDI.js +11 -0
- package/dist/consent/index.js +9 -9
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-ESOBZZP5.js +28 -0
- package/dist/delegation-W7ZV2322.js +25 -0
- package/dist/derivations/index.js +12 -11
- package/dist/derive-H2BJTLUI.js +21 -0
- package/dist/enclave-AP3I5W7O.js +141 -0
- package/dist/executor-KGWTNEQD.js +9 -0
- package/dist/executor-OVEXR6RT.js +9 -0
- package/dist/executor-UNEH5ZYH.js +25 -0
- package/dist/export-accessible-PCMXSUZS.js +23 -0
- package/dist/extract-partition-SWHFSYJO.js +38 -0
- package/dist/fanout-sidecar-A765THMX.js +74 -0
- package/dist/find-N6345CNT.js +11 -0
- package/dist/forget/index.js +10 -10
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +6 -6
- package/dist/history/index.js +14 -11
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +50 -37
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +307 -1459
- package/dist/index.js +595 -198
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +7 -7
- package/dist/indexing/index.js.map +1 -1
- package/dist/issue-5OKB6I2R.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 +809 -0
- package/dist/kernel/collection.d.ts +1522 -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 +36 -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 +79 -0
- package/dist/kernel/enclave/record-keys/deterministic.d.ts +55 -0
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/lifecycle.d.ts +107 -0
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +328 -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 +1922 -0
- package/dist/kernel/events.d.ts +11 -0
- package/dist/kernel/lazy-count.d.ts +13 -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/tier-visibility.d.ts +54 -0
- package/dist/kernel/types.d.ts +3239 -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 +1740 -0
- package/dist/kernel/via/compose.d.ts +144 -0
- package/dist/kernel/via/dispatch.d.ts +195 -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-GFBKVPV4.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-3VDOT4KO.js +24 -0
- package/dist/link-set-Z7Q2ASFX.js +31 -0
- package/dist/materialized-views/index.js +19 -15
- package/dist/noydb-ZCJOYBDI.js +68 -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-Z3RUAIY2.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 +98 -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-JTH76BLY.js +60 -0
- package/dist/post-register-JTH76BLY.js.map +1 -0
- package/dist/public-envelope-B4KNWVUA.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-VAHONCID.js +23 -0
- package/dist/registry-7MLVD3VO.js +19 -0
- package/dist/registry-EPKPD5SM.js +18 -0
- package/dist/registry-P5T7PS2U.js +9 -0
- package/dist/request-withdrawal-TI3A5WPS.js +31 -0
- package/dist/reveal-DIBHLUZX.js +38 -0
- package/dist/reveal-DIBHLUZX.js.map +1 -0
- package/dist/revoke-FDRD6GRW.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/seed-Q6M2IZFL.js +231 -0
- package/dist/seed-Q6M2IZFL.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-MUWEIUI6.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/stale-OSQ7J3AA.js +29 -0
- package/dist/storage-MVFCGEQE.js +23 -0
- package/dist/store-coordination-provider-64OEZFGS.js +142 -0
- package/dist/sync/index.js +9 -9
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +14 -10
- package/dist/to/index.js +1 -2
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-ZASTRNPR.js +140 -0
- package/dist/verify-ZASTRNPR.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 +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-SVNDIZ62.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 +199 -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 +394 -0
- package/dist/with-audit/tiers/strategy.d.ts +36 -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 +41 -0
- package/dist/with-cargo/extract-partition.d.ts +155 -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 +67 -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 +73 -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 +356 -0
- package/dist/with-commit/history/strategy.d.ts +136 -0
- package/dist/with-commit/history/time-machine.d.ts +202 -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 +59 -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 +80 -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 +113 -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 +4 -0
- package/dist/with-lookup/embeddings/vec-id.d.ts +47 -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 +157 -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 +163 -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 +121 -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 +41 -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-intent.d.ts +153 -0
- package/dist/with-shape/blobs/blob-set.d.ts +1286 -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-WZIEVWSR.js +28 -0
- package/package.json +47 -55
- 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-JDWL67WL.js +0 -20
- 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-WRGNTGJF.js +0 -225
- package/dist/backup-WRGNTGJF.js.map +0 -1
- package/dist/blobs/index.d.ts +0 -44
- package/dist/bundle/index.d.ts +0 -122
- package/dist/bundle-DzWtVw7w.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -9
- package/dist/chunk-25G7PUTA.js +0 -235
- package/dist/chunk-26FSVNBL.js +0 -34
- package/dist/chunk-2PJB6H3H.js +0 -167
- package/dist/chunk-2PJB6H3H.js.map +0 -1
- package/dist/chunk-37JZR7CY.js +0 -91
- package/dist/chunk-3KBK5LU4.js +0 -117
- package/dist/chunk-3YKBGS3I.js +0 -686
- package/dist/chunk-3YKBGS3I.js.map +0 -1
- package/dist/chunk-44DV37ZV.js +0 -75
- package/dist/chunk-44DV37ZV.js.map +0 -1
- package/dist/chunk-47C4CI7R.js +0 -108
- package/dist/chunk-47C4CI7R.js.map +0 -1
- package/dist/chunk-4VDFUBTS.js +0 -275
- package/dist/chunk-4VDFUBTS.js.map +0 -1
- package/dist/chunk-55LSDABW.js +0 -94
- package/dist/chunk-56JB2BGI.js +0 -13003
- package/dist/chunk-56JB2BGI.js.map +0 -1
- package/dist/chunk-5GQE5IDB.js +0 -513
- package/dist/chunk-5GQE5IDB.js.map +0 -1
- package/dist/chunk-5HRJQSKN.js +0 -202
- package/dist/chunk-5HZULLHE.js +0 -404
- package/dist/chunk-5JQMX2EH.js +0 -50
- package/dist/chunk-5UOPIPZC.js +0 -95
- package/dist/chunk-5YBUFCFF.js +0 -135
- package/dist/chunk-62APEMF3.js +0 -280
- package/dist/chunk-62APEMF3.js.map +0 -1
- package/dist/chunk-6P5AJ2ZS.js +0 -120
- package/dist/chunk-6P5AJ2ZS.js.map +0 -1
- package/dist/chunk-6PALJTC2.js +0 -430
- package/dist/chunk-6PALJTC2.js.map +0 -1
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-6Z435B6N.js +0 -1656
- package/dist/chunk-6Z435B6N.js.map +0 -1
- package/dist/chunk-723XB5NX.js +0 -86
- package/dist/chunk-7CZ6YXMO.js +0 -124
- package/dist/chunk-7KTL4RHZ.js +0 -120
- package/dist/chunk-7KTL4RHZ.js.map +0 -1
- package/dist/chunk-7TAV3BFQ.js +0 -766
- package/dist/chunk-7TAV3BFQ.js.map +0 -1
- package/dist/chunk-BASCPHNM.js +0 -380
- package/dist/chunk-BASCPHNM.js.map +0 -1
- package/dist/chunk-BGIZAFY7.js +0 -1
- package/dist/chunk-BJ2XF2RC.js +0 -823
- package/dist/chunk-BM6E4MUT.js +0 -881
- package/dist/chunk-BM6E4MUT.js.map +0 -1
- package/dist/chunk-BTFTHF6Q.js +0 -42
- package/dist/chunk-C4NOLA5X.js +0 -132
- package/dist/chunk-C4NOLA5X.js.map +0 -1
- package/dist/chunk-CHK5VVMI.js +0 -155
- package/dist/chunk-DCVVCJVB.js +0 -45
- package/dist/chunk-EU7HDMT3.js +0 -54
- package/dist/chunk-F3EKFGUS.js +0 -99
- package/dist/chunk-FCOZ7DEC.js +0 -355
- package/dist/chunk-FCOZ7DEC.js.map +0 -1
- package/dist/chunk-FWART3VA.js +0 -205
- package/dist/chunk-FZK3JJJK.js +0 -150
- package/dist/chunk-GDOOG5YQ.js +0 -382
- package/dist/chunk-GLVXQU3E.js +0 -155
- package/dist/chunk-HU55NPHZ.js +0 -80
- package/dist/chunk-I6JJ6VJS.js +0 -97
- package/dist/chunk-I6URUNTD.js +0 -59
- package/dist/chunk-IARAK3PK.js +0 -14
- package/dist/chunk-II6DLDZM.js +0 -30
- package/dist/chunk-J5YUA6JB.js +0 -23
- package/dist/chunk-J7OH6R4K.js +0 -49
- package/dist/chunk-K2WCO3NX.js +0 -1
- package/dist/chunk-L6Q5NA22.js +0 -40
- package/dist/chunk-LFGJG4XZ.js +0 -30
- package/dist/chunk-M3OYTM5Z.js +0 -85
- package/dist/chunk-MOQ5M46U.js +0 -209
- package/dist/chunk-NTPWQH4S.js +0 -589
- package/dist/chunk-OJ64XMPJ.js +0 -1434
- package/dist/chunk-OJ64XMPJ.js.map +0 -1
- package/dist/chunk-OWGAXPRE.js +0 -129
- package/dist/chunk-P2PEPSPK.js +0 -230
- package/dist/chunk-P6TZ3IVN.js +0 -453
- package/dist/chunk-P6TZ3IVN.js.map +0 -1
- package/dist/chunk-PAJCRV7O.js +0 -123
- package/dist/chunk-PMMV5SQC.js +0 -416
- package/dist/chunk-PMMV5SQC.js.map +0 -1
- package/dist/chunk-PPPZIBKY.js +0 -261
- package/dist/chunk-PPPZIBKY.js.map +0 -1
- package/dist/chunk-PVC2FBCQ.js +0 -45
- package/dist/chunk-PYIUDUGS.js +0 -36
- package/dist/chunk-QABECTNN.js +0 -255
- package/dist/chunk-QYMMMKOO.js +0 -164
- package/dist/chunk-R4IVPJHN.js +0 -130
- package/dist/chunk-REWTMYSF.js +0 -32
- package/dist/chunk-REWTMYSF.js.map +0 -1
- package/dist/chunk-RNYDHIQL.js +0 -367
- package/dist/chunk-RUIMKQTA.js +0 -23
- package/dist/chunk-RUIMKQTA.js.map +0 -1
- package/dist/chunk-TCGVRKOS.js +0 -367
- package/dist/chunk-TIAYXOEI.js +0 -99
- package/dist/chunk-TQ3REHVF.js +0 -95
- package/dist/chunk-TQ3REHVF.js.map +0 -1
- package/dist/chunk-TUL5YQWF.js +0 -777
- package/dist/chunk-U7LV2DUN.js +0 -74
- package/dist/chunk-UB3XHGFG.js +0 -181
- package/dist/chunk-UB3XHGFG.js.map +0 -1
- package/dist/chunk-UMH35AQV.js +0 -70
- package/dist/chunk-UWZ7O4NR.js +0 -29
- package/dist/chunk-V76PHWLE.js +0 -41
- package/dist/chunk-VFQOE76I.js +0 -69
- package/dist/chunk-VIWOGJ2O.js +0 -71
- package/dist/chunk-VK6OC22R.js +0 -37
- package/dist/chunk-VK6OC22R.js.map +0 -1
- package/dist/chunk-VVLOWY74.js +0 -150
- package/dist/chunk-VVLOWY74.js.map +0 -1
- package/dist/chunk-W3JABOVB.js +0 -53
- package/dist/chunk-W3JABOVB.js.map +0 -1
- package/dist/chunk-WPNP3NF5.js +0 -1221
- package/dist/chunk-WPNP3NF5.js.map +0 -1
- package/dist/chunk-X5QZAJDB.js +0 -59
- package/dist/chunk-X6VNIRHS.js +0 -239
- package/dist/chunk-X6VNIRHS.js.map +0 -1
- package/dist/chunk-XBPUVQDO.js +0 -664
- package/dist/chunk-XBPUVQDO.js.map +0 -1
- package/dist/chunk-XW5LZYV4.js +0 -21
- package/dist/chunk-YTCCC6NG.js +0 -320
- package/dist/chunk-YTCCC6NG.js.map +0 -1
- package/dist/classified/index.d.ts +0 -17
- package/dist/collection-facade-EJVIN2BY.js +0 -39
- package/dist/computed-6FOFXQPE.js +0 -11
- package/dist/config-drift-RFEVGBKR.js +0 -24
- package/dist/config-drift-RFEVGBKR.js.map +0 -1
- package/dist/consent/index.d.ts +0 -23
- package/dist/crdt/index.d.ts +0 -34
- package/dist/dead-filter-RHMNYOXP.js +0 -28
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-IHXOASHV.js +0 -25
- package/dist/derivations/index.d.ts +0 -70
- package/dist/derive-CD3ZVIXK.js +0 -21
- package/dist/describe/index.d.ts +0 -1
- package/dist/describe/index.js +0 -1
- package/dist/describe-C6iHNlqJ.d.ts +0 -162
- package/dist/dev-unlock-wgQ7Ci5I.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-KGEUW2GL.js +0 -123
- package/dist/executor-EUPYHCLU.js +0 -9
- package/dist/executor-KZ4B3PRT.js +0 -9
- package/dist/executor-MHUM2VZK.js +0 -21
- package/dist/export-accessible-Z3NSZZHN.js +0 -23
- package/dist/extract-partition-VSKT35JG.js +0 -36
- package/dist/fanout-sidecar-NBDKKCHT.js +0 -74
- package/dist/find-OH4BEULF.js +0 -11
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -35
- package/dist/hash-CwHnoKyW.d.ts +0 -72
- 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-CTvUp94-.d.ts +0 -123
- package/dist/index-Dn5GzPg_.d.ts +0 -22138
- package/dist/indexing/index.d.ts +0 -39
- package/dist/issue-AEOL6RXA.js +0 -19
- package/dist/kernel/index.d.ts +0 -32
- package/dist/kernel/index.js +0 -59
- package/dist/lazy/index.d.ts +0 -21
- package/dist/ledger-3LR3YO2W.js +0 -42
- package/dist/liberate-XSEPRWEA.js +0 -24
- package/dist/link-set-NSUIX6BR.js +0 -31
- package/dist/materialized-views/index.d.ts +0 -173
- package/dist/mime-magic-CYbFNQ4h.d.ts +0 -103
- package/dist/noydb-POVTIVQ6.js +0 -62
- 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-Y7HL2KGA.js +0 -41
- package/dist/portability/index.d.ts +0 -20
- package/dist/post-register-KOFRTCDD.js +0 -55
- package/dist/post-register-KOFRTCDD.js.map +0 -1
- package/dist/public-envelope-NC7SPNMV.js +0 -32
- package/dist/query/index.d.ts +0 -5
- package/dist/read-only-facade-5ADRJVTM.js +0 -8
- package/dist/register-3D6R2MKN.js +0 -23
- package/dist/registry-AI4E46PD.js +0 -19
- package/dist/registry-HSNQ4NBP.js +0 -9
- package/dist/registry-WIX6QCV5.js +0 -17
- package/dist/request-withdrawal-GU4XS2R5.js +0 -31
- package/dist/reveal-5Y777N5Q.js +0 -38
- package/dist/reveal-5Y777N5Q.js.map +0 -1
- package/dist/revoke-ZFETCLYV.js +0 -24
- package/dist/revoke-ZFETCLYV.js.map +0 -1
- package/dist/satellites/index.d.ts +0 -5
- 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-GAIMQQ2J.js +0 -25
- package/dist/signer-GAIMQQ2J.js.map +0 -1
- package/dist/snapshots/index.d.ts +0 -26
- package/dist/stale-77LP2EEF.js +0 -14
- package/dist/stale-77LP2EEF.js.map +0 -1
- package/dist/storage-KEXIXLGM.js +0 -23
- package/dist/storage-KEXIXLGM.js.map +0 -1
- package/dist/store-coordination-provider-NJDDZ264.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 -155
- package/dist/tiers/index.d.ts +0 -5
- package/dist/to/index.d.ts +0 -5
- package/dist/transition-guard-D5RLJv8S.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/validators-C3lrVF-c.d.ts +0 -101
- package/dist/vault-diff-_LSIcOMv.d.ts +0 -147
- package/dist/verify-CAYGXYNO.js +0 -139
- package/dist/verify-CAYGXYNO.js.map +0 -1
- package/dist/walk-SMAE4IEI.js +0 -241
- package/dist/with/index.d.ts +0 -38
- package/dist/with-materialized-view-Xv1-9Bh0.d.ts +0 -27
- package/dist/with-overlayed-view-CuWhq_-C.d.ts +0 -12
- package/dist/with-rollup-K_iwal4b.d.ts +0 -47
- package/dist/withdraw-accessible-Q7BULAN5.js +0 -28
- package/dist/withdraw-accessible-Q7BULAN5.js.map +0 -1
- /package/dist/{adapter/index.js.map → api-ZGS6LCOF.js.map} +0 -0
- /package/dist/{chunk-VIWOGJ2O.js.map → chunk-3B5VVCNY.js.map} +0 -0
- /package/dist/{chunk-P2PEPSPK.js.map → chunk-3LQ2YKO4.js.map} +0 -0
- /package/dist/{chunk-EU7HDMT3.js.map → chunk-3QCRBHCY.js.map} +0 -0
- /package/dist/{chunk-FZK3JJJK.js.map → chunk-4JBYV75E.js.map} +0 -0
- /package/dist/{chunk-I6JJ6VJS.js.map → chunk-4NXKCLLQ.js.map} +0 -0
- /package/dist/{chunk-VFQOE76I.js.map → chunk-5M5DVGV7.js.map} +0 -0
- /package/dist/{chunk-LFGJG4XZ.js.map → chunk-5YOLBEQ6.js.map} +0 -0
- /package/dist/{chunk-OWGAXPRE.js.map → chunk-6CRIV7DE.js.map} +0 -0
- /package/dist/{chunk-QABECTNN.js.map → chunk-6QTNZJBS.js.map} +0 -0
- /package/dist/{chunk-723XB5NX.js.map → chunk-6T2SCQRU.js.map} +0 -0
- /package/dist/{chunk-PVC2FBCQ.js.map → chunk-7DSTRQIJ.js.map} +0 -0
- /package/dist/{chunk-NTPWQH4S.js.map → chunk-AUSTCW2X.js.map} +0 -0
- /package/dist/{chunk-MOQ5M46U.js.map → chunk-B3HJYUOF.js.map} +0 -0
- /package/dist/{chunk-QYMMMKOO.js.map → chunk-BDVFPG6Y.js.map} +0 -0
- /package/dist/{chunk-PYIUDUGS.js.map → chunk-CAF6WOK7.js.map} +0 -0
- /package/dist/{chunk-5HZULLHE.js.map → chunk-CIE2BASH.js.map} +0 -0
- /package/dist/{chunk-BTFTHF6Q.js.map → chunk-CRI4OUV4.js.map} +0 -0
- /package/dist/{chunk-37JZR7CY.js.map → chunk-DLG74CNB.js.map} +0 -0
- /package/dist/{chunk-TCGVRKOS.js.map → chunk-ERJ7FU55.js.map} +0 -0
- /package/dist/{chunk-FWART3VA.js.map → chunk-EVVGJDRQ.js.map} +0 -0
- /package/dist/{chunk-X5QZAJDB.js.map → chunk-EXK7QRWF.js.map} +0 -0
- /package/dist/{chunk-5HRJQSKN.js.map → chunk-EYZ6IQ6X.js.map} +0 -0
- /package/dist/{chunk-DCVVCJVB.js.map → chunk-F64IRYG3.js.map} +0 -0
- /package/dist/{chunk-BJ2XF2RC.js.map → chunk-FHS2HQSH.js.map} +0 -0
- /package/dist/{chunk-HU55NPHZ.js.map → chunk-GKEWXIV5.js.map} +0 -0
- /package/dist/{chunk-I6URUNTD.js.map → chunk-GTGPO5KW.js.map} +0 -0
- /package/dist/{chunk-5UOPIPZC.js.map → chunk-HB3RFQSC.js.map} +0 -0
- /package/dist/{chunk-F3EKFGUS.js.map → chunk-I6GALP6E.js.map} +0 -0
- /package/dist/{chunk-R4IVPJHN.js.map → chunk-IL6POWCW.js.map} +0 -0
- /package/dist/{chunk-3KBK5LU4.js.map → chunk-IU6SNYX6.js.map} +0 -0
- /package/dist/{chunk-TUL5YQWF.js.map → chunk-J2ZX2XUV.js.map} +0 -0
- /package/dist/{chunk-UWZ7O4NR.js.map → chunk-JKJOGPZN.js.map} +0 -0
- /package/dist/{chunk-V76PHWLE.js.map → chunk-JZUV47FZ.js.map} +0 -0
- /package/dist/{chunk-II6DLDZM.js.map → chunk-K5IMOGHB.js.map} +0 -0
- /package/dist/{chunk-GDOOG5YQ.js.map → chunk-LASZKVMO.js.map} +0 -0
- /package/dist/{chunk-5YBUFCFF.js.map → chunk-NR5LT5RY.js.map} +0 -0
- /package/dist/{chunk-UMH35AQV.js.map → chunk-Q5VNKNE5.js.map} +0 -0
- /package/dist/{chunk-XW5LZYV4.js.map → chunk-QLWMEXCT.js.map} +0 -0
- /package/dist/{chunk-PAJCRV7O.js.map → chunk-QRB7NAOJ.js.map} +0 -0
- /package/dist/{chunk-U7LV2DUN.js.map → chunk-R4ROFEYC.js.map} +0 -0
- /package/dist/{chunk-RNYDHIQL.js.map → chunk-RIX4V2TB.js.map} +0 -0
- /package/dist/{chunk-L6Q5NA22.js.map → chunk-RYCTDFUX.js.map} +0 -0
- /package/dist/{chunk-CHK5VVMI.js.map → chunk-RZ5SVOYR.js.map} +0 -0
- /package/dist/{chunk-TIAYXOEI.js.map → chunk-SLFHQTTW.js.map} +0 -0
- /package/dist/{chunk-J5YUA6JB.js.map → chunk-UNFPPVNI.js.map} +0 -0
- /package/dist/{chunk-25G7PUTA.js.map → chunk-VLFCJYTL.js.map} +0 -0
- /package/dist/{chunk-7CZ6YXMO.js.map → chunk-VN3DBQAU.js.map} +0 -0
- /package/dist/{chunk-J7OH6R4K.js.map → chunk-VZRODIM3.js.map} +0 -0
- /package/dist/{chunk-55LSDABW.js.map → chunk-W22IKJE2.js.map} +0 -0
- /package/dist/{chunk-GLVXQU3E.js.map → chunk-X3YYQWOQ.js.map} +0 -0
- /package/dist/{chunk-M3OYTM5Z.js.map → chunk-YFXZEAYK.js.map} +0 -0
- /package/dist/{chunk-5JQMX2EH.js.map → chunk-ZAJAVEXY.js.map} +0 -0
- /package/dist/{chunk-26FSVNBL.js.map → chunk-ZICD77GM.js.map} +0 -0
- /package/dist/{chunk-IARAK3PK.js.map → chunk-ZUODRVHY.js.map} +0 -0
- /package/dist/{api-JDWL67WL.js.map → collection-facade-TLWIPI76.js.map} +0 -0
- /package/dist/{chunk-BGIZAFY7.js.map → computed-ZIQTYTDI.js.map} +0 -0
- /package/dist/{dead-filter-RHMNYOXP.js.map → dead-filter-ESOBZZP5.js.map} +0 -0
- /package/dist/{chunk-K2WCO3NX.js.map → delegation-W7ZV2322.js.map} +0 -0
- /package/dist/{collection-facade-EJVIN2BY.js.map → derive-H2BJTLUI.js.map} +0 -0
- /package/dist/{computed-6FOFXQPE.js.map → enclave-AP3I5W7O.js.map} +0 -0
- /package/dist/{delegation-IHXOASHV.js.map → executor-KGWTNEQD.js.map} +0 -0
- /package/dist/{derive-CD3ZVIXK.js.map → executor-OVEXR6RT.js.map} +0 -0
- /package/dist/{describe/index.js.map → executor-UNEH5ZYH.js.map} +0 -0
- /package/dist/{enclave-KGEUW2GL.js.map → export-accessible-PCMXSUZS.js.map} +0 -0
- /package/dist/{executor-EUPYHCLU.js.map → extract-partition-SWHFSYJO.js.map} +0 -0
- /package/dist/{fanout-sidecar-NBDKKCHT.js.map → fanout-sidecar-A765THMX.js.map} +0 -0
- /package/dist/{executor-KZ4B3PRT.js.map → find-N6345CNT.js.map} +0 -0
- /package/dist/{executor-MHUM2VZK.js.map → issue-5OKB6I2R.js.map} +0 -0
- /package/dist/{export-accessible-Z3NSZZHN.js.map → ledger-GFBKVPV4.js.map} +0 -0
- /package/dist/{extract-partition-VSKT35JG.js.map → liberate-3VDOT4KO.js.map} +0 -0
- /package/dist/{find-OH4BEULF.js.map → link-set-Z7Q2ASFX.js.map} +0 -0
- /package/dist/{issue-AEOL6RXA.js.map → noydb-ZCJOYBDI.js.map} +0 -0
- /package/dist/{kernel/index.js.map → policy-Z3RUAIY2.js.map} +0 -0
- /package/dist/{ledger-3LR3YO2W.js.map → public-envelope-B4KNWVUA.js.map} +0 -0
- /package/dist/{liberate-XSEPRWEA.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
- /package/dist/{link-set-NSUIX6BR.js.map → register-VAHONCID.js.map} +0 -0
- /package/dist/{noydb-POVTIVQ6.js.map → registry-7MLVD3VO.js.map} +0 -0
- /package/dist/{policy-Y7HL2KGA.js.map → registry-EPKPD5SM.js.map} +0 -0
- /package/dist/{public-envelope-NC7SPNMV.js.map → registry-P5T7PS2U.js.map} +0 -0
- /package/dist/{read-only-facade-5ADRJVTM.js.map → request-withdrawal-TI3A5WPS.js.map} +0 -0
- /package/dist/{register-3D6R2MKN.js.map → revoke-FDRD6GRW.js.map} +0 -0
- /package/dist/{registry-AI4E46PD.js.map → signer-MUWEIUI6.js.map} +0 -0
- /package/dist/{registry-HSNQ4NBP.js.map → stale-OSQ7J3AA.js.map} +0 -0
- /package/dist/{registry-WIX6QCV5.js.map → storage-MVFCGEQE.js.map} +0 -0
- /package/dist/{store-coordination-provider-NJDDZ264.js.map → store-coordination-provider-64OEZFGS.js.map} +0 -0
- /package/dist/{walk-SMAE4IEI.js.map → walk-SVNDIZ62.js.map} +0 -0
- /package/dist/{request-withdrawal-GU4XS2R5.js.map → withdraw-accessible-WZIEVWSR.js.map} +0 -0
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Noydb-side auth / recovery / enrollment facade.
|
|
3
|
+
*
|
|
4
|
+
* Holds the tier-2 authenticator enrollment/unlock wrappers, WebAuthn
|
|
5
|
+
* enrollment, auth-config introspection, the tier-1 passphrase
|
|
6
|
+
* rotate/recover flows, the paper/Shamir recovery rotate/enroll flows,
|
|
7
|
+
* managed-passphrase recovery, peer-recovery, tier-3 PIN unlock, and the
|
|
8
|
+
* public `getKeyring` accessor.
|
|
9
|
+
*
|
|
10
|
+
* The near-parallel rotate/recover variants (managed vs user vs paper vs
|
|
11
|
+
* Shamir) are deliberately NOT consolidated. The
|
|
12
|
+
* keyring/active-tier/quick-unlock/policy caches stay `Noydb`-resident
|
|
13
|
+
* (shared by the kernel's unlock path) and arrive **by reference** through
|
|
14
|
+
* {@link TeamFacadeDeps}; the keyring-unlock path (`getKeyringInternal`),
|
|
15
|
+
* the policy gate (`checkGate`), the managed-recovery enrolment check
|
|
16
|
+
* (`assertRecoveryEnrolled`), `openVault`, and the one-shot
|
|
17
|
+
* managed-recovery skip flag stay kernel-resident and arrive as callbacks.
|
|
18
|
+
*
|
|
19
|
+
* Internal service — reached through `noydb.rotatePassphrase(...)` etc.
|
|
20
|
+
*/
|
|
21
|
+
import type { NoydbOptions, NoydbStore, KeyringAuthenticator } from '../../kernel/types.js';
|
|
22
|
+
import { type RotatePassphraseInput, type RecoverPassphraseInput, type RecoverPassphraseResult, type RotateRecoveryOptions, type RotateRecoveryResult, type EnrollRecoveryResult, type RecoveryEnrollmentInput, type RecoveryProof } from './rotate-recover.js';
|
|
23
|
+
import { type RecoverUserOptions } from './peer-recover.js';
|
|
24
|
+
import { type PaperRecoveryEntry, type ShamirRecoveryEntry } from './recovery.js';
|
|
25
|
+
import type { Vault } from '../../kernel/vault.js';
|
|
26
|
+
import type { UnlockedKeyring } from './keyring.js';
|
|
27
|
+
import { type EnrollAuthenticatorOptions, type UpdateAuthenticatorOptions } from './authenticators.js';
|
|
28
|
+
import type { QuickUnlockStore, QuickUnlockState } from '../session/unlock-state.js';
|
|
29
|
+
import type { PassphrasePolicy } from '../../kernel/validation.js';
|
|
30
|
+
import type { ActiveTier, FactorProofBundle, GateName, GrantOptions, ReAuthOperation, RevokeOptions, VaultPolicy } from '../../kernel/types.js';
|
|
31
|
+
/** NoydbOptions with the store resolved to a non-optional value (internal use only). */
|
|
32
|
+
type ResolvedNoydbOptions = NoydbOptions & {
|
|
33
|
+
readonly store: NoydbStore;
|
|
34
|
+
};
|
|
35
|
+
/** Everything the moving auth/recovery/enrollment methods touched on the Noydb instance's `this.*`. */
|
|
36
|
+
export interface TeamFacadeDeps {
|
|
37
|
+
/** Resolved Noydb options (store, user, passphraseMode, sealingKey, shamirRecovery, …). */
|
|
38
|
+
readonly options: ResolvedNoydbOptions;
|
|
39
|
+
/** Live unlocked-keyring cache (Noydb-resident; read/written by reference). */
|
|
40
|
+
readonly keyringCache: Map<string, UnlockedKeyring>;
|
|
41
|
+
/** Per-vault active session tier (Noydb-resident; read/written by reference). */
|
|
42
|
+
readonly activeTier: Map<string, ActiveTier>;
|
|
43
|
+
/** Per-vault tier-3 quick-unlock state (Noydb-resident; read/written by reference). */
|
|
44
|
+
readonly quickUnlock: QuickUnlockStore;
|
|
45
|
+
/** Per-vault loaded policy cache (Noydb-resident; read/written by reference). */
|
|
46
|
+
readonly policyCache: Map<string, VaultPolicy>;
|
|
47
|
+
/** Evaluate the policy gate for an operation (kernel-resident). */
|
|
48
|
+
checkGate(vault: string, gate: GateName, factors?: FactorProofBundle): Promise<void>;
|
|
49
|
+
/** Legacy `requireReAuthFor` session-policy check (kernel-resident). */
|
|
50
|
+
checkPolicyOperation(vault: string, op: ReAuthOperation): void;
|
|
51
|
+
/** Live-reference keyring unlock path (kernel-resident). */
|
|
52
|
+
getKeyringInternal(vault: string, opts?: {
|
|
53
|
+
create: boolean;
|
|
54
|
+
}): Promise<UnlockedKeyring>;
|
|
55
|
+
/** Managed-recovery enrolment check (kernel-resident). */
|
|
56
|
+
assertRecoveryEnrolled(vault: string, policy: VaultPolicy, opts?: {
|
|
57
|
+
skipManagedCheck?: boolean;
|
|
58
|
+
}): Promise<void>;
|
|
59
|
+
/** Open (or create) a vault (kernel-resident). */
|
|
60
|
+
openVault(vault: string, opts?: {
|
|
61
|
+
locale?: string;
|
|
62
|
+
}): Promise<Vault>;
|
|
63
|
+
/** Toggle the one-shot managed-mode strong-recovery bypass flag (kernel-resident). */
|
|
64
|
+
setSkipNextManagedRecoveryCheck(value: boolean): void;
|
|
65
|
+
}
|
|
66
|
+
export declare class TeamFacade {
|
|
67
|
+
private readonly deps;
|
|
68
|
+
constructor(deps: TeamFacadeDeps);
|
|
69
|
+
private requireShamirProvider;
|
|
70
|
+
/** Gate + run a `grant` engine. See `Noydb.grant` for the public contract. */
|
|
71
|
+
runGrant(engine: (adapter: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: GrantOptions) => Promise<void>, vault: string, options: GrantOptions, factors?: FactorProofBundle): Promise<void>;
|
|
72
|
+
/** Gate + run a `revoke` engine. See `Noydb.revoke` for the public contract. */
|
|
73
|
+
runRevoke(engine: (adapter: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: RevokeOptions) => Promise<void>, vault: string, options: RevokeOptions, factors?: FactorProofBundle): Promise<void>;
|
|
74
|
+
/** Gate + run a `rotateKeys` engine. See `Noydb.rotate` for the public contract. */
|
|
75
|
+
runRotate(engine: (adapter: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, collections: string[]) => Promise<void>, vault: string, collections: string[]): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Add a tier-2 authenticator slot to the calling user's keyring.
|
|
78
|
+
* Each slot independently wraps the SAME KEK under a method-specific
|
|
79
|
+
* key — adding a slot is a constant-time keyring write.
|
|
80
|
+
*
|
|
81
|
+
* The wrapping ciphertext is produced by the corresponding
|
|
82
|
+
* `@noy-db/on-*` package (e.g. `enrollPasswordAuthenticator` from
|
|
83
|
+
* `@noy-db/on-password`); the hub persists the result.
|
|
84
|
+
*
|
|
85
|
+
* Gated by `enroll-authenticator`; `presented` carries any factor
|
|
86
|
+
* proofs the active policy demands.
|
|
87
|
+
*/
|
|
88
|
+
enrollAuthenticator(vault: string, options: EnrollAuthenticatorOptions, factors?: FactorProofBundle): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Remove a tier-2 authenticator slot. Idempotent — removing a
|
|
91
|
+
* non-existent slot is a successful no-op. Gated by
|
|
92
|
+
* `remove-authenticator`.
|
|
93
|
+
*/
|
|
94
|
+
removeAuthenticator(vault: string, slotId: string, factors?: FactorProofBundle): Promise<void>;
|
|
95
|
+
/** Read the slot list for a vault. Internal — `describeAuthConfig` consumes this. */
|
|
96
|
+
listAuthenticators(vault: string): Promise<ReadonlyArray<KeyringAuthenticator>>;
|
|
97
|
+
/**
|
|
98
|
+
* Mutate the `meta` blob on an existing authenticator slot — slot
|
|
99
|
+
* rename, label change, attachment of UI hints. The slot's `id`,
|
|
100
|
+
* `method`, and wrap material (`wrapped_kek` / `wrapped_deks` + `iv`)
|
|
101
|
+
* are immutable through this method. Anti-slot-swap is structural,
|
|
102
|
+
* not gate-driven.
|
|
103
|
+
*
|
|
104
|
+
* `meta` patch semantics (top-level merge):
|
|
105
|
+
* - Top-level merge — absent keys preserved
|
|
106
|
+
* - `null` value — delete that meta key
|
|
107
|
+
* - Other values — replace verbatim
|
|
108
|
+
*
|
|
109
|
+
* Use case: per-slot nickname for "iPhone Touch ID" vs "MacBook
|
|
110
|
+
* Touch ID" disambiguation in admin UIs. The slot id (auto-derived
|
|
111
|
+
* from credentialId prefix) is not human-friendly; `meta.nickname`
|
|
112
|
+
* is.
|
|
113
|
+
*
|
|
114
|
+
* Gated by `update-authenticator`. PERSONAL_POLICY: tier-1 unlock
|
|
115
|
+
* alone (matches enroll/remove). STRICT_POLICY: tier-1 +
|
|
116
|
+
* TOTP/email-OTP factor proof — a malicious rename on a shared
|
|
117
|
+
* workstation could mislead the user about which device a slot
|
|
118
|
+
* corresponds to, so STRICT requires fresh factor binding.
|
|
119
|
+
*
|
|
120
|
+
* @throws `NoAccessError` when no slot with the given id exists.
|
|
121
|
+
* @throws `ValidationError` when no patch field is provided.
|
|
122
|
+
*/
|
|
123
|
+
updateAuthenticator(vault: string, slotId: string, options: UpdateAuthenticatorOptions, factors?: FactorProofBundle): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Native WebAuthn enrollment using the **real** internal keyring.
|
|
126
|
+
*
|
|
127
|
+
* Why this exists: when a consumer is using `createNoydb({ secret })`,
|
|
128
|
+
* they cannot reach the live `UnlockedKeyring` to feed it to
|
|
129
|
+
* `enrollWebAuthn(keyring, vault, opts)` from `@noy-db/on-webauthn`.
|
|
130
|
+
* Constructing a synthetic keyring (the previous workaround) produces
|
|
131
|
+
* a slot whose `wrapped_kek` references the synthetic payload, not
|
|
132
|
+
* the live session — so `unlockViaAuthenticator()` later replaces the
|
|
133
|
+
* live DEK map with stale wrapped DEKs and every decrypt fails.
|
|
134
|
+
*
|
|
135
|
+
* This method runs `ceremony` with the REAL keyring (still in
|
|
136
|
+
* `keyringCache`). The ceremony performs the WebAuthn enrollment and
|
|
137
|
+
* returns the slot options that hub then persists via the standard
|
|
138
|
+
* tier-2 enrollAuthenticator path.
|
|
139
|
+
*
|
|
140
|
+
* Layering note: hub does not import `@noy-db/on-webauthn` (that
|
|
141
|
+
* would invert the dep graph). The consumer wires it in:
|
|
142
|
+
*
|
|
143
|
+
* ```ts
|
|
144
|
+
* import { enrollWebAuthn } from '@noy-db/on-webauthn'
|
|
145
|
+
*
|
|
146
|
+
* await db.enrollWebAuthn('demo', async (keyring) => {
|
|
147
|
+
* const e = await enrollWebAuthn(keyring, 'demo', { rp: {...} })
|
|
148
|
+
* return {
|
|
149
|
+
* id: `webauthn-${e.credentialId.slice(0, 8)}`,
|
|
150
|
+
* method: 'webauthn',
|
|
151
|
+
* wrapped_kek: e.wrappedPayload,
|
|
152
|
+
* meta: {
|
|
153
|
+
* credentialId: e.credentialId,
|
|
154
|
+
* wrapIv: e.wrapIv,
|
|
155
|
+
* prfUsed: e.prfUsed,
|
|
156
|
+
* beFlag: e.beFlag,
|
|
157
|
+
* requireSingleDevice: e.requireSingleDevice,
|
|
158
|
+
* },
|
|
159
|
+
* }
|
|
160
|
+
* })
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* Returns the WebAuthn `credentialId` (extracted from `meta.credentialId`)
|
|
164
|
+
* for the caller's lookup index (a bootstrap vault, a PublicEnvelope,
|
|
165
|
+
* a server-side allowlist).
|
|
166
|
+
*
|
|
167
|
+
* Gated by `enroll-authenticator` like `enrollAuthenticator()` itself.
|
|
168
|
+
*/
|
|
169
|
+
enrollWebAuthn(vault: string, ceremony: (keyring: UnlockedKeyring) => Promise<EnrollAuthenticatorOptions>, factors?: FactorProofBundle): Promise<{
|
|
170
|
+
credentialId: string;
|
|
171
|
+
}>;
|
|
172
|
+
/**
|
|
173
|
+
* Filter the slot list to webauthn-method slots only. Useful for
|
|
174
|
+
* "you have N WebAuthn credentials enrolled" UI surfaces and for
|
|
175
|
+
* deciding when a new device prompt should appear. Identity is
|
|
176
|
+
* `id` + `enrolled_at`; the `meta.credentialId` (base64) is used by
|
|
177
|
+
* `allowCredentials` at unlock time.
|
|
178
|
+
*/
|
|
179
|
+
listWebAuthnSlots(vault: string): Promise<ReadonlyArray<{
|
|
180
|
+
id: string;
|
|
181
|
+
enrolledAt: string;
|
|
182
|
+
credentialId: string;
|
|
183
|
+
}>>;
|
|
184
|
+
/**
|
|
185
|
+
* Resolve a slot by id, then hand the wrapped-KEK ciphertext + meta
|
|
186
|
+
* to the caller-supplied verifier. The verifier is the
|
|
187
|
+
* `unlockWith*` function from the corresponding `@noy-db/on-*`
|
|
188
|
+
* package, e.g. `unlockWithPassword(slot, password)`.
|
|
189
|
+
*
|
|
190
|
+
* On success, mark the active session tier as 2 — subsequent
|
|
191
|
+
* `checkGate` calls see a tier-2 unlock.
|
|
192
|
+
*/
|
|
193
|
+
unlockViaAuthenticator(vault: string, slotId: string, verify: (slot: KeyringAuthenticator) => Promise<UnlockedKeyring>): Promise<UnlockedKeyring>;
|
|
194
|
+
/** English summary of the configured auth model. */
|
|
195
|
+
describeAuthConfig(vault: string): Promise<string>;
|
|
196
|
+
/** Mermaid `flowchart TB` source for the auth graph. */
|
|
197
|
+
diagramAuthConfig(vault: string): Promise<string>;
|
|
198
|
+
/**
|
|
199
|
+
* Per-user enrollment summary. Gated by `view-user-auth` (default:
|
|
200
|
+
* disabled). Sanitization is allowlist-based — never renders cred
|
|
201
|
+
* ids, password hashes, secrets, or any field outside the allowlist.
|
|
202
|
+
*/
|
|
203
|
+
describeUserAuth(vault: string, userId: string, factors?: FactorProofBundle): Promise<string>;
|
|
204
|
+
/** Bulk variant for owner dashboards. Gated by `view-user-auth`. */
|
|
205
|
+
describeAllUsersAuth(vault: string, factors?: FactorProofBundle): Promise<Array<{
|
|
206
|
+
userId: string;
|
|
207
|
+
description: string;
|
|
208
|
+
}>>;
|
|
209
|
+
/**
|
|
210
|
+
* Rotate the user's passphrase (user remembers old). Validates the
|
|
211
|
+
* new phrase against the configured `passphrase` policy, runs the
|
|
212
|
+
* `rotate-passphrase` gate, then re-derives + re-wraps every DEK.
|
|
213
|
+
*
|
|
214
|
+
* Tier-2 authenticator slots are dropped — each slot wraps the old
|
|
215
|
+
* KEK and would need its derivation key to be re-presented. Re-enrol
|
|
216
|
+
* via `db.enrollAuthenticator` after rotation.
|
|
217
|
+
*
|
|
218
|
+
* @throws `WeakPassphraseError` on a weak new phrase.
|
|
219
|
+
* @throws `PolicyDeniedError` when the gate denies (missing factor, …).
|
|
220
|
+
* @throws `InvalidKeyError` when `oldPassphrase` is wrong.
|
|
221
|
+
*/
|
|
222
|
+
rotatePassphrase(vault: string, input: RotatePassphraseInput, factors?: FactorProofBundle): Promise<void>;
|
|
223
|
+
/**
|
|
224
|
+
* Reset the passphrase using a recovery proof (user forgot the old).
|
|
225
|
+
* Currently supports the `'paper'` profile end-to-end; the
|
|
226
|
+
* other profiles throw {@link RecoveryProfileNotImplementedError}.
|
|
227
|
+
*
|
|
228
|
+
* Burns the used recovery entry on success.
|
|
229
|
+
*/
|
|
230
|
+
recoverPassphrase(vault: string, input: RecoverPassphraseInput, factors?: FactorProofBundle): Promise<RecoverPassphraseResult>;
|
|
231
|
+
/**
|
|
232
|
+
* Deliberate paper-recovery-code regeneration. User knows their
|
|
233
|
+
* passphrase but wants a fresh sheet — they lost the printout or
|
|
234
|
+
* suspect compromise of the off-site copy.
|
|
235
|
+
*
|
|
236
|
+
* Symmetric to {@link rotatePassphrase} for the recovery profile:
|
|
237
|
+
* gated, audit-trackable, ergonomic. Replaces (not appends) the
|
|
238
|
+
* paper sheet under `_meta/recovery-paper` in a single envelope `put`.
|
|
239
|
+
*
|
|
240
|
+
* Gated by the `rotate-recovery` policy gate:
|
|
241
|
+
* - PERSONAL_POLICY: `{ minTier: 1 }` — knowing the passphrase
|
|
242
|
+
* suffices, matching the lower-level flow's bar.
|
|
243
|
+
* - STRICT_POLICY: `{ minTier: 1, factors: [{ anyOf: ['totp',
|
|
244
|
+
* 'email-otp', 'webauthn-roaming'] }] }` — rotation is an
|
|
245
|
+
* off-site-trust event; require an off-device factor so a
|
|
246
|
+
* stolen unlocked laptop cannot silently mint a sheet for the
|
|
247
|
+
* attacker.
|
|
248
|
+
*
|
|
249
|
+
* Defaults `count` to the existing sheet size so consumers aren't
|
|
250
|
+
* surprised by a different code count. Explicit `count` overrides.
|
|
251
|
+
*
|
|
252
|
+
* @throws {@link RecoveryProfileNotImplementedError} when `profile`
|
|
253
|
+
* is anything other than `'paper'` (v1 dispatch limit).
|
|
254
|
+
* @throws {@link PolicyDeniedError} when the gate denies (missing
|
|
255
|
+
* factor, tier mismatch, ...).
|
|
256
|
+
* @throws on missing paper sheet — "nothing to rotate" surfaces as
|
|
257
|
+
* an error rather than silently minting an entire new sheet.
|
|
258
|
+
*
|
|
259
|
+
* @example Default count + show-once UI
|
|
260
|
+
* ```ts
|
|
261
|
+
* const { newCodes } = await db.rotateRecovery('acme', { profile: 'paper' })
|
|
262
|
+
* showCodesToUser(newCodes)
|
|
263
|
+
* ```
|
|
264
|
+
*
|
|
265
|
+
* @example STRICT-policy site with TOTP factor proof
|
|
266
|
+
* ```ts
|
|
267
|
+
* await db.rotateRecovery(
|
|
268
|
+
* 'acme',
|
|
269
|
+
* { profile: 'paper', count: 10 },
|
|
270
|
+
* { factors: [{ kind: 'totp', proof: '123456' }] },
|
|
271
|
+
* )
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
rotateRecovery(vault: string, options: RotateRecoveryOptions, factors?: FactorProofBundle): Promise<RotateRecoveryResult>;
|
|
275
|
+
private rotateRecoveryPaper;
|
|
276
|
+
private rotateRecoveryShamir;
|
|
277
|
+
/**
|
|
278
|
+
* **Atomic create-and-enroll for managed-mode vaults.**
|
|
279
|
+
*
|
|
280
|
+
* Bootstraps a managed-mode vault and enrolls strong recovery in
|
|
281
|
+
* a single ceremony. Under `passphraseMode: 'managed'`, every
|
|
282
|
+
* `openVault` call requires a strong recovery profile (Shamir
|
|
283
|
+
* today) to be enrolled — otherwise it throws
|
|
284
|
+
* {@link ManagedRecoveryNotEnrolledError}. This method bypasses
|
|
285
|
+
* the check temporarily so the keyring can be created, enrolls
|
|
286
|
+
* the supplied recovery profile(s), then returns the vault.
|
|
287
|
+
*
|
|
288
|
+
* For Shamir enrollments, the show-once share strings come back
|
|
289
|
+
* in `recoveryEnrollments[i].shares`. The hub never retains them
|
|
290
|
+
* — the caller MUST display them to the user (once) before any
|
|
291
|
+
* subsequent operation.
|
|
292
|
+
*
|
|
293
|
+
* Paper alone is NOT a strong profile under managed mode; passing
|
|
294
|
+
* `{ profile: 'paper', ... }` without an accompanying shamir entry
|
|
295
|
+
* is rejected at validation time.
|
|
296
|
+
*
|
|
297
|
+
* ```ts
|
|
298
|
+
* const db = await createNoydb({
|
|
299
|
+
* store, user: 'alice',
|
|
300
|
+
* passphraseMode: 'managed',
|
|
301
|
+
* sealingKey: macosKeychainSealingProvider({ ... }),
|
|
302
|
+
* })
|
|
303
|
+
*
|
|
304
|
+
* const { vault, recoveryEnrollments } = await db.openVaultAndEnrollRecovery('acme', {
|
|
305
|
+
* recovery: [{ profile: 'shamir', k: 2, n: 3 }],
|
|
306
|
+
* })
|
|
307
|
+
* for (const r of recoveryEnrollments) {
|
|
308
|
+
* if (r.shares) showSharesToUser(r.shares) // ONCE
|
|
309
|
+
* }
|
|
310
|
+
* ```
|
|
311
|
+
*
|
|
312
|
+
* @throws ValidationError if recovery is empty, or contains no
|
|
313
|
+
* strong profile under managed mode.
|
|
314
|
+
*/
|
|
315
|
+
openVaultAndEnrollRecovery(vault: string, opts: {
|
|
316
|
+
readonly recovery: ReadonlyArray<RecoveryEnrollmentInput>;
|
|
317
|
+
readonly locale?: string;
|
|
318
|
+
}): Promise<{
|
|
319
|
+
readonly vault: Vault;
|
|
320
|
+
readonly recoveryEnrollments: ReadonlyArray<EnrollRecoveryResult>;
|
|
321
|
+
}>;
|
|
322
|
+
/**
|
|
323
|
+
* **Recovery flow under managed-passphrase mode.**
|
|
324
|
+
*
|
|
325
|
+
* Replaces the sealed passphrase of a managed-mode vault with a
|
|
326
|
+
* fresh 256-bit random, sealed under the configured
|
|
327
|
+
* `SealingKeyProvider`. The user never sees the new passphrase.
|
|
328
|
+
*
|
|
329
|
+
* Internally:
|
|
330
|
+
* 1. Verify the recovery proof (Shamir today) and unwrap the
|
|
331
|
+
* DEK set.
|
|
332
|
+
* 2. Mint a fresh 256-bit random as the new effective passphrase.
|
|
333
|
+
* 3. Rewrap the DEK set under a fresh KEK derived from the new
|
|
334
|
+
* passphrase (via the existing `recoverPassphrase` path).
|
|
335
|
+
* 4. Seal the random bytes under the provider and overwrite
|
|
336
|
+
* `_meta/sealed-passphrase`.
|
|
337
|
+
* 5. Drop the keyring cache so the next operation re-derives.
|
|
338
|
+
*
|
|
339
|
+
* The vault's strong-recovery enrollment is preserved across
|
|
340
|
+
* recovery (Shamir entries are not burned on use).
|
|
341
|
+
*
|
|
342
|
+
* @throws ValidationError if the Noydb instance is not in managed mode.
|
|
343
|
+
*/
|
|
344
|
+
recoverManagedPassphrase(vault: string, options: {
|
|
345
|
+
readonly recoveryProof: RecoveryProof;
|
|
346
|
+
readonly passphrasePolicy?: PassphrasePolicy;
|
|
347
|
+
}): Promise<void>;
|
|
348
|
+
/**
|
|
349
|
+
* Atomic peer-recovery — re-wraps an EXISTING user's keyring under
|
|
350
|
+
* a fresh temp passphrase in a single store write. Closes the
|
|
351
|
+
* partial-failure window (the previous compose-from-primitives
|
|
352
|
+
* pattern was `db.revoke + db.grant`, two writes — if the issuer
|
|
353
|
+
* cancelled between them the target was locked out entirely).
|
|
354
|
+
*
|
|
355
|
+
* Different from `db.revoke + db.grant`:
|
|
356
|
+
*
|
|
357
|
+
* - Same `userId`, role, permissions, capabilities preserved.
|
|
358
|
+
* - DEKs unchanged → every other principal in the vault keeps
|
|
359
|
+
* access. No key rotation.
|
|
360
|
+
* - Allows owner→owner natively. The existing
|
|
361
|
+
* `db.revoke` retains its block — peer-recovery is a separate,
|
|
362
|
+
* intentionally-named operation.
|
|
363
|
+
* - Tier-2 slots dropped (they wrap the old KEK).
|
|
364
|
+
*
|
|
365
|
+
* Gated by `peer-recover-user`; `STRICT_POLICY` requires a
|
|
366
|
+
* recovery / TOTP / email-OTP factor proof at the moment of
|
|
367
|
+
* recovery, so the issuer affirmatively re-asserts identity.
|
|
368
|
+
*
|
|
369
|
+
* The recipient should call `db.rotatePassphrase` on first session
|
|
370
|
+
* to choose their own phrase — the temp acts as a single-use
|
|
371
|
+
* bridge.
|
|
372
|
+
*
|
|
373
|
+
* ```ts
|
|
374
|
+
* await db.recoverUser('acme', {
|
|
375
|
+
* userId: 'bob',
|
|
376
|
+
* passphrase: 'temporary-correct-horse-battery-staple-printer',
|
|
377
|
+
* }, { factors: [{ kind: 'recovery' }] })
|
|
378
|
+
* // Bob opens createNoydb({ user: 'bob', secret: tempPhrase })
|
|
379
|
+
* // and immediately calls db.rotatePassphrase to set his own.
|
|
380
|
+
* ```
|
|
381
|
+
*
|
|
382
|
+
* @throws `NoAccessError` when no keyring exists for the target.
|
|
383
|
+
* @throws `PermissionDeniedError` when the caller's role can't
|
|
384
|
+
* recover the target's role (admin→owner is blocked even
|
|
385
|
+
* under recovery).
|
|
386
|
+
* @throws `PrivilegeEscalationError` when the caller lacks a DEK
|
|
387
|
+
* the target previously had access to.
|
|
388
|
+
*
|
|
389
|
+
*/
|
|
390
|
+
recoverUser(vault: string, options: RecoverUserOptions, factors?: FactorProofBundle): Promise<void>;
|
|
391
|
+
/**
|
|
392
|
+
* Persist a recovery enrollment. Accepts the `'paper'`
|
|
393
|
+
* profile.
|
|
394
|
+
*
|
|
395
|
+
* The hub wraps the user's DEK set (not the KEK) under a code-derived
|
|
396
|
+
* AES-GCM key — see `team/recovery.ts` for the rationale. The mint
|
|
397
|
+
* helper {@link mintPaperRecoveryEntry} is the canonical primitive;
|
|
398
|
+
* pair it with `db.getKeyring(vault)` to obtain the live DEK set:
|
|
399
|
+
*
|
|
400
|
+
* ```ts
|
|
401
|
+
* import { mintPaperRecoveryEntry } from '@noy-db/hub'
|
|
402
|
+
*
|
|
403
|
+
* const keyring = await db.getKeyring('acme')
|
|
404
|
+
* const codes: string[] = ['CORRECT-HORSE-1', 'BATTERY-STAPLE-2', ...]
|
|
405
|
+
* const entries = await Promise.all(
|
|
406
|
+
* codes.map((code, i) => mintPaperRecoveryEntry(keyring.deks, code, `code-${i}`)),
|
|
407
|
+
* )
|
|
408
|
+
* await db.enrollRecovery('acme', { profile: 'paper', entries })
|
|
409
|
+
* showCodesToUser(codes)
|
|
410
|
+
* ```
|
|
411
|
+
*
|
|
412
|
+
* `@noy-db/on-recovery`'s `generateRecoveryCodeSet`
|
|
413
|
+
* delegates to `mintPaperRecoveryEntry` internally — its output is
|
|
414
|
+
* fed directly to this API. Pick whichever fits your code-gen layer:
|
|
415
|
+
*
|
|
416
|
+
* ```ts
|
|
417
|
+
* import { generateRecoveryCodeSet } from '@noy-db/on-recovery'
|
|
418
|
+
* const { codes, entries } = await generateRecoveryCodeSet({ deks: keyring.deks, count: 8 })
|
|
419
|
+
* await db.enrollRecovery('acme', { profile: 'paper', entries })
|
|
420
|
+
* ```
|
|
421
|
+
*/
|
|
422
|
+
enrollRecovery(vault: string, enrollment: RecoveryEnrollmentInput): Promise<EnrollRecoveryResult>;
|
|
423
|
+
/** Read the persisted recovery entries (paper + Shamir). Used by `describeAuthConfig`. */
|
|
424
|
+
listRecoveryEntries(vault: string): Promise<{
|
|
425
|
+
paper: ReadonlyArray<PaperRecoveryEntry>;
|
|
426
|
+
shamir: ReadonlyArray<ShamirRecoveryEntry>;
|
|
427
|
+
}>;
|
|
428
|
+
/**
|
|
429
|
+
* Register a tier-3 quick-unlock state for the vault. The state is
|
|
430
|
+
* an opaque blob produced by `@noy-db/on-pin/enrollPin` (or any
|
|
431
|
+
* compatible primitive). It is held in memory only — never persisted
|
|
432
|
+
* — and auto-clears when its `expiresAt` elapses.
|
|
433
|
+
*
|
|
434
|
+
* Gated by `rotate-unlock` (the same gate covers "set" and "rotate"
|
|
435
|
+
* because tier-3 is a single-slot rolling secret).
|
|
436
|
+
*/
|
|
437
|
+
enrollUnlock(vault: string, state: QuickUnlockState, factors?: FactorProofBundle): Promise<void>;
|
|
438
|
+
/**
|
|
439
|
+
* Resume a session via the registered tier-3 state. The verifier is
|
|
440
|
+
* `@noy-db/on-pin/resumePin` (or compatible). On success, mark the
|
|
441
|
+
* active session tier as 3 — every operation must re-authenticate at
|
|
442
|
+
* tier 2 to elevate.
|
|
443
|
+
*
|
|
444
|
+
* Returns `undefined` (caller should fall back to tier 2) when no
|
|
445
|
+
* tier-3 state is registered.
|
|
446
|
+
*/
|
|
447
|
+
unlockViaPin(vault: string, resume: (state: QuickUnlockState) => Promise<UnlockedKeyring>): Promise<UnlockedKeyring | undefined>;
|
|
448
|
+
/** Drop the tier-3 state for a vault — explicit logout. */
|
|
449
|
+
clearQuickUnlock(vault: string): void;
|
|
450
|
+
/**
|
|
451
|
+
* Public accessor for the unlocked keyring of a vault.
|
|
452
|
+
*
|
|
453
|
+
* Returns a **defensive shallow copy** so consumers can read the DEK
|
|
454
|
+
* map and authenticator list without the risk of mutating the hub's
|
|
455
|
+
* internal cache. Internal hub code paths use a live reference
|
|
456
|
+
* via `getKeyringInternal`; ceremonies and external consumers always
|
|
457
|
+
* get a snapshot.
|
|
458
|
+
*
|
|
459
|
+
* The CryptoKey values inside `deks` are not cloned — Web Crypto
|
|
460
|
+
* keys are opaque handles, and a shared handle is intentional
|
|
461
|
+
* (encrypt / decrypt go through the same key the cache holds).
|
|
462
|
+
* Only the container Map / authenticator array is fresh.
|
|
463
|
+
*
|
|
464
|
+
* Used by `@noy-db/on-*` ceremonies that need the live DEK set
|
|
465
|
+
* (paper recovery via {@link mintPaperRecoveryEntry}, tier-3 PIN
|
|
466
|
+
* enrolment via on-pin's `enrollPin`, custom on-* ceremonies that
|
|
467
|
+
* don't have a hub-side wrapper).
|
|
468
|
+
*
|
|
469
|
+
* No new permission gate — this is an accessor over already-unlocked
|
|
470
|
+
* state. The keyring is materialized only after the calling session
|
|
471
|
+
* has unlocked the vault at tier 1, 2, or 3, so exposing it does not
|
|
472
|
+
* widen access. Throws `ValidationError` when encryption is enabled
|
|
473
|
+
* and no `secret` / `getKeyring` is configured.
|
|
474
|
+
*
|
|
475
|
+
* ```ts
|
|
476
|
+
* const keyring = await db.getKeyring('acme')
|
|
477
|
+
* // keyring.deks: Map<collection, CryptoKey>
|
|
478
|
+
* // keyring.kek: CryptoKey | null (null for tier-3 / wrap-DEKs sessions)
|
|
479
|
+
* // keyring.role / .permissions / .authenticators
|
|
480
|
+
* ```
|
|
481
|
+
*/
|
|
482
|
+
getKeyring(vault: string): Promise<UnlockedKeyring>;
|
|
483
|
+
}
|
|
484
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic peer-recovery primitive.
|
|
3
|
+
*
|
|
4
|
+
* `recoverUser` is a SEPARATE operation from `revoke + grant`. It
|
|
5
|
+
* exists because peer-recovery has different semantics than account
|
|
6
|
+
* removal-then-reissue:
|
|
7
|
+
*
|
|
8
|
+
* 1. **Same identity preserved.** `userId`, `role`, `permissions`,
|
|
9
|
+
* capability bits, user envelope (if any), policy override (if
|
|
10
|
+
* any) all survive. Only the wrapping changes.
|
|
11
|
+
* 2. **No key rotation.** The existing DEKs stay valid — every
|
|
12
|
+
* OTHER principal in the vault keeps their access. Rotating
|
|
13
|
+
* keys would invalidate every co-user's wrapping.
|
|
14
|
+
* 3. **Atomic by construction.** A single `store.put` overwrites
|
|
15
|
+
* `_keyring/<userId>` with the recovered file. No revoke step
|
|
16
|
+
* means no partial-failure window.
|
|
17
|
+
* 4. **Owner→owner natively allowed.** Two co-owners recovering
|
|
18
|
+
* each other is the explicitly-intentional case (a partner
|
|
19
|
+
* forgot the master phrase). The existing `canRevoke` rule that
|
|
20
|
+
* blocks owner→owner is correct for `revoke` (which is account
|
|
21
|
+
* *removal*) and intentionally NOT replicated here. The policy
|
|
22
|
+
* gate `peer-recover-user` carries the freshness requirement.
|
|
23
|
+
* 5. **Tier-2 slots dropped.** The slots wrap the OLD KEK under
|
|
24
|
+
* method-derived keys; after recovery the KEK is re-derived
|
|
25
|
+
* from the new temp passphrase. Match `rotatePassphrase`'s
|
|
26
|
+
* precedent — the recovered user re-enrols slots after picking
|
|
27
|
+
* their own phrase.
|
|
28
|
+
*
|
|
29
|
+
* Caller must be at least as privileged as the target. The hub
|
|
30
|
+
* `db.recoverUser` method gates this with the `peer-recover-user`
|
|
31
|
+
* policy gate (the `peer-recover-user` factor-proof requirement); the function below
|
|
32
|
+
* enforces only the role + anti-privilege-escalation invariants.
|
|
33
|
+
*
|
|
34
|
+
* @module
|
|
35
|
+
*/
|
|
36
|
+
import type { NoydbStore, Role } from '../../kernel/types.js';
|
|
37
|
+
import { type PassphrasePolicy } from '../../kernel/validation.js';
|
|
38
|
+
import type { UnlockedKeyring } from './keyring.js';
|
|
39
|
+
/** Input shape for {@link recoverUser}. */
|
|
40
|
+
export interface RecoverUserOptions {
|
|
41
|
+
/** Target user id whose keyring is being recovered. */
|
|
42
|
+
readonly userId: string;
|
|
43
|
+
/**
|
|
44
|
+
* Temporary passphrase under which the new keyring is wrapped.
|
|
45
|
+
* The recipient should call `db.rotatePassphrase` immediately on
|
|
46
|
+
* acceptance to choose their own phrase — this temp acts as a
|
|
47
|
+
* single-use bridge in invite / peer-recovery flows.
|
|
48
|
+
*/
|
|
49
|
+
readonly passphrase: string;
|
|
50
|
+
/** Override the target's role. Defaults to the existing target's role. */
|
|
51
|
+
readonly role?: Role;
|
|
52
|
+
/** Override the target's display name. Defaults to existing. */
|
|
53
|
+
readonly displayName?: string;
|
|
54
|
+
/** Validate phrase strength against the configured policy. */
|
|
55
|
+
readonly validatePassphrase?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Skip phrase strength validation even when `validatePassphrase` is
|
|
58
|
+
* set. The escape hatch matches `grant`'s shape — used when the
|
|
59
|
+
* temp phrase is a high-entropy one-shot string that doesn't need
|
|
60
|
+
* to satisfy the human-typeable rules.
|
|
61
|
+
*/
|
|
62
|
+
readonly allowWeakPassphrase?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Optional explicit phrase policy override (passed through to
|
|
65
|
+
* `assertStrongPassphrase`). Mirrors how `grant` accepts a custom
|
|
66
|
+
* `PassphrasePolicy` for app-specific tightening.
|
|
67
|
+
*/
|
|
68
|
+
readonly passphrasePolicy?: PassphrasePolicy;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Atomically rewrap the target user's keyring under a fresh temp
|
|
72
|
+
* passphrase. Single store write; no revoke step; no key rotation.
|
|
73
|
+
*
|
|
74
|
+
* Caller's responsibilities (NOT enforced here):
|
|
75
|
+
* - Run the `peer-recover-user` policy gate first via
|
|
76
|
+
* `Noydb.checkGate` to enforce the freshness factor proof.
|
|
77
|
+
* - Communicate the temp passphrase to the recipient via a secure
|
|
78
|
+
* channel (URL fragment, in-person, etc.) — the hub does not
|
|
79
|
+
* transport secrets.
|
|
80
|
+
*/
|
|
81
|
+
export declare function recoverUser(store: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: RecoverUserOptions): Promise<void>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presence handle — real-time awareness of who is viewing/editing a collection.
|
|
3
|
+
* encrypted ephemeral channel keyed by collection DEK via HKDF.
|
|
4
|
+
*
|
|
5
|
+
* The presence key is derived from the collection DEK so:
|
|
6
|
+
* - The adapter never learns user identities from presence payloads.
|
|
7
|
+
* - Presence rotates automatically when the DEK rotates (revoked users
|
|
8
|
+
* can no longer participate after a DEK rotation).
|
|
9
|
+
*
|
|
10
|
+
* Two transport strategies:
|
|
11
|
+
* 1. **Pub/sub** (real-time): used when the adapter implements
|
|
12
|
+
* `presencePublish` and `presenceSubscribe`.
|
|
13
|
+
* 2. **Storage-poll** (fallback): presence records are written to a
|
|
14
|
+
* reserved `_presence_<collection>` collection on the sync adapter
|
|
15
|
+
* (if available) or local adapter, and polled periodically.
|
|
16
|
+
*/
|
|
17
|
+
import type { NoydbStore, PresencePeer } from '../../kernel/types.js';
|
|
18
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
19
|
+
/** Options for constructing a PresenceHandle. @internal */
|
|
20
|
+
export interface PresenceHandleOpts {
|
|
21
|
+
/** Local adapter for storage-poll fallback. */
|
|
22
|
+
adapter: NoydbStore;
|
|
23
|
+
/** Remote (sync) adapter — preferred for broadcasting presence if available. */
|
|
24
|
+
syncAdapter?: NoydbStore;
|
|
25
|
+
/** Vault name — used as part of the channel and storage key. */
|
|
26
|
+
vault: string;
|
|
27
|
+
/** Collection name — used as HKDF `info` and channel suffix. */
|
|
28
|
+
collectionName: string;
|
|
29
|
+
/** Calling user's ID, embedded unencrypted in storage records. */
|
|
30
|
+
userId: string;
|
|
31
|
+
/** Whether encryption is active. When false, presence payloads are stored as JSON. */
|
|
32
|
+
encrypted: boolean;
|
|
33
|
+
/** Callback that resolves the collection DEK (used to derive the presence key). */
|
|
34
|
+
getDEK: (collectionName: string) => Promise<EnclaveKey>;
|
|
35
|
+
/** How long (ms) before a peer's presence is considered stale. Default: 30_000. */
|
|
36
|
+
staleMs?: number;
|
|
37
|
+
/** Poll interval (ms) for the storage-poll fallback. Default: 5_000. */
|
|
38
|
+
pollIntervalMs?: number;
|
|
39
|
+
}
|
|
40
|
+
/** Presence handle for a single collection. */
|
|
41
|
+
export declare class PresenceHandle<P> {
|
|
42
|
+
private readonly adapter;
|
|
43
|
+
private readonly syncAdapter;
|
|
44
|
+
private readonly vault;
|
|
45
|
+
private readonly collectionName;
|
|
46
|
+
private readonly userId;
|
|
47
|
+
private readonly encrypted;
|
|
48
|
+
private readonly getDEK;
|
|
49
|
+
private readonly staleMs;
|
|
50
|
+
private readonly pollIntervalMs;
|
|
51
|
+
private readonly channel;
|
|
52
|
+
private readonly storageCollection;
|
|
53
|
+
private presenceKey;
|
|
54
|
+
private subscribers;
|
|
55
|
+
private unsubscribePubSub;
|
|
56
|
+
private pollTimer;
|
|
57
|
+
private stopped;
|
|
58
|
+
constructor(opts: PresenceHandleOpts);
|
|
59
|
+
/**
|
|
60
|
+
* Announce yourself (or update your cursor/status).
|
|
61
|
+
* Encrypts `payload` with the presence key and publishes it.
|
|
62
|
+
*/
|
|
63
|
+
update(payload: P): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Subscribe to presence updates. The callback receives a filtered, decrypted
|
|
66
|
+
* list of all currently-active peers (excluding yourself, excluding stale).
|
|
67
|
+
*
|
|
68
|
+
* Returns an unsubscribe function. Also call `stop()` to release all resources.
|
|
69
|
+
*/
|
|
70
|
+
subscribe(cb: (peers: PresencePeer<P>[]) => void): () => void;
|
|
71
|
+
/** Stop all listening and clear resources. */
|
|
72
|
+
stop(): void;
|
|
73
|
+
private getPresenceKey;
|
|
74
|
+
private getPubSubAdapter;
|
|
75
|
+
private startListening;
|
|
76
|
+
private stopListening;
|
|
77
|
+
private handlePubSubMessage;
|
|
78
|
+
private decryptPresencePayload;
|
|
79
|
+
private writeStorageRecord;
|
|
80
|
+
private pollStoragePresence;
|
|
81
|
+
}
|