@noy-db/hub 0.3.0-pre.9 → 0.4.0-pre.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 +5 -5
- package/dist/api-3A3S4SHH.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +18 -18
- package/dist/backup-YPUEKIJC.js +242 -0
- package/dist/backup-YPUEKIJC.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 -32
- package/dist/chunk-2PCAVW2I.js +50 -0
- package/dist/chunk-3ELCWU56.js +344 -0
- package/dist/chunk-3ELCWU56.js.map +1 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-554KLAAN.js +778 -0
- package/dist/chunk-5PFOMHTB.js +135 -0
- package/dist/chunk-5WZXVULX.js +209 -0
- package/dist/chunk-6HPG2YNX.js +38 -0
- package/dist/chunk-6HY2X62D.js +69 -0
- package/dist/chunk-6NQMXTYC.js +123 -0
- package/dist/chunk-6XE5TMPR.js +367 -0
- package/dist/chunk-A4FXFAKF.js +45 -0
- package/dist/chunk-A5BDDEXK.js +1537 -0
- package/dist/chunk-A5BDDEXK.js.map +1 -0
- package/dist/chunk-ANATMTOA.js +205 -0
- package/dist/chunk-BOKIKJJB.js +94 -0
- package/dist/chunk-CJ5KKU6X.js +49 -0
- package/dist/chunk-CZTLE22N.js +381 -0
- package/dist/chunk-CZTLE22N.js.map +1 -0
- package/dist/chunk-DDHM2TLX.js +164 -0
- package/dist/chunk-DDHM2TLX.js.map +1 -0
- package/dist/chunk-DRWBEDYO.js +37 -0
- package/dist/chunk-DRWBEDYO.js.map +1 -0
- package/dist/chunk-DSBQODMZ.js +202 -0
- package/dist/chunk-EO43ANYJ.js +382 -0
- package/dist/chunk-EWPOHMN2.js +255 -0
- package/dist/chunk-FH52K7EG.js +50 -0
- package/dist/chunk-FH52K7EG.js.map +1 -0
- package/dist/chunk-FXZDAV62.js +826 -0
- package/dist/chunk-FXZDAV62.js.map +1 -0
- package/dist/chunk-GDG5VVYG.js +167 -0
- package/dist/chunk-GDG5VVYG.js.map +1 -0
- package/dist/chunk-GULTLPFB.js +621 -0
- package/dist/chunk-GULTLPFB.js.map +1 -0
- package/dist/chunk-GWKAVKHI.js +71 -0
- package/dist/chunk-H2KSZMIX.js +164 -0
- package/dist/chunk-HOONYZY2.js +404 -0
- package/dist/chunk-HQBM64EE.js +957 -0
- package/dist/chunk-HQBM64EE.js.map +1 -0
- package/dist/chunk-IAO54J4R.js +333 -0
- package/dist/chunk-IAO54J4R.js.map +1 -0
- package/dist/chunk-IFJTPAQQ.js +150 -0
- package/dist/chunk-IFJTPAQQ.js.map +1 -0
- package/dist/chunk-IGJCYUT5.js +99 -0
- package/dist/chunk-IGJCYUT5.js.map +1 -0
- package/dist/chunk-IK43HLDQ.js +739 -0
- package/dist/chunk-IK43HLDQ.js.map +1 -0
- package/dist/chunk-ISMV2QVG.js +54 -0
- package/dist/chunk-IY23KFNZ.js +95 -0
- package/dist/chunk-JBBSYJHP.js +129 -0
- package/dist/chunk-JFCV5QIK.js +117 -0
- package/dist/chunk-JK733I5V.js +23 -0
- package/dist/chunk-JK733I5V.js.map +1 -0
- package/dist/chunk-JRBNCUNT.js +371 -0
- package/dist/chunk-JRBNCUNT.js.map +1 -0
- package/dist/chunk-JVBO4SZL.js +29 -0
- package/dist/chunk-JVBO4SZL.js.map +1 -0
- package/dist/chunk-KPZS5QAQ.js +151 -0
- package/dist/chunk-KPZS5QAQ.js.map +1 -0
- package/dist/chunk-KS6SAVCZ.js +247 -0
- package/dist/chunk-KS6SAVCZ.js.map +1 -0
- package/dist/chunk-LVGTA624.js +480 -0
- package/dist/chunk-LVGTA624.js.map +1 -0
- package/dist/chunk-M75ZZHSR.js +30 -0
- package/dist/chunk-MT62YSPZ.js +392 -0
- package/dist/chunk-MT62YSPZ.js.map +1 -0
- package/dist/chunk-N6WF5PKC.js +29 -0
- package/dist/chunk-NCCBLYEB.js +150 -0
- package/dist/chunk-OCVM6KDH.js +99 -0
- package/dist/chunk-ONTBCHCP.js +80 -0
- package/dist/chunk-PK6JIDQ4.js +14425 -0
- package/dist/chunk-PK6JIDQ4.js.map +1 -0
- package/dist/chunk-QDPZWTN2.js +74 -0
- package/dist/chunk-QDPZWTN2.js.map +1 -0
- package/dist/chunk-R3BLCFD2.js +130 -0
- package/dist/chunk-RA5VTXXG.js +173 -0
- package/dist/chunk-RA5VTXXG.js.map +1 -0
- package/dist/chunk-RDXW3OBQ.js +21 -0
- package/dist/chunk-RFI7GGFO.js +230 -0
- package/dist/chunk-RJ6K6K5M.js +36 -0
- package/dist/chunk-RJ6K6K5M.js.map +1 -0
- package/dist/chunk-RNG4VRP4.js +75 -0
- package/dist/chunk-RTEK4C4I.js +41 -0
- package/dist/chunk-S3BFKGET.js +369 -0
- package/dist/chunk-S3BFKGET.js.map +1 -0
- package/dist/chunk-S6Q37VGE.js +30 -0
- package/dist/chunk-SMIRGMS7.js +30 -0
- package/dist/chunk-SMIRGMS7.js.map +1 -0
- package/dist/chunk-SV6EAJEP.js +86 -0
- package/dist/chunk-T36RFODW.js +180 -0
- package/dist/chunk-T36RFODW.js.map +1 -0
- package/dist/chunk-T3GY65MA.js +367 -0
- package/dist/chunk-TAGR72IR.js +515 -0
- package/dist/chunk-TAGR72IR.js.map +1 -0
- package/dist/chunk-THVIPWRF.js +495 -0
- package/dist/chunk-THVIPWRF.js.map +1 -0
- package/dist/chunk-TIGPQDYP.js +14 -0
- package/dist/chunk-U6JMEH2P.js +261 -0
- package/dist/chunk-UC2ETWF3.js +34 -0
- package/dist/chunk-UDSR4X4L.js +235 -0
- package/dist/chunk-UHNGNKLV.js +2782 -0
- package/dist/chunk-UHNGNKLV.js.map +1 -0
- package/dist/chunk-VAIS3SOM.js +74 -0
- package/dist/chunk-VCBHAE4R.js +124 -0
- package/dist/chunk-VCTXU4AT.js +32 -0
- package/dist/chunk-VCTXU4AT.js.map +1 -0
- package/dist/chunk-VEALDPHW.js +524 -0
- package/dist/chunk-VEALDPHW.js.map +1 -0
- package/dist/chunk-VKCADNMR.js +589 -0
- package/dist/chunk-VRBTNCM4.js +720 -0
- package/dist/chunk-VRBTNCM4.js.map +1 -0
- package/dist/chunk-VYYM3MEN.js +98 -0
- package/dist/chunk-VYYM3MEN.js.map +1 -0
- package/dist/chunk-W2OG6JOL.js +1554 -0
- package/dist/chunk-W2OG6JOL.js.map +1 -0
- package/dist/chunk-W4TCUGQR.js +1128 -0
- package/dist/chunk-W4TCUGQR.js.map +1 -0
- package/dist/chunk-WG4QBZDN.js +283 -0
- package/dist/chunk-WG4QBZDN.js.map +1 -0
- package/dist/chunk-WHXXI3W5.js +135 -0
- package/dist/chunk-WHXXI3W5.js.map +1 -0
- package/dist/chunk-WKGF2TJR.js +45 -0
- package/dist/chunk-WNGGJWF7.js +36 -0
- package/dist/chunk-WOM2HTML.js +59 -0
- package/dist/chunk-WQIYTNJV.js +70 -0
- package/dist/chunk-WZSHL6DQ.js +59 -0
- package/dist/chunk-XDIAFPUM.js +42 -0
- package/dist/chunk-XJMBYYQK.js +40 -0
- package/dist/chunk-XTHCN77N.js +91 -0
- package/dist/chunk-XUW3PXHU.js +248 -0
- package/dist/chunk-XUW3PXHU.js.map +1 -0
- package/dist/chunk-YCH5GBN6.js +99 -0
- package/dist/chunk-YTGDPCPW.js +155 -0
- package/dist/chunk-YZQOGE2L.js +23 -0
- package/dist/chunk-Z4PD65VQ.js +265 -0
- package/dist/chunk-Z4PD65VQ.js.map +1 -0
- package/dist/chunk-ZXEZCY6F.js +85 -0
- package/dist/classified/index.js +5 -5
- package/dist/classified-marker-QWMASIT7.js +28 -0
- package/dist/classified-marker-QWMASIT7.js.map +1 -0
- package/dist/collection-facade-KMBWNCYP.js +44 -0
- package/dist/computed-DSMPXG2Y.js +11 -0
- package/dist/consent/index.js +9 -9
- package/dist/cover-QJRXINN5.js +52 -0
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-66VGI6JV.js +28 -0
- package/dist/delegation-SU6CV3W7.js +25 -0
- package/dist/derivations/index.js +12 -12
- package/dist/derive-6RWU4EOA.js +21 -0
- package/dist/enclave-TKPN2G2U.js +141 -0
- package/dist/executor-KGNLJD6M.js +9 -0
- package/dist/executor-UX4FASYZ.js +26 -0
- package/dist/executor-XGIS6CR7.js +9 -0
- package/dist/export-accessible-LKW3QV22.js +23 -0
- package/dist/extract-partition-UP2ARO75.js +38 -0
- package/dist/fanout-sidecar-B5LVUMQX.js +74 -0
- package/dist/find-YS6XWB46.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 +21 -19
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +310 -1493
- package/dist/index.js +331 -191
- 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-3ACYX7LO.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 +1927 -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 +836 -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 +3245 -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 +1744 -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-PTK7XZYT.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-MQQXBUCY.js +24 -0
- package/dist/link-set-SLJHDNRB.js +31 -0
- package/dist/materialized-views/index.js +20 -17
- package/dist/noydb-ANIW5FLE.js +69 -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 +13 -11
- package/dist/policy-YDLCOX4P.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-2YHSADFI.js +60 -0
- package/dist/post-register-2YHSADFI.js.map +1 -0
- package/dist/purge-scope-FGNNLWHD.js +24 -0
- package/dist/purge-scope-FGNNLWHD.js.map +1 -0
- package/dist/query/index.js +12 -10
- package/dist/read-only-facade-CHCKSEPD.js +8 -0
- package/dist/register-PAM3ASRZ.js +23 -0
- package/dist/registry-4S2U2TR4.js +19 -0
- package/dist/registry-NPOWJHC4.js +9 -0
- package/dist/registry-VZ3CCI2R.js +18 -0
- package/dist/request-withdrawal-DI3H5WUI.js +31 -0
- package/dist/reveal-HWO4YMTJ.js +38 -0
- package/dist/reveal-HWO4YMTJ.js.map +1 -0
- package/dist/revoke-R5CZSVUT.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/seed-3ZMF5EQA.js +231 -0
- package/dist/seed-3ZMF5EQA.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-MBVHW4WE.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/stale-VZL4OGUB.js +29 -0
- package/dist/storage-3MEJUENZ.js +23 -0
- package/dist/store-coordination-provider-FKX3F6TQ.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-26Y5GNMK.js +140 -0
- package/dist/verify-26Y5GNMK.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-IPLXE36W.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 +73 -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 +128 -0
- package/dist/with-formula/materialized-views/stale.d.ts +113 -0
- package/dist/with-formula/materialized-views/types.d.ts +399 -0
- package/dist/with-formula/materialized-views/with-materialized-view.d.ts +28 -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/cover/custom.d.ts +34 -0
- package/dist/with-party/directory/cover/index.d.ts +19 -0
- package/dist/with-party/directory/cover/schema.d.ts +39 -0
- package/dist/with-party/directory/cover/storage.d.ts +71 -0
- package/dist/with-party/directory/cover/types.d.ts +149 -0
- package/dist/with-party/directory/index.d.ts +11 -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 +416 -0
- package/dist/with-pod/format.d.ts +207 -0
- package/dist/with-pod/index.d.ts +21 -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-TZDATQVR.js +28 -0
- package/package.json +47 -55
- package/dist/adapter/index.d.ts +0 -4
- package/dist/adapter/index.js +0 -15
- package/dist/aggregate/index.d.ts +0 -41
- package/dist/api-HV4PDUWF.js +0 -20
- package/dist/as/index.d.ts +0 -6
- package/dist/at/index.d.ts +0 -4
- package/dist/attestation/index.d.ts +0 -19
- package/dist/backup-ODXO7OGA.js +0 -225
- package/dist/backup-ODXO7OGA.js.map +0 -1
- package/dist/blobs/index.d.ts +0 -43
- package/dist/bundle/index.d.ts +0 -121
- package/dist/bundle-DlSxo31R.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -8
- package/dist/chunk-2644KEGW.js +0 -247
- package/dist/chunk-2644KEGW.js.map +0 -1
- package/dist/chunk-2HVUKRNE.js +0 -21
- package/dist/chunk-2KOSJTMU.js +0 -69
- package/dist/chunk-2UQ4RMHV.js +0 -167
- package/dist/chunk-2UQ4RMHV.js.map +0 -1
- package/dist/chunk-2XE6LIXT.js +0 -515
- package/dist/chunk-2XE6LIXT.js.map +0 -1
- package/dist/chunk-34RRRIC3.js +0 -71
- package/dist/chunk-3C5CKXFI.js +0 -621
- package/dist/chunk-3C5CKXFI.js.map +0 -1
- package/dist/chunk-3I4KYWNP.js +0 -30
- package/dist/chunk-42KVY3OC.js +0 -86
- package/dist/chunk-4C4WBS4V.js +0 -13822
- package/dist/chunk-4C4WBS4V.js.map +0 -1
- package/dist/chunk-4G3IT7J7.js +0 -280
- package/dist/chunk-4G3IT7J7.js.map +0 -1
- package/dist/chunk-4RQ62VSR.js +0 -53
- package/dist/chunk-4RQ62VSR.js.map +0 -1
- package/dist/chunk-4ZSGSRBI.js +0 -1221
- package/dist/chunk-4ZSGSRBI.js.map +0 -1
- package/dist/chunk-5GAX2QOH.js +0 -132
- package/dist/chunk-5GAX2QOH.js.map +0 -1
- package/dist/chunk-5SAZMBW7.js +0 -202
- package/dist/chunk-5TZZUL5X.js +0 -30
- package/dist/chunk-6CU3FN74.js +0 -777
- package/dist/chunk-6G2SCQYS.js +0 -29
- package/dist/chunk-6G2SCQYS.js.map +0 -1
- package/dist/chunk-6MWUANRF.js +0 -29
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-6ULCYCMU.js +0 -74
- package/dist/chunk-7HAPHVRJ.js +0 -1695
- package/dist/chunk-7HAPHVRJ.js.map +0 -1
- package/dist/chunk-7IZQTCTR.js +0 -382
- package/dist/chunk-7ZANJ6JZ.js +0 -265
- package/dist/chunk-7ZANJ6JZ.js.map +0 -1
- package/dist/chunk-A2APWS32.js +0 -150
- package/dist/chunk-A2APWS32.js.map +0 -1
- package/dist/chunk-A4MAD6PO.js +0 -99
- package/dist/chunk-ANDBBA2P.js +0 -36
- package/dist/chunk-ANDBBA2P.js.map +0 -1
- package/dist/chunk-AUR7MRHA.js +0 -404
- package/dist/chunk-AYGZMQP5.js +0 -75
- package/dist/chunk-BGIZAFY7.js +0 -1
- package/dist/chunk-CJEMA2Z6.js +0 -230
- package/dist/chunk-CTSFKDGA.js +0 -40
- package/dist/chunk-CU62BBRB.js +0 -1465
- package/dist/chunk-CU62BBRB.js.map +0 -1
- package/dist/chunk-CWCCYH34.js +0 -23
- package/dist/chunk-DEYAO3N6.js +0 -589
- package/dist/chunk-DFIBOSOQ.js +0 -85
- package/dist/chunk-E5AHO65E.js +0 -150
- package/dist/chunk-FC3XK5JT.js +0 -99
- package/dist/chunk-FGOGS7CE.js +0 -662
- package/dist/chunk-FGOGS7CE.js.map +0 -1
- package/dist/chunk-GX2BYNCT.js +0 -117
- package/dist/chunk-GZ2MOPVX.js +0 -291
- package/dist/chunk-GZ2MOPVX.js.map +0 -1
- package/dist/chunk-H57P2SJB.js +0 -126
- package/dist/chunk-H57P2SJB.js.map +0 -1
- package/dist/chunk-HBTT7YQX.js +0 -94
- package/dist/chunk-HOCEGVGQ.js +0 -36
- package/dist/chunk-ICV32FPK.js +0 -50
- package/dist/chunk-IIP5WFVT.js +0 -462
- package/dist/chunk-IIP5WFVT.js.map +0 -1
- package/dist/chunk-IUKGIB2Q.js +0 -91
- package/dist/chunk-IWTYFS3D.js +0 -129
- package/dist/chunk-JC5R7P44.js +0 -355
- package/dist/chunk-JC5R7P44.js.map +0 -1
- package/dist/chunk-K2WCO3NX.js +0 -1
- package/dist/chunk-KBBWY46Y.js +0 -14
- package/dist/chunk-KBF5GSGX.js +0 -367
- package/dist/chunk-KCG3BHFG.js +0 -99
- package/dist/chunk-KCG3BHFG.js.map +0 -1
- package/dist/chunk-KNXN47MO.js +0 -155
- package/dist/chunk-KNXN47MO.js.map +0 -1
- package/dist/chunk-KWLD2D75.js +0 -38
- package/dist/chunk-KXKLKJW4.js +0 -49
- package/dist/chunk-KYC4LIEU.js +0 -123
- package/dist/chunk-LEOXZY36.js +0 -130
- package/dist/chunk-M5I354EE.js +0 -235
- package/dist/chunk-MK2BSS44.js +0 -34
- package/dist/chunk-MSVY7ULZ.js +0 -70
- package/dist/chunk-NNWK3PSY.js +0 -135
- package/dist/chunk-NSZ6J5DF.js +0 -59
- package/dist/chunk-NUEFXLZU.js +0 -59
- package/dist/chunk-NYVQCZ54.js +0 -261
- package/dist/chunk-OQAODTYR.js +0 -45
- package/dist/chunk-OV4CMJGR.js +0 -164
- package/dist/chunk-PEDZFFKW.js +0 -41
- package/dist/chunk-PF3FQCCF.js +0 -164
- package/dist/chunk-PF3FQCCF.js.map +0 -1
- package/dist/chunk-Q2KVKTC2.js +0 -823
- package/dist/chunk-Q2KVKTC2.js.map +0 -1
- package/dist/chunk-QJR3W3MF.js +0 -23
- package/dist/chunk-QJR3W3MF.js.map +0 -1
- package/dist/chunk-QTXQ6RNZ.js +0 -255
- package/dist/chunk-RJ5522XX.js +0 -453
- package/dist/chunk-RJ5522XX.js.map +0 -1
- package/dist/chunk-RMUXPHIH.js +0 -930
- package/dist/chunk-RMUXPHIH.js.map +0 -1
- package/dist/chunk-S6AQXDN4.js +0 -155
- package/dist/chunk-SSFC3IYA.js +0 -275
- package/dist/chunk-SSFC3IYA.js.map +0 -1
- package/dist/chunk-SZCHEDML.js +0 -209
- package/dist/chunk-TDPEJINP.js +0 -188
- package/dist/chunk-TDPEJINP.js.map +0 -1
- package/dist/chunk-TQ3REHVF.js +0 -95
- package/dist/chunk-TQ3REHVF.js.map +0 -1
- package/dist/chunk-UNJU345Q.js +0 -32
- package/dist/chunk-UNJU345Q.js.map +0 -1
- package/dist/chunk-V7RNIND6.js +0 -265
- package/dist/chunk-V7RNIND6.js.map +0 -1
- package/dist/chunk-VJ3NQK4K.js +0 -205
- package/dist/chunk-WNA6T3MA.js +0 -686
- package/dist/chunk-WNA6T3MA.js.map +0 -1
- package/dist/chunk-WVCQ75OK.js +0 -124
- package/dist/chunk-WXSYDNBT.js +0 -39
- package/dist/chunk-WXSYDNBT.js.map +0 -1
- package/dist/chunk-X66MXMR5.js +0 -42
- package/dist/chunk-XHD3L3JO.js +0 -930
- package/dist/chunk-XHD3L3JO.js.map +0 -1
- package/dist/chunk-XJK2WIYN.js +0 -430
- package/dist/chunk-XJK2WIYN.js.map +0 -1
- package/dist/chunk-XQ7UYPVN.js +0 -95
- package/dist/chunk-Y2OCKFZ3.js +0 -80
- package/dist/chunk-YBFOBRTO.js +0 -367
- package/dist/chunk-YLN33ADH.js +0 -97
- package/dist/chunk-YLN33ADH.js.map +0 -1
- package/dist/chunk-Z5YFRMG5.js +0 -45
- package/dist/chunk-ZWQFOXBR.js +0 -54
- package/dist/classified/index.d.ts +0 -16
- package/dist/classified-marker-IO5EBW7Q.js +0 -24
- package/dist/classified-marker-IO5EBW7Q.js.map +0 -1
- package/dist/collection-facade-3RAXG2OU.js +0 -38
- package/dist/computed-R62HGCO4.js +0 -11
- package/dist/consent/index.d.ts +0 -22
- package/dist/crdt/index.d.ts +0 -33
- package/dist/dead-filter-VNA4M3GP.js +0 -28
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-ZKII5UBI.js +0 -25
- package/dist/derivations/index.d.ts +0 -69
- package/dist/derive-5D2C3WG4.js +0 -21
- package/dist/describe/index.d.ts +0 -4
- package/dist/describe/index.js +0 -1
- package/dist/dev-unlock-DDTafVO6.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-EUBEJGPG.js +0 -125
- package/dist/executor-IL7SRNUZ.js +0 -23
- package/dist/executor-OUA2Y6YC.js +0 -9
- package/dist/executor-WAEI6PDV.js +0 -9
- package/dist/export-accessible-O55RKAGC.js +0 -23
- package/dist/extract-partition-VBGCBA6Q.js +0 -36
- package/dist/fanout-sidecar-CI5BCMQM.js +0 -74
- package/dist/find-FISGUWSK.js +0 -11
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -34
- package/dist/hash-DBkZfIBW.d.ts +0 -72
- package/dist/history/index.d.ts +0 -60
- package/dist/i18n/index.d.ts +0 -56
- package/dist/in/index.d.ts +0 -4
- package/dist/index-B9QdHytu.d.ts +0 -123
- package/dist/index-CyclmyDr.d.ts +0 -122
- package/dist/index-DzhNI2vE.d.ts +0 -23260
- package/dist/indexing/index.d.ts +0 -38
- package/dist/issue-EQAWIYFQ.js +0 -19
- package/dist/kernel/index.d.ts +0 -31
- package/dist/kernel/index.js +0 -60
- package/dist/lazy/index.d.ts +0 -20
- package/dist/ledger-AJA2SR3C.js +0 -42
- package/dist/liberate-SEGR4JLY.js +0 -24
- package/dist/link-set-YBAC2DQT.js +0 -31
- package/dist/materialized-views/index.d.ts +0 -182
- package/dist/mime-magic-CbV1quyp.d.ts +0 -103
- package/dist/noydb-AMEOU456.js +0 -65
- package/dist/on/index.d.ts +0 -4
- package/dist/overlay-views/index.d.ts +0 -97
- package/dist/periods/index.d.ts +0 -19
- package/dist/pod/index.d.ts +0 -62
- package/dist/policy-SDGRWVIL.js +0 -41
- package/dist/portability/index.d.ts +0 -19
- package/dist/post-register-MROIUA5O.js +0 -55
- package/dist/post-register-MROIUA5O.js.map +0 -1
- package/dist/public-envelope-J5PLQOW2.js +0 -32
- package/dist/query/index.d.ts +0 -4
- package/dist/read-only-facade-UCYNRE56.js +0 -8
- package/dist/register-OVJKW7BS.js +0 -23
- package/dist/registry-5RJSK5AJ.js +0 -9
- package/dist/registry-DQRNTWRL.js +0 -18
- package/dist/registry-LTGLERS7.js +0 -19
- package/dist/request-withdrawal-27O77D2V.js +0 -31
- package/dist/reveal-LT3I2K4P.js +0 -38
- package/dist/reveal-LT3I2K4P.js.map +0 -1
- package/dist/revoke-4N45G7D2.js +0 -24
- package/dist/revoke-4N45G7D2.js.map +0 -1
- package/dist/satellites/index.d.ts +0 -4
- package/dist/sealed-record/index.d.ts +0 -68
- package/dist/session/index.d.ts +0 -43
- package/dist/shadow/index.d.ts +0 -14
- package/dist/signer-XJCOV7JD.js +0 -25
- package/dist/signer-XJCOV7JD.js.map +0 -1
- package/dist/snapshots/index.d.ts +0 -25
- package/dist/stale-IYYXEH3U.js +0 -14
- package/dist/stale-IYYXEH3U.js.map +0 -1
- package/dist/storage-Y44CAPE6.js +0 -23
- package/dist/storage-Y44CAPE6.js.map +0 -1
- package/dist/store-coordination-provider-WKGAE2WI.js +0 -142
- package/dist/subject-index-CyOgGMJL.d.ts +0 -380
- package/dist/sync/index.d.ts +0 -40
- package/dist/team/index.d.ts +0 -154
- package/dist/tiers/index.d.ts +0 -4
- package/dist/to/index.d.ts +0 -4
- package/dist/transition-guard-BOUkzQU4.d.ts +0 -165
- package/dist/tx/index.d.ts +0 -34
- package/dist/ui/index.d.ts +0 -4
- package/dist/ulid-DRH25k3y.d.ts +0 -66
- package/dist/util/index.d.ts +0 -79
- package/dist/validators-B3SalxlJ.d.ts +0 -101
- package/dist/vault-diff-Dt9NkLzw.d.ts +0 -147
- package/dist/verify-GH6CWVSW.js +0 -139
- package/dist/verify-GH6CWVSW.js.map +0 -1
- package/dist/walk-76UCFXYV.js +0 -241
- package/dist/with/index.d.ts +0 -37
- package/dist/with-materialized-view-BP33v1Z6.d.ts +0 -27
- package/dist/with-overlayed-view-DntFpOKN.d.ts +0 -12
- package/dist/with-rollup-ClCHO6-4.d.ts +0 -47
- package/dist/withdraw-accessible-6J2UH3IN.js +0 -28
- package/dist/withdraw-accessible-6J2UH3IN.js.map +0 -1
- /package/dist/{adapter/index.js.map → api-3A3S4SHH.js.map} +0 -0
- /package/dist/{chunk-ICV32FPK.js.map → chunk-2PCAVW2I.js.map} +0 -0
- /package/dist/{chunk-6CU3FN74.js.map → chunk-554KLAAN.js.map} +0 -0
- /package/dist/{chunk-NNWK3PSY.js.map → chunk-5PFOMHTB.js.map} +0 -0
- /package/dist/{chunk-SZCHEDML.js.map → chunk-5WZXVULX.js.map} +0 -0
- /package/dist/{chunk-KWLD2D75.js.map → chunk-6HPG2YNX.js.map} +0 -0
- /package/dist/{chunk-2KOSJTMU.js.map → chunk-6HY2X62D.js.map} +0 -0
- /package/dist/{chunk-KYC4LIEU.js.map → chunk-6NQMXTYC.js.map} +0 -0
- /package/dist/{chunk-KBF5GSGX.js.map → chunk-6XE5TMPR.js.map} +0 -0
- /package/dist/{chunk-Z5YFRMG5.js.map → chunk-A4FXFAKF.js.map} +0 -0
- /package/dist/{chunk-VJ3NQK4K.js.map → chunk-ANATMTOA.js.map} +0 -0
- /package/dist/{chunk-HBTT7YQX.js.map → chunk-BOKIKJJB.js.map} +0 -0
- /package/dist/{chunk-KXKLKJW4.js.map → chunk-CJ5KKU6X.js.map} +0 -0
- /package/dist/{chunk-5SAZMBW7.js.map → chunk-DSBQODMZ.js.map} +0 -0
- /package/dist/{chunk-7IZQTCTR.js.map → chunk-EO43ANYJ.js.map} +0 -0
- /package/dist/{chunk-QTXQ6RNZ.js.map → chunk-EWPOHMN2.js.map} +0 -0
- /package/dist/{chunk-34RRRIC3.js.map → chunk-GWKAVKHI.js.map} +0 -0
- /package/dist/{chunk-OV4CMJGR.js.map → chunk-H2KSZMIX.js.map} +0 -0
- /package/dist/{chunk-AUR7MRHA.js.map → chunk-HOONYZY2.js.map} +0 -0
- /package/dist/{chunk-ZWQFOXBR.js.map → chunk-ISMV2QVG.js.map} +0 -0
- /package/dist/{chunk-XQ7UYPVN.js.map → chunk-IY23KFNZ.js.map} +0 -0
- /package/dist/{chunk-IWTYFS3D.js.map → chunk-JBBSYJHP.js.map} +0 -0
- /package/dist/{chunk-GX2BYNCT.js.map → chunk-JFCV5QIK.js.map} +0 -0
- /package/dist/{chunk-5TZZUL5X.js.map → chunk-M75ZZHSR.js.map} +0 -0
- /package/dist/{chunk-6MWUANRF.js.map → chunk-N6WF5PKC.js.map} +0 -0
- /package/dist/{chunk-E5AHO65E.js.map → chunk-NCCBLYEB.js.map} +0 -0
- /package/dist/{chunk-A4MAD6PO.js.map → chunk-OCVM6KDH.js.map} +0 -0
- /package/dist/{chunk-Y2OCKFZ3.js.map → chunk-ONTBCHCP.js.map} +0 -0
- /package/dist/{chunk-LEOXZY36.js.map → chunk-R3BLCFD2.js.map} +0 -0
- /package/dist/{chunk-2HVUKRNE.js.map → chunk-RDXW3OBQ.js.map} +0 -0
- /package/dist/{chunk-CJEMA2Z6.js.map → chunk-RFI7GGFO.js.map} +0 -0
- /package/dist/{chunk-AYGZMQP5.js.map → chunk-RNG4VRP4.js.map} +0 -0
- /package/dist/{chunk-PEDZFFKW.js.map → chunk-RTEK4C4I.js.map} +0 -0
- /package/dist/{chunk-3I4KYWNP.js.map → chunk-S6Q37VGE.js.map} +0 -0
- /package/dist/{chunk-42KVY3OC.js.map → chunk-SV6EAJEP.js.map} +0 -0
- /package/dist/{chunk-YBFOBRTO.js.map → chunk-T3GY65MA.js.map} +0 -0
- /package/dist/{chunk-KBBWY46Y.js.map → chunk-TIGPQDYP.js.map} +0 -0
- /package/dist/{chunk-NYVQCZ54.js.map → chunk-U6JMEH2P.js.map} +0 -0
- /package/dist/{chunk-MK2BSS44.js.map → chunk-UC2ETWF3.js.map} +0 -0
- /package/dist/{chunk-M5I354EE.js.map → chunk-UDSR4X4L.js.map} +0 -0
- /package/dist/{chunk-6ULCYCMU.js.map → chunk-VAIS3SOM.js.map} +0 -0
- /package/dist/{chunk-WVCQ75OK.js.map → chunk-VCBHAE4R.js.map} +0 -0
- /package/dist/{chunk-DEYAO3N6.js.map → chunk-VKCADNMR.js.map} +0 -0
- /package/dist/{chunk-OQAODTYR.js.map → chunk-WKGF2TJR.js.map} +0 -0
- /package/dist/{chunk-HOCEGVGQ.js.map → chunk-WNGGJWF7.js.map} +0 -0
- /package/dist/{chunk-NSZ6J5DF.js.map → chunk-WOM2HTML.js.map} +0 -0
- /package/dist/{chunk-MSVY7ULZ.js.map → chunk-WQIYTNJV.js.map} +0 -0
- /package/dist/{chunk-NUEFXLZU.js.map → chunk-WZSHL6DQ.js.map} +0 -0
- /package/dist/{chunk-X66MXMR5.js.map → chunk-XDIAFPUM.js.map} +0 -0
- /package/dist/{chunk-CTSFKDGA.js.map → chunk-XJMBYYQK.js.map} +0 -0
- /package/dist/{chunk-IUKGIB2Q.js.map → chunk-XTHCN77N.js.map} +0 -0
- /package/dist/{chunk-FC3XK5JT.js.map → chunk-YCH5GBN6.js.map} +0 -0
- /package/dist/{chunk-S6AQXDN4.js.map → chunk-YTGDPCPW.js.map} +0 -0
- /package/dist/{chunk-CWCCYH34.js.map → chunk-YZQOGE2L.js.map} +0 -0
- /package/dist/{chunk-DFIBOSOQ.js.map → chunk-ZXEZCY6F.js.map} +0 -0
- /package/dist/{api-HV4PDUWF.js.map → collection-facade-KMBWNCYP.js.map} +0 -0
- /package/dist/{chunk-BGIZAFY7.js.map → computed-DSMPXG2Y.js.map} +0 -0
- /package/dist/{chunk-K2WCO3NX.js.map → cover-QJRXINN5.js.map} +0 -0
- /package/dist/{dead-filter-VNA4M3GP.js.map → dead-filter-66VGI6JV.js.map} +0 -0
- /package/dist/{collection-facade-3RAXG2OU.js.map → delegation-SU6CV3W7.js.map} +0 -0
- /package/dist/{computed-R62HGCO4.js.map → derive-6RWU4EOA.js.map} +0 -0
- /package/dist/{delegation-ZKII5UBI.js.map → enclave-TKPN2G2U.js.map} +0 -0
- /package/dist/{derive-5D2C3WG4.js.map → executor-KGNLJD6M.js.map} +0 -0
- /package/dist/{describe/index.js.map → executor-UX4FASYZ.js.map} +0 -0
- /package/dist/{enclave-EUBEJGPG.js.map → executor-XGIS6CR7.js.map} +0 -0
- /package/dist/{executor-IL7SRNUZ.js.map → export-accessible-LKW3QV22.js.map} +0 -0
- /package/dist/{executor-OUA2Y6YC.js.map → extract-partition-UP2ARO75.js.map} +0 -0
- /package/dist/{fanout-sidecar-CI5BCMQM.js.map → fanout-sidecar-B5LVUMQX.js.map} +0 -0
- /package/dist/{executor-WAEI6PDV.js.map → find-YS6XWB46.js.map} +0 -0
- /package/dist/{export-accessible-O55RKAGC.js.map → issue-3ACYX7LO.js.map} +0 -0
- /package/dist/{extract-partition-VBGCBA6Q.js.map → ledger-PTK7XZYT.js.map} +0 -0
- /package/dist/{find-FISGUWSK.js.map → liberate-MQQXBUCY.js.map} +0 -0
- /package/dist/{issue-EQAWIYFQ.js.map → link-set-SLJHDNRB.js.map} +0 -0
- /package/dist/{kernel/index.js.map → noydb-ANIW5FLE.js.map} +0 -0
- /package/dist/{ledger-AJA2SR3C.js.map → policy-YDLCOX4P.js.map} +0 -0
- /package/dist/{liberate-SEGR4JLY.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
- /package/dist/{link-set-YBAC2DQT.js.map → register-PAM3ASRZ.js.map} +0 -0
- /package/dist/{noydb-AMEOU456.js.map → registry-4S2U2TR4.js.map} +0 -0
- /package/dist/{policy-SDGRWVIL.js.map → registry-NPOWJHC4.js.map} +0 -0
- /package/dist/{public-envelope-J5PLQOW2.js.map → registry-VZ3CCI2R.js.map} +0 -0
- /package/dist/{read-only-facade-UCYNRE56.js.map → request-withdrawal-DI3H5WUI.js.map} +0 -0
- /package/dist/{register-OVJKW7BS.js.map → revoke-R5CZSVUT.js.map} +0 -0
- /package/dist/{registry-5RJSK5AJ.js.map → signer-MBVHW4WE.js.map} +0 -0
- /package/dist/{registry-DQRNTWRL.js.map → stale-VZL4OGUB.js.map} +0 -0
- /package/dist/{registry-LTGLERS7.js.map → storage-3MEJUENZ.js.map} +0 -0
- /package/dist/{store-coordination-provider-WKGAE2WI.js.map → store-coordination-provider-FKX3F6TQ.js.map} +0 -0
- /package/dist/{walk-76UCFXYV.js.map → walk-IPLXE36W.js.map} +0 -0
- /package/dist/{request-withdrawal-27O77D2V.js.map → withdraw-accessible-TZDATQVR.js.map} +0 -0
|
@@ -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;
|
|
@@ -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;
|