@noy-db/hub 0.3.0-pre.1 → 0.3.0-pre.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aggregate/index.js +9 -8
- package/dist/aggregate/index.js.map +1 -1
- package/dist/api-YGMINAET.js +20 -0
- package/dist/as/index.js +12 -6
- package/dist/attestation/index.js +19 -13
- package/dist/attestation/index.js.map +1 -1
- package/dist/backup-XA5STIYQ.js +225 -0
- package/dist/backup-XA5STIYQ.js.map +1 -0
- package/dist/blobs/index.js +12 -6
- 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 +21 -15
- package/dist/bundle/index.js.map +1 -1
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +32 -26
- package/dist/chunk-25NDNMQ7.js +70 -0
- package/dist/chunk-25NDNMQ7.js.map +1 -0
- package/dist/chunk-2JMMY7HZ.js +188 -0
- package/dist/chunk-2JMMY7HZ.js.map +1 -0
- package/dist/chunk-3CNQ7FQ3.js +430 -0
- package/dist/chunk-3G4KMVUN.js +291 -0
- package/dist/chunk-3G4KMVUN.js.map +1 -0
- package/dist/chunk-3MSQLQNZ.js +74 -0
- package/dist/chunk-45ZZLTFH.js +38 -0
- package/dist/chunk-45ZZLTFH.js.map +1 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-4N5QFSNQ.js +150 -0
- package/dist/chunk-4N5QFSNQ.js.map +1 -0
- package/dist/chunk-4R4Q64W5.js +34 -0
- package/dist/chunk-57V5S7PW.js +130 -0
- package/dist/chunk-57V5S7PW.js.map +1 -0
- package/dist/chunk-5JB73NMC.js +202 -0
- package/dist/chunk-5JB73NMC.js.map +1 -0
- package/dist/chunk-5XIPOCQC.js +155 -0
- package/dist/chunk-5ZOSG3RJ.js +778 -0
- package/dist/chunk-5ZOSG3RJ.js.map +1 -0
- package/dist/chunk-67TNU77I.js +36 -0
- package/dist/chunk-67TNU77I.js.map +1 -0
- package/dist/chunk-6QILBDZU.js +205 -0
- package/dist/chunk-7E67FJ33.js +155 -0
- package/dist/chunk-7ITPJFGC.js +50 -0
- package/dist/chunk-7ITPJFGC.js.map +1 -0
- package/dist/chunk-7NS43EXZ.js +117 -0
- package/dist/chunk-7QIXUSDQ.js +341 -0
- package/dist/chunk-7QIXUSDQ.js.map +1 -0
- package/dist/chunk-7VSGW5KJ.js +74 -0
- package/dist/chunk-7VSGW5KJ.js.map +1 -0
- package/dist/chunk-A2QF4JUE.js +14073 -0
- package/dist/chunk-A2QF4JUE.js.map +1 -0
- package/dist/chunk-A2Y6YFVN.js +209 -0
- package/dist/chunk-AOVDSIL3.js +1221 -0
- package/dist/chunk-AOVDSIL3.js.map +1 -0
- package/dist/chunk-ARSAMO24.js +29 -0
- package/dist/chunk-ARSAMO24.js.map +1 -0
- package/dist/chunk-AWB5JZW6.js +41 -0
- package/dist/chunk-AWB5JZW6.js.map +1 -0
- package/dist/chunk-BCYQA5BK.js +45 -0
- package/dist/chunk-BE7N3AXA.js +621 -0
- package/dist/chunk-BE7N3AXA.js.map +1 -0
- package/dist/chunk-BEIRE5K4.js +164 -0
- package/dist/chunk-BEIRE5K4.js.map +1 -0
- package/dist/chunk-BZO4WCJI.js +86 -0
- package/dist/chunk-BZO4WCJI.js.map +1 -0
- package/dist/chunk-C3YH34IL.js +75 -0
- package/dist/chunk-C3YH34IL.js.map +1 -0
- package/dist/chunk-C7NTK5I3.js +49 -0
- package/dist/chunk-C7NTK5I3.js.map +1 -0
- package/dist/chunk-CB25ONKC.js +129 -0
- package/dist/chunk-CIKY6I4W.js +21 -0
- package/dist/chunk-CKZW6P5V.js +32 -0
- package/dist/chunk-CKZW6P5V.js.map +1 -0
- package/dist/chunk-D26JB3LZ.js +54 -0
- package/dist/chunk-D3EFFFOL.js +59 -0
- package/dist/chunk-D3EFFFOL.js.map +1 -0
- package/dist/chunk-DGH65E7Q.js +466 -0
- package/dist/chunk-DGH65E7Q.js.map +1 -0
- package/dist/chunk-DIRRS7WP.js +42 -0
- package/dist/chunk-DJ3VKYFA.js +150 -0
- package/dist/chunk-DJ3VKYFA.js.map +1 -0
- package/dist/chunk-DMFNPHCX.js +247 -0
- package/dist/chunk-DMFNPHCX.js.map +1 -0
- package/dist/chunk-ELNBMFOS.js +392 -0
- package/dist/chunk-ELNBMFOS.js.map +1 -0
- package/dist/chunk-FH542DDY.js +1505 -0
- package/dist/chunk-FH542DDY.js.map +1 -0
- package/dist/chunk-FQQF23MC.js +45 -0
- package/dist/chunk-FQQF23MC.js.map +1 -0
- package/dist/chunk-FXK4X4BL.js +91 -0
- package/dist/chunk-FXK4X4BL.js.map +1 -0
- package/dist/chunk-GA2QHD6P.js +235 -0
- package/dist/chunk-GA2QHD6P.js.map +1 -0
- package/dist/chunk-GYGLAVCX.js +19 -0
- package/dist/chunk-GYGLAVCX.js.map +1 -0
- package/dist/chunk-H44ZE4IE.js +355 -0
- package/dist/chunk-H6CZSDWK.js +1697 -0
- package/dist/chunk-H6CZSDWK.js.map +1 -0
- package/dist/chunk-H6HM6CVR.js +279 -0
- package/dist/chunk-H6HM6CVR.js.map +1 -0
- package/dist/chunk-HFJIGWJC.js +382 -0
- package/dist/chunk-HUS3J5WM.js +404 -0
- package/dist/chunk-HUS3J5WM.js.map +1 -0
- package/dist/chunk-IDIV5NVH.js +99 -0
- package/dist/chunk-IDIV5NVH.js.map +1 -0
- package/dist/chunk-IGJCYUT5.js +99 -0
- package/dist/chunk-IGJCYUT5.js.map +1 -0
- package/dist/chunk-IGJHJYM6.js +515 -0
- package/dist/chunk-IGJHJYM6.js.map +1 -0
- package/dist/chunk-IP2QBAGS.js +589 -0
- package/dist/chunk-IP2QBAGS.js.map +1 -0
- package/dist/chunk-JK733I5V.js +23 -0
- package/dist/chunk-JK733I5V.js.map +1 -0
- package/dist/chunk-JOQ53DMI.js +255 -0
- package/dist/chunk-JOQ53DMI.js.map +1 -0
- package/dist/chunk-K62IUKOD.js +823 -0
- package/dist/chunk-K62IUKOD.js.map +1 -0
- package/dist/chunk-KPGX66PM.js +230 -0
- package/dist/chunk-KPZS5QAQ.js +151 -0
- package/dist/chunk-KPZS5QAQ.js.map +1 -0
- package/dist/chunk-L2SNBIV7.js +453 -0
- package/dist/chunk-L2SNBIV7.js.map +1 -0
- package/dist/chunk-LP7BEXCT.js +32 -0
- package/dist/chunk-LP7BEXCT.js.map +1 -0
- package/dist/chunk-MCEKIAO4.js +367 -0
- package/dist/chunk-MELR46EF.js +280 -0
- package/dist/chunk-MELR46EF.js.map +1 -0
- package/dist/chunk-MSPNM2OM.js +95 -0
- package/dist/chunk-MSPNM2OM.js.map +1 -0
- package/dist/chunk-NO272T7Q.js +194 -0
- package/dist/chunk-NO272T7Q.js.map +1 -0
- package/dist/chunk-O2DYPAZY.js +23 -0
- package/dist/chunk-ODJWBC5I.js +30 -0
- package/dist/chunk-OEAATWH5.js +686 -0
- package/dist/chunk-OEAATWH5.js.map +1 -0
- package/dist/chunk-OFJ5GPNA.js +71 -0
- package/dist/chunk-OOLO4LQG.js +99 -0
- package/dist/chunk-OOLO4LQG.js.map +1 -0
- package/dist/chunk-P5RY4ZWD.js +662 -0
- package/dist/chunk-P5RY4ZWD.js.map +1 -0
- package/dist/chunk-PR5LC5YX.js +265 -0
- package/dist/chunk-PR5LC5YX.js.map +1 -0
- package/dist/chunk-PXWVF7MC.js +135 -0
- package/dist/chunk-Q3XSMOZM.js +40 -0
- package/dist/chunk-QLLKLFE2.js +94 -0
- package/dist/chunk-QLLKLFE2.js.map +1 -0
- package/dist/chunk-QQJXBZCO.js +1056 -0
- package/dist/chunk-QQJXBZCO.js.map +1 -0
- package/dist/chunk-QYPKGVT4.js +261 -0
- package/dist/chunk-QYPKGVT4.js.map +1 -0
- package/dist/chunk-RKRGDAS7.js +59 -0
- package/dist/chunk-SRVQHVNX.js +164 -0
- package/dist/chunk-SYMS4546.js +29 -0
- package/dist/chunk-SYMS4546.js.map +1 -0
- package/dist/chunk-THNJ3IKU.js +17 -0
- package/dist/chunk-THNJ3IKU.js.map +1 -0
- package/dist/chunk-TPH5EO6L.js +54 -0
- package/dist/chunk-TPH5EO6L.js.map +1 -0
- package/dist/chunk-UFILRICG.js +14 -0
- package/dist/chunk-UTLEAJXC.js +97 -0
- package/dist/chunk-VA4ZWLFY.js +123 -0
- package/dist/chunk-VR24ILCR.js +367 -0
- package/dist/chunk-VYYM3MEN.js +98 -0
- package/dist/chunk-VYYM3MEN.js.map +1 -0
- package/dist/chunk-W5D62AQD.js +944 -0
- package/dist/chunk-W5D62AQD.js.map +1 -0
- package/dist/chunk-WGV4CUZT.js +167 -0
- package/dist/chunk-WGV4CUZT.js.map +1 -0
- package/dist/chunk-WTUNZACT.js +30 -0
- package/dist/chunk-WTUNZACT.js.map +1 -0
- package/dist/chunk-X6CMGUAG.js +69 -0
- package/dist/chunk-X6CMGUAG.js.map +1 -0
- package/dist/chunk-XFXUTFWQ.js +85 -0
- package/dist/chunk-XFXUTFWQ.js.map +1 -0
- package/dist/chunk-XHV25KBM.js +30 -0
- package/dist/chunk-YSXEFGND.js +124 -0
- package/dist/chunk-YXOUQ2H7.js +36 -0
- package/dist/chunk-ZP5PL65C.js +80 -0
- package/dist/classified/index.js +40 -0
- package/dist/classified-marker-LQWWQNIJ.js +24 -0
- package/dist/classified-marker-LQWWQNIJ.js.map +1 -0
- package/dist/collection-facade-YE2O4J4O.js +39 -0
- package/dist/computed-W6MVAMWZ.js +11 -0
- package/dist/consent/index.js +10 -4
- package/dist/consent/index.js.map +1 -1
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-4KXZEB3X.js +28 -0
- package/dist/dead-filter-4KXZEB3X.js.map +1 -0
- package/dist/delegation-OPUU3R2E.js +25 -0
- package/dist/derivations/index.js +13 -6
- package/dist/derive-BGUHU663.js +21 -0
- package/dist/enclave-VXAQD4XJ.js +135 -0
- package/dist/executor-GTVSUUBX.js +25 -0
- package/dist/executor-GZWMTOXB.js +9 -0
- package/dist/executor-XXGS4S3K.js +9 -0
- package/dist/export-accessible-BMULIOYB.js +23 -0
- package/dist/extract-partition-JUQTWDXR.js +36 -0
- package/dist/fanout-sidecar-CKYFH33E.js +74 -0
- package/dist/fanout-sidecar-CKYFH33E.js.map +1 -0
- package/dist/fence-watcher-DHQ775JB.js +69 -0
- package/dist/fence-watcher-DHQ775JB.js.map +1 -0
- package/dist/find-XRGCNGNN.js +11 -0
- package/dist/forget/index.js +11 -5
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +12 -6
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +50 -31
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +303 -1400
- package/dist/index.js +1525 -184
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +4 -4
- package/dist/issue-UB6AA5M6.js +19 -0
- package/dist/json-schema-I22JCYCG.js +44 -0
- package/dist/json-schema-I22JCYCG.js.map +1 -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 +781 -0
- package/dist/kernel/collection.d.ts +1505 -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 +818 -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 +3147 -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 +1723 -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 +165 -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/lazy/index.js +12 -0
- package/dist/ledger-FU6GH5EH.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-YUN7W5QG.js +24 -0
- package/dist/link-set-MNADSH5M.js +31 -0
- package/dist/materialized-views/index.js +20 -10
- package/dist/noydb-6JLBZU4U.js +67 -0
- package/dist/on/index.js +10 -4
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +21 -7
- package/dist/pod/index.js +12 -6
- package/dist/policy-JTFOPPUU.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 +128 -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-HAWO3O7O.js +55 -0
- package/dist/post-register-HAWO3O7O.js.map +1 -0
- package/dist/public-envelope-NJVB7LPA.js +32 -0
- package/dist/purge-scope-FGNNLWHD.js +24 -0
- package/dist/purge-scope-FGNNLWHD.js.map +1 -0
- package/dist/query/index.js +9 -6
- package/dist/read-only-facade-CHCKSEPD.js +8 -0
- package/dist/register-VCKOBWKT.js +23 -0
- package/dist/registry-72UKJ2L4.js +9 -0
- package/dist/registry-BZFLJNEH.js +18 -0
- package/dist/registry-YJEYSYI5.js +19 -0
- package/dist/request-withdrawal-6MJRMFHF.js +31 -0
- package/dist/reveal-BOY7XYFH.js +38 -0
- package/dist/reveal-BOY7XYFH.js.map +1 -0
- package/dist/revoke-4KUNSVJC.js +24 -0
- package/dist/satellites/index.js +8 -0
- package/dist/sealed-record/index.js +13 -7
- package/dist/sealed-record/index.js.map +1 -1
- package/dist/seed-4RRXT42N.js +231 -0
- package/dist/seed-4RRXT42N.js.map +1 -0
- package/dist/session/index.js +10 -4
- package/dist/session/index.js.map +1 -1
- package/dist/shadow/index.js +2 -2
- package/dist/signer-DDDXP5JD.js +25 -0
- package/dist/signer-DDDXP5JD.js.map +1 -0
- package/dist/snapshots/index.js +11 -5
- package/dist/snapshots/index.js.map +1 -1
- package/dist/stale-NXPT56JA.js +14 -0
- package/dist/stale-NXPT56JA.js.map +1 -0
- package/dist/storage-IR6EEAV2.js +23 -0
- package/dist/storage-IR6EEAV2.js.map +1 -0
- package/dist/store-coordination-provider-HPYVFJCV.js +142 -0
- package/dist/sync/index.js +10 -4
- package/dist/sync/index.js.map +1 -1
- package/dist/team/index.js +25 -12
- package/dist/tiers/index.js +11 -5
- package/dist/to/index.js +1 -2
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-66RHOW7N.js +139 -0
- package/dist/verify-66RHOW7N.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 +219 -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 +106 -0
- package/dist/walk-2RWEOCAS.js +241 -0
- package/dist/walk-2RWEOCAS.js.map +1 -0
- package/dist/with/index.js +12 -6
- 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 +207 -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 +69 -0
- package/dist/with-lookup/indexing/persisted-indexes.d.ts +186 -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 +165 -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 +37 -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/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 +26 -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-CLMZEHQT.js +28 -0
- package/dist/withdraw-accessible-CLMZEHQT.js.map +1 -0
- package/package.json +56 -52
- package/dist/adapter/index.d.ts +0 -5
- package/dist/adapter/index.js +0 -15
- package/dist/aggregate/index.d.ts +0 -42
- package/dist/api-RW3KP7WU.js +0 -14
- package/dist/as/index.d.ts +0 -7
- package/dist/at/index.d.ts +0 -5
- package/dist/attestation/index.d.ts +0 -20
- package/dist/backup-XV3IOEGB.js +0 -217
- package/dist/backup-XV3IOEGB.js.map +0 -1
- package/dist/blobs/index.d.ts +0 -44
- package/dist/bundle/index.d.ts +0 -122
- package/dist/bundle-CH-H06dp.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -9
- package/dist/chunk-26LGBE4T.js +0 -42
- package/dist/chunk-26LGBE4T.js.map +0 -1
- package/dist/chunk-2P2HZEXU.js +0 -233
- package/dist/chunk-2P2HZEXU.js.map +0 -1
- package/dist/chunk-3YFXJ3ZP.js +0 -97
- package/dist/chunk-5LUY7UTV.js +0 -380
- package/dist/chunk-5LUY7UTV.js.map +0 -1
- package/dist/chunk-5N6CZTCY.js +0 -367
- package/dist/chunk-5O3AOPDT.js +0 -992
- package/dist/chunk-5O3AOPDT.js.map +0 -1
- package/dist/chunk-5R3ERCDH.js +0 -239
- package/dist/chunk-5R3ERCDH.js.map +0 -1
- package/dist/chunk-5R5JW2JT.js +0 -12502
- package/dist/chunk-5R5JW2JT.js.map +0 -1
- package/dist/chunk-5TDJ56JE.js +0 -32
- package/dist/chunk-5TDJ56JE.js.map +0 -1
- package/dist/chunk-62QYRORB.js +0 -320
- package/dist/chunk-62QYRORB.js.map +0 -1
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-76722EBH.js +0 -451
- package/dist/chunk-76722EBH.js.map +0 -1
- package/dist/chunk-AIWULCUO.js +0 -68
- package/dist/chunk-AIWULCUO.js.map +0 -1
- package/dist/chunk-AQTBSL7R.js +0 -181
- package/dist/chunk-AQTBSL7R.js.map +0 -1
- package/dist/chunk-AXRXJTE2.js +0 -59
- package/dist/chunk-AZAOEIKW.js +0 -155
- package/dist/chunk-BG3SPSR4.js +0 -53
- package/dist/chunk-BG3SPSR4.js.map +0 -1
- package/dist/chunk-BGIZAFY7.js +0 -1
- package/dist/chunk-CMGR4ZEW.js +0 -209
- package/dist/chunk-CWPPNPOH.js +0 -23
- package/dist/chunk-DFEMTNPJ.js +0 -1219
- package/dist/chunk-DFEMTNPJ.js.map +0 -1
- package/dist/chunk-DGDI2D4M.js +0 -79
- package/dist/chunk-DGDI2D4M.js.map +0 -1
- package/dist/chunk-EIZUR2XW.js +0 -36
- package/dist/chunk-FISN7WE4.js +0 -798
- package/dist/chunk-FISN7WE4.js.map +0 -1
- package/dist/chunk-GYGWYIOZ.js +0 -200
- package/dist/chunk-GYGWYIOZ.js.map +0 -1
- package/dist/chunk-HCIPRAGS.js +0 -45
- package/dist/chunk-I2NOIW44.js +0 -83
- package/dist/chunk-I2NOIW44.js.map +0 -1
- package/dist/chunk-I3TIKTJO.js +0 -132
- package/dist/chunk-I3TIKTJO.js.map +0 -1
- package/dist/chunk-IAGBDSCS.js +0 -40
- package/dist/chunk-IELYAOGG.js +0 -78
- package/dist/chunk-IELYAOGG.js.map +0 -1
- package/dist/chunk-IGUYVGGI.js +0 -205
- package/dist/chunk-IO6GRPT6.js +0 -34
- package/dist/chunk-IPB7FTQX.js +0 -273
- package/dist/chunk-IPB7FTQX.js.map +0 -1
- package/dist/chunk-ITNUCOXM.js +0 -148
- package/dist/chunk-ITNUCOXM.js.map +0 -1
- package/dist/chunk-IUEN57TV.js +0 -722
- package/dist/chunk-IUEN57TV.js.map +0 -1
- package/dist/chunk-JNUWZ6D3.js +0 -57
- package/dist/chunk-JNUWZ6D3.js.map +0 -1
- package/dist/chunk-K2WCO3NX.js +0 -1
- package/dist/chunk-KVOXU4T5.js +0 -30
- package/dist/chunk-KXGNJJXB.js +0 -135
- package/dist/chunk-LFLXAY2W.js +0 -414
- package/dist/chunk-LFLXAY2W.js.map +0 -1
- package/dist/chunk-LMTH2RM6.js +0 -129
- package/dist/chunk-LV7M27WM.js +0 -702
- package/dist/chunk-LV7M27WM.js.map +0 -1
- package/dist/chunk-LXQT4WMP.js +0 -684
- package/dist/chunk-LXQT4WMP.js.map +0 -1
- package/dist/chunk-M2YKN37S.js +0 -524
- package/dist/chunk-M2YKN37S.js.map +0 -1
- package/dist/chunk-M6OST55S.js +0 -14
- package/dist/chunk-MD3Y6J3L.js +0 -278
- package/dist/chunk-MD3Y6J3L.js.map +0 -1
- package/dist/chunk-MTMJVJ5W.js +0 -73
- package/dist/chunk-MTMJVJ5W.js.map +0 -1
- package/dist/chunk-NF5JWERG.js +0 -74
- package/dist/chunk-PKHL44ER.js +0 -124
- package/dist/chunk-PSMV73A5.js +0 -117
- package/dist/chunk-Q7SS3IME.js +0 -120
- package/dist/chunk-Q7SS3IME.js.map +0 -1
- package/dist/chunk-QHJW5EXU.js +0 -54
- package/dist/chunk-RUEKROOS.js +0 -80
- package/dist/chunk-RUIMKQTA.js +0 -23
- package/dist/chunk-RUIMKQTA.js.map +0 -1
- package/dist/chunk-SKF73JOP.js +0 -355
- package/dist/chunk-SM3AVUHC.js +0 -42
- package/dist/chunk-SMXWYP24.js +0 -155
- package/dist/chunk-SRB2XEWB.js +0 -148
- package/dist/chunk-SRB2XEWB.js.map +0 -1
- package/dist/chunk-TA66UMI4.js +0 -123
- package/dist/chunk-TEILUWOI.js +0 -664
- package/dist/chunk-TEILUWOI.js.map +0 -1
- package/dist/chunk-TJYQIGAP.js +0 -82
- package/dist/chunk-TJYQIGAP.js.map +0 -1
- package/dist/chunk-UAG5KWVA.js +0 -367
- package/dist/chunk-UDRIWL7A.js +0 -382
- package/dist/chunk-UIU2THRG.js +0 -1937
- package/dist/chunk-UIU2THRG.js.map +0 -1
- package/dist/chunk-UPJNJGGA.js +0 -572
- package/dist/chunk-UPJNJGGA.js.map +0 -1
- package/dist/chunk-UV5MFVO3.js +0 -21
- package/dist/chunk-V7RWQRG7.js +0 -430
- package/dist/chunk-VCTFO5CO.js +0 -71
- package/dist/chunk-VFQGRQIH.js +0 -97
- package/dist/chunk-VFQGRQIH.js.map +0 -1
- package/dist/chunk-WWGT2MDV.js +0 -762
- package/dist/chunk-WWGT2MDV.js.map +0 -1
- package/dist/chunk-WYSO2NIH.js +0 -30
- package/dist/chunk-XXYIOFUB.js +0 -164
- package/dist/chunk-Y22T3KQE.js +0 -261
- package/dist/chunk-Y22T3KQE.js.map +0 -1
- package/dist/chunk-ZCGAHGUS.js +0 -230
- package/dist/chunk-ZYUC53LT.js +0 -1370
- package/dist/chunk-ZYUC53LT.js.map +0 -1
- package/dist/collection-facade-GQAOGJP2.js +0 -33
- package/dist/consent/index.d.ts +0 -23
- package/dist/crdt/index.d.ts +0 -34
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-UL5HKLER.js +0 -19
- package/dist/derivations/index.d.ts +0 -70
- package/dist/describe/index.d.ts +0 -1
- package/dist/describe/index.js +0 -1
- package/dist/describe-aBkJR2sd.d.ts +0 -131
- package/dist/dev-unlock-C9Ro3v_O.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-UL5LW66V.js +0 -88
- package/dist/executor-2FWQRLMG.js +0 -15
- package/dist/executor-QZ7BXICW.js +0 -9
- package/dist/executor-Z5ZLJVTV.js +0 -9
- package/dist/export-accessible-KRV5W4GH.js +0 -17
- package/dist/extract-partition-GLKBOXFQ.js +0 -30
- package/dist/fanout-sidecar-GF3DJ6KR.js +0 -71
- package/dist/fanout-sidecar-GF3DJ6KR.js.map +0 -1
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -35
- package/dist/hash-Cp5uwiox.d.ts +0 -67
- package/dist/history/index.d.ts +0 -61
- package/dist/i18n/index.d.ts +0 -37
- package/dist/in/index.d.ts +0 -5
- package/dist/index-B9QdHytu.d.ts +0 -123
- package/dist/index-BF9_96A5.d.ts +0 -123
- package/dist/index-BzUo1B6n.d.ts +0 -20730
- package/dist/indexing/index.d.ts +0 -39
- package/dist/issue-Y6UVIR43.js +0 -13
- package/dist/kernel/index.d.ts +0 -32
- package/dist/kernel/index.js +0 -53
- package/dist/ledger-RYI35CDS.js +0 -36
- package/dist/liberate-CRPZEV7O.js +0 -18
- package/dist/materialized-views/index.d.ts +0 -173
- package/dist/mime-magic-CGhw37_E.d.ts +0 -103
- package/dist/noydb-367AM4HT.js +0 -50
- package/dist/on/index.d.ts +0 -5
- package/dist/overlay-views/index.d.ts +0 -98
- package/dist/periods/index.d.ts +0 -20
- package/dist/pod/index.d.ts +0 -63
- package/dist/policy-IXK4FVXP.js +0 -41
- package/dist/portability/index.d.ts +0 -20
- package/dist/public-envelope-JHDQCPSX.js +0 -32
- package/dist/query/index.d.ts +0 -5
- package/dist/read-only-facade-5ADRJVTM.js +0 -8
- package/dist/registry-45RJNWGU.js +0 -9
- package/dist/registry-5GRV5VXI.js +0 -13
- package/dist/registry-WEUCHBO4.js +0 -11
- package/dist/request-withdrawal-GBPH2FDY.js +0 -25
- package/dist/revoke-TUFRGI6S.js +0 -18
- package/dist/sealed-record/index.d.ts +0 -69
- package/dist/session/index.d.ts +0 -44
- package/dist/shadow/index.d.ts +0 -15
- package/dist/signer-PNKTBVF7.js +0 -19
- package/dist/snapshots/index.d.ts +0 -26
- package/dist/stale-3JWHNDIY.js +0 -14
- package/dist/store-coordination-provider-3I7XWZZK.js +0 -142
- package/dist/subject-index-O75wKshW.d.ts +0 -362
- package/dist/sync/index.d.ts +0 -41
- package/dist/team/index.d.ts +0 -116
- package/dist/tiers/index.d.ts +0 -5
- package/dist/to/index.d.ts +0 -5
- package/dist/transition-guard-C7ol6oPw.d.ts +0 -165
- package/dist/tx/index.d.ts +0 -35
- package/dist/ui/index.d.ts +0 -1
- package/dist/ulid-DRH25k3y.d.ts +0 -66
- package/dist/util/index.d.ts +0 -79
- package/dist/vault-diff-B5fYNBL7.d.ts +0 -147
- package/dist/with/index.d.ts +0 -38
- package/dist/with-materialized-view-6p0Fk8bL.d.ts +0 -27
- package/dist/with-overlayed-view-BJ6mXGMd.d.ts +0 -12
- package/dist/with-rollup-BvQo3ROo.d.ts +0 -47
- package/dist/withdraw-accessible-FFS46EOD.js +0 -22
- /package/dist/{adapter/index.js.map → api-YGMINAET.js.map} +0 -0
- /package/dist/{chunk-V7RWQRG7.js.map → chunk-3CNQ7FQ3.js.map} +0 -0
- /package/dist/{chunk-NF5JWERG.js.map → chunk-3MSQLQNZ.js.map} +0 -0
- /package/dist/{chunk-IO6GRPT6.js.map → chunk-4R4Q64W5.js.map} +0 -0
- /package/dist/{chunk-SMXWYP24.js.map → chunk-5XIPOCQC.js.map} +0 -0
- /package/dist/{chunk-IGUYVGGI.js.map → chunk-6QILBDZU.js.map} +0 -0
- /package/dist/{chunk-AZAOEIKW.js.map → chunk-7E67FJ33.js.map} +0 -0
- /package/dist/{chunk-PSMV73A5.js.map → chunk-7NS43EXZ.js.map} +0 -0
- /package/dist/{chunk-CMGR4ZEW.js.map → chunk-A2Y6YFVN.js.map} +0 -0
- /package/dist/{chunk-HCIPRAGS.js.map → chunk-BCYQA5BK.js.map} +0 -0
- /package/dist/{chunk-LMTH2RM6.js.map → chunk-CB25ONKC.js.map} +0 -0
- /package/dist/{chunk-UV5MFVO3.js.map → chunk-CIKY6I4W.js.map} +0 -0
- /package/dist/{chunk-QHJW5EXU.js.map → chunk-D26JB3LZ.js.map} +0 -0
- /package/dist/{chunk-SM3AVUHC.js.map → chunk-DIRRS7WP.js.map} +0 -0
- /package/dist/{chunk-SKF73JOP.js.map → chunk-H44ZE4IE.js.map} +0 -0
- /package/dist/{chunk-UDRIWL7A.js.map → chunk-HFJIGWJC.js.map} +0 -0
- /package/dist/{chunk-ZCGAHGUS.js.map → chunk-KPGX66PM.js.map} +0 -0
- /package/dist/{chunk-5N6CZTCY.js.map → chunk-MCEKIAO4.js.map} +0 -0
- /package/dist/{chunk-CWPPNPOH.js.map → chunk-O2DYPAZY.js.map} +0 -0
- /package/dist/{chunk-KVOXU4T5.js.map → chunk-ODJWBC5I.js.map} +0 -0
- /package/dist/{chunk-VCTFO5CO.js.map → chunk-OFJ5GPNA.js.map} +0 -0
- /package/dist/{chunk-KXGNJJXB.js.map → chunk-PXWVF7MC.js.map} +0 -0
- /package/dist/{chunk-IAGBDSCS.js.map → chunk-Q3XSMOZM.js.map} +0 -0
- /package/dist/{chunk-AXRXJTE2.js.map → chunk-RKRGDAS7.js.map} +0 -0
- /package/dist/{chunk-XXYIOFUB.js.map → chunk-SRVQHVNX.js.map} +0 -0
- /package/dist/{chunk-M6OST55S.js.map → chunk-UFILRICG.js.map} +0 -0
- /package/dist/{chunk-3YFXJ3ZP.js.map → chunk-UTLEAJXC.js.map} +0 -0
- /package/dist/{chunk-TA66UMI4.js.map → chunk-VA4ZWLFY.js.map} +0 -0
- /package/dist/{chunk-UAG5KWVA.js.map → chunk-VR24ILCR.js.map} +0 -0
- /package/dist/{chunk-WYSO2NIH.js.map → chunk-XHV25KBM.js.map} +0 -0
- /package/dist/{chunk-PKHL44ER.js.map → chunk-YSXEFGND.js.map} +0 -0
- /package/dist/{chunk-EIZUR2XW.js.map → chunk-YXOUQ2H7.js.map} +0 -0
- /package/dist/{chunk-RUEKROOS.js.map → chunk-ZP5PL65C.js.map} +0 -0
- /package/dist/{describe → classified}/index.js.map +0 -0
- /package/dist/{api-RW3KP7WU.js.map → collection-facade-YE2O4J4O.js.map} +0 -0
- /package/dist/{chunk-BGIZAFY7.js.map → computed-W6MVAMWZ.js.map} +0 -0
- /package/dist/{chunk-K2WCO3NX.js.map → delegation-OPUU3R2E.js.map} +0 -0
- /package/dist/{collection-facade-GQAOGJP2.js.map → derive-BGUHU663.js.map} +0 -0
- /package/dist/{delegation-UL5HKLER.js.map → enclave-VXAQD4XJ.js.map} +0 -0
- /package/dist/{enclave-UL5LW66V.js.map → executor-GTVSUUBX.js.map} +0 -0
- /package/dist/{executor-2FWQRLMG.js.map → executor-GZWMTOXB.js.map} +0 -0
- /package/dist/{executor-QZ7BXICW.js.map → executor-XXGS4S3K.js.map} +0 -0
- /package/dist/{executor-Z5ZLJVTV.js.map → export-accessible-BMULIOYB.js.map} +0 -0
- /package/dist/{export-accessible-KRV5W4GH.js.map → extract-partition-JUQTWDXR.js.map} +0 -0
- /package/dist/{extract-partition-GLKBOXFQ.js.map → find-XRGCNGNN.js.map} +0 -0
- /package/dist/{issue-Y6UVIR43.js.map → issue-UB6AA5M6.js.map} +0 -0
- /package/dist/{kernel → lazy}/index.js.map +0 -0
- /package/dist/{ledger-RYI35CDS.js.map → ledger-FU6GH5EH.js.map} +0 -0
- /package/dist/{liberate-CRPZEV7O.js.map → liberate-YUN7W5QG.js.map} +0 -0
- /package/dist/{noydb-367AM4HT.js.map → link-set-MNADSH5M.js.map} +0 -0
- /package/dist/{policy-IXK4FVXP.js.map → noydb-6JLBZU4U.js.map} +0 -0
- /package/dist/{public-envelope-JHDQCPSX.js.map → policy-JTFOPPUU.js.map} +0 -0
- /package/dist/{read-only-facade-5ADRJVTM.js.map → public-envelope-NJVB7LPA.js.map} +0 -0
- /package/dist/{registry-45RJNWGU.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
- /package/dist/{registry-5GRV5VXI.js.map → register-VCKOBWKT.js.map} +0 -0
- /package/dist/{registry-WEUCHBO4.js.map → registry-72UKJ2L4.js.map} +0 -0
- /package/dist/{request-withdrawal-GBPH2FDY.js.map → registry-BZFLJNEH.js.map} +0 -0
- /package/dist/{revoke-TUFRGI6S.js.map → registry-YJEYSYI5.js.map} +0 -0
- /package/dist/{signer-PNKTBVF7.js.map → request-withdrawal-6MJRMFHF.js.map} +0 -0
- /package/dist/{stale-3JWHNDIY.js.map → revoke-4KUNSVJC.js.map} +0 -0
- /package/dist/{withdraw-accessible-FFS46EOD.js.map → satellites/index.js.map} +0 -0
- /package/dist/{store-coordination-provider-3I7XWZZK.js.map → store-coordination-provider-HPYVFJCV.js.map} +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Query } from '../../kernel/query/builder.js';
|
|
2
|
+
import type { MaterializedViewStrategy } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Walks a `Query<T>` plan and returns the set of source collection
|
|
5
|
+
* names that any source-write should trigger a refresh on.
|
|
6
|
+
*
|
|
7
|
+
* Handles:
|
|
8
|
+
* - root collection (the one the query was built from)
|
|
9
|
+
* - FK join targets (`.join(field, { as })`)
|
|
10
|
+
*
|
|
11
|
+
* Also handles:
|
|
12
|
+
* - cross-join targets (`.crossJoin(target, { as })`) — v3
|
|
13
|
+
*
|
|
14
|
+
* Deferred:
|
|
15
|
+
* - `.wherePredicate(name)` — v2 predicate primitive
|
|
16
|
+
* - Overlay-name expansion to {base, overlay}
|
|
17
|
+
*
|
|
18
|
+
* The set is materialized at MV registration time. The MV registry
|
|
19
|
+
* uses it to (a) dispatch `onSourceWrite` only to MVs that actually
|
|
20
|
+
* care, and (b) contribute edges to the shared cycle-detection graph.
|
|
21
|
+
*/
|
|
22
|
+
export declare function analyzeDependencies(query: Query<any>): Set<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Convenience: produce a stable string summary of the query plan
|
|
25
|
+
* suitable for `queryHash` derivation. Captures everything the
|
|
26
|
+
* dependency analyzer reads + the where/orderBy/limit/offset
|
|
27
|
+
* structure that affects materialized rows.
|
|
28
|
+
*
|
|
29
|
+
* `joinContext` is intentionally NOT included — the join-resolution
|
|
30
|
+
* function references would defeat hash determinism. The set of join
|
|
31
|
+
* TARGETS (collection names) IS included via the plan.joins legs.
|
|
32
|
+
*/
|
|
33
|
+
export declare function summarizeQueryPlan(query: Query<any>): string;
|
|
34
|
+
/**
|
|
35
|
+
* Canonical string description of a UNION MV's plan, used as input to
|
|
36
|
+
* `computeQueryHash`.
|
|
37
|
+
*
|
|
38
|
+
* Asymmetry note:
|
|
39
|
+
* - Arm collection names are NOT sorted. Declaration order is
|
|
40
|
+
* semantically meaningful for the dedup-only UNION path —
|
|
41
|
+
* `materializeUnionResult` iterates `spec.unionSources` in
|
|
42
|
+
* declaration order and keeps the first-seen row per composite key
|
|
43
|
+
* (tie-break precedence). If we sorted arms here, a consumer who
|
|
44
|
+
* reordered `unionSources` to change precedence would compute the
|
|
45
|
+
* same `queryHash`, refresh would be a no-op, and stale MV rows
|
|
46
|
+
* would persist. Hashing in declaration order makes any reorder
|
|
47
|
+
* trigger a refresh.
|
|
48
|
+
* - `groupBy` fields ARE sorted. Multi-key groupBy buckets are
|
|
49
|
+
* commutative (`canonicalGroupKey` produces the same composite key
|
|
50
|
+
* regardless of field order in the input spec).
|
|
51
|
+
* - `aggregate` keys ARE sorted. Reducer-spec keys are independent
|
|
52
|
+
* of each other — order of declaration doesn't change output.
|
|
53
|
+
*
|
|
54
|
+
* Per-arm `map` functions are NOT fingerprinted; consumers must bump
|
|
55
|
+
* the MV's `name` (or rely on application-level cache busting) when
|
|
56
|
+
* `map` semantics change non-equivalently.
|
|
57
|
+
*/
|
|
58
|
+
export declare function summarizeUnionPlan<T extends Record<string, unknown>>(spec: MaterializedViewStrategy<T>): string;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { Collection } from '../../kernel/collection.js';
|
|
2
|
+
import type { TxContext } from '../../with-commit/tx/transaction.js';
|
|
3
|
+
import type { MVQueryContext } from './types.js';
|
|
4
|
+
import type { RegisteredMV } from './registry.js';
|
|
5
|
+
import { type PutDerivedOutputCtx } from '../../kernel/via/dispatch.js';
|
|
6
|
+
/**
|
|
7
|
+
* Accessor shape passed in from the owning Vault. Mirrors v1's
|
|
8
|
+
* `DerivationStaleAccessor` — provides the per-collection resolver
|
|
9
|
+
* and the active TxContext so refresh writes/tombstones register on
|
|
10
|
+
* `_executed` for rollback symmetry.
|
|
11
|
+
*/
|
|
12
|
+
export interface MVExecutorAccessor {
|
|
13
|
+
getCollection(name: string): Collection<any>;
|
|
14
|
+
getActiveTxContext(): TxContext | null;
|
|
15
|
+
/**
|
|
16
|
+
* Vault-shaped accessor passed to the MV's `query()` callback at
|
|
17
|
+
* each refresh. Same instance the registry used at registration
|
|
18
|
+
* time; threading through the executor lets the refresh path
|
|
19
|
+
* re-evaluate the closure against the live vault state.
|
|
20
|
+
*/
|
|
21
|
+
getQueryContext(): MVQueryContext;
|
|
22
|
+
/**
|
|
23
|
+
* #638 Task 5 — ctx for `putDerivedOutput`'s frozen-period skip+audit. #641: the lazy
|
|
24
|
+
* resolve-on-read caller (`stale.ts#resolveStaleMVOnRead`) now supplies one too — built at
|
|
25
|
+
* the `Collection.get()`/`list()` entry point with a `'resolve-on-read'` sentinel id (no
|
|
26
|
+
* real "reacting write" for a read-triggered materialize, mirroring `refreshView()`'s
|
|
27
|
+
* `'refreshView'` sentinel). Still declared optional here since `MVExecutorAccessor` is a
|
|
28
|
+
* general shape and a future caller could reasonably omit it.
|
|
29
|
+
*/
|
|
30
|
+
dispatchCtx?: PutDerivedOutputCtx;
|
|
31
|
+
}
|
|
32
|
+
export interface RefreshResult {
|
|
33
|
+
/** Rows newly written / overwritten. */
|
|
34
|
+
written: number;
|
|
35
|
+
/** Rows tombstoned via `_internalDelete` (only when `onEmpty: 'delete'`). */
|
|
36
|
+
deleted: number;
|
|
37
|
+
/** Failed row writes (non-strict mode). */
|
|
38
|
+
failed: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Run an MV's `query()` and write the result rows to the output
|
|
42
|
+
* collection. Same-DEK encryption: routes through the standard
|
|
43
|
+
* `Collection.put` pipeline, so the output collection's DEK is what
|
|
44
|
+
* gets used (matches the v2 spec's "same DEK as the left-most source"
|
|
45
|
+
* invariant — `Collection.put` looks up the DEK by collection name,
|
|
46
|
+
* and the output collection IS the MV's owned collection).
|
|
47
|
+
*
|
|
48
|
+
* Stamps `_materializedFrom` onto every emitted row.
|
|
49
|
+
*
|
|
50
|
+
* **Tombstoning:** when `spec.onEmpty: 'delete'` (default), rows
|
|
51
|
+
* that existed in a prior refresh but no longer appear in the new
|
|
52
|
+
* materialized result are deleted via `Collection._internalDelete` —
|
|
53
|
+
* the housekeeping bypass primitive prevents user
|
|
54
|
+
* `onDelete` guards on the output collection from firing on these
|
|
55
|
+
* system-internal deletes. `onEmpty: 'keep'` opts out (rows from
|
|
56
|
+
* prior refreshes linger even when the new result lacks them).
|
|
57
|
+
*
|
|
58
|
+
* **Cost ceiling:** if the materialized row count exceeds
|
|
59
|
+
* `spec.maxRows` (default 100k), throws `MaterializedViewTooLargeError`
|
|
60
|
+
* before any writes hit the store — so strict-mode rollback is
|
|
61
|
+
* clean.
|
|
62
|
+
*
|
|
63
|
+
* **Strict mode:** `spec.strict === true` re-throws on any
|
|
64
|
+
* row-write failure; the active TxContext registration means the
|
|
65
|
+
* source-write rolls back atomically via `revertExecuted`.
|
|
66
|
+
*
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
export declare const MaterializedViewExecutor: {
|
|
70
|
+
refresh(reg: RegisteredMV, accessor: MVExecutorAccessor): Promise<RefreshResult>;
|
|
71
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { withMaterializedView } from './with-materialized-view.js';
|
|
2
|
+
export { MaterializedViewRegistry } from './registry.js';
|
|
3
|
+
export { MaterializedViewExecutor } from './executor.js';
|
|
4
|
+
export { analyzeDependencies, summarizeQueryPlan } from './dependency-analyzer.js';
|
|
5
|
+
export { computeQueryHash, canonicalizeQueryPlan } from './query-hash.js';
|
|
6
|
+
export { markMVStale, resolveStaleMVOnRead, isMVStale, clearMVStale } from './stale.js';
|
|
7
|
+
export type { MVStaleAccessor } from './stale.js';
|
|
8
|
+
export type { MaterializedViewStrategy, MaterializedViewStrategyHandle, MaterializedViewOutput, MaterializedFromMeta, UnionSource, UnionArmJoin, } from './types.js';
|
|
9
|
+
export type { RegisteredMV } from './registry.js';
|
|
10
|
+
export type { MVExecutorAccessor, RefreshResult } from './executor.js';
|
|
11
|
+
export { MaterializedViewCycleError, MaterializedViewConfigError, MaterializedViewSourceUnknownError, MaterializedViewTooLargeError, } from '../../kernel/errors.js';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare function computeQueryHash(mvName: string,
|
|
2
|
+
/**
|
|
3
|
+
* Source-collection set the query depends on. Sorted before
|
|
4
|
+
* canonicalization so set iteration order doesn't affect the hash.
|
|
5
|
+
*/
|
|
6
|
+
dependencies: ReadonlySet<string>,
|
|
7
|
+
/**
|
|
8
|
+
* Stringified query-plan summary. The caller produces this from the
|
|
9
|
+
* `Query<T>` builder — concretely: a JSON serialization of clauses +
|
|
10
|
+
* orderBy + limit + offset + joins. Function bodies inside
|
|
11
|
+
* `wherePredicate` are NOT included here (those carry their own
|
|
12
|
+
* `predicateHash` to be folded in by a later sub-issue).
|
|
13
|
+
*/
|
|
14
|
+
queryPlanSummary: string): Promise<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Canonicalize a query plan for hashing. Walks the plan structure
|
|
17
|
+
* with sorted keys so insertion order doesn't perturb the result.
|
|
18
|
+
* Lives here rather than in `query/builder.ts` to keep that module
|
|
19
|
+
* stable across MV-specific evolutions.
|
|
20
|
+
*
|
|
21
|
+
* @internal exported for testing
|
|
22
|
+
*/
|
|
23
|
+
export declare function canonicalizeQueryPlan(plan: unknown): string;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { ViaGraph, FieldRef, EdgeKind, Grain } from '../../kernel/via/graph.js';
|
|
2
|
+
import type { FieldClause } from '../../kernel/query/predicate.js';
|
|
3
|
+
import type { MaterializedViewStrategy, MVQueryContext } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* One registered MV strategy alongside its derived metadata. Stored
|
|
6
|
+
* type-erased on `TRow` so the registry can hold heterogeneous MVs.
|
|
7
|
+
*/
|
|
8
|
+
export interface RegisteredMV {
|
|
9
|
+
readonly spec: MaterializedViewStrategy<any>;
|
|
10
|
+
/** Output collection name (`spec.output?.collection ?? spec.name`). */
|
|
11
|
+
readonly outputCollection: string;
|
|
12
|
+
/** Set of source collections; populated at registration via the analyzer. */
|
|
13
|
+
readonly dependencies: ReadonlySet<string>;
|
|
14
|
+
/** Canonical `queryHash` — `_materializedFrom.queryHash` for every emitted row. */
|
|
15
|
+
readonly queryHash: string;
|
|
16
|
+
/**
|
|
17
|
+
* Top-level FieldClauses on the partition field, captured at
|
|
18
|
+
* registration time. Used by the cycle detector to resolve
|
|
19
|
+
* same-collection-as-source edges via the partition-discriminator
|
|
20
|
+
* check. Empty when `spec.output?.partition` is undefined.
|
|
21
|
+
*/
|
|
22
|
+
readonly partitionClauses: readonly FieldClause[];
|
|
23
|
+
/**
|
|
24
|
+
* #638 Task 2 — `'record'` for a row-per-source-row Query<T> or
|
|
25
|
+
* `unionSources` MV, `'aggregate'` for a `.groupBy().aggregate()` MV
|
|
26
|
+
* (the shape that requires explicit `sources`, since the dependency
|
|
27
|
+
* analyzer can't walk an aggregate plan). Feeds `edges()`'s grain.
|
|
28
|
+
*/
|
|
29
|
+
readonly grain: Grain;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Vault-internal registry of MV strategies. Owned by `Vault`; not
|
|
33
|
+
* exported. Parallel to v1's `DerivationRegistry`; the two graphs share
|
|
34
|
+
* a single cycle-detection pass at vault open (see `validate`).
|
|
35
|
+
*
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
export declare class MaterializedViewRegistry {
|
|
39
|
+
/** Keyed by `spec.name`. */
|
|
40
|
+
private readonly _byName;
|
|
41
|
+
/** Keyed by dependency source-collection → MVs that depend on it. */
|
|
42
|
+
private readonly _bySource;
|
|
43
|
+
/**
|
|
44
|
+
* Register an MV. Invokes `spec.query()` once at registration time to
|
|
45
|
+
* read the plan + join context; the resulting `Query<T>` is discarded
|
|
46
|
+
* after dependency extraction. `vault.collection(...)` must therefore
|
|
47
|
+
* be functional by the time this runs — typically wired from
|
|
48
|
+
* `Vault._initMaterializedViews` after collection bootstrap.
|
|
49
|
+
*
|
|
50
|
+
* Throws `MaterializedViewSourceUnknownError` if the analyzer
|
|
51
|
+
* surfaces a dependency the vault doesn't know about (when a
|
|
52
|
+
* `knownCollections` checker is supplied).
|
|
53
|
+
*/
|
|
54
|
+
register(spec: MaterializedViewStrategy<any>, db: MVQueryContext, options?: {
|
|
55
|
+
knownCollections?: (name: string) => boolean;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
/** All MVs that depend on `source`, in registration order. */
|
|
58
|
+
mvsForSource(source: string): ReadonlyArray<RegisteredMV>;
|
|
59
|
+
/** Single MV by name, or `undefined`. */
|
|
60
|
+
byName(name: string): RegisteredMV | undefined;
|
|
61
|
+
/** Iterate over every registered MV. */
|
|
62
|
+
all(): ReadonlyArray<RegisteredMV>;
|
|
63
|
+
/**
|
|
64
|
+
* Graph edges for #638 Task 2: one `'mv'` edge per registered MV — target
|
|
65
|
+
* = the output collection (a `WHOLE_RECORD` artifact node), sources =
|
|
66
|
+
* every dependency (also `WHOLE_RECORD` nodes). Same-collection edges
|
|
67
|
+
* (`dep === outputCollection`) are skipped IFF the MV declares an
|
|
68
|
+
* `output.partition` discriminator AND the query has a where-clause that
|
|
69
|
+
* provably excludes the partition value (`partitionDisjoint`) — the SAME
|
|
70
|
+
* condition the old local DFS used. Grain comes from the registration-time
|
|
71
|
+
* `RegisteredMV.grain`.
|
|
72
|
+
*/
|
|
73
|
+
edges(): ReadonlyArray<{
|
|
74
|
+
readonly target: FieldRef;
|
|
75
|
+
readonly sources: readonly FieldRef[];
|
|
76
|
+
readonly kind: EdgeKind;
|
|
77
|
+
readonly grain: Grain;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* Cycle detection, delegated to `ViaGraph.assertAcyclic()` (#638 Task 2 —
|
|
81
|
+
* retires the local DFS). `graph` is the caller's shared per-vault graph,
|
|
82
|
+
* ALREADY carrying this registry's `edges()` AND `DerivationRegistry`'s
|
|
83
|
+
* (registered by the caller — see `Vault._initMaterializedViews`, which
|
|
84
|
+
* runs after `_initDerivations`, so a pure-derivation cycle already threw
|
|
85
|
+
* `DerivationCycleError` there; any cycle surfacing here necessarily
|
|
86
|
+
* touches an MV edge). Throws `MaterializedViewCycleError` — SAME class as
|
|
87
|
+
* before.
|
|
88
|
+
*/
|
|
89
|
+
validate(graph: ViaGraph): void;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Wrap an `MVQueryContext` so its `.collection().query()` returns a
|
|
93
|
+
* Query<T> with the MV's declared predicates attached. Bare Queries
|
|
94
|
+
* (outside of any MV) don't gain `.wherePredicate()` — only Queries
|
|
95
|
+
* obtained through this wrapped db do.
|
|
96
|
+
*
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
export declare function wrapDbWithPredicates(db: MVQueryContext, predicates: NonNullable<MaterializedViewStrategy<Record<string, unknown>>['predicates']>): MVQueryContext;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Collection } from '../../kernel/collection.js';
|
|
2
|
+
import type { TxContext } from '../../with-commit/tx/transaction.js';
|
|
3
|
+
import type { PutDerivedOutputCtx } from '../../kernel/via/dispatch.js';
|
|
4
|
+
import type { MaterializedViewRegistry } from './registry.js';
|
|
5
|
+
import type { MVQueryContext } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Accessor shape passed in from the owning Vault. Provides the
|
|
8
|
+
* registry (used as a stable WeakMap key + to look up MVs by output
|
|
9
|
+
* collection) and the runtime context the lazy refresh needs.
|
|
10
|
+
* Mirrors v1's `DerivationStaleAccessor`.
|
|
11
|
+
*/
|
|
12
|
+
export interface MVStaleAccessor {
|
|
13
|
+
registry(): MaterializedViewRegistry;
|
|
14
|
+
getCollection(name: string): Collection<any>;
|
|
15
|
+
getActiveTxContext(): TxContext | null;
|
|
16
|
+
getQueryContext(): MVQueryContext;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Mark an MV as stale. Called from `Collection.dispatchMaterializedViews`
|
|
20
|
+
* when a source-write fires for a `refresh: 'lazy'` MV.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function markMVStale(registry: MaterializedViewRegistry, mvName: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Test-only: check whether a given MV name is currently flagged stale
|
|
27
|
+
* against a registry. Exported so the regression suite can pin the
|
|
28
|
+
* stale-bit lifecycle without touching the internal `WeakMap`.
|
|
29
|
+
*
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export declare function isMVStale(registry: MaterializedViewRegistry, mvName: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Called from `Collection.get` (and any reader that materializes the
|
|
35
|
+
* MV's output collection). If any MV producing `outputCollection` is
|
|
36
|
+
* flagged stale, runs the executor against the live source state
|
|
37
|
+
* before returning. No-op when there is no pending work — keeps the
|
|
38
|
+
* read fast path negligible.
|
|
39
|
+
*
|
|
40
|
+
* `dispatchCtx` (#641): threaded from the calling `Collection`'s
|
|
41
|
+
* `#dispatchCtx({ collection: outputCollection, id: 'resolve-on-read' })` — a read has no
|
|
42
|
+
* real "reacting write" record, so `'resolve-on-read'` is the sentinel id, mirroring
|
|
43
|
+
* `Vault.refreshView()`'s `'refreshView'` sentinel for the same reason. Passed straight
|
|
44
|
+
* through to the executor so a stale row whose output lands in a closed period follows the
|
|
45
|
+
* frozen-output rule (skip + `derivation:skipped-frozen`, #637) instead of throwing
|
|
46
|
+
* `PeriodClosedError` out of a read.
|
|
47
|
+
*
|
|
48
|
+
* Dynamic-imports the executor only when a stale flag actually fires
|
|
49
|
+
* (the floor-bundle isolation pattern v1 derivations established in
|
|
50
|
+
* floor-bundle isolation pattern).
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveStaleMVOnRead(accessor: MVStaleAccessor, outputCollection: string, dispatchCtx?: PutDerivedOutputCtx): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Drop every stale flag for a registry. Used after a manual
|
|
55
|
+
* `vault.refreshView(name)` runs the executor explicitly — the
|
|
56
|
+
* post-refresh state matches the registered strategies, so
|
|
57
|
+
* lingering stale bits would force a redundant refresh on the next
|
|
58
|
+
* read.
|
|
59
|
+
*
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export declare function clearMVStale(registry: MaterializedViewRegistry, mvName: string): void;
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import type { Query } from '../../kernel/query/builder.js';
|
|
2
|
+
import type { Collection } from '../../kernel/collection.js';
|
|
3
|
+
import type { AggregateSpec, Aggregation } from '../../with-lookup/aggregate/aggregation.js';
|
|
4
|
+
import type { GroupedAggregation } from '../../with-lookup/aggregate/groupby.js';
|
|
5
|
+
import type { JoinStrategy } from '../../kernel/query/join.js';
|
|
6
|
+
import type { MoneyDescriptor } from '../../via/money/descriptor.js';
|
|
7
|
+
import type { I18nTextDescriptor } from '../../via/i18n/core.js';
|
|
8
|
+
/**
|
|
9
|
+
* Minimal vault-shaped accessor passed to the MV `query()` callback.
|
|
10
|
+
* Defined as a structural interface so the strategy types don't have
|
|
11
|
+
* to import the full `Vault` class (avoids a circular import). The
|
|
12
|
+
* Vault implements this shape natively.
|
|
13
|
+
*/
|
|
14
|
+
export interface MVQueryContext {
|
|
15
|
+
collection<T extends Record<string, unknown>>(name: string): Collection<T>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Metadata that travels inside the `_data` payload of a materialized
|
|
19
|
+
* row. Lives in encrypted payload, not in the unencrypted envelope —
|
|
20
|
+
* the storage backend cannot infer the MV graph from listing.
|
|
21
|
+
*
|
|
22
|
+
* Extends the `_derivedFrom` precedent from v1: same encryption shape,
|
|
23
|
+
* same "metadata-inside-data" location.
|
|
24
|
+
*/
|
|
25
|
+
export interface MaterializedFromMeta {
|
|
26
|
+
/** Stable identity for the MV that emitted this row. */
|
|
27
|
+
readonly mvName: string;
|
|
28
|
+
/**
|
|
29
|
+
* SHA-256 of (mvName + canonical query plan + dependency-set).
|
|
30
|
+
* Changes when the query structure changes → forces refresh on
|
|
31
|
+
* next visit (parallels v1's `strategyHash`).
|
|
32
|
+
*/
|
|
33
|
+
readonly queryHash: string;
|
|
34
|
+
/**
|
|
35
|
+
* Map from source collection name → `_v` of the source row(s) that
|
|
36
|
+
* contributed to this MV row at materialization time. For aggregates
|
|
37
|
+
* over many rows, this is `max(_v)` per source collection — coarse
|
|
38
|
+
* but sufficient for stale detection.
|
|
39
|
+
*/
|
|
40
|
+
readonly sourceVersions: Record<string, number>;
|
|
41
|
+
/** ISO timestamp when this row was materialized. */
|
|
42
|
+
readonly materializedAt: string;
|
|
43
|
+
}
|
|
44
|
+
/** Output routing for an MV. Optional — when omitted, writes to a collection named after `name`. */
|
|
45
|
+
export interface MaterializedViewOutput {
|
|
46
|
+
/** Output collection name. Defaults to `name`. */
|
|
47
|
+
collection?: string;
|
|
48
|
+
/**
|
|
49
|
+
* For same-collection-as-source MVs — see § Same-collection partition
|
|
50
|
+
* discriminator in the v2 spec. The cycle detector resolves the
|
|
51
|
+
* same-collection edge IFF the query has a where-clause that
|
|
52
|
+
* provably excludes `partition.value` (supports `==` against a
|
|
53
|
+
* different value, `!=` against the value, and `in` lists that
|
|
54
|
+
* don't contain it). Naïve same-collection MVs without a disjoint
|
|
55
|
+
* clause throw `MaterializedViewCycleError` at vault open.
|
|
56
|
+
*/
|
|
57
|
+
partition?: {
|
|
58
|
+
field: string;
|
|
59
|
+
value: unknown;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* One arm of a UNION materialized view. Reads rows from `collection`,
|
|
64
|
+
* then maps each into the MV's row shape via `map`.
|
|
65
|
+
*
|
|
66
|
+
* The per-source `map` is the schema-unification boundary — sibling
|
|
67
|
+
* collections can have different schemas, and `map` is where they
|
|
68
|
+
* meet the MV's row type. The hub does NOT compare schemas across
|
|
69
|
+
* arms; consumer responsibility is that every arm's `map` returns
|
|
70
|
+
* the same shape (the strategy's `TRow` type parameter enforces this
|
|
71
|
+
* at compile time).
|
|
72
|
+
*/
|
|
73
|
+
export interface UnionSource<TRow extends Record<string, unknown>> {
|
|
74
|
+
/** Source collection name. Must exist in the vault. */
|
|
75
|
+
readonly collection: string;
|
|
76
|
+
/**
|
|
77
|
+
* Pure function from a source row to the unified MV row shape.
|
|
78
|
+
* Called once per source row at materialization time. Each arm's
|
|
79
|
+
* mapped output is concatenated into a single stream before
|
|
80
|
+
* `groupBy` + `aggregate` run.
|
|
81
|
+
*
|
|
82
|
+
* Returning `null` or `undefined` **omits** the source row from the
|
|
83
|
+
* materialized output entirely — the row is not pushed into the
|
|
84
|
+
* unified stream and never reaches `groupBy` / `aggregate`. This
|
|
85
|
+
* removes the need for sentinel rows (e.g. `{ amount: 0 }`) whose
|
|
86
|
+
* sole purpose is to be aggregated away.
|
|
87
|
+
*
|
|
88
|
+
* When this arm declares {@link join}, the aliased right-side
|
|
89
|
+
* record(s) are attached to the source row under each leg's `as`
|
|
90
|
+
* BEFORE `map` runs, so `map` can read `sourceRow[leg.as]`.
|
|
91
|
+
*/
|
|
92
|
+
readonly map: (sourceRow: Record<string, unknown>) => TRow | null | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Optional FK joins to apply to this arm's rows before {@link map}.
|
|
95
|
+
* Each leg resolves a `ref()`-declared foreign key on the arm's
|
|
96
|
+
* source collection into an attached right-side record under
|
|
97
|
+
* `as` — the same machinery as the query-form `Query.join()`.
|
|
98
|
+
*
|
|
99
|
+
* The right-side collections must be listed in the strategy's
|
|
100
|
+
* {@link MaterializedViewStrategy.sources} so writes to them trigger
|
|
101
|
+
* MV refresh — registration throws `MaterializedViewConfigError`
|
|
102
|
+
* otherwise (the union dependency set comes from arm `collection`s
|
|
103
|
+
* alone, which would not include join targets).
|
|
104
|
+
*/
|
|
105
|
+
readonly join?: ReadonlyArray<UnionArmJoin>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* One FK join leg on a UNION arm. Mirrors the option shape of the
|
|
109
|
+
* query-form `Query.join(field, { as, maxRows?, strategy? })`.
|
|
110
|
+
*/
|
|
111
|
+
export interface UnionArmJoin {
|
|
112
|
+
/** FK field on the arm's source collection (must have a `ref()` declared). */
|
|
113
|
+
readonly field: string;
|
|
114
|
+
/** Alias under which the resolved right-side record attaches on the source row. */
|
|
115
|
+
readonly as: string;
|
|
116
|
+
/** Per-side row ceiling override. `undefined` → the join default. */
|
|
117
|
+
readonly maxRows?: number;
|
|
118
|
+
/** Planner strategy override. `undefined` → auto-select. */
|
|
119
|
+
readonly strategy?: JoinStrategy;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Registration shape passed to `withMaterializedView()`.
|
|
123
|
+
*
|
|
124
|
+
* @typeParam TRow - the materialized row type (the query's result row)
|
|
125
|
+
*/
|
|
126
|
+
export interface MaterializedViewStrategy<TRow extends Record<string, unknown>> {
|
|
127
|
+
/**
|
|
128
|
+
* Stable identity for this view. Used as the output collection name
|
|
129
|
+
* unless `output.collection` overrides. Must be unique within the vault.
|
|
130
|
+
*/
|
|
131
|
+
name: string;
|
|
132
|
+
/**
|
|
133
|
+
* Declared query (single-source mode). Called at registration time
|
|
134
|
+
* with a vault-shaped accessor so the closure can compose collections
|
|
135
|
+
* without pre-existing in-scope references; called again at each
|
|
136
|
+
* refresh.
|
|
137
|
+
*
|
|
138
|
+
* Built via the same `Query<T>` chainable builder used elsewhere —
|
|
139
|
+
* `.where()`, `.join()`, `.groupBy()`, `.aggregate()`. The
|
|
140
|
+
* dependency analyzer walks the returned plan to determine source
|
|
141
|
+
* collections.
|
|
142
|
+
*
|
|
143
|
+
* Mutually exclusive with {@link unionSources}: a strategy must
|
|
144
|
+
* declare exactly one of `query` (single-source) or `unionSources`
|
|
145
|
+
* (multi-source UNION). Registration throws
|
|
146
|
+
* `MaterializedViewConfigError` if both are set or neither is set.
|
|
147
|
+
*/
|
|
148
|
+
query?: (db: MVQueryContext) => Query<TRow> | Aggregation<TRow> | GroupedAggregation<TRow>;
|
|
149
|
+
/**
|
|
150
|
+
* UNION-form sources: an explicit list of sibling collections
|
|
151
|
+
* that contribute rows to a single MV. Each arm's `map` projects a
|
|
152
|
+
* source row into the MV's unified row shape; the mapped streams are
|
|
153
|
+
* concatenated, then {@link groupBy} + {@link aggregate} run on the
|
|
154
|
+
* combined output.
|
|
155
|
+
*
|
|
156
|
+
* Mutually exclusive with {@link query}. Registration throws
|
|
157
|
+
* `MaterializedViewConfigError` if both are set, if `unionSources`
|
|
158
|
+
* is empty, or if two arms name the same `collection`.
|
|
159
|
+
*
|
|
160
|
+
* A SINGLE arm is valid: it expresses map→group→aggregate
|
|
161
|
+
* over one collection with a COMPUTED bucket key (e.g. a month
|
|
162
|
+
* sliced from a date field). The query form's `.groupBy()` accepts
|
|
163
|
+
* stored field names only, so a derived key needs the arm's `map`.
|
|
164
|
+
*
|
|
165
|
+
* UNION mode replaces the dependency-analyzer path: the source
|
|
166
|
+
* collections come directly from `unionSources[].collection`, and
|
|
167
|
+
* {@link sources} is ignored.
|
|
168
|
+
*/
|
|
169
|
+
unionSources?: ReadonlyArray<UnionSource<TRow>>;
|
|
170
|
+
/**
|
|
171
|
+
* Group-key field(s) for UNION mode. Applied to the
|
|
172
|
+
* concatenated mapped-row stream from {@link unionSources} before
|
|
173
|
+
* {@link aggregate} runs. Accepts a single field name or a tuple of
|
|
174
|
+
* field names for multi-key grouping (same shape as
|
|
175
|
+
* `Query.groupBy(...fields)`).
|
|
176
|
+
*
|
|
177
|
+
* UNION-mode only. Ignored if {@link query} is set — single-source
|
|
178
|
+
* grouping is expressed inside the `Query<T>` returned from `query()`
|
|
179
|
+
* via `.groupBy(...).aggregate(...)`.
|
|
180
|
+
*/
|
|
181
|
+
groupBy?: string | ReadonlyArray<string>;
|
|
182
|
+
/**
|
|
183
|
+
* Aggregation spec for UNION mode. Applied per-group after
|
|
184
|
+
* {@link groupBy} buckets the concatenated mapped-row stream from
|
|
185
|
+
* {@link unionSources}. Same shape as the `AggregateSpec` passed to
|
|
186
|
+
* `Query.aggregate()`.
|
|
187
|
+
*
|
|
188
|
+
* UNION-mode only. Ignored if {@link query} is set.
|
|
189
|
+
*/
|
|
190
|
+
aggregate?: AggregateSpec;
|
|
191
|
+
/**
|
|
192
|
+
* Money descriptors for the UNION-mode aggregate, keyed by the
|
|
193
|
+
* OUTPUT/intermediate field name as it appears in the mapped row and
|
|
194
|
+
* in {@link aggregate} (NOT the source collection's field name). When
|
|
195
|
+
* declared, any `sum` / `min` / `max` over a keyed field is rewritten
|
|
196
|
+
* into an exact per-currency BigInt reducer — without this, money
|
|
197
|
+
* aggregation in UNION mode silently runs in float (since the
|
|
198
|
+
* concatenated mapped stream is a plain array with no collection
|
|
199
|
+
* money context to inherit).
|
|
200
|
+
*
|
|
201
|
+
* UNION-mode only — the query form inherits its money descriptors
|
|
202
|
+
* from the source collection automatically. The descriptor's
|
|
203
|
+
* currency/scale must match what the arms' `map()` emits for that
|
|
204
|
+
* field (each arm maps into the same unified shape, so one descriptor
|
|
205
|
+
* per output field covers all arms). Meaningless without
|
|
206
|
+
* {@link aggregate}; registration throws `MaterializedViewConfigError`
|
|
207
|
+
* if declared alone.
|
|
208
|
+
*/
|
|
209
|
+
moneyFields?: Record<string, MoneyDescriptor>;
|
|
210
|
+
/**
|
|
211
|
+
* Compute-time i18n resolution locale (`mv` layer). UNION-mode only.
|
|
212
|
+
*
|
|
213
|
+
* An MV that **groups by** an `i18nText` field would otherwise bucket on the
|
|
214
|
+
* raw `{ locale: string }` map — an unstable object key. Set `i18nLocale`
|
|
215
|
+
* (with {@link i18nFields} describing those fields) and, before grouping, the
|
|
216
|
+
* executor resolves each declared i18n group-key field to this locale at the
|
|
217
|
+
* `mv` layer (`resolvePolicy(onMissing, 'mv')`), so buckets are stable strings.
|
|
218
|
+
*
|
|
219
|
+
* This is the **compute** path only: i18n fields *carried through* for display
|
|
220
|
+
* stay raw — declare them on the OUTPUT collection and they resolve per-reader
|
|
221
|
+
* at read time (the resolve-at-output model). Without `i18nLocale`, grouping by
|
|
222
|
+
* a raw i18n field throws `LocaleNotSpecifiedError` (steer: group by a
|
|
223
|
+
* `dictKey`/`staticDict` code — the stable key — and label at read).
|
|
224
|
+
*
|
|
225
|
+
* Query-form MVs do their own `groupBy` inside the `Query`, which carries no
|
|
226
|
+
* locale yet — so `i18nLocale` /
|
|
227
|
+
* `i18nFields` on a query-form MV throw `MaterializedViewConfigError`.
|
|
228
|
+
*/
|
|
229
|
+
i18nLocale?: string;
|
|
230
|
+
/**
|
|
231
|
+
* i18n descriptors for UNION-mode compute, keyed by the OUTPUT field
|
|
232
|
+
* name as it appears in the mapped row (NOT the source field). Mirrors
|
|
233
|
+
* {@link moneyFields}: the concatenated mapped stream is a plain array with no
|
|
234
|
+
* collection i18n context, so the descriptor (carrying `onMissing`/`substitute`
|
|
235
|
+
* /`fallback`) must be declared here for the `mv`-layer resolution that
|
|
236
|
+
* {@link i18nLocale} drives. Meaningless without `i18nLocale`.
|
|
237
|
+
*/
|
|
238
|
+
i18nFields?: Record<string, I18nTextDescriptor>;
|
|
239
|
+
/**
|
|
240
|
+
* Pure function from a materialized row → stable id used in the
|
|
241
|
+
* output collection. Required — explicit always beats default-with-pitfalls
|
|
242
|
+
* (explicit always beats default-with-pitfalls; see the slash-collision rationale).
|
|
243
|
+
*/
|
|
244
|
+
rowKey: (row: TRow) => string;
|
|
245
|
+
/**
|
|
246
|
+
* Explicit source collections. Required when `query()` returns
|
|
247
|
+
* an `Aggregation` or `GroupedAggregation` rather than a `Query<T>`
|
|
248
|
+
* — the dependency analyzer can't introspect through `groupBy().aggregate()`
|
|
249
|
+
* back to the source. Optional for plain `Query<T>` results — the
|
|
250
|
+
* analyzer extracts dependencies automatically from the query plan.
|
|
251
|
+
*
|
|
252
|
+
* When set, takes precedence over auto-analysis.
|
|
253
|
+
*/
|
|
254
|
+
sources?: ReadonlyArray<string>;
|
|
255
|
+
/**
|
|
256
|
+
* Declared deterministic predicates. Each entry pairs a
|
|
257
|
+
* consumer-stable `hash` with a function. The `query()` callback's
|
|
258
|
+
* Query<T> can invoke them via `.wherePredicate(name, ctx?)`. The
|
|
259
|
+
* predicate's `hash` + a canonical-JSON hash of `ctx` both fold
|
|
260
|
+
* into `queryHash` — bumping either forces refresh on next visit.
|
|
261
|
+
*
|
|
262
|
+
* Consumer responsibility: bump `hash` when the function's semantics
|
|
263
|
+
* change. Failing to bump after a non-equivalent change leaves
|
|
264
|
+
* stale rows around until the next explicit refresh.
|
|
265
|
+
*/
|
|
266
|
+
predicates?: {
|
|
267
|
+
[name: string]: {
|
|
268
|
+
hash: string;
|
|
269
|
+
fn: (row: TRow, ctx?: unknown) => boolean;
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
/**
|
|
273
|
+
* Refresh policy.
|
|
274
|
+
*
|
|
275
|
+
* - `'eager'` — re-materialize synchronously inside the source-write
|
|
276
|
+
* transaction (composes with `withTransactions` for strict-mode
|
|
277
|
+
* rollback).
|
|
278
|
+
* - `'lazy'` — mark stale on source-change; materialize on first
|
|
279
|
+
* read of the MV.
|
|
280
|
+
* - `'manual'` — only materializes when `vault.refreshView(name)` is
|
|
281
|
+
* called. Useful for very expensive MVs or time-dependent queries
|
|
282
|
+
* whose `ctx` changes externally.
|
|
283
|
+
*/
|
|
284
|
+
refresh: 'eager' | 'lazy' | 'manual';
|
|
285
|
+
/** Output routing. Optional; defaults to writing the collection named after `name`. */
|
|
286
|
+
output?: MaterializedViewOutput;
|
|
287
|
+
/**
|
|
288
|
+
* What to do when a re-materialization produces zero rows for a key
|
|
289
|
+
* that previously had rows.
|
|
290
|
+
*
|
|
291
|
+
* - `'delete'` (default) — tombstone the prior MV row via
|
|
292
|
+
* `Collection._internalDelete` (system housekeeping bypasses user
|
|
293
|
+
* `onDelete` guards on the output collection — the housekeeping
|
|
294
|
+
* bypass composition fix).
|
|
295
|
+
* - `'keep'` — leave the prior MV row in place. Useful when zero
|
|
296
|
+
* is a meaningful state.
|
|
297
|
+
*/
|
|
298
|
+
onEmpty?: 'delete' | 'keep';
|
|
299
|
+
/**
|
|
300
|
+
* `true` re-throws on any row-write failure → composes with
|
|
301
|
+
* `withTransactions` to roll back the source-write atomically via
|
|
302
|
+
* `revertExecuted`. Default `false` (failed rows are
|
|
303
|
+
* isolated; other rows commit).
|
|
304
|
+
*/
|
|
305
|
+
strict?: boolean;
|
|
306
|
+
/**
|
|
307
|
+
* Row-count ceiling for the materialized output. Throws
|
|
308
|
+
* `MaterializedViewTooLargeError` before any writes when exceeded
|
|
309
|
+
* — keeps the rollback clean. Default `100_000`; override per-MV
|
|
310
|
+
* when the domain warrants it.
|
|
311
|
+
*/
|
|
312
|
+
maxRows?: number;
|
|
313
|
+
}
|
|
314
|
+
/** Returned by `withMaterializedView()` and consumed by `createNoydb`. */
|
|
315
|
+
export interface MaterializedViewStrategyHandle {
|
|
316
|
+
readonly __noydb_strategy: 'materialized-view';
|
|
317
|
+
readonly spec: MaterializedViewStrategy<any>;
|
|
318
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { MaterializedViewStrategy, MaterializedViewStrategyHandle } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Register a materialized view: a declared query whose result is
|
|
4
|
+
* persisted as a queryable collection and kept fresh as sources
|
|
5
|
+
* change. Writes go through the standard `Collection.put` pipeline;
|
|
6
|
+
* refresh-driven deletes route through `Collection._internalDelete` so
|
|
7
|
+
* user `onDelete` guards on the output collection aren't tripped by
|
|
8
|
+
* housekeeping.
|
|
9
|
+
*
|
|
10
|
+
* Two registration modes:
|
|
11
|
+
* - **single-source** — declare `query: (db) => Query<TRow>`; the
|
|
12
|
+
* dependency analyzer derives source collections from the plan.
|
|
13
|
+
* - **UNION** — declare `unionSources: [{ collection, map }, ...]`
|
|
14
|
+
* plus optional `groupBy` + `aggregate`; the executor reads each
|
|
15
|
+
* arm, maps to the unified row shape, concatenates, then groups
|
|
16
|
+
* and aggregates.
|
|
17
|
+
*
|
|
18
|
+
* The two modes are mutually exclusive — exactly one of `query` /
|
|
19
|
+
* `unionSources` must be set at registration time.
|
|
20
|
+
*
|
|
21
|
+
* See docs/superpowers/specs/2026-05-20-dim14-mv-v2-design.md (single-source v2)
|
|
22
|
+
* and docs/superpowers/specs/2026-05-21-dim14-mv-multikey-and-union.md (UNION).
|
|
23
|
+
*/
|
|
24
|
+
export declare function withMaterializedView<TRow extends Record<string, unknown>>(spec: MaterializedViewStrategy<TRow>): MaterializedViewStrategyHandle;
|