@noy-db/hub 0.3.0-pre.1 → 0.3.0-pre.10
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.d.ts +3 -4
- package/dist/aggregate/index.js +9 -8
- package/dist/aggregate/index.js.map +1 -1
- package/dist/api-TX2EX2FX.js +20 -0
- package/dist/as/index.d.ts +4 -5
- package/dist/as/index.js +12 -6
- package/dist/at/index.d.ts +2 -3
- package/dist/attestation/index.d.ts +3 -4
- package/dist/attestation/index.js +19 -13
- package/dist/attestation/index.js.map +1 -1
- package/dist/{backup-XV3IOEGB.js → backup-R7NTDFKY.js} +14 -6
- package/dist/backup-R7NTDFKY.js.map +1 -0
- package/dist/blobs/index.d.ts +4 -5
- package/dist/blobs/index.js +12 -6
- package/dist/blobs/index.js.map +1 -1
- package/dist/bundle/index.d.ts +5 -6
- package/dist/bundle/index.js +21 -15
- package/dist/bundle/index.js.map +1 -1
- package/dist/{bundle-CH-H06dp.d.ts → bundle-D6GxiUfq.d.ts} +1 -1
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.d.ts +4 -6
- package/dist/cargo/index.js +27 -21
- package/dist/chunk-2OV5NVE7.js +95 -0
- package/dist/chunk-2OV5NVE7.js.map +1 -0
- package/dist/{chunk-5N6CZTCY.js → chunk-2OZXVKVP.js} +3 -3
- package/dist/{chunk-BG3SPSR4.js → chunk-2REPHKET.js} +5 -4
- package/dist/chunk-2REPHKET.js.map +1 -0
- package/dist/{chunk-LXQT4WMP.js → chunk-3JXPAHOZ.js} +8 -6
- package/dist/{chunk-LXQT4WMP.js.map → chunk-3JXPAHOZ.js.map} +1 -1
- package/dist/{chunk-UAG5KWVA.js → chunk-3MATJ6O4.js} +3 -3
- package/dist/chunk-3OPY6MK2.js +404 -0
- package/dist/chunk-3OPY6MK2.js.map +1 -0
- package/dist/{chunk-62QYRORB.js → chunk-3QSIU3UT.js} +34 -63
- package/dist/chunk-3QSIU3UT.js.map +1 -0
- package/dist/{chunk-DGDI2D4M.js → chunk-4OMCIY6F.js} +29 -9
- package/dist/chunk-4OMCIY6F.js.map +1 -0
- package/dist/chunk-5I35DOHK.js +94 -0
- package/dist/chunk-5I35DOHK.js.map +1 -0
- package/dist/{chunk-2P2HZEXU.js → chunk-5VG4IJR7.js} +11 -9
- package/dist/{chunk-2P2HZEXU.js.map → chunk-5VG4IJR7.js.map} +1 -1
- package/dist/{chunk-AZAOEIKW.js → chunk-5YESYH2C.js} +2 -2
- package/dist/{chunk-GYGWYIOZ.js → chunk-6G5ORS5D.js} +7 -5
- package/dist/{chunk-GYGWYIOZ.js.map → chunk-6G5ORS5D.js.map} +1 -1
- package/dist/{chunk-VCTFO5CO.js → chunk-6P5XCKSD.js} +2 -2
- package/dist/{chunk-IO6GRPT6.js → chunk-7BWJHO2A.js} +2 -2
- package/dist/{chunk-IPB7FTQX.js → chunk-7P2SDJG3.js} +15 -9
- package/dist/chunk-7P2SDJG3.js.map +1 -0
- package/dist/{chunk-SRB2XEWB.js → chunk-ANB77BVV.js} +6 -4
- package/dist/chunk-ANB77BVV.js.map +1 -0
- package/dist/{chunk-UDRIWL7A.js → chunk-BKARNZJN.js} +3 -3
- package/dist/{chunk-Y22T3KQE.js → chunk-BQISD5ZV.js} +3 -3
- package/dist/chunk-BQISD5ZV.js.map +1 -0
- package/dist/{chunk-UIU2THRG.js → chunk-BUAQ7YI3.js} +138 -378
- package/dist/chunk-BUAQ7YI3.js.map +1 -0
- package/dist/{chunk-V7RWQRG7.js → chunk-CB7CWSKW.js} +3 -3
- package/dist/{chunk-LV7M27WM.js → chunk-DFVUTGT2.js} +14 -201
- package/dist/chunk-DFVUTGT2.js.map +1 -0
- package/dist/{chunk-CWPPNPOH.js → chunk-DJ7KIPLV.js} +2 -2
- package/dist/{chunk-5R5JW2JT.js → chunk-DSKDQP3G.js} +3480 -1916
- package/dist/chunk-DSKDQP3G.js.map +1 -0
- package/dist/{chunk-VFQGRQIH.js → chunk-DV4HUP5G.js} +7 -5
- package/dist/{chunk-VFQGRQIH.js.map → chunk-DV4HUP5G.js.map} +1 -1
- package/dist/{chunk-5LUY7UTV.js → chunk-EOXAAJTY.js} +289 -48
- package/dist/chunk-EOXAAJTY.js.map +1 -0
- package/dist/chunk-ET67AY6B.js +74 -0
- package/dist/chunk-ET67AY6B.js.map +1 -0
- package/dist/{chunk-TA66UMI4.js → chunk-F4CEK5YM.js} +2 -2
- package/dist/chunk-FORYWFN6.js +130 -0
- package/dist/chunk-FORYWFN6.js.map +1 -0
- package/dist/{chunk-IELYAOGG.js → chunk-FRP6D2DM.js} +19 -6
- package/dist/chunk-FRP6D2DM.js.map +1 -0
- package/dist/chunk-FUOE7UUV.js +341 -0
- package/dist/chunk-FUOE7UUV.js.map +1 -0
- package/dist/{chunk-SM3AVUHC.js → chunk-G4JYND6L.js} +2 -2
- package/dist/{chunk-AXRXJTE2.js → chunk-G6XV4H65.js} +5 -5
- package/dist/{chunk-I2NOIW44.js → chunk-GNMXXTMN.js} +8 -6
- package/dist/{chunk-I2NOIW44.js.map → chunk-GNMXXTMN.js.map} +1 -1
- package/dist/chunk-GYGLAVCX.js +19 -0
- package/dist/chunk-GYGLAVCX.js.map +1 -0
- package/dist/{chunk-UV5MFVO3.js → chunk-HPWKV3YB.js} +2 -2
- package/dist/chunk-HY3AUMFI.js +41 -0
- package/dist/chunk-HY3AUMFI.js.map +1 -0
- package/dist/chunk-HYR4WZZ3.js +69 -0
- package/dist/chunk-HYR4WZZ3.js.map +1 -0
- package/dist/{chunk-SKF73JOP.js → chunk-ICXIFFYZ.js} +3 -3
- package/dist/chunk-IGJCYUT5.js +99 -0
- package/dist/chunk-IGJCYUT5.js.map +1 -0
- package/dist/{chunk-MD3Y6J3L.js → chunk-IVLTXX4W.js} +7 -5
- package/dist/{chunk-MD3Y6J3L.js.map → chunk-IVLTXX4W.js.map} +1 -1
- package/dist/{chunk-WWGT2MDV.js → chunk-J4LPNIGK.js} +26 -11
- package/dist/chunk-J4LPNIGK.js.map +1 -0
- package/dist/chunk-JJZ2LW6T.js +36 -0
- package/dist/chunk-JJZ2LW6T.js.map +1 -0
- package/dist/{chunk-RUIMKQTA.js → chunk-JK733I5V.js} +1 -1
- package/dist/chunk-JK733I5V.js.map +1 -0
- package/dist/{chunk-UPJNJGGA.js → chunk-KJ2BCBTL.js} +25 -8
- package/dist/chunk-KJ2BCBTL.js.map +1 -0
- package/dist/{chunk-LMTH2RM6.js → chunk-KNZB6JMR.js} +2 -2
- package/dist/{chunk-I3TIKTJO.js → chunk-KPZS5QAQ.js} +29 -10
- package/dist/chunk-KPZS5QAQ.js.map +1 -0
- package/dist/{chunk-PKHL44ER.js → chunk-LEJIKBBB.js} +2 -2
- package/dist/{chunk-AQTBSL7R.js → chunk-LL2NIVUR.js} +14 -7
- package/dist/chunk-LL2NIVUR.js.map +1 -0
- package/dist/chunk-LP7BEXCT.js +32 -0
- package/dist/chunk-LP7BEXCT.js.map +1 -0
- package/dist/{chunk-5O3AOPDT.js → chunk-MCHVVJIA.js} +443 -467
- package/dist/chunk-MCHVVJIA.js.map +1 -0
- package/dist/chunk-NO272T7Q.js +194 -0
- package/dist/chunk-NO272T7Q.js.map +1 -0
- package/dist/{chunk-LFLXAY2W.js → chunk-NUEQU36L.js} +71 -93
- package/dist/chunk-NUEQU36L.js.map +1 -0
- package/dist/chunk-O45M6LDB.js +38 -0
- package/dist/chunk-O45M6LDB.js.map +1 -0
- package/dist/{chunk-PSMV73A5.js → chunk-OBKWYKYC.js} +5 -5
- package/dist/{chunk-CMGR4ZEW.js → chunk-OHHKHSJP.js} +2 -2
- package/dist/{chunk-HCIPRAGS.js → chunk-OT76OZL6.js} +2 -2
- package/dist/{chunk-ITNUCOXM.js → chunk-OVYRLHPE.js} +7 -5
- package/dist/{chunk-ITNUCOXM.js.map → chunk-OVYRLHPE.js.map} +1 -1
- package/dist/{chunk-SMXWYP24.js → chunk-OXCSVM3B.js} +3 -3
- package/dist/{chunk-IGUYVGGI.js → chunk-P33LUIML.js} +3 -3
- package/dist/{chunk-JNUWZ6D3.js → chunk-PLS64NCS.js} +7 -5
- package/dist/{chunk-JNUWZ6D3.js.map → chunk-PLS64NCS.js.map} +1 -1
- package/dist/{chunk-EIZUR2XW.js → chunk-PS2NEWEX.js} +2 -2
- package/dist/chunk-QA2KUPCP.js +45 -0
- package/dist/chunk-QA2KUPCP.js.map +1 -0
- package/dist/{chunk-WYSO2NIH.js → chunk-QOC3VYL2.js} +2 -2
- package/dist/{chunk-FISN7WE4.js → chunk-QSFOZUYL.js} +30 -5
- package/dist/{chunk-FISN7WE4.js.map → chunk-QSFOZUYL.js.map} +1 -1
- package/dist/{chunk-KVOXU4T5.js → chunk-RHK32N73.js} +2 -2
- package/dist/{chunk-3YFXJ3ZP.js → chunk-RW3Y22MW.js} +2 -2
- package/dist/{chunk-ZYUC53LT.js → chunk-S7VFUQM2.js} +117 -3
- package/dist/chunk-S7VFUQM2.js.map +1 -0
- package/dist/chunk-T7WSLRAU.js +49 -0
- package/dist/chunk-T7WSLRAU.js.map +1 -0
- package/dist/{chunk-IUEN57TV.js → chunk-TAKWLZZX.js} +280 -58
- package/dist/chunk-TAKWLZZX.js.map +1 -0
- package/dist/chunk-THNJ3IKU.js +17 -0
- package/dist/chunk-THNJ3IKU.js.map +1 -0
- package/dist/{chunk-MTMJVJ5W.js → chunk-TMBXVJKT.js} +5 -3
- package/dist/chunk-TMBXVJKT.js.map +1 -0
- package/dist/{chunk-QHJW5EXU.js → chunk-TWKKOM55.js} +2 -2
- package/dist/{chunk-M6OST55S.js → chunk-U3WZCU7E.js} +2 -2
- package/dist/{chunk-AIWULCUO.js → chunk-UF362QVH.js} +5 -3
- package/dist/{chunk-AIWULCUO.js.map → chunk-UF362QVH.js.map} +1 -1
- package/dist/{chunk-KXGNJJXB.js → chunk-UN4FVIBH.js} +7 -7
- package/dist/chunk-VEAVKDDB.js +29 -0
- package/dist/chunk-VEAVKDDB.js.map +1 -0
- package/dist/chunk-VEPTFUJY.js +29 -0
- package/dist/chunk-VEPTFUJY.js.map +1 -0
- package/dist/{chunk-TEILUWOI.js → chunk-VJV7GKQK.js} +10 -12
- package/dist/chunk-VJV7GKQK.js.map +1 -0
- package/dist/chunk-VQRAIPYF.js +50 -0
- package/dist/chunk-VQRAIPYF.js.map +1 -0
- package/dist/{chunk-NF5JWERG.js → chunk-VRIYFLBA.js} +2 -2
- package/dist/chunk-VWM3DAVB.js +265 -0
- package/dist/chunk-VWM3DAVB.js.map +1 -0
- package/dist/{chunk-RUEKROOS.js → chunk-VWRRVE6D.js} +2 -2
- package/dist/chunk-VYYM3MEN.js +98 -0
- package/dist/chunk-VYYM3MEN.js.map +1 -0
- package/dist/chunk-WBJIQSLL.js +167 -0
- package/dist/chunk-WBJIQSLL.js.map +1 -0
- package/dist/{chunk-XXYIOFUB.js → chunk-WIGQB62E.js} +5 -5
- package/dist/chunk-WZSCE6RM.js +466 -0
- package/dist/chunk-WZSCE6RM.js.map +1 -0
- package/dist/{chunk-5R3ERCDH.js → chunk-XGDAPN6M.js} +25 -9
- package/dist/{chunk-5R3ERCDH.js.map → chunk-XGDAPN6M.js.map} +1 -1
- package/dist/{chunk-DFEMTNPJ.js → chunk-XH7XP3OL.js} +8 -6
- package/dist/{chunk-DFEMTNPJ.js.map → chunk-XH7XP3OL.js.map} +1 -1
- package/dist/{chunk-IAGBDSCS.js → chunk-XREOISSI.js} +2 -2
- package/dist/chunk-XUBPSPKD.js +164 -0
- package/dist/chunk-XUBPSPKD.js.map +1 -0
- package/dist/chunk-Y3A5CB5G.js +247 -0
- package/dist/chunk-Y3A5CB5G.js.map +1 -0
- package/dist/{chunk-ZCGAHGUS.js → chunk-YCXCR7VG.js} +2 -2
- package/dist/{chunk-76722EBH.js → chunk-YMVQD5Q5.js} +11 -9
- package/dist/{chunk-76722EBH.js.map → chunk-YMVQD5Q5.js.map} +1 -1
- package/dist/{chunk-5TDJ56JE.js → chunk-YN5IAHN6.js} +1 -1
- package/dist/chunk-YN5IAHN6.js.map +1 -0
- package/dist/{chunk-TJYQIGAP.js → chunk-ZYJ55N7N.js} +9 -5
- package/dist/chunk-ZYJ55N7N.js.map +1 -0
- package/dist/classified/index.d.ts +16 -0
- package/dist/classified/index.js +40 -0
- package/dist/classified-marker-H6YSHYNK.js +24 -0
- package/dist/classified-marker-H6YSHYNK.js.map +1 -0
- package/dist/collection-facade-LVD22JLM.js +39 -0
- package/dist/computed-EXDMQODG.js +11 -0
- package/dist/consent/index.d.ts +3 -4
- package/dist/consent/index.js +10 -4
- package/dist/consent/index.js.map +1 -1
- package/dist/crdt/index.d.ts +3 -4
- package/dist/dead-filter-HQIE2YG7.js +28 -0
- package/dist/dead-filter-HQIE2YG7.js.map +1 -0
- package/dist/delegation-BJP73GAP.js +25 -0
- package/dist/derivations/index.d.ts +4 -5
- package/dist/derivations/index.js +13 -6
- package/dist/derive-BME7HDWO.js +21 -0
- package/dist/{dev-unlock-C9Ro3v_O.d.ts → dev-unlock-Bmm2pgJ0.d.ts} +1 -1
- package/dist/{enclave-UL5LW66V.js → enclave-NHORSWSF.js} +55 -18
- package/dist/executor-FE6X4LFX.js +9 -0
- package/dist/executor-KSHKRJXP.js +25 -0
- package/dist/executor-ZHTJJICG.js +9 -0
- package/dist/export-accessible-DACHM5VT.js +23 -0
- package/dist/extract-partition-RNENZZ4T.js +36 -0
- package/dist/{fanout-sidecar-GF3DJ6KR.js → fanout-sidecar-OFWN3NM7.js} +17 -14
- package/dist/fanout-sidecar-OFWN3NM7.js.map +1 -0
- package/dist/fence-watcher-DHQ775JB.js +69 -0
- package/dist/fence-watcher-DHQ775JB.js.map +1 -0
- package/dist/find-BNGBJNKP.js +11 -0
- package/dist/forget/index.d.ts +2 -2
- package/dist/forget/index.js +10 -4
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.d.ts +4 -5
- package/dist/guards/index.js +4 -4
- package/dist/{hash-Cp5uwiox.d.ts → hash-DAJjMsCE.d.ts} +7 -2
- package/dist/history/index.d.ts +4 -5
- package/dist/history/index.js +12 -6
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.d.ts +24 -5
- package/dist/i18n/index.js +50 -31
- package/dist/i18n/index.js.map +1 -1
- package/dist/in/index.d.ts +2 -3
- package/dist/{index-BzUo1B6n.d.ts → index-DjWbxsjb.d.ts} +8596 -5747
- package/dist/{index-BF9_96A5.d.ts → index-qwuNvO2B.d.ts} +26 -5
- package/dist/index.d.ts +116 -24
- package/dist/index.js +1479 -139
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.d.ts +3 -4
- package/dist/indexing/index.js +4 -4
- package/dist/issue-NDI4CVZU.js +19 -0
- package/dist/json-schema-I22JCYCG.js +44 -0
- package/dist/json-schema-I22JCYCG.js.map +1 -0
- package/dist/lazy/index.d.ts +20 -0
- package/dist/lazy/index.js +12 -0
- package/dist/{ledger-RYI35CDS.js → ledger-6NDS2EO4.js} +12 -6
- package/dist/liberate-HN3RIGIP.js +24 -0
- package/dist/link-set-SJB2MVJV.js +31 -0
- package/dist/materialized-views/index.d.ts +22 -6
- package/dist/materialized-views/index.js +20 -10
- package/dist/{mime-magic-CGhw37_E.d.ts → mime-magic-bBj5OgUC.d.ts} +1 -1
- package/dist/noydb-BWF6EPIR.js +66 -0
- package/dist/on/index.d.ts +2 -3
- package/dist/on/index.js +10 -4
- package/dist/overlay-views/index.d.ts +4 -5
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.d.ts +3 -4
- package/dist/periods/index.js +21 -7
- package/dist/pod/index.d.ts +3 -4
- package/dist/pod/index.js +12 -6
- package/dist/{policy-IXK4FVXP.js → policy-WGNAG5H6.js} +5 -5
- package/dist/portability/index.d.ts +3 -4
- package/dist/portability/index.js +8 -8
- package/dist/post-register-CWKBQRC7.js +55 -0
- package/dist/post-register-CWKBQRC7.js.map +1 -0
- package/dist/{public-envelope-JHDQCPSX.js → public-envelope-EJLVIFX7.js} +4 -4
- package/dist/query/index.d.ts +2 -3
- package/dist/query/index.js +9 -6
- package/dist/{read-only-facade-5ADRJVTM.js → read-only-facade-CHCKSEPD.js} +2 -2
- package/dist/register-SBIX7TVV.js +23 -0
- package/dist/registry-3EQG6OOE.js +18 -0
- package/dist/registry-CA327ACV.js +9 -0
- package/dist/registry-E7OXOTSV.js +19 -0
- package/dist/request-withdrawal-KAH2AAXC.js +31 -0
- package/dist/reveal-R3JLHMUF.js +38 -0
- package/dist/reveal-R3JLHMUF.js.map +1 -0
- package/dist/revoke-IXLOJ3IH.js +24 -0
- package/dist/satellites/index.d.ts +4 -0
- package/dist/satellites/index.js +8 -0
- package/dist/sealed-record/index.d.ts +3 -4
- package/dist/sealed-record/index.js +13 -7
- package/dist/sealed-record/index.js.map +1 -1
- package/dist/session/index.d.ts +4 -5
- package/dist/session/index.js +10 -4
- package/dist/session/index.js.map +1 -1
- package/dist/shadow/index.d.ts +3 -4
- package/dist/shadow/index.js +2 -2
- package/dist/signer-Y46N2GJ3.js +25 -0
- package/dist/signer-Y46N2GJ3.js.map +1 -0
- package/dist/snapshots/index.d.ts +3 -4
- package/dist/snapshots/index.js +11 -5
- package/dist/snapshots/index.js.map +1 -1
- package/dist/{stale-3JWHNDIY.js → stale-Z7IW6RIL.js} +2 -2
- package/dist/stale-Z7IW6RIL.js.map +1 -0
- package/dist/storage-ADNP2UWI.js +23 -0
- package/dist/storage-ADNP2UWI.js.map +1 -0
- package/dist/{store-coordination-provider-3I7XWZZK.js → store-coordination-provider-DTDMI6VL.js} +3 -3
- package/dist/{subject-index-O75wKshW.d.ts → subject-index-CyOgGMJL.d.ts} +18 -0
- package/dist/sync/index.d.ts +2 -3
- package/dist/sync/index.js +10 -4
- package/dist/sync/index.js.map +1 -1
- package/dist/team/index.d.ts +45 -7
- package/dist/team/index.js +25 -12
- package/dist/tiers/index.d.ts +2 -3
- package/dist/tiers/index.js +11 -5
- package/dist/to/index.d.ts +2 -3
- package/dist/to/index.js +1 -2
- package/dist/{transition-guard-C7ol6oPw.d.ts → transition-guard-DI-krBsZ.d.ts} +1 -1
- package/dist/tx/index.d.ts +3 -4
- package/dist/tx/index.js +3 -3
- package/dist/ui/index.d.ts +4 -1
- package/dist/util/index.js +1 -1
- package/dist/validators-BUcli5Nh.d.ts +101 -0
- package/dist/{vault-diff-B5fYNBL7.d.ts → vault-diff-Z2DUayMe.d.ts} +1 -1
- package/dist/verify-JPF2YR5E.js +139 -0
- package/dist/verify-JPF2YR5E.js.map +1 -0
- package/dist/walk-XYA2O3LW.js +241 -0
- package/dist/walk-XYA2O3LW.js.map +1 -0
- package/dist/with/index.d.ts +3 -4
- package/dist/with/index.js +12 -6
- package/dist/{with-materialized-view-6p0Fk8bL.d.ts → with-materialized-view-BUmzlXue.d.ts} +1 -1
- package/dist/{with-overlayed-view-BJ6mXGMd.d.ts → with-overlayed-view-m4FaXXTO.d.ts} +1 -1
- package/dist/{with-rollup-BvQo3ROo.d.ts → with-rollup-DEKGI9vb.d.ts} +1 -1
- package/dist/withdraw-accessible-WLV4MTEN.js +28 -0
- package/dist/withdraw-accessible-WLV4MTEN.js.map +1 -0
- package/package.json +16 -16
- package/dist/adapter/index.d.ts +0 -5
- package/dist/adapter/index.js +0 -15
- package/dist/api-RW3KP7WU.js +0 -14
- package/dist/backup-XV3IOEGB.js.map +0 -1
- package/dist/chunk-26LGBE4T.js +0 -42
- package/dist/chunk-26LGBE4T.js.map +0 -1
- package/dist/chunk-5LUY7UTV.js.map +0 -1
- package/dist/chunk-5O3AOPDT.js.map +0 -1
- package/dist/chunk-5R5JW2JT.js.map +0 -1
- package/dist/chunk-5TDJ56JE.js.map +0 -1
- package/dist/chunk-62QYRORB.js.map +0 -1
- package/dist/chunk-AQTBSL7R.js.map +0 -1
- package/dist/chunk-BG3SPSR4.js.map +0 -1
- package/dist/chunk-BGIZAFY7.js +0 -1
- package/dist/chunk-DGDI2D4M.js.map +0 -1
- package/dist/chunk-I3TIKTJO.js.map +0 -1
- package/dist/chunk-IELYAOGG.js.map +0 -1
- package/dist/chunk-IPB7FTQX.js.map +0 -1
- package/dist/chunk-IUEN57TV.js.map +0 -1
- package/dist/chunk-K2WCO3NX.js +0 -1
- package/dist/chunk-LFLXAY2W.js.map +0 -1
- package/dist/chunk-LV7M27WM.js.map +0 -1
- package/dist/chunk-M2YKN37S.js +0 -524
- package/dist/chunk-M2YKN37S.js.map +0 -1
- package/dist/chunk-MTMJVJ5W.js.map +0 -1
- package/dist/chunk-Q7SS3IME.js +0 -120
- package/dist/chunk-Q7SS3IME.js.map +0 -1
- package/dist/chunk-RUIMKQTA.js.map +0 -1
- package/dist/chunk-SRB2XEWB.js.map +0 -1
- package/dist/chunk-TEILUWOI.js.map +0 -1
- package/dist/chunk-TJYQIGAP.js.map +0 -1
- package/dist/chunk-UIU2THRG.js.map +0 -1
- package/dist/chunk-UPJNJGGA.js.map +0 -1
- package/dist/chunk-WWGT2MDV.js.map +0 -1
- package/dist/chunk-Y22T3KQE.js.map +0 -1
- package/dist/chunk-ZYUC53LT.js.map +0 -1
- package/dist/collection-facade-GQAOGJP2.js +0 -33
- package/dist/delegation-UL5HKLER.js +0 -19
- 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/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.map +0 -1
- package/dist/issue-Y6UVIR43.js +0 -13
- package/dist/kernel/index.d.ts +0 -32
- package/dist/kernel/index.js +0 -53
- package/dist/liberate-CRPZEV7O.js +0 -18
- package/dist/noydb-367AM4HT.js +0 -50
- 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/signer-PNKTBVF7.js +0 -19
- package/dist/withdraw-accessible-FFS46EOD.js +0 -22
- /package/dist/{adapter/index.js.map → api-TX2EX2FX.js.map} +0 -0
- /package/dist/{chunk-5N6CZTCY.js.map → chunk-2OZXVKVP.js.map} +0 -0
- /package/dist/{chunk-UAG5KWVA.js.map → chunk-3MATJ6O4.js.map} +0 -0
- /package/dist/{chunk-AZAOEIKW.js.map → chunk-5YESYH2C.js.map} +0 -0
- /package/dist/{chunk-VCTFO5CO.js.map → chunk-6P5XCKSD.js.map} +0 -0
- /package/dist/{chunk-IO6GRPT6.js.map → chunk-7BWJHO2A.js.map} +0 -0
- /package/dist/{chunk-UDRIWL7A.js.map → chunk-BKARNZJN.js.map} +0 -0
- /package/dist/{chunk-V7RWQRG7.js.map → chunk-CB7CWSKW.js.map} +0 -0
- /package/dist/{chunk-CWPPNPOH.js.map → chunk-DJ7KIPLV.js.map} +0 -0
- /package/dist/{chunk-TA66UMI4.js.map → chunk-F4CEK5YM.js.map} +0 -0
- /package/dist/{chunk-SM3AVUHC.js.map → chunk-G4JYND6L.js.map} +0 -0
- /package/dist/{chunk-AXRXJTE2.js.map → chunk-G6XV4H65.js.map} +0 -0
- /package/dist/{chunk-UV5MFVO3.js.map → chunk-HPWKV3YB.js.map} +0 -0
- /package/dist/{chunk-SKF73JOP.js.map → chunk-ICXIFFYZ.js.map} +0 -0
- /package/dist/{chunk-LMTH2RM6.js.map → chunk-KNZB6JMR.js.map} +0 -0
- /package/dist/{chunk-PKHL44ER.js.map → chunk-LEJIKBBB.js.map} +0 -0
- /package/dist/{chunk-PSMV73A5.js.map → chunk-OBKWYKYC.js.map} +0 -0
- /package/dist/{chunk-CMGR4ZEW.js.map → chunk-OHHKHSJP.js.map} +0 -0
- /package/dist/{chunk-HCIPRAGS.js.map → chunk-OT76OZL6.js.map} +0 -0
- /package/dist/{chunk-SMXWYP24.js.map → chunk-OXCSVM3B.js.map} +0 -0
- /package/dist/{chunk-IGUYVGGI.js.map → chunk-P33LUIML.js.map} +0 -0
- /package/dist/{chunk-EIZUR2XW.js.map → chunk-PS2NEWEX.js.map} +0 -0
- /package/dist/{chunk-WYSO2NIH.js.map → chunk-QOC3VYL2.js.map} +0 -0
- /package/dist/{chunk-KVOXU4T5.js.map → chunk-RHK32N73.js.map} +0 -0
- /package/dist/{chunk-3YFXJ3ZP.js.map → chunk-RW3Y22MW.js.map} +0 -0
- /package/dist/{chunk-QHJW5EXU.js.map → chunk-TWKKOM55.js.map} +0 -0
- /package/dist/{chunk-M6OST55S.js.map → chunk-U3WZCU7E.js.map} +0 -0
- /package/dist/{chunk-KXGNJJXB.js.map → chunk-UN4FVIBH.js.map} +0 -0
- /package/dist/{chunk-NF5JWERG.js.map → chunk-VRIYFLBA.js.map} +0 -0
- /package/dist/{chunk-RUEKROOS.js.map → chunk-VWRRVE6D.js.map} +0 -0
- /package/dist/{chunk-XXYIOFUB.js.map → chunk-WIGQB62E.js.map} +0 -0
- /package/dist/{chunk-IAGBDSCS.js.map → chunk-XREOISSI.js.map} +0 -0
- /package/dist/{chunk-ZCGAHGUS.js.map → chunk-YCXCR7VG.js.map} +0 -0
- /package/dist/{describe → classified}/index.js.map +0 -0
- /package/dist/{api-RW3KP7WU.js.map → collection-facade-LVD22JLM.js.map} +0 -0
- /package/dist/{chunk-BGIZAFY7.js.map → computed-EXDMQODG.js.map} +0 -0
- /package/dist/{chunk-K2WCO3NX.js.map → delegation-BJP73GAP.js.map} +0 -0
- /package/dist/{collection-facade-GQAOGJP2.js.map → derive-BME7HDWO.js.map} +0 -0
- /package/dist/{delegation-UL5HKLER.js.map → enclave-NHORSWSF.js.map} +0 -0
- /package/dist/{enclave-UL5LW66V.js.map → executor-FE6X4LFX.js.map} +0 -0
- /package/dist/{executor-2FWQRLMG.js.map → executor-KSHKRJXP.js.map} +0 -0
- /package/dist/{executor-QZ7BXICW.js.map → executor-ZHTJJICG.js.map} +0 -0
- /package/dist/{executor-Z5ZLJVTV.js.map → export-accessible-DACHM5VT.js.map} +0 -0
- /package/dist/{export-accessible-KRV5W4GH.js.map → extract-partition-RNENZZ4T.js.map} +0 -0
- /package/dist/{extract-partition-GLKBOXFQ.js.map → find-BNGBJNKP.js.map} +0 -0
- /package/dist/{issue-Y6UVIR43.js.map → issue-NDI4CVZU.js.map} +0 -0
- /package/dist/{kernel → lazy}/index.js.map +0 -0
- /package/dist/{ledger-RYI35CDS.js.map → ledger-6NDS2EO4.js.map} +0 -0
- /package/dist/{liberate-CRPZEV7O.js.map → liberate-HN3RIGIP.js.map} +0 -0
- /package/dist/{noydb-367AM4HT.js.map → link-set-SJB2MVJV.js.map} +0 -0
- /package/dist/{policy-IXK4FVXP.js.map → noydb-BWF6EPIR.js.map} +0 -0
- /package/dist/{public-envelope-JHDQCPSX.js.map → policy-WGNAG5H6.js.map} +0 -0
- /package/dist/{read-only-facade-5ADRJVTM.js.map → public-envelope-EJLVIFX7.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-SBIX7TVV.js.map} +0 -0
- /package/dist/{registry-WEUCHBO4.js.map → registry-3EQG6OOE.js.map} +0 -0
- /package/dist/{request-withdrawal-GBPH2FDY.js.map → registry-CA327ACV.js.map} +0 -0
- /package/dist/{revoke-TUFRGI6S.js.map → registry-E7OXOTSV.js.map} +0 -0
- /package/dist/{signer-PNKTBVF7.js.map → request-withdrawal-KAH2AAXC.js.map} +0 -0
- /package/dist/{stale-3JWHNDIY.js.map → revoke-IXLOJ3IH.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-DTDMI6VL.js.map} +0 -0
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
dekKey
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7BWJHO2A.js";
|
|
4
4
|
import {
|
|
5
5
|
generateULID
|
|
6
6
|
} from "./chunk-ZJADGNYF.js";
|
|
7
|
+
import {
|
|
8
|
+
openEnvelopeJson
|
|
9
|
+
} from "./chunk-MCHVVJIA.js";
|
|
7
10
|
import {
|
|
8
11
|
encrypt,
|
|
9
|
-
openEnvelopeJson,
|
|
10
12
|
unwrapKey,
|
|
11
13
|
wrapKey
|
|
12
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-3OPY6MK2.js";
|
|
13
15
|
import {
|
|
14
16
|
DelegationTargetMissingError
|
|
15
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-S7VFUQM2.js";
|
|
16
18
|
|
|
17
19
|
// src/with-party/team/delegation.ts
|
|
18
20
|
var DELEGATIONS_COLLECTION = "_delegations";
|
|
@@ -94,4 +96,4 @@ export {
|
|
|
94
96
|
loadActiveDelegations,
|
|
95
97
|
revokeDelegation
|
|
96
98
|
};
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-DV4HUP5G.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/with-party/team/delegation.ts"],"sourcesContent":["/**\n * Time-boxed cross-tier delegation tokens.\n *\n * A higher-tier user can issue a delegation that grants another user\n * temporary access to records at a specified tier. The delegation is\n * persisted as an encrypted envelope in the reserved `_delegations`\n * collection. The target user's runtime scans this collection on every\n * open and, while `until` is still in the future, merges the\n * unwrapped tier DEKs into their in-memory DEK map.\n *\n * ## Token shape\n *\n * ```\n * {\n * id, // ULID, also the _delegations record id\n * toUser, // grantee user id\n * fromUser, // grantor user id (owner/admin/higher-tier principal)\n * tier, // tier being delegated\n * collection, // collection name OR null for \"every collection\"\n * record, // optional specific record id\n * until, // ISO timestamp — token expires at this instant\n * wrappedDek, // base64 AES-KW-wrapped tier DEK, wrapped under target KEK\n * createdAt, // ISO timestamp\n * }\n * ```\n *\n * The ciphertext is stored as a normal noy-db envelope — the\n * `_delegations` collection has its own DEK shared across all vault\n * users, so an operator can enumerate active delegations for audit\n * without being able to *use* them (the `wrappedDek` inside is still\n * keyed to the target user's KEK).\n *\n * ## Revocation\n *\n * Delete the `_delegations/<id>` envelope. The target user's runtime\n * reloads the delegation list at each open and at periodic intervals\n * (tracked by the caller — this module is pure logic).\n *\n * @module\n */\n\nimport type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js'\nimport type { UnlockedKeyring } from './keyring.js'\nimport { encrypt, openEnvelopeJson, wrapKey, unwrapKey, type EnclaveKey } from '../../kernel/enclave/index.js'\nimport { dekKey } from './tiers.js'\nimport { DelegationTargetMissingError } from '../../kernel/errors.js'\nimport { generateULID } from '../../with-pod/ulid.js'\n\nexport const DELEGATIONS_COLLECTION = '_delegations'\n\n/**\n * Durable payload of a delegation token. Encrypted under the vault's\n * `_delegations` DEK; the `wrappedDek` inside is additionally wrapped\n * under the target user's KEK.\n */\nexport interface DelegationToken {\n readonly id: string\n readonly toUser: string\n readonly fromUser: string\n readonly tier: number\n /** Collection name or `null` for all collections. */\n readonly collection: string | null\n /** Optional specific record id scope. */\n readonly record?: string\n readonly until: string\n readonly wrappedDek: string\n readonly createdAt: string\n}\n\nexport interface IssueDelegationOptions {\n readonly toUser: string\n readonly tier: number\n readonly collection?: string\n readonly record?: string\n readonly until: Date | string\n}\n\n/**\n * Build and persist a delegation token. The caller must hold a tier-N\n * DEK and must have already located the target user's keyring file\n * (so the `wrappedDek` can be re-wrapped against their KEK).\n */\nexport async function issueDelegation(\n store: NoydbStore,\n vault: string,\n grantor: UnlockedKeyring,\n targetKek: EnclaveKey | null,\n delegationsDek: EnclaveKey,\n opts: IssueDelegationOptions,\n): Promise<DelegationToken> {\n if (!targetKek) {\n throw new DelegationTargetMissingError(opts.toUser)\n }\n const tier = opts.tier\n const collectionName = opts.collection ?? null\n const dekLookupCollection = collectionName ?? ''\n // Tier DEK to delegate — fetched from the grantor's own keyring.\n const sourceDek = collectionName\n ? grantor.deks.get(dekKey(collectionName, tier))\n : undefined\n if (!sourceDek) {\n throw new DelegationTargetMissingError(\n `grantor cannot find tier ${tier} DEK for ${dekLookupCollection || '(any)'}`,\n )\n }\n const wrappedDek = await wrapKey(sourceDek, targetKek)\n\n const until = typeof opts.until === 'string' ? opts.until : opts.until.toISOString()\n const token: DelegationToken = {\n id: generateULID(),\n toUser: opts.toUser,\n fromUser: grantor.userId,\n tier,\n collection: collectionName,\n ...(opts.record && { record: opts.record }),\n until,\n wrappedDek,\n createdAt: new Date().toISOString(),\n }\n\n const plaintext = JSON.stringify(token)\n const { iv, data } = await encrypt(plaintext, delegationsDek)\n const envelope: EncryptedEnvelope = {\n _noydb: 1,\n _v: 1,\n _ts: token.createdAt,\n _iv: iv,\n _data: data,\n _by: grantor.userId,\n }\n await store.put(vault, DELEGATIONS_COLLECTION, token.id, envelope)\n return token\n}\n\n/**\n * Enumerate every live (non-expired) delegation addressed to `toUser`\n * and merge the unwrapped tier DEKs into their keyring. Returns the\n * list of merged delegations so the caller can register per-access\n * audit context.\n */\nexport async function loadActiveDelegations(\n store: NoydbStore,\n vault: string,\n user: UnlockedKeyring,\n delegationsDek: EnclaveKey,\n now: Date = new Date(),\n): Promise<DelegationToken[]> {\n const ids = await store.list(vault, DELEGATIONS_COLLECTION)\n const merged: DelegationToken[] = []\n const nowIso = now.toISOString()\n for (const id of ids) {\n const env = await store.get(vault, DELEGATIONS_COLLECTION, id)\n if (!env) continue\n let token: DelegationToken\n try {\n const plaintext = await openEnvelopeJson(env, delegationsDek)\n token = JSON.parse(plaintext) as DelegationToken\n } catch {\n continue\n }\n if (token.toUser !== user.userId) continue\n if (token.until <= nowIso) continue\n\n // A user without a KEK in memory (tier-3 PIN resume, wrap-DEKs\n // tier-2 unlock, session restore) cannot unwrap delegation tokens\n // — those were wrapped under the user's KEK at issue time. Skip\n // this token; the consumer reaches it again at tier-1 unlock.\n if (!user.kek) continue\n let dek: EnclaveKey\n try {\n dek = await unwrapKey(token.wrappedDek, user.kek)\n } catch {\n continue\n }\n const k = token.collection\n ? dekKey(token.collection, token.tier)\n : `__any#${token.tier}`\n user.deks.set(k, dek)\n merged.push(token)\n }\n return merged\n}\n\n/**\n * Revoke a delegation by id — the caller resolves the envelope and\n * issues a `delete`. Provided as a stable helper so the naming is\n * symmetric to `issueDelegation`.\n */\nexport async function revokeDelegation(\n store: NoydbStore,\n vault: string,\n id: string,\n): Promise<void> {\n await store.delete(vault, DELEGATIONS_COLLECTION, id)\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/with-party/team/delegation.ts"],"sourcesContent":["/**\n * Time-boxed cross-tier delegation tokens.\n *\n * A higher-tier user can issue a delegation that grants another user\n * temporary access to records at a specified tier. The delegation is\n * persisted as an encrypted envelope in the reserved `_delegations`\n * collection. The target user's runtime scans this collection on every\n * open and, while `until` is still in the future, merges the\n * unwrapped tier DEKs into their in-memory DEK map.\n *\n * ## Token shape\n *\n * ```\n * {\n * id, // ULID, also the _delegations record id\n * toUser, // grantee user id\n * fromUser, // grantor user id (owner/admin/higher-tier principal)\n * tier, // tier being delegated\n * collection, // collection name OR null for \"every collection\"\n * record, // optional specific record id\n * until, // ISO timestamp — token expires at this instant\n * wrappedDek, // base64 AES-KW-wrapped tier DEK, wrapped under target KEK\n * createdAt, // ISO timestamp\n * }\n * ```\n *\n * The ciphertext is stored as a normal noy-db envelope — the\n * `_delegations` collection has its own DEK shared across all vault\n * users, so an operator can enumerate active delegations for audit\n * without being able to *use* them (the `wrappedDek` inside is still\n * keyed to the target user's KEK).\n *\n * ## Revocation\n *\n * Delete the `_delegations/<id>` envelope. The target user's runtime\n * reloads the delegation list at each open and at periodic intervals\n * (tracked by the caller — this module is pure logic).\n *\n * @module\n */\n\nimport type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js'\nimport type { UnlockedKeyring } from './keyring.js'\nimport { encrypt, openEnvelopeJson, wrapKey, unwrapKey, type EnclaveKey } from '../../kernel/enclave/index.js'\nimport { dekKey } from './tiers.js'\nimport { DelegationTargetMissingError } from '../../kernel/errors.js'\nimport { generateULID } from '../../with-pod/ulid.js'\n\nexport const DELEGATIONS_COLLECTION = '_delegations'\n\n/**\n * Durable payload of a delegation token. Encrypted under the vault's\n * `_delegations` DEK; the `wrappedDek` inside is additionally wrapped\n * under the target user's KEK.\n */\nexport interface DelegationToken {\n readonly id: string\n readonly toUser: string\n readonly fromUser: string\n readonly tier: number\n /** Collection name or `null` for all collections. */\n readonly collection: string | null\n /** Optional specific record id scope. */\n readonly record?: string\n readonly until: string\n readonly wrappedDek: string\n readonly createdAt: string\n}\n\nexport interface IssueDelegationOptions {\n readonly toUser: string\n readonly tier: number\n readonly collection?: string\n readonly record?: string\n readonly until: Date | string\n}\n\n/**\n * Build and persist a delegation token. The caller must hold a tier-N\n * DEK and must have already located the target user's keyring file\n * (so the `wrappedDek` can be re-wrapped against their KEK).\n */\nexport async function issueDelegation(\n store: NoydbStore,\n vault: string,\n grantor: UnlockedKeyring,\n targetKek: EnclaveKey | null,\n delegationsDek: EnclaveKey,\n opts: IssueDelegationOptions,\n): Promise<DelegationToken> {\n if (!targetKek) {\n throw new DelegationTargetMissingError(opts.toUser)\n }\n const tier = opts.tier\n const collectionName = opts.collection ?? null\n const dekLookupCollection = collectionName ?? ''\n // Tier DEK to delegate — fetched from the grantor's own keyring.\n const sourceDek = collectionName\n ? grantor.deks.get(dekKey(collectionName, tier))\n : undefined\n if (!sourceDek) {\n throw new DelegationTargetMissingError(\n `grantor cannot find tier ${tier} DEK for ${dekLookupCollection || '(any)'}`,\n )\n }\n const wrappedDek = await wrapKey(sourceDek, targetKek)\n\n const until = typeof opts.until === 'string' ? opts.until : opts.until.toISOString()\n const token: DelegationToken = {\n id: generateULID(),\n toUser: opts.toUser,\n fromUser: grantor.userId,\n tier,\n collection: collectionName,\n ...(opts.record && { record: opts.record }),\n until,\n wrappedDek,\n createdAt: new Date().toISOString(),\n }\n\n const plaintext = JSON.stringify(token)\n const { iv, data } = await encrypt(plaintext, delegationsDek)\n const envelope: EncryptedEnvelope = {\n _noydb: 1,\n _v: 1,\n _ts: token.createdAt,\n _iv: iv,\n _data: data,\n _by: grantor.userId,\n }\n await store.put(vault, DELEGATIONS_COLLECTION, token.id, envelope)\n return token\n}\n\n/**\n * Enumerate every live (non-expired) delegation addressed to `toUser`\n * and merge the unwrapped tier DEKs into their keyring. Returns the\n * list of merged delegations so the caller can register per-access\n * audit context.\n */\nexport async function loadActiveDelegations(\n store: NoydbStore,\n vault: string,\n user: UnlockedKeyring,\n delegationsDek: EnclaveKey,\n now: Date = new Date(),\n): Promise<DelegationToken[]> {\n const ids = await store.list(vault, DELEGATIONS_COLLECTION)\n const merged: DelegationToken[] = []\n const nowIso = now.toISOString()\n for (const id of ids) {\n const env = await store.get(vault, DELEGATIONS_COLLECTION, id)\n if (!env) continue\n let token: DelegationToken\n try {\n const plaintext = await openEnvelopeJson(env, delegationsDek)\n token = JSON.parse(plaintext) as DelegationToken\n } catch {\n continue\n }\n if (token.toUser !== user.userId) continue\n if (token.until <= nowIso) continue\n\n // A user without a KEK in memory (tier-3 PIN resume, wrap-DEKs\n // tier-2 unlock, session restore) cannot unwrap delegation tokens\n // — those were wrapped under the user's KEK at issue time. Skip\n // this token; the consumer reaches it again at tier-1 unlock.\n if (!user.kek) continue\n let dek: EnclaveKey\n try {\n dek = await unwrapKey(token.wrappedDek, user.kek)\n } catch {\n continue\n }\n const k = token.collection\n ? dekKey(token.collection, token.tier)\n : `__any#${token.tier}`\n user.deks.set(k, dek)\n merged.push(token)\n }\n return merged\n}\n\n/**\n * Revoke a delegation by id — the caller resolves the envelope and\n * issues a `delete`. Provided as a stable helper so the naming is\n * symmetric to `issueDelegation`.\n */\nexport async function revokeDelegation(\n store: NoydbStore,\n vault: string,\n id: string,\n): Promise<void> {\n await store.delete(vault, DELEGATIONS_COLLECTION, id)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgDO,IAAM,yBAAyB;AAkCtC,eAAsB,gBACpB,OACA,OACA,SACA,WACA,gBACA,MAC0B;AAC1B,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,6BAA6B,KAAK,MAAM;AAAA,EACpD;AACA,QAAM,OAAO,KAAK;AAClB,QAAM,iBAAiB,KAAK,cAAc;AAC1C,QAAM,sBAAsB,kBAAkB;AAE9C,QAAM,YAAY,iBACd,QAAQ,KAAK,IAAI,OAAO,gBAAgB,IAAI,CAAC,IAC7C;AACJ,MAAI,CAAC,WAAW;AACd,UAAM,IAAI;AAAA,MACR,4BAA4B,IAAI,YAAY,uBAAuB,OAAO;AAAA,IAC5E;AAAA,EACF;AACA,QAAM,aAAa,MAAM,QAAQ,WAAW,SAAS;AAErD,QAAM,QAAQ,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,KAAK,MAAM,YAAY;AACnF,QAAM,QAAyB;AAAA,IAC7B,IAAI,aAAa;AAAA,IACjB,QAAQ,KAAK;AAAA,IACb,UAAU,QAAQ;AAAA,IAClB;AAAA,IACA,YAAY;AAAA,IACZ,GAAI,KAAK,UAAU,EAAE,QAAQ,KAAK,OAAO;AAAA,IACzC;AAAA,IACA;AAAA,IACA,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,EACpC;AAEA,QAAM,YAAY,KAAK,UAAU,KAAK;AACtC,QAAM,EAAE,IAAI,KAAK,IAAI,MAAM,QAAQ,WAAW,cAAc;AAC5D,QAAM,WAA8B;AAAA,IAClC,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,KAAK,MAAM;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,IACP,KAAK,QAAQ;AAAA,EACf;AACA,QAAM,MAAM,IAAI,OAAO,wBAAwB,MAAM,IAAI,QAAQ;AACjE,SAAO;AACT;AAQA,eAAsB,sBACpB,OACA,OACA,MACA,gBACA,MAAY,oBAAI,KAAK,GACO;AAC5B,QAAM,MAAM,MAAM,MAAM,KAAK,OAAO,sBAAsB;AAC1D,QAAM,SAA4B,CAAC;AACnC,QAAM,SAAS,IAAI,YAAY;AAC/B,aAAW,MAAM,KAAK;AACpB,UAAM,MAAM,MAAM,MAAM,IAAI,OAAO,wBAAwB,EAAE;AAC7D,QAAI,CAAC,IAAK;AACV,QAAI;AACJ,QAAI;AACF,YAAM,YAAY,MAAM,iBAAiB,KAAK,cAAc;AAC5D,cAAQ,KAAK,MAAM,SAAS;AAAA,IAC9B,QAAQ;AACN;AAAA,IACF;AACA,QAAI,MAAM,WAAW,KAAK,OAAQ;AAClC,QAAI,MAAM,SAAS,OAAQ;AAM3B,QAAI,CAAC,KAAK,IAAK;AACf,QAAI;AACJ,QAAI;AACF,YAAM,MAAM,UAAU,MAAM,YAAY,KAAK,GAAG;AAAA,IAClD,QAAQ;AACN;AAAA,IACF;AACA,UAAM,IAAI,MAAM,aACZ,OAAO,MAAM,YAAY,MAAM,IAAI,IACnC,SAAS,MAAM,IAAI;AACvB,SAAK,KAAK,IAAI,GAAG,GAAG;AACpB,WAAO,KAAK,KAAK;AAAA,EACnB;AACA,SAAO;AACT;AAOA,eAAsB,iBACpB,OACA,OACA,IACe;AACf,QAAM,MAAM,OAAO,OAAO,wBAAwB,EAAE;AACtD;","names":[]}
|
|
@@ -1,10 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
installViaBinder
|
|
3
|
+
} from "./chunk-VEAVKDDB.js";
|
|
1
4
|
import {
|
|
2
5
|
LocaleNotSpecifiedError,
|
|
3
6
|
MissingTranslationError,
|
|
4
|
-
ScriptViolationError
|
|
5
|
-
|
|
7
|
+
ScriptViolationError,
|
|
8
|
+
TranslatorNotConfiguredError
|
|
9
|
+
} from "./chunk-S7VFUQM2.js";
|
|
10
|
+
|
|
11
|
+
// src/port/with/i18n-strategy.ts
|
|
12
|
+
function notEnabled(op) {
|
|
13
|
+
return new Error(
|
|
14
|
+
`${op} requires the i18n strategy. Import \`{ withI18n }\` from "@noy-db/hub/i18n" and pass it to \`createNoydb({ i18nStrategy: withI18n() })\`.`
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
var NO_I18N = {
|
|
18
|
+
applyI18nLocale(record) {
|
|
19
|
+
return record;
|
|
20
|
+
},
|
|
21
|
+
validateI18nTextValue() {
|
|
22
|
+
throw notEnabled("i18nText field validation");
|
|
23
|
+
},
|
|
24
|
+
enforceScript(value) {
|
|
25
|
+
return { value, warnings: [] };
|
|
26
|
+
},
|
|
27
|
+
computeExemptFills() {
|
|
28
|
+
return /* @__PURE__ */ new Map();
|
|
29
|
+
},
|
|
30
|
+
densify() {
|
|
31
|
+
},
|
|
32
|
+
buildDictionaryHandle() {
|
|
33
|
+
throw notEnabled("vault.dictionary()");
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
function isDictCollectionName(name) {
|
|
37
|
+
return name.startsWith("_dict_");
|
|
38
|
+
}
|
|
39
|
+
function isStaticDictDescriptor(x) {
|
|
40
|
+
return typeof x === "object" && x !== null && x._noydbStaticDict === true;
|
|
41
|
+
}
|
|
42
|
+
function isI18nTextDescriptor(x) {
|
|
43
|
+
return typeof x === "object" && x !== null && x._noydbI18nText === true;
|
|
44
|
+
}
|
|
45
|
+
function isDictKeyDescriptor(x) {
|
|
46
|
+
return typeof x === "object" && x !== null && x._noydbDictKey === true;
|
|
47
|
+
}
|
|
6
48
|
|
|
7
|
-
// src/
|
|
49
|
+
// src/kernel/paths.ts
|
|
50
|
+
function getAtPath(obj, path) {
|
|
51
|
+
const arrayIdx = path.indexOf("[].");
|
|
52
|
+
if (arrayIdx !== -1) {
|
|
53
|
+
const arrayKey = path.slice(0, arrayIdx);
|
|
54
|
+
const restPath = path.slice(arrayIdx + 3);
|
|
55
|
+
const arr = obj[arrayKey];
|
|
56
|
+
if (!Array.isArray(arr)) return [];
|
|
57
|
+
return arr.flatMap((item) => {
|
|
58
|
+
if (!item || typeof item !== "object" || Array.isArray(item)) return [];
|
|
59
|
+
return getAtPath(item, restPath);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const dotIdx = path.indexOf(".");
|
|
63
|
+
if (dotIdx !== -1) {
|
|
64
|
+
const head = path.slice(0, dotIdx);
|
|
65
|
+
const rest = path.slice(dotIdx + 1);
|
|
66
|
+
const nested = obj[head];
|
|
67
|
+
if (!nested || typeof nested !== "object" || Array.isArray(nested)) return [];
|
|
68
|
+
return getAtPath(nested, rest);
|
|
69
|
+
}
|
|
70
|
+
const val = obj[path];
|
|
71
|
+
return val !== void 0 ? [val] : [];
|
|
72
|
+
}
|
|
73
|
+
function setAtPathInPlace(obj, path, value) {
|
|
74
|
+
const dotIdx = path.indexOf(".");
|
|
75
|
+
if (dotIdx !== -1) {
|
|
76
|
+
const head = path.slice(0, dotIdx);
|
|
77
|
+
const rest = path.slice(dotIdx + 1);
|
|
78
|
+
const nested = obj[head];
|
|
79
|
+
if (!nested || typeof nested !== "object" || Array.isArray(nested)) return;
|
|
80
|
+
setAtPathInPlace(nested, rest, value);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
obj[path] = value;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// src/via/i18n/policy.ts
|
|
8
87
|
function resolvePolicy(onMissing, layer) {
|
|
9
88
|
const explicit = onMissing && typeof onMissing === "object" ? onMissing[layer] : void 0;
|
|
10
89
|
const scalar = typeof onMissing === "string" ? onMissing : void 0;
|
|
@@ -12,7 +91,7 @@ function resolvePolicy(onMissing, layer) {
|
|
|
12
91
|
return explicit ?? layerDefault ?? scalar ?? "throw";
|
|
13
92
|
}
|
|
14
93
|
|
|
15
|
-
// src/
|
|
94
|
+
// src/via/i18n/script.ts
|
|
16
95
|
var LATIN_BASE = /* @__PURE__ */ new Set([
|
|
17
96
|
"en",
|
|
18
97
|
"fr",
|
|
@@ -143,23 +222,211 @@ function enforceScript(value, field, descriptor, exempt) {
|
|
|
143
222
|
return { value: out, warnings };
|
|
144
223
|
}
|
|
145
224
|
|
|
146
|
-
// src/
|
|
225
|
+
// src/via/i18n/binding.ts
|
|
226
|
+
async function runI18nAutoTranslate(record, i18nFields, cfg) {
|
|
227
|
+
for (const [field, descriptor] of Object.entries(i18nFields)) {
|
|
228
|
+
if (!descriptor.options.autoTranslate) continue;
|
|
229
|
+
const leafValues = getAtPath(record, field);
|
|
230
|
+
if (leafValues.length !== 1) continue;
|
|
231
|
+
const value = leafValues[0];
|
|
232
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) continue;
|
|
233
|
+
const map = value;
|
|
234
|
+
const { languages, required } = descriptor.options;
|
|
235
|
+
const missing = languages.filter(
|
|
236
|
+
(lang) => !(lang in map) || map[lang] === ""
|
|
237
|
+
);
|
|
238
|
+
if (missing.length === 0) continue;
|
|
239
|
+
const sourceLocale = languages.find((l) => l in map && map[l] !== "");
|
|
240
|
+
if (!sourceLocale) continue;
|
|
241
|
+
if (!cfg.autoTranslateHook) {
|
|
242
|
+
throw new TranslatorNotConfiguredError(field, cfg.collectionName);
|
|
243
|
+
}
|
|
244
|
+
const toTranslate = required === "any" ? [] : required === "all" ? missing : missing.filter((l) => required.includes(l));
|
|
245
|
+
const translated = { ...map };
|
|
246
|
+
for (const targetLocale of toTranslate) {
|
|
247
|
+
translated[targetLocale] = await cfg.autoTranslateHook(
|
|
248
|
+
map[sourceLocale],
|
|
249
|
+
sourceLocale,
|
|
250
|
+
targetLocale,
|
|
251
|
+
field,
|
|
252
|
+
cfg.collectionName
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
setAtPathInPlace(record, field, translated);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
function runI18nScriptEnforcement(record, i18nFields, strategy, exemptFills, ctx, cfg) {
|
|
259
|
+
for (const [field, descriptor] of Object.entries(i18nFields)) {
|
|
260
|
+
if (!descriptor.options.script) continue;
|
|
261
|
+
for (const leaf of getAtPath(record, field)) {
|
|
262
|
+
if (!leaf || typeof leaf !== "object" || Array.isArray(leaf)) continue;
|
|
263
|
+
const leafMap = leaf;
|
|
264
|
+
const { value: cleaned, warnings } = strategy.enforceScript(
|
|
265
|
+
leafMap,
|
|
266
|
+
field,
|
|
267
|
+
descriptor,
|
|
268
|
+
exemptFills?.get(field)
|
|
269
|
+
);
|
|
270
|
+
if (cleaned !== leafMap) Object.assign(leafMap, cleaned);
|
|
271
|
+
const mode = descriptor.options.onScriptViolation;
|
|
272
|
+
if (mode === "warn" || mode === "filter") {
|
|
273
|
+
for (const w of warnings) {
|
|
274
|
+
ctx.emit("i18n:script-violation", {
|
|
275
|
+
vault: ctx.vault,
|
|
276
|
+
collection: cfg.collectionName,
|
|
277
|
+
id: ctx.id,
|
|
278
|
+
mode,
|
|
279
|
+
warning: w
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
async function runI18nWriteStages(record, ctx, cfg) {
|
|
287
|
+
const i18nFields = cfg.i18nFields;
|
|
288
|
+
const i18nDensifyFields = cfg.i18nDensifyFields;
|
|
289
|
+
const strategy = cfg.strategy;
|
|
290
|
+
if (i18nFields) {
|
|
291
|
+
await runI18nAutoTranslate(record, i18nFields, cfg);
|
|
292
|
+
}
|
|
293
|
+
let densifyPrior;
|
|
294
|
+
let exemptFills;
|
|
295
|
+
if (i18nDensifyFields) {
|
|
296
|
+
densifyPrior = await ctx.prior() ?? void 0;
|
|
297
|
+
exemptFills = strategy.computeExemptFills(densifyPrior, record, i18nDensifyFields);
|
|
298
|
+
}
|
|
299
|
+
if (i18nFields) {
|
|
300
|
+
runI18nScriptEnforcement(record, i18nFields, strategy, exemptFills, ctx, cfg);
|
|
301
|
+
}
|
|
302
|
+
cfg.i18nPutValidator?.(record);
|
|
303
|
+
if (i18nDensifyFields) {
|
|
304
|
+
strategy.densify(record, densifyPrior, i18nDensifyFields);
|
|
305
|
+
}
|
|
306
|
+
return record;
|
|
307
|
+
}
|
|
308
|
+
async function runI18nPresent(record, ctx, cfg) {
|
|
309
|
+
const i18nFields = cfg.i18nFields;
|
|
310
|
+
const dictKeyFields = cfg.dictKeyFields;
|
|
311
|
+
const strategy = cfg.strategy;
|
|
312
|
+
const hasI18n = i18nFields !== void 0 && Object.keys(i18nFields).length > 0;
|
|
313
|
+
const hasDict = dictKeyFields !== void 0 && Object.keys(dictKeyFields).length > 0;
|
|
314
|
+
if (!hasI18n && !hasDict) return record;
|
|
315
|
+
const locale = typeof ctx.locale === "string" ? ctx.locale : void 0;
|
|
316
|
+
const fallback = ctx.fallback;
|
|
317
|
+
const layer = ctx.layer;
|
|
318
|
+
let result = record;
|
|
319
|
+
const hasStaticDisplay = hasDict && dictKeyFields !== void 0 && Object.values(dictKeyFields).some(
|
|
320
|
+
(d) => isStaticDictDescriptor(d) && d.displayLocale !== void 0
|
|
321
|
+
);
|
|
322
|
+
if (!locale && !hasStaticDisplay) return stripI18nFilled(result);
|
|
323
|
+
if (locale && hasI18n && i18nFields) {
|
|
324
|
+
result = strategy.applyI18nLocale(result, i18nFields, locale, fallback, layer);
|
|
325
|
+
}
|
|
326
|
+
if (hasDict && dictKeyFields && cfg.dictLabelResolver && locale !== "raw") {
|
|
327
|
+
const withLabels = { ...result };
|
|
328
|
+
const resolver = cfg.dictLabelResolver;
|
|
329
|
+
for (const [field, desc] of Object.entries(dictKeyFields)) {
|
|
330
|
+
const policy = desc.onMissing ? resolvePolicy(desc.onMissing, layer) : "null";
|
|
331
|
+
const fieldFallback = policy === "substitute" ? fallback ?? desc.substitute : fallback;
|
|
332
|
+
const effLocale = locale ?? (isStaticDictDescriptor(desc) ? desc.displayLocale : void 0);
|
|
333
|
+
const resolveKey = async (key) => {
|
|
334
|
+
if (!effLocale) {
|
|
335
|
+
if (policy === "throw") {
|
|
336
|
+
throw new LocaleNotSpecifiedError(
|
|
337
|
+
field,
|
|
338
|
+
`dictKey "${field}": no locale active to resolve key "${key}".`
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
const label = await resolver(desc.name, key, effLocale, fieldFallback);
|
|
344
|
+
if (label === void 0) {
|
|
345
|
+
if (policy === "throw") {
|
|
346
|
+
throw new LocaleNotSpecifiedError(
|
|
347
|
+
field,
|
|
348
|
+
`dictKey "${field}": no label for key "${key}" in locale "${effLocale}".`
|
|
349
|
+
);
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
return label;
|
|
354
|
+
};
|
|
355
|
+
if (field.includes("[].")) {
|
|
356
|
+
const parts = field.split("[].");
|
|
357
|
+
const arrayKey = parts[0];
|
|
358
|
+
const leaf = parts[1];
|
|
359
|
+
if (!leaf || leaf.includes(".")) continue;
|
|
360
|
+
const arr = withLabels[arrayKey];
|
|
361
|
+
if (!Array.isArray(arr)) continue;
|
|
362
|
+
const labelKey = `${leaf}Label`;
|
|
363
|
+
withLabels[arrayKey] = await Promise.all(
|
|
364
|
+
arr.map(async (el) => {
|
|
365
|
+
if (!el || typeof el !== "object" || Array.isArray(el)) return el;
|
|
366
|
+
const k = el[leaf];
|
|
367
|
+
if (typeof k !== "string") return el;
|
|
368
|
+
return { ...el, [labelKey]: await resolveKey(k) };
|
|
369
|
+
})
|
|
370
|
+
);
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const val = result[field];
|
|
374
|
+
if (Array.isArray(val)) {
|
|
375
|
+
withLabels[`${field}Label`] = await Promise.all(
|
|
376
|
+
val.map(async (k) => ({
|
|
377
|
+
key: k,
|
|
378
|
+
label: typeof k === "string" ? await resolveKey(k) : null
|
|
379
|
+
}))
|
|
380
|
+
);
|
|
381
|
+
} else if (typeof val === "string") {
|
|
382
|
+
const label = await resolveKey(val);
|
|
383
|
+
if (label !== null) withLabels[`${field}Label`] = label;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
result = withLabels;
|
|
387
|
+
}
|
|
388
|
+
return stripI18nFilled(result);
|
|
389
|
+
}
|
|
390
|
+
function buildI18nDescribeFragment(cfg) {
|
|
391
|
+
return {
|
|
392
|
+
i18nFields: cfg.i18nFields ? Object.keys(cfg.i18nFields) : [],
|
|
393
|
+
dictKeyFields: cfg.dictKeyFields ? Object.keys(cfg.dictKeyFields) : [],
|
|
394
|
+
...cfg.defaultLocale !== void 0 ? { defaultLocale: cfg.defaultLocale } : {}
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
function i18nBinding(cfg) {
|
|
398
|
+
return {
|
|
399
|
+
brand: "i18n",
|
|
400
|
+
posture: { encryptedAtRest: "envelope", queryable: "full", exportable: true, forgettable: true },
|
|
401
|
+
// DictionaryHandle's `_dict_*` reserved collections (#629 Task 4) — the
|
|
402
|
+
// codec boundary's `reservedEnvelopes` door may address any collection
|
|
403
|
+
// name under this prefix.
|
|
404
|
+
reservedPrefixes: ["_dict_"],
|
|
405
|
+
covers: (field) => cfg.i18nFields !== void 0 && field in cfg.i18nFields || cfg.dictKeyFields !== void 0 && field in cfg.dictKeyFields,
|
|
406
|
+
encodeWrite: async (record, ctx) => runI18nWriteStages(record, ctx, cfg),
|
|
407
|
+
present: async (record, ctx) => runI18nPresent(record, ctx, cfg),
|
|
408
|
+
describeFragment: () => buildI18nDescribeFragment(cfg)
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
function linkI18nVia() {
|
|
412
|
+
installViaBinder("i18n", (c) => i18nBinding(c));
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// src/via/i18n/core.ts
|
|
147
416
|
function i18nText(options) {
|
|
417
|
+
linkI18nVia();
|
|
148
418
|
if (options.densifyOnWrite === true && hasThrowPolicy(options.onMissing)) {
|
|
149
419
|
throw new Error(
|
|
150
420
|
`i18nText: densifyOnWrite cannot be combined with an explicit onMissing 'throw' policy \u2014 densify fills every empty slot, so a 'throw' would be unreachable. Remove the 'throw' policy or disable densifyOnWrite.`
|
|
151
421
|
);
|
|
152
422
|
}
|
|
153
|
-
return { _noydbI18nText: true, options };
|
|
423
|
+
return { _noydbI18nText: true, _viaBrand: "i18n", options };
|
|
154
424
|
}
|
|
155
425
|
function hasThrowPolicy(onMissing) {
|
|
156
426
|
if (onMissing === void 0) return false;
|
|
157
427
|
if (typeof onMissing === "string") return onMissing === "throw";
|
|
158
428
|
return Object.values(onMissing).includes("throw");
|
|
159
429
|
}
|
|
160
|
-
function isI18nTextDescriptor(x) {
|
|
161
|
-
return typeof x === "object" && x !== null && x._noydbI18nText === true;
|
|
162
|
-
}
|
|
163
430
|
function validateI18nTextValue(value, field, descriptor) {
|
|
164
431
|
const { options } = descriptor;
|
|
165
432
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
@@ -272,41 +539,6 @@ function pickNearestScript(value, target) {
|
|
|
272
539
|
}
|
|
273
540
|
return best?.v;
|
|
274
541
|
}
|
|
275
|
-
function getAtPath(obj, path) {
|
|
276
|
-
const arrayIdx = path.indexOf("[].");
|
|
277
|
-
if (arrayIdx !== -1) {
|
|
278
|
-
const arrayKey = path.slice(0, arrayIdx);
|
|
279
|
-
const restPath = path.slice(arrayIdx + 3);
|
|
280
|
-
const arr = obj[arrayKey];
|
|
281
|
-
if (!Array.isArray(arr)) return [];
|
|
282
|
-
return arr.flatMap((item) => {
|
|
283
|
-
if (!item || typeof item !== "object" || Array.isArray(item)) return [];
|
|
284
|
-
return getAtPath(item, restPath);
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
const dotIdx = path.indexOf(".");
|
|
288
|
-
if (dotIdx !== -1) {
|
|
289
|
-
const head = path.slice(0, dotIdx);
|
|
290
|
-
const rest = path.slice(dotIdx + 1);
|
|
291
|
-
const nested = obj[head];
|
|
292
|
-
if (!nested || typeof nested !== "object" || Array.isArray(nested)) return [];
|
|
293
|
-
return getAtPath(nested, rest);
|
|
294
|
-
}
|
|
295
|
-
const val = obj[path];
|
|
296
|
-
return val !== void 0 ? [val] : [];
|
|
297
|
-
}
|
|
298
|
-
function setAtPathInPlace(obj, path, value) {
|
|
299
|
-
const dotIdx = path.indexOf(".");
|
|
300
|
-
if (dotIdx !== -1) {
|
|
301
|
-
const head = path.slice(0, dotIdx);
|
|
302
|
-
const rest = path.slice(dotIdx + 1);
|
|
303
|
-
const nested = obj[head];
|
|
304
|
-
if (!nested || typeof nested !== "object" || Array.isArray(nested)) return;
|
|
305
|
-
setAtPathInPlace(nested, rest, value);
|
|
306
|
-
return;
|
|
307
|
-
}
|
|
308
|
-
obj[path] = value;
|
|
309
|
-
}
|
|
310
542
|
function applyAtPath(obj, path, locale, fallback, opts) {
|
|
311
543
|
const arrayIdx = path.indexOf("[].");
|
|
312
544
|
if (arrayIdx !== -1) {
|
|
@@ -357,6 +589,9 @@ function applyI18nLocale(record, i18nFields, locale, fallback, layer = "read") {
|
|
|
357
589
|
result = stripI18nFilled(result);
|
|
358
590
|
return result;
|
|
359
591
|
}
|
|
592
|
+
function presentI18nForJoin(record, i18nFields, locale) {
|
|
593
|
+
return applyI18nLocale(record, i18nFields, locale, void 0, "join");
|
|
594
|
+
}
|
|
360
595
|
function stripI18nFilled(record) {
|
|
361
596
|
if (!Object.prototype.hasOwnProperty.call(record, "_i18nFilled")) return record;
|
|
362
597
|
const rest = { ...record };
|
|
@@ -365,16 +600,22 @@ function stripI18nFilled(record) {
|
|
|
365
600
|
}
|
|
366
601
|
|
|
367
602
|
export {
|
|
603
|
+
NO_I18N,
|
|
604
|
+
isDictCollectionName,
|
|
605
|
+
isStaticDictDescriptor,
|
|
606
|
+
isI18nTextDescriptor,
|
|
607
|
+
isDictKeyDescriptor,
|
|
608
|
+
getAtPath,
|
|
609
|
+
setAtPathInPlace,
|
|
368
610
|
resolvePolicy,
|
|
369
611
|
inferScripts,
|
|
370
612
|
enforceScript,
|
|
613
|
+
linkI18nVia,
|
|
371
614
|
i18nText,
|
|
372
|
-
isI18nTextDescriptor,
|
|
373
615
|
validateI18nTextValue,
|
|
374
616
|
resolveI18nText,
|
|
375
|
-
getAtPath,
|
|
376
|
-
setAtPathInPlace,
|
|
377
617
|
applyI18nLocale,
|
|
618
|
+
presentI18nForJoin,
|
|
378
619
|
stripI18nFilled
|
|
379
620
|
};
|
|
380
|
-
//# sourceMappingURL=chunk-
|
|
621
|
+
//# sourceMappingURL=chunk-EOXAAJTY.js.map
|