@dbx-工具/共享-fs
使用一个文件系统合同,跨越内存,本地磁盘,团结目录卷,
和其他有根的存储后端。 这个浏览器安全包提供了
便携式 FileSystem 接口, BaseFileSystem路径
帮手, 缓冲, 一个内膜适配器.
快开始
import { MemoryFileSystem } from "@dbx-tools/shared-fs";
const files = new MemoryFileSystem();
await files.writeFile("note.txt", "ready");
文件系统合同包括:
- 可移植
FileSystem用于读取、写取、附加、复制、移动、目录、, 和存在操作. BaseFileSystem根接受一个或多个段。 物体为FNV-hashed, 财务报告和审定财务报表true财务报告和审定财务报表1被字符串化。 字符串被分割/,而且只有一个 组成部分 无法 成为路径组件( 分隔符, NUL / 控制) 字符,或..)是FNV-hashed,所以真实的名字像/Workspace/Users/[email protected]/My Notes幸存下来.BaseFileSystem让新的后端主要执行*At原始的 原始的 原始的 这个 提供回忆_init选项createRoot, (中文(简体) ),toBackendPath父关 变异前创建, POSIX 仅限路径, 编码, 递归目录 操作,以及附加,复制,并移动后退.- 每一个原始人都会通过一个守卫 被引向失败
mapError钩子,所以适配器没有自己的尝试/捕获,不能 返回一个非正态错误. MemoryFileSystem用于测试和参考执行的流程中适配器.baseFS.mapFileSystemError编号 :baseFS.inferFileSystemErrorCode打开@dbx-tools/shared-core错误帮助者 .posixPath将根/子转换为/- 分开的表格 (单位:千美元)posixPath.toPosix财务报告和审定财务报表posixPath.join) (中文(简体) ).- 类型
FileSystemError便携式故障处理的代码. - 每次公共文件系统操作的懒惰调试日志. 设定
LOG_LEVEL=debug。操作元数据不是按正常日志水平构建的. cache()自动变异无效的读取器.exists, (中文(简体) ),readdir,以及stat默认为缓存。 其他方法 除非明确选中。 缓存所有者曝光keys()这样 目录移动/删除操作可以使相关的祖先无效 后人条目.read, (中文(简体) ),invalidate,以及keys可能是同步的或 一个同步。 密钥使用<stable-hash>_<canonical-rooted-backend-path>。 。 。 .
选择运行时间
当多个后端必须执行相同的API时使用此软件包. 浏览器
代码可以使用合同,路径辅助器,缓存装饰器,以及
MemoryFileSystem。节点主机提供诸如
@dbx-tools/fs (英语),包括: LocalFileSystem。 。 。 .
使用缓存和后端帮助
import type { FileSystem, FileSystemCache } from "@dbx-tools/shared-fs";
import {
BaseFileSystem,
FileSystemError,
fs,
MemoryFileSystem,
posixPath,
} from "@dbx-tools/shared-fs";
const mem = new MemoryFileSystem();
await mem.writeFile("note.txt", "hi");
const cached = fs.cache(mem, myCache satisfies FileSystemCache);
await cached.stat("note.txt");
const selected = fs.cache(mem, myCache, {
operations: ["readFile", "readdir"],
filter: (operation, path) => operation === "readdir" || path.startsWith("/skills/"),
});
默认缓存 exists, (中文(简体) ), readdir,以及 stat。 。 。 . filter 接收
操作和规范化的绝对路径,所以自有软件包可以编译其
拥有 glob 或授权政策,但不在此添加路径匹配依赖 .
软件包出口
| 导出 | 作用 |
|---|---|
FileSystem | 可移植文件系统合同 |
BaseFileSystem | 摘要基础 *At 有记忆的原始人 _init |
baseFS.normalizeFileSystemRoot | 加入根段( 字符串 / FNV- hash) |
FileSystemRootInput | root 选项:一个或多个非null段 |
MemoryFileSystem | 模拟适配器(测试/参考) |
memoryFS | 它背后的模块,如果一个子类需要它的内部 |
baseFS.mapFileSystemError | 将后端失败折叠到 FileSystemError |
baseFS.inferFileSystemErrorCode | 从 HTTP 状态/ 消息符号推断代码 |
posixPath | POSIX root/join/ 规范命名空间路径的助手 |
posixPath.isHomeRelativePath | ~ 编号 : ~/... 检测, 每个适配器共享 |
posixPath.expandHome | 扩展 ~ 对一个家庭,一个可插接的结合 |
posixPath.toRelativeSegment | 脱去领先 ~ / 分隔符这样输入会在一个基数下加入 |
FileSystemError | 输入的文件系统失败 |
FileEntry 编号 : FileStat / 选项类型 | 共享数据类型 |