description: "浏览器安全的 Workspace 路径辅助函数:拼接相对路径、缩写 POSIX 主目录并生成显示标题。"
English | 中文
供 Workspace 相关客户端和控制器包共享、可在浏览器使用的路径辅助函数。该包负责拼接 Workspace 相对路径、缩写用于展示的 POSIX 主目录、从 POSIX 或 Windows 路径提取 Workspace 标题、把路径拆成目录部分与末段供展示,并拥有在 Sidebar 与资源模型之间命名工作区文件的 dsh-resource://file/… 地址语法。relativizeToCwd 在显示时省略工作区前缀,并保留该目录以外的路径。它不提供 Cordis service,也不持有运行时状态。
资源地址 = dsh-resource://<type>/…,type(URI 的 host)即资源协议键(file,或插件在 ResourceProtocolMap 中声明的键);其他 scheme 属导航协议,另行定义。dsh-resource://file/session/<sessionId>/<path> 指定授权 Host 读取的 Session,以及工作区相对或绝对路径。前导斜杠保留在路径中:/etc/hosts 对应 dsh-resource://file/session/s//etc/hosts,Windows 盘符对应 dsh-resource://file/session/s/C:/x/y.txt,UNC 对应 dsh-resource://file/session/s///server/share/y.txt。Host 解析路径并执行访问检查。absolute/<path> 形式仍可解析,但不携带授权 Session,因此 file 提供方不能读取,Preview 也不认领;两者均不借用当前或 Tab Session。语法住在 src/file-address.ts;路径辅助函数留在 src/index.ts 并再导出它。
sessionFileAddress(sessionId, path) 将 \ 归一为 /,去掉前导 ./,但保留前导 / 字符。id 和每个路径段都做组件编码,: 保持字面。fileAddressFor(sessionId, cwd, path) 始终构造 Session 地址:cwd 内的路径转为相对路径;其他绝对路径(包括 cwd 未知时)仍作为该 Session 地址内的绝对路径。absoluteFileAddress(absolutePath) 只构造不带 Session 的形式。parseFileAddress(address) 检查精确的文件地址前缀、忽略查询与片段后缀、逐段解码,并为 Session 地址返回 { scope, sessionId, path },为不带 Session 的形式返回 { scope, path }。其他 type 或 scheme、未知作用域、缺 id 或路径,或错误转义都返回 undefined。
. 与 .. 路径段。运行时不变式: 不发布伴生入口。这个工具不持有可变运行时关系。