@noy-db/hub 0.3.0-pre.10 → 0.3.0-pre.12
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 +4 -4
- package/dist/api-3TH2GOFQ.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +18 -18
- package/dist/backup-2WVBIVXW.js +225 -0
- package/dist/blobs/index.js +10 -10
- package/dist/broker/index.js +92 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/bundle/index.js +20 -20
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +30 -30
- package/dist/chunk-2MTRJCBI.js +75 -0
- package/dist/chunk-37WOJQWY.js +404 -0
- package/dist/chunk-3QSOFZQB.js +589 -0
- package/dist/chunk-44IL5G3W.js +99 -0
- package/dist/chunk-45QPICLE.js +69 -0
- package/dist/chunk-4BQXMCE5.js +164 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-5HNX4OD4.js +30 -0
- package/dist/chunk-65VLRG3I.js +54 -0
- package/dist/chunk-6MA575R5.js +59 -0
- package/dist/chunk-6S7ENMRE.js +524 -0
- package/dist/chunk-6S7ENMRE.js.map +1 -0
- package/dist/chunk-7GAXFU2O.js +123 -0
- package/dist/chunk-7QLY64AD.js +202 -0
- package/dist/chunk-7ZOSHEVS.js +235 -0
- package/dist/chunk-AAIIDAUC.js +371 -0
- package/dist/chunk-AAIIDAUC.js.map +1 -0
- package/dist/chunk-AKEOHKMT.js +282 -0
- package/dist/chunk-AKEOHKMT.js.map +1 -0
- package/dist/chunk-APHLCXVC.js +124 -0
- package/dist/chunk-BDEMZD4F.js +129 -0
- package/dist/chunk-BDPAVYGJ.js +662 -0
- package/dist/chunk-BLUT46UP.js +42 -0
- package/dist/chunk-CCIR2OJH.js +778 -0
- package/dist/chunk-CXC3JLAQ.js +155 -0
- package/dist/chunk-CZMCOFEA.js +1221 -0
- package/dist/chunk-DIB2BOIH.js +164 -0
- package/dist/chunk-DJ7MRXNA.js +344 -0
- package/dist/chunk-DJ7MRXNA.js.map +1 -0
- package/dist/chunk-EHW5KTTA.js +150 -0
- package/dist/chunk-EHW5KTTA.js.map +1 -0
- package/dist/chunk-EIZ4YOG2.js +70 -0
- package/dist/chunk-EVHBK7BN.js +515 -0
- package/dist/chunk-EXGDL2UQ.js +74 -0
- package/dist/chunk-F3LGBRSV.js +453 -0
- package/dist/chunk-F44XWXOA.js +392 -0
- package/dist/chunk-FF7S3XDW.js +230 -0
- package/dist/chunk-FJTWLQV3.js +155 -0
- package/dist/chunk-FYNE4WLC.js +36 -0
- package/dist/chunk-FZCGIJEJ.js +1505 -0
- package/dist/chunk-FZCGIJEJ.js.map +1 -0
- package/dist/chunk-GL3JV5EV.js +130 -0
- package/dist/chunk-GXLZXD2W.js +29 -0
- package/dist/chunk-HA6ZQWA2.js +1056 -0
- package/dist/chunk-HA6ZQWA2.js.map +1 -0
- package/dist/chunk-HBBZWEC5.js +686 -0
- package/dist/chunk-HG76BZ6G.js +188 -0
- package/dist/chunk-HGAB325C.js +38 -0
- package/dist/chunk-HIOLCOK3.js +30 -0
- package/dist/chunk-HIOLCOK3.js.map +1 -0
- package/dist/chunk-HK4XTXO4.js +49 -0
- package/dist/chunk-HYG32HCM.js +14 -0
- package/dist/chunk-ILF5GARW.js +135 -0
- package/dist/chunk-INBQ43DI.js +382 -0
- package/dist/chunk-IQIVD7TP.js +247 -0
- package/dist/chunk-J3JIYFYL.js +45 -0
- package/dist/chunk-JC75UBMT.js +32 -0
- package/dist/chunk-JC75UBMT.js.map +1 -0
- package/dist/chunk-JGUZMC3I.js +150 -0
- package/dist/chunk-JRKE5MAZ.js +80 -0
- package/dist/chunk-K2DLLK34.js +255 -0
- package/dist/chunk-KKYEZCQG.js +34 -0
- package/dist/chunk-NAR6IDKH.js +54 -0
- package/dist/chunk-NEYKOESM.js +117 -0
- package/dist/chunk-NM3IFKBL.js +29 -0
- package/dist/chunk-NRYNRSGV.js +99 -0
- package/dist/chunk-NT2ZO4KI.js +59 -0
- package/dist/chunk-P2LJI6JE.js +94 -0
- package/dist/chunk-PH7G7ZI7.js +823 -0
- package/dist/chunk-PN5332SU.js +209 -0
- package/dist/chunk-QF5LGMSV.js +45 -0
- package/dist/chunk-QG5RQQBO.js +367 -0
- package/dist/chunk-QYPDYN23.js +23 -0
- package/dist/chunk-R3NHNVS5.js +478 -0
- package/dist/chunk-R3NHNVS5.js.map +1 -0
- package/dist/chunk-RNXJ2VO6.js +280 -0
- package/dist/chunk-RXTMLYJS.js +97 -0
- package/dist/chunk-S2OWPVSO.js +30 -0
- package/dist/chunk-S7TAPIRS.js +205 -0
- package/dist/chunk-SAL5X5OK.js +40 -0
- package/dist/chunk-SGJGWBSC.js +85 -0
- package/dist/chunk-SIAIYP6G.js +50 -0
- package/dist/chunk-SXPCZ6LL.js +1697 -0
- package/dist/chunk-SXPCZ6LL.js.map +1 -0
- package/dist/chunk-TBNF5DV5.js +261 -0
- package/dist/chunk-TVOHSPVK.js +21 -0
- package/dist/chunk-TVS6BUUR.js +41 -0
- package/dist/chunk-UMC5QZTX.js +86 -0
- package/dist/chunk-US34HTOI.js +367 -0
- package/dist/chunk-VCUQR6ZL.js +621 -0
- package/dist/chunk-VXZNSPJM.js +957 -0
- package/dist/chunk-VXZNSPJM.js.map +1 -0
- package/dist/chunk-WEHIQYQH.js +71 -0
- package/dist/chunk-WHQHTNT7.js +265 -0
- package/dist/chunk-X6Y5MXTH.js +74 -0
- package/dist/chunk-XJ47GS53.js +291 -0
- package/dist/chunk-XS6DLN67.js +95 -0
- package/dist/chunk-Y5TWPBNW.js +91 -0
- package/dist/chunk-YCXKFB7J.js +14181 -0
- package/dist/chunk-YCXKFB7J.js.map +1 -0
- package/dist/chunk-ZHOJOT6S.js +36 -0
- package/dist/chunk-ZL6PRULX.js +167 -0
- package/dist/chunk-ZL6PRULX.js.map +1 -0
- package/dist/classified/index.js +5 -5
- package/dist/classified-marker-M7K3OJPM.js +28 -0
- package/dist/classified-marker-M7K3OJPM.js.map +1 -0
- package/dist/collection-facade-DWA735G2.js +39 -0
- package/dist/computed-ORCGM5JE.js +11 -0
- package/dist/consent/index.js +9 -9
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-OV5FGKOG.js +28 -0
- package/dist/delegation-YVSHMIZZ.js +25 -0
- package/dist/derivations/index.js +12 -12
- package/dist/derive-BUO555L5.js +21 -0
- package/dist/enclave-XXFUKJC6.js +135 -0
- package/dist/executor-6OCCE5VM.js +25 -0
- package/dist/executor-JFVAJY42.js +9 -0
- package/dist/executor-UPSH5O3F.js +9 -0
- package/dist/export-accessible-L4A2QZA5.js +23 -0
- package/dist/extract-partition-ZHQ4RGGM.js +36 -0
- package/dist/fanout-sidecar-IO2KDUWV.js +74 -0
- package/dist/find-ZFZDZQ2U.js +11 -0
- package/dist/forget/index.js +10 -10
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +3 -3
- package/dist/history/index.js +11 -11
- package/dist/i18n/index.js +15 -15
- package/dist/index.d.ts +303 -1492
- package/dist/index.js +172 -171
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +5 -5
- package/dist/indexing/index.js.map +1 -1
- package/dist/issue-OG4V23SQ.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 +789 -0
- package/dist/kernel/collection.d.ts +1519 -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 +33 -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 +78 -0
- package/dist/kernel/enclave/record-keys/deterministic.d.ts +54 -0
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/lifecycle.d.ts +57 -0
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +301 -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 +1848 -0
- package/dist/kernel/events.d.ts +11 -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/types.d.ts +3166 -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 +1737 -0
- package/dist/kernel/via/compose.d.ts +144 -0
- package/dist/kernel/via/dispatch.d.ts +185 -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-UAQKPWNM.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-GFUQJRK5.js +24 -0
- package/dist/link-set-DGYUOFVD.js +31 -0
- package/dist/materialized-views/index.js +19 -19
- package/dist/noydb-AKH4AMCR.js +67 -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-5POYLI26.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 +81 -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-LB3P4XQU.js +60 -0
- package/dist/post-register-LB3P4XQU.js.map +1 -0
- package/dist/public-envelope-GOG4LUM7.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 +5 -5
- package/dist/register-ZI7YI7US.js +23 -0
- package/dist/registry-DZ2T4LL7.js +9 -0
- package/dist/registry-NVWEQ2GU.js +18 -0
- package/dist/registry-SEKL74ET.js +19 -0
- package/dist/request-withdrawal-ZP3JIRVS.js +31 -0
- package/dist/reveal-NPVROV4D.js +38 -0
- package/dist/revoke-VF6TAJK2.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/seed-VI4FU7UH.js +231 -0
- package/dist/seed-VI4FU7UH.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-DRDDCCHW.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/stale-TJXFQKOJ.js +14 -0
- package/dist/storage-GR7KZRH4.js +23 -0
- package/dist/store-coordination-provider-5KDS2RRP.js +142 -0
- package/dist/sync/index.js +9 -9
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +10 -10
- package/dist/to/index.js +1 -1
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-QK76NJ4G.js +139 -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-XQCBKSBW.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 +177 -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 +122 -0
- package/dist/with-audit/tiers/strategy.d.ts +35 -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 +33 -0
- package/dist/with-cargo/extract-partition.d.ts +147 -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 +38 -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 +27 -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 +335 -0
- package/dist/with-commit/history/strategy.d.ts +126 -0
- package/dist/with-commit/history/time-machine.d.ts +179 -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 +58 -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 +71 -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 +62 -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 +3 -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 +120 -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 +123 -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 +41 -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 +37 -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-set.d.ts +342 -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-FMN4LPJZ.js +28 -0
- package/package.json +47 -43
- package/dist/aggregate/index.d.ts +0 -41
- package/dist/api-TX2EX2FX.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-R7NTDFKY.js +0 -225
- package/dist/blobs/index.d.ts +0 -43
- package/dist/bundle/index.d.ts +0 -121
- package/dist/bundle-D6GxiUfq.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -7
- package/dist/chunk-2OV5NVE7.js +0 -95
- package/dist/chunk-2OZXVKVP.js +0 -367
- package/dist/chunk-2REPHKET.js +0 -54
- package/dist/chunk-3JXPAHOZ.js +0 -686
- package/dist/chunk-3MATJ6O4.js +0 -367
- package/dist/chunk-3OPY6MK2.js +0 -404
- package/dist/chunk-3QSIU3UT.js +0 -291
- package/dist/chunk-4OMCIY6F.js +0 -99
- package/dist/chunk-5I35DOHK.js +0 -94
- package/dist/chunk-5VG4IJR7.js +0 -235
- package/dist/chunk-5YESYH2C.js +0 -155
- package/dist/chunk-6G5ORS5D.js +0 -202
- package/dist/chunk-6P5XCKSD.js +0 -71
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-7BWJHO2A.js +0 -34
- package/dist/chunk-7P2SDJG3.js +0 -279
- package/dist/chunk-7P2SDJG3.js.map +0 -1
- package/dist/chunk-ANB77BVV.js +0 -150
- package/dist/chunk-ANB77BVV.js.map +0 -1
- package/dist/chunk-BKARNZJN.js +0 -382
- package/dist/chunk-BQISD5ZV.js +0 -261
- package/dist/chunk-BUAQ7YI3.js +0 -1697
- package/dist/chunk-BUAQ7YI3.js.map +0 -1
- package/dist/chunk-CB7CWSKW.js +0 -430
- package/dist/chunk-CB7CWSKW.js.map +0 -1
- package/dist/chunk-DFVUTGT2.js +0 -515
- package/dist/chunk-DJ7KIPLV.js +0 -23
- package/dist/chunk-DSKDQP3G.js +0 -14066
- package/dist/chunk-DSKDQP3G.js.map +0 -1
- package/dist/chunk-DV4HUP5G.js +0 -99
- package/dist/chunk-EOXAAJTY.js +0 -621
- package/dist/chunk-ET67AY6B.js +0 -74
- package/dist/chunk-F4CEK5YM.js +0 -123
- package/dist/chunk-FORYWFN6.js +0 -130
- package/dist/chunk-FRP6D2DM.js +0 -91
- package/dist/chunk-FUOE7UUV.js +0 -341
- package/dist/chunk-FUOE7UUV.js.map +0 -1
- package/dist/chunk-G4JYND6L.js +0 -42
- package/dist/chunk-G6XV4H65.js +0 -59
- package/dist/chunk-GNMXXTMN.js +0 -85
- package/dist/chunk-HPWKV3YB.js +0 -21
- package/dist/chunk-HY3AUMFI.js +0 -41
- package/dist/chunk-HYR4WZZ3.js +0 -69
- package/dist/chunk-ICXIFFYZ.js +0 -355
- package/dist/chunk-ICXIFFYZ.js.map +0 -1
- package/dist/chunk-IVLTXX4W.js +0 -280
- package/dist/chunk-J4LPNIGK.js +0 -777
- package/dist/chunk-JJZ2LW6T.js +0 -36
- package/dist/chunk-KJ2BCBTL.js +0 -589
- package/dist/chunk-KNZB6JMR.js +0 -129
- package/dist/chunk-LEJIKBBB.js +0 -124
- package/dist/chunk-LL2NIVUR.js +0 -188
- package/dist/chunk-MCHVVJIA.js +0 -968
- package/dist/chunk-MCHVVJIA.js.map +0 -1
- package/dist/chunk-NUEQU36L.js +0 -392
- package/dist/chunk-O45M6LDB.js +0 -38
- package/dist/chunk-OBKWYKYC.js +0 -117
- package/dist/chunk-OHHKHSJP.js +0 -209
- package/dist/chunk-OT76OZL6.js +0 -45
- package/dist/chunk-OVYRLHPE.js +0 -150
- package/dist/chunk-OXCSVM3B.js +0 -155
- package/dist/chunk-P33LUIML.js +0 -205
- package/dist/chunk-PLS64NCS.js +0 -59
- package/dist/chunk-PS2NEWEX.js +0 -36
- package/dist/chunk-QA2KUPCP.js +0 -45
- package/dist/chunk-QOC3VYL2.js +0 -30
- package/dist/chunk-QSFOZUYL.js +0 -823
- package/dist/chunk-RHK32N73.js +0 -30
- package/dist/chunk-RW3Y22MW.js +0 -97
- package/dist/chunk-S7VFUQM2.js +0 -1484
- package/dist/chunk-S7VFUQM2.js.map +0 -1
- package/dist/chunk-T7WSLRAU.js +0 -49
- package/dist/chunk-TAKWLZZX.js +0 -944
- package/dist/chunk-TAKWLZZX.js.map +0 -1
- package/dist/chunk-TMBXVJKT.js +0 -75
- package/dist/chunk-TWKKOM55.js +0 -54
- package/dist/chunk-U3WZCU7E.js +0 -14
- package/dist/chunk-UF362QVH.js +0 -70
- package/dist/chunk-UN4FVIBH.js +0 -135
- package/dist/chunk-VEAVKDDB.js +0 -29
- package/dist/chunk-VEPTFUJY.js +0 -29
- package/dist/chunk-VJV7GKQK.js +0 -662
- package/dist/chunk-VQRAIPYF.js +0 -50
- package/dist/chunk-VRIYFLBA.js +0 -74
- package/dist/chunk-VWM3DAVB.js +0 -265
- package/dist/chunk-VWRRVE6D.js +0 -80
- package/dist/chunk-WBJIQSLL.js +0 -167
- package/dist/chunk-WBJIQSLL.js.map +0 -1
- package/dist/chunk-WIGQB62E.js +0 -164
- package/dist/chunk-WZSCE6RM.js +0 -466
- package/dist/chunk-WZSCE6RM.js.map +0 -1
- package/dist/chunk-XGDAPN6M.js +0 -255
- package/dist/chunk-XH7XP3OL.js +0 -1221
- package/dist/chunk-XREOISSI.js +0 -40
- package/dist/chunk-XUBPSPKD.js +0 -164
- package/dist/chunk-Y3A5CB5G.js +0 -247
- package/dist/chunk-YCXCR7VG.js +0 -230
- package/dist/chunk-YMVQD5Q5.js +0 -453
- package/dist/chunk-YN5IAHN6.js +0 -32
- package/dist/chunk-YN5IAHN6.js.map +0 -1
- package/dist/chunk-ZYJ55N7N.js +0 -86
- package/dist/classified/index.d.ts +0 -16
- package/dist/classified-marker-H6YSHYNK.js +0 -24
- package/dist/classified-marker-H6YSHYNK.js.map +0 -1
- package/dist/collection-facade-LVD22JLM.js +0 -39
- package/dist/computed-EXDMQODG.js +0 -11
- package/dist/consent/index.d.ts +0 -22
- package/dist/crdt/index.d.ts +0 -33
- package/dist/dead-filter-HQIE2YG7.js +0 -28
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-BJP73GAP.js +0 -25
- package/dist/derivations/index.d.ts +0 -69
- package/dist/derive-BME7HDWO.js +0 -21
- package/dist/dev-unlock-Bmm2pgJ0.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-NHORSWSF.js +0 -125
- package/dist/executor-FE6X4LFX.js +0 -9
- package/dist/executor-KSHKRJXP.js +0 -25
- package/dist/executor-ZHTJJICG.js +0 -9
- package/dist/export-accessible-DACHM5VT.js +0 -23
- package/dist/extract-partition-RNENZZ4T.js +0 -36
- package/dist/fanout-sidecar-OFWN3NM7.js +0 -74
- package/dist/find-BNGBJNKP.js +0 -11
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -34
- package/dist/hash-DAJjMsCE.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-DjWbxsjb.d.ts +0 -23579
- package/dist/index-qwuNvO2B.d.ts +0 -144
- package/dist/indexing/index.d.ts +0 -38
- package/dist/issue-NDI4CVZU.js +0 -19
- package/dist/lazy/index.d.ts +0 -20
- package/dist/ledger-6NDS2EO4.js +0 -42
- package/dist/liberate-HN3RIGIP.js +0 -24
- package/dist/link-set-SJB2MVJV.js +0 -31
- package/dist/materialized-views/index.d.ts +0 -189
- package/dist/mime-magic-bBj5OgUC.d.ts +0 -103
- package/dist/noydb-BWF6EPIR.js +0 -66
- 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-WGNAG5H6.js +0 -41
- package/dist/portability/index.d.ts +0 -19
- package/dist/post-register-CWKBQRC7.js +0 -55
- package/dist/post-register-CWKBQRC7.js.map +0 -1
- package/dist/public-envelope-EJLVIFX7.js +0 -32
- package/dist/query/index.d.ts +0 -4
- package/dist/register-SBIX7TVV.js +0 -23
- package/dist/registry-3EQG6OOE.js +0 -18
- package/dist/registry-CA327ACV.js +0 -9
- package/dist/registry-E7OXOTSV.js +0 -19
- package/dist/request-withdrawal-KAH2AAXC.js +0 -31
- package/dist/reveal-R3JLHMUF.js +0 -38
- package/dist/revoke-IXLOJ3IH.js +0 -24
- 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-Y46N2GJ3.js +0 -25
- package/dist/snapshots/index.d.ts +0 -25
- package/dist/stale-Z7IW6RIL.js +0 -14
- package/dist/storage-ADNP2UWI.js +0 -23
- package/dist/store-coordination-provider-DTDMI6VL.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-DI-krBsZ.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-BUcli5Nh.d.ts +0 -101
- package/dist/vault-diff-Z2DUayMe.d.ts +0 -147
- package/dist/verify-JPF2YR5E.js +0 -139
- package/dist/walk-XYA2O3LW.js +0 -241
- package/dist/with/index.d.ts +0 -37
- package/dist/with-materialized-view-BUmzlXue.d.ts +0 -27
- package/dist/with-overlayed-view-m4FaXXTO.d.ts +0 -12
- package/dist/with-rollup-DEKGI9vb.d.ts +0 -47
- package/dist/withdraw-accessible-WLV4MTEN.js +0 -28
- /package/dist/{api-TX2EX2FX.js.map → api-3TH2GOFQ.js.map} +0 -0
- /package/dist/{backup-R7NTDFKY.js.map → backup-2WVBIVXW.js.map} +0 -0
- /package/dist/{chunk-TMBXVJKT.js.map → chunk-2MTRJCBI.js.map} +0 -0
- /package/dist/{chunk-3OPY6MK2.js.map → chunk-37WOJQWY.js.map} +0 -0
- /package/dist/{chunk-KJ2BCBTL.js.map → chunk-3QSOFZQB.js.map} +0 -0
- /package/dist/{chunk-DV4HUP5G.js.map → chunk-44IL5G3W.js.map} +0 -0
- /package/dist/{chunk-HYR4WZZ3.js.map → chunk-45QPICLE.js.map} +0 -0
- /package/dist/{chunk-XUBPSPKD.js.map → chunk-4BQXMCE5.js.map} +0 -0
- /package/dist/{chunk-RHK32N73.js.map → chunk-5HNX4OD4.js.map} +0 -0
- /package/dist/{chunk-2REPHKET.js.map → chunk-65VLRG3I.js.map} +0 -0
- /package/dist/{chunk-G6XV4H65.js.map → chunk-6MA575R5.js.map} +0 -0
- /package/dist/{chunk-F4CEK5YM.js.map → chunk-7GAXFU2O.js.map} +0 -0
- /package/dist/{chunk-6G5ORS5D.js.map → chunk-7QLY64AD.js.map} +0 -0
- /package/dist/{chunk-5VG4IJR7.js.map → chunk-7ZOSHEVS.js.map} +0 -0
- /package/dist/{chunk-LEJIKBBB.js.map → chunk-APHLCXVC.js.map} +0 -0
- /package/dist/{chunk-KNZB6JMR.js.map → chunk-BDEMZD4F.js.map} +0 -0
- /package/dist/{chunk-VJV7GKQK.js.map → chunk-BDPAVYGJ.js.map} +0 -0
- /package/dist/{chunk-G4JYND6L.js.map → chunk-BLUT46UP.js.map} +0 -0
- /package/dist/{chunk-J4LPNIGK.js.map → chunk-CCIR2OJH.js.map} +0 -0
- /package/dist/{chunk-5YESYH2C.js.map → chunk-CXC3JLAQ.js.map} +0 -0
- /package/dist/{chunk-XH7XP3OL.js.map → chunk-CZMCOFEA.js.map} +0 -0
- /package/dist/{chunk-WIGQB62E.js.map → chunk-DIB2BOIH.js.map} +0 -0
- /package/dist/{chunk-UF362QVH.js.map → chunk-EIZ4YOG2.js.map} +0 -0
- /package/dist/{chunk-DFVUTGT2.js.map → chunk-EVHBK7BN.js.map} +0 -0
- /package/dist/{chunk-ET67AY6B.js.map → chunk-EXGDL2UQ.js.map} +0 -0
- /package/dist/{chunk-YMVQD5Q5.js.map → chunk-F3LGBRSV.js.map} +0 -0
- /package/dist/{chunk-NUEQU36L.js.map → chunk-F44XWXOA.js.map} +0 -0
- /package/dist/{chunk-YCXCR7VG.js.map → chunk-FF7S3XDW.js.map} +0 -0
- /package/dist/{chunk-OXCSVM3B.js.map → chunk-FJTWLQV3.js.map} +0 -0
- /package/dist/{chunk-PS2NEWEX.js.map → chunk-FYNE4WLC.js.map} +0 -0
- /package/dist/{chunk-FORYWFN6.js.map → chunk-GL3JV5EV.js.map} +0 -0
- /package/dist/{chunk-VEAVKDDB.js.map → chunk-GXLZXD2W.js.map} +0 -0
- /package/dist/{chunk-3JXPAHOZ.js.map → chunk-HBBZWEC5.js.map} +0 -0
- /package/dist/{chunk-LL2NIVUR.js.map → chunk-HG76BZ6G.js.map} +0 -0
- /package/dist/{chunk-O45M6LDB.js.map → chunk-HGAB325C.js.map} +0 -0
- /package/dist/{chunk-T7WSLRAU.js.map → chunk-HK4XTXO4.js.map} +0 -0
- /package/dist/{chunk-U3WZCU7E.js.map → chunk-HYG32HCM.js.map} +0 -0
- /package/dist/{chunk-UN4FVIBH.js.map → chunk-ILF5GARW.js.map} +0 -0
- /package/dist/{chunk-BKARNZJN.js.map → chunk-INBQ43DI.js.map} +0 -0
- /package/dist/{chunk-Y3A5CB5G.js.map → chunk-IQIVD7TP.js.map} +0 -0
- /package/dist/{chunk-QA2KUPCP.js.map → chunk-J3JIYFYL.js.map} +0 -0
- /package/dist/{chunk-OVYRLHPE.js.map → chunk-JGUZMC3I.js.map} +0 -0
- /package/dist/{chunk-VWRRVE6D.js.map → chunk-JRKE5MAZ.js.map} +0 -0
- /package/dist/{chunk-XGDAPN6M.js.map → chunk-K2DLLK34.js.map} +0 -0
- /package/dist/{chunk-7BWJHO2A.js.map → chunk-KKYEZCQG.js.map} +0 -0
- /package/dist/{chunk-TWKKOM55.js.map → chunk-NAR6IDKH.js.map} +0 -0
- /package/dist/{chunk-OBKWYKYC.js.map → chunk-NEYKOESM.js.map} +0 -0
- /package/dist/{chunk-VEPTFUJY.js.map → chunk-NM3IFKBL.js.map} +0 -0
- /package/dist/{chunk-4OMCIY6F.js.map → chunk-NRYNRSGV.js.map} +0 -0
- /package/dist/{chunk-PLS64NCS.js.map → chunk-NT2ZO4KI.js.map} +0 -0
- /package/dist/{chunk-5I35DOHK.js.map → chunk-P2LJI6JE.js.map} +0 -0
- /package/dist/{chunk-QSFOZUYL.js.map → chunk-PH7G7ZI7.js.map} +0 -0
- /package/dist/{chunk-OHHKHSJP.js.map → chunk-PN5332SU.js.map} +0 -0
- /package/dist/{chunk-OT76OZL6.js.map → chunk-QF5LGMSV.js.map} +0 -0
- /package/dist/{chunk-3MATJ6O4.js.map → chunk-QG5RQQBO.js.map} +0 -0
- /package/dist/{chunk-DJ7KIPLV.js.map → chunk-QYPDYN23.js.map} +0 -0
- /package/dist/{chunk-IVLTXX4W.js.map → chunk-RNXJ2VO6.js.map} +0 -0
- /package/dist/{chunk-RW3Y22MW.js.map → chunk-RXTMLYJS.js.map} +0 -0
- /package/dist/{chunk-QOC3VYL2.js.map → chunk-S2OWPVSO.js.map} +0 -0
- /package/dist/{chunk-P33LUIML.js.map → chunk-S7TAPIRS.js.map} +0 -0
- /package/dist/{chunk-XREOISSI.js.map → chunk-SAL5X5OK.js.map} +0 -0
- /package/dist/{chunk-GNMXXTMN.js.map → chunk-SGJGWBSC.js.map} +0 -0
- /package/dist/{chunk-VQRAIPYF.js.map → chunk-SIAIYP6G.js.map} +0 -0
- /package/dist/{chunk-BQISD5ZV.js.map → chunk-TBNF5DV5.js.map} +0 -0
- /package/dist/{chunk-HPWKV3YB.js.map → chunk-TVOHSPVK.js.map} +0 -0
- /package/dist/{chunk-HY3AUMFI.js.map → chunk-TVS6BUUR.js.map} +0 -0
- /package/dist/{chunk-ZYJ55N7N.js.map → chunk-UMC5QZTX.js.map} +0 -0
- /package/dist/{chunk-2OZXVKVP.js.map → chunk-US34HTOI.js.map} +0 -0
- /package/dist/{chunk-EOXAAJTY.js.map → chunk-VCUQR6ZL.js.map} +0 -0
- /package/dist/{chunk-6P5XCKSD.js.map → chunk-WEHIQYQH.js.map} +0 -0
- /package/dist/{chunk-VWM3DAVB.js.map → chunk-WHQHTNT7.js.map} +0 -0
- /package/dist/{chunk-VRIYFLBA.js.map → chunk-X6Y5MXTH.js.map} +0 -0
- /package/dist/{chunk-3QSIU3UT.js.map → chunk-XJ47GS53.js.map} +0 -0
- /package/dist/{chunk-2OV5NVE7.js.map → chunk-XS6DLN67.js.map} +0 -0
- /package/dist/{chunk-FRP6D2DM.js.map → chunk-Y5TWPBNW.js.map} +0 -0
- /package/dist/{chunk-JJZ2LW6T.js.map → chunk-ZHOJOT6S.js.map} +0 -0
- /package/dist/{collection-facade-LVD22JLM.js.map → collection-facade-DWA735G2.js.map} +0 -0
- /package/dist/{computed-EXDMQODG.js.map → computed-ORCGM5JE.js.map} +0 -0
- /package/dist/{dead-filter-HQIE2YG7.js.map → dead-filter-OV5FGKOG.js.map} +0 -0
- /package/dist/{delegation-BJP73GAP.js.map → delegation-YVSHMIZZ.js.map} +0 -0
- /package/dist/{derive-BME7HDWO.js.map → derive-BUO555L5.js.map} +0 -0
- /package/dist/{enclave-NHORSWSF.js.map → enclave-XXFUKJC6.js.map} +0 -0
- /package/dist/{executor-FE6X4LFX.js.map → executor-6OCCE5VM.js.map} +0 -0
- /package/dist/{executor-KSHKRJXP.js.map → executor-JFVAJY42.js.map} +0 -0
- /package/dist/{executor-ZHTJJICG.js.map → executor-UPSH5O3F.js.map} +0 -0
- /package/dist/{export-accessible-DACHM5VT.js.map → export-accessible-L4A2QZA5.js.map} +0 -0
- /package/dist/{extract-partition-RNENZZ4T.js.map → extract-partition-ZHQ4RGGM.js.map} +0 -0
- /package/dist/{fanout-sidecar-OFWN3NM7.js.map → fanout-sidecar-IO2KDUWV.js.map} +0 -0
- /package/dist/{find-BNGBJNKP.js.map → find-ZFZDZQ2U.js.map} +0 -0
- /package/dist/{issue-NDI4CVZU.js.map → issue-OG4V23SQ.js.map} +0 -0
- /package/dist/{ledger-6NDS2EO4.js.map → ledger-UAQKPWNM.js.map} +0 -0
- /package/dist/{liberate-HN3RIGIP.js.map → liberate-GFUQJRK5.js.map} +0 -0
- /package/dist/{link-set-SJB2MVJV.js.map → link-set-DGYUOFVD.js.map} +0 -0
- /package/dist/{noydb-BWF6EPIR.js.map → noydb-AKH4AMCR.js.map} +0 -0
- /package/dist/{policy-WGNAG5H6.js.map → policy-5POYLI26.js.map} +0 -0
- /package/dist/{public-envelope-EJLVIFX7.js.map → public-envelope-GOG4LUM7.js.map} +0 -0
- /package/dist/{register-SBIX7TVV.js.map → register-ZI7YI7US.js.map} +0 -0
- /package/dist/{registry-3EQG6OOE.js.map → registry-DZ2T4LL7.js.map} +0 -0
- /package/dist/{registry-CA327ACV.js.map → registry-NVWEQ2GU.js.map} +0 -0
- /package/dist/{registry-E7OXOTSV.js.map → registry-SEKL74ET.js.map} +0 -0
- /package/dist/{request-withdrawal-KAH2AAXC.js.map → request-withdrawal-ZP3JIRVS.js.map} +0 -0
- /package/dist/{reveal-R3JLHMUF.js.map → reveal-NPVROV4D.js.map} +0 -0
- /package/dist/{revoke-IXLOJ3IH.js.map → revoke-VF6TAJK2.js.map} +0 -0
- /package/dist/{signer-Y46N2GJ3.js.map → signer-DRDDCCHW.js.map} +0 -0
- /package/dist/{stale-Z7IW6RIL.js.map → stale-TJXFQKOJ.js.map} +0 -0
- /package/dist/{storage-ADNP2UWI.js.map → storage-GR7KZRH4.js.map} +0 -0
- /package/dist/{store-coordination-provider-DTDMI6VL.js.map → store-coordination-provider-5KDS2RRP.js.map} +0 -0
- /package/dist/{verify-JPF2YR5E.js.map → verify-QK76NJ4G.js.map} +0 -0
- /package/dist/{walk-XYA2O3LW.js.map → walk-XQCBKSBW.js.map} +0 -0
- /package/dist/{withdraw-accessible-WLV4MTEN.js.map → withdraw-accessible-FMN4LPJZ.js.map} +0 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-record atomic transactions.
|
|
3
|
+
*
|
|
4
|
+
* Lets an application stage writes across two or more collections (or
|
|
5
|
+
* vaults) and commit them all-or-nothing.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* await db.transaction(async (tx) => {
|
|
9
|
+
* const inv = tx.vault('acme').collection<Invoice>('invoices')
|
|
10
|
+
* const pay = tx.vault('acme').collection<Payment>('payments')
|
|
11
|
+
* await inv.put(invoiceId, { ...invoice, status: 'paid' })
|
|
12
|
+
* await pay.put(paymentId, { invoiceId, amount, paidAt })
|
|
13
|
+
* })
|
|
14
|
+
* // If the body throws before returning: nothing persisted.
|
|
15
|
+
* // If the body returns: all puts committed; any CAS mismatch rolls
|
|
16
|
+
* // the batch back and surfaces as ConflictError.
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* ## Atomicity semantics
|
|
20
|
+
*
|
|
21
|
+
* Ops are buffered during the body. On body-return the hub:
|
|
22
|
+
*
|
|
23
|
+
* 1. **Pre-flight** — re-reads every touched envelope and enforces
|
|
24
|
+
* any caller-supplied `expectedVersion`. A mismatch throws
|
|
25
|
+
* `ConflictError` with *no* writes performed.
|
|
26
|
+
* 2. **Execute** — calls `Collection.put()` / `.delete()` for each
|
|
27
|
+
* staged op in declaration order. History snapshots, ledger
|
|
28
|
+
* appends, and change events fire as normal per op.
|
|
29
|
+
* 3. **Unwind on failure** — if step 2 throws mid-batch, each
|
|
30
|
+
* already-committed op is reverted via the raw store (restoring
|
|
31
|
+
* the captured prior envelope, or deleting if none existed). The
|
|
32
|
+
* ledger is NOT rewritten — audit history preserves the partial
|
|
33
|
+
* commit and the revert.
|
|
34
|
+
*
|
|
35
|
+
* **Crash window.** Steps 2–3 are not a storage-layer transaction —
|
|
36
|
+
* if the process dies between two executed ops, the on-disk state is
|
|
37
|
+
* partial. True all-or-nothing atomicity requires a store that
|
|
38
|
+
* implements `NoydbStore.tx()` (DynamoDB `TransactWriteItems`,
|
|
39
|
+
* IndexedDB `readwrite` transaction, …). This executor declares
|
|
40
|
+
* that future integration point via the `tx?()` method + the
|
|
41
|
+
* `StoreCapabilities.txAtomic` bit, but does not yet delegate
|
|
42
|
+
* to it — the cascade into `Fork · Stores` tracks the per-adapter
|
|
43
|
+
* wire-up.
|
|
44
|
+
*
|
|
45
|
+
* ## Not covered
|
|
46
|
+
*
|
|
47
|
+
* - Cross-sync-peer atomicity. Transactions commit against the
|
|
48
|
+
* primary store only; the sync engine pushes on its normal
|
|
49
|
+
* schedule. For cross-peer two-phase commit use `SyncTransaction`
|
|
50
|
+
* via `db.transaction(vaultName)`.
|
|
51
|
+
* - Read-your-writes within the body. `tx.collection().get(id)`
|
|
52
|
+
* returns the most-recently-staged value for that id when one
|
|
53
|
+
* exists; if no staged op has touched the id, it reads the current
|
|
54
|
+
* committed state. Version numbers returned by `get` reflect the
|
|
55
|
+
* pre-transaction state (staged puts have no version yet).
|
|
56
|
+
*
|
|
57
|
+
* @module
|
|
58
|
+
*/
|
|
59
|
+
import type { Noydb } from '../../kernel/noydb.js';
|
|
60
|
+
import type { Vault } from '../../kernel/vault.js';
|
|
61
|
+
import type { Collection } from '../../kernel/collection.js';
|
|
62
|
+
import type { EncryptedEnvelope } from '../../kernel/types.js';
|
|
63
|
+
import type { TransactionInvariant } from './invariants.js';
|
|
64
|
+
/** One op buffered inside a running `TxContext`. @internal */
|
|
65
|
+
export interface StagedOp {
|
|
66
|
+
type: 'put' | 'delete';
|
|
67
|
+
vaultName: string;
|
|
68
|
+
collectionName: string;
|
|
69
|
+
id: string;
|
|
70
|
+
record?: unknown;
|
|
71
|
+
expectedVersion?: number;
|
|
72
|
+
/**
|
|
73
|
+
* Optional human-readable tag forwarded to the resulting ledger
|
|
74
|
+
* entry's `reason` field. Set by callers via
|
|
75
|
+
* `tx.vault(v).collection(c).put(id, record, { reason })`.
|
|
76
|
+
*/
|
|
77
|
+
reason?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* One executed op (main staged op or recursive side-effect like a
|
|
81
|
+
* derivation output) paired with the envelope captured before the write.
|
|
82
|
+
* `revertExecuted` walks this array in reverse on rollback.
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
export interface ExecutedOp {
|
|
86
|
+
op: StagedOp;
|
|
87
|
+
priorEnvelope: EncryptedEnvelope | null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Options accepted by `db.transaction({ amendment, reason }, fn)`.
|
|
91
|
+
* Only the amendment variant uses these — a plain `db.transaction(fn)`
|
|
92
|
+
* never sees this shape.
|
|
93
|
+
*/
|
|
94
|
+
export interface AmendmentTxOptions {
|
|
95
|
+
/** Opt into amendment mode. Required to be `true`. */
|
|
96
|
+
readonly amendment: true;
|
|
97
|
+
/** Human-readable rationale recorded in the ledger entry. Required. */
|
|
98
|
+
readonly reason: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Transaction handle passed to the user's body. Use
|
|
102
|
+
* `tx.vault(name).collection<T>(name)` to get a per-collection
|
|
103
|
+
* facade; its `put`/`delete`/`get` calls stage ops against the tx.
|
|
104
|
+
*/
|
|
105
|
+
export declare class TxContext {
|
|
106
|
+
/** Stable id for this transaction; shared by all writes it performs. */
|
|
107
|
+
readonly txId: string;
|
|
108
|
+
/** @internal */
|
|
109
|
+
readonly _ops: StagedOp[];
|
|
110
|
+
/**
|
|
111
|
+
* @internal — write log built up in Phase 2. Each entry records the
|
|
112
|
+
* envelope captured BEFORE the write so a mid-batch failure can
|
|
113
|
+
* restore prior state via `revertExecuted`. Side-effect writes (e.g.
|
|
114
|
+
* recursive derivation outputs fired inside `Collection.put`) are
|
|
115
|
+
* appended here in execution order so they roll back alongside the
|
|
116
|
+
* main staged ops.
|
|
117
|
+
*/
|
|
118
|
+
readonly _executed: ExecutedOp[];
|
|
119
|
+
/** @internal */
|
|
120
|
+
readonly _db: Noydb;
|
|
121
|
+
/**
|
|
122
|
+
* @internal — true when this TxContext was opened in amendment
|
|
123
|
+
* mode. Toggles the lazy-`beginAmendment` + role-check path on first
|
|
124
|
+
* `tx.vault(name)` and unlocks the post-Phase-2 invariant + audit run.
|
|
125
|
+
*/
|
|
126
|
+
readonly _amendment: boolean;
|
|
127
|
+
/** @internal — vaults that have already had `beginAmendment` called. */
|
|
128
|
+
readonly _amendmentVaults: Map<string, Vault>;
|
|
129
|
+
/** @internal */
|
|
130
|
+
constructor(db: Noydb, amendment?: boolean);
|
|
131
|
+
/** Scope subsequent `collection()` calls to the named vault. */
|
|
132
|
+
vault(name: string): TxVault;
|
|
133
|
+
}
|
|
134
|
+
/** Per-vault facade inside a running transaction. */
|
|
135
|
+
export declare class TxVault {
|
|
136
|
+
/** @internal */
|
|
137
|
+
readonly _ctx: TxContext;
|
|
138
|
+
/** @internal */
|
|
139
|
+
readonly _vault: Vault;
|
|
140
|
+
/** @internal */
|
|
141
|
+
constructor(ctx: TxContext, vault: Vault);
|
|
142
|
+
/** Scope subsequent op calls to the named collection. */
|
|
143
|
+
collection<T>(name: string): TxCollection<T>;
|
|
144
|
+
}
|
|
145
|
+
/** Per-collection facade inside a running transaction. */
|
|
146
|
+
export declare class TxCollection<T> {
|
|
147
|
+
/** @internal */
|
|
148
|
+
readonly _ctx: TxContext;
|
|
149
|
+
/** @internal */
|
|
150
|
+
readonly _vault: Vault;
|
|
151
|
+
/** @internal */
|
|
152
|
+
readonly _coll: Collection<T>;
|
|
153
|
+
/** @internal */
|
|
154
|
+
readonly _name: string;
|
|
155
|
+
/** @internal */
|
|
156
|
+
constructor(ctx: TxContext, vault: Vault, coll: Collection<T>, name: string);
|
|
157
|
+
/**
|
|
158
|
+
* Read the current committed value, or the most-recently-staged
|
|
159
|
+
* value from the same transaction if one exists.
|
|
160
|
+
*/
|
|
161
|
+
get(id: string): Promise<T | null>;
|
|
162
|
+
/**
|
|
163
|
+
* Stage a put. Does not write until the transaction body returns.
|
|
164
|
+
* Supply `{ expectedVersion }` to enforce optimistic concurrency
|
|
165
|
+
* during the commit pre-flight.
|
|
166
|
+
*/
|
|
167
|
+
put(id: string, record: T, options?: {
|
|
168
|
+
expectedVersion?: number;
|
|
169
|
+
reason?: string;
|
|
170
|
+
}): void;
|
|
171
|
+
/**
|
|
172
|
+
* Stage a delete. Does not write until the transaction body returns.
|
|
173
|
+
* Supply `{ expectedVersion }` to enforce optimistic concurrency
|
|
174
|
+
* during the commit pre-flight.
|
|
175
|
+
*/
|
|
176
|
+
delete(id: string, options?: {
|
|
177
|
+
expectedVersion?: number;
|
|
178
|
+
}): void;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Commit plan: pre-flight check + execution + revert plan.
|
|
182
|
+
*
|
|
183
|
+
* @internal — driven by `withTransactions()` (via `tx/active.ts`) for
|
|
184
|
+
* user-facing `db.transaction(...)` calls and by the `amendment` path
|
|
185
|
+
* in `noydb.ts`. `Collection.putManyAtomic` runs its own Phase 2 loop
|
|
186
|
+
* but shares the `_activeTxContext` mechanism (and the `revertExecuted`
|
|
187
|
+
* helper) so nested side-effect derivation writes get registered for
|
|
188
|
+
* revert alongside the bulk-put source ops.
|
|
189
|
+
*/
|
|
190
|
+
export declare function runTransaction<T>(db: Noydb, fn: (tx: TxContext) => Promise<T> | T, options?: AmendmentTxOptions, txInvariants?: ReadonlyArray<TransactionInvariant>): Promise<T>;
|
|
191
|
+
/**
|
|
192
|
+
* Phase 3 helper — restore captured prior envelopes via the raw store
|
|
193
|
+
* to avoid re-firing Collection-level side effects (we don't want a
|
|
194
|
+
* cascade of change events undoing themselves). The ledger is left
|
|
195
|
+
* as-is: each committed op appended an entry; the revert is
|
|
196
|
+
* deliberately NOT recorded as a compensating entry because the
|
|
197
|
+
* caller-facing contract is "atomic or not at all," not "every write
|
|
198
|
+
* visible in the audit trail." Auditors who need the intermediate
|
|
199
|
+
* state can still reconstruct it by walking the ledger through the
|
|
200
|
+
* failed-tx timestamp.
|
|
201
|
+
*
|
|
202
|
+
* Delegates the reverse/best-effort/raw-revert shape to the shared
|
|
203
|
+
* `bestEffortRevert` helper (`kernel/best-effort-revert.ts`); the cache
|
|
204
|
+
* invalidation below rides along as that helper's per-leg `compensate`
|
|
205
|
+
* callback, gated on `db` exactly as before.
|
|
206
|
+
*
|
|
207
|
+
* @internal — shared between `runTransaction` and
|
|
208
|
+
* `Collection.putManyAtomic`. Both register source ops + nested
|
|
209
|
+
* derivation side-effect ops onto `_executed`; this helper unwinds the
|
|
210
|
+
* combined list in reverse on rollback.
|
|
211
|
+
*/
|
|
212
|
+
export declare function revertExecuted(executed: ReadonlyArray<ExecutedOp>, store: Noydb['_store'], db?: Noydb): Promise<void>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record cold-storage archival engine.
|
|
3
|
+
*
|
|
4
|
+
* Archival relocates a sealed record's **encrypted envelope** from the
|
|
5
|
+
* primary store to a cold archive store — no re-encryption, the envelope
|
|
6
|
+
* is opaque ciphertext. Because relocation goes through low-level store
|
|
7
|
+
* ops (and the collection's `_internalDelete`), it bypasses guards (an
|
|
8
|
+
* issued/immutable record can still be archived) and never fires
|
|
9
|
+
* materialized-view dispatch (finalized aggregates over a sealed period
|
|
10
|
+
* don't recompute). The archive store's contents are themselves the
|
|
11
|
+
* archived-set index — `listArchived` lists it; `restore` relocates an
|
|
12
|
+
* envelope back to the primary store.
|
|
13
|
+
*
|
|
14
|
+
* A `legalHold` predicate blocks archival; `archiveWhen` (typically
|
|
15
|
+
* derived from the record's fiscal period / business date) selects
|
|
16
|
+
* eligible records.
|
|
17
|
+
*/
|
|
18
|
+
import type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js';
|
|
19
|
+
export interface ArchivePolicy<T = unknown> {
|
|
20
|
+
/** Select records eligible for archival — typically a business-date / period test. */
|
|
21
|
+
readonly archiveWhen: (record: T) => boolean;
|
|
22
|
+
/** Block archival while true (litigation / audit hold). Fail-closed on throw. */
|
|
23
|
+
readonly legalHold?: (record: T) => boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface ArchiveResult {
|
|
26
|
+
/** Records relocated to the archive store. */
|
|
27
|
+
readonly archived: number;
|
|
28
|
+
/** Records eligible by `archiveWhen` but retained by a `legalHold`. */
|
|
29
|
+
readonly held: number;
|
|
30
|
+
/** Records scanned across policy collections. */
|
|
31
|
+
readonly scanned: number;
|
|
32
|
+
readonly byCollection: Record<string, {
|
|
33
|
+
archived: number;
|
|
34
|
+
held: number;
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
export interface ArchiveRunOptions {
|
|
38
|
+
/** Stop after this many archivals. `undefined` = unbounded. */
|
|
39
|
+
readonly maxArchives?: number;
|
|
40
|
+
/** Preview without relocating. */
|
|
41
|
+
readonly dryRun?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Everything the engine needs from the Vault, injected so the engine
|
|
45
|
+
* stays unit-testable without a live vault.
|
|
46
|
+
*/
|
|
47
|
+
export interface ArchiveContext {
|
|
48
|
+
readonly vaultId: string;
|
|
49
|
+
readonly archiveStore: NoydbStore;
|
|
50
|
+
/** Collections that declared an `archive` policy. */
|
|
51
|
+
collectionsWithPolicy(): readonly string[];
|
|
52
|
+
getPolicy(collection: string): ArchivePolicy | null;
|
|
53
|
+
listRecordIds(collection: string): Promise<readonly string[]>;
|
|
54
|
+
/** Decrypted record for policy evaluation, or null if unreadable. */
|
|
55
|
+
getRecord(collection: string, id: string): Promise<Record<string, unknown> | null>;
|
|
56
|
+
/** Raw encrypted envelope from the primary store. */
|
|
57
|
+
getEnvelope(collection: string, id: string): Promise<EncryptedEnvelope | null>;
|
|
58
|
+
/** Remove from the primary store + cache, bypassing guards/MV (`_internalDelete`). */
|
|
59
|
+
removeFromPrimary(collection: string, id: string): Promise<void>;
|
|
60
|
+
/** Write an envelope back to the primary store + refresh cache. */
|
|
61
|
+
restoreToPrimary(collection: string, id: string, env: EncryptedEnvelope): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
/** Sweep eligible records into the archive store. */
|
|
64
|
+
export declare function runArchive(ctx: ArchiveContext, options?: ArchiveRunOptions): Promise<ArchiveResult>;
|
|
65
|
+
/** Relocate one archived record back to the primary store. Returns false if not archived. */
|
|
66
|
+
export declare function runRestore(ctx: ArchiveContext, collection: string, id: string): Promise<boolean>;
|
|
67
|
+
/** List archived record ids for a collection (or all policy collections). */
|
|
68
|
+
export declare function runListArchived(ctx: ArchiveContext, collection?: string): Promise<Array<{
|
|
69
|
+
collection: string;
|
|
70
|
+
id: string;
|
|
71
|
+
}>>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@noy-db/hub` record cold-storage archival service.
|
|
3
|
+
*
|
|
4
|
+
* `withArchive({ store })` designates a cold {@link NoydbStore} as the
|
|
5
|
+
* archive target. Declare a per-collection `archive` policy, then call
|
|
6
|
+
* `vault.archive()` to relocate eligible sealed records there,
|
|
7
|
+
* `vault.restore(collection, id)` to pull one back, and
|
|
8
|
+
* `vault.listArchived()` to enumerate the cold set.
|
|
9
|
+
*
|
|
10
|
+
* @see ./engine for the relocation logic.
|
|
11
|
+
*/
|
|
12
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
13
|
+
export interface WithArchiveOptions {
|
|
14
|
+
/** The cold store that holds archived record envelopes. */
|
|
15
|
+
store: NoydbStore;
|
|
16
|
+
}
|
|
17
|
+
export interface ArchiveStrategy {
|
|
18
|
+
readonly store: NoydbStore;
|
|
19
|
+
}
|
|
20
|
+
/** Enable record cold-storage archival against the given cold store. */
|
|
21
|
+
export declare function withArchive(opts: WithArchiveOptions): ArchiveStrategy;
|
|
22
|
+
export type { ArchivePolicy, ArchiveResult, ArchiveRunOptions, ArchiveContext, } from './engine.js';
|
|
23
|
+
export { runArchive, runRestore, runListArchived } from './engine.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @noy-db/hub/shadow — opt-in vault-frame snapshot primitive.
|
|
3
|
+
*
|
|
4
|
+
* @category capability
|
|
5
|
+
*
|
|
6
|
+
* `VaultFrame` captures a point-in-time snapshot of a vault's
|
|
7
|
+
* decrypted records — useful for undo/redo UX, A/B comparisons, and
|
|
8
|
+
* tests that need a frozen view without a full `vault.dump()`.
|
|
9
|
+
* Consumers that don't use frames can omit this subpath and the
|
|
10
|
+
* ~129 LOC never reaches the bundle.
|
|
11
|
+
*/
|
|
12
|
+
export { withShadow } from './active.js';
|
|
13
|
+
export type { ShadowStrategy } from './strategy.js';
|
|
14
|
+
export { VaultFrame, CollectionFrame } from './vault-frame.js';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy seam for the optional VaultFrame snapshot primitive.
|
|
3
|
+
* Core imports `ShadowStrategy` as TYPE-ONLY and `NO_SHADOW` as a
|
|
4
|
+
* 4-line stub. `VaultFrame` is only constructed inside `withShadow()`
|
|
5
|
+
* — consumers who never import `@noy-db/hub/shadow` ship none of
|
|
6
|
+
* the ~129 LOC.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
import type { VaultFrame } from './vault-frame.js';
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export interface ShadowStrategy {
|
|
15
|
+
/**
|
|
16
|
+
* Build a `VaultFrame` bound to the given vault. The factory type
|
|
17
|
+
* is kept loose (`unknown`) to avoid a core → shadow type
|
|
18
|
+
* dependency — the consumer always calls this through
|
|
19
|
+
* `vault.frame()`, which returns `VaultFrame` at its surface.
|
|
20
|
+
*/
|
|
21
|
+
buildFrame(vault: unknown): VaultFrame;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* No-shadow stub.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare const NO_SHADOW: ShadowStrategy;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shadow vaults — `vault.frame()` returns a read-only view of the
|
|
3
|
+
* CURRENT vault state.
|
|
4
|
+
*
|
|
5
|
+
* Companion to {@link VaultInstant} from `history/time-machine.ts`:
|
|
6
|
+
*
|
|
7
|
+
* | Type | Reads from | Use case |
|
|
8
|
+
* |------|------------|----------|
|
|
9
|
+
* | `VaultInstant` | past snapshots (ledger + history) | "books on date X" |
|
|
10
|
+
* | `VaultFrame` | live vault state | screen-share / demo / audit |
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* const readonly = vault.frame()
|
|
14
|
+
* const invoices = await readonly.collection<Invoice>('invoices').list()
|
|
15
|
+
* await readonly.collection<Invoice>('invoices').put(...)
|
|
16
|
+
* // → throws ReadOnlyFrameError
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* ## Contract
|
|
20
|
+
*
|
|
21
|
+
* Every write method on {@link CollectionFrame} throws
|
|
22
|
+
* {@link ReadOnlyFrameError}. Reads delegate to the underlying
|
|
23
|
+
* collection, so validation, locale handling, and caching all work
|
|
24
|
+
* exactly as they do on the live collection.
|
|
25
|
+
*
|
|
26
|
+
* ## Security note: behaviour-enforced, not cryptographically-enforced
|
|
27
|
+
*
|
|
28
|
+
* A VaultFrame rejects writes by contract in the JavaScript layer.
|
|
29
|
+
* It does NOT strip the DEKs from the underlying keyring — the same
|
|
30
|
+
* in-memory keys that decrypt records could, in principle, encrypt
|
|
31
|
+
* new writes via a hand-crafted adapter call. Cryptographic
|
|
32
|
+
* enforcement (keyring variants with the write half of each DEK
|
|
33
|
+
* removed) is hierarchical-access work. Use a VaultFrame to
|
|
34
|
+
* prevent *accidental* writes in a read-scoped flow — do not rely on
|
|
35
|
+
* it as a security boundary against a hostile caller sharing the
|
|
36
|
+
* same process.
|
|
37
|
+
*
|
|
38
|
+
* @module
|
|
39
|
+
*/
|
|
40
|
+
import type { Collection } from '../../kernel/collection.js';
|
|
41
|
+
import type { Query } from '../../kernel/query/builder.js';
|
|
42
|
+
import type { Vault } from '../../kernel/vault.js';
|
|
43
|
+
import type { LocaleReadOptions } from '../../kernel/types.js';
|
|
44
|
+
/**
|
|
45
|
+
* A read-only view of a vault's current state. Produced by
|
|
46
|
+
* `vault.frame()`. Cheap to construct; safe to throw away.
|
|
47
|
+
*/
|
|
48
|
+
export declare class VaultFrame {
|
|
49
|
+
private readonly vault;
|
|
50
|
+
constructor(vault: Vault);
|
|
51
|
+
/**
|
|
52
|
+
* Get a read-only view of one collection. The returned
|
|
53
|
+
* {@link CollectionFrame} delegates all reads to the underlying
|
|
54
|
+
* live collection — cache, locale handling, and validation all
|
|
55
|
+
* work identically to the live collection.
|
|
56
|
+
*/
|
|
57
|
+
collection<T = unknown>(name: string): CollectionFrame<T>;
|
|
58
|
+
/** List all collection names visible in the underlying vault. */
|
|
59
|
+
collections(): Promise<string[]>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Read-only collection view. All write methods throw
|
|
63
|
+
* {@link ReadOnlyFrameError}; all read methods delegate to the
|
|
64
|
+
* underlying live {@link Collection}.
|
|
65
|
+
*/
|
|
66
|
+
export declare class CollectionFrame<T = unknown> {
|
|
67
|
+
private readonly inner;
|
|
68
|
+
/** The underlying collection name. Captured at construction so
|
|
69
|
+
* we don't need to peek into the private Collection state. */
|
|
70
|
+
readonly name: string;
|
|
71
|
+
constructor(inner: Collection<T>,
|
|
72
|
+
/** The underlying collection name. Captured at construction so
|
|
73
|
+
* we don't need to peek into the private Collection state. */
|
|
74
|
+
name: string);
|
|
75
|
+
get(id: string, locale?: LocaleReadOptions): Promise<T | null>;
|
|
76
|
+
list(locale?: LocaleReadOptions): Promise<T[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Return the chainable query builder. Terminals like `.toArray()`,
|
|
79
|
+
* `.first()`, `.count()`, `.aggregate()` all work; the builder has
|
|
80
|
+
* no write surface of its own, so exposing it directly is safe.
|
|
81
|
+
*/
|
|
82
|
+
query(): Query<T>;
|
|
83
|
+
query(predicate: (record: T) => boolean): T[];
|
|
84
|
+
/** History reads — allowed (history is read-only by nature). */
|
|
85
|
+
history(...args: Parameters<Collection<T>['history']>): ReturnType<Collection<T>['history']>;
|
|
86
|
+
getVersion(id: string, version: number): Promise<T | null>;
|
|
87
|
+
put(_id: string, _record: T): Promise<never>;
|
|
88
|
+
delete(_id: string): Promise<never>;
|
|
89
|
+
update(_id: string, _patch: Partial<T>): Promise<never>;
|
|
90
|
+
revert(_id: string, _version: number): Promise<never>;
|
|
91
|
+
putMany(_entries: ReadonlyArray<readonly [string, T]>): Promise<never>;
|
|
92
|
+
deleteMany(_ids: readonly string[]): Promise<never>;
|
|
93
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SnapshotStrategy, RetentionPolicy } from './strategy.js';
|
|
2
|
+
import type { SnapshotPolicy } from './policy.js';
|
|
3
|
+
import type { NoydbPodStore } from '../../kernel/types.js';
|
|
4
|
+
export interface WithSnapshotsOptions {
|
|
5
|
+
/** Bundle store where snapshot blobs and the sidecar index are written. */
|
|
6
|
+
store: NoydbPodStore;
|
|
7
|
+
/**
|
|
8
|
+
* Declarative retention policy. Enforced eagerly after each on-demand `snapshot()`.
|
|
9
|
+
* Defaults to no retention (all on-demand snapshots kept forever). Never affects
|
|
10
|
+
* the rolling auto-snapshot.
|
|
11
|
+
*/
|
|
12
|
+
retention?: RetentionPolicy;
|
|
13
|
+
/**
|
|
14
|
+
* Automatic-snapshot cadence. Default `mode:'manual'` ⇒ no timers; snapshots
|
|
15
|
+
* stay on-demand. Set `mode:'debounce'`/`'interval'` to enable auto-snapshots
|
|
16
|
+
* to the rolling `<vault>__auto` key.
|
|
17
|
+
*/
|
|
18
|
+
snapshotPolicy?: SnapshotPolicy;
|
|
19
|
+
}
|
|
20
|
+
export declare function withSnapshots(opts: WithSnapshotsOptions): SnapshotStrategy;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { NoydbPodStore } from '../../kernel/types.js';
|
|
2
|
+
import type { Vault } from '../../kernel/vault.js';
|
|
3
|
+
import type { SnapshotMeta, RetentionPolicy, SnapshotIndex } from './strategy.js';
|
|
4
|
+
export declare class SnapshotEngine {
|
|
5
|
+
private readonly store;
|
|
6
|
+
private readonly retention;
|
|
7
|
+
constructor(store: NoydbPodStore, retention: RetentionPolicy);
|
|
8
|
+
private indexKey;
|
|
9
|
+
private snapKey;
|
|
10
|
+
private autoKey;
|
|
11
|
+
private readIndex;
|
|
12
|
+
private writeIndex;
|
|
13
|
+
snapshot(vault: Vault, by: string, opts?: {
|
|
14
|
+
label?: string;
|
|
15
|
+
note?: string;
|
|
16
|
+
}): Promise<SnapshotMeta>;
|
|
17
|
+
/**
|
|
18
|
+
* Rolling auto-snapshot. Overwrites the single fixed `<vault>__auto` key and
|
|
19
|
+
* stores its meta in `index.auto`, separate from the immutable `snapshots`
|
|
20
|
+
* pool — retention never prunes it. Used by the cadence scheduler.
|
|
21
|
+
*/
|
|
22
|
+
autoSnapshot(vault: Vault, by: string, opts?: {
|
|
23
|
+
label?: string;
|
|
24
|
+
note?: string;
|
|
25
|
+
}): Promise<SnapshotMeta>;
|
|
26
|
+
listSnapshots(vaultId: string): Promise<SnapshotMeta[]>;
|
|
27
|
+
restoreSnapshot(vault: Vault, version: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Applies the configured retention policy to `index`, mutating `index.snapshots`
|
|
30
|
+
* in place and returning the blob keys that should be deleted from the store.
|
|
31
|
+
* Called by `snapshot()` before the index is written.
|
|
32
|
+
*
|
|
33
|
+
* @internal — public for direct testing only
|
|
34
|
+
*/
|
|
35
|
+
applyRetention(index: SnapshotIndex): string[];
|
|
36
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { withSnapshots } from './active.js';
|
|
2
|
+
export type { WithSnapshotsOptions } from './active.js';
|
|
3
|
+
export type { SnapshotStrategy, SnapshotMeta, RetentionPolicy } from './strategy.js';
|
|
4
|
+
export type { SnapshotPolicy, SnapshotMode } from './policy.js';
|
|
5
|
+
export { SnapshotNotFoundError } from '../../kernel/errors.js';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Noydb-side snapshot facade.
|
|
3
|
+
*
|
|
4
|
+
* Holds the on-demand checkpoint (`snapshot`), listing (`listSnapshots`),
|
|
5
|
+
* restore (`restoreSnapshot`), the automatic-snapshot cadence wiring
|
|
6
|
+
* (`initCadence`), the dirty-vault set, and the cadence scheduler;
|
|
7
|
+
* `Noydb.close()` calls {@link stop}. Every `Noydb` dependency arrives via
|
|
8
|
+
* {@link NoydbSnapshotsDeps}.
|
|
9
|
+
*
|
|
10
|
+
* Internal service — reached through `noydb.snapshot(...)` etc.
|
|
11
|
+
*/
|
|
12
|
+
import { NO_SNAPSHOTS, type SnapshotStrategy, type SnapshotMeta } from './strategy.js';
|
|
13
|
+
import type { Vault } from '../../kernel/vault.js';
|
|
14
|
+
import type { WriteHook, Unsubscribe } from '../../port/with/write-hooks.js';
|
|
15
|
+
/** Everything the moving snapshot methods touched on the Noydb instance's `this.*`. */
|
|
16
|
+
export interface NoydbSnapshotsDeps {
|
|
17
|
+
/** Resolved snapshot strategy (NO_SNAPSHOTS when not configured). */
|
|
18
|
+
readonly strategy: SnapshotStrategy;
|
|
19
|
+
/** Acting user id, used as the snapshot `by`. */
|
|
20
|
+
readonly user: string;
|
|
21
|
+
/** Whether the owning instance has been closed. */
|
|
22
|
+
isClosed(): boolean;
|
|
23
|
+
/** Resolve an open vault from the instance's vault cache. */
|
|
24
|
+
getVault(name: string): Vault | undefined;
|
|
25
|
+
/** Subscribe to post-write events (cadence dirty-marking). */
|
|
26
|
+
onAfterWrite(handler: WriteHook): Unsubscribe;
|
|
27
|
+
}
|
|
28
|
+
export declare class NoydbSnapshots {
|
|
29
|
+
private readonly deps;
|
|
30
|
+
private scheduler;
|
|
31
|
+
private readonly dirtyVaults;
|
|
32
|
+
constructor(deps: NoydbSnapshotsDeps);
|
|
33
|
+
/**
|
|
34
|
+
* Take an on-demand checkpoint of the given vault.
|
|
35
|
+
* Requires `snapshotStrategy: withSnapshots({ store })` in `createNoydb`.
|
|
36
|
+
* @throws ValidationError when the vault is not open
|
|
37
|
+
*/
|
|
38
|
+
snapshot(vault: string, opts?: {
|
|
39
|
+
label?: string;
|
|
40
|
+
note?: string;
|
|
41
|
+
}): Promise<SnapshotMeta>;
|
|
42
|
+
/**
|
|
43
|
+
* Wire the automatic-snapshot cadence when a non-manual `snapshotPolicy` is
|
|
44
|
+
* configured. Subscribes to `onAfterWrite` to mark the written vault dirty and
|
|
45
|
+
* nudge the scheduler; the scheduler fires `autoSnapshot()` per dirty vault.
|
|
46
|
+
* No-op for `mode:'manual'` or no policy.
|
|
47
|
+
*/
|
|
48
|
+
private initCadence;
|
|
49
|
+
/**
|
|
50
|
+
* List all snapshots for the given vault, newest first.
|
|
51
|
+
* Reads only the sidecar index — does not download snapshot bytes.
|
|
52
|
+
*/
|
|
53
|
+
listSnapshots(vault: string): Promise<SnapshotMeta[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Restore the vault to a previously snapshotted state.
|
|
56
|
+
* Runs `verifyBackupIntegrity()` automatically on restore.
|
|
57
|
+
* @throws SnapshotNotFoundError when `version` doesn't exist in the store
|
|
58
|
+
* @throws ValidationError when the vault is not open
|
|
59
|
+
*/
|
|
60
|
+
restoreSnapshot(vault: string, version: string): Promise<void>;
|
|
61
|
+
/** Stop the cadence scheduler (called from `Noydb.close()`). */
|
|
62
|
+
stop(): void;
|
|
63
|
+
}
|
|
64
|
+
export { NO_SNAPSHOTS };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cadence policy for automatic snapshots. Borrows the vocabulary of the sync
|
|
3
|
+
* `SyncPolicy` (debounce / interval / minInterval / onUnload) but is a separate,
|
|
4
|
+
* snapshot-specific shape — automatic snapshots write the single rolling
|
|
5
|
+
* `<vault>__auto` key, never the immutable on-demand pool.
|
|
6
|
+
*
|
|
7
|
+
* Default mode is `'manual'`: no timers, snapshots stay on-demand.
|
|
8
|
+
*/
|
|
9
|
+
export type SnapshotMode = 'manual' | 'debounce' | 'interval';
|
|
10
|
+
export interface SnapshotPolicy {
|
|
11
|
+
/** Trigger mode. Default `'manual'` — no automatic snapshots. */
|
|
12
|
+
readonly mode?: SnapshotMode;
|
|
13
|
+
/** Idle delay (ms) after a write before an auto-snapshot fires. `mode:'debounce'`. Default 30_000. */
|
|
14
|
+
readonly debounceMs?: number;
|
|
15
|
+
/** Fixed interval (ms). `mode:'interval'`. Default 300_000. */
|
|
16
|
+
readonly intervalMs?: number;
|
|
17
|
+
/** Hard floor (ms) between auto-snapshots regardless of mode. Default 0. */
|
|
18
|
+
readonly minIntervalMs?: number;
|
|
19
|
+
/** Flush a pending auto-snapshot on tab-hide / process exit. Default true for non-manual modes. */
|
|
20
|
+
readonly onUnload?: boolean;
|
|
21
|
+
/** Label applied to each auto-snapshot. Default `'auto'`. */
|
|
22
|
+
readonly label?: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns timers + unload hooks for the automatic snapshot cadence. Distinct from
|
|
3
|
+
* the sync `SyncScheduler` (whose push/pull/dirty-count shape doesn't map to
|
|
4
|
+
* snapshots) — it borrows only the policy vocabulary. Delegates the actual
|
|
5
|
+
* snapshot work to `callbacks.fire()`.
|
|
6
|
+
*/
|
|
7
|
+
import type { SnapshotPolicy } from './policy.js';
|
|
8
|
+
export interface SnapshotSchedulerCallbacks {
|
|
9
|
+
/** Fire one auto-snapshot cycle (per dirty vault). Swallows its own per-vault errors. */
|
|
10
|
+
fire(): Promise<void>;
|
|
11
|
+
/** Number of vaults with pending writes since the last fire. */
|
|
12
|
+
pendingCount(): number;
|
|
13
|
+
}
|
|
14
|
+
export declare class SnapshotScheduler {
|
|
15
|
+
private readonly policy;
|
|
16
|
+
private readonly callbacks;
|
|
17
|
+
private debounceTimer;
|
|
18
|
+
private intervalTimer;
|
|
19
|
+
private lastFireTime;
|
|
20
|
+
private firing;
|
|
21
|
+
private started;
|
|
22
|
+
private readonly boundVisibility;
|
|
23
|
+
private readonly boundUnload;
|
|
24
|
+
constructor(policy: SnapshotPolicy, callbacks: SnapshotSchedulerCallbacks);
|
|
25
|
+
start(): void;
|
|
26
|
+
stop(): void;
|
|
27
|
+
notifyChange(): void;
|
|
28
|
+
private resetDebounce;
|
|
29
|
+
private execFire;
|
|
30
|
+
private handleVisibility;
|
|
31
|
+
private handleUnload;
|
|
32
|
+
private flush;
|
|
33
|
+
private shouldRegisterUnload;
|
|
34
|
+
}
|