@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,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@noy-db/hub/session` — subpath export for session tokens + policies.
|
|
3
|
+
*
|
|
4
|
+
* Apps that use single-shot unlock (one `createNoydb()` call per user
|
|
5
|
+
* action) can exclude this subpath — ~2 KB saved. Long-running apps
|
|
6
|
+
* with idle timeout, re-auth policies, magic-link viewer sessions,
|
|
7
|
+
* or dev-mode unlock opt in here.
|
|
8
|
+
*
|
|
9
|
+
* The main `@noy-db/hub` entry still re-exports every symbol for
|
|
10
|
+
* backward compatibility through.x.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: magic-link helpers are expected to extract into a new
|
|
13
|
+
* `@noy-db/on-magic-link` package. Until that lands,
|
|
14
|
+
* they live here alongside session primitives.
|
|
15
|
+
*/
|
|
16
|
+
export { createSession, resolveSession, revokeSession, revokeAllSessions, isSessionAlive, activeSessionCount, } from './session.js';
|
|
17
|
+
export type { SessionToken, CreateSessionResult, CreateSessionOptions, } from './session.js';
|
|
18
|
+
export { PolicyEnforcer, createEnforcer, validateSessionPolicy } from './session-policy.js';
|
|
19
|
+
export { enableDevUnlock, loadDevUnlock, clearDevUnlock, isDevUnlockActive, } from './dev-unlock.js';
|
|
20
|
+
export type { DevUnlockOptions } from './dev-unlock.js';
|
|
21
|
+
export { withSession } from './active.js';
|
|
22
|
+
export type { SessionStrategy } from './strategy.js';
|
|
23
|
+
export { SessionExpiredError, SessionNotFoundError, SessionPolicyError, } from '../../kernel/errors.js';
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session policies —
|
|
3
|
+
*
|
|
4
|
+
* A `SessionPolicy` is a small declarative object that controls how long a
|
|
5
|
+
* session lives and which operations require re-authentication. It is
|
|
6
|
+
* evaluated by the `PolicyEnforcer` class, which the Noydb instance
|
|
7
|
+
* integrates to replace the bare `sessionTimeout` timer from.
|
|
8
|
+
*
|
|
9
|
+
* Design decisions
|
|
10
|
+
* ────────────────
|
|
11
|
+
* Policies are stateless value objects — no timers, no event listeners.
|
|
12
|
+
* The Noydb instance is the stateful coordinator: it holds the enforcer,
|
|
13
|
+
* calls `enforcer.touch()` on every operation, and calls
|
|
14
|
+
* `enforcer.checkOperation()` before high-risk operations.
|
|
15
|
+
*
|
|
16
|
+
* This keeps the policy module easy to unit-test (no global timers to mock)
|
|
17
|
+
* and avoids the "who owns cleanup" problem that comes with timer-based
|
|
18
|
+
* callbacks embedded in a value object.
|
|
19
|
+
*
|
|
20
|
+
* `lockOnBackground` registers a `visibilitychange` listener on the document
|
|
21
|
+
* at enforcer creation time and removes it on `destroy()`. It is a no-op in
|
|
22
|
+
* non-browser environments (no `document`).
|
|
23
|
+
*/
|
|
24
|
+
import type { SessionPolicy, ReAuthOperation } from '../../kernel/types.js';
|
|
25
|
+
export interface PolicyEnforcerOptions {
|
|
26
|
+
/** The policy to enforce. */
|
|
27
|
+
policy: SessionPolicy;
|
|
28
|
+
/** The session ID to revoke when idle/absolute timeouts fire. */
|
|
29
|
+
sessionId: string;
|
|
30
|
+
/**
|
|
31
|
+
* Called when the policy decides the session should end (idle timeout,
|
|
32
|
+
* absolute timeout, or lockOnBackground). Use this to trigger the
|
|
33
|
+
* same cleanup that `Noydb.close()` would perform.
|
|
34
|
+
*/
|
|
35
|
+
onRevoke: (reason: 'idle' | 'absolute' | 'background') => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Stateful enforcer for a single session policy.
|
|
39
|
+
*
|
|
40
|
+
* Create one per open session, call `touch()` on every operation,
|
|
41
|
+
* call `checkOperation(op)` before export/grant/revoke/rotate/changeSecret,
|
|
42
|
+
* and call `destroy()` when the session ends.
|
|
43
|
+
*/
|
|
44
|
+
export declare class PolicyEnforcer {
|
|
45
|
+
private readonly policy;
|
|
46
|
+
private readonly sessionId;
|
|
47
|
+
private readonly onRevoke;
|
|
48
|
+
private readonly createdAt;
|
|
49
|
+
private lastActivityAt;
|
|
50
|
+
private idleTimer;
|
|
51
|
+
private absoluteTimer;
|
|
52
|
+
private visibilityHandler;
|
|
53
|
+
constructor(opts: PolicyEnforcerOptions);
|
|
54
|
+
/**
|
|
55
|
+
* Record an activity timestamp and reset the idle timer.
|
|
56
|
+
* Call this at the top of every Noydb public method.
|
|
57
|
+
*/
|
|
58
|
+
touch(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Check whether the given operation is allowed under the active policy.
|
|
61
|
+
* Throws `SessionPolicyError` if the operation requires re-authentication.
|
|
62
|
+
* Throws `SessionExpiredError` if the absolute timeout has been exceeded
|
|
63
|
+
* (defensive check in case the timer fired before the call arrived).
|
|
64
|
+
*
|
|
65
|
+
* This is a synchronous check — callers don't await it.
|
|
66
|
+
*/
|
|
67
|
+
checkOperation(op: ReAuthOperation): void;
|
|
68
|
+
/**
|
|
69
|
+
* Tear down timers and background-lock listener. Call from `Noydb.close()`
|
|
70
|
+
* and whenever the session is revoked externally.
|
|
71
|
+
*/
|
|
72
|
+
destroy(): void;
|
|
73
|
+
/** How long since the last activity, in ms. */
|
|
74
|
+
get idleMs(): number;
|
|
75
|
+
/** How long since session creation, in ms. */
|
|
76
|
+
get ageMs(): number;
|
|
77
|
+
private scheduleIdleTimer;
|
|
78
|
+
private scheduleAbsoluteTimer;
|
|
79
|
+
private registerBackgroundLock;
|
|
80
|
+
private expire;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Build a `PolicyEnforcer` from a policy + session token, and return it
|
|
84
|
+
* alongside a cleanup function. Convenience wrapper for Noydb.
|
|
85
|
+
*/
|
|
86
|
+
export declare function createEnforcer(opts: PolicyEnforcerOptions): PolicyEnforcer;
|
|
87
|
+
/**
|
|
88
|
+
* Validate that a `SessionPolicy` is well-formed.
|
|
89
|
+
* Throws a plain `Error` (not `NoydbError`) because this is a developer
|
|
90
|
+
* error — invalid policies passed at construction time, not at runtime.
|
|
91
|
+
*/
|
|
92
|
+
export declare function validateSessionPolicy(policy: SessionPolicy): void;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session tokens —
|
|
3
|
+
*
|
|
4
|
+
* After a vault is unlocked (via passphrase, WebAuthn, OIDC, or magic-
|
|
5
|
+
* link), the caller can call `createSession()` to get a session token that
|
|
6
|
+
* allows re-establishing the KEK for the session lifetime without re-running
|
|
7
|
+
* PBKDF2 or any interactive auth challenge.
|
|
8
|
+
*
|
|
9
|
+
* Security model
|
|
10
|
+
* ──────────────
|
|
11
|
+
* A session consists of two pieces that must both be present to recover the
|
|
12
|
+
* KEK:
|
|
13
|
+
*
|
|
14
|
+
* 1. The **session key** — a non-extractable AES-256-GCM CryptoKey that
|
|
15
|
+
* exists only in memory. "Non-extractable" is enforced by the WebCrypto
|
|
16
|
+
* API: the key object cannot be serialized, exported, or sent over
|
|
17
|
+
* postMessage. When the JS context is GC'd (tab close, navigation away,
|
|
18
|
+
* worker termination) the key becomes unrecoverable.
|
|
19
|
+
*
|
|
20
|
+
* 2. The **session token** — a JSON object that carries the KEK wrapped
|
|
21
|
+
* with the session key (AES-256-GCM, fresh IV per session), plus
|
|
22
|
+
* unencrypted session metadata (sessionId, userId, vault, role,
|
|
23
|
+
* expiresAt). The token can be serialized to JSON and stored in
|
|
24
|
+
* sessionStorage or passed across callsites within the same tab, but
|
|
25
|
+
* it is useless without the session key.
|
|
26
|
+
*
|
|
27
|
+
* The session key is kept in a module-level Map indexed by sessionId. Callers
|
|
28
|
+
* that need to re-use a session must hold on to the sessionId returned from
|
|
29
|
+
* `createSession()`; the key is looked up automatically by `resolveSession()`.
|
|
30
|
+
*
|
|
31
|
+
* Revocation: `revokeSession()` removes the entry from the Map. Because the
|
|
32
|
+
* key is non-extractable, removal is sufficient — no one holds a serializable
|
|
33
|
+
* copy of the key.
|
|
34
|
+
*
|
|
35
|
+
* Tab-scoped lifetime: the module-level Map lives only as long as the JS
|
|
36
|
+
* module. Tab close → module unloaded → Map GC'd → all session keys gone.
|
|
37
|
+
* This is the zero-effort logout: closing the tab is always a secure logout.
|
|
38
|
+
*
|
|
39
|
+
* Expiry: `createSession()` accepts a `ttlMs` option. `resolveSession()`
|
|
40
|
+
* checks `expiresAt` and throws `SessionExpiredError` if the token is stale,
|
|
41
|
+
* even if the session key is still in the Map.
|
|
42
|
+
*/
|
|
43
|
+
import type { Role } from '../../kernel/types.js';
|
|
44
|
+
import type { UnlockedKeyring } from '../team/keyring.js';
|
|
45
|
+
/** The serializable part of a session token. Safe to store in sessionStorage. */
|
|
46
|
+
export interface SessionToken {
|
|
47
|
+
readonly _noydb_session: 1;
|
|
48
|
+
/** Unique session identifier (ULID). Use this as the handle for resolve/revoke. */
|
|
49
|
+
readonly sessionId: string;
|
|
50
|
+
readonly userId: string;
|
|
51
|
+
readonly vault: string;
|
|
52
|
+
readonly role: Role;
|
|
53
|
+
/** ISO timestamp — resolveSession() rejects this token after this time. */
|
|
54
|
+
readonly expiresAt: string;
|
|
55
|
+
/** KEK wrapped with the session key (AES-256-GCM). Base64. */
|
|
56
|
+
readonly wrappedKek: string;
|
|
57
|
+
/** IV used for the wrapping operation. Base64. */
|
|
58
|
+
readonly kekIv: string;
|
|
59
|
+
}
|
|
60
|
+
/** Result returned from `createSession()`. */
|
|
61
|
+
export interface CreateSessionResult {
|
|
62
|
+
/** Serializable token — store in sessionStorage or pass to `resolveSession()`. */
|
|
63
|
+
token: SessionToken;
|
|
64
|
+
/** The sessionId — use this handle for `resolveSession()` and `revokeSession()`. */
|
|
65
|
+
sessionId: string;
|
|
66
|
+
}
|
|
67
|
+
/** Options for `createSession()`. */
|
|
68
|
+
export interface CreateSessionOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Session lifetime in milliseconds. Defaults to 60 minutes.
|
|
71
|
+
* After this duration, `resolveSession()` throws `SessionExpiredError`.
|
|
72
|
+
*/
|
|
73
|
+
ttlMs?: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Create a session for an already-unlocked keyring.
|
|
77
|
+
*
|
|
78
|
+
* Call this after any successful unlock (passphrase, WebAuthn, OIDC,
|
|
79
|
+
* magic-link). The returned `sessionId` is the handle for later
|
|
80
|
+
* `resolveSession()` and `revokeSession()` calls.
|
|
81
|
+
*
|
|
82
|
+
* The session key is generated fresh (non-extractable) and stored in the
|
|
83
|
+
* module-level Map. The KEK from `keyring.kek` is exported (it must be
|
|
84
|
+
* extractable — it was derived by `deriveKey()` which sets extractable: false,
|
|
85
|
+
* but it's unwrapped from the keyring which sets extractable: true) and then
|
|
86
|
+
* re-wrapped with the session key.
|
|
87
|
+
*
|
|
88
|
+
* @param keyring - An already-unlocked keyring whose `kek` is available.
|
|
89
|
+
* @param vault - The vault name this session is scoped to.
|
|
90
|
+
* @param options - Optional session configuration.
|
|
91
|
+
*/
|
|
92
|
+
export declare function createSession(keyring: UnlockedKeyring, vault: string, options?: CreateSessionOptions): Promise<CreateSessionResult>;
|
|
93
|
+
/**
|
|
94
|
+
* Resolve a session token back into an UnlockedKeyring.
|
|
95
|
+
*
|
|
96
|
+
* Looks up the session key by `sessionId`, checks the token is not expired,
|
|
97
|
+
* then decrypts the payload to reconstruct the keyring's DEK set.
|
|
98
|
+
*
|
|
99
|
+
* Throws `SessionExpiredError` if the token's `expiresAt` is in the past.
|
|
100
|
+
* Throws `SessionNotFoundError` if the session key is not in the store
|
|
101
|
+
* (tab was reloaded, session was revoked, or the sessionId is wrong).
|
|
102
|
+
*
|
|
103
|
+
* @param token - The SessionToken from `createSession()`.
|
|
104
|
+
*/
|
|
105
|
+
export declare function resolveSession(token: SessionToken): Promise<UnlockedKeyring>;
|
|
106
|
+
/**
|
|
107
|
+
* Revoke a session by removing its key from the store.
|
|
108
|
+
*
|
|
109
|
+
* After revocation, `resolveSession()` will throw `SessionNotFoundError`
|
|
110
|
+
* for this sessionId. The session token (if held by the caller) becomes
|
|
111
|
+
* permanently useless. This is the explicit logout path.
|
|
112
|
+
*
|
|
113
|
+
* No-op if the session was already expired or does not exist.
|
|
114
|
+
*/
|
|
115
|
+
export declare function revokeSession(sessionId: string): void;
|
|
116
|
+
/**
|
|
117
|
+
* Check if a session is still alive (key in store + not expired).
|
|
118
|
+
* Does not decrypt anything — purely a metadata check.
|
|
119
|
+
*/
|
|
120
|
+
export declare function isSessionAlive(token: SessionToken): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Revoke all active sessions. Used by `Noydb.close()` to ensure that
|
|
123
|
+
* closing the instance destroys all session state, not just the keyring
|
|
124
|
+
* cache.
|
|
125
|
+
*/
|
|
126
|
+
export declare function revokeAllSessions(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Return the number of active sessions currently in the store.
|
|
129
|
+
* Useful for diagnostics and tests.
|
|
130
|
+
*/
|
|
131
|
+
export declare function activeSessionCount(): number;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy seam for the optional session-policy service. Core
|
|
3
|
+
* imports `SessionStrategy` type-only + `NO_SESSION` stub; real
|
|
4
|
+
* `validateSessionPolicy`, `createEnforcer`, and `revokeAllSessions`
|
|
5
|
+
* are only reachable via `withSession()` in `./active.ts`.
|
|
6
|
+
*
|
|
7
|
+
* Solo apps that never set `sessionPolicy` and never issue a session
|
|
8
|
+
* token ship none of the ~495 LOC of policy + token machinery
|
|
9
|
+
* (session-policy.ts + session.ts). Dev-unlock (~299 LOC) is a
|
|
10
|
+
* separate import already tree-shake-friendly via direct named
|
|
11
|
+
* imports.
|
|
12
|
+
*
|
|
13
|
+
* Behavior under NO_SESSION:
|
|
14
|
+
*
|
|
15
|
+
* - **validateSessionPolicy** — throws when called. Only fires if
|
|
16
|
+
* `createNoydb({ sessionPolicy })` was passed; if you set a policy
|
|
17
|
+
* you must opt into the strategy.
|
|
18
|
+
* - **createEnforcer** — throws. Same gate.
|
|
19
|
+
* - **revokeAllSessions** — silent no-op. Called unconditionally on
|
|
20
|
+
* `db.close()`; without the strategy the global session registry
|
|
21
|
+
* never recorded anything, so the no-op is correct.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
import type { SessionPolicy } from '../../kernel/types.js';
|
|
26
|
+
import type { PolicyEnforcer, PolicyEnforcerOptions } from './session-policy.js';
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export interface SessionStrategy {
|
|
31
|
+
validateSessionPolicy(policy: SessionPolicy): void;
|
|
32
|
+
createEnforcer(opts: PolicyEnforcerOptions): PolicyEnforcer;
|
|
33
|
+
revokeAllSessions(): void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* No-session stub. Policy validation + enforcer construction throw
|
|
37
|
+
* with an actionable pointer; global session revocation is a silent
|
|
38
|
+
* no-op (the registry was never populated).
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export declare const NO_SESSION: SessionStrategy;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-vault tier-3 (PIN / quick-resume) state.
|
|
3
|
+
*
|
|
4
|
+
* The hub holds a `PinResumeState`-shaped record in memory, keyed by
|
|
5
|
+
* vault. `enrollUnlock` populates it; `unlockViaPin` consumes it via
|
|
6
|
+
* `@noy-db/on-pin`'s `resumePin`. The cached state is wiped when the
|
|
7
|
+
* idle timer fires or `db.close()` is called.
|
|
8
|
+
*
|
|
9
|
+
* Importantly, this module does NOT depend on `@noy-db/on-pin` — the
|
|
10
|
+
* caller passes the already-built state in. That keeps the hub's
|
|
11
|
+
* `peerDependencies` empty for tier-3 and lets developers swap the
|
|
12
|
+
* primitive (e.g. an OS biometric in place of a PIN).
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Opaque `PinResumeState`-compatible record. Mirrored from
|
|
18
|
+
* `@noy-db/on-pin/PinResumeState`. The hub treats the contents as
|
|
19
|
+
* a black box.
|
|
20
|
+
*/
|
|
21
|
+
export interface QuickUnlockState {
|
|
22
|
+
readonly _noydb_on_pin: 1;
|
|
23
|
+
readonly salt: string;
|
|
24
|
+
readonly iv: string;
|
|
25
|
+
readonly wrappedKeyring: string;
|
|
26
|
+
readonly expiresAt: string;
|
|
27
|
+
readonly maxAttempts: number;
|
|
28
|
+
attempts: number;
|
|
29
|
+
}
|
|
30
|
+
/** In-memory store for tier-3 unlock state, keyed by vault. */
|
|
31
|
+
export declare class QuickUnlockStore {
|
|
32
|
+
private readonly states;
|
|
33
|
+
private readonly timers;
|
|
34
|
+
/**
|
|
35
|
+
* Register a quick-unlock state for a vault. Replaces any existing
|
|
36
|
+
* state. Schedules an automatic clear when the state's `expiresAt`
|
|
37
|
+
* elapses.
|
|
38
|
+
*/
|
|
39
|
+
set(vault: string, state: QuickUnlockState): void;
|
|
40
|
+
/** Read the state for a vault. Returns undefined when none is registered. */
|
|
41
|
+
get(vault: string): QuickUnlockState | undefined;
|
|
42
|
+
/** Drop the state for a vault. Cancels the auto-clear timer. */
|
|
43
|
+
delete(vault: string): void;
|
|
44
|
+
/** Drop every cached state. Called on `db.close()`. */
|
|
45
|
+
clear(): void;
|
|
46
|
+
private clearTimer;
|
|
47
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@noy-db/hub/sync` — subpath export for the optional sync engine +
|
|
3
|
+
* presence service (~856 LOC).
|
|
4
|
+
*
|
|
5
|
+
* Solo / single-device apps that never replicate to a remote peer
|
|
6
|
+
* and never call `collection.presence()` exclude this subpath
|
|
7
|
+
* entirely; the constructors are routed through the `SyncStrategy`
|
|
8
|
+
* seam in core, and the `NO_SYNC` stub keeps the whole module out
|
|
9
|
+
* of the bundle.
|
|
10
|
+
*
|
|
11
|
+
* Opt in via:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { createNoydb } from '@noy-db/hub'
|
|
15
|
+
* import { withSync } from '@noy-db/hub/sync'
|
|
16
|
+
*
|
|
17
|
+
* const db = await createNoydb({
|
|
18
|
+
* store: localStore,
|
|
19
|
+
* sync: remoteStore,
|
|
20
|
+
* user: ...,
|
|
21
|
+
* syncStrategy: withSync(),
|
|
22
|
+
* })
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Note: the `SyncEngine`, `SyncTransaction`, and `PresenceHandle`
|
|
26
|
+
* classes themselves still live under `team/` and remain exposed
|
|
27
|
+
* via `@noy-db/hub/team` for advanced consumers that construct them
|
|
28
|
+
* directly. This subpath is the clean LTS factory entry point.
|
|
29
|
+
*/
|
|
30
|
+
export { withSync } from '../team/sync-active.js';
|
|
31
|
+
export type { SyncStrategy } from '../team/sync-strategy.js';
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-tab coordination: primary/secondary election (Web Locks)
|
|
3
|
+
* + presence heartbeat (BroadcastChannel). Browser-only; opt-in; no-op
|
|
4
|
+
* when the APIs are absent. The lock/channel interfaces are hub-local
|
|
5
|
+
* (structurally compatible with @noy-db/by-peer + @noy-db/by-tabs, but
|
|
6
|
+
* not imported — those packages depend on hub).
|
|
7
|
+
*/
|
|
8
|
+
export type TabRole = 'primary' | 'secondary' | 'unknown';
|
|
9
|
+
export interface TabPresence {
|
|
10
|
+
readonly tabId: string;
|
|
11
|
+
readonly lastSeen: number;
|
|
12
|
+
readonly role: TabRole;
|
|
13
|
+
}
|
|
14
|
+
export type Unsubscribe = () => void;
|
|
15
|
+
/** Structural subset of the Web Locks API / by-peer's MinimalLockManager. */
|
|
16
|
+
export interface TabLockManager {
|
|
17
|
+
request<T>(name: string, options: {
|
|
18
|
+
mode?: 'exclusive' | 'shared';
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}, callback: (lock: unknown) => Promise<T>): Promise<T>;
|
|
21
|
+
}
|
|
22
|
+
/** Structural subset of by-peer's PeerChannel / a BroadcastChannel wrapper. */
|
|
23
|
+
export interface TabChannel {
|
|
24
|
+
send(payload: string): void;
|
|
25
|
+
on(event: 'message', listener: (payload: string) => void): Unsubscribe;
|
|
26
|
+
on(event: 'close', listener: () => void): Unsubscribe;
|
|
27
|
+
close(): void;
|
|
28
|
+
readonly isOpen: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface TabCoordinationOptions {
|
|
31
|
+
readonly lockManager?: TabLockManager;
|
|
32
|
+
readonly channel?: TabChannel;
|
|
33
|
+
readonly tabId?: string;
|
|
34
|
+
readonly lockName?: string;
|
|
35
|
+
readonly heartbeatMs?: number;
|
|
36
|
+
readonly staleMs?: number;
|
|
37
|
+
readonly now?: () => number;
|
|
38
|
+
/**
|
|
39
|
+
* Close the channel on `dispose()`. Set this only for a channel the
|
|
40
|
+
* coordinator owns (e.g. the one `defaultChannel()` created); leave it
|
|
41
|
+
* false for a caller-injected channel so the coordinator never closes a
|
|
42
|
+
* channel it didn't create. Default: false.
|
|
43
|
+
*/
|
|
44
|
+
readonly closeChannelOnDispose?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Also propagate committed writes to other tabs. Default true:
|
|
47
|
+
* when tab coordination is enabled and a channel is available, a write in
|
|
48
|
+
* one tab refreshes that document in every other tab. Set false to opt out.
|
|
49
|
+
*/
|
|
50
|
+
readonly propagateWrites?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Channel for write propagation — distinct from the presence
|
|
53
|
+
* channel. Default: an inline BroadcastChannel on `noydb:tab-writes`.
|
|
54
|
+
*/
|
|
55
|
+
readonly writeChannel?: TabChannel;
|
|
56
|
+
}
|
|
57
|
+
export declare class TabCoordinator {
|
|
58
|
+
#private;
|
|
59
|
+
readonly tabId: string;
|
|
60
|
+
role: TabRole;
|
|
61
|
+
constructor(opts?: TabCoordinationOptions);
|
|
62
|
+
start(): void;
|
|
63
|
+
activeTabs(): TabPresence[];
|
|
64
|
+
onTabRoleChange(fn: (r: TabRole) => void): Unsubscribe;
|
|
65
|
+
onActiveTabsChange(fn: (t: TabPresence[]) => void): Unsubscribe;
|
|
66
|
+
dispose(): void;
|
|
67
|
+
/** @internal test seam — broadcast one heartbeat now. */
|
|
68
|
+
_beat(): void;
|
|
69
|
+
}
|
|
70
|
+
/** Browser default lock manager (navigator.locks) or undefined. */
|
|
71
|
+
export declare function defaultLockManager(): TabLockManager | undefined;
|
|
72
|
+
/** Browser default channel: an inline BroadcastChannel wrapper, or undefined. */
|
|
73
|
+
export declare function defaultChannel(name?: string): TabChannel | undefined;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-tab write propagation. A role-agnostic relay: it broadcasts
|
|
3
|
+
* a ciphertext-blind signal ({vault, collection, docId, action}) for every
|
|
4
|
+
* locally-committed write (via onAfterWrite), and on receiving a peer
|
|
5
|
+
* tab's signal it asks the host to refresh that document's in-memory view by
|
|
6
|
+
* re-reading the shared encrypted store. Nothing decrypted crosses the wire.
|
|
7
|
+
*/
|
|
8
|
+
import type { TabChannel, Unsubscribe } from './tab-coordination.js';
|
|
9
|
+
import type { WriteEvent } from '../port/with/write-hooks.js';
|
|
10
|
+
export interface TabWriteMsg {
|
|
11
|
+
readonly kind: 'tab-write';
|
|
12
|
+
readonly writerId: string;
|
|
13
|
+
readonly vault: string;
|
|
14
|
+
readonly collection: string;
|
|
15
|
+
readonly docId: string;
|
|
16
|
+
readonly action: 'put' | 'delete';
|
|
17
|
+
readonly baseV: number;
|
|
18
|
+
readonly v: number;
|
|
19
|
+
}
|
|
20
|
+
export interface CrossTabWriteRelayOptions {
|
|
21
|
+
/** The broadcast channel (its own — distinct from the presence channel). */
|
|
22
|
+
readonly channel: TabChannel;
|
|
23
|
+
/** This tab's id — outgoing signals carry it; incoming self-signals are ignored. */
|
|
24
|
+
readonly writerId: string;
|
|
25
|
+
/** Subscribe to committed writes (the host's onAfterWrite). */
|
|
26
|
+
readonly subscribeAfterWrite: (handler: (e: WriteEvent) => void) => Unsubscribe;
|
|
27
|
+
/** Refresh a document's in-memory view from the shared store. */
|
|
28
|
+
readonly applyRemoteWrite: (vault: string, collection: string, docId: string, action: 'put' | 'delete') => void | Promise<void>;
|
|
29
|
+
/** Report a detected conflict (host captures + converges + emits). */
|
|
30
|
+
readonly reportConflict?: (vault: string, collection: string, docId: string, action: 'put' | 'delete', baseV: number, v: number, ownV: number) => void | Promise<void>;
|
|
31
|
+
/** Close the channel on dispose (only when the relay created it). Default false. */
|
|
32
|
+
readonly closeChannelOnDispose?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare class CrossTabWriteRelay {
|
|
35
|
+
#private;
|
|
36
|
+
constructor(opts: CrossTabWriteRelayOptions);
|
|
37
|
+
start(): void;
|
|
38
|
+
dispose(): void;
|
|
39
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enable the multi-user team capability (#267 Track A tail).
|
|
3
|
+
*
|
|
4
|
+
* Pass to `createNoydb({ teamStrategy: withTeam() })` to make `db.grant` /
|
|
5
|
+
* `db.revoke` / `db.rotate` live. The keyring grant/revoke/rotate engines
|
|
6
|
+
* are statically imported HERE — this module is reachable only through the
|
|
7
|
+
* `@noy-db/hub/team` subpath (and the root barrel's tree-shakeable
|
|
8
|
+
* re-export), so a single-user floor bundle never carries them. The facade
|
|
9
|
+
* (`TeamFacade.runGrant` / `runRevoke` / `runRotate`) owns the policy-gate +
|
|
10
|
+
* keyring plumbing and receives the engine as an argument.
|
|
11
|
+
*/
|
|
12
|
+
import type { TeamStrategy } from './strategy.js';
|
|
13
|
+
export declare function withTeam(): TeamStrategy;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tier-2 authenticator slot management.
|
|
3
|
+
*
|
|
4
|
+
* Each slot independently wraps the SAME KEK under a method-specific
|
|
5
|
+
* derived key (LUKS pattern). Enrolling adds a slot; removing drops
|
|
6
|
+
* one. Both are constant-time keyring writes — no DEK re-keying.
|
|
7
|
+
*
|
|
8
|
+
* The crypto for each method lives in its `@noy-db/on-*` package
|
|
9
|
+
* (`on-webauthn`, `on-oidc`, `on-password`); this module accepts the
|
|
10
|
+
* package's `wrapped_kek` ciphertext + `meta` payload and persists it.
|
|
11
|
+
*
|
|
12
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Tier 2 — Authenticate
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
import type { NoydbStore, KeyringAuthenticator } from '../../kernel/types.js';
|
|
17
|
+
import type { UnlockedKeyring } from './keyring.js';
|
|
18
|
+
/** Fields shared across both wrap-KEK and wrap-DEKs enroll inputs. */
|
|
19
|
+
interface EnrollAuthenticatorBase {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly method: KeyringAuthenticator['method'];
|
|
22
|
+
/** Method-specific metadata (cred id, salt, …). */
|
|
23
|
+
readonly meta: Record<string, unknown>;
|
|
24
|
+
/** Tier the active session held when enrolling. Defaults to 1. */
|
|
25
|
+
readonly enrolled_via_tier?: 1 | 2;
|
|
26
|
+
}
|
|
27
|
+
/** Wrap-KEK enroll input (WebAuthn, OIDC). */
|
|
28
|
+
export interface EnrollAuthenticatorWrappingKEKOptions extends EnrollAuthenticatorBase {
|
|
29
|
+
/** Already-wrapped KEK ciphertext (base64) — produced by the on-* package. */
|
|
30
|
+
readonly wrapped_kek: string;
|
|
31
|
+
readonly wrapKind?: 'kek';
|
|
32
|
+
}
|
|
33
|
+
/** Wrap-DEKs enroll input (password, future on-* using the unified wrap-DEKs primitive). */
|
|
34
|
+
export interface EnrollAuthenticatorWrappingDEKsOptions extends EnrollAuthenticatorBase {
|
|
35
|
+
readonly wrapKind: 'deks';
|
|
36
|
+
/** Base64 AES-GCM ciphertext of `{ deks: { collection: base64rawDek } }`. */
|
|
37
|
+
readonly wrapped_deks: string;
|
|
38
|
+
/** Base64 AES-GCM IV used for the `wrapped_deks` ciphertext. */
|
|
39
|
+
readonly iv: string;
|
|
40
|
+
}
|
|
41
|
+
/** Discriminated union over the two enroll input shapes. */
|
|
42
|
+
export type EnrollAuthenticatorOptions = EnrollAuthenticatorWrappingKEKOptions | EnrollAuthenticatorWrappingDEKsOptions;
|
|
43
|
+
/**
|
|
44
|
+
* Append a new authenticator slot to the keyring file. Throws
|
|
45
|
+
* `ValidationError` if a slot with the same id already exists — the
|
|
46
|
+
* caller decides whether to remove + re-enroll.
|
|
47
|
+
*
|
|
48
|
+
* Accepts either wrap-KEK (WebAuthn, OIDC) or wrap-DEKs (password)
|
|
49
|
+
* input. The variant is preserved verbatim into `KeyringAuthenticator`.
|
|
50
|
+
*/
|
|
51
|
+
export declare function enrollAuthenticator(store: NoydbStore, vault: string, keyring: UnlockedKeyring, options: EnrollAuthenticatorOptions): Promise<UnlockedKeyring>;
|
|
52
|
+
/**
|
|
53
|
+
* Caller payload for {@link updateAuthenticator}. Mutates only
|
|
54
|
+
* `meta` — the slot's id, method, and wrap material are immutable
|
|
55
|
+
* through this primitive, preserving the anti-slot-swap guard.
|
|
56
|
+
*
|
|
57
|
+
* `meta` is **merged** at the top level: keys absent from the patch
|
|
58
|
+
* are preserved, keys present overwrite. To clear a meta key, pass
|
|
59
|
+
* `null` for that key explicitly. (Same top-level merge semantics as
|
|
60
|
+
* `UserApi.updateMe`, non-recursive — meta is a flat label bag.)
|
|
61
|
+
*/
|
|
62
|
+
export interface UpdateAuthenticatorOptions {
|
|
63
|
+
readonly meta?: Record<string, unknown>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Mutate a tier-2 authenticator slot's `meta` blob (slot rename,
|
|
67
|
+
* label changes). The slot's `id`, `method`, and wrap material
|
|
68
|
+
* (`wrapped_kek` for wrap-KEK; `wrapped_deks` + `iv` for wrap-DEKs)
|
|
69
|
+
* are immutable through this entry point — the anti-slot-swap guard
|
|
70
|
+
* is structural, not gate-driven, so even if the policy gate is
|
|
71
|
+
* weakened a future caller cannot use this path to swap one slot's
|
|
72
|
+
* crypto for another's.
|
|
73
|
+
*
|
|
74
|
+
* `meta` patch semantics:
|
|
75
|
+
* - Top-level merge — absent keys preserved, present keys overwrite
|
|
76
|
+
* - `null` value — delete that meta key
|
|
77
|
+
* - Non-object values (string, number, boolean, array) — replace verbatim
|
|
78
|
+
*
|
|
79
|
+
* @throws `NoAccessError` when no slot with the given id exists.
|
|
80
|
+
* @throws `ValidationError` when no patch field is provided.
|
|
81
|
+
*
|
|
82
|
+
*/
|
|
83
|
+
export declare function updateAuthenticator(store: NoydbStore, vault: string, keyring: UnlockedKeyring, slotId: string, options: UpdateAuthenticatorOptions): Promise<UnlockedKeyring>;
|
|
84
|
+
/**
|
|
85
|
+
* Drop a slot by id. No-op if the slot doesn't exist (idempotent —
|
|
86
|
+
* removing a non-existent slot is a recoverable retry, not an error).
|
|
87
|
+
*/
|
|
88
|
+
export declare function removeAuthenticator(store: NoydbStore, vault: string, keyring: UnlockedKeyring, slotId: string): Promise<UnlockedKeyring>;
|
|
89
|
+
/**
|
|
90
|
+
* Look up a slot by id. Returns `undefined` when no slot matches.
|
|
91
|
+
* Used by tier-2 unlock dispatchers to fetch the wrapped KEK + meta
|
|
92
|
+
* before invoking the method-specific verifier.
|
|
93
|
+
*/
|
|
94
|
+
export declare function findAuthenticator(keyring: UnlockedKeyring, slotId: string): KeyringAuthenticator | undefined;
|
|
95
|
+
export {};
|