@struktoai/mirage-browser 0.0.5-alpha.1 → 0.0.6

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 (602) hide show
  1. package/README.md +138 -80
  2. package/dist/accessor/opfs.d.ts +10 -0
  3. package/dist/accessor/opfs.d.ts.map +1 -0
  4. package/dist/accessor/opfs.js +25 -0
  5. package/dist/accessor/opfs.js.map +1 -0
  6. package/dist/commands/builtin/opfs/index.d.ts +3 -0
  7. package/dist/commands/builtin/opfs/index.d.ts.map +1 -0
  8. package/dist/commands/builtin/opfs/index.js +20 -0
  9. package/dist/commands/builtin/opfs/index.js.map +1 -0
  10. package/dist/commands/builtin/opfs/io.d.ts +4 -0
  11. package/dist/commands/builtin/opfs/io.d.ts.map +1 -0
  12. package/dist/commands/builtin/opfs/io.js +56 -0
  13. package/dist/commands/builtin/opfs/io.js.map +1 -0
  14. package/dist/core/opfs/append.d.ts +4 -0
  15. package/dist/core/opfs/append.d.ts.map +1 -0
  16. package/dist/core/opfs/append.js +38 -0
  17. package/dist/core/opfs/append.js.map +1 -0
  18. package/dist/core/opfs/constants.d.ts +3 -0
  19. package/dist/core/opfs/constants.d.ts.map +1 -0
  20. package/dist/core/opfs/constants.js +16 -0
  21. package/dist/core/opfs/constants.js.map +1 -0
  22. package/dist/core/opfs/copy.d.ts +4 -0
  23. package/dist/core/opfs/copy.d.ts.map +1 -0
  24. package/dist/core/opfs/copy.js +40 -0
  25. package/dist/core/opfs/copy.js.map +1 -0
  26. package/dist/core/opfs/create.d.ts +4 -0
  27. package/dist/core/opfs/create.d.ts.map +1 -0
  28. package/dist/core/opfs/create.js +18 -0
  29. package/dist/core/opfs/create.js.map +1 -0
  30. package/dist/core/opfs/du/entries.d.ts +4 -0
  31. package/dist/core/opfs/du/entries.d.ts.map +1 -0
  32. package/dist/core/opfs/du/entries.js +56 -0
  33. package/dist/core/opfs/du/entries.js.map +1 -0
  34. package/dist/core/opfs/du/index.d.ts +3 -0
  35. package/dist/core/opfs/du/index.d.ts.map +1 -0
  36. package/dist/core/opfs/du/index.js +16 -0
  37. package/dist/core/opfs/du/index.js.map +1 -0
  38. package/dist/core/opfs/du/size.d.ts +4 -0
  39. package/dist/core/opfs/du/size.d.ts.map +1 -0
  40. package/dist/core/opfs/du/size.js +18 -0
  41. package/dist/core/opfs/du/size.js.map +1 -0
  42. package/dist/core/opfs/du/walk.d.ts +3 -0
  43. package/dist/core/opfs/du/walk.d.ts.map +1 -0
  44. package/dist/core/opfs/du/walk.js +98 -0
  45. package/dist/core/opfs/du/walk.js.map +1 -0
  46. package/dist/core/opfs/entry.d.ts +11 -0
  47. package/dist/core/opfs/entry.d.ts.map +1 -0
  48. package/dist/core/opfs/entry.js +42 -0
  49. package/dist/core/opfs/entry.js.map +1 -0
  50. package/dist/core/opfs/exists.d.ts +4 -0
  51. package/dist/core/opfs/exists.d.ts.map +1 -0
  52. package/dist/core/opfs/exists.js +64 -0
  53. package/dist/core/opfs/exists.js.map +1 -0
  54. package/dist/core/opfs/find.d.ts +21 -0
  55. package/dist/core/opfs/find.d.ts.map +1 -0
  56. package/dist/core/opfs/find.js +154 -0
  57. package/dist/core/opfs/find.js.map +1 -0
  58. package/dist/core/opfs/mkdir.d.ts +4 -0
  59. package/dist/core/opfs/mkdir.d.ts.map +1 -0
  60. package/dist/core/opfs/mkdir.js +64 -0
  61. package/dist/core/opfs/mkdir.js.map +1 -0
  62. package/dist/core/opfs/read.d.ts +22 -0
  63. package/dist/core/opfs/read.d.ts.map +1 -0
  64. package/dist/core/opfs/read.js +57 -0
  65. package/dist/core/opfs/read.js.map +1 -0
  66. package/dist/core/opfs/readdir.d.ts +4 -0
  67. package/dist/core/opfs/readdir.d.ts.map +1 -0
  68. package/dist/core/opfs/readdir.js +50 -0
  69. package/dist/core/opfs/readdir.js.map +1 -0
  70. package/dist/core/opfs/rename.d.ts +4 -0
  71. package/dist/core/opfs/rename.d.ts.map +1 -0
  72. package/dist/core/opfs/rename.js +97 -0
  73. package/dist/core/opfs/rename.js.map +1 -0
  74. package/dist/core/opfs/rm.d.ts +4 -0
  75. package/dist/core/opfs/rm.d.ts.map +1 -0
  76. package/dist/core/opfs/rm.js +40 -0
  77. package/dist/core/opfs/rm.js.map +1 -0
  78. package/dist/core/opfs/rmdir.d.ts +4 -0
  79. package/dist/core/opfs/rmdir.d.ts.map +1 -0
  80. package/dist/core/opfs/rmdir.js +48 -0
  81. package/dist/core/opfs/rmdir.js.map +1 -0
  82. package/dist/core/opfs/stat.d.ts +5 -0
  83. package/dist/core/opfs/stat.d.ts.map +1 -0
  84. package/dist/core/opfs/stat.js +88 -0
  85. package/dist/core/opfs/stat.js.map +1 -0
  86. package/dist/core/opfs/stream.d.ts +4 -0
  87. package/dist/core/opfs/stream.d.ts.map +1 -0
  88. package/dist/core/opfs/stream.js +44 -0
  89. package/dist/core/opfs/stream.js.map +1 -0
  90. package/dist/core/opfs/truncate.d.ts +4 -0
  91. package/dist/core/opfs/truncate.d.ts.map +1 -0
  92. package/dist/core/opfs/truncate.js +49 -0
  93. package/dist/core/opfs/truncate.js.map +1 -0
  94. package/dist/core/opfs/unlink.d.ts +4 -0
  95. package/dist/core/opfs/unlink.d.ts.map +1 -0
  96. package/dist/core/opfs/unlink.js +40 -0
  97. package/dist/core/opfs/unlink.js.map +1 -0
  98. package/dist/core/opfs/utils.d.ts +20 -0
  99. package/dist/core/opfs/utils.d.ts.map +1 -0
  100. package/dist/core/opfs/utils.js +149 -0
  101. package/dist/core/opfs/utils.js.map +1 -0
  102. package/dist/core/opfs/write.d.ts +4 -0
  103. package/dist/core/opfs/write.d.ts.map +1 -0
  104. package/dist/core/opfs/write.js +33 -0
  105. package/dist/core/opfs/write.js.map +1 -0
  106. package/dist/generated/wasm.d.ts +3 -0
  107. package/dist/generated/wasm.d.ts.map +1 -0
  108. package/dist/generated/wasm.js +4 -0
  109. package/dist/generated/wasm.js.map +1 -0
  110. package/dist/index.d.ts +118 -1246
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +130 -698
  113. package/dist/index.js.map +1 -1
  114. package/dist/ops/opfs/index.d.ts +3 -0
  115. package/dist/ops/opfs/index.d.ts.map +1 -0
  116. package/dist/ops/opfs/index.js +23 -0
  117. package/dist/ops/opfs/index.js.map +1 -0
  118. package/dist/resource/aliyun/aliyun.d.ts +8 -0
  119. package/dist/resource/aliyun/aliyun.d.ts.map +1 -0
  120. package/dist/resource/aliyun/aliyun.js +24 -0
  121. package/dist/resource/aliyun/aliyun.js.map +1 -0
  122. package/dist/resource/aliyun/config.d.ts +17 -0
  123. package/dist/resource/aliyun/config.d.ts.map +1 -0
  124. package/dist/resource/aliyun/config.js +24 -0
  125. package/dist/resource/aliyun/config.js.map +1 -0
  126. package/dist/resource/aliyun/prompt.d.ts +2 -0
  127. package/dist/resource/aliyun/prompt.d.ts.map +1 -0
  128. package/dist/resource/aliyun/prompt.js +19 -0
  129. package/dist/resource/aliyun/prompt.js.map +1 -0
  130. package/dist/resource/backblaze/backblaze.d.ts +8 -0
  131. package/dist/resource/backblaze/backblaze.d.ts.map +1 -0
  132. package/dist/resource/backblaze/backblaze.js +24 -0
  133. package/dist/resource/backblaze/backblaze.js.map +1 -0
  134. package/dist/resource/backblaze/config.d.ts +17 -0
  135. package/dist/resource/backblaze/config.d.ts.map +1 -0
  136. package/dist/resource/backblaze/config.js +24 -0
  137. package/dist/resource/backblaze/config.js.map +1 -0
  138. package/dist/resource/backblaze/prompt.d.ts +2 -0
  139. package/dist/resource/backblaze/prompt.d.ts.map +1 -0
  140. package/dist/resource/backblaze/prompt.js +19 -0
  141. package/dist/resource/backblaze/prompt.js.map +1 -0
  142. package/dist/resource/box/box.d.ts +34 -0
  143. package/dist/resource/box/box.d.ts.map +1 -0
  144. package/dist/resource/box/box.js +99 -0
  145. package/dist/resource/box/box.js.map +1 -0
  146. package/dist/resource/box/config.d.ts +41 -0
  147. package/dist/resource/box/config.d.ts.map +1 -0
  148. package/dist/resource/box/config.js +38 -0
  149. package/dist/resource/box/config.js.map +1 -0
  150. package/dist/resource/ceph/ceph.d.ts +8 -0
  151. package/dist/resource/ceph/ceph.d.ts.map +1 -0
  152. package/dist/resource/ceph/ceph.js +24 -0
  153. package/dist/resource/ceph/ceph.js.map +1 -0
  154. package/dist/resource/ceph/config.d.ts +16 -0
  155. package/dist/resource/ceph/config.d.ts.map +1 -0
  156. package/dist/resource/ceph/config.js +22 -0
  157. package/dist/resource/ceph/config.js.map +1 -0
  158. package/dist/resource/ceph/prompt.d.ts +2 -0
  159. package/dist/resource/ceph/prompt.d.ts.map +1 -0
  160. package/dist/resource/ceph/prompt.js +19 -0
  161. package/dist/resource/ceph/prompt.js.map +1 -0
  162. package/dist/resource/digitalocean/config.d.ts +17 -0
  163. package/dist/resource/digitalocean/config.d.ts.map +1 -0
  164. package/dist/resource/digitalocean/config.js +24 -0
  165. package/dist/resource/digitalocean/config.js.map +1 -0
  166. package/dist/resource/digitalocean/digitalocean.d.ts +8 -0
  167. package/dist/resource/digitalocean/digitalocean.d.ts.map +1 -0
  168. package/dist/resource/digitalocean/digitalocean.js +24 -0
  169. package/dist/resource/digitalocean/digitalocean.js.map +1 -0
  170. package/dist/resource/digitalocean/prompt.d.ts +2 -0
  171. package/dist/resource/digitalocean/prompt.d.ts.map +1 -0
  172. package/dist/resource/digitalocean/prompt.js +19 -0
  173. package/dist/resource/digitalocean/prompt.js.map +1 -0
  174. package/dist/resource/discord/config.d.ts +20 -0
  175. package/dist/resource/discord/config.d.ts.map +1 -0
  176. package/dist/resource/discord/config.js +32 -0
  177. package/dist/resource/discord/config.js.map +1 -0
  178. package/dist/resource/discord/discord.d.ts +33 -0
  179. package/dist/resource/discord/discord.d.ts.map +1 -0
  180. package/dist/resource/discord/discord.js +90 -0
  181. package/dist/resource/discord/discord.js.map +1 -0
  182. package/dist/resource/dropbox/config.d.ts +34 -0
  183. package/dist/resource/dropbox/config.d.ts.map +1 -0
  184. package/dist/resource/dropbox/config.js +31 -0
  185. package/dist/resource/dropbox/config.js.map +1 -0
  186. package/dist/resource/dropbox/dropbox.d.ts +34 -0
  187. package/dist/resource/dropbox/dropbox.d.ts.map +1 -0
  188. package/dist/resource/dropbox/dropbox.js +95 -0
  189. package/dist/resource/dropbox/dropbox.js.map +1 -0
  190. package/dist/resource/gcal/gcal.d.ts +32 -0
  191. package/dist/resource/gcal/gcal.d.ts.map +1 -0
  192. package/dist/resource/gcal/gcal.js +87 -0
  193. package/dist/resource/gcal/gcal.js.map +1 -0
  194. package/dist/resource/gcs/config.d.ts +16 -0
  195. package/dist/resource/gcs/config.d.ts.map +1 -0
  196. package/dist/resource/gcs/config.js +24 -0
  197. package/dist/resource/gcs/config.js.map +1 -0
  198. package/dist/resource/gcs/gcs.d.ts +8 -0
  199. package/dist/resource/gcs/gcs.d.ts.map +1 -0
  200. package/dist/resource/gcs/gcs.js +24 -0
  201. package/dist/resource/gcs/gcs.js.map +1 -0
  202. package/dist/resource/gcs/prompt.d.ts +2 -0
  203. package/dist/resource/gcs/prompt.d.ts.map +1 -0
  204. package/dist/resource/gcs/prompt.js +19 -0
  205. package/dist/resource/gcs/prompt.js.map +1 -0
  206. package/dist/resource/gdocs/gdocs.d.ts +32 -0
  207. package/dist/resource/gdocs/gdocs.d.ts.map +1 -0
  208. package/dist/resource/gdocs/gdocs.js +84 -0
  209. package/dist/resource/gdocs/gdocs.js.map +1 -0
  210. package/dist/resource/gdrive/gdrive.d.ts +34 -0
  211. package/dist/resource/gdrive/gdrive.d.ts.map +1 -0
  212. package/dist/resource/gdrive/gdrive.js +89 -0
  213. package/dist/resource/gdrive/gdrive.js.map +1 -0
  214. package/dist/resource/github/github.d.ts +38 -0
  215. package/dist/resource/github/github.d.ts.map +1 -0
  216. package/dist/resource/github/github.js +121 -0
  217. package/dist/resource/github/github.js.map +1 -0
  218. package/dist/resource/gmail/gmail.d.ts +33 -0
  219. package/dist/resource/gmail/gmail.d.ts.map +1 -0
  220. package/dist/resource/gmail/gmail.js +88 -0
  221. package/dist/resource/gmail/gmail.js.map +1 -0
  222. package/dist/resource/gsheets/gsheets.d.ts +32 -0
  223. package/dist/resource/gsheets/gsheets.d.ts.map +1 -0
  224. package/dist/resource/gsheets/gsheets.js +84 -0
  225. package/dist/resource/gsheets/gsheets.js.map +1 -0
  226. package/dist/resource/gslides/gslides.d.ts +32 -0
  227. package/dist/resource/gslides/gslides.d.ts.map +1 -0
  228. package/dist/resource/gslides/gslides.js +84 -0
  229. package/dist/resource/gslides/gslides.js.map +1 -0
  230. package/dist/resource/langfuse/config.d.ts +23 -0
  231. package/dist/resource/langfuse/config.d.ts.map +1 -0
  232. package/dist/resource/langfuse/config.js +36 -0
  233. package/dist/resource/langfuse/config.js.map +1 -0
  234. package/dist/resource/langfuse/langfuse.d.ts +31 -0
  235. package/dist/resource/langfuse/langfuse.d.ts.map +1 -0
  236. package/dist/resource/langfuse/langfuse.js +98 -0
  237. package/dist/resource/langfuse/langfuse.js.map +1 -0
  238. package/dist/resource/linear/linear.d.ts +33 -0
  239. package/dist/resource/linear/linear.d.ts.map +1 -0
  240. package/dist/resource/linear/linear.js +93 -0
  241. package/dist/resource/linear/linear.js.map +1 -0
  242. package/dist/resource/minio/config.d.ts +16 -0
  243. package/dist/resource/minio/config.d.ts.map +1 -0
  244. package/dist/resource/minio/config.js +22 -0
  245. package/dist/resource/minio/config.js.map +1 -0
  246. package/dist/resource/minio/minio.d.ts +8 -0
  247. package/dist/resource/minio/minio.d.ts.map +1 -0
  248. package/dist/resource/minio/minio.js +24 -0
  249. package/dist/resource/minio/minio.js.map +1 -0
  250. package/dist/resource/minio/prompt.d.ts +2 -0
  251. package/dist/resource/minio/prompt.d.ts.map +1 -0
  252. package/dist/resource/minio/prompt.js +19 -0
  253. package/dist/resource/minio/prompt.js.map +1 -0
  254. package/dist/resource/mongodb/http_driver.d.ts +27 -0
  255. package/dist/resource/mongodb/http_driver.d.ts.map +1 -0
  256. package/dist/resource/mongodb/http_driver.js +96 -0
  257. package/dist/resource/mongodb/http_driver.js.map +1 -0
  258. package/dist/resource/mongodb/mongodb.d.ts +41 -0
  259. package/dist/resource/mongodb/mongodb.d.ts.map +1 -0
  260. package/dist/resource/mongodb/mongodb.js +100 -0
  261. package/dist/resource/mongodb/mongodb.js.map +1 -0
  262. package/dist/resource/notion/config.d.ts +20 -0
  263. package/dist/resource/notion/config.d.ts.map +1 -0
  264. package/dist/resource/notion/config.js +32 -0
  265. package/dist/resource/notion/config.js.map +1 -0
  266. package/dist/resource/notion/notion.d.ts +32 -0
  267. package/dist/resource/notion/notion.d.ts.map +1 -0
  268. package/dist/resource/notion/notion.js +86 -0
  269. package/dist/resource/notion/notion.js.map +1 -0
  270. package/dist/resource/oci/config.d.ts +20 -0
  271. package/dist/resource/oci/config.d.ts.map +1 -0
  272. package/dist/resource/oci/config.js +30 -0
  273. package/dist/resource/oci/config.js.map +1 -0
  274. package/dist/resource/oci/oci.d.ts +8 -0
  275. package/dist/resource/oci/oci.d.ts.map +1 -0
  276. package/dist/resource/oci/oci.js +24 -0
  277. package/dist/resource/oci/oci.js.map +1 -0
  278. package/dist/resource/oci/prompt.d.ts +2 -0
  279. package/dist/resource/oci/prompt.d.ts.map +1 -0
  280. package/dist/resource/oci/prompt.js +19 -0
  281. package/dist/resource/oci/prompt.js.map +1 -0
  282. package/dist/resource/opfs/opfs.d.ts +57 -0
  283. package/dist/resource/opfs/opfs.d.ts.map +1 -0
  284. package/dist/resource/opfs/opfs.js +236 -0
  285. package/dist/resource/opfs/opfs.js.map +1 -0
  286. package/dist/resource/opfs/prompt.d.ts +2 -0
  287. package/dist/resource/opfs/prompt.d.ts.map +1 -0
  288. package/dist/resource/opfs/prompt.js +17 -0
  289. package/dist/resource/opfs/prompt.js.map +1 -0
  290. package/dist/resource/postgres/neon_driver.d.ts +8 -0
  291. package/dist/resource/postgres/neon_driver.d.ts.map +1 -0
  292. package/dist/resource/postgres/neon_driver.js +28 -0
  293. package/dist/resource/postgres/neon_driver.js.map +1 -0
  294. package/dist/resource/postgres/postgres.d.ts +40 -0
  295. package/dist/resource/postgres/postgres.d.ts.map +1 -0
  296. package/dist/resource/postgres/postgres.js +98 -0
  297. package/dist/resource/postgres/postgres.js.map +1 -0
  298. package/dist/resource/qingstor/config.d.ts +17 -0
  299. package/dist/resource/qingstor/config.d.ts.map +1 -0
  300. package/dist/resource/qingstor/config.js +24 -0
  301. package/dist/resource/qingstor/config.js.map +1 -0
  302. package/dist/resource/qingstor/prompt.d.ts +2 -0
  303. package/dist/resource/qingstor/prompt.d.ts.map +1 -0
  304. package/dist/resource/qingstor/prompt.js +19 -0
  305. package/dist/resource/qingstor/prompt.js.map +1 -0
  306. package/dist/resource/qingstor/qingstor.d.ts +8 -0
  307. package/dist/resource/qingstor/qingstor.d.ts.map +1 -0
  308. package/dist/resource/qingstor/qingstor.js +24 -0
  309. package/dist/resource/qingstor/qingstor.js.map +1 -0
  310. package/dist/resource/r2/config.d.ts +20 -0
  311. package/dist/resource/r2/config.d.ts.map +1 -0
  312. package/dist/resource/r2/config.js +26 -0
  313. package/dist/resource/r2/config.js.map +1 -0
  314. package/dist/resource/r2/prompt.d.ts +2 -0
  315. package/dist/resource/r2/prompt.d.ts.map +1 -0
  316. package/dist/resource/r2/prompt.js +19 -0
  317. package/dist/resource/r2/prompt.js.map +1 -0
  318. package/dist/resource/r2/r2.d.ts +8 -0
  319. package/dist/resource/r2/r2.d.ts.map +1 -0
  320. package/dist/resource/r2/r2.js +24 -0
  321. package/dist/resource/r2/r2.js.map +1 -0
  322. package/dist/resource/redis/redis.d.ts +17 -0
  323. package/dist/resource/redis/redis.d.ts.map +1 -0
  324. package/dist/resource/redis/redis.js +29 -0
  325. package/dist/resource/redis/redis.js.map +1 -0
  326. package/dist/resource/redis/store.d.ts +75 -0
  327. package/dist/resource/redis/store.d.ts.map +1 -0
  328. package/dist/resource/redis/store.js +378 -0
  329. package/dist/resource/redis/store.js.map +1 -0
  330. package/dist/resource/registry.d.ts +25 -0
  331. package/dist/resource/registry.d.ts.map +1 -0
  332. package/dist/resource/registry.js +274 -0
  333. package/dist/resource/registry.js.map +1 -0
  334. package/dist/resource/s3/config.d.ts +7 -0
  335. package/dist/resource/s3/config.d.ts.map +1 -0
  336. package/dist/resource/s3/config.js +26 -0
  337. package/dist/resource/s3/config.js.map +1 -0
  338. package/dist/resource/s3/s3.d.ts +53 -0
  339. package/dist/resource/s3/s3.d.ts.map +1 -0
  340. package/dist/resource/s3/s3.js +182 -0
  341. package/dist/resource/s3/s3.js.map +1 -0
  342. package/dist/resource/s3_alias.d.ts +113 -0
  343. package/dist/resource/s3_alias.d.ts.map +1 -0
  344. package/dist/resource/s3_alias.js +133 -0
  345. package/dist/resource/s3_alias.js.map +1 -0
  346. package/dist/resource/scaleway/config.d.ts +17 -0
  347. package/dist/resource/scaleway/config.d.ts.map +1 -0
  348. package/dist/resource/scaleway/config.js +24 -0
  349. package/dist/resource/scaleway/config.js.map +1 -0
  350. package/dist/resource/scaleway/prompt.d.ts +2 -0
  351. package/dist/resource/scaleway/prompt.d.ts.map +1 -0
  352. package/dist/resource/scaleway/prompt.js +19 -0
  353. package/dist/resource/scaleway/prompt.js.map +1 -0
  354. package/dist/resource/scaleway/scaleway.d.ts +8 -0
  355. package/dist/resource/scaleway/scaleway.d.ts.map +1 -0
  356. package/dist/resource/scaleway/scaleway.js +24 -0
  357. package/dist/resource/scaleway/scaleway.js.map +1 -0
  358. package/dist/resource/seaweedfs/config.d.ts +16 -0
  359. package/dist/resource/seaweedfs/config.d.ts.map +1 -0
  360. package/dist/resource/seaweedfs/config.js +22 -0
  361. package/dist/resource/seaweedfs/config.js.map +1 -0
  362. package/dist/resource/seaweedfs/prompt.d.ts +2 -0
  363. package/dist/resource/seaweedfs/prompt.d.ts.map +1 -0
  364. package/dist/resource/seaweedfs/prompt.js +19 -0
  365. package/dist/resource/seaweedfs/prompt.js.map +1 -0
  366. package/dist/resource/seaweedfs/seaweedfs.d.ts +8 -0
  367. package/dist/resource/seaweedfs/seaweedfs.d.ts.map +1 -0
  368. package/dist/resource/seaweedfs/seaweedfs.js +24 -0
  369. package/dist/resource/seaweedfs/seaweedfs.js.map +1 -0
  370. package/dist/resource/slack/config.d.ts +20 -0
  371. package/dist/resource/slack/config.d.ts.map +1 -0
  372. package/dist/resource/slack/config.js +32 -0
  373. package/dist/resource/slack/config.js.map +1 -0
  374. package/dist/resource/slack/slack.d.ts +33 -0
  375. package/dist/resource/slack/slack.d.ts.map +1 -0
  376. package/dist/resource/slack/slack.js +91 -0
  377. package/dist/resource/slack/slack.js.map +1 -0
  378. package/dist/resource/supabase/config.d.ts +20 -0
  379. package/dist/resource/supabase/config.d.ts.map +1 -0
  380. package/dist/resource/supabase/config.js +26 -0
  381. package/dist/resource/supabase/config.js.map +1 -0
  382. package/dist/resource/supabase/prompt.d.ts +2 -0
  383. package/dist/resource/supabase/prompt.d.ts.map +1 -0
  384. package/dist/resource/supabase/prompt.js +19 -0
  385. package/dist/resource/supabase/prompt.js.map +1 -0
  386. package/dist/resource/supabase/supabase.d.ts +8 -0
  387. package/dist/resource/supabase/supabase.d.ts.map +1 -0
  388. package/dist/resource/supabase/supabase.js +24 -0
  389. package/dist/resource/supabase/supabase.js.map +1 -0
  390. package/dist/resource/tencent/config.d.ts +17 -0
  391. package/dist/resource/tencent/config.d.ts.map +1 -0
  392. package/dist/resource/tencent/config.js +24 -0
  393. package/dist/resource/tencent/config.js.map +1 -0
  394. package/dist/resource/tencent/prompt.d.ts +2 -0
  395. package/dist/resource/tencent/prompt.d.ts.map +1 -0
  396. package/dist/resource/tencent/prompt.js +19 -0
  397. package/dist/resource/tencent/prompt.js.map +1 -0
  398. package/dist/resource/tencent/tencent.d.ts +8 -0
  399. package/dist/resource/tencent/tencent.d.ts.map +1 -0
  400. package/dist/resource/tencent/tencent.js +24 -0
  401. package/dist/resource/tencent/tencent.js.map +1 -0
  402. package/dist/resource/trello/config.d.ts +22 -0
  403. package/dist/resource/trello/config.d.ts.map +1 -0
  404. package/dist/resource/trello/config.js +35 -0
  405. package/dist/resource/trello/config.js.map +1 -0
  406. package/dist/resource/trello/trello.d.ts +32 -0
  407. package/dist/resource/trello/trello.d.ts.map +1 -0
  408. package/dist/resource/trello/trello.js +94 -0
  409. package/dist/resource/trello/trello.js.map +1 -0
  410. package/dist/resource/wasabi/config.d.ts +17 -0
  411. package/dist/resource/wasabi/config.d.ts.map +1 -0
  412. package/dist/resource/wasabi/config.js +29 -0
  413. package/dist/resource/wasabi/config.js.map +1 -0
  414. package/dist/resource/wasabi/prompt.d.ts +2 -0
  415. package/dist/resource/wasabi/prompt.d.ts.map +1 -0
  416. package/dist/resource/wasabi/prompt.js +19 -0
  417. package/dist/resource/wasabi/prompt.js.map +1 -0
  418. package/dist/resource/wasabi/wasabi.d.ts +8 -0
  419. package/dist/resource/wasabi/wasabi.d.ts.map +1 -0
  420. package/dist/resource/wasabi/wasabi.js +24 -0
  421. package/dist/resource/wasabi/wasabi.js.map +1 -0
  422. package/dist/test-utils.d.ts +37 -0
  423. package/dist/test-utils.d.ts.map +1 -0
  424. package/dist/test-utils.js +518 -0
  425. package/dist/test-utils.js.map +1 -0
  426. package/dist/workspace.d.ts +10 -0
  427. package/dist/workspace.d.ts.map +1 -0
  428. package/dist/workspace.js +62 -0
  429. package/dist/workspace.js.map +1 -0
  430. package/package.json +13 -6
  431. package/dist/aliyun-DR6KT3H6.js +0 -8
  432. package/dist/aliyun-DR6KT3H6.js.map +0 -1
  433. package/dist/backblaze-XCLZXTES.js +0 -8
  434. package/dist/backblaze-XCLZXTES.js.map +0 -1
  435. package/dist/box-XBCSU3AA.js +0 -8
  436. package/dist/box-XBCSU3AA.js.map +0 -1
  437. package/dist/ceph-F5S2NMTO.js +0 -8
  438. package/dist/ceph-F5S2NMTO.js.map +0 -1
  439. package/dist/chunk-2J35WXX5.js +0 -28
  440. package/dist/chunk-2J35WXX5.js.map +0 -1
  441. package/dist/chunk-2WNXK742.js +0 -89
  442. package/dist/chunk-2WNXK742.js.map +0 -1
  443. package/dist/chunk-2WSKXBSV.js +0 -139
  444. package/dist/chunk-2WSKXBSV.js.map +0 -1
  445. package/dist/chunk-37WKCB2E.js +0 -95
  446. package/dist/chunk-37WKCB2E.js.map +0 -1
  447. package/dist/chunk-3IYCVC7W.js +0 -96
  448. package/dist/chunk-3IYCVC7W.js.map +0 -1
  449. package/dist/chunk-46HNNKFR.js +0 -95
  450. package/dist/chunk-46HNNKFR.js.map +0 -1
  451. package/dist/chunk-4IF4TGAI.js +0 -11
  452. package/dist/chunk-4IF4TGAI.js.map +0 -1
  453. package/dist/chunk-5OZJMTYW.js +0 -113
  454. package/dist/chunk-5OZJMTYW.js.map +0 -1
  455. package/dist/chunk-5UM6EBVW.js +0 -108
  456. package/dist/chunk-5UM6EBVW.js.map +0 -1
  457. package/dist/chunk-6HRSCX2U.js +0 -98
  458. package/dist/chunk-6HRSCX2U.js.map +0 -1
  459. package/dist/chunk-7HWQAYXR.js +0 -85
  460. package/dist/chunk-7HWQAYXR.js.map +0 -1
  461. package/dist/chunk-AUZNQ7EI.js +0 -85
  462. package/dist/chunk-AUZNQ7EI.js.map +0 -1
  463. package/dist/chunk-BGA2F226.js +0 -182
  464. package/dist/chunk-BGA2F226.js.map +0 -1
  465. package/dist/chunk-BV372CUO.js +0 -90
  466. package/dist/chunk-BV372CUO.js.map +0 -1
  467. package/dist/chunk-C4THTILY.js +0 -95
  468. package/dist/chunk-C4THTILY.js.map +0 -1
  469. package/dist/chunk-D4MEOKNQ.js +0 -95
  470. package/dist/chunk-D4MEOKNQ.js.map +0 -1
  471. package/dist/chunk-D4RAMWYH.js +0 -88
  472. package/dist/chunk-D4RAMWYH.js.map +0 -1
  473. package/dist/chunk-EHIT6WCY.js +0 -95
  474. package/dist/chunk-EHIT6WCY.js.map +0 -1
  475. package/dist/chunk-EN6TZYT2.js +0 -95
  476. package/dist/chunk-EN6TZYT2.js.map +0 -1
  477. package/dist/chunk-FTDVV7EQ.js +0 -85
  478. package/dist/chunk-FTDVV7EQ.js.map +0 -1
  479. package/dist/chunk-G67Q2Z6I.js +0 -95
  480. package/dist/chunk-G67Q2Z6I.js.map +0 -1
  481. package/dist/chunk-GM2QMJAY.js +0 -85
  482. package/dist/chunk-GM2QMJAY.js.map +0 -1
  483. package/dist/chunk-HRWLHJX2.js +0 -84
  484. package/dist/chunk-HRWLHJX2.js.map +0 -1
  485. package/dist/chunk-INEXV2PN.js +0 -91
  486. package/dist/chunk-INEXV2PN.js.map +0 -1
  487. package/dist/chunk-IZMKMD3O.js +0 -11
  488. package/dist/chunk-IZMKMD3O.js.map +0 -1
  489. package/dist/chunk-JUVMJ5GI.js +0 -85
  490. package/dist/chunk-JUVMJ5GI.js.map +0 -1
  491. package/dist/chunk-KL2VFYUV.js +0 -159
  492. package/dist/chunk-KL2VFYUV.js.map +0 -1
  493. package/dist/chunk-L64GRKOD.js +0 -38
  494. package/dist/chunk-L64GRKOD.js.map +0 -1
  495. package/dist/chunk-LPDLPRPS.js +0 -11
  496. package/dist/chunk-LPDLPRPS.js.map +0 -1
  497. package/dist/chunk-M2UF2JHJ.js +0 -11
  498. package/dist/chunk-M2UF2JHJ.js.map +0 -1
  499. package/dist/chunk-NVHPJ5CV.js +0 -109
  500. package/dist/chunk-NVHPJ5CV.js.map +0 -1
  501. package/dist/chunk-OSTDTTWI.js +0 -35
  502. package/dist/chunk-OSTDTTWI.js.map +0 -1
  503. package/dist/chunk-PQCRGTSA.js +0 -85
  504. package/dist/chunk-PQCRGTSA.js.map +0 -1
  505. package/dist/chunk-QE7QNA45.js +0 -114
  506. package/dist/chunk-QE7QNA45.js.map +0 -1
  507. package/dist/chunk-QG2NUNCY.js +0 -95
  508. package/dist/chunk-QG2NUNCY.js.map +0 -1
  509. package/dist/chunk-UFHBDBZD.js +0 -1212
  510. package/dist/chunk-UFHBDBZD.js.map +0 -1
  511. package/dist/chunk-UY22T4AC.js +0 -112
  512. package/dist/chunk-UY22T4AC.js.map +0 -1
  513. package/dist/chunk-XJBC3OYX.js +0 -11
  514. package/dist/chunk-XJBC3OYX.js.map +0 -1
  515. package/dist/chunk-Y6DYUK6J.js +0 -85
  516. package/dist/chunk-Y6DYUK6J.js.map +0 -1
  517. package/dist/chunk-YOCTIHQZ.js +0 -89
  518. package/dist/chunk-YOCTIHQZ.js.map +0 -1
  519. package/dist/chunk-ZDJPUXYH.js +0 -101
  520. package/dist/chunk-ZDJPUXYH.js.map +0 -1
  521. package/dist/chunk-ZKCOSE3R.js +0 -90
  522. package/dist/chunk-ZKCOSE3R.js.map +0 -1
  523. package/dist/chunk-ZTHVEXIV.js +0 -11
  524. package/dist/chunk-ZTHVEXIV.js.map +0 -1
  525. package/dist/config-2Y6LZKLV.js +0 -9
  526. package/dist/config-2Y6LZKLV.js.map +0 -1
  527. package/dist/config-4GSOMUMF.js +0 -9
  528. package/dist/config-4GSOMUMF.js.map +0 -1
  529. package/dist/config-5YBUWFUP.js +0 -9
  530. package/dist/config-5YBUWFUP.js.map +0 -1
  531. package/dist/config-DE5OZ4I7.js +0 -9
  532. package/dist/config-DE5OZ4I7.js.map +0 -1
  533. package/dist/config-ELDOFRJW.js +0 -9
  534. package/dist/config-ELDOFRJW.js.map +0 -1
  535. package/dist/config-FPM3LAW7.js +0 -9
  536. package/dist/config-FPM3LAW7.js.map +0 -1
  537. package/dist/config-JY557MA6.js +0 -9
  538. package/dist/config-JY557MA6.js.map +0 -1
  539. package/dist/config-UU27ALAA.js +0 -9
  540. package/dist/config-UU27ALAA.js.map +0 -1
  541. package/dist/config-WRACCRPN.js +0 -9
  542. package/dist/config-WRACCRPN.js.map +0 -1
  543. package/dist/digitalocean-QDHTRS2W.js +0 -8
  544. package/dist/digitalocean-QDHTRS2W.js.map +0 -1
  545. package/dist/discord-ERUI7OAQ.js +0 -7
  546. package/dist/discord-ERUI7OAQ.js.map +0 -1
  547. package/dist/dropbox-3U6D4HLE.js +0 -8
  548. package/dist/dropbox-3U6D4HLE.js.map +0 -1
  549. package/dist/gcal-MTBSDG34.js +0 -8
  550. package/dist/gcal-MTBSDG34.js.map +0 -1
  551. package/dist/gcs-KNGRBBET.js +0 -8
  552. package/dist/gcs-KNGRBBET.js.map +0 -1
  553. package/dist/gdocs-RUIOIRKP.js +0 -8
  554. package/dist/gdocs-RUIOIRKP.js.map +0 -1
  555. package/dist/gdrive-5JB7ZKEP.js +0 -8
  556. package/dist/gdrive-5JB7ZKEP.js.map +0 -1
  557. package/dist/github-CIXBFBVO.js +0 -7
  558. package/dist/github-CIXBFBVO.js.map +0 -1
  559. package/dist/github_ci-HR6YOYAO.js +0 -8
  560. package/dist/github_ci-HR6YOYAO.js.map +0 -1
  561. package/dist/gmail-JHGWTQU5.js +0 -8
  562. package/dist/gmail-JHGWTQU5.js.map +0 -1
  563. package/dist/gsheets-N54JO2RS.js +0 -8
  564. package/dist/gsheets-N54JO2RS.js.map +0 -1
  565. package/dist/gslides-B4VMNLMB.js +0 -8
  566. package/dist/gslides-B4VMNLMB.js.map +0 -1
  567. package/dist/langfuse-HEUJGDOC.js +0 -7
  568. package/dist/langfuse-HEUJGDOC.js.map +0 -1
  569. package/dist/linear-J4QQ3CA6.js +0 -7
  570. package/dist/linear-J4QQ3CA6.js.map +0 -1
  571. package/dist/minio-BXWHJ6K5.js +0 -8
  572. package/dist/minio-BXWHJ6K5.js.map +0 -1
  573. package/dist/mongodb-YZP643ZU.js +0 -7
  574. package/dist/mongodb-YZP643ZU.js.map +0 -1
  575. package/dist/notion-I5S5SRLO.js +0 -7
  576. package/dist/notion-I5S5SRLO.js.map +0 -1
  577. package/dist/oci-XOPKH4AE.js +0 -8
  578. package/dist/oci-XOPKH4AE.js.map +0 -1
  579. package/dist/opfs-36QO72Y5.js +0 -7
  580. package/dist/opfs-36QO72Y5.js.map +0 -1
  581. package/dist/postgres-HPOMN2AR.js +0 -7
  582. package/dist/postgres-HPOMN2AR.js.map +0 -1
  583. package/dist/qingstor-JKAHLK62.js +0 -8
  584. package/dist/qingstor-JKAHLK62.js.map +0 -1
  585. package/dist/r2-L3QXQ76M.js +0 -8
  586. package/dist/r2-L3QXQ76M.js.map +0 -1
  587. package/dist/s3-LRZJPGHK.js +0 -9
  588. package/dist/s3-LRZJPGHK.js.map +0 -1
  589. package/dist/scaleway-CGNDYNKS.js +0 -8
  590. package/dist/scaleway-CGNDYNKS.js.map +0 -1
  591. package/dist/seaweedfs-BSQWCBIR.js +0 -8
  592. package/dist/seaweedfs-BSQWCBIR.js.map +0 -1
  593. package/dist/slack-62ECSENR.js +0 -7
  594. package/dist/slack-62ECSENR.js.map +0 -1
  595. package/dist/supabase-J66NXWAF.js +0 -8
  596. package/dist/supabase-J66NXWAF.js.map +0 -1
  597. package/dist/tencent-AC667LV3.js +0 -8
  598. package/dist/tencent-AC667LV3.js.map +0 -1
  599. package/dist/trello-SUPG6VDF.js +0 -7
  600. package/dist/trello-SUPG6VDF.js.map +0 -1
  601. package/dist/wasabi-5KKPW6LH.js +0 -8
  602. package/dist/wasabi-5KKPW6LH.js.map +0 -1
