@noy-db/hub 0.3.0-pre.10 → 0.3.0-pre.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aggregate/index.js +4 -4
- package/dist/api-3TH2GOFQ.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +18 -18
- package/dist/backup-2WVBIVXW.js +225 -0
- package/dist/blobs/index.js +10 -10
- package/dist/broker/index.js +92 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/bundle/index.js +20 -20
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +30 -30
- package/dist/chunk-2MTRJCBI.js +75 -0
- package/dist/chunk-37WOJQWY.js +404 -0
- package/dist/chunk-3QSOFZQB.js +589 -0
- package/dist/chunk-44IL5G3W.js +99 -0
- package/dist/chunk-45QPICLE.js +69 -0
- package/dist/chunk-4BQXMCE5.js +164 -0
- package/dist/chunk-4GPE63GU.js +111 -0
- package/dist/chunk-4GPE63GU.js.map +1 -0
- package/dist/chunk-5HNX4OD4.js +30 -0
- package/dist/chunk-65VLRG3I.js +54 -0
- package/dist/chunk-6MA575R5.js +59 -0
- package/dist/chunk-6S7ENMRE.js +524 -0
- package/dist/chunk-6S7ENMRE.js.map +1 -0
- package/dist/chunk-7GAXFU2O.js +123 -0
- package/dist/chunk-7QLY64AD.js +202 -0
- package/dist/chunk-7ZOSHEVS.js +235 -0
- package/dist/chunk-AAIIDAUC.js +371 -0
- package/dist/chunk-AAIIDAUC.js.map +1 -0
- package/dist/chunk-AKEOHKMT.js +282 -0
- package/dist/chunk-AKEOHKMT.js.map +1 -0
- package/dist/chunk-APHLCXVC.js +124 -0
- package/dist/chunk-BDEMZD4F.js +129 -0
- package/dist/chunk-BDPAVYGJ.js +662 -0
- package/dist/chunk-BLUT46UP.js +42 -0
- package/dist/chunk-CCIR2OJH.js +778 -0
- package/dist/chunk-CXC3JLAQ.js +155 -0
- package/dist/chunk-CZMCOFEA.js +1221 -0
- package/dist/chunk-DIB2BOIH.js +164 -0
- package/dist/chunk-DJ7MRXNA.js +344 -0
- package/dist/chunk-DJ7MRXNA.js.map +1 -0
- package/dist/chunk-EHW5KTTA.js +150 -0
- package/dist/chunk-EHW5KTTA.js.map +1 -0
- package/dist/chunk-EIZ4YOG2.js +70 -0
- package/dist/chunk-EVHBK7BN.js +515 -0
- package/dist/chunk-EXGDL2UQ.js +74 -0
- package/dist/chunk-F3LGBRSV.js +453 -0
- package/dist/chunk-F44XWXOA.js +392 -0
- package/dist/chunk-FF7S3XDW.js +230 -0
- package/dist/chunk-FJTWLQV3.js +155 -0
- package/dist/chunk-FYNE4WLC.js +36 -0
- package/dist/chunk-FZCGIJEJ.js +1505 -0
- package/dist/chunk-FZCGIJEJ.js.map +1 -0
- package/dist/chunk-GL3JV5EV.js +130 -0
- package/dist/chunk-GXLZXD2W.js +29 -0
- package/dist/chunk-HA6ZQWA2.js +1056 -0
- package/dist/chunk-HA6ZQWA2.js.map +1 -0
- package/dist/chunk-HBBZWEC5.js +686 -0
- package/dist/chunk-HG76BZ6G.js +188 -0
- package/dist/chunk-HGAB325C.js +38 -0
- package/dist/chunk-HIOLCOK3.js +30 -0
- package/dist/chunk-HIOLCOK3.js.map +1 -0
- package/dist/chunk-HK4XTXO4.js +49 -0
- package/dist/chunk-HYG32HCM.js +14 -0
- package/dist/chunk-ILF5GARW.js +135 -0
- package/dist/chunk-INBQ43DI.js +382 -0
- package/dist/chunk-IQIVD7TP.js +247 -0
- package/dist/chunk-J3JIYFYL.js +45 -0
- package/dist/chunk-JC75UBMT.js +32 -0
- package/dist/chunk-JC75UBMT.js.map +1 -0
- package/dist/chunk-JGUZMC3I.js +150 -0
- package/dist/chunk-JRKE5MAZ.js +80 -0
- package/dist/chunk-K2DLLK34.js +255 -0
- package/dist/chunk-KKYEZCQG.js +34 -0
- package/dist/chunk-NAR6IDKH.js +54 -0
- package/dist/chunk-NEYKOESM.js +117 -0
- package/dist/chunk-NM3IFKBL.js +29 -0
- package/dist/chunk-NRYNRSGV.js +99 -0
- package/dist/chunk-NT2ZO4KI.js +59 -0
- package/dist/chunk-P2LJI6JE.js +94 -0
- package/dist/chunk-PH7G7ZI7.js +823 -0
- package/dist/chunk-PN5332SU.js +209 -0
- package/dist/chunk-QF5LGMSV.js +45 -0
- package/dist/chunk-QG5RQQBO.js +367 -0
- package/dist/chunk-QYPDYN23.js +23 -0
- package/dist/chunk-R3NHNVS5.js +478 -0
- package/dist/chunk-R3NHNVS5.js.map +1 -0
- package/dist/chunk-RNXJ2VO6.js +280 -0
- package/dist/chunk-RXTMLYJS.js +97 -0
- package/dist/chunk-S2OWPVSO.js +30 -0
- package/dist/chunk-S7TAPIRS.js +205 -0
- package/dist/chunk-SAL5X5OK.js +40 -0
- package/dist/chunk-SGJGWBSC.js +85 -0
- package/dist/chunk-SIAIYP6G.js +50 -0
- package/dist/chunk-SXPCZ6LL.js +1697 -0
- package/dist/chunk-SXPCZ6LL.js.map +1 -0
- package/dist/chunk-TBNF5DV5.js +261 -0
- package/dist/chunk-TVOHSPVK.js +21 -0
- package/dist/chunk-TVS6BUUR.js +41 -0
- package/dist/chunk-UMC5QZTX.js +86 -0
- package/dist/chunk-US34HTOI.js +367 -0
- package/dist/chunk-VCUQR6ZL.js +621 -0
- package/dist/chunk-VXZNSPJM.js +957 -0
- package/dist/chunk-VXZNSPJM.js.map +1 -0
- package/dist/chunk-WEHIQYQH.js +71 -0
- package/dist/chunk-WHQHTNT7.js +265 -0
- package/dist/chunk-X6Y5MXTH.js +74 -0
- package/dist/chunk-XJ47GS53.js +291 -0
- package/dist/chunk-XS6DLN67.js +95 -0
- package/dist/chunk-Y5TWPBNW.js +91 -0
- package/dist/chunk-YCXKFB7J.js +14181 -0
- package/dist/chunk-YCXKFB7J.js.map +1 -0
- package/dist/chunk-ZHOJOT6S.js +36 -0
- package/dist/chunk-ZL6PRULX.js +167 -0
- package/dist/chunk-ZL6PRULX.js.map +1 -0
- package/dist/classified/index.js +5 -5
- package/dist/classified-marker-M7K3OJPM.js +28 -0
- package/dist/classified-marker-M7K3OJPM.js.map +1 -0
- package/dist/collection-facade-DWA735G2.js +39 -0
- package/dist/computed-ORCGM5JE.js +11 -0
- package/dist/consent/index.js +9 -9
- package/dist/crdt/index.js +1 -1
- package/dist/dead-filter-OV5FGKOG.js +28 -0
- package/dist/delegation-YVSHMIZZ.js +25 -0
- package/dist/derivations/index.js +12 -12
- package/dist/derive-BUO555L5.js +21 -0
- package/dist/enclave-XXFUKJC6.js +135 -0
- package/dist/executor-6OCCE5VM.js +25 -0
- package/dist/executor-JFVAJY42.js +9 -0
- package/dist/executor-UPSH5O3F.js +9 -0
- package/dist/export-accessible-L4A2QZA5.js +23 -0
- package/dist/extract-partition-ZHQ4RGGM.js +36 -0
- package/dist/fanout-sidecar-IO2KDUWV.js +74 -0
- package/dist/find-ZFZDZQ2U.js +11 -0
- package/dist/forget/index.js +10 -10
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +3 -3
- package/dist/history/index.js +11 -11
- package/dist/i18n/index.js +15 -15
- package/dist/index.d.ts +303 -1492
- package/dist/index.js +172 -171
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +5 -5
- package/dist/indexing/index.js.map +1 -1
- package/dist/issue-OG4V23SQ.js +19 -0
- package/dist/kernel/best-effort-revert.d.ts +52 -0
- package/dist/kernel/cache/index.d.ts +10 -0
- package/dist/kernel/cache/lru.d.ts +97 -0
- package/dist/kernel/cache/policy.d.ts +32 -0
- package/dist/kernel/collection-config.d.ts +789 -0
- package/dist/kernel/collection.d.ts +1519 -0
- package/dist/kernel/constants.d.ts +18 -0
- package/dist/kernel/debug.d.ts +25 -0
- package/dist/kernel/enclave/broker/proof.d.ts +154 -0
- package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
- package/dist/kernel/enclave/classify/compare.d.ts +10 -0
- package/dist/kernel/enclave/classify/digest.d.ts +8 -0
- package/dist/kernel/enclave/classify/find.d.ts +36 -0
- package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
- package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
- package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
- package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
- package/dist/kernel/enclave/classify/verify.d.ts +33 -0
- package/dist/kernel/enclave/classify/write.d.ts +8 -0
- package/dist/kernel/enclave/crypto.d.ts +263 -0
- package/dist/kernel/enclave/index.d.ts +78 -0
- package/dist/kernel/enclave/record-keys/deterministic.d.ts +54 -0
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
- package/dist/kernel/enclave/record-keys/lifecycle.d.ts +57 -0
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +301 -0
- package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
- package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
- package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
- package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
- package/dist/kernel/env-check.d.ts +1 -0
- package/dist/kernel/errors.d.ts +1848 -0
- package/dist/kernel/events.d.ts +11 -0
- package/dist/kernel/memory-store.d.ts +17 -0
- package/dist/kernel/mutation.d.ts +14 -0
- package/dist/kernel/noydb.d.ts +826 -0
- package/dist/kernel/paths.d.ts +25 -0
- package/dist/kernel/query/builder.d.ts +520 -0
- package/dist/kernel/query/index.d.ts +31 -0
- package/dist/kernel/query/join.d.ts +205 -0
- package/dist/kernel/query/live.d.ts +111 -0
- package/dist/kernel/query/predicate.d.ts +139 -0
- package/dist/kernel/query/scan-builder.d.ts +334 -0
- package/dist/kernel/refs.d.ts +205 -0
- package/dist/kernel/schema.d.ts +134 -0
- package/dist/kernel/sync-policy.d.ts +188 -0
- package/dist/kernel/types.d.ts +3166 -0
- package/dist/kernel/util/discriminant.d.ts +58 -0
- package/dist/kernel/util/index.d.ts +14 -0
- package/dist/kernel/util/sanitize-filename.d.ts +75 -0
- package/dist/kernel/validation.d.ts +130 -0
- package/dist/kernel/vault.d.ts +1737 -0
- package/dist/kernel/via/compose.d.ts +144 -0
- package/dist/kernel/via/dispatch.d.ts +185 -0
- package/dist/kernel/via/graph-wiring.d.ts +145 -0
- package/dist/kernel/via/graph.d.ts +166 -0
- package/dist/kernel/via/index.d.ts +200 -0
- package/dist/kernel/via/pipeline.d.ts +266 -0
- package/dist/kernel/via/reconcile.d.ts +153 -0
- package/dist/kernel/via/taint-binding.d.ts +66 -0
- package/dist/kernel/write-queue.d.ts +46 -0
- package/dist/ledger-UAQKPWNM.js +42 -0
- package/dist/legacy/bundle.d.ts +30 -0
- package/dist/legacy/kernel.d.ts +33 -0
- package/dist/liberate-GFUQJRK5.js +24 -0
- package/dist/link-set-DGYUOFVD.js +31 -0
- package/dist/materialized-views/index.js +19 -19
- package/dist/noydb-AKH4AMCR.js +67 -0
- package/dist/on/index.js +9 -9
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +12 -12
- package/dist/pod/index.js +11 -11
- package/dist/policy-5POYLI26.js +41 -0
- package/dist/port/as/index.d.ts +26 -0
- package/dist/port/at/index.d.ts +18 -0
- package/dist/port/by/default-provider.d.ts +9 -0
- package/dist/port/by/index.d.ts +17 -0
- package/dist/port/by/types.d.ts +86 -0
- package/dist/port/in/index.d.ts +21 -0
- package/dist/port/on/index.d.ts +27 -0
- package/dist/port/to/index.d.ts +19 -0
- package/dist/port/ui/index.d.ts +21 -0
- package/dist/port/with/blob-strategy.d.ts +81 -0
- package/dist/port/with/broker-strategy.d.ts +84 -0
- package/dist/port/with/capabilities.d.ts +31 -0
- package/dist/port/with/classified-marker.d.ts +9 -0
- package/dist/port/with/classified-strategy.d.ts +62 -0
- package/dist/port/with/computed-strategy.d.ts +19 -0
- package/dist/port/with/i18n-strategy.d.ts +175 -0
- package/dist/port/with/index.d.ts +18 -0
- package/dist/port/with/lazy-strategy.d.ts +48 -0
- package/dist/port/with/lookup-strategy.d.ts +129 -0
- package/dist/port/with/service-bus.d.ts +156 -0
- package/dist/port/with/team-strategy.d.ts +36 -0
- package/dist/port/with/write-hooks.d.ts +34 -0
- package/dist/portability/index.js +8 -8
- package/dist/post-register-LB3P4XQU.js +60 -0
- package/dist/post-register-LB3P4XQU.js.map +1 -0
- package/dist/public-envelope-GOG4LUM7.js +32 -0
- package/dist/purge-scope-FGNNLWHD.js +24 -0
- package/dist/purge-scope-FGNNLWHD.js.map +1 -0
- package/dist/query/index.js +5 -5
- package/dist/register-ZI7YI7US.js +23 -0
- package/dist/registry-DZ2T4LL7.js +9 -0
- package/dist/registry-NVWEQ2GU.js +18 -0
- package/dist/registry-SEKL74ET.js +19 -0
- package/dist/request-withdrawal-ZP3JIRVS.js +31 -0
- package/dist/reveal-NPVROV4D.js +38 -0
- package/dist/revoke-VF6TAJK2.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/seed-VI4FU7UH.js +231 -0
- package/dist/seed-VI4FU7UH.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-DRDDCCHW.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/stale-TJXFQKOJ.js +14 -0
- package/dist/storage-GR7KZRH4.js +23 -0
- package/dist/store-coordination-provider-5KDS2RRP.js +142 -0
- package/dist/sync/index.js +9 -9
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +10 -10
- package/dist/to/index.js +1 -1
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/verify-QK76NJ4G.js +139 -0
- package/dist/via/blob/active.d.ts +34 -0
- package/dist/via/blob/binding.d.ts +86 -0
- package/dist/via/blob/index.d.ts +34 -0
- package/dist/via/classified/active.d.ts +3 -0
- package/dist/via/classified/binding.d.ts +83 -0
- package/dist/via/classified/config-drift.d.ts +34 -0
- package/dist/via/classified/descriptor.d.ts +66 -0
- package/dist/via/classified/errors.d.ts +19 -0
- package/dist/via/classified/guards.d.ts +23 -0
- package/dist/via/classified/index.d.ts +11 -0
- package/dist/via/classified/presets.d.ts +65 -0
- package/dist/via/classified/resolve.d.ts +9 -0
- package/dist/via/classified/strategy.d.ts +11 -0
- package/dist/via/classified/validators.d.ts +3 -0
- package/dist/via/classified/write.d.ts +4 -0
- package/dist/via/computed/binding.d.ts +34 -0
- package/dist/via/computed/descriptor.d.ts +35 -0
- package/dist/via/i18n/active.d.ts +28 -0
- package/dist/via/i18n/binding.d.ts +36 -0
- package/dist/via/i18n/core.d.ts +267 -0
- package/dist/via/i18n/densify.d.ts +24 -0
- package/dist/via/i18n/dictionary.d.ts +200 -0
- package/dist/via/i18n/index.d.ts +21 -0
- package/dist/via/i18n/policy.d.ts +44 -0
- package/dist/via/i18n/script.d.ts +26 -0
- package/dist/via/i18n/strategy.d.ts +13 -0
- package/dist/via/lookup/active.d.ts +19 -0
- package/dist/via/lookup/binding.d.ts +99 -0
- package/dist/via/lookup/descriptor.d.ts +123 -0
- package/dist/via/lookup/handle.d.ts +220 -0
- package/dist/via/lookup/index.d.ts +17 -0
- package/dist/via/lookup/registry.d.ts +228 -0
- package/dist/via/lookup/snapshot.d.ts +67 -0
- package/dist/via/money/arith.d.ts +68 -0
- package/dist/via/money/binding.d.ts +21 -0
- package/dist/via/money/branded.d.ts +61 -0
- package/dist/via/money/descriptor.d.ts +73 -0
- package/dist/via/money/fixed-point.d.ts +51 -0
- package/dist/via/money/index.d.ts +15 -0
- package/dist/via/money/iso4217.d.ts +6 -0
- package/dist/via/money/money-reducer.d.ts +33 -0
- package/dist/via/money/normalize.d.ts +105 -0
- package/dist/via/money/paths.d.ts +61 -0
- package/dist/via/money/where.d.ts +127 -0
- package/dist/walk-XQCBKSBW.js +241 -0
- package/dist/with/index.js +11 -11
- package/dist/with-audit/attestation/active.d.ts +10 -0
- package/dist/with-audit/attestation/index.d.ts +16 -0
- package/dist/with-audit/attestation/issue.d.ts +29 -0
- package/dist/with-audit/attestation/revoke.d.ts +15 -0
- package/dist/with-audit/attestation/signer.d.ts +33 -0
- package/dist/with-audit/attestation/strategy.d.ts +44 -0
- package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
- package/dist/with-audit/consent/active.d.ts +14 -0
- package/dist/with-audit/consent/consent.d.ts +114 -0
- package/dist/with-audit/consent/index.d.ts +14 -0
- package/dist/with-audit/consent/strategy.d.ts +36 -0
- package/dist/with-audit/forget/active.d.ts +31 -0
- package/dist/with-audit/forget/index.d.ts +28 -0
- package/dist/with-audit/forget/purge-scope.d.ts +54 -0
- package/dist/with-audit/forget/strategy.d.ts +177 -0
- package/dist/with-audit/forget/subject-index.d.ts +83 -0
- package/dist/with-audit/guards/executor.d.ts +26 -0
- package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
- package/dist/with-audit/guards/index.d.ts +10 -0
- package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
- package/dist/with-audit/guards/registry.d.ts +83 -0
- package/dist/with-audit/guards/transition-guard.d.ts +82 -0
- package/dist/with-audit/guards/types.d.ts +134 -0
- package/dist/with-audit/guards/with-guard.d.ts +15 -0
- package/dist/with-audit/periods/active.d.ts +11 -0
- package/dist/with-audit/periods/index.d.ts +18 -0
- package/dist/with-audit/periods/periods.d.ts +417 -0
- package/dist/with-audit/periods/strategy.d.ts +32 -0
- package/dist/with-audit/periods/vault-facade.d.ts +95 -0
- package/dist/with-audit/portability/active.d.ts +11 -0
- package/dist/with-audit/portability/export-accessible.d.ts +46 -0
- package/dist/with-audit/portability/index.d.ts +18 -0
- package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
- package/dist/with-audit/portability/strategy.d.ts +31 -0
- package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
- package/dist/with-audit/sealed-record/active.d.ts +9 -0
- package/dist/with-audit/sealed-record/index.d.ts +55 -0
- package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
- package/dist/with-audit/sealed-record/types.d.ts +27 -0
- package/dist/with-audit/tiers/active.d.ts +9 -0
- package/dist/with-audit/tiers/index.d.ts +122 -0
- package/dist/with-audit/tiers/strategy.d.ts +35 -0
- package/dist/with-cargo/active.d.ts +11 -0
- package/dist/with-cargo/adopt-partition.d.ts +81 -0
- package/dist/with-cargo/decrypt-partition.d.ts +19 -0
- package/dist/with-cargo/describe-extraction.d.ts +33 -0
- package/dist/with-cargo/extract-partition.d.ts +147 -0
- package/dist/with-cargo/index.d.ts +33 -0
- package/dist/with-cargo/strategy.d.ts +30 -0
- package/dist/with-cargo/vault-diff.d.ts +144 -0
- package/dist/with-cargo/walk-closure.d.ts +38 -0
- package/dist/with-commit/crdt/active.d.ts +25 -0
- package/dist/with-commit/crdt/crdt.d.ts +42 -0
- package/dist/with-commit/crdt/index.d.ts +16 -0
- package/dist/with-commit/crdt/strategy.d.ts +25 -0
- package/dist/with-commit/history/active.d.ts +40 -0
- package/dist/with-commit/history/diff.d.ts +23 -0
- package/dist/with-commit/history/history.d.ts +27 -0
- package/dist/with-commit/history/index.d.ts +30 -0
- package/dist/with-commit/history/ledger/constants.d.ts +37 -0
- package/dist/with-commit/history/ledger/entry.d.ts +195 -0
- package/dist/with-commit/history/ledger/hash.d.ts +30 -0
- package/dist/with-commit/history/ledger/index.d.ts +19 -0
- package/dist/with-commit/history/ledger/patch.d.ts +99 -0
- package/dist/with-commit/history/ledger/store.d.ts +335 -0
- package/dist/with-commit/history/strategy.d.ts +126 -0
- package/dist/with-commit/history/time-machine.d.ts +179 -0
- package/dist/with-commit/numbering/descriptor.d.ts +27 -0
- package/dist/with-commit/numbering/index.d.ts +69 -0
- package/dist/with-commit/sequence/active.d.ts +10 -0
- package/dist/with-commit/sequence/index.d.ts +150 -0
- package/dist/with-commit/sequence/strategy.d.ts +26 -0
- package/dist/with-commit/tx/active.d.ts +27 -0
- package/dist/with-commit/tx/dry-run.d.ts +29 -0
- package/dist/with-commit/tx/elevated-handle.d.ts +58 -0
- package/dist/with-commit/tx/index.d.ts +13 -0
- package/dist/with-commit/tx/invariants.d.ts +68 -0
- package/dist/with-commit/tx/strategy.d.ts +23 -0
- package/dist/with-commit/tx/transaction.d.ts +212 -0
- package/dist/with-fork/archive/engine.d.ts +71 -0
- package/dist/with-fork/archive/index.d.ts +23 -0
- package/dist/with-fork/shadow/active.d.ts +6 -0
- package/dist/with-fork/shadow/index.d.ts +14 -0
- package/dist/with-fork/shadow/strategy.d.ts +28 -0
- package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
- package/dist/with-fork/snapshots/active.d.ts +20 -0
- package/dist/with-fork/snapshots/engine.d.ts +36 -0
- package/dist/with-fork/snapshots/index.d.ts +5 -0
- package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
- package/dist/with-fork/snapshots/policy.d.ts +23 -0
- package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
- package/dist/with-fork/snapshots/strategy.d.ts +48 -0
- package/dist/with-formula/computed/index.d.ts +48 -0
- package/dist/with-formula/computed/lazy.d.ts +13 -0
- package/dist/with-formula/derivations/executor.d.ts +61 -0
- package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
- package/dist/with-formula/derivations/index.d.ts +6 -0
- package/dist/with-formula/derivations/registry.d.ts +67 -0
- package/dist/with-formula/derivations/stale.d.ts +39 -0
- package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
- package/dist/with-formula/derivations/types.d.ts +248 -0
- package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
- package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
- package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +58 -0
- package/dist/with-formula/materialized-views/executor.d.ts +71 -0
- package/dist/with-formula/materialized-views/index.d.ts +11 -0
- package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
- package/dist/with-formula/materialized-views/registry.d.ts +99 -0
- package/dist/with-formula/materialized-views/stale.d.ts +62 -0
- package/dist/with-formula/materialized-views/types.d.ts +318 -0
- package/dist/with-formula/materialized-views/with-materialized-view.d.ts +24 -0
- package/dist/with-formula/overlay-views/index.d.ts +5 -0
- package/dist/with-formula/overlay-views/registry.d.ts +42 -0
- package/dist/with-formula/overlay-views/types.d.ts +97 -0
- package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
- package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
- package/dist/with-lookup/aggregate/active.d.ts +33 -0
- package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
- package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
- package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
- package/dist/with-lookup/aggregate/index.d.ts +23 -0
- package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
- package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
- package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
- package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
- package/dist/with-lookup/embeddings/index.d.ts +3 -0
- package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
- package/dist/with-lookup/indexing/active.d.ts +30 -0
- package/dist/with-lookup/indexing/collection-facade.d.ts +120 -0
- package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
- package/dist/with-lookup/indexing/index.d.ts +27 -0
- package/dist/with-lookup/indexing/lazy-builder.d.ts +102 -0
- package/dist/with-lookup/indexing/persisted-indexes.d.ts +229 -0
- package/dist/with-lookup/indexing/strategy.d.ts +56 -0
- package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
- package/dist/with-lookup/search/active.d.ts +10 -0
- package/dist/with-lookup/search/build-docs.d.ts +15 -0
- package/dist/with-lookup/search/collection-facade.d.ts +123 -0
- package/dist/with-lookup/search/fuse.d.ts +22 -0
- package/dist/with-lookup/search/index-store.d.ts +19 -0
- package/dist/with-lookup/search/index.d.ts +19 -0
- package/dist/with-lookup/search/inverted-index.d.ts +47 -0
- package/dist/with-lookup/search/persisted-index-store.d.ts +41 -0
- package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
- package/dist/with-lookup/search/scan.d.ts +28 -0
- package/dist/with-lookup/search/segment.d.ts +15 -0
- package/dist/with-lookup/search/serialize.d.ts +4 -0
- package/dist/with-lookup/search/snippet.d.ts +5 -0
- package/dist/with-lookup/search/strategy.d.ts +37 -0
- package/dist/with-lookup/search/tokenize.d.ts +12 -0
- package/dist/with-party/auth-introspection/index.d.ts +44 -0
- package/dist/with-party/broker/active.d.ts +23 -0
- package/dist/with-party/broker/index.d.ts +28 -0
- package/dist/with-party/broker/seed.d.ts +77 -0
- package/dist/with-party/custody/active.d.ts +10 -0
- package/dist/with-party/custody/index.d.ts +69 -0
- package/dist/with-party/custody/liberate.d.ts +64 -0
- package/dist/with-party/custody/strategy.d.ts +48 -0
- package/dist/with-party/directory/index.d.ts +11 -0
- package/dist/with-party/directory/public-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/public-envelope/schema.d.ts +24 -0
- package/dist/with-party/directory/public-envelope/storage.d.ts +59 -0
- package/dist/with-party/directory/public-envelope/types.d.ts +80 -0
- package/dist/with-party/directory/storage.d.ts +33 -0
- package/dist/with-party/directory/types.d.ts +43 -0
- package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
- package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
- package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
- package/dist/with-party/directory/visibility.d.ts +47 -0
- package/dist/with-party/policy/engine.d.ts +60 -0
- package/dist/with-party/policy/index.d.ts +15 -0
- package/dist/with-party/policy/noydb-facade.d.ts +39 -0
- package/dist/with-party/policy/presets.d.ts +38 -0
- package/dist/with-party/policy/storage.d.ts +31 -0
- package/dist/with-party/session/active.d.ts +34 -0
- package/dist/with-party/session/dev-unlock.d.ts +128 -0
- package/dist/with-party/session/index.d.ts +23 -0
- package/dist/with-party/session/session-policy.d.ts +92 -0
- package/dist/with-party/session/session.d.ts +131 -0
- package/dist/with-party/session/strategy.d.ts +42 -0
- package/dist/with-party/session/unlock-state.d.ts +47 -0
- package/dist/with-party/sync/index.d.ts +31 -0
- package/dist/with-party/tab-coordination.d.ts +73 -0
- package/dist/with-party/tab-write-relay.d.ts +39 -0
- package/dist/with-party/team/active.d.ts +13 -0
- package/dist/with-party/team/authenticators.d.ts +95 -0
- package/dist/with-party/team/deed.d.ts +97 -0
- package/dist/with-party/team/delegation.d.ts +88 -0
- package/dist/with-party/team/index.d.ts +38 -0
- package/dist/with-party/team/keyring.d.ts +318 -0
- package/dist/with-party/team/magic-link-grant.d.ts +152 -0
- package/dist/with-party/team/managed-passphrase.d.ts +280 -0
- package/dist/with-party/team/noydb-facade.d.ts +484 -0
- package/dist/with-party/team/peer-recover.d.ts +81 -0
- package/dist/with-party/team/presence.d.ts +81 -0
- package/dist/with-party/team/recovery.d.ts +191 -0
- package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
- package/dist/with-party/team/rotate-recover.d.ts +275 -0
- package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
- package/dist/with-party/team/strategy.d.ts +9 -0
- package/dist/with-party/team/sync-active.d.ts +33 -0
- package/dist/with-party/team/sync-credentials.d.ts +113 -0
- package/dist/with-party/team/sync-strategy.d.ts +67 -0
- package/dist/with-party/team/sync-transaction.d.ts +39 -0
- package/dist/with-party/team/sync.d.ts +174 -0
- package/dist/with-party/team/tiers.d.ts +39 -0
- package/dist/with-party/team/wrapped-deks.d.ts +86 -0
- package/dist/with-pod/backup.d.ts +74 -0
- package/dist/with-pod/bundle.d.ts +414 -0
- package/dist/with-pod/format.d.ts +203 -0
- package/dist/with-pod/index.d.ts +20 -0
- package/dist/with-pod/pod-store.d.ts +54 -0
- package/dist/with-pod/ulid.d.ts +64 -0
- package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
- package/dist/with-shape/blobs/blob-set.d.ts +342 -0
- package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
- package/dist/with-shape/blobs/import-external.d.ts +50 -0
- package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
- package/dist/with-shape/blobs/object-projection.d.ts +70 -0
- package/dist/with-shape/introspection/describe.d.ts +237 -0
- package/dist/with-shape/introspection/field-meta.d.ts +61 -0
- package/dist/with-shape/introspection/fields.d.ts +14 -0
- package/dist/with-shape/introspection/index.d.ts +12 -0
- package/dist/with-shape/introspection/json-schema.d.ts +13 -0
- package/dist/with-shape/introspection/meta.d.ts +22 -0
- package/dist/with-shape/introspection/projection.d.ts +13 -0
- package/dist/with-shape/introspection/types.d.ts +154 -0
- package/dist/with-shape/introspection/walk.d.ts +50 -0
- package/dist/with-shape/links/lazy-handle.d.ts +36 -0
- package/dist/with-shape/links/link-set.d.ts +67 -0
- package/dist/with-shape/links/names.d.ts +65 -0
- package/dist/with-shape/links/vault-facade.d.ts +211 -0
- package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
- package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
- package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
- package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
- package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
- package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
- package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
- package/dist/with-shape/satellites/declare.d.ts +60 -0
- package/dist/with-shape/satellites/existence.d.ts +5 -0
- package/dist/with-shape/satellites/fanout.d.ts +38 -0
- package/dist/with-shape/satellites/forget.d.ts +47 -0
- package/dist/with-shape/satellites/index.d.ts +3 -0
- package/dist/with-shape/satellites/joined.d.ts +19 -0
- package/dist/with-shape/satellites/marker.d.ts +10 -0
- package/dist/with-shape/satellites/migrate-cek.d.ts +26 -0
- package/dist/with-shape/satellites/post-register.d.ts +6 -0
- package/dist/with-shape/satellites/proxy.d.ts +37 -0
- package/dist/with-shape/satellites/raw-target.d.ts +14 -0
- package/dist/with-shape/satellites/registry.d.ts +19 -0
- package/dist/with-shape/satellites/types.d.ts +37 -0
- package/dist/with-shape/satellites/validate.d.ts +17 -0
- package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
- package/dist/with-shape/schema-update/cutover.d.ts +5 -0
- package/dist/with-shape/schema-update/delta.d.ts +2 -0
- package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
- package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
- package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
- package/dist/with-shape/schema-update/fence.d.ts +15 -0
- package/dist/with-shape/schema-update/gate.d.ts +16 -0
- package/dist/with-shape/schema-update/index.d.ts +6 -0
- package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
- package/dist/with-shape/schema-update/strategies.d.ts +12 -0
- package/dist/with-shape/schema-update/types.d.ts +53 -0
- package/dist/with-store/index.d.ts +15 -0
- package/dist/with-store/lazy/active.d.ts +12 -0
- package/dist/with-store/lazy/index.d.ts +14 -0
- package/dist/with-store/lazy/strategy.d.ts +9 -0
- package/dist/with-store/route-store.d.ts +259 -0
- package/dist/with-store/store-middleware.d.ts +189 -0
- package/dist/withdraw-accessible-FMN4LPJZ.js +28 -0
- package/package.json +47 -43
- package/dist/aggregate/index.d.ts +0 -41
- package/dist/api-TX2EX2FX.js +0 -20
- package/dist/as/index.d.ts +0 -6
- package/dist/at/index.d.ts +0 -4
- package/dist/attestation/index.d.ts +0 -19
- package/dist/backup-R7NTDFKY.js +0 -225
- package/dist/blobs/index.d.ts +0 -43
- package/dist/bundle/index.d.ts +0 -121
- package/dist/bundle-D6GxiUfq.d.ts +0 -548
- package/dist/by/index.d.ts +0 -1
- package/dist/cargo/index.d.ts +0 -7
- package/dist/chunk-2OV5NVE7.js +0 -95
- package/dist/chunk-2OZXVKVP.js +0 -367
- package/dist/chunk-2REPHKET.js +0 -54
- package/dist/chunk-3JXPAHOZ.js +0 -686
- package/dist/chunk-3MATJ6O4.js +0 -367
- package/dist/chunk-3OPY6MK2.js +0 -404
- package/dist/chunk-3QSIU3UT.js +0 -291
- package/dist/chunk-4OMCIY6F.js +0 -99
- package/dist/chunk-5I35DOHK.js +0 -94
- package/dist/chunk-5VG4IJR7.js +0 -235
- package/dist/chunk-5YESYH2C.js +0 -155
- package/dist/chunk-6G5ORS5D.js +0 -202
- package/dist/chunk-6P5XCKSD.js +0 -71
- package/dist/chunk-6S7T6WC4.js +0 -111
- package/dist/chunk-6S7T6WC4.js.map +0 -1
- package/dist/chunk-7BWJHO2A.js +0 -34
- package/dist/chunk-7P2SDJG3.js +0 -279
- package/dist/chunk-7P2SDJG3.js.map +0 -1
- package/dist/chunk-ANB77BVV.js +0 -150
- package/dist/chunk-ANB77BVV.js.map +0 -1
- package/dist/chunk-BKARNZJN.js +0 -382
- package/dist/chunk-BQISD5ZV.js +0 -261
- package/dist/chunk-BUAQ7YI3.js +0 -1697
- package/dist/chunk-BUAQ7YI3.js.map +0 -1
- package/dist/chunk-CB7CWSKW.js +0 -430
- package/dist/chunk-CB7CWSKW.js.map +0 -1
- package/dist/chunk-DFVUTGT2.js +0 -515
- package/dist/chunk-DJ7KIPLV.js +0 -23
- package/dist/chunk-DSKDQP3G.js +0 -14066
- package/dist/chunk-DSKDQP3G.js.map +0 -1
- package/dist/chunk-DV4HUP5G.js +0 -99
- package/dist/chunk-EOXAAJTY.js +0 -621
- package/dist/chunk-ET67AY6B.js +0 -74
- package/dist/chunk-F4CEK5YM.js +0 -123
- package/dist/chunk-FORYWFN6.js +0 -130
- package/dist/chunk-FRP6D2DM.js +0 -91
- package/dist/chunk-FUOE7UUV.js +0 -341
- package/dist/chunk-FUOE7UUV.js.map +0 -1
- package/dist/chunk-G4JYND6L.js +0 -42
- package/dist/chunk-G6XV4H65.js +0 -59
- package/dist/chunk-GNMXXTMN.js +0 -85
- package/dist/chunk-HPWKV3YB.js +0 -21
- package/dist/chunk-HY3AUMFI.js +0 -41
- package/dist/chunk-HYR4WZZ3.js +0 -69
- package/dist/chunk-ICXIFFYZ.js +0 -355
- package/dist/chunk-ICXIFFYZ.js.map +0 -1
- package/dist/chunk-IVLTXX4W.js +0 -280
- package/dist/chunk-J4LPNIGK.js +0 -777
- package/dist/chunk-JJZ2LW6T.js +0 -36
- package/dist/chunk-KJ2BCBTL.js +0 -589
- package/dist/chunk-KNZB6JMR.js +0 -129
- package/dist/chunk-LEJIKBBB.js +0 -124
- package/dist/chunk-LL2NIVUR.js +0 -188
- package/dist/chunk-MCHVVJIA.js +0 -968
- package/dist/chunk-MCHVVJIA.js.map +0 -1
- package/dist/chunk-NUEQU36L.js +0 -392
- package/dist/chunk-O45M6LDB.js +0 -38
- package/dist/chunk-OBKWYKYC.js +0 -117
- package/dist/chunk-OHHKHSJP.js +0 -209
- package/dist/chunk-OT76OZL6.js +0 -45
- package/dist/chunk-OVYRLHPE.js +0 -150
- package/dist/chunk-OXCSVM3B.js +0 -155
- package/dist/chunk-P33LUIML.js +0 -205
- package/dist/chunk-PLS64NCS.js +0 -59
- package/dist/chunk-PS2NEWEX.js +0 -36
- package/dist/chunk-QA2KUPCP.js +0 -45
- package/dist/chunk-QOC3VYL2.js +0 -30
- package/dist/chunk-QSFOZUYL.js +0 -823
- package/dist/chunk-RHK32N73.js +0 -30
- package/dist/chunk-RW3Y22MW.js +0 -97
- package/dist/chunk-S7VFUQM2.js +0 -1484
- package/dist/chunk-S7VFUQM2.js.map +0 -1
- package/dist/chunk-T7WSLRAU.js +0 -49
- package/dist/chunk-TAKWLZZX.js +0 -944
- package/dist/chunk-TAKWLZZX.js.map +0 -1
- package/dist/chunk-TMBXVJKT.js +0 -75
- package/dist/chunk-TWKKOM55.js +0 -54
- package/dist/chunk-U3WZCU7E.js +0 -14
- package/dist/chunk-UF362QVH.js +0 -70
- package/dist/chunk-UN4FVIBH.js +0 -135
- package/dist/chunk-VEAVKDDB.js +0 -29
- package/dist/chunk-VEPTFUJY.js +0 -29
- package/dist/chunk-VJV7GKQK.js +0 -662
- package/dist/chunk-VQRAIPYF.js +0 -50
- package/dist/chunk-VRIYFLBA.js +0 -74
- package/dist/chunk-VWM3DAVB.js +0 -265
- package/dist/chunk-VWRRVE6D.js +0 -80
- package/dist/chunk-WBJIQSLL.js +0 -167
- package/dist/chunk-WBJIQSLL.js.map +0 -1
- package/dist/chunk-WIGQB62E.js +0 -164
- package/dist/chunk-WZSCE6RM.js +0 -466
- package/dist/chunk-WZSCE6RM.js.map +0 -1
- package/dist/chunk-XGDAPN6M.js +0 -255
- package/dist/chunk-XH7XP3OL.js +0 -1221
- package/dist/chunk-XREOISSI.js +0 -40
- package/dist/chunk-XUBPSPKD.js +0 -164
- package/dist/chunk-Y3A5CB5G.js +0 -247
- package/dist/chunk-YCXCR7VG.js +0 -230
- package/dist/chunk-YMVQD5Q5.js +0 -453
- package/dist/chunk-YN5IAHN6.js +0 -32
- package/dist/chunk-YN5IAHN6.js.map +0 -1
- package/dist/chunk-ZYJ55N7N.js +0 -86
- package/dist/classified/index.d.ts +0 -16
- package/dist/classified-marker-H6YSHYNK.js +0 -24
- package/dist/classified-marker-H6YSHYNK.js.map +0 -1
- package/dist/collection-facade-LVD22JLM.js +0 -39
- package/dist/computed-EXDMQODG.js +0 -11
- package/dist/consent/index.d.ts +0 -22
- package/dist/crdt/index.d.ts +0 -33
- package/dist/dead-filter-HQIE2YG7.js +0 -28
- package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
- package/dist/delegation-BJP73GAP.js +0 -25
- package/dist/derivations/index.d.ts +0 -69
- package/dist/derive-BME7HDWO.js +0 -21
- package/dist/dev-unlock-Bmm2pgJ0.d.ts +0 -263
- package/dist/discriminant-BN9REW3o.d.ts +0 -60
- package/dist/enclave-NHORSWSF.js +0 -125
- package/dist/executor-FE6X4LFX.js +0 -9
- package/dist/executor-KSHKRJXP.js +0 -25
- package/dist/executor-ZHTJJICG.js +0 -9
- package/dist/export-accessible-DACHM5VT.js +0 -23
- package/dist/extract-partition-RNENZZ4T.js +0 -36
- package/dist/fanout-sidecar-OFWN3NM7.js +0 -74
- package/dist/find-BNGBJNKP.js +0 -11
- package/dist/forget/index.d.ts +0 -36
- package/dist/guards/index.d.ts +0 -34
- package/dist/hash-DAJjMsCE.d.ts +0 -72
- package/dist/history/index.d.ts +0 -60
- package/dist/i18n/index.d.ts +0 -56
- package/dist/in/index.d.ts +0 -4
- package/dist/index-B9QdHytu.d.ts +0 -123
- package/dist/index-DjWbxsjb.d.ts +0 -23579
- package/dist/index-qwuNvO2B.d.ts +0 -144
- package/dist/indexing/index.d.ts +0 -38
- package/dist/issue-NDI4CVZU.js +0 -19
- package/dist/lazy/index.d.ts +0 -20
- package/dist/ledger-6NDS2EO4.js +0 -42
- package/dist/liberate-HN3RIGIP.js +0 -24
- package/dist/link-set-SJB2MVJV.js +0 -31
- package/dist/materialized-views/index.d.ts +0 -189
- package/dist/mime-magic-bBj5OgUC.d.ts +0 -103
- package/dist/noydb-BWF6EPIR.js +0 -66
- package/dist/on/index.d.ts +0 -4
- package/dist/overlay-views/index.d.ts +0 -97
- package/dist/periods/index.d.ts +0 -19
- package/dist/pod/index.d.ts +0 -62
- package/dist/policy-WGNAG5H6.js +0 -41
- package/dist/portability/index.d.ts +0 -19
- package/dist/post-register-CWKBQRC7.js +0 -55
- package/dist/post-register-CWKBQRC7.js.map +0 -1
- package/dist/public-envelope-EJLVIFX7.js +0 -32
- package/dist/query/index.d.ts +0 -4
- package/dist/register-SBIX7TVV.js +0 -23
- package/dist/registry-3EQG6OOE.js +0 -18
- package/dist/registry-CA327ACV.js +0 -9
- package/dist/registry-E7OXOTSV.js +0 -19
- package/dist/request-withdrawal-KAH2AAXC.js +0 -31
- package/dist/reveal-R3JLHMUF.js +0 -38
- package/dist/revoke-IXLOJ3IH.js +0 -24
- package/dist/satellites/index.d.ts +0 -4
- package/dist/sealed-record/index.d.ts +0 -68
- package/dist/session/index.d.ts +0 -43
- package/dist/shadow/index.d.ts +0 -14
- package/dist/signer-Y46N2GJ3.js +0 -25
- package/dist/snapshots/index.d.ts +0 -25
- package/dist/stale-Z7IW6RIL.js +0 -14
- package/dist/storage-ADNP2UWI.js +0 -23
- package/dist/store-coordination-provider-DTDMI6VL.js +0 -142
- package/dist/subject-index-CyOgGMJL.d.ts +0 -380
- package/dist/sync/index.d.ts +0 -40
- package/dist/team/index.d.ts +0 -154
- package/dist/tiers/index.d.ts +0 -4
- package/dist/to/index.d.ts +0 -4
- package/dist/transition-guard-DI-krBsZ.d.ts +0 -165
- package/dist/tx/index.d.ts +0 -34
- package/dist/ui/index.d.ts +0 -4
- package/dist/ulid-DRH25k3y.d.ts +0 -66
- package/dist/util/index.d.ts +0 -79
- package/dist/validators-BUcli5Nh.d.ts +0 -101
- package/dist/vault-diff-Z2DUayMe.d.ts +0 -147
- package/dist/verify-JPF2YR5E.js +0 -139
- package/dist/walk-XYA2O3LW.js +0 -241
- package/dist/with/index.d.ts +0 -37
- package/dist/with-materialized-view-BUmzlXue.d.ts +0 -27
- package/dist/with-overlayed-view-m4FaXXTO.d.ts +0 -12
- package/dist/with-rollup-DEKGI9vb.d.ts +0 -47
- package/dist/withdraw-accessible-WLV4MTEN.js +0 -28
- /package/dist/{api-TX2EX2FX.js.map → api-3TH2GOFQ.js.map} +0 -0
- /package/dist/{backup-R7NTDFKY.js.map → backup-2WVBIVXW.js.map} +0 -0
- /package/dist/{chunk-TMBXVJKT.js.map → chunk-2MTRJCBI.js.map} +0 -0
- /package/dist/{chunk-3OPY6MK2.js.map → chunk-37WOJQWY.js.map} +0 -0
- /package/dist/{chunk-KJ2BCBTL.js.map → chunk-3QSOFZQB.js.map} +0 -0
- /package/dist/{chunk-DV4HUP5G.js.map → chunk-44IL5G3W.js.map} +0 -0
- /package/dist/{chunk-HYR4WZZ3.js.map → chunk-45QPICLE.js.map} +0 -0
- /package/dist/{chunk-XUBPSPKD.js.map → chunk-4BQXMCE5.js.map} +0 -0
- /package/dist/{chunk-RHK32N73.js.map → chunk-5HNX4OD4.js.map} +0 -0
- /package/dist/{chunk-2REPHKET.js.map → chunk-65VLRG3I.js.map} +0 -0
- /package/dist/{chunk-G6XV4H65.js.map → chunk-6MA575R5.js.map} +0 -0
- /package/dist/{chunk-F4CEK5YM.js.map → chunk-7GAXFU2O.js.map} +0 -0
- /package/dist/{chunk-6G5ORS5D.js.map → chunk-7QLY64AD.js.map} +0 -0
- /package/dist/{chunk-5VG4IJR7.js.map → chunk-7ZOSHEVS.js.map} +0 -0
- /package/dist/{chunk-LEJIKBBB.js.map → chunk-APHLCXVC.js.map} +0 -0
- /package/dist/{chunk-KNZB6JMR.js.map → chunk-BDEMZD4F.js.map} +0 -0
- /package/dist/{chunk-VJV7GKQK.js.map → chunk-BDPAVYGJ.js.map} +0 -0
- /package/dist/{chunk-G4JYND6L.js.map → chunk-BLUT46UP.js.map} +0 -0
- /package/dist/{chunk-J4LPNIGK.js.map → chunk-CCIR2OJH.js.map} +0 -0
- /package/dist/{chunk-5YESYH2C.js.map → chunk-CXC3JLAQ.js.map} +0 -0
- /package/dist/{chunk-XH7XP3OL.js.map → chunk-CZMCOFEA.js.map} +0 -0
- /package/dist/{chunk-WIGQB62E.js.map → chunk-DIB2BOIH.js.map} +0 -0
- /package/dist/{chunk-UF362QVH.js.map → chunk-EIZ4YOG2.js.map} +0 -0
- /package/dist/{chunk-DFVUTGT2.js.map → chunk-EVHBK7BN.js.map} +0 -0
- /package/dist/{chunk-ET67AY6B.js.map → chunk-EXGDL2UQ.js.map} +0 -0
- /package/dist/{chunk-YMVQD5Q5.js.map → chunk-F3LGBRSV.js.map} +0 -0
- /package/dist/{chunk-NUEQU36L.js.map → chunk-F44XWXOA.js.map} +0 -0
- /package/dist/{chunk-YCXCR7VG.js.map → chunk-FF7S3XDW.js.map} +0 -0
- /package/dist/{chunk-OXCSVM3B.js.map → chunk-FJTWLQV3.js.map} +0 -0
- /package/dist/{chunk-PS2NEWEX.js.map → chunk-FYNE4WLC.js.map} +0 -0
- /package/dist/{chunk-FORYWFN6.js.map → chunk-GL3JV5EV.js.map} +0 -0
- /package/dist/{chunk-VEAVKDDB.js.map → chunk-GXLZXD2W.js.map} +0 -0
- /package/dist/{chunk-3JXPAHOZ.js.map → chunk-HBBZWEC5.js.map} +0 -0
- /package/dist/{chunk-LL2NIVUR.js.map → chunk-HG76BZ6G.js.map} +0 -0
- /package/dist/{chunk-O45M6LDB.js.map → chunk-HGAB325C.js.map} +0 -0
- /package/dist/{chunk-T7WSLRAU.js.map → chunk-HK4XTXO4.js.map} +0 -0
- /package/dist/{chunk-U3WZCU7E.js.map → chunk-HYG32HCM.js.map} +0 -0
- /package/dist/{chunk-UN4FVIBH.js.map → chunk-ILF5GARW.js.map} +0 -0
- /package/dist/{chunk-BKARNZJN.js.map → chunk-INBQ43DI.js.map} +0 -0
- /package/dist/{chunk-Y3A5CB5G.js.map → chunk-IQIVD7TP.js.map} +0 -0
- /package/dist/{chunk-QA2KUPCP.js.map → chunk-J3JIYFYL.js.map} +0 -0
- /package/dist/{chunk-OVYRLHPE.js.map → chunk-JGUZMC3I.js.map} +0 -0
- /package/dist/{chunk-VWRRVE6D.js.map → chunk-JRKE5MAZ.js.map} +0 -0
- /package/dist/{chunk-XGDAPN6M.js.map → chunk-K2DLLK34.js.map} +0 -0
- /package/dist/{chunk-7BWJHO2A.js.map → chunk-KKYEZCQG.js.map} +0 -0
- /package/dist/{chunk-TWKKOM55.js.map → chunk-NAR6IDKH.js.map} +0 -0
- /package/dist/{chunk-OBKWYKYC.js.map → chunk-NEYKOESM.js.map} +0 -0
- /package/dist/{chunk-VEPTFUJY.js.map → chunk-NM3IFKBL.js.map} +0 -0
- /package/dist/{chunk-4OMCIY6F.js.map → chunk-NRYNRSGV.js.map} +0 -0
- /package/dist/{chunk-PLS64NCS.js.map → chunk-NT2ZO4KI.js.map} +0 -0
- /package/dist/{chunk-5I35DOHK.js.map → chunk-P2LJI6JE.js.map} +0 -0
- /package/dist/{chunk-QSFOZUYL.js.map → chunk-PH7G7ZI7.js.map} +0 -0
- /package/dist/{chunk-OHHKHSJP.js.map → chunk-PN5332SU.js.map} +0 -0
- /package/dist/{chunk-OT76OZL6.js.map → chunk-QF5LGMSV.js.map} +0 -0
- /package/dist/{chunk-3MATJ6O4.js.map → chunk-QG5RQQBO.js.map} +0 -0
- /package/dist/{chunk-DJ7KIPLV.js.map → chunk-QYPDYN23.js.map} +0 -0
- /package/dist/{chunk-IVLTXX4W.js.map → chunk-RNXJ2VO6.js.map} +0 -0
- /package/dist/{chunk-RW3Y22MW.js.map → chunk-RXTMLYJS.js.map} +0 -0
- /package/dist/{chunk-QOC3VYL2.js.map → chunk-S2OWPVSO.js.map} +0 -0
- /package/dist/{chunk-P33LUIML.js.map → chunk-S7TAPIRS.js.map} +0 -0
- /package/dist/{chunk-XREOISSI.js.map → chunk-SAL5X5OK.js.map} +0 -0
- /package/dist/{chunk-GNMXXTMN.js.map → chunk-SGJGWBSC.js.map} +0 -0
- /package/dist/{chunk-VQRAIPYF.js.map → chunk-SIAIYP6G.js.map} +0 -0
- /package/dist/{chunk-BQISD5ZV.js.map → chunk-TBNF5DV5.js.map} +0 -0
- /package/dist/{chunk-HPWKV3YB.js.map → chunk-TVOHSPVK.js.map} +0 -0
- /package/dist/{chunk-HY3AUMFI.js.map → chunk-TVS6BUUR.js.map} +0 -0
- /package/dist/{chunk-ZYJ55N7N.js.map → chunk-UMC5QZTX.js.map} +0 -0
- /package/dist/{chunk-2OZXVKVP.js.map → chunk-US34HTOI.js.map} +0 -0
- /package/dist/{chunk-EOXAAJTY.js.map → chunk-VCUQR6ZL.js.map} +0 -0
- /package/dist/{chunk-6P5XCKSD.js.map → chunk-WEHIQYQH.js.map} +0 -0
- /package/dist/{chunk-VWM3DAVB.js.map → chunk-WHQHTNT7.js.map} +0 -0
- /package/dist/{chunk-VRIYFLBA.js.map → chunk-X6Y5MXTH.js.map} +0 -0
- /package/dist/{chunk-3QSIU3UT.js.map → chunk-XJ47GS53.js.map} +0 -0
- /package/dist/{chunk-2OV5NVE7.js.map → chunk-XS6DLN67.js.map} +0 -0
- /package/dist/{chunk-FRP6D2DM.js.map → chunk-Y5TWPBNW.js.map} +0 -0
- /package/dist/{chunk-JJZ2LW6T.js.map → chunk-ZHOJOT6S.js.map} +0 -0
- /package/dist/{collection-facade-LVD22JLM.js.map → collection-facade-DWA735G2.js.map} +0 -0
- /package/dist/{computed-EXDMQODG.js.map → computed-ORCGM5JE.js.map} +0 -0
- /package/dist/{dead-filter-HQIE2YG7.js.map → dead-filter-OV5FGKOG.js.map} +0 -0
- /package/dist/{delegation-BJP73GAP.js.map → delegation-YVSHMIZZ.js.map} +0 -0
- /package/dist/{derive-BME7HDWO.js.map → derive-BUO555L5.js.map} +0 -0
- /package/dist/{enclave-NHORSWSF.js.map → enclave-XXFUKJC6.js.map} +0 -0
- /package/dist/{executor-FE6X4LFX.js.map → executor-6OCCE5VM.js.map} +0 -0
- /package/dist/{executor-KSHKRJXP.js.map → executor-JFVAJY42.js.map} +0 -0
- /package/dist/{executor-ZHTJJICG.js.map → executor-UPSH5O3F.js.map} +0 -0
- /package/dist/{export-accessible-DACHM5VT.js.map → export-accessible-L4A2QZA5.js.map} +0 -0
- /package/dist/{extract-partition-RNENZZ4T.js.map → extract-partition-ZHQ4RGGM.js.map} +0 -0
- /package/dist/{fanout-sidecar-OFWN3NM7.js.map → fanout-sidecar-IO2KDUWV.js.map} +0 -0
- /package/dist/{find-BNGBJNKP.js.map → find-ZFZDZQ2U.js.map} +0 -0
- /package/dist/{issue-NDI4CVZU.js.map → issue-OG4V23SQ.js.map} +0 -0
- /package/dist/{ledger-6NDS2EO4.js.map → ledger-UAQKPWNM.js.map} +0 -0
- /package/dist/{liberate-HN3RIGIP.js.map → liberate-GFUQJRK5.js.map} +0 -0
- /package/dist/{link-set-SJB2MVJV.js.map → link-set-DGYUOFVD.js.map} +0 -0
- /package/dist/{noydb-BWF6EPIR.js.map → noydb-AKH4AMCR.js.map} +0 -0
- /package/dist/{policy-WGNAG5H6.js.map → policy-5POYLI26.js.map} +0 -0
- /package/dist/{public-envelope-EJLVIFX7.js.map → public-envelope-GOG4LUM7.js.map} +0 -0
- /package/dist/{register-SBIX7TVV.js.map → register-ZI7YI7US.js.map} +0 -0
- /package/dist/{registry-3EQG6OOE.js.map → registry-DZ2T4LL7.js.map} +0 -0
- /package/dist/{registry-CA327ACV.js.map → registry-NVWEQ2GU.js.map} +0 -0
- /package/dist/{registry-E7OXOTSV.js.map → registry-SEKL74ET.js.map} +0 -0
- /package/dist/{request-withdrawal-KAH2AAXC.js.map → request-withdrawal-ZP3JIRVS.js.map} +0 -0
- /package/dist/{reveal-R3JLHMUF.js.map → reveal-NPVROV4D.js.map} +0 -0
- /package/dist/{revoke-IXLOJ3IH.js.map → revoke-VF6TAJK2.js.map} +0 -0
- /package/dist/{signer-Y46N2GJ3.js.map → signer-DRDDCCHW.js.map} +0 -0
- /package/dist/{stale-Z7IW6RIL.js.map → stale-TJXFQKOJ.js.map} +0 -0
- /package/dist/{storage-ADNP2UWI.js.map → storage-GR7KZRH4.js.map} +0 -0
- /package/dist/{store-coordination-provider-DTDMI6VL.js.map → store-coordination-provider-5KDS2RRP.js.map} +0 -0
- /package/dist/{verify-JPF2YR5E.js.map → verify-QK76NJ4G.js.map} +0 -0
- /package/dist/{walk-XYA2O3LW.js.map → walk-XQCBKSBW.js.map} +0 -0
- /package/dist/{withdraw-accessible-WLV4MTEN.js.map → withdraw-accessible-FMN4LPJZ.js.map} +0 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* i18nText schema type —
|
|
3
|
+
*
|
|
4
|
+
* `i18nText({ languages, required })` creates a descriptor for a
|
|
5
|
+
* multi-language content field whose value is stored as a
|
|
6
|
+
* `{ [locale]: string }` map (e.g. `{ en: 'Consulting', th: 'ที่ปรึกษา' }`).
|
|
7
|
+
*
|
|
8
|
+
* On put, the descriptor validates that required languages are present.
|
|
9
|
+
* On read (when a `locale` option is passed), the map is collapsed to the
|
|
10
|
+
* caller's locale string via the fallback chain.
|
|
11
|
+
*
|
|
12
|
+
* Design decisions
|
|
13
|
+
* ────────────────
|
|
14
|
+
*
|
|
15
|
+
* **Descriptor pattern (not a Zod type).**
|
|
16
|
+
* `i18nText()` returns a plain descriptor object used in the collection's
|
|
17
|
+
* `i18nFields` option — same pattern as `ref()` / `dictKey()`. This keeps
|
|
18
|
+
* `@noy-db/core` at zero runtime dependencies and avoids Zod v3 field-type
|
|
19
|
+
* constraints. TypeScript inference is handled via the descriptor's type.
|
|
20
|
+
*
|
|
21
|
+
* **Enforcement at the collection boundary.**
|
|
22
|
+
* The `required` option is checked by `Collection.put()` via the compartment's
|
|
23
|
+
* registered `i18nFields`. Failed validation throws `MissingTranslationError`
|
|
24
|
+
* — a distinct class from `SchemaValidationError` so callers can tell
|
|
25
|
+
* "wrong shape" from "missing translations".
|
|
26
|
+
*
|
|
27
|
+
* **Resolution is post-decryption.**
|
|
28
|
+
* Locale resolution happens AFTER `decryptRecord()`, as a pure in-memory
|
|
29
|
+
* transform. No additional crypto work is needed. The resolved record is
|
|
30
|
+
* returned in place of the stored one, with i18nText fields replaced by
|
|
31
|
+
* their locale-resolved strings.
|
|
32
|
+
*
|
|
33
|
+
* **`locale: 'raw'`.**
|
|
34
|
+
* Passing `{ locale: 'raw' }` skips resolution and returns the full
|
|
35
|
+
* `{ [locale]: string }` map — useful for bilingual exports, admin UIs,
|
|
36
|
+
* and any context where all translations must be visible at once.
|
|
37
|
+
*
|
|
38
|
+
* **Out of scope.**
|
|
39
|
+
* Pluralization, RTL rendering, date/number formatting, per-locale CRDT
|
|
40
|
+
* merging.
|
|
41
|
+
*/
|
|
42
|
+
import type { OnMissing, OnMissingPolicy, Layer } from './policy.js';
|
|
43
|
+
/** Flatten an intersection into a single object literal for nicer hovers. */
|
|
44
|
+
type Prettify<T> = {
|
|
45
|
+
[K in keyof T]: T[K];
|
|
46
|
+
} & {};
|
|
47
|
+
/**
|
|
48
|
+
* The stored shape of a multilingual field, inferred from its `required`
|
|
49
|
+
* mode — so the compiler forces you to handle an absent optional locale
|
|
50
|
+
* (`string | undefined`) instead of silently yielding `undefined`.
|
|
51
|
+
*
|
|
52
|
+
* Mirrors `i18nText({ languages, required })`:
|
|
53
|
+
* - `'all'` (default) — every locale required: `{ th: string; en: string }`
|
|
54
|
+
* - `'any'` — every locale optional: `{ th?: string; en?: string }`
|
|
55
|
+
* (the "at least one present" guarantee is runtime-only — not expressible
|
|
56
|
+
* in TypeScript — so each key is optional)
|
|
57
|
+
* - `readonly L[]` — listed locales required, the rest optional:
|
|
58
|
+
* `I18nMap<'th'|'en', ['th']>` → `{ th: string; en?: string }`
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* type Lang = 'th' | 'en'
|
|
63
|
+
* interface Contact {
|
|
64
|
+
* name: I18nMap<Lang, 'any'> // { th?: string; en?: string }
|
|
65
|
+
* legalName: I18nMap<Lang, ['th']> // { th: string; en?: string }
|
|
66
|
+
* slug: I18nMap<Lang> // { th: string; en: string }
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
export type I18nMap<Langs extends string, Required extends 'all' | 'any' | readonly Langs[] = 'all'> = Required extends 'all' ? Record<Langs, string> : Required extends 'any' ? Partial<Record<Langs, string>> : Required extends readonly (infer R extends Langs)[] ? Prettify<Record<R, string> & Partial<Record<Exclude<Langs, R>, string>>> : never;
|
|
73
|
+
/**
|
|
74
|
+
* Options for `i18nText()`.
|
|
75
|
+
*
|
|
76
|
+
* `languages` declares the full set of supported locales. `required`
|
|
77
|
+
* controls which must be present on every `put()`.
|
|
78
|
+
*
|
|
79
|
+
* `autoTranslate` is the per-field opt-in for the `plaintextTranslator`
|
|
80
|
+
* hook. When `true` and a `plaintextTranslator` is configured
|
|
81
|
+
* on `createNoydb()`, missing translations are generated before `put()`.
|
|
82
|
+
* Default: `false`.
|
|
83
|
+
*/
|
|
84
|
+
export interface I18nTextOptions {
|
|
85
|
+
/** All supported locale codes (BCP 47). */
|
|
86
|
+
readonly languages: readonly string[];
|
|
87
|
+
/**
|
|
88
|
+
* Which locales must be present on every `put()`.
|
|
89
|
+
*
|
|
90
|
+
* - `'all'` — every declared language must be present.
|
|
91
|
+
* - `'any'` — at least one declared language must be present.
|
|
92
|
+
* - `string[]` — listed locales are required; others are optional.
|
|
93
|
+
*/
|
|
94
|
+
readonly required: 'all' | 'any' | readonly string[];
|
|
95
|
+
/**
|
|
96
|
+
* Per-field opt-in for the `plaintextTranslator` hook.
|
|
97
|
+
* When `true`, missing required translations are auto-generated
|
|
98
|
+
* before `put()` if a translator is configured. Default: `false`.
|
|
99
|
+
*/
|
|
100
|
+
readonly autoTranslate?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* What to do when this field is resolved to a locale that is absent.
|
|
103
|
+
* A single policy, or a per-layer map (read/guard/join/mv/derivation/
|
|
104
|
+
* export). Default `'throw'` — today's behavior, zero breaking change.
|
|
105
|
+
* See {@link OnMissingPolicy}.
|
|
106
|
+
*
|
|
107
|
+
* NOTE (current wiring): ALL layers are enforced — `read` (`get`/`list`),
|
|
108
|
+
* `guard`, `derivation`, `mv`, `join`, `export`. Guard / derivation
|
|
109
|
+
* `ctx.vault` reads resolve under their own layer policy (`guard` defaults to
|
|
110
|
+
* the lenient `'substitute'`). The `mv` layer fires for materialized views
|
|
111
|
+
* that declare `{ i18nLocale, i18nFields }` — UNION (group-key i18n fields
|
|
112
|
+
* resolve before the unified-row bucketing) and query-form (resolved in
|
|
113
|
+
* `GroupedAggregation.run` before `groupAndReduce`); grouping a raw i18n field
|
|
114
|
+
* without a locale throws. The `join` layer resolves a joined right-side i18n
|
|
115
|
+
* field to the query locale (`toArray({ locale })` or the vault default; raw
|
|
116
|
+
* when locale-less). The `export` layer fires for
|
|
117
|
+
* `exportStream`/`exportJSON({ resolveLabels })` — records collapse to the
|
|
118
|
+
* export locale.
|
|
119
|
+
*/
|
|
120
|
+
readonly onMissing?: OnMissingPolicy;
|
|
121
|
+
/**
|
|
122
|
+
* Ordered preferred-substitute locales used when `onMissing` resolves
|
|
123
|
+
* to `'substitute'` and the target locale is absent. `'any'` as an
|
|
124
|
+
* element means "first non-empty value". A caller-supplied `fallback`
|
|
125
|
+
* at read time takes precedence over this declared list.
|
|
126
|
+
*/
|
|
127
|
+
readonly substitute?: readonly string[];
|
|
128
|
+
/**
|
|
129
|
+
* Smart-substitute. When `true`, a missing-locale `substitute` walk that
|
|
130
|
+
* misses the explicit chain prefers the available locale whose script is
|
|
131
|
+
* nearest the target (same script, then Latin) rather than an arbitrary value
|
|
132
|
+
* — e.g. a missing Thai label prefers another Thai (or Latin) translation over
|
|
133
|
+
* an unreadable script. Default `false` (legacy first-non-empty behavior).
|
|
134
|
+
*/
|
|
135
|
+
readonly smartSubstitute?: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Per-locale script enforcement (write-time). `'auto'` infers the
|
|
138
|
+
* allowed Unicode scripts per locale (asymmetric Latin tolerance); an
|
|
139
|
+
* object overrides per slot. Absent ⇒ no check. See `./script.ts`.
|
|
140
|
+
*/
|
|
141
|
+
readonly script?: 'auto' | Partial<Record<string, readonly string[]>>;
|
|
142
|
+
/**
|
|
143
|
+
* What to do when a slot's value contains characters outside its
|
|
144
|
+
* allowed script set. Default `'reject'`.
|
|
145
|
+
*/
|
|
146
|
+
readonly onScriptViolation?: 'reject' | 'filter' | 'warn';
|
|
147
|
+
/**
|
|
148
|
+
* Eager-fill empty locale slots from the substitute chain at
|
|
149
|
+
* write time, recording provenance in the internal `_i18nFilled` marker.
|
|
150
|
+
* Mutually exclusive with an EXPLICIT `'throw'` onMissing policy (densify
|
|
151
|
+
* fills every hole, so a throw would be unreachable). Without an explicit
|
|
152
|
+
* `substitute`, fills from `'any'` (first non-empty). Default absent.
|
|
153
|
+
*/
|
|
154
|
+
readonly densifyOnWrite?: boolean;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Descriptor returned by `i18nText()`. Attach to the collection's
|
|
158
|
+
* `i18nFields` option:
|
|
159
|
+
*
|
|
160
|
+
* ```ts
|
|
161
|
+
* const lineItems = company.collection<LineItem>('line-items', {
|
|
162
|
+
* i18nFields: {
|
|
163
|
+
* description: i18nText({ languages: ['en', 'th'], required: 'all' }),
|
|
164
|
+
* },
|
|
165
|
+
* })
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export interface I18nTextDescriptor {
|
|
169
|
+
readonly _noydbI18nText: true;
|
|
170
|
+
/** Via port brand marker — lets an `I18nTextDescriptor` satisfy the kernel's opaque `ViaDescriptor` (#623 Task 9). */
|
|
171
|
+
readonly _viaBrand: 'i18n';
|
|
172
|
+
readonly options: I18nTextOptions;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Create an `I18nTextDescriptor` for a multi-language content field.
|
|
176
|
+
*
|
|
177
|
+
* @param options Language list + enforcement mode.
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```ts
|
|
181
|
+
* i18nText({ languages: ['en', 'th'], required: 'all' })
|
|
182
|
+
* i18nText({ languages: ['en', 'th'], required: ['th'], autoTranslate: true })
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
export declare function i18nText(options: I18nTextOptions): I18nTextDescriptor;
|
|
186
|
+
export { isI18nTextDescriptor } from '../../port/with/i18n-strategy.js';
|
|
187
|
+
/**
|
|
188
|
+
* Validate that a value is a valid `{ [locale]: string }` map and that
|
|
189
|
+
* all required locales are present. Throws `MissingTranslationError`
|
|
190
|
+
* when the required constraint is violated.
|
|
191
|
+
*
|
|
192
|
+
* Called by `Collection.put()` for each registered `i18nField`.
|
|
193
|
+
*
|
|
194
|
+
* @param value The raw field value from the record being put.
|
|
195
|
+
* @param field The field name (used in the thrown error message).
|
|
196
|
+
* @param descriptor The `i18nText()` descriptor for this field.
|
|
197
|
+
*/
|
|
198
|
+
export declare function validateI18nTextValue(value: unknown, field: string, descriptor: I18nTextDescriptor): void;
|
|
199
|
+
/**
|
|
200
|
+
* Resolve an i18nText value (`{ [locale]: string }` map) to a string
|
|
201
|
+
* for the given locale.
|
|
202
|
+
*
|
|
203
|
+
* @param value The stored locale map.
|
|
204
|
+
* @param locale The requested locale code, or `'raw'` to return the map.
|
|
205
|
+
* @param fallback Single locale or ordered list; use `'any'` as the last
|
|
206
|
+
* element to fall back to any available translation.
|
|
207
|
+
* @param field Field name used in `LocaleNotSpecifiedError` messages.
|
|
208
|
+
* @returns The resolved string, OR the original map when `locale === 'raw'`.
|
|
209
|
+
*/
|
|
210
|
+
/** Options for the policy-aware form of {@link resolveI18nText}. */
|
|
211
|
+
export interface ResolveI18nOptions {
|
|
212
|
+
/** Effective policy for the resolution layer. Default `'throw'`. */
|
|
213
|
+
readonly policy?: OnMissing;
|
|
214
|
+
/** Declared substitute chain; applied only under policy `'substitute'`. */
|
|
215
|
+
readonly substitute?: readonly string[];
|
|
216
|
+
/**
|
|
217
|
+
* Smart-substitute. When `true` and policy is `'substitute'`, after the
|
|
218
|
+
* explicit chain misses, pick the available locale whose script is nearest the
|
|
219
|
+
* target (same script first, then Latin's broad readability) instead of an
|
|
220
|
+
* arbitrary value. Default `false`.
|
|
221
|
+
*/
|
|
222
|
+
readonly smartSubstitute?: boolean;
|
|
223
|
+
}
|
|
224
|
+
export declare function resolveI18nText(value: Record<string, string>, locale: string, fallback?: string | readonly string[], field?: string): string | Record<string, string>;
|
|
225
|
+
export declare function resolveI18nText(value: Record<string, string>, locale: string, fallback: string | readonly string[] | undefined, field: string | undefined, opts: ResolveI18nOptions): string | Record<string, string> | null;
|
|
226
|
+
export { getAtPath } from '../../kernel/paths.js';
|
|
227
|
+
/**
|
|
228
|
+
* Apply locale resolution to a single record, returning a new copy.
|
|
229
|
+
*
|
|
230
|
+
* For each field registered as an `i18nText` descriptor:
|
|
231
|
+
* - If `locale === 'raw'`, the field value is left as the stored map.
|
|
232
|
+
* - Otherwise, the field value is replaced with the resolved string.
|
|
233
|
+
*
|
|
234
|
+
* Field paths support dot notation (`'address.lineOne'`) and array
|
|
235
|
+
* wildcards (`'contacts[].title'`). Top-level fields work as before.
|
|
236
|
+
*
|
|
237
|
+
* @param record The decrypted record.
|
|
238
|
+
* @param i18nFields Map of field path → `I18nTextDescriptor`.
|
|
239
|
+
* @param locale The requested locale (or `'raw'`).
|
|
240
|
+
* @param fallback Fallback chain (optional).
|
|
241
|
+
* @param layer Resolution layer (default `'read'`). Each field's
|
|
242
|
+
* `onMissing` policy is resolved for this layer, so the
|
|
243
|
+
* same record resolves leniently on a get but strictly
|
|
244
|
+
* inside an mv/derivation.
|
|
245
|
+
*/
|
|
246
|
+
export declare function applyI18nLocale(record: Record<string, unknown>, i18nFields: Record<string, I18nTextDescriptor>, locale: string, fallback?: string | readonly string[], layer?: Layer): Record<string, unknown>;
|
|
247
|
+
/**
|
|
248
|
+
* Sync i18n-text-only present-for-join dressing — the exact `join`-layer
|
|
249
|
+
* partial application `kernel/query/join.ts` used to import and call
|
|
250
|
+
* directly before #626's retirement (#650 Task 6): fixes `fallback`
|
|
251
|
+
* `undefined` and `layer` `'join'`. `via/lookup/snapshot.ts`'s
|
|
252
|
+
* `buildPresentForJoin` composes this with the lookup-label half to build
|
|
253
|
+
* the `JoinableSource.presentForJoin` hook the join executor now calls
|
|
254
|
+
* instead of reaching into this module.
|
|
255
|
+
*/
|
|
256
|
+
export declare function presentI18nForJoin(record: Record<string, unknown>, i18nFields: Record<string, I18nTextDescriptor>, locale: string): Record<string, unknown>;
|
|
257
|
+
/**
|
|
258
|
+
* Remove the internal densify provenance marker (`_i18nFilled`) from a
|
|
259
|
+
* read-facing record. NON-mutating: returns the same object when the
|
|
260
|
+
* marker is absent, otherwise a shallow copy without the marker.
|
|
261
|
+
*
|
|
262
|
+
* MUST be applied on every user-facing read return — even locale-less ones,
|
|
263
|
+
* which bypass {@link applyI18nLocale}. MUST NOT be applied on the internal
|
|
264
|
+
* prior-read path (decryptRecord / resolveDensifyPrior), where densify needs
|
|
265
|
+
* the marker.
|
|
266
|
+
*/
|
|
267
|
+
export declare function stripI18nFilled<T extends Record<string, unknown>>(record: T): T;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { I18nTextDescriptor } from './core.js';
|
|
2
|
+
/**
|
|
3
|
+
* Per field, the locales that are UNCHANGED round-tripped densify fills — i.e.
|
|
4
|
+
* marked filled on the prior record AND identical in the incoming record.
|
|
5
|
+
* These are exempt from write-time script enforcement (they are derived copies,
|
|
6
|
+
* not authored text). Slots the user changed are NOT exempt (validated as authored).
|
|
7
|
+
*/
|
|
8
|
+
export declare function computeExemptFills(prior: Record<string, unknown> | undefined, incoming: Record<string, unknown>, fields: Record<string, I18nTextDescriptor>): Map<string, Set<string>>;
|
|
9
|
+
/**
|
|
10
|
+
* Mutate `record` in place: fill empty declared-language slots for each
|
|
11
|
+
* densify-enabled field from the field's substitute chain, recompute unchanged
|
|
12
|
+
* prior fills, clear marks for slots that became authored, and write the
|
|
13
|
+
* resulting `_i18nFilled` marker (removed when empty).
|
|
14
|
+
*
|
|
15
|
+
* `prior` is read-only — it is never mutated.
|
|
16
|
+
*
|
|
17
|
+
* Provenance uses value-equality (decision A): a slot counts as an unchanged
|
|
18
|
+
* fill when it was prior-marked AND its value still equals the prior value. A
|
|
19
|
+
* consequence is that re-authoring a value byte-identical to the existing fill
|
|
20
|
+
* keeps it classified as a fill (the visible value is unchanged either way; the
|
|
21
|
+
* slot stays script-exempt and will auto-refresh if its source later changes).
|
|
22
|
+
* This is inherent to value-equality provenance, not a bug.
|
|
23
|
+
*/
|
|
24
|
+
export declare function densify(record: Record<string, unknown>, prior: Record<string, unknown> | undefined, fields: Record<string, I18nTextDescriptor>): void;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* _dict_* reserved collections + dictKey schema descriptor —
|
|
3
|
+
*
|
|
4
|
+
* Stores bounded enum-like field dictionaries as reserved encrypted
|
|
5
|
+
* collections (`_dict_<name>/`) within a vault. Each dictionary
|
|
6
|
+
* entry maps a stable key (e.g. `'paid'`) to a locale → label record
|
|
7
|
+
* (e.g. `{ en: 'Paid', th: 'ชำระแล้ว' }`).
|
|
8
|
+
*
|
|
9
|
+
* Design decisions
|
|
10
|
+
* ────────────────
|
|
11
|
+
*
|
|
12
|
+
* **Why reserved collections, not a separate store?**
|
|
13
|
+
* Same answer as `_sync_credentials`: the compartment's existing
|
|
14
|
+
* encryption stack is exactly right. Dictionaries are encrypted under the
|
|
15
|
+
* same vault DEK, inherit ACL, ledger, and backup/restore for free.
|
|
16
|
+
*
|
|
17
|
+
* **One collection per dictionary, not one collection with namespaces.**
|
|
18
|
+
* Each `_dict_<name>/` collection holds entries `{ id: key, labels: {...} }`.
|
|
19
|
+
* This composes with `ref()` naturally (a dictKey IS a ref to the dict
|
|
20
|
+
* collection), and means the query DSL works over dictionary entries
|
|
21
|
+
* without any special-casing.
|
|
22
|
+
*
|
|
23
|
+
* **dictKey() is a descriptor, not a Zod type.**
|
|
24
|
+
* The descriptor pattern matches `ref()`: declare NOYDB-specific metadata
|
|
25
|
+
* in the collection options alongside `refs`. TypeScript inference comes
|
|
26
|
+
* from the descriptor's generic parameter, not from Zod internals.
|
|
27
|
+
*
|
|
28
|
+
* API:
|
|
29
|
+
* `dictKey(name, keys?)` — returns a DictKeyDescriptor
|
|
30
|
+
* `vault.dictionary(name)` — returns a DictionaryHandle
|
|
31
|
+
* `DictionaryHandle.put/putAll/get/delete/rename/list` — CRUD
|
|
32
|
+
*
|
|
33
|
+
* The storage engine (`DictionaryHandle`, `DictEntry`, `DictionaryOptions`,
|
|
34
|
+
* `DICT_COLLECTION_PREFIX`, `dictCollectionName`) moved to
|
|
35
|
+
* `via/lookup/handle.ts` (#650 Task 1 — via-lookup extraction, phase
|
|
36
|
+
* D of the Via port) and is renamed `LookupHandle` there; re-exported here
|
|
37
|
+
* under the original names for one release so existing importers of this
|
|
38
|
+
* module compile unchanged. This file keeps only the descriptor factories
|
|
39
|
+
* (`dictKey`/`staticDict`), which are locale/i18n-coupled and stay put.
|
|
40
|
+
*/
|
|
41
|
+
import type { OnMissingPolicy } from './policy.js';
|
|
42
|
+
export { isDictCollectionName } from '../../port/with/i18n-strategy.js';
|
|
43
|
+
export { DictionaryHandle, DICT_COLLECTION_PREFIX, dictCollectionName, type DictEntry, type DictionaryOptions, } from '../lookup/handle.js';
|
|
44
|
+
/**
|
|
45
|
+
* Descriptor returned by `dictKey()`. Attach to the collection's
|
|
46
|
+
* `dictKeyFields` option to declare which fields are dictionary-backed:
|
|
47
|
+
*
|
|
48
|
+
* ```ts
|
|
49
|
+
* const invoices = company.collection<Invoice>('invoices', {
|
|
50
|
+
* dictKeyFields: {
|
|
51
|
+
* status: dictKey('status', ['draft', 'open', 'paid'] as const),
|
|
52
|
+
* },
|
|
53
|
+
* })
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* The generic parameter `Keys` narrows the TypeScript type of the field
|
|
57
|
+
* to a literal union; the runtime value of `keys` is used by `put()`
|
|
58
|
+
* validation to reject unknown keys when a key set is declared.
|
|
59
|
+
*/
|
|
60
|
+
export interface DictKeyDescriptor<Keys extends string = string> {
|
|
61
|
+
readonly _noydbDictKey: true;
|
|
62
|
+
/** Via port brand marker (#623 Task 9) — dictKey shares the i18n binding brand. */
|
|
63
|
+
readonly _viaBrand: 'i18n';
|
|
64
|
+
/** Which dictionary this field references. */
|
|
65
|
+
readonly name: string;
|
|
66
|
+
/** Declared valid keys. When set, `put()` rejects keys not in this set. */
|
|
67
|
+
readonly keys: readonly Keys[] | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* What to do when a label is missing for the resolved locale. Mirrors
|
|
70
|
+
* `i18nText`'s `onMissing`. Default behavior (when unset) preserves the
|
|
71
|
+
* legacy contract: a missing label is omitted (scalar) or `null`
|
|
72
|
+
* (array element) — i.e. `'null'`. Set `'substitute'` to walk the
|
|
73
|
+
* declared `substitute` chain, or `'throw'` to raise.
|
|
74
|
+
*/
|
|
75
|
+
readonly onMissing?: OnMissingPolicy;
|
|
76
|
+
/** Ordered preferred-substitute locales for label resolution. */
|
|
77
|
+
readonly substitute?: readonly string[];
|
|
78
|
+
/**
|
|
79
|
+
* Optional inline display labels (value → label map). A SYNC display
|
|
80
|
+
* fallback for `describe()` when async `dictLabels` (from `_dict_`) are
|
|
81
|
+
* not resolved. The async path still wins when available.
|
|
82
|
+
*/
|
|
83
|
+
readonly labels?: Record<string, string>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Create a `DictKeyDescriptor` for a dictionary-backed enum field.
|
|
87
|
+
*
|
|
88
|
+
* @param name The dictionary name (corresponds to `_dict_<name>` collection).
|
|
89
|
+
* @param keysOrMap Either:
|
|
90
|
+
* - An `as const` array of valid key literals — narrows the TypeScript type
|
|
91
|
+
* to a literal union and enables put-time validation.
|
|
92
|
+
* - A **value→label map** (`{ draft: 'Draft', paid: 'Paid' }`) — keys are
|
|
93
|
+
* inferred from the map, and the labels are stored as inline display
|
|
94
|
+
* defaults surfaced by `describe()` without a store read.
|
|
95
|
+
* @param opts `{ labels?, onMissing?, substitute? }` when the array form
|
|
96
|
+
* is used; `opts.labels` provides inline display defaults for
|
|
97
|
+
* specific keys (same semantics as the map form, but
|
|
98
|
+
* explicit key order from the array is preserved).
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* // array form (original):
|
|
103
|
+
* dictKey('status', ['draft', 'open', 'paid'] as const)
|
|
104
|
+
*
|
|
105
|
+
* // value→label map form (keys inferred, inline labels for describe()):
|
|
106
|
+
* dictKey('status', { draft: 'Draft', open: 'Open', paid: 'Paid' })
|
|
107
|
+
*
|
|
108
|
+
* // array + opts.labels (preserves explicit order, partial labels OK):
|
|
109
|
+
* dictKey('status', ['draft', 'open', 'paid'] as const, { labels: { paid: 'Paid' } })
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare function dictKey<Keys extends string>(name: string, keysOrMap?: readonly Keys[] | Record<Keys, string>, opts?: {
|
|
113
|
+
onMissing?: OnMissingPolicy;
|
|
114
|
+
substitute?: readonly string[];
|
|
115
|
+
labels?: Record<string, string>;
|
|
116
|
+
}): DictKeyDescriptor<Keys>;
|
|
117
|
+
export { isDictKeyDescriptor } from '../../port/with/i18n-strategy.js';
|
|
118
|
+
/**
|
|
119
|
+
* Descriptor returned by `staticDict()`. A sibling to {@link DictKeyDescriptor}
|
|
120
|
+
* for **closed, defined-in-code, identical-across-vaults** enums (honorific,
|
|
121
|
+
* civil-status, gender, religion, ContactTitle, status…).
|
|
122
|
+
*
|
|
123
|
+
* Unlike `dictKey`, the labels are supplied **at registration in code** and
|
|
124
|
+
* resolved through the *same* label machinery, but with **no `_dict_*`
|
|
125
|
+
* per-vault encrypted copy** and **no `rename()`**. The record stores only
|
|
126
|
+
* the **code**; a static dict has no mutation surface.
|
|
127
|
+
*
|
|
128
|
+
* **Hybrid resolution.** Because a static dict is pure code with no
|
|
129
|
+
* vault-locale dependency, it can — via a configured `displayLocale` — emit a
|
|
130
|
+
* `<field>Label` even under a **locale-less read** (the property a locale-less
|
|
131
|
+
* consumer needs and `dictKey` cannot provide). When a locale *is* active it
|
|
132
|
+
* behaves exactly like `dictKey` (honoring `onMissing`/`substitute`).
|
|
133
|
+
*
|
|
134
|
+
* ```ts
|
|
135
|
+
* const workers = vault.collection<Worker>('workers', {
|
|
136
|
+
* dictKeyFields: {
|
|
137
|
+
* civilStatus: staticDict('civilStatus', {
|
|
138
|
+
* adultMale: { th: 'นาย', en: 'Mr' },
|
|
139
|
+
* adultFemale: { th: 'นาง', en: 'Mrs' },
|
|
140
|
+
* }, { displayLocale: 'th' }),
|
|
141
|
+
* },
|
|
142
|
+
* })
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export interface StaticDictDescriptor<Keys extends string = string> {
|
|
146
|
+
readonly _noydbStaticDict: true;
|
|
147
|
+
/** Via port brand marker (#623 Task 9) — staticDict shares the i18n binding brand. */
|
|
148
|
+
readonly _viaBrand: 'i18n';
|
|
149
|
+
/** Which dictionary this field references (the registry name). */
|
|
150
|
+
readonly name: string;
|
|
151
|
+
/** The in-code label table: key → { locale → label }. */
|
|
152
|
+
readonly table: Readonly<Record<Keys, Readonly<Record<string, string>>>>;
|
|
153
|
+
/** Declared valid keys — derived from `Object.keys(table)`. */
|
|
154
|
+
readonly keys: readonly Keys[];
|
|
155
|
+
/**
|
|
156
|
+
* Locale used to emit `<field>Label` under a **locale-less** read — the
|
|
157
|
+
* hybrid hinge. When unset, a static dict behaves like `dictKey` under a
|
|
158
|
+
* locale-less read (no label); a locale-less consumer almost always wants
|
|
159
|
+
* it set.
|
|
160
|
+
*/
|
|
161
|
+
readonly displayLocale?: string;
|
|
162
|
+
/** Same `onMissing` policy engine as `dictKey`. Default `'null'`. */
|
|
163
|
+
readonly onMissing?: OnMissingPolicy;
|
|
164
|
+
/** Ordered preferred-substitute locales for label resolution. */
|
|
165
|
+
readonly substitute?: readonly string[];
|
|
166
|
+
/**
|
|
167
|
+
* Validate the stored code against `keys` on every `put()`. Default `true`
|
|
168
|
+
* — codes are closed by construction, so an unknown code is a bug. Set
|
|
169
|
+
* `false` to allow open codes (skips the `UnknownDictCodeError` guard).
|
|
170
|
+
*/
|
|
171
|
+
readonly validateCodes?: boolean;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Create a `StaticDictDescriptor` for a code-provided enum field — a sibling
|
|
175
|
+
* to {@link dictKey} for closed, code-defined, identical-across-vaults enums.
|
|
176
|
+
*
|
|
177
|
+
* The labels live in `table` (no `_dict_*` collection, no `rename()`); the
|
|
178
|
+
* record stores only the stable code. Pass `displayLocale` so `<field>Label`
|
|
179
|
+
* resolves even under a locale-less read.
|
|
180
|
+
*
|
|
181
|
+
* @param name The dictionary name (used for the readonly-guard registry and
|
|
182
|
+
* the query label seam — never creates a `_dict_<name>` key).
|
|
183
|
+
* @param table `{ key: { locale: label } }` map.
|
|
184
|
+
* @param opts `displayLocale` (locale-less label), `onMissing`, `substitute`.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* staticDict('civilStatus', {
|
|
189
|
+
* adultMale: { th: 'นาย', en: 'Mr' },
|
|
190
|
+
* adultFemale: { th: 'นาง', en: 'Mrs' },
|
|
191
|
+
* }, { displayLocale: 'th' })
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export declare function staticDict<const T extends Record<string, Record<string, string>>>(name: string, table: T, opts?: {
|
|
195
|
+
displayLocale?: string;
|
|
196
|
+
onMissing?: OnMissingPolicy;
|
|
197
|
+
substitute?: readonly string[];
|
|
198
|
+
validateCodes?: boolean;
|
|
199
|
+
}): StaticDictDescriptor<Extract<keyof T, string>>;
|
|
200
|
+
export { isStaticDictDescriptor } from '../../port/with/i18n-strategy.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@noy-db/hub/i18n` — subpath export for the multi-locale primitives.
|
|
3
|
+
*
|
|
4
|
+
* Apps that only speak English never have to import from this subpath
|
|
5
|
+
* — the main `@noy-db/hub` entry still re-exports these symbols for
|
|
6
|
+
* backward compatibility through.x. Consumers that opt into the
|
|
7
|
+
* subpath import get a smaller bundle (~2 KB estimated savings).
|
|
8
|
+
*
|
|
9
|
+
* Re-exports:
|
|
10
|
+
* - `dictKey`, `DictionaryHandle`, dictionary collection helpers
|
|
11
|
+
* - `i18nText`, `resolveI18nText`, `applyI18nLocale`, validators
|
|
12
|
+
*/
|
|
13
|
+
export * from './core.js';
|
|
14
|
+
export * from './dictionary.js';
|
|
15
|
+
export { resolvePolicy } from './policy.js';
|
|
16
|
+
export type { OnMissing, Layer, OnMissingPolicy } from './policy.js';
|
|
17
|
+
export { inferScripts, enforceScript } from './script.js';
|
|
18
|
+
export type { ScriptWarning } from './script.js';
|
|
19
|
+
export { withI18n } from './active.js';
|
|
20
|
+
export type { I18nStrategy } from './strategy.js';
|
|
21
|
+
export { ReservedCollectionNameError, DictKeyMissingError, DictKeyInUseError, MissingTranslationError, LocaleNotSpecifiedError, TranslatorNotConfiguredError, ScriptViolationError, StaticDictReadonlyError, UnknownDictCodeError, } from '../../kernel/errors.js';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-layer i18n resolution policy.
|
|
3
|
+
*
|
|
4
|
+
* `onMissing` governs what happens when a multilingual field is resolved
|
|
5
|
+
* to a target locale that is absent. It may be a single scalar policy or
|
|
6
|
+
* a per-layer map, so a field can be lenient at the app read boundary but
|
|
7
|
+
* strict inside a materialized view.
|
|
8
|
+
*
|
|
9
|
+
* Effective policy for layer `λ`:
|
|
10
|
+
*
|
|
11
|
+
* ```
|
|
12
|
+
* explicit(λ) = typeof onMissing === 'object' ? onMissing[λ] : undefined
|
|
13
|
+
* scalar = typeof onMissing === 'string' ? onMissing : undefined
|
|
14
|
+
* policy(λ) = explicit(λ) ?? layerDefault(λ) ?? scalar ?? 'throw'
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* - `layerDefault('guard') = 'substitute'` — guards are lenient unless
|
|
18
|
+
* EXPLICITLY overridden; they never inherit a scalar policy (a guard
|
|
19
|
+
* reading a display value must not hard-fail on a missing locale).
|
|
20
|
+
* - every other layer has no default, so it inherits the scalar, else
|
|
21
|
+
* falls back to `'throw'` (today's behavior — zero breaking change).
|
|
22
|
+
*
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export type OnMissing = 'substitute' | 'null' | 'throw';
|
|
26
|
+
/**
|
|
27
|
+
* The contexts in which a multilingual field is resolved. Each can carry
|
|
28
|
+
* its own `onMissing` policy.
|
|
29
|
+
*
|
|
30
|
+
* - `read` — ordinary app reads (`get`/`list`/query projection).
|
|
31
|
+
* - `guard` — a guard callback reading a value.
|
|
32
|
+
* - `join` — a joined record expanded onto a row.
|
|
33
|
+
* - `mv` — materialized-view input.
|
|
34
|
+
* - `derivation` — derivation input.
|
|
35
|
+
* - `export` — bundle/public-envelope export.
|
|
36
|
+
*/
|
|
37
|
+
export type Layer = 'read' | 'guard' | 'join' | 'mv' | 'derivation' | 'export';
|
|
38
|
+
/** Field-level policy: a single scalar, or a per-layer map. */
|
|
39
|
+
export type OnMissingPolicy = OnMissing | Partial<Record<Layer, OnMissing>>;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the effective `OnMissing` for a layer from a field's declared
|
|
42
|
+
* policy. See module docs for the resolution rule.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolvePolicy(onMissing: OnMissingPolicy | undefined, layer: Layer): OnMissing;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { I18nTextDescriptor } from './core.js';
|
|
2
|
+
/**
|
|
3
|
+
* Infer the allowed Unicode scripts for a BCP-47 locale, with asymmetric
|
|
4
|
+
* Latin tolerance. A script subtag (`th-Latn`) wins over the base
|
|
5
|
+
* language. Unknown locales default to `['Latin']`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function inferScripts(locale: string): readonly string[];
|
|
8
|
+
/** A non-fatal script violation recorded under `'filter'`/`'warn'` modes. */
|
|
9
|
+
export interface ScriptWarning {
|
|
10
|
+
readonly field: string;
|
|
11
|
+
readonly locale: string;
|
|
12
|
+
readonly expected: readonly string[];
|
|
13
|
+
readonly sample: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Enforce a field's script constraint over an i18nText value map.
|
|
17
|
+
*
|
|
18
|
+
* - No `script` option ⇒ returns the value unchanged.
|
|
19
|
+
* - `onScriptViolation: 'reject'` (default) ⇒ throws {@link ScriptViolationError}.
|
|
20
|
+
* - `'filter'` ⇒ returns a copy with disallowed characters stripped + warnings.
|
|
21
|
+
* - `'warn'` ⇒ returns the value unchanged + warnings.
|
|
22
|
+
*/
|
|
23
|
+
export declare function enforceScript(value: Record<string, unknown>, field: string, descriptor: I18nTextDescriptor, exempt?: ReadonlySet<string>): {
|
|
24
|
+
value: Record<string, unknown>;
|
|
25
|
+
warnings: ScriptWarning[];
|
|
26
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy seam for the optional i18n (multi-locale + dictionary)
|
|
3
|
+
* service. `I18nStrategy` + `BuildDictionaryHandleOptions` + `NO_I18N`
|
|
4
|
+
* now live on the kernel port (`port/with/i18n-strategy.ts`, #623
|
|
5
|
+
* Task 7) — re-exported here for compat with existing importers of
|
|
6
|
+
* this module. Real `applyI18nLocale` / `validateI18nTextValue` /
|
|
7
|
+
* `DictionaryHandle` are only reachable via `withI18n()` in
|
|
8
|
+
* `./active.ts`.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export type { I18nStrategy, BuildDictionaryHandleOptions } from '../../port/with/i18n-strategy.js';
|
|
13
|
+
export { NO_I18N } from '../../port/with/i18n-strategy.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active lookup strategy — `withLookup()` returns the real implementation
|
|
3
|
+
* that constructs `LookupHandle` instances (the `_dict_*` / future
|
|
4
|
+
* `_lookup_*` reserved-collection engine).
|
|
5
|
+
*
|
|
6
|
+
* #650 Task 1 (via-lookup extraction, phase D): this is the new home for
|
|
7
|
+
* the handle-construction logic that used to live inline in
|
|
8
|
+
* `via/i18n/active.ts`'s `withI18n().buildDictionaryHandle`, which
|
|
9
|
+
* now delegates here (same handle, new home — see that file). Splitting
|
|
10
|
+
* the import chain through this file is the same `#553` tree-shake seam
|
|
11
|
+
* `via/i18n/active.ts` already used: the `LookupHandle` engine only
|
|
12
|
+
* ships in a consumer's bundle once something reaches `withLookup()` (today
|
|
13
|
+
* that's transitively via `withI18n()`; later phase-D tasks may call it
|
|
14
|
+
* directly).
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
import type { LookupStrategy } from '../../port/with/lookup-strategy.js';
|
|
19
|
+
export declare function withLookup(): LookupStrategy;
|