@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,99 @@
|
|
|
1
|
+
// src/kernel/query/predicate.ts
|
|
2
|
+
function readPath(record, path) {
|
|
3
|
+
if (record === null || record === void 0) return void 0;
|
|
4
|
+
if (!path.includes(".")) {
|
|
5
|
+
return record[path];
|
|
6
|
+
}
|
|
7
|
+
const segments = path.split(".");
|
|
8
|
+
let cursor = record;
|
|
9
|
+
for (const segment of segments) {
|
|
10
|
+
if (cursor === null || cursor === void 0) return void 0;
|
|
11
|
+
cursor = cursor[segment];
|
|
12
|
+
}
|
|
13
|
+
return cursor;
|
|
14
|
+
}
|
|
15
|
+
function evaluateFieldClause(record, clause) {
|
|
16
|
+
const actual = readPath(record, clause.field);
|
|
17
|
+
const { op, value } = clause;
|
|
18
|
+
if (clause.via) return clause.via.evaluate(actual, op);
|
|
19
|
+
switch (op) {
|
|
20
|
+
case "==":
|
|
21
|
+
return actual === value;
|
|
22
|
+
case "!=":
|
|
23
|
+
return actual !== value;
|
|
24
|
+
case "<":
|
|
25
|
+
return isComparable(actual, value) && actual < value;
|
|
26
|
+
case "<=":
|
|
27
|
+
return isComparable(actual, value) && actual <= value;
|
|
28
|
+
case ">":
|
|
29
|
+
return isComparable(actual, value) && actual > value;
|
|
30
|
+
case ">=":
|
|
31
|
+
return isComparable(actual, value) && actual >= value;
|
|
32
|
+
case "in":
|
|
33
|
+
return Array.isArray(value) && value.includes(actual);
|
|
34
|
+
case "contains":
|
|
35
|
+
if (typeof actual === "string") return typeof value === "string" && actual.includes(value);
|
|
36
|
+
if (Array.isArray(actual)) return actual.includes(value);
|
|
37
|
+
return false;
|
|
38
|
+
case "startsWith":
|
|
39
|
+
return typeof actual === "string" && typeof value === "string" && actual.startsWith(value);
|
|
40
|
+
case "between": {
|
|
41
|
+
if (!Array.isArray(value) || value.length !== 2) return false;
|
|
42
|
+
const [lo, hi] = value;
|
|
43
|
+
if (!isComparable(actual, lo) || !isComparable(actual, hi)) return false;
|
|
44
|
+
return actual >= lo && actual <= hi;
|
|
45
|
+
}
|
|
46
|
+
default: {
|
|
47
|
+
const _exhaustive = op;
|
|
48
|
+
void _exhaustive;
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function isComparable(a, b) {
|
|
54
|
+
if (typeof a === "number" && typeof b === "number") return true;
|
|
55
|
+
if (typeof a === "string" && typeof b === "string") return true;
|
|
56
|
+
if (a instanceof Date && b instanceof Date) return true;
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
function evaluateClause(record, clause, fnRecord) {
|
|
60
|
+
switch (clause.type) {
|
|
61
|
+
case "field":
|
|
62
|
+
return evaluateFieldClause(record, clause);
|
|
63
|
+
case "filter":
|
|
64
|
+
return clause.fn(fnRecord !== void 0 ? fnRecord : record);
|
|
65
|
+
case "wherePredicate":
|
|
66
|
+
return clause.fn(fnRecord !== void 0 ? fnRecord : record, clause.ctx);
|
|
67
|
+
case "crossJoin":
|
|
68
|
+
throw new Error(
|
|
69
|
+
`evaluateClause: 'crossJoin' clauses are expansion primitives and are not evaluated per-record. This is a query planner routing error \u2014 crossJoin clauses must be extracted from the clause list before calling evaluateClause or filterRecords.`
|
|
70
|
+
);
|
|
71
|
+
case "group":
|
|
72
|
+
if (clause.op === "and") {
|
|
73
|
+
for (const child of clause.clauses) {
|
|
74
|
+
if (!evaluateClause(record, child, fnRecord)) return false;
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
} else {
|
|
78
|
+
for (const child of clause.clauses) {
|
|
79
|
+
if (evaluateClause(record, child, fnRecord)) return true;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function hasFnClause(clauses) {
|
|
86
|
+
for (const c of clauses) {
|
|
87
|
+
if (c.type === "filter" || c.type === "wherePredicate") return true;
|
|
88
|
+
if (c.type === "group" && hasFnClause(c.clauses)) return true;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export {
|
|
94
|
+
readPath,
|
|
95
|
+
evaluateFieldClause,
|
|
96
|
+
evaluateClause,
|
|
97
|
+
hasFnClause
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=chunk-IGJCYUT5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/kernel/query/predicate.ts"],"sourcesContent":["/**\n * Operator implementations for the query DSL.\n *\n * All predicates run client-side, AFTER decryption — they never see ciphertext.\n * Field clauses over a Via-covered field (e.g. money) carry their own\n * evaluator closure (see {@link FieldClause.via}), so this module has no\n * dependency on any Via feature's implementation — still tree-shakeable.\n */\n\n/** Comparison operators supported by the where() builder. */\nexport type Operator =\n | '=='\n | '!='\n | '<'\n | '<='\n | '>'\n | '>='\n | 'in'\n | 'contains'\n | 'startsWith'\n | 'between'\n\n/**\n * A single field comparison clause inside a query plan.\n * Plans are JSON-serializable, so this type uses primitives only.\n */\nexport interface FieldClause {\n readonly type: 'field'\n readonly field: string\n readonly op: Operator\n readonly value: unknown\n /**\n * Present when `field` is covered by a Via feature binding (e.g. a\n * declared money field): the opaque payload built by the binding's\n * `buildClause` at query BUILD time, plus a closure that evaluates it\n * per record via the binding's `evaluateClause`. Attached by\n * `Query.where()` / `ScanBuilder.where()` when `source.via` covers the\n * field. The closure keeps this module free of any dependency on a\n * Via feature's implementation — clauses are in-memory only, never\n * serialized, so carrying a function here is safe.\n */\n readonly via?: {\n readonly brand: string\n readonly payload: unknown\n readonly evaluate: (actual: unknown, op: string) => boolean\n /**\n * The binding's `indexProbe` result for this clause's op/payload\n * (#625) — the STORED-form operand `candidateRecords()` (`kernel/\n * query/builder.ts`) can hand to `CollectionIndexes.lookupEqual`/\n * `lookupIn` for a fast path. `undefined` (no `indexProbe` hook, or\n * the binding declined to probe this op) means the field must fall\n * back to a linear scan via `evaluate` above.\n */\n readonly indexValue?: unknown\n }\n}\n\n/**\n * A user-supplied predicate function escape hatch. Not serializable.\n *\n * The predicate accepts `unknown` at the type level so the surrounding\n * Clause type can stay non-parametric — this keeps Collection<T> covariant\n * in T at the public API surface. Builder methods cast user predicates\n * (typed `(record: T) => boolean`) into this shape on the way in.\n */\nexport interface FilterClause {\n readonly type: 'filter'\n readonly fn: (record: unknown) => boolean\n}\n\n/**\n * A declared deterministic predicate reference. The query\n * builder produces this via `.wherePredicate(name, ctx?)` when a\n * Query has been augmented with a predicates map (typically by the\n * materialized-view registry).\n *\n * `predicateHash` is the consumer-supplied stable hash for the\n * function body; `ctxHash` is the canonical-JSON SHA-256 of `ctx`.\n * Both fold into the MV's `queryHash` so a function or ctx change\n * forces refresh on next visit.\n *\n * `fn` is resolved at builder time from the predicates map and\n * embedded directly — so `evaluateClause` can fire it without a\n * runtime lookup.\n */\nexport interface WherePredicateClause {\n readonly type: 'wherePredicate'\n readonly name: string\n readonly ctx: unknown\n readonly predicateHash: string\n readonly ctxHash: string\n readonly fn: (record: unknown, ctx?: unknown) => boolean\n}\n\n/** A logical group of clauses combined by AND or OR. */\nexport interface GroupClause {\n readonly type: 'group'\n readonly op: 'and' | 'or'\n readonly clauses: readonly Clause[]\n}\n\n/**\n * Cartesian-product expansion clause. Appended to `QueryPlan.clauses`\n * by `Query.crossJoin()`. Processed in declaration order by\n * `executeClausePipeline` — NOT by `evaluateClause` (which is a\n * per-record predicate and throws on this type).\n */\nexport interface CrossJoinClause {\n readonly type: 'crossJoin'\n /** Target collection name to cross-join against. */\n readonly target: string\n /** Alias under which the right-side record is exposed on each result row. */\n readonly as: string\n /**\n * Lateral filter callback. `undefined` → full cartesian product.\n * Two call shapes:\n * - Subset: `(left) => TTarget[]` — returns the right rows for this left row\n * - Predicate: `(left) => (right) => boolean` — executor materializes then filters\n */\n readonly on?: (left: unknown) => unknown[] | ((right: unknown) => boolean)\n /** When `on:` was supplied as `{ predicate: name }`, the name is stored here for queryHash. */\n readonly onPredicateName?: string\n /** Per-clause row ceiling override. `undefined` → `DEFAULT_CROSS_JOIN_MAX_ROWS`. */\n readonly maxRows?: number\n}\n\nexport type Clause = FieldClause | FilterClause | WherePredicateClause | GroupClause | CrossJoinClause\n\n/**\n * Read a possibly nested field path like \"address.city\" from a record.\n * Returns undefined if any segment is missing.\n */\nexport function readPath(record: unknown, path: string): unknown {\n if (record === null || record === undefined) return undefined\n if (!path.includes('.')) {\n return (record as Record<string, unknown>)[path]\n }\n const segments = path.split('.')\n let cursor: unknown = record\n for (const segment of segments) {\n if (cursor === null || cursor === undefined) return undefined\n cursor = (cursor as Record<string, unknown>)[segment]\n }\n return cursor\n}\n\n/**\n * Evaluate a single field clause against a record.\n * Returns false on type mismatches rather than throwing — query results\n * exclude non-matching records by definition.\n */\nexport function evaluateFieldClause(record: unknown, clause: FieldClause): boolean {\n const actual = readPath(record, clause.field)\n const { op, value } = clause\n\n // A Via-covered field (e.g. money) may store a transformed\n // representation (money: BigInt-exact in scaled-integer space) that the\n // generic paths below can't compare correctly — the operand was\n // pre-built at query BUILD time and the binding's own evaluator knows\n // how to compare it against the raw stored value.\n if (clause.via) return clause.via.evaluate(actual, op)\n\n switch (op) {\n case '==':\n return actual === value\n case '!=':\n return actual !== value\n case '<':\n return isComparable(actual, value) && (actual as number) < (value as number)\n case '<=':\n return isComparable(actual, value) && (actual as number) <= (value as number)\n case '>':\n return isComparable(actual, value) && (actual as number) > (value as number)\n case '>=':\n return isComparable(actual, value) && (actual as number) >= (value as number)\n case 'in':\n return Array.isArray(value) && value.includes(actual)\n case 'contains':\n if (typeof actual === 'string') return typeof value === 'string' && actual.includes(value)\n if (Array.isArray(actual)) return actual.includes(value)\n return false\n case 'startsWith':\n return typeof actual === 'string' && typeof value === 'string' && actual.startsWith(value)\n case 'between': {\n if (!Array.isArray(value) || value.length !== 2) return false\n const [lo, hi] = value\n if (!isComparable(actual, lo) || !isComparable(actual, hi)) return false\n return (actual as number) >= (lo as number) && (actual as number) <= (hi as number)\n }\n default: {\n // Exhaustiveness — TS will error if a new operator is added without a case.\n const _exhaustive: never = op\n void _exhaustive\n return false\n }\n }\n}\n\n/**\n * Two values are \"comparable\" if they share an order-defined runtime type.\n * Strings compare lexicographically; numbers and Dates numerically; otherwise false.\n */\nfunction isComparable(a: unknown, b: unknown): boolean {\n if (typeof a === 'number' && typeof b === 'number') return true\n if (typeof a === 'string' && typeof b === 'string') return true\n if (a instanceof Date && b instanceof Date) return true\n return false\n}\n\n/**\n * Evaluate any clause (field / filter / group) against a record.\n * The recursion depth is bounded by the user's query expression — no risk of\n * blowing the stack on a 50K-record collection.\n *\n * `fnRecord`, when provided, is the view handed to USER CALLBACK clauses\n * (`filter` / `wherePredicate`) instead of `record` — the executor passes\n * the money-decoded view there so user code never sees the stored\n * scaled-int form, while field clauses keep evaluating against the raw\n * record (their money operands are pre-quantized to that space).\n */\nexport function evaluateClause(record: unknown, clause: Clause, fnRecord?: unknown): boolean {\n switch (clause.type) {\n case 'field':\n return evaluateFieldClause(record, clause)\n case 'filter':\n return clause.fn(fnRecord !== undefined ? fnRecord : record)\n case 'wherePredicate':\n return clause.fn(fnRecord !== undefined ? fnRecord : record, clause.ctx)\n case 'crossJoin':\n throw new Error(\n `evaluateClause: 'crossJoin' clauses are expansion primitives and are not ` +\n `evaluated per-record. This is a query planner routing error — ` +\n `crossJoin clauses must be extracted from the clause list before calling ` +\n `evaluateClause or filterRecords.`,\n )\n case 'group':\n if (clause.op === 'and') {\n for (const child of clause.clauses) {\n if (!evaluateClause(record, child, fnRecord)) return false\n }\n return true\n } else {\n for (const child of clause.clauses) {\n if (evaluateClause(record, child, fnRecord)) return true\n }\n return false\n }\n }\n}\n\n/**\n * Does the clause list contain any user-callback clause (filter /\n * wherePredicate), at any group nesting depth? Used by executors to\n * decide whether the per-record decoded view needs materializing.\n */\nexport function hasFnClause(clauses: readonly Clause[]): boolean {\n for (const c of clauses) {\n if (c.type === 'filter' || c.type === 'wherePredicate') return true\n if (c.type === 'group' && hasFnClause(c.clauses)) return true\n }\n return false\n}\n"],"mappings":";AAoIO,SAAS,SAAS,QAAiB,MAAuB;AAC/D,MAAI,WAAW,QAAQ,WAAW,OAAW,QAAO;AACpD,MAAI,CAAC,KAAK,SAAS,GAAG,GAAG;AACvB,WAAQ,OAAmC,IAAI;AAAA,EACjD;AACA,QAAM,WAAW,KAAK,MAAM,GAAG;AAC/B,MAAI,SAAkB;AACtB,aAAW,WAAW,UAAU;AAC9B,QAAI,WAAW,QAAQ,WAAW,OAAW,QAAO;AACpD,aAAU,OAAmC,OAAO;AAAA,EACtD;AACA,SAAO;AACT;AAOO,SAAS,oBAAoB,QAAiB,QAA8B;AACjF,QAAM,SAAS,SAAS,QAAQ,OAAO,KAAK;AAC5C,QAAM,EAAE,IAAI,MAAM,IAAI;AAOtB,MAAI,OAAO,IAAK,QAAO,OAAO,IAAI,SAAS,QAAQ,EAAE;AAErD,UAAQ,IAAI;AAAA,IACV,KAAK;AACH,aAAO,WAAW;AAAA,IACpB,KAAK;AACH,aAAO,WAAW;AAAA,IACpB,KAAK;AACH,aAAO,aAAa,QAAQ,KAAK,KAAM,SAAqB;AAAA,IAC9D,KAAK;AACH,aAAO,aAAa,QAAQ,KAAK,KAAM,UAAsB;AAAA,IAC/D,KAAK;AACH,aAAO,aAAa,QAAQ,KAAK,KAAM,SAAqB;AAAA,IAC9D,KAAK;AACH,aAAO,aAAa,QAAQ,KAAK,KAAM,UAAsB;AAAA,IAC/D,KAAK;AACH,aAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,MAAM;AAAA,IACtD,KAAK;AACH,UAAI,OAAO,WAAW,SAAU,QAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AACzF,UAAI,MAAM,QAAQ,MAAM,EAAG,QAAO,OAAO,SAAS,KAAK;AACvD,aAAO;AAAA,IACT,KAAK;AACH,aAAO,OAAO,WAAW,YAAY,OAAO,UAAU,YAAY,OAAO,WAAW,KAAK;AAAA,IAC3F,KAAK,WAAW;AACd,UAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,EAAG,QAAO;AACxD,YAAM,CAAC,IAAI,EAAE,IAAI;AACjB,UAAI,CAAC,aAAa,QAAQ,EAAE,KAAK,CAAC,aAAa,QAAQ,EAAE,EAAG,QAAO;AACnE,aAAQ,UAAsB,MAAkB,UAAsB;AAAA,IACxE;AAAA,IACA,SAAS;AAEP,YAAM,cAAqB;AAC3B,WAAK;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAMA,SAAS,aAAa,GAAY,GAAqB;AACrD,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,SAAU,QAAO;AAC3D,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,SAAU,QAAO;AAC3D,MAAI,aAAa,QAAQ,aAAa,KAAM,QAAO;AACnD,SAAO;AACT;AAaO,SAAS,eAAe,QAAiB,QAAgB,UAA6B;AAC3F,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,oBAAoB,QAAQ,MAAM;AAAA,IAC3C,KAAK;AACH,aAAO,OAAO,GAAG,aAAa,SAAY,WAAW,MAAM;AAAA,IAC7D,KAAK;AACH,aAAO,OAAO,GAAG,aAAa,SAAY,WAAW,QAAQ,OAAO,GAAG;AAAA,IACzE,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MAIF;AAAA,IACF,KAAK;AACH,UAAI,OAAO,OAAO,OAAO;AACvB,mBAAW,SAAS,OAAO,SAAS;AAClC,cAAI,CAAC,eAAe,QAAQ,OAAO,QAAQ,EAAG,QAAO;AAAA,QACvD;AACA,eAAO;AAAA,MACT,OAAO;AACL,mBAAW,SAAS,OAAO,SAAS;AAClC,cAAI,eAAe,QAAQ,OAAO,QAAQ,EAAG,QAAO;AAAA,QACtD;AACA,eAAO;AAAA,MACT;AAAA,EACJ;AACF;AAOO,SAAS,YAAY,SAAqC;AAC/D,aAAW,KAAK,SAAS;AACvB,QAAI,EAAE,SAAS,YAAY,EAAE,SAAS,iBAAkB,QAAO;AAC/D,QAAI,EAAE,SAAS,WAAW,YAAY,EAAE,OAAO,EAAG,QAAO;AAAA,EAC3D;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readPath
|
|
3
|
+
} from "./chunk-IGJCYUT5.js";
|
|
4
|
+
import {
|
|
5
|
+
applyI18nLocale
|
|
6
|
+
} from "./chunk-BE7N3AXA.js";
|
|
7
|
+
import {
|
|
8
|
+
viaBinder
|
|
9
|
+
} from "./chunk-ARSAMO24.js";
|
|
10
|
+
import {
|
|
11
|
+
GroupCardinalityError
|
|
12
|
+
} from "./chunk-FH542DDY.js";
|
|
13
|
+
|
|
14
|
+
// src/with-lookup/aggregate/reducers.ts
|
|
15
|
+
function count(opts) {
|
|
16
|
+
const _seed = opts?.seed;
|
|
17
|
+
void _seed;
|
|
18
|
+
return {
|
|
19
|
+
op: "count",
|
|
20
|
+
init: () => 0,
|
|
21
|
+
step: (state) => state + 1,
|
|
22
|
+
remove: (state) => state - 1,
|
|
23
|
+
finalize: (state) => state,
|
|
24
|
+
merge: (a, b) => a + b
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function sum(field, opts) {
|
|
28
|
+
const _seed = opts?.seed;
|
|
29
|
+
void _seed;
|
|
30
|
+
return {
|
|
31
|
+
op: "sum",
|
|
32
|
+
field,
|
|
33
|
+
// Money-only metadata, read by `wrapMoneyReducers`. No effect on a
|
|
34
|
+
// generic numeric sum.
|
|
35
|
+
...opts?.convertTo !== void 0 ? { convertTo: opts.convertTo } : {},
|
|
36
|
+
...opts?.fx !== void 0 ? { fx: opts.fx } : {},
|
|
37
|
+
init: () => 0,
|
|
38
|
+
step: (state, record) => state + readNumber(record, field),
|
|
39
|
+
remove: (state, record) => state - readNumber(record, field),
|
|
40
|
+
finalize: (state) => state,
|
|
41
|
+
merge: (a, b) => a + b
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function avg(field, opts) {
|
|
45
|
+
const _seed = opts?.seed;
|
|
46
|
+
void _seed;
|
|
47
|
+
return {
|
|
48
|
+
op: "avg",
|
|
49
|
+
field,
|
|
50
|
+
init: () => ({ sum: 0, count: 0 }),
|
|
51
|
+
step: (state, record) => ({
|
|
52
|
+
sum: state.sum + readNumber(record, field),
|
|
53
|
+
count: state.count + 1
|
|
54
|
+
}),
|
|
55
|
+
remove: (state, record) => ({
|
|
56
|
+
sum: state.sum - readNumber(record, field),
|
|
57
|
+
count: state.count - 1
|
|
58
|
+
}),
|
|
59
|
+
finalize: (state) => state.count === 0 ? null : state.sum / state.count,
|
|
60
|
+
merge: (a, b) => ({ sum: a.sum + b.sum, count: a.count + b.count })
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function pushValue(state, value) {
|
|
64
|
+
return { values: [...state.values, value] };
|
|
65
|
+
}
|
|
66
|
+
function removeValue(state, value) {
|
|
67
|
+
const idx = state.values.indexOf(value);
|
|
68
|
+
if (idx < 0) return state;
|
|
69
|
+
const next = state.values.slice();
|
|
70
|
+
next.splice(idx, 1);
|
|
71
|
+
return { values: next };
|
|
72
|
+
}
|
|
73
|
+
function min(field, opts) {
|
|
74
|
+
const _seed = opts?.seed;
|
|
75
|
+
void _seed;
|
|
76
|
+
return {
|
|
77
|
+
op: "min",
|
|
78
|
+
field,
|
|
79
|
+
init: () => ({ values: [] }),
|
|
80
|
+
step: (state, record) => pushValue(state, readNumber(record, field)),
|
|
81
|
+
remove: (state, record) => removeValue(state, readNumber(record, field)),
|
|
82
|
+
finalize: (state) => {
|
|
83
|
+
if (state.values.length === 0) return null;
|
|
84
|
+
let out = state.values[0];
|
|
85
|
+
for (let i = 1; i < state.values.length; i++) {
|
|
86
|
+
const v = state.values[i];
|
|
87
|
+
if (v < out) out = v;
|
|
88
|
+
}
|
|
89
|
+
return out;
|
|
90
|
+
},
|
|
91
|
+
merge: (a, b) => ({ values: [...a.values, ...b.values] })
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function max(field, opts) {
|
|
95
|
+
const _seed = opts?.seed;
|
|
96
|
+
void _seed;
|
|
97
|
+
return {
|
|
98
|
+
op: "max",
|
|
99
|
+
field,
|
|
100
|
+
init: () => ({ values: [] }),
|
|
101
|
+
step: (state, record) => pushValue(state, readNumber(record, field)),
|
|
102
|
+
remove: (state, record) => removeValue(state, readNumber(record, field)),
|
|
103
|
+
finalize: (state) => {
|
|
104
|
+
if (state.values.length === 0) return null;
|
|
105
|
+
let out = state.values[0];
|
|
106
|
+
for (let i = 1; i < state.values.length; i++) {
|
|
107
|
+
const v = state.values[i];
|
|
108
|
+
if (v > out) out = v;
|
|
109
|
+
}
|
|
110
|
+
return out;
|
|
111
|
+
},
|
|
112
|
+
merge: (a, b) => ({ values: [...a.values, ...b.values] })
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function moneySum(field, opts) {
|
|
116
|
+
return sum(field, opts);
|
|
117
|
+
}
|
|
118
|
+
function moneyMin(field, opts) {
|
|
119
|
+
return min(field, opts);
|
|
120
|
+
}
|
|
121
|
+
function moneyMax(field, opts) {
|
|
122
|
+
return max(field, opts);
|
|
123
|
+
}
|
|
124
|
+
var reducerBuilder = {
|
|
125
|
+
count,
|
|
126
|
+
// The generic F parameter on sum/min/max in the interface is type-only; the
|
|
127
|
+
// standalone factories are plain `(field: string)` functions. With M=never the
|
|
128
|
+
// conditional return collapses to the numeric branch, matching the factories'
|
|
129
|
+
// return type, but TypeScript cannot verify that collapse for a generic method
|
|
130
|
+
// signature — so each factory is cast directly to the method's type.
|
|
131
|
+
sum,
|
|
132
|
+
avg,
|
|
133
|
+
min,
|
|
134
|
+
max,
|
|
135
|
+
moneySum,
|
|
136
|
+
moneyMin,
|
|
137
|
+
moneyMax
|
|
138
|
+
};
|
|
139
|
+
function readNumber(record, field) {
|
|
140
|
+
const value = readPath(record, field);
|
|
141
|
+
if (typeof value === "object" && value !== null && "amount" in value && "currency" in value) {
|
|
142
|
+
throw new Error(
|
|
143
|
+
`aggregate: field "${field}" holds a money value but was not money-aware \u2014 declare it in the collection's moneyFields so sum/min/max stay exact`
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// src/with-lookup/aggregate/aggregation.ts
|
|
150
|
+
function reduceRecords(records, spec) {
|
|
151
|
+
const state = {};
|
|
152
|
+
for (const key of Object.keys(spec)) {
|
|
153
|
+
state[key] = spec[key].init();
|
|
154
|
+
}
|
|
155
|
+
for (const record of records) {
|
|
156
|
+
for (const key of Object.keys(spec)) {
|
|
157
|
+
state[key] = spec[key].step(state[key], record);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const result = {};
|
|
161
|
+
for (const key of Object.keys(spec)) {
|
|
162
|
+
result[key] = spec[key].finalize(state[key]);
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
var LiveAggregationImpl = class {
|
|
167
|
+
constructor(recompute, upstreams) {
|
|
168
|
+
this.recompute = recompute;
|
|
169
|
+
try {
|
|
170
|
+
this.value = recompute();
|
|
171
|
+
this.error = void 0;
|
|
172
|
+
} catch (err) {
|
|
173
|
+
this.value = void 0;
|
|
174
|
+
this.error = err;
|
|
175
|
+
}
|
|
176
|
+
for (const upstream of upstreams) {
|
|
177
|
+
const unsub = upstream.subscribe(() => this.refresh());
|
|
178
|
+
this.unsubscribes.push(unsub);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
recompute;
|
|
182
|
+
value;
|
|
183
|
+
error;
|
|
184
|
+
listeners = /* @__PURE__ */ new Set();
|
|
185
|
+
unsubscribes = [];
|
|
186
|
+
stopped = false;
|
|
187
|
+
refresh() {
|
|
188
|
+
if (this.stopped) return;
|
|
189
|
+
try {
|
|
190
|
+
this.value = this.recompute();
|
|
191
|
+
this.error = void 0;
|
|
192
|
+
} catch (err) {
|
|
193
|
+
this.error = err;
|
|
194
|
+
}
|
|
195
|
+
for (const listener of this.listeners) {
|
|
196
|
+
try {
|
|
197
|
+
listener();
|
|
198
|
+
} catch (err) {
|
|
199
|
+
console.warn("[noy-db] LiveAggregation listener threw:", err);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
subscribe(cb) {
|
|
204
|
+
if (this.stopped) {
|
|
205
|
+
return () => {
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
this.listeners.add(cb);
|
|
209
|
+
return () => {
|
|
210
|
+
this.listeners.delete(cb);
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
stop() {
|
|
214
|
+
if (this.stopped) return;
|
|
215
|
+
this.stopped = true;
|
|
216
|
+
for (const unsub of this.unsubscribes) {
|
|
217
|
+
try {
|
|
218
|
+
unsub();
|
|
219
|
+
} catch (err) {
|
|
220
|
+
console.warn("[noy-db] LiveAggregation upstream unsubscribe threw:", err);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
this.unsubscribes.length = 0;
|
|
224
|
+
this.listeners.clear();
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
var Aggregation = class {
|
|
228
|
+
constructor(executeRecords, spec, upstreams) {
|
|
229
|
+
this.executeRecords = executeRecords;
|
|
230
|
+
this.spec = spec;
|
|
231
|
+
this.upstreams = upstreams;
|
|
232
|
+
}
|
|
233
|
+
executeRecords;
|
|
234
|
+
spec;
|
|
235
|
+
upstreams;
|
|
236
|
+
/**
|
|
237
|
+
* Execute the query and reduce the results synchronously.
|
|
238
|
+
* Returns the reduced shape matching the spec — e.g. a spec of
|
|
239
|
+
* `{ total: sum('amount'), n: count() }` returns
|
|
240
|
+
* `{ total: number, n: number }`.
|
|
241
|
+
*/
|
|
242
|
+
run() {
|
|
243
|
+
return reduceRecords(this.executeRecords(), this.spec);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Build a reactive `LiveAggregation<R>` that re-runs the reduction
|
|
247
|
+
* whenever any upstream source notifies of a change. The initial
|
|
248
|
+
* value is computed eagerly in the constructor, so consumers can
|
|
249
|
+
* read `live.value` immediately after calling `.live()`.
|
|
250
|
+
*
|
|
251
|
+
* Always call `live.stop()` when finished — it tears down the
|
|
252
|
+
* upstream subscriptions. Vue's `onUnmounted` is the canonical
|
|
253
|
+
* place.
|
|
254
|
+
*
|
|
255
|
+
* **Implementation note:** every upstream change triggers a full
|
|
256
|
+
* re-reduction. Incremental maintenance (O(1) per delta for
|
|
257
|
+
* sum/count/avg via the reducer protocol's `remove()` method) is a
|
|
258
|
+
* planned follow-up optimization — the protocol already supports
|
|
259
|
+
* it, but the executor doesn't drive it yet. Consumers get
|
|
260
|
+
* correct, reactive values today; future PRs can switch to
|
|
261
|
+
* delta-based maintenance without changing this API.
|
|
262
|
+
*/
|
|
263
|
+
live() {
|
|
264
|
+
const recompute = () => reduceRecords(this.executeRecords(), this.spec);
|
|
265
|
+
return new LiveAggregationImpl(recompute, this.upstreams);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
function buildLiveAggregation(recompute, upstreams) {
|
|
269
|
+
return new LiveAggregationImpl(recompute, upstreams);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// src/with-lookup/aggregate/canonical-key.ts
|
|
273
|
+
function canonicalGroupKey(fields, row) {
|
|
274
|
+
const sorted = [...fields].sort();
|
|
275
|
+
const parts = [];
|
|
276
|
+
for (const name of sorted) {
|
|
277
|
+
const v = row[name];
|
|
278
|
+
const serialised = v === void 0 ? "undefined" : JSON.stringify(v);
|
|
279
|
+
parts.push(`${name}=${serialised}`);
|
|
280
|
+
}
|
|
281
|
+
return parts.join("|");
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// src/with-lookup/aggregate/groupby.ts
|
|
285
|
+
var GROUPBY_WARN_CARDINALITY = 1e4;
|
|
286
|
+
var GROUPBY_MAX_CARDINALITY = 1e5;
|
|
287
|
+
var warnedCardinalityFields = /* @__PURE__ */ new Set();
|
|
288
|
+
function warnCardinalityApproaching(fields, observed) {
|
|
289
|
+
const key = JSON.stringify([...fields].sort());
|
|
290
|
+
if (warnedCardinalityFields.has(key)) return;
|
|
291
|
+
warnedCardinalityFields.add(key);
|
|
292
|
+
const label = `[${fields.join(", ")}]`;
|
|
293
|
+
console.warn(
|
|
294
|
+
`[noy-db] .groupBy(${label}) produced ${observed} distinct groups, ${Math.round(observed / GROUPBY_MAX_CARDINALITY * 100)}% of the ${GROUPBY_MAX_CARDINALITY}-group ceiling. Narrow the query with .where() before grouping, or switch to a lower-cardinality field.`
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
function resetGroupByWarnings() {
|
|
298
|
+
warnedCardinalityFields.clear();
|
|
299
|
+
}
|
|
300
|
+
var GroupedQueryBase = class {
|
|
301
|
+
constructor(executeRecords, fieldOrFields, upstreams, dictLabelResolver, via) {
|
|
302
|
+
this.executeRecords = executeRecords;
|
|
303
|
+
this.upstreams = upstreams;
|
|
304
|
+
this.dictLabelResolver = dictLabelResolver;
|
|
305
|
+
this.via = via;
|
|
306
|
+
this.fields = typeof fieldOrFields === "string" ? [fieldOrFields] : [...fieldOrFields];
|
|
307
|
+
}
|
|
308
|
+
executeRecords;
|
|
309
|
+
upstreams;
|
|
310
|
+
dictLabelResolver;
|
|
311
|
+
via;
|
|
312
|
+
/**
|
|
313
|
+
* Field set this grouped query buckets on. Stored in declaration
|
|
314
|
+
* order — the same order is preserved on every result row by
|
|
315
|
+
* `groupAndReduce`. For the single-field constructor, this is
|
|
316
|
+
* `[field]`.
|
|
317
|
+
*/
|
|
318
|
+
fields;
|
|
319
|
+
/** Apply Via-aware reducer rewriting (e.g. money) when the source declares one. */
|
|
320
|
+
wrapSpec(spec) {
|
|
321
|
+
return this.via ? this.via.wrapReducers(spec) : spec;
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
var GroupedQuery = class extends GroupedQueryBase {
|
|
325
|
+
aggregate(specOrBuild) {
|
|
326
|
+
const spec = typeof specOrBuild === "function" ? specOrBuild(reducerBuilder) : specOrBuild;
|
|
327
|
+
return new GroupedAggregation(
|
|
328
|
+
this.executeRecords,
|
|
329
|
+
this.fields,
|
|
330
|
+
this.wrapSpec(spec),
|
|
331
|
+
this.upstreams,
|
|
332
|
+
this.dictLabelResolver
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
var GroupedQueryN = class extends GroupedQueryBase {
|
|
337
|
+
aggregate(specOrBuild) {
|
|
338
|
+
const spec = typeof specOrBuild === "function" ? specOrBuild(reducerBuilder) : specOrBuild;
|
|
339
|
+
return new GroupedAggregation(
|
|
340
|
+
this.executeRecords,
|
|
341
|
+
this.fields,
|
|
342
|
+
this.wrapSpec(spec),
|
|
343
|
+
this.upstreams,
|
|
344
|
+
this.dictLabelResolver
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
function groupAndReduce(records, fieldOrFields, spec, moneyFields) {
|
|
349
|
+
const fields = typeof fieldOrFields === "string" ? [fieldOrFields] : fieldOrFields;
|
|
350
|
+
if (fields.length === 0) {
|
|
351
|
+
throw new Error(".groupBy() requires at least one field");
|
|
352
|
+
}
|
|
353
|
+
if (moneyFields) {
|
|
354
|
+
spec = viaBinder("money")({ moneyFields }).wrapReducers(spec);
|
|
355
|
+
}
|
|
356
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
357
|
+
const fieldLabel = fields.length === 1 ? fields[0] : `[${fields.join(", ")}]`;
|
|
358
|
+
for (const record of records) {
|
|
359
|
+
const keyValues = {};
|
|
360
|
+
for (const f of fields) {
|
|
361
|
+
keyValues[f] = readPath(record, f);
|
|
362
|
+
}
|
|
363
|
+
const dedupKey = canonicalGroupKey(fields, keyValues);
|
|
364
|
+
let bucket = buckets.get(dedupKey);
|
|
365
|
+
if (bucket === void 0) {
|
|
366
|
+
if (buckets.size >= GROUPBY_MAX_CARDINALITY) {
|
|
367
|
+
throw new GroupCardinalityError(
|
|
368
|
+
fieldLabel,
|
|
369
|
+
buckets.size + 1,
|
|
370
|
+
GROUPBY_MAX_CARDINALITY
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
bucket = { keyValues, records: [] };
|
|
374
|
+
buckets.set(dedupKey, bucket);
|
|
375
|
+
}
|
|
376
|
+
bucket.records.push(record);
|
|
377
|
+
}
|
|
378
|
+
if (buckets.size >= GROUPBY_WARN_CARDINALITY) {
|
|
379
|
+
warnCardinalityApproaching(fields, buckets.size);
|
|
380
|
+
}
|
|
381
|
+
const reducerKeys = Object.keys(spec);
|
|
382
|
+
const out = [];
|
|
383
|
+
for (const bucket of buckets.values()) {
|
|
384
|
+
const state = {};
|
|
385
|
+
for (const rk of reducerKeys) {
|
|
386
|
+
state[rk] = spec[rk].init();
|
|
387
|
+
}
|
|
388
|
+
for (const record of bucket.records) {
|
|
389
|
+
for (const rk of reducerKeys) {
|
|
390
|
+
state[rk] = spec[rk].step(state[rk], record);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const row = {};
|
|
394
|
+
for (const f of fields) {
|
|
395
|
+
row[f] = bucket.keyValues[f];
|
|
396
|
+
}
|
|
397
|
+
for (const rk of reducerKeys) {
|
|
398
|
+
row[rk] = spec[rk].finalize(state[rk]);
|
|
399
|
+
}
|
|
400
|
+
out.push(row);
|
|
401
|
+
}
|
|
402
|
+
return out;
|
|
403
|
+
}
|
|
404
|
+
var GroupedAggregation = class {
|
|
405
|
+
constructor(executeRecords, fields, spec, upstreams, dictLabelResolver) {
|
|
406
|
+
this.executeRecords = executeRecords;
|
|
407
|
+
this.spec = spec;
|
|
408
|
+
this.upstreams = upstreams;
|
|
409
|
+
this.dictLabelResolver = dictLabelResolver;
|
|
410
|
+
this.fields = typeof fields === "string" ? [fields] : [...fields];
|
|
411
|
+
}
|
|
412
|
+
executeRecords;
|
|
413
|
+
spec;
|
|
414
|
+
upstreams;
|
|
415
|
+
dictLabelResolver;
|
|
416
|
+
fields;
|
|
417
|
+
/**
|
|
418
|
+
* Execute the query, group, reduce, and return an array of rows.
|
|
419
|
+
*
|
|
420
|
+
* `opts` (query-form MV grouping): when a `locale` + `i18nFields` are
|
|
421
|
+
* given, the declared group-key `i18nText` fields are resolved to that locale
|
|
422
|
+
* at the `mv` layer BEFORE bucketing — so an i18n group key is a stable string
|
|
423
|
+
* instead of a raw `{locale}` map. The MV executor passes the MV's
|
|
424
|
+
* `i18nLocale`/`i18nFields`; ordinary `.run()` callers pass nothing and are
|
|
425
|
+
* unaffected.
|
|
426
|
+
*/
|
|
427
|
+
run(opts) {
|
|
428
|
+
let records = this.executeRecords();
|
|
429
|
+
if (opts?.locale !== void 0 && opts.i18nFields !== void 0) {
|
|
430
|
+
const groupI18n = {};
|
|
431
|
+
for (const f of this.fields) {
|
|
432
|
+
const d = opts.i18nFields[f];
|
|
433
|
+
if (d !== void 0) groupI18n[f] = d;
|
|
434
|
+
}
|
|
435
|
+
if (Object.keys(groupI18n).length > 0) {
|
|
436
|
+
records = records.map((r) => applyI18nLocale(r, groupI18n, opts.locale, void 0, "mv"));
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
return groupAndReduce(records, this.fields, this.spec);
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Execute the query, group, reduce, and resolve `<field>Label` for
|
|
443
|
+
* each result row when the grouping field is a `dictKey` and a
|
|
444
|
+
* `locale` is provided. Returns `R[]` synchronously when
|
|
445
|
+
* no locale is specified (identical to `.run()`).
|
|
446
|
+
*
|
|
447
|
+
* The `<field>Label` field is appended to each row. Rows whose group
|
|
448
|
+
* key has no dictionary entry get `<field>Label: undefined`.
|
|
449
|
+
*
|
|
450
|
+
* Dict-label resolution is single-field only — multi-key groupings
|
|
451
|
+
* do not produce a `<field>Label`. The resolver is only attached
|
|
452
|
+
* by the builder when `fields.length === 1`.
|
|
453
|
+
*/
|
|
454
|
+
async runAsync(opts) {
|
|
455
|
+
const rows = groupAndReduce(this.executeRecords(), this.fields, this.spec);
|
|
456
|
+
if (!opts?.locale || !this.dictLabelResolver || this.fields.length !== 1) return rows;
|
|
457
|
+
const resolve = this.dictLabelResolver;
|
|
458
|
+
const locale = opts.locale;
|
|
459
|
+
const fallback = opts.fallback;
|
|
460
|
+
const field = this.fields[0];
|
|
461
|
+
const labelKey = `${field}Label`;
|
|
462
|
+
return Promise.all(
|
|
463
|
+
rows.map(async (row) => {
|
|
464
|
+
const key = row[field];
|
|
465
|
+
if (typeof key !== "string") return row;
|
|
466
|
+
const label = await resolve(key, locale, fallback);
|
|
467
|
+
return { ...row, [labelKey]: label };
|
|
468
|
+
})
|
|
469
|
+
);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Build a reactive `LiveAggregation<R[]>` that re-runs the full
|
|
473
|
+
* group-and-reduce pipeline whenever any upstream source notifies
|
|
474
|
+
* of a change. Same error-isolation and idempotent-stop contract
|
|
475
|
+
* as `Aggregation.live()` — the implementation delegates to the
|
|
476
|
+
* same `LiveAggregationImpl` class by threading a fresh
|
|
477
|
+
* recompute closure through the existing constructor.
|
|
478
|
+
*
|
|
479
|
+
* uses naive full re-run on every change. Incremental
|
|
480
|
+
* per-bucket maintenance (apply `step` on inserted records,
|
|
481
|
+
* `remove` on deleted records, route by bucket key) is a future
|
|
482
|
+
* optimization — the reducer protocol admits it, but wiring
|
|
483
|
+
* delta-aware source subscriptions is a separate PR.
|
|
484
|
+
*
|
|
485
|
+
* Always call `live.stop()` when finished.
|
|
486
|
+
*/
|
|
487
|
+
live() {
|
|
488
|
+
const recompute = () => groupAndReduce(this.executeRecords(), this.fields, this.spec);
|
|
489
|
+
return buildLiveAggregation(recompute, this.upstreams);
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
export {
|
|
494
|
+
count,
|
|
495
|
+
sum,
|
|
496
|
+
avg,
|
|
497
|
+
min,
|
|
498
|
+
max,
|
|
499
|
+
moneySum,
|
|
500
|
+
moneyMin,
|
|
501
|
+
moneyMax,
|
|
502
|
+
reducerBuilder,
|
|
503
|
+
reduceRecords,
|
|
504
|
+
Aggregation,
|
|
505
|
+
buildLiveAggregation,
|
|
506
|
+
canonicalGroupKey,
|
|
507
|
+
GROUPBY_WARN_CARDINALITY,
|
|
508
|
+
GROUPBY_MAX_CARDINALITY,
|
|
509
|
+
resetGroupByWarnings,
|
|
510
|
+
GroupedQuery,
|
|
511
|
+
GroupedQueryN,
|
|
512
|
+
groupAndReduce,
|
|
513
|
+
GroupedAggregation
|
|
514
|
+
};
|
|
515
|
+
//# sourceMappingURL=chunk-IGJHJYM6.js.map
|