@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,144 @@
|
|
|
1
|
+
import type { ViaDescriptor } from './index.js';
|
|
2
|
+
import type { ViaPipeline } from './pipeline.js';
|
|
3
|
+
import type { DictKeyDescriptor, I18nTextDescriptor, StaticDictDescriptor } from '../../port/with/i18n-strategy.js';
|
|
4
|
+
import type { ComputedDescriptor } from '../../port/with/computed-strategy.js';
|
|
5
|
+
import type { LookupDescriptor } from '../../port/with/lookup-strategy.js';
|
|
6
|
+
/** Tagged container returned by {@link via}. Readonly — never mutated after construction. */
|
|
7
|
+
export interface ViaFieldSpec {
|
|
8
|
+
readonly _noydbVia: true;
|
|
9
|
+
readonly descriptors: readonly ViaDescriptor[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Compose one or more Via feature descriptors for a single field.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* vault.collection('invoices', {
|
|
17
|
+
* viaFields: { total: via(money({ currency: 'EUR' })) },
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function via(...descriptors: ViaDescriptor[]): ViaFieldSpec;
|
|
22
|
+
/** Runtime predicate for detecting a {@link ViaFieldSpec}. */
|
|
23
|
+
export declare function isViaFieldSpec(x: unknown): x is ViaFieldSpec;
|
|
24
|
+
/** The money/i18n/lookup sugar keys + a `viaFields` map — the inputs {@link mergeViaFields} reconciles. */
|
|
25
|
+
export interface ViaFieldSources {
|
|
26
|
+
readonly moneyFields?: Record<string, ViaDescriptor> | undefined;
|
|
27
|
+
readonly i18nFields?: Record<string, I18nTextDescriptor> | undefined;
|
|
28
|
+
readonly dictKeyFields?: Record<string, DictKeyDescriptor | StaticDictDescriptor> | undefined;
|
|
29
|
+
/** — lookup()/enumOf()/dict() sugar key (#650 Task 2). */
|
|
30
|
+
readonly lookupFields?: Record<string, LookupDescriptor> | undefined;
|
|
31
|
+
readonly viaFields?: Record<string, ViaFieldSpec> | undefined;
|
|
32
|
+
}
|
|
33
|
+
/** The effective per-feature field maps after merging sugar keys with `viaFields`. */
|
|
34
|
+
export interface MergedViaFields {
|
|
35
|
+
readonly moneyFields: Record<string, ViaDescriptor> | undefined;
|
|
36
|
+
readonly i18nFields: Record<string, I18nTextDescriptor> | undefined;
|
|
37
|
+
readonly dictKeyFields: Record<string, DictKeyDescriptor | StaticDictDescriptor> | undefined;
|
|
38
|
+
/** `via(computed(fn, { deps, mode }))` entries (#638 Task 7) — there is no `computed`
|
|
39
|
+
* sugar KEY to merge against here (unlike money/i18n/dictKey); `collection-config.ts`
|
|
40
|
+
* unions this with the `computed:` option's own entries before splitting by mode. */
|
|
41
|
+
readonly computedFields: Record<string, ComputedDescriptor> | undefined;
|
|
42
|
+
/** `lookupFields` sugar key merged with `via(lookup(...))`/`via(enumOf(...))`/`via(dict(...))`
|
|
43
|
+
* entries (#650 Task 2) — a SEPARATE binding from i18n; `dictKey()`/`staticDict()` stay
|
|
44
|
+
* routed onto `dictKeyFields`/the i18n binding (the alias, unchanged). */
|
|
45
|
+
readonly lookupFields: Record<string, LookupDescriptor> | undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Merge `viaFields` (the {@link via} composer) with the money/i18n sugar
|
|
49
|
+
* keys into the effective maps every consumer reads — the kernel's
|
|
50
|
+
* `compileViaBindings` (the `ViaPipeline` bindings) and `vault.ts`'s own
|
|
51
|
+
* i18n/dict registries (put-time validation, dict-join/search resolution)
|
|
52
|
+
* both call this so a field declared via `viaFields` behaves identically to
|
|
53
|
+
* one declared under its feature's sugar key.
|
|
54
|
+
*
|
|
55
|
+
* Each `viaFields` entry's descriptors are grouped by `_viaBrand`; an
|
|
56
|
+
* `'i18n'`-branded descriptor further splits by shape (i18nText vs
|
|
57
|
+
* dictKey/staticDict) via the existing descriptor-shape predicates. A field
|
|
58
|
+
* name declared in BOTH a sugar key and `viaFields` throws `ValidationError`
|
|
59
|
+
* — one declaration site per field (#623 Task 9).
|
|
60
|
+
*/
|
|
61
|
+
export declare function mergeViaFields(sources: ViaFieldSources): MergedViaFields;
|
|
62
|
+
/**
|
|
63
|
+
* #631 — declare-time cross-binding same-field collision guard. Today the same field named
|
|
64
|
+
* in two DIFFERENT via-binding families (e.g. the same field in both `moneyFields` and
|
|
65
|
+
* `blobFields`) resolves silently by compile-order first-wins in `ViaPipeline`'s per-field
|
|
66
|
+
* posture/clause lookup — undefined pipeline behavior for a config that is almost certainly a
|
|
67
|
+
* mistake. `mergeViaFields` already guards sugar-vs-`viaFields` and `dictKeyFields`-vs-
|
|
68
|
+
* `lookupFields` collisions (#623 Task 9); this runs one step later, in `compileViaBindings`
|
|
69
|
+
* (fresh construction) or {@link guardReconcileCollisions} (late-attach reconcile), because
|
|
70
|
+
* those are the only seams that also see `classifiedFields`/`blobFields` — neither is part of
|
|
71
|
+
* `ViaFieldSources`, so `mergeViaFields` never sees them.
|
|
72
|
+
*
|
|
73
|
+
* WHY FAMILY-BASED, NOT PROVENANCE-BASED (#631 review, round 2 — Controller ruling): a field
|
|
74
|
+
* declared via `via(computed(fn), money(...))` and a field declared via two independent sugar
|
|
75
|
+
* maps (`computed: { total: fn }` + `moneyFields: { total: money(...) }`) are NOT
|
|
76
|
+
* distinguishable here — `mergeViaFields` folds both declaration STYLES into the IDENTICAL
|
|
77
|
+
* merged per-family field maps this function receives; provenance (which style produced a given
|
|
78
|
+
* map entry) is erased before this guard ever runs. Narrowing the exemption to "only
|
|
79
|
+
* via()-composed fields" would therefore require threading a second, parallel
|
|
80
|
+
* provenance-tracking data structure through `mergeViaFields` for the sole purpose of refusing a
|
|
81
|
+
* config that is BEHAVIORALLY IDENTICAL to the sanctioned one — refusing it would be a
|
|
82
|
+
* behavior-lock violation (breaking a legal, meaningful config), not a bug fix. The exemption is
|
|
83
|
+
* therefore keyed on the FAMILY SET alone, and instead earned empirically per family (below).
|
|
84
|
+
*
|
|
85
|
+
* EXEMPT (test-earned, not merely asserted): `computed` colliding with EXACTLY ONE of
|
|
86
|
+
* `money`/`i18n`/`lookup` on the same field. `via()`'s descriptor loop only accepts
|
|
87
|
+
* money/i18n/computed/lookup `_viaBrand`s (`mergeViaFields` throws on any other brand), so a
|
|
88
|
+
* computed+classified or computed+blob same-field pairing can never arise from composition — it
|
|
89
|
+
* can only come from mistakenly naming the same field in `computed`/`viaFields` AND
|
|
90
|
+
* `classifiedFields`/`blobFields`, which this guard still refuses. For the three families that
|
|
91
|
+
* CAN legitimately arise, each is pinned by an end-to-end runtime test proving the composition
|
|
92
|
+
* does something real (not just "doesn't throw") — see `computed/virtual.test.ts`:
|
|
93
|
+
* - money: the "composed grammar" tests (materialized-mode money formatting the computed
|
|
94
|
+
* output; the ORIGINAL evidence this exemption started from — see the money DOES/does NOT
|
|
95
|
+
* format the computed output pair).
|
|
96
|
+
* - i18n (dictKey) / lookup (dict()): the "composed grammar — computed + i18n/lookup
|
|
97
|
+
* families (#631 collision-guard exemption pins)" block, BOTH declaration styles
|
|
98
|
+
* (`via(computed(...), dictKey(...)/dict(...))` and the two-independent-sugar-maps form),
|
|
99
|
+
* materialized mode — proven to dress `<field>Label` off the computed output identically
|
|
100
|
+
* either way (the provenance-erasure claim above, empirically confirmed). Virtual mode for
|
|
101
|
+
* both families hits the SAME present-ORDER limitation money's own virtual composed-grammar
|
|
102
|
+
* test already documents (i18n/lookup's `present()` runs BEFORE computed's — a virtual field
|
|
103
|
+
* is never stored, so there is nothing to dress yet); pinned as a known limitation, not
|
|
104
|
+
* grounds to drop the family from the exemption (materialized mode is what proves the family
|
|
105
|
+
* genuinely composes).
|
|
106
|
+
*
|
|
107
|
+
* 3-CLAIMANT TIGHTENING (#631 review, round 2): the exemption requires EXACTLY TWO claimant
|
|
108
|
+
* source-keys, not just two families. A field named in `computed` + BOTH `i18nFields` AND
|
|
109
|
+
* `dictKeyFields` collapses to the same two families (`{computed, i18n}` — `dictKeyFields`
|
|
110
|
+
* shares the `i18n` family) but is a genuine THREE-claimant collision: two independent i18n
|
|
111
|
+
* sugar keys both claiming the field is itself a mistake this guard exists to catch, and must
|
|
112
|
+
* not slip through because the family SET happens to match the earned exemption's shape.
|
|
113
|
+
*/
|
|
114
|
+
export declare function guardCrossBindingFieldCollisions(fieldMaps: Readonly<Record<string, Record<string, unknown> | undefined>>, callerPrefix?: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* #664 Part 1 — the late-attach reconcile-path sibling of {@link guardCrossBindingFieldCollisions}.
|
|
117
|
+
* `vault.ts`'s reconcile ladder (a second-or-later `vault.collection(name, {...})` call on an
|
|
118
|
+
* ALREADY-open collection) never ran the fresh-construction guard above, so two probe recipes
|
|
119
|
+
* slipped through (round-2 fable review, 2026-07-13):
|
|
120
|
+
*
|
|
121
|
+
* - **(a) incoming×incoming** — the SAME reconcile call names a field in two different
|
|
122
|
+
* families (e.g. `moneyFields`+`blobFields` both claiming `"amount"`). Fix: re-run
|
|
123
|
+
* {@link guardCrossBindingFieldCollisions} verbatim over THIS call's own merged field maps —
|
|
124
|
+
* identical semantics to fresh construction, just invoked one call later.
|
|
125
|
+
* - **(b) existing×incoming** — an EARLIER call already compiled a binding covering a field
|
|
126
|
+
* (money reconciled onto it, or it shipped with the collection's first declaration), and
|
|
127
|
+
* THIS call's incoming family map claims the SAME field for a DIFFERENT family (e.g. call-1
|
|
128
|
+
* `classifiedFields:['ssn']`, call-2 `moneyFields:{ssn}`) — undetectable by (a) alone since
|
|
129
|
+
* the collision spans two calls. Read via the LIVE collection's compiled bindings
|
|
130
|
+
* (`coll._via.bindings`): each `ViaBinding.covers(field)` (`via/index.ts`) plus its `brand` tells us
|
|
131
|
+
* which family already owns the field, mapped through the SAME {@link VIA_FIELD_MAP_FAMILY}
|
|
132
|
+
* the incoming side uses — no new collection.ts surface needed.
|
|
133
|
+
*
|
|
134
|
+
* Both sub-checks honor the SAME #631 exemption (`{computed,money}`/`{computed,i18n}`/
|
|
135
|
+
* `{computed,lookup}`, exactly-two-claimants) as the fresh guard — a composition that would be
|
|
136
|
+
* legal in one `vault.collection()` call (`via(computed(fn), money(...))`) must stay legal when
|
|
137
|
+
* split across two calls (computed declared fresh, money late-attached), since the two paths are
|
|
138
|
+
* behaviorally equivalent by the same provenance-erasure argument {@link guardCrossBindingFieldCollisions}
|
|
139
|
+
* documents. `existingFamilies` is collected as a SET (every binding covering the field, not just
|
|
140
|
+
* the first match) so an already-legally-composed pair (e.g. existing `{computed, money}`) is
|
|
141
|
+
* checked against the incoming family individually — a THIRD family colliding with either half
|
|
142
|
+
* is still refused.
|
|
143
|
+
*/
|
|
144
|
+
export declare function guardReconcileCollisions(existingVia: ViaPipeline | undefined, incomingFieldMaps: Readonly<Record<string, Record<string, unknown> | undefined>>): void;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import type { ViaGraph } from './graph.js';
|
|
2
|
+
import type { Collection } from '../collection.js';
|
|
3
|
+
import type { EncryptedEnvelope } from '../types.js';
|
|
4
|
+
/** One deleted child's resolved rollup PARENT intent (#640) — ids + a field name only. A
|
|
5
|
+
* resolved `parentId` is an id, same class as any touched record id — never a stored value. */
|
|
6
|
+
export interface RollupDeleteIntent {
|
|
7
|
+
readonly into: string;
|
|
8
|
+
readonly parentId: string;
|
|
9
|
+
readonly field: string;
|
|
10
|
+
}
|
|
11
|
+
/** One collection's batched touches this session (#640 widens the #638 `Set<string>` shape):
|
|
12
|
+
* `puts` — the original semantics, unchanged; `deletes` — a deleted record's id mapped to its
|
|
13
|
+
* resolved rollup-parent intents, captured PRE-invalidation by `Collection._onRecordMutated`'s
|
|
14
|
+
* sync-apply delete case (the FK is only readable there — see `kernel/collection.ts
|
|
15
|
+
* #_rollupDeleteIntents`). */
|
|
16
|
+
export interface GraphTouch {
|
|
17
|
+
readonly puts: Set<string>;
|
|
18
|
+
readonly deletes: Map<string, readonly RollupDeleteIntent[]>;
|
|
19
|
+
}
|
|
20
|
+
/** Per-session touched set — collection → its `GraphTouch`. Metadata only — ids (collection
|
|
21
|
+
* names, record ids INCLUDING resolved rollup parent ids) and field names; NEVER record payload
|
|
22
|
+
* or key material. A resolved parentId is an id, same class as the touched ids — not a stored
|
|
23
|
+
* value. */
|
|
24
|
+
export type GraphBatch = Map<string, GraphTouch>;
|
|
25
|
+
/** Get-or-create `batch`'s `GraphTouch` entry for `collection` (#640) — shared by
|
|
26
|
+
* `Vault._collectGraphTouch`/`_collectGraphDelete` so each stays a one-line call. */
|
|
27
|
+
export declare function touchFor(batch: GraphBatch, collection: string): GraphTouch;
|
|
28
|
+
/** #640 — sync, I/O-free: `deleted`'s resolved rollup PARENT intents (the FK is only readable
|
|
29
|
+
* NOW, before the record is gone) — a pure function so `Collection._rollupDeleteIntents` stays
|
|
30
|
+
* a one-line delegator under the kernel-surface ceiling. `registry` is `this.derivationSource
|
|
31
|
+
* ?.registry()`; `collectionName` is `this.name` (the CHILD/`rollup.from` side). Generic over
|
|
32
|
+
* the registry's own spec shape so this file never imports a `with-formula` type (port-layering
|
|
33
|
+
* — via/dispatch.ts must not gain a with-* import). */
|
|
34
|
+
export declare function resolveRollupDeleteIntents<S extends {
|
|
35
|
+
source: string;
|
|
36
|
+
rollup?: {
|
|
37
|
+
from: string;
|
|
38
|
+
key: string;
|
|
39
|
+
field: string;
|
|
40
|
+
};
|
|
41
|
+
}>(registry: {
|
|
42
|
+
strategiesForSource(name: string): ReadonlyArray<{
|
|
43
|
+
spec: S;
|
|
44
|
+
}>;
|
|
45
|
+
} | undefined, collectionName: string, deleted: Record<string, unknown>): RollupDeleteIntent[];
|
|
46
|
+
/** #640 — resolve a `RollupDeleteIntent` back to its registry `spec`. The wave's per-intent
|
|
47
|
+
* driver needs `spec.rollup.compute`, which `GraphBatch`'s metadata-only pin forbids batching —
|
|
48
|
+
* so it's re-resolved here, post-boundary, instead of carried across it. `undefined` if the
|
|
49
|
+
* intent's originating strategy was unregistered between collect time and wave time (residual
|
|
50
|
+
* gap, freshness-only). */
|
|
51
|
+
export declare function findRollupSpecForIntent<S extends {
|
|
52
|
+
source: string;
|
|
53
|
+
rollup?: {
|
|
54
|
+
from: string;
|
|
55
|
+
field: string;
|
|
56
|
+
};
|
|
57
|
+
}>(registry: {
|
|
58
|
+
strategiesForSource(name: string): ReadonlyArray<{
|
|
59
|
+
spec: S;
|
|
60
|
+
}>;
|
|
61
|
+
} | undefined, collectionName: string, intent: RollupDeleteIntent): S | undefined;
|
|
62
|
+
/** One dedup ledger for a single wave — a target is recomputed at most once (mark-on-check). */
|
|
63
|
+
export declare class WaveContext {
|
|
64
|
+
private readonly _seen;
|
|
65
|
+
seen(targetKey: string): boolean;
|
|
66
|
+
}
|
|
67
|
+
/** The slice of `Vault` the wave needs: the shared graph (the #553 zero-cost skip) and cached-
|
|
68
|
+
* collection lookup — never constructs, since a touched collection is, by construction,
|
|
69
|
+
* already open (it just fired `_onRecordMutated`). */
|
|
70
|
+
export interface VaultLike {
|
|
71
|
+
readonly graph: ViaGraph;
|
|
72
|
+
_getCollection(name: string): Collection<Record<string, unknown>> | undefined;
|
|
73
|
+
/** #640 (#644 item 3) — structured wave-error surfacing, additive to the existing console.warn. */
|
|
74
|
+
_emit(event: string, payload: unknown): void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Run ONE dispatch wave for a completed batch: for each touched (collection, id), decrypt the
|
|
78
|
+
* applied envelope (id threaded), then run the SAME `dispatchDerivations` +
|
|
79
|
+
* `dispatchMaterializedViews` the local-write path uses — with a shared `WaveContext` so N
|
|
80
|
+
* touched records feeding the SAME target recompute once. #553: a collection with no graph
|
|
81
|
+
* out-edges (e.g. money-only) is skipped before any decrypt/dispatch async work.
|
|
82
|
+
*/
|
|
83
|
+
export declare function runGraphDispatchWave(vault: VaultLike, batch: GraphBatch): Promise<void>;
|
|
84
|
+
/** A record's post-freeze source mutation, for the `'derivation:skipped-frozen'` event
|
|
85
|
+
* and the optional audit-trail entry. See {@link putDerivedOutput}. */
|
|
86
|
+
export interface DerivationSkippedFrozen {
|
|
87
|
+
readonly source: {
|
|
88
|
+
readonly collection: string;
|
|
89
|
+
readonly id: string;
|
|
90
|
+
};
|
|
91
|
+
readonly target: {
|
|
92
|
+
readonly collection: string;
|
|
93
|
+
readonly id: string;
|
|
94
|
+
};
|
|
95
|
+
readonly period: string;
|
|
96
|
+
readonly endDate: string;
|
|
97
|
+
}
|
|
98
|
+
/** The minimal put-capable shape `putDerivedOutput` needs. Any `Collection<T>` structurally
|
|
99
|
+
* satisfies this — its real `options` type is a superset of what's declared here. */
|
|
100
|
+
export interface CollectionLike {
|
|
101
|
+
put(id: string, value: unknown, options?: {
|
|
102
|
+
readonly source?: string;
|
|
103
|
+
}): Promise<void>;
|
|
104
|
+
}
|
|
105
|
+
export interface PutDerivedOutputCtx {
|
|
106
|
+
readonly emit: (ev: string, p: unknown) => void;
|
|
107
|
+
readonly source: {
|
|
108
|
+
readonly collection: string;
|
|
109
|
+
readonly id: string;
|
|
110
|
+
};
|
|
111
|
+
readonly audit?: ((e: DerivationSkippedFrozen) => Promise<void>) | undefined;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Attempt a dispatch-driven output write. On `PeriodClosedError` (the closed-period
|
|
115
|
+
* `beforePut` gate — `freezePeriod`/`archivePeriod` add no separate gate, per seam map
|
|
116
|
+
* Part 7): SKIP (no `_ts` stamped — the gate throws before any write happens), emit
|
|
117
|
+
* `'derivation:skipped-frozen'` on the event bus (ALWAYS), and append an audit-trail entry
|
|
118
|
+
* when the with-history ledger is active. Returns `'written' | 'skipped-frozen'`. Any OTHER
|
|
119
|
+
* error propagates unchanged — this helper narrows exactly one error class. The SOURCE
|
|
120
|
+
* write is never wrapped through this helper — only derived-output writes are (§7).
|
|
121
|
+
*/
|
|
122
|
+
export declare function putDerivedOutput(outColl: CollectionLike, id: string, value: unknown, ctx: PutDerivedOutputCtx, options?: {
|
|
123
|
+
readonly source?: string;
|
|
124
|
+
}): Promise<'written' | 'skipped-frozen'>;
|
|
125
|
+
/** Structural (no static import — kernel spine may not statically reach a with-* service,
|
|
126
|
+
* the S4 gate recipe `check-architecture.mjs`'s port-layering check enforces) shape of the
|
|
127
|
+
* with-history `LedgerStore.append` seam this helper needs. */
|
|
128
|
+
interface AuditLedgerLike {
|
|
129
|
+
append(input: {
|
|
130
|
+
readonly op: 'lifecycle';
|
|
131
|
+
readonly collection: string;
|
|
132
|
+
readonly id: string;
|
|
133
|
+
readonly version: number;
|
|
134
|
+
readonly actor: string;
|
|
135
|
+
readonly payloadHash: string;
|
|
136
|
+
readonly reason?: string;
|
|
137
|
+
}): Promise<unknown>;
|
|
138
|
+
}
|
|
139
|
+
/** @internal — the optional with-history ledger audit hook for `putDerivedOutput`, present
|
|
140
|
+
* only when the ledger is active (mirrors every other kernel event's `if (this.ledger)`
|
|
141
|
+
* gate). Encoded as a `'lifecycle'` entry — the existing "non-data audit event" op (the
|
|
142
|
+
* same convention `forget`'s JSON-summary-in-`reason` entry uses; `ledger/entry.ts:88-104`). */
|
|
143
|
+
export declare function ledgerAuditHook(ledger: AuditLedgerLike | undefined, actor: string): ((e: DerivationSkippedFrozen) => Promise<void>) | undefined;
|
|
144
|
+
/** `recomputeRollup`/`dispatchRollupsOnDelete`'s per-target write outcome (#638 Task 6):
|
|
145
|
+
* `'written'`/`'skipped-frozen'` mirror {@link putDerivedOutput}'s result; `'noop'` covers
|
|
146
|
+
* no-parent/no-change/deduped-by-wave — nothing to report either way. */
|
|
147
|
+
export type RollupOutcome = 'written' | 'skipped-frozen' | 'noop';
|
|
148
|
+
/** Mutable accumulator `forgetDerivedFanout` writes into, one per `Vault.forget()` call — keeps
|
|
149
|
+
* the per-ref loop's call site to a single line under vault.ts's tight kernel-surface ceiling.
|
|
150
|
+
* Maps 1:1 onto `ForgetResult`'s additive fields (`with-audit/forget/strategy.ts`). */
|
|
151
|
+
export interface ForgetFanoutStats {
|
|
152
|
+
recordsErased: number;
|
|
153
|
+
aggregatesRecomputed: number;
|
|
154
|
+
readonly residueFrozen: string[];
|
|
155
|
+
/** #650 Task 5 (#648) — referencing records tombstoned via a `'ref'` edge's `cascade` policy. */
|
|
156
|
+
lookupReferencesCascaded: number;
|
|
157
|
+
/** #650 Task 5 (#648) — referencing fields cleared via a `'ref'` edge's `nullify` policy. */
|
|
158
|
+
lookupReferencesNullified: number;
|
|
159
|
+
/** #650 Task 5 review (Important fix) — `'ref'` edges whose compare-key could NOT be resolved,
|
|
160
|
+
* even from the LIVE pre-shred row (the backing row itself is unreadable) — propagation was
|
|
161
|
+
* skipped for these, reported here so the skip is never silent. `backing:key:collection.field`
|
|
162
|
+
* entries, one per un-propagated edge. */
|
|
163
|
+
readonly lookupReferencesResidue: string[];
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* #622 — after `_writeTombstone(ref.id, actor)` erases the forgotten subject's own record, fan
|
|
167
|
+
* out to its derived residue via the graph (spec §5): record-grain artifacts (MV rows,
|
|
168
|
+
* array-shape derivation rows, same-id record-shape derivation copies) are ERASED through the
|
|
169
|
+
* SAME `!internal` housekeeping-bypass machinery the ordinary delete path uses (no user
|
|
170
|
+
* `onDelete` re-fires — the shred-is-not-a-domain-delete property `_writeTombstone` protects);
|
|
171
|
+
* aggregate-grain rollups are RECOMPUTED without the forgotten contribution in open periods, or
|
|
172
|
+
* skip+audit (via `putDerivedOutput`, already wired into the rollup/MV output paths) in frozen
|
|
173
|
+
* ones. Mutates `stats` in place. `envelope` is `ref`'s PRE-tombstone envelope, decoded only if
|
|
174
|
+
* a rollup edge is actually present — the #553 zero-cost-skip discipline: no decrypt for the
|
|
175
|
+
* common case of a forgotten record with no aggregate-grain consumer, and no work at all when
|
|
176
|
+
* `ref.collection` has no graph out-edges. `lookupCompareKeys` is the `'ref'` edges' compare-key
|
|
177
|
+
* map, resolved from the LIVE row BEFORE any shred (`VaultLinks.checkLookupRefsRestrict`'s return
|
|
178
|
+
* value — `Vault.forget()`'s pre-shred restrict check doubles as the live-resolve pass) — see
|
|
179
|
+
* {@link applyLookupRefsFanout}.
|
|
180
|
+
*/
|
|
181
|
+
export declare function forgetDerivedFanout(vault: VaultLike, ref: {
|
|
182
|
+
readonly collection: string;
|
|
183
|
+
readonly id: string;
|
|
184
|
+
}, envelope: EncryptedEnvelope | null, stats: ForgetFanoutStats, lookupCompareKeys: ReadonlyMap<string, string | undefined>): Promise<void>;
|
|
185
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { ViaGraph } from './graph.js';
|
|
2
|
+
import { resolveComputedEdges, type CollectionOpts, type GraphEdge } from '../collection-config.js';
|
|
3
|
+
import { type ClassifiedEntry } from '../../port/with/classified-strategy.js';
|
|
4
|
+
import { type HasWritableViaPipeline } from './pipeline.js';
|
|
5
|
+
type ComputedFieldsParam = NonNullable<Parameters<typeof resolveComputedEdges>[1]>;
|
|
6
|
+
/**
|
|
7
|
+
* Register one collection's field postures (`binding.posture` + `covers()`)
|
|
8
|
+
* and computed/via-binding-deps edges onto the vault's shared graph. Called
|
|
9
|
+
* from `Vault.collection()`'s fresh-construction path, right after the real
|
|
10
|
+
* `Collection` is built from the SAME `opts` — `resolveCollectionConfig` is a
|
|
11
|
+
* pure function, so re-running it here (Collection's constructor already ran
|
|
12
|
+
* it once internally) costs a one-time, side-effect-free recomputation at
|
|
13
|
+
* collection-declare time, not a per-write cost.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerCollectionGraphSources<T>(graph: ViaGraph, name: string, opts: CollectionOpts<T>): void;
|
|
16
|
+
/** The slice of `Vault.collection()`'s reconcile-path options relevant to
|
|
17
|
+
* graph registration — money/computed/classifiedFields are the only
|
|
18
|
+
* options `Vault.collection()`'s reconcile branches actually attach
|
|
19
|
+
* (i18nFields/dictKeyFields are construction-only, never reconciled). */
|
|
20
|
+
export interface ReconcileGraphOptions {
|
|
21
|
+
readonly moneyFields?: Record<string, unknown>;
|
|
22
|
+
readonly classifiedFields?: Record<string, ClassifiedEntry>;
|
|
23
|
+
readonly computed?: ComputedFieldsParam;
|
|
24
|
+
}
|
|
25
|
+
/** Phase 1's output — what phase 2 (`commitReconcileGraphEdges`) applies once
|
|
26
|
+
* every `_apply*` mutation for this reconcile call has succeeded. */
|
|
27
|
+
export interface ReconcilePlan {
|
|
28
|
+
readonly edges: readonly GraphEdge[];
|
|
29
|
+
readonly depslessComputedFields: readonly string[];
|
|
30
|
+
readonly classifiedFieldNames: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Phase 1 (validate) of the reconcile-path's two-phase graph wiring (#638
|
|
34
|
+
* Task 2 fix wave 2). Pure — throws `ValidationError`, never mutates `graph`.
|
|
35
|
+
*
|
|
36
|
+
* Evaluates the COMBINED existing+incoming computed/classified state, using
|
|
37
|
+
* `graph` as the vault-side memory of what a PRIOR, separate
|
|
38
|
+
* `vault.collection()` call already registered (review Finding I1): a
|
|
39
|
+
* depsless computed field declared while no classified field existed yet
|
|
40
|
+
* registers no edge (`registerCollectionGraphSources` marks it instead), so a
|
|
41
|
+
* LATER call newly introducing a PERSISTABLE (`recoverable`/`digest-only`)
|
|
42
|
+
* classified field must still see it and refuse, regardless of which call
|
|
43
|
+
* declared which piece first. `storage: 'never'` fields are exempt from this
|
|
44
|
+
* specific check: `enforceClassifiedWrite` rejects the whole write BEFORE
|
|
45
|
+
* computed fields ever evaluate (`Collection._putInternal`'s pipeline order —
|
|
46
|
+
* enforceWrite, then computed), so a `never`-stored value structurally cannot
|
|
47
|
+
* reach a computed field's output. (`resolveComputedEdges` below, unchanged,
|
|
48
|
+
* still blanket-refuses a depsless field THIS SAME call introduces alongside
|
|
49
|
+
* ANY classified field regardless of storage — same as fresh construction.)
|
|
50
|
+
* Given that, once a PERSISTABLE classified field is successfully committed
|
|
51
|
+
* for a collection, no depsless computed field can survive uncaught (this
|
|
52
|
+
* very check, or the identical fresh-construction one, would already have
|
|
53
|
+
* refused it) — so this check only needs THIS call's own incoming
|
|
54
|
+
* `classifiedFields`, never `graph`'s classified memory.
|
|
55
|
+
*
|
|
56
|
+
* Each `computed` entry's own `deps` (#638 Task 7 — the reconcile path only ever sees the
|
|
57
|
+
* `computed:` sugar option, per `ReconcileGraphOptions`'s doc comment; `via(computed(...))`
|
|
58
|
+
* is construction-only like i18nFields/dictKeyFields) are resolved via `resolveComputedEdges`
|
|
59
|
+
* exactly like the fresh-construction path — Finding I2ii's original knownFields-sharing
|
|
60
|
+
* concern is back in play for the Task 7 review's CRITICAL fix: on a collection that
|
|
61
|
+
* declares classified fields, `resolveComputedEdges` now checks every `deps` entry against
|
|
62
|
+
* a `knownFields` universe built via the SAME `collectKnownFieldNames` helper the fresh path
|
|
63
|
+
* uses (never a hand-rolled second universe), scoped to THIS call's own
|
|
64
|
+
* `moneyFields`/`classifiedFields`/`computed` options (see `resolveComputedEdges`'s own doc
|
|
65
|
+
* comment for the full rationale and its documented residual limit). On a non-classified
|
|
66
|
+
* collection a plain, non-via field is still a legal dep, unchanged from Task 7.
|
|
67
|
+
*
|
|
68
|
+
* Callers MUST call this BEFORE any `_apply*` mutation runs, and must only
|
|
69
|
+
* call `commitReconcileGraphEdges` with the result AFTER every `_apply*` for
|
|
70
|
+
* this call has succeeded (Finding M2 — no partial graph state may survive a
|
|
71
|
+
* reconcile call whose config is ultimately rejected).
|
|
72
|
+
*/
|
|
73
|
+
export declare function validateReconcileGraphEdges(graph: ViaGraph, name: string, options: ReconcileGraphOptions): ReconcilePlan;
|
|
74
|
+
/**
|
|
75
|
+
* Phase 2 (commit) — call ONLY after every `_apply*` mutation belonging to
|
|
76
|
+
* this reconcile call has succeeded (see {@link validateReconcileGraphEdges}'s
|
|
77
|
+
* doc comment, Finding M2). Registers `plan`'s edges, skipping any target
|
|
78
|
+
* already registered so `registerDerived`'s at-most-once contract holds
|
|
79
|
+
* across repeated identical `vault.collection()` calls, not just within one
|
|
80
|
+
* (Finding I2i); registers the late-attached classified field(s)' sealed
|
|
81
|
+
* posture (Finding M1 — fresh construction gets this for free from
|
|
82
|
+
* `registerCollectionGraphSources`'s compiled-binding loop, which the
|
|
83
|
+
* reconcile path has no equivalent of); and updates the depless-computed /
|
|
84
|
+
* classified graph memory {@link validateReconcileGraphEdges} reads.
|
|
85
|
+
*/
|
|
86
|
+
export declare function commitReconcileGraphEdges(graph: ViaGraph, name: string, plan: ReconcilePlan): void;
|
|
87
|
+
/**
|
|
88
|
+
* Rebuild `coll`'s Via pipeline with the graph's taint overlay layered on
|
|
89
|
+
* (#638 Task 3 — the assignment→enforcement bridge): `postureFor` (query
|
|
90
|
+
* gate + `redactForExport`, `kernel/via/pipeline.ts`) enforces it with zero
|
|
91
|
+
* new surface, and any field the overlay resolves to `encryptedAtRest:
|
|
92
|
+
* 'sealed'` gets the `taint` binding added so it is ACTUALLY sealed at rest
|
|
93
|
+
* via `ctx.sealedSlots` (the same mechanism classified uses).
|
|
94
|
+
*
|
|
95
|
+
* No-op when the collection has no tainted fields — `coll.via` stays exactly
|
|
96
|
+
* what `resolveCollectionConfig` built, preserving `this.via === undefined`
|
|
97
|
+
* for an all-plain collection (#553's sync-stack guarantee). Called once
|
|
98
|
+
* after `registerCollectionGraphSources` (fresh construction) and once after
|
|
99
|
+
* `commitReconcileGraphEdges` (reconcile) — a late-attached classified/
|
|
100
|
+
* computed field can newly taint a field an EARLIER call already built the
|
|
101
|
+
* pipeline for, so both call sites must refresh.
|
|
102
|
+
*
|
|
103
|
+
* Writes through `Collection._setVia` (`kernel/collection.ts`, #666) rather
|
|
104
|
+
* than the old untyped structural-cast reach-in — `_setVia` does both of the
|
|
105
|
+
* cast site's old two steps itself: reassigns `this.via` AND resyncs the
|
|
106
|
+
* codec's OWN `via` snapshot (captured at construction, `collection.ts`'s
|
|
107
|
+
* `this.codec = new RecordCodec({..., via: this.via})`, which does not
|
|
108
|
+
* automatically follow a later `this.via` reassignment) so `encryptRecord`/
|
|
109
|
+
* `decryptRecord` seal/unseal through the taint binding too, not a stale
|
|
110
|
+
* pre-taint pipeline.
|
|
111
|
+
*
|
|
112
|
+
* #642 — `graph.taintedPostures(name)` also carries the collection's `'*'`
|
|
113
|
+
* target (a derivation/MV/overlay OUTPUT collection's whole-record fold,
|
|
114
|
+
* `via/graph.ts`'s `taintedPostures`/`taintSealedFields` already surface it
|
|
115
|
+
* under the literal key `'*'`, no `via/graph.ts` change needed). Split it off
|
|
116
|
+
* BEFORE building the field-specific overlay — `'*'` is never a real record
|
|
117
|
+
* field — and re-derive it as `defaultPosture` through the SAME
|
|
118
|
+
* `buildTaintOverlay` sealed→`queryable:'none'` clamp (reused, not
|
|
119
|
+
* duplicated, by feeding it a one-entry map). A sealed default folds into
|
|
120
|
+
* the SAME single `taintBinding` call via `sealAllFields` — every field
|
|
121
|
+
* (present-time, at-rest) is covered without a second binding.
|
|
122
|
+
*/
|
|
123
|
+
export declare function applyTaintOverlay(coll: HasWritableViaPipeline, graph: ViaGraph, name: string): void;
|
|
124
|
+
/**
|
|
125
|
+
* #642 — the cross-collection re-apply gap (seam map finding 4/10): when the
|
|
126
|
+
* OUTPUT/parent collection was opened (its overlay built) BEFORE the
|
|
127
|
+
* classified SOURCE collection ever registered a field, the output's `'*'`
|
|
128
|
+
* fold (or a rollup's real-field fold) was computed against an empty/stale
|
|
129
|
+
* source posture. `applyTaintOverlay` alone never re-fires for an already-
|
|
130
|
+
* open dependent — this hook closes that: after `name` registers its OWN
|
|
131
|
+
* field postures (called right after `applyTaintOverlay(coll, graph, name)`
|
|
132
|
+
* at each collection-construction call site), re-run `applyTaintOverlay` for
|
|
133
|
+
* every OPEN collection that graph-depends on `name`.
|
|
134
|
+
*
|
|
135
|
+
* Pure wiring — re-applies OVERLAYS only (a pipeline rebuild), never
|
|
136
|
+
* re-registers a graph edge (`registerDerived`'s at-most-once contract, D-2
|
|
137
|
+
* wave-2 law, is untouched). `graph.dependentsOf(name)` already excludes
|
|
138
|
+
* `'ref'` edges (a referencing field must not seal just because its backing
|
|
139
|
+
* dimension changed — the phase-D lookup identity contract). A dependent
|
|
140
|
+
* collection that hasn't been opened yet (`getOpenCollection` returns
|
|
141
|
+
* `undefined`) is skipped — it will fold correctly on its OWN first-open
|
|
142
|
+
* `applyTaintOverlay` call, which reads the graph fresh.
|
|
143
|
+
*/
|
|
144
|
+
export declare function reapplyDependentOverlays(graph: ViaGraph, name: string, getOpenCollection: (n: string) => HasWritableViaPipeline | undefined): void;
|
|
145
|
+
export {};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { ViaPosture } from './index.js';
|
|
2
|
+
/** A (collection, field) node. Artifact-grain targets (rollup field, MV row-class,
|
|
3
|
+
* overlay output) are modelled as a field node whose `field` is the artifact key. */
|
|
4
|
+
export interface FieldRef {
|
|
5
|
+
readonly collection: string;
|
|
6
|
+
readonly field: string;
|
|
7
|
+
}
|
|
8
|
+
export type EdgeKind = 'computed' | 'derivation' | 'rollup' | 'mv' | 'overlay' | 'ref';
|
|
9
|
+
/** `'virtual'` (#638 Task 7) marks a `computed(fn, { mode: 'virtual' })` field's edge —
|
|
10
|
+
* never stored (rides the `present` phase), so it can never be sealed at rest
|
|
11
|
+
* ({@link ViaGraph.taintSealedFields} excludes it) and is always non-queryable
|
|
12
|
+
* regardless of source posture ({@link ViaGraph.effectivePosture} clamps it). */
|
|
13
|
+
export type Grain = 'record' | 'aggregate' | 'virtual';
|
|
14
|
+
/** Delete/forget-time referential policy for a `'ref'` edge (#650 Task 5, spec §4) — duplicated
|
|
15
|
+
* (not imported) from `via/lookup/descriptor.ts`'s `OnDelete`: the kernel spine may not
|
|
16
|
+
* statically import `via/**` (Check 14, `via-layering`). Keep the two in sync by hand. */
|
|
17
|
+
export type OnDelete = 'restrict' | 'cascade' | 'nullify';
|
|
18
|
+
/** Plain (non-via) field baseline — max-permissive; taint only ever tightens. */
|
|
19
|
+
export declare const DEFAULT_POSTURE: ViaPosture;
|
|
20
|
+
/** The per-axis "most restrictive" fold — pure, exported for direct unit testing. */
|
|
21
|
+
export declare function foldPosture(a: ViaPosture, b: ViaPosture): ViaPosture;
|
|
22
|
+
/** Security-axes-only fold for a wildcard collection node (#642): sealed-wins encryptedAtRest,
|
|
23
|
+
* AND exportable, OR forgettable — queryable is NOT folded (stays base.queryable; the sealed
|
|
24
|
+
* clamp to 'none' is buildTaintOverlay's job, so inheriting `sealed` never over-restricts a
|
|
25
|
+
* blob-adjacent output to unqueryable). Pure; exported for unit testing. Distinct from
|
|
26
|
+
* {@link foldPosture} (which folds all four axes) — do NOT reuse foldPosture here. */
|
|
27
|
+
export declare function foldWildcardSecurity(base: ViaPosture, contributor: ViaPosture): ViaPosture;
|
|
28
|
+
/** Metadata-only dependency graph, ONE per vault. Never stores values or key material. */
|
|
29
|
+
export declare class ViaGraph {
|
|
30
|
+
/** Declared source-field postures (registerField), keyed by node id. */
|
|
31
|
+
private readonly _posture;
|
|
32
|
+
/** Every derived target's registration, keyed by the target's node id. */
|
|
33
|
+
private readonly _in;
|
|
34
|
+
/** source node id -> derived targets that depend on it (dispatch/erasure). */
|
|
35
|
+
private readonly _out;
|
|
36
|
+
/** Memoized effective posture per derived target node id. */
|
|
37
|
+
private readonly _effectiveCache;
|
|
38
|
+
/** Memoized whole-collection security-axes fold for `'*'` wildcard LEAF nodes (#642),
|
|
39
|
+
* keyed by collection name — see {@link _wildcardContribution}. Cleared alongside
|
|
40
|
+
* `_effectiveCache` on every `registerField`/`registerDerived` (a later-registered
|
|
41
|
+
* field must re-fold on the next read — registration ordering is free). */
|
|
42
|
+
private readonly _wildcardCache;
|
|
43
|
+
/** Collections with at least one classified field (#638 Task 2 fix wave 2,
|
|
44
|
+
* Finding I1 — the reconcile path's combined-state leak guard memory). */
|
|
45
|
+
private readonly _classifiedCollections;
|
|
46
|
+
/** Computed field names declared with no `deps` entry, per collection
|
|
47
|
+
* (Finding I1 — such a field registers no edge when no classified field is
|
|
48
|
+
* present yet, so a LATER, separate reconcile call attaching classifiedFields
|
|
49
|
+
* still needs to see it regardless of declaration order). */
|
|
50
|
+
private readonly _depslessComputed;
|
|
51
|
+
/** Declare a source field's posture (money/i18n/classified/plain). Plain fields
|
|
52
|
+
* default to `DEFAULT_POSTURE`; a later declaration for the same node wins-first (idempotent). */
|
|
53
|
+
registerField(collection: string, field: string, posture: ViaPosture): void;
|
|
54
|
+
/** A derived target depends on `sources` (may be cross-collection). `kind`/`grain`
|
|
55
|
+
* drive dispatch + erasure semantics; sources drive taint. Re-registering the same
|
|
56
|
+
* target replaces `_in` but does not prune stale `_out` edges — callers must
|
|
57
|
+
* register each target at most once per graph lifetime. `onDelete`/`keyField` (#650 Task 5)
|
|
58
|
+
* are meaningful only for `kind === 'ref'` edges — {@link referencingEdgesOf} reads them back. */
|
|
59
|
+
registerDerived(target: FieldRef, sources: readonly FieldRef[], kind: EdgeKind, grain: Grain, onDelete?: OnDelete, keyField?: string): void;
|
|
60
|
+
/** Whether `target` already has a registered in-edge — lets a caller skip
|
|
61
|
+
* re-registering the same target (#638 Task 2 fix wave 2, Finding I2i:
|
|
62
|
+
* `registerDerived`'s at-most-once contract must hold across repeated
|
|
63
|
+
* identical `vault.collection()` calls, not just within a single one). */
|
|
64
|
+
hasDerived(target: FieldRef): boolean;
|
|
65
|
+
/** Mark/query a collection as having declared at least one classified field. */
|
|
66
|
+
markClassified(collection: string): void;
|
|
67
|
+
isClassified(collection: string): boolean;
|
|
68
|
+
/** Mark/query a collection's depsless (no declared `deps`) computed
|
|
69
|
+
* field names — see `_depslessComputed`'s doc comment above. */
|
|
70
|
+
markDepslessComputed(collection: string, field: string): void;
|
|
71
|
+
depslessComputedFields(collection: string): ReadonlySet<string>;
|
|
72
|
+
/** Every field name the graph already has memory of for `collection` — from an
|
|
73
|
+
* EARLIER, separate `vault.collection()` call (registered postures, derived
|
|
74
|
+
* targets, depsless-computed names) — regardless of which via feature declared
|
|
75
|
+
* it. #645 — `via/graph-wiring.ts`'s reconcile-path `knownFields` universe
|
|
76
|
+
* (`collectKnownFieldNames`) is scoped to THIS call's own options only, so a
|
|
77
|
+
* computed field attached in a LATER call whose `deps` correctly names a field
|
|
78
|
+
* declared in an EARLIER call was spuriously refused as "unknown"; this method
|
|
79
|
+
* lets that call site union in the graph's cross-call memory. Excludes the `'*'`
|
|
80
|
+
* wildcard target (an overlay/derivation whole-record fold node, never a real
|
|
81
|
+
* record field — see {@link registerDerived}'s doc comment). */
|
|
82
|
+
knownFieldNames(collection: string): ReadonlySet<string>;
|
|
83
|
+
/** Reject cycles at declare time (vault open). Throws `DerivationCycleError` for a
|
|
84
|
+
* derivation/rollup/computed cycle, `MaterializedViewCycleError` for an MV cycle —
|
|
85
|
+
* same classes + message shape the registries throw today (behavior lock). */
|
|
86
|
+
assertAcyclic(): void;
|
|
87
|
+
/** A leaf (non-derived) node's own posture contribution: its declared posture,
|
|
88
|
+
* or `DEFAULT_POSTURE` if never declared via `registerField`. */
|
|
89
|
+
private _declaredPosture;
|
|
90
|
+
/** A node's posture contribution when folded into a dependent: recurse if it is itself
|
|
91
|
+
* derived; else its declared/default posture — UNLESS it is a `'*'` LEAF node consumed
|
|
92
|
+
* by a folded formula kind (#642, `derivation|rollup|mv|overlay`), in which case it
|
|
93
|
+
* contributes its collection's whole-record security fold ({@link _wildcardContribution}).
|
|
94
|
+
* `kind` is the CONSUMING edge's kind, threaded from {@link _computeEffective}. `'ref'`
|
|
95
|
+
* edges (and the provenance-only untyped call, `kind` left `undefined`) keep `'*'` =
|
|
96
|
+
* identity — the phase-D lookup reliance (`via/lookup/registry.ts:392-397`) that a
|
|
97
|
+
* referencing field must not seal just because its dimension collection has a classified
|
|
98
|
+
* column. */
|
|
99
|
+
private _contribution;
|
|
100
|
+
/** Lazy fold (#642) of a collection's REGISTERED field postures on the security axes only
|
|
101
|
+
* ({@link foldWildcardSecurity} — sealed-wins encryptedAtRest, AND exportable, OR
|
|
102
|
+
* forgettable; queryable stays at DEFAULT_POSTURE's 'full', never folded), seeded at
|
|
103
|
+
* DEFAULT_POSTURE. This is the collection-level posture a `'*'` LEAF node contributes to a
|
|
104
|
+
* folded-kind formula edge (derivation/rollup/mv/overlay) — see {@link _contribution}. A
|
|
105
|
+
* plain (unregistered) field contributes nothing (the identity), so the fold is strictly
|
|
106
|
+
* more conservative than deps-based taint and never hits the KNOWN-LIMIT wall (it names no
|
|
107
|
+
* fields — seam map §1d). Memoized per collection in `_wildcardCache`. */
|
|
108
|
+
private _wildcardContribution;
|
|
109
|
+
private _computeEffective;
|
|
110
|
+
/** Strictest source posture on every axis, per §2. `undefined` when `target` has no
|
|
111
|
+
* in-edges (not a derived field). Transitive: folds through chained derivations. */
|
|
112
|
+
effectivePosture(target: FieldRef): ViaPosture | undefined;
|
|
113
|
+
/** Per-collection { field → effectivePosture } overlay the pipeline consumes (Task 3). */
|
|
114
|
+
taintedPostures(collection: string): ReadonlyMap<string, ViaPosture>;
|
|
115
|
+
/** Materialized (`grain !== 'virtual'`) derived fields on `collection` whose effective
|
|
116
|
+
* encryptedAtRest resolves to 'sealed' — the taint-seal set (Task 3). #638 Task 7
|
|
117
|
+
* makes the `grain !== 'virtual'` filter meaningful: a `computed(fn, { mode: 'virtual' })`
|
|
118
|
+
* field is never stored (rides the `present` phase, seam map Part 4's money-Formatted/
|
|
119
|
+
* i18n-Label precedent), so it is EXCLUDED here even when its effective `encryptedAtRest`
|
|
120
|
+
* folds to `'sealed'` — there is no envelope slot to seal. It still surfaces in
|
|
121
|
+
* {@link taintedPostures} (query refusal via `postureFor`'s `queryable` clamp above, and
|
|
122
|
+
* export refusal via `exportable`) — only the AT-REST SEALING ACTION is skipped. */
|
|
123
|
+
taintSealedFields(collection: string): ReadonlySet<string>;
|
|
124
|
+
/** Fields on `collection` whose registered edge is `grain === 'virtual'` (#638 Task 7) —
|
|
125
|
+
* `via/graph-wiring.ts#applyTaintOverlay` intersects this with `exportable === false`
|
|
126
|
+
* postures to know which virtual fields need PRESENT-TIME (not just export-time)
|
|
127
|
+
* redaction, since a virtual field's value is only ever materialized inside `present()`. */
|
|
128
|
+
virtualFields(collection: string): ReadonlySet<string>;
|
|
129
|
+
/** Per-collection { field → immediate source field names that forced its
|
|
130
|
+
* effective posture away from `DEFAULT_POSTURE` } — `describe()`'s
|
|
131
|
+
* provenance (Task 3). Only the DIRECT declared sources are named (not the
|
|
132
|
+
* ultimate origin several hops up a transitive chain); a source absent
|
|
133
|
+
* from the result contributed nothing restrictive. */
|
|
134
|
+
taintProvenance(collection: string): ReadonlyMap<string, readonly string[]>;
|
|
135
|
+
private _targetsDependingOn;
|
|
136
|
+
/** Dispatch (Task 4): every derived target triggered by a write to `collection`. Excludes
|
|
137
|
+
* `'ref'` edges (#650 Task 5 review, folded Minor) — a `'ref'` edge is consulted only by the
|
|
138
|
+
* delete/forget-time restrict/cascade/nullify path ({@link referencingEdgesOf}), never by the
|
|
139
|
+
* sync/cutover/restore dispatch wave (`runGraphDispatchWave`); counting it here defeated that
|
|
140
|
+
* wave's zero-cost early-continue, costing every write to a referenced backing collection an
|
|
141
|
+
* unconditional decrypt + two no-op dispatch passes. {@link derivedArtifactsOf} (erasure
|
|
142
|
+
* fanout) still includes `'ref'` edges — the forget path genuinely needs them. */
|
|
143
|
+
dependentsOf(collection: string): ReadonlyArray<{
|
|
144
|
+
readonly target: FieldRef;
|
|
145
|
+
readonly kind: EdgeKind;
|
|
146
|
+
readonly grain: Grain;
|
|
147
|
+
}>;
|
|
148
|
+
/** Erasure (Task 6): derived artifacts of a forgotten record whose source is `collection`. */
|
|
149
|
+
derivedArtifactsOf(collection: string): ReadonlyArray<{
|
|
150
|
+
readonly target: FieldRef;
|
|
151
|
+
readonly kind: EdgeKind;
|
|
152
|
+
readonly grain: Grain;
|
|
153
|
+
}>;
|
|
154
|
+
/** Referencing edges pointing AT a backing dimension (delete/forget-time restrict/cascade/
|
|
155
|
+
* nullify, #650 Task 5) — an O(1) reverse lookup via the existing `_out` map (keyed at the
|
|
156
|
+
* dimension's wildcard `field:'*'` node, the same convention every whole-collection source
|
|
157
|
+
* already uses), NEVER a scan across collections or records. `backing` is the collection name
|
|
158
|
+
* a lookup field's edge was registered against (a reserved dimension's `_dict_<name>`/
|
|
159
|
+
* `_lookup_<name>` collection name, or a matrix dimension's own collection name). */
|
|
160
|
+
referencingEdgesOf(backing: string): ReadonlyArray<{
|
|
161
|
+
readonly referencing: FieldRef;
|
|
162
|
+
readonly onDelete: OnDelete;
|
|
163
|
+
readonly keyField: string;
|
|
164
|
+
}>;
|
|
165
|
+
}
|