@struktoai/mirage-browser 0.0.7-alpha.2 → 0.0.7

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 (583) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +28 -29
  3. package/THIRD_PARTY_NOTICES +66 -0
  4. package/dist/accessor/opfs.d.ts +2 -2
  5. package/dist/accessor/opfs.d.ts.map +1 -1
  6. package/dist/accessor/opfs.js +2 -2
  7. package/dist/accessor/opfs.js.map +1 -1
  8. package/dist/core/opfs/append.d.ts +2 -0
  9. package/dist/core/opfs/append.d.ts.map +1 -1
  10. package/dist/core/opfs/append.js +40 -15
  11. package/dist/core/opfs/append.js.map +1 -1
  12. package/dist/core/opfs/constants.d.ts +0 -1
  13. package/dist/core/opfs/constants.d.ts.map +1 -1
  14. package/dist/core/opfs/constants.js +0 -1
  15. package/dist/core/opfs/constants.js.map +1 -1
  16. package/dist/core/opfs/copy.js +2 -2
  17. package/dist/core/opfs/copy.js.map +1 -1
  18. package/dist/core/opfs/create.js +2 -2
  19. package/dist/core/opfs/create.js.map +1 -1
  20. package/dist/core/opfs/exists.js +1 -1
  21. package/dist/core/opfs/exists.js.map +1 -1
  22. package/dist/core/opfs/mkdir.d.ts.map +1 -1
  23. package/dist/core/opfs/mkdir.js +2 -6
  24. package/dist/core/opfs/mkdir.js.map +1 -1
  25. package/dist/core/opfs/read.d.ts +1 -3
  26. package/dist/core/opfs/read.d.ts.map +1 -1
  27. package/dist/core/opfs/read.js +10 -14
  28. package/dist/core/opfs/read.js.map +1 -1
  29. package/dist/core/opfs/readdir.d.ts +2 -2
  30. package/dist/core/opfs/readdir.d.ts.map +1 -1
  31. package/dist/core/opfs/readdir.js +21 -9
  32. package/dist/core/opfs/readdir.js.map +1 -1
  33. package/dist/core/opfs/rename.js +2 -2
  34. package/dist/core/opfs/rename.js.map +1 -1
  35. package/dist/core/opfs/rm.js +1 -1
  36. package/dist/core/opfs/rm.js.map +1 -1
  37. package/dist/core/opfs/rmdir.js +2 -2
  38. package/dist/core/opfs/rmdir.js.map +1 -1
  39. package/dist/core/opfs/stat.js +1 -1
  40. package/dist/core/opfs/stat.js.map +1 -1
  41. package/dist/core/opfs/stream.d.ts +1 -1
  42. package/dist/core/opfs/stream.d.ts.map +1 -1
  43. package/dist/core/opfs/stream.js +10 -13
  44. package/dist/core/opfs/stream.js.map +1 -1
  45. package/dist/core/opfs/truncate.d.ts +1 -1
  46. package/dist/core/opfs/truncate.d.ts.map +1 -1
  47. package/dist/core/opfs/truncate.js +12 -10
  48. package/dist/core/opfs/truncate.js.map +1 -1
  49. package/dist/core/opfs/unlink.d.ts.map +1 -1
  50. package/dist/core/opfs/unlink.js +19 -3
  51. package/dist/core/opfs/unlink.js.map +1 -1
  52. package/dist/core/opfs/utils.d.ts +1 -0
  53. package/dist/core/opfs/utils.d.ts.map +1 -1
  54. package/dist/core/opfs/utils.js +10 -1
  55. package/dist/core/opfs/utils.js.map +1 -1
  56. package/dist/core/opfs/write.d.ts +3 -1
  57. package/dist/core/opfs/write.d.ts.map +1 -1
  58. package/dist/core/opfs/write.js +26 -10
  59. package/dist/core/opfs/write.js.map +1 -1
  60. package/dist/generated/wasm.d.ts.map +1 -1
  61. package/dist/generated/wasm.js +3 -0
  62. package/dist/generated/wasm.js.map +1 -1
  63. package/dist/index.d.ts +99 -101
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +98 -100
  66. package/dist/index.js.map +1 -1
  67. package/dist/vfs/aliyun/aliyun.d.ts +8 -0
  68. package/dist/vfs/aliyun/aliyun.d.ts.map +1 -0
  69. package/dist/{resource → vfs}/aliyun/aliyun.js +6 -6
  70. package/dist/vfs/aliyun/aliyun.js.map +1 -0
  71. package/dist/{resource → vfs}/aliyun/config.d.ts +3 -3
  72. package/dist/vfs/aliyun/config.d.ts.map +1 -0
  73. package/dist/vfs/aliyun/config.js.map +1 -0
  74. package/dist/{resource/supabase → vfs/aliyun}/prompt.d.ts +1 -1
  75. package/dist/vfs/aliyun/prompt.d.ts.map +1 -0
  76. package/dist/{resource → vfs}/aliyun/prompt.js +1 -1
  77. package/dist/vfs/aliyun/prompt.js.map +1 -0
  78. package/dist/vfs/backblaze/backblaze.d.ts +8 -0
  79. package/dist/vfs/backblaze/backblaze.d.ts.map +1 -0
  80. package/dist/{resource → vfs}/backblaze/backblaze.js +6 -6
  81. package/dist/vfs/backblaze/backblaze.js.map +1 -0
  82. package/dist/{resource → vfs}/backblaze/config.d.ts +3 -3
  83. package/dist/vfs/backblaze/config.d.ts.map +1 -0
  84. package/dist/vfs/backblaze/config.js.map +1 -0
  85. package/dist/vfs/backblaze/prompt.d.ts +2 -0
  86. package/dist/vfs/backblaze/prompt.d.ts.map +1 -0
  87. package/dist/{resource → vfs}/backblaze/prompt.js +1 -1
  88. package/dist/{resource/opfs → vfs/backblaze}/prompt.js.map +1 -1
  89. package/dist/vfs/ceph/ceph.d.ts +8 -0
  90. package/dist/vfs/ceph/ceph.d.ts.map +1 -0
  91. package/dist/{resource → vfs}/ceph/ceph.js +6 -6
  92. package/dist/vfs/ceph/ceph.js.map +1 -0
  93. package/dist/{resource → vfs}/ceph/config.d.ts +3 -3
  94. package/dist/vfs/ceph/config.d.ts.map +1 -0
  95. package/dist/vfs/ceph/config.js.map +1 -0
  96. package/dist/vfs/ceph/prompt.d.ts +2 -0
  97. package/dist/vfs/ceph/prompt.d.ts.map +1 -0
  98. package/dist/{resource → vfs}/ceph/prompt.js +1 -1
  99. package/dist/vfs/ceph/prompt.js.map +1 -0
  100. package/dist/{resource → vfs}/digitalocean/config.d.ts +3 -3
  101. package/dist/vfs/digitalocean/config.d.ts.map +1 -0
  102. package/dist/vfs/digitalocean/config.js.map +1 -0
  103. package/dist/vfs/digitalocean/digitalocean.d.ts +8 -0
  104. package/dist/vfs/digitalocean/digitalocean.d.ts.map +1 -0
  105. package/dist/{resource → vfs}/digitalocean/digitalocean.js +6 -6
  106. package/dist/vfs/digitalocean/digitalocean.js.map +1 -0
  107. package/dist/{resource/minio → vfs/digitalocean}/prompt.d.ts +1 -1
  108. package/dist/vfs/digitalocean/prompt.d.ts.map +1 -0
  109. package/dist/{resource → vfs}/digitalocean/prompt.js +1 -1
  110. package/dist/{resource/tencent → vfs/digitalocean}/prompt.js.map +1 -1
  111. package/dist/{resource → vfs}/discord/config.d.ts +4 -2
  112. package/dist/vfs/discord/config.d.ts.map +1 -0
  113. package/dist/{resource → vfs}/discord/config.js +7 -3
  114. package/dist/vfs/discord/config.js.map +1 -0
  115. package/dist/vfs/discord/discord.d.ts +19 -0
  116. package/dist/vfs/discord/discord.d.ts.map +1 -0
  117. package/dist/vfs/discord/discord.js +47 -0
  118. package/dist/vfs/discord/discord.js.map +1 -0
  119. package/dist/{resource → vfs}/gcs/config.d.ts +3 -3
  120. package/dist/vfs/gcs/config.d.ts.map +1 -0
  121. package/dist/vfs/gcs/config.js.map +1 -0
  122. package/dist/vfs/gcs/gcs.d.ts +8 -0
  123. package/dist/vfs/gcs/gcs.d.ts.map +1 -0
  124. package/dist/{resource → vfs}/gcs/gcs.js +6 -6
  125. package/dist/vfs/gcs/gcs.js.map +1 -0
  126. package/dist/vfs/gcs/prompt.d.ts +2 -0
  127. package/dist/vfs/gcs/prompt.d.ts.map +1 -0
  128. package/dist/{resource → vfs}/gcs/prompt.js +1 -1
  129. package/dist/vfs/gcs/prompt.js.map +1 -0
  130. package/dist/{resource → vfs}/minio/config.d.ts +3 -3
  131. package/dist/vfs/minio/config.d.ts.map +1 -0
  132. package/dist/vfs/minio/config.js.map +1 -0
  133. package/dist/vfs/minio/minio.d.ts +8 -0
  134. package/dist/vfs/minio/minio.d.ts.map +1 -0
  135. package/dist/{resource → vfs}/minio/minio.js +6 -6
  136. package/dist/vfs/minio/minio.js.map +1 -0
  137. package/dist/vfs/minio/prompt.d.ts +2 -0
  138. package/dist/vfs/minio/prompt.d.ts.map +1 -0
  139. package/dist/{resource → vfs}/minio/prompt.js +1 -1
  140. package/dist/vfs/minio/prompt.js.map +1 -0
  141. package/dist/{resource → vfs}/mongodb/http_driver.d.ts +4 -3
  142. package/dist/vfs/mongodb/http_driver.d.ts.map +1 -0
  143. package/dist/{resource → vfs}/mongodb/http_driver.js +5 -8
  144. package/dist/vfs/mongodb/http_driver.js.map +1 -0
  145. package/dist/vfs/mongodb/mongodb.d.ts +28 -0
  146. package/dist/vfs/mongodb/mongodb.d.ts.map +1 -0
  147. package/dist/vfs/mongodb/mongodb.js +55 -0
  148. package/dist/vfs/mongodb/mongodb.js.map +1 -0
  149. package/dist/{resource → vfs}/notion/config.d.ts +3 -3
  150. package/dist/vfs/notion/config.d.ts.map +1 -0
  151. package/dist/{resource → vfs}/notion/config.js +1 -1
  152. package/dist/vfs/notion/config.js.map +1 -0
  153. package/dist/vfs/notion/notion.d.ts +18 -0
  154. package/dist/vfs/notion/notion.d.ts.map +1 -0
  155. package/dist/vfs/notion/notion.js +42 -0
  156. package/dist/vfs/notion/notion.js.map +1 -0
  157. package/dist/{resource → vfs}/oci/config.d.ts +4 -4
  158. package/dist/vfs/oci/config.d.ts.map +1 -0
  159. package/dist/{resource → vfs}/oci/config.js +1 -1
  160. package/dist/vfs/oci/config.js.map +1 -0
  161. package/dist/vfs/oci/oci.d.ts +8 -0
  162. package/dist/vfs/oci/oci.d.ts.map +1 -0
  163. package/dist/{resource → vfs}/oci/oci.js +6 -6
  164. package/dist/vfs/oci/oci.js.map +1 -0
  165. package/dist/vfs/oci/prompt.d.ts +2 -0
  166. package/dist/vfs/oci/prompt.d.ts.map +1 -0
  167. package/dist/{resource → vfs}/oci/prompt.js +1 -1
  168. package/dist/vfs/oci/prompt.js.map +1 -0
  169. package/dist/vfs/opfs/opfs.d.ts +53 -0
  170. package/dist/vfs/opfs/opfs.d.ts.map +1 -0
  171. package/dist/{resource → vfs}/opfs/opfs.js +70 -101
  172. package/dist/vfs/opfs/opfs.js.map +1 -0
  173. package/dist/vfs/opfs/prompt.d.ts +2 -0
  174. package/dist/vfs/opfs/prompt.d.ts.map +1 -0
  175. package/dist/{resource → vfs}/opfs/prompt.js +1 -1
  176. package/dist/vfs/opfs/prompt.js.map +1 -0
  177. package/dist/vfs/postgres/neon_driver.d.ts.map +1 -0
  178. package/dist/{resource → vfs}/postgres/neon_driver.js +3 -2
  179. package/dist/vfs/postgres/neon_driver.js.map +1 -0
  180. package/dist/vfs/postgres/postgres.d.ts +27 -0
  181. package/dist/vfs/postgres/postgres.d.ts.map +1 -0
  182. package/dist/vfs/postgres/postgres.js +53 -0
  183. package/dist/vfs/postgres/postgres.js.map +1 -0
  184. package/dist/{resource → vfs}/qingstor/config.d.ts +3 -3
  185. package/dist/vfs/qingstor/config.d.ts.map +1 -0
  186. package/dist/vfs/qingstor/config.js.map +1 -0
  187. package/dist/{resource/r2 → vfs/qingstor}/prompt.d.ts +1 -1
  188. package/dist/vfs/qingstor/prompt.d.ts.map +1 -0
  189. package/dist/{resource → vfs}/qingstor/prompt.js +1 -1
  190. package/dist/{resource/oci → vfs/qingstor}/prompt.js.map +1 -1
  191. package/dist/vfs/qingstor/qingstor.d.ts +8 -0
  192. package/dist/vfs/qingstor/qingstor.d.ts.map +1 -0
  193. package/dist/{resource → vfs}/qingstor/qingstor.js +6 -6
  194. package/dist/vfs/qingstor/qingstor.js.map +1 -0
  195. package/dist/{resource → vfs}/r2/config.d.ts +4 -4
  196. package/dist/vfs/r2/config.d.ts.map +1 -0
  197. package/dist/{resource → vfs}/r2/config.js +1 -1
  198. package/dist/vfs/r2/config.js.map +1 -0
  199. package/dist/vfs/r2/prompt.d.ts +2 -0
  200. package/dist/vfs/r2/prompt.d.ts.map +1 -0
  201. package/dist/{resource → vfs}/r2/prompt.js +1 -1
  202. package/dist/vfs/r2/prompt.js.map +1 -0
  203. package/dist/vfs/r2/r2.d.ts +8 -0
  204. package/dist/vfs/r2/r2.d.ts.map +1 -0
  205. package/dist/{resource → vfs}/r2/r2.js +6 -6
  206. package/dist/vfs/r2/r2.js.map +1 -0
  207. package/dist/vfs/redis/redis.d.ts +17 -0
  208. package/dist/vfs/redis/redis.d.ts.map +1 -0
  209. package/dist/{resource → vfs}/redis/redis.js +3 -3
  210. package/dist/vfs/redis/redis.js.map +1 -0
  211. package/dist/{resource → vfs}/redis/store.d.ts +7 -2
  212. package/dist/vfs/redis/store.d.ts.map +1 -0
  213. package/dist/{resource → vfs}/redis/store.js +54 -4
  214. package/dist/vfs/redis/store.js.map +1 -0
  215. package/dist/vfs/registry.d.ts +25 -0
  216. package/dist/vfs/registry.d.ts.map +1 -0
  217. package/dist/vfs/registry.js +297 -0
  218. package/dist/vfs/registry.js.map +1 -0
  219. package/dist/{resource → vfs}/s3/config.d.ts +3 -3
  220. package/dist/vfs/s3/config.d.ts.map +1 -0
  221. package/dist/{resource → vfs}/s3/config.js +3 -3
  222. package/dist/vfs/s3/config.js.map +1 -0
  223. package/dist/vfs/s3/prompt.d.ts +2 -0
  224. package/dist/vfs/s3/prompt.d.ts.map +1 -0
  225. package/dist/vfs/s3/prompt.js +19 -0
  226. package/dist/vfs/s3/prompt.js.map +1 -0
  227. package/dist/vfs/s3/s3.d.ts +21 -0
  228. package/dist/vfs/s3/s3.d.ts.map +1 -0
  229. package/dist/vfs/s3/s3.js +64 -0
  230. package/dist/vfs/s3/s3.js.map +1 -0
  231. package/dist/{resource → vfs}/s3_alias.d.ts +17 -24
  232. package/dist/vfs/s3_alias.d.ts.map +1 -0
  233. package/dist/{resource → vfs}/s3_alias.js +14 -28
  234. package/dist/vfs/s3_alias.js.map +1 -0
  235. package/dist/{resource → vfs}/scaleway/config.d.ts +3 -3
  236. package/dist/vfs/scaleway/config.d.ts.map +1 -0
  237. package/dist/vfs/scaleway/config.js.map +1 -0
  238. package/dist/vfs/scaleway/prompt.d.ts +2 -0
  239. package/dist/vfs/scaleway/prompt.d.ts.map +1 -0
  240. package/dist/{resource → vfs}/scaleway/prompt.js +1 -1
  241. package/dist/{resource/gcs → vfs/scaleway}/prompt.js.map +1 -1
  242. package/dist/vfs/scaleway/scaleway.d.ts +8 -0
  243. package/dist/vfs/scaleway/scaleway.d.ts.map +1 -0
  244. package/dist/{resource → vfs}/scaleway/scaleway.js +6 -6
  245. package/dist/vfs/scaleway/scaleway.js.map +1 -0
  246. package/dist/{resource → vfs}/seaweedfs/config.d.ts +3 -3
  247. package/dist/vfs/seaweedfs/config.d.ts.map +1 -0
  248. package/dist/vfs/seaweedfs/config.js.map +1 -0
  249. package/dist/vfs/seaweedfs/prompt.d.ts +2 -0
  250. package/dist/vfs/seaweedfs/prompt.d.ts.map +1 -0
  251. package/dist/{resource → vfs}/seaweedfs/prompt.js +1 -1
  252. package/dist/{resource/ceph → vfs/seaweedfs}/prompt.js.map +1 -1
  253. package/dist/vfs/seaweedfs/seaweedfs.d.ts +8 -0
  254. package/dist/vfs/seaweedfs/seaweedfs.d.ts.map +1 -0
  255. package/dist/{resource → vfs}/seaweedfs/seaweedfs.js +6 -6
  256. package/dist/vfs/seaweedfs/seaweedfs.js.map +1 -0
  257. package/dist/{resource → vfs}/slack/config.d.ts +5 -2
  258. package/dist/vfs/slack/config.d.ts.map +1 -0
  259. package/dist/{resource → vfs}/slack/config.js +10 -3
  260. package/dist/vfs/slack/config.js.map +1 -0
  261. package/dist/vfs/slack/slack.d.ts +19 -0
  262. package/dist/vfs/slack/slack.d.ts.map +1 -0
  263. package/dist/vfs/slack/slack.js +48 -0
  264. package/dist/vfs/slack/slack.js.map +1 -0
  265. package/dist/{resource → vfs}/supabase/config.d.ts +4 -4
  266. package/dist/vfs/supabase/config.d.ts.map +1 -0
  267. package/dist/{resource → vfs}/supabase/config.js +1 -1
  268. package/dist/vfs/supabase/config.js.map +1 -0
  269. package/dist/vfs/supabase/prompt.d.ts +2 -0
  270. package/dist/vfs/supabase/prompt.d.ts.map +1 -0
  271. package/dist/{resource → vfs}/supabase/prompt.js +1 -1
  272. package/dist/vfs/supabase/prompt.js.map +1 -0
  273. package/dist/vfs/supabase/supabase.d.ts +8 -0
  274. package/dist/vfs/supabase/supabase.d.ts.map +1 -0
  275. package/dist/{resource → vfs}/supabase/supabase.js +6 -6
  276. package/dist/vfs/supabase/supabase.js.map +1 -0
  277. package/dist/{resource → vfs}/tencent/config.d.ts +3 -3
  278. package/dist/vfs/tencent/config.d.ts.map +1 -0
  279. package/dist/vfs/tencent/config.js.map +1 -0
  280. package/dist/vfs/tencent/prompt.d.ts +2 -0
  281. package/dist/vfs/tencent/prompt.d.ts.map +1 -0
  282. package/dist/{resource → vfs}/tencent/prompt.js +1 -1
  283. package/dist/{resource/r2 → vfs/tencent}/prompt.js.map +1 -1
  284. package/dist/vfs/tencent/tencent.d.ts +8 -0
  285. package/dist/vfs/tencent/tencent.d.ts.map +1 -0
  286. package/dist/{resource → vfs}/tencent/tencent.js +6 -6
  287. package/dist/vfs/tencent/tencent.js.map +1 -0
  288. package/dist/{resource → vfs}/wasabi/config.d.ts +3 -3
  289. package/dist/vfs/wasabi/config.d.ts.map +1 -0
  290. package/dist/vfs/wasabi/config.js.map +1 -0
  291. package/dist/vfs/wasabi/prompt.d.ts +2 -0
  292. package/dist/vfs/wasabi/prompt.d.ts.map +1 -0
  293. package/dist/{resource → vfs}/wasabi/prompt.js +1 -1
  294. package/dist/vfs/wasabi/prompt.js.map +1 -0
  295. package/dist/vfs/wasabi/wasabi.d.ts +8 -0
  296. package/dist/vfs/wasabi/wasabi.d.ts.map +1 -0
  297. package/dist/{resource → vfs}/wasabi/wasabi.js +6 -6
  298. package/dist/vfs/wasabi/wasabi.js.map +1 -0
  299. package/dist/workspace.d.ts +5 -4
  300. package/dist/workspace.d.ts.map +1 -1
  301. package/dist/workspace.js +11 -30
  302. package/dist/workspace.js.map +1 -1
  303. package/package.json +8 -6
  304. package/dist/commands/builtin/opfs/index.d.ts +0 -3
  305. package/dist/commands/builtin/opfs/index.d.ts.map +0 -1
  306. package/dist/commands/builtin/opfs/index.js +0 -20
  307. package/dist/commands/builtin/opfs/index.js.map +0 -1
  308. package/dist/commands/builtin/opfs/io.d.ts +0 -4
  309. package/dist/commands/builtin/opfs/io.d.ts.map +0 -1
  310. package/dist/commands/builtin/opfs/io.js +0 -56
  311. package/dist/commands/builtin/opfs/io.js.map +0 -1
  312. package/dist/core/opfs/du/entries.d.ts +0 -4
  313. package/dist/core/opfs/du/entries.d.ts.map +0 -1
  314. package/dist/core/opfs/du/entries.js +0 -56
  315. package/dist/core/opfs/du/entries.js.map +0 -1
  316. package/dist/core/opfs/du/index.d.ts +0 -3
  317. package/dist/core/opfs/du/index.d.ts.map +0 -1
  318. package/dist/core/opfs/du/index.js +0 -16
  319. package/dist/core/opfs/du/index.js.map +0 -1
  320. package/dist/core/opfs/du/size.d.ts +0 -4
  321. package/dist/core/opfs/du/size.d.ts.map +0 -1
  322. package/dist/core/opfs/du/size.js +0 -18
  323. package/dist/core/opfs/du/size.js.map +0 -1
  324. package/dist/core/opfs/du/walk.d.ts +0 -3
  325. package/dist/core/opfs/du/walk.d.ts.map +0 -1
  326. package/dist/core/opfs/du/walk.js +0 -98
  327. package/dist/core/opfs/du/walk.js.map +0 -1
  328. package/dist/core/opfs/entry.d.ts +0 -11
  329. package/dist/core/opfs/entry.d.ts.map +0 -1
  330. package/dist/core/opfs/entry.js +0 -42
  331. package/dist/core/opfs/entry.js.map +0 -1
  332. package/dist/core/opfs/find.d.ts +0 -21
  333. package/dist/core/opfs/find.d.ts.map +0 -1
  334. package/dist/core/opfs/find.js +0 -154
  335. package/dist/core/opfs/find.js.map +0 -1
  336. package/dist/ops/opfs/index.d.ts +0 -3
  337. package/dist/ops/opfs/index.d.ts.map +0 -1
  338. package/dist/ops/opfs/index.js +0 -23
  339. package/dist/ops/opfs/index.js.map +0 -1
  340. package/dist/resource/aliyun/aliyun.d.ts +0 -8
  341. package/dist/resource/aliyun/aliyun.d.ts.map +0 -1
  342. package/dist/resource/aliyun/aliyun.js.map +0 -1
  343. package/dist/resource/aliyun/config.d.ts.map +0 -1
  344. package/dist/resource/aliyun/config.js.map +0 -1
  345. package/dist/resource/aliyun/prompt.d.ts +0 -2
  346. package/dist/resource/aliyun/prompt.d.ts.map +0 -1
  347. package/dist/resource/aliyun/prompt.js.map +0 -1
  348. package/dist/resource/backblaze/backblaze.d.ts +0 -8
  349. package/dist/resource/backblaze/backblaze.d.ts.map +0 -1
  350. package/dist/resource/backblaze/backblaze.js.map +0 -1
  351. package/dist/resource/backblaze/config.d.ts.map +0 -1
  352. package/dist/resource/backblaze/config.js.map +0 -1
  353. package/dist/resource/backblaze/prompt.d.ts +0 -2
  354. package/dist/resource/backblaze/prompt.d.ts.map +0 -1
  355. package/dist/resource/backblaze/prompt.js.map +0 -1
  356. package/dist/resource/box/box.d.ts +0 -34
  357. package/dist/resource/box/box.d.ts.map +0 -1
  358. package/dist/resource/box/box.js +0 -99
  359. package/dist/resource/box/box.js.map +0 -1
  360. package/dist/resource/box/config.d.ts +0 -41
  361. package/dist/resource/box/config.d.ts.map +0 -1
  362. package/dist/resource/box/config.js +0 -38
  363. package/dist/resource/box/config.js.map +0 -1
  364. package/dist/resource/ceph/ceph.d.ts +0 -8
  365. package/dist/resource/ceph/ceph.d.ts.map +0 -1
  366. package/dist/resource/ceph/ceph.js.map +0 -1
  367. package/dist/resource/ceph/config.d.ts.map +0 -1
  368. package/dist/resource/ceph/config.js.map +0 -1
  369. package/dist/resource/ceph/prompt.d.ts +0 -2
  370. package/dist/resource/ceph/prompt.d.ts.map +0 -1
  371. package/dist/resource/digitalocean/config.d.ts.map +0 -1
  372. package/dist/resource/digitalocean/config.js.map +0 -1
  373. package/dist/resource/digitalocean/digitalocean.d.ts +0 -8
  374. package/dist/resource/digitalocean/digitalocean.d.ts.map +0 -1
  375. package/dist/resource/digitalocean/digitalocean.js.map +0 -1
  376. package/dist/resource/digitalocean/prompt.d.ts +0 -2
  377. package/dist/resource/digitalocean/prompt.d.ts.map +0 -1
  378. package/dist/resource/digitalocean/prompt.js.map +0 -1
  379. package/dist/resource/discord/config.d.ts.map +0 -1
  380. package/dist/resource/discord/config.js.map +0 -1
  381. package/dist/resource/discord/discord.d.ts +0 -33
  382. package/dist/resource/discord/discord.d.ts.map +0 -1
  383. package/dist/resource/discord/discord.js +0 -90
  384. package/dist/resource/discord/discord.js.map +0 -1
  385. package/dist/resource/dropbox/config.d.ts +0 -34
  386. package/dist/resource/dropbox/config.d.ts.map +0 -1
  387. package/dist/resource/dropbox/config.js +0 -31
  388. package/dist/resource/dropbox/config.js.map +0 -1
  389. package/dist/resource/dropbox/dropbox.d.ts +0 -34
  390. package/dist/resource/dropbox/dropbox.d.ts.map +0 -1
  391. package/dist/resource/dropbox/dropbox.js +0 -95
  392. package/dist/resource/dropbox/dropbox.js.map +0 -1
  393. package/dist/resource/gcal/gcal.d.ts +0 -32
  394. package/dist/resource/gcal/gcal.d.ts.map +0 -1
  395. package/dist/resource/gcal/gcal.js +0 -87
  396. package/dist/resource/gcal/gcal.js.map +0 -1
  397. package/dist/resource/gcs/config.d.ts.map +0 -1
  398. package/dist/resource/gcs/config.js.map +0 -1
  399. package/dist/resource/gcs/gcs.d.ts +0 -8
  400. package/dist/resource/gcs/gcs.d.ts.map +0 -1
  401. package/dist/resource/gcs/gcs.js.map +0 -1
  402. package/dist/resource/gcs/prompt.d.ts +0 -2
  403. package/dist/resource/gcs/prompt.d.ts.map +0 -1
  404. package/dist/resource/gdocs/gdocs.d.ts +0 -32
  405. package/dist/resource/gdocs/gdocs.d.ts.map +0 -1
  406. package/dist/resource/gdocs/gdocs.js +0 -84
  407. package/dist/resource/gdocs/gdocs.js.map +0 -1
  408. package/dist/resource/gdrive/gdrive.d.ts +0 -34
  409. package/dist/resource/gdrive/gdrive.d.ts.map +0 -1
  410. package/dist/resource/gdrive/gdrive.js +0 -89
  411. package/dist/resource/gdrive/gdrive.js.map +0 -1
  412. package/dist/resource/github/github.d.ts +0 -38
  413. package/dist/resource/github/github.d.ts.map +0 -1
  414. package/dist/resource/github/github.js +0 -121
  415. package/dist/resource/github/github.js.map +0 -1
  416. package/dist/resource/gmail/gmail.d.ts +0 -33
  417. package/dist/resource/gmail/gmail.d.ts.map +0 -1
  418. package/dist/resource/gmail/gmail.js +0 -88
  419. package/dist/resource/gmail/gmail.js.map +0 -1
  420. package/dist/resource/gsheets/gsheets.d.ts +0 -32
  421. package/dist/resource/gsheets/gsheets.d.ts.map +0 -1
  422. package/dist/resource/gsheets/gsheets.js +0 -84
  423. package/dist/resource/gsheets/gsheets.js.map +0 -1
  424. package/dist/resource/gslides/gslides.d.ts +0 -32
  425. package/dist/resource/gslides/gslides.d.ts.map +0 -1
  426. package/dist/resource/gslides/gslides.js +0 -84
  427. package/dist/resource/gslides/gslides.js.map +0 -1
  428. package/dist/resource/langfuse/config.d.ts +0 -23
  429. package/dist/resource/langfuse/config.d.ts.map +0 -1
  430. package/dist/resource/langfuse/config.js +0 -36
  431. package/dist/resource/langfuse/config.js.map +0 -1
  432. package/dist/resource/langfuse/langfuse.d.ts +0 -31
  433. package/dist/resource/langfuse/langfuse.d.ts.map +0 -1
  434. package/dist/resource/langfuse/langfuse.js +0 -98
  435. package/dist/resource/langfuse/langfuse.js.map +0 -1
  436. package/dist/resource/linear/linear.d.ts +0 -33
  437. package/dist/resource/linear/linear.d.ts.map +0 -1
  438. package/dist/resource/linear/linear.js +0 -93
  439. package/dist/resource/linear/linear.js.map +0 -1
  440. package/dist/resource/minio/config.d.ts.map +0 -1
  441. package/dist/resource/minio/config.js.map +0 -1
  442. package/dist/resource/minio/minio.d.ts +0 -8
  443. package/dist/resource/minio/minio.d.ts.map +0 -1
  444. package/dist/resource/minio/minio.js.map +0 -1
  445. package/dist/resource/minio/prompt.d.ts.map +0 -1
  446. package/dist/resource/minio/prompt.js.map +0 -1
  447. package/dist/resource/mongodb/http_driver.d.ts.map +0 -1
  448. package/dist/resource/mongodb/http_driver.js.map +0 -1
  449. package/dist/resource/mongodb/mongodb.d.ts +0 -41
  450. package/dist/resource/mongodb/mongodb.d.ts.map +0 -1
  451. package/dist/resource/mongodb/mongodb.js +0 -100
  452. package/dist/resource/mongodb/mongodb.js.map +0 -1
  453. package/dist/resource/notion/config.d.ts.map +0 -1
  454. package/dist/resource/notion/config.js.map +0 -1
  455. package/dist/resource/notion/notion.d.ts +0 -32
  456. package/dist/resource/notion/notion.d.ts.map +0 -1
  457. package/dist/resource/notion/notion.js +0 -86
  458. package/dist/resource/notion/notion.js.map +0 -1
  459. package/dist/resource/oci/config.d.ts.map +0 -1
  460. package/dist/resource/oci/config.js.map +0 -1
  461. package/dist/resource/oci/oci.d.ts +0 -8
  462. package/dist/resource/oci/oci.d.ts.map +0 -1
  463. package/dist/resource/oci/oci.js.map +0 -1
  464. package/dist/resource/oci/prompt.d.ts +0 -2
  465. package/dist/resource/oci/prompt.d.ts.map +0 -1
  466. package/dist/resource/opfs/opfs.d.ts +0 -57
  467. package/dist/resource/opfs/opfs.d.ts.map +0 -1
  468. package/dist/resource/opfs/opfs.js.map +0 -1
  469. package/dist/resource/opfs/prompt.d.ts +0 -2
  470. package/dist/resource/opfs/prompt.d.ts.map +0 -1
  471. package/dist/resource/postgres/neon_driver.d.ts.map +0 -1
  472. package/dist/resource/postgres/neon_driver.js.map +0 -1
  473. package/dist/resource/postgres/postgres.d.ts +0 -40
  474. package/dist/resource/postgres/postgres.d.ts.map +0 -1
  475. package/dist/resource/postgres/postgres.js +0 -98
  476. package/dist/resource/postgres/postgres.js.map +0 -1
  477. package/dist/resource/qingstor/config.d.ts.map +0 -1
  478. package/dist/resource/qingstor/config.js.map +0 -1
  479. package/dist/resource/qingstor/prompt.d.ts +0 -2
  480. package/dist/resource/qingstor/prompt.d.ts.map +0 -1
  481. package/dist/resource/qingstor/prompt.js.map +0 -1
  482. package/dist/resource/qingstor/qingstor.d.ts +0 -8
  483. package/dist/resource/qingstor/qingstor.d.ts.map +0 -1
  484. package/dist/resource/qingstor/qingstor.js.map +0 -1
  485. package/dist/resource/r2/config.d.ts.map +0 -1
  486. package/dist/resource/r2/config.js.map +0 -1
  487. package/dist/resource/r2/prompt.d.ts.map +0 -1
  488. package/dist/resource/r2/r2.d.ts +0 -8
  489. package/dist/resource/r2/r2.d.ts.map +0 -1
  490. package/dist/resource/r2/r2.js.map +0 -1
  491. package/dist/resource/redis/redis.d.ts +0 -17
  492. package/dist/resource/redis/redis.d.ts.map +0 -1
  493. package/dist/resource/redis/redis.js.map +0 -1
  494. package/dist/resource/redis/store.d.ts.map +0 -1
  495. package/dist/resource/redis/store.js.map +0 -1
  496. package/dist/resource/registry.d.ts +0 -25
  497. package/dist/resource/registry.d.ts.map +0 -1
  498. package/dist/resource/registry.js +0 -279
  499. package/dist/resource/registry.js.map +0 -1
  500. package/dist/resource/s3/config.d.ts.map +0 -1
  501. package/dist/resource/s3/config.js.map +0 -1
  502. package/dist/resource/s3/s3.d.ts +0 -53
  503. package/dist/resource/s3/s3.d.ts.map +0 -1
  504. package/dist/resource/s3/s3.js +0 -182
  505. package/dist/resource/s3/s3.js.map +0 -1
  506. package/dist/resource/s3_alias.d.ts.map +0 -1
  507. package/dist/resource/s3_alias.js.map +0 -1
  508. package/dist/resource/scaleway/config.d.ts.map +0 -1
  509. package/dist/resource/scaleway/config.js.map +0 -1
  510. package/dist/resource/scaleway/prompt.d.ts +0 -2
  511. package/dist/resource/scaleway/prompt.d.ts.map +0 -1
  512. package/dist/resource/scaleway/prompt.js.map +0 -1
  513. package/dist/resource/scaleway/scaleway.d.ts +0 -8
  514. package/dist/resource/scaleway/scaleway.d.ts.map +0 -1
  515. package/dist/resource/scaleway/scaleway.js.map +0 -1
  516. package/dist/resource/seaweedfs/config.d.ts.map +0 -1
  517. package/dist/resource/seaweedfs/config.js.map +0 -1
  518. package/dist/resource/seaweedfs/prompt.d.ts +0 -2
  519. package/dist/resource/seaweedfs/prompt.d.ts.map +0 -1
  520. package/dist/resource/seaweedfs/prompt.js.map +0 -1
  521. package/dist/resource/seaweedfs/seaweedfs.d.ts +0 -8
  522. package/dist/resource/seaweedfs/seaweedfs.d.ts.map +0 -1
  523. package/dist/resource/seaweedfs/seaweedfs.js.map +0 -1
  524. package/dist/resource/slack/config.d.ts.map +0 -1
  525. package/dist/resource/slack/config.js.map +0 -1
  526. package/dist/resource/slack/slack.d.ts +0 -33
  527. package/dist/resource/slack/slack.d.ts.map +0 -1
  528. package/dist/resource/slack/slack.js +0 -91
  529. package/dist/resource/slack/slack.js.map +0 -1
  530. package/dist/resource/supabase/config.d.ts.map +0 -1
  531. package/dist/resource/supabase/config.js.map +0 -1
  532. package/dist/resource/supabase/prompt.d.ts.map +0 -1
  533. package/dist/resource/supabase/prompt.js.map +0 -1
  534. package/dist/resource/supabase/supabase.d.ts +0 -8
  535. package/dist/resource/supabase/supabase.d.ts.map +0 -1
  536. package/dist/resource/supabase/supabase.js.map +0 -1
  537. package/dist/resource/tencent/config.d.ts.map +0 -1
  538. package/dist/resource/tencent/config.js.map +0 -1
  539. package/dist/resource/tencent/prompt.d.ts +0 -2
  540. package/dist/resource/tencent/prompt.d.ts.map +0 -1
  541. package/dist/resource/tencent/tencent.d.ts +0 -8
  542. package/dist/resource/tencent/tencent.d.ts.map +0 -1
  543. package/dist/resource/tencent/tencent.js.map +0 -1
  544. package/dist/resource/trello/config.d.ts +0 -22
  545. package/dist/resource/trello/config.d.ts.map +0 -1
  546. package/dist/resource/trello/config.js +0 -35
  547. package/dist/resource/trello/config.js.map +0 -1
  548. package/dist/resource/trello/trello.d.ts +0 -32
  549. package/dist/resource/trello/trello.d.ts.map +0 -1
  550. package/dist/resource/trello/trello.js +0 -94
  551. package/dist/resource/trello/trello.js.map +0 -1
  552. package/dist/resource/wasabi/config.d.ts.map +0 -1
  553. package/dist/resource/wasabi/config.js.map +0 -1
  554. package/dist/resource/wasabi/prompt.d.ts +0 -2
  555. package/dist/resource/wasabi/prompt.d.ts.map +0 -1
  556. package/dist/resource/wasabi/prompt.js.map +0 -1
  557. package/dist/resource/wasabi/wasabi.d.ts +0 -8
  558. package/dist/resource/wasabi/wasabi.d.ts.map +0 -1
  559. package/dist/resource/wasabi/wasabi.js.map +0 -1
  560. package/dist/runtime/sandbox/e2b/config.d.ts +0 -2
  561. package/dist/runtime/sandbox/e2b/config.d.ts.map +0 -1
  562. package/dist/runtime/sandbox/e2b/config.js +0 -15
  563. package/dist/runtime/sandbox/e2b/config.js.map +0 -1
  564. package/dist/runtime/sandbox/e2b/runtime.d.ts +0 -2
  565. package/dist/runtime/sandbox/e2b/runtime.d.ts.map +0 -1
  566. package/dist/runtime/sandbox/e2b/runtime.js +0 -15
  567. package/dist/runtime/sandbox/e2b/runtime.js.map +0 -1
  568. package/dist/test-utils.d.ts +0 -37
  569. package/dist/test-utils.d.ts.map +0 -1
  570. package/dist/test-utils.js +0 -518
  571. package/dist/test-utils.js.map +0 -1
  572. /package/dist/{resource → vfs}/aliyun/config.js +0 -0
  573. /package/dist/{resource → vfs}/backblaze/config.js +0 -0
  574. /package/dist/{resource → vfs}/ceph/config.js +0 -0
  575. /package/dist/{resource → vfs}/digitalocean/config.js +0 -0
  576. /package/dist/{resource → vfs}/gcs/config.js +0 -0
  577. /package/dist/{resource → vfs}/minio/config.js +0 -0
  578. /package/dist/{resource → vfs}/postgres/neon_driver.d.ts +0 -0
  579. /package/dist/{resource → vfs}/qingstor/config.js +0 -0
  580. /package/dist/{resource → vfs}/scaleway/config.js +0 -0
  581. /package/dist/{resource → vfs}/seaweedfs/config.js +0 -0
  582. /package/dist/{resource → vfs}/tencent/config.js +0 -0
  583. /package/dist/{resource → vfs}/wasabi/config.js +0 -0
