fix: symlink 探测有界并发 + UNC 标记平台中性化(回应 CR/自审)

- fs-tree: symlink 目标 stat 从串行改为 32 并发工作池(readdir 流关闭后统一
  探测),symlink 密集/网络目标目录不再累加延迟;顺序与分类语义不变
- html-route: 解码不再重建反斜杠 UNC,统一重建为平台中性的 //server/share/...
  前斜杠形态(win32/POSIX 均正确 resolve),从而删除 windowsPathStyle 平台信号
  与 client isWindowsStylePath 助手;同时解决无 cwd 时正斜杠 UNC 的往返盲点
- 测试/文档同步;移除未使用的 isPosix
This commit is contained in:
Menghuan1918
2026-08-16 23:35:57 +08:00
parent 9652bbda59
commit be95787c00
10 changed files with 104 additions and 114 deletions
+2 -13
View File
@@ -5,25 +5,14 @@
* to '/' before comparison.
*
* This module is dependency-free (no node:path in the client bundle): the
* host is the authority for path semantics, so these mirrors deliberately
* accept a SUPERSET of absolute forms — anything a Windows host would emit
* host is the authority for path semantics, so this mirror deliberately
* accepts a SUPERSET of absolute forms — anything a Windows host would emit
* (drive letters, UNC) plus POSIX roots. A form the host would reject
* (e.g. a backslash UNC path on a POSIX host) passes through here and then
* fails loudly in the host's requireAbsolute instead of being silently
* joined onto the cwd.
*/
/**
* Whether a path looks like it belongs to a Windows-style session: a drive
* letter or any backslash (UNC shares, and drive paths in general).
* Used as the platform signal for the html route's UNC marker — the client
* cannot read process.platform (the browser OS may differ from the host),
* but the session cwd shape is authoritative.
*/
export function isWindowsStylePath(path: string): boolean {
return path.includes('\\') || /^[A-Za-z]:[\\/]/.test(path)
}
/**
* Mirror of the host's absolute-path notion (see fs-tree.requireAbsolute):
* POSIX roots, Windows drive letters, and Windows UNC network shares in