{"_id":"@buckeyestudio/toh-home-paths","name":"@buckeyestudio/toh-home-paths","dist-tags":{"next":"0.1.1-rc.2","latest":"0.1.1-rc.2"},"versions":{"0.1.1-rc.2":{"name":"@buckeyestudio/toh-home-paths","description":"Shared filesystem path helpers for the TheOpen Harness","version":"0.1.1-rc.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/util/home-paths"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","author":{"name":"buckeyestudio"},"peerDependencies":{"@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1"},"devDependencies":{"@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1"},"_id":"@buckeyestudio/toh-home-paths@0.1.1-rc.2","bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","_integrity":"sha512-MINA7s2uPUL+UugEMpm4SK+xK0yKhlaUrkNswOn3nlWdb0C/SDvZkjV1XP8tYgPl85Ryx6wm7MH/oecfInuEhw==","_resolved":"/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-home-paths-0.1.1-rc.2.tgz","_from":"file:/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-home-paths-0.1.1-rc.2.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-MINA7s2uPUL+UugEMpm4SK+xK0yKhlaUrkNswOn3nlWdb0C/SDvZkjV1XP8tYgPl85Ryx6wm7MH/oecfInuEhw==","shasum":"2e92f79b144234ab365b33ad98097e0d67b785fb","tarball":"https://registry.npmjs.org/@buckeyestudio/toh-home-paths/-/toh-home-paths-0.1.1-rc.2.tgz","fileCount":9,"unpackedSize":16019,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB3iffzCh+HjlUcD3MIRa20+TYul31fLOcefk+HVOZ84AiAy9nsfaS5HpCWCnxwV691R0MGDOwt+Wpgp0o1J4xndnQ=="}]},"_npmUser":{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"},"directories":{},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toh-home-paths_0.1.1-rc.2_1787488965090_0.7061399915017437"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T12:42:44.895Z","0.1.1-rc.2":"2026-08-23T12:42:45.227Z","modified":"2026-08-23T12:42:45.451Z"},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"description":"Shared filesystem path helpers for the TheOpen Harness","homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/util/home-paths"},"author":{"name":"buckeyestudio"},"bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"license":"MIT","readme":"# toh-home-paths\n\n[English](README.md) | 中文\n\nTheOpen Harness 用户数据的共享文件系统路径辅助工具。\n\n## TOH 主目录\n\n`resolveDshHome()` 解析 TheOpen Harness 的单根主目录。优先级从高到低为：显式配置的路径、`$TOH_HOME`、`~/.toh`。harness 将所有用户数据保存在同一根目录下。\n\n`tohHomePath(...segments)` 使用 Node 的平台路径规则，将子路径段拼接到解析后的主目录下。不传入任何路径段时，返回主目录本身。\n\n`tohHomeDisplay()` 以符号方式表示当前根目录，用于面向用户的路径：默认主目录表示为 `~/.toh`，任何已配置的主目录表示为 `$TOH_HOME`。它绝不会泄露机器的绝对路径。\n\n`TOH_HOME_DIR_NAME` 定义默认用户数据目录名：`.toh`。\n\n`defaultDshHome()` 使用 Node 的平台路径规则，将操作系统主目录与 `.toh` 拼接，并返回默认 TheOpen Harness 主目录。\n\n`expandHomePath()` 使用操作系统主目录展开 `~`、`~/...` 和 Windows 风格的 `~\\...` 前缀。它会保留非波浪号路径和 `~user/...` 原样不变。\n\n## 监听路径\n\n`canonicalizeWatchPath()` 为原生文件系统 watcher 提供一种稳定的目标路径表示。它通过 `fs.realpath()` 解析层级最深的现有祖先路径，再拼回缺失的后缀，因此即使文件或目录尚未创建也仍可监听。尤其是，Windows 8.3 别名不能与原生 watcher 后端发出的长路径混用。\n\n该包刻意保持规模小且不依赖 harness，以便产品包共享用户数据路径约定，而不必彼此依赖。\n\n## 已知限制与暂缓事项\n\n- **展开范围刻意保持狭窄**：只有单独的 `~`、`~/...` 和 `~\\...` 使用当前操作系统主目录；`~alice/...` 等指定用户的形式、环境变量和 shell 表达式保持不变。\n- **规范化会读取，但绝不修改**：`canonicalizeWatchPath()` 会执行 `realpath` 探测，并传播除路径不存在以外的错误；调用方仍负责目录创建、权限，以及对结果路径应用信任策略。\n","readmeFilename":"README.zh.md","_rev":"1-56de9b8c4df6e4f7585980c337055091"}