@@ -0,0 +1,17 @@
1
+ import { RedisVFS as CoreRedisVFS } from '@struktoai/mirage-core/vfs/redis/redis';
2
+ import { UpstashRedisStore, type UpstashRedisStoreOptions } from './store.ts';
3
+ export type { RedisVFSState } from '@struktoai/mirage-core/vfs/redis/redis';
4
+ export type RedisVFSOptions = UpstashRedisStoreOptions;
5
+ /**
6
+ * The browser redis mount: the shared VFS over Upstash's REST api.
7
+ *
8
+ * A page cannot open a socket, so the store speaks HTTP to Upstash, or to
9
+ * serverless-redis-http in front of any redis. It takes the redis url the
10
+ * node and python mounts take, and the keyspace is the one they use, so one
11
+ * configuration and one database serve all three.
12
+ */
13
+ export declare class RedisVFS extends CoreRedisVFS {
14
+ readonly store: UpstashRedisStore;
15
+ constructor(options: RedisVFSOptions);
16
+ }
17
+ //# sourceMappingURL=redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/vfs/redis/redis.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE7E,YAAY,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAE3E,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAA;AAEtD;;;;;;;GAOG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,SAAiB,KAAK,EAAE,iBAAiB,CAAA;gBAE7B,OAAO,EAAE,eAAe;CAGrC"}
@@ -11,17 +11,17 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
14
- import { RedisResourceBase } from '@struktoai/mirage-core/resource/redis/redis';
14
+ import { RedisVFS as CoreRedisVFS } from '@struktoai/mirage-core/vfs/redis/redis';
15
15
  import { UpstashRedisStore } from "./store.js";
