@noy-db/hub 0.3.0-pre.9 → 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 +5 -5
- 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 -32
- 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-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-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-ZUODRVHY.js +14 -0
- package/dist/classified/index.js +5 -5
- 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 -12
- 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 +21 -19
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +307 -1493
- package/dist/index.js +309 -190
- 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 -17
- 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 +7 -7
- 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 -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-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-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-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-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-ZGS6LCOF.js.map} +0 -0
- /package/dist/{chunk-34RRRIC3.js.map → chunk-3B5VVCNY.js.map} +0 -0
- /package/dist/{chunk-CJEMA2Z6.js.map → chunk-3LQ2YKO4.js.map} +0 -0
- /package/dist/{chunk-ZWQFOXBR.js.map → chunk-3QCRBHCY.js.map} +0 -0
- /package/dist/{chunk-E5AHO65E.js.map → chunk-4JBYV75E.js.map} +0 -0
- /package/dist/{chunk-YLN33ADH.js.map → chunk-4NXKCLLQ.js.map} +0 -0
- /package/dist/{chunk-2KOSJTMU.js.map → chunk-5M5DVGV7.js.map} +0 -0
- /package/dist/{chunk-3I4KYWNP.js.map → chunk-5YOLBEQ6.js.map} +0 -0
- /package/dist/{chunk-IWTYFS3D.js.map → chunk-6CRIV7DE.js.map} +0 -0
- /package/dist/{chunk-QTXQ6RNZ.js.map → chunk-6QTNZJBS.js.map} +0 -0
- /package/dist/{chunk-42KVY3OC.js.map → chunk-6T2SCQRU.js.map} +0 -0
- /package/dist/{chunk-Z5YFRMG5.js.map → chunk-7DSTRQIJ.js.map} +0 -0
- /package/dist/{chunk-DEYAO3N6.js.map → chunk-AUSTCW2X.js.map} +0 -0
- /package/dist/{chunk-SZCHEDML.js.map → chunk-B3HJYUOF.js.map} +0 -0
- /package/dist/{chunk-OV4CMJGR.js.map → chunk-BDVFPG6Y.js.map} +0 -0
- /package/dist/{chunk-HOCEGVGQ.js.map → chunk-CAF6WOK7.js.map} +0 -0
- /package/dist/{chunk-AUR7MRHA.js.map → chunk-CIE2BASH.js.map} +0 -0
- /package/dist/{chunk-X66MXMR5.js.map → chunk-CRI4OUV4.js.map} +0 -0
- /package/dist/{chunk-IUKGIB2Q.js.map → chunk-DLG74CNB.js.map} +0 -0
- /package/dist/{chunk-YBFOBRTO.js.map → chunk-ERJ7FU55.js.map} +0 -0
- /package/dist/{chunk-VJ3NQK4K.js.map → chunk-EVVGJDRQ.js.map} +0 -0
- /package/dist/{chunk-NSZ6J5DF.js.map → chunk-EXK7QRWF.js.map} +0 -0
- /package/dist/{chunk-5SAZMBW7.js.map → chunk-EYZ6IQ6X.js.map} +0 -0
- /package/dist/{chunk-OQAODTYR.js.map → chunk-F64IRYG3.js.map} +0 -0
- /package/dist/{chunk-Q2KVKTC2.js.map → chunk-FHS2HQSH.js.map} +0 -0
- /package/dist/{chunk-Y2OCKFZ3.js.map → chunk-GKEWXIV5.js.map} +0 -0
- /package/dist/{chunk-NUEFXLZU.js.map → chunk-GTGPO5KW.js.map} +0 -0
- /package/dist/{chunk-XQ7UYPVN.js.map → chunk-HB3RFQSC.js.map} +0 -0
- /package/dist/{chunk-FC3XK5JT.js.map → chunk-I6GALP6E.js.map} +0 -0
- /package/dist/{chunk-LEOXZY36.js.map → chunk-IL6POWCW.js.map} +0 -0
- /package/dist/{chunk-GX2BYNCT.js.map → chunk-IU6SNYX6.js.map} +0 -0
- /package/dist/{chunk-6CU3FN74.js.map → chunk-J2ZX2XUV.js.map} +0 -0
- /package/dist/{chunk-6MWUANRF.js.map → chunk-JKJOGPZN.js.map} +0 -0
- /package/dist/{chunk-PEDZFFKW.js.map → chunk-JZUV47FZ.js.map} +0 -0
- /package/dist/{chunk-5TZZUL5X.js.map → chunk-K5IMOGHB.js.map} +0 -0
- /package/dist/{chunk-7IZQTCTR.js.map → chunk-LASZKVMO.js.map} +0 -0
- /package/dist/{chunk-NNWK3PSY.js.map → chunk-NR5LT5RY.js.map} +0 -0
- /package/dist/{chunk-NYVQCZ54.js.map → chunk-NWSGI5C7.js.map} +0 -0
- /package/dist/{chunk-MSVY7ULZ.js.map → chunk-Q5VNKNE5.js.map} +0 -0
- /package/dist/{chunk-2HVUKRNE.js.map → chunk-QLWMEXCT.js.map} +0 -0
- /package/dist/{chunk-KYC4LIEU.js.map → chunk-QRB7NAOJ.js.map} +0 -0
- /package/dist/{chunk-6ULCYCMU.js.map → chunk-R4ROFEYC.js.map} +0 -0
- /package/dist/{chunk-KBF5GSGX.js.map → chunk-RIX4V2TB.js.map} +0 -0
- /package/dist/{chunk-CTSFKDGA.js.map → chunk-RYCTDFUX.js.map} +0 -0
- /package/dist/{chunk-S6AQXDN4.js.map → chunk-RZ5SVOYR.js.map} +0 -0
- /package/dist/{chunk-A4MAD6PO.js.map → chunk-SLFHQTTW.js.map} +0 -0
- /package/dist/{chunk-AYGZMQP5.js.map → chunk-T2FFWNPK.js.map} +0 -0
- /package/dist/{chunk-CWCCYH34.js.map → chunk-UNFPPVNI.js.map} +0 -0
- /package/dist/{chunk-M5I354EE.js.map → chunk-VLFCJYTL.js.map} +0 -0
- /package/dist/{chunk-WVCQ75OK.js.map → chunk-VN3DBQAU.js.map} +0 -0
- /package/dist/{chunk-KXKLKJW4.js.map → chunk-VZRODIM3.js.map} +0 -0
- /package/dist/{chunk-HBTT7YQX.js.map → chunk-W22IKJE2.js.map} +0 -0
- /package/dist/{chunk-KNXN47MO.js.map → chunk-X3YYQWOQ.js.map} +0 -0
- /package/dist/{chunk-DFIBOSOQ.js.map → chunk-YFXZEAYK.js.map} +0 -0
- /package/dist/{chunk-ICV32FPK.js.map → chunk-ZAJAVEXY.js.map} +0 -0
- /package/dist/{chunk-MK2BSS44.js.map → chunk-ZICD77GM.js.map} +0 -0
- /package/dist/{chunk-KWLD2D75.js.map → chunk-ZJ2AK4V7.js.map} +0 -0
- /package/dist/{chunk-KBBWY46Y.js.map → chunk-ZUODRVHY.js.map} +0 -0
- /package/dist/{api-HV4PDUWF.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-VNA4M3GP.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-3RAXG2OU.js.map → derive-H2BJTLUI.js.map} +0 -0
- /package/dist/{computed-R62HGCO4.js.map → enclave-AP3I5W7O.js.map} +0 -0
- /package/dist/{delegation-ZKII5UBI.js.map → executor-KGWTNEQD.js.map} +0 -0
- /package/dist/{derive-5D2C3WG4.js.map → executor-OVEXR6RT.js.map} +0 -0
- /package/dist/{describe/index.js.map → executor-UNEH5ZYH.js.map} +0 -0
- /package/dist/{enclave-EUBEJGPG.js.map → export-accessible-PCMXSUZS.js.map} +0 -0
- /package/dist/{executor-IL7SRNUZ.js.map → extract-partition-SWHFSYJO.js.map} +0 -0
- /package/dist/{fanout-sidecar-CI5BCMQM.js.map → fanout-sidecar-A765THMX.js.map} +0 -0
- /package/dist/{executor-OUA2Y6YC.js.map → find-N6345CNT.js.map} +0 -0
- /package/dist/{executor-WAEI6PDV.js.map → issue-5OKB6I2R.js.map} +0 -0
- /package/dist/{export-accessible-O55RKAGC.js.map → ledger-GFBKVPV4.js.map} +0 -0
- /package/dist/{extract-partition-VBGCBA6Q.js.map → liberate-3VDOT4KO.js.map} +0 -0
- /package/dist/{find-FISGUWSK.js.map → link-set-Z7Q2ASFX.js.map} +0 -0
- /package/dist/{issue-EQAWIYFQ.js.map → noydb-ZCJOYBDI.js.map} +0 -0
- /package/dist/{kernel/index.js.map → policy-Z3RUAIY2.js.map} +0 -0
- /package/dist/{ledger-AJA2SR3C.js.map → public-envelope-B4KNWVUA.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-VAHONCID.js.map} +0 -0
- /package/dist/{noydb-AMEOU456.js.map → registry-7MLVD3VO.js.map} +0 -0
- /package/dist/{policy-SDGRWVIL.js.map → registry-EPKPD5SM.js.map} +0 -0
- /package/dist/{public-envelope-J5PLQOW2.js.map → registry-P5T7PS2U.js.map} +0 -0
- /package/dist/{read-only-facade-UCYNRE56.js.map → request-withdrawal-TI3A5WPS.js.map} +0 -0
- /package/dist/{register-OVJKW7BS.js.map → revoke-FDRD6GRW.js.map} +0 -0
- /package/dist/{registry-5RJSK5AJ.js.map → signer-MUWEIUI6.js.map} +0 -0
- /package/dist/{registry-DQRNTWRL.js.map → stale-OSQ7J3AA.js.map} +0 -0
- /package/dist/{registry-LTGLERS7.js.map → storage-MVFCGEQE.js.map} +0 -0
- /package/dist/{store-coordination-provider-WKGAE2WI.js.map → store-coordination-provider-64OEZFGS.js.map} +0 -0
- /package/dist/{walk-76UCFXYV.js.map → walk-SVNDIZ62.js.map} +0 -0
- /package/dist/{request-withdrawal-27O77D2V.js.map → withdraw-accessible-WZIEVWSR.js.map} +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
2
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
3
|
+
export declare const ATTESTATIONS_COLLECTION = "_attestations";
|
|
4
|
+
export declare const SIGNER_RECORD_ID = "_signer";
|
|
5
|
+
export declare const REVOKED_RECORD_ID = "_revoked";
|
|
6
|
+
export interface DocSigner {
|
|
7
|
+
readonly keyId: string;
|
|
8
|
+
readonly publicKeyB64: string;
|
|
9
|
+
readonly privateKeyPkcs8B64: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Pure read: return the firm's persisted document-signing keypair, or `null`
|
|
13
|
+
* if none has been minted yet. Never writes — callers that must NOT mint
|
|
14
|
+
* (e.g. an ungated public-key getter) use this instead of `loadOrCreateSigner`.
|
|
15
|
+
*
|
|
16
|
+
* Stored as an encrypted record `_attestations/_signer` under the
|
|
17
|
+
* `_attestations` collection DEK (resolved via `getDEK`, which is
|
|
18
|
+
* AES-KW-wrapped under the owner KEK + persisted by the keyring). The KEK
|
|
19
|
+
* itself is AES-KW-only and cannot AES-GCM-encrypt these bytes — hence
|
|
20
|
+
* storage under a normal collection DEK.
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadSigner(store: NoydbStore, vault: string, getDEK: (collection: string) => Promise<EnclaveKey>): Promise<DocSigner | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Lazily mint (or load) the firm's Ed25519 document-signing keypair.
|
|
25
|
+
*
|
|
26
|
+
* On a concurrent first-mint, two callers can both read `null` and both mint
|
|
27
|
+
* distinct keypairs. The `put(…, expectedVersion: 0)` ("must not already
|
|
28
|
+
* exist") lets exactly one win; the loser catches `ConflictError`, re-reads,
|
|
29
|
+
* and returns the winner's signer — converging on a single keypair rather than
|
|
30
|
+
* clobbering it or surfacing a raw conflict. (All real stores treat a missing
|
|
31
|
+
* record + `ev: 0` as a no-conflict write, so the catch fires on lost-race only.)
|
|
32
|
+
*/
|
|
33
|
+
export declare function loadOrCreateSigner(store: NoydbStore, vault: string, getDEK: (collection: string) => Promise<EnclaveKey>): Promise<DocSigner>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
2
|
+
import type { EnclaveKey } from '../../kernel/enclave/index.js';
|
|
3
|
+
import type { RevocationList } from '@noy-db/attestation';
|
|
4
|
+
import type { IssueContext, IssueArgs, IssueResult } from './issue.js';
|
|
5
|
+
import type { RevokeContext } from './revoke.js';
|
|
6
|
+
/**
|
|
7
|
+
* Deps the signing-public-key lookup needs. Unlike issue/revoke there is no
|
|
8
|
+
* per-call context object for it, so the vault facade assembles this at call
|
|
9
|
+
* time (reading `role` fresh).
|
|
10
|
+
*/
|
|
11
|
+
export interface SignerLookupDeps {
|
|
12
|
+
readonly adapter: NoydbStore;
|
|
13
|
+
readonly vault: string;
|
|
14
|
+
/** The invoking keyring's role, read fresh by the caller per call. */
|
|
15
|
+
readonly role: string;
|
|
16
|
+
/** Per-collection DEK resolver (bound `vault.getDEK`). */
|
|
17
|
+
readonly getDEK: (collection: string) => Promise<EnclaveKey>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Attestation capability strategy — the six on-demand methods the vault's
|
|
21
|
+
* attestation delegators route through. The active engine ({@link withAttestation})
|
|
22
|
+
* dynamically imports the issue/revoke/signer cores (keeping them out of the floor
|
|
23
|
+
* bundle); {@link NO_ATTESTATION} throws. The vault-side {@link VaultAttestation}
|
|
24
|
+
* facade holds the per-collection field-schema registry and builds the per-call
|
|
25
|
+
* contexts, then delegates here.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export interface AttestationStrategy {
|
|
29
|
+
issueAttestation(ctx: IssueContext, args: IssueArgs): Promise<IssueResult>;
|
|
30
|
+
getDocumentSigningPublicKey(deps: SignerLookupDeps): Promise<{
|
|
31
|
+
keyId: string;
|
|
32
|
+
publicKeyB64: string;
|
|
33
|
+
}>;
|
|
34
|
+
revokeAttestation(ctx: RevokeContext, docId: string): Promise<void>;
|
|
35
|
+
unrevokeAttestation(ctx: RevokeContext, docId: string): Promise<void>;
|
|
36
|
+
getRevokedDocIds(ctx: RevokeContext): Promise<string[]>;
|
|
37
|
+
publishRevocationList(ctx: RevokeContext): Promise<RevocationList>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* No-op stub — the floor default. Every capability method throws
|
|
41
|
+
* {@link AttestationNotEnabledError}; opt in with
|
|
42
|
+
* `attestationStrategy: withAttestation()` in createNoydb. @internal
|
|
43
|
+
*/
|
|
44
|
+
export declare const NO_ATTESTATION: AttestationStrategy;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
2
|
+
import type { EnclaveKey } from '../../kernel/enclave/index.js';
|
|
3
|
+
import type { AttestationFieldSchema, RevocationList } from '@noy-db/attestation';
|
|
4
|
+
import type { AttestationStrategy } from './strategy.js';
|
|
5
|
+
export { NO_ATTESTATION, type AttestationStrategy } from './strategy.js';
|
|
6
|
+
/** Everything the moving attestation methods touched on the vault's `this.*`. */
|
|
7
|
+
export interface VaultAttestationDeps {
|
|
8
|
+
/** The ciphertext store. */
|
|
9
|
+
readonly adapter: NoydbStore;
|
|
10
|
+
/** Vault namespace name. */
|
|
11
|
+
readonly vault: string;
|
|
12
|
+
/** Per-collection DEK resolver (bound `vault.getDEK`). */
|
|
13
|
+
readonly getDEK: (collection: string) => Promise<EnclaveKey>;
|
|
14
|
+
/** The invoking keyring's role (read fresh per call). */
|
|
15
|
+
role(): string;
|
|
16
|
+
/** Decrypt a collection record at `locale: 'raw'` (issue side reads the live record). */
|
|
17
|
+
getRawRecord(collection: string, id: string): Promise<Record<string, unknown> | null>;
|
|
18
|
+
}
|
|
19
|
+
export declare class VaultAttestation {
|
|
20
|
+
private readonly deps;
|
|
21
|
+
/**
|
|
22
|
+
* Opt-in capability gate. `NO_ATTESTATION` when
|
|
23
|
+
* `createNoydb({ attestationStrategy })` was omitted — every issue/revoke/
|
|
24
|
+
* signer call then throws `AttestationNotEnabledError`. The facade always
|
|
25
|
+
* exists (it holds the per-collection field-schema registry populated at
|
|
26
|
+
* `collection()` time); only the capability methods are gated.
|
|
27
|
+
*/
|
|
28
|
+
private readonly strategy;
|
|
29
|
+
/**
|
|
30
|
+
* Per-collection attestation field-schema (issue side). Populated on
|
|
31
|
+
* `collection({ attestation })` via {@link register} and read by
|
|
32
|
+
* {@link issue}. Indexed by collection name.
|
|
33
|
+
*/
|
|
34
|
+
private readonly registry;
|
|
35
|
+
constructor(deps: VaultAttestationDeps,
|
|
36
|
+
/**
|
|
37
|
+
* Opt-in capability gate. `NO_ATTESTATION` when
|
|
38
|
+
* `createNoydb({ attestationStrategy })` was omitted — every issue/revoke/
|
|
39
|
+
* signer call then throws `AttestationNotEnabledError`. The facade always
|
|
40
|
+
* exists (it holds the per-collection field-schema registry populated at
|
|
41
|
+
* `collection()` time); only the capability methods are gated.
|
|
42
|
+
*/
|
|
43
|
+
strategy: AttestationStrategy);
|
|
44
|
+
/** Register a collection's attestation field-schema (from `vault.collection`). */
|
|
45
|
+
register(collection: string, schema: AttestationFieldSchema): void;
|
|
46
|
+
issue(collectionName: string, id: string): Promise<{
|
|
47
|
+
docId: string;
|
|
48
|
+
qr: string;
|
|
49
|
+
keyId: string;
|
|
50
|
+
publicKeyB64: string;
|
|
51
|
+
}>;
|
|
52
|
+
getDocumentSigningPublicKey(): Promise<{
|
|
53
|
+
keyId: string;
|
|
54
|
+
publicKeyB64: string;
|
|
55
|
+
}>;
|
|
56
|
+
private makeIssueContext;
|
|
57
|
+
revoke(docId: string): Promise<void>;
|
|
58
|
+
unrevoke(docId: string): Promise<void>;
|
|
59
|
+
getRevokedDocIds(): Promise<string[]>;
|
|
60
|
+
publishRevocationList(): Promise<RevocationList>;
|
|
61
|
+
private makeRevokeContext;
|
|
62
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active consent strategy. Calling `withConsent()` returns a
|
|
3
|
+
* `ConsentStrategy` that delegates to the real
|
|
4
|
+
* `writeConsentEntry` / `loadConsentEntries` functions. Only
|
|
5
|
+
* reachable through the `@noy-db/hub/consent` subpath.
|
|
6
|
+
*/
|
|
7
|
+
import type { ConsentStrategy } from './strategy.js';
|
|
8
|
+
/**
|
|
9
|
+
* Build the default consent strategy. Pass into
|
|
10
|
+
* `createNoydb({ consentStrategy: withConsent() })` to enable
|
|
11
|
+
* per-operation audit writes into the reserved `_consent_audit`
|
|
12
|
+
* collection.
|
|
13
|
+
*/
|
|
14
|
+
export declare function withConsent(): ConsentStrategy;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consent boundaries — per-access audit log.
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* const audit = await vault.withConsent(
|
|
6
|
+
* { purpose: 'quarterly-review', consentHash: '7f3a...' },
|
|
7
|
+
* async () => {
|
|
8
|
+
* const invoices = await vault.collection<Invoice>('invoices').list()
|
|
9
|
+
* return invoices
|
|
10
|
+
* },
|
|
11
|
+
* )
|
|
12
|
+
*
|
|
13
|
+
* const log = await vault.consentAudit({ since: '2026-01-01T00:00:00Z' })
|
|
14
|
+
* // → entries: { actor, purpose, consentHash, ts, op, collection, id }
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* ## Contract
|
|
18
|
+
*
|
|
19
|
+
* Every `get` / `put` / `delete` that happens inside a `withConsent`
|
|
20
|
+
* callback writes one entry to the reserved `_consent_audit`
|
|
21
|
+
* collection. Entries are encrypted with the vault's consent-audit
|
|
22
|
+
* DEK (separate from per-user-collection DEKs so access-log queries
|
|
23
|
+
* don't require unwrapping individual collection keys). Outside a
|
|
24
|
+
* `withConsent` scope, no entries are written — consent is
|
|
25
|
+
* opt-in by design (GDPR Art. 7: *demonstrable*, *specific*
|
|
26
|
+
* consent).
|
|
27
|
+
*
|
|
28
|
+
* ## Why store the hash, not the consent text?
|
|
29
|
+
*
|
|
30
|
+
* The `consentHash` is the sha256 of whatever consent receipt the
|
|
31
|
+
* actor presented (a signed GDPR banner click, a HIPAA authorisation
|
|
32
|
+
* PDF, an API-level `X-Consent-Hash` header). Storing only the hash:
|
|
33
|
+
*
|
|
34
|
+
* 1. Keeps the audit log small and indexable.
|
|
35
|
+
* 2. Preserves zero-knowledge at the adapter — adapters see
|
|
36
|
+
* ciphertext envelopes of `{ actor, purpose, consentHash, ts,
|
|
37
|
+
* op, collection, id }`, never the consent record itself.
|
|
38
|
+
* 3. Lets the regulator verify a presented consent doc matches
|
|
39
|
+
* the logged hash at audit time without the system ever
|
|
40
|
+
* possessing the doc.
|
|
41
|
+
*
|
|
42
|
+
* ## Concurrency
|
|
43
|
+
*
|
|
44
|
+
* The consent context lives on the {@link Vault} instance. Two
|
|
45
|
+
* concurrent `withConsent` calls on the same Vault would stomp each
|
|
46
|
+
* other — documented limitation; adopters needing per-flight scope
|
|
47
|
+
* should use separate Vault instances or an AsyncLocalStorage shim.
|
|
48
|
+
*
|
|
49
|
+
* @module
|
|
50
|
+
*/
|
|
51
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
52
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
53
|
+
/** Reserved collection for consent-audit entries. */
|
|
54
|
+
export declare const CONSENT_AUDIT_COLLECTION = "_consent_audit";
|
|
55
|
+
/**
|
|
56
|
+
* The consent scope active for a block of work. Set via
|
|
57
|
+
* `vault.withConsent()`; observed by the collection's access hooks.
|
|
58
|
+
*/
|
|
59
|
+
export interface ConsentContext {
|
|
60
|
+
/**
|
|
61
|
+
* What this access is for. Used by the audit query (`consentAudit
|
|
62
|
+
* ({ purpose })`) and carried in the stored entry. Free-form; the
|
|
63
|
+
* regulator or compliance tooling decides the vocabulary.
|
|
64
|
+
*/
|
|
65
|
+
readonly purpose: string;
|
|
66
|
+
/**
|
|
67
|
+
* Hex-encoded sha256 of whatever consent artefact the actor
|
|
68
|
+
* presented. Stored as-is in each entry.
|
|
69
|
+
*/
|
|
70
|
+
readonly consentHash: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Access operation recorded in an audit entry.
|
|
74
|
+
*
|
|
75
|
+
* Union-widening checklist (I-2) — these three sites widen together or a
|
|
76
|
+
* downstream exhaustive switch breaks at its next in-range minor:
|
|
77
|
+
* 1. `ConsentOp` here (public, re-exported at `index.ts`).
|
|
78
|
+
* 2. `onAccess` op union on `kernel/collection-config.ts`.
|
|
79
|
+
* 3. classified ctx `onAccess` op union on `port/with/classified-strategy.ts`
|
|
80
|
+
* (the `ClassifiedVerifyCtx` one — the `ClassifiedRevealCtx` one stays `'reveal'`-only).
|
|
81
|
+
*/
|
|
82
|
+
export type ConsentOp = 'get' | 'put' | 'delete' | 'reveal' | 'verify' | 'find';
|
|
83
|
+
/** One consent-audit record, as decrypted for the caller. */
|
|
84
|
+
export interface ConsentAuditEntry {
|
|
85
|
+
/** ULID — stable insertion-order key. */
|
|
86
|
+
readonly id: string;
|
|
87
|
+
readonly timestamp: string;
|
|
88
|
+
readonly actor: string;
|
|
89
|
+
readonly purpose: string;
|
|
90
|
+
readonly consentHash: string;
|
|
91
|
+
readonly op: ConsentOp;
|
|
92
|
+
readonly collection: string;
|
|
93
|
+
readonly recordId: string;
|
|
94
|
+
}
|
|
95
|
+
/** Filter passed to `vault.consentAudit()`. */
|
|
96
|
+
export interface ConsentAuditFilter {
|
|
97
|
+
/** Only entries at or after this ISO timestamp. */
|
|
98
|
+
readonly since?: string;
|
|
99
|
+
/** Only entries at or before this ISO timestamp. */
|
|
100
|
+
readonly until?: string;
|
|
101
|
+
/** Match entries targeting this collection. */
|
|
102
|
+
readonly collection?: string;
|
|
103
|
+
/** Match entries written by this actor. */
|
|
104
|
+
readonly actor?: string;
|
|
105
|
+
/** Match entries with this purpose. */
|
|
106
|
+
readonly purpose?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Write one audit entry. Called by Vault's onAccess hook when a
|
|
110
|
+
* consent context is active.
|
|
111
|
+
*/
|
|
112
|
+
export declare function writeConsentEntry(adapter: NoydbStore, vault: string, encrypted: boolean, entry: Omit<ConsentAuditEntry, 'id' | 'timestamp'>, getDEK: (collection: string) => Promise<EnclaveKey>): Promise<void>;
|
|
113
|
+
/** Load + decrypt + filter all entries. */
|
|
114
|
+
export declare function loadConsentEntries(adapter: NoydbStore, vault: string, encrypted: boolean, getDEK: (collection: string) => Promise<EnclaveKey>, filter?: ConsentAuditFilter): Promise<ConsentAuditEntry[]>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @noy-db/hub/consent — opt-in consent-audit service.
|
|
3
|
+
*
|
|
4
|
+
* @category capability
|
|
5
|
+
*
|
|
6
|
+
* Records per-operation consent entries into a reserved
|
|
7
|
+
* `_consent_audit` collection when a consent scope is active.
|
|
8
|
+
* Applications that don't need GDPR-style audit trails can omit this
|
|
9
|
+
* subpath and skip the ~194 LOC.
|
|
10
|
+
*/
|
|
11
|
+
export { withConsent } from './active.js';
|
|
12
|
+
export type { ConsentStrategy } from './strategy.js';
|
|
13
|
+
export { CONSENT_AUDIT_COLLECTION, writeConsentEntry, loadConsentEntries, } from './consent.js';
|
|
14
|
+
export type { ConsentContext, ConsentOp, ConsentAuditEntry, ConsentAuditFilter, } from './consent.js';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy seam for the optional consent-audit service. Core
|
|
3
|
+
* imports `ConsentStrategy` as a TYPE-ONLY symbol and `NO_CONSENT`
|
|
4
|
+
* as a tiny runtime stub.
|
|
5
|
+
*
|
|
6
|
+
* `writeConsentEntry` / `loadConsentEntries` are only reachable from
|
|
7
|
+
* `withConsent()` in `./active.ts`, exported through
|
|
8
|
+
* `@noy-db/hub/consent`. Applications without a consent scope ship
|
|
9
|
+
* none of the ~194 LOC.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
14
|
+
import type { EnclaveKey } from '../../kernel/enclave/index.js';
|
|
15
|
+
import type { ConsentAuditEntry, ConsentAuditFilter } from './consent.js';
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export interface ConsentStrategy {
|
|
20
|
+
/**
|
|
21
|
+
* Record one consent audit entry. No-op under NO_CONSENT.
|
|
22
|
+
*/
|
|
23
|
+
write(adapter: NoydbStore, vault: string, encrypted: boolean, entry: Omit<ConsentAuditEntry, 'id' | 'timestamp'>, getDEK: (collectionName: string) => Promise<EnclaveKey>): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Read filtered consent entries. Returns `[]` under NO_CONSENT.
|
|
26
|
+
*/
|
|
27
|
+
read(adapter: NoydbStore, vault: string, encrypted: boolean, getDEK: (collectionName: string) => Promise<EnclaveKey>, filter?: ConsentAuditFilter): Promise<ConsentAuditEntry[]>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* No-consent stub. `write` is a no-op (returns a resolved promise);
|
|
31
|
+
* `read` returns `[]`. Consumers get a consistent API surface without
|
|
32
|
+
* pulling the consent module into the bundle.
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare const NO_CONSENT: ConsentStrategy;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `withForgetCascade` — the active factory for GDPR right-to-erasure via
|
|
3
|
+
* per-record CEK crypto-shred. Mirrors the canonical
|
|
4
|
+
* `strategy.ts` (type + `NO_FORGET` sentinel) / `active.ts` (factory) split
|
|
5
|
+
* used by the other services.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { SubjectDeclaration, ForgetStrategy } from './strategy.js';
|
|
10
|
+
/**
|
|
11
|
+
* Declare GDPR crypto-shred for one or more collections.
|
|
12
|
+
*
|
|
13
|
+
* Each declared collection is forced to `perRecordKeys: true` (a shred can
|
|
14
|
+
* only guarantee erasure of a record whose body is keyed off a per-record
|
|
15
|
+
* CEK). On write, Noydb extracts `record[subjectField]` and maintains an
|
|
16
|
+
* encrypted `_subject_index` mapping `subject → [{collection, id}]`, so
|
|
17
|
+
* `vault.forget(subjectId)` can find every record for a subject and rewrite
|
|
18
|
+
* each to a tombstone (body + history permanently undecryptable) while the
|
|
19
|
+
* collection DEK and every other record stay intact.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* createNoydb({
|
|
24
|
+
* secret, user,
|
|
25
|
+
* forgetStrategy: withForgetCascade({ subjects: { invoices: 'buyerId' } }),
|
|
26
|
+
* })
|
|
27
|
+
* const result = await vault.forget('buyer-123')
|
|
28
|
+
* // → { subject, recordsShredded, historyVersionsShredded, collections, … }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function withForgetCascade(opts: SubjectDeclaration): ForgetStrategy;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@noy-db/hub/forget` — GDPR right-to-erasure via per-record CEK crypto-shred.
|
|
3
|
+
* Import `withForgetCascade` and pass it to `createNoydb`:
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { createNoydb } from '@noy-db/hub'
|
|
7
|
+
* import { withForgetCascade } from '@noy-db/hub/forget'
|
|
8
|
+
*
|
|
9
|
+
* const db = createNoydb({
|
|
10
|
+
* secret, user,
|
|
11
|
+
* historyStrategy: withHistory(), // ledger for the erasure proof
|
|
12
|
+
* forgetStrategy: withForgetCascade({ subjects: { invoices: 'buyerId' } }),
|
|
13
|
+
* })
|
|
14
|
+
* const result = await db.vault('main').forget('buyer-123')
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* The erasure flow (`vault.forget`), the subject-index maintenance hooks, and
|
|
18
|
+
* the tombstone rewrite live in core (`vault.ts` / `collection.ts`) because
|
|
19
|
+
* they touch the write path directly; this subpath only exposes the
|
|
20
|
+
* declaration factory + result types.
|
|
21
|
+
*
|
|
22
|
+
* @module
|
|
23
|
+
*/
|
|
24
|
+
export { withForgetCascade } from './active.js';
|
|
25
|
+
export { NO_FORGET } from './strategy.js';
|
|
26
|
+
export type { SubjectDeclaration, ForgetStrategy, ForgetResult, ScopedPurgeResidueNotice, } from './strategy.js';
|
|
27
|
+
export type { SubjectRef } from './subject-index.js';
|
|
28
|
+
export { SUBJECT_INDEX_COLLECTION } from './subject-index.js';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #633 — scoped-purge partitioning for the opt-in `scopedPurge` forget-strategy
|
|
3
|
+
* knob (`strategy.ts`'s `SubjectDeclaration.scopedPurge`). Pure helpers only —
|
|
4
|
+
* no store I/O, no `Vault`/`Collection` imports — kept out of `kernel/vault.ts`
|
|
5
|
+
* (exact zero-slack `kernel-surface` ceiling) and free of any circular-import
|
|
6
|
+
* risk with the kernel spine.
|
|
7
|
+
*
|
|
8
|
+
* The two `forget()` purge sites (`_sealed_cek` listing, blob shred) stay
|
|
9
|
+
* UNCONDITIONAL by default (byte-identical to pre-#633 behavior); when
|
|
10
|
+
* `scopedPurge` is `true`, each site calls into this module to decide what to
|
|
11
|
+
* purge vs. what to leave in place + report as residue, keyed off a
|
|
12
|
+
* per-collection declaration signal the caller (vault.ts) resolves itself:
|
|
13
|
+
* - sealed-CEK arm: `coll._via?.hasAtRestHooks === true` — the classified
|
|
14
|
+
* via binding's at-rest hooks (the "richer" declaration; a bare
|
|
15
|
+
* `sensitive` collection with NO classified binder does not count — it can
|
|
16
|
+
* still call `sealRecordToHost()` ad hoc, which is exactly the
|
|
17
|
+
* under-approximation #633 calls out).
|
|
18
|
+
* - blob arm: `this.blobFieldsRegistry.has(ref.collection)` — a collection
|
|
19
|
+
* can call `.blob(id)` regardless of this declaration (same
|
|
20
|
+
* under-approximation), which is why the default stays unconditional.
|
|
21
|
+
*
|
|
22
|
+
* @module
|
|
23
|
+
*/
|
|
24
|
+
import type { ScopedPurgeResidueReason } from './strategy.js';
|
|
25
|
+
/**
|
|
26
|
+
* Partitions an already-fetched vault-wide `_sealed_cek` key listing into
|
|
27
|
+
* keys to purge vs. a skipped count, for ONE ref's `<collection>/<id>/`
|
|
28
|
+
* prefix. No new store call — `keys` is the SAME listing the unconditional
|
|
29
|
+
* path already fetched. Default parity: when `scopedPurge` is false, or
|
|
30
|
+
* `declared` is true, every matching key is returned for purge and
|
|
31
|
+
* `skippedCount` is 0 — byte-identical to the unconditional behavior.
|
|
32
|
+
*/
|
|
33
|
+
export declare function partitionSealedCekKeys(keys: readonly string[], prefix: string, scopedPurge: boolean, declared: boolean): {
|
|
34
|
+
readonly toPurge: readonly string[];
|
|
35
|
+
readonly skippedCount: number;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* True when the blob arm should skip `ref.collection` entirely — no
|
|
39
|
+
* `.blob(id).shredAllForRecord()` call AND no `_blob_slots_<collection>`
|
|
40
|
+
* residue-detection `list()` call either (the perf win: scoped mode never
|
|
41
|
+
* pays for a per-collection scan on a collection that never declared
|
|
42
|
+
* `blobFields`).
|
|
43
|
+
*/
|
|
44
|
+
export declare function shouldSkipBlobScan(scopedPurge: boolean, declared: boolean): boolean;
|
|
45
|
+
/** Adds `count` (if positive) to `collection`'s running total in `map` — the
|
|
46
|
+
* per-collection residue accumulator both purge sites share. */
|
|
47
|
+
export declare function bumpResidueCount(map: Map<string, number>, collection: string, count: number): void;
|
|
48
|
+
/** Flattens an accumulated per-collection count map into `ForgetResult.scopedPurgeResidue` notices
|
|
49
|
+
* tagged with `reason`. Empty map → empty array (the unconditional-default case). */
|
|
50
|
+
export declare function residueNoticesFromMap(map: ReadonlyMap<string, number>, reason: ScopedPurgeResidueReason): {
|
|
51
|
+
readonly reason: ScopedPurgeResidueReason;
|
|
52
|
+
readonly collection: string;
|
|
53
|
+
readonly count: number;
|
|
54
|
+
}[];
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `withForgetCascade` — declaration surface for GDPR right-to-erasure via
|
|
3
|
+
* per-record CEK crypto-shred.
|
|
4
|
+
*
|
|
5
|
+
* This file holds only the *declaration* shape and the disabled sentinel.
|
|
6
|
+
* The actual erasure machinery lives in:
|
|
7
|
+
* - `subject-index.ts` — the encrypted `_subject_index` reserved collection
|
|
8
|
+
* - `vault.ts` `forget()` — the per-record tombstone + ledger flow
|
|
9
|
+
* - `collection.ts` `_writeTombstone` — the envelope rewrite
|
|
10
|
+
*
|
|
11
|
+
* A `ForgetStrategy` declares which collections carry erasable subject data
|
|
12
|
+
* and the (dotted-path) field on each record that names the data subject.
|
|
13
|
+
* Declaring a collection here ALSO forces `perRecordKeys: true` for it (a
|
|
14
|
+
* shred can only erase a record whose body is keyed off a per-record CEK),
|
|
15
|
+
* so adopters opt into the CEK foundation transitively.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import type { LedgerEntry } from '../../with-commit/history/ledger/entry.js';
|
|
20
|
+
/**
|
|
21
|
+
* User-supplied declaration passed to {@link withForgetCascade}. Maps a
|
|
22
|
+
* collection name to the record field (dotted path supported, e.g.
|
|
23
|
+
* `'billing.buyerId'`) that identifies the data subject for erasure.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* withForgetCascade({ subjects: { invoices: 'buyerId', contacts: 'id' } })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export interface SubjectDeclaration {
|
|
30
|
+
readonly subjects: Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* #633 — opt-in: gate the vault-level `_sealed_cek` and blob purges on
|
|
33
|
+
* per-collection via declarations instead of running them unconditionally
|
|
34
|
+
* for every forgotten ref. Default `false`/absent = today's unconditional
|
|
35
|
+
* behavior (byte-identical). See `purge-scope.ts` for the partition logic
|
|
36
|
+
* and the `scopedPurgeResidue` skip-reporting this enables.
|
|
37
|
+
*
|
|
38
|
+
* **Footgun:** a bare `sensitive: [...]` collection — no `classifiedFields`
|
|
39
|
+
* (no classified via binder compiled in) — counts as UNDECLARED for the
|
|
40
|
+
* sealed-CEK arm. Under `scopedPurge: true`, its `_sealed_cek` host-delivery
|
|
41
|
+
* envelopes are SKIPPED, not purged (reported via `scopedPurgeResidue`,
|
|
42
|
+
* reason `'skipped-undeclared-sealed-cek'`) even if that collection called
|
|
43
|
+
* `sealRecordToHost()` — the sealed CEK stays recoverable by that granted
|
|
44
|
+
* host until purged. Add a `classifiedFields` binding to close the gap, or
|
|
45
|
+
* leave `scopedPurge` off/false for the unconditional (always-purged) default.
|
|
46
|
+
* The declaration signal is session-local: a declared collection never opened
|
|
47
|
+
* (with its config) before `forget()` in this session counts as UNDECLARED —
|
|
48
|
+
* open it first, or its entries are skipped-and-reported.
|
|
49
|
+
*/
|
|
50
|
+
readonly scopedPurge?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolved forget strategy threaded through Noydb → every Vault. Carries
|
|
54
|
+
* the same `subjects` map the user declared. `NO_FORGET` (empty map) is the
|
|
55
|
+
* off-by-default sentinel; `vault.forget()` throws
|
|
56
|
+
* `ForgetStrategyNotConfiguredError` when the map is empty.
|
|
57
|
+
*/
|
|
58
|
+
export interface ForgetStrategy {
|
|
59
|
+
/** Collection → subject-field (dotted path). Empty under `NO_FORGET`. */
|
|
60
|
+
readonly subjects: Readonly<Record<string, string>>;
|
|
61
|
+
/** #633 — see {@link SubjectDeclaration.scopedPurge}. */
|
|
62
|
+
readonly scopedPurge?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Disabled sentinel — no collections declare a subject field. `vault.forget()`
|
|
66
|
+
* refuses with `ForgetStrategyNotConfiguredError`; no write hooks register; no
|
|
67
|
+
* collection is forced into `perRecordKeys`. Non-adopters pay nothing.
|
|
68
|
+
*/
|
|
69
|
+
export declare const NO_FORGET: ForgetStrategy;
|
|
70
|
+
/**
|
|
71
|
+
* The outcome of a `vault.forget(subjectId)` call.
|
|
72
|
+
*
|
|
73
|
+
* `unmigratedRecords` lists `collection:id` pairs that were tombstoned but
|
|
74
|
+
* whose body had NOT been migrated to a per-record CEK at shred time (legacy
|
|
75
|
+
* body still under the shared collection DEK). Those records are tombstoned
|
|
76
|
+
* (live envelope + history stripped) but their pre-shred ciphertext, if it
|
|
77
|
+
* leaked into a backup before migration, remains decryptable under the
|
|
78
|
+
* collection DEK — so erasure-completeness is NOT guaranteed for them. Run
|
|
79
|
+
* the per-record-CEK migration pass, then re-forget, to close the gap.
|
|
80
|
+
*
|
|
81
|
+
* Blob attachments: a shredded record's **erasable** blobs (on a
|
|
82
|
+
* `perRecordKeys` collection) are crypto-shredded inline — `blobsShredded`
|
|
83
|
+
* counts those taken to refCount 0 (BlobObject deleted → chunks permanently
|
|
84
|
+
* undecryptable), `blobsRetainedShared` counts those still referenced by
|
|
85
|
+
* another record (shared content legitimately persists for its other owner).
|
|
86
|
+
* `blobResidueCollections` now lists only collections with blobs that could
|
|
87
|
+
* NOT be crypto-shredded: **legacy** blobs (no per-blob `_cek`, chunks under
|
|
88
|
+
* the shared `_blob` DEK — migrate them), or a session without the blob
|
|
89
|
+
* service loaded. An all-erasable subject yields an empty residue list.
|
|
90
|
+
*/
|
|
91
|
+
export interface ForgetResult {
|
|
92
|
+
/** The subject id passed to `forget()`. Echoed for caller convenience. */
|
|
93
|
+
readonly subject: string;
|
|
94
|
+
/** Count of live records rewritten to a tombstone. */
|
|
95
|
+
readonly recordsShredded: number;
|
|
96
|
+
/** Count of `_history` envelopes tombstoned across all shredded records. */
|
|
97
|
+
readonly historyVersionsShredded: number;
|
|
98
|
+
/** Distinct collections that had at least one record shredded. */
|
|
99
|
+
readonly collections: readonly string[];
|
|
100
|
+
/** `collection:id` pairs shredded while still un-migrated (see type docs). */
|
|
101
|
+
readonly unmigratedRecords: readonly string[];
|
|
102
|
+
/** Count of erasable blobs crypto-shredded (refCount → 0, BlobObject deleted). */
|
|
103
|
+
readonly blobsShredded: number;
|
|
104
|
+
/** Count of erasable blobs retained because still referenced elsewhere (shared). */
|
|
105
|
+
readonly blobsRetainedShared: number;
|
|
106
|
+
/** Collections with blobs that could NOT be crypto-shredded — legacy (no `_cek`) or blobs disabled (see type docs). */
|
|
107
|
+
readonly blobResidueCollections: readonly string[];
|
|
108
|
+
/**
|
|
109
|
+
* Count of persisted `_idx/<field>/<recordId>` index side-cars hard-deleted
|
|
110
|
+
* across the shredded records. These live under the retained
|
|
111
|
+
* collection DEK, so crypto-shred alone would leave the indexed field VALUES
|
|
112
|
+
* readable — `forget()` must delete them.
|
|
113
|
+
*/
|
|
114
|
+
readonly indexPostingsPurged: number;
|
|
115
|
+
/**
|
|
116
|
+
* `collection:id:field` entries whose persisted `_idx` side-car could NOT be
|
|
117
|
+
* deleted — index residue that still leaks the indexed value under the
|
|
118
|
+
* retained collection DEK. Non-empty means erasure is INCOMPLETE: retry, or
|
|
119
|
+
* purge the side-car out of band.
|
|
120
|
+
*/
|
|
121
|
+
readonly indexResidue: readonly string[];
|
|
122
|
+
/**
|
|
123
|
+
* Count of `_sealed[field]` slots dropped from the live store across the
|
|
124
|
+
* shredded records. For slots written under `sensitive` +
|
|
125
|
+
* `perRecordKeys` (the current path), the key derives off the per-record CEK,
|
|
126
|
+
* so tombstoning the record — which drops `_cek` and `_sealed` — also
|
|
127
|
+
* crypto-shreds the value. A legacy slot (written before per-record CEKs) keys
|
|
128
|
+
* off the collection DEK instead, so dropping it removes it from the live store but a
|
|
129
|
+
* pre-forget backup remains recoverable by a DEK holder (same caveat `_data`
|
|
130
|
+
* carries); migrate by re-`put`ting before forgetting for full crypto-shred.
|
|
131
|
+
*/
|
|
132
|
+
readonly sealedFieldsShredded: number;
|
|
133
|
+
/** Count of `_sealed_cek` host-delivery envelopes deleted (#H-1). A record sealed to an
|
|
134
|
+
* at-* host via sealRecordToHost persists its raw CEK there; forget() must destroy them. */
|
|
135
|
+
readonly sealedCekEnvelopesPurged: number;
|
|
136
|
+
/** `collection:id` whose `_sealed_cek` purge failed (residue — the host-recoverable CEK may survive). */
|
|
137
|
+
readonly sealedCekResidue: readonly string[];
|
|
138
|
+
/** `collection:id:field` sealed slots that were DEK-derived (legacy, written before per-record CEKs) and thus NOT crypto-shredded
|
|
139
|
+
* by dropping `_cek` — the collection DEK is retained, so synced/backup copies stay decryptable (#M-1). */
|
|
140
|
+
readonly sealedResidue: readonly string[];
|
|
141
|
+
/** Count of `_ledger_deltas` rows hard-deleted across the shredded records (#734) — the
|
|
142
|
+
* erasure twin of #729's elevate-side purge. Entry metadata (that the record was mutated,
|
|
143
|
+
* at which version/timestamp/actor) is retained; only the plaintext delta content is removed. */
|
|
144
|
+
readonly ledgerDeltasPurged: number;
|
|
145
|
+
/** `collection:id` refs whose `_ledger_deltas` purge failed — plaintext delta residue still
|
|
146
|
+
* readable under the retained ledger DEK. Non-empty means erasure is INCOMPLETE. */
|
|
147
|
+
readonly ledgerDeltaResidue: readonly string[];
|
|
148
|
+
/** The single `op:'forget'` ledger entry appended for this erasure. */
|
|
149
|
+
readonly ledgerEntry: LedgerEntry;
|
|
150
|
+
/** #622 — record-grain derived artifacts (MV rows, per-record derived copies) erased
|
|
151
|
+
* because their source subject was forgotten. Overlay outputs are intentionally out of
|
|
152
|
+
* scope here — an overlay is always sourced from an MV, never directly from a subject
|
|
153
|
+
* collection, so the personal-data-bearing MV rows it reads are already erased above. */
|
|
154
|
+
readonly derivedRecordsErased: number;
|
|
155
|
+
/** #622 — aggregate-grain targets (rollups) recomputed without the forgotten contribution. */
|
|
156
|
+
readonly derivedAggregatesRecomputed: number;
|
|
157
|
+
/** #622 — `collection:id` derived writes SKIPPED because the target period is frozen
|
|
158
|
+
* (recompute deferred; the aggregate retains the forgotten contribution — audited). */
|
|
159
|
+
readonly derivedResidueFrozen: readonly string[];
|
|
160
|
+
/** #650 Task 5 (#648) — referencing records tombstoned via a `'ref'` edge's `cascade` policy. */
|
|
161
|
+
readonly lookupReferencesCascaded: number;
|
|
162
|
+
/** #650 Task 5 (#648) — referencing fields cleared via a `'ref'` edge's `nullify` policy. */
|
|
163
|
+
readonly lookupReferencesNullified: number;
|
|
164
|
+
/** #650 Task 5 review (Important fix) — `'ref'` edges whose compare-key could NOT be resolved,
|
|
165
|
+
* even from the LIVE pre-shred backing row — cascade/nullify propagation was SKIPPED for these.
|
|
166
|
+
* Always empty in the ordinary case; non-empty means the skip is reported, never silent. */
|
|
167
|
+
readonly lookupReferencesResidue: readonly string[];
|
|
168
|
+
/** #633 — scoped-purge skip notices (opt-in `scopedPurge`, see {@link SubjectDeclaration}).
|
|
169
|
+
* Always empty under the unconditional default. Non-empty means a `_sealed_cek` entry or a
|
|
170
|
+
* blob scan was skipped for an undeclared collection — reported, never a silent skip. */
|
|
171
|
+
readonly scopedPurgeResidue: readonly ScopedPurgeResidueNotice[];
|
|
172
|
+
/** #776/#782/#785 — `collection:id` MV-output rows that survived erasure invalidation (eager
|
|
173
|
+
* tombstone leg AND lazy/manual `invalidateMVAtRest`) despite belonging to the forgotten
|
|
174
|
+
* subject, because the `_materializedFrom` ownership stamp could NOT be decoded (undecodable
|
|
175
|
+
* under the collection's default DEK — e.g. elevated above tier 0 on a tiered output
|
|
176
|
+
* collection; ownership unconfirmed — could be a plain user record on a same-collection
|
|
177
|
+
* partition MV). Never erased, but surfaced here rather than silently skipped (the #724
|
|
178
|
+
* posture). Non-empty means the row may still hold the forgotten/pre-elevation contribution,
|
|
179
|
+
* decryptable by tier-holders. */
|
|
180
|
+
readonly derivedResidueUndecodable: readonly string[];
|
|
181
|
+
/** #782/#785 — `collection:id` MV-output rows that DID decode and stamp-match via
|
|
182
|
+
* `_materializedFrom`, but whose erasure was declined by the #718 tier-elevation gate
|
|
183
|
+
* (`_internalDelete` returned false). Ownership CONFIRMED here — a real silent survival,
|
|
184
|
+
* not a stamp-mismatch skip — surfaced rather than dropped. Non-empty means a live,
|
|
185
|
+
* tier-holder-decryptable copy of the forgotten contribution was deliberately retained. */
|
|
186
|
+
readonly derivedResidueDeclined: readonly string[];
|
|
187
|
+
}
|
|
188
|
+
/** #633 — the two `scopedPurgeResidue` skip reasons. Single source of truth: `purge-scope.ts`
|
|
189
|
+
* (the port-internal partition helpers) imports this rather than redeclaring it. */
|
|
190
|
+
export type ScopedPurgeResidueReason = 'skipped-undeclared-sealed-cek' | 'skipped-undeclared-blob-scan';
|
|
191
|
+
/** #633 — one `ForgetResult.scopedPurgeResidue` entry: an undeclared collection's sealed-CEK
|
|
192
|
+
* entries left unpurged, or its blob scan skipped entirely, under `scopedPurge`. `count` is the
|
|
193
|
+
* number of `_sealed_cek` entries left in place (sealed-cek reason) or the number of refs whose
|
|
194
|
+
* blob scan was skipped (blob-scan reason) — aggregated per collection across the whole call. */
|
|
195
|
+
export interface ScopedPurgeResidueNotice {
|
|
196
|
+
readonly reason: ScopedPurgeResidueReason;
|
|
197
|
+
readonly collection: string;
|
|
198
|
+
readonly count: number;
|
|
199
|
+
}
|