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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) 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 +121 -1246
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +132 -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 +381 -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 +279 -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/runtime/sandbox/e2b/config.d.ts +2 -0
  423. package/dist/runtime/sandbox/e2b/config.d.ts.map +1 -0
  424. package/dist/runtime/sandbox/e2b/config.js +15 -0
  425. package/dist/runtime/sandbox/e2b/config.js.map +1 -0
  426. package/dist/runtime/sandbox/e2b/runtime.d.ts +2 -0
  427. package/dist/runtime/sandbox/e2b/runtime.d.ts.map +1 -0
  428. package/dist/runtime/sandbox/e2b/runtime.js +15 -0
  429. package/dist/runtime/sandbox/e2b/runtime.js.map +1 -0
  430. package/dist/test-utils.d.ts +37 -0
  431. package/dist/test-utils.d.ts.map +1 -0
  432. package/dist/test-utils.js +518 -0
  433. package/dist/test-utils.js.map +1 -0
  434. package/dist/workspace.d.ts +10 -0
  435. package/dist/workspace.d.ts.map +1 -0
  436. package/dist/workspace.js +62 -0
  437. package/dist/workspace.js.map +1 -0
  438. package/package.json +22 -6
  439. package/dist/aliyun-DR6KT3H6.js +0 -8
  440. package/dist/aliyun-DR6KT3H6.js.map +0 -1
  441. package/dist/backblaze-XCLZXTES.js +0 -8
  442. package/dist/backblaze-XCLZXTES.js.map +0 -1
  443. package/dist/box-XBCSU3AA.js +0 -8
  444. package/dist/box-XBCSU3AA.js.map +0 -1
  445. package/dist/ceph-F5S2NMTO.js +0 -8
  446. package/dist/ceph-F5S2NMTO.js.map +0 -1
  447. package/dist/chunk-2J35WXX5.js +0 -28
  448. package/dist/chunk-2J35WXX5.js.map +0 -1
  449. package/dist/chunk-2WNXK742.js +0 -89
  450. package/dist/chunk-2WNXK742.js.map +0 -1
  451. package/dist/chunk-2WSKXBSV.js +0 -139
  452. package/dist/chunk-2WSKXBSV.js.map +0 -1
  453. package/dist/chunk-37WKCB2E.js +0 -95
  454. package/dist/chunk-37WKCB2E.js.map +0 -1
  455. package/dist/chunk-3IYCVC7W.js +0 -96
  456. package/dist/chunk-3IYCVC7W.js.map +0 -1
  457. package/dist/chunk-46HNNKFR.js +0 -95
  458. package/dist/chunk-46HNNKFR.js.map +0 -1
  459. package/dist/chunk-4IF4TGAI.js +0 -11
  460. package/dist/chunk-4IF4TGAI.js.map +0 -1
  461. package/dist/chunk-5OZJMTYW.js +0 -113
  462. package/dist/chunk-5OZJMTYW.js.map +0 -1
  463. package/dist/chunk-5UM6EBVW.js +0 -108
  464. package/dist/chunk-5UM6EBVW.js.map +0 -1
  465. package/dist/chunk-6HRSCX2U.js +0 -98
  466. package/dist/chunk-6HRSCX2U.js.map +0 -1
  467. package/dist/chunk-7HWQAYXR.js +0 -85
  468. package/dist/chunk-7HWQAYXR.js.map +0 -1
  469. package/dist/chunk-AUZNQ7EI.js +0 -85
  470. package/dist/chunk-AUZNQ7EI.js.map +0 -1
  471. package/dist/chunk-BGA2F226.js +0 -182
  472. package/dist/chunk-BGA2F226.js.map +0 -1
  473. package/dist/chunk-BV372CUO.js +0 -90
  474. package/dist/chunk-BV372CUO.js.map +0 -1
  475. package/dist/chunk-C4THTILY.js +0 -95
  476. package/dist/chunk-C4THTILY.js.map +0 -1
  477. package/dist/chunk-D4MEOKNQ.js +0 -95
  478. package/dist/chunk-D4MEOKNQ.js.map +0 -1
  479. package/dist/chunk-D4RAMWYH.js +0 -88
  480. package/dist/chunk-D4RAMWYH.js.map +0 -1
  481. package/dist/chunk-EHIT6WCY.js +0 -95
  482. package/dist/chunk-EHIT6WCY.js.map +0 -1
  483. package/dist/chunk-EN6TZYT2.js +0 -95
  484. package/dist/chunk-EN6TZYT2.js.map +0 -1
  485. package/dist/chunk-FTDVV7EQ.js +0 -85
  486. package/dist/chunk-FTDVV7EQ.js.map +0 -1
  487. package/dist/chunk-G67Q2Z6I.js +0 -95
  488. package/dist/chunk-G67Q2Z6I.js.map +0 -1
  489. package/dist/chunk-GM2QMJAY.js +0 -85
  490. package/dist/chunk-GM2QMJAY.js.map +0 -1
  491. package/dist/chunk-HRWLHJX2.js +0 -84
  492. package/dist/chunk-HRWLHJX2.js.map +0 -1
  493. package/dist/chunk-INEXV2PN.js +0 -91
  494. package/dist/chunk-INEXV2PN.js.map +0 -1
  495. package/dist/chunk-IZMKMD3O.js +0 -11
  496. package/dist/chunk-IZMKMD3O.js.map +0 -1
  497. package/dist/chunk-JUVMJ5GI.js +0 -85
  498. package/dist/chunk-JUVMJ5GI.js.map +0 -1
  499. package/dist/chunk-KL2VFYUV.js +0 -159
  500. package/dist/chunk-KL2VFYUV.js.map +0 -1
  501. package/dist/chunk-L64GRKOD.js +0 -38
  502. package/dist/chunk-L64GRKOD.js.map +0 -1
  503. package/dist/chunk-LPDLPRPS.js +0 -11
  504. package/dist/chunk-LPDLPRPS.js.map +0 -1
  505. package/dist/chunk-M2UF2JHJ.js +0 -11
  506. package/dist/chunk-M2UF2JHJ.js.map +0 -1
  507. package/dist/chunk-NVHPJ5CV.js +0 -109
  508. package/dist/chunk-NVHPJ5CV.js.map +0 -1
  509. package/dist/chunk-OSTDTTWI.js +0 -35
  510. package/dist/chunk-OSTDTTWI.js.map +0 -1
  511. package/dist/chunk-PQCRGTSA.js +0 -85
  512. package/dist/chunk-PQCRGTSA.js.map +0 -1
  513. package/dist/chunk-QE7QNA45.js +0 -114
  514. package/dist/chunk-QE7QNA45.js.map +0 -1
  515. package/dist/chunk-QG2NUNCY.js +0 -95
  516. package/dist/chunk-QG2NUNCY.js.map +0 -1
  517. package/dist/chunk-UFHBDBZD.js +0 -1212
  518. package/dist/chunk-UFHBDBZD.js.map +0 -1
  519. package/dist/chunk-UY22T4AC.js +0 -112
  520. package/dist/chunk-UY22T4AC.js.map +0 -1
  521. package/dist/chunk-XJBC3OYX.js +0 -11
  522. package/dist/chunk-XJBC3OYX.js.map +0 -1
  523. package/dist/chunk-Y6DYUK6J.js +0 -85
  524. package/dist/chunk-Y6DYUK6J.js.map +0 -1
  525. package/dist/chunk-YOCTIHQZ.js +0 -89
  526. package/dist/chunk-YOCTIHQZ.js.map +0 -1
  527. package/dist/chunk-ZDJPUXYH.js +0 -101
  528. package/dist/chunk-ZDJPUXYH.js.map +0 -1
  529. package/dist/chunk-ZKCOSE3R.js +0 -90
  530. package/dist/chunk-ZKCOSE3R.js.map +0 -1
  531. package/dist/chunk-ZTHVEXIV.js +0 -11
  532. package/dist/chunk-ZTHVEXIV.js.map +0 -1
  533. package/dist/config-2Y6LZKLV.js +0 -9
  534. package/dist/config-2Y6LZKLV.js.map +0 -1
  535. package/dist/config-4GSOMUMF.js +0 -9
  536. package/dist/config-4GSOMUMF.js.map +0 -1
  537. package/dist/config-5YBUWFUP.js +0 -9
  538. package/dist/config-5YBUWFUP.js.map +0 -1
  539. package/dist/config-DE5OZ4I7.js +0 -9
  540. package/dist/config-DE5OZ4I7.js.map +0 -1
  541. package/dist/config-ELDOFRJW.js +0 -9
  542. package/dist/config-ELDOFRJW.js.map +0 -1
  543. package/dist/config-FPM3LAW7.js +0 -9
  544. package/dist/config-FPM3LAW7.js.map +0 -1
  545. package/dist/config-JY557MA6.js +0 -9
  546. package/dist/config-JY557MA6.js.map +0 -1
  547. package/dist/config-UU27ALAA.js +0 -9
  548. package/dist/config-UU27ALAA.js.map +0 -1
  549. package/dist/config-WRACCRPN.js +0 -9
  550. package/dist/config-WRACCRPN.js.map +0 -1
  551. package/dist/digitalocean-QDHTRS2W.js +0 -8
  552. package/dist/digitalocean-QDHTRS2W.js.map +0 -1
  553. package/dist/discord-ERUI7OAQ.js +0 -7
  554. package/dist/discord-ERUI7OAQ.js.map +0 -1
  555. package/dist/dropbox-3U6D4HLE.js +0 -8
  556. package/dist/dropbox-3U6D4HLE.js.map +0 -1
  557. package/dist/gcal-MTBSDG34.js +0 -8
  558. package/dist/gcal-MTBSDG34.js.map +0 -1
  559. package/dist/gcs-KNGRBBET.js +0 -8
  560. package/dist/gcs-KNGRBBET.js.map +0 -1
  561. package/dist/gdocs-RUIOIRKP.js +0 -8
  562. package/dist/gdocs-RUIOIRKP.js.map +0 -1
  563. package/dist/gdrive-5JB7ZKEP.js +0 -8
  564. package/dist/gdrive-5JB7ZKEP.js.map +0 -1
  565. package/dist/github-CIXBFBVO.js +0 -7
  566. package/dist/github-CIXBFBVO.js.map +0 -1
  567. package/dist/github_ci-HR6YOYAO.js +0 -8
  568. package/dist/github_ci-HR6YOYAO.js.map +0 -1
  569. package/dist/gmail-JHGWTQU5.js +0 -8
  570. package/dist/gmail-JHGWTQU5.js.map +0 -1
  571. package/dist/gsheets-N54JO2RS.js +0 -8
  572. package/dist/gsheets-N54JO2RS.js.map +0 -1
  573. package/dist/gslides-B4VMNLMB.js +0 -8
  574. package/dist/gslides-B4VMNLMB.js.map +0 -1
  575. package/dist/langfuse-HEUJGDOC.js +0 -7
  576. package/dist/langfuse-HEUJGDOC.js.map +0 -1
  577. package/dist/linear-J4QQ3CA6.js +0 -7
  578. package/dist/linear-J4QQ3CA6.js.map +0 -1
  579. package/dist/minio-BXWHJ6K5.js +0 -8
  580. package/dist/minio-BXWHJ6K5.js.map +0 -1
  581. package/dist/mongodb-YZP643ZU.js +0 -7
  582. package/dist/mongodb-YZP643ZU.js.map +0 -1
  583. package/dist/notion-I5S5SRLO.js +0 -7
  584. package/dist/notion-I5S5SRLO.js.map +0 -1
  585. package/dist/oci-XOPKH4AE.js +0 -8
  586. package/dist/oci-XOPKH4AE.js.map +0 -1
  587. package/dist/opfs-36QO72Y5.js +0 -7
  588. package/dist/opfs-36QO72Y5.js.map +0 -1
  589. package/dist/postgres-HPOMN2AR.js +0 -7
  590. package/dist/postgres-HPOMN2AR.js.map +0 -1
  591. package/dist/qingstor-JKAHLK62.js +0 -8
  592. package/dist/qingstor-JKAHLK62.js.map +0 -1
  593. package/dist/r2-L3QXQ76M.js +0 -8
  594. package/dist/r2-L3QXQ76M.js.map +0 -1
  595. package/dist/s3-LRZJPGHK.js +0 -9
  596. package/dist/s3-LRZJPGHK.js.map +0 -1
  597. package/dist/scaleway-CGNDYNKS.js +0 -8
  598. package/dist/scaleway-CGNDYNKS.js.map +0 -1
  599. package/dist/seaweedfs-BSQWCBIR.js +0 -8
  600. package/dist/seaweedfs-BSQWCBIR.js.map +0 -1
  601. package/dist/slack-62ECSENR.js +0 -7
  602. package/dist/slack-62ECSENR.js.map +0 -1
  603. package/dist/supabase-J66NXWAF.js +0 -8
  604. package/dist/supabase-J66NXWAF.js.map +0 -1
  605. package/dist/tencent-AC667LV3.js +0 -8
  606. package/dist/tencent-AC667LV3.js.map +0 -1
  607. package/dist/trello-SUPG6VDF.js +0 -7
  608. package/dist/trello-SUPG6VDF.js.map +0 -1
  609. package/dist/wasabi-5KKPW6LH.js +0 -8
  610. package/dist/wasabi-5KKPW6LH.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { FileStat } from '@struktoai/mirage-core/types';
