@noy-db/hub 0.3.0-pre.9 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aggregate/index.js +5 -5
- package/dist/api-ZGS6LCOF.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +18 -18
- package/dist/backup-BJ57IKAO.js +242 -0
- package/dist/backup-BJ57IKAO.js.map +1 -0
- package/dist/blobs/index.js +13 -11
- package/dist/blobs/index.js.map +1 -1
- package/dist/broker/index.js +92 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/bundle/index.js +25 -22
- package/dist/bundle/index.js.map +1 -1
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +31 -32
- package/dist/chunk-2NVOWNI3.js +167 -0
- package/dist/chunk-2NVOWNI3.js.map +1 -0
- package/dist/chunk-3B5VVCNY.js +71 -0
- package/dist/chunk-3LQ2YKO4.js +230 -0
- package/dist/chunk-3QCRBHCY.js +54 -0
- package/dist/chunk-454JXE57.js +1697 -0
- package/dist/chunk-454JXE57.js.map +1 -0
- package/dist/chunk-4CTHCN4J.js +480 -0
- package/dist/chunk-4CTHCN4J.js.map +1 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-4JBYV75E.js +150 -0
- package/dist/chunk-4NXKCLLQ.js +97 -0
- package/dist/chunk-4VNQOLML.js +29 -0
- package/dist/chunk-4VNQOLML.js.map +1 -0
- package/dist/chunk-5M5DVGV7.js +69 -0
- package/dist/chunk-5O3XF4DV.js +150 -0
- package/dist/chunk-5O3XF4DV.js.map +1 -0
- package/dist/chunk-5YOLBEQ6.js +30 -0
- package/dist/chunk-6CRIV7DE.js +129 -0
- package/dist/chunk-6JTIAGHD.js +621 -0
- package/dist/chunk-6JTIAGHD.js.map +1 -0
- package/dist/chunk-6QTNZJBS.js +255 -0
- package/dist/chunk-6T2SCQRU.js +86 -0
- package/dist/chunk-7DSTRQIJ.js +45 -0
- package/dist/chunk-AUSTCW2X.js +589 -0
- package/dist/chunk-B3HJYUOF.js +209 -0
- package/dist/chunk-BDVFPG6Y.js +164 -0
- package/dist/chunk-BIOUI4HL.js +1554 -0
- package/dist/chunk-BIOUI4HL.js.map +1 -0
- package/dist/chunk-CAF6WOK7.js +36 -0
- package/dist/chunk-CDUQTA3Z.js +381 -0
- package/dist/chunk-CDUQTA3Z.js.map +1 -0
- package/dist/chunk-CIE2BASH.js +404 -0
- package/dist/chunk-CRI4OUV4.js +42 -0
- package/dist/chunk-DLG74CNB.js +91 -0
- package/dist/chunk-E5ZQT5KX.js +30 -0
- package/dist/chunk-E5ZQT5KX.js.map +1 -0
- package/dist/chunk-EQO2UVP4.js +247 -0
- package/dist/chunk-EQO2UVP4.js.map +1 -0
- package/dist/chunk-ERJ7FU55.js +367 -0
- package/dist/chunk-EVVGJDRQ.js +205 -0
- package/dist/chunk-EVX47VBM.js +74 -0
- package/dist/chunk-EVX47VBM.js.map +1 -0
- package/dist/chunk-EXK7QRWF.js +59 -0
- package/dist/chunk-EYZ6IQ6X.js +202 -0
- package/dist/chunk-F64IRYG3.js +45 -0
- package/dist/chunk-FHS2HQSH.js +823 -0
- package/dist/chunk-FM3G3NOY.js +206 -0
- package/dist/chunk-FM3G3NOY.js.map +1 -0
- package/dist/chunk-FUG4SFN3.js +36 -0
- package/dist/chunk-FUG4SFN3.js.map +1 -0
- package/dist/chunk-GKEWXIV5.js +80 -0
- package/dist/chunk-GTGPO5KW.js +59 -0
- package/dist/chunk-HB3RFQSC.js +95 -0
- package/dist/chunk-HDMEGAQE.js +957 -0
- package/dist/chunk-HDMEGAQE.js.map +1 -0
- package/dist/chunk-HDQIIUPH.js +135 -0
- package/dist/chunk-HDQIIUPH.js.map +1 -0
- package/dist/chunk-HTJQYHZP.js +344 -0
- package/dist/chunk-HTJQYHZP.js.map +1 -0
- package/dist/chunk-I6GALP6E.js +99 -0
- package/dist/chunk-IGJCYUT5.js +99 -0
- package/dist/chunk-IGJCYUT5.js.map +1 -0
- package/dist/chunk-IL6POWCW.js +130 -0
- package/dist/chunk-IU6SNYX6.js +117 -0
- package/dist/chunk-J2ZX2XUV.js +778 -0
- package/dist/chunk-JIF24JPM.js +495 -0
- package/dist/chunk-JIF24JPM.js.map +1 -0
- package/dist/chunk-JK733I5V.js +23 -0
- package/dist/chunk-JK733I5V.js.map +1 -0
- package/dist/chunk-JKJOGPZN.js +29 -0
- package/dist/chunk-JNAI2HN2.js +32 -0
- package/dist/chunk-JNAI2HN2.js.map +1 -0
- package/dist/chunk-JZUV47FZ.js +41 -0
- package/dist/chunk-K5IMOGHB.js +30 -0
- package/dist/chunk-KPZS5QAQ.js +151 -0
- package/dist/chunk-KPZS5QAQ.js.map +1 -0
- package/dist/chunk-KSKBRKGJ.js +291 -0
- package/dist/chunk-KSKBRKGJ.js.map +1 -0
- package/dist/chunk-LASZKVMO.js +382 -0
- package/dist/chunk-LXEXBTKL.js +515 -0
- package/dist/chunk-LXEXBTKL.js.map +1 -0
- package/dist/chunk-M4CV6BRT.js +524 -0
- package/dist/chunk-M4CV6BRT.js.map +1 -0
- package/dist/chunk-MEFJPTZ4.js +371 -0
- package/dist/chunk-MEFJPTZ4.js.map +1 -0
- package/dist/chunk-MV43JSJF.js +265 -0
- package/dist/chunk-MV43JSJF.js.map +1 -0
- package/dist/chunk-NJ4EOKMB.js +392 -0
- package/dist/chunk-NJ4EOKMB.js.map +1 -0
- package/dist/chunk-NR5LT5RY.js +135 -0
- package/dist/chunk-NWSGI5C7.js +261 -0
- package/dist/chunk-OSDB5WW3.js +739 -0
- package/dist/chunk-OSDB5WW3.js.map +1 -0
- package/dist/chunk-PN2XMATY.js +37 -0
- package/dist/chunk-PN2XMATY.js.map +1 -0
- package/dist/chunk-Q5VNKNE5.js +70 -0
- package/dist/chunk-QLWMEXCT.js +21 -0
- package/dist/chunk-QRB7NAOJ.js +123 -0
- package/dist/chunk-R4ROFEYC.js +74 -0
- package/dist/chunk-RCVJZMFE.js +164 -0
- package/dist/chunk-RCVJZMFE.js.map +1 -0
- package/dist/chunk-RIX4V2TB.js +367 -0
- package/dist/chunk-RYCTDFUX.js +40 -0
- package/dist/chunk-RZ5SVOYR.js +155 -0
- package/dist/chunk-SLFHQTTW.js +99 -0
- package/dist/chunk-SNZ6URZZ.js +2782 -0
- package/dist/chunk-SNZ6URZZ.js.map +1 -0
- package/dist/chunk-T2FFWNPK.js +75 -0
- package/dist/chunk-UNFPPVNI.js +23 -0
- package/dist/chunk-VFUPHI2Z.js +333 -0
- package/dist/chunk-VFUPHI2Z.js.map +1 -0
- package/dist/chunk-VLFCJYTL.js +235 -0
- package/dist/chunk-VN3DBQAU.js +124 -0
- package/dist/chunk-VYYM3MEN.js +98 -0
- package/dist/chunk-VYYM3MEN.js.map +1 -0
- package/dist/chunk-VZRODIM3.js +49 -0
- package/dist/chunk-W22IKJE2.js +94 -0
- package/dist/chunk-X3YYQWOQ.js +155 -0
- package/dist/chunk-X7QBD67R.js +14405 -0
- package/dist/chunk-X7QBD67R.js.map +1 -0
- package/dist/chunk-XDYREZWE.js +1128 -0
- package/dist/chunk-XDYREZWE.js.map +1 -0
- package/dist/chunk-XWZVFISC.js +720 -0
- package/dist/chunk-XWZVFISC.js.map +1 -0
- package/dist/chunk-YFXZEAYK.js +85 -0
- package/dist/chunk-ZAJAVEXY.js +50 -0
- package/dist/chunk-ZICD77GM.js +34 -0
- package/dist/chunk-ZJ2AK4V7.js +38 -0
- package/dist/chunk-ZUODRVHY.js +14 -0
- package/dist/classified/index.js +5 -5
- package/dist/classified-marker-CZKA6ITE.js +28 -0
- package/dist/classified-marker-CZKA6ITE.js.map +1 -0
- package/dist/collection-facade-TLWIPI76.js +44 -0
- package/dist/computed-ZIQTYTDI.js +11 -0
- package/dist/consent/index.js +9 -9
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-ESOBZZP5.js +28 -0
- package/dist/delegation-W7ZV2322.js +25 -0
- package/dist/derivations/index.js +12 -12
- package/dist/derive-H2BJTLUI.js +21 -0
- package/dist/enclave-AP3I5W7O.js +141 -0
- package/dist/executor-KGWTNEQD.js +9 -0
- package/dist/executor-OVEXR6RT.js +9 -0
- package/dist/executor-UNEH5ZYH.js +25 -0
- package/dist/export-accessible-PCMXSUZS.js +23 -0
- package/dist/extract-partition-SWHFSYJO.js +38 -0
- package/dist/fanout-sidecar-A765THMX.js +74 -0
- package/dist/find-N6345CNT.js +11 -0
- package/dist/forget/index.js +10 -10
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +6 -6
- package/dist/history/index.js +14 -11
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +21 -19
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +307 -1493
- package/dist/index.js +309 -190
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +7 -7
- package/dist/indexing/index.js.map +1 -1
- package/dist/issue-5OKB6I2R.js +19 -0
- package/dist/kernel/best-effort-revert.d.ts +52 -0
- package/dist/kernel/cache/index.d.ts +10 -0
- package/dist/kernel/cache/lru.d.ts +97 -0
- package/dist/kernel/cache/policy.d.ts +32 -0
- package/dist/kernel/collection-config.d.ts +809 -0
- package/dist/kernel/collection.d.ts +1522 -0
- package/dist/kernel/constants.d.ts +18 -0
- package/dist/kernel/debug.d.ts +25 -0
- package/dist/kernel/enclave/broker/proof.d.ts +154 -0
- package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
- package/dist/kernel/enclave/classify/compare.d.ts +10 -0
- package/dist/kernel/enclave/classify/digest.d.ts +8 -0
- package/dist/kernel/enclave/classify/find.d.ts +36 -0
- package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
- package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
- package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
- package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
- package/dist/kernel/enclave/classify/verify.d.ts +36 -0
- package/dist/kernel/enclave/classify/write.d.ts +8 -0
- package/dist/kernel/enclave/crypto.d.ts +263 -0
- package/dist/kernel/enclave/index.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/deterministic.d.ts +55 -0
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/lifecycle.d.ts +107 -0
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +328 -0
- package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
- package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
- package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
- package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
- package/dist/kernel/env-check.d.ts +1 -0
- package/dist/kernel/errors.d.ts +1922 -0
- package/dist/kernel/events.d.ts +11 -0
- package/dist/kernel/lazy-count.d.ts +13 -0
- package/dist/kernel/memory-store.d.ts +17 -0
- package/dist/kernel/mutation.d.ts +14 -0
- package/dist/kernel/noydb.d.ts +826 -0
- package/dist/kernel/paths.d.ts +25 -0
- package/dist/kernel/query/builder.d.ts +520 -0
- package/dist/kernel/query/index.d.ts +31 -0
- package/dist/kernel/query/join.d.ts +205 -0
- package/dist/kernel/query/live.d.ts +111 -0
- package/dist/kernel/query/predicate.d.ts +139 -0
- package/dist/kernel/query/scan-builder.d.ts +334 -0
- package/dist/kernel/refs.d.ts +205 -0
- package/dist/kernel/schema.d.ts +134 -0
- package/dist/kernel/sync-policy.d.ts +188 -0
- package/dist/kernel/tier-visibility.d.ts +54 -0
- package/dist/kernel/types.d.ts +3239 -0
- package/dist/kernel/util/discriminant.d.ts +58 -0
- package/dist/kernel/util/index.d.ts +14 -0
- package/dist/kernel/util/sanitize-filename.d.ts +75 -0
- package/dist/kernel/validation.d.ts +130 -0
- package/dist/kernel/vault.d.ts +1740 -0
- package/dist/kernel/via/compose.d.ts +144 -0
- package/dist/kernel/via/dispatch.d.ts +195 -0
- package/dist/kernel/via/graph-wiring.d.ts +145 -0
- package/dist/kernel/via/graph.d.ts +166 -0
- package/dist/kernel/via/index.d.ts +200 -0
- package/dist/kernel/via/pipeline.d.ts +266 -0
- package/dist/kernel/via/reconcile.d.ts +153 -0
- package/dist/kernel/via/taint-binding.d.ts +66 -0
- package/dist/kernel/write-queue.d.ts +46 -0
- package/dist/ledger-GFBKVPV4.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-3VDOT4KO.js +24 -0
- package/dist/link-set-Z7Q2ASFX.js +31 -0
- package/dist/materialized-views/index.js +19 -17
- package/dist/noydb-ZCJOYBDI.js +68 -0
- package/dist/on/index.js +9 -9
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +12 -12
- package/dist/pod/index.js +11 -11
- package/dist/policy-Z3RUAIY2.js +41 -0
- package/dist/port/as/index.d.ts +26 -0
- package/dist/port/at/index.d.ts +18 -0
- package/dist/port/by/default-provider.d.ts +9 -0
- package/dist/port/by/index.d.ts +17 -0
- package/dist/port/by/types.d.ts +86 -0
- package/dist/port/in/index.d.ts +21 -0
- package/dist/port/on/index.d.ts +27 -0
- package/dist/port/to/index.d.ts +19 -0
- package/dist/port/ui/index.d.ts +21 -0
- package/dist/port/with/blob-strategy.d.ts +98 -0
- package/dist/port/with/broker-strategy.d.ts +84 -0
- package/dist/port/with/capabilities.d.ts +31 -0
- package/dist/port/with/classified-marker.d.ts +9 -0
- package/dist/port/with/classified-strategy.d.ts +62 -0
- package/dist/port/with/computed-strategy.d.ts +19 -0
- package/dist/port/with/i18n-strategy.d.ts +175 -0
- package/dist/port/with/index.d.ts +18 -0
- package/dist/port/with/lazy-strategy.d.ts +48 -0
- package/dist/port/with/lookup-strategy.d.ts +129 -0
- package/dist/port/with/service-bus.d.ts +156 -0
- package/dist/port/with/team-strategy.d.ts +36 -0
- package/dist/port/with/write-hooks.d.ts +34 -0
- package/dist/portability/index.js +8 -8
- package/dist/post-register-JTH76BLY.js +60 -0
- package/dist/post-register-JTH76BLY.js.map +1 -0
- package/dist/public-envelope-B4KNWVUA.js +32 -0
- package/dist/purge-scope-FGNNLWHD.js +24 -0
- package/dist/purge-scope-FGNNLWHD.js.map +1 -0
- package/dist/query/index.js +7 -7
- package/dist/read-only-facade-CHCKSEPD.js +8 -0
- package/dist/register-VAHONCID.js +23 -0
- package/dist/registry-7MLVD3VO.js +19 -0
- package/dist/registry-EPKPD5SM.js +18 -0
- package/dist/registry-P5T7PS2U.js +9 -0
- package/dist/request-withdrawal-TI3A5WPS.js +31 -0
- package/dist/reveal-DIBHLUZX.js +38 -0
- package/dist/reveal-DIBHLUZX.js.map +1 -0
- package/dist/revoke-FDRD6GRW.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/seed-Q6M2IZFL.js +231 -0
- package/dist/seed-Q6M2IZFL.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-MUWEIUI6.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/stale-OSQ7J3AA.js +29 -0
- package/dist/storage-MVFCGEQE.js +23 -0
- package/dist/store-coordination-provider-64OEZFGS.js +142 -0
- package/dist/sync/index.js +9 -9
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +14 -10
- package/dist/to/index.js +1 -2
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-ZASTRNPR.js +140 -0
- package/dist/verify-ZASTRNPR.js.map +1 -0
- package/dist/via/blob/active.d.ts +34 -0
- package/dist/via/blob/binding.d.ts +86 -0
- package/dist/via/blob/index.d.ts +34 -0
- package/dist/via/classified/active.d.ts +3 -0
- package/dist/via/classified/binding.d.ts +83 -0
- package/dist/via/classified/config-drift.d.ts +34 -0
- package/dist/via/classified/descriptor.d.ts +66 -0
- package/dist/via/classified/errors.d.ts +19 -0
- package/dist/via/classified/guards.d.ts +23 -0
- package/dist/via/classified/index.d.ts +11 -0
- package/dist/via/classified/presets.d.ts +65 -0
- package/dist/via/classified/resolve.d.ts +9 -0
- package/dist/via/classified/strategy.d.ts +11 -0
- package/dist/via/classified/validators.d.ts +3 -0
- package/dist/via/classified/write.d.ts +4 -0
- package/dist/via/computed/binding.d.ts +34 -0
- package/dist/via/computed/descriptor.d.ts +35 -0
- package/dist/via/i18n/active.d.ts +28 -0
- package/dist/via/i18n/binding.d.ts +36 -0
- package/dist/via/i18n/core.d.ts +267 -0
- package/dist/via/i18n/densify.d.ts +24 -0
- package/dist/via/i18n/dictionary.d.ts +200 -0
- package/dist/via/i18n/index.d.ts +21 -0
- package/dist/via/i18n/policy.d.ts +44 -0
- package/dist/via/i18n/script.d.ts +26 -0
- package/dist/via/i18n/strategy.d.ts +13 -0
- package/dist/via/lookup/active.d.ts +19 -0
- package/dist/via/lookup/binding.d.ts +99 -0
- package/dist/via/lookup/descriptor.d.ts +123 -0
- package/dist/via/lookup/handle.d.ts +220 -0
- package/dist/via/lookup/index.d.ts +17 -0
- package/dist/via/lookup/registry.d.ts +228 -0
- package/dist/via/lookup/snapshot.d.ts +67 -0
- package/dist/via/money/arith.d.ts +68 -0
- package/dist/via/money/binding.d.ts +21 -0
- package/dist/via/money/branded.d.ts +61 -0
- package/dist/via/money/descriptor.d.ts +73 -0
- package/dist/via/money/fixed-point.d.ts +51 -0
- package/dist/via/money/index.d.ts +15 -0
- package/dist/via/money/iso4217.d.ts +6 -0
- package/dist/via/money/money-reducer.d.ts +33 -0
- package/dist/via/money/normalize.d.ts +105 -0
- package/dist/via/money/paths.d.ts +61 -0
- package/dist/via/money/where.d.ts +127 -0
- package/dist/walk-SVNDIZ62.js +241 -0
- package/dist/with/index.js +11 -11
- package/dist/with-audit/attestation/active.d.ts +10 -0
- package/dist/with-audit/attestation/index.d.ts +16 -0
- package/dist/with-audit/attestation/issue.d.ts +29 -0
- package/dist/with-audit/attestation/revoke.d.ts +15 -0
- package/dist/with-audit/attestation/signer.d.ts +33 -0
- package/dist/with-audit/attestation/strategy.d.ts +44 -0
- package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
- package/dist/with-audit/consent/active.d.ts +14 -0
- package/dist/with-audit/consent/consent.d.ts +114 -0
- package/dist/with-audit/consent/index.d.ts +14 -0
- package/dist/with-audit/consent/strategy.d.ts +36 -0
- package/dist/with-audit/forget/active.d.ts +31 -0
- package/dist/with-audit/forget/index.d.ts +28 -0
- package/dist/with-audit/forget/purge-scope.d.ts +54 -0
- package/dist/with-audit/forget/strategy.d.ts +199 -0
- package/dist/with-audit/forget/subject-index.d.ts +83 -0
- package/dist/with-audit/guards/executor.d.ts +26 -0
- package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
- package/dist/with-audit/guards/index.d.ts +10 -0
- package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
- package/dist/with-audit/guards/registry.d.ts +83 -0
- package/dist/with-audit/guards/transition-guard.d.ts +82 -0
- package/dist/with-audit/guards/types.d.ts +134 -0
- package/dist/with-audit/guards/with-guard.d.ts +15 -0
- package/dist/with-audit/periods/active.d.ts +11 -0
- package/dist/with-audit/periods/index.d.ts +18 -0
- package/dist/with-audit/periods/periods.d.ts +417 -0
- package/dist/with-audit/periods/strategy.d.ts +32 -0
- package/dist/with-audit/periods/vault-facade.d.ts +95 -0
- package/dist/with-audit/portability/active.d.ts +11 -0
- package/dist/with-audit/portability/export-accessible.d.ts +46 -0
- package/dist/with-audit/portability/index.d.ts +18 -0
- package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
- package/dist/with-audit/portability/strategy.d.ts +31 -0
- package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
- package/dist/with-audit/sealed-record/active.d.ts +9 -0
- package/dist/with-audit/sealed-record/index.d.ts +55 -0
- package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
- package/dist/with-audit/sealed-record/types.d.ts +27 -0
- package/dist/with-audit/tiers/active.d.ts +9 -0
- package/dist/with-audit/tiers/index.d.ts +394 -0
- package/dist/with-audit/tiers/strategy.d.ts +36 -0
- package/dist/with-cargo/active.d.ts +11 -0
- package/dist/with-cargo/adopt-partition.d.ts +81 -0
- package/dist/with-cargo/decrypt-partition.d.ts +19 -0
- package/dist/with-cargo/describe-extraction.d.ts +41 -0
- package/dist/with-cargo/extract-partition.d.ts +155 -0
- package/dist/with-cargo/index.d.ts +33 -0
- package/dist/with-cargo/strategy.d.ts +30 -0
- package/dist/with-cargo/vault-diff.d.ts +144 -0
- package/dist/with-cargo/walk-closure.d.ts +67 -0
- package/dist/with-commit/crdt/active.d.ts +25 -0
- package/dist/with-commit/crdt/crdt.d.ts +42 -0
- package/dist/with-commit/crdt/index.d.ts +16 -0
- package/dist/with-commit/crdt/strategy.d.ts +25 -0
- package/dist/with-commit/history/active.d.ts +40 -0
- package/dist/with-commit/history/diff.d.ts +23 -0
- package/dist/with-commit/history/history.d.ts +73 -0
- package/dist/with-commit/history/index.d.ts +30 -0
- package/dist/with-commit/history/ledger/constants.d.ts +37 -0
- package/dist/with-commit/history/ledger/entry.d.ts +195 -0
- package/dist/with-commit/history/ledger/hash.d.ts +30 -0
- package/dist/with-commit/history/ledger/index.d.ts +19 -0
- package/dist/with-commit/history/ledger/patch.d.ts +99 -0
- package/dist/with-commit/history/ledger/store.d.ts +356 -0
- package/dist/with-commit/history/strategy.d.ts +136 -0
- package/dist/with-commit/history/time-machine.d.ts +202 -0
- package/dist/with-commit/numbering/descriptor.d.ts +27 -0
- package/dist/with-commit/numbering/index.d.ts +69 -0
- package/dist/with-commit/sequence/active.d.ts +10 -0
- package/dist/with-commit/sequence/index.d.ts +150 -0
- package/dist/with-commit/sequence/strategy.d.ts +26 -0
- package/dist/with-commit/tx/active.d.ts +27 -0
- package/dist/with-commit/tx/dry-run.d.ts +29 -0
- package/dist/with-commit/tx/elevated-handle.d.ts +59 -0
- package/dist/with-commit/tx/index.d.ts +13 -0
- package/dist/with-commit/tx/invariants.d.ts +68 -0
- package/dist/with-commit/tx/strategy.d.ts +23 -0
- package/dist/with-commit/tx/transaction.d.ts +212 -0
- package/dist/with-fork/archive/engine.d.ts +71 -0
- package/dist/with-fork/archive/index.d.ts +23 -0
- package/dist/with-fork/shadow/active.d.ts +6 -0
- package/dist/with-fork/shadow/index.d.ts +14 -0
- package/dist/with-fork/shadow/strategy.d.ts +28 -0
- package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
- package/dist/with-fork/snapshots/active.d.ts +20 -0
- package/dist/with-fork/snapshots/engine.d.ts +36 -0
- package/dist/with-fork/snapshots/index.d.ts +5 -0
- package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
- package/dist/with-fork/snapshots/policy.d.ts +23 -0
- package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
- package/dist/with-fork/snapshots/strategy.d.ts +48 -0
- package/dist/with-formula/computed/index.d.ts +48 -0
- package/dist/with-formula/computed/lazy.d.ts +13 -0
- package/dist/with-formula/derivations/executor.d.ts +61 -0
- package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
- package/dist/with-formula/derivations/index.d.ts +6 -0
- package/dist/with-formula/derivations/registry.d.ts +67 -0
- package/dist/with-formula/derivations/stale.d.ts +39 -0
- package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
- package/dist/with-formula/derivations/types.d.ts +248 -0
- package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
- package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
- package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +58 -0
- package/dist/with-formula/materialized-views/executor.d.ts +80 -0
- package/dist/with-formula/materialized-views/index.d.ts +11 -0
- package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
- package/dist/with-formula/materialized-views/registry.d.ts +99 -0
- package/dist/with-formula/materialized-views/stale.d.ts +113 -0
- package/dist/with-formula/materialized-views/types.d.ts +318 -0
- package/dist/with-formula/materialized-views/with-materialized-view.d.ts +24 -0
- package/dist/with-formula/overlay-views/index.d.ts +5 -0
- package/dist/with-formula/overlay-views/registry.d.ts +42 -0
- package/dist/with-formula/overlay-views/types.d.ts +97 -0
- package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
- package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
- package/dist/with-lookup/aggregate/active.d.ts +33 -0
- package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
- package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
- package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
- package/dist/with-lookup/aggregate/index.d.ts +23 -0
- package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
- package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
- package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
- package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
- package/dist/with-lookup/embeddings/index.d.ts +4 -0
- package/dist/with-lookup/embeddings/vec-id.d.ts +47 -0
- package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
- package/dist/with-lookup/indexing/active.d.ts +30 -0
- package/dist/with-lookup/indexing/collection-facade.d.ts +157 -0
- package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
- package/dist/with-lookup/indexing/index.d.ts +27 -0
- package/dist/with-lookup/indexing/lazy-builder.d.ts +102 -0
- package/dist/with-lookup/indexing/persisted-indexes.d.ts +229 -0
- package/dist/with-lookup/indexing/strategy.d.ts +56 -0
- package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
- package/dist/with-lookup/search/active.d.ts +10 -0
- package/dist/with-lookup/search/build-docs.d.ts +15 -0
- package/dist/with-lookup/search/collection-facade.d.ts +163 -0
- package/dist/with-lookup/search/fuse.d.ts +22 -0
- package/dist/with-lookup/search/index-store.d.ts +19 -0
- package/dist/with-lookup/search/index.d.ts +19 -0
- package/dist/with-lookup/search/inverted-index.d.ts +47 -0
- package/dist/with-lookup/search/persisted-index-store.d.ts +121 -0
- package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
- package/dist/with-lookup/search/scan.d.ts +28 -0
- package/dist/with-lookup/search/segment.d.ts +15 -0
- package/dist/with-lookup/search/serialize.d.ts +4 -0
- package/dist/with-lookup/search/snippet.d.ts +5 -0
- package/dist/with-lookup/search/strategy.d.ts +41 -0
- package/dist/with-lookup/search/tokenize.d.ts +12 -0
- package/dist/with-party/auth-introspection/index.d.ts +44 -0
- package/dist/with-party/broker/active.d.ts +23 -0
- package/dist/with-party/broker/index.d.ts +28 -0
- package/dist/with-party/broker/seed.d.ts +77 -0
- package/dist/with-party/custody/active.d.ts +10 -0
- package/dist/with-party/custody/index.d.ts +69 -0
- package/dist/with-party/custody/liberate.d.ts +64 -0
- package/dist/with-party/custody/strategy.d.ts +48 -0
- package/dist/with-party/directory/index.d.ts +11 -0
- package/dist/with-party/directory/public-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/public-envelope/schema.d.ts +24 -0
- package/dist/with-party/directory/public-envelope/storage.d.ts +59 -0
- package/dist/with-party/directory/public-envelope/types.d.ts +80 -0
- package/dist/with-party/directory/storage.d.ts +33 -0
- package/dist/with-party/directory/types.d.ts +43 -0
- package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
- package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
- package/dist/with-party/directory/visibility.d.ts +47 -0
- package/dist/with-party/policy/engine.d.ts +60 -0
- package/dist/with-party/policy/index.d.ts +15 -0
- package/dist/with-party/policy/noydb-facade.d.ts +39 -0
- package/dist/with-party/policy/presets.d.ts +38 -0
- package/dist/with-party/policy/storage.d.ts +31 -0
- package/dist/with-party/session/active.d.ts +34 -0
- package/dist/with-party/session/dev-unlock.d.ts +128 -0
- package/dist/with-party/session/index.d.ts +23 -0
- package/dist/with-party/session/session-policy.d.ts +92 -0
- package/dist/with-party/session/session.d.ts +131 -0
- package/dist/with-party/session/strategy.d.ts +42 -0
- package/dist/with-party/session/unlock-state.d.ts +47 -0
- package/dist/with-party/sync/index.d.ts +31 -0
- package/dist/with-party/tab-coordination.d.ts +73 -0
- package/dist/with-party/tab-write-relay.d.ts +39 -0
- package/dist/with-party/team/active.d.ts +13 -0
- package/dist/with-party/team/authenticators.d.ts +95 -0
- package/dist/with-party/team/deed.d.ts +97 -0
- package/dist/with-party/team/delegation.d.ts +88 -0
- package/dist/with-party/team/index.d.ts +38 -0
- package/dist/with-party/team/keyring.d.ts +318 -0
- package/dist/with-party/team/magic-link-grant.d.ts +152 -0
- package/dist/with-party/team/managed-passphrase.d.ts +280 -0
- package/dist/with-party/team/noydb-facade.d.ts +484 -0
- package/dist/with-party/team/peer-recover.d.ts +81 -0
- package/dist/with-party/team/presence.d.ts +81 -0
- package/dist/with-party/team/recovery.d.ts +191 -0
- package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
- package/dist/with-party/team/rotate-recover.d.ts +275 -0
- package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
- package/dist/with-party/team/strategy.d.ts +9 -0
- package/dist/with-party/team/sync-active.d.ts +33 -0
- package/dist/with-party/team/sync-credentials.d.ts +113 -0
- package/dist/with-party/team/sync-strategy.d.ts +67 -0
- package/dist/with-party/team/sync-transaction.d.ts +39 -0
- package/dist/with-party/team/sync.d.ts +174 -0
- package/dist/with-party/team/tiers.d.ts +39 -0
- package/dist/with-party/team/wrapped-deks.d.ts +86 -0
- package/dist/with-pod/backup.d.ts +74 -0
- package/dist/with-pod/bundle.d.ts +414 -0
- package/dist/with-pod/format.d.ts +203 -0
- package/dist/with-pod/index.d.ts +20 -0
- package/dist/with-pod/pod-store.d.ts +54 -0
- package/dist/with-pod/ulid.d.ts +64 -0
- package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
- package/dist/with-shape/blobs/blob-intent.d.ts +153 -0
- package/dist/with-shape/blobs/blob-set.d.ts +1286 -0
- package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
- package/dist/with-shape/blobs/import-external.d.ts +50 -0
- package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
- package/dist/with-shape/blobs/object-projection.d.ts +70 -0
- package/dist/with-shape/introspection/describe.d.ts +237 -0
- package/dist/with-shape/introspection/field-meta.d.ts +61 -0
- package/dist/with-shape/introspection/fields.d.ts +14 -0
- package/dist/with-shape/introspection/index.d.ts +12 -0
- package/dist/with-shape/introspection/json-schema.d.ts +13 -0
- package/dist/with-shape/introspection/meta.d.ts +22 -0
- package/dist/with-shape/introspection/projection.d.ts +13 -0
- package/dist/with-shape/introspection/types.d.ts +154 -0
- package/dist/with-shape/introspection/walk.d.ts +50 -0
- package/dist/with-shape/links/lazy-handle.d.ts +36 -0
- package/dist/with-shape/links/link-set.d.ts +67 -0
- package/dist/with-shape/links/names.d.ts +65 -0
- package/dist/with-shape/links/vault-facade.d.ts +211 -0
- package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
- package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
- package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
- package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
- package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
- package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
- package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
- package/dist/with-shape/satellites/declare.d.ts +60 -0
- package/dist/with-shape/satellites/existence.d.ts +5 -0
- package/dist/with-shape/satellites/fanout.d.ts +38 -0
- package/dist/with-shape/satellites/forget.d.ts +47 -0
- package/dist/with-shape/satellites/index.d.ts +3 -0
- package/dist/with-shape/satellites/joined.d.ts +19 -0
- package/dist/with-shape/satellites/marker.d.ts +10 -0
- package/dist/with-shape/satellites/migrate-cek.d.ts +26 -0
- package/dist/with-shape/satellites/post-register.d.ts +6 -0
- package/dist/with-shape/satellites/proxy.d.ts +37 -0
- package/dist/with-shape/satellites/raw-target.d.ts +14 -0
- package/dist/with-shape/satellites/registry.d.ts +19 -0
- package/dist/with-shape/satellites/types.d.ts +37 -0
- package/dist/with-shape/satellites/validate.d.ts +17 -0
- package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
- package/dist/with-shape/schema-update/cutover.d.ts +5 -0
- package/dist/with-shape/schema-update/delta.d.ts +2 -0
- package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
- package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
- package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
- package/dist/with-shape/schema-update/fence.d.ts +15 -0
- package/dist/with-shape/schema-update/gate.d.ts +16 -0
- package/dist/with-shape/schema-update/index.d.ts +6 -0
- package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
- package/dist/with-shape/schema-update/strategies.d.ts +12 -0
- package/dist/with-shape/schema-update/types.d.ts +53 -0
- package/dist/with-store/index.d.ts +15 -0
- package/dist/with-store/lazy/active.d.ts +12 -0
- package/dist/with-store/lazy/index.d.ts +14 -0
- package/dist/with-store/lazy/strategy.d.ts +9 -0
- package/dist/with-store/route-store.d.ts +259 -0
- package/dist/with-store/store-middleware.d.ts +189 -0
- package/dist/withdraw-accessible-WZIEVWSR.js +28 -0
- package/package.json +47 -55
- package/dist/adapter/index.d.ts +0 -4
- package/dist/adapter/index.js +0 -15
- package/dist/aggregate/index.d.ts +0 -41
- package/dist/api-HV4PDUWF.js +0 -20
- package/dist/as/index.d.ts +0 -6
- package/dist/at/index.d.ts +0 -4
- package/dist/attestation/index.d.ts +0 -19
- package/dist/backup-ODXO7OGA.js +0 -225
- package/dist/backup-ODXO7OGA.js.map +0 -1
- package/dist/blobs/index.d.ts +0 -43
- package/dist/bundle/index.d.ts +0 -121
- package/dist/bundle-DlSxo31R.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -8
- package/dist/chunk-2644KEGW.js +0 -247
- package/dist/chunk-2644KEGW.js.map +0 -1
- package/dist/chunk-2HVUKRNE.js +0 -21
- package/dist/chunk-2KOSJTMU.js +0 -69
- package/dist/chunk-2UQ4RMHV.js +0 -167
- package/dist/chunk-2UQ4RMHV.js.map +0 -1
- package/dist/chunk-2XE6LIXT.js +0 -515
- package/dist/chunk-2XE6LIXT.js.map +0 -1
- package/dist/chunk-34RRRIC3.js +0 -71
- package/dist/chunk-3C5CKXFI.js +0 -621
- package/dist/chunk-3C5CKXFI.js.map +0 -1
- package/dist/chunk-3I4KYWNP.js +0 -30
- package/dist/chunk-42KVY3OC.js +0 -86
- package/dist/chunk-4C4WBS4V.js +0 -13822
- package/dist/chunk-4C4WBS4V.js.map +0 -1
- package/dist/chunk-4G3IT7J7.js +0 -280
- package/dist/chunk-4G3IT7J7.js.map +0 -1
- package/dist/chunk-4RQ62VSR.js +0 -53
- package/dist/chunk-4RQ62VSR.js.map +0 -1
- package/dist/chunk-4ZSGSRBI.js +0 -1221
- package/dist/chunk-4ZSGSRBI.js.map +0 -1
- package/dist/chunk-5GAX2QOH.js +0 -132
- package/dist/chunk-5GAX2QOH.js.map +0 -1
- package/dist/chunk-5SAZMBW7.js +0 -202
- package/dist/chunk-5TZZUL5X.js +0 -30
- package/dist/chunk-6CU3FN74.js +0 -777
- package/dist/chunk-6G2SCQYS.js +0 -29
- package/dist/chunk-6G2SCQYS.js.map +0 -1
- package/dist/chunk-6MWUANRF.js +0 -29
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-6ULCYCMU.js +0 -74
- package/dist/chunk-7HAPHVRJ.js +0 -1695
- package/dist/chunk-7HAPHVRJ.js.map +0 -1
- package/dist/chunk-7IZQTCTR.js +0 -382
- package/dist/chunk-7ZANJ6JZ.js +0 -265
- package/dist/chunk-7ZANJ6JZ.js.map +0 -1
- package/dist/chunk-A2APWS32.js +0 -150
- package/dist/chunk-A2APWS32.js.map +0 -1
- package/dist/chunk-A4MAD6PO.js +0 -99
- package/dist/chunk-ANDBBA2P.js +0 -36
- package/dist/chunk-ANDBBA2P.js.map +0 -1
- package/dist/chunk-AUR7MRHA.js +0 -404
- package/dist/chunk-AYGZMQP5.js +0 -75
- package/dist/chunk-BGIZAFY7.js +0 -1
- package/dist/chunk-CJEMA2Z6.js +0 -230
- package/dist/chunk-CTSFKDGA.js +0 -40
- package/dist/chunk-CU62BBRB.js +0 -1465
- package/dist/chunk-CU62BBRB.js.map +0 -1
- package/dist/chunk-CWCCYH34.js +0 -23
- package/dist/chunk-DEYAO3N6.js +0 -589
- package/dist/chunk-DFIBOSOQ.js +0 -85
- package/dist/chunk-E5AHO65E.js +0 -150
- package/dist/chunk-FC3XK5JT.js +0 -99
- package/dist/chunk-FGOGS7CE.js +0 -662
- package/dist/chunk-FGOGS7CE.js.map +0 -1
- package/dist/chunk-GX2BYNCT.js +0 -117
- package/dist/chunk-GZ2MOPVX.js +0 -291
- package/dist/chunk-GZ2MOPVX.js.map +0 -1
- package/dist/chunk-H57P2SJB.js +0 -126
- package/dist/chunk-H57P2SJB.js.map +0 -1
- package/dist/chunk-HBTT7YQX.js +0 -94
- package/dist/chunk-HOCEGVGQ.js +0 -36
- package/dist/chunk-ICV32FPK.js +0 -50
- package/dist/chunk-IIP5WFVT.js +0 -462
- package/dist/chunk-IIP5WFVT.js.map +0 -1
- package/dist/chunk-IUKGIB2Q.js +0 -91
- package/dist/chunk-IWTYFS3D.js +0 -129
- package/dist/chunk-JC5R7P44.js +0 -355
- package/dist/chunk-JC5R7P44.js.map +0 -1
- package/dist/chunk-K2WCO3NX.js +0 -1
- package/dist/chunk-KBBWY46Y.js +0 -14
- package/dist/chunk-KBF5GSGX.js +0 -367
- package/dist/chunk-KCG3BHFG.js +0 -99
- package/dist/chunk-KCG3BHFG.js.map +0 -1
- package/dist/chunk-KNXN47MO.js +0 -155
- package/dist/chunk-KWLD2D75.js +0 -38
- package/dist/chunk-KXKLKJW4.js +0 -49
- package/dist/chunk-KYC4LIEU.js +0 -123
- package/dist/chunk-LEOXZY36.js +0 -130
- package/dist/chunk-M5I354EE.js +0 -235
- package/dist/chunk-MK2BSS44.js +0 -34
- package/dist/chunk-MSVY7ULZ.js +0 -70
- package/dist/chunk-NNWK3PSY.js +0 -135
- package/dist/chunk-NSZ6J5DF.js +0 -59
- package/dist/chunk-NUEFXLZU.js +0 -59
- package/dist/chunk-NYVQCZ54.js +0 -261
- package/dist/chunk-OQAODTYR.js +0 -45
- package/dist/chunk-OV4CMJGR.js +0 -164
- package/dist/chunk-PEDZFFKW.js +0 -41
- package/dist/chunk-PF3FQCCF.js +0 -164
- package/dist/chunk-PF3FQCCF.js.map +0 -1
- package/dist/chunk-Q2KVKTC2.js +0 -823
- package/dist/chunk-QJR3W3MF.js +0 -23
- package/dist/chunk-QJR3W3MF.js.map +0 -1
- package/dist/chunk-QTXQ6RNZ.js +0 -255
- package/dist/chunk-RJ5522XX.js +0 -453
- package/dist/chunk-RJ5522XX.js.map +0 -1
- package/dist/chunk-RMUXPHIH.js +0 -930
- package/dist/chunk-RMUXPHIH.js.map +0 -1
- package/dist/chunk-S6AQXDN4.js +0 -155
- package/dist/chunk-SSFC3IYA.js +0 -275
- package/dist/chunk-SSFC3IYA.js.map +0 -1
- package/dist/chunk-SZCHEDML.js +0 -209
- package/dist/chunk-TDPEJINP.js +0 -188
- package/dist/chunk-TDPEJINP.js.map +0 -1
- package/dist/chunk-TQ3REHVF.js +0 -95
- package/dist/chunk-TQ3REHVF.js.map +0 -1
- package/dist/chunk-UNJU345Q.js +0 -32
- package/dist/chunk-UNJU345Q.js.map +0 -1
- package/dist/chunk-V7RNIND6.js +0 -265
- package/dist/chunk-V7RNIND6.js.map +0 -1
- package/dist/chunk-VJ3NQK4K.js +0 -205
- package/dist/chunk-WNA6T3MA.js +0 -686
- package/dist/chunk-WNA6T3MA.js.map +0 -1
- package/dist/chunk-WVCQ75OK.js +0 -124
- package/dist/chunk-X66MXMR5.js +0 -42
- package/dist/chunk-XHD3L3JO.js +0 -930
- package/dist/chunk-XHD3L3JO.js.map +0 -1
- package/dist/chunk-XJK2WIYN.js +0 -430
- package/dist/chunk-XJK2WIYN.js.map +0 -1
- package/dist/chunk-XQ7UYPVN.js +0 -95
- package/dist/chunk-Y2OCKFZ3.js +0 -80
- package/dist/chunk-YBFOBRTO.js +0 -367
- package/dist/chunk-YLN33ADH.js +0 -97
- package/dist/chunk-Z5YFRMG5.js +0 -45
- package/dist/chunk-ZWQFOXBR.js +0 -54
- package/dist/classified/index.d.ts +0 -16
- package/dist/classified-marker-IO5EBW7Q.js +0 -24
- package/dist/classified-marker-IO5EBW7Q.js.map +0 -1
- package/dist/collection-facade-3RAXG2OU.js +0 -38
- package/dist/computed-R62HGCO4.js +0 -11
- package/dist/consent/index.d.ts +0 -22
- package/dist/crdt/index.d.ts +0 -33
- package/dist/dead-filter-VNA4M3GP.js +0 -28
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-ZKII5UBI.js +0 -25
- package/dist/derivations/index.d.ts +0 -69
- package/dist/derive-5D2C3WG4.js +0 -21
- package/dist/describe/index.d.ts +0 -4
- package/dist/describe/index.js +0 -1
- package/dist/dev-unlock-DDTafVO6.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-EUBEJGPG.js +0 -125
- package/dist/executor-IL7SRNUZ.js +0 -23
- package/dist/executor-OUA2Y6YC.js +0 -9
- package/dist/executor-WAEI6PDV.js +0 -9
- package/dist/export-accessible-O55RKAGC.js +0 -23
- package/dist/extract-partition-VBGCBA6Q.js +0 -36
- package/dist/fanout-sidecar-CI5BCMQM.js +0 -74
- package/dist/find-FISGUWSK.js +0 -11
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -34
- package/dist/hash-DBkZfIBW.d.ts +0 -72
- package/dist/history/index.d.ts +0 -60
- package/dist/i18n/index.d.ts +0 -56
- package/dist/in/index.d.ts +0 -4
- package/dist/index-B9QdHytu.d.ts +0 -123
- package/dist/index-CyclmyDr.d.ts +0 -122
- package/dist/index-DzhNI2vE.d.ts +0 -23260
- package/dist/indexing/index.d.ts +0 -38
- package/dist/issue-EQAWIYFQ.js +0 -19
- package/dist/kernel/index.d.ts +0 -31
- package/dist/kernel/index.js +0 -60
- package/dist/lazy/index.d.ts +0 -20
- package/dist/ledger-AJA2SR3C.js +0 -42
- package/dist/liberate-SEGR4JLY.js +0 -24
- package/dist/link-set-YBAC2DQT.js +0 -31
- package/dist/materialized-views/index.d.ts +0 -182
- package/dist/mime-magic-CbV1quyp.d.ts +0 -103
- package/dist/noydb-AMEOU456.js +0 -65
- package/dist/on/index.d.ts +0 -4
- package/dist/overlay-views/index.d.ts +0 -97
- package/dist/periods/index.d.ts +0 -19
- package/dist/pod/index.d.ts +0 -62
- package/dist/policy-SDGRWVIL.js +0 -41
- package/dist/portability/index.d.ts +0 -19
- package/dist/post-register-MROIUA5O.js +0 -55
- package/dist/post-register-MROIUA5O.js.map +0 -1
- package/dist/public-envelope-J5PLQOW2.js +0 -32
- package/dist/query/index.d.ts +0 -4
- package/dist/read-only-facade-UCYNRE56.js +0 -8
- package/dist/register-OVJKW7BS.js +0 -23
- package/dist/registry-5RJSK5AJ.js +0 -9
- package/dist/registry-DQRNTWRL.js +0 -18
- package/dist/registry-LTGLERS7.js +0 -19
- package/dist/request-withdrawal-27O77D2V.js +0 -31
- package/dist/reveal-LT3I2K4P.js +0 -38
- package/dist/reveal-LT3I2K4P.js.map +0 -1
- package/dist/revoke-4N45G7D2.js +0 -24
- package/dist/revoke-4N45G7D2.js.map +0 -1
- package/dist/satellites/index.d.ts +0 -4
- package/dist/sealed-record/index.d.ts +0 -68
- package/dist/session/index.d.ts +0 -43
- package/dist/shadow/index.d.ts +0 -14
- package/dist/signer-XJCOV7JD.js +0 -25
- package/dist/signer-XJCOV7JD.js.map +0 -1
- package/dist/snapshots/index.d.ts +0 -25
- package/dist/stale-IYYXEH3U.js +0 -14
- package/dist/stale-IYYXEH3U.js.map +0 -1
- package/dist/storage-Y44CAPE6.js +0 -23
- package/dist/storage-Y44CAPE6.js.map +0 -1
- package/dist/store-coordination-provider-WKGAE2WI.js +0 -142
- package/dist/subject-index-CyOgGMJL.d.ts +0 -380
- package/dist/sync/index.d.ts +0 -40
- package/dist/team/index.d.ts +0 -154
- package/dist/tiers/index.d.ts +0 -4
- package/dist/to/index.d.ts +0 -4
- package/dist/transition-guard-BOUkzQU4.d.ts +0 -165
- package/dist/tx/index.d.ts +0 -34
- package/dist/ui/index.d.ts +0 -4
- package/dist/ulid-DRH25k3y.d.ts +0 -66
- package/dist/util/index.d.ts +0 -79
- package/dist/validators-B3SalxlJ.d.ts +0 -101
- package/dist/vault-diff-Dt9NkLzw.d.ts +0 -147
- package/dist/verify-GH6CWVSW.js +0 -139
- package/dist/verify-GH6CWVSW.js.map +0 -1
- package/dist/walk-76UCFXYV.js +0 -241
- package/dist/with/index.d.ts +0 -37
- package/dist/with-materialized-view-BP33v1Z6.d.ts +0 -27
- package/dist/with-overlayed-view-DntFpOKN.d.ts +0 -12
- package/dist/with-rollup-ClCHO6-4.d.ts +0 -47
- package/dist/withdraw-accessible-6J2UH3IN.js +0 -28
- package/dist/withdraw-accessible-6J2UH3IN.js.map +0 -1
- /package/dist/{adapter/index.js.map → api-ZGS6LCOF.js.map} +0 -0
- /package/dist/{chunk-34RRRIC3.js.map → chunk-3B5VVCNY.js.map} +0 -0
- /package/dist/{chunk-CJEMA2Z6.js.map → chunk-3LQ2YKO4.js.map} +0 -0
- /package/dist/{chunk-ZWQFOXBR.js.map → chunk-3QCRBHCY.js.map} +0 -0
- /package/dist/{chunk-E5AHO65E.js.map → chunk-4JBYV75E.js.map} +0 -0
- /package/dist/{chunk-YLN33ADH.js.map → chunk-4NXKCLLQ.js.map} +0 -0
- /package/dist/{chunk-2KOSJTMU.js.map → chunk-5M5DVGV7.js.map} +0 -0
- /package/dist/{chunk-3I4KYWNP.js.map → chunk-5YOLBEQ6.js.map} +0 -0
- /package/dist/{chunk-IWTYFS3D.js.map → chunk-6CRIV7DE.js.map} +0 -0
- /package/dist/{chunk-QTXQ6RNZ.js.map → chunk-6QTNZJBS.js.map} +0 -0
- /package/dist/{chunk-42KVY3OC.js.map → chunk-6T2SCQRU.js.map} +0 -0
- /package/dist/{chunk-Z5YFRMG5.js.map → chunk-7DSTRQIJ.js.map} +0 -0
- /package/dist/{chunk-DEYAO3N6.js.map → chunk-AUSTCW2X.js.map} +0 -0
- /package/dist/{chunk-SZCHEDML.js.map → chunk-B3HJYUOF.js.map} +0 -0
- /package/dist/{chunk-OV4CMJGR.js.map → chunk-BDVFPG6Y.js.map} +0 -0
- /package/dist/{chunk-HOCEGVGQ.js.map → chunk-CAF6WOK7.js.map} +0 -0
- /package/dist/{chunk-AUR7MRHA.js.map → chunk-CIE2BASH.js.map} +0 -0
- /package/dist/{chunk-X66MXMR5.js.map → chunk-CRI4OUV4.js.map} +0 -0
- /package/dist/{chunk-IUKGIB2Q.js.map → chunk-DLG74CNB.js.map} +0 -0
- /package/dist/{chunk-YBFOBRTO.js.map → chunk-ERJ7FU55.js.map} +0 -0
- /package/dist/{chunk-VJ3NQK4K.js.map → chunk-EVVGJDRQ.js.map} +0 -0
- /package/dist/{chunk-NSZ6J5DF.js.map → chunk-EXK7QRWF.js.map} +0 -0
- /package/dist/{chunk-5SAZMBW7.js.map → chunk-EYZ6IQ6X.js.map} +0 -0
- /package/dist/{chunk-OQAODTYR.js.map → chunk-F64IRYG3.js.map} +0 -0
- /package/dist/{chunk-Q2KVKTC2.js.map → chunk-FHS2HQSH.js.map} +0 -0
- /package/dist/{chunk-Y2OCKFZ3.js.map → chunk-GKEWXIV5.js.map} +0 -0
- /package/dist/{chunk-NUEFXLZU.js.map → chunk-GTGPO5KW.js.map} +0 -0
- /package/dist/{chunk-XQ7UYPVN.js.map → chunk-HB3RFQSC.js.map} +0 -0
- /package/dist/{chunk-FC3XK5JT.js.map → chunk-I6GALP6E.js.map} +0 -0
- /package/dist/{chunk-LEOXZY36.js.map → chunk-IL6POWCW.js.map} +0 -0
- /package/dist/{chunk-GX2BYNCT.js.map → chunk-IU6SNYX6.js.map} +0 -0
- /package/dist/{chunk-6CU3FN74.js.map → chunk-J2ZX2XUV.js.map} +0 -0
- /package/dist/{chunk-6MWUANRF.js.map → chunk-JKJOGPZN.js.map} +0 -0
- /package/dist/{chunk-PEDZFFKW.js.map → chunk-JZUV47FZ.js.map} +0 -0
- /package/dist/{chunk-5TZZUL5X.js.map → chunk-K5IMOGHB.js.map} +0 -0
- /package/dist/{chunk-7IZQTCTR.js.map → chunk-LASZKVMO.js.map} +0 -0
- /package/dist/{chunk-NNWK3PSY.js.map → chunk-NR5LT5RY.js.map} +0 -0
- /package/dist/{chunk-NYVQCZ54.js.map → chunk-NWSGI5C7.js.map} +0 -0
- /package/dist/{chunk-MSVY7ULZ.js.map → chunk-Q5VNKNE5.js.map} +0 -0
- /package/dist/{chunk-2HVUKRNE.js.map → chunk-QLWMEXCT.js.map} +0 -0
- /package/dist/{chunk-KYC4LIEU.js.map → chunk-QRB7NAOJ.js.map} +0 -0
- /package/dist/{chunk-6ULCYCMU.js.map → chunk-R4ROFEYC.js.map} +0 -0
- /package/dist/{chunk-KBF5GSGX.js.map → chunk-RIX4V2TB.js.map} +0 -0
- /package/dist/{chunk-CTSFKDGA.js.map → chunk-RYCTDFUX.js.map} +0 -0
- /package/dist/{chunk-S6AQXDN4.js.map → chunk-RZ5SVOYR.js.map} +0 -0
- /package/dist/{chunk-A4MAD6PO.js.map → chunk-SLFHQTTW.js.map} +0 -0
- /package/dist/{chunk-AYGZMQP5.js.map → chunk-T2FFWNPK.js.map} +0 -0
- /package/dist/{chunk-CWCCYH34.js.map → chunk-UNFPPVNI.js.map} +0 -0
- /package/dist/{chunk-M5I354EE.js.map → chunk-VLFCJYTL.js.map} +0 -0
- /package/dist/{chunk-WVCQ75OK.js.map → chunk-VN3DBQAU.js.map} +0 -0
- /package/dist/{chunk-KXKLKJW4.js.map → chunk-VZRODIM3.js.map} +0 -0
- /package/dist/{chunk-HBTT7YQX.js.map → chunk-W22IKJE2.js.map} +0 -0
- /package/dist/{chunk-KNXN47MO.js.map → chunk-X3YYQWOQ.js.map} +0 -0
- /package/dist/{chunk-DFIBOSOQ.js.map → chunk-YFXZEAYK.js.map} +0 -0
- /package/dist/{chunk-ICV32FPK.js.map → chunk-ZAJAVEXY.js.map} +0 -0
- /package/dist/{chunk-MK2BSS44.js.map → chunk-ZICD77GM.js.map} +0 -0
- /package/dist/{chunk-KWLD2D75.js.map → chunk-ZJ2AK4V7.js.map} +0 -0
- /package/dist/{chunk-KBBWY46Y.js.map → chunk-ZUODRVHY.js.map} +0 -0
- /package/dist/{api-HV4PDUWF.js.map → collection-facade-TLWIPI76.js.map} +0 -0
- /package/dist/{chunk-BGIZAFY7.js.map → computed-ZIQTYTDI.js.map} +0 -0
- /package/dist/{dead-filter-VNA4M3GP.js.map → dead-filter-ESOBZZP5.js.map} +0 -0
- /package/dist/{chunk-K2WCO3NX.js.map → delegation-W7ZV2322.js.map} +0 -0
- /package/dist/{collection-facade-3RAXG2OU.js.map → derive-H2BJTLUI.js.map} +0 -0
- /package/dist/{computed-R62HGCO4.js.map → enclave-AP3I5W7O.js.map} +0 -0
- /package/dist/{delegation-ZKII5UBI.js.map → executor-KGWTNEQD.js.map} +0 -0
- /package/dist/{derive-5D2C3WG4.js.map → executor-OVEXR6RT.js.map} +0 -0
- /package/dist/{describe/index.js.map → executor-UNEH5ZYH.js.map} +0 -0
- /package/dist/{enclave-EUBEJGPG.js.map → export-accessible-PCMXSUZS.js.map} +0 -0
- /package/dist/{executor-IL7SRNUZ.js.map → extract-partition-SWHFSYJO.js.map} +0 -0
- /package/dist/{fanout-sidecar-CI5BCMQM.js.map → fanout-sidecar-A765THMX.js.map} +0 -0
- /package/dist/{executor-OUA2Y6YC.js.map → find-N6345CNT.js.map} +0 -0
- /package/dist/{executor-WAEI6PDV.js.map → issue-5OKB6I2R.js.map} +0 -0
- /package/dist/{export-accessible-O55RKAGC.js.map → ledger-GFBKVPV4.js.map} +0 -0
- /package/dist/{extract-partition-VBGCBA6Q.js.map → liberate-3VDOT4KO.js.map} +0 -0
- /package/dist/{find-FISGUWSK.js.map → link-set-Z7Q2ASFX.js.map} +0 -0
- /package/dist/{issue-EQAWIYFQ.js.map → noydb-ZCJOYBDI.js.map} +0 -0
- /package/dist/{kernel/index.js.map → policy-Z3RUAIY2.js.map} +0 -0
- /package/dist/{ledger-AJA2SR3C.js.map → public-envelope-B4KNWVUA.js.map} +0 -0
- /package/dist/{liberate-SEGR4JLY.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
- /package/dist/{link-set-YBAC2DQT.js.map → register-VAHONCID.js.map} +0 -0
- /package/dist/{noydb-AMEOU456.js.map → registry-7MLVD3VO.js.map} +0 -0
- /package/dist/{policy-SDGRWVIL.js.map → registry-EPKPD5SM.js.map} +0 -0
- /package/dist/{public-envelope-J5PLQOW2.js.map → registry-P5T7PS2U.js.map} +0 -0
- /package/dist/{read-only-facade-UCYNRE56.js.map → request-withdrawal-TI3A5WPS.js.map} +0 -0
- /package/dist/{register-OVJKW7BS.js.map → revoke-FDRD6GRW.js.map} +0 -0
- /package/dist/{registry-5RJSK5AJ.js.map → signer-MUWEIUI6.js.map} +0 -0
- /package/dist/{registry-DQRNTWRL.js.map → stale-OSQ7J3AA.js.map} +0 -0
- /package/dist/{registry-LTGLERS7.js.map → storage-MVFCGEQE.js.map} +0 -0
- /package/dist/{store-coordination-provider-WKGAE2WI.js.map → store-coordination-provider-64OEZFGS.js.map} +0 -0
- /package/dist/{walk-76UCFXYV.js.map → walk-SVNDIZ62.js.map} +0 -0
- /package/dist/{request-withdrawal-27O77D2V.js.map → withdraw-accessible-WZIEVWSR.js.map} +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The encrypted subject index.
|
|
3
|
+
*
|
|
4
|
+
* GDPR crypto-shred needs to answer "which records belong to data subject
|
|
5
|
+
* X?" portably (the index must travel with the vault/bundle) WITHOUT leaking
|
|
6
|
+
* subject-equivalence to the store. The rejected alternative — an unencrypted
|
|
7
|
+
* subject tag in envelope metadata — would let anyone with store access see
|
|
8
|
+
* which records share a subject. Instead we keep a reserved `_subject_index`
|
|
9
|
+
* collection, encrypted under its OWN DEK (`getDEK('_subject_index')`):
|
|
10
|
+
*
|
|
11
|
+
* - record id = `HMAC-SHA256(indexDEK, subjectId)` (M-2). A bare
|
|
12
|
+
* `sha256Hex(subjectId)` would be offline-computable: an attacker with
|
|
13
|
+
* store access and a candidate list (emails / customer ids are low-entropy)
|
|
14
|
+
* could dictionary the hash to confirm "subject X is present here." Keying
|
|
15
|
+
* the id with the vault-only index DEK removes that capability — without the
|
|
16
|
+
* DEK the id cannot be derived. (Legacy entries written before M-2 used the
|
|
17
|
+
* bare sha256 id; the read/remove paths dual-look-up both forms.)
|
|
18
|
+
* - record body = AES-GCM(JSON `{ r: [{ collection, id }], p }`) under the
|
|
19
|
+
* index DEK, where `p` pads the plaintext to a bucketed length so the
|
|
20
|
+
* ciphertext `_data` length does not leak the approximate record count.
|
|
21
|
+
* Legacy bodies were a bare `[{ collection, id }]` array; reads accept both.
|
|
22
|
+
*
|
|
23
|
+
* ## Concurrency (RISK #3 — known v1 limitation)
|
|
24
|
+
*
|
|
25
|
+
* `addSubjectRef` / `removeSubjectRef` are read-modify-write with no CAS. The
|
|
26
|
+
* design assumes a SINGLE WRITER (the noy-db single-process write model). Two
|
|
27
|
+
* concurrent writers racing on the SAME subject can lose an entry (last-write
|
|
28
|
+
* wins on the ref list). This is documented, not fixed in v1:
|
|
29
|
+
* `rebuildSubjectIndex` performs a full scan to recover a correct index from
|
|
30
|
+
* the canonical records, so a lost ref is recoverable. A CAS-backed index is
|
|
31
|
+
* deferred to a later slice.
|
|
32
|
+
*
|
|
33
|
+
* @module
|
|
34
|
+
*/
|
|
35
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
36
|
+
import type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js';
|
|
37
|
+
/** Reserved collection holding the encrypted subject → records index. */
|
|
38
|
+
export declare const SUBJECT_INDEX_COLLECTION = "_subject_index";
|
|
39
|
+
/** A single record reference held in a subject's index entry. */
|
|
40
|
+
export interface SubjectRef {
|
|
41
|
+
readonly collection: string;
|
|
42
|
+
readonly id: string;
|
|
43
|
+
}
|
|
44
|
+
type GetDEK = (collectionName: string) => Promise<EnclaveKey>;
|
|
45
|
+
/**
|
|
46
|
+
* Add a `{ collection, id }` ref to a subject's index entry (idempotent —
|
|
47
|
+
* a duplicate ref is not appended). Read-modify-write; see the concurrency
|
|
48
|
+
* note in the module docstring.
|
|
49
|
+
*/
|
|
50
|
+
export declare function addSubjectRef(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjectId: string, ref: SubjectRef): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Remove a `{ collection, id }` ref from a subject's index entry. When the
|
|
53
|
+
* last ref is removed the (now empty) entry is deleted so the store holds no
|
|
54
|
+
* residual key for an erased subject.
|
|
55
|
+
*/
|
|
56
|
+
export declare function removeSubjectRef(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjectId: string, ref: SubjectRef): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Look up every record ref for a subject. Returns `[]` when none exist. Unions
|
|
59
|
+
* the keyed (M-2) and legacy sha256 entries (dual-lookup), deduplicated, so a
|
|
60
|
+
* subject indexed before M-2 is still fully found.
|
|
61
|
+
*/
|
|
62
|
+
export declare function lookupSubject(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjectId: string): Promise<SubjectRef[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Rebuild the entire subject index from the canonical records (the recovery
|
|
65
|
+
* path for the documented read-modify-write race). Scans each declared
|
|
66
|
+
* collection, reads `record[subjectField]` (dotted path), and rewrites the
|
|
67
|
+
* index from scratch. Tombstoned (already-shredded) records contribute no
|
|
68
|
+
* ref — their body is gone, so they cannot be re-indexed.
|
|
69
|
+
*
|
|
70
|
+
* `decodeRecord` decrypts an envelope to a plain object (or returns null for
|
|
71
|
+
* a tombstone / unreadable record); supplied by the caller so this module
|
|
72
|
+
* stays free of Collection internals.
|
|
73
|
+
*/
|
|
74
|
+
export declare function rebuildSubjectIndex(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjects: Readonly<Record<string, string>>, decodeRecord: (collection: string, id: string, env: EncryptedEnvelope) => Promise<Record<string, unknown> | null>): Promise<number>;
|
|
75
|
+
/**
|
|
76
|
+
* Coerce a read subject-field value to a stable string id. Primitives use
|
|
77
|
+
* their natural string form; objects/arrays are JSON-stringified so structural
|
|
78
|
+
* subjects still get a deterministic key (avoids the `[object Object]` trap).
|
|
79
|
+
*/
|
|
80
|
+
export declare function coerceSubjectId(value: unknown): string;
|
|
81
|
+
/** Read a (possibly dotted) field path from a plain record. */
|
|
82
|
+
export declare function readDottedPath(record: Record<string, unknown>, field: string): unknown;
|
|
83
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pure functions that execute the work declared by a `GuardStrategy`.
|
|
4
|
+
* Stateless — `GuardRegistry` decides when to call these.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const GuardExecutor: {
|
|
9
|
+
/**
|
|
10
|
+
* Compare existing vs incoming for each `frozenFields.fields` entry
|
|
11
|
+
* when `frozenFields.when(existing)` is true. Throws
|
|
12
|
+
* `FieldFrozenError` listing every changed frozen field.
|
|
13
|
+
*
|
|
14
|
+
* @param skipFields — field names that are schema-owned computed fields.
|
|
15
|
+
* These are excluded from the comparison because `incoming` carries the
|
|
16
|
+
* raw user input (computed fields not yet evaluated), so comparing
|
|
17
|
+
* `existing[field]` vs `incoming[field]` would always look like a
|
|
18
|
+
* change even when the computed result is unchanged.
|
|
19
|
+
*/
|
|
20
|
+
checkFrozenFields<T extends Record<string, unknown>>(guard: GuardStrategy<T>, id: string, existing: T | null, incoming: T, skipFields?: ReadonlySet<string>): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Run a single guard's invariant over its slice of the change-set.
|
|
23
|
+
* Any throw is converted to `InvariantError` unless it already is one.
|
|
24
|
+
*/
|
|
25
|
+
runInvariant<T extends Record<string, unknown>>(guard: GuardStrategy<T>, changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>): Promise<void>;
|
|
26
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `immutableGuard` — declarative WORM / append-only sugar over the guard
|
|
3
|
+
* service.
|
|
4
|
+
*
|
|
5
|
+
* Issued fiscal documents (invoices, DDTs) must be immutable after issue.
|
|
6
|
+
* That is expressible today with a hand-rolled `withGuard` (block on
|
|
7
|
+
* `check`/`onDelete`, allow an admin `amendment`), but the boilerplate is
|
|
8
|
+
* repetitive and easy to get subtly wrong. `immutableGuard` generates
|
|
9
|
+
* exactly that guard from a declarative config, reusing the guard
|
|
10
|
+
* machinery wholesale — `check`/`onDelete` rejection, the ledgered
|
|
11
|
+
* `amendment` override, and composition with `periods`/`history`.
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* createNoydb({ guardStrategies: [
|
|
15
|
+
* immutableGuard({
|
|
16
|
+
* collection: 'invoices',
|
|
17
|
+
* after: (r) => r.status === 'issued', // immutable once issued
|
|
18
|
+
* }),
|
|
19
|
+
* ] })
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* A record is mutable until `after(record)` holds; from then on, updates
|
|
23
|
+
* and deletes throw `RecordLockedError` unless performed inside an
|
|
24
|
+
* `amendment` transaction by an authorized role (the override is
|
|
25
|
+
* ledgered by the guard amendment mechanism). `appendOnly: true` is
|
|
26
|
+
* shorthand for `after: () => true` — immutable from creation.
|
|
27
|
+
*/
|
|
28
|
+
import type { GuardStrategyHandle, GuardContext, GuardChange } from './types.js';
|
|
29
|
+
export interface ImmutableGuardConfig<T extends Record<string, unknown>> {
|
|
30
|
+
/** The collection to make WORM. */
|
|
31
|
+
collection: string;
|
|
32
|
+
/**
|
|
33
|
+
* A record becomes immutable once this predicate holds. Evaluated on
|
|
34
|
+
* the *existing* (already-persisted) record, so the write that first
|
|
35
|
+
* makes it true is still allowed; subsequent writes are blocked.
|
|
36
|
+
* Mutually exclusive with `appendOnly`.
|
|
37
|
+
*/
|
|
38
|
+
after?: (record: T) => boolean;
|
|
39
|
+
/** Shorthand for `after: () => true` — immutable from creation. */
|
|
40
|
+
appendOnly?: boolean;
|
|
41
|
+
/** Roles permitted to override via an amendment transaction. Default `['admin', 'owner']`. */
|
|
42
|
+
amendmentRoles?: ReadonlyArray<'admin' | 'owner'>;
|
|
43
|
+
/**
|
|
44
|
+
* Optional set-level invariant run over the amendment change-set after
|
|
45
|
+
* the writes execute. Signature matches `GuardStrategy.amendment.invariant`
|
|
46
|
+
* exactly: it receives every {before, after} pair touching this
|
|
47
|
+
* collection in the amendment plus the guard context; throwing reverts
|
|
48
|
+
* the whole amendment and surfaces as `InvariantError`.
|
|
49
|
+
*
|
|
50
|
+
* Use this to keep a constraint inviolable EVEN under amendment — e.g.
|
|
51
|
+
* forbid deleting an issued document by re-throwing on any
|
|
52
|
+
* `before !== null && after === null` change, or assert a cross-record
|
|
53
|
+
* sum is preserved. When omitted the amendment is unconditionally
|
|
54
|
+
* allowed (the amendment itself is the sanctioned, ledgered override) —
|
|
55
|
+
* this is the backward-compatible default.
|
|
56
|
+
*/
|
|
57
|
+
amendmentInvariant?: (changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>) => Promise<void> | void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Build an immutability guard. Pass the returned handle to
|
|
61
|
+
* `createNoydb({ guardStrategies: [...] })`.
|
|
62
|
+
*/
|
|
63
|
+
export declare function immutableGuard<T extends Record<string, unknown>>(config: ImmutableGuardConfig<T>): GuardStrategyHandle<T>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { withGuard } from './with-guard.js';
|
|
2
|
+
export { immutableGuard } from './immutable-guard.js';
|
|
3
|
+
export type { ImmutableGuardConfig } from './immutable-guard.js';
|
|
4
|
+
export { transitionGuard } from './transition-guard.js';
|
|
5
|
+
export type { TransitionGuardConfig } from './transition-guard.js';
|
|
6
|
+
export { GuardRegistry } from './registry.js';
|
|
7
|
+
export { GuardExecutor } from './executor.js';
|
|
8
|
+
export { ReadOnlyVaultFacade } from './read-only-facade.js';
|
|
9
|
+
export type { GuardStrategy, GuardStrategyHandle, GuardContext, GuardChange, } from './types.js';
|
|
10
|
+
export { RecordLockedError, FieldFrozenError, IllegalTransitionError, InvariantError, AmendmentForbiddenError, } from '../../kernel/errors.js';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Vault } from '../../kernel/vault.js';
|
|
2
|
+
import type { Query } from '../../kernel/query/builder.js';
|
|
3
|
+
import type { Layer } from '../../via/i18n/policy.js';
|
|
4
|
+
import type { ReadOnlyVaultFacade as ReadOnlyVaultFacadeContract } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Minimal read-only wrapper over a `Vault`. Used as `ctx.vault` inside
|
|
7
|
+
* guard / derivation callbacks so they can fetch related records without
|
|
8
|
+
* acquiring any write capability.
|
|
9
|
+
*
|
|
10
|
+
* The `layer` tags every `get`/`list` read with the resolution layer it
|
|
11
|
+
* belongs to. A guard-seeded facade reads at `'guard'`, a
|
|
12
|
+
* derivation-seeded one at `'derivation'`, so i18nText / dictKey fields
|
|
13
|
+
* resolve under that layer's `onMissing` policy instead of the `'read'`
|
|
14
|
+
* policy — e.g. a guard read can `substitute` a missing locale (lenient
|
|
15
|
+
* default) while the same field `throw`s on an ordinary app read.
|
|
16
|
+
*
|
|
17
|
+
* `query()` is left untagged: the query/aggregate pipeline reads raw
|
|
18
|
+
* `{locale}` maps (no resolution call site), so a layer tag there would be
|
|
19
|
+
* inert. Routing `mv`/`join` resolution through the pipeline is tracked
|
|
20
|
+
* separately.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ReadOnlyVaultFacade implements ReadOnlyVaultFacadeContract {
|
|
23
|
+
private readonly _vault;
|
|
24
|
+
private readonly _layer;
|
|
25
|
+
constructor(vault: Vault, layer?: Layer);
|
|
26
|
+
collection<T = unknown>(name: string): {
|
|
27
|
+
get(id: string): Promise<T | null>;
|
|
28
|
+
list(): Promise<T[]>;
|
|
29
|
+
query(): Query<T>;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Per-record metadata attached to every entry in an amendment's
|
|
4
|
+
* change-set. Carried in a parallel map alongside `_amendmentChanges`
|
|
5
|
+
* so the public {@link GuardChange} shape (`{ before, after }`) stays
|
|
6
|
+
* clean for invariant authors — the audit ledger reads this side
|
|
7
|
+
* structure to produce the `{ collection, id, vBefore, vAfter }`
|
|
8
|
+
* tuples for the amendment entry.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export interface AmendmentChangeMeta {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly vBefore: number;
|
|
15
|
+
readonly vAfter: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Vault-internal singleton that holds the guard graph and dispatches
|
|
19
|
+
* per-collection guard execution. Owned by `Vault`; not exported.
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
type AnyGuard = GuardStrategy<Record<string, unknown>>;
|
|
24
|
+
type AnyChange = GuardChange<Record<string, unknown>>;
|
|
25
|
+
export declare class GuardRegistry {
|
|
26
|
+
private readonly _byCollection;
|
|
27
|
+
private _amendmentChanges;
|
|
28
|
+
private _amendmentMeta;
|
|
29
|
+
/** Register a guard. Multiple guards per collection are allowed. */
|
|
30
|
+
register<T extends Record<string, unknown>>(spec: GuardStrategy<T>): void;
|
|
31
|
+
/** All guards registered against `collection` in registration order. */
|
|
32
|
+
guardsFor(collection: string): ReadonlyArray<AnyGuard>;
|
|
33
|
+
/** Per-collection guard counts, for introspection. */
|
|
34
|
+
summary(): {
|
|
35
|
+
collection: string;
|
|
36
|
+
count: number;
|
|
37
|
+
}[];
|
|
38
|
+
/**
|
|
39
|
+
* Run every guard's `check` for this collection. First throw wins —
|
|
40
|
+
* remaining guards are not invoked. Guards without a `check` skip.
|
|
41
|
+
*/
|
|
42
|
+
runChecks<T>(collection: string, incoming: T, ctx: GuardContext<T>): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Run every guard's `onDelete` for this collection. First throw wins —
|
|
45
|
+
* remaining guards are not invoked. Guards without an `onDelete` skip.
|
|
46
|
+
* Mirrors {@link runChecks} but for the delete path.
|
|
47
|
+
*/
|
|
48
|
+
runOnDelete<T>(collection: string, existing: T, ctx: GuardContext<T>): Promise<void>;
|
|
49
|
+
/** True if any guard for `collection` declares an `amendment` block. */
|
|
50
|
+
hasAmendment(collection: string): boolean;
|
|
51
|
+
/** Open a new amendment change-collection window. */
|
|
52
|
+
beginAmendment(): void;
|
|
53
|
+
/** True iff we're currently inside an amendment transaction. */
|
|
54
|
+
isAmendmentActive(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Record a {before, after} pair for the active amendment. `vBefore`
|
|
57
|
+
* and `vAfter` are stored in a parallel meta structure so the public
|
|
58
|
+
* {@link GuardChange} shape handed to invariant callbacks stays
|
|
59
|
+
* `{ before, after }` only — the audit ledger reads version metadata
|
|
60
|
+
* via {@link consumeMeta}.
|
|
61
|
+
*/
|
|
62
|
+
collectChange<T>(collection: string, id: string, before: T | null, after: T, vBefore?: number, vAfter?: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Drain the change-set and close the amendment window. The caller
|
|
65
|
+
* (transaction commit) feeds these to each affected guard's invariant.
|
|
66
|
+
*/
|
|
67
|
+
consumeChanges(): ReadonlyMap<string, ReadonlyArray<AnyChange>>;
|
|
68
|
+
/**
|
|
69
|
+
* Drain the parallel id/version metadata captured during the
|
|
70
|
+
* amendment. Returned as a flat list with `collection` denormalised
|
|
71
|
+
* so the audit ledger can emit one `{ collection, id, vBefore,
|
|
72
|
+
* vAfter }` tuple per record. Must be called AFTER
|
|
73
|
+
* {@link consumeChanges} (or independently) — calling it closes the
|
|
74
|
+
* meta window in the same way.
|
|
75
|
+
*/
|
|
76
|
+
consumeMeta(): ReadonlyArray<{
|
|
77
|
+
collection: string;
|
|
78
|
+
id: string;
|
|
79
|
+
vBefore: number;
|
|
80
|
+
vAfter: number;
|
|
81
|
+
}>;
|
|
82
|
+
}
|
|
83
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `transitionGuard` — declarative state-machine sugar over the guard
|
|
3
|
+
* service.
|
|
4
|
+
*
|
|
5
|
+
* Any record with a lifecycle field (invoice `status`, order state,
|
|
6
|
+
* ticket workflow, subscription phase) needs transition validation: a
|
|
7
|
+
* write may only move the field along a declared arc. That is expressible
|
|
8
|
+
* with a hand-rolled `withGuard({ check })`, but every consumer
|
|
9
|
+
* re-implements the same graph lookup + error. `transitionGuard`
|
|
10
|
+
* generates exactly that guard from a state graph, reusing the guard
|
|
11
|
+
* machinery wholesale — `check` rejection, the ledgered `amendment`
|
|
12
|
+
* override, and composition with `periods`/`history`.
|
|
13
|
+
*
|
|
14
|
+
* It generalizes {@link immutableGuard}: WORM is the special case "every
|
|
15
|
+
* state has no outgoing arcs", i.e. `transitions` mapping each state to `[]`.
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* createNoydb({ guardStrategies: [
|
|
19
|
+
* transitionGuard<Sale>({
|
|
20
|
+
* collection: 'sales', field: 'status',
|
|
21
|
+
* transitions: { // absence of an arc = forbidden
|
|
22
|
+
* draft: ['to_verify', 'cancelled'],
|
|
23
|
+
* to_verify: ['proforma', 'draft', 'cancelled'],
|
|
24
|
+
* proforma: ['invoiced', 'cancelled'],
|
|
25
|
+
* invoiced: ['paid'], paid: [], cancelled: [],
|
|
26
|
+
* },
|
|
27
|
+
* initial: ['draft', 'to_verify'], // allowed status on insert
|
|
28
|
+
* }),
|
|
29
|
+
* ] })
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* Semantics:
|
|
33
|
+
* - **Insert** (`ctx.existing === null`): `incoming[field]` must be in
|
|
34
|
+
* `initial`. When `initial` is omitted, any value is allowed on insert.
|
|
35
|
+
* - **Update**: the arc `(existing[field] → incoming[field])` must be
|
|
36
|
+
* listed in `transitions[from]`, else `IllegalTransitionError`. A
|
|
37
|
+
* same-value write (`from === to`) is allowed when `allowIdempotent`
|
|
38
|
+
* (default `true`) — so writes that touch other fields without moving
|
|
39
|
+
* state pass.
|
|
40
|
+
* - **Override**: inside an `amendment` transaction by an authorized role
|
|
41
|
+
* the check is skipped and the change is ledgered (mirrors every guard).
|
|
42
|
+
*
|
|
43
|
+
* The status graph is caller-supplied data — no UI, no domain logic.
|
|
44
|
+
*/
|
|
45
|
+
import type { GuardStrategyHandle, GuardContext, GuardChange } from './types.js';
|
|
46
|
+
export interface TransitionGuardConfig<T extends Record<string, unknown>> {
|
|
47
|
+
/** The collection whose state field is governed. */
|
|
48
|
+
collection: string;
|
|
49
|
+
/** The state field on the record (e.g. `'status'`). */
|
|
50
|
+
field: keyof T & string;
|
|
51
|
+
/**
|
|
52
|
+
* The transition graph: each state maps to the states it may move to.
|
|
53
|
+
* A state absent from the map (or mapped to `[]`) is terminal — no
|
|
54
|
+
* outgoing arc, so any non-idempotent write from it is rejected.
|
|
55
|
+
*/
|
|
56
|
+
transitions: Readonly<Record<string, readonly string[]>>;
|
|
57
|
+
/**
|
|
58
|
+
* States allowed as the initial value on insert (`existing === null`).
|
|
59
|
+
* Omit to allow any value on insert.
|
|
60
|
+
*/
|
|
61
|
+
initial?: readonly string[];
|
|
62
|
+
/**
|
|
63
|
+
* Allow a same-value write (`from === to`) on update. Default `true` —
|
|
64
|
+
* lets a put that changes other fields, but not the state, through.
|
|
65
|
+
*/
|
|
66
|
+
allowIdempotent?: boolean;
|
|
67
|
+
/** Roles permitted to override via an amendment transaction. Default `['admin', 'owner']`. */
|
|
68
|
+
amendmentRoles?: ReadonlyArray<'admin' | 'owner'>;
|
|
69
|
+
/**
|
|
70
|
+
* Optional set-level invariant run over the amendment change-set after
|
|
71
|
+
* the writes execute. Signature matches `GuardStrategy.amendment.invariant`
|
|
72
|
+
* exactly. When omitted the amendment is unconditionally allowed (the
|
|
73
|
+
* amendment itself is the sanctioned, ledgered override) — the
|
|
74
|
+
* backward-compatible default. Mirrors {@link immutableGuard}.
|
|
75
|
+
*/
|
|
76
|
+
amendmentInvariant?: (changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>) => Promise<void> | void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Build a state-machine transition guard. Pass the returned handle to
|
|
80
|
+
* `createNoydb({ guardStrategies: [...] })`.
|
|
81
|
+
*/
|
|
82
|
+
export declare function transitionGuard<T extends Record<string, unknown>>(config: TransitionGuardConfig<T>): GuardStrategyHandle<T>;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { Role } from '../../kernel/types.js';
|
|
2
|
+
import type { Query } from '../../kernel/query/builder.js';
|
|
3
|
+
/**
|
|
4
|
+
* Minimum read surface exposed to guard `check` functions. Intentionally
|
|
5
|
+
* narrow — guards can read other collections but never write.
|
|
6
|
+
*
|
|
7
|
+
* `query()` returns the same chainable builder used elsewhere. `Query<T>`
|
|
8
|
+
* has no write terminals (no `.update()` / `.delete()`) so exposing it
|
|
9
|
+
* here preserves the read-only contract while letting guards aggregate
|
|
10
|
+
* with `.where().aggregate()` / `.groupBy()` / `.join()` instead of
|
|
11
|
+
* decrypting every sibling row via `.list()`.
|
|
12
|
+
*/
|
|
13
|
+
export interface ReadOnlyVaultFacade {
|
|
14
|
+
collection<T = unknown>(name: string): {
|
|
15
|
+
get(id: string): Promise<T | null>;
|
|
16
|
+
list(): Promise<T[]>;
|
|
17
|
+
query(): Query<T>;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Runtime context passed to `check` and `invariant` callbacks.
|
|
22
|
+
* `existing` is the currently-persisted record (null for inserts).
|
|
23
|
+
*/
|
|
24
|
+
export interface GuardContext<T> {
|
|
25
|
+
existing: T | null;
|
|
26
|
+
vault: ReadOnlyVaultFacade;
|
|
27
|
+
userId: string;
|
|
28
|
+
role: Role;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One {before, after} pair handed to an `invariant` function. `before`
|
|
32
|
+
* is null for inserts; `after` reflects the proposed post-commit record.
|
|
33
|
+
*/
|
|
34
|
+
export interface GuardChange<T> {
|
|
35
|
+
before: T | null;
|
|
36
|
+
after: T;
|
|
37
|
+
}
|
|
38
|
+
/** @internal — output of {@link withGuard}. */
|
|
39
|
+
export interface GuardStrategyHandle<T extends Record<string, unknown>> {
|
|
40
|
+
readonly __noydb_strategy: 'guard';
|
|
41
|
+
readonly spec: GuardStrategy<T>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Existential erasure of `GuardStrategyHandle<T>` — used as the
|
|
45
|
+
* element type of `ReadonlyArray<>` fields where the per-handle T
|
|
46
|
+
* differs (e.g. `guardStrategies: [invoiceGuard, disbursementGuard]`).
|
|
47
|
+
*
|
|
48
|
+
* Background: `GuardStrategyHandle<T>` is INVARIANT in T because T
|
|
49
|
+
* appears in callback positions on the spec (`check(incoming: T, ctx)`,
|
|
50
|
+
* `invariant(changes: ReadonlyArray<GuardChange<T>>, ctx)`). So
|
|
51
|
+
* `Handle<Invoice>` is not assignable to `Handle<Record<string, unknown>>`.
|
|
52
|
+
* A bounded existential ("there exists some T satisfying the constraint
|
|
53
|
+
* such that this is a Handle<T>") is the right shape; TypeScript has
|
|
54
|
+
* no first-class existentials, so we fake it with a structurally narrow
|
|
55
|
+
* interface that ERASES T from both the discriminant and the spec.
|
|
56
|
+
*
|
|
57
|
+
* Consumers continue to construct typed handles via `withGuard<T>(...)`
|
|
58
|
+
* which returns `GuardStrategyHandle<T>`. Both `Handle<Invoice>` and
|
|
59
|
+
* `Handle<Disbursement>` structurally assign to `GuardStrategyHandleAny`,
|
|
60
|
+
* so an array of them is `GuardStrategyHandleAny[]`.
|
|
61
|
+
*
|
|
62
|
+
* Internal code that needs T re-narrows via the runtime discriminant
|
|
63
|
+
* (`__noydb_strategy === 'guard'`) plus per-handle type information
|
|
64
|
+
* carried by the registry.
|
|
65
|
+
*
|
|
66
|
+
* NOT exported from the public barrel — keeping this internal
|
|
67
|
+
* discourages consumers from constructing it directly. Used only as
|
|
68
|
+
* the array-element type on `Vault` / `NoydbOptions.guardStrategies`.
|
|
69
|
+
*
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
export interface GuardStrategyHandleAny {
|
|
73
|
+
readonly __noydb_strategy: 'guard';
|
|
74
|
+
readonly spec: GuardStrategy<any>;
|
|
75
|
+
}
|
|
76
|
+
/** Public registration shape. See `withGuard()`. */
|
|
77
|
+
export interface GuardStrategy<T extends Record<string, unknown>> {
|
|
78
|
+
collection: string;
|
|
79
|
+
/**
|
|
80
|
+
* Fires on `Collection.put` (insert + update). The `incoming` argument
|
|
81
|
+
* is the record being written. Throw to cancel the put.
|
|
82
|
+
*
|
|
83
|
+
* Does NOT fire on `Collection.delete` — use {@link onDelete} for
|
|
84
|
+
* delete-time validation. Skipped during an amendment transaction
|
|
85
|
+
* (`db.transaction({ amendment: true })`) — admin/owner override.
|
|
86
|
+
*/
|
|
87
|
+
check?: (incoming: T, ctx: GuardContext<T>) => Promise<void> | void;
|
|
88
|
+
/**
|
|
89
|
+
* Fires on user-initiated `Collection.delete` before the adapter
|
|
90
|
+
* delete and before the ledger append. The `existing` argument is
|
|
91
|
+
* the currently-persisted record. Throw to cancel the delete — no
|
|
92
|
+
* partial state, no tombstone ledger entry.
|
|
93
|
+
*
|
|
94
|
+
* Skipped during an amendment transaction (admin/owner override) —
|
|
95
|
+
* amendments are the unlock primitive. To make a delete TRULY
|
|
96
|
+
* unconditional (e.g. legal-document immutability rules), pair
|
|
97
|
+
* `onDelete` with an `amendment.invariant` that re-throws on any
|
|
98
|
+
* `before !== null && after === null` change:
|
|
99
|
+
*
|
|
100
|
+
* ```ts
|
|
101
|
+
* withGuard<Receipt>({
|
|
102
|
+
* collection: 'receipts',
|
|
103
|
+
* onDelete: () => { throw new RecordLockedError(...) },
|
|
104
|
+
* amendment: {
|
|
105
|
+
* roles: ['admin', 'owner'],
|
|
106
|
+
* invariant: (changes) => {
|
|
107
|
+
* for (const c of changes) {
|
|
108
|
+
* if (c.before !== null && c.after === null) {
|
|
109
|
+
* throw new RecordLockedError(...) // wrapped as InvariantError
|
|
110
|
+
* }
|
|
111
|
+
* }
|
|
112
|
+
* },
|
|
113
|
+
* },
|
|
114
|
+
* })
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* Also skipped on system-internal deletes (derivation tombstones,
|
|
118
|
+
* MV refresh from Dim 14 v2) — those use `_internalDelete`
|
|
119
|
+
* which bypasses every user-facing delete hook. Housekeeping ops are
|
|
120
|
+
* NOT user-initiated and should not trip user invariants.
|
|
121
|
+
*
|
|
122
|
+
* Delete of an absent record is a no-op and does not consult any
|
|
123
|
+
* guard, matching the idempotent-delete contract.
|
|
124
|
+
*/
|
|
125
|
+
onDelete?: (existing: T, ctx: GuardContext<T>) => Promise<void> | void;
|
|
126
|
+
frozenFields?: {
|
|
127
|
+
when: (existing: T) => boolean;
|
|
128
|
+
fields: ReadonlyArray<keyof T>;
|
|
129
|
+
};
|
|
130
|
+
amendment?: {
|
|
131
|
+
roles: ReadonlyArray<'admin' | 'owner'>;
|
|
132
|
+
invariant: (changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>) => Promise<void> | void;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { GuardStrategy, GuardStrategyHandle } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Register a guard for a collection. Guards run on every `put()` /
|
|
4
|
+
* `delete()` for the named collection (after permissions, before
|
|
5
|
+
* encryption) and may:
|
|
6
|
+
*
|
|
7
|
+
* - `check` — block writes by throwing (typically `RecordLockedError`)
|
|
8
|
+
* - `frozenFields` — freeze specific fields once a condition is true
|
|
9
|
+
* - `amendment` — declare an authorized-override path with invariant
|
|
10
|
+
*
|
|
11
|
+
* Pass the returned handle to `createNoydb({ strategies: [...] })`.
|
|
12
|
+
*
|
|
13
|
+
* @see docs/superpowers/specs/2026-05-18-guards-design.md
|
|
14
|
+
*/
|
|
15
|
+
export declare function withGuard<T extends Record<string, unknown>>(strategy: GuardStrategy<T>): GuardStrategyHandle<T>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active periods strategy factory. Only reachable through the
|
|
3
|
+
* `@noy-db/hub/periods` subpath.
|
|
4
|
+
*/
|
|
5
|
+
import type { PeriodsStrategy } from './strategy.js';
|
|
6
|
+
/**
|
|
7
|
+
* Build the default periods strategy. Pass into
|
|
8
|
+
* `createNoydb({ periodsStrategy: withPeriods() })` to enable
|
|
9
|
+
* `vault.closePeriod()` / `vault.openPeriod()` / write-guards.
|
|
10
|
+
*/
|
|
11
|
+
export declare function withPeriods(): PeriodsStrategy;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accounting-period subpath barrel.
|
|
3
|
+
*
|
|
4
|
+
* Public entry points live on `Vault`:
|
|
5
|
+
*
|
|
6
|
+
* - `vault.closePeriod({ name, endDate })`
|
|
7
|
+
* - `vault.openPeriod({ name, startDate, fromPeriod, carryForward })`
|
|
8
|
+
* - `vault.listPeriods()`
|
|
9
|
+
* - `vault.getPeriod(name)`
|
|
10
|
+
*
|
|
11
|
+
* These types support user-defined wrappers and tests; the internal
|
|
12
|
+
* helpers (`loadPeriods`, `assertTsWritable`, …) are exported so the
|
|
13
|
+
* Vault can call them without TypeScript barrel gymnastics.
|
|
14
|
+
*/
|
|
15
|
+
export { withPeriods } from './active.js';
|
|
16
|
+
export type { PeriodsStrategy } from './strategy.js';
|
|
17
|
+
export { PERIODS_COLLECTION, PERIOD_FREEZES_COLLECTION, PERIOD_ARCHIVES_COLLECTION, PERIOD_TARGET_PURGES_COLLECTION, periodExclusiveUpperBound, loadPeriods, chainAnchor, assertTsWritable, validatePeriodName, appendPeriodLedgerEntry, } from './periods.js';
|
|
18
|
+
export type { PeriodRecord, PeriodFreezeRecord, PeriodArchiveRecord, PeriodTargetPurgeRecord, TargetPurgeCount, ClosePeriodOptions, OpenPeriodOptions, CarryForwardContext, ReadOnlyCollection, } from './periods.js';
|