@struktoai/mirage-node 0.0.3-alpha.0 → 0.0.4
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 +1 -1
- package/dist/aliyun-PGI57A43.js +10 -0
- package/dist/backblaze-TSPL6Y56.js +10 -0
- package/dist/box-7XTZYDSO.js +8 -0
- package/dist/cas.lua +15 -0
- package/dist/ceph-C265UI5T.js +10 -0
- package/dist/{chunk-IQVNVTOP.js → chunk-25W4XQJZ.js} +5 -5
- package/dist/{chunk-QGRDPSAH.js → chunk-2ERLWAGG.js} +4 -2
- package/dist/chunk-2ERLWAGG.js.map +1 -0
- package/dist/{chunk-NJMGCT63.js → chunk-2QNPKPZZ.js} +7 -2
- package/dist/chunk-2QNPKPZZ.js.map +1 -0
- package/dist/{chunk-ZNWVJ6UW.js → chunk-3ASOQTZB.js} +7 -2
- package/dist/chunk-3ASOQTZB.js.map +1 -0
- package/dist/{chunk-ERELJ7BS.js → chunk-3JZN3GYO.js} +14 -13
- package/dist/chunk-3JZN3GYO.js.map +1 -0
- package/dist/{chunk-DTAY7LPC.js → chunk-4GYB7DGC.js} +295 -706
- package/dist/chunk-4GYB7DGC.js.map +1 -0
- package/dist/{chunk-G5BZE7UA.js → chunk-4M73WHIE.js} +3 -3
- package/dist/{chunk-Q6CDMOM6.js → chunk-4X6CLF4F.js} +3 -3
- package/dist/{chunk-3IJSIVKT.js → chunk-5I7Q7RHW.js} +3 -3
- package/dist/{chunk-YPT4JBUY.js → chunk-5YRWF5RP.js} +18 -16
- package/dist/chunk-5YRWF5RP.js.map +1 -0
- package/dist/chunk-5ZHNPNDD.js +944 -0
- package/dist/chunk-5ZHNPNDD.js.map +1 -0
- package/dist/{chunk-VGLHY6BK.js → chunk-AULFV3KY.js} +1 -2
- package/dist/chunk-AULFV3KY.js.map +1 -0
- package/dist/{chunk-A4Z6DZ22.js → chunk-BWLUBJQG.js} +20 -16
- package/dist/chunk-BWLUBJQG.js.map +1 -0
- package/dist/{chunk-OYV2DN66.js → chunk-BWWU5T2D.js} +3 -3
- package/dist/chunk-C7TNKIK5.js +39 -0
- package/dist/chunk-C7TNKIK5.js.map +1 -0
- package/dist/{chunk-HEHERHQ5.js → chunk-CB76WPUS.js} +13 -14
- package/dist/chunk-CB76WPUS.js.map +1 -0
- package/dist/chunk-CGGO5NKD.js +1194 -0
- package/dist/chunk-CGGO5NKD.js.map +1 -0
- package/dist/{chunk-B2ZOKNN4.js → chunk-CQCTCW4S.js} +1 -2
- package/dist/chunk-CQCTCW4S.js.map +1 -0
- package/dist/{chunk-AJICZLHT.js → chunk-CXQGMFI7.js} +3 -3
- package/dist/{chunk-LW25LMIH.js → chunk-D3U7VQCG.js} +1 -2
- package/dist/{chunk-LW25LMIH.js.map → chunk-D3U7VQCG.js.map} +1 -1
- package/dist/{chunk-RQYEEA2O.js → chunk-DXU7NZPH.js} +3 -3
- package/dist/{chunk-XGJ2QERC.js → chunk-E3KXVEYI.js} +8 -4
- package/dist/chunk-E3KXVEYI.js.map +1 -0
- package/dist/{chunk-L6JPBJAS.js → chunk-EGZNOUMH.js} +3 -3
- package/dist/{chunk-DNBAMB5J.js → chunk-EVK6HH6Z.js} +1 -2
- package/dist/{chunk-DNBAMB5J.js.map → chunk-EVK6HH6Z.js.map} +1 -1
- package/dist/{chunk-BYTU2YC3.js → chunk-F5NWRF32.js} +3 -3
- package/dist/{chunk-RLGWMJD3.js → chunk-FRGTDZQT.js} +146 -11
- package/dist/chunk-FRGTDZQT.js.map +1 -0
- package/dist/{chunk-DYXEITK3.js → chunk-GF75O2EN.js} +4 -2
- package/dist/chunk-GF75O2EN.js.map +1 -0
- package/dist/{chunk-W7FLHT65.js → chunk-GTAS3QVC.js} +1 -2
- package/dist/{chunk-W7FLHT65.js.map → chunk-GTAS3QVC.js.map} +1 -1
- package/dist/{chunk-RQK5UPMP.js → chunk-H62XQZUM.js} +4 -3
- package/dist/chunk-H62XQZUM.js.map +1 -0
- package/dist/{chunk-UT2OPSN4.js → chunk-HCU3B6FW.js} +1 -2
- package/dist/chunk-HCU3B6FW.js.map +1 -0
- package/dist/chunk-HEDE2377.js +754 -0
- package/dist/chunk-HEDE2377.js.map +1 -0
- package/dist/{chunk-JZQHKDSY.js → chunk-HGIPWY5Y.js} +22 -11
- package/dist/chunk-HGIPWY5Y.js.map +1 -0
- package/dist/{chunk-Q2IAILVC.js → chunk-HSD24IP2.js} +8 -4
- package/dist/chunk-HSD24IP2.js.map +1 -0
- package/dist/{chunk-5YOCVEUB.js → chunk-HWQPEBID.js} +19 -15
- package/dist/chunk-HWQPEBID.js.map +1 -0
- package/dist/{chunk-SFUCUARB.js → chunk-IEHPTILN.js} +4 -4
- package/dist/chunk-IEHPTILN.js.map +1 -0
- package/dist/{chunk-C6NHEDHY.js → chunk-IEVLWEBO.js} +15 -14
- package/dist/chunk-IEVLWEBO.js.map +1 -0
- package/dist/{chunk-YUK3X3B4.js → chunk-IKJQOYI4.js} +1 -2
- package/dist/{chunk-YUK3X3B4.js.map → chunk-IKJQOYI4.js.map} +1 -1
- package/dist/{chunk-MHCMHKM6.js → chunk-IUXXZHY3.js} +17 -23
- package/dist/chunk-IUXXZHY3.js.map +1 -0
- package/dist/{chunk-ABTEGAFB.js → chunk-JBDFYIN2.js} +13 -14
- package/dist/chunk-JBDFYIN2.js.map +1 -0
- package/dist/{chunk-A7X4L4JM.js → chunk-JEBH5APX.js} +15 -15
- package/dist/chunk-JEBH5APX.js.map +1 -0
- package/dist/{chunk-H3BST2LI.js → chunk-JHI2PHHD.js} +1 -2
- package/dist/{chunk-H3BST2LI.js.map → chunk-JHI2PHHD.js.map} +1 -1
- package/dist/{chunk-EGB7V74Z.js → chunk-KAWDDS27.js} +1 -3
- package/dist/chunk-KAWDDS27.js.map +1 -0
- package/dist/{chunk-DP2PP5V2.js → chunk-KGC2OGXI.js} +5 -4
- package/dist/chunk-KGC2OGXI.js.map +1 -0
- package/dist/{chunk-FXFDBF3P.js → chunk-L4GMDSMB.js} +3 -3
- package/dist/{chunk-O7ODGJYL.js → chunk-L7FEZ7LU.js} +3 -3
- package/dist/{chunk-54NTYJEO.js → chunk-LPDLPRPS.js} +1 -3
- package/dist/{chunk-54NTYJEO.js.map → chunk-LPDLPRPS.js.map} +1 -1
- package/dist/{chunk-UGK4TAVK.js → chunk-LPLZLSMK.js} +1 -2
- package/dist/chunk-LPLZLSMK.js.map +1 -0
- package/dist/{chunk-5DLOHQJ2.js → chunk-M6E7VK4D.js} +14 -14
- package/dist/chunk-M6E7VK4D.js.map +1 -0
- package/dist/{chunk-2CC5VW7K.js → chunk-MIQ3ECZM.js} +4 -2
- package/dist/chunk-MIQ3ECZM.js.map +1 -0
- package/dist/chunk-MRXTUFBZ.js +30 -0
- package/dist/chunk-MRXTUFBZ.js.map +1 -0
- package/dist/{chunk-RO5IQEDQ.js → chunk-NJ42VNXG.js} +1 -2
- package/dist/chunk-NJ42VNXG.js.map +1 -0
- package/dist/{chunk-3T3RMDNX.js → chunk-NLXJMXVE.js} +3 -3
- package/dist/{chunk-E2ISWXLB.js → chunk-OQKNDS66.js} +1 -1
- package/dist/{chunk-E2ISWXLB.js.map → chunk-OQKNDS66.js.map} +1 -1
- package/dist/chunk-OSVZKYXS.js +946 -0
- package/dist/chunk-OSVZKYXS.js.map +1 -0
- package/dist/{chunk-LYDMMNL2.js → chunk-RHUEV4I7.js} +12 -13
- package/dist/chunk-RHUEV4I7.js.map +1 -0
- package/dist/{chunk-JALIYI6M.js → chunk-S4KVLPBR.js} +7 -2
- package/dist/chunk-S4KVLPBR.js.map +1 -0
- package/dist/{chunk-XRU5WXZX.js → chunk-SAOQW6ZJ.js} +15 -15
- package/dist/chunk-SAOQW6ZJ.js.map +1 -0
- package/dist/{chunk-CASCUFK2.js → chunk-SI4GMRXD.js} +14 -15
- package/dist/chunk-SI4GMRXD.js.map +1 -0
- package/dist/{chunk-HQ4KWN76.js → chunk-SYMNWNC3.js} +3 -3
- package/dist/{chunk-PJBQKMCD.js → chunk-TUNR4VUM.js} +3 -3
- package/dist/{chunk-XHCBHYN4.js → chunk-UAJYJP5C.js} +7 -2
- package/dist/chunk-UAJYJP5C.js.map +1 -0
- package/dist/{chunk-OPYQ5KIO.js → chunk-UYA3XL3J.js} +4 -2
- package/dist/chunk-UYA3XL3J.js.map +1 -0
- package/dist/{chunk-WL7HS7EM.js → chunk-V7JVMG63.js} +3 -3
- package/dist/{chunk-LAJJPLEV.js → chunk-VBYIDRNU.js} +7 -3
- package/dist/chunk-VBYIDRNU.js.map +1 -0
- package/dist/{chunk-NHS7WLEQ.js → chunk-VHED2STW.js} +11 -8
- package/dist/chunk-VHED2STW.js.map +1 -0
- package/dist/{chunk-JZT4QGIP.js → chunk-VIICUPWQ.js} +1 -2
- package/dist/{chunk-JZT4QGIP.js.map → chunk-VIICUPWQ.js.map} +1 -1
- package/dist/{chunk-TRTUHCS4.js → chunk-VLRSOWHP.js} +17 -15
- package/dist/chunk-VLRSOWHP.js.map +1 -0
- package/dist/chunk-W5ZLIQFR.js +764 -0
- package/dist/chunk-W5ZLIQFR.js.map +1 -0
- package/dist/{chunk-YGZMVNN5.js → chunk-WTSSEUOZ.js} +7 -2
- package/dist/chunk-WTSSEUOZ.js.map +1 -0
- package/dist/{chunk-OHROA3FQ.js → chunk-WWP2STF5.js} +7 -2
- package/dist/chunk-WWP2STF5.js.map +1 -0
- package/dist/{chunk-C6NHFMIP.js → chunk-XADEMW6B.js} +3 -3
- package/dist/{chunk-KTNDT45N.js → chunk-XEMLYWHK.js} +3 -3
- package/dist/{chunk-OZAEWZZ3.js → chunk-XFSEADPC.js} +6 -2
- package/dist/chunk-XFSEADPC.js.map +1 -0
- package/dist/{chunk-TWGVQLG2.js → chunk-XUUSWR4U.js} +1 -2
- package/dist/{chunk-TWGVQLG2.js.map → chunk-XUUSWR4U.js.map} +1 -1
- package/dist/{chunk-XLQI4IT2.js → chunk-YBVMZ7SR.js} +7 -2
- package/dist/chunk-YBVMZ7SR.js.map +1 -0
- package/dist/{chunk-E7RW3SBV.js → chunk-YRJICL2Q.js} +15 -15
- package/dist/chunk-YRJICL2Q.js.map +1 -0
- package/dist/{chunk-B6SXRCBO.js → chunk-ZM44MGC5.js} +3 -3
- package/dist/{chunk-YAVGCQUP.js → chunk-ZMREYTHA.js} +16 -15
- package/dist/chunk-ZMREYTHA.js.map +1 -0
- package/dist/{chunk-H3I2KZIY.js → chunk-ZPB3SLPK.js} +1 -2
- package/dist/{chunk-H3I2KZIY.js.map → chunk-ZPB3SLPK.js.map} +1 -1
- package/dist/chunk-ZPZQXHW2.js +1230 -0
- package/dist/chunk-ZPZQXHW2.js.map +1 -0
- package/dist/{config-34LHOGLM.js → config-2LASFFRD.js} +2 -4
- package/dist/config-3WDIJPTG.js +9 -0
- package/dist/config-4QV4QYI5.js +9 -0
- package/dist/{config-ZFJYQZCH.js → config-54USUVSE.js} +2 -4
- package/dist/config-5ZXN2T2H.js +9 -0
- package/dist/config-A2GQYJDB.js +9 -0
- package/dist/config-BBOLI7VE.js +9 -0
- package/dist/{config-VM526IKB.js → config-BIBFLUIR.js} +2 -4
- package/dist/{config-EO23EY62.js → config-CPYFOUQO.js} +2 -4
- package/dist/{config-3IVQJBNW.js → config-DWSJL3NH.js} +2 -4
- package/dist/config-E22XAGYN.js +9 -0
- package/dist/config-EHE52ZTK.js +9 -0
- package/dist/{config-GE4W4ZJC.js → config-EX3ZJTZI.js} +2 -4
- package/dist/{config-QNMKWJ4M.js → config-FRK7ZL37.js} +2 -4
- package/dist/{config-LHFFXVYI.js → config-HQXNFQZS.js} +2 -4
- package/dist/config-HTXOOAOD.js +9 -0
- package/dist/{config-HKRMKD76.js → config-IPNWAJHH.js} +2 -4
- package/dist/config-J2C53GOT.js +9 -0
- package/dist/config-K63RX6EU.js +9 -0
- package/dist/config-L7SBSH5L.js +9 -0
- package/dist/config-LEALEMKA.js +9 -0
- package/dist/{config-IVY5EQQ2.js → config-M3Z47VYU.js} +2 -4
- package/dist/{config-EIHSP5DZ.js → config-MZM3IPFM.js} +2 -4
- package/dist/{config-GHRUKEQ6.js → config-OJ2BPESH.js} +2 -4
- package/dist/{config-WDAZFXYD.js → config-QO2XUME4.js} +2 -4
- package/dist/config-QWQGOXQ5.js +9 -0
- package/dist/config-RI7IEZUF.js +9 -0
- package/dist/{config-CVZ2AGCO.js → config-SPW6NESU.js} +2 -6
- package/dist/{config-QAA646XB.js → config-T2IUIU5C.js} +2 -4
- package/dist/{config-NV5WXP64.js → config-UU27ALAA.js} +2 -4
- package/dist/config-VKKZGC7V.js +9 -0
- package/dist/config-W7EVPJNK.js +11 -0
- package/dist/config-WKQ3FGTZ.js +9 -0
- package/dist/config-WVILHDFV.js +11 -0
- package/dist/{config-Q45Y46YT.js → config-XU6D5C7E.js} +2 -4
- package/dist/databricks_volume-ETRDJVVQ.js +7 -0
- package/dist/digitalocean-QP72DR4J.js +10 -0
- package/dist/discord-BSN5RB3E.js +8 -0
- package/dist/disk-24NWTN2I.js +7 -0
- package/dist/dropbox-OSTZXSIE.js +8 -0
- package/dist/email-4ZFPSWIN.js +8 -0
- package/dist/gcs-PFWR6MIW.js +10 -0
- package/dist/gdocs-GPAZRQG5.js +8 -0
- package/dist/gdrive-XSX6A7B3.js +8 -0
- package/dist/github-EQ4NXUTA.js +8 -0
- package/dist/github_ci-QL5B2Q2N.js +8 -0
- package/dist/gmail-2TBT4CVH.js +8 -0
- package/dist/gridfs-KZRZ6SIB.js +9 -0
- package/dist/gsheets-N53WEXN2.js +8 -0
- package/dist/gslides-TATSARTH.js +8 -0
- package/dist/hf_buckets-BK7NGJWS.js +10 -0
- package/dist/hf_datasets-UQ5QGM4L.js +10 -0
- package/dist/hf_models-75LFCQCS.js +10 -0
- package/dist/hf_spaces-6T2KB3UC.js +10 -0
- package/dist/index.d.ts +599 -79
- package/dist/index.js +1515 -422
- package/dist/index.js.map +1 -1
- package/dist/langfuse-AMQCQWNE.js +8 -0
- package/dist/linear-V3TXO6CV.js +8 -0
- package/dist/minio-IZRZY4C5.js +10 -0
- package/dist/mongodb-VMKPQCPX.js +7 -0
- package/dist/nextcloud-5RHQCGDO.js +9 -0
- package/dist/notion-6PPNTQFM.js +8 -0
- package/dist/oci-CKYBSFZJ.js +10 -0
- package/dist/postgres-WIQBVL5M.js +7 -0
- package/dist/qingstor-AP4IIPLY.js +10 -0
- package/dist/r2-C4XGEWQY.js +10 -0
- package/dist/redis-6D55Q2WB.js +8 -0
- package/dist/s3-XQBI2CXN.js +8 -0
- package/dist/scaleway-SEZJVURB.js +10 -0
- package/dist/seaweedfs-3XYIAFU2.js +10 -0
- package/dist/slack-ZHXDJQY4.js +8 -0
- package/dist/ssh-X2MO7JOV.js +8 -0
- package/dist/supabase-BBM44UTM.js +10 -0
- package/dist/supabase-BBM44UTM.js.map +1 -0
- package/dist/tencent-X72USLJ7.js +10 -0
- package/dist/tencent-X72USLJ7.js.map +1 -0
- package/dist/trello-EER5NG7L.js +8 -0
- package/dist/trello-EER5NG7L.js.map +1 -0
- package/dist/wasabi-O4MVIUFG.js +10 -0
- package/dist/wasabi-O4MVIUFG.js.map +1 -0
- package/package.json +9 -5
- package/dist/aliyun-TMZRUYCG.js +0 -10
- package/dist/backblaze-OHW57DLK.js +0 -10
- package/dist/box-UXTCAFOZ.js +0 -8
- package/dist/ceph-TNN4I2FT.js +0 -10
- package/dist/chunk-2CC5VW7K.js.map +0 -1
- package/dist/chunk-5DLOHQJ2.js.map +0 -1
- package/dist/chunk-5HCVKTP3.js +0 -2086
- package/dist/chunk-5HCVKTP3.js.map +0 -1
- package/dist/chunk-5YOCVEUB.js.map +0 -1
- package/dist/chunk-A4Z6DZ22.js.map +0 -1
- package/dist/chunk-A7X4L4JM.js.map +0 -1
- package/dist/chunk-ABTEGAFB.js.map +0 -1
- package/dist/chunk-B2ZOKNN4.js.map +0 -1
- package/dist/chunk-C6NHEDHY.js.map +0 -1
- package/dist/chunk-CASCUFK2.js.map +0 -1
- package/dist/chunk-DP2PP5V2.js.map +0 -1
- package/dist/chunk-DTAY7LPC.js.map +0 -1
- package/dist/chunk-DYXEITK3.js.map +0 -1
- package/dist/chunk-E7RW3SBV.js.map +0 -1
- package/dist/chunk-EGB7V74Z.js.map +0 -1
- package/dist/chunk-ERELJ7BS.js.map +0 -1
- package/dist/chunk-HEHERHQ5.js.map +0 -1
- package/dist/chunk-JALIYI6M.js.map +0 -1
- package/dist/chunk-JZQHKDSY.js.map +0 -1
- package/dist/chunk-LAJJPLEV.js.map +0 -1
- package/dist/chunk-LYDMMNL2.js.map +0 -1
- package/dist/chunk-MHCMHKM6.js.map +0 -1
- package/dist/chunk-N72CAZEH.js +0 -1990
- package/dist/chunk-N72CAZEH.js.map +0 -1
- package/dist/chunk-NHS7WLEQ.js.map +0 -1
- package/dist/chunk-NJMGCT63.js.map +0 -1
- package/dist/chunk-OHROA3FQ.js.map +0 -1
- package/dist/chunk-OPYQ5KIO.js.map +0 -1
- package/dist/chunk-OZAEWZZ3.js.map +0 -1
- package/dist/chunk-PBBG7VFT.js +0 -1896
- package/dist/chunk-PBBG7VFT.js.map +0 -1
- package/dist/chunk-Q2IAILVC.js.map +0 -1
- package/dist/chunk-QGRDPSAH.js.map +0 -1
- package/dist/chunk-RLGWMJD3.js.map +0 -1
- package/dist/chunk-RO5IQEDQ.js.map +0 -1
- package/dist/chunk-RQK5UPMP.js.map +0 -1
- package/dist/chunk-SFUCUARB.js.map +0 -1
- package/dist/chunk-TRTUHCS4.js.map +0 -1
- package/dist/chunk-U6QSXTUS.js +0 -7
- package/dist/chunk-U6QSXTUS.js.map +0 -1
- package/dist/chunk-UGK4TAVK.js.map +0 -1
- package/dist/chunk-UT2OPSN4.js.map +0 -1
- package/dist/chunk-VGLHY6BK.js.map +0 -1
- package/dist/chunk-WSGEIVY3.js +0 -1766
- package/dist/chunk-WSGEIVY3.js.map +0 -1
- package/dist/chunk-XGJ2QERC.js.map +0 -1
- package/dist/chunk-XHCBHYN4.js.map +0 -1
- package/dist/chunk-XLQI4IT2.js.map +0 -1
- package/dist/chunk-XRU5WXZX.js.map +0 -1
- package/dist/chunk-YAVGCQUP.js.map +0 -1
- package/dist/chunk-YGZMVNN5.js.map +0 -1
- package/dist/chunk-YPT4JBUY.js.map +0 -1
- package/dist/chunk-ZNWVJ6UW.js.map +0 -1
- package/dist/config-3BBWD5AB.js +0 -11
- package/dist/config-4UDVSUQJ.js +0 -11
- package/dist/config-CMDBAPDH.js +0 -11
- package/dist/config-D3RLSPNF.js +0 -11
- package/dist/config-DG65OEG3.js +0 -11
- package/dist/config-GCQK6NJY.js +0 -11
- package/dist/config-GVH27UPE.js +0 -11
- package/dist/config-HXVYIXP5.js +0 -11
- package/dist/config-IDZMEW73.js +0 -11
- package/dist/config-IJJXGLBQ.js +0 -11
- package/dist/config-KJOLGVB2.js +0 -11
- package/dist/config-KMVCVBYN.js +0 -15
- package/dist/config-KYTRXAB2.js +0 -15
- package/dist/config-OT2TQQCN.js +0 -11
- package/dist/config-QWCY3LBQ.js +0 -11
- package/dist/config-ZV6G2ZEC.js +0 -11
- package/dist/databricks_volume-HNQ4DJVJ.js +0 -7
- package/dist/digitalocean-6SPR4S7V.js +0 -10
- package/dist/discord-SAV2RBJV.js +0 -8
- package/dist/disk-POACMF4G.js +0 -8
- package/dist/dropbox-CQ7MTYX2.js +0 -8
- package/dist/email-KBQ7CXS7.js +0 -8
- package/dist/gcs-SMIE4VMT.js +0 -10
- package/dist/gdocs-X5Y2SIQX.js +0 -8
- package/dist/gdrive-SIQPRIGI.js +0 -8
- package/dist/github-KBHWANKQ.js +0 -8
- package/dist/github_ci-HPITNK37.js +0 -8
- package/dist/gmail-DKHAGJNX.js +0 -8
- package/dist/gsheets-ZSUDIWGK.js +0 -8
- package/dist/gslides-GYXM7IMJ.js +0 -8
- package/dist/hf_buckets-RIOMV7WG.js +0 -10
- package/dist/hf_datasets-QF4BQ3OK.js +0 -10
- package/dist/hf_models-62GC2HPZ.js +0 -10
- package/dist/hf_spaces-NVSMUNRM.js +0 -10
- package/dist/langfuse-HUAYVPHF.js +0 -8
- package/dist/linear-2MM55KBC.js +0 -8
- package/dist/minio-L3XE6PQS.js +0 -10
- package/dist/mongodb-ZOX4FRHJ.js +0 -7
- package/dist/notion-UK4GTMT4.js +0 -8
- package/dist/oci-NURLWPL2.js +0 -10
- package/dist/postgres-JNFMPAO2.js +0 -7
- package/dist/qingstor-W55D5YFO.js +0 -10
- package/dist/r2-FSZK7IFI.js +0 -10
- package/dist/redis-S6GIPA4Z.js +0 -8
- package/dist/s3-GMPUJ65D.js +0 -8
- package/dist/scaleway-5VM55Y6D.js +0 -10
- package/dist/seaweedfs-J3EPUEPE.js +0 -10
- package/dist/slack-FVBXY7KD.js +0 -8
- package/dist/ssh-GCXETJ3Z.js +0 -9
- package/dist/supabase-HLWNHBBE.js +0 -10
- package/dist/tencent-YDO73XBD.js +0 -10
- package/dist/trello-CQ53BQUL.js +0 -8
- package/dist/wasabi-SOZKPMRQ.js +0 -10
- /package/dist/{aliyun-TMZRUYCG.js.map → aliyun-PGI57A43.js.map} +0 -0
- /package/dist/{backblaze-OHW57DLK.js.map → backblaze-TSPL6Y56.js.map} +0 -0
- /package/dist/{box-UXTCAFOZ.js.map → box-7XTZYDSO.js.map} +0 -0
- /package/dist/{ceph-TNN4I2FT.js.map → ceph-C265UI5T.js.map} +0 -0
- /package/dist/{chunk-IQVNVTOP.js.map → chunk-25W4XQJZ.js.map} +0 -0
- /package/dist/{chunk-G5BZE7UA.js.map → chunk-4M73WHIE.js.map} +0 -0
- /package/dist/{chunk-Q6CDMOM6.js.map → chunk-4X6CLF4F.js.map} +0 -0
- /package/dist/{chunk-3IJSIVKT.js.map → chunk-5I7Q7RHW.js.map} +0 -0
- /package/dist/{chunk-OYV2DN66.js.map → chunk-BWWU5T2D.js.map} +0 -0
- /package/dist/{chunk-AJICZLHT.js.map → chunk-CXQGMFI7.js.map} +0 -0
- /package/dist/{chunk-RQYEEA2O.js.map → chunk-DXU7NZPH.js.map} +0 -0
- /package/dist/{chunk-L6JPBJAS.js.map → chunk-EGZNOUMH.js.map} +0 -0
- /package/dist/{chunk-BYTU2YC3.js.map → chunk-F5NWRF32.js.map} +0 -0
- /package/dist/{chunk-FXFDBF3P.js.map → chunk-L4GMDSMB.js.map} +0 -0
- /package/dist/{chunk-O7ODGJYL.js.map → chunk-L7FEZ7LU.js.map} +0 -0
- /package/dist/{chunk-3T3RMDNX.js.map → chunk-NLXJMXVE.js.map} +0 -0
- /package/dist/{chunk-HQ4KWN76.js.map → chunk-SYMNWNC3.js.map} +0 -0
- /package/dist/{chunk-PJBQKMCD.js.map → chunk-TUNR4VUM.js.map} +0 -0
- /package/dist/{chunk-WL7HS7EM.js.map → chunk-V7JVMG63.js.map} +0 -0
- /package/dist/{chunk-C6NHFMIP.js.map → chunk-XADEMW6B.js.map} +0 -0
- /package/dist/{chunk-KTNDT45N.js.map → chunk-XEMLYWHK.js.map} +0 -0
- /package/dist/{chunk-B6SXRCBO.js.map → chunk-ZM44MGC5.js.map} +0 -0
- /package/dist/{config-34LHOGLM.js.map → config-2LASFFRD.js.map} +0 -0
- /package/dist/{config-3BBWD5AB.js.map → config-3WDIJPTG.js.map} +0 -0
- /package/dist/{config-3IVQJBNW.js.map → config-4QV4QYI5.js.map} +0 -0
- /package/dist/{config-4UDVSUQJ.js.map → config-54USUVSE.js.map} +0 -0
- /package/dist/{config-CMDBAPDH.js.map → config-5ZXN2T2H.js.map} +0 -0
- /package/dist/{config-CVZ2AGCO.js.map → config-A2GQYJDB.js.map} +0 -0
- /package/dist/{config-D3RLSPNF.js.map → config-BBOLI7VE.js.map} +0 -0
- /package/dist/{config-DG65OEG3.js.map → config-BIBFLUIR.js.map} +0 -0
- /package/dist/{config-EIHSP5DZ.js.map → config-CPYFOUQO.js.map} +0 -0
- /package/dist/{config-EO23EY62.js.map → config-DWSJL3NH.js.map} +0 -0
- /package/dist/{config-GCQK6NJY.js.map → config-E22XAGYN.js.map} +0 -0
- /package/dist/{config-GE4W4ZJC.js.map → config-EHE52ZTK.js.map} +0 -0
- /package/dist/{config-GHRUKEQ6.js.map → config-EX3ZJTZI.js.map} +0 -0
- /package/dist/{config-GVH27UPE.js.map → config-FRK7ZL37.js.map} +0 -0
- /package/dist/{config-HKRMKD76.js.map → config-HQXNFQZS.js.map} +0 -0
- /package/dist/{config-HXVYIXP5.js.map → config-HTXOOAOD.js.map} +0 -0
- /package/dist/{config-IDZMEW73.js.map → config-IPNWAJHH.js.map} +0 -0
- /package/dist/{config-IJJXGLBQ.js.map → config-J2C53GOT.js.map} +0 -0
- /package/dist/{config-IVY5EQQ2.js.map → config-K63RX6EU.js.map} +0 -0
- /package/dist/{config-KJOLGVB2.js.map → config-L7SBSH5L.js.map} +0 -0
- /package/dist/{config-KMVCVBYN.js.map → config-LEALEMKA.js.map} +0 -0
- /package/dist/{config-KYTRXAB2.js.map → config-M3Z47VYU.js.map} +0 -0
- /package/dist/{config-LHFFXVYI.js.map → config-MZM3IPFM.js.map} +0 -0
- /package/dist/{config-NV5WXP64.js.map → config-OJ2BPESH.js.map} +0 -0
- /package/dist/{config-OT2TQQCN.js.map → config-QO2XUME4.js.map} +0 -0
- /package/dist/{config-Q45Y46YT.js.map → config-QWQGOXQ5.js.map} +0 -0
- /package/dist/{config-QAA646XB.js.map → config-RI7IEZUF.js.map} +0 -0
- /package/dist/{config-QNMKWJ4M.js.map → config-SPW6NESU.js.map} +0 -0
- /package/dist/{config-QWCY3LBQ.js.map → config-T2IUIU5C.js.map} +0 -0
- /package/dist/{config-VM526IKB.js.map → config-UU27ALAA.js.map} +0 -0
- /package/dist/{config-WDAZFXYD.js.map → config-VKKZGC7V.js.map} +0 -0
- /package/dist/{config-ZFJYQZCH.js.map → config-W7EVPJNK.js.map} +0 -0
- /package/dist/{config-ZV6G2ZEC.js.map → config-WKQ3FGTZ.js.map} +0 -0
- /package/dist/{databricks_volume-HNQ4DJVJ.js.map → config-WVILHDFV.js.map} +0 -0
- /package/dist/{digitalocean-6SPR4S7V.js.map → config-XU6D5C7E.js.map} +0 -0
- /package/dist/{discord-SAV2RBJV.js.map → databricks_volume-ETRDJVVQ.js.map} +0 -0
- /package/dist/{disk-POACMF4G.js.map → digitalocean-QP72DR4J.js.map} +0 -0
- /package/dist/{dropbox-CQ7MTYX2.js.map → discord-BSN5RB3E.js.map} +0 -0
- /package/dist/{email-KBQ7CXS7.js.map → disk-24NWTN2I.js.map} +0 -0
- /package/dist/{gcs-SMIE4VMT.js.map → dropbox-OSTZXSIE.js.map} +0 -0
- /package/dist/{gdocs-X5Y2SIQX.js.map → email-4ZFPSWIN.js.map} +0 -0
- /package/dist/{gdrive-SIQPRIGI.js.map → gcs-PFWR6MIW.js.map} +0 -0
- /package/dist/{github-KBHWANKQ.js.map → gdocs-GPAZRQG5.js.map} +0 -0
- /package/dist/{github_ci-HPITNK37.js.map → gdrive-XSX6A7B3.js.map} +0 -0
- /package/dist/{gmail-DKHAGJNX.js.map → github-EQ4NXUTA.js.map} +0 -0
- /package/dist/{gsheets-ZSUDIWGK.js.map → github_ci-QL5B2Q2N.js.map} +0 -0
- /package/dist/{gslides-GYXM7IMJ.js.map → gmail-2TBT4CVH.js.map} +0 -0
- /package/dist/{hf_buckets-RIOMV7WG.js.map → gridfs-KZRZ6SIB.js.map} +0 -0
- /package/dist/{hf_datasets-QF4BQ3OK.js.map → gsheets-N53WEXN2.js.map} +0 -0
- /package/dist/{hf_models-62GC2HPZ.js.map → gslides-TATSARTH.js.map} +0 -0
- /package/dist/{hf_spaces-NVSMUNRM.js.map → hf_buckets-BK7NGJWS.js.map} +0 -0
- /package/dist/{langfuse-HUAYVPHF.js.map → hf_datasets-UQ5QGM4L.js.map} +0 -0
- /package/dist/{linear-2MM55KBC.js.map → hf_models-75LFCQCS.js.map} +0 -0
- /package/dist/{minio-L3XE6PQS.js.map → hf_spaces-6T2KB3UC.js.map} +0 -0
- /package/dist/{mongodb-ZOX4FRHJ.js.map → langfuse-AMQCQWNE.js.map} +0 -0
- /package/dist/{notion-UK4GTMT4.js.map → linear-V3TXO6CV.js.map} +0 -0
- /package/dist/{oci-NURLWPL2.js.map → minio-IZRZY4C5.js.map} +0 -0
- /package/dist/{postgres-JNFMPAO2.js.map → mongodb-VMKPQCPX.js.map} +0 -0
- /package/dist/{qingstor-W55D5YFO.js.map → nextcloud-5RHQCGDO.js.map} +0 -0
- /package/dist/{r2-FSZK7IFI.js.map → notion-6PPNTQFM.js.map} +0 -0
- /package/dist/{redis-S6GIPA4Z.js.map → oci-CKYBSFZJ.js.map} +0 -0
- /package/dist/{s3-GMPUJ65D.js.map → postgres-WIQBVL5M.js.map} +0 -0
- /package/dist/{scaleway-5VM55Y6D.js.map → qingstor-AP4IIPLY.js.map} +0 -0
- /package/dist/{seaweedfs-J3EPUEPE.js.map → r2-C4XGEWQY.js.map} +0 -0
- /package/dist/{slack-FVBXY7KD.js.map → redis-6D55Q2WB.js.map} +0 -0
- /package/dist/{ssh-GCXETJ3Z.js.map → s3-XQBI2CXN.js.map} +0 -0
- /package/dist/{supabase-HLWNHBBE.js.map → scaleway-SEZJVURB.js.map} +0 -0
- /package/dist/{tencent-YDO73XBD.js.map → seaweedfs-3XYIAFU2.js.map} +0 -0
- /package/dist/{trello-CQ53BQUL.js.map → slack-ZHXDJQY4.js.map} +0 -0
- /package/dist/{wasabi-SOZKPMRQ.js.map → ssh-X2MO7JOV.js.map} +0 -0
|
@@ -0,0 +1,764 @@
|
|
|
1
|
+
// src/resource/disk/disk.ts
|
|
2
|
+
import { chmod as chmod2, mkdir as mkdir5, readdir as readdir4, readFile as readFile3, stat as fsStat3, writeFile as writeFile3 } from "fs/promises";
|
|
3
|
+
import path8 from "path";
|
|
4
|
+
import {
|
|
5
|
+
BaseResource,
|
|
6
|
+
PathSpec,
|
|
7
|
+
ResourceName as ResourceName7,
|
|
8
|
+
makeResolveGlob,
|
|
9
|
+
mountKey,
|
|
10
|
+
mountPrefixOf as mountPrefixOf2
|
|
11
|
+
} from "@struktoai/mirage-core";
|
|
12
|
+
|
|
13
|
+
// src/commands/builtin/disk/index.ts
|
|
14
|
+
import {
|
|
15
|
+
ResourceName as ResourceName5,
|
|
16
|
+
makeFiletypeCommands,
|
|
17
|
+
makeGenericCommands
|
|
18
|
+
} from "@struktoai/mirage-core";
|
|
19
|
+
|
|
20
|
+
// src/core/disk/read.ts
|
|
21
|
+
import { readFile } from "fs/promises";
|
|
22
|
+
import { enoent, record, ResourceName } from "@struktoai/mirage-core";
|
|
23
|
+
|
|
24
|
+
// src/core/disk/utils.ts
|
|
25
|
+
import path from "path";
|
|
26
|
+
import { lstripSlash } from "@struktoai/mirage-core";
|
|
27
|
+
import { norm, parent, gnuBasename } from "@struktoai/mirage-core";
|
|
28
|
+
function resolveSafe(root, virtual) {
|
|
29
|
+
const relative = lstripSlash(virtual);
|
|
30
|
+
const resolved = path.resolve(root, relative);
|
|
31
|
+
const rootResolved = path.resolve(root);
|
|
32
|
+
if (resolved !== rootResolved && !resolved.startsWith(rootResolved + path.sep)) {
|
|
33
|
+
throw new Error(`path escapes root: ${virtual}`);
|
|
34
|
+
}
|
|
35
|
+
return resolved;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// src/core/disk/read.ts
|
|
39
|
+
async function read(accessor, path9) {
|
|
40
|
+
const start = performance.now();
|
|
41
|
+
const virtual = path9.mountPath;
|
|
42
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
43
|
+
let data;
|
|
44
|
+
try {
|
|
45
|
+
data = await readFile(full);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
if (err.code === "ENOENT") {
|
|
48
|
+
throw enoent(path9);
|
|
49
|
+
}
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
record("read", virtual, ResourceName.DISK, data.byteLength, start);
|
|
53
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/core/disk/stat.ts
|
|
57
|
+
import { stat as fsStat } from "fs/promises";
|
|
58
|
+
import path2 from "path";
|
|
59
|
+
import { enoent as enoent2, FileStat, FileType, guessType } from "@struktoai/mirage-core";
|
|
60
|
+
async function stat(accessor, p) {
|
|
61
|
+
const virtual = p.mountPath;
|
|
62
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
63
|
+
let st;
|
|
64
|
+
try {
|
|
65
|
+
st = await fsStat(full);
|
|
66
|
+
} catch (err) {
|
|
67
|
+
if (err.code === "ENOENT") {
|
|
68
|
+
throw enoent2(p);
|
|
69
|
+
}
|
|
70
|
+
throw err;
|
|
71
|
+
}
|
|
72
|
+
const modified = st.mtime.toISOString();
|
|
73
|
+
const name = path2.basename(full);
|
|
74
|
+
if (st.isDirectory()) {
|
|
75
|
+
return new FileStat({
|
|
76
|
+
name,
|
|
77
|
+
size: null,
|
|
78
|
+
modified,
|
|
79
|
+
type: FileType.DIRECTORY,
|
|
80
|
+
mode: st.mode & 4095,
|
|
81
|
+
atime: st.atime.toISOString()
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return new FileStat({
|
|
85
|
+
name,
|
|
86
|
+
size: st.size,
|
|
87
|
+
modified,
|
|
88
|
+
fingerprint: modified,
|
|
89
|
+
type: guessType(name),
|
|
90
|
+
mode: st.mode & 4095,
|
|
91
|
+
atime: st.atime.toISOString()
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// src/core/disk/append.ts
|
|
96
|
+
import { appendFile, mkdir } from "fs/promises";
|
|
97
|
+
import path3 from "path";
|
|
98
|
+
import { ResourceName as ResourceName2, invalidateAfterWrite, record as record2 } from "@struktoai/mirage-core";
|
|
99
|
+
async function appendBytes(accessor, p, data) {
|
|
100
|
+
const start = performance.now();
|
|
101
|
+
const virtual = p.mountPath;
|
|
102
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
103
|
+
await mkdir(path3.dirname(full), { recursive: true });
|
|
104
|
+
await appendFile(full, data);
|
|
105
|
+
record2("append", virtual, ResourceName2.DISK, data.byteLength, start);
|
|
106
|
+
await invalidateAfterWrite(p);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// src/core/disk/constants.ts
|
|
110
|
+
var SCOPE_ERROR = 5e4;
|
|
111
|
+
|
|
112
|
+
// src/core/disk/copy.ts
|
|
113
|
+
import { copyFile, mkdir as mkdir2 } from "fs/promises";
|
|
114
|
+
import path4 from "path";
|
|
115
|
+
import { enoent as enoent3, invalidateAfterWrite as invalidateAfterWrite2 } from "@struktoai/mirage-core";
|
|
116
|
+
async function copy(accessor, src, dst) {
|
|
117
|
+
const s = resolveSafe(accessor.root, src.mountPath);
|
|
118
|
+
const d = resolveSafe(accessor.root, dst.mountPath);
|
|
119
|
+
await mkdir2(path4.dirname(d), { recursive: true });
|
|
120
|
+
try {
|
|
121
|
+
await copyFile(s, d);
|
|
122
|
+
} catch (err) {
|
|
123
|
+
if (err.code === "ENOENT") {
|
|
124
|
+
throw enoent3(src);
|
|
125
|
+
}
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
128
|
+
await invalidateAfterWrite2(dst);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// src/core/disk/write.ts
|
|
132
|
+
import { mkdir as mkdir3, writeFile } from "fs/promises";
|
|
133
|
+
import path5 from "path";
|
|
134
|
+
import { ResourceName as ResourceName3, invalidateAfterWrite as invalidateAfterWrite3, record as record3 } from "@struktoai/mirage-core";
|
|
135
|
+
async function writeBytes(accessor, p, data) {
|
|
136
|
+
const start = performance.now();
|
|
137
|
+
const virtual = p.mountPath;
|
|
138
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
139
|
+
await mkdir3(path5.dirname(full), { recursive: true });
|
|
140
|
+
await writeFile(full, data);
|
|
141
|
+
record3("write", virtual, ResourceName3.DISK, data.byteLength, start);
|
|
142
|
+
await invalidateAfterWrite3(p);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// src/core/disk/create.ts
|
|
146
|
+
function create(accessor, path9) {
|
|
147
|
+
return writeBytes(accessor, path9, new Uint8Array());
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// src/core/disk/du.ts
|
|
151
|
+
import { readdir, stat as stat2 } from "fs/promises";
|
|
152
|
+
import path6 from "path";
|
|
153
|
+
async function walkSizes(full) {
|
|
154
|
+
let total = 0;
|
|
155
|
+
let st;
|
|
156
|
+
try {
|
|
157
|
+
st = await stat2(full);
|
|
158
|
+
} catch {
|
|
159
|
+
return 0;
|
|
160
|
+
}
|
|
161
|
+
if (st.isFile()) return st.size;
|
|
162
|
+
if (!st.isDirectory()) return 0;
|
|
163
|
+
const entries = await readdir(full, { withFileTypes: true });
|
|
164
|
+
for (const e of entries) {
|
|
165
|
+
const child = path6.join(full, e.name);
|
|
166
|
+
if (e.isDirectory()) total += await walkSizes(child);
|
|
167
|
+
else if (e.isFile()) {
|
|
168
|
+
try {
|
|
169
|
+
const cst = await stat2(child);
|
|
170
|
+
total += cst.size;
|
|
171
|
+
} catch {
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return total;
|
|
176
|
+
}
|
|
177
|
+
async function walkAll(accessor, full, entries) {
|
|
178
|
+
let total = 0;
|
|
179
|
+
let st;
|
|
180
|
+
try {
|
|
181
|
+
st = await stat2(full);
|
|
182
|
+
} catch {
|
|
183
|
+
return 0;
|
|
184
|
+
}
|
|
185
|
+
if (st.isFile()) {
|
|
186
|
+
const rel = "/" + path6.relative(accessor.root, full).split(path6.sep).join("/");
|
|
187
|
+
entries.push([rel, st.size]);
|
|
188
|
+
return st.size;
|
|
189
|
+
}
|
|
190
|
+
if (!st.isDirectory()) return 0;
|
|
191
|
+
const children = await readdir(full, { withFileTypes: true });
|
|
192
|
+
for (const e of children) {
|
|
193
|
+
const child = path6.join(full, e.name);
|
|
194
|
+
if (e.isDirectory()) {
|
|
195
|
+
total += await walkAll(accessor, child, entries);
|
|
196
|
+
} else if (e.isFile()) {
|
|
197
|
+
try {
|
|
198
|
+
const cst = await stat2(child);
|
|
199
|
+
const rel = "/" + path6.relative(accessor.root, child).split(path6.sep).join("/");
|
|
200
|
+
entries.push([rel, cst.size]);
|
|
201
|
+
total += cst.size;
|
|
202
|
+
} catch {
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return total;
|
|
207
|
+
}
|
|
208
|
+
async function du(accessor, p) {
|
|
209
|
+
const virtual = p.mountPath;
|
|
210
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
211
|
+
return walkSizes(full);
|
|
212
|
+
}
|
|
213
|
+
async function duAll(accessor, p) {
|
|
214
|
+
const virtual = norm(p.mountPath);
|
|
215
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
216
|
+
const entries = [];
|
|
217
|
+
const total = await walkAll(accessor, full, entries);
|
|
218
|
+
entries.sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
|
|
219
|
+
return [entries, total];
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// src/core/disk/exists.ts
|
|
223
|
+
import { access } from "fs/promises";
|
|
224
|
+
async function exists(accessor, path9) {
|
|
225
|
+
const full = resolveSafe(accessor.root, path9.mountPath);
|
|
226
|
+
try {
|
|
227
|
+
await access(full);
|
|
228
|
+
return true;
|
|
229
|
+
} catch {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// src/core/disk/find.ts
|
|
235
|
+
import { readdir as readdir2, stat as stat3 } from "fs/promises";
|
|
236
|
+
import path7 from "path";
|
|
237
|
+
import {
|
|
238
|
+
buildTree,
|
|
239
|
+
emitStartPath,
|
|
240
|
+
keep,
|
|
241
|
+
startBasename
|
|
242
|
+
} from "@struktoai/mirage-core";
|
|
243
|
+
async function walk(ctx, full, current, depth) {
|
|
244
|
+
const opts = ctx.options;
|
|
245
|
+
if (opts.maxDepth !== null && opts.maxDepth !== void 0 && depth > opts.maxDepth) return;
|
|
246
|
+
let entries;
|
|
247
|
+
try {
|
|
248
|
+
entries = await readdir2(full, { withFileTypes: true });
|
|
249
|
+
} catch {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
for (const e of entries) {
|
|
253
|
+
const kind = e.isDirectory() ? "d" : "f";
|
|
254
|
+
const entryPath = current === "/" ? `/${e.name}` : `${current}/${e.name}`;
|
|
255
|
+
const entryName = e.name;
|
|
256
|
+
const entrySlashCount = (entryPath.match(/\//g) ?? []).length;
|
|
257
|
+
const entryDepth = entrySlashCount - ctx.baseDepth;
|
|
258
|
+
let accept = true;
|
|
259
|
+
if (opts.maxDepth !== null && opts.maxDepth !== void 0 && entryDepth > opts.maxDepth) {
|
|
260
|
+
accept = false;
|
|
261
|
+
}
|
|
262
|
+
let isEmpty = null;
|
|
263
|
+
if (accept && opts.empty === true) {
|
|
264
|
+
try {
|
|
265
|
+
isEmpty = kind === "f" ? (await stat3(path7.join(full, e.name))).size === 0 : (await readdir2(path7.join(full, e.name))).length === 0;
|
|
266
|
+
} catch {
|
|
267
|
+
isEmpty = null;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (accept && !keep(
|
|
271
|
+
{ key: entryPath, name: entryName, kind, depth: entryDepth, isEmpty },
|
|
272
|
+
ctx.tree,
|
|
273
|
+
opts.minDepth
|
|
274
|
+
)) {
|
|
275
|
+
accept = false;
|
|
276
|
+
}
|
|
277
|
+
if (accept && kind !== "f" && (opts.minSize != null || opts.maxSize != null)) {
|
|
278
|
+
if (opts.minSize != null && opts.minSize > 0) accept = false;
|
|
279
|
+
if (opts.maxSize != null && opts.maxSize < 0) accept = false;
|
|
280
|
+
}
|
|
281
|
+
if (accept && kind === "f" && (opts.minSize !== null || opts.maxSize !== null || opts.mtimeMin !== null || opts.mtimeMax !== null)) {
|
|
282
|
+
try {
|
|
283
|
+
const st = await stat3(path7.join(full, e.name));
|
|
284
|
+
if (opts.minSize !== null && opts.minSize !== void 0 && st.size < opts.minSize)
|
|
285
|
+
accept = false;
|
|
286
|
+
if (opts.maxSize !== null && opts.maxSize !== void 0 && st.size > opts.maxSize)
|
|
287
|
+
accept = false;
|
|
288
|
+
if (accept && (opts.mtimeMin !== void 0 || opts.mtimeMax !== void 0)) {
|
|
289
|
+
const mtime = st.mtime.getTime() / 1e3;
|
|
290
|
+
if (opts.mtimeMin !== null && opts.mtimeMin !== void 0 && mtime < opts.mtimeMin)
|
|
291
|
+
accept = false;
|
|
292
|
+
if (opts.mtimeMax !== null && opts.mtimeMax !== void 0 && mtime > opts.mtimeMax)
|
|
293
|
+
accept = false;
|
|
294
|
+
}
|
|
295
|
+
} catch {
|
|
296
|
+
accept = false;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (accept) ctx.results.push(entryPath);
|
|
300
|
+
if (kind === "d") {
|
|
301
|
+
await walk(ctx, path7.join(full, e.name), entryPath, depth + 1);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
async function find(accessor, p, options = {}) {
|
|
306
|
+
const virtual = norm(p.mountPath);
|
|
307
|
+
const startName = startBasename(p.virtual);
|
|
308
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
309
|
+
const baseDepth = virtual === "/" ? 0 : (virtual.match(/\//g) ?? []).length;
|
|
310
|
+
const results = [];
|
|
311
|
+
const tree = options.tree ?? buildTree({
|
|
312
|
+
name: options.name,
|
|
313
|
+
iname: options.iname,
|
|
314
|
+
pathPattern: options.pathPattern,
|
|
315
|
+
type: options.type,
|
|
316
|
+
nameExclude: options.nameExclude,
|
|
317
|
+
orNames: options.orNames,
|
|
318
|
+
empty: options.empty
|
|
319
|
+
});
|
|
320
|
+
if (options.maxDepth == null || options.maxDepth >= 0) {
|
|
321
|
+
let isDir = false;
|
|
322
|
+
try {
|
|
323
|
+
isDir = (await stat3(full)).isDirectory();
|
|
324
|
+
} catch {
|
|
325
|
+
isDir = false;
|
|
326
|
+
}
|
|
327
|
+
let rootEmpty = null;
|
|
328
|
+
if (isDir && options.empty === true) {
|
|
329
|
+
try {
|
|
330
|
+
rootEmpty = (await readdir2(full)).length === 0;
|
|
331
|
+
} catch {
|
|
332
|
+
rootEmpty = null;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
emitStartPath(results, virtual, startName, {
|
|
336
|
+
kind: "d",
|
|
337
|
+
isEmpty: rootEmpty,
|
|
338
|
+
exists: isDir,
|
|
339
|
+
tree,
|
|
340
|
+
maxDepth: options.maxDepth,
|
|
341
|
+
minDepth: options.minDepth,
|
|
342
|
+
minSize: options.minSize,
|
|
343
|
+
maxSize: options.maxSize
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
await walk({ accessor, base: virtual, baseDepth, options, tree, results }, full, virtual, 0);
|
|
347
|
+
results.sort();
|
|
348
|
+
return results;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// src/core/disk/mkdir.ts
|
|
352
|
+
import { mkdir as fsMkdir } from "fs/promises";
|
|
353
|
+
import { invalidateAfterWrite as invalidateAfterWrite4, invalidateAncestors } from "@struktoai/mirage-core";
|
|
354
|
+
async function mkdir4(accessor, path9, parents = false) {
|
|
355
|
+
const full = resolveSafe(accessor.root, path9.mountPath);
|
|
356
|
+
if (parents) {
|
|
357
|
+
await fsMkdir(full, { recursive: true });
|
|
358
|
+
await invalidateAfterWrite4(path9);
|
|
359
|
+
await invalidateAncestors(path9);
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
try {
|
|
363
|
+
await fsMkdir(full);
|
|
364
|
+
} catch (err) {
|
|
365
|
+
const code = err.code;
|
|
366
|
+
if (code === "ENOENT") {
|
|
367
|
+
throw new Error(`parent directory does not exist: ${path9.mountPath}`);
|
|
368
|
+
}
|
|
369
|
+
if (code !== "EEXIST") throw err;
|
|
370
|
+
}
|
|
371
|
+
await invalidateAfterWrite4(path9);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// src/core/disk/readdir.ts
|
|
375
|
+
import { readdir as fsReaddir } from "fs/promises";
|
|
376
|
+
import {
|
|
377
|
+
IndexEntry,
|
|
378
|
+
ResourceType,
|
|
379
|
+
enotdir,
|
|
380
|
+
mountPrefixOf,
|
|
381
|
+
rstripSlash
|
|
382
|
+
} from "@struktoai/mirage-core";
|
|
383
|
+
async function readdir3(accessor, path9, index) {
|
|
384
|
+
const virtual = path9.pattern !== null ? path9.directory : path9.mountPath;
|
|
385
|
+
const mountPrefix = mountPrefixOf(path9.virtual, path9.resourcePath);
|
|
386
|
+
const virtualKey = rstripSlash(mountPrefix + virtual) || "/";
|
|
387
|
+
if (index !== void 0) {
|
|
388
|
+
const cached = await index.listDir(virtualKey);
|
|
389
|
+
if (cached.entries !== void 0 && cached.entries !== null) {
|
|
390
|
+
return cached.entries;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
394
|
+
let entries;
|
|
395
|
+
try {
|
|
396
|
+
entries = await fsReaddir(full);
|
|
397
|
+
} catch (err) {
|
|
398
|
+
const code = err.code;
|
|
399
|
+
if (code === "ENOTDIR") throw enotdir(path9);
|
|
400
|
+
if (code === "ENOENT") throw enotdir(path9);
|
|
401
|
+
throw err;
|
|
402
|
+
}
|
|
403
|
+
const base = norm(virtual);
|
|
404
|
+
const dirPrefix = base === "/" ? "/" : `${base}/`;
|
|
405
|
+
const sorted = [...entries].sort();
|
|
406
|
+
const virtualEntries = sorted.map((e) => `${mountPrefix}${dirPrefix}${e}`);
|
|
407
|
+
if (index !== void 0) {
|
|
408
|
+
const indexEntries = sorted.map((name) => [
|
|
409
|
+
name,
|
|
410
|
+
new IndexEntry({
|
|
411
|
+
id: `${dirPrefix}${name}`,
|
|
412
|
+
name,
|
|
413
|
+
resourceType: ResourceType.FILE
|
|
414
|
+
})
|
|
415
|
+
]);
|
|
416
|
+
await index.setDir(virtualKey, indexEntries);
|
|
417
|
+
}
|
|
418
|
+
return virtualEntries;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// src/core/disk/rename.ts
|
|
422
|
+
import { rename as fsRename } from "fs/promises";
|
|
423
|
+
import {
|
|
424
|
+
enoent as enoent4,
|
|
425
|
+
invalidateAfterUnlink,
|
|
426
|
+
invalidateAfterWrite as invalidateAfterWrite5
|
|
427
|
+
} from "@struktoai/mirage-core";
|
|
428
|
+
async function rename(accessor, src, dst) {
|
|
429
|
+
const s = resolveSafe(accessor.root, src.mountPath);
|
|
430
|
+
const d = resolveSafe(accessor.root, dst.mountPath);
|
|
431
|
+
try {
|
|
432
|
+
await fsRename(s, d);
|
|
433
|
+
} catch (err) {
|
|
434
|
+
if (err.code === "ENOENT") {
|
|
435
|
+
throw enoent4(src);
|
|
436
|
+
}
|
|
437
|
+
throw err;
|
|
438
|
+
}
|
|
439
|
+
await invalidateAfterUnlink(src);
|
|
440
|
+
await invalidateAfterWrite5(dst);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// src/core/disk/rm.ts
|
|
444
|
+
import { rm } from "fs/promises";
|
|
445
|
+
import { invalidateAfterUnlink as invalidateAfterUnlink2 } from "@struktoai/mirage-core";
|
|
446
|
+
async function rmR(accessor, path9) {
|
|
447
|
+
const full = resolveSafe(accessor.root, path9.mountPath);
|
|
448
|
+
await rm(full, { recursive: true, force: true });
|
|
449
|
+
await invalidateAfterUnlink2(path9);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
// src/core/disk/rmdir.ts
|
|
453
|
+
import { rmdir as fsRmdir } from "fs/promises";
|
|
454
|
+
import { invalidateAfterUnlink as invalidateAfterUnlink3 } from "@struktoai/mirage-core";
|
|
455
|
+
async function rmdir(accessor, path9) {
|
|
456
|
+
const full = resolveSafe(accessor.root, path9.mountPath);
|
|
457
|
+
try {
|
|
458
|
+
await fsRmdir(full);
|
|
459
|
+
} catch (err) {
|
|
460
|
+
if (err.code === "ENOENT") return;
|
|
461
|
+
throw err;
|
|
462
|
+
}
|
|
463
|
+
await invalidateAfterUnlink3(path9);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// src/core/disk/set_attrs.ts
|
|
467
|
+
import { chmod, stat as fsStat2, utimes } from "fs/promises";
|
|
468
|
+
import { enoent as enoent5 } from "@struktoai/mirage-core";
|
|
469
|
+
async function setAttrs(accessor, path9, fields) {
|
|
470
|
+
const full = resolveSafe(accessor.root, path9.mountPath);
|
|
471
|
+
let st;
|
|
472
|
+
try {
|
|
473
|
+
st = await fsStat2(full);
|
|
474
|
+
} catch (err) {
|
|
475
|
+
if (err.code === "ENOENT") throw enoent5(path9);
|
|
476
|
+
throw err;
|
|
477
|
+
}
|
|
478
|
+
const residual = {};
|
|
479
|
+
if (fields.mode !== void 0) {
|
|
480
|
+
const keep2 = st.isDirectory() ? 448 : 384;
|
|
481
|
+
await chmod(full, fields.mode | keep2);
|
|
482
|
+
if ((fields.mode | keep2) !== fields.mode) residual.mode = fields.mode;
|
|
483
|
+
}
|
|
484
|
+
if (fields.uid !== void 0) residual.uid = fields.uid;
|
|
485
|
+
if (fields.gid !== void 0) residual.gid = fields.gid;
|
|
486
|
+
if (fields.atime !== void 0 || fields.mtime !== void 0) {
|
|
487
|
+
const newAtime = fields.atime !== void 0 ? new Date(fields.atime) : st.atime;
|
|
488
|
+
const newMtime = fields.mtime !== void 0 ? new Date(fields.mtime) : st.mtime;
|
|
489
|
+
await utimes(full, newAtime, newMtime);
|
|
490
|
+
}
|
|
491
|
+
return residual;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// src/core/disk/stream.ts
|
|
495
|
+
import { createReadStream } from "fs";
|
|
496
|
+
import { enoent as enoent6, recordStream, ResourceName as ResourceName4 } from "@struktoai/mirage-core";
|
|
497
|
+
async function* stream(accessor, path9) {
|
|
498
|
+
const virtual = path9.mountPath;
|
|
499
|
+
const full = resolveSafe(accessor.root, virtual);
|
|
500
|
+
const rec = recordStream("read", virtual, ResourceName4.DISK);
|
|
501
|
+
const rs = createReadStream(full, { highWaterMark: 65536 });
|
|
502
|
+
try {
|
|
503
|
+
for await (const chunk of rs) {
|
|
504
|
+
const buf = chunk;
|
|
505
|
+
const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
506
|
+
if (rec !== null) rec.bytes += u8.byteLength;
|
|
507
|
+
yield u8;
|
|
508
|
+
}
|
|
509
|
+
} catch (err) {
|
|
510
|
+
if (err.code === "ENOENT") {
|
|
511
|
+
throw enoent6(path9);
|
|
512
|
+
}
|
|
513
|
+
throw err;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
// src/core/disk/truncate.ts
|
|
518
|
+
import { readFile as readFile2, writeFile as writeFile2 } from "fs/promises";
|
|
519
|
+
import { invalidateAfterWrite as invalidateAfterWrite6 } from "@struktoai/mirage-core";
|
|
520
|
+
async function truncate(accessor, path9, length) {
|
|
521
|
+
const full = resolveSafe(accessor.root, path9.mountPath);
|
|
522
|
+
let data;
|
|
523
|
+
try {
|
|
524
|
+
data = await readFile2(full);
|
|
525
|
+
} catch (err) {
|
|
526
|
+
if (err.code === "ENOENT") {
|
|
527
|
+
data = Buffer.alloc(0);
|
|
528
|
+
} else {
|
|
529
|
+
throw err;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
const out = new Uint8Array(length);
|
|
533
|
+
out.set(data.subarray(0, Math.min(data.byteLength, length)));
|
|
534
|
+
await writeFile2(full, out);
|
|
535
|
+
await invalidateAfterWrite6(path9);
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
// src/core/disk/unlink.ts
|
|
539
|
+
import { unlink as fsUnlink } from "fs/promises";
|
|
540
|
+
import { invalidateAfterUnlink as invalidateAfterUnlink4 } from "@struktoai/mirage-core";
|
|
541
|
+
async function unlink(accessor, path9) {
|
|
542
|
+
const full = resolveSafe(accessor.root, path9.mountPath);
|
|
543
|
+
try {
|
|
544
|
+
await fsUnlink(full);
|
|
545
|
+
} catch (err) {
|
|
546
|
+
if (err.code === "ENOENT") return;
|
|
547
|
+
throw err;
|
|
548
|
+
}
|
|
549
|
+
await invalidateAfterUnlink4(path9);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// src/commands/builtin/disk/io.ts
|
|
553
|
+
var DISK_IO = {
|
|
554
|
+
readdir: readdir3,
|
|
555
|
+
readBytes: read,
|
|
556
|
+
readStream: stream,
|
|
557
|
+
stat,
|
|
558
|
+
isMounted: (a) => a.root !== "",
|
|
559
|
+
local: true,
|
|
560
|
+
maxGlobMatches: SCOPE_ERROR,
|
|
561
|
+
write: writeBytes,
|
|
562
|
+
exists,
|
|
563
|
+
mkdir: mkdir4,
|
|
564
|
+
unlink,
|
|
565
|
+
rmdir,
|
|
566
|
+
rmR,
|
|
567
|
+
rename,
|
|
568
|
+
copy,
|
|
569
|
+
create,
|
|
570
|
+
truncate,
|
|
571
|
+
append: appendBytes,
|
|
572
|
+
setAttrs,
|
|
573
|
+
find,
|
|
574
|
+
duTotal: du,
|
|
575
|
+
duAll
|
|
576
|
+
};
|
|
577
|
+
|
|
578
|
+
// src/commands/builtin/disk/index.ts
|
|
579
|
+
var DISK_COMMANDS = [
|
|
580
|
+
...makeFiletypeCommands({
|
|
581
|
+
resource: ResourceName5.DISK,
|
|
582
|
+
readBytes: read,
|
|
583
|
+
statEntry: stat
|
|
584
|
+
}),
|
|
585
|
+
...makeGenericCommands(ResourceName5.DISK, DISK_IO)
|
|
586
|
+
];
|
|
587
|
+
|
|
588
|
+
// src/accessor/disk.ts
|
|
589
|
+
import { Accessor } from "@struktoai/mirage-core";
|
|
590
|
+
var DiskAccessor = class extends Accessor {
|
|
591
|
+
root;
|
|
592
|
+
constructor(root) {
|
|
593
|
+
super();
|
|
594
|
+
this.root = root;
|
|
595
|
+
}
|
|
596
|
+
};
|
|
597
|
+
|
|
598
|
+
// src/ops/disk/index.ts
|
|
599
|
+
import { ResourceName as ResourceName6, makeGenericOps } from "@struktoai/mirage-core";
|
|
600
|
+
var DISK_OPS = makeGenericOps(ResourceName6.DISK, DISK_IO, {
|
|
601
|
+
filetypeRead: [".feather", ".hdf5", ".parquet"],
|
|
602
|
+
mkdirParents: true,
|
|
603
|
+
forwardIndex: false
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
// src/resource/disk/prompt.ts
|
|
607
|
+
var DISK_PROMPT = `{prefix}
|
|
608
|
+
Local disk filesystem. Mirrors the configured root directory.
|
|
609
|
+
Standard commands: ls, cat, head, tail, grep, wc, find, tree, mkdir, touch, cp, mv, rm, tee.`;
|
|
610
|
+
|
|
611
|
+
// src/resource/disk/disk.ts
|
|
612
|
+
var globCore = makeResolveGlob(readdir3, SCOPE_ERROR);
|
|
613
|
+
async function walkFiles(root, current, out) {
|
|
614
|
+
const entries = await readdir4(current, { withFileTypes: true });
|
|
615
|
+
for (const e of entries) {
|
|
616
|
+
const child = path8.join(current, e.name);
|
|
617
|
+
if (e.isDirectory()) {
|
|
618
|
+
await walkFiles(root, child, out);
|
|
619
|
+
} else if (e.isFile()) {
|
|
620
|
+
out.push(child);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
var DiskResource = class extends BaseResource {
|
|
625
|
+
kind = ResourceName7.DISK;
|
|
626
|
+
cachesReads = false;
|
|
627
|
+
indexTtl = 60;
|
|
628
|
+
prompt = DISK_PROMPT;
|
|
629
|
+
root;
|
|
630
|
+
accessor;
|
|
631
|
+
opsMap = {
|
|
632
|
+
read_bytes: read,
|
|
633
|
+
write: writeBytes,
|
|
634
|
+
readdir: readdir3,
|
|
635
|
+
stat,
|
|
636
|
+
unlink,
|
|
637
|
+
rmdir,
|
|
638
|
+
copy,
|
|
639
|
+
rename,
|
|
640
|
+
mkdir: mkdir4,
|
|
641
|
+
read_stream: stream,
|
|
642
|
+
rm_recursive: rmR,
|
|
643
|
+
du_total: du,
|
|
644
|
+
du_all: duAll,
|
|
645
|
+
create,
|
|
646
|
+
truncate,
|
|
647
|
+
exists,
|
|
648
|
+
find_flat: find,
|
|
649
|
+
append: appendBytes
|
|
650
|
+
};
|
|
651
|
+
constructor(options) {
|
|
652
|
+
super();
|
|
653
|
+
this.root = path8.resolve(options.root);
|
|
654
|
+
this.accessor = new DiskAccessor(this.root);
|
|
655
|
+
}
|
|
656
|
+
async open() {
|
|
657
|
+
await mkdir5(this.root, { recursive: true });
|
|
658
|
+
}
|
|
659
|
+
close() {
|
|
660
|
+
return Promise.resolve();
|
|
661
|
+
}
|
|
662
|
+
ops() {
|
|
663
|
+
return DISK_OPS;
|
|
664
|
+
}
|
|
665
|
+
commands() {
|
|
666
|
+
return DISK_COMMANDS;
|
|
667
|
+
}
|
|
668
|
+
streamPath(p) {
|
|
669
|
+
return stream(this.accessor, p);
|
|
670
|
+
}
|
|
671
|
+
readFile(p) {
|
|
672
|
+
return read(this.accessor, p);
|
|
673
|
+
}
|
|
674
|
+
writeFile(p, data) {
|
|
675
|
+
return writeBytes(this.accessor, p, data);
|
|
676
|
+
}
|
|
677
|
+
appendFile(p, data) {
|
|
678
|
+
return appendBytes(this.accessor, p, data);
|
|
679
|
+
}
|
|
680
|
+
readdir(p) {
|
|
681
|
+
return readdir3(this.accessor, p, this.index);
|
|
682
|
+
}
|
|
683
|
+
stat(p) {
|
|
684
|
+
return stat(this.accessor, p);
|
|
685
|
+
}
|
|
686
|
+
exists(p) {
|
|
687
|
+
return exists(this.accessor, p);
|
|
688
|
+
}
|
|
689
|
+
mkdir(p, options) {
|
|
690
|
+
return mkdir4(this.accessor, p, options?.recursive === true);
|
|
691
|
+
}
|
|
692
|
+
rmdir(p) {
|
|
693
|
+
return rmdir(this.accessor, p);
|
|
694
|
+
}
|
|
695
|
+
unlink(p) {
|
|
696
|
+
return unlink(this.accessor, p);
|
|
697
|
+
}
|
|
698
|
+
rename(src, dst) {
|
|
699
|
+
return rename(this.accessor, src, dst);
|
|
700
|
+
}
|
|
701
|
+
truncate(p, length) {
|
|
702
|
+
return truncate(this.accessor, p, length);
|
|
703
|
+
}
|
|
704
|
+
copy(src, dst) {
|
|
705
|
+
return copy(this.accessor, src, dst);
|
|
706
|
+
}
|
|
707
|
+
rmR(p) {
|
|
708
|
+
return rmR(this.accessor, p);
|
|
709
|
+
}
|
|
710
|
+
du(p) {
|
|
711
|
+
return du(this.accessor, p);
|
|
712
|
+
}
|
|
713
|
+
find(p, options = {}) {
|
|
714
|
+
return find(this.accessor, p, options);
|
|
715
|
+
}
|
|
716
|
+
glob(paths, prefix = "") {
|
|
717
|
+
const effective = prefix ? paths.map(
|
|
718
|
+
(p) => mountPrefixOf2(p.virtual, p.resourcePath) ? p : new PathSpec({
|
|
719
|
+
virtual: p.virtual,
|
|
720
|
+
directory: p.directory,
|
|
721
|
+
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
722
|
+
resolved: p.resolved,
|
|
723
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
724
|
+
})
|
|
725
|
+
) : paths;
|
|
726
|
+
return globCore(this.accessor, effective, this.index);
|
|
727
|
+
}
|
|
728
|
+
async getState() {
|
|
729
|
+
await mkdir5(this.root, { recursive: true });
|
|
730
|
+
const files = {};
|
|
731
|
+
const modes = {};
|
|
732
|
+
const fileList = [];
|
|
733
|
+
await walkFiles(this.root, this.root, fileList);
|
|
734
|
+
for (const full of fileList) {
|
|
735
|
+
const rel = path8.relative(this.root, full).split(path8.sep).join("/");
|
|
736
|
+
const data = await readFile3(full);
|
|
737
|
+
files[rel] = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
738
|
+
modes[rel] = (await fsStat3(full)).mode & 4095;
|
|
739
|
+
}
|
|
740
|
+
return {
|
|
741
|
+
type: this.kind,
|
|
742
|
+
files,
|
|
743
|
+
modes
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
async loadState(state) {
|
|
747
|
+
await mkdir5(this.root, { recursive: true });
|
|
748
|
+
for (const [rel, data] of Object.entries(state.files)) {
|
|
749
|
+
const full = path8.join(this.root, rel);
|
|
750
|
+
await mkdir5(path8.dirname(full), { recursive: true });
|
|
751
|
+
await writeFile3(full, data);
|
|
752
|
+
const mode = state.modes?.[rel];
|
|
753
|
+
if (mode !== void 0) await chmod2(full, mode);
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
export {
|
|
759
|
+
DISK_COMMANDS,
|
|
760
|
+
DISK_OPS,
|
|
761
|
+
DISK_PROMPT,
|
|
762
|
+
DiskResource
|
|
763
|
+
};
|
|
764
|
+
//# sourceMappingURL=chunk-W5ZLIQFR.js.map
|