@alwith/module-fs (英语)
一个运输独立文件系统合同和操作协调员。 核心没有反应,DOM或Tauri依赖. 适配器执行权限;JavaScript能力只描述UI可用的动作.
使用
import { createFileSystem } from "@alwith/module-fs"
import { createMemoryAdapter } from "@alwith/module-fs/testing"
const fs = createFileSystem({
adapter: createMemoryAdapter({ "/project/readme.md": "# Hello" }),
reportError: error => console.error(error)
})
const stop = fs.subscribe(event => console.log(event))
await fs.writeFile("/project/readme.md", new TextEncoder().encode("# Changed"), { mode: "replace" })
stop()
合同
FsAdapter执行stat、字节读取/写入、目录列表、mkdir、移动、复制和删除.stat返回为无效,仅用于缺失的路径;所有其他错误都传播.WriteOptions.mode区分只创建、替换和上升.expectedVersion拒绝 Stale 储蓄。 适应者必须执行两者,而不是将其作为咨询.createFileSystem序列化变异和transaction一次打电话 交易接收到一个非排队写作机;从不从交易或守护内部调用外服的变异方法.beforeMutation可取消移动/删除/复制/mkdir。 编辑器控制器使用它来保护未保存被删除的文档. 取消拒绝使用MutationCancelledError。警卫可以返回{ allow, release }以持有操作租赁,直到承诺/失败; 释放总是运行,不能改变磁盘结果.subscribe报告已采取行动。 土著/观察观测有单独的source: "watch"; 它们是无效的,而不是证明一个特定的UI操作.reportError绝不能扔出.watch是可选的。 主机拥有并发布了返回的订阅. 无法通过导入软件包开始投票或网络访问.- 路径帮助者理解POSIX,Windows驱动器和UNC根.
joinPath接受一个文件名并拒绝翻转。 帮助者是名词化的;适配者仍然必须执行犬科/同名链接边界. 路径身份对案例有敏感认识;本土适配器必须提供一致的犬科特征.
土著分布
本地访问是 Tauri 插件 alwith-fs (crates.io);执行是本套件中运出的一个私人图书馆 native/,由应用程序出演.
.plugin(alwith_fs::init(alwith_fs::Config { development_directory, ..Default::default() }))
赠款 alwith-fs:default (开放、清单、统计、阅读、观察),并视需要, alwith-fs:workspace-write, (中文(简体) ), alwith-fs:patches, (中文(简体) ), alwith-fs:git (分支、文件状态、上游同步摘要、最近输入和更改的已打开的工作空间文件、在库中用 gix 读取、没有系统 git), alwith-fs:exec (单位:千美元)workspace_exec_bash: 用用户的登录 shell 在打开的工作空间中运行一个打入的 shell 命令, 5分钟后被杀死; 不是沙盒)和 alwith-fs:capability 内 src-tauri/capabilities/*.json。 。 。 . @alwith/module-fs/commands 保存生成的已键入命令和 workspace:change 事件; @alwith/module-fs/tauri 构建一个 FsAdapter 以他们的根部发誓 commands.workspaceOpen。 。 。 .
同步文件的应用程序通过 a Coordinator 内 Config:每个突变,都有其犬形文字和去除的路径,一次跑入其中;读取从不等. rust 代码使用 FileSystem, (中文(简体) ), watch, (中文(简体) ), validate_patch_path, (中文(简体) ), apply_patches,吉特读者 current_branch, (中文(简体) ), file_statuses, (中文(简体) ), sync_status, (中文(简体) ), recent_commits 财务报告和审定财务报表 changed_files (堵塞)和 exec_bash (async),它也在之后没有网页视图的情况下工作 alwith_native_client::configure_host 或者说 ALWITH_NATIVE_DIRECTORY,并通过 app.state::<Workspace>() (单位:千美元)open, (中文(简体) ), root, (中文(简体) ), lock) (中文(简体) ).
库限读出/写出16个米B,保存二进制字节,检查版本,使用同名标题的临时写作,拒绝终端符号链接的根突变和突变,并拒绝现有的副本/移动目的地. 在暴露目的地之前会制作递归拷贝。 补丁被完全验证(路径,同义链接, .git,hunks,大小)在第一次更改之前,与Git一起应用而未触及索引. 版本检查并不能提供针对任意外部作者的全OS交易. 观察错误被明确报告.
开发
从寄存器根 : bun run --cwd packages/fs build 财务报告和审定财务报表 bun test packages/fs/src; 内 rust/, (中文(简体) ), cargo test (约束当前; UPDATE_BINDINGS=1 并随着图书馆的建成, ALWITH_NATIVE_DIRECTORY=<target/debug> cargo test -- --ignored。出版授权是分开的.