@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,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cryptographic primitives — thin wrappers around the Web Crypto API.
|
|
3
|
+
*
|
|
4
|
+
* ## Design principle
|
|
5
|
+
*
|
|
6
|
+
* **Zero npm crypto dependencies.** Every operation uses `globalThis.crypto.subtle`,
|
|
7
|
+
* which is available natively in Node.js ≥ 18, all modern browsers, and
|
|
8
|
+
* Deno/Bun. This avoids supply-chain risk from third-party crypto packages and
|
|
9
|
+
* ensures the library stays auditable.
|
|
10
|
+
*
|
|
11
|
+
* ## Algorithms
|
|
12
|
+
*
|
|
13
|
+
* | Use case | Algorithm | Parameters |
|
|
14
|
+
* |----------|-----------|------------|
|
|
15
|
+
* | Key derivation | PBKDF2-SHA256 | 600,000 iterations, 32-byte salt |
|
|
16
|
+
* | Record encryption | AES-256-GCM | 12-byte random IV per operation |
|
|
17
|
+
* | DEK wrapping | AES-KW (RFC 3394) | 256-bit KEK |
|
|
18
|
+
* | Binary encrypt | AES-256-GCM | same as record encryption |
|
|
19
|
+
* | Integrity | HMAC-SHA256 | for presence channels |
|
|
20
|
+
* | Content hash | SHA-256 | for ledger and bundle integrity |
|
|
21
|
+
*
|
|
22
|
+
* ## Key lifecycle
|
|
23
|
+
*
|
|
24
|
+
* ```
|
|
25
|
+
* passphrase + salt
|
|
26
|
+
* └─► deriveKey() → KEK (CryptoKey, extractable: false)
|
|
27
|
+
* └─► wrapKey() → wrapped DEK bytes [stored in keyring]
|
|
28
|
+
* └─► unwrapKey() → DEK (CryptoKey) [memory only during session]
|
|
29
|
+
* └─► encrypt() / decrypt() → ciphertext / plaintext
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* IVs are generated fresh by {@link generateIV} on every encrypt call.
|
|
33
|
+
* Reusing an IV with the same key would break GCM's authentication guarantee —
|
|
34
|
+
* this function should be the only place IVs are produced.
|
|
35
|
+
*
|
|
36
|
+
* @module
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* **EnclaveKey** — the opaque key type at the enclave seam.
|
|
40
|
+
*
|
|
41
|
+
* In noy-db's reference enclave this is `CryptoKey` (the Web Crypto API's
|
|
42
|
+
* key handle). A fork's enclave redefines this alias to its own key
|
|
43
|
+
* representation (e.g. `type EnclaveKey = null` for a keyless HSM-backed
|
|
44
|
+
* fork) — outside `kernel/enclave/**`, every consumer must treat it as
|
|
45
|
+
* opaque: never construct, inspect, or serialize it directly, only pass it
|
|
46
|
+
* between barrel functions (`encrypt`/`decrypt`/`wrapKey`/`unwrapKey`/…).
|
|
47
|
+
*/
|
|
48
|
+
export type EnclaveKey = CryptoKey;
|
|
49
|
+
/** Derive a KEK from a passphrase and salt using PBKDF2-SHA256. */
|
|
50
|
+
export declare function deriveKey(passphrase: string, salt: Uint8Array): Promise<CryptoKey>;
|
|
51
|
+
/**
|
|
52
|
+
* Which AES algorithm/usage a {@link derivePassphraseKey} result is for:
|
|
53
|
+
* `'aes-kw'` mints a key-wrapping key (`wrapKey`/`unwrapKey`, e.g. for
|
|
54
|
+
* KEK derivation); `'aes-gcm'` mints a direct encrypt/decrypt key (e.g.
|
|
55
|
+
* for the wrap-DEKs primitive in `with-party/team/wrapped-deks.ts`).
|
|
56
|
+
*/
|
|
57
|
+
export type PassphraseKeyUsage = 'aes-kw' | 'aes-gcm';
|
|
58
|
+
/**
|
|
59
|
+
* Derive a non-extractable AES key from a passphrase/credential and salt
|
|
60
|
+
* via PBKDF2-SHA256, generalizing {@link deriveKey}'s AES-KW derivation to
|
|
61
|
+
* also cover AES-GCM-usage keys. Callers pin their own `iterations` and
|
|
62
|
+
* `keyUsage` so an existing call site's exact parameters (and thus its
|
|
63
|
+
* derived-key bytes) are preserved verbatim when migrated onto this
|
|
64
|
+
* shared primitive — this is call-site consolidation, not a KDF change.
|
|
65
|
+
*/
|
|
66
|
+
export declare function derivePassphraseKey(passphrase: string, salt: Uint8Array, params: {
|
|
67
|
+
iterations: number;
|
|
68
|
+
keyUsage: PassphraseKeyUsage;
|
|
69
|
+
}): Promise<CryptoKey>;
|
|
70
|
+
/** Generate a random AES-256-GCM data encryption key. */
|
|
71
|
+
export declare function generateDEK(): Promise<CryptoKey>;
|
|
72
|
+
/** Wrap (encrypt) a DEK with a KEK using AES-KW. Returns base64 string. */
|
|
73
|
+
export declare function wrapKey(dek: CryptoKey, kek: CryptoKey): Promise<string>;
|
|
74
|
+
/** Unwrap (decrypt) a DEK from base64 string using a KEK. */
|
|
75
|
+
export declare function unwrapKey(wrappedBase64: string, kek: CryptoKey): Promise<CryptoKey>;
|
|
76
|
+
/**
|
|
77
|
+
* AES-KW-wrap a per-record CEK under a collection/tier DEK. Returns base64.
|
|
78
|
+
* Deterministic over `(cek, dek)`.
|
|
79
|
+
*/
|
|
80
|
+
export declare function wrapCek(cek: CryptoKey, dek: CryptoKey): Promise<string>;
|
|
81
|
+
/**
|
|
82
|
+
* Unwrap a per-record CEK from base64 under a collection/tier DEK. Throws
|
|
83
|
+
* `InvalidKeyError` if the wrapped bytes do not authenticate under the DEK.
|
|
84
|
+
*/
|
|
85
|
+
export declare function unwrapCek(wrappedBase64: string, dek: CryptoKey): Promise<CryptoKey>;
|
|
86
|
+
/**
|
|
87
|
+
* Import a raw 32-byte AES-256-GCM record CEK (e.g. from a sealed-CEK
|
|
88
|
+
* delivery binding). Non-extractable, decrypt-only — the imported key is
|
|
89
|
+
* used solely to open the record's `_iv`/`_data` body under `decrypt()`.
|
|
90
|
+
*/
|
|
91
|
+
export declare function importCek(rawKey: Uint8Array): Promise<CryptoKey>;
|
|
92
|
+
export interface EncryptResult {
|
|
93
|
+
iv: string;
|
|
94
|
+
data: string;
|
|
95
|
+
}
|
|
96
|
+
/** Encrypt plaintext JSON string with AES-256-GCM. Fresh IV per call. */
|
|
97
|
+
export declare function encrypt(plaintext: string, dek: CryptoKey): Promise<EncryptResult>;
|
|
98
|
+
/** Decrypt AES-256-GCM ciphertext. Throws on wrong key or tampered data. */
|
|
99
|
+
export declare function decrypt(ivBase64: string, dataBase64: string, dek: CryptoKey): Promise<string>;
|
|
100
|
+
/**
|
|
101
|
+
* Encrypt raw bytes with AES-256-GCM using a fresh random IV.
|
|
102
|
+
* Used by the attachment store so binary blobs avoid double base64 encoding
|
|
103
|
+
* (the existing `encrypt()` function calls `TextEncoder` on a string — here
|
|
104
|
+
* we pass the `Uint8Array` directly to `subtle.encrypt`).
|
|
105
|
+
*/
|
|
106
|
+
export declare function encryptBytes(data: Uint8Array, dek: CryptoKey): Promise<EncryptResult>;
|
|
107
|
+
/**
|
|
108
|
+
* Decrypt AES-256-GCM ciphertext back to raw bytes.
|
|
109
|
+
* Counterpart to `encryptBytes`. Throws `TamperedError` on auth-tag failure.
|
|
110
|
+
*/
|
|
111
|
+
export declare function decryptBytes(ivBase64: string, dataBase64: string, dek: CryptoKey): Promise<Uint8Array>;
|
|
112
|
+
/**
|
|
113
|
+
* SHA-256 hex digest of raw bytes. Used to derive content-addressed
|
|
114
|
+
* eTags for blob deduplication. Computed on plaintext bytes
|
|
115
|
+
* before compression and encryption so the eTag identifies content, not
|
|
116
|
+
* ciphertext, and survives re-encryption (key rotation, re-upload).
|
|
117
|
+
*/
|
|
118
|
+
export declare function sha256Hex(data: Uint8Array): Promise<string>;
|
|
119
|
+
/**
|
|
120
|
+
* Compute HMAC-SHA-256(key, data) and return hex string.
|
|
121
|
+
*
|
|
122
|
+
* Used to derive content-addressed eTags that are opaque to the store:
|
|
123
|
+
* ```
|
|
124
|
+
* eTag = hmacSha256Hex(blobDEK, plaintext)
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* Unlike a plain SHA-256, the HMAC is keyed by the vault-shared `_blob` DEK,
|
|
128
|
+
* so an attacker with store access cannot pre-compute eTags for known files.
|
|
129
|
+
* Deduplication still works within a vault (same key + same content = same eTag).
|
|
130
|
+
*/
|
|
131
|
+
export declare function hmacSha256Hex(key: CryptoKey, data: Uint8Array): Promise<string>;
|
|
132
|
+
/**
|
|
133
|
+
* Encrypt raw bytes with AES-256-GCM using Additional Authenticated Data.
|
|
134
|
+
*
|
|
135
|
+
* The AAD binds each chunk to its parent blob and position, preventing
|
|
136
|
+
* chunk reorder, substitution, and truncation attacks:
|
|
137
|
+
* ```
|
|
138
|
+
* AAD = UTF-8("{eTag}:{chunkIndex}:{chunkCount}")
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* The AAD is NOT stored — the reader reconstructs it from `BlobObject`
|
|
142
|
+
* metadata and passes it to `decryptBytesWithAAD`.
|
|
143
|
+
*/
|
|
144
|
+
export declare function encryptBytesWithAAD(data: Uint8Array, dek: CryptoKey, aad: Uint8Array): Promise<EncryptResult>;
|
|
145
|
+
/**
|
|
146
|
+
* Decrypt AES-256-GCM ciphertext with AAD verification.
|
|
147
|
+
*
|
|
148
|
+
* If the AAD does not match the one used at encryption time (e.g. because
|
|
149
|
+
* a chunk was reordered or substituted from another blob), the GCM auth
|
|
150
|
+
* tag fails and this throws `TamperedError`.
|
|
151
|
+
*/
|
|
152
|
+
export declare function decryptBytesWithAAD(ivBase64: string, dataBase64: string, dek: CryptoKey, aad: Uint8Array): Promise<Uint8Array>;
|
|
153
|
+
/**
|
|
154
|
+
* Derive an AES-256-GCM presence key from a collection DEK using HKDF-SHA256.
|
|
155
|
+
*
|
|
156
|
+
* The presence key is domain-separated from the data DEK by the fixed salt
|
|
157
|
+
* `'noydb-presence'` and the `info` = collection name. This means:
|
|
158
|
+
* - The adapter never sees the presence key.
|
|
159
|
+
* - Presence payloads rotate automatically when the collection DEK is rotated.
|
|
160
|
+
* - Revoked users cannot derive the new presence key after a DEK rotation.
|
|
161
|
+
*
|
|
162
|
+
* @param dek The collection's AES-256-GCM DEK (extractable).
|
|
163
|
+
* @param collectionName Used as the HKDF `info` parameter for domain separation.
|
|
164
|
+
* @returns A non-extractable AES-256-GCM key suitable for presence payload encryption.
|
|
165
|
+
*/
|
|
166
|
+
export declare function derivePresenceKey(dek: CryptoKey, collectionName: string): Promise<CryptoKey>;
|
|
167
|
+
/**
|
|
168
|
+
* Derive a **per-field** AES-256-GCM key from a collection DEK using
|
|
169
|
+
* HKDF-SHA256, used to encrypt a single sensitive field into its own
|
|
170
|
+
* `_sealed[field]` envelope slot (structural group-encryption).
|
|
171
|
+
*
|
|
172
|
+
* Domain-separated from the data DEK (and from the presence/deterministic
|
|
173
|
+
* channels) by the fixed salt `'noydb-sealed'` and an `info` of
|
|
174
|
+
* `JSON.stringify(['noydb-sealed', collectionName, field])`. The JSON-array
|
|
175
|
+
* encoding is injective — each element is separately quoted/escaped — so
|
|
176
|
+
* collection `a/sealed/b` + field `c` cannot collide with collection `a` +
|
|
177
|
+
* field `b/sealed/c`. Each sensitive field gets a **distinct** key, so a
|
|
178
|
+
* `_sealed[a]` ciphertext does not authenticate under field `b`'s key —
|
|
179
|
+
* sealed fields are cryptographically isolated from one another. The
|
|
180
|
+
* collection name keeps the same field name in two collections from sharing a
|
|
181
|
+
* key, mirroring how `derivePresenceKey` / `encryptDeterministic` domain-separate.
|
|
182
|
+
*
|
|
183
|
+
* @param dek The collection's AES-256-GCM DEK (extractable).
|
|
184
|
+
* @param collectionName Part of the HKDF `info` for domain separation.
|
|
185
|
+
* @param field Sensitive field name — the rest of the `info`.
|
|
186
|
+
* @returns A non-extractable AES-256-GCM key for that field's sealed slot.
|
|
187
|
+
*/
|
|
188
|
+
export declare function deriveSealedFieldKey(dek: CryptoKey, collectionName: string, field: string): Promise<CryptoKey>;
|
|
189
|
+
/**
|
|
190
|
+
* Derive a per-record sealed-field key from the record's **per-record CEK**
|
|
191
|
+
* rather than the collection DEK. Same HKDF construction as
|
|
192
|
+
* {@link deriveSealedFieldKey} but with salt `'noydb-sealed-cek'` (distinct
|
|
193
|
+
* from `'noydb-sealed'`), so a CEK-derived key can never collide with a
|
|
194
|
+
* DEK-derived one for the same `{collection, field}`.
|
|
195
|
+
*
|
|
196
|
+
* The point: the sealed ciphertext's only key now flows from the record's CEK.
|
|
197
|
+
* Dropping the record's wrapped `_cek` (crypto-shred / `forget`) makes the key
|
|
198
|
+
* — and thus `_sealed[field]` — unrecoverable, giving sealed fields the same
|
|
199
|
+
* erasure guarantee `_data` already has. The CEK must be extractable (it is —
|
|
200
|
+
* `unwrapCek`/`generateDEK` mint extractable keys).
|
|
201
|
+
*
|
|
202
|
+
* @param cek The record's AES-256-GCM CEK (extractable).
|
|
203
|
+
* @param collectionName Part of the HKDF `info` for domain separation.
|
|
204
|
+
* @param field Sensitive field name — the rest of the `info`.
|
|
205
|
+
* @returns A non-extractable AES-256-GCM key for that field's sealed slot.
|
|
206
|
+
*/
|
|
207
|
+
export declare function deriveSealedFieldKeyFromCek(cek: CryptoKey, collectionName: string, field: string): Promise<CryptoKey>;
|
|
208
|
+
/**
|
|
209
|
+
* Derive the collection's **dedicated deterministic-index key** from its DEK
|
|
210
|
+
* via HKDF-SHA256 (L-1, #554).
|
|
211
|
+
*
|
|
212
|
+
* `_det` slots previously encrypted under the raw collection DEK — the same
|
|
213
|
+
* key `_data` uses with a *randomized*-IV regime while `_det` uses a
|
|
214
|
+
* *deterministic*-IV regime. Two IV regimes on one key is avoidable hygiene
|
|
215
|
+
* debt (~2^-96 theoretical collision), so the deterministic index now gets its
|
|
216
|
+
* own HKDF-separated key: salt `'noydb-det'`, info
|
|
217
|
+
* `JSON.stringify(['noydb-det'])` (the injective JSON-array domain tag, same
|
|
218
|
+
* convention as {@link deriveSealedFieldKey}). Per-field separation still
|
|
219
|
+
* comes from the `'<collection>/<field>'` context inside
|
|
220
|
+
* {@link encryptDeterministic}, exactly as before.
|
|
221
|
+
*
|
|
222
|
+
* The derived key stays **DEK-derived (collection-level)** on purpose: `_det`
|
|
223
|
+
* is carried verbatim through per-record CEK rotation (see
|
|
224
|
+
* `record-keys/sealing.ts`), so its key must not depend on the CEK. It rotates
|
|
225
|
+
* with the collection DEK, like the presence key.
|
|
226
|
+
*
|
|
227
|
+
* The key is minted **extractable** — {@link encryptDeterministic} derives its
|
|
228
|
+
* per-value IV via HKDF over the raw key bytes (an `exportKey` under the
|
|
229
|
+
* hood), which a non-extractable key would forbid. Same in-memory posture as
|
|
230
|
+
* the DEK itself (`generateDEK` mints extractable keys).
|
|
231
|
+
*
|
|
232
|
+
* @param dek The collection's AES-256-GCM DEK (extractable).
|
|
233
|
+
* @returns A dedicated AES-256-GCM key for the `_det` deterministic index.
|
|
234
|
+
*/
|
|
235
|
+
export declare function deriveDeterministicKey(dek: CryptoKey): Promise<CryptoKey>;
|
|
236
|
+
/**
|
|
237
|
+
* Encrypt a plaintext string with AES-256-GCM and a deterministic,
|
|
238
|
+
* HKDF-derived IV.
|
|
239
|
+
*
|
|
240
|
+
* The same `{ dek, context, plaintext }` triple always produces the
|
|
241
|
+
* same `{ iv, data }` — call this twice and you can string-compare the
|
|
242
|
+
* ciphertexts to check equality of the inputs without decrypting them.
|
|
243
|
+
*
|
|
244
|
+
* @param context Domain-separation string — by convention
|
|
245
|
+
* `'<collection>/<field>'`. Different contexts encrypt
|
|
246
|
+
* the same plaintext to different ciphertexts, so
|
|
247
|
+
* `email` in collection `users` does not collide with
|
|
248
|
+
* `email` in collection `customers`.
|
|
249
|
+
*/
|
|
250
|
+
export declare function encryptDeterministic(plaintext: string, dek: CryptoKey, context: string): Promise<EncryptResult>;
|
|
251
|
+
/**
|
|
252
|
+
* Counterpart to {@link encryptDeterministic}. The IV is stored
|
|
253
|
+
* alongside the ciphertext (exactly like the randomized path), so
|
|
254
|
+
* decrypt uses the stored IV and verifies the GCM auth tag — a tampered
|
|
255
|
+
* ciphertext throws `TamperedError` just like randomized AES-GCM.
|
|
256
|
+
*/
|
|
257
|
+
export declare function decryptDeterministic(ivBase64: string, dataBase64: string, dek: CryptoKey): Promise<string>;
|
|
258
|
+
/** Generate a random 12-byte IV for AES-GCM. */
|
|
259
|
+
export declare function generateIV(): Uint8Array;
|
|
260
|
+
/** Generate a random 32-byte salt for PBKDF2. */
|
|
261
|
+
export declare function generateSalt(): Uint8Array;
|
|
262
|
+
export declare function bufferToBase64(buffer: ArrayBuffer | Uint8Array): string;
|
|
263
|
+
export declare function base64ToBuffer(base64: string): Uint8Array<ArrayBuffer>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **kernel/enclave** — the hub's crypto interior, behind one door.
|
|
3
|
+
*
|
|
4
|
+
* This barrel is **the fork-swap contract**: a sister project that wants a
|
|
5
|
+
* different crypto engine (a different KDF, a hardware-backed keystore, a
|
|
6
|
+
* post-quantum wrap algorithm, …) replaces the entire `kernel/enclave/`
|
|
7
|
+
* folder wholesale and only has to honor the exports below. Nothing outside
|
|
8
|
+
* `kernel/enclave/**` may deep-import `crypto.js` or `record-keys/*` directly
|
|
9
|
+
* — `scripts/check-architecture.mjs`'s `enclave-barrel-only` check enforces
|
|
10
|
+
* that mechanically. Import sites inside `kernel/enclave/**` keep their
|
|
11
|
+
* existing relative imports; this door is for everyone else.
|
|
12
|
+
*
|
|
13
|
+
* The export list is the OBSERVED contract — exactly the symbols consumed
|
|
14
|
+
* from outside this folder today — grouped by the module that defines them:
|
|
15
|
+
*
|
|
16
|
+
* - key type — `crypto.ts`: `EnclaveKey`, the opaque key type every
|
|
17
|
+
* barrel-facing signature traffics in (`= CryptoKey` in
|
|
18
|
+
* noy-db's reference enclave; a fork redefines it to its
|
|
19
|
+
* own key representation — see the type's own doc for
|
|
20
|
+
* the fork contract).
|
|
21
|
+
* - crypto ops — `crypto.ts`: AES-256-GCM encrypt/decrypt (+ bytes, AAD,
|
|
22
|
+
* deterministic variants), SHA-256 / HMAC-SHA-256 hashing.
|
|
23
|
+
* - key lifecycle — `crypto.ts` + `record-keys/lifecycle.ts`: KEK/DEK
|
|
24
|
+
* derivation, AES-KW wrap/unwrap, per-record CEK
|
|
25
|
+
* wrap/unwrap/import + resolution/re-wrap, HKDF-derived
|
|
26
|
+
* presence/sealed-field keys, base64 helpers.
|
|
27
|
+
* - record codec — `record-keys/record-codec.ts`: the per-record
|
|
28
|
+
* encode/decode engine.
|
|
29
|
+
* - sealing — `record-keys/sealing.ts`: the sealed-record grantor
|
|
30
|
+
* primitives (seal/revoke/rotate to an `at-*` host).
|
|
31
|
+
* - deterministic — `record-keys/deterministic.ts`: blind-equality lookup
|
|
32
|
+
* over deterministically-encrypted fields.
|
|
33
|
+
* - tombstone — `record-keys/tombstone.ts`: the erased-record residue.
|
|
34
|
+
* - envelope body — `record-keys/envelope-body.ts`: the C1 protected-body
|
|
35
|
+
* access contract (`openEnvelopeJson`,
|
|
36
|
+
* `writeEnvelopeBody`, `hasPerRecordKey`,
|
|
37
|
+
* `envelopeBodyForHash`) — the sanctioned door onto
|
|
38
|
+
* `_iv`/`_data`/`_cek`/`_sealed` for everyone outside
|
|
39
|
+
* this folder.
|
|
40
|
+
* - reserved envelopes — `record-keys/sealed-slots.ts`: `makeReservedEnvelopes`,
|
|
41
|
+
* the whole-envelope encrypt/decrypt door scoped to a
|
|
42
|
+
* declared collection-name prefix (e.g. `_dict_`) —
|
|
43
|
+
* `kernel/vault.ts` binds it for `DictionaryHandle`
|
|
44
|
+
* (#629 Task 4).
|
|
45
|
+
*
|
|
46
|
+
* Additive changes only — removing or renaming an export here is breaking
|
|
47
|
+
* for any fork. Frozen by `__tests__/enclave-surface-golden.test.ts`.
|
|
48
|
+
*
|
|
49
|
+
* **Refusal contract:** the barrel above is frozen — every symbol must
|
|
50
|
+
* exist in any fork — but the optional groups (sealing, deterministic,
|
|
51
|
+
* per-record-key lifecycle) MAY throw `EnclaveNotSupportedError` instead
|
|
52
|
+
* of implementing the reference behavior. The core groups (crypto ops,
|
|
53
|
+
* record codec, tombstone) MUST NOT throw it — they are load-bearing for
|
|
54
|
+
* every consumer regardless of which enclave is wired in. noy-db's own
|
|
55
|
+
* enclave supports every group, so it never throws this error.
|
|
56
|
+
*/
|
|
57
|
+
export type { EnclaveKey } from './crypto.js';
|
|
58
|
+
export { encrypt, decrypt, encryptBytes, decryptBytes, encryptBytesWithAAD, decryptBytesWithAAD, encryptDeterministic, decryptDeterministic, sha256Hex, hmacSha256Hex, } from './crypto.js';
|
|
59
|
+
export { deriveKey, derivePassphraseKey, generateDEK, generateSalt, generateIV, wrapKey, unwrapKey, bufferToBase64, base64ToBuffer, derivePresenceKey, deriveDeterministicKey, deriveSealedFieldKey, deriveSealedFieldKeyFromCek, wrapCek, unwrapCek, importCek, } from './crypto.js';
|
|
60
|
+
export type { PassphraseKeyUsage } from './crypto.js';
|
|
61
|
+
export { resolveStableCek, rewrapBodyToDek, rewrapEnvelope, applyRewrappedBody, isRewrappedUnder } from './record-keys/lifecycle.js';
|
|
62
|
+
export type { RewrappedBody } from './record-keys/lifecycle.js';
|
|
63
|
+
export { RecordCodec } from './record-keys/record-codec.js';
|
|
64
|
+
export type { SealedShredSlot } from './record-keys/record-codec.js';
|
|
65
|
+
export { SEALED_CEK_NS, sealRecordToHost, revokeSealedRecord, rotateRecordCek } from './record-keys/sealing.js';
|
|
66
|
+
export type { SealingContext } from './record-keys/sealing.js';
|
|
67
|
+
export { findByDet, queryByDet } from './record-keys/deterministic.js';
|
|
68
|
+
export type { DeterministicContext } from './record-keys/deterministic.js';
|
|
69
|
+
export { isTombstone, isTombstoneShape, buildTombstone, isDeleteMarker, buildDeleteMarker } from './record-keys/tombstone.js';
|
|
70
|
+
export { openEnvelopeJson, writeEnvelopeBody, hasPerRecordKey, envelopeBodyForHash } from './record-keys/envelope-body.js';
|
|
71
|
+
export { makeReservedEnvelopes } from './record-keys/sealed-slots.js';
|
|
72
|
+
export { deriveVdigSlotKey } from './classify/vdig.js';
|
|
73
|
+
export { pbkdf2VerifyDigest } from './classify/digest.js';
|
|
74
|
+
export { ctEqualTags } from './classify/compare.js';
|
|
75
|
+
export { evaluateKofN } from './classify/kofn.js';
|
|
76
|
+
export { deriveClassifyIndexKey, deriveClassifyIndexSalt, mintBidxTag } from './classify/bidx.js';
|
|
77
|
+
export { computeBidxTarget } from './classify/find.js';
|
|
78
|
+
export { deriveBrokerProofBits, deriveBrokerProofKey, computeBrokerProof, issueChallenge, verifyBrokerProof, } from './broker/proof.js';
|
|
79
|
+
export type { BrokerProofCanonicalParts, VerifyBrokerProofArgs, IssuedChallenge } from './broker/proof.js';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic-index lookups (`findByDet` / `queryByDet`).
|
|
3
|
+
*
|
|
4
|
+
* A collection that declares `deterministicFields` stamps a deterministic
|
|
5
|
+
* AES-GCM ciphertext for each such field on the envelope's `_det` slot at write
|
|
6
|
+
* time (the encrypt side lives in {@link RecordCodec.encryptRecord}). These
|
|
7
|
+
* helpers are the READ side: recompute the deterministic ciphertext for a query
|
|
8
|
+
* value and scan the adapter for envelopes whose `_det[field]` matches — no
|
|
9
|
+
* record bodies are decrypted during the scan, which is the whole point of a
|
|
10
|
+
* deterministic index.
|
|
11
|
+
*
|
|
12
|
+
* Both functions take a small {@link DeterministicContext} (the exact `this.*`
|
|
13
|
+
* the moving methods touched) instead of `this`, mirroring the `record-keys/`
|
|
14
|
+
* siblings. Behaviour is byte-identical to the inline code they replaced.
|
|
15
|
+
* Elevated records (_tier > 0) are skipped: invisible to tier-0 scans (#691).
|
|
16
|
+
*
|
|
17
|
+
* Internal service — not exported as a `@noy-db/hub/*` subpath.
|
|
18
|
+
*/
|
|
19
|
+
import { type EnclaveKey } from '../crypto.js';
|
|
20
|
+
import type { NoydbStore } from '../../types.js';
|
|
21
|
+
import type { RecordCodec } from './record-codec.js';
|
|
22
|
+
/** Everything the moving deterministic-index methods touched on `this.*`. */
|
|
23
|
+
export interface DeterministicContext<T> {
|
|
24
|
+
/** Collection name — the deterministic-encryption AAD scope. */
|
|
25
|
+
readonly name: string;
|
|
26
|
+
/** Vault namespace the records live under. */
|
|
27
|
+
readonly vault: string;
|
|
28
|
+
/** The ciphertext store (scanned envelope-by-envelope). */
|
|
29
|
+
readonly adapter: NoydbStore;
|
|
30
|
+
/** Declared deterministic-index fields, or null when the feature is off. */
|
|
31
|
+
readonly deterministicFields: ReadonlySet<string> | null;
|
|
32
|
+
/** False on plaintext collections — det lookups are encrypted-only. */
|
|
33
|
+
readonly storeCiphertext: boolean;
|
|
34
|
+
/** The collection DEK resolver. */
|
|
35
|
+
getDEK(): Promise<EnclaveKey>;
|
|
36
|
+
/** The record codec — decrypts a matched envelope to T. */
|
|
37
|
+
readonly codec: RecordCodec<T>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Find the first record whose deterministic field matches the given plaintext.
|
|
41
|
+
* Returns `null` when no match exists.
|
|
42
|
+
*
|
|
43
|
+
* Reads every envelope via the adapter and compares the stored `_det[field]` to
|
|
44
|
+
* a freshly computed deterministic ciphertext — no record bodies are decrypted
|
|
45
|
+
* during the search.
|
|
46
|
+
*
|
|
47
|
+
* Throws when the field is not declared in `deterministicFields`, so a typo
|
|
48
|
+
* fails loudly at the call site rather than silently returning null forever.
|
|
49
|
+
*/
|
|
50
|
+
export declare function findByDet<T>(ctx: DeterministicContext<T>, field: string, value: unknown): Promise<T | null>;
|
|
51
|
+
/**
|
|
52
|
+
* Return every record whose deterministic field matches. Same semantics as
|
|
53
|
+
* {@link findByDet} but without the short-circuit.
|
|
54
|
+
*/
|
|
55
|
+
export declare function queryByDet<T>(ctx: DeterministicContext<T>, field: string, value: unknown): Promise<T[]>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enclave body helpers — the C1 protected-body access contract.
|
|
3
|
+
*
|
|
4
|
+
* `EncryptedEnvelope` splits into a protocol header (family-owned; `_noydb`,
|
|
5
|
+
* `_v`, `_ts`, `_by`, `_source`, `_sourceTs`, `_tier`, `_elevatedBy`) and a
|
|
6
|
+
* protected body (enclave-owned; `_iv`, `_data`, `_cek`, `_det`, `_sealed`,
|
|
7
|
+
* `_debug`). The four helpers below are the ONLY sanctioned way for code
|
|
8
|
+
* outside `kernel/enclave/**` to read or construct the protected body —
|
|
9
|
+
* later migration batches move the ~121 direct `_iv`/`_data`/`_cek`/`_sealed`
|
|
10
|
+
* access sites in `with-*` services onto these.
|
|
11
|
+
*
|
|
12
|
+
* Each helper reproduces an EXISTING behavior byte-for-byte (see the
|
|
13
|
+
* per-function doc for its oracle call site) — this file introduces no new
|
|
14
|
+
* crypto or semantics, only a narrower door onto what already runs.
|
|
15
|
+
*/
|
|
16
|
+
import { type EnclaveKey } from '../crypto.js';
|
|
17
|
+
import type { EncryptedEnvelope } from '../../types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Open an envelope's protected body to its JSON text.
|
|
20
|
+
*
|
|
21
|
+
* Mirrors the dominant direct-decrypt call-site shape (e.g.
|
|
22
|
+
* `with-audit/consent/consent.ts`'s `decryptEntry`):
|
|
23
|
+
* - `opts.encrypted === false` (default `true`) → plaintext collection;
|
|
24
|
+
* returns `env._data` as-is, `key` untouched.
|
|
25
|
+
* - `env._cek` present → per-record-key envelope (mirrors
|
|
26
|
+
* `record-codec.ts`'s `resolveEnvelopeCek`): unwrap the CEK under `key`
|
|
27
|
+
* (the collection DEK), decrypt the body under the unwrapped CEK.
|
|
28
|
+
* - `env._cek` absent → legacy path, decrypt the body directly under `key`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function openEnvelopeJson(env: EncryptedEnvelope, key: EnclaveKey, opts?: {
|
|
31
|
+
encrypted?: boolean;
|
|
32
|
+
}): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Produce the protected-body fields (`_iv`/`_data`/`_cek`) for an envelope a
|
|
35
|
+
* caller is assembling.
|
|
36
|
+
*
|
|
37
|
+
* - `opts.encrypted === false` (default `true`) → plaintext collection;
|
|
38
|
+
* emits `{ _iv: '', _data: json }` (today's `buildPlaintextEnvelope`
|
|
39
|
+
* shape), `key` untouched.
|
|
40
|
+
* - `opts.perRecordKey === true` → mints a fresh per-record CEK, encrypts
|
|
41
|
+
* the body under it, and AES-KW-wraps the CEK under `key` (mirrors
|
|
42
|
+
* `encryptJsonString`'s `cek !== undefined` branch, except the CEK is
|
|
43
|
+
* generated here rather than supplied by the caller).
|
|
44
|
+
* - otherwise → legacy path, body encrypted directly under `key`.
|
|
45
|
+
*/
|
|
46
|
+
export declare function writeEnvelopeBody(json: string, key: EnclaveKey, opts?: {
|
|
47
|
+
encrypted?: boolean;
|
|
48
|
+
perRecordKey?: boolean;
|
|
49
|
+
}): Promise<Pick<EncryptedEnvelope, '_iv' | '_data' | '_cek'>>;
|
|
50
|
+
/**
|
|
51
|
+
* Discriminant: does this envelope carry a per-record key?
|
|
52
|
+
*
|
|
53
|
+
* Replaces raw `envelope._cek !== undefined` checks scattered across
|
|
54
|
+
* services — `_cek` presence is the format discriminant (see
|
|
55
|
+
* `record-codec.ts`'s `resolveEnvelopeCek` doc).
|
|
56
|
+
*/
|
|
57
|
+
export declare function hasPerRecordKey(env: EncryptedEnvelope): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Canonical body string for the ledger hash chain — the exact bytes
|
|
60
|
+
* `with-commit/history/ledger/hash.ts`'s `envelopePayloadHash` derives from
|
|
61
|
+
* `_data` + `_sealed` + `_vdig` + `_bidx` before hashing:
|
|
62
|
+
* - no `_sealed`, no `_vdig`, no `_bidx` → `_data` alone (back-compat: every
|
|
63
|
+
* pre-existing ledger entry and non-sealed backup hashes byte-identically).
|
|
64
|
+
* - any map present → canonical JSON of `{ _data, _sealed?, _vdig?, _bidx? }`
|
|
65
|
+
* with sorted keys at every level, each map bound ONLY when present, so
|
|
66
|
+
* the result is independent of the maps' field-insertion / store-
|
|
67
|
+
* serialization order. `_bidx` is always the LAST segment, so a legacy
|
|
68
|
+
* `_vdig`-only / `_bidx`-absent envelope hashes byte-identically to its
|
|
69
|
+
* stage-2 value.
|
|
70
|
+
*
|
|
71
|
+
* Deliberately reimplements the two-key-object canonicalization inline
|
|
72
|
+
* rather than importing `with-commit/history/ledger/entry.ts`'s general
|
|
73
|
+
* `canonicalJson` — `kernel/enclave/**` may import only spine types (C3),
|
|
74
|
+
* never a `with-*` service. For this fixed `{ _data: string; _sealed:
|
|
75
|
+
* Record<string, string> }` shape the two produce byte-identical output
|
|
76
|
+
* (verified against that exact call site's oracle expression in
|
|
77
|
+
* `envelope-body.test.ts`).
|
|
78
|
+
*/
|
|
79
|
+
export declare function envelopeBodyForHash(env: EncryptedEnvelope): string;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-record CEK lifecycle helpers for the WRITE path.
|
|
3
|
+
*
|
|
4
|
+
* These are the collection-coupled CEK operations, lifted off `Collection`
|
|
5
|
+
* behind narrow deps so the kernel file delegates instead of carrying the
|
|
6
|
+
* crypto inline:
|
|
7
|
+
*
|
|
8
|
+
* - {@link resolveStableCek} — the stable-CEK rule: an update or history
|
|
9
|
+
* snapshot reuses the record's existing CEK so a single CEK delete kills
|
|
10
|
+
* the whole version chain; a genuine insert (or legacy record being
|
|
11
|
+
* migrated) mints a fresh one.
|
|
12
|
+
* - {@link rewrapBodyToDek} — move a record body's wrapping from one DEK to
|
|
13
|
+
* another (tier elevate/demote, bundle re-key) WITHOUT changing the body
|
|
14
|
+
* key: unwrap the CEK under the source DEK, re-encrypt the body under the
|
|
15
|
+
* same CEK, re-wrap the CEK under the destination DEK. History-chain
|
|
16
|
+
* identity is preserved because the body key never changes.
|
|
17
|
+
*
|
|
18
|
+
* Both are pure functions over their deps — the `cekCache` ownership stays on
|
|
19
|
+
* the collection (its lifetime is tied to `load()`), so callers cache the
|
|
20
|
+
* returned key themselves.
|
|
21
|
+
*/
|
|
22
|
+
import { type EnclaveKey } from '../crypto.js';
|
|
23
|
+
import type { EncryptedEnvelope } from '../../types.js';
|
|
24
|
+
import type { Lru } from '../../cache/index.js';
|
|
25
|
+
/** Dependencies {@link resolveStableCek} needs from its collection. */
|
|
26
|
+
export interface StableCekDeps {
|
|
27
|
+
/** The collection's per-record CEK cache (`null` → no caching). */
|
|
28
|
+
readonly cache: Lru<string, EnclaveKey> | null;
|
|
29
|
+
/** Read the record's live envelope (to recover an existing `_cek`). */
|
|
30
|
+
getLive(id: string): Promise<EncryptedEnvelope | null>;
|
|
31
|
+
/** The DEK the CEK is wrapped under (the collection DEK on the normal path). */
|
|
32
|
+
getDEK(): Promise<EnclaveKey>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the stable CEK for a record on the write path. Caches the resolved
|
|
36
|
+
* key under `id` so an update + its history snapshot share one CEK.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveStableCek(deps: StableCekDeps, id: string): Promise<EnclaveKey>;
|
|
39
|
+
/** Re-wrapped body bytes + the (optional) CEK to cache. */
|
|
40
|
+
export interface RewrappedBody {
|
|
41
|
+
readonly _iv: string;
|
|
42
|
+
readonly _data: string;
|
|
43
|
+
/** Present iff the source envelope carried a CEK (per-record-key record). */
|
|
44
|
+
readonly _cek?: string;
|
|
45
|
+
/** The body key when one exists, so the caller can cache it; `null` for a legacy record. */
|
|
46
|
+
readonly cek: EnclaveKey | null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Move a record body from `fromDek` to `toDek`.
|
|
50
|
+
*
|
|
51
|
+
* - Per-record-key record (`_cek` present): unwrap the CEK under `fromDek`,
|
|
52
|
+
* re-encrypt the body under the SAME CEK, re-wrap the CEK under `toDek`. The
|
|
53
|
+
* body key is unchanged → history-chain identity preserved.
|
|
54
|
+
* - Legacy record (no `_cek`): decrypt under `fromDek`, re-encrypt under `toDek`
|
|
55
|
+
* directly — byte-for-byte the pre-CEK behaviour.
|
|
56
|
+
*/
|
|
57
|
+
export declare function rewrapBodyToDek(envelope: Pick<EncryptedEnvelope, '_iv' | '_data' | '_cek'>, fromDek: EnclaveKey, toDek: EnclaveKey): Promise<RewrappedBody>;
|
|
58
|
+
/**
|
|
59
|
+
* Merge an ALREADY-rewrapped {@link RewrappedBody} into `envelope`, keeping
|
|
60
|
+
* every field but the re-keyed body (`_iv`/`_data`/`_cek`) unchanged.
|
|
61
|
+
*
|
|
62
|
+
* Body-field access (`_iv`/`_data`/`_cek`) is sanctioned inside the enclave;
|
|
63
|
+
* this lets callers outside it get back a ready-to-store envelope without
|
|
64
|
+
* reading those fields themselves. Takes a body the caller has ALREADY
|
|
65
|
+
* computed (vs. {@link rewrapEnvelope}, which also runs `rewrapBodyToDek`)
|
|
66
|
+
* so a caller building a SECOND envelope from the same rewrap — a tier
|
|
67
|
+
* move's live write AND its pre-move `_history` snapshot, #728 — pays the
|
|
68
|
+
* unwrap/decrypt/encrypt/wrap crypto once, not twice.
|
|
69
|
+
*/
|
|
70
|
+
export declare function applyRewrappedBody(envelope: EncryptedEnvelope, body: RewrappedBody): EncryptedEnvelope;
|
|
71
|
+
/**
|
|
72
|
+
* Move a FULL stored envelope from `fromDek` to `toDek`, preserving every
|
|
73
|
+
* field other than the re-keyed body (`_iv`/`_data`/`_cek`) unchanged.
|
|
74
|
+
* Mirrors the spread-merge idiom `with-audit/tiers/index.ts`'s
|
|
75
|
+
* `elevate()`/`demote()` use to apply `rewrapBodyToDek`'s result to the live
|
|
76
|
+
* envelope, generalized to any envelope shape (history callers don't bump
|
|
77
|
+
* `_v`/`_ts`/`_tier` the way a tier move does).
|
|
78
|
+
*/
|
|
79
|
+
export declare function rewrapEnvelope(envelope: EncryptedEnvelope, fromDek: EnclaveKey, toDek: EnclaveKey): Promise<EncryptedEnvelope>;
|
|
80
|
+
/**
|
|
81
|
+
* Is `envelope` ALREADY wrapped under `dek` (a per-record CEK wrapped under
|
|
82
|
+
* `dek`, or — legacy, no `_cek` — the body itself decryptable under `dek`)?
|
|
83
|
+
*
|
|
84
|
+
* A toDek-first idempotency check for retry-safe rewrap loops (#712 crash
|
|
85
|
+
* atomicity, `with-commit/history/history.ts`'s `rewrapHistory`): a crash
|
|
86
|
+
* mid-rewrap can strand some entries already moved to `toDek` while others
|
|
87
|
+
* remain under `fromDek`. Calling this with `toDek` before attempting the
|
|
88
|
+
* `fromDek` rewrap lets the caller skip an already-migrated entry instead of
|
|
89
|
+
* re-wrapping it (a re-wrap would be a correctness no-op but doubles as an
|
|
90
|
+
* unnecessary write) — and, more importantly, tells a retry loop that this
|
|
91
|
+
* entry needs no `fromDek` unwrap attempt at all, so a crash that landed some
|
|
92
|
+
* entries under `toDek` doesn't wedge on those already-moved entries.
|
|
93
|
+
*
|
|
94
|
+
* AES-KW (CEK unwrap) and AES-GCM (direct decrypt) are both authenticated —
|
|
95
|
+
* unwrap/decrypt under the wrong key throws, never silently returns garbage
|
|
96
|
+
* — so a caught error here reliably means "not wrapped under `dek`", not a
|
|
97
|
+
* corrupt envelope (a genuinely corrupt envelope also throws under the
|
|
98
|
+
* correct key, but callers that reach this helper only do so as a
|
|
99
|
+
* best-effort probe before their own decisive fromDek attempt, which still
|
|
100
|
+
* surfaces real corruption).
|
|
101
|
+
*
|
|
102
|
+
* Body-field access (`_iv`/`_data`/`_cek`) is sanctioned inside the enclave —
|
|
103
|
+
* this is the sanctioned door so callers outside it (history.ts) never read
|
|
104
|
+
* those fields themselves, preserving the check-architecture body-access
|
|
105
|
+
* ratchet.
|
|
106
|
+
*/
|
|
107
|
+
export declare function isRewrappedUnder(envelope: Pick<EncryptedEnvelope, '_iv' | '_data' | '_cek'>, dek: EnclaveKey): Promise<boolean>;
|