16
16
  /**
17
- * The browser redis mount: the shared resource over Upstash's REST api.
17
+ * The browser redis mount: the shared VFS over Upstash's REST api.
18
18
  *
19
19
  * A page cannot open a socket, so the store speaks HTTP to Upstash, or to
20
20
  * serverless-redis-http in front of any redis. It takes the redis url the
21
21
  * node and python mounts take, and the keyspace is the one they use, so one
22
22
  * configuration and one database serve all three.
23
23
  */
24
- export class RedisResource extends RedisResourceBase {
24
+ export class RedisVFS extends CoreRedisVFS {
25
25
  constructor(options) {
26
26
  super(new UpstashRedisStore(options));
27
27
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/vfs/redis/redis.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,uEAAuE;AAEvE,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAiC,MAAM,YAAY,CAAA;AAM7E;;;;;;;GAOG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAY;IAGxC,YAAY,OAAwB;QAClC,KAAK,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;IACvC,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import type { RedisRestore, RedisStoreLike } from '@struktoai/mirage-core/resource/redis/store';
1
+ import type { RedisRestore, RedisStoreLike } from '@struktoai/mirage-core/vfs/redis/store';
2
2
  export interface UpstashRedisStoreOptions {
3
3
  /**
4
4
  * The redis url the Upstash console prints,
@@ -37,21 +37,23 @@ export declare class UpstashRedisStore implements RedisStoreLike {
37
37
  private readonly token;
38
38
  private readonly fetchImpl;
39
39
  private readonly maxRequestBytes;
40
+ private rootSeeded;
40
41
  constructor(options: UpstashRedisStoreOptions);
41
42
  fk(path: string): string;
42
43
  dk(): string;
43
44
  mk(path: string): string;
44
45
  ak(path: string): string;
45
46
  private request;
47
+ private send;
46
48
  private command;
47
49
  private pipeline;
48
50
  private raw;
49
51
  private integer;
50
52
  private scan;
51
- open(): Promise<void>;
52
53
  getFile(path: string): Promise<Uint8Array | null>;
53
54
  getFileRange(path: string, offset: number, size: number | null): Promise<Uint8Array | null>;
54
55
  setFile(path: string, data: Uint8Array): Promise<void>;
56
+ truncateFile(path: string, length: number, modified: string, noCreate?: boolean): Promise<boolean>;
55
57
  delFile(path: string): Promise<void>;
56
58
  hasFile(path: string): Promise<boolean>;
57
59
  listFiles(prefix?: string): Promise<string[]>;
@@ -64,6 +66,9 @@ export declare class UpstashRedisStore implements RedisStoreLike {
64
66
  setModified(path: string, ts: string): Promise<void>;
65
67
  delModified(path: string): Promise<void>;
66
68
  getAttrs(path: string): Promise<Record<string, string>>;
69
+ /** The attributes, length and modified time of many paths, in one pipeline. */
70
+ infoMemory(): Promise<string>;
71
+ statMany(paths: readonly (readonly [string, boolean])[]): Promise<[Record<string, string>, number | null, string | null][]>;
67
72
  setAttrs(path: string, fields: Record<string, string>): Promise<void>;
68
73
  delAttrs(path: string): Promise<void>;
69
74
  listAttrs(): Promise<Record<string, Record<string, string>>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/vfs/redis/store.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,9 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
14
+ import { TRUNCATE_SCRIPT } from '@struktoai/mirage-core/vfs/redis/constants';
14
15
  import { decodeBase64 } from '@struktoai/mirage-core/utils/base64';
15
- import { escapeGlob } from '@struktoai/mirage-core/core/redis/utils';
16
+ import { escapeGlob } from '@struktoai/mirage-core/vfs/redis/store';
16
17
  import { rstripSlash } from '@struktoai/mirage-core/utils/slash';
17
18
  import { compareCodePoints } from '@struktoai/mirage-core/utils/sort';
18
19
  // Upstash caps one REST request at 10 MB on every plan, so a file above this
@@ -129,6 +130,7 @@ export class UpstashRedisStore {
129
130
  token;
130
131
  fetchImpl;
131
132
  maxRequestBytes;
133
+ rootSeeded = null;
132
134
  constructor(options) {
133
135
  const target = restTarget(options);
134
136
  this.url = target.base;
@@ -153,7 +155,18 @@ export class UpstashRedisStore {
153
155
  ak(path) {
154
156
  return `${this.keyPrefix}attrs:${path}`;
155
157
  }
158
+ // The root directory marker goes out before the first request, once.
159
+ // Python's store writes it in its constructor and the node store on
160
+ // connect; a page has neither a sync client nor a connection, so the
161
+ // first request is the moment.
156
162
  async request(path, body, contentType, base64) {
163
+ this.rootSeeded ??= this.send('', JSON.stringify(['SADD', this.dk(), '/']), 'application/json', false).then((reply) => {
164
+ unwrap(reply);
165
+ });
166
+ await this.rootSeeded;
167
+ return this.send(path, body, contentType, base64);
168
+ }
169
+ async send(path, body, contentType, base64) {
157
170
  const headers = {
158
171
  Authorization: `Bearer ${this.token}`,
159
172
  'Content-Type': contentType,
@@ -226,9 +239,6 @@ export class UpstashRedisStore {
226
239
  } while (cursor !== '0');
227
240
  return keys;
228
241
  }
229
- async open() {
230
- await this.command(['SADD', this.dk(), '/']);
231
- }
232
242
  async getFile(path) {
233
243
  const reply = await this.command(['GET', this.fk(path)], true);
234
244
  if (reply === null)
@@ -277,6 +287,18 @@ export class UpstashRedisStore {
277
287
  throw err;
278
288
  }
279
289
  }
290
+ async truncateFile(path, length, modified, noCreate = false) {
291
+ return ((await this.command([
292
+ 'EVAL',
293
+ TRUNCATE_SCRIPT,
294
+ 2,
295
+ this.fk(path),
296
+ this.mk(path),
297
+ length,
298
+ modified,
299
+ noCreate ? '1' : '0',
300
+ ])) === 1);
301
+ }
280
302
  async delFile(path) {
281
303
  await this.command(['DEL', this.fk(path)]);
282
304
  }
@@ -316,6 +338,33 @@ export class UpstashRedisStore {
316
338
  async getAttrs(path) {
317
339
  return pairsToRecord(expectStrings(await this.command(['HGETALL', this.ak(path)]), 'HGETALL'));
318
340
  }
341
+ /** The attributes, length and modified time of many paths, in one pipeline. */
342
+ async infoMemory() {
343
+ return expectString(await this.command(['INFO', 'memory']), 'INFO');
344
+ }
345
+ async statMany(paths) {
346
+ const commands = [];
347
+ for (const [path, isDir] of paths) {
348
+ commands.push(['HGETALL', this.ak(path)]);
349
+ if (!isDir)
350
+ commands.push(['STRLEN', this.fk(path)]);
351
+ commands.push(['GET', this.mk(path)]);
352
+ }
353
+ const replies = await this.pipeline(commands);
354
+ let at = 0;
355
+ return paths.map(([, isDir]) => {
356
+ const raw = pairsToRecord(expectStrings(replies[at++] ?? null, 'HGETALL'));
357
+ let size = null;
358
+ if (!isDir) {
359
+ const reply = replies[at++] ?? null;
360
+ if (typeof reply !== 'number')
361
+ throw new Error('upstash: STRLEN did not answer an integer');
362
+ size = reply;
363
+ }
364
+ const modified = replies[at++] ?? null;
365
+ return [raw, size, modified === null ? null : expectString(modified, 'GET')];
366
+ });
367
+ }
319
368
  async setAttrs(path, fields) {
320
369
  const flat = Object.entries(fields).flat();
321
370
  if (flat.length === 0)
@@ -373,6 +422,7 @@ export class UpstashRedisStore {
373
422
  }
374
423
  }
375
424
  await this.command(['DEL', this.dk()]);
425
+ this.rootSeeded = null;
376
426
  }
377
427
  close() {
378
428
  return Promise.resolve();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/vfs/redis/store.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,uEAAuE;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAErE,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,2EAA2E;AAC3E,MAAM,yBAAyB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACjD,MAAM,UAAU,GAAG,IAAI,CAAA;AACvB,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAA;AA2B9B;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,OAAiC;IACnD,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAA;IACH,CAAC;IACD,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAA;IAC5F,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClE,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACtF,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,wFAAwF;gBACtF,uCAAuC,CAC1C,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAA;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChE,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAA;QAC/F,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAA;IACjE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAA;AAC5F,CAAC;AAED,SAAS,MAAM,CAAC,OAAkB;IAChC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAA;IACnE,OAAO,OAAO,CAAC,MAAM,IAAI,IAAI,CAAA;AAC/B,CAAC;AAED,SAAS,YAAY,CAAC,KAAgB,EAAE,OAAe;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,0BAA0B,CAAC,CAAA;IAC7F,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB,EAAE,OAAe;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,0BAA0B,CAAC,CAAA;IACzF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAI,KAAmB,EAAE,KAAa;IACrD,MAAM,IAAI,GAAU,EAAE,CAAA;IACtB,IAAI,GAAG,GAAQ,EAAE,CAAA;IACjB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAA;QAC7D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,GAAG,GAAG,EAAE,CAAA;YACR,KAAK,GAAG,CAAC,CAAA;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,aAAa,CAAC,IAAuB;IAC5C,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACxC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,iBAAiB;IACnB,GAAG,CAAQ;IACX,SAAS,CAAQ;IACT,KAAK,CAAQ;IACb,SAAS,CAAc;IACvB,eAAe,CAAQ;IAChC,UAAU,GAAyB,IAAI,CAAA;IAE/C,YAAY,OAAiC;QAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,YAAY,CAAA;QAClD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,IAAI,yBAAyB,CAAA;QAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;IAC9B,CAAC;IAED,EAAE,CAAC,IAAY;QACb,OAAO,GAAG,IAAI,CAAC,SAAS,QAAQ,IAAI,EAAE,CAAA;IACxC,CAAC;IAED,EAAE;QACA,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,CAAA;IAC/B,CAAC;IAED,EAAE,CAAC,IAAY;QACb,OAAO,GAAG,IAAI,CAAC,SAAS,YAAY,IAAI,EAAE,CAAA;IAC5C,CAAC;IAED,EAAE,CAAC,IAAY;QACb,OAAO,GAAG,IAAI,CAAC,SAAS,SAAS,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,qEAAqE;IACrE,oEAAoE;IACpE,qEAAqE;IACrE,+BAA+B;IACvB,KAAK,CAAC,OAAO,CACnB,IAAY,EACZ,IAAc,EACd,WAAmB,EACnB,MAAe;QAEf,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAC3B,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EACxC,kBAAkB,EAClB,KAAK,CACN,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,UAAU,CAAA;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IACnD,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,IAAY,EACZ,IAAc,EACd,WAAmB,EACnB,MAAe;QAEf,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;YACrC,cAAc,EAAE,WAAW;SAC5B,CAAA;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAA;QAClD,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC/D,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,GAAG,KAAK,MAAM,0CAA0C;gBACpF,qEAAqE,CACxE,CAAA;QACH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,OAAkB,CAAA;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAA;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;QAClF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GACX,OAAO,KAAK,IAAI;gBAChB,OAAO,OAAO,KAAK,QAAQ;gBAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvB,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAC/B,CAAC,CAAC,OAAO,CAAC,KAAK;gBACf,CAAC,CAAC,IAAI,CAAA;YACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAA2B,EAAE,MAAM,GAAG,KAAK;QAC/D,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;IACzF,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,QAA4C,EAC5C,MAAM,GAAG,KAAK;QAEd,MAAM,OAAO,GAAgB,EAAE,CAAA;QAC/B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAChC,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACnB,kBAAkB,EAClB,MAAM,CACP,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;YACzF,KAAK,MAAM,IAAI,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACxD,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,OAAyB,EAAE,GAAW,EAAE,IAAgB;QACxE,MAAM,CACJ,MAAM,IAAI,CAAC,OAAO,CAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,EACxC,IAAgB,EAChB,0BAA0B,EAC1B,KAAK,CACN,CACF,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAA2B;QAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,OAAe;QAChC,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,IAAI,MAAM,GAAG,GAAG,CAAA;QAChB,GAAG,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;YACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;YACrE,CAAC;YACD,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,CAAA;YAC/C,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3E,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC9D,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC/B,OAAO,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,IAAY,EACZ,MAAc,EACd,IAAmB;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACzB,4DAA4D;QAC5D,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAC7F,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAA;QAClD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CACvC;YACE,CAAC,QAAQ,EAAE,GAAG,CAAC;YACf,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC;SAC/B,EACD,IAAI,CACL,CAAA;QACD,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC7B,OAAO,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAAgB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAA;QAClC,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YAChC,OAAM;QACR,CAAC;QACD,2EAA2E;QAC3E,4EAA4E;QAC5E,2EAA2E;QAC3E,2CAA2C;QAC3C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,OAAO,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAA;QACrE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;YACvD,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;gBACnE,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAA;YAC1E,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YACpC,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,IAAY,EACZ,MAAc,EACd,QAAgB,EAChB,QAAQ,GAAG,KAAK;QAEhB,OAAO,CACL,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM;YACN,eAAe;YACf,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;YACb,MAAM;YACN,QAAQ;YACR,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;SACrB,CAAC,CAAC,KAAK,CAAC,CACV,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE;QACzB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,OAAO,CAAA;QACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAA;QAClE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC1E,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,EAAU;QACxC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,OAAO,aAAa,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;IAChG,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,UAAU;QACd,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACrE,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,KAA8C;QAE9C,MAAM,QAAQ,GAAmB,EAAE,CAAA;QACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACzC,IAAI,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACpD,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC7C,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;YAC1E,IAAI,IAAI,GAAkB,IAAI,CAAA;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAA;gBACnC,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;gBAC3F,IAAI,GAAG,KAAK,CAAA;YACd,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAA;YACtC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;QAC9E,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,MAA8B;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAA;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QACxE,MAAM,GAAG,GAA2C,EAAE,CAAA;QACtD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;QAC3F,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,WAAW,CAAA;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QACpE,MAAM,GAAG,GAA2B,EAAE,CAAA;QACtC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;YAChC,IAAI,KAAK,KAAK,IAAI;gBAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9E,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmB;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,QAAQ,GAAmB,EAAE,CAAA;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QACrE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YAC1C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACpC,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAED,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { ResolvedSource } from '@struktoai/mirage-core/secrets/types';
2
+ import type { BaseVFS } from '@struktoai/mirage-core/vfs/base';
3
+ /**
4
+ * Construct a VFS by registry name in the browser runtime.
5
+ * Mirrors Python's `mirage.vfs.registry.build_vfs` and the
6
+ * Node TS counterpart at `@struktoai/mirage-node/vfs/registry`.
7
+ *
8
+ * Configs are normalized from Python-style snake_case to TS camelCase so
9
+ * the same YAML schema works across both runtimes.
10
+ *
11
+ * The S3 entry expects a browser-shaped config — bucket + a
12
+ * `presignedUrlProvider` function. Since functions can't be encoded
13
+ * in JSON/YAML, browser configs are typically constructed
14
+ * programmatically and passed in directly.
15
+ */
16
+ export type VFSFactory = (config: Record<string, unknown>) => Promise<BaseVFS>;
17
+ export declare function knownVfsNames(): string[];
18
+ /**
19
+ * Register a custom VFS factory under `name`. Builtin names cannot
20
+ * be shadowed; re-registering a custom name replaces it. Mirrors
21
+ * Python's `register_vfs` and the Node counterpart.
22
+ */
23
+ export declare function registerVfs(name: string, factory: VFSFactory): void;
24
+ export declare function buildVfs(name: string, config?: Record<string, unknown>, sources?: Readonly<Record<string, ResolvedSource>>): Promise<BaseVFS>;
25
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/vfs/registry.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAS9D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AA2P9E,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAGnE;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GACjD,OAAO,CAAC,OAAO,CAAC,CAuBlB"}
@@ -0,0 +1,297 @@
1
+ // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
14
+ import { resolveConfigSecrets } from '@struktoai/mirage-core/secrets/sources';
15
+ import { refuseUnknownKeys, z } from '@struktoai/mirage-core/vfs/secrets';
16
+ import { errorSummary } from '@struktoai/mirage-core/secrets/summary';
17
+ import { VFSConfigError } from '@struktoai/mirage-core/vfs/errors';
18
+ import { normalizeFields } from '@struktoai/mirage-core/utils/normalize';
19
+ import { compareCodePoints } from '@struktoai/mirage-core/utils/sort';
20
+ // The backends that take their options without a schema, and the option
21
+ // names each takes, so a key outside these is refused rather than ignored,
22
+ // the way python refuses a constructor keyword its class does not take.
23
+ const OPFS_OPTIONS = ['root'];
24
+ const REDIS_OPTIONS = [
25
+ 'url',
26
+ 'token',
27
+ 'keyPrefix',
28
+ 'fetchImpl',
29
+ 'maxRequestBytes',
30
+ ];
31
+ const REGISTRY = {
32
+ ram: async (config) => {
33
+ refuseUnknownKeys(config, []);
34
+ const { RAMVFS } = await import('@struktoai/mirage-core/vfs/ram/ram');
35
+ return new RAMVFS();
36
+ },
37
+ opfs: async (config) => {
38
+ refuseUnknownKeys(config, OPFS_OPTIONS);
39
+ const { OPFSVFS } = await import("./opfs/opfs.js");
40
+ const norm = normalizeFields(config);
41
+ return new OPFSVFS(norm);
42
+ },
43
+ s3: async (config) => {
44
+ const { S3VFS } = await import("./s3/s3.js");
45
+ const { normalizeS3Config } = await import("./s3/config.js");
46
+ return new S3VFS(normalizeS3Config(config));
47
+ },
48
+ gcs: async (config) => {
49
+ const { GCSVFS } = await import("./gcs/gcs.js");
50
+ const { normalizeGCSConfig } = await import("./gcs/config.js");
51
+ return new GCSVFS(normalizeGCSConfig(config));
52
+ },
53
+ r2: async (config) => {
54
+ const { R2VFS } = await import("./r2/r2.js");
55
+ const { normalizeR2Config } = await import("./r2/config.js");
56
+ return new R2VFS(normalizeR2Config(config));
57
+ },
58
+ oci: async (config) => {
59
+ const { OCIVFS } = await import("./oci/oci.js");
60
+ const { normalizeOCIConfig } = await import("./oci/config.js");
61
+ return new OCIVFS(normalizeOCIConfig(config));
62
+ },
63
+ supabase: async (config) => {
64
+ const { SupabaseVFS } = await import("./supabase/supabase.js");
65
+ const { normalizeSupabaseConfig } = await import("./supabase/config.js");
66
+ return new SupabaseVFS(normalizeSupabaseConfig(config));
67
+ },
68
+ minio: async (config) => {
69
+ const { MinIOVFS } = await import("./minio/minio.js");
70
+ const { normalizeMinIOConfig } = await import("./minio/config.js");
71
+ return new MinIOVFS(normalizeMinIOConfig(config));
72
+ },
73
+ ceph: async (config) => {
74
+ const { CephVFS } = await import("./ceph/ceph.js");
75
+ const { normalizeCephConfig } = await import("./ceph/config.js");
76
+ return new CephVFS(normalizeCephConfig(config));
77
+ },
78
+ seaweedfs: async (config) => {
79
+ const { SeaweedFSVFS } = await import("./seaweedfs/seaweedfs.js");
80
+ const { normalizeSeaweedFSConfig } = await import("./seaweedfs/config.js");
81
+ return new SeaweedFSVFS(normalizeSeaweedFSConfig(config));
82
+ },
83
+ wasabi: async (config) => {
84
+ const { WasabiVFS } = await import("./wasabi/wasabi.js");
85
+ const { normalizeWasabiConfig } = await import("./wasabi/config.js");
86
+ return new WasabiVFS(normalizeWasabiConfig(config));
87
+ },
88
+ backblaze: async (config) => {
89
+ const { BackblazeVFS } = await import("./backblaze/backblaze.js");
90
+ const { normalizeBackblazeConfig } = await import("./backblaze/config.js");
91
+ return new BackblazeVFS(normalizeBackblazeConfig(config));
92
+ },
93
+ digitalocean: async (config) => {
94
+ const { DigitalOceanVFS } = await import("./digitalocean/digitalocean.js");
95
+ const { normalizeDigitalOceanConfig } = await import("./digitalocean/config.js");
96
+ return new DigitalOceanVFS(normalizeDigitalOceanConfig(config));
97
+ },
98
+ tencent: async (config) => {
99
+ const { TencentVFS } = await import("./tencent/tencent.js");
100
+ const { normalizeTencentConfig } = await import("./tencent/config.js");
101
+ return new TencentVFS(normalizeTencentConfig(config));
102
+ },
103
+ aliyun: async (config) => {
104
+ const { AliyunVFS } = await import("./aliyun/aliyun.js");
105
+ const { normalizeAliyunConfig } = await import("./aliyun/config.js");
106
+ return new AliyunVFS(normalizeAliyunConfig(config));
107
+ },
108
+ scaleway: async (config) => {
109
+ const { ScalewayVFS } = await import("./scaleway/scaleway.js");
110
+ const { normalizeScalewayConfig } = await import("./scaleway/config.js");
111
+ return new ScalewayVFS(normalizeScalewayConfig(config));
112
+ },
113
+ qingstor: async (config) => {
114
+ const { QingStorVFS } = await import("./qingstor/qingstor.js");
115
+ const { normalizeQingStorConfig } = await import("./qingstor/config.js");
116
+ return new QingStorVFS(normalizeQingStorConfig(config));
117
+ },
118
+ slack: async (config) => {
119
+ const { SlackVFS } = await import("./slack/slack.js");
120
+ const { normalizeSlackConfig } = await import("./slack/config.js");
121
+ return new SlackVFS(normalizeSlackConfig(config));
122
+ },
123
+ discord: async (config) => {
124
+ const { DiscordVFS } = await import("./discord/discord.js");
125
+ const { normalizeDiscordConfig } = await import("./discord/config.js");
126
+ return new DiscordVFS(normalizeDiscordConfig(config));
127
+ },
128
+ trello: async (config) => {
129
+ const { TrelloVFS } = await import('@struktoai/mirage-core/vfs/trello/trello');
130
+ const { normalizeTrelloConfig } = await import('@struktoai/mirage-core/core/trello/config');
131
+ return new TrelloVFS(normalizeTrelloConfig(config));
132
+ },
133
+ wandb: async (config) => {
134
+ const { WandbVFS } = await import('@struktoai/mirage-core/vfs/wandb/wandb');
135
+ const { normalizeWandbConfig } = await import('@struktoai/mirage-core/core/wandb/config');
136
+ return new WandbVFS(normalizeWandbConfig(config));
137
+ },
138
+ linear: async (config) => {
139
+ const { LinearVFS } = await import('@struktoai/mirage-core/vfs/linear/linear');
140
+ const { normalizeLinearConfig } = await import('@struktoai/mirage-core/core/linear/config');
141
+ return new LinearVFS(normalizeLinearConfig(config));
142
+ },
143
+ postgres: async (config) => {
144
+ const { PostgresVFS } = await import("./postgres/postgres.js");
145
+ const { normalizePostgresConfig } = await import('@struktoai/mirage-core/vfs/postgres/config');
146
+ return new PostgresVFS(normalizePostgresConfig(config));
147
+ },
148
+ mongodb: async (config) => {
149
+ const { MongoDBVFS } = await import("./mongodb/mongodb.js");
150
+ const { normalizeMongoDBConfig } = await import('@struktoai/mirage-core/vfs/mongodb/config');
151
+ return new MongoDBVFS(normalizeMongoDBConfig(config));
152
+ },
153
+ chroma: async (config) => {
154
+ const { ChromaVFS } = await import('@struktoai/mirage-core/vfs/chroma/chroma');
155
+ const { normalizeChromaConfig } = await import('@struktoai/mirage-core/vfs/chroma/config');
156
+ return new ChromaVFS(normalizeChromaConfig(config));
157
+ },
158
+ dify: async (config) => {
159
+ const { DifyVFS } = await import('@struktoai/mirage-core/vfs/dify/dify');
160
+ const { normalizeDifyConfig } = await import('@struktoai/mirage-core/vfs/dify/config');
161
+ return new DifyVFS(normalizeDifyConfig(config));
162
+ },
163
+ qdrant: async (config) => {
164
+ const { QdrantVFS } = await import('@struktoai/mirage-core/vfs/qdrant/qdrant');
165
+ const { normalizeQdrantConfig } = await import('@struktoai/mirage-core/vfs/qdrant/config');
166
+ return new QdrantVFS(normalizeQdrantConfig(config));
167
+ },
168
+ redis: async (config) => {
169
+ refuseUnknownKeys(config, REDIS_OPTIONS);
170
+ const { RedisVFS } = await import("./redis/redis.js");
171
+ return new RedisVFS(normalizeFields(config));
172
+ },
173
+ lancedb: (_config) => {
174
+ return Promise.reject(new Error('LanceDBVFS is not supported in the browser: @lancedb/lancedb is a native ' +
175
+ 'Node addon. Use @struktoai/mirage-node from a server.'));
176
+ },
177
+ notion: async (config) => {
178
+ const { NotionVFS } = await import("./notion/notion.js");
179
+ const { normalizeNotionConfig } = await import("./notion/config.js");
180
+ return new NotionVFS(normalizeNotionConfig(config));
181
+ },
182
+ langfuse: async (config) => {
183
+ const { LangfuseVFS } = await import('@struktoai/mirage-core/vfs/langfuse/langfuse');
184
+ const { normalizeLangfuseConfig } = await import('@struktoai/mirage-core/vfs/langfuse/config');
185
+ return new LangfuseVFS(normalizeLangfuseConfig(config));
186
+ },
187
+ github: async (config) => {
188
+ const { GitHubVFS } = await import('@struktoai/mirage-core/vfs/github/github');
189
+ const { normalizeGitHubConfig } = await import('@struktoai/mirage-core/core/github/config');
190
+ return GitHubVFS.create(normalizeGitHubConfig(config));
191
+ },
192
+ gcal: async (config) => {
193
+ const { GCalVFS } = await import('@struktoai/mirage-core/vfs/gcal/gcal');
194
+ const { normalizeGCalConfig } = await import('@struktoai/mirage-core/vfs/gcal/config');
195
+ return new GCalVFS(normalizeGCalConfig(config));
196
+ },
197
+ gdocs: async (config) => {
198
+ const { GDocsVFS } = await import('@struktoai/mirage-core/vfs/gdocs/gdocs');
199
+ const { normalizeGDocsConfig } = await import('@struktoai/mirage-core/vfs/gdocs/config');
200
+ return new GDocsVFS(normalizeGDocsConfig(config));
201
+ },
202
+ gsheets: async (config) => {
203
+ const { GSheetsVFS } = await import('@struktoai/mirage-core/vfs/gsheets/gsheets');
204
+ const { normalizeGSheetsConfig } = await import('@struktoai/mirage-core/vfs/gsheets/config');
205
+ return new GSheetsVFS(normalizeGSheetsConfig(config));
206
+ },
207
+ gslides: async (config) => {
208
+ const { GSlidesVFS } = await import('@struktoai/mirage-core/vfs/gslides/gslides');
209
+ const { normalizeGSlidesConfig } = await import('@struktoai/mirage-core/vfs/gslides/config');
210
+ return new GSlidesVFS(normalizeGSlidesConfig(config));
211
+ },
212
+ gdrive: async (config) => {
213
+ const { GoogleDriveVFS } = await import('@struktoai/mirage-core/vfs/gdrive/gdrive');
214
+ const { normalizeGDriveConfig } = await import('@struktoai/mirage-core/vfs/gdrive/config');
215
+ return new GoogleDriveVFS(normalizeGDriveConfig(config));
216
+ },
217
+ onedrive: async (config) => {
218
+ const { normalizeOneDriveConfig } = await import('@struktoai/mirage-core/accessor/onedrive');
219
+ const { OneDriveVFS } = await import('@struktoai/mirage-core/vfs/onedrive/onedrive');
220
+ return new OneDriveVFS(normalizeOneDriveConfig(config));
221
+ },
222
+ sharepoint: async (config) => {
223
+ const { normalizeSharePointConfig } = await import('@struktoai/mirage-core/accessor/sharepoint');
224
+ const { SharePointVFS } = await import('@struktoai/mirage-core/vfs/sharepoint/sharepoint');
225
+ return new SharePointVFS(normalizeSharePointConfig(config));
226
+ },
227
+ airtable: async (config) => {
228
+ const { normalizeAirtableConfig } = await import('@struktoai/mirage-core/core/airtable/config');
229
+ const { AirtableVFS } = await import('@struktoai/mirage-core/vfs/airtable/airtable');
230
+ return new AirtableVFS(normalizeAirtableConfig(config));
231
+ },
232
+ mem0: async (config) => {
233
+ const { normalizeMem0Config } = await import('@struktoai/mirage-core/vfs/mem0/config');
234
+ const { Mem0VFS } = await import('@struktoai/mirage-core/vfs/mem0/mem0');
235
+ return new Mem0VFS(normalizeMem0Config(config));
236
+ },
237
+ dropbox: async (config) => {
238
+ const { DropboxVFS } = await import('@struktoai/mirage-core/vfs/dropbox/dropbox');
239
+ const { normalizeDropboxConfig } = await import('@struktoai/mirage-core/vfs/dropbox/config');
240
+ return new DropboxVFS(normalizeDropboxConfig(config));
241
+ },
242
+ box: async (config) => {
243
+ const { BoxVFS } = await import('@struktoai/mirage-core/vfs/box/box');
244
+ const { normalizeBoxConfig } = await import('@struktoai/mirage-core/vfs/box/config');
245
+ return new BoxVFS(normalizeBoxConfig(config));
246
+ },
247
+ gmail: async (config) => {
248
+ const { GmailVFS } = await import('@struktoai/mirage-core/vfs/gmail/gmail');
249
+ const { normalizeGmailConfig } = await import('@struktoai/mirage-core/vfs/gmail/config');
250
+ return new GmailVFS(normalizeGmailConfig(config));
251
+ },
252
+ email: (_config) => {
253
+ return Promise.reject(new Error('EmailVFS is not supported in the browser: IMAP/SMTP require raw TCP. ' +
254
+ 'Use @struktoai/mirage-node from a server, or proxy IMAP/SMTP via a backend.'));
255
+ },
256
+ };
257
+ const CUSTOM = {};
258
+ export function knownVfsNames() {
259
+ return [...new Set([...Object.keys(REGISTRY), ...Object.keys(CUSTOM)])].sort(compareCodePoints);
260
+ }
261
+ /**
262
+ * Register a custom VFS factory under `name`. Builtin names cannot
263
+ * be shadowed; re-registering a custom name replaces it. Mirrors
264
+ * Python's `register_vfs` and the Node counterpart.
265
+ */
266
+ export function registerVfs(name, factory) {
267
+ if (name in REGISTRY)
268
+ throw new Error(`cannot register '${name}': shadows a builtin`);
269
+ CUSTOM[name] = factory;
270
+ }
271
+ export async function buildVfs(name, config = {}, sources) {
272
+ // A `{from, ref, key}` in the config is fetched here, before the
273
+ // VFS's own schema parses, so every credential reaches its
274
+ // client as the plain string it already reads. Python resolves one
275
+ // step earlier, in its config loader, because `build_vfs` is sync
276
+ // by rule there. A config with no pointer does no I/O.
277
+ const resolved = await resolveConfigSecrets(config, sources, `mounts.${name}.config`);
278
+ const factory = REGISTRY[name] ?? CUSTOM[name];
279
+ if (factory === undefined) {
280
+ throw new Error(`unknown VFS ${JSON.stringify(name)}; known: ${knownVfsNames().join(', ')}`);
281
+ }
282
+ let built;
283
+ try {
284
+ built = await factory(resolved);
285
+ }
286
+ catch (err) {
287
+ // A mount config is where a fetched credential lands, and the create
288
+ // route answers this message as its 400 detail: zod's own rendering
289
+ // would hand the refused value straight back. Field and code only, the
290
+ // way python's `build_vfs` reports its config class.
291
+ if (err instanceof z.ZodError)
292
+ throw new VFSConfigError(`${name}: ${errorSummary(err)}`);
293
+ throw err;
294
+ }
295
+ return built;
296
+ }
297
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/vfs/registry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { S3Config } from '@struktoai/mirage-core/resource/s3/config';
1
+ import type { S3Config } from '@struktoai/mirage-core/vfs/s3/config';
2
2
  export declare const S3_BROWSER_RENAME: Record<string, string>;
3
3
  /** Translate a python-style S3 config blob to the browser's camelCase one. */
4
4
  export declare function normalizeS3Config(input: Record<string, unknown>): S3Config;
5
- export { redactConfig } from '@struktoai/mirage-core/resource/s3/config';
6
- export type { S3BrowserOperation, S3BrowserPresignedUrlProvider, S3BrowserSignOptions, S3Config, S3ConfigRedacted, } from '@struktoai/mirage-core/resource/s3/config';
5
+ export { redactConfig } from '@struktoai/mirage-core/vfs/s3/config';
6
+ export type { S3BrowserOperation, S3BrowserPresignedUrlProvider, S3BrowserSignOptions, S3Config, S3ConfigRedacted, } from '@struktoai/mirage-core/vfs/s3/config';
7
7
  //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/vfs/s3/config.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAOpE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAgC,CAAA;AAErF,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAE1E;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,YAAY,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,oBAAoB,EACpB,QAAQ,EACR,gBAAgB,GACjB,MAAM,sCAAsC,CAAA"}
@@ -11,8 +11,8 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
14
- import { S3ConfigSchema } from '@struktoai/mirage-core/resource/s3/config';
15
- import { parseConfigWithSchema } from '@struktoai/mirage-core/resource/secrets';
14
+ import { S3ConfigSchema } from '@struktoai/mirage-core/vfs/s3/config';
15
+ import { parseConfigWithSchema } from '@struktoai/mirage-core/vfs/secrets';
16
16
  // The one field whose camelCase spelling is not what `snakeToCamel` would
17
17
  // produce, so it is the whole rename map for the browser's S3 family. Every
18
18
  // other field (`key_prefix`, `default_content_type`, ...) round-trips through
@@ -22,5 +22,5 @@ export const S3_BROWSER_RENAME = { endpoint_url: 'endpoint' };
22
22
  export function normalizeS3Config(input) {
23
23
  return parseConfigWithSchema(S3ConfigSchema, input, { rename: S3_BROWSER_RENAME });
24
24
  }
25
- export { redactConfig } from '@struktoai/mirage-core/resource/s3/config';
25
+ export { redactConfig } from '@struktoai/mirage-core/vfs/s3/config';
26
26
  //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/vfs/s3/config.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,uEAAuE;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAE1E,0EAA0E;AAC1E,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAA2B,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA;AAErF,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,KAA8B;IAC9D,OAAO,qBAAqB,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;AACpF,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA"}