@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.
- package/README.md +138 -80
- package/dist/accessor/opfs.d.ts +10 -0
- package/dist/accessor/opfs.d.ts.map +1 -0
- package/dist/accessor/opfs.js +25 -0
- package/dist/accessor/opfs.js.map +1 -0
- package/dist/commands/builtin/opfs/index.d.ts +3 -0
- package/dist/commands/builtin/opfs/index.d.ts.map +1 -0
- package/dist/commands/builtin/opfs/index.js +20 -0
- package/dist/commands/builtin/opfs/index.js.map +1 -0
- package/dist/commands/builtin/opfs/io.d.ts +4 -0
- package/dist/commands/builtin/opfs/io.d.ts.map +1 -0
- package/dist/commands/builtin/opfs/io.js +56 -0
- package/dist/commands/builtin/opfs/io.js.map +1 -0
- package/dist/core/opfs/append.d.ts +4 -0
- package/dist/core/opfs/append.d.ts.map +1 -0
- package/dist/core/opfs/append.js +38 -0
- package/dist/core/opfs/append.js.map +1 -0
- package/dist/core/opfs/constants.d.ts +3 -0
- package/dist/core/opfs/constants.d.ts.map +1 -0
- package/dist/core/opfs/constants.js +16 -0
- package/dist/core/opfs/constants.js.map +1 -0
- package/dist/core/opfs/copy.d.ts +4 -0
- package/dist/core/opfs/copy.d.ts.map +1 -0
- package/dist/core/opfs/copy.js +40 -0
- package/dist/core/opfs/copy.js.map +1 -0
- package/dist/core/opfs/create.d.ts +4 -0
- package/dist/core/opfs/create.d.ts.map +1 -0
- package/dist/core/opfs/create.js +18 -0
- package/dist/core/opfs/create.js.map +1 -0
- package/dist/core/opfs/du/entries.d.ts +4 -0
- package/dist/core/opfs/du/entries.d.ts.map +1 -0
- package/dist/core/opfs/du/entries.js +56 -0
- package/dist/core/opfs/du/entries.js.map +1 -0
- package/dist/core/opfs/du/index.d.ts +3 -0
- package/dist/core/opfs/du/index.d.ts.map +1 -0
- package/dist/core/opfs/du/index.js +16 -0
- package/dist/core/opfs/du/index.js.map +1 -0
- package/dist/core/opfs/du/size.d.ts +4 -0
- package/dist/core/opfs/du/size.d.ts.map +1 -0
- package/dist/core/opfs/du/size.js +18 -0
- package/dist/core/opfs/du/size.js.map +1 -0
- package/dist/core/opfs/du/walk.d.ts +3 -0
- package/dist/core/opfs/du/walk.d.ts.map +1 -0
- package/dist/core/opfs/du/walk.js +98 -0
- package/dist/core/opfs/du/walk.js.map +1 -0
- package/dist/core/opfs/entry.d.ts +11 -0
- package/dist/core/opfs/entry.d.ts.map +1 -0
- package/dist/core/opfs/entry.js +42 -0
- package/dist/core/opfs/entry.js.map +1 -0
- package/dist/core/opfs/exists.d.ts +4 -0
- package/dist/core/opfs/exists.d.ts.map +1 -0
- package/dist/core/opfs/exists.js +64 -0
- package/dist/core/opfs/exists.js.map +1 -0
- package/dist/core/opfs/find.d.ts +21 -0
- package/dist/core/opfs/find.d.ts.map +1 -0
- package/dist/core/opfs/find.js +154 -0
- package/dist/core/opfs/find.js.map +1 -0
- package/dist/core/opfs/mkdir.d.ts +4 -0
- package/dist/core/opfs/mkdir.d.ts.map +1 -0
- package/dist/core/opfs/mkdir.js +64 -0
- package/dist/core/opfs/mkdir.js.map +1 -0
- package/dist/core/opfs/read.d.ts +22 -0
- package/dist/core/opfs/read.d.ts.map +1 -0
- package/dist/core/opfs/read.js +57 -0
- package/dist/core/opfs/read.js.map +1 -0
- package/dist/core/opfs/readdir.d.ts +4 -0
- package/dist/core/opfs/readdir.d.ts.map +1 -0
- package/dist/core/opfs/readdir.js +50 -0
- package/dist/core/opfs/readdir.js.map +1 -0
- package/dist/core/opfs/rename.d.ts +4 -0
- package/dist/core/opfs/rename.d.ts.map +1 -0
- package/dist/core/opfs/rename.js +97 -0
- package/dist/core/opfs/rename.js.map +1 -0
- package/dist/core/opfs/rm.d.ts +4 -0
- package/dist/core/opfs/rm.d.ts.map +1 -0
- package/dist/core/opfs/rm.js +40 -0
- package/dist/core/opfs/rm.js.map +1 -0
- package/dist/core/opfs/rmdir.d.ts +4 -0
- package/dist/core/opfs/rmdir.d.ts.map +1 -0
- package/dist/core/opfs/rmdir.js +48 -0
- package/dist/core/opfs/rmdir.js.map +1 -0
- package/dist/core/opfs/stat.d.ts +5 -0
- package/dist/core/opfs/stat.d.ts.map +1 -0
- package/dist/core/opfs/stat.js +88 -0
- package/dist/core/opfs/stat.js.map +1 -0
- package/dist/core/opfs/stream.d.ts +4 -0
- package/dist/core/opfs/stream.d.ts.map +1 -0
- package/dist/core/opfs/stream.js +44 -0
- package/dist/core/opfs/stream.js.map +1 -0
- package/dist/core/opfs/truncate.d.ts +4 -0
- package/dist/core/opfs/truncate.d.ts.map +1 -0
- package/dist/core/opfs/truncate.js +49 -0
- package/dist/core/opfs/truncate.js.map +1 -0
- package/dist/core/opfs/unlink.d.ts +4 -0
- package/dist/core/opfs/unlink.d.ts.map +1 -0
- package/dist/core/opfs/unlink.js +40 -0
- package/dist/core/opfs/unlink.js.map +1 -0
- package/dist/core/opfs/utils.d.ts +20 -0
- package/dist/core/opfs/utils.d.ts.map +1 -0
- package/dist/core/opfs/utils.js +149 -0
- package/dist/core/opfs/utils.js.map +1 -0
- package/dist/core/opfs/write.d.ts +4 -0
- package/dist/core/opfs/write.d.ts.map +1 -0
- package/dist/core/opfs/write.js +33 -0
- package/dist/core/opfs/write.js.map +1 -0
- package/dist/generated/wasm.d.ts +3 -0
- package/dist/generated/wasm.d.ts.map +1 -0
- package/dist/generated/wasm.js +4 -0
- package/dist/generated/wasm.js.map +1 -0
- package/dist/index.d.ts +118 -1246
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +130 -698
- package/dist/index.js.map +1 -1
- package/dist/ops/opfs/index.d.ts +3 -0
- package/dist/ops/opfs/index.d.ts.map +1 -0
- package/dist/ops/opfs/index.js +23 -0
- package/dist/ops/opfs/index.js.map +1 -0
- package/dist/resource/aliyun/aliyun.d.ts +8 -0
- package/dist/resource/aliyun/aliyun.d.ts.map +1 -0
- package/dist/resource/aliyun/aliyun.js +24 -0
- package/dist/resource/aliyun/aliyun.js.map +1 -0
- package/dist/resource/aliyun/config.d.ts +17 -0
- package/dist/resource/aliyun/config.d.ts.map +1 -0
- package/dist/resource/aliyun/config.js +24 -0
- package/dist/resource/aliyun/config.js.map +1 -0
- package/dist/resource/aliyun/prompt.d.ts +2 -0
- package/dist/resource/aliyun/prompt.d.ts.map +1 -0
- package/dist/resource/aliyun/prompt.js +19 -0
- package/dist/resource/aliyun/prompt.js.map +1 -0
- package/dist/resource/backblaze/backblaze.d.ts +8 -0
- package/dist/resource/backblaze/backblaze.d.ts.map +1 -0
- package/dist/resource/backblaze/backblaze.js +24 -0
- package/dist/resource/backblaze/backblaze.js.map +1 -0
- package/dist/resource/backblaze/config.d.ts +17 -0
- package/dist/resource/backblaze/config.d.ts.map +1 -0
- package/dist/resource/backblaze/config.js +24 -0
- package/dist/resource/backblaze/config.js.map +1 -0
- package/dist/resource/backblaze/prompt.d.ts +2 -0
- package/dist/resource/backblaze/prompt.d.ts.map +1 -0
- package/dist/resource/backblaze/prompt.js +19 -0
- package/dist/resource/backblaze/prompt.js.map +1 -0
- package/dist/resource/box/box.d.ts +34 -0
- package/dist/resource/box/box.d.ts.map +1 -0
- package/dist/resource/box/box.js +99 -0
- package/dist/resource/box/box.js.map +1 -0
- package/dist/resource/box/config.d.ts +41 -0
- package/dist/resource/box/config.d.ts.map +1 -0
- package/dist/resource/box/config.js +38 -0
- package/dist/resource/box/config.js.map +1 -0
- package/dist/resource/ceph/ceph.d.ts +8 -0
- package/dist/resource/ceph/ceph.d.ts.map +1 -0
- package/dist/resource/ceph/ceph.js +24 -0
- package/dist/resource/ceph/ceph.js.map +1 -0
- package/dist/resource/ceph/config.d.ts +16 -0
- package/dist/resource/ceph/config.d.ts.map +1 -0
- package/dist/resource/ceph/config.js +22 -0
- package/dist/resource/ceph/config.js.map +1 -0
- package/dist/resource/ceph/prompt.d.ts +2 -0
- package/dist/resource/ceph/prompt.d.ts.map +1 -0
- package/dist/resource/ceph/prompt.js +19 -0
- package/dist/resource/ceph/prompt.js.map +1 -0
- package/dist/resource/digitalocean/config.d.ts +17 -0
- package/dist/resource/digitalocean/config.d.ts.map +1 -0
- package/dist/resource/digitalocean/config.js +24 -0
- package/dist/resource/digitalocean/config.js.map +1 -0
- package/dist/resource/digitalocean/digitalocean.d.ts +8 -0
- package/dist/resource/digitalocean/digitalocean.d.ts.map +1 -0
- package/dist/resource/digitalocean/digitalocean.js +24 -0
- package/dist/resource/digitalocean/digitalocean.js.map +1 -0
- package/dist/resource/digitalocean/prompt.d.ts +2 -0
- package/dist/resource/digitalocean/prompt.d.ts.map +1 -0
- package/dist/resource/digitalocean/prompt.js +19 -0
- package/dist/resource/digitalocean/prompt.js.map +1 -0
- package/dist/resource/discord/config.d.ts +20 -0
- package/dist/resource/discord/config.d.ts.map +1 -0
- package/dist/resource/discord/config.js +32 -0
- package/dist/resource/discord/config.js.map +1 -0
- package/dist/resource/discord/discord.d.ts +33 -0
- package/dist/resource/discord/discord.d.ts.map +1 -0
- package/dist/resource/discord/discord.js +90 -0
- package/dist/resource/discord/discord.js.map +1 -0
- package/dist/resource/dropbox/config.d.ts +34 -0
- package/dist/resource/dropbox/config.d.ts.map +1 -0
- package/dist/resource/dropbox/config.js +31 -0
- package/dist/resource/dropbox/config.js.map +1 -0
- package/dist/resource/dropbox/dropbox.d.ts +34 -0
- package/dist/resource/dropbox/dropbox.d.ts.map +1 -0
- package/dist/resource/dropbox/dropbox.js +95 -0
- package/dist/resource/dropbox/dropbox.js.map +1 -0
- package/dist/resource/gcal/gcal.d.ts +32 -0
- package/dist/resource/gcal/gcal.d.ts.map +1 -0
- package/dist/resource/gcal/gcal.js +87 -0
- package/dist/resource/gcal/gcal.js.map +1 -0
- package/dist/resource/gcs/config.d.ts +16 -0
- package/dist/resource/gcs/config.d.ts.map +1 -0
- package/dist/resource/gcs/config.js +24 -0
- package/dist/resource/gcs/config.js.map +1 -0
- package/dist/resource/gcs/gcs.d.ts +8 -0
- package/dist/resource/gcs/gcs.d.ts.map +1 -0
- package/dist/resource/gcs/gcs.js +24 -0
- package/dist/resource/gcs/gcs.js.map +1 -0
- package/dist/resource/gcs/prompt.d.ts +2 -0
- package/dist/resource/gcs/prompt.d.ts.map +1 -0
- package/dist/resource/gcs/prompt.js +19 -0
- package/dist/resource/gcs/prompt.js.map +1 -0
- package/dist/resource/gdocs/gdocs.d.ts +32 -0
- package/dist/resource/gdocs/gdocs.d.ts.map +1 -0
- package/dist/resource/gdocs/gdocs.js +84 -0
- package/dist/resource/gdocs/gdocs.js.map +1 -0
- package/dist/resource/gdrive/gdrive.d.ts +34 -0
- package/dist/resource/gdrive/gdrive.d.ts.map +1 -0
- package/dist/resource/gdrive/gdrive.js +89 -0
- package/dist/resource/gdrive/gdrive.js.map +1 -0
- package/dist/resource/github/github.d.ts +38 -0
- package/dist/resource/github/github.d.ts.map +1 -0
- package/dist/resource/github/github.js +121 -0
- package/dist/resource/github/github.js.map +1 -0
- package/dist/resource/gmail/gmail.d.ts +33 -0
- package/dist/resource/gmail/gmail.d.ts.map +1 -0
- package/dist/resource/gmail/gmail.js +88 -0
- package/dist/resource/gmail/gmail.js.map +1 -0
- package/dist/resource/gsheets/gsheets.d.ts +32 -0
- package/dist/resource/gsheets/gsheets.d.ts.map +1 -0
- package/dist/resource/gsheets/gsheets.js +84 -0
- package/dist/resource/gsheets/gsheets.js.map +1 -0
- package/dist/resource/gslides/gslides.d.ts +32 -0
- package/dist/resource/gslides/gslides.d.ts.map +1 -0
- package/dist/resource/gslides/gslides.js +84 -0
- package/dist/resource/gslides/gslides.js.map +1 -0
- package/dist/resource/langfuse/config.d.ts +23 -0
- package/dist/resource/langfuse/config.d.ts.map +1 -0
- package/dist/resource/langfuse/config.js +36 -0
- package/dist/resource/langfuse/config.js.map +1 -0
- package/dist/resource/langfuse/langfuse.d.ts +31 -0
- package/dist/resource/langfuse/langfuse.d.ts.map +1 -0
- package/dist/resource/langfuse/langfuse.js +98 -0
- package/dist/resource/langfuse/langfuse.js.map +1 -0
- package/dist/resource/linear/linear.d.ts +33 -0
- package/dist/resource/linear/linear.d.ts.map +1 -0
- package/dist/resource/linear/linear.js +93 -0
- package/dist/resource/linear/linear.js.map +1 -0
- package/dist/resource/minio/config.d.ts +16 -0
- package/dist/resource/minio/config.d.ts.map +1 -0
- package/dist/resource/minio/config.js +22 -0
- package/dist/resource/minio/config.js.map +1 -0
- package/dist/resource/minio/minio.d.ts +8 -0
- package/dist/resource/minio/minio.d.ts.map +1 -0
- package/dist/resource/minio/minio.js +24 -0
- package/dist/resource/minio/minio.js.map +1 -0
- package/dist/resource/minio/prompt.d.ts +2 -0
- package/dist/resource/minio/prompt.d.ts.map +1 -0
- package/dist/resource/minio/prompt.js +19 -0
- package/dist/resource/minio/prompt.js.map +1 -0
- package/dist/resource/mongodb/http_driver.d.ts +27 -0
- package/dist/resource/mongodb/http_driver.d.ts.map +1 -0
- package/dist/resource/mongodb/http_driver.js +96 -0
- package/dist/resource/mongodb/http_driver.js.map +1 -0
- package/dist/resource/mongodb/mongodb.d.ts +41 -0
- package/dist/resource/mongodb/mongodb.d.ts.map +1 -0
- package/dist/resource/mongodb/mongodb.js +100 -0
- package/dist/resource/mongodb/mongodb.js.map +1 -0
- package/dist/resource/notion/config.d.ts +20 -0
- package/dist/resource/notion/config.d.ts.map +1 -0
- package/dist/resource/notion/config.js +32 -0
- package/dist/resource/notion/config.js.map +1 -0
- package/dist/resource/notion/notion.d.ts +32 -0
- package/dist/resource/notion/notion.d.ts.map +1 -0
- package/dist/resource/notion/notion.js +86 -0
- package/dist/resource/notion/notion.js.map +1 -0
- package/dist/resource/oci/config.d.ts +20 -0
- package/dist/resource/oci/config.d.ts.map +1 -0
- package/dist/resource/oci/config.js +30 -0
- package/dist/resource/oci/config.js.map +1 -0
- package/dist/resource/oci/oci.d.ts +8 -0
- package/dist/resource/oci/oci.d.ts.map +1 -0
- package/dist/resource/oci/oci.js +24 -0
- package/dist/resource/oci/oci.js.map +1 -0
- package/dist/resource/oci/prompt.d.ts +2 -0
- package/dist/resource/oci/prompt.d.ts.map +1 -0
- package/dist/resource/oci/prompt.js +19 -0
- package/dist/resource/oci/prompt.js.map +1 -0
- package/dist/resource/opfs/opfs.d.ts +57 -0
- package/dist/resource/opfs/opfs.d.ts.map +1 -0
- package/dist/resource/opfs/opfs.js +236 -0
- package/dist/resource/opfs/opfs.js.map +1 -0
- package/dist/resource/opfs/prompt.d.ts +2 -0
- package/dist/resource/opfs/prompt.d.ts.map +1 -0
- package/dist/resource/opfs/prompt.js +17 -0
- package/dist/resource/opfs/prompt.js.map +1 -0
- package/dist/resource/postgres/neon_driver.d.ts +8 -0
- package/dist/resource/postgres/neon_driver.d.ts.map +1 -0
- package/dist/resource/postgres/neon_driver.js +28 -0
- package/dist/resource/postgres/neon_driver.js.map +1 -0
- package/dist/resource/postgres/postgres.d.ts +40 -0
- package/dist/resource/postgres/postgres.d.ts.map +1 -0
- package/dist/resource/postgres/postgres.js +98 -0
- package/dist/resource/postgres/postgres.js.map +1 -0
- package/dist/resource/qingstor/config.d.ts +17 -0
- package/dist/resource/qingstor/config.d.ts.map +1 -0
- package/dist/resource/qingstor/config.js +24 -0
- package/dist/resource/qingstor/config.js.map +1 -0
- package/dist/resource/qingstor/prompt.d.ts +2 -0
- package/dist/resource/qingstor/prompt.d.ts.map +1 -0
- package/dist/resource/qingstor/prompt.js +19 -0
- package/dist/resource/qingstor/prompt.js.map +1 -0
- package/dist/resource/qingstor/qingstor.d.ts +8 -0
- package/dist/resource/qingstor/qingstor.d.ts.map +1 -0
- package/dist/resource/qingstor/qingstor.js +24 -0
- package/dist/resource/qingstor/qingstor.js.map +1 -0
- package/dist/resource/r2/config.d.ts +20 -0
- package/dist/resource/r2/config.d.ts.map +1 -0
- package/dist/resource/r2/config.js +26 -0
- package/dist/resource/r2/config.js.map +1 -0
- package/dist/resource/r2/prompt.d.ts +2 -0
- package/dist/resource/r2/prompt.d.ts.map +1 -0
- package/dist/resource/r2/prompt.js +19 -0
- package/dist/resource/r2/prompt.js.map +1 -0
- package/dist/resource/r2/r2.d.ts +8 -0
- package/dist/resource/r2/r2.d.ts.map +1 -0
- package/dist/resource/r2/r2.js +24 -0
- package/dist/resource/r2/r2.js.map +1 -0
- package/dist/resource/redis/redis.d.ts +17 -0
- package/dist/resource/redis/redis.d.ts.map +1 -0
- package/dist/resource/redis/redis.js +29 -0
- package/dist/resource/redis/redis.js.map +1 -0
- package/dist/resource/redis/store.d.ts +75 -0
- package/dist/resource/redis/store.d.ts.map +1 -0
- package/dist/resource/redis/store.js +378 -0
- package/dist/resource/redis/store.js.map +1 -0
- package/dist/resource/registry.d.ts +25 -0
- package/dist/resource/registry.d.ts.map +1 -0
- package/dist/resource/registry.js +274 -0
- package/dist/resource/registry.js.map +1 -0
- package/dist/resource/s3/config.d.ts +7 -0
- package/dist/resource/s3/config.d.ts.map +1 -0
- package/dist/resource/s3/config.js +26 -0
- package/dist/resource/s3/config.js.map +1 -0
- package/dist/resource/s3/s3.d.ts +53 -0
- package/dist/resource/s3/s3.d.ts.map +1 -0
- package/dist/resource/s3/s3.js +182 -0
- package/dist/resource/s3/s3.js.map +1 -0
- package/dist/resource/s3_alias.d.ts +113 -0
- package/dist/resource/s3_alias.d.ts.map +1 -0
- package/dist/resource/s3_alias.js +133 -0
- package/dist/resource/s3_alias.js.map +1 -0
- package/dist/resource/scaleway/config.d.ts +17 -0
- package/dist/resource/scaleway/config.d.ts.map +1 -0
- package/dist/resource/scaleway/config.js +24 -0
- package/dist/resource/scaleway/config.js.map +1 -0
- package/dist/resource/scaleway/prompt.d.ts +2 -0
- package/dist/resource/scaleway/prompt.d.ts.map +1 -0
- package/dist/resource/scaleway/prompt.js +19 -0
- package/dist/resource/scaleway/prompt.js.map +1 -0
- package/dist/resource/scaleway/scaleway.d.ts +8 -0
- package/dist/resource/scaleway/scaleway.d.ts.map +1 -0
- package/dist/resource/scaleway/scaleway.js +24 -0
- package/dist/resource/scaleway/scaleway.js.map +1 -0
- package/dist/resource/seaweedfs/config.d.ts +16 -0
- package/dist/resource/seaweedfs/config.d.ts.map +1 -0
- package/dist/resource/seaweedfs/config.js +22 -0
- package/dist/resource/seaweedfs/config.js.map +1 -0
- package/dist/resource/seaweedfs/prompt.d.ts +2 -0
- package/dist/resource/seaweedfs/prompt.d.ts.map +1 -0
- package/dist/resource/seaweedfs/prompt.js +19 -0
- package/dist/resource/seaweedfs/prompt.js.map +1 -0
- package/dist/resource/seaweedfs/seaweedfs.d.ts +8 -0
- package/dist/resource/seaweedfs/seaweedfs.d.ts.map +1 -0
- package/dist/resource/seaweedfs/seaweedfs.js +24 -0
- package/dist/resource/seaweedfs/seaweedfs.js.map +1 -0
- package/dist/resource/slack/config.d.ts +20 -0
- package/dist/resource/slack/config.d.ts.map +1 -0
- package/dist/resource/slack/config.js +32 -0
- package/dist/resource/slack/config.js.map +1 -0
- package/dist/resource/slack/slack.d.ts +33 -0
- package/dist/resource/slack/slack.d.ts.map +1 -0
- package/dist/resource/slack/slack.js +91 -0
- package/dist/resource/slack/slack.js.map +1 -0
- package/dist/resource/supabase/config.d.ts +20 -0
- package/dist/resource/supabase/config.d.ts.map +1 -0
- package/dist/resource/supabase/config.js +26 -0
- package/dist/resource/supabase/config.js.map +1 -0
- package/dist/resource/supabase/prompt.d.ts +2 -0
- package/dist/resource/supabase/prompt.d.ts.map +1 -0
- package/dist/resource/supabase/prompt.js +19 -0
- package/dist/resource/supabase/prompt.js.map +1 -0
- package/dist/resource/supabase/supabase.d.ts +8 -0
- package/dist/resource/supabase/supabase.d.ts.map +1 -0
- package/dist/resource/supabase/supabase.js +24 -0
- package/dist/resource/supabase/supabase.js.map +1 -0
- package/dist/resource/tencent/config.d.ts +17 -0
- package/dist/resource/tencent/config.d.ts.map +1 -0
- package/dist/resource/tencent/config.js +24 -0
- package/dist/resource/tencent/config.js.map +1 -0
- package/dist/resource/tencent/prompt.d.ts +2 -0
- package/dist/resource/tencent/prompt.d.ts.map +1 -0
- package/dist/resource/tencent/prompt.js +19 -0
- package/dist/resource/tencent/prompt.js.map +1 -0
- package/dist/resource/tencent/tencent.d.ts +8 -0
- package/dist/resource/tencent/tencent.d.ts.map +1 -0
- package/dist/resource/tencent/tencent.js +24 -0
- package/dist/resource/tencent/tencent.js.map +1 -0
- package/dist/resource/trello/config.d.ts +22 -0
- package/dist/resource/trello/config.d.ts.map +1 -0
- package/dist/resource/trello/config.js +35 -0
- package/dist/resource/trello/config.js.map +1 -0
- package/dist/resource/trello/trello.d.ts +32 -0
- package/dist/resource/trello/trello.d.ts.map +1 -0
- package/dist/resource/trello/trello.js +94 -0
- package/dist/resource/trello/trello.js.map +1 -0
- package/dist/resource/wasabi/config.d.ts +17 -0
- package/dist/resource/wasabi/config.d.ts.map +1 -0
- package/dist/resource/wasabi/config.js +29 -0
- package/dist/resource/wasabi/config.js.map +1 -0
- package/dist/resource/wasabi/prompt.d.ts +2 -0
- package/dist/resource/wasabi/prompt.d.ts.map +1 -0
- package/dist/resource/wasabi/prompt.js +19 -0
- package/dist/resource/wasabi/prompt.js.map +1 -0
- package/dist/resource/wasabi/wasabi.d.ts +8 -0
- package/dist/resource/wasabi/wasabi.d.ts.map +1 -0
- package/dist/resource/wasabi/wasabi.js +24 -0
- package/dist/resource/wasabi/wasabi.js.map +1 -0
- package/dist/test-utils.d.ts +37 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/test-utils.js +518 -0
- package/dist/test-utils.js.map +1 -0
- package/dist/workspace.d.ts +10 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +62 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +13 -6
- package/dist/aliyun-DR6KT3H6.js +0 -8
- package/dist/aliyun-DR6KT3H6.js.map +0 -1
- package/dist/backblaze-XCLZXTES.js +0 -8
- package/dist/backblaze-XCLZXTES.js.map +0 -1
- package/dist/box-XBCSU3AA.js +0 -8
- package/dist/box-XBCSU3AA.js.map +0 -1
- package/dist/ceph-F5S2NMTO.js +0 -8
- package/dist/ceph-F5S2NMTO.js.map +0 -1
- package/dist/chunk-2J35WXX5.js +0 -28
- package/dist/chunk-2J35WXX5.js.map +0 -1
- package/dist/chunk-2WNXK742.js +0 -89
- package/dist/chunk-2WNXK742.js.map +0 -1
- package/dist/chunk-2WSKXBSV.js +0 -139
- package/dist/chunk-2WSKXBSV.js.map +0 -1
- package/dist/chunk-37WKCB2E.js +0 -95
- package/dist/chunk-37WKCB2E.js.map +0 -1
- package/dist/chunk-3IYCVC7W.js +0 -96
- package/dist/chunk-3IYCVC7W.js.map +0 -1
- package/dist/chunk-46HNNKFR.js +0 -95
- package/dist/chunk-46HNNKFR.js.map +0 -1
- package/dist/chunk-4IF4TGAI.js +0 -11
- package/dist/chunk-4IF4TGAI.js.map +0 -1
- package/dist/chunk-5OZJMTYW.js +0 -113
- package/dist/chunk-5OZJMTYW.js.map +0 -1
- package/dist/chunk-5UM6EBVW.js +0 -108
- package/dist/chunk-5UM6EBVW.js.map +0 -1
- package/dist/chunk-6HRSCX2U.js +0 -98
- package/dist/chunk-6HRSCX2U.js.map +0 -1
- package/dist/chunk-7HWQAYXR.js +0 -85
- package/dist/chunk-7HWQAYXR.js.map +0 -1
- package/dist/chunk-AUZNQ7EI.js +0 -85
- package/dist/chunk-AUZNQ7EI.js.map +0 -1
- package/dist/chunk-BGA2F226.js +0 -182
- package/dist/chunk-BGA2F226.js.map +0 -1
- package/dist/chunk-BV372CUO.js +0 -90
- package/dist/chunk-BV372CUO.js.map +0 -1
- package/dist/chunk-C4THTILY.js +0 -95
- package/dist/chunk-C4THTILY.js.map +0 -1
- package/dist/chunk-D4MEOKNQ.js +0 -95
- package/dist/chunk-D4MEOKNQ.js.map +0 -1
- package/dist/chunk-D4RAMWYH.js +0 -88
- package/dist/chunk-D4RAMWYH.js.map +0 -1
- package/dist/chunk-EHIT6WCY.js +0 -95
- package/dist/chunk-EHIT6WCY.js.map +0 -1
- package/dist/chunk-EN6TZYT2.js +0 -95
- package/dist/chunk-EN6TZYT2.js.map +0 -1
- package/dist/chunk-FTDVV7EQ.js +0 -85
- package/dist/chunk-FTDVV7EQ.js.map +0 -1
- package/dist/chunk-G67Q2Z6I.js +0 -95
- package/dist/chunk-G67Q2Z6I.js.map +0 -1
- package/dist/chunk-GM2QMJAY.js +0 -85
- package/dist/chunk-GM2QMJAY.js.map +0 -1
- package/dist/chunk-HRWLHJX2.js +0 -84
- package/dist/chunk-HRWLHJX2.js.map +0 -1
- package/dist/chunk-INEXV2PN.js +0 -91
- package/dist/chunk-INEXV2PN.js.map +0 -1
- package/dist/chunk-IZMKMD3O.js +0 -11
- package/dist/chunk-IZMKMD3O.js.map +0 -1
- package/dist/chunk-JUVMJ5GI.js +0 -85
- package/dist/chunk-JUVMJ5GI.js.map +0 -1
- package/dist/chunk-KL2VFYUV.js +0 -159
- package/dist/chunk-KL2VFYUV.js.map +0 -1
- package/dist/chunk-L64GRKOD.js +0 -38
- package/dist/chunk-L64GRKOD.js.map +0 -1
- package/dist/chunk-LPDLPRPS.js +0 -11
- package/dist/chunk-LPDLPRPS.js.map +0 -1
- package/dist/chunk-M2UF2JHJ.js +0 -11
- package/dist/chunk-M2UF2JHJ.js.map +0 -1
- package/dist/chunk-NVHPJ5CV.js +0 -109
- package/dist/chunk-NVHPJ5CV.js.map +0 -1
- package/dist/chunk-OSTDTTWI.js +0 -35
- package/dist/chunk-OSTDTTWI.js.map +0 -1
- package/dist/chunk-PQCRGTSA.js +0 -85
- package/dist/chunk-PQCRGTSA.js.map +0 -1
- package/dist/chunk-QE7QNA45.js +0 -114
- package/dist/chunk-QE7QNA45.js.map +0 -1
- package/dist/chunk-QG2NUNCY.js +0 -95
- package/dist/chunk-QG2NUNCY.js.map +0 -1
- package/dist/chunk-UFHBDBZD.js +0 -1212
- package/dist/chunk-UFHBDBZD.js.map +0 -1
- package/dist/chunk-UY22T4AC.js +0 -112
- package/dist/chunk-UY22T4AC.js.map +0 -1
- package/dist/chunk-XJBC3OYX.js +0 -11
- package/dist/chunk-XJBC3OYX.js.map +0 -1
- package/dist/chunk-Y6DYUK6J.js +0 -85
- package/dist/chunk-Y6DYUK6J.js.map +0 -1
- package/dist/chunk-YOCTIHQZ.js +0 -89
- package/dist/chunk-YOCTIHQZ.js.map +0 -1
- package/dist/chunk-ZDJPUXYH.js +0 -101
- package/dist/chunk-ZDJPUXYH.js.map +0 -1
- package/dist/chunk-ZKCOSE3R.js +0 -90
- package/dist/chunk-ZKCOSE3R.js.map +0 -1
- package/dist/chunk-ZTHVEXIV.js +0 -11
- package/dist/chunk-ZTHVEXIV.js.map +0 -1
- package/dist/config-2Y6LZKLV.js +0 -9
- package/dist/config-2Y6LZKLV.js.map +0 -1
- package/dist/config-4GSOMUMF.js +0 -9
- package/dist/config-4GSOMUMF.js.map +0 -1
- package/dist/config-5YBUWFUP.js +0 -9
- package/dist/config-5YBUWFUP.js.map +0 -1
- package/dist/config-DE5OZ4I7.js +0 -9
- package/dist/config-DE5OZ4I7.js.map +0 -1
- package/dist/config-ELDOFRJW.js +0 -9
- package/dist/config-ELDOFRJW.js.map +0 -1
- package/dist/config-FPM3LAW7.js +0 -9
- package/dist/config-FPM3LAW7.js.map +0 -1
- package/dist/config-JY557MA6.js +0 -9
- package/dist/config-JY557MA6.js.map +0 -1
- package/dist/config-UU27ALAA.js +0 -9
- package/dist/config-UU27ALAA.js.map +0 -1
- package/dist/config-WRACCRPN.js +0 -9
- package/dist/config-WRACCRPN.js.map +0 -1
- package/dist/digitalocean-QDHTRS2W.js +0 -8
- package/dist/digitalocean-QDHTRS2W.js.map +0 -1
- package/dist/discord-ERUI7OAQ.js +0 -7
- package/dist/discord-ERUI7OAQ.js.map +0 -1
- package/dist/dropbox-3U6D4HLE.js +0 -8
- package/dist/dropbox-3U6D4HLE.js.map +0 -1
- package/dist/gcal-MTBSDG34.js +0 -8
- package/dist/gcal-MTBSDG34.js.map +0 -1
- package/dist/gcs-KNGRBBET.js +0 -8
- package/dist/gcs-KNGRBBET.js.map +0 -1
- package/dist/gdocs-RUIOIRKP.js +0 -8
- package/dist/gdocs-RUIOIRKP.js.map +0 -1
- package/dist/gdrive-5JB7ZKEP.js +0 -8
- package/dist/gdrive-5JB7ZKEP.js.map +0 -1
- package/dist/github-CIXBFBVO.js +0 -7
- package/dist/github-CIXBFBVO.js.map +0 -1
- package/dist/github_ci-HR6YOYAO.js +0 -8
- package/dist/github_ci-HR6YOYAO.js.map +0 -1
- package/dist/gmail-JHGWTQU5.js +0 -8
- package/dist/gmail-JHGWTQU5.js.map +0 -1
- package/dist/gsheets-N54JO2RS.js +0 -8
- package/dist/gsheets-N54JO2RS.js.map +0 -1
- package/dist/gslides-B4VMNLMB.js +0 -8
- package/dist/gslides-B4VMNLMB.js.map +0 -1
- package/dist/langfuse-HEUJGDOC.js +0 -7
- package/dist/langfuse-HEUJGDOC.js.map +0 -1
- package/dist/linear-J4QQ3CA6.js +0 -7
- package/dist/linear-J4QQ3CA6.js.map +0 -1
- package/dist/minio-BXWHJ6K5.js +0 -8
- package/dist/minio-BXWHJ6K5.js.map +0 -1
- package/dist/mongodb-YZP643ZU.js +0 -7
- package/dist/mongodb-YZP643ZU.js.map +0 -1
- package/dist/notion-I5S5SRLO.js +0 -7
- package/dist/notion-I5S5SRLO.js.map +0 -1
- package/dist/oci-XOPKH4AE.js +0 -8
- package/dist/oci-XOPKH4AE.js.map +0 -1
- package/dist/opfs-36QO72Y5.js +0 -7
- package/dist/opfs-36QO72Y5.js.map +0 -1
- package/dist/postgres-HPOMN2AR.js +0 -7
- package/dist/postgres-HPOMN2AR.js.map +0 -1
- package/dist/qingstor-JKAHLK62.js +0 -8
- package/dist/qingstor-JKAHLK62.js.map +0 -1
- package/dist/r2-L3QXQ76M.js +0 -8
- package/dist/r2-L3QXQ76M.js.map +0 -1
- package/dist/s3-LRZJPGHK.js +0 -9
- package/dist/s3-LRZJPGHK.js.map +0 -1
- package/dist/scaleway-CGNDYNKS.js +0 -8
- package/dist/scaleway-CGNDYNKS.js.map +0 -1
- package/dist/seaweedfs-BSQWCBIR.js +0 -8
- package/dist/seaweedfs-BSQWCBIR.js.map +0 -1
- package/dist/slack-62ECSENR.js +0 -7
- package/dist/slack-62ECSENR.js.map +0 -1
- package/dist/supabase-J66NXWAF.js +0 -8
- package/dist/supabase-J66NXWAF.js.map +0 -1
- package/dist/tencent-AC667LV3.js +0 -8
- package/dist/tencent-AC667LV3.js.map +0 -1
- package/dist/trello-SUPG6VDF.js +0 -7
- package/dist/trello-SUPG6VDF.js.map +0 -1
- package/dist/wasabi-5KKPW6LH.js +0 -8
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|