@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,201 @@
|
|
|
1
|
+
import type { UserEnvelope, DeepPartialOrNull, Unsubscribe, UserEnvelopePresented, LiveUserEnvelope, VaultUserApi, UserApiDeps, UserApiFactory } from '../../../kernel/types.js';
|
|
2
|
+
import type { UserVisibility } from '../types.js';
|
|
3
|
+
import type { ExportAccessibleOptions } from '../../../with-audit/portability/export-accessible.js';
|
|
4
|
+
import type { WithdrawAccessibleOptions, WithdrawResult } from '../../../with-audit/portability/withdraw-accessible.js';
|
|
5
|
+
import type { RequestWithdrawalOptions, RequestWithdrawalResult, WithdrawalRequest, WithdrawalRequestStatus, ApproveWithdrawalOptions, RejectWithdrawalOptions } from '../../../with-audit/portability/request-withdrawal.js';
|
|
6
|
+
/**
|
|
7
|
+
* Implementation behind `vault.user`. Constructed once per Vault via
|
|
8
|
+
* {@link createUserApi}, holds the writer's keyringId in closure so
|
|
9
|
+
* `updateMe`/`setMe` cannot target any other principal — the own-only
|
|
10
|
+
* rule is enforced at the type level (no `set(otherKeyringId, …)`
|
|
11
|
+
* method) AND at runtime (the keyringId argument simply doesn't exist
|
|
12
|
+
* on the write path).
|
|
13
|
+
*/
|
|
14
|
+
export declare class UserApi implements VaultUserApi {
|
|
15
|
+
/** keyringId → set of listeners. Wildcard '*' fires on every change. */
|
|
16
|
+
private readonly listeners;
|
|
17
|
+
private readonly adapter;
|
|
18
|
+
private readonly vaultName;
|
|
19
|
+
/** The writer's own keyringId. Frozen at construction time. */
|
|
20
|
+
private readonly writerKeyringId;
|
|
21
|
+
private readonly getDek;
|
|
22
|
+
/**
|
|
23
|
+
* Policy-gate validator. When omitted, gates are skipped — useful
|
|
24
|
+
* for low-level tests that exercise the storage layer directly.
|
|
25
|
+
* Production paths always wire the Noydb-backed implementation.
|
|
26
|
+
*/
|
|
27
|
+
private readonly checkGate?;
|
|
28
|
+
/**
|
|
29
|
+
* Noydb-backed `exportMyAccessibleData`, injected by the Vault
|
|
30
|
+
* (which holds the keyring + bundle machinery). Omitted in low-level tests.
|
|
31
|
+
*/
|
|
32
|
+
private readonly exportAccessible?;
|
|
33
|
+
/**
|
|
34
|
+
* Noydb-backed `unilateralWithdrawal`, injected by the Vault.
|
|
35
|
+
* Destructive — extract + dispose (delete | freeze). Omitted in low-level tests.
|
|
36
|
+
*/
|
|
37
|
+
private readonly unilateralWithdraw?;
|
|
38
|
+
/**
|
|
39
|
+
* Noydb-backed two-party withdrawal ceremony, injected by the
|
|
40
|
+
* Vault. requestWithdraw = requester side; the rest = owner side.
|
|
41
|
+
*/
|
|
42
|
+
private readonly requestWithdraw?;
|
|
43
|
+
private readonly listWithdrawals?;
|
|
44
|
+
private readonly approveWithdraw?;
|
|
45
|
+
private readonly rejectWithdraw?;
|
|
46
|
+
constructor(deps: UserApiDeps);
|
|
47
|
+
/**
|
|
48
|
+
* File a two-party withdrawal request for the caller's accessible
|
|
49
|
+
* scope. Non-destructive (writes a pending request); an owner later approves
|
|
50
|
+
* or rejects. This is the path for read-only roles (`client`/`viewer`) that
|
|
51
|
+
* cannot self-serve a destructive `unilateralWithdrawal`. Gated by
|
|
52
|
+
* `user-request-withdrawal` (enabled by default).
|
|
53
|
+
*/
|
|
54
|
+
requestWithdrawal(opts?: RequestWithdrawalOptions): Promise<RequestWithdrawalResult>;
|
|
55
|
+
/** Owner side: list filed withdrawal requests (optionally by status). */
|
|
56
|
+
listWithdrawalRequests(opts?: {
|
|
57
|
+
status?: WithdrawalRequestStatus;
|
|
58
|
+
}): Promise<WithdrawalRequest[]>;
|
|
59
|
+
/**
|
|
60
|
+
* Owner side: approve a pending request. Extracts the requester's
|
|
61
|
+
* recorded scope under firm authority, disposes of the source per the
|
|
62
|
+
* request's disposition, and returns the re-keyed bundle to hand back. Gated
|
|
63
|
+
* by `approve-user-withdrawal` (tier-2 default) + owner/admin role.
|
|
64
|
+
*/
|
|
65
|
+
approveWithdrawal(requestId: string, opts?: ApproveWithdrawalOptions): Promise<WithdrawResult>;
|
|
66
|
+
/** Owner side: reject a pending request (no data is touched). */
|
|
67
|
+
rejectWithdrawal(requestId: string, opts?: RejectWithdrawalOptions): Promise<WithdrawalRequest>;
|
|
68
|
+
/**
|
|
69
|
+
* Single-party withdrawal: export the caller's accessible scope
|
|
70
|
+
* (re-keyed) and dispose of the source (`delete` or `freeze`). Gated by the
|
|
71
|
+
* fail-closed built-in `client-unilateral-withdraw` policy — undefined or
|
|
72
|
+
* disabled → throws (use `requestWithdrawal`). The firm enables it at vault
|
|
73
|
+
* creation.
|
|
74
|
+
*/
|
|
75
|
+
unilateralWithdrawal(opts: WithdrawAccessibleOptions): Promise<WithdrawResult>;
|
|
76
|
+
/**
|
|
77
|
+
* Export the calling user's accessible scope as a portable, re-keyed
|
|
78
|
+
* `.noydb` bundle. Non-destructive and **always allowed** (data sovereignty
|
|
79
|
+
* by construction) but audited. Scope = the caller's DEK access set.
|
|
80
|
+
*/
|
|
81
|
+
exportMyAccessibleData(opts?: ExportAccessibleOptions): Promise<Uint8Array>;
|
|
82
|
+
/** Read the writer's own envelope. Returns null if never written. */
|
|
83
|
+
me<T = unknown>(): Promise<UserEnvelope<T> | null>;
|
|
84
|
+
/**
|
|
85
|
+
* Deep-merge a partial patch into the writer's own envelope. Creates
|
|
86
|
+
* the envelope on first call. Optimistic-concurrency safe — a stale
|
|
87
|
+
* `_v` (parallel writer on another device) throws `ConflictError`.
|
|
88
|
+
*
|
|
89
|
+
* Patch semantics:
|
|
90
|
+
* - `undefined` (or omitted key) — skip; existing value preserved
|
|
91
|
+
* - `null` — delete the field from the merged result
|
|
92
|
+
* - any other value — overwrite (deep-merge for plain objects,
|
|
93
|
+
* replace for primitives / arrays)
|
|
94
|
+
*
|
|
95
|
+
* To clear a field, pass `null` rather than `undefined`. Callers
|
|
96
|
+
* with shape `T = string | null` where `null` is a meaningful value
|
|
97
|
+
* should use `setMe` for that specific field instead — `null` here
|
|
98
|
+
* always means delete.
|
|
99
|
+
*
|
|
100
|
+
* Gated by the `edit-own-profile` policy gate (default `minTier: 3`).
|
|
101
|
+
* Pass `presented` to satisfy tightened policies that require a
|
|
102
|
+
* factor proof (e.g. STRICT_POLICY's TOTP requirement).
|
|
103
|
+
*/
|
|
104
|
+
updateMe<T extends object = Record<string, unknown>>(patch: DeepPartialOrNull<T>, presented?: UserEnvelopePresented): Promise<UserEnvelope<T>>;
|
|
105
|
+
/**
|
|
106
|
+
* Replace the writer's own envelope with `payload`. Use sparingly —
|
|
107
|
+
* `updateMe` is the canonical mutation. No `expectedVersion` check;
|
|
108
|
+
* callers explicitly take last-write-wins semantics.
|
|
109
|
+
*
|
|
110
|
+
* Gated by `edit-own-profile`. See `updateMe` for `presented` usage.
|
|
111
|
+
*/
|
|
112
|
+
setMe<T = unknown>(payload: T, presented?: UserEnvelopePresented): Promise<UserEnvelope<T>>;
|
|
113
|
+
/**
|
|
114
|
+
* Read the current user's visibility flag from
|
|
115
|
+
* `_meta/visibility/<keyringId>`. Returns `{ hidden: false }` when no
|
|
116
|
+
* document has been persisted (the default-visible case).
|
|
117
|
+
*/
|
|
118
|
+
getMyVisibility(): Promise<UserVisibility>;
|
|
119
|
+
/**
|
|
120
|
+
* Update the current user's visibility in the team directory.
|
|
121
|
+
*
|
|
122
|
+
* - `hidden: true` — opt out of the default `listUsersWithEnvelopes`
|
|
123
|
+
* listing. `owner`/`admin` callers can still see the user by passing
|
|
124
|
+
* `{ includeHidden: true }`.
|
|
125
|
+
* - `hidden: false` — opt back in.
|
|
126
|
+
*
|
|
127
|
+
* Own-only by construction: the keyringId argument doesn't exist on
|
|
128
|
+
* this method, so no caller can hide or unhide another principal.
|
|
129
|
+
*
|
|
130
|
+
* Honest caveat: this is a UX flag, not a privacy guarantee. The
|
|
131
|
+
* envelope ciphertext at `_users/<keyringId>` and the keyring file at
|
|
132
|
+
* `_keyring/<userId>` are both still observable to anyone with direct
|
|
133
|
+
* store read access. See `https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/user-envelope.md` →
|
|
134
|
+
* "Directory visibility".
|
|
135
|
+
*/
|
|
136
|
+
setMyVisibility(visibility: UserVisibility): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Read another principal's envelope by their keyringId. Returns null
|
|
139
|
+
* if the principal exists but has no envelope yet, or if the
|
|
140
|
+
* keyringId does not exist at all.
|
|
141
|
+
*
|
|
142
|
+
* Gated by `view-team-profiles` (default `minTier: 2`) — but ONLY for
|
|
143
|
+
* cross-principal reads. Reading your own envelope (`keyringId ===
|
|
144
|
+
* self`) is never gated; that's just `me()` written long-form.
|
|
145
|
+
*/
|
|
146
|
+
get<T = unknown>(keyringId: string, presented?: UserEnvelopePresented): Promise<UserEnvelope<T> | null>;
|
|
147
|
+
/**
|
|
148
|
+
* Read every persisted envelope in the vault. Order is store-defined.
|
|
149
|
+
*
|
|
150
|
+
* Gated by `view-team-profiles`. Default policy (`minTier: 2`) lets
|
|
151
|
+
* any authenticated session read all envelopes. Two privacy-strict
|
|
152
|
+
* opt-outs:
|
|
153
|
+
*
|
|
154
|
+
* - `view-team-profiles.enabled: false` → list() returns only the
|
|
155
|
+
* caller's own envelope (silent self-fallback, no thrown error).
|
|
156
|
+
* - `view-team-profiles.minTier: 1` + insufficient tier → throws
|
|
157
|
+
* `PolicyDeniedError` with `reason: 'insufficient-tier'`. The
|
|
158
|
+
* caller is expected to elevate, not silently degrade.
|
|
159
|
+
*
|
|
160
|
+
* The asymmetry is deliberate: `enabled: false` is a deliberate
|
|
161
|
+
* design choice ("nobody sees teammate profiles in this app");
|
|
162
|
+
* `insufficient-tier` is "you need to authenticate further". Different
|
|
163
|
+
* UX prompts for different intents.
|
|
164
|
+
*/
|
|
165
|
+
list<T = unknown>(presented?: UserEnvelopePresented): Promise<UserEnvelope<T>[]>;
|
|
166
|
+
/**
|
|
167
|
+
* Listen for changes to a specific keyringId's envelope. The callback
|
|
168
|
+
* fires synchronously after every successful local `updateMe` /
|
|
169
|
+
* `setMe` for that principal.
|
|
170
|
+
*
|
|
171
|
+
* Cross-instance changes (a teammate edits their profile on their
|
|
172
|
+
* device, the sync engine pulls the diff onto this device) will fire
|
|
173
|
+
* subscribers when the sync layer replays the write through this API.
|
|
174
|
+
* In v1, subscribers do NOT fire on raw store changes — wire your sync
|
|
175
|
+
* layer to call back through `vault.user.setMe` / `updateMe` if you
|
|
176
|
+
* need that.
|
|
177
|
+
*
|
|
178
|
+
* Pass keyringId `'*'` to fire on every change in the vault.
|
|
179
|
+
*/
|
|
180
|
+
subscribe<T = unknown>(keyringId: string, cb: (env: UserEnvelope<T> | null) => void): Unsubscribe;
|
|
181
|
+
/**
|
|
182
|
+
* Reactive handle that caches the current value and re-reads on every
|
|
183
|
+
* change for the given keyringId. Convenient for framework bindings:
|
|
184
|
+
*
|
|
185
|
+
* const live = vault.user.live<UserShape>(vault.userId)
|
|
186
|
+
* live.subscribe(env => render(env?.data))
|
|
187
|
+
*
|
|
188
|
+
* Initial value is `null` until the first `current()` call materializes
|
|
189
|
+
* it via `vault.user.get()`. Call `stop()` when done to release the
|
|
190
|
+
* subscription.
|
|
191
|
+
*/
|
|
192
|
+
live<T = unknown>(keyringId: string): LiveUserEnvelope<T>;
|
|
193
|
+
private fireChange;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Build the `vault.user` API implementation from its dependencies. This is
|
|
197
|
+
* the real {@link UserApiFactory} — `createNoydb()` dynamically imports it
|
|
198
|
+
* and stashes it on the `Noydb` instance so `Vault`'s constructor can call
|
|
199
|
+
* it synchronously.
|
|
200
|
+
*/
|
|
201
|
+
export declare const createUserApi: UserApiFactory;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-principal user envelope service — storage primitives. The contract
|
|
3
|
+
* types (`UserEnvelope`, `VaultUserApi`, `UserApiDeps`, ...) and the
|
|
4
|
+
* `USER_ENVELOPE_COLLECTION` / `USER_ENVELOPE_MAX_BYTES` constants and
|
|
5
|
+
* `UserEnvelopeOversizedError` live in the kernel spine
|
|
6
|
+
* (`kernel/types.ts` / `kernel/constants.ts` / `kernel/errors.ts`).
|
|
7
|
+
*
|
|
8
|
+
* @see docs/superpowers/specs/2026-05-05-user-envelope-design.md
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
export { loadUserEnvelope, saveUserEnvelope, deleteUserEnvelope, listUserEnvelopeIds, } from './storage.js';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistence helpers for per-principal user envelopes stored at
|
|
3
|
+
* `_users/<keyringId>` (logically: `_meta/user/<keyringId>`).
|
|
4
|
+
*
|
|
5
|
+
* Unlike `_meta/policy` and `_meta/handle` which are plaintext, user
|
|
6
|
+
* envelopes carry user data and are encrypted with a dedicated
|
|
7
|
+
* {@link USER_ENVELOPE_COLLECTION} DEK (provisioned at vault open and
|
|
8
|
+
* propagated to every keyring via the system-collection DEK path in
|
|
9
|
+
* `team/keyring.ts`).
|
|
10
|
+
*
|
|
11
|
+
* This module is the **storage primitive** layer. The public API
|
|
12
|
+
* (`vault.user.*`) sits on top of this; permission gates, own-only
|
|
13
|
+
* write enforcement, and presence-channel propagation live there.
|
|
14
|
+
*
|
|
15
|
+
* @see docs/superpowers/specs/2026-05-05-user-envelope-design.md
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import type { NoydbStore, UserEnvelope } from '../../../kernel/types.js';
|
|
20
|
+
import { type EnclaveKey } from '../../../kernel/enclave/index.js';
|
|
21
|
+
/**
|
|
22
|
+
* Read and decrypt the user envelope for `keyringId`. Returns `null`
|
|
23
|
+
* when no envelope has been persisted (either the principal has never
|
|
24
|
+
* called `updateMe`, or the keyring predates this feature).
|
|
25
|
+
*
|
|
26
|
+
* Decryption errors propagate — a tampered or wrong-keyed envelope
|
|
27
|
+
* surfaces as the underlying crypto error rather than masquerading as
|
|
28
|
+
* "not found".
|
|
29
|
+
*/
|
|
30
|
+
export declare function loadUserEnvelope<T = unknown>(store: NoydbStore, vault: string, keyringId: string, dek: EnclaveKey): Promise<UserEnvelope<T> | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Encrypt and persist the user envelope for `keyringId`. The new
|
|
33
|
+
* version is `(prior._v ?? 0) + 1`. Pass `expectedVersion` to enable
|
|
34
|
+
* optimistic-concurrency checks: a mismatch with the stored version
|
|
35
|
+
* throws {@link ConflictError} with the actual stored version.
|
|
36
|
+
*
|
|
37
|
+
* `expectedVersion: 0` means "expect no prior envelope"; the write
|
|
38
|
+
* succeeds only if no envelope exists yet.
|
|
39
|
+
*
|
|
40
|
+
* Soft-caps the JSON-serialized payload at {@link USER_ENVELOPE_MAX_BYTES};
|
|
41
|
+
* larger payloads throw {@link UserEnvelopeOversizedError}.
|
|
42
|
+
*/
|
|
43
|
+
export declare function saveUserEnvelope<T>(store: NoydbStore, vault: string, keyringId: string, payload: T, dek: EnclaveKey, expectedVersion?: number): Promise<UserEnvelope<T>>;
|
|
44
|
+
/**
|
|
45
|
+
* Delete the user envelope for `keyringId`. Idempotent — no error if
|
|
46
|
+
* the envelope is already absent. Called from the keyring revoke path
|
|
47
|
+
* (cascade-delete) and is a no-op for keyrings that never wrote.
|
|
48
|
+
*/
|
|
49
|
+
export declare function deleteUserEnvelope(store: NoydbStore, vault: string, keyringId: string): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* List the keyring ids that have a user envelope persisted in `vault`.
|
|
52
|
+
* Order is store-defined — callers that need a stable order should sort.
|
|
53
|
+
*/
|
|
54
|
+
export declare function listUserEnvelopeIds(store: NoydbStore, vault: string): Promise<string[]>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistence helpers for the per-user visibility flag
|
|
3
|
+
* (`_meta/visibility/<keyringId>`). Mirrors the bypass-AES pattern used
|
|
4
|
+
* by `_meta/policy` — the visibility document is plain JSON, the
|
|
5
|
+
* envelope's `_iv` field is left empty.
|
|
6
|
+
*
|
|
7
|
+
* Stored alongside the keyring file rather than inside the encrypted
|
|
8
|
+
* user envelope (`_users/<keyringId>`) because:
|
|
9
|
+
*
|
|
10
|
+
* - `UserEnvelope<T>.data` is opaque-to-hub by contract — hub does not
|
|
11
|
+
* introspect or reserve any keys inside it. Adding `hidden` there
|
|
12
|
+
* would violate that contract.
|
|
13
|
+
* - `listUsersWithEnvelopes` filters by the flag, and the filter must
|
|
14
|
+
* work even when decryption fails (legacy keyrings predating the
|
|
15
|
+
* envelope feature, or a corrupted envelope).
|
|
16
|
+
*
|
|
17
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/user-envelope.md → Directory visibility
|
|
18
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/plaintext-bypass.md — every `_iv: ''` write site
|
|
19
|
+
*
|
|
20
|
+
* @module
|
|
21
|
+
*/
|
|
22
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
23
|
+
import type { UserVisibility } from './types.js';
|
|
24
|
+
/** Prefix for per-user visibility records inside `_meta`. */
|
|
25
|
+
export declare const VISIBILITY_RECORD_PREFIX = "visibility/";
|
|
26
|
+
/** Compose the `_meta` record id for a keyring's visibility doc. */
|
|
27
|
+
export declare function visibilityRecordId(keyringId: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Read the visibility flag for `keyringId`. Returns `undefined` when no
|
|
30
|
+
* document has been persisted — callers treat that as the default-visible
|
|
31
|
+
* case (`{ hidden: false }`).
|
|
32
|
+
*/
|
|
33
|
+
export declare function readUserVisibility(store: NoydbStore, vault: string, keyringId: string): Promise<UserVisibility | undefined>;
|
|
34
|
+
/**
|
|
35
|
+
* Persist the visibility flag for `keyringId` at
|
|
36
|
+
* `_meta/visibility/<keyringId>`. Idempotent — call on every
|
|
37
|
+
* `vault.user.setMyVisibility()` invocation. Own-only at the caller
|
|
38
|
+
* site; this primitive does not enforce keyring ownership.
|
|
39
|
+
*/
|
|
40
|
+
export declare function persistUserVisibility(store: NoydbStore, vault: string, keyringId: string, visibility: UserVisibility): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Delete the visibility flag for `keyringId`. Called from `revoke()`
|
|
43
|
+
* alongside `deleteUserEnvelope` so the sidecar does not leak to a
|
|
44
|
+
* re-granted principal with the same `userId`. Idempotent — the store's
|
|
45
|
+
* `delete()` is already a no-op when the record is absent.
|
|
46
|
+
*/
|
|
47
|
+
export declare function deleteUserVisibility(store: NoydbStore, vault: string, keyringId: string): Promise<void>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy gate engine — the {@link checkGate} entry point.
|
|
3
|
+
*
|
|
4
|
+
* Given a configured {@link VaultPolicy}, an active session tier, and
|
|
5
|
+
* the factor proofs an actor is presenting, decide whether the gate
|
|
6
|
+
* permits the action. On denial, throws {@link PolicyDeniedError} with
|
|
7
|
+
* a stable {@link PolicyDenyReason} so consumers can branch in error
|
|
8
|
+
* UIs.
|
|
9
|
+
*
|
|
10
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → checkGate() API
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import { type PolicyDenyReason } from '../../kernel/errors.js';
|
|
15
|
+
import type { ActiveTier, FactorProof, GateName, GatePolicy, VaultPolicy } from '../../kernel/types.js';
|
|
16
|
+
/** Default freshness window — 5 minutes. */
|
|
17
|
+
export declare const DEFAULT_FRESHNESS_MS: number;
|
|
18
|
+
/** Caller-supplied context for one `checkGate` invocation. */
|
|
19
|
+
export interface CheckGateContext {
|
|
20
|
+
/** Tier the active session currently holds. */
|
|
21
|
+
readonly activeTier: ActiveTier;
|
|
22
|
+
/** Proofs the actor is presenting for this gate. */
|
|
23
|
+
readonly factors?: ReadonlyArray<FactorProof>;
|
|
24
|
+
/**
|
|
25
|
+
* If the host knows the actor is on a shared device, set this to
|
|
26
|
+
* `true` so the engine can apply `warn.sharedDevice` rules. Defaults
|
|
27
|
+
* to `false`.
|
|
28
|
+
*/
|
|
29
|
+
readonly sharedDevice?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Override `now()` for tests. Defaults to `Date.now()`.
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
readonly now?: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Decide whether `gate` permits the action under `context`. Throws
|
|
38
|
+
* {@link PolicyDeniedError} on denial; resolves with `void` on success.
|
|
39
|
+
*
|
|
40
|
+
* Lookup rules:
|
|
41
|
+
* - **Built-in gates** without a configured policy fail closed
|
|
42
|
+
* (`enabled: false`).
|
|
43
|
+
* - **App-defined gates** (`app:*`) without a configured policy are
|
|
44
|
+
* treated as no-op (allow). The developer registered the policy if
|
|
45
|
+
* they wanted enforcement; absence means the gate is informational.
|
|
46
|
+
*/
|
|
47
|
+
export declare function checkGate(policy: VaultPolicy, gate: GateName, context: CheckGateContext): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Same as {@link checkGate} but returns a structured verdict instead
|
|
50
|
+
* of throwing. Useful when an error UI wants to show the user
|
|
51
|
+
* "you'll need TOTP plus a recovery code to do that" without first
|
|
52
|
+
* triggering the action.
|
|
53
|
+
*/
|
|
54
|
+
export declare function describeGate(policy: VaultPolicy, gate: GateName, context: CheckGateContext): Promise<{
|
|
55
|
+
ok: true;
|
|
56
|
+
} | {
|
|
57
|
+
ok: false;
|
|
58
|
+
reason: PolicyDenyReason;
|
|
59
|
+
required: GatePolicy;
|
|
60
|
+
}>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy gate DSL — barrel export for the `@noy-db/hub/policy` surface.
|
|
3
|
+
*
|
|
4
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Policy gates DSL
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
export type { FactorKind, FactorRequirement, FactorProof, FactorProofBundle, GatePolicy, WarningRules, GateName, BuiltInGateName, VaultPolicy, ActiveTier, } from '../../kernel/types.js';
|
|
9
|
+
export { PolicyDeniedError, RecoveryNotEnrolledError, RecoveryProfileNotImplementedError, ManagedRecoveryNotEnrolledError, } from '../../kernel/errors.js';
|
|
10
|
+
export type { PolicyDenyReason } from '../../kernel/errors.js';
|
|
11
|
+
export { PERSONAL_POLICY, STRICT_POLICY, mergePolicy } from './presets.js';
|
|
12
|
+
export { checkGate, describeGate, DEFAULT_FRESHNESS_MS } from './engine.js';
|
|
13
|
+
export type { CheckGateContext } from './engine.js';
|
|
14
|
+
export { loadVaultPolicy, saveVaultPolicy, META_COLLECTION, POLICY_RECORD_ID, } from './storage.js';
|
|
15
|
+
export { createNoydbPolicy } from './noydb-facade.js';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { VaultPolicy, ReAuthOperation, NoydbPolicyApi, NoydbPolicyDeps, NoydbPolicyFactory } from '../../kernel/types.js';
|
|
2
|
+
export declare class NoydbPolicy implements NoydbPolicyApi {
|
|
3
|
+
private readonly deps;
|
|
4
|
+
constructor(deps: NoydbPolicyDeps);
|
|
5
|
+
/**
|
|
6
|
+
* Touch the policy enforcer for a vault (records activity, resets
|
|
7
|
+
* idle timer). Also touches the legacy session timer. No-op if no enforcer.
|
|
8
|
+
*/
|
|
9
|
+
touchPolicy(vault?: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Check that a policy-guarded operation is permitted.
|
|
12
|
+
* Throws `SessionPolicyError` if re-auth is required.
|
|
13
|
+
*/
|
|
14
|
+
checkPolicyOperation(vault: string, op: ReAuthOperation): void;
|
|
15
|
+
/**
|
|
16
|
+
* Read the active policy for a vault. Loads from `_meta/policy` on
|
|
17
|
+
* first call; subsequent calls hit the in-memory cache. Throws
|
|
18
|
+
* `ValidationError` if the vault has not been opened.
|
|
19
|
+
*/
|
|
20
|
+
getPolicy(vault: string): Promise<VaultPolicy>;
|
|
21
|
+
/**
|
|
22
|
+
* Replace the policy document at `_meta/policy` and update the
|
|
23
|
+
* in-memory cache. Gated by the `enroll-user` policy (a policy
|
|
24
|
+
* change is fundamentally a privilege-management action).
|
|
25
|
+
*/
|
|
26
|
+
updatePolicy(vault: string, override: Partial<VaultPolicy>): Promise<VaultPolicy>;
|
|
27
|
+
/** Read or persist the vault policy at `_meta/policy` on first open. */
|
|
28
|
+
bootstrapPolicy(vault: string, opts?: {
|
|
29
|
+
skipManagedCheck?: boolean;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Factory that builds the `NoydbPolicy` service. `createNoydb()`
|
|
34
|
+
* pre-resolves this via a dynamic import (mirrors
|
|
35
|
+
* `with-party/directory/user-envelope/api.js#createUserApi`) and threads
|
|
36
|
+
* it through `NoydbOptions.policyFactory` so `Noydb`'s constructor can
|
|
37
|
+
* build `this.policyManager` synchronously.
|
|
38
|
+
*/
|
|
39
|
+
export declare const createNoydbPolicy: NoydbPolicyFactory;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { VaultPolicy } from '../../kernel/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Default policy for personal vaults and SMB deployments — the gates
|
|
4
|
+
* that need an off-device factor get one (TOTP / email-OTP / paper
|
|
5
|
+
* recovery), the rest take a tier-1 unlock alone. Tier-3 (PIN) is the
|
|
6
|
+
* floor only for `rotate-unlock` because that's the
|
|
7
|
+
* "change my PIN" flow.
|
|
8
|
+
*
|
|
9
|
+
* The unspecified gates (e.g. `view-user-auth`) inherit the engine
|
|
10
|
+
* default of `{ enabled: false, minTier: 1 }` — they fail closed.
|
|
11
|
+
*
|
|
12
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Built-in gates
|
|
13
|
+
*/
|
|
14
|
+
export declare const PERSONAL_POLICY: VaultPolicy;
|
|
15
|
+
/**
|
|
16
|
+
* Strict policy for regulated deployments and shared workstations —
|
|
17
|
+
* raises the phrase floor to 8 words, demands two distinct factors for
|
|
18
|
+
* exports, and blocks export-on-shared-device. Use as a base for
|
|
19
|
+
* `policy: { ...STRICT_POLICY, gates: { ...STRICT_POLICY.gates, ... } }`
|
|
20
|
+
* tweaks.
|
|
21
|
+
*/
|
|
22
|
+
export declare const STRICT_POLICY: VaultPolicy;
|
|
23
|
+
/**
|
|
24
|
+
* Merge a developer override onto a preset. Unspecified gates inherit;
|
|
25
|
+
* specified gates fully replace the preset's entry for that gate.
|
|
26
|
+
*
|
|
27
|
+
* Example:
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* mergePolicy(PERSONAL_POLICY, {
|
|
31
|
+
* gates: {
|
|
32
|
+
* 'app:approve-large-payment': { minTier: 2, factors: [{ anyOf: ['totp'] }] },
|
|
33
|
+
* },
|
|
34
|
+
* })
|
|
35
|
+
* // → PERSONAL_POLICY plus the new app gate; existing gates intact.
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function mergePolicy(base: VaultPolicy, override?: Partial<VaultPolicy>): VaultPolicy;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistence helpers for the vault-level policy document
|
|
3
|
+
* (`_meta/policy`). Mirrors the bypass-AES pattern used by
|
|
4
|
+
* `_meta/handle` — the policy document is plain JSON, the envelope's
|
|
5
|
+
* `_iv` field is left empty.
|
|
6
|
+
*
|
|
7
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Storage location
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { NoydbStore, VaultPolicy } from '../../kernel/types.js';
|
|
12
|
+
/** Reserved collection name for vault-level metadata documents. */
|
|
13
|
+
export declare const META_COLLECTION = "_meta";
|
|
14
|
+
/** Reserved id for the vault-level policy document. */
|
|
15
|
+
export declare const POLICY_RECORD_ID = "policy";
|
|
16
|
+
/**
|
|
17
|
+
* Read the vault-level policy from `_meta/policy`. Returns `undefined`
|
|
18
|
+
* when no policy has been persisted (fresh vault, or a vault written
|
|
19
|
+
* before the policy module landed). The caller falls back to the
|
|
20
|
+
* default preset.
|
|
21
|
+
*
|
|
22
|
+
* Tolerates corrupted documents the same way `_meta/handle` does: a
|
|
23
|
+
* JSON parse failure surfaces as `undefined`, not a thrown error, so
|
|
24
|
+
* a bad write never permanently locks a vault.
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadVaultPolicy(store: NoydbStore, vault: string): Promise<VaultPolicy | undefined>;
|
|
27
|
+
/**
|
|
28
|
+
* Persist the vault-level policy at `_meta/policy`. Idempotent — call
|
|
29
|
+
* once at vault creation and again on `db.updatePolicy()` invocations.
|
|
30
|
+
*/
|
|
31
|
+
export declare function saveVaultPolicy(store: NoydbStore, vault: string, policy: VaultPolicy): Promise<void>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active session strategy — `withSession()` returns the real
|
|
3
|
+
* implementation that wires `SessionPolicy` validation, the
|
|
4
|
+
* `PolicyEnforcer`, and the global session-token registry into the
|
|
5
|
+
* Noydb lifecycle.
|
|
6
|
+
*
|
|
7
|
+
* Consumers opt in by:
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createNoydb } from '@noy-db/hub'
|
|
11
|
+
* import { withSession } from '@noy-db/hub/session'
|
|
12
|
+
*
|
|
13
|
+
* const db = await createNoydb({
|
|
14
|
+
* store: ...,
|
|
15
|
+
* user: ...,
|
|
16
|
+
* sessionPolicy: { idleTimeoutMs: 15 * 60_000 },
|
|
17
|
+
* sessionStrategy: withSession(),
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* The factory delegates to the existing `session-policy.ts` and
|
|
22
|
+
* `session.ts` modules. Splitting the import chain through this file
|
|
23
|
+
* is what lets tsup tree-shake the ~495 LOC of policy + token code
|
|
24
|
+
* out of the default bundle when no `withSession()` import is
|
|
25
|
+
* present.
|
|
26
|
+
*
|
|
27
|
+
* Note: dev-unlock (`devUnlock`, `cancelDevUnlock`) is a separate
|
|
28
|
+
* named import from `@noy-db/hub` and tree-shakes independently —
|
|
29
|
+
* apps that don't import it never include it.
|
|
30
|
+
*
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
import type { SessionStrategy } from './strategy.js';
|
|
34
|
+
export declare function withSession(): SessionStrategy;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev-mode persistent unlock —
|
|
3
|
+
*
|
|
4
|
+
* Solves the developer inner-loop friction: hot-reload destroys the session
|
|
5
|
+
* (page navigation semantics), forcing a passphrase re-entry every refresh.
|
|
6
|
+
*
|
|
7
|
+
* This module provides an opt-in, deliberately-named escape hatch that lets
|
|
8
|
+
* developers store the keyring payload in sessionStorage or localStorage so
|
|
9
|
+
* the vault auto-unlocks on every page load — without a passphrase,
|
|
10
|
+
* without a biometric prompt, without any OIDC flow.
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ WARNING — this is a loaded footgun ⚠️
|
|
13
|
+
* ─────────────────────────────────────────
|
|
14
|
+
* The keyring payload stored by this module contains the DEKs. Whoever has
|
|
15
|
+
* access to sessionStorage/localStorage has access to the DEKs. On a shared
|
|
16
|
+
* development machine, a compromised browser extension, or a mis-configured
|
|
17
|
+
* origin, this is a complete key exposure.
|
|
18
|
+
*
|
|
19
|
+
* This module is ONLY safe for local development. It must NEVER be active
|
|
20
|
+
* in production builds.
|
|
21
|
+
*
|
|
22
|
+
* Guardrails (all enforced by the module, not by the caller)
|
|
23
|
+
* ──────────────────────────────────────────────────────────
|
|
24
|
+
* 1. **Production guard:** `enableDevUnlock()` throws immediately if
|
|
25
|
+
* `process.env.NODE_ENV === 'production'` or if `import.meta.env?.PROD === true`
|
|
26
|
+
* (Vite convention). Also throws if the hostname is NOT localhost or 127.0.0.1.
|
|
27
|
+
*
|
|
28
|
+
* 2. **Explicit acknowledgement string:** the caller must pass
|
|
29
|
+
* `acknowledge: 'I-UNDERSTAND-THIS-DISABLES-UNLOCK-SECURITY'` or the call
|
|
30
|
+
* throws. This string appears in every grep for `devUnlock` in the codebase,
|
|
31
|
+
* making it impossible to enable this feature accidentally.
|
|
32
|
+
*
|
|
33
|
+
* 3. **Scope is vault + userId:** the storage key includes both the
|
|
34
|
+
* vault name and the userId, so dev-unlock for vault-A does
|
|
35
|
+
* NOT auto-unlock vault-B.
|
|
36
|
+
*
|
|
37
|
+
* 4. **Storage scope:** default is `sessionStorage` (cleared on tab close).
|
|
38
|
+
* `localStorage` is opt-in and requires an additional
|
|
39
|
+
* `persistAcrossTabs: true` flag in the options.
|
|
40
|
+
*
|
|
41
|
+
* 5. **Clear method:** `clearDevUnlock()` removes the stored payload. Wire
|
|
42
|
+
* this to a dev toolbar button or `Ctrl+Shift+L` so clearing is one action.
|
|
43
|
+
*
|
|
44
|
+
* 6. **Console banner:** on first enable, a highly visible console warning
|
|
45
|
+
* fires. Cannot be suppressed.
|
|
46
|
+
*
|
|
47
|
+
* Usage
|
|
48
|
+
* ─────
|
|
49
|
+
* ```ts
|
|
50
|
+
* // In your dev entry point only (guarded by import.meta.env.DEV):
|
|
51
|
+
* if (import.meta.env.DEV) {
|
|
52
|
+
* const { enableDevUnlock, loadDevUnlock } = await import('@noy-db/hub')
|
|
53
|
+
* enableDevUnlock('my-compartment', 'alice', keyring, {
|
|
54
|
+
* acknowledge: 'I-UNDERSTAND-THIS-DISABLES-UNLOCK-SECURITY',
|
|
55
|
+
* })
|
|
56
|
+
* }
|
|
57
|
+
*
|
|
58
|
+
* // On page load:
|
|
59
|
+
* if (import.meta.env.DEV) {
|
|
60
|
+
* const keyring = await loadDevUnlock('my-compartment', 'alice')
|
|
61
|
+
* if (keyring) {
|
|
62
|
+
* // Skip unlock prompt, use keyring directly
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
import type { UnlockedKeyring } from '../team/keyring.js';
|
|
68
|
+
export interface DevUnlockOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Required: the exact string 'I-UNDERSTAND-THIS-DISABLES-UNLOCK-SECURITY'.
|
|
71
|
+
* Any other value causes `enableDevUnlock()` to throw.
|
|
72
|
+
*/
|
|
73
|
+
acknowledge: string;
|
|
74
|
+
/**
|
|
75
|
+
* If `true`, stores in localStorage (persists across tabs and browser restarts).
|
|
76
|
+
* If `false` (default), stores in sessionStorage (cleared on tab close).
|
|
77
|
+
*/
|
|
78
|
+
persistAcrossTabs?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Serialize and store a keyring to browser storage for dev-mode auto-unlock.
|
|
82
|
+
*
|
|
83
|
+
* Throws immediately if:
|
|
84
|
+
* - The acknowledge string is wrong.
|
|
85
|
+
* - Running in a production environment (NODE_ENV=production).
|
|
86
|
+
* - Running on a non-localhost hostname.
|
|
87
|
+
*
|
|
88
|
+
* Emits a highly visible console warning that cannot be suppressed.
|
|
89
|
+
*
|
|
90
|
+
* @param vault - The vault name.
|
|
91
|
+
* @param userId - The user ID.
|
|
92
|
+
* @param keyring - The unlocked keyring to persist.
|
|
93
|
+
* @param options - Options including the required acknowledge string.
|
|
94
|
+
*/
|
|
95
|
+
export declare function enableDevUnlock(vault: string, userId: string, keyring: UnlockedKeyring, options: DevUnlockOptions): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Load a dev-mode keyring from browser storage.
|
|
98
|
+
*
|
|
99
|
+
* Returns `null` if no dev-unlock state is stored for this vault + user,
|
|
100
|
+
* or if the stored payload is malformed.
|
|
101
|
+
*
|
|
102
|
+
* Does NOT perform the production environment check — it's safe to CALL
|
|
103
|
+
* `loadDevUnlock` in production (it will simply return `null` because no
|
|
104
|
+
* dev-unlock state was ever written). The guard only fires on `enableDevUnlock`.
|
|
105
|
+
*
|
|
106
|
+
* @param vault - The vault name.
|
|
107
|
+
* @param userId - The user ID.
|
|
108
|
+
* @param options - Optional storage override.
|
|
109
|
+
*/
|
|
110
|
+
export declare function loadDevUnlock(vault: string, userId: string, options?: {
|
|
111
|
+
persistAcrossTabs?: boolean;
|
|
112
|
+
}): Promise<UnlockedKeyring | null>;
|
|
113
|
+
/**
|
|
114
|
+
* Remove dev-unlock state from browser storage.
|
|
115
|
+
*
|
|
116
|
+
* Safe to call in production (no-op if no dev state exists).
|
|
117
|
+
*/
|
|
118
|
+
export declare function clearDevUnlock(vault: string, userId: string, options?: {
|
|
119
|
+
persistAcrossTabs?: boolean;
|
|
120
|
+
}): void;
|
|
121
|
+
/**
|
|
122
|
+
* Check if dev-unlock state exists for this vault + user.
|
|
123
|
+
*
|
|
124
|
+
* Safe to call in production (returns false if nothing is stored).
|
|
125
|
+
*/
|
|
126
|
+
export declare function isDevUnlockActive(vault: string, userId: string, options?: {
|
|
127
|
+
persistAcrossTabs?: boolean;
|
|
128
|
+
}): boolean;
|