@noy-db/hub 0.3.0-pre.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aggregate/index.js +9 -8
- package/dist/aggregate/index.js.map +1 -1
- package/dist/api-ZGS6LCOF.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +18 -18
- package/dist/backup-BJ57IKAO.js +242 -0
- package/dist/backup-BJ57IKAO.js.map +1 -0
- package/dist/blobs/index.js +13 -11
- package/dist/blobs/index.js.map +1 -1
- package/dist/broker/index.js +92 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/bundle/index.js +25 -22
- package/dist/bundle/index.js.map +1 -1
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +31 -31
- package/dist/chunk-2NVOWNI3.js +167 -0
- package/dist/chunk-2NVOWNI3.js.map +1 -0
- package/dist/chunk-3B5VVCNY.js +71 -0
- package/dist/chunk-3LQ2YKO4.js +230 -0
- package/dist/chunk-3QCRBHCY.js +54 -0
- package/dist/chunk-454JXE57.js +1697 -0
- package/dist/chunk-454JXE57.js.map +1 -0
- package/dist/chunk-4CTHCN4J.js +480 -0
- package/dist/chunk-4CTHCN4J.js.map +1 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-4JBYV75E.js +150 -0
- package/dist/chunk-4NXKCLLQ.js +97 -0
- package/dist/chunk-4VNQOLML.js +29 -0
- package/dist/chunk-4VNQOLML.js.map +1 -0
- package/dist/chunk-5M5DVGV7.js +69 -0
- package/dist/chunk-5O3XF4DV.js +150 -0
- package/dist/chunk-5O3XF4DV.js.map +1 -0
- package/dist/chunk-5YOLBEQ6.js +30 -0
- package/dist/chunk-6CRIV7DE.js +129 -0
- package/dist/chunk-6JTIAGHD.js +621 -0
- package/dist/chunk-6JTIAGHD.js.map +1 -0
- package/dist/chunk-6QTNZJBS.js +255 -0
- package/dist/chunk-6T2SCQRU.js +86 -0
- package/dist/chunk-7DSTRQIJ.js +45 -0
- package/dist/chunk-AUSTCW2X.js +589 -0
- package/dist/chunk-B3HJYUOF.js +209 -0
- package/dist/chunk-BDVFPG6Y.js +164 -0
- package/dist/chunk-BIOUI4HL.js +1554 -0
- package/dist/chunk-BIOUI4HL.js.map +1 -0
- package/dist/chunk-CAF6WOK7.js +36 -0
- package/dist/chunk-CDUQTA3Z.js +381 -0
- package/dist/chunk-CDUQTA3Z.js.map +1 -0
- package/dist/chunk-CIE2BASH.js +404 -0
- package/dist/chunk-CRI4OUV4.js +42 -0
- package/dist/chunk-DLG74CNB.js +91 -0
- package/dist/chunk-E5ZQT5KX.js +30 -0
- package/dist/chunk-E5ZQT5KX.js.map +1 -0
- package/dist/chunk-EQO2UVP4.js +247 -0
- package/dist/chunk-EQO2UVP4.js.map +1 -0
- package/dist/chunk-ERJ7FU55.js +367 -0
- package/dist/chunk-EVVGJDRQ.js +205 -0
- package/dist/chunk-EVX47VBM.js +74 -0
- package/dist/chunk-EVX47VBM.js.map +1 -0
- package/dist/chunk-EXK7QRWF.js +59 -0
- package/dist/chunk-EYZ6IQ6X.js +202 -0
- package/dist/chunk-F64IRYG3.js +45 -0
- package/dist/chunk-FHS2HQSH.js +823 -0
- package/dist/chunk-FM3G3NOY.js +206 -0
- package/dist/chunk-FM3G3NOY.js.map +1 -0
- package/dist/chunk-FUG4SFN3.js +36 -0
- package/dist/chunk-FUG4SFN3.js.map +1 -0
- package/dist/chunk-GKEWXIV5.js +80 -0
- package/dist/chunk-GTGPO5KW.js +59 -0
- package/dist/chunk-HB3RFQSC.js +95 -0
- package/dist/chunk-HDMEGAQE.js +957 -0
- package/dist/chunk-HDMEGAQE.js.map +1 -0
- package/dist/chunk-HDQIIUPH.js +135 -0
- package/dist/chunk-HDQIIUPH.js.map +1 -0
- package/dist/chunk-HTJQYHZP.js +344 -0
- package/dist/chunk-HTJQYHZP.js.map +1 -0
- package/dist/chunk-I6GALP6E.js +99 -0
- package/dist/chunk-IGJCYUT5.js +99 -0
- package/dist/chunk-IGJCYUT5.js.map +1 -0
- package/dist/chunk-IL6POWCW.js +130 -0
- package/dist/chunk-IU6SNYX6.js +117 -0
- package/dist/chunk-J2ZX2XUV.js +778 -0
- package/dist/chunk-JIF24JPM.js +495 -0
- package/dist/chunk-JIF24JPM.js.map +1 -0
- package/dist/chunk-JK733I5V.js +23 -0
- package/dist/chunk-JK733I5V.js.map +1 -0
- package/dist/chunk-JKJOGPZN.js +29 -0
- package/dist/chunk-JNAI2HN2.js +32 -0
- package/dist/chunk-JNAI2HN2.js.map +1 -0
- package/dist/chunk-JZUV47FZ.js +41 -0
- package/dist/chunk-K5IMOGHB.js +30 -0
- package/dist/chunk-KPZS5QAQ.js +151 -0
- package/dist/chunk-KPZS5QAQ.js.map +1 -0
- package/dist/chunk-KSKBRKGJ.js +291 -0
- package/dist/chunk-KSKBRKGJ.js.map +1 -0
- package/dist/chunk-LASZKVMO.js +382 -0
- package/dist/chunk-LXEXBTKL.js +515 -0
- package/dist/chunk-LXEXBTKL.js.map +1 -0
- package/dist/chunk-M4CV6BRT.js +524 -0
- package/dist/chunk-M4CV6BRT.js.map +1 -0
- package/dist/chunk-MEFJPTZ4.js +371 -0
- package/dist/chunk-MEFJPTZ4.js.map +1 -0
- package/dist/chunk-MV43JSJF.js +265 -0
- package/dist/chunk-MV43JSJF.js.map +1 -0
- package/dist/chunk-NJ4EOKMB.js +392 -0
- package/dist/chunk-NJ4EOKMB.js.map +1 -0
- package/dist/chunk-NR5LT5RY.js +135 -0
- package/dist/chunk-NWSGI5C7.js +261 -0
- package/dist/chunk-NWSGI5C7.js.map +1 -0
- package/dist/chunk-OSDB5WW3.js +739 -0
- package/dist/chunk-OSDB5WW3.js.map +1 -0
- package/dist/chunk-PN2XMATY.js +37 -0
- package/dist/chunk-PN2XMATY.js.map +1 -0
- package/dist/chunk-Q5VNKNE5.js +70 -0
- package/dist/chunk-QLWMEXCT.js +21 -0
- package/dist/chunk-QRB7NAOJ.js +123 -0
- package/dist/chunk-R4ROFEYC.js +74 -0
- package/dist/chunk-RCVJZMFE.js +164 -0
- package/dist/chunk-RCVJZMFE.js.map +1 -0
- package/dist/chunk-RIX4V2TB.js +367 -0
- package/dist/chunk-RYCTDFUX.js +40 -0
- package/dist/chunk-RZ5SVOYR.js +155 -0
- package/dist/chunk-SLFHQTTW.js +99 -0
- package/dist/chunk-SNZ6URZZ.js +2782 -0
- package/dist/chunk-SNZ6URZZ.js.map +1 -0
- package/dist/chunk-T2FFWNPK.js +75 -0
- package/dist/chunk-T2FFWNPK.js.map +1 -0
- package/dist/chunk-UNFPPVNI.js +23 -0
- package/dist/chunk-VFUPHI2Z.js +333 -0
- package/dist/chunk-VFUPHI2Z.js.map +1 -0
- package/dist/chunk-VLFCJYTL.js +235 -0
- package/dist/chunk-VN3DBQAU.js +124 -0
- package/dist/chunk-VYYM3MEN.js +98 -0
- package/dist/chunk-VYYM3MEN.js.map +1 -0
- package/dist/chunk-VZRODIM3.js +49 -0
- package/dist/chunk-W22IKJE2.js +94 -0
- package/dist/chunk-X3YYQWOQ.js +155 -0
- package/dist/chunk-X7QBD67R.js +14405 -0
- package/dist/chunk-X7QBD67R.js.map +1 -0
- package/dist/chunk-XDYREZWE.js +1128 -0
- package/dist/chunk-XDYREZWE.js.map +1 -0
- package/dist/chunk-XWZVFISC.js +720 -0
- package/dist/chunk-XWZVFISC.js.map +1 -0
- package/dist/chunk-YFXZEAYK.js +85 -0
- package/dist/chunk-ZAJAVEXY.js +50 -0
- package/dist/chunk-ZICD77GM.js +34 -0
- package/dist/chunk-ZJ2AK4V7.js +38 -0
- package/dist/chunk-ZJ2AK4V7.js.map +1 -0
- package/dist/chunk-ZUODRVHY.js +14 -0
- package/dist/classified/index.js +5 -3
- package/dist/classified-marker-CZKA6ITE.js +28 -0
- package/dist/classified-marker-CZKA6ITE.js.map +1 -0
- package/dist/collection-facade-TLWIPI76.js +44 -0
- package/dist/computed-ZIQTYTDI.js +11 -0
- package/dist/consent/index.js +9 -9
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-ESOBZZP5.js +28 -0
- package/dist/delegation-W7ZV2322.js +25 -0
- package/dist/derivations/index.js +12 -11
- package/dist/derive-H2BJTLUI.js +21 -0
- package/dist/enclave-AP3I5W7O.js +141 -0
- package/dist/executor-KGWTNEQD.js +9 -0
- package/dist/executor-OVEXR6RT.js +9 -0
- package/dist/executor-UNEH5ZYH.js +25 -0
- package/dist/export-accessible-PCMXSUZS.js +23 -0
- package/dist/extract-partition-SWHFSYJO.js +38 -0
- package/dist/fanout-sidecar-A765THMX.js +74 -0
- package/dist/find-N6345CNT.js +11 -0
- package/dist/forget/index.js +10 -10
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +6 -6
- package/dist/history/index.js +14 -11
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +50 -37
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +307 -1459
- package/dist/index.js +595 -198
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +7 -7
- package/dist/indexing/index.js.map +1 -1
- package/dist/issue-5OKB6I2R.js +19 -0
- package/dist/kernel/best-effort-revert.d.ts +52 -0
- package/dist/kernel/cache/index.d.ts +10 -0
- package/dist/kernel/cache/lru.d.ts +97 -0
- package/dist/kernel/cache/policy.d.ts +32 -0
- package/dist/kernel/collection-config.d.ts +809 -0
- package/dist/kernel/collection.d.ts +1522 -0
- package/dist/kernel/constants.d.ts +18 -0
- package/dist/kernel/debug.d.ts +25 -0
- package/dist/kernel/enclave/broker/proof.d.ts +154 -0
- package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
- package/dist/kernel/enclave/classify/compare.d.ts +10 -0
- package/dist/kernel/enclave/classify/digest.d.ts +8 -0
- package/dist/kernel/enclave/classify/find.d.ts +36 -0
- package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
- package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
- package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
- package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
- package/dist/kernel/enclave/classify/verify.d.ts +36 -0
- package/dist/kernel/enclave/classify/write.d.ts +8 -0
- package/dist/kernel/enclave/crypto.d.ts +263 -0
- package/dist/kernel/enclave/index.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/deterministic.d.ts +55 -0
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/lifecycle.d.ts +107 -0
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +328 -0
- package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
- package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
- package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
- package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
- package/dist/kernel/env-check.d.ts +1 -0
- package/dist/kernel/errors.d.ts +1922 -0
- package/dist/kernel/events.d.ts +11 -0
- package/dist/kernel/lazy-count.d.ts +13 -0
- package/dist/kernel/memory-store.d.ts +17 -0
- package/dist/kernel/mutation.d.ts +14 -0
- package/dist/kernel/noydb.d.ts +826 -0
- package/dist/kernel/paths.d.ts +25 -0
- package/dist/kernel/query/builder.d.ts +520 -0
- package/dist/kernel/query/index.d.ts +31 -0
- package/dist/kernel/query/join.d.ts +205 -0
- package/dist/kernel/query/live.d.ts +111 -0
- package/dist/kernel/query/predicate.d.ts +139 -0
- package/dist/kernel/query/scan-builder.d.ts +334 -0
- package/dist/kernel/refs.d.ts +205 -0
- package/dist/kernel/schema.d.ts +134 -0
- package/dist/kernel/sync-policy.d.ts +188 -0
- package/dist/kernel/tier-visibility.d.ts +54 -0
- package/dist/kernel/types.d.ts +3239 -0
- package/dist/kernel/util/discriminant.d.ts +58 -0
- package/dist/kernel/util/index.d.ts +14 -0
- package/dist/kernel/util/sanitize-filename.d.ts +75 -0
- package/dist/kernel/validation.d.ts +130 -0
- package/dist/kernel/vault.d.ts +1740 -0
- package/dist/kernel/via/compose.d.ts +144 -0
- package/dist/kernel/via/dispatch.d.ts +195 -0
- package/dist/kernel/via/graph-wiring.d.ts +145 -0
- package/dist/kernel/via/graph.d.ts +166 -0
- package/dist/kernel/via/index.d.ts +200 -0
- package/dist/kernel/via/pipeline.d.ts +266 -0
- package/dist/kernel/via/reconcile.d.ts +153 -0
- package/dist/kernel/via/taint-binding.d.ts +66 -0
- package/dist/kernel/write-queue.d.ts +46 -0
- package/dist/ledger-GFBKVPV4.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-3VDOT4KO.js +24 -0
- package/dist/link-set-Z7Q2ASFX.js +31 -0
- package/dist/materialized-views/index.js +19 -15
- package/dist/noydb-ZCJOYBDI.js +68 -0
- package/dist/on/index.js +9 -9
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +12 -12
- package/dist/pod/index.js +11 -11
- package/dist/policy-Z3RUAIY2.js +41 -0
- package/dist/port/as/index.d.ts +26 -0
- package/dist/port/at/index.d.ts +18 -0
- package/dist/port/by/default-provider.d.ts +9 -0
- package/dist/port/by/index.d.ts +17 -0
- package/dist/port/by/types.d.ts +86 -0
- package/dist/port/in/index.d.ts +21 -0
- package/dist/port/on/index.d.ts +27 -0
- package/dist/port/to/index.d.ts +19 -0
- package/dist/port/ui/index.d.ts +21 -0
- package/dist/port/with/blob-strategy.d.ts +98 -0
- package/dist/port/with/broker-strategy.d.ts +84 -0
- package/dist/port/with/capabilities.d.ts +31 -0
- package/dist/port/with/classified-marker.d.ts +9 -0
- package/dist/port/with/classified-strategy.d.ts +62 -0
- package/dist/port/with/computed-strategy.d.ts +19 -0
- package/dist/port/with/i18n-strategy.d.ts +175 -0
- package/dist/port/with/index.d.ts +18 -0
- package/dist/port/with/lazy-strategy.d.ts +48 -0
- package/dist/port/with/lookup-strategy.d.ts +129 -0
- package/dist/port/with/service-bus.d.ts +156 -0
- package/dist/port/with/team-strategy.d.ts +36 -0
- package/dist/port/with/write-hooks.d.ts +34 -0
- package/dist/portability/index.js +8 -8
- package/dist/post-register-JTH76BLY.js +60 -0
- package/dist/post-register-JTH76BLY.js.map +1 -0
- package/dist/public-envelope-B4KNWVUA.js +32 -0
- package/dist/purge-scope-FGNNLWHD.js +24 -0
- package/dist/purge-scope-FGNNLWHD.js.map +1 -0
- package/dist/query/index.js +9 -6
- package/dist/read-only-facade-CHCKSEPD.js +8 -0
- package/dist/register-VAHONCID.js +23 -0
- package/dist/registry-7MLVD3VO.js +19 -0
- package/dist/registry-EPKPD5SM.js +18 -0
- package/dist/registry-P5T7PS2U.js +9 -0
- package/dist/request-withdrawal-TI3A5WPS.js +31 -0
- package/dist/reveal-DIBHLUZX.js +38 -0
- package/dist/reveal-DIBHLUZX.js.map +1 -0
- package/dist/revoke-FDRD6GRW.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/seed-Q6M2IZFL.js +231 -0
- package/dist/seed-Q6M2IZFL.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-MUWEIUI6.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/stale-OSQ7J3AA.js +29 -0
- package/dist/storage-MVFCGEQE.js +23 -0
- package/dist/store-coordination-provider-64OEZFGS.js +142 -0
- package/dist/sync/index.js +9 -9
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +14 -10
- package/dist/to/index.js +1 -2
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-ZASTRNPR.js +140 -0
- package/dist/verify-ZASTRNPR.js.map +1 -0
- package/dist/via/blob/active.d.ts +34 -0
- package/dist/via/blob/binding.d.ts +86 -0
- package/dist/via/blob/index.d.ts +34 -0
- package/dist/via/classified/active.d.ts +3 -0
- package/dist/via/classified/binding.d.ts +83 -0
- package/dist/via/classified/config-drift.d.ts +34 -0
- package/dist/via/classified/descriptor.d.ts +66 -0
- package/dist/via/classified/errors.d.ts +19 -0
- package/dist/via/classified/guards.d.ts +23 -0
- package/dist/via/classified/index.d.ts +11 -0
- package/dist/via/classified/presets.d.ts +65 -0
- package/dist/via/classified/resolve.d.ts +9 -0
- package/dist/via/classified/strategy.d.ts +11 -0
- package/dist/via/classified/validators.d.ts +3 -0
- package/dist/via/classified/write.d.ts +4 -0
- package/dist/via/computed/binding.d.ts +34 -0
- package/dist/via/computed/descriptor.d.ts +35 -0
- package/dist/via/i18n/active.d.ts +28 -0
- package/dist/via/i18n/binding.d.ts +36 -0
- package/dist/via/i18n/core.d.ts +267 -0
- package/dist/via/i18n/densify.d.ts +24 -0
- package/dist/via/i18n/dictionary.d.ts +200 -0
- package/dist/via/i18n/index.d.ts +21 -0
- package/dist/via/i18n/policy.d.ts +44 -0
- package/dist/via/i18n/script.d.ts +26 -0
- package/dist/via/i18n/strategy.d.ts +13 -0
- package/dist/via/lookup/active.d.ts +19 -0
- package/dist/via/lookup/binding.d.ts +99 -0
- package/dist/via/lookup/descriptor.d.ts +123 -0
- package/dist/via/lookup/handle.d.ts +220 -0
- package/dist/via/lookup/index.d.ts +17 -0
- package/dist/via/lookup/registry.d.ts +228 -0
- package/dist/via/lookup/snapshot.d.ts +67 -0
- package/dist/via/money/arith.d.ts +68 -0
- package/dist/via/money/binding.d.ts +21 -0
- package/dist/via/money/branded.d.ts +61 -0
- package/dist/via/money/descriptor.d.ts +73 -0
- package/dist/via/money/fixed-point.d.ts +51 -0
- package/dist/via/money/index.d.ts +15 -0
- package/dist/via/money/iso4217.d.ts +6 -0
- package/dist/via/money/money-reducer.d.ts +33 -0
- package/dist/via/money/normalize.d.ts +105 -0
- package/dist/via/money/paths.d.ts +61 -0
- package/dist/via/money/where.d.ts +127 -0
- package/dist/walk-SVNDIZ62.js +241 -0
- package/dist/with/index.js +11 -11
- package/dist/with-audit/attestation/active.d.ts +10 -0
- package/dist/with-audit/attestation/index.d.ts +16 -0
- package/dist/with-audit/attestation/issue.d.ts +29 -0
- package/dist/with-audit/attestation/revoke.d.ts +15 -0
- package/dist/with-audit/attestation/signer.d.ts +33 -0
- package/dist/with-audit/attestation/strategy.d.ts +44 -0
- package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
- package/dist/with-audit/consent/active.d.ts +14 -0
- package/dist/with-audit/consent/consent.d.ts +114 -0
- package/dist/with-audit/consent/index.d.ts +14 -0
- package/dist/with-audit/consent/strategy.d.ts +36 -0
- package/dist/with-audit/forget/active.d.ts +31 -0
- package/dist/with-audit/forget/index.d.ts +28 -0
- package/dist/with-audit/forget/purge-scope.d.ts +54 -0
- package/dist/with-audit/forget/strategy.d.ts +199 -0
- package/dist/with-audit/forget/subject-index.d.ts +83 -0
- package/dist/with-audit/guards/executor.d.ts +26 -0
- package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
- package/dist/with-audit/guards/index.d.ts +10 -0
- package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
- package/dist/with-audit/guards/registry.d.ts +83 -0
- package/dist/with-audit/guards/transition-guard.d.ts +82 -0
- package/dist/with-audit/guards/types.d.ts +134 -0
- package/dist/with-audit/guards/with-guard.d.ts +15 -0
- package/dist/with-audit/periods/active.d.ts +11 -0
- package/dist/with-audit/periods/index.d.ts +18 -0
- package/dist/with-audit/periods/periods.d.ts +417 -0
- package/dist/with-audit/periods/strategy.d.ts +32 -0
- package/dist/with-audit/periods/vault-facade.d.ts +95 -0
- package/dist/with-audit/portability/active.d.ts +11 -0
- package/dist/with-audit/portability/export-accessible.d.ts +46 -0
- package/dist/with-audit/portability/index.d.ts +18 -0
- package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
- package/dist/with-audit/portability/strategy.d.ts +31 -0
- package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
- package/dist/with-audit/sealed-record/active.d.ts +9 -0
- package/dist/with-audit/sealed-record/index.d.ts +55 -0
- package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
- package/dist/with-audit/sealed-record/types.d.ts +27 -0
- package/dist/with-audit/tiers/active.d.ts +9 -0
- package/dist/with-audit/tiers/index.d.ts +394 -0
- package/dist/with-audit/tiers/strategy.d.ts +36 -0
- package/dist/with-cargo/active.d.ts +11 -0
- package/dist/with-cargo/adopt-partition.d.ts +81 -0
- package/dist/with-cargo/decrypt-partition.d.ts +19 -0
- package/dist/with-cargo/describe-extraction.d.ts +41 -0
- package/dist/with-cargo/extract-partition.d.ts +155 -0
- package/dist/with-cargo/index.d.ts +33 -0
- package/dist/with-cargo/strategy.d.ts +30 -0
- package/dist/with-cargo/vault-diff.d.ts +144 -0
- package/dist/with-cargo/walk-closure.d.ts +67 -0
- package/dist/with-commit/crdt/active.d.ts +25 -0
- package/dist/with-commit/crdt/crdt.d.ts +42 -0
- package/dist/with-commit/crdt/index.d.ts +16 -0
- package/dist/with-commit/crdt/strategy.d.ts +25 -0
- package/dist/with-commit/history/active.d.ts +40 -0
- package/dist/with-commit/history/diff.d.ts +23 -0
- package/dist/with-commit/history/history.d.ts +73 -0
- package/dist/with-commit/history/index.d.ts +30 -0
- package/dist/with-commit/history/ledger/constants.d.ts +37 -0
- package/dist/with-commit/history/ledger/entry.d.ts +195 -0
- package/dist/with-commit/history/ledger/hash.d.ts +30 -0
- package/dist/with-commit/history/ledger/index.d.ts +19 -0
- package/dist/with-commit/history/ledger/patch.d.ts +99 -0
- package/dist/with-commit/history/ledger/store.d.ts +356 -0
- package/dist/with-commit/history/strategy.d.ts +136 -0
- package/dist/with-commit/history/time-machine.d.ts +202 -0
- package/dist/with-commit/numbering/descriptor.d.ts +27 -0
- package/dist/with-commit/numbering/index.d.ts +69 -0
- package/dist/with-commit/sequence/active.d.ts +10 -0
- package/dist/with-commit/sequence/index.d.ts +150 -0
- package/dist/with-commit/sequence/strategy.d.ts +26 -0
- package/dist/with-commit/tx/active.d.ts +27 -0
- package/dist/with-commit/tx/dry-run.d.ts +29 -0
- package/dist/with-commit/tx/elevated-handle.d.ts +59 -0
- package/dist/with-commit/tx/index.d.ts +13 -0
- package/dist/with-commit/tx/invariants.d.ts +68 -0
- package/dist/with-commit/tx/strategy.d.ts +23 -0
- package/dist/with-commit/tx/transaction.d.ts +212 -0
- package/dist/with-fork/archive/engine.d.ts +71 -0
- package/dist/with-fork/archive/index.d.ts +23 -0
- package/dist/with-fork/shadow/active.d.ts +6 -0
- package/dist/with-fork/shadow/index.d.ts +14 -0
- package/dist/with-fork/shadow/strategy.d.ts +28 -0
- package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
- package/dist/with-fork/snapshots/active.d.ts +20 -0
- package/dist/with-fork/snapshots/engine.d.ts +36 -0
- package/dist/with-fork/snapshots/index.d.ts +5 -0
- package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
- package/dist/with-fork/snapshots/policy.d.ts +23 -0
- package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
- package/dist/with-fork/snapshots/strategy.d.ts +48 -0
- package/dist/with-formula/computed/index.d.ts +48 -0
- package/dist/with-formula/computed/lazy.d.ts +13 -0
- package/dist/with-formula/derivations/executor.d.ts +61 -0
- package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
- package/dist/with-formula/derivations/index.d.ts +6 -0
- package/dist/with-formula/derivations/registry.d.ts +67 -0
- package/dist/with-formula/derivations/stale.d.ts +39 -0
- package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
- package/dist/with-formula/derivations/types.d.ts +248 -0
- package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
- package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
- package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +58 -0
- package/dist/with-formula/materialized-views/executor.d.ts +80 -0
- package/dist/with-formula/materialized-views/index.d.ts +11 -0
- package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
- package/dist/with-formula/materialized-views/registry.d.ts +99 -0
- package/dist/with-formula/materialized-views/stale.d.ts +113 -0
- package/dist/with-formula/materialized-views/types.d.ts +318 -0
- package/dist/with-formula/materialized-views/with-materialized-view.d.ts +24 -0
- package/dist/with-formula/overlay-views/index.d.ts +5 -0
- package/dist/with-formula/overlay-views/registry.d.ts +42 -0
- package/dist/with-formula/overlay-views/types.d.ts +97 -0
- package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
- package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
- package/dist/with-lookup/aggregate/active.d.ts +33 -0
- package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
- package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
- package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
- package/dist/with-lookup/aggregate/index.d.ts +23 -0
- package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
- package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
- package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
- package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
- package/dist/with-lookup/embeddings/index.d.ts +4 -0
- package/dist/with-lookup/embeddings/vec-id.d.ts +47 -0
- package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
- package/dist/with-lookup/indexing/active.d.ts +30 -0
- package/dist/with-lookup/indexing/collection-facade.d.ts +157 -0
- package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
- package/dist/with-lookup/indexing/index.d.ts +27 -0
- package/dist/with-lookup/indexing/lazy-builder.d.ts +102 -0
- package/dist/with-lookup/indexing/persisted-indexes.d.ts +229 -0
- package/dist/with-lookup/indexing/strategy.d.ts +56 -0
- package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
- package/dist/with-lookup/search/active.d.ts +10 -0
- package/dist/with-lookup/search/build-docs.d.ts +15 -0
- package/dist/with-lookup/search/collection-facade.d.ts +163 -0
- package/dist/with-lookup/search/fuse.d.ts +22 -0
- package/dist/with-lookup/search/index-store.d.ts +19 -0
- package/dist/with-lookup/search/index.d.ts +19 -0
- package/dist/with-lookup/search/inverted-index.d.ts +47 -0
- package/dist/with-lookup/search/persisted-index-store.d.ts +121 -0
- package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
- package/dist/with-lookup/search/scan.d.ts +28 -0
- package/dist/with-lookup/search/segment.d.ts +15 -0
- package/dist/with-lookup/search/serialize.d.ts +4 -0
- package/dist/with-lookup/search/snippet.d.ts +5 -0
- package/dist/with-lookup/search/strategy.d.ts +41 -0
- package/dist/with-lookup/search/tokenize.d.ts +12 -0
- package/dist/with-party/auth-introspection/index.d.ts +44 -0
- package/dist/with-party/broker/active.d.ts +23 -0
- package/dist/with-party/broker/index.d.ts +28 -0
- package/dist/with-party/broker/seed.d.ts +77 -0
- package/dist/with-party/custody/active.d.ts +10 -0
- package/dist/with-party/custody/index.d.ts +69 -0
- package/dist/with-party/custody/liberate.d.ts +64 -0
- package/dist/with-party/custody/strategy.d.ts +48 -0
- package/dist/with-party/directory/index.d.ts +11 -0
- package/dist/with-party/directory/public-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/public-envelope/schema.d.ts +24 -0
- package/dist/with-party/directory/public-envelope/storage.d.ts +59 -0
- package/dist/with-party/directory/public-envelope/types.d.ts +80 -0
- package/dist/with-party/directory/storage.d.ts +33 -0
- package/dist/with-party/directory/types.d.ts +43 -0
- package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
- package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
- package/dist/with-party/directory/visibility.d.ts +47 -0
- package/dist/with-party/policy/engine.d.ts +60 -0
- package/dist/with-party/policy/index.d.ts +15 -0
- package/dist/with-party/policy/noydb-facade.d.ts +39 -0
- package/dist/with-party/policy/presets.d.ts +38 -0
- package/dist/with-party/policy/storage.d.ts +31 -0
- package/dist/with-party/session/active.d.ts +34 -0
- package/dist/with-party/session/dev-unlock.d.ts +128 -0
- package/dist/with-party/session/index.d.ts +23 -0
- package/dist/with-party/session/session-policy.d.ts +92 -0
- package/dist/with-party/session/session.d.ts +131 -0
- package/dist/with-party/session/strategy.d.ts +42 -0
- package/dist/with-party/session/unlock-state.d.ts +47 -0
- package/dist/with-party/sync/index.d.ts +31 -0
- package/dist/with-party/tab-coordination.d.ts +73 -0
- package/dist/with-party/tab-write-relay.d.ts +39 -0
- package/dist/with-party/team/active.d.ts +13 -0
- package/dist/with-party/team/authenticators.d.ts +95 -0
- package/dist/with-party/team/deed.d.ts +97 -0
- package/dist/with-party/team/delegation.d.ts +88 -0
- package/dist/with-party/team/index.d.ts +38 -0
- package/dist/with-party/team/keyring.d.ts +318 -0
- package/dist/with-party/team/magic-link-grant.d.ts +152 -0
- package/dist/with-party/team/managed-passphrase.d.ts +280 -0
- package/dist/with-party/team/noydb-facade.d.ts +484 -0
- package/dist/with-party/team/peer-recover.d.ts +81 -0
- package/dist/with-party/team/presence.d.ts +81 -0
- package/dist/with-party/team/recovery.d.ts +191 -0
- package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
- package/dist/with-party/team/rotate-recover.d.ts +275 -0
- package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
- package/dist/with-party/team/strategy.d.ts +9 -0
- package/dist/with-party/team/sync-active.d.ts +33 -0
- package/dist/with-party/team/sync-credentials.d.ts +113 -0
- package/dist/with-party/team/sync-strategy.d.ts +67 -0
- package/dist/with-party/team/sync-transaction.d.ts +39 -0
- package/dist/with-party/team/sync.d.ts +174 -0
- package/dist/with-party/team/tiers.d.ts +39 -0
- package/dist/with-party/team/wrapped-deks.d.ts +86 -0
- package/dist/with-pod/backup.d.ts +74 -0
- package/dist/with-pod/bundle.d.ts +414 -0
- package/dist/with-pod/format.d.ts +203 -0
- package/dist/with-pod/index.d.ts +20 -0
- package/dist/with-pod/pod-store.d.ts +54 -0
- package/dist/with-pod/ulid.d.ts +64 -0
- package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
- package/dist/with-shape/blobs/blob-intent.d.ts +153 -0
- package/dist/with-shape/blobs/blob-set.d.ts +1286 -0
- package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
- package/dist/with-shape/blobs/import-external.d.ts +50 -0
- package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
- package/dist/with-shape/blobs/object-projection.d.ts +70 -0
- package/dist/with-shape/introspection/describe.d.ts +237 -0
- package/dist/with-shape/introspection/field-meta.d.ts +61 -0
- package/dist/with-shape/introspection/fields.d.ts +14 -0
- package/dist/with-shape/introspection/index.d.ts +12 -0
- package/dist/with-shape/introspection/json-schema.d.ts +13 -0
- package/dist/with-shape/introspection/meta.d.ts +22 -0
- package/dist/with-shape/introspection/projection.d.ts +13 -0
- package/dist/with-shape/introspection/types.d.ts +154 -0
- package/dist/with-shape/introspection/walk.d.ts +50 -0
- package/dist/with-shape/links/lazy-handle.d.ts +36 -0
- package/dist/with-shape/links/link-set.d.ts +67 -0
- package/dist/with-shape/links/names.d.ts +65 -0
- package/dist/with-shape/links/vault-facade.d.ts +211 -0
- package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
- package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
- package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
- package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
- package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
- package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
- package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
- package/dist/with-shape/satellites/declare.d.ts +60 -0
- package/dist/with-shape/satellites/existence.d.ts +5 -0
- package/dist/with-shape/satellites/fanout.d.ts +38 -0
- package/dist/with-shape/satellites/forget.d.ts +47 -0
- package/dist/with-shape/satellites/index.d.ts +3 -0
- package/dist/with-shape/satellites/joined.d.ts +19 -0
- package/dist/with-shape/satellites/marker.d.ts +10 -0
- package/dist/with-shape/satellites/migrate-cek.d.ts +26 -0
- package/dist/with-shape/satellites/post-register.d.ts +6 -0
- package/dist/with-shape/satellites/proxy.d.ts +37 -0
- package/dist/with-shape/satellites/raw-target.d.ts +14 -0
- package/dist/with-shape/satellites/registry.d.ts +19 -0
- package/dist/with-shape/satellites/types.d.ts +37 -0
- package/dist/with-shape/satellites/validate.d.ts +17 -0
- package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
- package/dist/with-shape/schema-update/cutover.d.ts +5 -0
- package/dist/with-shape/schema-update/delta.d.ts +2 -0
- package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
- package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
- package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
- package/dist/with-shape/schema-update/fence.d.ts +15 -0
- package/dist/with-shape/schema-update/gate.d.ts +16 -0
- package/dist/with-shape/schema-update/index.d.ts +6 -0
- package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
- package/dist/with-shape/schema-update/strategies.d.ts +12 -0
- package/dist/with-shape/schema-update/types.d.ts +53 -0
- package/dist/with-store/index.d.ts +15 -0
- package/dist/with-store/lazy/active.d.ts +12 -0
- package/dist/with-store/lazy/index.d.ts +14 -0
- package/dist/with-store/lazy/strategy.d.ts +9 -0
- package/dist/with-store/route-store.d.ts +259 -0
- package/dist/with-store/store-middleware.d.ts +189 -0
- package/dist/withdraw-accessible-WZIEVWSR.js +28 -0
- package/package.json +47 -55
- package/dist/adapter/index.d.ts +0 -5
- package/dist/adapter/index.js +0 -15
- package/dist/aggregate/index.d.ts +0 -42
- package/dist/api-JDWL67WL.js +0 -20
- package/dist/as/index.d.ts +0 -7
- package/dist/at/index.d.ts +0 -5
- package/dist/attestation/index.d.ts +0 -20
- package/dist/backup-WRGNTGJF.js +0 -225
- package/dist/backup-WRGNTGJF.js.map +0 -1
- package/dist/blobs/index.d.ts +0 -44
- package/dist/bundle/index.d.ts +0 -122
- package/dist/bundle-DzWtVw7w.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -9
- package/dist/chunk-25G7PUTA.js +0 -235
- package/dist/chunk-26FSVNBL.js +0 -34
- package/dist/chunk-2PJB6H3H.js +0 -167
- package/dist/chunk-2PJB6H3H.js.map +0 -1
- package/dist/chunk-37JZR7CY.js +0 -91
- package/dist/chunk-3KBK5LU4.js +0 -117
- package/dist/chunk-3YKBGS3I.js +0 -686
- package/dist/chunk-3YKBGS3I.js.map +0 -1
- package/dist/chunk-44DV37ZV.js +0 -75
- package/dist/chunk-44DV37ZV.js.map +0 -1
- package/dist/chunk-47C4CI7R.js +0 -108
- package/dist/chunk-47C4CI7R.js.map +0 -1
- package/dist/chunk-4VDFUBTS.js +0 -275
- package/dist/chunk-4VDFUBTS.js.map +0 -1
- package/dist/chunk-55LSDABW.js +0 -94
- package/dist/chunk-56JB2BGI.js +0 -13003
- package/dist/chunk-56JB2BGI.js.map +0 -1
- package/dist/chunk-5GQE5IDB.js +0 -513
- package/dist/chunk-5GQE5IDB.js.map +0 -1
- package/dist/chunk-5HRJQSKN.js +0 -202
- package/dist/chunk-5HZULLHE.js +0 -404
- package/dist/chunk-5JQMX2EH.js +0 -50
- package/dist/chunk-5UOPIPZC.js +0 -95
- package/dist/chunk-5YBUFCFF.js +0 -135
- package/dist/chunk-62APEMF3.js +0 -280
- package/dist/chunk-62APEMF3.js.map +0 -1
- package/dist/chunk-6P5AJ2ZS.js +0 -120
- package/dist/chunk-6P5AJ2ZS.js.map +0 -1
- package/dist/chunk-6PALJTC2.js +0 -430
- package/dist/chunk-6PALJTC2.js.map +0 -1
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-6Z435B6N.js +0 -1656
- package/dist/chunk-6Z435B6N.js.map +0 -1
- package/dist/chunk-723XB5NX.js +0 -86
- package/dist/chunk-7CZ6YXMO.js +0 -124
- package/dist/chunk-7KTL4RHZ.js +0 -120
- package/dist/chunk-7KTL4RHZ.js.map +0 -1
- package/dist/chunk-7TAV3BFQ.js +0 -766
- package/dist/chunk-7TAV3BFQ.js.map +0 -1
- package/dist/chunk-BASCPHNM.js +0 -380
- package/dist/chunk-BASCPHNM.js.map +0 -1
- package/dist/chunk-BGIZAFY7.js +0 -1
- package/dist/chunk-BJ2XF2RC.js +0 -823
- package/dist/chunk-BM6E4MUT.js +0 -881
- package/dist/chunk-BM6E4MUT.js.map +0 -1
- package/dist/chunk-BTFTHF6Q.js +0 -42
- package/dist/chunk-C4NOLA5X.js +0 -132
- package/dist/chunk-C4NOLA5X.js.map +0 -1
- package/dist/chunk-CHK5VVMI.js +0 -155
- package/dist/chunk-DCVVCJVB.js +0 -45
- package/dist/chunk-EU7HDMT3.js +0 -54
- package/dist/chunk-F3EKFGUS.js +0 -99
- package/dist/chunk-FCOZ7DEC.js +0 -355
- package/dist/chunk-FCOZ7DEC.js.map +0 -1
- package/dist/chunk-FWART3VA.js +0 -205
- package/dist/chunk-FZK3JJJK.js +0 -150
- package/dist/chunk-GDOOG5YQ.js +0 -382
- package/dist/chunk-GLVXQU3E.js +0 -155
- package/dist/chunk-HU55NPHZ.js +0 -80
- package/dist/chunk-I6JJ6VJS.js +0 -97
- package/dist/chunk-I6URUNTD.js +0 -59
- package/dist/chunk-IARAK3PK.js +0 -14
- package/dist/chunk-II6DLDZM.js +0 -30
- package/dist/chunk-J5YUA6JB.js +0 -23
- package/dist/chunk-J7OH6R4K.js +0 -49
- package/dist/chunk-K2WCO3NX.js +0 -1
- package/dist/chunk-L6Q5NA22.js +0 -40
- package/dist/chunk-LFGJG4XZ.js +0 -30
- package/dist/chunk-M3OYTM5Z.js +0 -85
- package/dist/chunk-MOQ5M46U.js +0 -209
- package/dist/chunk-NTPWQH4S.js +0 -589
- package/dist/chunk-OJ64XMPJ.js +0 -1434
- package/dist/chunk-OJ64XMPJ.js.map +0 -1
- package/dist/chunk-OWGAXPRE.js +0 -129
- package/dist/chunk-P2PEPSPK.js +0 -230
- package/dist/chunk-P6TZ3IVN.js +0 -453
- package/dist/chunk-P6TZ3IVN.js.map +0 -1
- package/dist/chunk-PAJCRV7O.js +0 -123
- package/dist/chunk-PMMV5SQC.js +0 -416
- package/dist/chunk-PMMV5SQC.js.map +0 -1
- package/dist/chunk-PPPZIBKY.js +0 -261
- package/dist/chunk-PPPZIBKY.js.map +0 -1
- package/dist/chunk-PVC2FBCQ.js +0 -45
- package/dist/chunk-PYIUDUGS.js +0 -36
- package/dist/chunk-QABECTNN.js +0 -255
- package/dist/chunk-QYMMMKOO.js +0 -164
- package/dist/chunk-R4IVPJHN.js +0 -130
- package/dist/chunk-REWTMYSF.js +0 -32
- package/dist/chunk-REWTMYSF.js.map +0 -1
- package/dist/chunk-RNYDHIQL.js +0 -367
- package/dist/chunk-RUIMKQTA.js +0 -23
- package/dist/chunk-RUIMKQTA.js.map +0 -1
- package/dist/chunk-TCGVRKOS.js +0 -367
- package/dist/chunk-TIAYXOEI.js +0 -99
- package/dist/chunk-TQ3REHVF.js +0 -95
- package/dist/chunk-TQ3REHVF.js.map +0 -1
- package/dist/chunk-TUL5YQWF.js +0 -777
- package/dist/chunk-U7LV2DUN.js +0 -74
- package/dist/chunk-UB3XHGFG.js +0 -181
- package/dist/chunk-UB3XHGFG.js.map +0 -1
- package/dist/chunk-UMH35AQV.js +0 -70
- package/dist/chunk-UWZ7O4NR.js +0 -29
- package/dist/chunk-V76PHWLE.js +0 -41
- package/dist/chunk-VFQOE76I.js +0 -69
- package/dist/chunk-VIWOGJ2O.js +0 -71
- package/dist/chunk-VK6OC22R.js +0 -37
- package/dist/chunk-VK6OC22R.js.map +0 -1
- package/dist/chunk-VVLOWY74.js +0 -150
- package/dist/chunk-VVLOWY74.js.map +0 -1
- package/dist/chunk-W3JABOVB.js +0 -53
- package/dist/chunk-W3JABOVB.js.map +0 -1
- package/dist/chunk-WPNP3NF5.js +0 -1221
- package/dist/chunk-WPNP3NF5.js.map +0 -1
- package/dist/chunk-X5QZAJDB.js +0 -59
- package/dist/chunk-X6VNIRHS.js +0 -239
- package/dist/chunk-X6VNIRHS.js.map +0 -1
- package/dist/chunk-XBPUVQDO.js +0 -664
- package/dist/chunk-XBPUVQDO.js.map +0 -1
- package/dist/chunk-XW5LZYV4.js +0 -21
- package/dist/chunk-YTCCC6NG.js +0 -320
- package/dist/chunk-YTCCC6NG.js.map +0 -1
- package/dist/classified/index.d.ts +0 -17
- package/dist/collection-facade-EJVIN2BY.js +0 -39
- package/dist/computed-6FOFXQPE.js +0 -11
- package/dist/config-drift-RFEVGBKR.js +0 -24
- package/dist/config-drift-RFEVGBKR.js.map +0 -1
- package/dist/consent/index.d.ts +0 -23
- package/dist/crdt/index.d.ts +0 -34
- package/dist/dead-filter-RHMNYOXP.js +0 -28
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-IHXOASHV.js +0 -25
- package/dist/derivations/index.d.ts +0 -70
- package/dist/derive-CD3ZVIXK.js +0 -21
- package/dist/describe/index.d.ts +0 -1
- package/dist/describe/index.js +0 -1
- package/dist/describe-C6iHNlqJ.d.ts +0 -162
- package/dist/dev-unlock-wgQ7Ci5I.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-KGEUW2GL.js +0 -123
- package/dist/executor-EUPYHCLU.js +0 -9
- package/dist/executor-KZ4B3PRT.js +0 -9
- package/dist/executor-MHUM2VZK.js +0 -21
- package/dist/export-accessible-Z3NSZZHN.js +0 -23
- package/dist/extract-partition-VSKT35JG.js +0 -36
- package/dist/fanout-sidecar-NBDKKCHT.js +0 -74
- package/dist/find-OH4BEULF.js +0 -11
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -35
- package/dist/hash-CwHnoKyW.d.ts +0 -72
- package/dist/history/index.d.ts +0 -61
- package/dist/i18n/index.d.ts +0 -37
- package/dist/in/index.d.ts +0 -5
- package/dist/index-B9QdHytu.d.ts +0 -123
- package/dist/index-CTvUp94-.d.ts +0 -123
- package/dist/index-Dn5GzPg_.d.ts +0 -22138
- package/dist/indexing/index.d.ts +0 -39
- package/dist/issue-AEOL6RXA.js +0 -19
- package/dist/kernel/index.d.ts +0 -32
- package/dist/kernel/index.js +0 -59
- package/dist/lazy/index.d.ts +0 -21
- package/dist/ledger-3LR3YO2W.js +0 -42
- package/dist/liberate-XSEPRWEA.js +0 -24
- package/dist/link-set-NSUIX6BR.js +0 -31
- package/dist/materialized-views/index.d.ts +0 -173
- package/dist/mime-magic-CYbFNQ4h.d.ts +0 -103
- package/dist/noydb-POVTIVQ6.js +0 -62
- package/dist/on/index.d.ts +0 -5
- package/dist/overlay-views/index.d.ts +0 -98
- package/dist/periods/index.d.ts +0 -20
- package/dist/pod/index.d.ts +0 -63
- package/dist/policy-Y7HL2KGA.js +0 -41
- package/dist/portability/index.d.ts +0 -20
- package/dist/post-register-KOFRTCDD.js +0 -55
- package/dist/post-register-KOFRTCDD.js.map +0 -1
- package/dist/public-envelope-NC7SPNMV.js +0 -32
- package/dist/query/index.d.ts +0 -5
- package/dist/read-only-facade-5ADRJVTM.js +0 -8
- package/dist/register-3D6R2MKN.js +0 -23
- package/dist/registry-AI4E46PD.js +0 -19
- package/dist/registry-HSNQ4NBP.js +0 -9
- package/dist/registry-WIX6QCV5.js +0 -17
- package/dist/request-withdrawal-GU4XS2R5.js +0 -31
- package/dist/reveal-5Y777N5Q.js +0 -38
- package/dist/reveal-5Y777N5Q.js.map +0 -1
- package/dist/revoke-ZFETCLYV.js +0 -24
- package/dist/revoke-ZFETCLYV.js.map +0 -1
- package/dist/satellites/index.d.ts +0 -5
- package/dist/sealed-record/index.d.ts +0 -69
- package/dist/session/index.d.ts +0 -44
- package/dist/shadow/index.d.ts +0 -15
- package/dist/signer-GAIMQQ2J.js +0 -25
- package/dist/signer-GAIMQQ2J.js.map +0 -1
- package/dist/snapshots/index.d.ts +0 -26
- package/dist/stale-77LP2EEF.js +0 -14
- package/dist/stale-77LP2EEF.js.map +0 -1
- package/dist/storage-KEXIXLGM.js +0 -23
- package/dist/storage-KEXIXLGM.js.map +0 -1
- package/dist/store-coordination-provider-NJDDZ264.js +0 -142
- package/dist/subject-index-O75wKshW.d.ts +0 -362
- package/dist/sync/index.d.ts +0 -41
- package/dist/team/index.d.ts +0 -155
- package/dist/tiers/index.d.ts +0 -5
- package/dist/to/index.d.ts +0 -5
- package/dist/transition-guard-D5RLJv8S.d.ts +0 -165
- package/dist/tx/index.d.ts +0 -35
- package/dist/ui/index.d.ts +0 -1
- package/dist/ulid-DRH25k3y.d.ts +0 -66
- package/dist/util/index.d.ts +0 -79
- package/dist/validators-C3lrVF-c.d.ts +0 -101
- package/dist/vault-diff-_LSIcOMv.d.ts +0 -147
- package/dist/verify-CAYGXYNO.js +0 -139
- package/dist/verify-CAYGXYNO.js.map +0 -1
- package/dist/walk-SMAE4IEI.js +0 -241
- package/dist/with/index.d.ts +0 -38
- package/dist/with-materialized-view-Xv1-9Bh0.d.ts +0 -27
- package/dist/with-overlayed-view-CuWhq_-C.d.ts +0 -12
- package/dist/with-rollup-K_iwal4b.d.ts +0 -47
- package/dist/withdraw-accessible-Q7BULAN5.js +0 -28
- package/dist/withdraw-accessible-Q7BULAN5.js.map +0 -1
- /package/dist/{adapter/index.js.map → api-ZGS6LCOF.js.map} +0 -0
- /package/dist/{chunk-VIWOGJ2O.js.map → chunk-3B5VVCNY.js.map} +0 -0
- /package/dist/{chunk-P2PEPSPK.js.map → chunk-3LQ2YKO4.js.map} +0 -0
- /package/dist/{chunk-EU7HDMT3.js.map → chunk-3QCRBHCY.js.map} +0 -0
- /package/dist/{chunk-FZK3JJJK.js.map → chunk-4JBYV75E.js.map} +0 -0
- /package/dist/{chunk-I6JJ6VJS.js.map → chunk-4NXKCLLQ.js.map} +0 -0
- /package/dist/{chunk-VFQOE76I.js.map → chunk-5M5DVGV7.js.map} +0 -0
- /package/dist/{chunk-LFGJG4XZ.js.map → chunk-5YOLBEQ6.js.map} +0 -0
- /package/dist/{chunk-OWGAXPRE.js.map → chunk-6CRIV7DE.js.map} +0 -0
- /package/dist/{chunk-QABECTNN.js.map → chunk-6QTNZJBS.js.map} +0 -0
- /package/dist/{chunk-723XB5NX.js.map → chunk-6T2SCQRU.js.map} +0 -0
- /package/dist/{chunk-PVC2FBCQ.js.map → chunk-7DSTRQIJ.js.map} +0 -0
- /package/dist/{chunk-NTPWQH4S.js.map → chunk-AUSTCW2X.js.map} +0 -0
- /package/dist/{chunk-MOQ5M46U.js.map → chunk-B3HJYUOF.js.map} +0 -0
- /package/dist/{chunk-QYMMMKOO.js.map → chunk-BDVFPG6Y.js.map} +0 -0
- /package/dist/{chunk-PYIUDUGS.js.map → chunk-CAF6WOK7.js.map} +0 -0
- /package/dist/{chunk-5HZULLHE.js.map → chunk-CIE2BASH.js.map} +0 -0
- /package/dist/{chunk-BTFTHF6Q.js.map → chunk-CRI4OUV4.js.map} +0 -0
- /package/dist/{chunk-37JZR7CY.js.map → chunk-DLG74CNB.js.map} +0 -0
- /package/dist/{chunk-TCGVRKOS.js.map → chunk-ERJ7FU55.js.map} +0 -0
- /package/dist/{chunk-FWART3VA.js.map → chunk-EVVGJDRQ.js.map} +0 -0
- /package/dist/{chunk-X5QZAJDB.js.map → chunk-EXK7QRWF.js.map} +0 -0
- /package/dist/{chunk-5HRJQSKN.js.map → chunk-EYZ6IQ6X.js.map} +0 -0
- /package/dist/{chunk-DCVVCJVB.js.map → chunk-F64IRYG3.js.map} +0 -0
- /package/dist/{chunk-BJ2XF2RC.js.map → chunk-FHS2HQSH.js.map} +0 -0
- /package/dist/{chunk-HU55NPHZ.js.map → chunk-GKEWXIV5.js.map} +0 -0
- /package/dist/{chunk-I6URUNTD.js.map → chunk-GTGPO5KW.js.map} +0 -0
- /package/dist/{chunk-5UOPIPZC.js.map → chunk-HB3RFQSC.js.map} +0 -0
- /package/dist/{chunk-F3EKFGUS.js.map → chunk-I6GALP6E.js.map} +0 -0
- /package/dist/{chunk-R4IVPJHN.js.map → chunk-IL6POWCW.js.map} +0 -0
- /package/dist/{chunk-3KBK5LU4.js.map → chunk-IU6SNYX6.js.map} +0 -0
- /package/dist/{chunk-TUL5YQWF.js.map → chunk-J2ZX2XUV.js.map} +0 -0
- /package/dist/{chunk-UWZ7O4NR.js.map → chunk-JKJOGPZN.js.map} +0 -0
- /package/dist/{chunk-V76PHWLE.js.map → chunk-JZUV47FZ.js.map} +0 -0
- /package/dist/{chunk-II6DLDZM.js.map → chunk-K5IMOGHB.js.map} +0 -0
- /package/dist/{chunk-GDOOG5YQ.js.map → chunk-LASZKVMO.js.map} +0 -0
- /package/dist/{chunk-5YBUFCFF.js.map → chunk-NR5LT5RY.js.map} +0 -0
- /package/dist/{chunk-UMH35AQV.js.map → chunk-Q5VNKNE5.js.map} +0 -0
- /package/dist/{chunk-XW5LZYV4.js.map → chunk-QLWMEXCT.js.map} +0 -0
- /package/dist/{chunk-PAJCRV7O.js.map → chunk-QRB7NAOJ.js.map} +0 -0
- /package/dist/{chunk-U7LV2DUN.js.map → chunk-R4ROFEYC.js.map} +0 -0
- /package/dist/{chunk-RNYDHIQL.js.map → chunk-RIX4V2TB.js.map} +0 -0
- /package/dist/{chunk-L6Q5NA22.js.map → chunk-RYCTDFUX.js.map} +0 -0
- /package/dist/{chunk-CHK5VVMI.js.map → chunk-RZ5SVOYR.js.map} +0 -0
- /package/dist/{chunk-TIAYXOEI.js.map → chunk-SLFHQTTW.js.map} +0 -0
- /package/dist/{chunk-J5YUA6JB.js.map → chunk-UNFPPVNI.js.map} +0 -0
- /package/dist/{chunk-25G7PUTA.js.map → chunk-VLFCJYTL.js.map} +0 -0
- /package/dist/{chunk-7CZ6YXMO.js.map → chunk-VN3DBQAU.js.map} +0 -0
- /package/dist/{chunk-J7OH6R4K.js.map → chunk-VZRODIM3.js.map} +0 -0
- /package/dist/{chunk-55LSDABW.js.map → chunk-W22IKJE2.js.map} +0 -0
- /package/dist/{chunk-GLVXQU3E.js.map → chunk-X3YYQWOQ.js.map} +0 -0
- /package/dist/{chunk-M3OYTM5Z.js.map → chunk-YFXZEAYK.js.map} +0 -0
- /package/dist/{chunk-5JQMX2EH.js.map → chunk-ZAJAVEXY.js.map} +0 -0
- /package/dist/{chunk-26FSVNBL.js.map → chunk-ZICD77GM.js.map} +0 -0
- /package/dist/{chunk-IARAK3PK.js.map → chunk-ZUODRVHY.js.map} +0 -0
- /package/dist/{api-JDWL67WL.js.map → collection-facade-TLWIPI76.js.map} +0 -0
- /package/dist/{chunk-BGIZAFY7.js.map → computed-ZIQTYTDI.js.map} +0 -0
- /package/dist/{dead-filter-RHMNYOXP.js.map → dead-filter-ESOBZZP5.js.map} +0 -0
- /package/dist/{chunk-K2WCO3NX.js.map → delegation-W7ZV2322.js.map} +0 -0
- /package/dist/{collection-facade-EJVIN2BY.js.map → derive-H2BJTLUI.js.map} +0 -0
- /package/dist/{computed-6FOFXQPE.js.map → enclave-AP3I5W7O.js.map} +0 -0
- /package/dist/{delegation-IHXOASHV.js.map → executor-KGWTNEQD.js.map} +0 -0
- /package/dist/{derive-CD3ZVIXK.js.map → executor-OVEXR6RT.js.map} +0 -0
- /package/dist/{describe/index.js.map → executor-UNEH5ZYH.js.map} +0 -0
- /package/dist/{enclave-KGEUW2GL.js.map → export-accessible-PCMXSUZS.js.map} +0 -0
- /package/dist/{executor-EUPYHCLU.js.map → extract-partition-SWHFSYJO.js.map} +0 -0
- /package/dist/{fanout-sidecar-NBDKKCHT.js.map → fanout-sidecar-A765THMX.js.map} +0 -0
- /package/dist/{executor-KZ4B3PRT.js.map → find-N6345CNT.js.map} +0 -0
- /package/dist/{executor-MHUM2VZK.js.map → issue-5OKB6I2R.js.map} +0 -0
- /package/dist/{export-accessible-Z3NSZZHN.js.map → ledger-GFBKVPV4.js.map} +0 -0
- /package/dist/{extract-partition-VSKT35JG.js.map → liberate-3VDOT4KO.js.map} +0 -0
- /package/dist/{find-OH4BEULF.js.map → link-set-Z7Q2ASFX.js.map} +0 -0
- /package/dist/{issue-AEOL6RXA.js.map → noydb-ZCJOYBDI.js.map} +0 -0
- /package/dist/{kernel/index.js.map → policy-Z3RUAIY2.js.map} +0 -0
- /package/dist/{ledger-3LR3YO2W.js.map → public-envelope-B4KNWVUA.js.map} +0 -0
- /package/dist/{liberate-XSEPRWEA.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
- /package/dist/{link-set-NSUIX6BR.js.map → register-VAHONCID.js.map} +0 -0
- /package/dist/{noydb-POVTIVQ6.js.map → registry-7MLVD3VO.js.map} +0 -0
- /package/dist/{policy-Y7HL2KGA.js.map → registry-EPKPD5SM.js.map} +0 -0
- /package/dist/{public-envelope-NC7SPNMV.js.map → registry-P5T7PS2U.js.map} +0 -0
- /package/dist/{read-only-facade-5ADRJVTM.js.map → request-withdrawal-TI3A5WPS.js.map} +0 -0
- /package/dist/{register-3D6R2MKN.js.map → revoke-FDRD6GRW.js.map} +0 -0
- /package/dist/{registry-AI4E46PD.js.map → signer-MUWEIUI6.js.map} +0 -0
- /package/dist/{registry-HSNQ4NBP.js.map → stale-OSQ7J3AA.js.map} +0 -0
- /package/dist/{registry-WIX6QCV5.js.map → storage-MVFCGEQE.js.map} +0 -0
- /package/dist/{store-coordination-provider-NJDDZ264.js.map → store-coordination-provider-64OEZFGS.js.map} +0 -0
- /package/dist/{walk-SMAE4IEI.js.map → walk-SVNDIZ62.js.map} +0 -0
- /package/dist/{request-withdrawal-GU4XS2R5.js.map → withdraw-accessible-WZIEVWSR.js.map} +0 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Time-machine queries — point-in-time reads reconstructed from the
|
|
3
|
+
* existing history + ledger infrastructure.
|
|
4
|
+
*
|
|
5
|
+
* ## Usage
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const vault = await db.openVault('acme', { passphrase })
|
|
9
|
+
* const q1End = vault.at('2026-03-31T23:59:59Z')
|
|
10
|
+
* const invoice = await q1End.collection<Invoice>('invoices').get('inv-001')
|
|
11
|
+
* // → the record as it stood at the close of Q1 2026
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* ## How it works
|
|
15
|
+
*
|
|
16
|
+
* Every write path already fans out into two persistence lanes:
|
|
17
|
+
*
|
|
18
|
+
* 1. `saveHistory(...)` persists a **full encrypted envelope snapshot**
|
|
19
|
+
* per version under the `_history` collection (one envelope per
|
|
20
|
+
* version, keyed by `{collection}:{id}:{paddedVersion}`). Each
|
|
21
|
+
* envelope carries its own `_ts` (the write timestamp).
|
|
22
|
+
* 2. `ledger.append(...)` appends a hash-chained audit entry that
|
|
23
|
+
* records the `op` (put / delete), `version`, and `ts`.
|
|
24
|
+
*
|
|
25
|
+
* Reconstruction at a target timestamp T is therefore:
|
|
26
|
+
*
|
|
27
|
+
* - Find the newest history envelope for `(collection, id)` whose
|
|
28
|
+
* `_ts ≤ T` — that's the state the record was in at T.
|
|
29
|
+
* - Check the ledger for any `op: 'delete'` entry for the same
|
|
30
|
+
* `(collection, id)` with `entry.ts` in `(latestEnvelope._ts, T]` —
|
|
31
|
+
* if present, the record was deleted before T, so return `null`.
|
|
32
|
+
* - Decrypt the surviving envelope with the current collection DEK
|
|
33
|
+
* (DEKs are per-collection but stable across versions — the same
|
|
34
|
+
* key encrypts v1 and v15 of a record).
|
|
35
|
+
*
|
|
36
|
+
* No delta replay. The existing `history.ts` module already stores
|
|
37
|
+
* complete snapshots; we just pick the right one.
|
|
38
|
+
*
|
|
39
|
+
* ## Read-only contract
|
|
40
|
+
*
|
|
41
|
+
* Every write method on `CollectionInstant` throws
|
|
42
|
+
* {@link ReadOnlyAtInstantError}. A historical view is a *read*
|
|
43
|
+
* surface — mutating the past would require either a branch/shadow
|
|
44
|
+
* mechanism (tracked under shadow vaults) or a rewrite of
|
|
45
|
+
* history, which breaks the ledger's tamper-evidence guarantee.
|
|
46
|
+
*
|
|
47
|
+
* @module
|
|
48
|
+
*/
|
|
49
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
50
|
+
import type { LedgerStore } from './ledger/store.js';
|
|
51
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
52
|
+
/**
|
|
53
|
+
* Narrow view of a {@link Vault}'s internals that
|
|
54
|
+
* {@link VaultInstant} needs. Passed in by `Vault.at()` rather than
|
|
55
|
+
* constructed here so all crypto + adapter access stays inside the
|
|
56
|
+
* Vault class.
|
|
57
|
+
*
|
|
58
|
+
* Not exported from the public barrel — consumers should get a
|
|
59
|
+
* `VaultInstant` via `vault.at(ts)`, never by constructing one
|
|
60
|
+
* directly.
|
|
61
|
+
*/
|
|
62
|
+
export interface VaultEngine {
|
|
63
|
+
readonly adapter: NoydbStore;
|
|
64
|
+
/** Vault name (the compartment). */
|
|
65
|
+
readonly name: string;
|
|
66
|
+
/**
|
|
67
|
+
* `true` when the vault was opened with a passphrase (the normal
|
|
68
|
+
* case). `false` in plaintext-mode vaults (`encrypt: false`) — in
|
|
69
|
+
* that case `envelope._data` is raw JSON and we skip the DEK lookup.
|
|
70
|
+
*/
|
|
71
|
+
readonly encrypted: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Resolves the DEK used to decrypt a given collection's envelopes.
|
|
74
|
+
* Not called when `encrypted` is false.
|
|
75
|
+
*/
|
|
76
|
+
getDEK(collection: string): Promise<EnclaveKey>;
|
|
77
|
+
/**
|
|
78
|
+
* Lazily-initialised ledger. We consult it to detect deletes that
|
|
79
|
+
* happened between the latest history snapshot and the target
|
|
80
|
+
* timestamp. `null` when history is disabled for this vault — in
|
|
81
|
+
* that case time-machine reads fall back to history-only
|
|
82
|
+
* reconstruction (which may miss deletes).
|
|
83
|
+
*/
|
|
84
|
+
getLedger(): LedgerStore | null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* A vault at a fixed instant. Produced by `vault.at(timestamp)`.
|
|
88
|
+
* Carries no session state of its own — every read is a fresh
|
|
89
|
+
* lookup through the vault's adapter.
|
|
90
|
+
*
|
|
91
|
+
* Cheap to construct; safe to throw away. Create one per query.
|
|
92
|
+
*/
|
|
93
|
+
export declare class VaultInstant {
|
|
94
|
+
private readonly engine;
|
|
95
|
+
/** Fully-resolved target timestamp (ISO-8601 UTC). */
|
|
96
|
+
readonly timestamp: string;
|
|
97
|
+
constructor(engine: VaultEngine,
|
|
98
|
+
/** Fully-resolved target timestamp (ISO-8601 UTC). */
|
|
99
|
+
timestamp: string);
|
|
100
|
+
/** Get a point-in-time view of a collection. */
|
|
101
|
+
collection<T = unknown>(name: string): CollectionInstant<T>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* A read-only collection view anchored to a past instant.
|
|
105
|
+
*
|
|
106
|
+
* Every write method throws {@link ReadOnlyAtInstantError} — see the
|
|
107
|
+
* module docstring for why. The read surface is intentionally smaller
|
|
108
|
+
* than the live {@link Collection}: `get` and `list` cover the
|
|
109
|
+
* "what did the books look like on date X" use case without pulling
|
|
110
|
+
* in the full query DSL / joins / aggregates at this stage. Follow-up
|
|
111
|
+
* work tracked under.
|
|
112
|
+
*/
|
|
113
|
+
export declare class CollectionInstant<T = unknown> {
|
|
114
|
+
private readonly engine;
|
|
115
|
+
private readonly targetTs;
|
|
116
|
+
readonly name: string;
|
|
117
|
+
constructor(engine: VaultEngine, targetTs: string, name: string);
|
|
118
|
+
/**
|
|
119
|
+
* Return the record as it existed at the target timestamp, or
|
|
120
|
+
* `null` if the record had not been created yet or had already been
|
|
121
|
+
* deleted by then.
|
|
122
|
+
*
|
|
123
|
+
* Gated on the LIVE record's current tier — #730, mirroring the #712
|
|
124
|
+
* read-gate `history()`/`getVersion()` already apply: an elevated record
|
|
125
|
+
* is invisible through the whole time-machine surface, not just a
|
|
126
|
+
* decrypt failure. See {@link resolveVisibleEnvelope}.
|
|
127
|
+
*
|
|
128
|
+
* Decrypts through {@link openEnvelopeJson}, the `_cek`-aware envelope
|
|
129
|
+
* body opener — a snapshot from a `perRecordKeys` collection is encrypted
|
|
130
|
+
* under its own per-record CEK (wrapped in `_cek`), not the collection
|
|
131
|
+
* DEK directly.
|
|
132
|
+
*/
|
|
133
|
+
get(id: string): Promise<T | null>;
|
|
134
|
+
/**
|
|
135
|
+
* IDs of records that existed (had at least one `put` and were not
|
|
136
|
+
* subsequently deleted) at the target timestamp.
|
|
137
|
+
*
|
|
138
|
+
* Implemented as a linear scan over history + ledger. Performance
|
|
139
|
+
* is bounded by total history size (not live-vault size), so the
|
|
140
|
+
* memory-first vault-scale cap (1K–50K records × average history
|
|
141
|
+
* depth) still applies.
|
|
142
|
+
*/
|
|
143
|
+
list(): Promise<string[]>;
|
|
144
|
+
put(_id: string, _record: T): Promise<never>;
|
|
145
|
+
delete(_id: string): Promise<never>;
|
|
146
|
+
update(_id: string, _patch: Partial<T>): Promise<never>;
|
|
147
|
+
/**
|
|
148
|
+
* {@link resolveEnvelope}, additionally gated on the record's LIVE
|
|
149
|
+
* (current, not historical) tier — #730. Mirrors the #712 read-gate
|
|
150
|
+
* `history()`/`getVersion()` apply: history snapshots keep their
|
|
151
|
+
* tier-0-wrapped CEKs and carry no `_tier` of their own, so an elevated
|
|
152
|
+
* record's prior versions would otherwise stay tier-0-decryptable here.
|
|
153
|
+
* `null` for a resolved envelope carrying its own `_tier > 0` (a
|
|
154
|
+
* tier-aware snapshot reached some other way) or whose LIVE record is
|
|
155
|
+
* currently elevated — both `get()` and `list()` route through this so
|
|
156
|
+
* the invisibility law holds on the whole time-machine read surface, not
|
|
157
|
+
* just a decrypt failure.
|
|
158
|
+
*/
|
|
159
|
+
private resolveVisibleEnvelope;
|
|
160
|
+
/**
|
|
161
|
+
* Return the envelope that represents the record's state at
|
|
162
|
+
* `targetTs`, accounting for deletes. `null` if the record didn't
|
|
163
|
+
* exist at that instant.
|
|
164
|
+
*
|
|
165
|
+
* ## Why we use the ledger as the authoritative timeline
|
|
166
|
+
*
|
|
167
|
+
* The per-version history snapshots saved by `saveHistory()` do
|
|
168
|
+
* carry a `_ts` field, but that timestamp is the moment the
|
|
169
|
+
* snapshot was *captured* (i.e. the instant right before the
|
|
170
|
+
* subsequent overwrite), not the original write time. The ledger,
|
|
171
|
+
* by contrast, records `ts` at the moment of each `put` / `delete`
|
|
172
|
+
* — it's the only source that tracks the real timeline. So:
|
|
173
|
+
*
|
|
174
|
+
* 1. Walk the ledger; find the latest entry for `(collection, id)`
|
|
175
|
+
* with `ts ≤ targetTs`.
|
|
176
|
+
* 2. If that entry is a `delete`, the record was gone at the
|
|
177
|
+
* target instant — return null.
|
|
178
|
+
* 3. Otherwise it's a `put` with a specific `version`. Load the
|
|
179
|
+
* envelope for that version from history, falling back to the
|
|
180
|
+
* live collection for the most recent version.
|
|
181
|
+
*
|
|
182
|
+
* ## Fallback when the ledger is disabled
|
|
183
|
+
*
|
|
184
|
+
* If the vault has history disabled, `getLedger()` returns null and
|
|
185
|
+
* we fall back to comparing envelope `_ts` fields. This is
|
|
186
|
+
* approximate and gets the *last write* right but may confuse the
|
|
187
|
+
* intermediate versions; adopters needing accurate time-machine
|
|
188
|
+
* reads should leave history enabled.
|
|
189
|
+
*/
|
|
190
|
+
private resolveEnvelope;
|
|
191
|
+
private resolveViaLedger;
|
|
192
|
+
private resolveViaEnvelopeTs;
|
|
193
|
+
/**
|
|
194
|
+
* Fetch the envelope for a specific version. The live record (most
|
|
195
|
+
* recent put) lives in the main collection; prior versions live in
|
|
196
|
+
* `_history`. We check live first because the common case after a
|
|
197
|
+
* delete is that we're trying to load the last-live version from
|
|
198
|
+
* history, and skipping live for the current-version case avoids a
|
|
199
|
+
* redundant lookup.
|
|
200
|
+
*/
|
|
201
|
+
private loadVersion;
|
|
202
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @category capability
|
|
3
|
+
* Deferred-numbering config descriptor. See
|
|
4
|
+
* docs/superpowers/specs/2026-06-08-sealed-numbering-and-store-clock-design.md.
|
|
5
|
+
*/
|
|
6
|
+
/** A registered deferred-numbering series. */
|
|
7
|
+
export interface DeferredNumberingConfig {
|
|
8
|
+
/** Series name — the key passed to `vault.sequence(series)`. */
|
|
9
|
+
readonly series: string;
|
|
10
|
+
/** Collection holding the records to number. */
|
|
11
|
+
readonly collection: string;
|
|
12
|
+
/** Field on each record where the assigned serial is written. */
|
|
13
|
+
readonly field: string;
|
|
14
|
+
/**
|
|
15
|
+
* Minimum wall-clock age (ms) before an entry is eligible at a pass, in
|
|
16
|
+
* addition to the interval commit-wait. Default 0 — the store-clock
|
|
17
|
+
* interval (`storeLatest ≤ now.earliest`) is the correctness mechanism.
|
|
18
|
+
*/
|
|
19
|
+
readonly settleWindowMs: number;
|
|
20
|
+
}
|
|
21
|
+
/** Declare a deferred-numbering series. Pass the result in `createNoydb({ numbering: [...] })`. */
|
|
22
|
+
export declare function withDeferredNumbering(config: {
|
|
23
|
+
series: string;
|
|
24
|
+
collection: string;
|
|
25
|
+
field: string;
|
|
26
|
+
settleWindowMs?: number;
|
|
27
|
+
}): DeferredNumberingConfig;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @category capability
|
|
3
|
+
* Deferred numbering engine — store-clock-ordered, gap-free serials assigned
|
|
4
|
+
* at an explicit numbering pass. See the design spec.
|
|
5
|
+
*/
|
|
6
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
7
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
8
|
+
import type { DeferredNumberingConfig } from './descriptor.js';
|
|
9
|
+
export declare const NUMBERING_HEAD_COLLECTION = "_numbering_head";
|
|
10
|
+
export declare const NUMBERING_PENDING_COLLECTION = "_numbering_pending";
|
|
11
|
+
export interface Assignment {
|
|
12
|
+
recordId: string;
|
|
13
|
+
serial: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class DeferredNumberingStore {
|
|
16
|
+
private readonly adapter;
|
|
17
|
+
private readonly vault;
|
|
18
|
+
private readonly encrypted;
|
|
19
|
+
private readonly getDEK;
|
|
20
|
+
private readonly actor;
|
|
21
|
+
private readonly configs;
|
|
22
|
+
/**
|
|
23
|
+
* Stamp a serial onto a USER record THROUGH the Collection layer (so the
|
|
24
|
+
* cache, indexes, and MVs stay coherent — the engine must NOT write user
|
|
25
|
+
* collections at the raw adapter level). Returns false if the record is
|
|
26
|
+
* gone (the engine then skips it without burning a serial). Provided by the
|
|
27
|
+
* vault; unit tests pass a Map-backed double.
|
|
28
|
+
*/
|
|
29
|
+
private readonly stamp;
|
|
30
|
+
/** In-process registry: `${series}::${recordId}` → resolver for the live next() Promise. */
|
|
31
|
+
private readonly waiters;
|
|
32
|
+
private readonly dekCache;
|
|
33
|
+
constructor(opts: {
|
|
34
|
+
adapter: NoydbStore;
|
|
35
|
+
vault: string;
|
|
36
|
+
encrypted: boolean;
|
|
37
|
+
getDEK: (collectionName: string) => Promise<EnclaveKey>;
|
|
38
|
+
actor: string;
|
|
39
|
+
configs: Map<string, DeferredNumberingConfig>;
|
|
40
|
+
stamp: (collection: string, recordId: string, field: string, serial: number) => Promise<boolean>;
|
|
41
|
+
});
|
|
42
|
+
has(series: string): boolean;
|
|
43
|
+
private dek;
|
|
44
|
+
private readJson;
|
|
45
|
+
private writeJson;
|
|
46
|
+
private pendingId;
|
|
47
|
+
/** Current last-assigned serial for a series (0 if none). */
|
|
48
|
+
peek(series: string): Promise<number>;
|
|
49
|
+
/**
|
|
50
|
+
* Enqueue a record for numbering: stamp it with the current store clock and
|
|
51
|
+
* durably write a pending entry. The returned Promise resolves once the
|
|
52
|
+
* record is durably enqueued; its `assigned` field resolves with the serial
|
|
53
|
+
* at the next pass (the record's `field` is the durable source of truth —
|
|
54
|
+
* `assigned` is an in-process convenience that a crash may drop).
|
|
55
|
+
*/
|
|
56
|
+
enqueue(series: string, recordId: string): Promise<{
|
|
57
|
+
assigned: Promise<number>;
|
|
58
|
+
}>;
|
|
59
|
+
private listPending;
|
|
60
|
+
/**
|
|
61
|
+
* Run a numbering pass for `series`: select entries provably settled
|
|
62
|
+
* (`storeLatest ≤ now.earliest` — commit-wait), order by
|
|
63
|
+
* `(storeEarliest, recordId)`, assign serials after the head, stamp each
|
|
64
|
+
* record's field, advance the head with one CAS, and consume the entries.
|
|
65
|
+
* Idempotent/convergent: a losing concurrent pass returns `[]` and the next
|
|
66
|
+
* pass reconciles. Resolves any in-process enqueue() `assigned` Promises.
|
|
67
|
+
*/
|
|
68
|
+
runPass(series: string): Promise<Assignment[]>;
|
|
69
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enable the atomic-sequence capability.
|
|
3
|
+
* Pass to `createNoydb({ sequenceStrategy: withSequence() })` to make
|
|
4
|
+
* `vault.sequence('name').next()` / `.peek()` / `.seedTo()` live. The
|
|
5
|
+
* {@link SequenceStore} CAS engine is statically imported here, so it is pulled
|
|
6
|
+
* into the bundle only when `withSequence()` is referenced (the floor never
|
|
7
|
+
* imports it).
|
|
8
|
+
*/
|
|
9
|
+
import type { SequenceStrategy } from './strategy.js';
|
|
10
|
+
export declare function withSequence(): SequenceStrategy;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic sequence primitive — online-coordinated gap-free numbering.
|
|
3
|
+
*
|
|
4
|
+
* `vault.sequence('invoice-2026').next()` returns 1, 2, 3, … with no
|
|
5
|
+
* gaps and no duplicates, even under concurrent callers. Each named
|
|
6
|
+
* sequence is an independent counter record at `_sequences/<name>`,
|
|
7
|
+
* incremented with an optimistic compare-and-swap retry loop — the same
|
|
8
|
+
* proven pattern as the ledger head (`history/ledger/store.ts`).
|
|
9
|
+
*
|
|
10
|
+
* **Explicitly online-only.** Gap-free numbering requires single-authority
|
|
11
|
+
* serialization, which an offline / non-CAS store cannot provide. `next()`
|
|
12
|
+
* throws {@link SequenceOfflineError} unless the backing store advertises
|
|
13
|
+
* `capabilities.casAtomic`. This is a deliberate, honest wall — an offline
|
|
14
|
+
* writer cannot safely allocate a global sequence number.
|
|
15
|
+
*
|
|
16
|
+
* Note on "gap-free": the *sequence* is gap-free (each `next()` yields a
|
|
17
|
+
* unique, +1 value). If a caller discards a value without using it, that
|
|
18
|
+
* is a gap in *usage*, not in the sequence — assign each `next()` result
|
|
19
|
+
* to its record in the same operation.
|
|
20
|
+
*/
|
|
21
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
22
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
23
|
+
export { withSequence } from './active.js';
|
|
24
|
+
export { NO_SEQUENCE, type SequenceStrategy } from './strategy.js';
|
|
25
|
+
export { SequenceNotEnabledError } from '../../kernel/errors.js';
|
|
26
|
+
export declare const SEQUENCE_COLLECTION = "_sequences";
|
|
27
|
+
/** Options for `SequenceHandle.next`. Deferred-numbering series use `for`; the CAS counter ignores all of these. */
|
|
28
|
+
export interface NextOptions {
|
|
29
|
+
/** Deferred mode: the record id to number. Ignored by the CAS counter. */
|
|
30
|
+
readonly for?: string;
|
|
31
|
+
/** Deferred mode: reject after this many ms if still unsealed (reserved; not yet enforced in this slice). */
|
|
32
|
+
readonly timeoutMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Partitioning for a CAS sequence. A partitioned sequence is an
|
|
36
|
+
* independent counter scoped to one tuple of values — e.g.
|
|
37
|
+
* `sequence('invoice', { partition: [2026, 'EU'] })` numbers EU-2026 invoices
|
|
38
|
+
* separately from `[2026, 'US']` and from the bare `invoice` series.
|
|
39
|
+
*
|
|
40
|
+
* Partition components are URI-encoded (so `/`, null bytes and other
|
|
41
|
+
* separators in a value can never collide with the structural separators) and
|
|
42
|
+
* `'/'`-joined, then appended to the series with a null-byte (`\x00`)
|
|
43
|
+
* separator. The null byte is illegal in a plain series name, which guarantees
|
|
44
|
+
* a partitioned key is always disjoint from any unpartitioned series.
|
|
45
|
+
*/
|
|
46
|
+
export interface SequenceOptions {
|
|
47
|
+
/** Partition tuple. Each component is URI-encoded and `'/'`-joined. */
|
|
48
|
+
readonly partition?: readonly (string | number)[];
|
|
49
|
+
/**
|
|
50
|
+
* Render template for the serial string. When set, `vault.sequence`
|
|
51
|
+
* returns a {@link FormattedSequenceHandle} whose `next()` resolves to
|
|
52
|
+
* `{ serial, formatted }`. Tokens:
|
|
53
|
+
* - `{seq}` — the allocated integer
|
|
54
|
+
* - `{seq:0N}` — zero-padded to width N (e.g. `{seq:04}` → `0001`)
|
|
55
|
+
* - `{partition.i}` — the i-th `partition` component (original value)
|
|
56
|
+
*
|
|
57
|
+
* Any other token, or a `{partition.i}` index beyond the supplied
|
|
58
|
+
* `partition`, throws `ValidationError` at `vault.sequence()` construction.
|
|
59
|
+
* Per-partition reset is inherent: a new partition tuple starts at 1.
|
|
60
|
+
*/
|
|
61
|
+
readonly format?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A formatted sequence handle. Identical to {@link SequenceHandle}
|
|
65
|
+
* except `next()` also returns the rendered `formatted` string. `peek()` /
|
|
66
|
+
* `seedTo()` operate on the underlying integer counter, unchanged.
|
|
67
|
+
*/
|
|
68
|
+
export interface FormattedSequenceHandle {
|
|
69
|
+
/** Allocate the next value and return it with its rendered serial string. */
|
|
70
|
+
next(opts?: NextOptions): Promise<{
|
|
71
|
+
serial: number;
|
|
72
|
+
formatted: string;
|
|
73
|
+
}>;
|
|
74
|
+
/** Read the current integer value without allocating. Returns 0 if never used. */
|
|
75
|
+
peek(): Promise<number>;
|
|
76
|
+
/** Set-if-greater on the underlying integer counter. See {@link SequenceHandle.seedTo}. */
|
|
77
|
+
seedTo(n: number): Promise<void>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validate a sequence `format` against the supplied partition and return a
|
|
81
|
+
* pure `(serial) => string` renderer. Eager validation: every token is
|
|
82
|
+
* checked now, so a bad pattern throws `ValidationError` at construction —
|
|
83
|
+
* never at `next()` time.
|
|
84
|
+
*/
|
|
85
|
+
export declare function compileSequenceFormat(format: string, series: string, partition: readonly (string | number)[] | undefined): (serial: number) => string;
|
|
86
|
+
/**
|
|
87
|
+
* Resolve the CAS storage key for a (series, partition) pair.
|
|
88
|
+
*
|
|
89
|
+
* With no partition the key is `series` verbatim. With a partition the key is
|
|
90
|
+
* `${series}\x00${parts}` where `parts` is each component passed through
|
|
91
|
+
* `encodeURIComponent(String(part))` and `'/'`-joined. The null-byte separator
|
|
92
|
+
* is illegal in a plain series name, so partitioned keys never collide with
|
|
93
|
+
* unpartitioned ones; URI-encoding keeps any component containing `/` distinct
|
|
94
|
+
* from a multi-component partition.
|
|
95
|
+
*
|
|
96
|
+
* @throws {ValidationError} if any partition component is empty after `String()`
|
|
97
|
+
* or is a non-finite number (`NaN`, `±Infinity`).
|
|
98
|
+
*/
|
|
99
|
+
export declare function resolveSequenceKey(series: string, opts?: SequenceOptions): string;
|
|
100
|
+
export interface SequenceHandle {
|
|
101
|
+
/** Atomically allocate and return the next value (1, 2, 3, …). Deferred series resolve at the next pass. */
|
|
102
|
+
next(opts?: NextOptions): Promise<number>;
|
|
103
|
+
/** Read the current value without allocating. Returns 0 if never used. */
|
|
104
|
+
peek(): Promise<number>;
|
|
105
|
+
/**
|
|
106
|
+
* Set-if-greater: advance the counter to at least `n`. A no-op if the
|
|
107
|
+
* current value is already `>= n` (so it never rewinds), and `seedTo(0)` is
|
|
108
|
+
* a no-op. Idempotent and CAS-safe under concurrent `next()` / `seedTo()`.
|
|
109
|
+
*
|
|
110
|
+
* Use after a bundle / CSV import to fast-forward the counter past the
|
|
111
|
+
* highest imported serial, so subsequent `next()` calls cannot re-use a
|
|
112
|
+
* number that is already on a record.
|
|
113
|
+
*
|
|
114
|
+
* Online-only: throws {@link SequenceOfflineError} on a non-CAS store.
|
|
115
|
+
*/
|
|
116
|
+
seedTo(n: number): Promise<void>;
|
|
117
|
+
}
|
|
118
|
+
/** Per-call context the vault assembles to build a {@link SequenceStore}. */
|
|
119
|
+
export interface SequenceStoreOptions {
|
|
120
|
+
adapter: NoydbStore;
|
|
121
|
+
vault: string;
|
|
122
|
+
encrypted: boolean;
|
|
123
|
+
getDEK: (collectionName: string) => Promise<EnclaveKey>;
|
|
124
|
+
actor: string;
|
|
125
|
+
}
|
|
126
|
+
export declare class SequenceStore {
|
|
127
|
+
private readonly adapter;
|
|
128
|
+
private readonly vault;
|
|
129
|
+
private readonly encrypted;
|
|
130
|
+
private readonly getDEK;
|
|
131
|
+
private readonly actor;
|
|
132
|
+
/**
|
|
133
|
+
* Memoized DEK promise. The `_sequences` collection DEK is created on
|
|
134
|
+
* first access; without sharing one promise, a burst of concurrent
|
|
135
|
+
* `next()` calls would each trigger DEK creation and diverge (one
|
|
136
|
+
* writer's ciphertext unreadable by another). One shared promise → one
|
|
137
|
+
* DEK.
|
|
138
|
+
*/
|
|
139
|
+
private dekPromise;
|
|
140
|
+
constructor(opts: SequenceStoreOptions);
|
|
141
|
+
/** A handle bound to one sequence name. */
|
|
142
|
+
handle(name: string): SequenceHandle;
|
|
143
|
+
private assertOnline;
|
|
144
|
+
private dek;
|
|
145
|
+
private read;
|
|
146
|
+
private encryptState;
|
|
147
|
+
peek(name: string): Promise<number>;
|
|
148
|
+
next(name: string): Promise<number>;
|
|
149
|
+
seedTo(name: string, n: number): Promise<void>;
|
|
150
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sequence capability strategy — the single on-demand factory the vault routes
|
|
3
|
+
* `vault.sequence()` through to build its atomic-CAS {@link SequenceStore}. The
|
|
4
|
+
* active engine ({@link withSequence}) constructs the real store (kept out of
|
|
5
|
+
* the floor bundle — the store class is reached only via the opt-in
|
|
6
|
+
* `active.ts` chunk); {@link NO_SEQUENCE} throws. The vault always assembles the
|
|
7
|
+
* per-call {@link SequenceStoreOptions} and delegates here, so an un-opted-in
|
|
8
|
+
* caller hits `NO_SEQUENCE`'s throw at `vault.sequence()`.
|
|
9
|
+
*
|
|
10
|
+
* Note: `vault.sequence()` is synchronous, so the factory is a plain (sync)
|
|
11
|
+
* constructor — the engine is tree-shaken by reachability (only `withSequence()`
|
|
12
|
+
* pulls `active.ts`, which statically imports the store), not by a dynamic
|
|
13
|
+
* import. Deferred-numbering series (`withDeferredNumbering`) are a distinct
|
|
14
|
+
* capability and are NOT routed through this strategy.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
import type { SequenceStore, SequenceStoreOptions } from './index.js';
|
|
18
|
+
export interface SequenceStrategy {
|
|
19
|
+
createStore(opts: SequenceStoreOptions): SequenceStore;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* No-op stub — the floor default. The capability factory throws
|
|
23
|
+
* {@link SequenceNotEnabledError}; opt in with `sequenceStrategy: withSequence()`
|
|
24
|
+
* in createNoydb. @internal
|
|
25
|
+
*/
|
|
26
|
+
export declare const NO_SEQUENCE: SequenceStrategy;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active transactions strategy. Only reachable via `@noy-db/hub/tx`.
|
|
3
|
+
*/
|
|
4
|
+
import type { TxStrategy } from './strategy.js';
|
|
5
|
+
import type { TransactionInvariant } from './invariants.js';
|
|
6
|
+
/**
|
|
7
|
+
* Options for {@link withTransactions}. Currently only commit-time
|
|
8
|
+
* changeset `invariants` (see {@link TransactionInvariant}).
|
|
9
|
+
*/
|
|
10
|
+
export interface TransactionStrategyOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Commit-time set-level invariants run over the changeset on every
|
|
13
|
+
* commit (ordinary AND amendment). See {@link TransactionInvariant}.
|
|
14
|
+
*/
|
|
15
|
+
invariants?: ReadonlyArray<TransactionInvariant>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build the default transactions strategy. Pass into
|
|
19
|
+
* `createNoydb({ txStrategy: withTransactions() })` to enable
|
|
20
|
+
* `db.transaction(fn)` (and `db.transaction({ dryRun: true }, fn)`).
|
|
21
|
+
*
|
|
22
|
+
* Supply `{ invariants }` to register commit-time changeset invariants —
|
|
23
|
+
* set-level constraints that fire after the writes commit and revert the
|
|
24
|
+
* transaction on a throw. Unlike `amendment.invariant`, these run for
|
|
25
|
+
* ordinary `db.transaction(fn)` calls (and amendments) with no role gate.
|
|
26
|
+
*/
|
|
27
|
+
export declare function withTransactions(opts?: TransactionStrategyOptions): TxStrategy;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dry-run transactions. Runs the tx body to STAGE ops, then builds
|
|
3
|
+
* the directly-affected diff (before = current committed via collection.get,
|
|
4
|
+
* after = staged record) and collects guard violations — without executing
|
|
5
|
+
* phase 2. No adapter writes, no write-hooks, no commit. MV/derivation
|
|
6
|
+
* cascade is NOT simulated (v2). Mirrors the guard loop in
|
|
7
|
+
* `Collection._putInternal` — keep the two in sync.
|
|
8
|
+
*/
|
|
9
|
+
import type { Noydb } from '../../kernel/noydb.js';
|
|
10
|
+
import { TxContext } from './transaction.js';
|
|
11
|
+
export interface AffectedDocument {
|
|
12
|
+
readonly vault: string;
|
|
13
|
+
readonly op: 'create' | 'update' | 'delete';
|
|
14
|
+
readonly collection: string;
|
|
15
|
+
readonly docId: string;
|
|
16
|
+
readonly before: unknown;
|
|
17
|
+
readonly after: unknown;
|
|
18
|
+
}
|
|
19
|
+
export interface GuardViolation {
|
|
20
|
+
readonly vault: string;
|
|
21
|
+
readonly collection: string;
|
|
22
|
+
readonly docId: string;
|
|
23
|
+
readonly message: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DryRunResult {
|
|
26
|
+
readonly affected: ReadonlyArray<AffectedDocument>;
|
|
27
|
+
readonly guardViolations: ReadonlyArray<GuardViolation>;
|
|
28
|
+
}
|
|
29
|
+
export declare function runDryRun(db: Noydb, fn: (tx: TxContext) => unknown): Promise<DryRunResult>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Vault } from '../../kernel/vault.js';
|
|
2
|
+
import type { TierMoveResult } from '../../with-audit/tiers/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reserved collection that holds the audit ledger of elevation
|
|
5
|
+
* sessions. One envelope per `vault.elevate(...)` call.
|
|
6
|
+
*/
|
|
7
|
+
export declare const ELEVATION_AUDIT_COLLECTION = "_elevation_audit";
|
|
8
|
+
/**
|
|
9
|
+
* Scoped handle returned by `vault.elevate(...)`. Writes through this
|
|
10
|
+
* handle land at the elevated tier with `authorization: 'elevation'`
|
|
11
|
+
* stamped on the audit event; reads stay on the original `Vault`.
|
|
12
|
+
*
|
|
13
|
+
* The handle lazily checks its TTL on every operation, so a
|
|
14
|
+
* forgotten `release()` cannot keep elevated writes alive past
|
|
15
|
+
* `expiresAt` — the next call simply throws
|
|
16
|
+
* {@link ElevationExpiredError}.
|
|
17
|
+
*
|
|
18
|
+
* Naming note: the issue's spec text used `elevated.session`
|
|
19
|
+
* for this field; we name the field `handle` to avoid conflicting
|
|
20
|
+
* with the codebase's existing `SessionToken` value type. The
|
|
21
|
+
* semantics are unchanged.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ElevatedHandle {
|
|
24
|
+
/** Target tier this handle writes at. */
|
|
25
|
+
readonly tier: number;
|
|
26
|
+
/** Audit string stamped on every cross-tier event. */
|
|
27
|
+
readonly reason: string;
|
|
28
|
+
/** Absolute expiration in ms (Date.now()). */
|
|
29
|
+
readonly expiresAt: number;
|
|
30
|
+
private released;
|
|
31
|
+
private readonly vault;
|
|
32
|
+
private readonly onRelease;
|
|
33
|
+
constructor(opts: {
|
|
34
|
+
vault: Vault;
|
|
35
|
+
tier: number;
|
|
36
|
+
reason: string;
|
|
37
|
+
expiresAt: number;
|
|
38
|
+
onRelease: () => void;
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Scoped collection accessor. Returns a thin wrapper exposing the
|
|
42
|
+
* single elevated operation (`put`). Reads, deletes, queries —
|
|
43
|
+
* everything else — should go through the original `vault`'s
|
|
44
|
+
* `collection(...)`, which keeps "writes elevated, reads
|
|
45
|
+
* unprivileged" trivially true.
|
|
46
|
+
*/
|
|
47
|
+
collection<T>(name: string): {
|
|
48
|
+
put(id: string, record: T): Promise<TierMoveResult>;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Manually revert the elevation. Idempotent — calling twice (or
|
|
52
|
+
* after the TTL expired) is a safe no-op. The vault's
|
|
53
|
+
* active-elevation slot is cleared so a subsequent
|
|
54
|
+
* `vault.elevate(...)` succeeds without throwing
|
|
55
|
+
* {@link AlreadyElevatedError}.
|
|
56
|
+
*/
|
|
57
|
+
release(): Promise<void>;
|
|
58
|
+
private assertActive;
|
|
59
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-record transactions subpath barrel.
|
|
3
|
+
*
|
|
4
|
+
* Public entry point is `db.transaction(fn)`; these types are exported
|
|
5
|
+
* so consumers can annotate transaction-body signatures in their own
|
|
6
|
+
* code.
|
|
7
|
+
*/
|
|
8
|
+
export { withTransactions } from './active.js';
|
|
9
|
+
export type { TransactionStrategyOptions } from './active.js';
|
|
10
|
+
export type { TxStrategy } from './strategy.js';
|
|
11
|
+
export type { TransactionInvariant } from './invariants.js';
|
|
12
|
+
export { TxContext, TxVault, TxCollection, runTransaction } from './transaction.js';
|
|
13
|
+
export type { AmendmentTxOptions } from './transaction.js';
|