@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.
Files changed (433) hide show
  1. package/README.md +1 -1
  2. package/dist/aliyun-PGI57A43.js +10 -0
  3. package/dist/backblaze-TSPL6Y56.js +10 -0
  4. package/dist/box-7XTZYDSO.js +8 -0
  5. package/dist/cas.lua +15 -0
  6. package/dist/ceph-C265UI5T.js +10 -0
  7. package/dist/{chunk-IQVNVTOP.js → chunk-25W4XQJZ.js} +5 -5
  8. package/dist/{chunk-QGRDPSAH.js → chunk-2ERLWAGG.js} +4 -2
  9. package/dist/chunk-2ERLWAGG.js.map +1 -0
  10. package/dist/{chunk-NJMGCT63.js → chunk-2QNPKPZZ.js} +7 -2
  11. package/dist/chunk-2QNPKPZZ.js.map +1 -0
  12. package/dist/{chunk-ZNWVJ6UW.js → chunk-3ASOQTZB.js} +7 -2
  13. package/dist/chunk-3ASOQTZB.js.map +1 -0
  14. package/dist/{chunk-ERELJ7BS.js → chunk-3JZN3GYO.js} +14 -13
  15. package/dist/chunk-3JZN3GYO.js.map +1 -0
  16. package/dist/{chunk-DTAY7LPC.js → chunk-4GYB7DGC.js} +295 -706
  17. package/dist/chunk-4GYB7DGC.js.map +1 -0
  18. package/dist/{chunk-G5BZE7UA.js → chunk-4M73WHIE.js} +3 -3
  19. package/dist/{chunk-Q6CDMOM6.js → chunk-4X6CLF4F.js} +3 -3
  20. package/dist/{chunk-3IJSIVKT.js → chunk-5I7Q7RHW.js} +3 -3
  21. package/dist/{chunk-YPT4JBUY.js → chunk-5YRWF5RP.js} +18 -16
  22. package/dist/chunk-5YRWF5RP.js.map +1 -0
  23. package/dist/chunk-5ZHNPNDD.js +944 -0
  24. package/dist/chunk-5ZHNPNDD.js.map +1 -0
  25. package/dist/{chunk-VGLHY6BK.js → chunk-AULFV3KY.js} +1 -2
  26. package/dist/chunk-AULFV3KY.js.map +1 -0
  27. package/dist/{chunk-A4Z6DZ22.js → chunk-BWLUBJQG.js} +20 -16
  28. package/dist/chunk-BWLUBJQG.js.map +1 -0
  29. package/dist/{chunk-OYV2DN66.js → chunk-BWWU5T2D.js} +3 -3
  30. package/dist/chunk-C7TNKIK5.js +39 -0
  31. package/dist/chunk-C7TNKIK5.js.map +1 -0
  32. package/dist/{chunk-HEHERHQ5.js → chunk-CB76WPUS.js} +13 -14
  33. package/dist/chunk-CB76WPUS.js.map +1 -0
  34. package/dist/chunk-CGGO5NKD.js +1194 -0
  35. package/dist/chunk-CGGO5NKD.js.map +1 -0
  36. package/dist/{chunk-B2ZOKNN4.js → chunk-CQCTCW4S.js} +1 -2
  37. package/dist/chunk-CQCTCW4S.js.map +1 -0
  38. package/dist/{chunk-AJICZLHT.js → chunk-CXQGMFI7.js} +3 -3
  39. package/dist/{chunk-LW25LMIH.js → chunk-D3U7VQCG.js} +1 -2
  40. package/dist/{chunk-LW25LMIH.js.map → chunk-D3U7VQCG.js.map} +1 -1
  41. package/dist/{chunk-RQYEEA2O.js → chunk-DXU7NZPH.js} +3 -3
  42. package/dist/{chunk-XGJ2QERC.js → chunk-E3KXVEYI.js} +8 -4
  43. package/dist/chunk-E3KXVEYI.js.map +1 -0
  44. package/dist/{chunk-L6JPBJAS.js → chunk-EGZNOUMH.js} +3 -3
  45. package/dist/{chunk-DNBAMB5J.js → chunk-EVK6HH6Z.js} +1 -2
  46. package/dist/{chunk-DNBAMB5J.js.map → chunk-EVK6HH6Z.js.map} +1 -1
  47. package/dist/{chunk-BYTU2YC3.js → chunk-F5NWRF32.js} +3 -3
  48. package/dist/{chunk-RLGWMJD3.js → chunk-FRGTDZQT.js} +146 -11
  49. package/dist/chunk-FRGTDZQT.js.map +1 -0
  50. package/dist/{chunk-DYXEITK3.js → chunk-GF75O2EN.js} +4 -2
  51. package/dist/chunk-GF75O2EN.js.map +1 -0
  52. package/dist/{chunk-W7FLHT65.js → chunk-GTAS3QVC.js} +1 -2
  53. package/dist/{chunk-W7FLHT65.js.map → chunk-GTAS3QVC.js.map} +1 -1
  54. package/dist/{chunk-RQK5UPMP.js → chunk-H62XQZUM.js} +4 -3
  55. package/dist/chunk-H62XQZUM.js.map +1 -0
  56. package/dist/{chunk-UT2OPSN4.js → chunk-HCU3B6FW.js} +1 -2
  57. package/dist/chunk-HCU3B6FW.js.map +1 -0
  58. package/dist/chunk-HEDE2377.js +754 -0
  59. package/dist/chunk-HEDE2377.js.map +1 -0
  60. package/dist/{chunk-JZQHKDSY.js → chunk-HGIPWY5Y.js} +22 -11
  61. package/dist/chunk-HGIPWY5Y.js.map +1 -0
  62. package/dist/{chunk-Q2IAILVC.js → chunk-HSD24IP2.js} +8 -4
  63. package/dist/chunk-HSD24IP2.js.map +1 -0
  64. package/dist/{chunk-5YOCVEUB.js → chunk-HWQPEBID.js} +19 -15
  65. package/dist/chunk-HWQPEBID.js.map +1 -0
  66. package/dist/{chunk-SFUCUARB.js → chunk-IEHPTILN.js} +4 -4
  67. package/dist/chunk-IEHPTILN.js.map +1 -0
  68. package/dist/{chunk-C6NHEDHY.js → chunk-IEVLWEBO.js} +15 -14
  69. package/dist/chunk-IEVLWEBO.js.map +1 -0
  70. package/dist/{chunk-YUK3X3B4.js → chunk-IKJQOYI4.js} +1 -2
  71. package/dist/{chunk-YUK3X3B4.js.map → chunk-IKJQOYI4.js.map} +1 -1
  72. package/dist/{chunk-MHCMHKM6.js → chunk-IUXXZHY3.js} +17 -23
  73. package/dist/chunk-IUXXZHY3.js.map +1 -0
  74. package/dist/{chunk-ABTEGAFB.js → chunk-JBDFYIN2.js} +13 -14
  75. package/dist/chunk-JBDFYIN2.js.map +1 -0
  76. package/dist/{chunk-A7X4L4JM.js → chunk-JEBH5APX.js} +15 -15
  77. package/dist/chunk-JEBH5APX.js.map +1 -0
  78. package/dist/{chunk-H3BST2LI.js → chunk-JHI2PHHD.js} +1 -2
  79. package/dist/{chunk-H3BST2LI.js.map → chunk-JHI2PHHD.js.map} +1 -1
  80. package/dist/{chunk-EGB7V74Z.js → chunk-KAWDDS27.js} +1 -3
  81. package/dist/chunk-KAWDDS27.js.map +1 -0
  82. package/dist/{chunk-DP2PP5V2.js → chunk-KGC2OGXI.js} +5 -4
  83. package/dist/chunk-KGC2OGXI.js.map +1 -0
  84. package/dist/{chunk-FXFDBF3P.js → chunk-L4GMDSMB.js} +3 -3
  85. package/dist/{chunk-O7ODGJYL.js → chunk-L7FEZ7LU.js} +3 -3
  86. package/dist/{chunk-54NTYJEO.js → chunk-LPDLPRPS.js} +1 -3
  87. package/dist/{chunk-54NTYJEO.js.map → chunk-LPDLPRPS.js.map} +1 -1
  88. package/dist/{chunk-UGK4TAVK.js → chunk-LPLZLSMK.js} +1 -2
  89. package/dist/chunk-LPLZLSMK.js.map +1 -0
  90. package/dist/{chunk-5DLOHQJ2.js → chunk-M6E7VK4D.js} +14 -14
  91. package/dist/chunk-M6E7VK4D.js.map +1 -0
  92. package/dist/{chunk-2CC5VW7K.js → chunk-MIQ3ECZM.js} +4 -2
  93. package/dist/chunk-MIQ3ECZM.js.map +1 -0
  94. package/dist/chunk-MRXTUFBZ.js +30 -0
  95. package/dist/chunk-MRXTUFBZ.js.map +1 -0
  96. package/dist/{chunk-RO5IQEDQ.js → chunk-NJ42VNXG.js} +1 -2
  97. package/dist/chunk-NJ42VNXG.js.map +1 -0
  98. package/dist/{chunk-3T3RMDNX.js → chunk-NLXJMXVE.js} +3 -3
  99. package/dist/{chunk-E2ISWXLB.js → chunk-OQKNDS66.js} +1 -1
  100. package/dist/{chunk-E2ISWXLB.js.map → chunk-OQKNDS66.js.map} +1 -1
  101. package/dist/chunk-OSVZKYXS.js +946 -0
  102. package/dist/chunk-OSVZKYXS.js.map +1 -0
  103. package/dist/{chunk-LYDMMNL2.js → chunk-RHUEV4I7.js} +12 -13
  104. package/dist/chunk-RHUEV4I7.js.map +1 -0
  105. package/dist/{chunk-JALIYI6M.js → chunk-S4KVLPBR.js} +7 -2
  106. package/dist/chunk-S4KVLPBR.js.map +1 -0
  107. package/dist/{chunk-XRU5WXZX.js → chunk-SAOQW6ZJ.js} +15 -15
  108. package/dist/chunk-SAOQW6ZJ.js.map +1 -0
  109. package/dist/{chunk-CASCUFK2.js → chunk-SI4GMRXD.js} +14 -15
  110. package/dist/chunk-SI4GMRXD.js.map +1 -0
  111. package/dist/{chunk-HQ4KWN76.js → chunk-SYMNWNC3.js} +3 -3
  112. package/dist/{chunk-PJBQKMCD.js → chunk-TUNR4VUM.js} +3 -3
  113. package/dist/{chunk-XHCBHYN4.js → chunk-UAJYJP5C.js} +7 -2
  114. package/dist/chunk-UAJYJP5C.js.map +1 -0
  115. package/dist/{chunk-OPYQ5KIO.js → chunk-UYA3XL3J.js} +4 -2
  116. package/dist/chunk-UYA3XL3J.js.map +1 -0
  117. package/dist/{chunk-WL7HS7EM.js → chunk-V7JVMG63.js} +3 -3
  118. package/dist/{chunk-LAJJPLEV.js → chunk-VBYIDRNU.js} +7 -3
  119. package/dist/chunk-VBYIDRNU.js.map +1 -0
  120. package/dist/{chunk-NHS7WLEQ.js → chunk-VHED2STW.js} +11 -8
  121. package/dist/chunk-VHED2STW.js.map +1 -0
  122. package/dist/{chunk-JZT4QGIP.js → chunk-VIICUPWQ.js} +1 -2
  123. package/dist/{chunk-JZT4QGIP.js.map → chunk-VIICUPWQ.js.map} +1 -1
  124. package/dist/{chunk-TRTUHCS4.js → chunk-VLRSOWHP.js} +17 -15
  125. package/dist/chunk-VLRSOWHP.js.map +1 -0
  126. package/dist/chunk-W5ZLIQFR.js +764 -0
  127. package/dist/chunk-W5ZLIQFR.js.map +1 -0
  128. package/dist/{chunk-YGZMVNN5.js → chunk-WTSSEUOZ.js} +7 -2
  129. package/dist/chunk-WTSSEUOZ.js.map +1 -0
  130. package/dist/{chunk-OHROA3FQ.js → chunk-WWP2STF5.js} +7 -2
  131. package/dist/chunk-WWP2STF5.js.map +1 -0
  132. package/dist/{chunk-C6NHFMIP.js → chunk-XADEMW6B.js} +3 -3
  133. package/dist/{chunk-KTNDT45N.js → chunk-XEMLYWHK.js} +3 -3
  134. package/dist/{chunk-OZAEWZZ3.js → chunk-XFSEADPC.js} +6 -2
  135. package/dist/chunk-XFSEADPC.js.map +1 -0
  136. package/dist/{chunk-TWGVQLG2.js → chunk-XUUSWR4U.js} +1 -2
  137. package/dist/{chunk-TWGVQLG2.js.map → chunk-XUUSWR4U.js.map} +1 -1
  138. package/dist/{chunk-XLQI4IT2.js → chunk-YBVMZ7SR.js} +7 -2
  139. package/dist/chunk-YBVMZ7SR.js.map +1 -0
  140. package/dist/{chunk-E7RW3SBV.js → chunk-YRJICL2Q.js} +15 -15
  141. package/dist/chunk-YRJICL2Q.js.map +1 -0
  142. package/dist/{chunk-B6SXRCBO.js → chunk-ZM44MGC5.js} +3 -3
  143. package/dist/{chunk-YAVGCQUP.js → chunk-ZMREYTHA.js} +16 -15
  144. package/dist/chunk-ZMREYTHA.js.map +1 -0
  145. package/dist/{chunk-H3I2KZIY.js → chunk-ZPB3SLPK.js} +1 -2
  146. package/dist/{chunk-H3I2KZIY.js.map → chunk-ZPB3SLPK.js.map} +1 -1
  147. package/dist/chunk-ZPZQXHW2.js +1230 -0
  148. package/dist/chunk-ZPZQXHW2.js.map +1 -0
  149. package/dist/{config-34LHOGLM.js → config-2LASFFRD.js} +2 -4
  150. package/dist/config-3WDIJPTG.js +9 -0
  151. package/dist/config-4QV4QYI5.js +9 -0
  152. package/dist/{config-ZFJYQZCH.js → config-54USUVSE.js} +2 -4
  153. package/dist/config-5ZXN2T2H.js +9 -0
  154. package/dist/config-A2GQYJDB.js +9 -0
  155. package/dist/config-BBOLI7VE.js +9 -0
  156. package/dist/{config-VM526IKB.js → config-BIBFLUIR.js} +2 -4
  157. package/dist/{config-EO23EY62.js → config-CPYFOUQO.js} +2 -4
  158. package/dist/{config-3IVQJBNW.js → config-DWSJL3NH.js} +2 -4
  159. package/dist/config-E22XAGYN.js +9 -0
  160. package/dist/config-EHE52ZTK.js +9 -0
  161. package/dist/{config-GE4W4ZJC.js → config-EX3ZJTZI.js} +2 -4
  162. package/dist/{config-QNMKWJ4M.js → config-FRK7ZL37.js} +2 -4
  163. package/dist/{config-LHFFXVYI.js → config-HQXNFQZS.js} +2 -4
  164. package/dist/config-HTXOOAOD.js +9 -0
  165. package/dist/{config-HKRMKD76.js → config-IPNWAJHH.js} +2 -4
  166. package/dist/config-J2C53GOT.js +9 -0
  167. package/dist/config-K63RX6EU.js +9 -0
  168. package/dist/config-L7SBSH5L.js +9 -0
  169. package/dist/config-LEALEMKA.js +9 -0
  170. package/dist/{config-IVY5EQQ2.js → config-M3Z47VYU.js} +2 -4
  171. package/dist/{config-EIHSP5DZ.js → config-MZM3IPFM.js} +2 -4
  172. package/dist/{config-GHRUKEQ6.js → config-OJ2BPESH.js} +2 -4
  173. package/dist/{config-WDAZFXYD.js → config-QO2XUME4.js} +2 -4
  174. package/dist/config-QWQGOXQ5.js +9 -0
  175. package/dist/config-RI7IEZUF.js +9 -0
  176. package/dist/{config-CVZ2AGCO.js → config-SPW6NESU.js} +2 -6
  177. package/dist/{config-QAA646XB.js → config-T2IUIU5C.js} +2 -4
  178. package/dist/{config-NV5WXP64.js → config-UU27ALAA.js} +2 -4
  179. package/dist/config-VKKZGC7V.js +9 -0
  180. package/dist/config-W7EVPJNK.js +11 -0
  181. package/dist/config-WKQ3FGTZ.js +9 -0
  182. package/dist/config-WVILHDFV.js +11 -0
  183. package/dist/{config-Q45Y46YT.js → config-XU6D5C7E.js} +2 -4
  184. package/dist/databricks_volume-ETRDJVVQ.js +7 -0
  185. package/dist/digitalocean-QP72DR4J.js +10 -0
  186. package/dist/discord-BSN5RB3E.js +8 -0
  187. package/dist/disk-24NWTN2I.js +7 -0
  188. package/dist/dropbox-OSTZXSIE.js +8 -0
  189. package/dist/email-4ZFPSWIN.js +8 -0
  190. package/dist/gcs-PFWR6MIW.js +10 -0
  191. package/dist/gdocs-GPAZRQG5.js +8 -0
  192. package/dist/gdrive-XSX6A7B3.js +8 -0
  193. package/dist/github-EQ4NXUTA.js +8 -0
  194. package/dist/github_ci-QL5B2Q2N.js +8 -0
  195. package/dist/gmail-2TBT4CVH.js +8 -0
  196. package/dist/gridfs-KZRZ6SIB.js +9 -0
  197. package/dist/gsheets-N53WEXN2.js +8 -0
  198. package/dist/gslides-TATSARTH.js +8 -0
  199. package/dist/hf_buckets-BK7NGJWS.js +10 -0
  200. package/dist/hf_datasets-UQ5QGM4L.js +10 -0
  201. package/dist/hf_models-75LFCQCS.js +10 -0
  202. package/dist/hf_spaces-6T2KB3UC.js +10 -0
  203. package/dist/index.d.ts +599 -79
  204. package/dist/index.js +1515 -422
  205. package/dist/index.js.map +1 -1
  206. package/dist/langfuse-AMQCQWNE.js +8 -0
  207. package/dist/linear-V3TXO6CV.js +8 -0
  208. package/dist/minio-IZRZY4C5.js +10 -0
  209. package/dist/mongodb-VMKPQCPX.js +7 -0
  210. package/dist/nextcloud-5RHQCGDO.js +9 -0
  211. package/dist/notion-6PPNTQFM.js +8 -0
  212. package/dist/oci-CKYBSFZJ.js +10 -0
  213. package/dist/postgres-WIQBVL5M.js +7 -0
  214. package/dist/qingstor-AP4IIPLY.js +10 -0
  215. package/dist/r2-C4XGEWQY.js +10 -0
  216. package/dist/redis-6D55Q2WB.js +8 -0
  217. package/dist/s3-XQBI2CXN.js +8 -0
  218. package/dist/scaleway-SEZJVURB.js +10 -0
  219. package/dist/seaweedfs-3XYIAFU2.js +10 -0
  220. package/dist/slack-ZHXDJQY4.js +8 -0
  221. package/dist/ssh-X2MO7JOV.js +8 -0
  222. package/dist/supabase-BBM44UTM.js +10 -0
  223. package/dist/supabase-BBM44UTM.js.map +1 -0
  224. package/dist/tencent-X72USLJ7.js +10 -0
  225. package/dist/tencent-X72USLJ7.js.map +1 -0
  226. package/dist/trello-EER5NG7L.js +8 -0
  227. package/dist/trello-EER5NG7L.js.map +1 -0
  228. package/dist/wasabi-O4MVIUFG.js +10 -0
  229. package/dist/wasabi-O4MVIUFG.js.map +1 -0
  230. package/package.json +9 -5
  231. package/dist/aliyun-TMZRUYCG.js +0 -10
  232. package/dist/backblaze-OHW57DLK.js +0 -10
  233. package/dist/box-UXTCAFOZ.js +0 -8
  234. package/dist/ceph-TNN4I2FT.js +0 -10
  235. package/dist/chunk-2CC5VW7K.js.map +0 -1
  236. package/dist/chunk-5DLOHQJ2.js.map +0 -1
  237. package/dist/chunk-5HCVKTP3.js +0 -2086
  238. package/dist/chunk-5HCVKTP3.js.map +0 -1
  239. package/dist/chunk-5YOCVEUB.js.map +0 -1
  240. package/dist/chunk-A4Z6DZ22.js.map +0 -1
  241. package/dist/chunk-A7X4L4JM.js.map +0 -1
  242. package/dist/chunk-ABTEGAFB.js.map +0 -1
  243. package/dist/chunk-B2ZOKNN4.js.map +0 -1
  244. package/dist/chunk-C6NHEDHY.js.map +0 -1
  245. package/dist/chunk-CASCUFK2.js.map +0 -1
  246. package/dist/chunk-DP2PP5V2.js.map +0 -1
  247. package/dist/chunk-DTAY7LPC.js.map +0 -1
  248. package/dist/chunk-DYXEITK3.js.map +0 -1
  249. package/dist/chunk-E7RW3SBV.js.map +0 -1
  250. package/dist/chunk-EGB7V74Z.js.map +0 -1
  251. package/dist/chunk-ERELJ7BS.js.map +0 -1
  252. package/dist/chunk-HEHERHQ5.js.map +0 -1
  253. package/dist/chunk-JALIYI6M.js.map +0 -1
  254. package/dist/chunk-JZQHKDSY.js.map +0 -1
  255. package/dist/chunk-LAJJPLEV.js.map +0 -1
  256. package/dist/chunk-LYDMMNL2.js.map +0 -1
  257. package/dist/chunk-MHCMHKM6.js.map +0 -1
  258. package/dist/chunk-N72CAZEH.js +0 -1990
  259. package/dist/chunk-N72CAZEH.js.map +0 -1
  260. package/dist/chunk-NHS7WLEQ.js.map +0 -1
  261. package/dist/chunk-NJMGCT63.js.map +0 -1
  262. package/dist/chunk-OHROA3FQ.js.map +0 -1
  263. package/dist/chunk-OPYQ5KIO.js.map +0 -1
  264. package/dist/chunk-OZAEWZZ3.js.map +0 -1
  265. package/dist/chunk-PBBG7VFT.js +0 -1896
  266. package/dist/chunk-PBBG7VFT.js.map +0 -1
  267. package/dist/chunk-Q2IAILVC.js.map +0 -1
  268. package/dist/chunk-QGRDPSAH.js.map +0 -1
  269. package/dist/chunk-RLGWMJD3.js.map +0 -1
  270. package/dist/chunk-RO5IQEDQ.js.map +0 -1
  271. package/dist/chunk-RQK5UPMP.js.map +0 -1
  272. package/dist/chunk-SFUCUARB.js.map +0 -1
  273. package/dist/chunk-TRTUHCS4.js.map +0 -1
  274. package/dist/chunk-U6QSXTUS.js +0 -7
  275. package/dist/chunk-U6QSXTUS.js.map +0 -1
  276. package/dist/chunk-UGK4TAVK.js.map +0 -1
  277. package/dist/chunk-UT2OPSN4.js.map +0 -1
  278. package/dist/chunk-VGLHY6BK.js.map +0 -1
  279. package/dist/chunk-WSGEIVY3.js +0 -1766
  280. package/dist/chunk-WSGEIVY3.js.map +0 -1
  281. package/dist/chunk-XGJ2QERC.js.map +0 -1
  282. package/dist/chunk-XHCBHYN4.js.map +0 -1
  283. package/dist/chunk-XLQI4IT2.js.map +0 -1
  284. package/dist/chunk-XRU5WXZX.js.map +0 -1
  285. package/dist/chunk-YAVGCQUP.js.map +0 -1
  286. package/dist/chunk-YGZMVNN5.js.map +0 -1
  287. package/dist/chunk-YPT4JBUY.js.map +0 -1
  288. package/dist/chunk-ZNWVJ6UW.js.map +0 -1
  289. package/dist/config-3BBWD5AB.js +0 -11
  290. package/dist/config-4UDVSUQJ.js +0 -11
  291. package/dist/config-CMDBAPDH.js +0 -11
  292. package/dist/config-D3RLSPNF.js +0 -11
  293. package/dist/config-DG65OEG3.js +0 -11
  294. package/dist/config-GCQK6NJY.js +0 -11
  295. package/dist/config-GVH27UPE.js +0 -11
  296. package/dist/config-HXVYIXP5.js +0 -11
  297. package/dist/config-IDZMEW73.js +0 -11
  298. package/dist/config-IJJXGLBQ.js +0 -11
  299. package/dist/config-KJOLGVB2.js +0 -11
  300. package/dist/config-KMVCVBYN.js +0 -15
  301. package/dist/config-KYTRXAB2.js +0 -15
  302. package/dist/config-OT2TQQCN.js +0 -11
  303. package/dist/config-QWCY3LBQ.js +0 -11
  304. package/dist/config-ZV6G2ZEC.js +0 -11
  305. package/dist/databricks_volume-HNQ4DJVJ.js +0 -7
  306. package/dist/digitalocean-6SPR4S7V.js +0 -10
  307. package/dist/discord-SAV2RBJV.js +0 -8
  308. package/dist/disk-POACMF4G.js +0 -8
  309. package/dist/dropbox-CQ7MTYX2.js +0 -8
  310. package/dist/email-KBQ7CXS7.js +0 -8
  311. package/dist/gcs-SMIE4VMT.js +0 -10
  312. package/dist/gdocs-X5Y2SIQX.js +0 -8
  313. package/dist/gdrive-SIQPRIGI.js +0 -8
  314. package/dist/github-KBHWANKQ.js +0 -8
  315. package/dist/github_ci-HPITNK37.js +0 -8
  316. package/dist/gmail-DKHAGJNX.js +0 -8
  317. package/dist/gsheets-ZSUDIWGK.js +0 -8
  318. package/dist/gslides-GYXM7IMJ.js +0 -8
  319. package/dist/hf_buckets-RIOMV7WG.js +0 -10
  320. package/dist/hf_datasets-QF4BQ3OK.js +0 -10
  321. package/dist/hf_models-62GC2HPZ.js +0 -10
  322. package/dist/hf_spaces-NVSMUNRM.js +0 -10
  323. package/dist/langfuse-HUAYVPHF.js +0 -8
  324. package/dist/linear-2MM55KBC.js +0 -8
  325. package/dist/minio-L3XE6PQS.js +0 -10
  326. package/dist/mongodb-ZOX4FRHJ.js +0 -7
  327. package/dist/notion-UK4GTMT4.js +0 -8
  328. package/dist/oci-NURLWPL2.js +0 -10
  329. package/dist/postgres-JNFMPAO2.js +0 -7
  330. package/dist/qingstor-W55D5YFO.js +0 -10
  331. package/dist/r2-FSZK7IFI.js +0 -10
  332. package/dist/redis-S6GIPA4Z.js +0 -8
  333. package/dist/s3-GMPUJ65D.js +0 -8
  334. package/dist/scaleway-5VM55Y6D.js +0 -10
  335. package/dist/seaweedfs-J3EPUEPE.js +0 -10
  336. package/dist/slack-FVBXY7KD.js +0 -8
  337. package/dist/ssh-GCXETJ3Z.js +0 -9
  338. package/dist/supabase-HLWNHBBE.js +0 -10
  339. package/dist/tencent-YDO73XBD.js +0 -10
  340. package/dist/trello-CQ53BQUL.js +0 -8
  341. package/dist/wasabi-SOZKPMRQ.js +0 -10
  342. /package/dist/{aliyun-TMZRUYCG.js.map → aliyun-PGI57A43.js.map} +0 -0
  343. /package/dist/{backblaze-OHW57DLK.js.map → backblaze-TSPL6Y56.js.map} +0 -0
  344. /package/dist/{box-UXTCAFOZ.js.map → box-7XTZYDSO.js.map} +0 -0
  345. /package/dist/{ceph-TNN4I2FT.js.map → ceph-C265UI5T.js.map} +0 -0
  346. /package/dist/{chunk-IQVNVTOP.js.map → chunk-25W4XQJZ.js.map} +0 -0
  347. /package/dist/{chunk-G5BZE7UA.js.map → chunk-4M73WHIE.js.map} +0 -0
  348. /package/dist/{chunk-Q6CDMOM6.js.map → chunk-4X6CLF4F.js.map} +0 -0
  349. /package/dist/{chunk-3IJSIVKT.js.map → chunk-5I7Q7RHW.js.map} +0 -0
  350. /package/dist/{chunk-OYV2DN66.js.map → chunk-BWWU5T2D.js.map} +0 -0
  351. /package/dist/{chunk-AJICZLHT.js.map → chunk-CXQGMFI7.js.map} +0 -0
  352. /package/dist/{chunk-RQYEEA2O.js.map → chunk-DXU7NZPH.js.map} +0 -0
  353. /package/dist/{chunk-L6JPBJAS.js.map → chunk-EGZNOUMH.js.map} +0 -0
  354. /package/dist/{chunk-BYTU2YC3.js.map → chunk-F5NWRF32.js.map} +0 -0
  355. /package/dist/{chunk-FXFDBF3P.js.map → chunk-L4GMDSMB.js.map} +0 -0
  356. /package/dist/{chunk-O7ODGJYL.js.map → chunk-L7FEZ7LU.js.map} +0 -0
  357. /package/dist/{chunk-3T3RMDNX.js.map → chunk-NLXJMXVE.js.map} +0 -0
  358. /package/dist/{chunk-HQ4KWN76.js.map → chunk-SYMNWNC3.js.map} +0 -0
  359. /package/dist/{chunk-PJBQKMCD.js.map → chunk-TUNR4VUM.js.map} +0 -0
  360. /package/dist/{chunk-WL7HS7EM.js.map → chunk-V7JVMG63.js.map} +0 -0
  361. /package/dist/{chunk-C6NHFMIP.js.map → chunk-XADEMW6B.js.map} +0 -0
  362. /package/dist/{chunk-KTNDT45N.js.map → chunk-XEMLYWHK.js.map} +0 -0
  363. /package/dist/{chunk-B6SXRCBO.js.map → chunk-ZM44MGC5.js.map} +0 -0
  364. /package/dist/{config-34LHOGLM.js.map → config-2LASFFRD.js.map} +0 -0
  365. /package/dist/{config-3BBWD5AB.js.map → config-3WDIJPTG.js.map} +0 -0
  366. /package/dist/{config-3IVQJBNW.js.map → config-4QV4QYI5.js.map} +0 -0
  367. /package/dist/{config-4UDVSUQJ.js.map → config-54USUVSE.js.map} +0 -0
  368. /package/dist/{config-CMDBAPDH.js.map → config-5ZXN2T2H.js.map} +0 -0
  369. /package/dist/{config-CVZ2AGCO.js.map → config-A2GQYJDB.js.map} +0 -0
  370. /package/dist/{config-D3RLSPNF.js.map → config-BBOLI7VE.js.map} +0 -0
  371. /package/dist/{config-DG65OEG3.js.map → config-BIBFLUIR.js.map} +0 -0
  372. /package/dist/{config-EIHSP5DZ.js.map → config-CPYFOUQO.js.map} +0 -0
  373. /package/dist/{config-EO23EY62.js.map → config-DWSJL3NH.js.map} +0 -0
  374. /package/dist/{config-GCQK6NJY.js.map → config-E22XAGYN.js.map} +0 -0
  375. /package/dist/{config-GE4W4ZJC.js.map → config-EHE52ZTK.js.map} +0 -0
  376. /package/dist/{config-GHRUKEQ6.js.map → config-EX3ZJTZI.js.map} +0 -0
  377. /package/dist/{config-GVH27UPE.js.map → config-FRK7ZL37.js.map} +0 -0
  378. /package/dist/{config-HKRMKD76.js.map → config-HQXNFQZS.js.map} +0 -0
  379. /package/dist/{config-HXVYIXP5.js.map → config-HTXOOAOD.js.map} +0 -0
  380. /package/dist/{config-IDZMEW73.js.map → config-IPNWAJHH.js.map} +0 -0
  381. /package/dist/{config-IJJXGLBQ.js.map → config-J2C53GOT.js.map} +0 -0
  382. /package/dist/{config-IVY5EQQ2.js.map → config-K63RX6EU.js.map} +0 -0
  383. /package/dist/{config-KJOLGVB2.js.map → config-L7SBSH5L.js.map} +0 -0
  384. /package/dist/{config-KMVCVBYN.js.map → config-LEALEMKA.js.map} +0 -0
  385. /package/dist/{config-KYTRXAB2.js.map → config-M3Z47VYU.js.map} +0 -0
  386. /package/dist/{config-LHFFXVYI.js.map → config-MZM3IPFM.js.map} +0 -0
  387. /package/dist/{config-NV5WXP64.js.map → config-OJ2BPESH.js.map} +0 -0
  388. /package/dist/{config-OT2TQQCN.js.map → config-QO2XUME4.js.map} +0 -0
  389. /package/dist/{config-Q45Y46YT.js.map → config-QWQGOXQ5.js.map} +0 -0
  390. /package/dist/{config-QAA646XB.js.map → config-RI7IEZUF.js.map} +0 -0
  391. /package/dist/{config-QNMKWJ4M.js.map → config-SPW6NESU.js.map} +0 -0
  392. /package/dist/{config-QWCY3LBQ.js.map → config-T2IUIU5C.js.map} +0 -0
  393. /package/dist/{config-VM526IKB.js.map → config-UU27ALAA.js.map} +0 -0
  394. /package/dist/{config-WDAZFXYD.js.map → config-VKKZGC7V.js.map} +0 -0
  395. /package/dist/{config-ZFJYQZCH.js.map → config-W7EVPJNK.js.map} +0 -0
  396. /package/dist/{config-ZV6G2ZEC.js.map → config-WKQ3FGTZ.js.map} +0 -0
  397. /package/dist/{databricks_volume-HNQ4DJVJ.js.map → config-WVILHDFV.js.map} +0 -0
  398. /package/dist/{digitalocean-6SPR4S7V.js.map → config-XU6D5C7E.js.map} +0 -0
  399. /package/dist/{discord-SAV2RBJV.js.map → databricks_volume-ETRDJVVQ.js.map} +0 -0
  400. /package/dist/{disk-POACMF4G.js.map → digitalocean-QP72DR4J.js.map} +0 -0
  401. /package/dist/{dropbox-CQ7MTYX2.js.map → discord-BSN5RB3E.js.map} +0 -0
  402. /package/dist/{email-KBQ7CXS7.js.map → disk-24NWTN2I.js.map} +0 -0
  403. /package/dist/{gcs-SMIE4VMT.js.map → dropbox-OSTZXSIE.js.map} +0 -0
  404. /package/dist/{gdocs-X5Y2SIQX.js.map → email-4ZFPSWIN.js.map} +0 -0
  405. /package/dist/{gdrive-SIQPRIGI.js.map → gcs-PFWR6MIW.js.map} +0 -0
  406. /package/dist/{github-KBHWANKQ.js.map → gdocs-GPAZRQG5.js.map} +0 -0
  407. /package/dist/{github_ci-HPITNK37.js.map → gdrive-XSX6A7B3.js.map} +0 -0
  408. /package/dist/{gmail-DKHAGJNX.js.map → github-EQ4NXUTA.js.map} +0 -0
  409. /package/dist/{gsheets-ZSUDIWGK.js.map → github_ci-QL5B2Q2N.js.map} +0 -0
  410. /package/dist/{gslides-GYXM7IMJ.js.map → gmail-2TBT4CVH.js.map} +0 -0
  411. /package/dist/{hf_buckets-RIOMV7WG.js.map → gridfs-KZRZ6SIB.js.map} +0 -0
  412. /package/dist/{hf_datasets-QF4BQ3OK.js.map → gsheets-N53WEXN2.js.map} +0 -0
  413. /package/dist/{hf_models-62GC2HPZ.js.map → gslides-TATSARTH.js.map} +0 -0
  414. /package/dist/{hf_spaces-NVSMUNRM.js.map → hf_buckets-BK7NGJWS.js.map} +0 -0
  415. /package/dist/{langfuse-HUAYVPHF.js.map → hf_datasets-UQ5QGM4L.js.map} +0 -0
  416. /package/dist/{linear-2MM55KBC.js.map → hf_models-75LFCQCS.js.map} +0 -0
  417. /package/dist/{minio-L3XE6PQS.js.map → hf_spaces-6T2KB3UC.js.map} +0 -0
  418. /package/dist/{mongodb-ZOX4FRHJ.js.map → langfuse-AMQCQWNE.js.map} +0 -0
  419. /package/dist/{notion-UK4GTMT4.js.map → linear-V3TXO6CV.js.map} +0 -0
  420. /package/dist/{oci-NURLWPL2.js.map → minio-IZRZY4C5.js.map} +0 -0
  421. /package/dist/{postgres-JNFMPAO2.js.map → mongodb-VMKPQCPX.js.map} +0 -0
  422. /package/dist/{qingstor-W55D5YFO.js.map → nextcloud-5RHQCGDO.js.map} +0 -0
  423. /package/dist/{r2-FSZK7IFI.js.map → notion-6PPNTQFM.js.map} +0 -0
  424. /package/dist/{redis-S6GIPA4Z.js.map → oci-CKYBSFZJ.js.map} +0 -0
  425. /package/dist/{s3-GMPUJ65D.js.map → postgres-WIQBVL5M.js.map} +0 -0
  426. /package/dist/{scaleway-5VM55Y6D.js.map → qingstor-AP4IIPLY.js.map} +0 -0
  427. /package/dist/{seaweedfs-J3EPUEPE.js.map → r2-C4XGEWQY.js.map} +0 -0
  428. /package/dist/{slack-FVBXY7KD.js.map → redis-6D55Q2WB.js.map} +0 -0
  429. /package/dist/{ssh-GCXETJ3Z.js.map → s3-XQBI2CXN.js.map} +0 -0
  430. /package/dist/{supabase-HLWNHBBE.js.map → scaleway-SEZJVURB.js.map} +0 -0
  431. /package/dist/{tencent-YDO73XBD.js.map → seaweedfs-3XYIAFU2.js.map} +0 -0
  432. /package/dist/{trello-CQ53BQUL.js.map → slack-ZHXDJQY4.js.map} +0 -0
  433. /package/dist/{wasabi-SOZKPMRQ.js.map → ssh-X2MO7JOV.js.map} +0 -0