2
+ import type { PathSpec } from '@struktoai/mirage-core/types';
3
+ import type { OPFSAccessor } from '../../accessor/opfs.ts';
4
+ export declare function stat(accessor: OPFSAccessor, p: PathSpec): Promise<FileStat>;
5
+ //# sourceMappingURL=stat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/core/opfs/stat.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAY,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAU1D,wBAAsB,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgEjF"}
@@ -0,0 +1,88 @@
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 { FileStat, FileType } from '@struktoai/mirage-core/types';
15
+ import { contentTypeForPath } from '@struktoai/mirage-core/utils/filetype';
16
+ import { destError, isNotFound, iterEntries, resolveDirHandle, resolveParentDirHandle, splitSegments, } from "./utils.js";
17
+ export async function stat(accessor, p) {
18
+ const root = accessor.rootHandle;
19
+ const virtual = p.mountPath;
20
+ const segs = splitSegments(virtual);
21
+ const last = segs.at(-1);
22
+ if (last === undefined) {
23
+ return new FileStat({
24
+ name: '/',
25
+ size: null,
26
+ modified: null,
27
+ type: FileType.DIRECTORY,
28
+ });
29
+ }
30
+ const name = last;
31
+ let parentDir;
32
+ let entryName;
33
+ try {
34
+ ;
35
+ [parentDir, entryName] = await resolveParentDirHandle(root, virtual, { create: false });
36
+ }
37
+ catch (err) {
38
+ // A plain file partway down the chain is ENOTDIR, not ENOENT: the
39
+ // read-family commands report "Not a directory" for it, the way the
40
+ // kernel does.
41
+ throw destError(err, p);
42
+ }
43
+ try {
44
+ const fileHandle = await parentDir.getFileHandle(entryName, { create: false });
45
+ const file = await fileHandle.getFile();
46
+ const modified = new Date(file.lastModified).toISOString();
47
+ return new FileStat({
48
+ name,
49
+ size: file.size,
50
+ modified,
51
+ fingerprint: modified,
52
+ type: FileType.FILE,
53
+ content: contentTypeForPath(name),
54
+ });
55
+ }
56
+ catch (err) {
57
+ if (!isNotFound(err) && !(err instanceof DOMException && err.name === 'TypeMismatchError')) {
58
+ throw err;
59
+ }
60
+ }
61
+ let dirHandle;
62
+ try {
63
+ dirHandle = await resolveDirHandle(root, virtual, { create: false });
64
+ }
65
+ catch (err) {
66
+ // A plain file partway down the chain is ENOTDIR, not ENOENT: the
67
+ // read-family commands report "Not a directory" for it, the way the
68
+ // kernel does.
69
+ throw destError(err, p);
70
+ }
71
+ // OPFS exposes no directory timestamp, so derive one from the newest file
72
+ // child's lastModified (null when the directory holds no files).
73
+ let latest = 0;
74
+ for await (const [, handle] of iterEntries(dirHandle)) {
75
+ if (handle.kind !== 'file')
76
+ continue;
77
+ const file = await handle.getFile();
78
+ if (file.lastModified > latest)
79
+ latest = file.lastModified;
80
+ }
81
+ return new FileStat({
82
+ name,
83
+ size: null,
84
+ modified: latest > 0 ? new Date(latest).toISOString() : null,
85
+ type: FileType.DIRECTORY,
86
+ });
87
+ }
88
+ //# sourceMappingURL=stat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/core/opfs/stat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PathSpec } from '@struktoai/mirage-core/types';
2
+ import type { OPFSAccessor } from '../../accessor/opfs.ts';
3
+ export declare function stream(accessor: OPFSAccessor, path: PathSpec): AsyncIterable<Uint8Array>;
4
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/core/opfs/stream.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D,wBAAuB,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAoB/F"}
@@ -0,0 +1,44 @@
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 { recordStream } from '@struktoai/mirage-core/observe/context';
15
+ import { ResourceName } from '@struktoai/mirage-core/types';
16
+ import { eisdir, enoent } from '@struktoai/mirage-core/utils/errors';
17
+ import { isNotFound, resolveFileHandle } from "./utils.js";
18
+ export async function* stream(accessor, path) {
19
+ const root = accessor.rootHandle;
20
+ const virtual = path.mountPath;
21
+ let handle;
22
+ try {
23
+ handle = await resolveFileHandle(root, virtual, { create: false });
24
+ }
25
+ catch (err) {
26
+ if (isNotFound(err))
27
+ throw enoent(path);
28
+ if (err instanceof DOMException && err.name === 'TypeMismatchError')
29
+ throw eisdir(path);
30
+ throw err;
31
+ }
32
+ const file = await handle.getFile();
33
+ const rec = recordStream('read', virtual, ResourceName.OPFS);
34
+ const reader = file.stream().getReader();
35
+ for (;;) {
36
+ const { value, done } = await reader.read();
37
+ if (done)
38
+ break;
39
+ if (rec !== null)
40
+ rec.bytes += value.byteLength;
41
+ yield value;
42
+ }
43
+ }
44
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/core/opfs/stream.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,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAEpE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE1D,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,QAAsB,EAAE,IAAc;IAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;IAC9B,IAAI,MAA4B,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB;YAAE,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;QACvF,MAAM,GAAG,CAAA;IACX,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;IACnC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAA;IACxC,SAAS,CAAC;QACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAC3C,IAAI,IAAI;YAAE,MAAK;QACf,IAAI,GAAG,KAAK,IAAI;YAAE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAA;QAC/C,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PathSpec } from '@struktoai/mirage-core/types';
2
+ import type { OPFSAccessor } from '../../accessor/opfs.ts';
3
+ export declare function truncate(accessor: OPFSAccessor, path: PathSpec, length: number): Promise<void>;
4
+ //# sourceMappingURL=truncate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../src/core/opfs/truncate.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -0,0 +1,49 @@
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 { record, startOp } from '@struktoai/mirage-core/observe/context';
15
+ import { ResourceName } from '@struktoai/mirage-core/types';
16
+ import { destError, isNotFound, resolveFileHandle, toWritableChunk } from "./utils.js";
17
+ export async function truncate(accessor, path, length) {
18
+ const timer = startOp();
19
+ const root = accessor.rootHandle;
20
+ const virtual = path.mountPath;
21
+ let handle;
22
+ let existing;
23
+ try {
24
+ handle = await resolveFileHandle(root, virtual, { create: false });
25
+ const file = await handle.getFile();
26
+ existing = new Uint8Array(await file.arrayBuffer());
27
+ }
28
+ catch (err) {
29
+ if (isNotFound(err)) {
30
+ try {
31
+ handle = await resolveFileHandle(root, virtual, { create: true });
32
+ }
33
+ catch (cerr) {
34
+ throw destError(cerr, path);
35
+ }
36
+ existing = new Uint8Array();
37
+ }
38
+ else {
39
+ throw destError(err, path);
40
+ }
41
+ }
42
+ const out = new Uint8Array(length);
43
+ out.set(existing.subarray(0, Math.min(existing.byteLength, length)));
44
+ const writable = await handle.createWritable();
45
+ await writable.write(toWritableChunk(out));
46
+ await writable.close();
47
+ record('truncate', virtual, ResourceName.OPFS, 0, timer);
48
+ }
49
+ //# sourceMappingURL=truncate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../../src/core/opfs/truncate.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,MAAM,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAG3D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEtF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAsB,EACtB,IAAc,EACd,MAAc;IAEd,MAAM,KAAK,GAAG,OAAO,EAAE,CAAA;IACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;IAC9B,IAAI,MAA4B,CAAA;IAChC,IAAI,QAAoB,CAAA;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACnC,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YACnE,CAAC;YAAC,OAAO,IAAI,EAAE,CAAC;gBACd,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC7B,CAAC;YACD,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACpE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAA;IAC9C,MAAM,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;IACtB,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PathSpec } from '@struktoai/mirage-core/types';
2
+ import type { OPFSAccessor } from '../../accessor/opfs.ts';
3
+ export declare function unlink(accessor: OPFSAccessor, path: PathSpec): Promise<void>;
4
+ //# sourceMappingURL=unlink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink.d.ts","sourceRoot":"","sources":["../../../src/core/opfs/unlink.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D,wBAAsB,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlF"}
@@ -0,0 +1,40 @@
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 { isNotFound, resolveParentDirHandle } from "./utils.js";
15
+ export async function unlink(accessor, path) {
16
+ const root = accessor.rootHandle;
17
+ const virtual = path.mountPath;
18
+ let parentDir;
19
+ let name;
20
+ try {
21
+ ;
22
+ [parentDir, name] = await resolveParentDirHandle(root, virtual, { create: false });
23
+ }
24
+ catch (err) {
25
+ if (isNotFound(err))
26
+ return;
27
+ if (err instanceof Error && err.message.startsWith('no parent directory'))
28
+ return;
29
+ throw err;
30
+ }
31
+ try {
32
+ await parentDir.removeEntry(name);
33
+ }
34
+ catch (err) {
35
+ if (isNotFound(err))
36
+ return;
37
+ throw err;
38
+ }
39
+ }
40
+ //# sourceMappingURL=unlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink.js","sourceRoot":"","sources":["../../../src/core/opfs/unlink.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;AAIvE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAE/D,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAsB,EAAE,IAAc;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;IAC9B,IAAI,SAAoC,CAAA;IACxC,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,CAAC;QAAA,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACrF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAM;QAC3B,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC;YAAE,OAAM;QACjF,MAAM,GAAG,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAM;QAC3B,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { PathSpec } from '@struktoai/mirage-core/types';
2
+ export { gnuBasename as basename, norm, parent } from '@struktoai/mirage-core/utils/path';
3
+ export declare function dirname(p: string): string;
4
+ export declare function splitSegments(virtual: string): string[];
5
+ export declare function resolveDirHandle(root: FileSystemDirectoryHandle, virtual: string, options?: {
6
+ create?: boolean;
7
+ }): Promise<FileSystemDirectoryHandle>;
8
+ export declare function resolveFileHandle(root: FileSystemDirectoryHandle, virtual: string, options?: {
9
+ create?: boolean;
10
+ }): Promise<FileSystemFileHandle>;
11
+ export declare function resolveParentDirHandle(root: FileSystemDirectoryHandle, virtual: string, options?: {
12
+ create?: boolean;
13
+ }): Promise<[FileSystemDirectoryHandle, string]>;
14
+ export declare function destError(err: unknown, spec: PathSpec): unknown;
15
+ export declare function kindAt(root: FileSystemDirectoryHandle, key: string): Promise<'file' | 'dir' | null>;
16
+ export declare function isNotFound(err: unknown): boolean;
17
+ export declare function isTypeMismatch(err: unknown): boolean;
18
+ export declare function toWritableChunk(data: Uint8Array): Blob;
19
+ export declare function iterEntries(dir: FileSystemDirectoryHandle): AsyncIterable<[string, FileSystemHandle]>;
20
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/core/opfs/utils.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAG5D,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAEzF,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKzC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAcvD;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,yBAAyB,CAAC,CAOpC;AAOD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC,CAW9C;AAOD,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAI/D;AAMD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,CAyBhC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKhD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKpD;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAItD;AAED,wBAAuB,WAAW,CAChC,GAAG,EAAE,yBAAyB,GAC7B,aAAa,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAK3C"}
@@ -0,0 +1,149 @@
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 { enoent, enotdir } from '@struktoai/mirage-core/utils/errors';
15
+ export { gnuBasename as basename, norm, parent } from '@struktoai/mirage-core/utils/path';
16
+ export function dirname(p) {
17
+ const i = p.lastIndexOf('/');
18
+ if (i < 0)
19
+ return '';
20
+ if (i === 0)
21
+ return '/';
22
+ return p.slice(0, i);
23
+ }
24
+ export function splitSegments(virtual) {
25
+ const parts = [];
26
+ for (const seg of virtual.split('/')) {
27
+ if (seg === '' || seg === '.')
28
+ continue;
29
+ if (seg === '..') {
30
+ if (parts.length === 0) {
31
+ throw new Error(`path escapes root: ${virtual}`);
32
+ }
33
+ parts.pop();
34
+ continue;
35
+ }
36
+ parts.push(seg);
37
+ }
38
+ return parts;
39
+ }
40
+ export async function resolveDirHandle(root, virtual, options = {}) {
41
+ const segs = splitSegments(virtual);
42
+ let handle = root;
43
+ for (const seg of segs) {
44
+ handle = await handle.getDirectoryHandle(seg, { create: options.create ?? false });
45
+ }
46
+ return handle;
47
+ }
48
+ // `create` applies to the named file only, never to its parents: that is
49
+ // what O_CREAT means, and OPFS would otherwise build the whole chain on
50
+ // demand (a silent `mkdir -p`) where GNU reports ENOENT. A missing parent
51
+ // surfaces as NotFoundError and a plain-file component as TypeMismatchError,
52
+ // which the callers map to ENOENT/ENOTDIR against the operand.
53
+ export async function resolveFileHandle(root, virtual, options = {}) {
54
+ const segs = splitSegments(virtual);
55
+ const fileName = segs.pop();
56
+ if (fileName === undefined) {
57
+ throw new Error(`not a file: ${virtual}`);
58
+ }
59
+ let dir = root;
60
+ for (const seg of segs) {
61
+ dir = await dir.getDirectoryHandle(seg, { create: false });
62
+ }
63
+ return dir.getFileHandle(fileName, { create: options.create ?? false });
64
+ }
65
+ export async function resolveParentDirHandle(root, virtual, options = {}) {
66
+ const segs = splitSegments(virtual);
67
+ const name = segs.pop();
68
+ if (name === undefined) {
69
+ throw new Error(`no parent directory: ${virtual}`);
70
+ }
71
+ let dir = root;
72
+ for (const seg of segs) {
73
+ dir = await dir.getDirectoryHandle(seg, { create: options.create ?? false });
74
+ }
75
+ return [dir, name];
76
+ }
77
+ // Translate a handle-resolution failure on a write target into the errno the
78
+ // command layer reports. OPFS raises NotFoundError for a missing component
79
+ // and TypeMismatchError for one that is a plain file, which are exactly
80
+ // rename(2)'s ENOENT and ENOTDIR. Anything else is a real fault and is
81
+ // rethrown untouched.
82
+ export function destError(err, spec) {
83
+ if (isNotFound(err))
84
+ return enoent(spec);
85
+ if (isTypeMismatch(err))
86
+ return enotdir(spec);
87
+ return err;
88
+ }
89
+ // What lives at a mount-local key: 'file', 'dir', or null when nothing does.
90
+ // OPFS raises the same TypeMismatchError whichever kind is in the way, so a
91
+ // chain walk that has to tell GNU's two errnos apart can only get the split by
92
+ // trying both handle kinds.
93
+ export async function kindAt(root, key) {
94
+ let dir;
95
+ let name;
96
+ try {
97
+ ;
98
+ [dir, name] = await resolveParentDirHandle(root, key, { create: false });
99
+ }
100
+ catch (err) {
101
+ // A chain that stops short is "nothing here"; anything else (a
102
+ // SecurityError, an invalid state) is a real backend failure and must
103
+ // not read as an absent component.
104
+ if (!isNotFound(err) && !isTypeMismatch(err))
105
+ throw err;
106
+ return null;
107
+ }
108
+ try {
109
+ await dir.getDirectoryHandle(name, { create: false });
110
+ return 'dir';
111
+ }
112
+ catch (err) {
113
+ if (!isNotFound(err) && !isTypeMismatch(err))
114
+ throw err;
115
+ }
116
+ try {
117
+ await dir.getFileHandle(name, { create: false });
118
+ return 'file';
119
+ }
120
+ catch (err) {
121
+ if (!isNotFound(err) && !isTypeMismatch(err))
122
+ throw err;
123
+ }
124
+ return null;
125
+ }
126
+ export function isNotFound(err) {
127
+ if (err instanceof DOMException) {
128
+ return err.name === 'NotFoundError';
129
+ }
130
+ return false;
131
+ }
132
+ export function isTypeMismatch(err) {
133
+ if (err instanceof DOMException) {
134
+ return err.name === 'TypeMismatchError';
135
+ }
136
+ return false;
137
+ }
138
+ export function toWritableChunk(data) {
139
+ const copy = new Uint8Array(data.byteLength);
140
+ copy.set(data);
141
+ return new Blob([copy]);
142
+ }
143
+ export async function* iterEntries(dir) {
144
+ const iter = dir.entries();
145
+ for await (const [name, handle] of iter) {
146
+ yield [name, handle];
147
+ }
148
+ }
149
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/opfs/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PathSpec } from '@struktoai/mirage-core/types';
2
+ import type { OPFSAccessor } from '../../accessor/opfs.ts';
3
+ export declare function writeBytes(accessor: OPFSAccessor, p: PathSpec, data: Uint8Array): Promise<void>;
4
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/core/opfs/write.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,YAAY,EACtB,CAAC,EAAE,QAAQ,EACX,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,33 @@
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 { record, startOp } from '@struktoai/mirage-core/observe/context';
15
+ import { ResourceName } from '@struktoai/mirage-core/types';
16
+ import { destError, resolveFileHandle, toWritableChunk } from "./utils.js";
17
+ export async function writeBytes(accessor, p, data) {
18
+ const root = accessor.rootHandle;
19
+ const timer = startOp();
20
+ const virtual = p.mountPath;
21
+ let handle;
22
+ try {
23
+ handle = await resolveFileHandle(root, virtual, { create: true });
24
+ }
25
+ catch (err) {
26
+ throw destError(err, p);
27
+ }
28
+ const writable = await handle.createWritable();
29
+ await writable.write(toWritableChunk(data));
30
+ await writable.close();
31
+ record('write', virtual, ResourceName.OPFS, data.byteLength, timer);
32
+ }
33
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/core/opfs/write.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,MAAM,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAG3D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE1E,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAsB,EACtB,CAAW,EACX,IAAgB;IAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAA;IAChC,MAAM,KAAK,GAAG,OAAO,EAAE,CAAA;IACvB,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAA;IAC3B,IAAI,MAA4B,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACzB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAA;IAC9C,MAAM,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3C,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;IACtB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACrE,CAAC"}