@@ -1,1212 +0,0 @@
1
- // src/resource/opfs/opfs.ts
2
- import {
3
- ResourceName as ResourceName18,
4
- lstripSlash,
5
- makeResolveGlob,
6
- compareCodePoints as compareCodePoints4
7
- } from "@struktoai/mirage-core";
8
-
9
- // src/accessor/opfs.ts
10
- import { Accessor } from "@struktoai/mirage-core";
11
- var OPFSAccessor = class extends Accessor {
12
- provider;
13
- constructor(provider) {
14
- super();
15
- this.provider = provider;
16
- }
17
- get rootHandle() {
18
- return this.provider.requireHandle();
19
- }
20
- };
21
-
22
- // src/commands/builtin/opfs/index.ts
23
- import { ResourceName as ResourceName6, makeGenericCommands } from "@struktoai/mirage-core";
24
-
25
- // src/core/opfs/append.ts
26
- import { record, ResourceName } from "@struktoai/mirage-core";
27
-
28
- // src/core/opfs/utils.ts
29
- import { enoent, enotdir } from "@struktoai/mirage-core";
30
- import { norm, parent, gnuBasename } from "@struktoai/mirage-core";
31
- function splitSegments(virtual) {
32
- const parts = [];
33
- for (const seg of virtual.split("/")) {
34
- if (seg === "" || seg === ".") continue;
35
- if (seg === "..") {
36
- if (parts.length === 0) {
37
- throw new Error(`path escapes root: ${virtual}`);
38
- }
39
- parts.pop();
40
- continue;
41
- }
42
- parts.push(seg);
43
- }
44
- return parts;
45
- }
46
- async function resolveDirHandle(root, virtual, options = {}) {
47
- const segs = splitSegments(virtual);
48
- let handle = root;
49
- for (const seg of segs) {
50
- handle = await handle.getDirectoryHandle(seg, { create: options.create ?? false });
51
- }
52
- return handle;
53
- }
54
- async function resolveFileHandle(root, virtual, options = {}) {
55
- const segs = splitSegments(virtual);
56
- const fileName = segs.pop();
57
- if (fileName === void 0) {
58
- throw new Error(`not a file: ${virtual}`);
59
- }
60
- let dir = root;
61
- for (const seg of segs) {
62
- dir = await dir.getDirectoryHandle(seg, { create: false });
63
- }
64
- return dir.getFileHandle(fileName, { create: options.create ?? false });
65
- }
66
- async function resolveParentDirHandle(root, virtual, options = {}) {
67
- const segs = splitSegments(virtual);
68
- const name = segs.pop();
69
- if (name === void 0) {
70
- throw new Error(`no parent directory: ${virtual}`);
71
- }
72
- let dir = root;
73
- for (const seg of segs) {
74
- dir = await dir.getDirectoryHandle(seg, { create: options.create ?? false });
75
- }
76
- return [dir, name];
77
- }
78
- function destError(err, spec) {
79
- if (isNotFound(err)) return enoent(spec);
80
- if (isTypeMismatch(err)) return enotdir(spec);
81
- return err;
82
- }
83
- async function kindAt(root, key) {
84
- let dir;
85
- let name;
86
- try {
87
- ;
88
- [dir, name] = await resolveParentDirHandle(root, key, { create: false });
89
- } catch (err) {
90
- if (!isNotFound(err) && !isTypeMismatch(err)) throw err;
91
- return null;
92
- }
93
- try {
94
- await dir.getDirectoryHandle(name, { create: false });
95
- return "dir";
96
- } catch (err) {
97
- if (!isNotFound(err) && !isTypeMismatch(err)) throw err;
98
- }
99
- try {
100
- await dir.getFileHandle(name, { create: false });
101
- return "file";
102
- } catch (err) {
103
- if (!isNotFound(err) && !isTypeMismatch(err)) throw err;
104
- }
105
- return null;
106
- }
107
- function isNotFound(err) {
108
- if (err instanceof DOMException) {
109
- return err.name === "NotFoundError";
110
- }
111
- return false;
112
- }
113
- function isTypeMismatch(err) {
114
- if (err instanceof DOMException) {
115
- return err.name === "TypeMismatchError";
116
- }
117
- return false;
118
- }
119
- function toWritableChunk(data) {
120
- const copy2 = new Uint8Array(data.byteLength);
121
- copy2.set(data);
122
- return new Blob([copy2]);
123
- }
124
- async function* iterEntries(dir) {
125
- const iter = dir.entries();
126
- for await (const [name, handle] of iter) {
127
- yield [name, handle];
128
- }
129
- }
130
-
131
- // src/core/opfs/append.ts
132
- async function appendBytes(accessor, p, data) {
133
- const root = accessor.rootHandle;
134
- const start = performance.now();
135
- const virtual = p.mountPath;
136
- let handle;
137
- try {
138
- handle = await resolveFileHandle(root, virtual, { create: true });
139
- } catch (err) {
140
- throw destError(err, p);
141
- }
142
- const existing = await handle.getFile();
143
- const existingBytes = new Uint8Array(await existing.arrayBuffer());
144
- const merged = new Uint8Array(existingBytes.byteLength + data.byteLength);
145
- merged.set(existingBytes, 0);
146
- merged.set(data, existingBytes.byteLength);
147
- const writable = await handle.createWritable();
148
- await writable.write(toWritableChunk(merged));
149
- await writable.close();
150
- record("append", virtual, ResourceName.OPFS, data.byteLength, start);
151
- }
152
-
153
- // src/core/opfs/constants.ts
154
- var SCOPE_ERROR = 5e4;
155
-
156
- // src/core/opfs/copy.ts
157
- import { enoent as enoent2 } from "@struktoai/mirage-core";
158
- async function copy(accessor, src, dst) {
159
- const root = accessor.rootHandle;
160
- let srcHandle;
161
- try {
162
- srcHandle = await resolveFileHandle(root, src.mountPath, { create: false });
163
- } catch (err) {
164
- if (isNotFound(err)) throw enoent2(src);
165
- throw err;
166
- }
167
- const file = await srcHandle.getFile();
168
- const data = new Uint8Array(await file.arrayBuffer());
169
- let dstHandle;
170
- try {
171
- dstHandle = await resolveFileHandle(root, dst.mountPath, { create: true });
172
- } catch (err) {
173
- throw destError(err, dst);
174
- }
175
- const writable = await dstHandle.createWritable();
176
- await writable.write(toWritableChunk(data));
177
- await writable.close();
178
- }
179
-
180
- // src/core/opfs/write.ts
181
- import { record as record2, ResourceName as ResourceName2 } from "@struktoai/mirage-core";
182
- async function writeBytes(accessor, p, data) {
183
- const root = accessor.rootHandle;
184
- const start = performance.now();
185
- const virtual = p.mountPath;
186
- let handle;
187
- try {
188
- handle = await resolveFileHandle(root, virtual, { create: true });
189
- } catch (err) {
190
- throw destError(err, p);
191
- }
192
- const writable = await handle.createWritable();
193
- await writable.write(toWritableChunk(data));
194
- await writable.close();
195
- record2("write", virtual, ResourceName2.OPFS, data.byteLength, start);
196
- }
197
-
198
- // src/core/opfs/create.ts
199
- function create(accessor, path) {
200
- return writeBytes(accessor, path, new Uint8Array());
201
- }
202
-
203
- // src/core/opfs/du/walk.ts
204
- async function walkSizes(dir) {
205
- let total = 0;
206
- for await (const [name, handle] of iterEntries(dir)) {
207
- if (handle.kind === "file") {
208
- try {
209
- const fh = await dir.getFileHandle(name, { create: false });
210
- const file = await fh.getFile();
211
- total += file.size;
212
- } catch {
213
- }
214
- } else {
215
- try {
216
- const child = await dir.getDirectoryHandle(name, { create: false });
217
- total += await walkSizes(child);
218
- } catch {
219
- }
220
- }
221
- }
222
- return total;
223
- }
224
- async function walkAll(dir, currentPath, entries2) {
225
- let total = 0;
226
- for await (const [name, handle] of iterEntries(dir)) {
227
- const childPath = currentPath === "/" ? `/${name}` : `${currentPath}/${name}`;
228
- if (handle.kind === "file") {
229
- try {
230
- const fh = await dir.getFileHandle(name, { create: false });
231
- const file = await fh.getFile();
232
- entries2.push([childPath, file.size]);
233
- total += file.size;
234
- } catch {
235
- }
236
- } else {
237
- try {
238
- const child = await dir.getDirectoryHandle(name, { create: false });
239
- total += await walkAll(child, childPath, entries2);
240
- } catch {
241
- }
242
- }
243
- }
244
- return total;
245
- }
246
- async function sizeOfPath(root, virtual) {
247
- try {
248
- const [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
249
- try {
250
- const fh = await parentDir.getFileHandle(name, { create: false });
251
- const file = await fh.getFile();
252
- return file.size;
253
- } catch (err) {
254
- if (!isNotFound(err) && !(err instanceof DOMException && err.name === "TypeMismatchError")) {
255
- throw err;
256
- }
257
- }
258
- const dir = await parentDir.getDirectoryHandle(name, { create: false });
259
- return await walkSizes(dir);
260
- } catch (err) {
261
- if (isNotFound(err)) return 0;
262
- if (err instanceof Error && err.message.startsWith("no parent directory")) {
263
- try {
264
- const rootDir = await resolveDirHandle(root, virtual, { create: false });
265
- return await walkSizes(rootDir);
266
- } catch {
267
- return 0;
268
- }
269
- }
270
- throw err;
271
- }
272
- }
273
-
274
- // src/core/opfs/du/entries.ts
275
- import { compareCodePoints } from "@struktoai/mirage-core";
276
- async function entries(accessor, p) {
277
- const root = accessor.rootHandle;
278
- const virtual = norm(p.mountPath);
279
- const entries2 = [];
280
- try {
281
- const [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
282
- try {
283
- const fh = await parentDir.getFileHandle(name, { create: false });
284
- const file = await fh.getFile();
285
- entries2.push([virtual, file.size]);
286
- return [entries2, file.size];
287
- } catch (err) {
288
- if (!isNotFound(err) && !(err instanceof DOMException && err.name === "TypeMismatchError")) {
289
- throw err;
290
- }
291
- }
292
- const dir = await parentDir.getDirectoryHandle(name, { create: false });
293
- const total = await walkAll(dir, virtual, entries2);
294
- entries2.sort((a, b) => compareCodePoints(a[0], b[0]));
295
- return [entries2, total];
296
- } catch (err) {
297
- if (isNotFound(err)) return [entries2, 0];
298
- if (err instanceof Error && err.message.startsWith("no parent directory")) {
299
- try {
300
- const rootDir = await resolveDirHandle(root, virtual, { create: false });
301
- const total = await walkAll(rootDir, virtual, entries2);
302
- entries2.sort((a, b) => compareCodePoints(a[0], b[0]));
303
- return [entries2, total];
304
- } catch {
305
- return [entries2, 0];
306
- }
307
- }
308
- throw err;
309
- }
310
- }
311
-
312
- // src/core/opfs/du/size.ts
313
- async function size(accessor, p) {
314
- return sizeOfPath(accessor.rootHandle, p.mountPath);
315
- }
316
-
317
- // src/core/opfs/exists.ts
318
- async function exists(accessor, path) {
319
- const root = accessor.rootHandle;
320
- const virtual = path.mountPath;
321
- if (virtual === "/" || virtual === "") return true;
322
- try {
323
- const [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
324
- try {
325
- await parentDir.getFileHandle(name, { create: false });
326
- return true;
327
- } catch (err) {
328
- if (!isNotFound(err) && !(err instanceof DOMException && err.name === "TypeMismatchError")) {
329
- throw err;
330
- }
331
- }
332
- try {
333
- await parentDir.getDirectoryHandle(name, { create: false });
334
- return true;
335
- } catch (err) {
336
- if (isNotFound(err) || err instanceof DOMException && err.name === "TypeMismatchError") {
337
- return false;
338
- }
339
- throw err;
340
- }
341
- } catch (err) {
342
- if (isNotFound(err)) return false;
343
- if (isTypeMismatch(err)) return false;
344
- if (err instanceof Error && err.message.startsWith("path escapes root")) return false;
345
- if (err instanceof Error && err.message.startsWith("no parent directory")) {
346
- try {
347
- await resolveDirHandle(root, virtual, { create: false });
348
- return true;
349
- } catch {
350
- return false;
351
- }
352
- }
353
- throw err;
354
- }
355
- }
356
-
357
- // src/core/opfs/find.ts
358
- import {
359
- buildTree,
360
- emitStartPath,
361
- keep,
362
- startBasename,
363
- compareCodePoints as compareCodePoints2
364
- } from "@struktoai/mirage-core";
365
- async function walk(ctx, dir, current, depth) {
366
- const opts = ctx.options;
367
- if (opts.maxDepth !== null && opts.maxDepth !== void 0 && depth > opts.maxDepth) return;
368
- let iter;
369
- try {
370
- iter = iterEntries(dir);
371
- } catch {
372
- return;
373
- }
374
- for await (const [entryName, handle] of iter) {
375
- const kind = handle.kind === "directory" ? "d" : "f";
376
- const entryPath = current === "/" ? `/${entryName}` : `${current}/${entryName}`;
377
- const entryDepth = depth + 1;
378
- let accept = true;
379
- if (opts.maxDepth !== null && opts.maxDepth !== void 0 && entryDepth > opts.maxDepth) {
380
- accept = false;
381
- }
382
- let isEmpty = null;
383
- if (accept && opts.empty === true) {
384
- try {
385
- if (kind === "f") {
386
- isEmpty = (await handle.getFile()).size === 0;
387
- } else {
388
- isEmpty = true;
389
- for await (const _child of iterEntries(handle)) {
390
- void _child;
391
- isEmpty = false;
392
- break;
393
- }
394
- }
395
- } catch {
396
- isEmpty = null;
397
- }
398
- }
399
- if (accept && !keep(
400
- { key: entryPath, name: entryName, kind, depth: entryDepth, isEmpty },
401
- ctx.tree,
402
- opts.minDepth
403
- )) {
404
- accept = false;
405
- }
406
- if (accept && kind !== "f" && (opts.minSize != null || opts.maxSize != null)) {
407
- if (opts.minSize != null && opts.minSize > 0) accept = false;
408
- if (opts.maxSize != null && opts.maxSize < 0) accept = false;
409
- }
410
- if (accept && kind === "f" && (opts.minSize !== null || opts.maxSize !== null || opts.mtimeMin !== null || opts.mtimeMax !== null)) {
411
- try {
412
- const fh = await dir.getFileHandle(entryName, { create: false });
413
- const file = await fh.getFile();
414
- if (opts.minSize !== null && opts.minSize !== void 0 && file.size < opts.minSize)
415
- accept = false;
416
- if (opts.maxSize !== null && opts.maxSize !== void 0 && file.size > opts.maxSize)
417
- accept = false;
418
- if (accept && (opts.mtimeMin !== void 0 || opts.mtimeMax !== void 0)) {
419
- const mtime = file.lastModified / 1e3;
420
- if (opts.mtimeMin !== null && opts.mtimeMin !== void 0 && mtime < opts.mtimeMin)
421
- accept = false;
422
- if (opts.mtimeMax !== null && opts.mtimeMax !== void 0 && mtime > opts.mtimeMax)
423
- accept = false;
424
- }
425
- } catch {
426
- accept = false;
427
- }
428
- }
429
- if (accept) ctx.results.push(entryPath);
430
- if (kind === "d") {
431
- try {
432
- const child = await dir.getDirectoryHandle(entryName, { create: false });
433
- await walk(ctx, child, entryPath, depth + 1);
434
- } catch {
435
- }
436
- }
437
- }
438
- }
439
- async function find(accessor, p, options = {}) {
440
- const root = accessor.rootHandle;
441
- const virtual = norm(p.mountPath);
442
- const startName = startBasename(p.virtual);
443
- const results = [];
444
- const tree = options.tree ?? buildTree({
445
- name: options.name,
446
- iname: options.iname,
447
- pathPattern: options.pathPattern,
448
- type: options.type,
449
- nameExclude: options.nameExclude,
450
- orNames: options.orNames,
451
- empty: options.empty
452
- });
453
- let dir;
454
- try {
455
- dir = await resolveDirHandle(root, virtual, { create: false });
456
- } catch (err) {
457
- if (isNotFound(err)) return results;
458
- throw err;
459
- }
460
- if (options.maxDepth == null || options.maxDepth >= 0) {
461
- let rootEmpty = null;
462
- if (options.empty === true) {
463
- rootEmpty = true;
464
- for await (const _child of iterEntries(dir)) {
465
- void _child;
466
- rootEmpty = false;
467
- break;
468
- }
469
- }
470
- emitStartPath(results, virtual, startName, {
471
- kind: "d",
472
- isEmpty: rootEmpty,
473
- exists: true,
474
- tree,
475
- maxDepth: options.maxDepth,
476
- minDepth: options.minDepth,
477
- minSize: options.minSize,
478
- maxSize: options.maxSize
479
- });
480
- }
481
- await walk({ options, tree, results }, dir, virtual, 0);
482
- results.sort(compareCodePoints2);
483
- return results;
484
- }
485
-
486
- // src/core/opfs/mkdir.ts
487
- import {
488
- ancestors,
489
- eexist,
490
- enotdir as enotdir2,
491
- invalidateAfterWrite,
492
- invalidateAncestors,
493
- mountedPath,
494
- norm as norm2
495
- } from "@struktoai/mirage-core";
496
- async function checkMkdirTarget(root, spec, key, parents) {
497
- if (!parents) {
498
- if (await kindAt(root, key) !== null) throw eexist(spec);
499
- return;
500
- }
501
- for (const component of [...ancestors(key), key]) {
502
- if (await kindAt(root, component) !== "file") continue;
503
- const named = mountedPath(spec, component);
504
- throw component === key ? eexist(named) : enotdir2(named);
505
- }
506
- }
507
- async function mkdir(accessor, path, parents = false) {
508
- const root = accessor.rootHandle;
509
- const virtual = path.mountPath;
510
- const segs = splitSegments(virtual);
511
- if (segs.length === 0) return;
512
- await checkMkdirTarget(root, path, norm2(virtual), parents);
513
- if (parents) {
514
- await resolveDirHandle(root, virtual, { create: true });
515
- await invalidateAfterWrite(path);
516
- await invalidateAncestors(path);
517
- return;
518
- }
519
- let parentDir;
520
- let name;
521
- try {
522
- ;
523
- [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
524
- } catch (err) {
525
- throw destError(err, path);
526
- }
527
- await parentDir.getDirectoryHandle(name, { create: true });
528
- await invalidateAfterWrite(path);
529
- }
530
-
531
- // src/core/opfs/read.ts
532
- import { record as record3, ResourceName as ResourceName3 } from "@struktoai/mirage-core";
533
- import { eisdir, enoent as enoent3 } from "@struktoai/mirage-core";
534
- async function read(accessor, path) {
535
- const root = accessor.rootHandle;
536
- const start = performance.now();
537
- const virtual = path.mountPath;
538
- let handle;
539
- try {
540
- handle = await resolveFileHandle(root, virtual, { create: false });
541
- } catch (err) {
542
- if (isNotFound(err)) throw enoent3(path);
543
- if (err instanceof DOMException && err.name === "TypeMismatchError") throw eisdir(path);
544
- throw err;
545
- }
546
- const file = await handle.getFile();
547
- const bytes = new Uint8Array(await file.arrayBuffer());
548
- record3("read", virtual, ResourceName3.OPFS, bytes.byteLength, start);
549
- return bytes;
550
- }
551
-
552
- // src/core/opfs/readdir.ts
553
- import { compareCodePoints as compareCodePoints3, mountPrefixOf } from "@struktoai/mirage-core";
554
- import { enoent as enoent4, enotdir as enotdir3 } from "@struktoai/mirage-core";
555
- async function readdir(accessor, path) {
556
- const root = accessor.rootHandle;
557
- const virtual = path.pattern !== null ? path.directory : path.mountPath;
558
- let dir;
559
- try {
560
- dir = await resolveDirHandle(root, virtual, { create: false });
561
- } catch (err) {
562
- if (isNotFound(err)) throw enoent4(path);
563
- if (isTypeMismatch(err)) throw enotdir3(path);
564
- throw err;
565
- }
566
- const names = [];
567
- for await (const [name] of iterEntries(dir)) {
568
- names.push(name);
569
- }
570
- const base = norm(virtual);
571
- const dirPrefix = base === "/" ? "/" : `${base}/`;
572
- const mountPrefix = mountPrefixOf(path.virtual, path.resourcePath);
573
- return names.map((n) => `${mountPrefix}${dirPrefix}${n}`).sort(compareCodePoints3);
574
- }
575
-
576
- // src/core/opfs/rename.ts
577
- import { enoent as enoent5 } from "@struktoai/mirage-core";
578
- async function copyDirRecursive(root, srcPath, dstPath) {
579
- const srcDir = await resolveDirHandle(root, srcPath, { create: false });
580
- const dstDir = await resolveDirHandle(root, dstPath, { create: true });
581
- for await (const [name, handle] of iterEntries(srcDir)) {
582
- if (handle.kind === "file") {
583
- const srcFile = await srcDir.getFileHandle(name, { create: false });
584
- const file = await srcFile.getFile();
585
- const data = new Uint8Array(await file.arrayBuffer());
586
- const dstFile = await dstDir.getFileHandle(name, { create: true });
587
- const writable = await dstFile.createWritable();
588
- await writable.write(toWritableChunk(data));
589
- await writable.close();
590
- } else {
591
- await copyDirRecursive(root, `${srcPath}/${name}`, `${dstPath}/${name}`);
592
- }
593
- }
594
- }
595
- async function rename(accessor, src, dst) {
596
- const root = accessor.rootHandle;
597
- const srcPath = src.mountPath;
598
- const dstPath = dst.mountPath;
599
- let srcParent;
600
- let srcName;
601
- try {
602
- ;
603
- [srcParent, srcName] = await resolveParentDirHandle(root, srcPath, { create: false });
604
- } catch (err) {
605
- if (isNotFound(err)) throw enoent5(src);
606
- throw err;
607
- }
608
- let isFile = false;
609
- try {
610
- await srcParent.getFileHandle(srcName, { create: false });
611
- isFile = true;
612
- } catch (err) {
613
- if (!isNotFound(err) && !(err instanceof DOMException && err.name === "TypeMismatchError")) {
614
- throw err;
615
- }
616
- }
617
- if (!isFile) {
618
- try {
619
- await srcParent.getDirectoryHandle(srcName, { create: false });
620
- } catch (err) {
621
- if (isNotFound(err)) throw enoent5(src);
622
- throw err;
623
- }
624
- }
625
- try {
626
- await resolveParentDirHandle(root, dstPath, { create: false });
627
- } catch (err) {
628
- throw destError(err, dst);
629
- }
630
- if (isFile) {
631
- const srcFile = await resolveFileHandle(root, srcPath, { create: false });
632
- const file = await srcFile.getFile();
633
- const data = new Uint8Array(await file.arrayBuffer());
634
- let dstFile;
635
- try {
636
- dstFile = await resolveFileHandle(root, dstPath, { create: true });
637
- } catch (err) {
638
- throw destError(err, dst);
639
- }
640
- const writable = await dstFile.createWritable();
641
- await writable.write(toWritableChunk(data));
642
- await writable.close();
643
- await srcParent.removeEntry(srcName);
644
- return;
645
- }
646
- await copyDirRecursive(root, srcPath, dstPath);
647
- await srcParent.removeEntry(srcName, { recursive: true });
648
- }
649
-
650
- // src/core/opfs/rm.ts
651
- async function rmR(accessor, path) {
652
- const root = accessor.rootHandle;
653
- const virtual = path.mountPath;
654
- let parentDir;
655
- let name;
656
- try {
657
- ;
658
- [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
659
- } catch (err) {
660
- if (isNotFound(err)) return;
661
- if (err instanceof Error && err.message.startsWith("no parent directory")) return;
662
- throw err;
663
- }
664
- try {
665
- await parentDir.removeEntry(name, { recursive: true });
666
- } catch (err) {
667
- if (isNotFound(err)) return;
668
- throw err;
669
- }
670
- }
671
-
672
- // src/core/opfs/rmdir.ts
673
- async function rmdir(accessor, path) {
674
- const root = accessor.rootHandle;
675
- const virtual = path.mountPath;
676
- let parentDir;
677
- let name;
678
- try {
679
- ;
680
- [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
681
- } catch (err) {
682
- if (isNotFound(err)) return;
683
- if (err instanceof Error && err.message.startsWith("no parent directory")) return;
684
- throw err;
685
- }
686
- try {
687
- await parentDir.removeEntry(name, { recursive: false });
688
- } catch (err) {
689
- if (isNotFound(err)) return;
690
- throw err;
691
- }
692
- }
693
-
694
- // src/core/opfs/stat.ts
695
- import { FileStat, FileType, guessType } from "@struktoai/mirage-core";
696
- async function stat(accessor, p) {
697
- const root = accessor.rootHandle;
698
- const virtual = p.mountPath;
699
- const segs = splitSegments(virtual);
700
- const last = segs.at(-1);
701
- if (last === void 0) {
702
- return new FileStat({
703
- name: "/",
704
- size: null,
705
- modified: null,
706
- type: FileType.DIRECTORY
707
- });
708
- }
709
- const name = last;
710
- let parentDir;
711
- let entryName;
712
- try {
713
- ;
714
- [parentDir, entryName] = await resolveParentDirHandle(root, virtual, { create: false });
715
- } catch (err) {
716
- throw destError(err, p);
717
- }
718
- try {
719
- const fileHandle = await parentDir.getFileHandle(entryName, { create: false });
720
- const file = await fileHandle.getFile();
721
- const modified = new Date(file.lastModified).toISOString();
722
- return new FileStat({
723
- name,
724
- size: file.size,
725
- modified,
726
- fingerprint: modified,
727
- type: guessType(name)
728
- });
729
- } catch (err) {
730
- if (!isNotFound(err) && !(err instanceof DOMException && err.name === "TypeMismatchError")) {
731
- throw err;
732
- }
733
- }
734
- let dirHandle;
735
- try {
736
- dirHandle = await resolveDirHandle(root, virtual, { create: false });
737
- } catch (err) {
738
- throw destError(err, p);
739
- }
740
- let latest = 0;
741
- for await (const [, handle] of iterEntries(dirHandle)) {
742
- if (handle.kind !== "file") continue;
743
- const file = await handle.getFile();
744
- if (file.lastModified > latest) latest = file.lastModified;
745
- }
746
- return new FileStat({
747
- name,
748
- size: null,
749
- modified: latest > 0 ? new Date(latest).toISOString() : null,
750
- type: FileType.DIRECTORY
751
- });
752
- }
753
-
754
- // src/core/opfs/stream.ts
755
- import { recordStream, ResourceName as ResourceName4 } from "@struktoai/mirage-core";
756
- import { eisdir as eisdir2, enoent as enoent6 } from "@struktoai/mirage-core";
757
- async function* stream(accessor, path) {
758
- const root = accessor.rootHandle;
759
- const virtual = path.mountPath;
760
- let handle;
761
- try {
762
- handle = await resolveFileHandle(root, virtual, { create: false });
763
- } catch (err) {
764
- if (isNotFound(err)) throw enoent6(path);
765
- if (err instanceof DOMException && err.name === "TypeMismatchError") throw eisdir2(path);
766
- throw err;
767
- }
768
- const file = await handle.getFile();
769
- const rec = recordStream("read", virtual, ResourceName4.OPFS);
770
- const reader = file.stream().getReader();
771
- for (; ; ) {
772
- const { value, done } = await reader.read();
773
- if (done) break;
774
- if (rec !== null) rec.bytes += value.byteLength;
775
- yield value;
776
- }
777
- }
778
-
779
- // src/core/opfs/truncate.ts
780
- import { ResourceName as ResourceName5, record as record4 } from "@struktoai/mirage-core";
781
- async function truncate(accessor, path, length) {
782
- const start = performance.now();
783
- const root = accessor.rootHandle;
784
- const virtual = path.mountPath;
785
- let handle;
786
- let existing;
787
- try {
788
- handle = await resolveFileHandle(root, virtual, { create: false });
789
- const file = await handle.getFile();
790
- existing = new Uint8Array(await file.arrayBuffer());
791
- } catch (err) {
792
- if (isNotFound(err)) {
793
- try {
794
- handle = await resolveFileHandle(root, virtual, { create: true });
795
- } catch (cerr) {
796
- throw destError(cerr, path);
797
- }
798
- existing = new Uint8Array();
799
- } else {
800
- throw destError(err, path);
801
- }
802
- }
803
- const out = new Uint8Array(length);
804
- out.set(existing.subarray(0, Math.min(existing.byteLength, length)));
805
- const writable = await handle.createWritable();
806
- await writable.write(toWritableChunk(out));
807
- await writable.close();
808
- record4("truncate", virtual, ResourceName5.OPFS, 0, start);
809
- }
810
-
811
- // src/core/opfs/unlink.ts
812
- async function unlink(accessor, path) {
813
- const root = accessor.rootHandle;
814
- const virtual = path.mountPath;
815
- let parentDir;
816
- let name;
817
- try {
818
- ;
819
- [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
820
- } catch (err) {
821
- if (isNotFound(err)) return;
822
- if (err instanceof Error && err.message.startsWith("no parent directory")) return;
823
- throw err;
824
- }
825
- try {
826
- await parentDir.removeEntry(name);
827
- } catch (err) {
828
- if (isNotFound(err)) return;
829
- throw err;
830
- }
831
- }
832
-
833
- // src/commands/builtin/opfs/io.ts
834
- var OPFS_IO = {
835
- readdir,
836
- readBytes: read,
837
- readStream: stream,
838
- stat,
839
- isMounted: () => true,
840
- local: true,
841
- maxGlobMatches: SCOPE_ERROR,
842
- write: writeBytes,
843
- exists,
844
- mkdir,
845
- unlink,
846
- rmdir,
847
- rmR,
848
- rename,
849
- copy,
850
- create,
851
- truncate,
852
- append: appendBytes,
853
- find,
854
- du: { size, entries }
855
- };
856
-
857
- // src/commands/builtin/opfs/index.ts
858
- var OPFS_COMMANDS = [
859
- ...makeGenericCommands(ResourceName6.OPFS, OPFS_IO)
860
- ];
861
-
862
- // src/ops/opfs/append.ts
863
- import { ResourceName as ResourceName7 } from "@struktoai/mirage-core";
864
- var appendOp = {
865
- name: "append",
866
- resource: ResourceName7.OPFS,
867
- filetype: null,
868
- write: true,
869
- fn: (accessor, path, args) => {
870
- const data = args[0];
871
- if (!(data instanceof Uint8Array)) {
872
- throw new TypeError("append op requires a Uint8Array as the first arg");
873
- }
874
- return appendBytes(accessor, path, data);
875
- }
876
- };
877
-
878
- // src/ops/opfs/create.ts
879
- import { ResourceName as ResourceName8 } from "@struktoai/mirage-core";
880
- var createOp = {
881
- name: "create",
882
- resource: ResourceName8.OPFS,
883
- filetype: null,
884
- write: true,
885
- fn: (accessor, path) => create(accessor, path)
886
- };
887
-
888
- // src/ops/opfs/mkdir.ts
889
- import { ResourceName as ResourceName9 } from "@struktoai/mirage-core";
890
- var mkdirOp = {
891
- name: "mkdir",
892
- resource: ResourceName9.OPFS,
893
- filetype: null,
894
- write: true,
895
- fn: (accessor, path) => mkdir(accessor, path, true)
896
- };
897
-
898
- // src/ops/opfs/read.ts
899
- import { ResourceName as ResourceName10 } from "@struktoai/mirage-core";
900
- var readOp = {
901
- name: "read",
902
- resource: ResourceName10.OPFS,
903
- filetype: null,
904
- write: false,
905
- fn: (accessor, path) => read(accessor, path)
906
- };
907
-
908
- // src/ops/opfs/readdir.ts
909
- import { ResourceName as ResourceName11 } from "@struktoai/mirage-core";
910
- var readdirOp = {
911
- name: "readdir",
912
- resource: ResourceName11.OPFS,
913
- filetype: null,
914
- write: false,
915
- fn: (accessor, path) => readdir(accessor, path)
916
- };
917
-
918
- // src/ops/opfs/rename.ts
919
- import { ResourceName as ResourceName12 } from "@struktoai/mirage-core";
920
- var renameOp = {
921
- name: "rename",
922
- resource: ResourceName12.OPFS,
923
- filetype: null,
924
- write: true,
925
- fn: (accessor, path, args) => {
926
- const dst = args[0];
927
- if (dst === void 0 || dst === null || typeof dst !== "object" || !("virtual" in dst)) {
928
- throw new TypeError("rename op requires a PathSpec destination as the first arg");
929
- }
930
- return rename(accessor, path, dst);
931
- }
932
- };
933
-
934
- // src/ops/opfs/rmdir.ts
935
- import { ResourceName as ResourceName13 } from "@struktoai/mirage-core";
936
- var rmdirOp = {
937
- name: "rmdir",
938
- resource: ResourceName13.OPFS,
939
- filetype: null,
940
- write: true,
941
- fn: (accessor, path) => rmdir(accessor, path)
942
- };
943
-
944
- // src/ops/opfs/stat.ts
945
- import { ResourceName as ResourceName14 } from "@struktoai/mirage-core";
946
- var statOp = {
947
- name: "stat",
948
- resource: ResourceName14.OPFS,
949
- filetype: null,
950
- write: false,
951
- fn: (accessor, path) => stat(accessor, path)
952
- };
953
-
954
- // src/ops/opfs/truncate.ts
955
- import { ResourceName as ResourceName15 } from "@struktoai/mirage-core";
956
- var truncateOp = {
957
- name: "truncate",
958
- resource: ResourceName15.OPFS,
959
- filetype: null,
960
- write: true,
961
- fn: (accessor, path, args) => {
962
- const length = args[0];
963
- if (typeof length !== "number") {
964
- throw new TypeError("truncate op requires a number length as the first arg");
965
- }
966
- return truncate(accessor, path, length);
967
- }
968
- };
969
-
970
- // src/ops/opfs/unlink.ts
971
- import { ResourceName as ResourceName16 } from "@struktoai/mirage-core";
972
- var unlinkOp = {
973
- name: "unlink",
974
- resource: ResourceName16.OPFS,
975
- filetype: null,
976
- write: true,
977
- fn: (accessor, path) => unlink(accessor, path)
978
- };
979
-
980
- // src/ops/opfs/write.ts
981
- import { ResourceName as ResourceName17 } from "@struktoai/mirage-core";
982
- var writeOp = {
983
- name: "write",
984
- resource: ResourceName17.OPFS,
985
- filetype: null,
986
- write: true,
987
- fn: (accessor, path, args) => {
988
- const data = args[0];
989
- if (!(data instanceof Uint8Array)) {
990
- throw new TypeError("write op requires a Uint8Array as the first arg");
991
- }
992
- return writeBytes(accessor, path, data);
993
- }
994
- };
995
-
996
- // src/ops/opfs/index.ts
997
- var OPFS_OPS = [
998
- appendOp,
999
- createOp,
1000
- mkdirOp,
1001
- readOp,
1002
- readdirOp,
1003
- renameOp,
1004
- rmdirOp,
1005
- statOp,
1006
- truncateOp,
1007
- unlinkOp,
1008
- writeOp
1009
- ];
1010
-
1011
- // src/resource/opfs/prompt.ts
1012
- var OPFS_PROMPT = `{prefix}
1013
- Browser Origin Private File System. Persistent per-origin storage that survives page reloads.
1014
- Standard commands: ls, cat, head, tail, grep, wc, find, tree, mkdir, touch, cp, mv, rm, tee.`;
1015
-
1016
- // src/resource/opfs/opfs.ts
1017
- var globCore = makeResolveGlob(readdir, SCOPE_ERROR);
1018
- async function walkFiles(dir, currentPath, files) {
1019
- for await (const [name, handle] of iterEntries(dir)) {
1020
- const childPath = currentPath === "" ? name : `${currentPath}/${name}`;
1021
- if (handle.kind === "file") {
1022
- const fh = await dir.getFileHandle(name, { create: false });
1023
- const file = await fh.getFile();
1024
- files[childPath] = new Uint8Array(await file.arrayBuffer());
1025
- } else {
1026
- const child = await dir.getDirectoryHandle(name, { create: false });
1027
- await walkFiles(child, childPath, files);
1028
- }
1029
- }
1030
- }
1031
- async function walkDirs(dir, currentPath, dirs) {
1032
- for await (const [name, handle] of iterEntries(dir)) {
1033
- if (handle.kind !== "directory") continue;
1034
- const childPath = currentPath === "" ? `/${name}` : `${currentPath}/${name}`;
1035
- dirs.push(childPath);
1036
- const child = await dir.getDirectoryHandle(name, { create: false });
1037
- await walkDirs(child, childPath, dirs);
1038
- }
1039
- }
1040
- async function splitAndCreate(root, relativePath) {
1041
- let handle = root;
1042
- for (const seg of relativePath.split("/")) {
1043
- if (seg === "" || seg === ".") continue;
1044
- handle = await handle.getDirectoryHandle(seg, { create: true });
1045
- }
1046
- return handle;
1047
- }
1048
- var OPFSResource = class {
1049
- kind = ResourceName18.OPFS;
1050
- // OPFS is a real filesystem: getFile().size is the exact byte count a
1051
- // read returns.
1052
- sizesAlwaysKnown = true;
1053
- prompt = OPFS_PROMPT;
1054
- rootName;
1055
- accessor;
1056
- rootHandle = null;
1057
- openPromise = null;
1058
- constructor(options = {}) {
1059
- this.rootName = options.root ?? "";
1060
- this.accessor = new OPFSAccessor(this);
1061
- }
1062
- open() {
1063
- return this.ensureOpen().then(() => void 0);
1064
- }
1065
- close() {
1066
- this.rootHandle = null;
1067
- this.openPromise = null;
1068
- return Promise.resolve();
1069
- }
1070
- /**
1071
- * Lazily resolve to a usable root handle. Memoizes `navigator.storage`
1072
- * traversal so the resource self-initializes on first method call without
1073
- * relying on an external orchestrator.
1074
- */
1075
- ensureOpen() {
1076
- if (this.rootHandle !== null) return Promise.resolve(this.rootHandle);
1077
- this.openPromise ??= (async () => {
1078
- const origin = await navigator.storage.getDirectory();
1079
- let handle = origin;
1080
- for (const seg of this.rootName.split("/")) {
1081
- if (seg === "" || seg === ".") continue;
1082
- handle = await handle.getDirectoryHandle(seg, { create: true });
1083
- }
1084
- this.rootHandle = handle;
1085
- return handle;
1086
- })();
1087
- return this.openPromise;
1088
- }
1089
- requireHandle() {
1090
- if (this.rootHandle === null) {
1091
- throw new Error("OPFSResource is not open \u2014 call open() first");
1092
- }
1093
- return this.rootHandle;
1094
- }
1095
- ops() {
1096
- return OPFS_OPS;
1097
- }
1098
- commands() {
1099
- return OPFS_COMMANDS;
1100
- }
1101
- async *streamPath(p) {
1102
- await this.ensureOpen();
1103
- yield* stream(this.accessor, p);
1104
- }
1105
- async readFile(p) {
1106
- await this.ensureOpen();
1107
- return read(this.accessor, p);
1108
- }
1109
- async writeFile(p, data) {
1110
- await this.ensureOpen();
1111
- return writeBytes(this.accessor, p, data);
1112
- }
1113
- async appendFile(p, data) {
1114
- await this.ensureOpen();
1115
- return appendBytes(this.accessor, p, data);
1116
- }
1117
- async readdir(p) {
1118
- await this.ensureOpen();
1119
- return readdir(this.accessor, p);
1120
- }
1121
- async stat(p) {
1122
- await this.ensureOpen();
1123
- return stat(this.accessor, p);
1124
- }
1125
- async exists(p) {
1126
- await this.ensureOpen();
1127
- return exists(this.accessor, p);
1128
- }
1129
- async mkdir(p, options) {
1130
- await this.ensureOpen();
1131
- return mkdir(this.accessor, p, options?.recursive === true);
1132
- }
1133
- async rmdir(p) {
1134
- await this.ensureOpen();
1135
- return rmdir(this.accessor, p);
1136
- }
1137
- async unlink(p) {
1138
- await this.ensureOpen();
1139
- return unlink(this.accessor, p);
1140
- }
1141
- async rename(src, dst) {
1142
- await this.ensureOpen();
1143
- return rename(this.accessor, src, dst);
1144
- }
1145
- async truncate(p, length) {
1146
- await this.ensureOpen();
1147
- return truncate(this.accessor, p, length);
1148
- }
1149
- async copy(src, dst) {
1150
- await this.ensureOpen();
1151
- return copy(this.accessor, src, dst);
1152
- }
1153
- async rmR(p) {
1154
- await this.ensureOpen();
1155
- return rmR(this.accessor, p);
1156
- }
1157
- async du(p) {
1158
- await this.ensureOpen();
1159
- return size(this.accessor, p);
1160
- }
1161
- async find(p, options = {}) {
1162
- await this.ensureOpen();
1163
- return find(this.accessor, p, options);
1164
- }
1165
- async glob(paths) {
1166
- await this.ensureOpen();
1167
- return globCore(this.accessor, paths);
1168
- }
1169
- async getState() {
1170
- const handle = await this.ensureOpen();
1171
- const files = {};
1172
- await walkFiles(handle, "", files);
1173
- const dirs = [];
1174
- await walkDirs(handle, "", dirs);
1175
- dirs.sort(compareCodePoints4);
1176
- return {
1177
- type: this.kind,
1178
- files,
1179
- dirs
1180
- };
1181
- }
1182
- async loadState(state) {
1183
- const handle = await this.ensureOpen();
1184
- for (const dir of state.dirs) {
1185
- const rel = lstripSlash(dir);
1186
- if (rel === "") continue;
1187
- await splitAndCreate(handle, rel);
1188
- }
1189
- for (const [rel, data] of Object.entries(state.files)) {
1190
- const segs = rel.split("/").filter((s) => s !== "" && s !== ".");
1191
- const fileName = segs.pop();
1192
- if (fileName === void 0) continue;
1193
- let dir = handle;
1194
- for (const seg of segs) {
1195
- dir = await dir.getDirectoryHandle(seg, { create: true });
1196
- }
1197
- const fh = await dir.getFileHandle(fileName, { create: true });
1198
- const writable = await fh.createWritable();
1199
- await writable.write(toWritableChunk(data));
1200
- await writable.close();
1201
- }
1202
- }
1203
- };
1204
-
1205
- export {
1206
- OPFSAccessor,
1207
- OPFS_COMMANDS,
1208
- OPFS_OPS,
1209
- OPFS_PROMPT,
1210
- OPFSResource
1211
- };
1212
- //# sourceMappingURL=chunk-UFHBDBZD.js.map