@struktoai/mirage-node 0.0.4 → 0.0.5-alpha.1
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/README.md +2 -1
- package/dist/aliyun-S62BR3TB.js +11 -0
- package/dist/append.lua +17 -0
- package/dist/backblaze-4EKSW63F.js +11 -0
- package/dist/box-ZPLZAGMK.js +8 -0
- package/dist/ceph-ALKLD3MO.js +11 -0
- package/dist/{chunk-VLRSOWHP.js → chunk-2A4YGVBM.js} +5 -14
- package/dist/chunk-2A4YGVBM.js.map +1 -0
- package/dist/chunk-2HCYLVGY.js +28 -0
- package/dist/chunk-2HCYLVGY.js.map +1 -0
- package/dist/chunk-2VPZAH5Q.js +20 -0
- package/dist/chunk-2VPZAH5Q.js.map +1 -0
- package/dist/{chunk-HCU3B6FW.js → chunk-3JZQ6VSZ.js} +5 -4
- package/dist/chunk-3JZQ6VSZ.js.map +1 -0
- package/dist/chunk-4IF4TGAI.js +11 -0
- package/dist/chunk-4IF4TGAI.js.map +1 -0
- package/dist/{chunk-L7FEZ7LU.js → chunk-5H6KNEPP.js} +4 -5
- package/dist/{chunk-L7FEZ7LU.js.map → chunk-5H6KNEPP.js.map} +1 -1
- package/dist/{chunk-25W4XQJZ.js → chunk-5K2MWDCE.js} +4 -5
- package/dist/{chunk-25W4XQJZ.js.map → chunk-5K2MWDCE.js.map} +1 -1
- package/dist/{chunk-L4GMDSMB.js → chunk-6SVXWRKX.js} +4 -5
- package/dist/{chunk-L4GMDSMB.js.map → chunk-6SVXWRKX.js.map} +1 -1
- package/dist/{chunk-H62XQZUM.js → chunk-6VOIUGAD.js} +22 -10
- package/dist/chunk-6VOIUGAD.js.map +1 -0
- package/dist/{chunk-SI4GMRXD.js → chunk-7JYHFXXC.js} +4 -8
- package/dist/chunk-7JYHFXXC.js.map +1 -0
- package/dist/chunk-7VQQFWV6.js +20 -0
- package/dist/chunk-7VQQFWV6.js.map +1 -0
- package/dist/chunk-7ZP6TPHX.js +87 -0
- package/dist/chunk-7ZP6TPHX.js.map +1 -0
- package/dist/{chunk-HWQPEBID.js → chunk-ADEXNSYU.js} +6 -12
- package/dist/chunk-ADEXNSYU.js.map +1 -0
- package/dist/chunk-AQSYAXL4.js +16 -0
- package/dist/chunk-AQSYAXL4.js.map +1 -0
- package/dist/{chunk-NJ42VNXG.js → chunk-ATLXMNKD.js} +8 -3
- package/dist/chunk-ATLXMNKD.js.map +1 -0
- package/dist/{chunk-CB76WPUS.js → chunk-BYCUGFRF.js} +5 -4
- package/dist/chunk-BYCUGFRF.js.map +1 -0
- package/dist/{chunk-4M73WHIE.js → chunk-BZTVYOES.js} +3 -3
- package/dist/{chunk-CQCTCW4S.js → chunk-CRC4YWXB.js} +28 -9
- package/dist/chunk-CRC4YWXB.js.map +1 -0
- package/dist/{chunk-C7TNKIK5.js → chunk-CTGXJHO5.js} +1 -1
- package/dist/chunk-CTGXJHO5.js.map +1 -0
- package/dist/{chunk-HSD24IP2.js → chunk-DCDBIXVZ.js} +7 -2
- package/dist/chunk-DCDBIXVZ.js.map +1 -0
- package/dist/{chunk-HEDE2377.js → chunk-DDAFNROK.js} +318 -322
- package/dist/chunk-DDAFNROK.js.map +1 -0
- package/dist/chunk-DQIEWEAW.js +85 -0
- package/dist/chunk-DQIEWEAW.js.map +1 -0
- package/dist/{chunk-2ERLWAGG.js → chunk-EBI4IHDC.js} +20 -11
- package/dist/chunk-EBI4IHDC.js.map +1 -0
- package/dist/{chunk-RHUEV4I7.js → chunk-EIUTZ6N7.js} +10 -24
- package/dist/chunk-EIUTZ6N7.js.map +1 -0
- package/dist/{chunk-IUXXZHY3.js → chunk-EJZG5VUF.js} +24 -12
- package/dist/chunk-EJZG5VUF.js.map +1 -0
- package/dist/{chunk-BWWU5T2D.js → chunk-ENW5BVYN.js} +3 -3
- package/dist/{chunk-F5NWRF32.js → chunk-ETIAW4YD.js} +3 -3
- package/dist/chunk-EUPXAYPB.js +20 -0
- package/dist/chunk-EUPXAYPB.js.map +1 -0
- package/dist/{chunk-EGZNOUMH.js → chunk-FA6YNU75.js} +4 -5
- package/dist/{chunk-EGZNOUMH.js.map → chunk-FA6YNU75.js.map} +1 -1
- package/dist/{chunk-XUUSWR4U.js → chunk-FFH6R5VQ.js} +7 -2
- package/dist/{chunk-XUUSWR4U.js.map → chunk-FFH6R5VQ.js.map} +1 -1
- package/dist/{chunk-JEBH5APX.js → chunk-GE6H2COM.js} +5 -13
- package/dist/chunk-GE6H2COM.js.map +1 -0
- package/dist/{chunk-TUNR4VUM.js → chunk-GMMQ3ZK4.js} +3 -3
- package/dist/{chunk-SAOQW6ZJ.js → chunk-GSGE3M5P.js} +5 -13
- package/dist/chunk-GSGE3M5P.js.map +1 -0
- package/dist/{chunk-FRGTDZQT.js → chunk-H64SB6VO.js} +19 -5
- package/dist/chunk-H64SB6VO.js.map +1 -0
- package/dist/{chunk-DXU7NZPH.js → chunk-HCRYAFBI.js} +3 -3
- package/dist/{chunk-OSVZKYXS.js → chunk-HOPUP6LA.js} +192 -156
- package/dist/chunk-HOPUP6LA.js.map +1 -0
- package/dist/chunk-HS24BL6W.js +160 -0
- package/dist/chunk-HS24BL6W.js.map +1 -0
- package/dist/chunk-HVYVG5KQ.js +16 -0
- package/dist/chunk-HVYVG5KQ.js.map +1 -0
- package/dist/{chunk-XEMLYWHK.js → chunk-I7CPLZNW.js} +4 -5
- package/dist/{chunk-XEMLYWHK.js.map → chunk-I7CPLZNW.js.map} +1 -1
- package/dist/{chunk-AULFV3KY.js → chunk-IFUCGI4I.js} +7 -2
- package/dist/chunk-IFUCGI4I.js.map +1 -0
- package/dist/{chunk-HGIPWY5Y.js → chunk-IFYXSSKR.js} +6 -6
- package/dist/chunk-IFYXSSKR.js.map +1 -0
- package/dist/chunk-IXA4DQE4.js +20 -0
- package/dist/chunk-IXA4DQE4.js.map +1 -0
- package/dist/chunk-IZMKMD3O.js +11 -0
- package/dist/chunk-IZMKMD3O.js.map +1 -0
- package/dist/{chunk-4X6CLF4F.js → chunk-JJERW2BI.js} +4 -5
- package/dist/{chunk-4X6CLF4F.js.map → chunk-JJERW2BI.js.map} +1 -1
- package/dist/{chunk-M6E7VK4D.js → chunk-JQR4HVUX.js} +2 -5
- package/dist/chunk-JQR4HVUX.js.map +1 -0
- package/dist/{chunk-BWLUBJQG.js → chunk-JXOMDLFS.js} +6 -15
- package/dist/chunk-JXOMDLFS.js.map +1 -0
- package/dist/{chunk-5ZHNPNDD.js → chunk-KIX6N7NT.js} +198 -141
- package/dist/chunk-KIX6N7NT.js.map +1 -0
- package/dist/{chunk-XFSEADPC.js → chunk-L42UTDFK.js} +7 -2
- package/dist/chunk-L42UTDFK.js.map +1 -0
- package/dist/chunk-M2UF2JHJ.js +11 -0
- package/dist/chunk-M2UF2JHJ.js.map +1 -0
- package/dist/{chunk-LPLZLSMK.js → chunk-MONC734W.js} +7 -2
- package/dist/chunk-MONC734W.js.map +1 -0
- package/dist/{chunk-XADEMW6B.js → chunk-N72RLCMU.js} +4 -5
- package/dist/{chunk-XADEMW6B.js.map → chunk-N72RLCMU.js.map} +1 -1
- package/dist/{chunk-ZPB3SLPK.js → chunk-ND4IWJ4V.js} +7 -2
- package/dist/chunk-ND4IWJ4V.js.map +1 -0
- package/dist/{chunk-ZPZQXHW2.js → chunk-NZ3EKGW4.js} +260 -178
- package/dist/chunk-NZ3EKGW4.js.map +1 -0
- package/dist/{chunk-E3KXVEYI.js → chunk-OAE57MNL.js} +22 -10
- package/dist/chunk-OAE57MNL.js.map +1 -0
- package/dist/{chunk-JBDFYIN2.js → chunk-OHKGIQB4.js} +2 -5
- package/dist/chunk-OHKGIQB4.js.map +1 -0
- package/dist/{chunk-V7JVMG63.js → chunk-OXEQSPND.js} +3 -3
- package/dist/{chunk-YRJICL2Q.js → chunk-PKNE5J2B.js} +5 -13
- package/dist/chunk-PKNE5J2B.js.map +1 -0
- package/dist/chunk-PSXXEGYQ.js +16 -0
- package/dist/chunk-PSXXEGYQ.js.map +1 -0
- package/dist/{chunk-KAWDDS27.js → chunk-QAOVABCR.js} +7 -2
- package/dist/chunk-QAOVABCR.js.map +1 -0
- package/dist/{chunk-SYMNWNC3.js → chunk-QQ7FP4GD.js} +4 -5
- package/dist/{chunk-SYMNWNC3.js.map → chunk-QQ7FP4GD.js.map} +1 -1
- package/dist/{chunk-3JZN3GYO.js → chunk-QYLVMC6B.js} +2 -5
- package/dist/chunk-QYLVMC6B.js.map +1 -0
- package/dist/{chunk-CXQGMFI7.js → chunk-RX3XR65X.js} +4 -5
- package/dist/{chunk-CXQGMFI7.js.map → chunk-RX3XR65X.js.map} +1 -1
- package/dist/{chunk-MRXTUFBZ.js → chunk-RYQJJB4C.js} +1 -1
- package/dist/chunk-RYQJJB4C.js.map +1 -0
- package/dist/{chunk-5I7Q7RHW.js → chunk-TUF7TCN7.js} +4 -5
- package/dist/{chunk-5I7Q7RHW.js.map → chunk-TUF7TCN7.js.map} +1 -1
- package/dist/{chunk-NLXJMXVE.js → chunk-TUX36JY5.js} +4 -5
- package/dist/{chunk-NLXJMXVE.js.map → chunk-TUX36JY5.js.map} +1 -1
- package/dist/{chunk-4GYB7DGC.js → chunk-TWRQCQWU.js} +327 -558
- package/dist/chunk-TWRQCQWU.js.map +1 -0
- package/dist/chunk-U6DFQRG3.js +20 -0
- package/dist/chunk-U6DFQRG3.js.map +1 -0
- package/dist/chunk-VI5YTKNY.js +20 -0
- package/dist/chunk-VI5YTKNY.js.map +1 -0
- package/dist/{chunk-W5ZLIQFR.js → chunk-WG5YS6TC.js} +308 -200
- package/dist/chunk-WG5YS6TC.js.map +1 -0
- package/dist/{chunk-ZM44MGC5.js → chunk-WMJJ4WGF.js} +4 -5
- package/dist/{chunk-ZM44MGC5.js.map → chunk-WMJJ4WGF.js.map} +1 -1
- package/dist/{chunk-5YRWF5RP.js → chunk-WY4FNH42.js} +6 -5
- package/dist/chunk-WY4FNH42.js.map +1 -0
- package/dist/{chunk-VBYIDRNU.js → chunk-XIG5BWWH.js} +19 -10
- package/dist/chunk-XIG5BWWH.js.map +1 -0
- package/dist/chunk-XJBC3OYX.js +11 -0
- package/dist/chunk-XJBC3OYX.js.map +1 -0
- package/dist/{chunk-ZMREYTHA.js → chunk-XPRDXWK7.js} +8 -8
- package/dist/chunk-XPRDXWK7.js.map +1 -0
- package/dist/chunk-YKRQSZS7.js +96 -0
- package/dist/chunk-YKRQSZS7.js.map +1 -0
- package/dist/{chunk-IEVLWEBO.js → chunk-YMBL3VJB.js} +9 -8
- package/dist/chunk-YMBL3VJB.js.map +1 -0
- package/dist/{chunk-CGGO5NKD.js → chunk-YUJBXFYK.js} +357 -346
- package/dist/chunk-YUJBXFYK.js.map +1 -0
- package/dist/{chunk-S4KVLPBR.js → chunk-YZ4ZJNOL.js} +22 -10
- package/dist/chunk-YZ4ZJNOL.js.map +1 -0
- package/dist/chunk-ZTHVEXIV.js +11 -0
- package/dist/chunk-ZTHVEXIV.js.map +1 -0
- package/dist/{chunk-VHED2STW.js → chunk-ZVSYUCYS.js} +2 -1
- package/dist/chunk-ZVSYUCYS.js.map +1 -0
- package/dist/{config-T2IUIU5C.js → config-2YBCHU2W.js} +2 -2
- package/dist/{config-M3Z47VYU.js → config-3YRGRW72.js} +3 -2
- package/dist/config-4GSOMUMF.js +9 -0
- package/dist/config-5YBUWFUP.js +9 -0
- package/dist/{config-2LASFFRD.js → config-5ZRKJTKG.js} +3 -2
- package/dist/{config-W7EVPJNK.js → config-A25LTL5W.js} +2 -2
- package/dist/{config-WKQ3FGTZ.js → config-CLU7JABG.js} +2 -2
- package/dist/{config-E22XAGYN.js → config-D2RF7L3N.js} +2 -2
- package/dist/{config-HQXNFQZS.js → config-E55TKM6K.js} +2 -2
- package/dist/config-ELDOFRJW.js +9 -0
- package/dist/{config-EX3ZJTZI.js → config-FPC3RBFD.js} +2 -2
- package/dist/config-FPM3LAW7.js +9 -0
- package/dist/{config-IPNWAJHH.js → config-G3F54CS4.js} +3 -2
- package/dist/{config-BBOLI7VE.js → config-G43HRUI3.js} +2 -2
- package/dist/{config-QO2XUME4.js → config-GG3WO5PB.js} +3 -2
- package/dist/{config-QWQGOXQ5.js → config-JUYBWAZE.js} +2 -2
- package/dist/{config-SPW6NESU.js → config-LJ5T6TVA.js} +2 -2
- package/dist/{config-WVILHDFV.js → config-MDSAE4O3.js} +2 -2
- package/dist/{config-MZM3IPFM.js → config-NRIOKK5T.js} +2 -2
- package/dist/{config-L7SBSH5L.js → config-OYK2BSJK.js} +2 -2
- package/dist/config-PB3KA2CE.js +9 -0
- package/dist/{config-54USUVSE.js → config-QY4IL3PH.js} +3 -2
- package/dist/{config-VKKZGC7V.js → config-R4LAOEDS.js} +2 -2
- package/dist/{config-FRK7ZL37.js → config-RIAAD6RW.js} +3 -2
- package/dist/{config-J2C53GOT.js → config-SYNEQAUB.js} +2 -2
- package/dist/{config-XU6D5C7E.js → config-TJKGYA2B.js} +3 -2
- package/dist/{config-DWSJL3NH.js → config-UURRGA7U.js} +4 -2
- package/dist/{config-BIBFLUIR.js → config-VPLHQXVE.js} +2 -2
- package/dist/config-WRACCRPN.js +9 -0
- package/dist/{config-OJ2BPESH.js → config-WVHKXEVE.js} +3 -2
- package/dist/{config-CPYFOUQO.js → config-XU7R36IE.js} +3 -2
- package/dist/{config-A2GQYJDB.js → config-Y2KOUYSS.js} +2 -2
- package/dist/databricks_volume-CNCPTZHS.js +7 -0
- package/dist/digitalocean-DJZOUB6Q.js +11 -0
- package/dist/discord-ETB2CADR.js +7 -0
- package/dist/disk-WEHSTK3F.js +7 -0
- package/dist/dropbox-XN6PGLNE.js +8 -0
- package/dist/email-OV7XCP3T.js +8 -0
- package/dist/gcal-P56MRCGU.js +8 -0
- package/dist/gcs-HFBIAE2C.js +10 -0
- package/dist/gdocs-LQ3UXP3J.js +8 -0
- package/dist/gdrive-N6UBYLON.js +8 -0
- package/dist/github-BPZREGPI.js +8 -0
- package/dist/github_ci-7A4LUIZ7.js +8 -0
- package/dist/{gmail-2TBT4CVH.js → gmail-YED2MF6H.js} +2 -2
- package/dist/gridfs-CPLQ4G62.js +9 -0
- package/dist/gsheets-4BNIJPQ6.js +8 -0
- package/dist/gslides-GDBYLO5A.js +8 -0
- package/dist/hf_buckets-FTJITQ3P.js +10 -0
- package/dist/hf_datasets-6GXVKQD7.js +10 -0
- package/dist/hf_models-PJPGZAC5.js +10 -0
- package/dist/hf_spaces-LFNFOLBF.js +10 -0
- package/dist/index.d.ts +897 -609
- package/dist/index.js +2371 -781
- package/dist/index.js.map +1 -1
- package/dist/jaeger-GCA6MJ6E.js +8 -0
- package/dist/lancedb-TJ5YSJY5.js +7 -0
- package/dist/langfuse-RUMTUMXS.js +8 -0
- package/dist/linear-BCE4KEAC.js +7 -0
- package/dist/minio-5SO6KBTK.js +11 -0
- package/dist/mongodb-L5CMN2EE.js +7 -0
- package/dist/nextcloud-4O2LZVW2.js +9 -0
- package/dist/notion-RVKEAQ2M.js +7 -0
- package/dist/oci-OQXOIC62.js +10 -0
- package/dist/postgres-AV45GNRS.js +7 -0
- package/dist/qingstor-W277YA4K.js +11 -0
- package/dist/r2-FUA4IORE.js +10 -0
- package/dist/{redis-6D55Q2WB.js → redis-LPS357NF.js} +2 -2
- package/dist/s3-FPNWWIVM.js +8 -0
- package/dist/scaleway-BP3732U7.js +11 -0
- package/dist/seaweedfs-MC6HIEP4.js +11 -0
- package/dist/slack-JFGW7VLN.js +7 -0
- package/dist/ssh-UYPG42LM.js +8 -0
- package/dist/supabase-A3KUFMDC.js +10 -0
- package/dist/tencent-5464UQ2X.js +11 -0
- package/dist/trello-O2KB3FUO.js +8 -0
- package/dist/wasabi-2IKBIWNO.js +10 -0
- package/dist/wasabi-2IKBIWNO.js.map +1 -0
- package/package.json +15 -3
- package/dist/aliyun-PGI57A43.js +0 -10
- package/dist/backblaze-TSPL6Y56.js +0 -10
- package/dist/box-7XTZYDSO.js +0 -8
- package/dist/ceph-C265UI5T.js +0 -10
- package/dist/chunk-2ERLWAGG.js.map +0 -1
- package/dist/chunk-2QNPKPZZ.js +0 -59
- package/dist/chunk-2QNPKPZZ.js.map +0 -1
- package/dist/chunk-3ASOQTZB.js +0 -59
- package/dist/chunk-3ASOQTZB.js.map +0 -1
- package/dist/chunk-3JZN3GYO.js.map +0 -1
- package/dist/chunk-4GYB7DGC.js.map +0 -1
- package/dist/chunk-5YRWF5RP.js.map +0 -1
- package/dist/chunk-5ZHNPNDD.js.map +0 -1
- package/dist/chunk-AULFV3KY.js.map +0 -1
- package/dist/chunk-BWLUBJQG.js.map +0 -1
- package/dist/chunk-C7TNKIK5.js.map +0 -1
- package/dist/chunk-CB76WPUS.js.map +0 -1
- package/dist/chunk-CGGO5NKD.js.map +0 -1
- package/dist/chunk-CQCTCW4S.js.map +0 -1
- package/dist/chunk-D3U7VQCG.js +0 -25
- package/dist/chunk-D3U7VQCG.js.map +0 -1
- package/dist/chunk-E3KXVEYI.js.map +0 -1
- package/dist/chunk-EVK6HH6Z.js +0 -17
- package/dist/chunk-EVK6HH6Z.js.map +0 -1
- package/dist/chunk-FRGTDZQT.js.map +0 -1
- package/dist/chunk-GF75O2EN.js +0 -54
- package/dist/chunk-GF75O2EN.js.map +0 -1
- package/dist/chunk-GTAS3QVC.js +0 -25
- package/dist/chunk-GTAS3QVC.js.map +0 -1
- package/dist/chunk-H62XQZUM.js.map +0 -1
- package/dist/chunk-HCU3B6FW.js.map +0 -1
- package/dist/chunk-HEDE2377.js.map +0 -1
- package/dist/chunk-HGIPWY5Y.js.map +0 -1
- package/dist/chunk-HSD24IP2.js.map +0 -1
- package/dist/chunk-HWQPEBID.js.map +0 -1
- package/dist/chunk-IEHPTILN.js +0 -21
- package/dist/chunk-IEHPTILN.js.map +0 -1
- package/dist/chunk-IEVLWEBO.js.map +0 -1
- package/dist/chunk-IKJQOYI4.js +0 -26
- package/dist/chunk-IKJQOYI4.js.map +0 -1
- package/dist/chunk-IUXXZHY3.js.map +0 -1
- package/dist/chunk-JBDFYIN2.js.map +0 -1
- package/dist/chunk-JEBH5APX.js.map +0 -1
- package/dist/chunk-JHI2PHHD.js +0 -25
- package/dist/chunk-JHI2PHHD.js.map +0 -1
- package/dist/chunk-KAWDDS27.js.map +0 -1
- package/dist/chunk-KGC2OGXI.js +0 -27
- package/dist/chunk-KGC2OGXI.js.map +0 -1
- package/dist/chunk-LPLZLSMK.js.map +0 -1
- package/dist/chunk-M6E7VK4D.js.map +0 -1
- package/dist/chunk-MIQ3ECZM.js +0 -54
- package/dist/chunk-MIQ3ECZM.js.map +0 -1
- package/dist/chunk-MRXTUFBZ.js.map +0 -1
- package/dist/chunk-NJ42VNXG.js.map +0 -1
- package/dist/chunk-OSVZKYXS.js.map +0 -1
- package/dist/chunk-RHUEV4I7.js.map +0 -1
- package/dist/chunk-S4KVLPBR.js.map +0 -1
- package/dist/chunk-SAOQW6ZJ.js.map +0 -1
- package/dist/chunk-SI4GMRXD.js.map +0 -1
- package/dist/chunk-UAJYJP5C.js +0 -59
- package/dist/chunk-UAJYJP5C.js.map +0 -1
- package/dist/chunk-UYA3XL3J.js +0 -54
- package/dist/chunk-UYA3XL3J.js.map +0 -1
- package/dist/chunk-VBYIDRNU.js.map +0 -1
- package/dist/chunk-VHED2STW.js.map +0 -1
- package/dist/chunk-VIICUPWQ.js +0 -23
- package/dist/chunk-VIICUPWQ.js.map +0 -1
- package/dist/chunk-VLRSOWHP.js.map +0 -1
- package/dist/chunk-W5ZLIQFR.js.map +0 -1
- package/dist/chunk-WTSSEUOZ.js +0 -59
- package/dist/chunk-WTSSEUOZ.js.map +0 -1
- package/dist/chunk-WWP2STF5.js +0 -59
- package/dist/chunk-WWP2STF5.js.map +0 -1
- package/dist/chunk-XFSEADPC.js.map +0 -1
- package/dist/chunk-YBVMZ7SR.js +0 -59
- package/dist/chunk-YBVMZ7SR.js.map +0 -1
- package/dist/chunk-YRJICL2Q.js.map +0 -1
- package/dist/chunk-ZMREYTHA.js.map +0 -1
- package/dist/chunk-ZPB3SLPK.js.map +0 -1
- package/dist/chunk-ZPZQXHW2.js.map +0 -1
- package/dist/config-3WDIJPTG.js +0 -9
- package/dist/config-4QV4QYI5.js +0 -9
- package/dist/config-5ZXN2T2H.js +0 -9
- package/dist/config-EHE52ZTK.js +0 -9
- package/dist/config-HTXOOAOD.js +0 -9
- package/dist/config-K63RX6EU.js +0 -9
- package/dist/config-LEALEMKA.js +0 -9
- package/dist/config-RI7IEZUF.js +0 -9
- package/dist/databricks_volume-ETRDJVVQ.js +0 -7
- package/dist/digitalocean-QP72DR4J.js +0 -10
- package/dist/discord-BSN5RB3E.js +0 -8
- package/dist/disk-24NWTN2I.js +0 -7
- package/dist/dropbox-OSTZXSIE.js +0 -8
- package/dist/email-4ZFPSWIN.js +0 -8
- package/dist/gcs-PFWR6MIW.js +0 -10
- package/dist/gdocs-GPAZRQG5.js +0 -8
- package/dist/gdrive-XSX6A7B3.js +0 -8
- package/dist/github-EQ4NXUTA.js +0 -8
- package/dist/github_ci-QL5B2Q2N.js +0 -8
- package/dist/gridfs-KZRZ6SIB.js +0 -9
- package/dist/gsheets-N53WEXN2.js +0 -8
- package/dist/gslides-TATSARTH.js +0 -8
- package/dist/hf_buckets-BK7NGJWS.js +0 -10
- package/dist/hf_datasets-UQ5QGM4L.js +0 -10
- package/dist/hf_models-75LFCQCS.js +0 -10
- package/dist/hf_spaces-6T2KB3UC.js +0 -10
- package/dist/langfuse-AMQCQWNE.js +0 -8
- package/dist/linear-V3TXO6CV.js +0 -8
- package/dist/minio-IZRZY4C5.js +0 -10
- package/dist/mongodb-VMKPQCPX.js +0 -7
- package/dist/nextcloud-5RHQCGDO.js +0 -9
- package/dist/notion-6PPNTQFM.js +0 -8
- package/dist/oci-CKYBSFZJ.js +0 -10
- package/dist/postgres-WIQBVL5M.js +0 -7
- package/dist/qingstor-AP4IIPLY.js +0 -10
- package/dist/r2-C4XGEWQY.js +0 -10
- package/dist/s3-XQBI2CXN.js +0 -8
- package/dist/scaleway-SEZJVURB.js +0 -10
- package/dist/seaweedfs-3XYIAFU2.js +0 -10
- package/dist/slack-ZHXDJQY4.js +0 -8
- package/dist/ssh-X2MO7JOV.js +0 -8
- package/dist/supabase-BBM44UTM.js +0 -10
- package/dist/tencent-X72USLJ7.js +0 -10
- package/dist/trello-EER5NG7L.js +0 -8
- package/dist/wasabi-O4MVIUFG.js +0 -10
- /package/dist/{aliyun-PGI57A43.js.map → aliyun-S62BR3TB.js.map} +0 -0
- /package/dist/{backblaze-TSPL6Y56.js.map → backblaze-4EKSW63F.js.map} +0 -0
- /package/dist/{box-7XTZYDSO.js.map → box-ZPLZAGMK.js.map} +0 -0
- /package/dist/{ceph-C265UI5T.js.map → ceph-ALKLD3MO.js.map} +0 -0
- /package/dist/{chunk-4M73WHIE.js.map → chunk-BZTVYOES.js.map} +0 -0
- /package/dist/{chunk-BWWU5T2D.js.map → chunk-ENW5BVYN.js.map} +0 -0
- /package/dist/{chunk-F5NWRF32.js.map → chunk-ETIAW4YD.js.map} +0 -0
- /package/dist/{chunk-TUNR4VUM.js.map → chunk-GMMQ3ZK4.js.map} +0 -0
- /package/dist/{chunk-DXU7NZPH.js.map → chunk-HCRYAFBI.js.map} +0 -0
- /package/dist/{chunk-V7JVMG63.js.map → chunk-OXEQSPND.js.map} +0 -0
- /package/dist/{config-2LASFFRD.js.map → config-2YBCHU2W.js.map} +0 -0
- /package/dist/{config-3WDIJPTG.js.map → config-3YRGRW72.js.map} +0 -0
- /package/dist/{config-4QV4QYI5.js.map → config-4GSOMUMF.js.map} +0 -0
- /package/dist/{config-54USUVSE.js.map → config-5YBUWFUP.js.map} +0 -0
- /package/dist/{config-5ZXN2T2H.js.map → config-5ZRKJTKG.js.map} +0 -0
- /package/dist/{config-A2GQYJDB.js.map → config-A25LTL5W.js.map} +0 -0
- /package/dist/{config-BBOLI7VE.js.map → config-CLU7JABG.js.map} +0 -0
- /package/dist/{config-BIBFLUIR.js.map → config-D2RF7L3N.js.map} +0 -0
- /package/dist/{config-CPYFOUQO.js.map → config-E55TKM6K.js.map} +0 -0
- /package/dist/{config-DWSJL3NH.js.map → config-ELDOFRJW.js.map} +0 -0
- /package/dist/{config-E22XAGYN.js.map → config-FPC3RBFD.js.map} +0 -0
- /package/dist/{config-EHE52ZTK.js.map → config-FPM3LAW7.js.map} +0 -0
- /package/dist/{config-EX3ZJTZI.js.map → config-G3F54CS4.js.map} +0 -0
- /package/dist/{config-FRK7ZL37.js.map → config-G43HRUI3.js.map} +0 -0
- /package/dist/{config-HQXNFQZS.js.map → config-GG3WO5PB.js.map} +0 -0
- /package/dist/{config-HTXOOAOD.js.map → config-JUYBWAZE.js.map} +0 -0
- /package/dist/{config-IPNWAJHH.js.map → config-LJ5T6TVA.js.map} +0 -0
- /package/dist/{config-J2C53GOT.js.map → config-MDSAE4O3.js.map} +0 -0
- /package/dist/{config-K63RX6EU.js.map → config-NRIOKK5T.js.map} +0 -0
- /package/dist/{config-L7SBSH5L.js.map → config-OYK2BSJK.js.map} +0 -0
- /package/dist/{config-LEALEMKA.js.map → config-PB3KA2CE.js.map} +0 -0
- /package/dist/{config-M3Z47VYU.js.map → config-QY4IL3PH.js.map} +0 -0
- /package/dist/{config-MZM3IPFM.js.map → config-R4LAOEDS.js.map} +0 -0
- /package/dist/{config-OJ2BPESH.js.map → config-RIAAD6RW.js.map} +0 -0
- /package/dist/{config-QO2XUME4.js.map → config-SYNEQAUB.js.map} +0 -0
- /package/dist/{config-QWQGOXQ5.js.map → config-TJKGYA2B.js.map} +0 -0
- /package/dist/{config-RI7IEZUF.js.map → config-UURRGA7U.js.map} +0 -0
- /package/dist/{config-SPW6NESU.js.map → config-VPLHQXVE.js.map} +0 -0
- /package/dist/{config-T2IUIU5C.js.map → config-WRACCRPN.js.map} +0 -0
- /package/dist/{config-VKKZGC7V.js.map → config-WVHKXEVE.js.map} +0 -0
- /package/dist/{config-W7EVPJNK.js.map → config-XU7R36IE.js.map} +0 -0
- /package/dist/{config-WKQ3FGTZ.js.map → config-Y2KOUYSS.js.map} +0 -0
- /package/dist/{config-WVILHDFV.js.map → databricks_volume-CNCPTZHS.js.map} +0 -0
- /package/dist/{config-XU6D5C7E.js.map → digitalocean-DJZOUB6Q.js.map} +0 -0
- /package/dist/{databricks_volume-ETRDJVVQ.js.map → discord-ETB2CADR.js.map} +0 -0
- /package/dist/{digitalocean-QP72DR4J.js.map → disk-WEHSTK3F.js.map} +0 -0
- /package/dist/{discord-BSN5RB3E.js.map → dropbox-XN6PGLNE.js.map} +0 -0
- /package/dist/{disk-24NWTN2I.js.map → email-OV7XCP3T.js.map} +0 -0
- /package/dist/{dropbox-OSTZXSIE.js.map → gcal-P56MRCGU.js.map} +0 -0
- /package/dist/{email-4ZFPSWIN.js.map → gcs-HFBIAE2C.js.map} +0 -0
- /package/dist/{gcs-PFWR6MIW.js.map → gdocs-LQ3UXP3J.js.map} +0 -0
- /package/dist/{gdocs-GPAZRQG5.js.map → gdrive-N6UBYLON.js.map} +0 -0
- /package/dist/{gdrive-XSX6A7B3.js.map → github-BPZREGPI.js.map} +0 -0
- /package/dist/{github-EQ4NXUTA.js.map → github_ci-7A4LUIZ7.js.map} +0 -0
- /package/dist/{github_ci-QL5B2Q2N.js.map → gmail-YED2MF6H.js.map} +0 -0
- /package/dist/{gmail-2TBT4CVH.js.map → gridfs-CPLQ4G62.js.map} +0 -0
- /package/dist/{gridfs-KZRZ6SIB.js.map → gsheets-4BNIJPQ6.js.map} +0 -0
- /package/dist/{gsheets-N53WEXN2.js.map → gslides-GDBYLO5A.js.map} +0 -0
- /package/dist/{gslides-TATSARTH.js.map → hf_buckets-FTJITQ3P.js.map} +0 -0
- /package/dist/{hf_buckets-BK7NGJWS.js.map → hf_datasets-6GXVKQD7.js.map} +0 -0
- /package/dist/{hf_datasets-UQ5QGM4L.js.map → hf_models-PJPGZAC5.js.map} +0 -0
- /package/dist/{hf_models-75LFCQCS.js.map → hf_spaces-LFNFOLBF.js.map} +0 -0
- /package/dist/{hf_spaces-6T2KB3UC.js.map → jaeger-GCA6MJ6E.js.map} +0 -0
- /package/dist/{langfuse-AMQCQWNE.js.map → lancedb-TJ5YSJY5.js.map} +0 -0
- /package/dist/{linear-V3TXO6CV.js.map → langfuse-RUMTUMXS.js.map} +0 -0
- /package/dist/{minio-IZRZY4C5.js.map → linear-BCE4KEAC.js.map} +0 -0
- /package/dist/{mongodb-VMKPQCPX.js.map → minio-5SO6KBTK.js.map} +0 -0
- /package/dist/{nextcloud-5RHQCGDO.js.map → mongodb-L5CMN2EE.js.map} +0 -0
- /package/dist/{notion-6PPNTQFM.js.map → nextcloud-4O2LZVW2.js.map} +0 -0
- /package/dist/{oci-CKYBSFZJ.js.map → notion-RVKEAQ2M.js.map} +0 -0
- /package/dist/{postgres-WIQBVL5M.js.map → oci-OQXOIC62.js.map} +0 -0
- /package/dist/{qingstor-AP4IIPLY.js.map → postgres-AV45GNRS.js.map} +0 -0
- /package/dist/{r2-C4XGEWQY.js.map → qingstor-W277YA4K.js.map} +0 -0
- /package/dist/{redis-6D55Q2WB.js.map → r2-FUA4IORE.js.map} +0 -0
- /package/dist/{s3-XQBI2CXN.js.map → redis-LPS357NF.js.map} +0 -0
- /package/dist/{scaleway-SEZJVURB.js.map → s3-FPNWWIVM.js.map} +0 -0
- /package/dist/{seaweedfs-3XYIAFU2.js.map → scaleway-BP3732U7.js.map} +0 -0
- /package/dist/{slack-ZHXDJQY4.js.map → seaweedfs-MC6HIEP4.js.map} +0 -0
- /package/dist/{ssh-X2MO7JOV.js.map → slack-JFGW7VLN.js.map} +0 -0
- /package/dist/{supabase-BBM44UTM.js.map → ssh-UYPG42LM.js.map} +0 -0
- /package/dist/{tencent-X72USLJ7.js.map → supabase-A3KUFMDC.js.map} +0 -0
- /package/dist/{trello-EER5NG7L.js.map → tencent-5464UQ2X.js.map} +0 -0
- /package/dist/{wasabi-O4MVIUFG.js.map → trello-O2KB3FUO.js.map} +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// src/resource/s3_alias.ts
|
|
2
|
+
import {
|
|
3
|
+
normalizeFields,
|
|
4
|
+
redactConfigWithSchema,
|
|
5
|
+
secretStr,
|
|
6
|
+
z
|
|
7
|
+
} from "@struktoai/mirage-core";
|
|
8
|
+
var RENAME = {
|
|
9
|
+
access_key_id: "accessKeyId",
|
|
10
|
+
secret_access_key: "secretAccessKey",
|
|
11
|
+
session_token: "sessionToken",
|
|
12
|
+
aws_profile: "profile",
|
|
13
|
+
endpoint_url: "endpoint",
|
|
14
|
+
path_style: "forcePathStyle",
|
|
15
|
+
key_prefix: "keyPrefix",
|
|
16
|
+
timeout: "timeoutMs"
|
|
17
|
+
};
|
|
18
|
+
var TRANSFORM = {
|
|
19
|
+
timeout: (v) => typeof v === "number" ? v * 1e3 : v
|
|
20
|
+
};
|
|
21
|
+
var ALIAS_SCHEMA = z.object({
|
|
22
|
+
bucket: z.string(),
|
|
23
|
+
accessKeyId: secretStr().optional(),
|
|
24
|
+
secretAccessKey: secretStr().optional(),
|
|
25
|
+
sessionToken: secretStr().optional(),
|
|
26
|
+
profile: z.string().optional(),
|
|
27
|
+
region: z.string(),
|
|
28
|
+
endpoint: z.string(),
|
|
29
|
+
forcePathStyle: z.boolean().optional(),
|
|
30
|
+
keyPrefix: z.string().optional(),
|
|
31
|
+
timeoutMs: z.number().optional(),
|
|
32
|
+
proxy: secretStr().optional()
|
|
33
|
+
});
|
|
34
|
+
var optional = (config) => ({
|
|
35
|
+
...config.sessionToken !== void 0 ? { sessionToken: config.sessionToken } : {},
|
|
36
|
+
...config.profile !== void 0 ? { profile: config.profile } : {},
|
|
37
|
+
...config.keyPrefix !== void 0 ? { keyPrefix: config.keyPrefix } : {},
|
|
38
|
+
...config.timeoutMs !== void 0 ? { timeoutMs: config.timeoutMs } : {},
|
|
39
|
+
...config.proxy !== void 0 ? { proxy: config.proxy } : {}
|
|
40
|
+
});
|
|
41
|
+
function makeRegionAlias(endpointFor) {
|
|
42
|
+
const resolvedEndpoint = (config) => config.endpoint !== void 0 && config.endpoint !== "" ? config.endpoint : endpointFor(config);
|
|
43
|
+
return {
|
|
44
|
+
resolvedEndpoint,
|
|
45
|
+
toS3Config: (config) => ({
|
|
46
|
+
bucket: config.bucket,
|
|
47
|
+
region: config.region,
|
|
48
|
+
endpoint: resolvedEndpoint(config),
|
|
49
|
+
...config.accessKeyId !== void 0 ? { accessKeyId: config.accessKeyId } : {},
|
|
50
|
+
...config.secretAccessKey !== void 0 ? { secretAccessKey: config.secretAccessKey } : {},
|
|
51
|
+
...config.forcePathStyle !== void 0 ? { forcePathStyle: config.forcePathStyle } : {},
|
|
52
|
+
...optional(config)
|
|
53
|
+
}),
|
|
54
|
+
redact: (config) => redactConfigWithSchema(ALIAS_SCHEMA, {
|
|
55
|
+
...config,
|
|
56
|
+
endpoint: resolvedEndpoint(config)
|
|
57
|
+
}),
|
|
58
|
+
normalize: (input) => normalizeFields(input, { rename: RENAME, transform: TRANSFORM })
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function makeFixedAlias() {
|
|
62
|
+
const region = (config) => config.region ?? "us-east-1";
|
|
63
|
+
const pathStyle = (config) => config.forcePathStyle ?? true;
|
|
64
|
+
return {
|
|
65
|
+
toS3Config: (config) => ({
|
|
66
|
+
bucket: config.bucket,
|
|
67
|
+
region: region(config),
|
|
68
|
+
endpoint: config.endpoint,
|
|
69
|
+
...config.accessKeyId !== void 0 ? { accessKeyId: config.accessKeyId } : {},
|
|
70
|
+
...config.secretAccessKey !== void 0 ? { secretAccessKey: config.secretAccessKey } : {},
|
|
71
|
+
forcePathStyle: pathStyle(config),
|
|
72
|
+
...optional(config)
|
|
73
|
+
}),
|
|
74
|
+
redact: (config) => redactConfigWithSchema(ALIAS_SCHEMA, {
|
|
75
|
+
...config,
|
|
76
|
+
region: region(config),
|
|
77
|
+
forcePathStyle: pathStyle(config)
|
|
78
|
+
}),
|
|
79
|
+
normalize: (input) => normalizeFields(input, { rename: RENAME, transform: TRANSFORM })
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export {
|
|
84
|
+
makeRegionAlias,
|
|
85
|
+
makeFixedAlias
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=chunk-7ZP6TPHX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/s3_alias.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n type ConfigOf,\n normalizeFields,\n redactConfigWithSchema,\n type RedactedConfig,\n secretStr,\n z,\n} from '@struktoai/mirage-core'\nimport type { S3Config } from './s3/config.ts'\n\n/**\n * Shared shape for the S3-compatible providers.\n *\n * Every alias is the same credentials plus one endpoint rule, so the\n * fields, the zod schema that drives redaction, the snake_case mapping and\n * the conversion to S3Config live here once. A provider declares only its\n * endpoint rule and whatever it genuinely adds. Mirrors Python's\n * `mirage/resource/s3_alias.py`.\n *\n * Only `bucket` and whatever the endpoint genuinely needs are required.\n * Credentials are optional because `S3Config` leaves them optional too, so\n * omitting them falls through to the usual AWS resolution order: `profile`,\n * then the `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` environment\n * variables, then the shared credentials file, then an instance role.\n * `sessionToken` and `profile` live here rather than on the one provider\n * that first needed them, so every alias accepts them.\n */\nexport interface S3AliasConfig {\n bucket: string\n accessKeyId?: string\n secretAccessKey?: string\n sessionToken?: string\n profile?: string\n region?: string\n endpoint?: string\n forcePathStyle?: boolean\n keyPrefix?: string\n timeoutMs?: number\n proxy?: string\n}\n\n// Every provider accepts the same snake_case spelling of its fields, and\n// Python states timeouts in seconds where TypeScript uses milliseconds.\nconst RENAME: Record<string, string> = {\n access_key_id: 'accessKeyId',\n secret_access_key: 'secretAccessKey',\n session_token: 'sessionToken',\n aws_profile: 'profile',\n endpoint_url: 'endpoint',\n path_style: 'forcePathStyle',\n key_prefix: 'keyPrefix',\n timeout: 'timeoutMs',\n}\n\nconst TRANSFORM = {\n timeout: (v: unknown): unknown => (typeof v === 'number' ? v * 1000 : v),\n}\n\nconst ALIAS_SCHEMA = z.object({\n bucket: z.string(),\n accessKeyId: secretStr().optional(),\n secretAccessKey: secretStr().optional(),\n sessionToken: secretStr().optional(),\n profile: z.string().optional(),\n region: z.string(),\n endpoint: z.string(),\n forcePathStyle: z.boolean().optional(),\n keyPrefix: z.string().optional(),\n timeoutMs: z.number().optional(),\n proxy: secretStr().optional(),\n})\n\n// Only the redacted twin derives: the schema is the resolved shape, with\n// the region and endpoint each provider's rule fills in.\nexport type S3AliasConfigRedacted = RedactedConfig<\n ConfigOf<typeof ALIAS_SCHEMA>,\n 'accessKeyId' | 'secretAccessKey' | 'sessionToken' | 'proxy'\n>\n\nexport interface Alias<C extends S3AliasConfig, R> {\n toS3Config: (config: C) => S3Config\n redact: (config: C) => R\n normalize: (input: Record<string, unknown>) => C\n}\n\nconst optional = (config: S3AliasConfig): Partial<S3Config> => ({\n ...(config.sessionToken !== undefined ? { sessionToken: config.sessionToken } : {}),\n ...(config.profile !== undefined ? { profile: config.profile } : {}),\n ...(config.keyPrefix !== undefined ? { keyPrefix: config.keyPrefix } : {}),\n ...(config.timeoutMs !== undefined ? { timeoutMs: config.timeoutMs } : {}),\n ...(config.proxy !== undefined ? { proxy: config.proxy } : {}),\n})\n\n/**\n * A provider whose endpoint is derived from its (required) region.\n *\n * `forcePathStyle` stays absent from the S3Config when the caller did not\n * ask for it, which is what the hand-written providers did and what the\n * S3 client treats as virtual-hosted style.\n */\nexport function makeRegionAlias<C extends S3AliasConfig & { region: string }, R>(\n endpointFor: (config: C) => string,\n): Alias<C, R> & { resolvedEndpoint: (config: C) => string } {\n const resolvedEndpoint = (config: C): string =>\n config.endpoint !== undefined && config.endpoint !== '' ? config.endpoint : endpointFor(config)\n return {\n resolvedEndpoint,\n toS3Config: (config) => ({\n bucket: config.bucket,\n region: config.region,\n endpoint: resolvedEndpoint(config),\n ...(config.accessKeyId !== undefined ? { accessKeyId: config.accessKeyId } : {}),\n ...(config.secretAccessKey !== undefined ? { secretAccessKey: config.secretAccessKey } : {}),\n ...(config.forcePathStyle !== undefined ? { forcePathStyle: config.forcePathStyle } : {}),\n ...optional(config),\n }),\n redact: (config) =>\n redactConfigWithSchema(ALIAS_SCHEMA, {\n ...config,\n endpoint: resolvedEndpoint(config),\n }) as unknown as R,\n normalize: (input) =>\n normalizeFields(input, { rename: RENAME, transform: TRANSFORM }) as unknown as C,\n }\n}\n\n/**\n * A self-hosted gateway reachable only at a caller-supplied endpoint.\n *\n * ceph, minio and seaweedfs have no public region to derive from, so the\n * region and path-style defaults are materialized rather than omitted.\n */\nexport function makeFixedAlias<C extends S3AliasConfig & { endpoint: string }, R>(): Alias<C, R> {\n const region = (config: C): string => config.region ?? 'us-east-1'\n const pathStyle = (config: C): boolean => config.forcePathStyle ?? true\n return {\n toS3Config: (config) => ({\n bucket: config.bucket,\n region: region(config),\n endpoint: config.endpoint,\n ...(config.accessKeyId !== undefined ? { accessKeyId: config.accessKeyId } : {}),\n ...(config.secretAccessKey !== undefined ? { secretAccessKey: config.secretAccessKey } : {}),\n forcePathStyle: pathStyle(config),\n ...optional(config),\n }),\n redact: (config) =>\n redactConfigWithSchema(ALIAS_SCHEMA, {\n ...config,\n region: region(config),\n forcePathStyle: pathStyle(config),\n }) as unknown as R,\n normalize: (input) =>\n normalizeFields(input, { rename: RENAME, transform: TRANSFORM }) as unknown as C,\n }\n}\n"],"mappings":";AAcA;AAAA,EAEE;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAoCP,IAAM,SAAiC;AAAA,EACrC,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,SAAS;AACX;AAEA,IAAM,YAAY;AAAA,EAChB,SAAS,CAAC,MAAyB,OAAO,MAAM,WAAW,IAAI,MAAO;AACxE;AAEA,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,QAAQ,EAAE,OAAO;AAAA,EACjB,aAAa,UAAU,EAAE,SAAS;AAAA,EAClC,iBAAiB,UAAU,EAAE,SAAS;AAAA,EACtC,cAAc,UAAU,EAAE,SAAS;AAAA,EACnC,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,QAAQ,EAAE,OAAO;AAAA,EACjB,UAAU,EAAE,OAAO;AAAA,EACnB,gBAAgB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAO,UAAU,EAAE,SAAS;AAC9B,CAAC;AAeD,IAAM,WAAW,CAAC,YAA8C;AAAA,EAC9D,GAAI,OAAO,iBAAiB,SAAY,EAAE,cAAc,OAAO,aAAa,IAAI,CAAC;AAAA,EACjF,GAAI,OAAO,YAAY,SAAY,EAAE,SAAS,OAAO,QAAQ,IAAI,CAAC;AAAA,EAClE,GAAI,OAAO,cAAc,SAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,EACxE,GAAI,OAAO,cAAc,SAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,EACxE,GAAI,OAAO,UAAU,SAAY,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAC9D;AASO,SAAS,gBACd,aAC2D;AAC3D,QAAM,mBAAmB,CAAC,WACxB,OAAO,aAAa,UAAa,OAAO,aAAa,KAAK,OAAO,WAAW,YAAY,MAAM;AAChG,SAAO;AAAA,IACL;AAAA,IACA,YAAY,CAAC,YAAY;AAAA,MACvB,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO;AAAA,MACf,UAAU,iBAAiB,MAAM;AAAA,MACjC,GAAI,OAAO,gBAAgB,SAAY,EAAE,aAAa,OAAO,YAAY,IAAI,CAAC;AAAA,MAC9E,GAAI,OAAO,oBAAoB,SAAY,EAAE,iBAAiB,OAAO,gBAAgB,IAAI,CAAC;AAAA,MAC1F,GAAI,OAAO,mBAAmB,SAAY,EAAE,gBAAgB,OAAO,eAAe,IAAI,CAAC;AAAA,MACvF,GAAG,SAAS,MAAM;AAAA,IACpB;AAAA,IACA,QAAQ,CAAC,WACP,uBAAuB,cAAc;AAAA,MACnC,GAAG;AAAA,MACH,UAAU,iBAAiB,MAAM;AAAA,IACnC,CAAC;AAAA,IACH,WAAW,CAAC,UACV,gBAAgB,OAAO,EAAE,QAAQ,QAAQ,WAAW,UAAU,CAAC;AAAA,EACnE;AACF;AAQO,SAAS,iBAAiF;AAC/F,QAAM,SAAS,CAAC,WAAsB,OAAO,UAAU;AACvD,QAAM,YAAY,CAAC,WAAuB,OAAO,kBAAkB;AACnE,SAAO;AAAA,IACL,YAAY,CAAC,YAAY;AAAA,MACvB,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO,MAAM;AAAA,MACrB,UAAU,OAAO;AAAA,MACjB,GAAI,OAAO,gBAAgB,SAAY,EAAE,aAAa,OAAO,YAAY,IAAI,CAAC;AAAA,MAC9E,GAAI,OAAO,oBAAoB,SAAY,EAAE,iBAAiB,OAAO,gBAAgB,IAAI,CAAC;AAAA,MAC1F,gBAAgB,UAAU,MAAM;AAAA,MAChC,GAAG,SAAS,MAAM;AAAA,IACpB;AAAA,IACA,QAAQ,CAAC,WACP,uBAAuB,cAAc;AAAA,MACnC,GAAG;AAAA,MACH,QAAQ,OAAO,MAAM;AAAA,MACrB,gBAAgB,UAAU,MAAM;AAAA,IAClC,CAAC;AAAA,IACH,WAAW,CAAC,UACV,gBAAgB,OAAO,EAAE,QAAQ,QAAQ,WAAW,UAAU,CAAC;AAAA,EACnE;AACF;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
redactDropboxConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DCDBIXVZ.js";
|
|
4
4
|
|
|
5
5
|
// src/resource/dropbox/dropbox.ts
|
|
6
6
|
import {
|
|
@@ -23,6 +23,9 @@ var dropboxResolveGlob = makeResolveGlob(dropboxReaddir);
|
|
|
23
23
|
var DropboxResource = class extends BaseResource {
|
|
24
24
|
kind = ResourceName.DROPBOX;
|
|
25
25
|
cachesReads = true;
|
|
26
|
+
// list_folder carries an exact byte `size` for every file (0 included).
|
|
27
|
+
// Paper docs 409 on raw download, a loud error, never a silent empty read.
|
|
28
|
+
sizesAlwaysKnown = true;
|
|
26
29
|
indexTtl = 86400;
|
|
27
30
|
prompt = DROPBOX_PROMPT;
|
|
28
31
|
config;
|
|
@@ -30,13 +33,7 @@ var DropboxResource = class extends BaseResource {
|
|
|
30
33
|
constructor(config) {
|
|
31
34
|
super();
|
|
32
35
|
this.config = config;
|
|
33
|
-
const tm = new DropboxTokenManager(
|
|
34
|
-
clientId: config.clientId,
|
|
35
|
-
clientSecret: config.clientSecret,
|
|
36
|
-
refreshToken: config.refreshToken,
|
|
37
|
-
...config.endpoint !== void 0 ? { endpoint: config.endpoint } : {},
|
|
38
|
-
...config.refreshFn !== void 0 ? { refreshFn: config.refreshFn } : {}
|
|
39
|
-
});
|
|
36
|
+
const tm = new DropboxTokenManager(config);
|
|
40
37
|
this.accessor = new DropboxAccessor({
|
|
41
38
|
tokenManager: tm,
|
|
42
39
|
...config.rootPath !== void 0 ? { rootPath: config.rootPath } : {},
|
|
@@ -46,9 +43,6 @@ var DropboxResource = class extends BaseResource {
|
|
|
46
43
|
open() {
|
|
47
44
|
return Promise.resolve();
|
|
48
45
|
}
|
|
49
|
-
close() {
|
|
50
|
-
return Promise.resolve();
|
|
51
|
-
}
|
|
52
46
|
commands() {
|
|
53
47
|
return DROPBOX_COMMANDS;
|
|
54
48
|
}
|
|
@@ -90,4 +84,4 @@ var DropboxResource = class extends BaseResource {
|
|
|
90
84
|
export {
|
|
91
85
|
DropboxResource
|
|
92
86
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
87
|
+
//# sourceMappingURL=chunk-ADEXNSYU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/dropbox/dropbox.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n BaseResource,\n DROPBOX_COMMANDS,\n DROPBOX_PROMPT,\n DROPBOX_OPS,\n DropboxAccessor,\n DropboxTokenManager,\n PathSpec,\n ResourceName,\n dropboxRead,\n dropboxReaddir,\n makeResolveGlob,\n dropboxStat,\n mountKey,\n mountPrefixOf,\n type FileStat,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n} from '@struktoai/mirage-core'\nimport { redactDropboxConfig, type DropboxConfig, type DropboxConfigRedacted } from './config.ts'\n\nconst dropboxResolveGlob = makeResolveGlob(dropboxReaddir)\n\nexport interface DropboxResourceState {\n type: string\n config: DropboxConfigRedacted\n}\n\nexport class DropboxResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.DROPBOX\n readonly cachesReads: boolean = true\n // list_folder carries an exact byte `size` for every file (0 included).\n // Paper docs 409 on raw download, a loud error, never a silent empty read.\n readonly sizesAlwaysKnown: boolean = true\n override readonly indexTtl: number = 86_400\n readonly prompt: string = DROPBOX_PROMPT\n readonly config: DropboxConfig\n readonly accessor: DropboxAccessor\n\n constructor(config: DropboxConfig) {\n super()\n this.config = config\n const tm = new DropboxTokenManager(config)\n this.accessor = new DropboxAccessor({\n tokenManager: tm,\n ...(config.rootPath !== undefined ? { rootPath: config.rootPath } : {}),\n ...(config.contentSearch !== undefined ? { contentSearch: config.contentSearch } : {}),\n })\n }\n\n open(): Promise<void> {\n return Promise.resolve()\n }\n\n commands(): readonly RegisteredCommand[] {\n return DROPBOX_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return DROPBOX_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return dropboxRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return dropboxReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return dropboxStat(this.accessor, p, this.index)\n }\n\n glob(paths: readonly PathSpec[], prefix = ''): Promise<PathSpec[]> {\n const effective =\n prefix !== ''\n ? paths.map((p) =>\n mountPrefixOf(p.virtual, p.resourcePath) !== ''\n ? p\n : new PathSpec({\n virtual: p.virtual,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n resourcePath: mountKey(p.virtual, prefix),\n }),\n )\n : paths\n return dropboxResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<DropboxResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactDropboxConfig(this.config),\n })\n }\n\n loadState(_state: DropboxResourceState): Promise<void> {\n return Promise.resolve()\n }\n}\n"],"mappings":";;;;;AAcA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AAGP,IAAM,qBAAqB,gBAAgB,cAAc;AAOlD,IAAM,kBAAN,cAA8B,aAAiC;AAAA,EAC3D,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA;AAAA;AAAA,EAGvB,mBAA4B;AAAA,EACnB,WAAmB;AAAA,EAC5B,SAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EAET,YAAY,QAAuB;AACjC,UAAM;AACN,SAAK,SAAS;AACd,UAAM,KAAK,IAAI,oBAAoB,MAAM;AACzC,SAAK,WAAW,IAAI,gBAAgB;AAAA,MAClC,cAAc;AAAA,MACd,GAAI,OAAO,aAAa,SAAY,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;AAAA,MACrE,GAAI,OAAO,kBAAkB,SAAY,EAAE,eAAe,OAAO,cAAc,IAAI,CAAC;AAAA,IACtF,CAAC;AAAA,EACH;AAAA,EAEA,OAAsB;AACpB,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAEA,WAAyC;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,MAA+B;AAC7B,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,GAAkC;AACzC,WAAO,YAAY,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACjD;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,eAAe,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACpD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,YAAY,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACjD;AAAA,EAEA,KAAK,OAA4B,SAAS,IAAyB;AACjE,UAAM,YACJ,WAAW,KACP,MAAM;AAAA,MAAI,CAAC,MACT,cAAc,EAAE,SAAS,EAAE,YAAY,MAAM,KACzC,IACA,IAAI,SAAS;AAAA,QACX,SAAS,EAAE;AAAA,QACX,WAAW,EAAE;AAAA,QACb,GAAI,EAAE,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QACnD,UAAU,EAAE;AAAA,QACZ,cAAc,SAAS,EAAE,SAAS,MAAM;AAAA,MAC1C,CAAC;AAAA,IACP,IACA;AACN,WAAO,mBAAmB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAChE;AAAA,EAEA,WAA0C;AACxC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,oBAAoB,KAAK,MAAM;AAAA,IACzC,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA6C;AACrD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeFixedAlias
|
|
3
|
+
} from "./chunk-7ZP6TPHX.js";
|
|
4
|
+
|
|
5
|
+
// src/resource/seaweedfs/config.ts
|
|
6
|
+
var alias = makeFixedAlias();
|
|
7
|
+
var seaweedfsToS3Config = alias.toS3Config;
|
|
8
|
+
var redactSeaweedFSConfig = alias.redact;
|
|
9
|
+
var normalizeSeaweedFSConfig = alias.normalize;
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
seaweedfsToS3Config,
|
|
13
|
+
redactSeaweedFSConfig,
|
|
14
|
+
normalizeSeaweedFSConfig
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chunk-AQSYAXL4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/seaweedfs/config.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { makeFixedAlias, type S3AliasConfig, type S3AliasConfigRedacted } from '../s3_alias.ts'\n\nexport interface SeaweedFSConfig extends S3AliasConfig {\n endpoint: string\n}\n\nexport type SeaweedFSConfigRedacted = S3AliasConfigRedacted\n\nconst alias = makeFixedAlias<SeaweedFSConfig, SeaweedFSConfigRedacted>()\n\nexport const seaweedfsToS3Config = alias.toS3Config\nexport const redactSeaweedFSConfig = alias.redact\nexport const normalizeSeaweedFSConfig = alias.normalize\n"],"mappings":";;;;;AAsBA,IAAM,QAAQ,eAAyD;AAEhE,IAAM,sBAAsB,MAAM;AAClC,IAAM,wBAAwB,MAAM;AACpC,IAAM,2BAA2B,MAAM;","names":[]}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
// src/resource/trello/config.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
normalizeFields,
|
|
4
|
+
redactConfigWithSchema,
|
|
5
|
+
secretStr,
|
|
6
|
+
z
|
|
7
|
+
} from "@struktoai/mirage-core";
|
|
3
8
|
var TrelloConfigSchema = z.object({
|
|
4
9
|
apiKey: secretStr(),
|
|
5
10
|
apiToken: secretStr(),
|
|
6
11
|
workspaceId: z.string().optional(),
|
|
7
|
-
boardIds: z.array(z.string()).optional(),
|
|
12
|
+
boardIds: z.array(z.string()).readonly().optional(),
|
|
8
13
|
baseUrl: z.string().optional()
|
|
9
14
|
});
|
|
10
15
|
function redactTrelloConfig(config) {
|
|
@@ -26,4 +31,4 @@ export {
|
|
|
26
31
|
redactTrelloConfig,
|
|
27
32
|
normalizeTrelloConfig
|
|
28
33
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
34
|
+
//# sourceMappingURL=chunk-ATLXMNKD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/trello/config.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n normalizeFields,\n redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretStr,\n z,\n} from '@struktoai/mirage-core'\n\nconst TrelloConfigSchema = z.object({\n apiKey: secretStr(),\n apiToken: secretStr(),\n workspaceId: z.string().optional(),\n boardIds: z.array(z.string()).readonly().optional(),\n baseUrl: z.string().optional(),\n})\n\nexport type TrelloConfig = ConfigOf<typeof TrelloConfigSchema>\n\nexport type TrelloConfigRedacted = RedactedConfig<TrelloConfig, 'apiKey' | 'apiToken'>\n\nexport function redactTrelloConfig(config: TrelloConfig): TrelloConfigRedacted {\n return redactConfigWithSchema(TrelloConfigSchema, config) as unknown as TrelloConfigRedacted\n}\n\nexport function normalizeTrelloConfig(input: Record<string, unknown>): TrelloConfig {\n return normalizeFields(input, {\n rename: {\n api_key: 'apiKey',\n api_token: 'apiToken',\n workspace_id: 'workspaceId',\n board_ids: 'boardIds',\n base_url: 'baseUrl',\n },\n }) as unknown as TrelloConfig\n}\n"],"mappings":";AAcA;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAEP,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,QAAQ,UAAU;AAAA,EAClB,UAAU,UAAU;AAAA,EACpB,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EAClD,SAAS,EAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAMM,SAAS,mBAAmB,QAA4C;AAC7E,SAAO,uBAAuB,oBAAoB,MAAM;AAC1D;AAEO,SAAS,sBAAsB,OAA8C;AAClF,SAAO,gBAAgB,OAAO;AAAA,IAC5B,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,cAAc;AAAA,MACd,WAAW;AAAA,MACX,UAAU;AAAA,IACZ;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -24,6 +24,10 @@ var gmailResolveGlob = makeResolveGlob(gmailReaddir);
|
|
|
24
24
|
var GmailResource = class extends BaseResource {
|
|
25
25
|
kind = ResourceName.GMAIL;
|
|
26
26
|
cachesReads = true;
|
|
27
|
+
// Every listed file carries an exact size: .gmail.json is rendered at
|
|
28
|
+
// readdir from the full message the listing already fetched, and
|
|
29
|
+
// attachments carry the decoded byte count.
|
|
30
|
+
sizesAlwaysKnown = true;
|
|
27
31
|
indexTtl = 86400;
|
|
28
32
|
prompt = GMAIL_PROMPT;
|
|
29
33
|
writePrompt = GMAIL_WRITE_PROMPT;
|
|
@@ -38,9 +42,6 @@ var GmailResource = class extends BaseResource {
|
|
|
38
42
|
open() {
|
|
39
43
|
return Promise.resolve();
|
|
40
44
|
}
|
|
41
|
-
close() {
|
|
42
|
-
return Promise.resolve();
|
|
43
|
-
}
|
|
44
45
|
commands() {
|
|
45
46
|
return GMAIL_COMMANDS;
|
|
46
47
|
}
|
|
@@ -82,4 +83,4 @@ var GmailResource = class extends BaseResource {
|
|
|
82
83
|
export {
|
|
83
84
|
GmailResource
|
|
84
85
|
};
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-BYCUGFRF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/gmail/gmail.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n BaseResource,\n GMAIL_COMMANDS,\n GMAIL_PROMPT,\n GMAIL_OPS,\n GMAIL_WRITE_PROMPT,\n GmailAccessor,\n PathSpec,\n ResourceName,\n TokenManager,\n gmailRead,\n gmailReaddir,\n makeResolveGlob,\n gmailStat,\n mountKey,\n mountPrefixOf,\n type FileStat,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n} from '@struktoai/mirage-core'\nimport { redactGmailConfig, type GmailConfig, type GmailConfigRedacted } from './config.ts'\n\nconst gmailResolveGlob = makeResolveGlob(gmailReaddir)\n\nexport interface GmailResourceState {\n type: string\n config: GmailConfigRedacted\n}\n\nexport class GmailResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.GMAIL\n readonly cachesReads: boolean = true\n // Every listed file carries an exact size: .gmail.json is rendered at\n // readdir from the full message the listing already fetched, and\n // attachments carry the decoded byte count.\n readonly sizesAlwaysKnown: boolean = true\n override readonly indexTtl: number = 86_400\n readonly prompt: string = GMAIL_PROMPT\n readonly writePrompt: string = GMAIL_WRITE_PROMPT\n readonly config: GmailConfig\n readonly accessor: GmailAccessor\n\n constructor(config: GmailConfig) {\n super()\n this.config = config\n const tm = new TokenManager(config)\n this.accessor = new GmailAccessor({ tokenManager: tm })\n }\n\n open(): Promise<void> {\n return Promise.resolve()\n }\n\n commands(): readonly RegisteredCommand[] {\n return GMAIL_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return GMAIL_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return gmailRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return gmailReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return gmailStat(this.accessor, p, this.index)\n }\n\n glob(paths: readonly PathSpec[], prefix = ''): Promise<PathSpec[]> {\n const effective =\n prefix !== ''\n ? paths.map((p) =>\n mountPrefixOf(p.virtual, p.resourcePath) !== ''\n ? p\n : new PathSpec({\n virtual: p.virtual,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n resourcePath: mountKey(p.virtual, prefix),\n }),\n )\n : paths\n return gmailResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<GmailResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactGmailConfig(this.config),\n })\n }\n\n loadState(_state: GmailResourceState): Promise<void> {\n return Promise.resolve()\n }\n}\n"],"mappings":";;;;;AAcA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AAGP,IAAM,mBAAmB,gBAAgB,YAAY;AAO9C,IAAM,gBAAN,cAA4B,aAAiC;AAAA,EACzD,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA;AAAA;AAAA;AAAA,EAIvB,mBAA4B;AAAA,EACnB,WAAmB;AAAA,EAC5B,SAAiB;AAAA,EACjB,cAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EAET,YAAY,QAAqB;AAC/B,UAAM;AACN,SAAK,SAAS;AACd,UAAM,KAAK,IAAI,aAAa,MAAM;AAClC,SAAK,WAAW,IAAI,cAAc,EAAE,cAAc,GAAG,CAAC;AAAA,EACxD;AAAA,EAEA,OAAsB;AACpB,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAEA,WAAyC;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,MAA+B;AAC7B,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,GAAkC;AACzC,WAAO,UAAU,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAC/C;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,aAAa,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAClD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,UAAU,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAC/C;AAAA,EAEA,KAAK,OAA4B,SAAS,IAAyB;AACjE,UAAM,YACJ,WAAW,KACP,MAAM;AAAA,MAAI,CAAC,MACT,cAAc,EAAE,SAAS,EAAE,YAAY,MAAM,KACzC,IACA,IAAI,SAAS;AAAA,QACX,SAAS,EAAE;AAAA,QACX,WAAW,EAAE;AAAA,QACb,GAAI,EAAE,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QACnD,UAAU,EAAE;AAAA,QACZ,cAAc,SAAS,EAAE,SAAS,MAAM;AAAA,MAC1C,CAAC;AAAA,IACP,IACA;AACN,WAAO,iBAAiB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAC9D;AAAA,EAEA,WAAwC;AACtC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,mBAAkB,KAAK,MAAM;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA2C;AACnD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
HfBucketsAccessor,
|
|
3
3
|
HfResource
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DDAFNROK.js";
|
|
5
5
|
import {
|
|
6
6
|
assertHfRepoId,
|
|
7
7
|
redactHfBucketsConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-QAOVABCR.js";
|
|
9
9
|
|
|
10
10
|
// src/resource/hf_buckets/hf_buckets.ts
|
|
11
11
|
import { normalizeKeyPrefix, ResourceName } from "@struktoai/mirage-core";
|
|
@@ -47,4 +47,4 @@ export {
|
|
|
47
47
|
HF_BUCKETS_PROMPT,
|
|
48
48
|
HfBucketsResource
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=chunk-
|
|
50
|
+
//# sourceMappingURL=chunk-BZTVYOES.js.map
|
|
@@ -1,17 +1,29 @@
|
|
|
1
|
-
// src/
|
|
2
|
-
import {
|
|
1
|
+
// src/core/email/config.ts
|
|
2
|
+
import {
|
|
3
|
+
normalizeFields,
|
|
4
|
+
redactConfigWithSchema,
|
|
5
|
+
secretStr,
|
|
6
|
+
z
|
|
7
|
+
} from "@struktoai/mirage-core";
|
|
3
8
|
function asString(v) {
|
|
4
9
|
return typeof v === "string" ? v : "";
|
|
5
10
|
}
|
|
6
11
|
var EmailConfigSchema = z.object({
|
|
7
12
|
imapHost: z.string(),
|
|
8
|
-
imapPort: z.number(),
|
|
13
|
+
imapPort: z.number().default(993),
|
|
9
14
|
smtpHost: z.string(),
|
|
10
|
-
smtpPort: z.number(),
|
|
15
|
+
smtpPort: z.number().default(587),
|
|
11
16
|
username: z.string(),
|
|
12
17
|
password: secretStr(),
|
|
13
|
-
useSsl: z.boolean(),
|
|
14
|
-
maxMessages: z.number()
|
|
18
|
+
useSsl: z.boolean().default(true),
|
|
19
|
+
maxMessages: z.number().default(200),
|
|
20
|
+
/**
|
|
21
|
+
* Upstream himalaya's message.send.save-copy, whose default is true
|
|
22
|
+
* since pimalaya/himalaya#536.
|
|
23
|
+
*/
|
|
24
|
+
saveCopy: z.boolean().default(true),
|
|
25
|
+
/** Its folder.alias.sent: null means ask the server for its \Sent mailbox. */
|
|
26
|
+
sentFolder: z.string().nullable().default(null)
|
|
15
27
|
});
|
|
16
28
|
function redactEmailConfig(config) {
|
|
17
29
|
return redactConfigWithSchema(EmailConfigSchema, config);
|
|
@@ -25,7 +37,9 @@ function buildEmailConfig(input) {
|
|
|
25
37
|
username: input.username,
|
|
26
38
|
password: input.password,
|
|
27
39
|
useSsl: input.useSsl ?? true,
|
|
28
|
-
maxMessages: input.maxMessages ?? 200
|
|
40
|
+
maxMessages: input.maxMessages ?? 200,
|
|
41
|
+
saveCopy: input.saveCopy ?? true,
|
|
42
|
+
sentFolder: input.sentFolder ?? null
|
|
29
43
|
};
|
|
30
44
|
}
|
|
31
45
|
function normalizeEmailConfig(input) {
|
|
@@ -36,7 +50,9 @@ function normalizeEmailConfig(input) {
|
|
|
36
50
|
smtp_host: "smtpHost",
|
|
37
51
|
smtp_port: "smtpPort",
|
|
38
52
|
use_ssl: "useSsl",
|
|
39
|
-
max_messages: "maxMessages"
|
|
53
|
+
max_messages: "maxMessages",
|
|
54
|
+
save_copy: "saveCopy",
|
|
55
|
+
sent_folder: "sentFolder"
|
|
40
56
|
}
|
|
41
57
|
});
|
|
42
58
|
const built = {
|
|
@@ -49,12 +65,15 @@ function normalizeEmailConfig(input) {
|
|
|
49
65
|
if (typeof norm.smtpPort === "number") built.smtpPort = norm.smtpPort;
|
|
50
66
|
if (typeof norm.useSsl === "boolean") built.useSsl = norm.useSsl;
|
|
51
67
|
if (typeof norm.maxMessages === "number") built.maxMessages = norm.maxMessages;
|
|
68
|
+
if (typeof norm.saveCopy === "boolean") built.saveCopy = norm.saveCopy;
|
|
69
|
+
if (typeof norm.sentFolder === "string") built.sentFolder = norm.sentFolder;
|
|
52
70
|
return buildEmailConfig(built);
|
|
53
71
|
}
|
|
54
72
|
|
|
55
73
|
export {
|
|
74
|
+
EmailConfigSchema,
|
|
56
75
|
redactEmailConfig,
|
|
57
76
|
buildEmailConfig,
|
|
58
77
|
normalizeEmailConfig
|
|
59
78
|
};
|
|
60
|
-
//# sourceMappingURL=chunk-
|
|
79
|
+
//# sourceMappingURL=chunk-CRC4YWXB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/email/config.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n type ConfigOf,\n normalizeFields,\n redactConfigWithSchema,\n type RedactedConfig,\n secretStr,\n z,\n} from '@struktoai/mirage-core'\n\nfunction asString(v: unknown): string {\n return typeof v === 'string' ? v : ''\n}\n\n// Doubles as the himalaya CLI's configModel: parse applies the same\n// defaults buildEmailConfig fills in, and secretStr marks the password\n// for snapshot redaction.\nexport const EmailConfigSchema = z.object({\n imapHost: z.string(),\n imapPort: z.number().default(993),\n smtpHost: z.string(),\n smtpPort: z.number().default(587),\n username: z.string(),\n password: secretStr(),\n useSsl: z.boolean().default(true),\n maxMessages: z.number().default(200),\n /**\n * Upstream himalaya's message.send.save-copy, whose default is true\n * since pimalaya/himalaya#536.\n */\n saveCopy: z.boolean().default(true),\n /** Its folder.alias.sent: null means ask the server for its \\Sent mailbox. */\n sentFolder: z.string().nullable().default(null),\n})\n\nexport type EmailConfig = ConfigOf<typeof EmailConfigSchema>\n\nexport type EmailConfigRedacted = RedactedConfig<EmailConfig, 'password'>\n\nexport function redactEmailConfig(config: EmailConfig): EmailConfigRedacted {\n return redactConfigWithSchema(EmailConfigSchema, config) as unknown as EmailConfigRedacted\n}\n\n// What a caller writes, which is the schema before its defaults land.\nexport type EmailConfigInput = z.input<typeof EmailConfigSchema>\n\nexport function buildEmailConfig(input: EmailConfigInput): EmailConfig {\n return {\n imapHost: input.imapHost,\n imapPort: input.imapPort ?? 993,\n smtpHost: input.smtpHost,\n smtpPort: input.smtpPort ?? 587,\n username: input.username,\n password: input.password,\n useSsl: input.useSsl ?? true,\n maxMessages: input.maxMessages ?? 200,\n saveCopy: input.saveCopy ?? true,\n sentFolder: input.sentFolder ?? null,\n }\n}\n\nexport function normalizeEmailConfig(input: Record<string, unknown>): EmailConfig {\n const norm = normalizeFields(input, {\n rename: {\n imap_host: 'imapHost',\n imap_port: 'imapPort',\n smtp_host: 'smtpHost',\n smtp_port: 'smtpPort',\n use_ssl: 'useSsl',\n max_messages: 'maxMessages',\n save_copy: 'saveCopy',\n sent_folder: 'sentFolder',\n },\n })\n const built: EmailConfigInput = {\n imapHost: asString(norm.imapHost),\n smtpHost: asString(norm.smtpHost),\n username: asString(norm.username),\n password: asString(norm.password),\n }\n if (typeof norm.imapPort === 'number') built.imapPort = norm.imapPort\n if (typeof norm.smtpPort === 'number') built.smtpPort = norm.smtpPort\n if (typeof norm.useSsl === 'boolean') built.useSsl = norm.useSsl\n if (typeof norm.maxMessages === 'number') built.maxMessages = norm.maxMessages\n if (typeof norm.saveCopy === 'boolean') built.saveCopy = norm.saveCopy\n if (typeof norm.sentFolder === 'string') built.sentFolder = norm.sentFolder\n return buildEmailConfig(built)\n}\n"],"mappings":";AAcA;AAAA,EAEE;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,SAAS,GAAoB;AACpC,SAAO,OAAO,MAAM,WAAW,IAAI;AACrC;AAKO,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,UAAU,EAAE,OAAO;AAAA,EACnB,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG;AAAA,EAChC,UAAU,EAAE,OAAO;AAAA,EACnB,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG;AAAA,EAChC,UAAU,EAAE,OAAO;AAAA,EACnB,UAAU,UAAU;AAAA,EACpB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAChC,aAAa,EAAE,OAAO,EAAE,QAAQ,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,EAKnC,UAAU,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA;AAAA,EAElC,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI;AAChD,CAAC;AAMM,SAAS,kBAAkB,QAA0C;AAC1E,SAAO,uBAAuB,mBAAmB,MAAM;AACzD;AAKO,SAAS,iBAAiB,OAAsC;AACrE,SAAO;AAAA,IACL,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM,YAAY;AAAA,IAC5B,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM,YAAY;AAAA,IAC5B,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU;AAAA,IACxB,aAAa,MAAM,eAAe;AAAA,IAClC,UAAU,MAAM,YAAY;AAAA,IAC5B,YAAY,MAAM,cAAc;AAAA,EAClC;AACF;AAEO,SAAS,qBAAqB,OAA6C;AAChF,QAAM,OAAO,gBAAgB,OAAO;AAAA,IAClC,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,cAAc;AAAA,MACd,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,EACF,CAAC;AACD,QAAM,QAA0B;AAAA,IAC9B,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,UAAU,SAAS,KAAK,QAAQ;AAAA,IAChC,UAAU,SAAS,KAAK,QAAQ;AAAA,EAClC;AACA,MAAI,OAAO,KAAK,aAAa,SAAU,OAAM,WAAW,KAAK;AAC7D,MAAI,OAAO,KAAK,aAAa,SAAU,OAAM,WAAW,KAAK;AAC7D,MAAI,OAAO,KAAK,WAAW,UAAW,OAAM,SAAS,KAAK;AAC1D,MAAI,OAAO,KAAK,gBAAgB,SAAU,OAAM,cAAc,KAAK;AACnE,MAAI,OAAO,KAAK,aAAa,UAAW,OAAM,WAAW,KAAK;AAC9D,MAAI,OAAO,KAAK,eAAe,SAAU,OAAM,aAAa,KAAK;AACjE,SAAO,iBAAiB,KAAK;AAC/B;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/gridfs/config.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n normalizeFields,\n normalizeKeyPrefix,\n redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretStr,\n z,\n} from '@struktoai/mirage-core'\n\nconst GridFSConfigSchema = z.object({\n uri: secretStr(),\n database: z.string(),\n bucket: z.string().optional(),\n keyPrefix: z.string().optional(),\n chunkSizeBytes: z.number().optional(),\n})\n\nexport type GridFSConfig = ConfigOf<typeof GridFSConfigSchema>\n\nexport type GridFSConfigRedacted = RedactedConfig<GridFSConfig, 'uri'>\n\nexport function redactConfig(config: GridFSConfig): GridFSConfigRedacted {\n return redactConfigWithSchema(GridFSConfigSchema, config) as unknown as GridFSConfigRedacted\n}\n\n/**\n * Translate Python-style snake_case keys (as used in YAML configs and the\n * Python `GridFSConfig`) to the TS-idiomatic camelCase fields, and\n * normalize the key prefix the way the accessor expects.\n */\nexport function normalizeGridFSConfig(input: Record<string, unknown>): GridFSConfig {\n const norm = normalizeFields(input, {\n rename: {\n key_prefix: 'keyPrefix',\n chunk_size_bytes: 'chunkSizeBytes',\n },\n }) as unknown as GridFSConfig\n const prefix = normalizeKeyPrefix(norm.keyPrefix)\n if (prefix !== undefined) {\n norm.keyPrefix = prefix\n } else {\n delete norm.keyPrefix\n }\n return norm\n}\n"],"mappings":";AAcA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAEP,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,KAAK,UAAU;AAAA,EACf,UAAU,EAAE,OAAO;AAAA,EACnB,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,gBAAgB,EAAE,OAAO,EAAE,SAAS;AACtC,CAAC;AAMM,SAAS,aAAa,QAA4C;AACvE,SAAO,uBAAuB,oBAAoB,MAAM;AAC1D;AAOO,SAAS,sBAAsB,OAA8C;AAClF,QAAM,OAAO,gBAAgB,OAAO;AAAA,IAClC,QAAQ;AAAA,MACN,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACpB;AAAA,EACF,CAAC;AACD,QAAM,SAAS,mBAAmB,KAAK,SAAS;AAChD,MAAI,WAAW,QAAW;AACxB,SAAK,YAAY;AAAA,EACnB,OAAO;AACL,WAAO,KAAK;AAAA,EACd;AACA,SAAO;AACT;","names":[]}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
// src/resource/dropbox/config.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
normalizeFields,
|
|
4
|
+
redactConfigWithSchema,
|
|
5
|
+
secretStr,
|
|
6
|
+
z
|
|
7
|
+
} from "@struktoai/mirage-core";
|
|
3
8
|
var DropboxConfigSchema = z.object({
|
|
4
9
|
clientId: z.string(),
|
|
5
10
|
clientSecret: secretStr(),
|
|
@@ -27,4 +32,4 @@ export {
|
|
|
27
32
|
redactDropboxConfig,
|
|
28
33
|
normalizeDropboxConfig
|
|
29
34
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-DCDBIXVZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/dropbox/config.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n normalizeFields,\n redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretStr,\n z,\n} from '@struktoai/mirage-core'\n\nexport interface DropboxConfig {\n clientId: string\n clientSecret: string\n refreshToken: string\n rootPath?: string\n contentSearch?: boolean\n endpoint?: string\n refreshFn?: (refreshToken: string) => Promise<{ accessToken: string; expiresIn: number }>\n}\n\nconst DropboxConfigSchema = z.object({\n clientId: z.string(),\n clientSecret: secretStr(),\n refreshToken: secretStr(),\n rootPath: z.string().optional(),\n contentSearch: z.boolean().optional(),\n endpoint: z.string().optional(),\n})\n\n// Only the redacted twin derives: the schema deliberately omits\n// `refreshFn`, which no snapshot can carry.\nexport type DropboxConfigRedacted = RedactedConfig<\n ConfigOf<typeof DropboxConfigSchema>,\n 'clientSecret' | 'refreshToken'\n>\n\nexport function redactDropboxConfig(config: DropboxConfig): DropboxConfigRedacted {\n return redactConfigWithSchema(DropboxConfigSchema, config) as unknown as DropboxConfigRedacted\n}\n\nexport function normalizeDropboxConfig(input: Record<string, unknown>): DropboxConfig {\n return normalizeFields(input, {\n rename: {\n client_id: 'clientId',\n client_secret: 'clientSecret',\n refresh_token: 'refreshToken',\n root_path: 'rootPath',\n content_search: 'contentSearch',\n },\n }) as unknown as DropboxConfig\n}\n"],"mappings":";AAcA;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAYP,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACnC,UAAU,EAAE,OAAO;AAAA,EACnB,cAAc,UAAU;AAAA,EACxB,cAAc,UAAU;AAAA,EACxB,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,UAAU,EAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AASM,SAAS,oBAAoB,QAA8C;AAChF,SAAO,uBAAuB,qBAAqB,MAAM;AAC3D;AAEO,SAAS,uBAAuB,OAA+C;AACpF,SAAO,gBAAgB,OAAO;AAAA,IAC5B,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACH;","names":[]}
|