@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,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recovery profile persistence + dispatch.
|
|
3
|
+
*
|
|
4
|
+
* Wires the **paper** profile end-to-end through
|
|
5
|
+
* `@noy-db/on-recovery`. The other three profiles (Shamir,
|
|
6
|
+
* multi-channel, admin-mediated) ship the API surface and throw
|
|
7
|
+
* {@link RecoveryProfileNotImplementedError} during use; per-profile
|
|
8
|
+
* dispatch lands in follow-up issues.
|
|
9
|
+
*
|
|
10
|
+
* Storage layout:
|
|
11
|
+
*
|
|
12
|
+
* ```
|
|
13
|
+
* _meta/recovery-paper — JSON { entries: RecoveryCodeEntry[] } produced by `on-recovery`.
|
|
14
|
+
* _meta/recovery-shamir — reserved
|
|
15
|
+
* _meta/recovery-multi — reserved
|
|
16
|
+
* _meta/recovery-admin — reserved
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Like `_meta/policy` and `_meta/handle`, the documents are plain JSON
|
|
20
|
+
* with empty `_iv` — the recovery-code wrapping is what protects the
|
|
21
|
+
* KEK; the entries themselves are inert without the user's code.
|
|
22
|
+
*
|
|
23
|
+
* @module
|
|
24
|
+
*/
|
|
25
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
26
|
+
import type { EnclaveKey } from '../../kernel/enclave/index.js';
|
|
27
|
+
import { type WrappedDeksBlob } from './wrapped-deks.js';
|
|
28
|
+
import type { ShamirRecoveryProvider } from './shamir-recovery-provider.js';
|
|
29
|
+
/**
|
|
30
|
+
* One paper recovery code as persisted in `_meta/recovery-paper`.
|
|
31
|
+
*
|
|
32
|
+
* The hub's KEK is intentionally non-extractable (see `crypto.ts`),
|
|
33
|
+
* so the recovery entry can't AES-KW-wrap the KEK directly. Instead
|
|
34
|
+
* we wrap a serialized DEK set: the entry holds the AES-GCM
|
|
35
|
+
* ciphertext of `{ deks: { collection: rawDekBase64 } }`. Recovery
|
|
36
|
+
* deserializes the DEK set, then mints a fresh KEK from the new
|
|
37
|
+
* passphrase and rewraps the DEKs under it.
|
|
38
|
+
*
|
|
39
|
+
* This is the same pattern `@noy-db/on-pin` uses for tier-3 quick
|
|
40
|
+
* resume — the cryptographic guarantee is identical (AES-GCM with a
|
|
41
|
+
* PBKDF2-derived key), and it sidesteps the non-extractable-KEK
|
|
42
|
+
* constraint cleanly.
|
|
43
|
+
*
|
|
44
|
+
* Type-level composition: `PaperRecoveryEntry extends
|
|
45
|
+
* WrappedDeksBlob` — the three crypto fields (`salt`, `iv`,
|
|
46
|
+
* `wrappedDeks`) come from the shared primitive; `codeId` and
|
|
47
|
+
* `enrolledAt` are paper-recovery's own metadata. Wire format
|
|
48
|
+
* unchanged.
|
|
49
|
+
*/
|
|
50
|
+
export interface PaperRecoveryEntry extends WrappedDeksBlob {
|
|
51
|
+
readonly codeId: string;
|
|
52
|
+
readonly enrolledAt: string;
|
|
53
|
+
}
|
|
54
|
+
export interface PaperRecoveryDoc {
|
|
55
|
+
readonly _noydb_recovery: 1;
|
|
56
|
+
readonly profile: 'paper';
|
|
57
|
+
readonly entries: ReadonlyArray<PaperRecoveryEntry>;
|
|
58
|
+
}
|
|
59
|
+
/** Read the paper-recovery entries. Returns empty array when absent. */
|
|
60
|
+
export declare function loadPaperRecoveryEntries(store: NoydbStore, vault: string): Promise<ReadonlyArray<PaperRecoveryEntry>>;
|
|
61
|
+
/** Replace the paper-recovery entries (used after burn-on-recovery). */
|
|
62
|
+
export declare function savePaperRecoveryEntries(store: NoydbStore, vault: string, entries: ReadonlyArray<PaperRecoveryEntry>): Promise<void>;
|
|
63
|
+
/** Drop a single paper-recovery entry (burn-on-use). */
|
|
64
|
+
export declare function burnPaperRecoveryEntry(store: NoydbStore, vault: string, codeId: string): Promise<void>;
|
|
65
|
+
/** Whether at least one recovery profile has any enrolled entries. */
|
|
66
|
+
export declare function hasRecoveryEnrolled(store: NoydbStore, vault: string): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Whether at least one **strong** recovery profile is enrolled.
|
|
69
|
+
*
|
|
70
|
+
* "Strong" excludes paper-alone — under managed-passphrase mode the
|
|
71
|
+
* user has no memorized passphrase, so a stolen/lost paper sheet
|
|
72
|
+
* would be a single point of total loss. Strong profiles today:
|
|
73
|
+
*
|
|
74
|
+
* - `shamir` (k-of-n threshold; survives loss of up to n-k shares)
|
|
75
|
+
* - `multi-channel` (when shipped — follow-up slice)
|
|
76
|
+
* - `admin-mediated` (when shipped — follow-up slice)
|
|
77
|
+
*
|
|
78
|
+
* Managed mode requires this check to pass before `openVault` returns.
|
|
79
|
+
*/
|
|
80
|
+
export declare function hasStrongRecoveryEnrolled(store: NoydbStore, vault: string): Promise<boolean>;
|
|
81
|
+
/**
|
|
82
|
+
* One Shamir-recovery entry as persisted in `_meta/recovery-shamir`.
|
|
83
|
+
*
|
|
84
|
+
* Like {@link PaperRecoveryEntry}, the entry composes
|
|
85
|
+
* {@link WrappedDeksBlob} (DEKs wrapped under a fresh ephemeral
|
|
86
|
+
* recovery secret) with profile-specific metadata. Unlike paper, the
|
|
87
|
+
* "credential" was never visible to the user — it was 32 random
|
|
88
|
+
* bytes split into N Shamir shares at enrollment. The shares ARE
|
|
89
|
+
* the credential; the user holds them, the hub never sees them
|
|
90
|
+
* again after `enrollRecovery` returns.
|
|
91
|
+
*
|
|
92
|
+
* The recovery secret is base64-encoded and
|
|
93
|
+
* passed as the `credential` arg to
|
|
94
|
+
* {@link mintWrappedDeksBlob} / {@link unwrapDeksFromBlob}. The
|
|
95
|
+
* PBKDF2 round over high-entropy input is harmless overhead — it
|
|
96
|
+
* keeps the shared primitive unchanged while letting Shamir reuse
|
|
97
|
+
* the same wrapping pipeline as paper.
|
|
98
|
+
*/
|
|
99
|
+
export interface ShamirRecoveryEntry extends WrappedDeksBlob {
|
|
100
|
+
/** Stable id for this entry. Allows multiple Shamir splits to coexist. */
|
|
101
|
+
readonly entryId: string;
|
|
102
|
+
/** Threshold — minimum shares to reconstruct. */
|
|
103
|
+
readonly k: number;
|
|
104
|
+
/** Total shares minted at enrollment. */
|
|
105
|
+
readonly n: number;
|
|
106
|
+
/** x-coordinates of the n minted shares. Informational. Omitted as of 0.2
|
|
107
|
+
* (string-level provider doesn't expose share x-coords); kept optional so
|
|
108
|
+
* pre-0.2 entries still read. */
|
|
109
|
+
readonly xCoords?: ReadonlyArray<number>;
|
|
110
|
+
/** ISO timestamp. */
|
|
111
|
+
readonly enrolledAt: string;
|
|
112
|
+
/** Optional caller-supplied label (e.g., "2-of-3 board escrow"). */
|
|
113
|
+
readonly label?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface ShamirRecoveryDoc {
|
|
116
|
+
readonly _noydb_recovery: 1;
|
|
117
|
+
readonly profile: 'shamir';
|
|
118
|
+
readonly entries: ReadonlyArray<ShamirRecoveryEntry>;
|
|
119
|
+
}
|
|
120
|
+
/** Read the Shamir-recovery entries. Returns empty array when absent. */
|
|
121
|
+
export declare function loadShamirRecoveryEntries(store: NoydbStore, vault: string): Promise<ReadonlyArray<ShamirRecoveryEntry>>;
|
|
122
|
+
/** Replace the Shamir-recovery entries (used by enrollment and rotation). */
|
|
123
|
+
export declare function saveShamirRecoveryEntries(store: NoydbStore, vault: string, entries: ReadonlyArray<ShamirRecoveryEntry>): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Mint a fresh Shamir recovery entry from a DEK set.
|
|
126
|
+
*
|
|
127
|
+
* 1. Generates a 32-byte recovery secret.
|
|
128
|
+
* 2. Wraps the DEK set under that secret via
|
|
129
|
+
* {@link mintWrappedDeksBlob} (the recovery secret is base64-
|
|
130
|
+
* encoded as the credential string — PBKDF2 over high-entropy
|
|
131
|
+
* input is harmless overhead).
|
|
132
|
+
* 3. Splits the recovery secret via Shamir into `n` shares with
|
|
133
|
+
* threshold `k`.
|
|
134
|
+
* 4. Zeros the in-memory recovery secret after wrapping + splitting.
|
|
135
|
+
*
|
|
136
|
+
* Returns:
|
|
137
|
+
* - `entry` — the {@link ShamirRecoveryEntry} to persist.
|
|
138
|
+
* - `shareStrings` — the `n` Base32-encoded share strings to
|
|
139
|
+
* return to the caller. The HUB MUST NOT PERSIST THESE; once
|
|
140
|
+
* returned they are the user's responsibility.
|
|
141
|
+
*
|
|
142
|
+
* @param deks - DEK set to wrap.
|
|
143
|
+
* @param entryId - Stable id for this entry (caller-supplied or
|
|
144
|
+
* hub-generated).
|
|
145
|
+
* @param k - Threshold (>= 2).
|
|
146
|
+
* @param n - Total shares (k <= n <= 255).
|
|
147
|
+
* @param label - Optional caller label.
|
|
148
|
+
*/
|
|
149
|
+
export declare function mintShamirRecoveryEntry(provider: ShamirRecoveryProvider, deks: Map<string, EnclaveKey>, entryId: string, k: number, n: number, label?: string): Promise<{
|
|
150
|
+
entry: ShamirRecoveryEntry;
|
|
151
|
+
shareStrings: string[];
|
|
152
|
+
}>;
|
|
153
|
+
/**
|
|
154
|
+
* Decrypt a Shamir recovery entry to recover the raw DEK set.
|
|
155
|
+
*
|
|
156
|
+
* Combines K or more `shares`, reconstructs the recovery secret,
|
|
157
|
+
* unwraps the DEKs via {@link unwrapDeksFromBlob}.
|
|
158
|
+
*
|
|
159
|
+
* Throws (AES-GCM auth-tag mismatch) when the shares don't combine
|
|
160
|
+
* to the secret originally used to mint the entry — typically
|
|
161
|
+
* because they came from a different enrollment or were tampered
|
|
162
|
+
* with. Callers iterating multiple entries should catch.
|
|
163
|
+
*/
|
|
164
|
+
export declare function unwrapDeksFromShamirEntry(provider: ShamirRecoveryProvider, entry: ShamirRecoveryEntry, shareStrings: readonly string[]): Promise<Map<string, EnclaveKey>>;
|
|
165
|
+
/**
|
|
166
|
+
* Generate one paper-recovery entry from an unlocked DEK set.
|
|
167
|
+
*
|
|
168
|
+
* Returns the serializable entry (persisted via
|
|
169
|
+
* {@link savePaperRecoveryEntries}). The recovery flow unwraps the
|
|
170
|
+
* DEK set, then mints a fresh KEK from the user's new passphrase.
|
|
171
|
+
*
|
|
172
|
+
* Thin wrapper over {@link mintWrappedDeksBlob} — the crypto
|
|
173
|
+
* lives in the shared primitive; this function just adds paper-
|
|
174
|
+
* recovery's own metadata (`codeId`, `enrolledAt`).
|
|
175
|
+
*
|
|
176
|
+
* @param deks Map of collection-name → DEK (extractable).
|
|
177
|
+
* @param code The plaintext recovery code (caller-supplied;
|
|
178
|
+
* pair this with `@noy-db/on-recovery`'s code
|
|
179
|
+
* generator/parser if available).
|
|
180
|
+
* @param codeId Stable id used by `burnPaperRecoveryEntry`.
|
|
181
|
+
*/
|
|
182
|
+
export declare function mintPaperRecoveryEntry(deks: Map<string, EnclaveKey>, code: string, codeId: string): Promise<PaperRecoveryEntry>;
|
|
183
|
+
/**
|
|
184
|
+
* Decrypt a recovery entry to recover the raw DEK set. Used by the
|
|
185
|
+
* `recoverPassphrase` flow after the user's code has been parsed.
|
|
186
|
+
*
|
|
187
|
+
* Thin wrapper over {@link unwrapDeksFromBlob}.
|
|
188
|
+
*
|
|
189
|
+
* @throws when the code does not match the entry (AES-GCM auth tag fail).
|
|
190
|
+
*/
|
|
191
|
+
export declare function unwrapDeksFromPaperEntry(entry: PaperRecoveryEntry, code: string): Promise<Map<string, EnclaveKey>>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret-bearing reserved collections — the `_`-prefixed reserved collections
|
|
3
|
+
* whose record CONTENTS are directly-usable secrets (transport OAuth tokens,
|
|
4
|
+
* connection strings, API keys), as opposed to the *operational* reserved
|
|
5
|
+
* collections (`_ledger`, `_history`, `_sync`, …) whose contents are metadata
|
|
6
|
+
* (collection names, record ids, ciphertext hashes).
|
|
7
|
+
*
|
|
8
|
+
* This distinction matters at two trust-boundary seams:
|
|
9
|
+
*
|
|
10
|
+
* 1. `vault.collection()` — a secret-bearing reserved name must never be
|
|
11
|
+
* reachable through the generic public collection handle. It is served
|
|
12
|
+
* ONLY by its dedicated, role-gated API (e.g. `_sync_credentials` →
|
|
13
|
+
* `getCredential`/`putCredential`, which enforce owner/admin access).
|
|
14
|
+
*
|
|
15
|
+
* 2. `grant()` DEK propagation — a sub-admin grantee (operator, viewer,
|
|
16
|
+
* client, custodian) must NOT receive a secret-bearing collection's DEK.
|
|
17
|
+
* Operational reserved DEKs still propagate to every role (grantees must
|
|
18
|
+
* write ledger/history entries on every mutation), but handing a
|
|
19
|
+
* sub-admin the `_sync_credentials` DEK would let them decrypt the firm's
|
|
20
|
+
* transport secrets — a plaintext leak, not a metadata leak.
|
|
21
|
+
*
|
|
22
|
+
* Kept dependency-free so both the kernel (`vault.ts`) and the team layer
|
|
23
|
+
* (`keyring.ts`) can import it without an import cycle.
|
|
24
|
+
*/
|
|
25
|
+
/** Reserved collection holding per-adapter sync transport secrets. */
|
|
26
|
+
export declare const SYNC_CREDENTIALS_COLLECTION = "_sync_credentials";
|
|
27
|
+
/**
|
|
28
|
+
* Reserved (pre-allocated) name for the future credential broker (#479).
|
|
29
|
+
* Not yet implemented — reserved now so that neither the public collection
|
|
30
|
+
* handle nor grant propagation can ever expose it before its dedicated,
|
|
31
|
+
* role-gated API lands.
|
|
32
|
+
*/
|
|
33
|
+
export declare const BROKER_COLLECTION = "_broker";
|
|
34
|
+
/**
|
|
35
|
+
* The set of reserved collection names whose record contents are
|
|
36
|
+
* directly-usable secrets. Membership here means: never served via
|
|
37
|
+
* `vault.collection()`, never propagated to sub-admin grantees.
|
|
38
|
+
*/
|
|
39
|
+
export declare const SECRET_BEARING_RESERVED_COLLECTIONS: ReadonlySet<string>;
|
|
40
|
+
/** True when `name` is a secret-bearing reserved collection. */
|
|
41
|
+
export declare function isSecretBearingReservedCollection(name: string): boolean;
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tier-1 change flows — `rotatePassphrase` (user remembers old) and
|
|
3
|
+
* `recoverPassphrase` (user supplies a recovery proof).
|
|
4
|
+
*
|
|
5
|
+
* The two flows share the post-verification half — fresh salt, fresh
|
|
6
|
+
* KEK, rewrap every DEK — and differ only in how they re-derive the
|
|
7
|
+
* old KEK:
|
|
8
|
+
*
|
|
9
|
+
* - **Rotate**: derive from the supplied `oldPassphrase`.
|
|
10
|
+
* - **Recover (paper)**: unwrap from a `RecoveryCodeEntry` using a
|
|
11
|
+
* user-supplied recovery code. The entry is burned on success.
|
|
12
|
+
*
|
|
13
|
+
* The non-paper recovery profiles (Shamir, multi-channel,
|
|
14
|
+
* admin-mediated) are not yet wired — calling them throws
|
|
15
|
+
* {@link RecoveryProfileNotImplementedError} with a tracking link.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
20
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
21
|
+
import { type PaperRecoveryEntry } from './recovery.js';
|
|
22
|
+
import type { ShamirRecoveryProvider } from './shamir-recovery-provider.js';
|
|
23
|
+
import { type PassphrasePolicy } from '../../kernel/validation.js';
|
|
24
|
+
import type { UnlockedKeyring } from './keyring.js';
|
|
25
|
+
import type { KeyringAuthenticator } from '../../kernel/types.js';
|
|
26
|
+
import type { EnrollAuthenticatorOptions } from './authenticators.js';
|
|
27
|
+
/**
|
|
28
|
+
* Context handed to a {@link SlotRewrapCeremony} when `rotatePassphrase`
|
|
29
|
+
* preserves a tier-2 slot. The ceremony's job is to re-derive its
|
|
30
|
+
* method-specific wrapping material (PRF assertion, PBKDF2 of the
|
|
31
|
+
* password, etc.) and wrap the freshly rewrapped DEK set under
|
|
32
|
+
* the new wrapping key.
|
|
33
|
+
*
|
|
34
|
+
* Two surfaces are exposed:
|
|
35
|
+
*
|
|
36
|
+
* - `newDeks` — the rewrapped (extractable) DEK set the slot will
|
|
37
|
+
* wrap. This is what `mintPaperRecoveryEntry` / `enrollPassword-
|
|
38
|
+
* Authenticator` / `wrapKeyringSummary` (in `@noy-db/on-webauthn`)
|
|
39
|
+
* all consume; effectively the canonical input for every
|
|
40
|
+
* post-Path C tier-2 ceremony.
|
|
41
|
+
*
|
|
42
|
+
* - `newKek` — the freshly-derived KEK (extractable for the
|
|
43
|
+
* ceremony scope only). Only relevant for forward-compatibility
|
|
44
|
+
* with a hypothetical future on-* package that wants to wrap the
|
|
45
|
+
* KEK itself under a method-derived key. None of the shipped
|
|
46
|
+
* on-* packages need this; they all operate on `newDeks`.
|
|
47
|
+
*
|
|
48
|
+
* The ceremony MUST preserve `oldSlot.id` and `oldSlot.method` in the
|
|
49
|
+
* returned `EnrollAuthenticatorOptions`. Hub validates these — a
|
|
50
|
+
* mismatch throws `ValidationError` (prevents slot-type swap mid-
|
|
51
|
+
* rotation, e.g. converting a webauthn slot to a password slot under
|
|
52
|
+
* cover of preservation).
|
|
53
|
+
*/
|
|
54
|
+
export interface SlotRewrapContext {
|
|
55
|
+
readonly newKek: EnclaveKey;
|
|
56
|
+
readonly newDeks: Map<string, EnclaveKey>;
|
|
57
|
+
readonly oldSlot: KeyringAuthenticator;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Callback that re-enrolls one tier-2 slot during `rotatePassphrase`.
|
|
61
|
+
* Returns the new slot's `EnrollAuthenticatorOptions` — same shape
|
|
62
|
+
* the consumer would pass to `db.enrollAuthenticator` for a fresh
|
|
63
|
+
* enrollment. Hub persists the result atomically with the rotation.
|
|
64
|
+
*/
|
|
65
|
+
export type SlotRewrapCeremony = (ctx: SlotRewrapContext) => Promise<EnrollAuthenticatorOptions>;
|
|
66
|
+
/** Caller payload for {@link rotatePassphrase}. */
|
|
67
|
+
export interface RotatePassphraseInput {
|
|
68
|
+
readonly oldPassphrase: string;
|
|
69
|
+
readonly newPassphrase: string;
|
|
70
|
+
readonly passphrasePolicy?: PassphrasePolicy;
|
|
71
|
+
readonly allowWeakPassphrase?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Map of slot id → re-enrolment ceremony. Slots whose id appears
|
|
74
|
+
* here are PRESERVED across rotation (the ceremony re-derives the
|
|
75
|
+
* method-specific wrapping under the new keyring); slots whose id
|
|
76
|
+
* is absent are DROPPED (the pre-slot-ceremony behavior).
|
|
77
|
+
*
|
|
78
|
+
* Without this map, `rotatePassphrase` wipes every tier-2 slot. Consumers building a
|
|
79
|
+
* "rotate without losing my biometric" flow supply ceremonies for
|
|
80
|
+
* each slot they want to keep.
|
|
81
|
+
*
|
|
82
|
+
* If a ceremony throws, the entire rotation throws — no partial
|
|
83
|
+
* state. Callers wrap individual ceremonies in try/catch + return
|
|
84
|
+
* a sentinel if they want graceful degradation per slot.
|
|
85
|
+
*
|
|
86
|
+
* Added when slot-ceremony rewrapping landed.
|
|
87
|
+
*/
|
|
88
|
+
readonly slotCeremonies?: {
|
|
89
|
+
readonly [slotId: string]: SlotRewrapCeremony;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Re-derive the user's KEK from `oldPassphrase`, rewrap every DEK
|
|
94
|
+
* under a freshly-derived KEK from `newPassphrase`, and persist.
|
|
95
|
+
*
|
|
96
|
+
* Tier-2 authenticator slots are dropped UNLESS the caller supplies
|
|
97
|
+
* a `slotCeremonies` map — each ceremony re-derives its
|
|
98
|
+
* method-specific wrapping under the new keyring, and hub persists
|
|
99
|
+
* the rewrapped slots atomically with the rotation. Slots whose id
|
|
100
|
+
* isn't in the map are still dropped.
|
|
101
|
+
*
|
|
102
|
+
* @throws `InvalidKeyError` if `oldPassphrase` does not unwrap the keyring.
|
|
103
|
+
* @throws `WeakPassphraseError` if `newPassphrase` fails the strength rule.
|
|
104
|
+
* @throws `ValidationError` if a ceremony's result mismatches the
|
|
105
|
+
* slot's id or method (anti-slot-swap guard).
|
|
106
|
+
*/
|
|
107
|
+
export declare function rotatePassphrase(store: NoydbStore, vault: string, userId: string, input: RotatePassphraseInput): Promise<UnlockedKeyring>;
|
|
108
|
+
/**
|
|
109
|
+
* Caller payload for {@link recoverPassphrase}.
|
|
110
|
+
*
|
|
111
|
+
* `paper` and `shamir` are wired end-to-end.
|
|
112
|
+
* The remaining two profiles (`multi-channel`, `admin-mediated`)
|
|
113
|
+
* stay outside the union and throw
|
|
114
|
+
* {@link RecoveryProfileNotImplementedError} at the runtime guard
|
|
115
|
+
* when bypassed via `as unknown as RecoveryProof`.
|
|
116
|
+
*/
|
|
117
|
+
export type RecoveryProof = {
|
|
118
|
+
readonly profile: 'paper';
|
|
119
|
+
readonly payload: {
|
|
120
|
+
readonly code: string;
|
|
121
|
+
};
|
|
122
|
+
} | {
|
|
123
|
+
readonly profile: 'shamir';
|
|
124
|
+
readonly payload: {
|
|
125
|
+
/** Optional disambiguator when multiple Shamir entries are enrolled.
|
|
126
|
+
* When omitted, hub tries each entry until one combines. */
|
|
127
|
+
readonly entryId?: string;
|
|
128
|
+
/** K or more opaque share strings, as returned by `ShamirRecoveryProvider.splitToShares`. */
|
|
129
|
+
readonly shares: ReadonlyArray<string>;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
export interface RecoverPassphraseInput {
|
|
133
|
+
readonly newPassphrase: string;
|
|
134
|
+
readonly recoveryProof: RecoveryProof;
|
|
135
|
+
readonly passphrasePolicy?: PassphrasePolicy;
|
|
136
|
+
readonly allowWeakPassphrase?: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* After a successful paper-recovery, replace ALL remaining recovery
|
|
139
|
+
* entries with freshly-minted ones. Defaults to `true` (defensive).
|
|
140
|
+
*
|
|
141
|
+
* Rationale: the user just demonstrated they had access
|
|
142
|
+
* to AT LEAST one code. The remaining codes from the same printed
|
|
143
|
+
* sheet may also be compromised — photographed, leaked via a
|
|
144
|
+
* screen-share slip, or in the hands of whoever stole the sheet.
|
|
145
|
+
* Auto-rotation closes the window without requiring consumer action.
|
|
146
|
+
*
|
|
147
|
+
* Set to `false` to preserve the original behavior (only the matched
|
|
148
|
+
* code is burned; the rest stay valid).
|
|
149
|
+
*
|
|
150
|
+
* Hub-side orchestration is non-atomic with the recovery itself:
|
|
151
|
+
* if the rotation step fails after a successful burn, the user
|
|
152
|
+
* falls back to the pre-rotation state (remaining codes still
|
|
153
|
+
* valid). Strictly safer than the previous default — a failed
|
|
154
|
+
* rotation degrades gracefully rather than leaving the vault
|
|
155
|
+
* locked or codes dual-existing.
|
|
156
|
+
*/
|
|
157
|
+
readonly rotateRemainingCodes?: boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Number of fresh codes to mint when `rotateRemainingCodes` is on.
|
|
160
|
+
* Defaults to the count of remaining entries POST-burn (e.g. if
|
|
161
|
+
* the user enrolled 8 originally and just consumed 1, defaults to
|
|
162
|
+
* 7). Pass an explicit number to mint a different count — useful
|
|
163
|
+
* when the consumer wants to refresh to a target N regardless of
|
|
164
|
+
* how many were left.
|
|
165
|
+
*/
|
|
166
|
+
readonly newCodeCount?: number;
|
|
167
|
+
/**
|
|
168
|
+
* Override the default raw-code generator. The default is hub's
|
|
169
|
+
* {@link generateULID} — uppercase Crockford-Base32, 26 chars,
|
|
170
|
+
* passes through `normalizePaperCode` untouched.
|
|
171
|
+
*
|
|
172
|
+
* Pass `() => generateRawCode()` from `@noy-db/on-recovery` when
|
|
173
|
+
* the consumer prefers the Base32 + checksum format with hyphenated
|
|
174
|
+
* display. The `mintPaperRecoveryEntry` helper accepts any string —
|
|
175
|
+
* the generator just needs to produce a high-entropy unique value.
|
|
176
|
+
*/
|
|
177
|
+
readonly codeGenerator?: () => string;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Return shape of `db.recoverPassphrase`. `newCodes` is populated when
|
|
181
|
+
* `rotateRemainingCodes` was enabled and at least one entry was
|
|
182
|
+
* rotated; an empty array means no rotation happened (rotation
|
|
183
|
+
* disabled, or no remaining codes after burn). Show the codes to the
|
|
184
|
+
* user once — they are the canonical credential for future recovery
|
|
185
|
+
* and CANNOT be retrieved again.
|
|
186
|
+
*/
|
|
187
|
+
export interface RecoverPassphraseResult {
|
|
188
|
+
readonly newCodes: readonly string[];
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Input for {@link Noydb.rotateRecovery} — deliberate
|
|
192
|
+
* recovery-credential regeneration when the user knows their
|
|
193
|
+
* passphrase but wants a fresh sheet (paper) or fresh shares
|
|
194
|
+
* (shamir). Symmetric to {@link RotatePassphraseInput}.
|
|
195
|
+
*/
|
|
196
|
+
export type RotateRecoveryOptions = {
|
|
197
|
+
readonly profile: 'paper';
|
|
198
|
+
/** How many fresh codes to mint. Default: existing sheet size. */
|
|
199
|
+
readonly count?: number;
|
|
200
|
+
/** Optional code generator — see {@link RecoverPassphraseInput.codeGenerator}. */
|
|
201
|
+
readonly codeGenerator?: () => string;
|
|
202
|
+
} | {
|
|
203
|
+
readonly profile: 'shamir';
|
|
204
|
+
/** New threshold. */
|
|
205
|
+
readonly k: number;
|
|
206
|
+
/** New total share count. */
|
|
207
|
+
readonly n: number;
|
|
208
|
+
/** Disambiguator when multiple Shamir entries exist; required if there are 2+. */
|
|
209
|
+
readonly entryId?: string;
|
|
210
|
+
/** Optional updated label. */
|
|
211
|
+
readonly label?: string;
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* Result of {@link Noydb.rotateRecovery}. Shape varies by profile:
|
|
215
|
+
*
|
|
216
|
+
* - `paper` → `{ newCodes: string[] }` (and `entryId === 'paper-batch'`)
|
|
217
|
+
* - `shamir` → `{ newShares: string[], entryId }`
|
|
218
|
+
*
|
|
219
|
+
* `newCodes` is populated for paper rotations; `newShares` for
|
|
220
|
+
* Shamir rotations. Both are show-once — the hub does not
|
|
221
|
+
* retain them.
|
|
222
|
+
*/
|
|
223
|
+
export interface RotateRecoveryResult {
|
|
224
|
+
readonly newCodes?: readonly string[];
|
|
225
|
+
readonly newShares?: readonly string[];
|
|
226
|
+
readonly entryId?: string;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Result of {@link Noydb.enrollRecovery}. Shape varies by profile:
|
|
230
|
+
*
|
|
231
|
+
* - `paper` → `{ entryId: 'paper-batch' }` (caller minted the
|
|
232
|
+
* entries; this is a sentinel since paper enrollments are batch-shaped).
|
|
233
|
+
* - `shamir` → `{ entryId, shares: string[] }` — shares are
|
|
234
|
+
* show-once; the hub does not retain them.
|
|
235
|
+
*/
|
|
236
|
+
export interface EnrollRecoveryResult {
|
|
237
|
+
readonly entryId: string;
|
|
238
|
+
readonly shares?: readonly string[];
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Input shape for {@link Noydb.enrollRecovery} and
|
|
242
|
+
* {@link Noydb.openVaultAndEnrollRecovery}. Discriminated
|
|
243
|
+
* union over recovery profiles.
|
|
244
|
+
*
|
|
245
|
+
* - `paper`: caller pre-mints entries (typically via
|
|
246
|
+
* `mintPaperRecoveryEntry` or `@noy-db/on-recovery`'s
|
|
247
|
+
* `generateRecoveryCodeSet`) and passes them in. The hub stores
|
|
248
|
+
* them and surfaces an opaque batch id.
|
|
249
|
+
* - `shamir`: hub mints the recovery secret + the shares at
|
|
250
|
+
* enrollment time. The shares are returned in
|
|
251
|
+
* {@link EnrollRecoveryResult.shares} (show-once); the hub never
|
|
252
|
+
* retains them.
|
|
253
|
+
*
|
|
254
|
+
* Multi-channel and admin-mediated will be added when the respective
|
|
255
|
+
* dispatch slices ship.
|
|
256
|
+
*/
|
|
257
|
+
export type RecoveryEnrollmentInput = {
|
|
258
|
+
readonly profile: 'paper';
|
|
259
|
+
readonly entries: ReadonlyArray<PaperRecoveryEntry>;
|
|
260
|
+
} | {
|
|
261
|
+
readonly profile: 'shamir';
|
|
262
|
+
readonly k: number;
|
|
263
|
+
readonly n: number;
|
|
264
|
+
readonly label?: string;
|
|
265
|
+
readonly entryId?: string;
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Reset the user's passphrase using a recovery proof.
|
|
269
|
+
* Supports `'paper'` and `'shamir'` profiles. The other profiles throw
|
|
270
|
+
* {@link RecoveryProfileNotImplementedError}.
|
|
271
|
+
*
|
|
272
|
+
* On success, the used recovery entry is burned (deleted from the
|
|
273
|
+
* stored set).
|
|
274
|
+
*/
|
|
275
|
+
export declare function recoverPassphrase(provider: ShamirRecoveryProvider | undefined, store: NoydbStore, vault: string, userId: string, input: RecoverPassphraseInput): Promise<UnlockedKeyring>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String-level Shamir provider injected into hub for `profile: 'shamir'`
|
|
3
|
+
* recovery. Keeps hub free of any `@noy-db/on-shamir` import — hub never
|
|
4
|
+
* sees `RawShare` or the share codecs. Implemented by
|
|
5
|
+
* `shamirRecoveryProvider()` from `@noy-db/on-shamir`.
|
|
6
|
+
*/
|
|
7
|
+
export interface ShamirRecoveryProvider {
|
|
8
|
+
/** Split `secret` into `n` base32 share strings; any `k` recombine it. */
|
|
9
|
+
splitToShares(secret: Uint8Array, k: number, n: number): string[];
|
|
10
|
+
/**
|
|
11
|
+
* Recombine `k`+ share strings into the secret. MUST throw on malformed,
|
|
12
|
+
* truncated, insufficient, or mismatched shares.
|
|
13
|
+
*/
|
|
14
|
+
combineShares(shares: readonly string[]): Uint8Array;
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-side shim for the team strategy seam (#267). The contract itself
|
|
3
|
+
* lives on the `/with` port (`src/port/with/team-strategy.ts`) so the
|
|
4
|
+
* kernel spine can hold the `NO_TEAM` floor default without a
|
|
5
|
+
* spine→service static import (the port-layering rule). This file keeps
|
|
6
|
+
* the conventional `<service>/{strategy,active,index}.ts` layout.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export { NO_TEAM, type TeamStrategy } from '../../port/with/team-strategy.js';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active sync strategy — `withSync()` returns the real implementation
|
|
3
|
+
* that wires the `SyncEngine`, `SyncTransaction`, and `PresenceHandle`
|
|
4
|
+
* constructors into the Noydb / Vault / Collection hot paths.
|
|
5
|
+
*
|
|
6
|
+
* Consumers opt in by:
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createNoydb } from '@noy-db/hub'
|
|
10
|
+
* import { withSync } from '@noy-db/hub/sync'
|
|
11
|
+
*
|
|
12
|
+
* const db = await createNoydb({
|
|
13
|
+
* store: localStore,
|
|
14
|
+
* sync: remoteStore,
|
|
15
|
+
* user: ...,
|
|
16
|
+
* syncStrategy: withSync(),
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* The factory delegates to the existing `sync.ts`,
|
|
21
|
+
* `sync-transaction.ts`, and `presence.ts` modules. Splitting the
|
|
22
|
+
* import chain through this file is what lets tsup tree-shake the
|
|
23
|
+
* ~856 LOC of replication + presence machinery out of the default
|
|
24
|
+
* bundle when no `withSync()` import is present.
|
|
25
|
+
*
|
|
26
|
+
* Keyring + grant/revoke/magic-link/delegation stay in the always-on
|
|
27
|
+
* core (or tree-shake via direct named imports) — those are required
|
|
28
|
+
* for any multi-user vault, even purely local ones.
|
|
29
|
+
*
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
import type { SyncStrategy } from './sync-strategy.js';
|
|
33
|
+
export declare function withSync(): SyncStrategy;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* _sync_credentials reserved collection —
|
|
3
|
+
*
|
|
4
|
+
* Stores per-adapter OAuth tokens (and any other long-lived sync secrets) as
|
|
5
|
+
* encrypted records inside the vault itself. Tokens are wrapped with the
|
|
6
|
+
* compartment's own DEK, live on disk as ciphertext like any other record, and
|
|
7
|
+
* are accessed only through the dedicated API in this module — never via
|
|
8
|
+
* `vault.collection('_sync_credentials')`.
|
|
9
|
+
*
|
|
10
|
+
* Design decisions
|
|
11
|
+
* ────────────────
|
|
12
|
+
*
|
|
13
|
+
* **Why a reserved collection, not a separate store?**
|
|
14
|
+
* The compartment's existing encryption stack (AES-256-GCM + collection DEK)
|
|
15
|
+
* is exactly the right primitive for protecting OAuth tokens at rest. Using a
|
|
16
|
+
* separate store would require a new encryption surface, new adapter calls,
|
|
17
|
+
* and a new backup/restore path — all of which already exist for collections.
|
|
18
|
+
*
|
|
19
|
+
* **Why not exposed as a regular collection?**
|
|
20
|
+
* The same reason `_keyring` and `_ledger` aren't: they have invariants that
|
|
21
|
+
* must be enforced (naming scheme, no cross-user leakage, no schema
|
|
22
|
+
* validation, no history/ledger writes for privacy). Routing through a
|
|
23
|
+
* dedicated API enforces those invariants.
|
|
24
|
+
*
|
|
25
|
+
* **Token lifecycle:**
|
|
26
|
+
* - `putCredential(vault, adapterId, token)` — store or overwrite
|
|
27
|
+
* - `getCredential(vault, adapterId)` — load and decrypt
|
|
28
|
+
* - `deleteCredential(vault, adapterId)` — remove
|
|
29
|
+
* - `listCredentials(vault)` — enumerate adapter IDs (not tokens)
|
|
30
|
+
*
|
|
31
|
+
* The `adapterId` is the record ID within the `_sync_credentials` collection.
|
|
32
|
+
* It should be a stable, human-readable identifier for the adapter instance
|
|
33
|
+
* (e.g. `'google-drive'`, `'dropbox'`, `'s3-prod'`).
|
|
34
|
+
*
|
|
35
|
+
* **ACL:** only `owner` and `admin` roles can read/write sync credentials.
|
|
36
|
+
* Operators, viewers, and clients cannot call this API. The check is made
|
|
37
|
+
* against the caller's keyring role at call time.
|
|
38
|
+
*/
|
|
39
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
40
|
+
import type { UnlockedKeyring } from './keyring.js';
|
|
41
|
+
/**
|
|
42
|
+
* The reserved collection name. Never collides with user collections.
|
|
43
|
+
* Canonical definition lives in `reserved-secret-collections.ts` (shared with
|
|
44
|
+
* the `vault.collection()` guard and grant DEK-propagation); re-exported here
|
|
45
|
+
* for existing consumers.
|
|
46
|
+
*/
|
|
47
|
+
export { SYNC_CREDENTIALS_COLLECTION } from './reserved-secret-collections.js';
|
|
48
|
+
/**
|
|
49
|
+
* An OAuth/auth token stored in `_sync_credentials`.
|
|
50
|
+
*
|
|
51
|
+
* Fields mirror the OAuth2 token response shape. `customData` is an escape
|
|
52
|
+
* hatch for adapter-specific secrets (API keys, connection strings, etc.)
|
|
53
|
+
* that don't fit the OAuth2 shape.
|
|
54
|
+
*/
|
|
55
|
+
export interface SyncCredential {
|
|
56
|
+
/** Stable identifier for the adapter instance (e.g. 'google-drive'). */
|
|
57
|
+
readonly adapterId: string;
|
|
58
|
+
/** OAuth token type, usually 'Bearer'. */
|
|
59
|
+
readonly tokenType: string;
|
|
60
|
+
/** The access token. Expires at `expiresAt` if set. */
|
|
61
|
+
readonly accessToken: string;
|
|
62
|
+
/** Long-lived refresh token for renewing the access token. */
|
|
63
|
+
readonly refreshToken?: string;
|
|
64
|
+
/** ISO timestamp when `accessToken` expires. Absent means "no expiry". */
|
|
65
|
+
readonly expiresAt?: string;
|
|
66
|
+
/** Space-separated OAuth scopes. */
|
|
67
|
+
readonly scopes?: string;
|
|
68
|
+
/** Adapter-specific opaque data (API keys, endpoints, etc.). */
|
|
69
|
+
readonly customData?: Record<string, string>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Store or overwrite a sync credential for the given adapter.
|
|
73
|
+
*
|
|
74
|
+
* The credential is encrypted with the `_sync_credentials` collection DEK
|
|
75
|
+
* (auto-generated on first use). The record ID is the `adapterId`.
|
|
76
|
+
*
|
|
77
|
+
* Requires owner or admin role.
|
|
78
|
+
*/
|
|
79
|
+
export declare function putCredential(adapter: NoydbStore, vault: string, keyring: UnlockedKeyring, credential: SyncCredential): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Load and decrypt a sync credential for the given adapter ID.
|
|
82
|
+
*
|
|
83
|
+
* Returns `null` if no credential exists for this adapter.
|
|
84
|
+
* Requires owner or admin role.
|
|
85
|
+
*/
|
|
86
|
+
export declare function getCredential(adapter: NoydbStore, vault: string, keyring: UnlockedKeyring, adapterId: string): Promise<SyncCredential | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Delete a sync credential by adapter ID.
|
|
89
|
+
*
|
|
90
|
+
* No-op if the credential doesn't exist. Requires owner or admin role.
|
|
91
|
+
*/
|
|
92
|
+
export declare function deleteCredential(adapter: NoydbStore, vault: string, keyring: UnlockedKeyring, adapterId: string): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* List all adapter IDs that have stored credentials.
|
|
95
|
+
*
|
|
96
|
+
* Returns only the IDs, never the credential payloads. Useful for
|
|
97
|
+
* displaying "connected adapters" in UI without decrypting tokens.
|
|
98
|
+
* Requires owner or admin role.
|
|
99
|
+
*/
|
|
100
|
+
export declare function listCredentials(adapter: NoydbStore, vault: string, keyring: UnlockedKeyring): Promise<string[]>;
|
|
101
|
+
/**
|
|
102
|
+
* Check whether a credential exists and whether its access token has expired.
|
|
103
|
+
*
|
|
104
|
+
* Returns `{ exists: false }` if no credential is stored, or
|
|
105
|
+
* `{ exists: true, expired: boolean }` based on the `expiresAt` field.
|
|
106
|
+
* Requires owner or admin role.
|
|
107
|
+
*/
|
|
108
|
+
export declare function credentialStatus(adapter: NoydbStore, vault: string, keyring: UnlockedKeyring, adapterId: string): Promise<{
|
|
109
|
+
exists: false;
|
|
110
|
+
} | {
|
|
111
|
+
exists: true;
|
|
112
|
+
expired: boolean;
|
|
113
|
+
}>;
|