@@ -0,0 +1,946 @@
1
+ import {
2
+ loadOptionalPeer
3
+ } from "./chunk-OQKNDS66.js";
4
+
5
+ // src/resource/redis/redis.ts
6
+ import {
7
+ BaseResource,
8
+ PathSpec,
9
+ REDACTED_SECRET,
10
+ ResourceName as ResourceName7,
11
+ makeResolveGlob,
12
+ mountKey,
13
+ mountPrefixOf as mountPrefixOf2
14
+ } from "@struktoai/mirage-core";
15
+
16
+ // src/commands/builtin/redis/index.ts
17
+ import {
18
+ ResourceName as ResourceName5,
19
+ makeFiletypeCommands,
20
+ makeGenericCommands
21
+ } from "@struktoai/mirage-core";
22
+
23
+ // src/core/redis/read.ts
24
+ import { record, ResourceName } from "@struktoai/mirage-core";
25
+ import { enoent } from "@struktoai/mirage-core";
26
+
27
+ // src/core/redis/utils.ts
28
+ import { norm, parent, gnuBasename } from "@struktoai/mirage-core";
29
+ function nowIso() {
30
+ return (/* @__PURE__ */ new Date()).toISOString();
31
+ }
32
+
33
+ // src/core/redis/read.ts
34
+ async function read(accessor, path, _index) {
35
+ const start = performance.now();
36
+ const p = norm(path.mountPath);
37
+ const data = await accessor.store.getFile(p);
38
+ if (data === null) {
39
+ throw enoent(path);
40
+ }
41
+ record("read", p, ResourceName.REDIS, data.byteLength, start);
42
+ return data;
43
+ }
44
+
45
+ // src/core/redis/stat.ts
46
+ import {
47
+ FileStat,
48
+ FileType,
49
+ guessType
50
+ } from "@struktoai/mirage-core";
51
+ import { enoent as enoent2 } from "@struktoai/mirage-core";
52
+ function decodeAttrs(raw) {
53
+ const out = {};
54
+ if (raw.mode !== void 0) out.mode = parseInt(raw.mode, 10);
55
+ for (const key of ["uid", "gid"]) {
56
+ const val = raw[key];
57
+ if (val !== void 0) out[key] = /^\d+$/.test(val) ? parseInt(val, 10) : val;
58
+ }
59
+ if (raw.atime !== void 0) out.atime = raw.atime;
60
+ return out;
61
+ }
62
+ async function stat(accessor, path, _index) {
63
+ const p = norm(path.mountPath);
64
+ const store = accessor.store;
65
+ if (await store.hasDir(p)) {
66
+ const attrs = decodeAttrs(await store.getAttrs(p));
67
+ return new FileStat({
68
+ name: gnuBasename(p),
69
+ modified: await store.getModified(p),
70
+ type: FileType.DIRECTORY,
71
+ mode: attrs.mode ?? null,
72
+ uid: attrs.uid ?? null,
73
+ gid: attrs.gid ?? null,
74
+ atime: attrs.atime ?? null
75
+ });
76
+ }
77
+ if (await store.hasFile(p)) {
78
+ const size = await store.fileLen(p);
79
+ const attrs = decodeAttrs(await store.getAttrs(p));
80
+ return new FileStat({
81
+ name: gnuBasename(p),
82
+ size,
83
+ modified: await store.getModified(p),
84
+ type: guessType(p),
85
+ mode: attrs.mode ?? null,
86
+ uid: attrs.uid ?? null,
87
+ gid: attrs.gid ?? null,
88
+ atime: attrs.atime ?? null
89
+ });
90
+ }
91
+ throw enoent2(path);
92
+ }
93
+
94
+ // src/core/redis/append.ts
95
+ import { ResourceName as ResourceName2, invalidateAfterWrite, record as record2 } from "@struktoai/mirage-core";
96
+ async function appendBytes(accessor, path, data) {
97
+ const start = performance.now();
98
+ const p = norm(path.mountPath);
99
+ const store = accessor.store;
100
+ const existing = await store.getFile(p);
101
+ if (existing !== null) {
102
+ const merged = new Uint8Array(existing.byteLength + data.byteLength);
103
+ merged.set(existing, 0);
104
+ merged.set(data, existing.byteLength);
105
+ await store.setFile(p, merged);
106
+ } else {
107
+ await store.setFile(p, data);
108
+ }
109
+ await store.setModified(p, nowIso());
110
+ record2("append", p, ResourceName2.REDIS, data.byteLength, start);
111
+ await invalidateAfterWrite(p);
112
+ }
113
+
114
+ // src/core/redis/constants.ts
115
+ var SCOPE_ERROR = 5e4;
116
+
117
+ // src/core/redis/copy.ts
118
+ import { invalidateAfterWrite as invalidateAfterWrite2 } from "@struktoai/mirage-core";
119
+ async function copy(accessor, src, dst) {
120
+ const s = norm(src.mountPath);
121
+ const d = norm(dst.mountPath);
122
+ const store = accessor.store;
123
+ const data = await store.getFile(s);
124
+ if (data === null) {
125
+ throw new Error(`file not found: ${s}`);
126
+ }
127
+ await store.setFile(d, data);
128
+ await store.setModified(d, nowIso());
129
+ await invalidateAfterWrite2(dst);
130
+ }
131
+
132
+ // src/core/redis/create.ts
133
+ import { invalidateAfterWrite as invalidateAfterWrite3 } from "@struktoai/mirage-core";
134
+ async function create(accessor, path) {
135
+ const p = norm(path.mountPath);
136
+ const store = accessor.store;
137
+ await store.setFile(p, new Uint8Array(0));
138
+ await store.setModified(p, nowIso());
139
+ await invalidateAfterWrite3(path);
140
+ }
141
+
142
+ // src/core/redis/du.ts
143
+ import { rstripSlash } from "@struktoai/mirage-core";
144
+ async function du(accessor, path) {
145
+ const p = norm(path.mountPath);
146
+ const store = accessor.store;
147
+ const prefix = rstripSlash(p) + "/";
148
+ let total = 0;
149
+ for (const key of await store.listFiles()) {
150
+ if (key === p || key.startsWith(prefix)) {
151
+ total += await store.fileLen(key);
152
+ }
153
+ }
154
+ return total;
155
+ }
156
+ async function duAll(accessor, path) {
157
+ const p = norm(path.mountPath);
158
+ const store = accessor.store;
159
+ const prefix = rstripSlash(p) + "/";
160
+ const entries = [];
161
+ let total = 0;
162
+ for (const key of await store.listFiles()) {
163
+ if (key === p || key.startsWith(prefix)) {
164
+ const size = await store.fileLen(key);
165
+ entries.push([key, size]);
166
+ total += size;
167
+ }
168
+ }
169
+ return { entries, total };
170
+ }
171
+
172
+ // src/core/redis/exists.ts
173
+ async function exists(accessor, path) {
174
+ const p = norm(path.mountPath);
175
+ const store = accessor.store;
176
+ return await store.hasFile(p) || await store.hasDir(p);
177
+ }
178
+
179
+ // src/core/redis/find.ts
180
+ import {
181
+ buildTree,
182
+ computeNonemptyDirs,
183
+ emitStartPath,
184
+ keep,
185
+ rstripSlash as rstripSlash2,
186
+ startBasename
187
+ } from "@struktoai/mirage-core";
188
+ async function find(accessor, path, options = {}) {
189
+ const p = norm(path.mountPath);
190
+ const startName = startBasename(path.virtual);
191
+ const store = accessor.store;
192
+ const prefix = rstripSlash2(p) + "/";
193
+ const baseDepth = p === "/" ? 0 : (p.match(/\//g) ?? []).length;
194
+ const results = [];
195
+ const tree = options.tree ?? buildTree({
196
+ name: options.name,
197
+ iname: options.iname,
198
+ pathPattern: options.pathPattern,
199
+ type: options.type,
200
+ nameExclude: options.nameExclude,
201
+ orNames: options.orNames,
202
+ empty: options.empty
203
+ });
204
+ const empty = options.empty === true;
205
+ const allFiles = await store.listFiles();
206
+ const allDirs = await store.listDirs();
207
+ const nonempty = empty ? computeNonemptyDirs([...allFiles, ...[...allDirs].filter((k) => k !== "/")]) : /* @__PURE__ */ new Set();
208
+ const candidates = [];
209
+ if (options.type !== "d") {
210
+ for (const key of allFiles) candidates.push([key, "f"]);
211
+ }
212
+ if (options.type !== "f") {
213
+ for (const key of allDirs) {
214
+ candidates.push([key, "d"]);
215
+ }
216
+ }
217
+ let rootKind = null;
218
+ let rootIsEmpty = null;
219
+ let rootSize = null;
220
+ for (const [key, kind] of candidates) {
221
+ if (key !== p && !key.startsWith(prefix)) continue;
222
+ if (key === p) {
223
+ rootKind = kind;
224
+ if (empty) {
225
+ rootIsEmpty = kind === "f" ? await store.fileLen(key) === 0 : !nonempty.has(key);
226
+ }
227
+ if (kind === "f") rootSize = await store.fileLen(key);
228
+ continue;
229
+ }
230
+ const depth = (key.match(/\//g) ?? []).length - baseDepth;
231
+ if (options.maxDepth !== null && options.maxDepth !== void 0 && depth > options.maxDepth)
232
+ continue;
233
+ const basename = key.slice(key.lastIndexOf("/") + 1);
234
+ let isEmpty = null;
235
+ if (empty) {
236
+ isEmpty = kind === "f" ? await store.fileLen(key) === 0 : !nonempty.has(key);
237
+ }
238
+ if (!keep({ key, name: basename, kind, depth, isEmpty }, tree, options.minDepth)) continue;
239
+ if (options.minSize != null || options.maxSize != null) {
240
+ const size = kind === "f" ? await store.fileLen(key) : 0;
241
+ if (options.minSize != null && size < options.minSize) continue;
242
+ if (options.maxSize != null && size > options.maxSize) continue;
243
+ }
244
+ results.push(key);
245
+ }
246
+ if (rootKind !== null) {
247
+ emitStartPath(results, p, startName, {
248
+ kind: rootKind,
249
+ isEmpty: rootIsEmpty,
250
+ exists: true,
251
+ tree,
252
+ maxDepth: options.maxDepth,
253
+ minDepth: options.minDepth,
254
+ size: rootSize,
255
+ minSize: options.minSize,
256
+ maxSize: options.maxSize
257
+ });
258
+ }
259
+ results.sort();
260
+ return results;
261
+ }
262
+
263
+ // src/core/redis/mkdir.ts
264
+ import { invalidateAfterWrite as invalidateAfterWrite4, invalidateAncestors } from "@struktoai/mirage-core";
265
+ import { stripSlash } from "@struktoai/mirage-core";
266
+ async function mkdir(accessor, path, parents = false) {
267
+ const p = norm(path.mountPath);
268
+ const store = accessor.store;
269
+ if (parents) {
270
+ const parts = stripSlash(p).split("/");
271
+ let current = "";
272
+ const now = nowIso();
273
+ for (const part of parts) {
274
+ current += `/${part}`;
275
+ await store.addDir(current);
276
+ const mod = await store.getModified(current);
277
+ if (mod === null) {
278
+ await store.setModified(current, now);
279
+ }
280
+ }
281
+ await invalidateAfterWrite4(p);
282
+ await invalidateAncestors(path);
283
+ return;
284
+ }
285
+ const par = parent(p);
286
+ if (par !== "/" && !await store.hasDir(par)) {
287
+ throw new Error(`parent directory does not exist: ${par}`);
288
+ }
289
+ await store.addDir(p);
290
+ await store.setModified(p, nowIso());
291
+ await invalidateAfterWrite4(p);
292
+ }
293
+
294
+ // src/core/redis/readdir.ts
295
+ import {
296
+ mountPrefixOf,
297
+ rstripSlash as rstripSlash3
298
+ } from "@struktoai/mirage-core";
299
+ import { enotdir } from "@struktoai/mirage-core";
300
+
301
+ // src/core/redis/entry.ts
302
+ import { IndexEntry } from "@struktoai/mirage-core";
303
+ var RedisResourceType = Object.freeze({
304
+ FILE: "file",
305
+ FOLDER: "folder"
306
+ });
307
+ var RedisIndexEntry = class _RedisIndexEntry extends IndexEntry {
308
+ // size defaults to null, not 0: a readdir knows a key exists but not
309
+ // its length, and a lying 0 would be trusted by index-first size
310
+ // lookups (provision estimates) over a real stat.
311
+ static file(path, size = null) {
312
+ const name = path.slice(path.lastIndexOf("/") + 1);
313
+ return new _RedisIndexEntry({
314
+ id: path,
315
+ name,
316
+ resourceType: RedisResourceType.FILE,
317
+ vfsName: name,
318
+ size
319
+ });
320
+ }
321
+ static folder(path) {
322
+ const name = path.slice(path.lastIndexOf("/") + 1);
323
+ return new _RedisIndexEntry({
324
+ id: path,
325
+ name,
326
+ resourceType: RedisResourceType.FOLDER,
327
+ vfsName: name
328
+ });
329
+ }
330
+ };
331
+
332
+ // src/core/redis/readdir.ts
333
+ async function readdir(accessor, path, index) {
334
+ const virtual = path.pattern !== null ? path.directory : path.mountPath;
335
+ const mountPrefix = mountPrefixOf(path.virtual, path.resourcePath);
336
+ const virtualKey = rstripSlash3(mountPrefix + virtual) || "/";
337
+ if (index !== void 0) {
338
+ const cached = await index.listDir(virtualKey);
339
+ if (cached.entries !== void 0 && cached.entries !== null) {
340
+ return cached.entries;
341
+ }
342
+ }
343
+ const store = accessor.store;
344
+ const p = norm(virtual);
345
+ if (!await store.hasDir(p)) {
346
+ throw enotdir(path);
347
+ }
348
+ const dirPrefix = p === "/" ? "/" : `${p}/`;
349
+ const seen = /* @__PURE__ */ new Set();
350
+ const files = await store.listFiles();
351
+ const dirs = await store.listDirs();
352
+ for (const key of [...files, ...dirs]) {
353
+ if (key === p) continue;
354
+ if (!key.startsWith(dirPrefix)) continue;
355
+ const remainder = key.slice(dirPrefix.length);
356
+ const first = remainder.split("/")[0];
357
+ if (first !== void 0 && first.length > 0) seen.add(dirPrefix + first);
358
+ }
359
+ const sorted = [...seen].sort();
360
+ const virtualEntries = sorted.map((entry) => `${mountPrefix}${entry}`);
361
+ if (index !== void 0) {
362
+ const fileSet = new Set(files);
363
+ const entries = sorted.map((e) => {
364
+ const name = e.slice(e.lastIndexOf("/") + 1);
365
+ return [name, fileSet.has(e) ? RedisIndexEntry.file(e) : RedisIndexEntry.folder(e)];
366
+ });
367
+ await index.setDir(virtualKey, entries);
368
+ }
369
+ return virtualEntries;
370
+ }
371
+
372
+ // src/core/redis/rename.ts
373
+ import { invalidateAfterUnlink, invalidateAfterWrite as invalidateAfterWrite5 } from "@struktoai/mirage-core";
374
+ import { rstripSlash as rstripSlash4 } from "@struktoai/mirage-core";
375
+ async function rename(accessor, src, dst) {
376
+ const s = norm(src.mountPath);
377
+ const d = norm(dst.mountPath);
378
+ const now = nowIso();
379
+ const store = accessor.store;
380
+ if (await store.hasFile(s)) {
381
+ const data = await store.getFile(s);
382
+ const mod = await store.getModified(s);
383
+ const attrs = await store.getAttrs(s);
384
+ if (data === null) throw new Error(`file not found: ${s}`);
385
+ await store.delFile(s);
386
+ await store.delModified(s);
387
+ await store.delAttrs(s);
388
+ await store.setFile(d, data);
389
+ await store.setModified(d, mod ?? now);
390
+ if (Object.keys(attrs).length > 0) await store.setAttrs(d, attrs);
391
+ await invalidateAfterUnlink(s);
392
+ await invalidateAfterWrite5(d);
393
+ return;
394
+ }
395
+ if (await store.hasDir(s)) {
396
+ const mod = await store.getModified(s);
397
+ const attrs = await store.getAttrs(s);
398
+ await store.removeDir(s);
399
+ await store.delModified(s);
400
+ await store.delAttrs(s);
401
+ await store.addDir(d);
402
+ await store.setModified(d, mod ?? now);
403
+ if (Object.keys(attrs).length > 0) await store.setAttrs(d, attrs);
404
+ const prefix = rstripSlash4(s) + "/";
405
+ const dPrefix = rstripSlash4(d) + "/";
406
+ const files = await store.listFiles();
407
+ for (const key of files) {
408
+ if (key.startsWith(prefix)) {
409
+ const newKey = dPrefix + key.slice(prefix.length);
410
+ const data = await store.getFile(key);
411
+ if (data === null) continue;
412
+ const subAttrs = await store.getAttrs(key);
413
+ await store.delFile(key);
414
+ await store.delAttrs(key);
415
+ await store.setFile(newKey, data);
416
+ if (Object.keys(subAttrs).length > 0) await store.setAttrs(newKey, subAttrs);
417
+ }
418
+ }
419
+ await invalidateAfterUnlink(s);
420
+ await invalidateAfterWrite5(d);
421
+ return;
422
+ }
423
+ throw new Error(`file not found: ${s}`);
424
+ }
425
+
426
+ // src/core/redis/rm.ts
427
+ import { invalidateAfterUnlink as invalidateAfterUnlink2, rstripSlash as rstripSlash5 } from "@struktoai/mirage-core";
428
+ async function rmR(accessor, path) {
429
+ const p = norm(path.mountPath);
430
+ const store = accessor.store;
431
+ const prefix = rstripSlash5(p) + "/";
432
+ const files = await store.listFiles();
433
+ for (const key of files) {
434
+ if (key === p || key.startsWith(prefix)) {
435
+ await store.delFile(key);
436
+ await store.delModified(key);
437
+ await store.delAttrs(key);
438
+ }
439
+ }
440
+ const dirs = await store.listDirs();
441
+ for (const key of dirs) {
442
+ if (key === p || key.startsWith(prefix)) {
443
+ await store.removeDir(key);
444
+ await store.delModified(key);
445
+ await store.delAttrs(key);
446
+ }
447
+ }
448
+ await invalidateAfterUnlink2(path);
449
+ }
450
+
451
+ // src/core/redis/rmdir.ts
452
+ import { invalidateAfterUnlink as invalidateAfterUnlink3, rstripSlash as rstripSlash6 } from "@struktoai/mirage-core";
453
+ async function rmdir(accessor, path) {
454
+ const p = norm(path.mountPath);
455
+ const store = accessor.store;
456
+ if (!await store.hasDir(p)) {
457
+ throw new Error(`not a directory: ${p}`);
458
+ }
459
+ const prefix = rstripSlash6(p) + "/";
460
+ const files = await store.listFiles();
461
+ const dirs = await store.listDirs();
462
+ const candidates = [...files, ...dirs];
463
+ for (const k of candidates) {
464
+ if (k !== p && k.startsWith(prefix)) {
465
+ throw new Error(`directory not empty: ${p}`);
466
+ }
467
+ }
468
+ await store.removeDir(p);
469
+ await invalidateAfterUnlink3(path);
470
+ }
471
+
472
+ // src/core/redis/set_attrs.ts
473
+ import { enoent as enoent3 } from "@struktoai/mirage-core";
474
+ async function setAttrs(accessor, path, fields) {
475
+ const store = accessor.store;
476
+ const p = norm(path.mountPath);
477
+ if (!await store.hasFile(p) && !await store.hasDir(p)) {
478
+ throw enoent3(path);
479
+ }
480
+ const encoded = {};
481
+ if (fields.mode !== void 0) encoded.mode = String(fields.mode);
482
+ if (fields.uid !== void 0) encoded.uid = String(fields.uid);
483
+ if (fields.gid !== void 0) encoded.gid = String(fields.gid);
484
+ if (fields.atime !== void 0) encoded.atime = fields.atime;
485
+ if (Object.keys(encoded).length > 0) {
486
+ await store.setAttrs(p, encoded);
487
+ }
488
+ if (fields.mtime !== void 0) {
489
+ await store.setModified(p, fields.mtime);
490
+ }
491
+ return {};
492
+ }
493
+
494
+ // src/core/redis/stream.ts
495
+ import {
496
+ recordStream,
497
+ ResourceName as ResourceName3
498
+ } from "@struktoai/mirage-core";
499
+ import { enoent as enoent4 } from "@struktoai/mirage-core";
500
+ async function* stream(accessor, path, _index) {
501
+ const p = norm(path.mountPath);
502
+ const data = await accessor.store.getFile(p);
503
+ if (data === null) throw enoent4(path);
504
+ const rec = recordStream("read", p, ResourceName3.REDIS);
505
+ if (rec !== null) rec.bytes = data.byteLength;
506
+ yield data;
507
+ }
508
+
509
+ // src/core/redis/truncate.ts
510
+ import { invalidateAfterWrite as invalidateAfterWrite6 } from "@struktoai/mirage-core";
511
+ async function truncate(accessor, path, length) {
512
+ const p = norm(path.mountPath);
513
+ const store = accessor.store;
514
+ const existing = await store.getFile(p);
515
+ const data = existing ?? new Uint8Array(0);
516
+ const out = new Uint8Array(length);
517
+ const copyLen = Math.min(data.byteLength, length);
518
+ out.set(data.subarray(0, copyLen), 0);
519
+ await store.setFile(p, out);
520
+ await store.setModified(p, nowIso());
521
+ await invalidateAfterWrite6(p);
522
+ }
523
+
524
+ // src/core/redis/unlink.ts
525
+ import { invalidateAfterUnlink as invalidateAfterUnlink4 } from "@struktoai/mirage-core";
526
+ async function unlink(accessor, path) {
527
+ const p = norm(path.mountPath);
528
+ const store = accessor.store;
529
+ if (!await store.hasFile(p)) {
530
+ throw new Error(`file not found: ${p}`);
531
+ }
532
+ await store.delFile(p);
533
+ await store.delModified(p);
534
+ await store.delAttrs(p);
535
+ await invalidateAfterUnlink4(p);
536
+ }
537
+
538
+ // src/core/redis/write.ts
539
+ import { ResourceName as ResourceName4, invalidateAfterWrite as invalidateAfterWrite7, record as record3 } from "@struktoai/mirage-core";
540
+ async function writeBytes(accessor, path, data) {
541
+ const start = performance.now();
542
+ const p = norm(path.mountPath);
543
+ const par = parent(p);
544
+ const store = accessor.store;
545
+ if (par !== "/" && !await store.hasDir(par)) {
546
+ throw new Error(`parent directory does not exist: ${par}`);
547
+ }
548
+ await store.setFile(p, data);
549
+ await store.setModified(p, nowIso());
550
+ record3("write", p, ResourceName4.REDIS, data.byteLength, start);
551
+ await invalidateAfterWrite7(p);
552
+ }
553
+
554
+ // src/commands/builtin/redis/io.ts
555
+ var REDIS_IO = {
556
+ readdir,
557
+ readBytes: read,
558
+ readStream: stream,
559
+ stat,
560
+ isMounted: () => true,
561
+ local: true,
562
+ maxGlobMatches: SCOPE_ERROR,
563
+ write: writeBytes,
564
+ exists,
565
+ mkdir,
566
+ unlink,
567
+ rmdir,
568
+ rmR,
569
+ rename,
570
+ copy,
571
+ create,
572
+ truncate,
573
+ append: appendBytes,
574
+ setAttrs,
575
+ find,
576
+ duTotal: du,
577
+ duAll: async (accessor, path) => {
578
+ const { entries, total } = await duAll(accessor, path);
579
+ return [entries, total];
580
+ }
581
+ };
582
+
583
+ // src/commands/builtin/redis/index.ts
584
+ var REDIS_COMMANDS = [
585
+ ...makeFiletypeCommands({
586
+ resource: ResourceName5.REDIS,
587
+ readBytes: read,
588
+ statEntry: stat
589
+ }),
590
+ ...makeGenericCommands(ResourceName5.REDIS, REDIS_IO)
591
+ ];
592
+
593
+ // src/accessor/redis.ts
594
+ import { Accessor } from "@struktoai/mirage-core";
595
+ var RedisAccessor = class extends Accessor {
596
+ store;
597
+ constructor(store) {
598
+ super();
599
+ this.store = store;
600
+ }
601
+ };
602
+
603
+ // src/ops/redis/index.ts
604
+ import { ResourceName as ResourceName6, makeGenericOps } from "@struktoai/mirage-core";
605
+ var REDIS_OPS = makeGenericOps(ResourceName6.REDIS, REDIS_IO, {
606
+ filetypeRead: [".feather", ".hdf5", ".parquet"],
607
+ forwardIndex: false
608
+ });
609
+
610
+ // src/resource/redis/prompt.ts
611
+ var REDIS_PROMPT = `Redis-backed persistent filesystem. Behaves like a standard filesystem.
612
+ Standard commands: ls, cat, head, tail, grep, wc, find, tree, mkdir, touch, cp, mv, rm, tee.`;
613
+
614
+ // src/resource/redis/store.ts
615
+ var RedisStore = class {
616
+ url;
617
+ keyPrefix;
618
+ providedClient;
619
+ clientPromise = null;
620
+ constructor(options = {}) {
621
+ this.url = options.url ?? "redis://localhost:6379/0";
622
+ this.keyPrefix = options.keyPrefix ?? "mirage:fs:";
623
+ this.providedClient = options.client ?? null;
624
+ }
625
+ fk(path) {
626
+ return `${this.keyPrefix}file:${path}`;
627
+ }
628
+ dk() {
629
+ return `${this.keyPrefix}dir`;
630
+ }
631
+ mk(path) {
632
+ return `${this.keyPrefix}modified:${path}`;
633
+ }
634
+ ak(path) {
635
+ return `${this.keyPrefix}attrs:${path}`;
636
+ }
637
+ async client() {
638
+ if (this.providedClient !== null) return this.providedClient;
639
+ this.clientPromise ??= (async () => {
640
+ const mod = await loadOptionalPeer(
641
+ () => import("redis"),
642
+ { feature: "RedisResource / RedisFileCacheStore", packageName: "redis" }
643
+ );
644
+ const c = mod.createClient({
645
+ url: this.url,
646
+ socket: { reconnectStrategy: false }
647
+ });
648
+ await c.connect();
649
+ await c.sAdd(this.dk(), "/");
650
+ return c;
651
+ })();
652
+ return this.clientPromise;
653
+ }
654
+ async getFile(path) {
655
+ const c = await this.client();
656
+ const typed = c;
657
+ const mod = await import("redis");
658
+ const blob = mod.RESP_TYPES.BLOB_STRING;
659
+ const mapping = { [blob]: Buffer };
660
+ const raw = await typed.withTypeMapping(mapping).get(this.fk(path));
661
+ if (raw === null) return null;
662
+ return new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength);
663
+ }
664
+ async setFile(path, data) {
665
+ const c = await this.client();
666
+ await c.set(this.fk(path), Buffer.from(data.buffer, data.byteOffset, data.byteLength));
667
+ }
668
+ async delFile(path) {
669
+ const c = await this.client();
670
+ await c.del(this.fk(path));
671
+ }
672
+ async hasFile(path) {
673
+ const c = await this.client();
674
+ return await c.exists(this.fk(path)) > 0;
675
+ }
676
+ async listFiles(prefix = "") {
677
+ const c = await this.client();
678
+ const pattern = `${this.keyPrefix}file:${prefix}*`;
679
+ const strip = `${this.keyPrefix}file:`.length;
680
+ const result = [];
681
+ for await (const k of c.scanIterator({ MATCH: pattern })) {
682
+ const keys = Array.isArray(k) ? k : [k];
683
+ for (const key of keys) result.push(key.slice(strip));
684
+ }
685
+ return result.sort();
686
+ }
687
+ async fileLen(path) {
688
+ const c = await this.client();
689
+ return c.strLen(this.fk(path));
690
+ }
691
+ async hasDir(path) {
692
+ const c = await this.client();
693
+ return await c.sIsMember(this.dk(), path) === 1;
694
+ }
695
+ async addDir(path) {
696
+ const c = await this.client();
697
+ await c.sAdd(this.dk(), path);
698
+ }
699
+ async removeDir(path) {
700
+ const c = await this.client();
701
+ await c.sRem(this.dk(), path);
702
+ }
703
+ async listDirs() {
704
+ const c = await this.client();
705
+ const members = await c.sMembers(this.dk());
706
+ return new Set(members);
707
+ }
708
+ async getModified(path) {
709
+ const c = await this.client();
710
+ return c.get(this.mk(path));
711
+ }
712
+ async setModified(path, ts) {
713
+ const c = await this.client();
714
+ await c.set(this.mk(path), ts);
715
+ }
716
+ async delModified(path) {
717
+ const c = await this.client();
718
+ await c.del(this.mk(path));
719
+ }
720
+ async getAttrs(path) {
721
+ const c = await this.client();
722
+ const raw = await c.hGetAll(this.ak(path));
723
+ return { ...raw };
724
+ }
725
+ async setAttrs(path, fields) {
726
+ const c = await this.client();
727
+ await c.hSet(this.ak(path), fields);
728
+ }
729
+ async delAttrs(path) {
730
+ const c = await this.client();
731
+ await c.del(this.ak(path));
732
+ }
733
+ async clear() {
734
+ const c = await this.client();
735
+ for (const pattern of [
736
+ `${this.keyPrefix}file:*`,
737
+ `${this.keyPrefix}modified:*`,
738
+ `${this.keyPrefix}attrs:*`
739
+ ]) {
740
+ const keys = [];
741
+ for await (const k of c.scanIterator({ MATCH: pattern })) {
742
+ if (Array.isArray(k)) keys.push(...k);
743
+ else keys.push(k);
744
+ }
745
+ if (keys.length > 0) await c.del(keys);
746
+ }
747
+ await c.del(this.dk());
748
+ }
749
+ async close() {
750
+ if (this.providedClient !== null) return;
751
+ if (this.clientPromise === null) return;
752
+ const c = await this.clientPromise;
753
+ const typed = c;
754
+ if (typeof typed.destroy === "function") typed.destroy();
755
+ else if (c.isOpen) await c.quit();
756
+ this.clientPromise = null;
757
+ }
758
+ };
759
+
760
+ // src/resource/redis/redis.ts
761
+ var globCore = makeResolveGlob(readdir, SCOPE_ERROR);
762
+ var RedisResource = class extends BaseResource {
763
+ kind = ResourceName7.REDIS;
764
+ cachesReads = false;
765
+ indexTtl = 0;
766
+ prompt = REDIS_PROMPT;
767
+ url;
768
+ keyPrefix;
769
+ store;
770
+ accessor;
771
+ opsMap = {
772
+ read_bytes: read,
773
+ write: writeBytes,
774
+ readdir,
775
+ stat,
776
+ unlink,
777
+ rmdir,
778
+ copy,
779
+ rename,
780
+ mkdir,
781
+ read_stream: stream,
782
+ rm_recursive: rmR,
783
+ du_total: du,
784
+ du_all: duAll,
785
+ create,
786
+ truncate,
787
+ exists,
788
+ find_flat: find,
789
+ append: appendBytes
790
+ };
791
+ constructor(options = {}) {
792
+ super();
793
+ this.url = options.url ?? "redis://localhost:6379/0";
794
+ this.keyPrefix = options.keyPrefix ?? "mirage:fs:";
795
+ this.store = new RedisStore({ url: this.url, keyPrefix: this.keyPrefix });
796
+ this.accessor = new RedisAccessor(this.store);
797
+ }
798
+ async open() {
799
+ await this.store.client();
800
+ }
801
+ close() {
802
+ return this.store.close();
803
+ }
804
+ client() {
805
+ return this.store.client();
806
+ }
807
+ module() {
808
+ return import("redis");
809
+ }
810
+ ops() {
811
+ return REDIS_OPS;
812
+ }
813
+ commands() {
814
+ return REDIS_COMMANDS;
815
+ }
816
+ streamPath(p) {
817
+ return stream(this.accessor, p);
818
+ }
819
+ readFile(p) {
820
+ return read(this.accessor, p);
821
+ }
822
+ writeFile(p, data) {
823
+ return writeBytes(this.accessor, p, data);
824
+ }
825
+ appendFile(p, data) {
826
+ return appendBytes(this.accessor, p, data);
827
+ }
828
+ readdir(p) {
829
+ return readdir(this.accessor, p, this.index);
830
+ }
831
+ stat(p) {
832
+ return stat(this.accessor, p);
833
+ }
834
+ exists(p) {
835
+ return exists(this.accessor, p);
836
+ }
837
+ mkdir(p, options) {
838
+ return mkdir(this.accessor, p, options?.recursive === true);
839
+ }
840
+ rmdir(p) {
841
+ return rmdir(this.accessor, p);
842
+ }
843
+ unlink(p) {
844
+ return unlink(this.accessor, p);
845
+ }
846
+ rename(src, dst) {
847
+ return rename(this.accessor, src, dst);
848
+ }
849
+ truncate(p, length) {
850
+ return truncate(this.accessor, p, length);
851
+ }
852
+ copy(src, dst) {
853
+ return copy(this.accessor, src, dst);
854
+ }
855
+ rmR(p) {
856
+ return rmR(this.accessor, p);
857
+ }
858
+ du(p) {
859
+ return du(this.accessor, p);
860
+ }
861
+ find(p, options = {}) {
862
+ return find(this.accessor, p, options);
863
+ }
864
+ glob(paths, prefix = "") {
865
+ const effective = prefix ? paths.map(
866
+ (p) => mountPrefixOf2(p.virtual, p.resourcePath) ? p : new PathSpec({
867
+ virtual: p.virtual,
868
+ directory: p.directory,
869
+ ...p.pattern !== null ? { pattern: p.pattern } : {},
870
+ resolved: p.resolved,
871
+ resourcePath: mountKey(p.virtual, prefix)
872
+ })
873
+ ) : paths;
874
+ return globCore(this.accessor, effective, this.index);
875
+ }
876
+ async getState() {
877
+ const files = {};
878
+ for (const key of await this.store.listFiles()) {
879
+ const data = await this.store.getFile(key);
880
+ if (data !== null) files[key] = data;
881
+ }
882
+ const dirs = [...await this.store.listDirs()].sort();
883
+ const c = await this.store.client();
884
+ const attrs = {};
885
+ const attrsStrip = `${this.keyPrefix}attrs:`.length;
886
+ for await (const key of c.scanIterator({ MATCH: `${this.keyPrefix}attrs:*` })) {
887
+ for (const k of Array.isArray(key) ? key : [key]) {
888
+ attrs[k.slice(attrsStrip)] = { ...await c.hGetAll(k) };
889
+ }
890
+ }
891
+ const modified = {};
892
+ const modStrip = `${this.keyPrefix}modified:`.length;
893
+ for await (const key of c.scanIterator({ MATCH: `${this.keyPrefix}modified:*` })) {
894
+ for (const k of Array.isArray(key) ? key : [key]) {
895
+ const val = await c.get(k);
896
+ if (val !== null) modified[k.slice(modStrip)] = val;
897
+ }
898
+ }
899
+ return {
900
+ type: this.kind,
901
+ config: {
902
+ url: REDACTED_SECRET,
903
+ keyPrefix: this.keyPrefix
904
+ },
905
+ keyPrefix: this.keyPrefix,
906
+ files,
907
+ dirs,
908
+ attrs,
909
+ modified
910
+ };
911
+ }
912
+ async loadState(state) {
913
+ const c = await this.store.client();
914
+ const pipe = c.multi();
915
+ const dirKey = `${this.keyPrefix}dir`;
916
+ for (const [path, data] of Object.entries(state.files)) {
917
+ pipe.set(
918
+ `${this.keyPrefix}file:${path}`,
919
+ Buffer.from(data.buffer, data.byteOffset, data.byteLength)
920
+ );
921
+ }
922
+ for (const dir of state.dirs) {
923
+ pipe.sAdd(dirKey, dir);
924
+ }
925
+ for (const [path, fields] of Object.entries(state.attrs ?? {})) {
926
+ if (Object.keys(fields).length > 0) {
927
+ pipe.hSet(`${this.keyPrefix}attrs:${path}`, fields);
928
+ }
929
+ }
930
+ for (const [path, ts] of Object.entries(state.modified ?? {})) {
931
+ pipe.set(`${this.keyPrefix}modified:${path}`, ts);
932
+ }
933
+ await pipe.exec();
934
+ }
935
+ };
936
+
937
+ export {
938
+ stat,
939
+ REDIS_COMMANDS,
940
+ RedisAccessor,
941
+ REDIS_OPS,
942
+ REDIS_PROMPT,
943
+ RedisStore,
944
+ RedisResource
945
+ };
946
+ //# sourceMappingURL=chunk-OSVZKYXS.js.map