@openclaw/fs-safe 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (644) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/absolute-path.d.ts +0 -1
  3. package/dist/advanced.d.ts +0 -1
  4. package/dist/archive-crc32.d.ts +0 -1
  5. package/dist/archive-deadline.d.ts +0 -1
  6. package/dist/archive-durability.d.ts +0 -1
  7. package/dist/archive-entry.d.ts +0 -1
  8. package/dist/archive-errors.d.ts +0 -1
  9. package/dist/archive-gzip-tail.d.ts +0 -1
  10. package/dist/archive-input.d.ts +0 -1
  11. package/dist/archive-kind.d.ts +0 -1
  12. package/dist/archive-limits.d.ts +0 -1
  13. package/dist/archive-merge.d.ts +2 -4
  14. package/dist/archive-merge.js +14 -4
  15. package/dist/archive-native.d.ts +3 -15
  16. package/dist/archive-native.js +46 -71
  17. package/dist/archive-options.d.ts +7 -2
  18. package/dist/archive-parser-errors.d.ts +0 -1
  19. package/dist/archive-plan.d.ts +10 -1
  20. package/dist/archive-plan.js +31 -21
  21. package/dist/archive-policy.d.ts +0 -1
  22. package/dist/archive-read.d.ts +0 -1
  23. package/dist/archive-staging.d.ts +0 -1
  24. package/dist/archive-tar-inspect.d.ts +0 -1
  25. package/dist/archive-tar-stream.d.ts +0 -1
  26. package/dist/archive-tar-wasm.d.ts +0 -1
  27. package/dist/archive-tar.d.ts +0 -1
  28. package/dist/archive-zip-admission.d.ts +0 -1
  29. package/dist/archive-zip-count.d.ts +0 -1
  30. package/dist/archive-zip-directory.d.ts +0 -1
  31. package/dist/archive-zip-entry.d.ts +0 -1
  32. package/dist/archive-zip-integrity.d.ts +0 -1
  33. package/dist/archive-zip-loader.d.ts +0 -1
  34. package/dist/archive-zip-manifest.d.ts +0 -1
  35. package/dist/archive-zip-names.d.ts +0 -1
  36. package/dist/archive-zip-preflight.d.ts +0 -1
  37. package/dist/archive.d.ts +0 -1
  38. package/dist/archive.js +87 -164
  39. package/dist/async-lock.d.ts +0 -1
  40. package/dist/atomic.d.ts +0 -1
  41. package/dist/bounded-read-stream.d.ts +0 -1
  42. package/dist/bounded-read.d.ts +0 -1
  43. package/dist/byte-budget.d.ts +0 -1
  44. package/dist/byte-view.d.ts +0 -1
  45. package/dist/clone-metadata.d.ts +0 -1
  46. package/dist/config.d.ts +0 -1
  47. package/dist/containment.d.ts +0 -1
  48. package/dist/copy-file-input.d.ts +0 -1
  49. package/dist/copy-policy.d.ts +0 -1
  50. package/dist/copy-publication.d.ts +0 -1
  51. package/dist/copy-tree-portable.d.ts +0 -1
  52. package/dist/copy-tree-portable.js +9 -6
  53. package/dist/copy.d.ts +0 -1
  54. package/dist/copy.js +5 -5
  55. package/dist/create-directory.d.ts +0 -2
  56. package/dist/create-directory.js +3 -22
  57. package/dist/create-file-async.d.ts +0 -1
  58. package/dist/create-file.d.ts +0 -1
  59. package/dist/create-file.js +3 -14
  60. package/dist/create-owned-file.d.ts +0 -1
  61. package/dist/create.d.ts +1 -2
  62. package/dist/create.js +1 -1
  63. package/dist/creation-darwin.d.ts +0 -1
  64. package/dist/creation-file-state.d.ts +0 -1
  65. package/dist/creation-path.d.ts +2 -1
  66. package/dist/creation-path.js +12 -0
  67. package/dist/creation-permissions.d.ts +0 -1
  68. package/dist/creation-permissions.js +28 -38
  69. package/dist/deny-mutations.d.ts +2 -3
  70. package/dist/deny-mutations.js +55 -35
  71. package/dist/device-path.d.ts +0 -1
  72. package/dist/directory-durability.d.ts +0 -1
  73. package/dist/directory-entry-path.d.ts +0 -1
  74. package/dist/directory-guard.d.ts +2 -7
  75. package/dist/directory-guard.js +25 -56
  76. package/dist/directory-mode-node.d.ts +0 -1
  77. package/dist/directory-mode-owner.d.ts +0 -1
  78. package/dist/directory-receipt.d.ts +0 -1
  79. package/dist/durability.d.ts +0 -1
  80. package/dist/effective-uid.d.ts +0 -1
  81. package/dist/error-detail.d.ts +0 -1
  82. package/dist/errors.d.ts +0 -1
  83. package/dist/file-cleanup.d.ts +0 -1
  84. package/dist/file-contents.d.ts +0 -1
  85. package/dist/file-handle-transfer.d.ts +0 -1
  86. package/dist/file-hash.d.ts +0 -1
  87. package/dist/file-hash.js +170 -66
  88. package/dist/file-identity.d.ts +0 -1
  89. package/dist/file-lock-sync-acquisition.d.ts +22 -0
  90. package/dist/file-lock-sync-acquisition.js +98 -0
  91. package/dist/file-lock-sync-admission.d.ts +0 -2
  92. package/dist/file-lock-sync-admission.js +9 -48
  93. package/dist/file-lock-sync-root-acquire.d.ts +0 -1
  94. package/dist/file-lock-sync-root-acquire.js +32 -98
  95. package/dist/file-lock-sync-root-arbitration.d.ts +0 -1
  96. package/dist/file-lock-sync-root-held.d.ts +0 -1
  97. package/dist/file-lock-sync-root-io.d.ts +0 -1
  98. package/dist/file-lock-sync-root-mutation.d.ts +4 -5
  99. package/dist/file-lock-sync-root-mutation.js +7 -9
  100. package/dist/file-lock-sync-root-options.d.ts +0 -1
  101. package/dist/file-lock-sync-root-registration.d.ts +0 -1
  102. package/dist/file-lock-sync-root.d.ts +1 -2
  103. package/dist/file-lock-sync-root.js +14 -87
  104. package/dist/file-lock-sync-stale-admission.d.ts +2 -7
  105. package/dist/file-lock-sync-stale-admission.js +21 -23
  106. package/dist/file-lock-sync.d.ts +0 -1
  107. package/dist/file-lock-sync.js +38 -117
  108. package/dist/file-lock.d.ts +0 -1
  109. package/dist/file-observation.d.ts +0 -1
  110. package/dist/file-store-boundary.d.ts +0 -2
  111. package/dist/file-store-boundary.js +6 -26
  112. package/dist/file-store-copy-source.d.ts +1 -2
  113. package/dist/file-store-copy-source.js +1 -1
  114. package/dist/file-store-limit.d.ts +1 -2
  115. package/dist/file-store-limit.js +2 -3
  116. package/dist/file-store-path.d.ts +0 -1
  117. package/dist/file-store-prune.d.ts +0 -1
  118. package/dist/file-store-sync-directory.d.ts +0 -1
  119. package/dist/file-store-sync-directory.js +194 -231
  120. package/dist/file-store-sync-write.d.ts +0 -1
  121. package/dist/file-store-sync-write.js +16 -26
  122. package/dist/file-store.d.ts +0 -1
  123. package/dist/file-store.js +3 -4
  124. package/dist/file-sync.d.ts +0 -1
  125. package/dist/filename.d.ts +0 -1
  126. package/dist/filename.js +1 -7
  127. package/dist/fs.d.ts +0 -1
  128. package/dist/guarded-mkdir.d.ts +0 -1
  129. package/dist/guarded-mutation.d.ts +0 -7
  130. package/dist/guarded-mutation.js +6 -11
  131. package/dist/guest-dispatch-python.d.ts +0 -1
  132. package/dist/guest-dispatch-python.js +41 -90
  133. package/dist/guest-native-python.d.ts +0 -1
  134. package/dist/guest.d.ts +0 -1
  135. package/dist/home-dir.d.ts +0 -1
  136. package/dist/index.d.ts +0 -1
  137. package/dist/install-path.d.ts +0 -1
  138. package/dist/json-document-store.d.ts +0 -1
  139. package/dist/json-durable-queue-directory.d.ts +13 -1
  140. package/dist/json-durable-queue-directory.js +134 -0
  141. package/dist/json-durable-queue-ownership.d.ts +0 -1
  142. package/dist/json-durable-queue-ownership.js +42 -61
  143. package/dist/json-durable-queue-read.d.ts +0 -1
  144. package/dist/json-durable-queue-read.js +6 -6
  145. package/dist/json-durable-queue.d.ts +0 -1
  146. package/dist/json-durable-queue.js +7 -130
  147. package/dist/json-store.d.ts +0 -1
  148. package/dist/json-stringify.d.ts +0 -1
  149. package/dist/json.d.ts +0 -1
  150. package/dist/json.js +6 -15
  151. package/dist/local-file-access.d.ts +0 -1
  152. package/dist/local-file-access.js +3 -10
  153. package/dist/local-file-descriptor.d.ts +0 -1
  154. package/dist/local-roots.d.ts +0 -1
  155. package/dist/lock-config.d.ts +0 -1
  156. package/dist/move-path-cleanup.d.ts +0 -1
  157. package/dist/move-path-stage.d.ts +0 -1
  158. package/dist/move-path.d.ts +0 -1
  159. package/dist/mutation-authority.d.ts +0 -1
  160. package/dist/native-binding.d.ts +0 -1
  161. package/dist/native-config.d.ts +0 -1
  162. package/dist/native-directory-observation.d.ts +0 -1
  163. package/dist/native-fallback-warning.d.ts +0 -1
  164. package/dist/native-operations.d.ts +1 -5
  165. package/dist/native-operations.js +2 -6
  166. package/dist/native-parent-admission.d.ts +0 -1
  167. package/dist/native-pinned-write-windows.d.ts +0 -1
  168. package/dist/native-pinned-write.d.ts +0 -1
  169. package/dist/native-pinned-write.js +4 -10
  170. package/dist/native-policy-directory-observation.d.ts +0 -1
  171. package/dist/native-policy-parent-windows.d.ts +0 -1
  172. package/dist/native-rename-outcome.d.ts +0 -1
  173. package/dist/native-staged-file.d.ts +15 -3
  174. package/dist/native-staged-file.js +55 -63
  175. package/dist/native.d.ts +0 -1
  176. package/dist/opened-file-failure.d.ts +0 -1
  177. package/dist/opened-realpath.d.ts +0 -1
  178. package/dist/output.d.ts +0 -1
  179. package/dist/overwrite-file-handle.d.ts +0 -1
  180. package/dist/owner-dacl.d.ts +0 -1
  181. package/dist/path-case.d.ts +0 -1
  182. package/dist/path-policy.d.ts +0 -1
  183. package/dist/path-prefix.d.ts +0 -1
  184. package/dist/path-scope-lexical.d.ts +0 -1
  185. package/dist/path-segment-route.d.ts +0 -1
  186. package/dist/path-suffix-aliases.d.ts +0 -1
  187. package/dist/path.d.ts +0 -1
  188. package/dist/permission-exec.d.ts +0 -1
  189. package/dist/permission-exec.js +19 -25
  190. package/dist/permissions-public.d.ts +0 -1
  191. package/dist/permissions-windows.d.ts +2 -10
  192. package/dist/permissions-windows.js +10 -30
  193. package/dist/permissions.d.ts +0 -1
  194. package/dist/permissions.js +8 -16
  195. package/dist/pinned-mutation-admission.d.ts +0 -1
  196. package/dist/pinned-mutation-observation.d.ts +0 -1
  197. package/dist/pinned-mutation-shared-route.d.ts +0 -1
  198. package/dist/pinned-open.d.ts +1 -1
  199. package/dist/pinned-open.js +1 -1
  200. package/dist/pinned-operation.d.ts +0 -1
  201. package/dist/pinned-write-input.d.ts +0 -1
  202. package/dist/pinned-write-mode.d.ts +0 -1
  203. package/dist/pinned-write-staged.d.ts +0 -1
  204. package/dist/pinned-write-types.d.ts +9 -21
  205. package/dist/pinned-write.d.ts +0 -1
  206. package/dist/positional-read.d.ts +0 -1
  207. package/dist/private-directory.d.ts +0 -1
  208. package/dist/private-producer-handoff-sync.d.ts +0 -1
  209. package/dist/private-producer-handoff-sync.js +9 -51
  210. package/dist/private-producer-handoff.d.ts +20 -1
  211. package/dist/private-producer-handoff.js +69 -46
  212. package/dist/private-temp-workspace.d.ts +0 -1
  213. package/dist/private-temp-workspace.js +11 -36
  214. package/dist/publish-copy-stage.d.ts +0 -1
  215. package/dist/publish-file-failure.d.ts +0 -1
  216. package/dist/publish-file.d.ts +0 -1
  217. package/dist/read-open-flags.d.ts +0 -1
  218. package/dist/read-opened-file.d.ts +0 -1
  219. package/dist/realpath.d.ts +0 -1
  220. package/dist/recursive-mkdir-path.d.ts +0 -1
  221. package/dist/regular-file.d.ts +0 -1
  222. package/dist/regular-file.js +77 -139
  223. package/dist/replace-directory.d.ts +0 -1
  224. package/dist/replace-file-copy-fallback.d.ts +0 -1
  225. package/dist/replace-file-copy-fallback.js +14 -3
  226. package/dist/replace-file-copy-source.d.ts +0 -1
  227. package/dist/replace-file-copy-source.js +6 -1
  228. package/dist/replace-file-descriptor.d.ts +0 -1
  229. package/dist/replace-file-descriptor.js +6 -1
  230. package/dist/replace-file-mode.d.ts +0 -1
  231. package/dist/replace-file-rename-policy.d.ts +0 -1
  232. package/dist/replace-file-temp-owner.d.ts +12 -13
  233. package/dist/replace-file-temp-owner.js +66 -85
  234. package/dist/replace-file.d.ts +0 -1
  235. package/dist/retained-directory-replacement.d.ts +0 -1
  236. package/dist/root-boundary.d.ts +0 -1
  237. package/dist/root-context.d.ts +0 -1
  238. package/dist/root-create-input.d.ts +0 -1
  239. package/dist/root-directory-creation.d.ts +0 -1
  240. package/dist/root-directory-list.d.ts +0 -1
  241. package/dist/root-directory.d.ts +0 -1
  242. package/dist/root-entries.d.ts +0 -1
  243. package/dist/root-errors.d.ts +0 -1
  244. package/dist/root-file-final-admission.d.ts +0 -1
  245. package/dist/root-file.d.ts +0 -1
  246. package/dist/root-impl.d.ts +2 -10
  247. package/dist/root-impl.js +114 -91
  248. package/dist/root-move-noreplace.d.ts +0 -1
  249. package/dist/root-move-preflight.d.ts +0 -1
  250. package/dist/root-observed-path.d.ts +0 -1
  251. package/dist/root-options.d.ts +0 -1
  252. package/dist/root-path-errors.d.ts +0 -1
  253. package/dist/root-path-existing.d.ts +3 -1
  254. package/dist/root-path-existing.js +39 -18
  255. package/dist/root-path-observation.d.ts +0 -1
  256. package/dist/root-path-stat.d.ts +0 -1
  257. package/dist/root-path.d.ts +0 -1
  258. package/dist/root-path.js +60 -188
  259. package/dist/root-paths-lexical.d.ts +0 -1
  260. package/dist/root-paths.d.ts +0 -1
  261. package/dist/root-read-admission.d.ts +0 -1
  262. package/dist/root-read-admission.js +31 -44
  263. package/dist/root-remove-identity.d.ts +0 -1
  264. package/dist/root-remove-receipt.d.ts +0 -1
  265. package/dist/root-remove.d.ts +0 -1
  266. package/dist/root-symlink-policy.d.ts +0 -1
  267. package/dist/root-walk.d.ts +0 -1
  268. package/dist/root-write-admission.d.ts +0 -1
  269. package/dist/root-write-compatibility.d.ts +0 -1
  270. package/dist/root-write-complete-parent.d.ts +0 -1
  271. package/dist/root-write-lock-binding.d.ts +0 -1
  272. package/dist/root-write-mode.d.ts +0 -1
  273. package/dist/root-write-publication.d.ts +0 -1
  274. package/dist/root-write-verification.d.ts +0 -1
  275. package/dist/root.d.ts +0 -1
  276. package/dist/safe-path-segment.d.ts +1 -2
  277. package/dist/safe-path-segment.js +2 -5
  278. package/dist/secret-file.d.ts +0 -1
  279. package/dist/secret-file.js +7 -17
  280. package/dist/secret-read-async.d.ts +0 -1
  281. package/dist/secret-read-async.js +5 -5
  282. package/dist/secret-read-policy.d.ts +0 -1
  283. package/dist/secret.d.ts +0 -1
  284. package/dist/secure-file-windows.d.ts +0 -6
  285. package/dist/secure-file-windows.js +13 -28
  286. package/dist/secure-file.d.ts +0 -1
  287. package/dist/secure-file.js +9 -9
  288. package/dist/secure-temp-dir.d.ts +0 -1
  289. package/dist/secure-temp-repair.d.ts +0 -1
  290. package/dist/sibling-staged-file.d.ts +0 -1
  291. package/dist/sibling-staged-file.js +32 -39
  292. package/dist/sibling-temp.d.ts +0 -1
  293. package/dist/sidecar-lock-acquire.d.ts +1 -2
  294. package/dist/sidecar-lock-acquire.js +31 -52
  295. package/dist/sidecar-lock-admission-context.d.ts +0 -1
  296. package/dist/sidecar-lock-admission-parser.d.ts +0 -1
  297. package/dist/sidecar-lock-admission.d.ts +1 -5
  298. package/dist/sidecar-lock-admission.js +1 -7
  299. package/dist/sidecar-lock-handle.d.ts +0 -1
  300. package/dist/sidecar-lock-policy.d.ts +3 -1
  301. package/dist/sidecar-lock-policy.js +16 -0
  302. package/dist/sidecar-lock-reclaim.d.ts +0 -1
  303. package/dist/sidecar-lock-registration.d.ts +13 -0
  304. package/dist/sidecar-lock-registration.js +47 -0
  305. package/dist/sidecar-lock-root.d.ts +0 -1
  306. package/dist/sidecar-lock-stale-admission.d.ts +0 -1
  307. package/dist/sidecar-lock-target.d.ts +0 -1
  308. package/dist/sidecar-lock-types.d.ts +0 -1
  309. package/dist/sidecar-lock.d.ts +0 -1
  310. package/dist/sidecar-lock.js +16 -83
  311. package/dist/staged-directory.d.ts +0 -1
  312. package/dist/staged-file-settlement.d.ts +0 -1
  313. package/dist/staged-file-types.d.ts +0 -1
  314. package/dist/standalone-publication-path.d.ts +0 -1
  315. package/dist/stat-observation.d.ts +0 -1
  316. package/dist/store.d.ts +0 -1
  317. package/dist/strict-file-identity.d.ts +0 -1
  318. package/dist/string-coerce.d.ts +0 -1
  319. package/dist/suppressed-error.d.ts +0 -1
  320. package/dist/symlink-parents.d.ts +0 -1
  321. package/dist/temp-cleanup.d.ts +0 -1
  322. package/dist/temp-target.d.ts +0 -1
  323. package/dist/temp-target.js +7 -46
  324. package/dist/temp-workspace-admission.d.ts +0 -8
  325. package/dist/temp-workspace-admission.js +0 -4
  326. package/dist/temp-workspace-child-admission.d.ts +0 -4
  327. package/dist/temp-workspace-child-admission.js +0 -12
  328. package/dist/temp-workspace-descriptor.d.ts +0 -6
  329. package/dist/temp-workspace-descriptor.js +0 -2
  330. package/dist/temp-workspace-identity.d.ts +0 -1
  331. package/dist/temp-workspace-owner.d.ts +1 -1
  332. package/dist/temp-workspace-owner.js +45 -22
  333. package/dist/temp-workspace-permissions.d.ts +0 -1
  334. package/dist/temp-workspace-types.d.ts +0 -1
  335. package/dist/temp.d.ts +0 -1
  336. package/dist/test-hooks.d.ts +0 -1
  337. package/dist/text-atomic.d.ts +0 -1
  338. package/dist/timing.d.ts +0 -1
  339. package/dist/trash.d.ts +0 -1
  340. package/dist/types.d.ts +0 -1
  341. package/dist/unicode-path.d.ts +0 -1
  342. package/dist/walk.d.ts +0 -1
  343. package/dist/windows-command.d.ts +0 -1
  344. package/dist/windows-owner.d.ts +0 -1
  345. package/dist/windows-owner.js +4 -1
  346. package/dist/windows-path-alias.d.ts +0 -1
  347. package/dist/windows-path-alias.js +7 -43
  348. package/dist/windows-path-syntax.d.ts +5 -0
  349. package/dist/windows-path-syntax.js +21 -0
  350. package/dist/windows-security-command.d.ts +0 -1
  351. package/dist/windows-security-facts.d.ts +0 -1
  352. package/dist/write-file-handle.d.ts +0 -1
  353. package/dist/write-open-flags.d.ts +0 -1
  354. package/dist/write-queue.d.ts +0 -1
  355. package/docs/atomic.md +14 -0
  356. package/docs/copy.md +2 -0
  357. package/docs/mutation-policy-proof.md +6 -4
  358. package/docs/permissions.md +6 -0
  359. package/docs/root.md +10 -0
  360. package/docs/secret-file.md +4 -0
  361. package/docs/writing.md +9 -3
  362. package/package.json +8 -9
  363. package/dist/absolute-path.d.ts.map +0 -1
  364. package/dist/advanced.d.ts.map +0 -1
  365. package/dist/archive-crc32.d.ts.map +0 -1
  366. package/dist/archive-deadline.d.ts.map +0 -1
  367. package/dist/archive-durability.d.ts.map +0 -1
  368. package/dist/archive-entry.d.ts.map +0 -1
  369. package/dist/archive-errors.d.ts.map +0 -1
  370. package/dist/archive-gzip-tail.d.ts.map +0 -1
  371. package/dist/archive-input.d.ts.map +0 -1
  372. package/dist/archive-kind.d.ts.map +0 -1
  373. package/dist/archive-limits.d.ts.map +0 -1
  374. package/dist/archive-merge.d.ts.map +0 -1
  375. package/dist/archive-native.d.ts.map +0 -1
  376. package/dist/archive-options.d.ts.map +0 -1
  377. package/dist/archive-parser-errors.d.ts.map +0 -1
  378. package/dist/archive-plan.d.ts.map +0 -1
  379. package/dist/archive-policy.d.ts.map +0 -1
  380. package/dist/archive-read.d.ts.map +0 -1
  381. package/dist/archive-staging.d.ts.map +0 -1
  382. package/dist/archive-tar-inspect.d.ts.map +0 -1
  383. package/dist/archive-tar-stream.d.ts.map +0 -1
  384. package/dist/archive-tar-wasm.d.ts.map +0 -1
  385. package/dist/archive-tar.d.ts.map +0 -1
  386. package/dist/archive-zip-admission.d.ts.map +0 -1
  387. package/dist/archive-zip-count.d.ts.map +0 -1
  388. package/dist/archive-zip-directory.d.ts.map +0 -1
  389. package/dist/archive-zip-entry.d.ts.map +0 -1
  390. package/dist/archive-zip-integrity.d.ts.map +0 -1
  391. package/dist/archive-zip-loader.d.ts.map +0 -1
  392. package/dist/archive-zip-manifest.d.ts.map +0 -1
  393. package/dist/archive-zip-names.d.ts.map +0 -1
  394. package/dist/archive-zip-preflight.d.ts.map +0 -1
  395. package/dist/archive.d.ts.map +0 -1
  396. package/dist/async-lock.d.ts.map +0 -1
  397. package/dist/atomic.d.ts.map +0 -1
  398. package/dist/bounded-read-stream.d.ts.map +0 -1
  399. package/dist/bounded-read.d.ts.map +0 -1
  400. package/dist/byte-budget.d.ts.map +0 -1
  401. package/dist/byte-view.d.ts.map +0 -1
  402. package/dist/clone-metadata.d.ts.map +0 -1
  403. package/dist/config.d.ts.map +0 -1
  404. package/dist/containment.d.ts.map +0 -1
  405. package/dist/copy-file-input.d.ts.map +0 -1
  406. package/dist/copy-policy.d.ts.map +0 -1
  407. package/dist/copy-publication.d.ts.map +0 -1
  408. package/dist/copy-tree-portable.d.ts.map +0 -1
  409. package/dist/copy.d.ts.map +0 -1
  410. package/dist/create-directory.d.ts.map +0 -1
  411. package/dist/create-file-async.d.ts.map +0 -1
  412. package/dist/create-file.d.ts.map +0 -1
  413. package/dist/create-owned-file.d.ts.map +0 -1
  414. package/dist/create.d.ts.map +0 -1
  415. package/dist/creation-darwin.d.ts.map +0 -1
  416. package/dist/creation-file-state.d.ts.map +0 -1
  417. package/dist/creation-path.d.ts.map +0 -1
  418. package/dist/creation-permissions.d.ts.map +0 -1
  419. package/dist/deny-mutations.d.ts.map +0 -1
  420. package/dist/device-path.d.ts.map +0 -1
  421. package/dist/directory-durability.d.ts.map +0 -1
  422. package/dist/directory-entry-path.d.ts.map +0 -1
  423. package/dist/directory-guard.d.ts.map +0 -1
  424. package/dist/directory-mode-node.d.ts.map +0 -1
  425. package/dist/directory-mode-owner.d.ts.map +0 -1
  426. package/dist/directory-receipt.d.ts.map +0 -1
  427. package/dist/durability.d.ts.map +0 -1
  428. package/dist/effective-uid.d.ts.map +0 -1
  429. package/dist/error-detail.d.ts.map +0 -1
  430. package/dist/errors.d.ts.map +0 -1
  431. package/dist/file-cleanup.d.ts.map +0 -1
  432. package/dist/file-contents.d.ts.map +0 -1
  433. package/dist/file-handle-transfer.d.ts.map +0 -1
  434. package/dist/file-hash.d.ts.map +0 -1
  435. package/dist/file-identity.d.ts.map +0 -1
  436. package/dist/file-lock-sync-admission.d.ts.map +0 -1
  437. package/dist/file-lock-sync-root-acquire.d.ts.map +0 -1
  438. package/dist/file-lock-sync-root-arbitration.d.ts.map +0 -1
  439. package/dist/file-lock-sync-root-held.d.ts.map +0 -1
  440. package/dist/file-lock-sync-root-io.d.ts.map +0 -1
  441. package/dist/file-lock-sync-root-mutation.d.ts.map +0 -1
  442. package/dist/file-lock-sync-root-options.d.ts.map +0 -1
  443. package/dist/file-lock-sync-root-registration.d.ts.map +0 -1
  444. package/dist/file-lock-sync-root.d.ts.map +0 -1
  445. package/dist/file-lock-sync-stale-admission.d.ts.map +0 -1
  446. package/dist/file-lock-sync.d.ts.map +0 -1
  447. package/dist/file-lock.d.ts.map +0 -1
  448. package/dist/file-observation.d.ts.map +0 -1
  449. package/dist/file-store-boundary.d.ts.map +0 -1
  450. package/dist/file-store-copy-source.d.ts.map +0 -1
  451. package/dist/file-store-limit.d.ts.map +0 -1
  452. package/dist/file-store-path.d.ts.map +0 -1
  453. package/dist/file-store-prune.d.ts.map +0 -1
  454. package/dist/file-store-sync-directory.d.ts.map +0 -1
  455. package/dist/file-store-sync-write.d.ts.map +0 -1
  456. package/dist/file-store.d.ts.map +0 -1
  457. package/dist/file-sync.d.ts.map +0 -1
  458. package/dist/filename.d.ts.map +0 -1
  459. package/dist/fs.d.ts.map +0 -1
  460. package/dist/guarded-mkdir.d.ts.map +0 -1
  461. package/dist/guarded-mutation.d.ts.map +0 -1
  462. package/dist/guest-dispatch-python.d.ts.map +0 -1
  463. package/dist/guest-native-python.d.ts.map +0 -1
  464. package/dist/guest.d.ts.map +0 -1
  465. package/dist/home-dir.d.ts.map +0 -1
  466. package/dist/index.d.ts.map +0 -1
  467. package/dist/install-path.d.ts.map +0 -1
  468. package/dist/json-document-store.d.ts.map +0 -1
  469. package/dist/json-durable-queue-directory.d.ts.map +0 -1
  470. package/dist/json-durable-queue-ownership.d.ts.map +0 -1
  471. package/dist/json-durable-queue-paths.d.ts +0 -11
  472. package/dist/json-durable-queue-paths.d.ts.map +0 -1
  473. package/dist/json-durable-queue-paths.js +0 -20
  474. package/dist/json-durable-queue-read.d.ts.map +0 -1
  475. package/dist/json-durable-queue.d.ts.map +0 -1
  476. package/dist/json-store.d.ts.map +0 -1
  477. package/dist/json-stringify.d.ts.map +0 -1
  478. package/dist/json.d.ts.map +0 -1
  479. package/dist/local-file-access.d.ts.map +0 -1
  480. package/dist/local-file-descriptor.d.ts.map +0 -1
  481. package/dist/local-roots.d.ts.map +0 -1
  482. package/dist/lock-config.d.ts.map +0 -1
  483. package/dist/move-path-cleanup.d.ts.map +0 -1
  484. package/dist/move-path-stage.d.ts.map +0 -1
  485. package/dist/move-path.d.ts.map +0 -1
  486. package/dist/mutation-authority.d.ts.map +0 -1
  487. package/dist/native-binding.d.ts.map +0 -1
  488. package/dist/native-config.d.ts.map +0 -1
  489. package/dist/native-directory-observation.d.ts.map +0 -1
  490. package/dist/native-fallback-warning.d.ts.map +0 -1
  491. package/dist/native-operations.d.ts.map +0 -1
  492. package/dist/native-parent-admission.d.ts.map +0 -1
  493. package/dist/native-pinned-write-windows.d.ts.map +0 -1
  494. package/dist/native-pinned-write.d.ts.map +0 -1
  495. package/dist/native-policy-directory-observation.d.ts.map +0 -1
  496. package/dist/native-policy-parent-windows.d.ts.map +0 -1
  497. package/dist/native-rename-outcome.d.ts.map +0 -1
  498. package/dist/native-staged-file.d.ts.map +0 -1
  499. package/dist/native.d.ts.map +0 -1
  500. package/dist/opened-file-failure.d.ts.map +0 -1
  501. package/dist/opened-realpath.d.ts.map +0 -1
  502. package/dist/output.d.ts.map +0 -1
  503. package/dist/overwrite-file-handle.d.ts.map +0 -1
  504. package/dist/owner-dacl.d.ts.map +0 -1
  505. package/dist/path-case.d.ts.map +0 -1
  506. package/dist/path-policy.d.ts.map +0 -1
  507. package/dist/path-prefix.d.ts.map +0 -1
  508. package/dist/path-scope-lexical.d.ts.map +0 -1
  509. package/dist/path-segment-route.d.ts.map +0 -1
  510. package/dist/path-suffix-aliases.d.ts.map +0 -1
  511. package/dist/path.d.ts.map +0 -1
  512. package/dist/permission-exec.d.ts.map +0 -1
  513. package/dist/permissions-public.d.ts.map +0 -1
  514. package/dist/permissions-windows.d.ts.map +0 -1
  515. package/dist/permissions.d.ts.map +0 -1
  516. package/dist/pinned-mutation-admission.d.ts.map +0 -1
  517. package/dist/pinned-mutation-observation.d.ts.map +0 -1
  518. package/dist/pinned-mutation-shared-route.d.ts.map +0 -1
  519. package/dist/pinned-open.d.ts.map +0 -1
  520. package/dist/pinned-operation.d.ts.map +0 -1
  521. package/dist/pinned-write-input.d.ts.map +0 -1
  522. package/dist/pinned-write-mode.d.ts.map +0 -1
  523. package/dist/pinned-write-staged.d.ts.map +0 -1
  524. package/dist/pinned-write-types.d.ts.map +0 -1
  525. package/dist/pinned-write.d.ts.map +0 -1
  526. package/dist/positional-read.d.ts.map +0 -1
  527. package/dist/private-directory.d.ts.map +0 -1
  528. package/dist/private-producer-handoff-sync.d.ts.map +0 -1
  529. package/dist/private-producer-handoff.d.ts.map +0 -1
  530. package/dist/private-temp-workspace.d.ts.map +0 -1
  531. package/dist/publish-copy-stage.d.ts.map +0 -1
  532. package/dist/publish-file-failure.d.ts.map +0 -1
  533. package/dist/publish-file.d.ts.map +0 -1
  534. package/dist/read-open-flags.d.ts.map +0 -1
  535. package/dist/read-opened-file.d.ts.map +0 -1
  536. package/dist/realpath.d.ts.map +0 -1
  537. package/dist/recursive-mkdir-path.d.ts.map +0 -1
  538. package/dist/regular-file.d.ts.map +0 -1
  539. package/dist/replace-directory.d.ts.map +0 -1
  540. package/dist/replace-file-copy-fallback.d.ts.map +0 -1
  541. package/dist/replace-file-copy-source.d.ts.map +0 -1
  542. package/dist/replace-file-descriptor.d.ts.map +0 -1
  543. package/dist/replace-file-mode.d.ts.map +0 -1
  544. package/dist/replace-file-rename-policy.d.ts.map +0 -1
  545. package/dist/replace-file-temp-owner.d.ts.map +0 -1
  546. package/dist/replace-file.d.ts.map +0 -1
  547. package/dist/retained-directory-replacement.d.ts.map +0 -1
  548. package/dist/root-boundary.d.ts.map +0 -1
  549. package/dist/root-context.d.ts.map +0 -1
  550. package/dist/root-create-input.d.ts.map +0 -1
  551. package/dist/root-directory-creation.d.ts.map +0 -1
  552. package/dist/root-directory-list.d.ts.map +0 -1
  553. package/dist/root-directory.d.ts.map +0 -1
  554. package/dist/root-entries.d.ts.map +0 -1
  555. package/dist/root-errors.d.ts.map +0 -1
  556. package/dist/root-file-final-admission.d.ts.map +0 -1
  557. package/dist/root-file.d.ts.map +0 -1
  558. package/dist/root-impl.d.ts.map +0 -1
  559. package/dist/root-move-noreplace.d.ts.map +0 -1
  560. package/dist/root-move-preflight.d.ts.map +0 -1
  561. package/dist/root-observed-path.d.ts.map +0 -1
  562. package/dist/root-options.d.ts.map +0 -1
  563. package/dist/root-path-errors.d.ts.map +0 -1
  564. package/dist/root-path-existing.d.ts.map +0 -1
  565. package/dist/root-path-observation.d.ts.map +0 -1
  566. package/dist/root-path-stat.d.ts.map +0 -1
  567. package/dist/root-path-symlink.d.ts +0 -7
  568. package/dist/root-path-symlink.d.ts.map +0 -1
  569. package/dist/root-path-symlink.js +0 -55
  570. package/dist/root-path.d.ts.map +0 -1
  571. package/dist/root-paths-lexical.d.ts.map +0 -1
  572. package/dist/root-paths.d.ts.map +0 -1
  573. package/dist/root-read-admission.d.ts.map +0 -1
  574. package/dist/root-remove-identity.d.ts.map +0 -1
  575. package/dist/root-remove-receipt.d.ts.map +0 -1
  576. package/dist/root-remove.d.ts.map +0 -1
  577. package/dist/root-symlink-policy.d.ts.map +0 -1
  578. package/dist/root-walk.d.ts.map +0 -1
  579. package/dist/root-write-admission.d.ts.map +0 -1
  580. package/dist/root-write-compatibility.d.ts.map +0 -1
  581. package/dist/root-write-complete-parent.d.ts.map +0 -1
  582. package/dist/root-write-lock-binding.d.ts.map +0 -1
  583. package/dist/root-write-mode.d.ts.map +0 -1
  584. package/dist/root-write-publication.d.ts.map +0 -1
  585. package/dist/root-write-verification.d.ts.map +0 -1
  586. package/dist/root.d.ts.map +0 -1
  587. package/dist/safe-path-segment.d.ts.map +0 -1
  588. package/dist/secret-file.d.ts.map +0 -1
  589. package/dist/secret-read-async.d.ts.map +0 -1
  590. package/dist/secret-read-policy.d.ts.map +0 -1
  591. package/dist/secret.d.ts.map +0 -1
  592. package/dist/secure-file-windows.d.ts.map +0 -1
  593. package/dist/secure-file.d.ts.map +0 -1
  594. package/dist/secure-temp-dir.d.ts.map +0 -1
  595. package/dist/secure-temp-repair.d.ts.map +0 -1
  596. package/dist/sibling-staged-file.d.ts.map +0 -1
  597. package/dist/sibling-temp.d.ts.map +0 -1
  598. package/dist/sidecar-lock-acquire.d.ts.map +0 -1
  599. package/dist/sidecar-lock-admission-context.d.ts.map +0 -1
  600. package/dist/sidecar-lock-admission-parser.d.ts.map +0 -1
  601. package/dist/sidecar-lock-admission.d.ts.map +0 -1
  602. package/dist/sidecar-lock-handle.d.ts.map +0 -1
  603. package/dist/sidecar-lock-policy.d.ts.map +0 -1
  604. package/dist/sidecar-lock-reclaim.d.ts.map +0 -1
  605. package/dist/sidecar-lock-root.d.ts.map +0 -1
  606. package/dist/sidecar-lock-stale-admission.d.ts.map +0 -1
  607. package/dist/sidecar-lock-target.d.ts.map +0 -1
  608. package/dist/sidecar-lock-types.d.ts.map +0 -1
  609. package/dist/sidecar-lock.d.ts.map +0 -1
  610. package/dist/staged-directory.d.ts.map +0 -1
  611. package/dist/staged-file-settlement.d.ts.map +0 -1
  612. package/dist/staged-file-types.d.ts.map +0 -1
  613. package/dist/standalone-publication-path.d.ts.map +0 -1
  614. package/dist/stat-observation.d.ts.map +0 -1
  615. package/dist/store.d.ts.map +0 -1
  616. package/dist/strict-file-identity.d.ts.map +0 -1
  617. package/dist/string-coerce.d.ts.map +0 -1
  618. package/dist/suppressed-error.d.ts.map +0 -1
  619. package/dist/symlink-parents.d.ts.map +0 -1
  620. package/dist/temp-cleanup.d.ts.map +0 -1
  621. package/dist/temp-target.d.ts.map +0 -1
  622. package/dist/temp-workspace-admission.d.ts.map +0 -1
  623. package/dist/temp-workspace-child-admission.d.ts.map +0 -1
  624. package/dist/temp-workspace-descriptor.d.ts.map +0 -1
  625. package/dist/temp-workspace-identity.d.ts.map +0 -1
  626. package/dist/temp-workspace-owner.d.ts.map +0 -1
  627. package/dist/temp-workspace-permissions.d.ts.map +0 -1
  628. package/dist/temp-workspace-types.d.ts.map +0 -1
  629. package/dist/temp.d.ts.map +0 -1
  630. package/dist/test-hooks.d.ts.map +0 -1
  631. package/dist/text-atomic.d.ts.map +0 -1
  632. package/dist/timing.d.ts.map +0 -1
  633. package/dist/trash.d.ts.map +0 -1
  634. package/dist/types.d.ts.map +0 -1
  635. package/dist/unicode-path.d.ts.map +0 -1
  636. package/dist/walk.d.ts.map +0 -1
  637. package/dist/windows-command.d.ts.map +0 -1
  638. package/dist/windows-owner.d.ts.map +0 -1
  639. package/dist/windows-path-alias.d.ts.map +0 -1
  640. package/dist/windows-security-command.d.ts.map +0 -1
  641. package/dist/windows-security-facts.d.ts.map +0 -1
  642. package/dist/write-file-handle.d.ts.map +0 -1
  643. package/dist/write-open-flags.d.ts.map +0 -1
  644. package/dist/write-queue.d.ts.map +0 -1
package/dist/root-path.js CHANGED
@@ -5,10 +5,9 @@ import { pathEscapeError, sanitizeRootPathError, symlinkEscapeError } from "./ro
5
5
  import { FsSafeError } from "./errors.js";
6
6
  import { isNativeDirectoryObservationGuard } from "./native-directory-observation.js";
7
7
  import { assertNoNulPathInput, isNotFoundPathError, isPathRelativeEscape, } from "./path.js";
8
- import { absolutePathWithRawSegments, rawPathRelativeToCanonicalRoot, resolvePathViaExistingAncestor, resolvePathViaExistingAncestorSync, } from "./root-path-existing.js";
8
+ import { absolutePathWithRawSegments, rawPathRelativeToCanonicalRoot, resolveExistingAncestor, resolveSymlinkHopPath, } from "./root-path-existing.js";
9
9
  import { admitPathInsideRoot, } from "./root-boundary.js";
10
10
  import { RootPathObservationError, captureRootPathObservedDirectory, createRootPathTraversalObservation, inspectRootPathTraversalEntry, } from "./root-path-observation.js";
11
- import { resolveSymlinkHopPath, resolveSymlinkHopPathSync } from "./root-path-symlink.js";
12
11
  import { assertNoDriveRelativePathSegments } from "./safe-path-segment.js";
13
12
  import { assertNoWindowsPathAlias, pathForWindowsFilesystem, resolvePathFromBasePreservingWindowsRoot, resolvePathPreservingWindowsRoot, } from "./windows-path-alias.js";
14
13
  export { resolvePathViaExistingAncestorSync } from "./root-path-existing.js";
@@ -24,85 +23,35 @@ export const ROOT_PATH_ALIAS_POLICIES = {
24
23
  }),
25
24
  };
26
25
  export async function resolveRootPath(params) {
27
- try {
28
- return await resolveRootPathInternal(params);
29
- }
30
- catch (error) {
31
- throw sanitizeRootPathError(error);
32
- }
26
+ return resolveRootPathInternal(params);
33
27
  }
34
28
  export async function resolveRootPathWithCanonicalRootObservation(params, observeRoot) {
35
- try {
36
- return await resolveRootPathInternal(params, undefined, undefined, observeRoot);
37
- }
38
- catch (error) {
39
- throw sanitizeRootPathError(error);
40
- }
41
- }
42
- async function resolveRootPathInternal(params, observationRequest, observationOutput, observeRoot, removalReceipts) {
43
- const input = captureValidRootPathInputs(params);
44
- const rawAbsolutePath = absolutePathWithRawSegments(input.absolutePath);
45
- const rootPath = resolvePathPreservingWindowsRoot(input.rootPath);
46
- const absolutePath = resolvePathPreservingWindowsRoot(rawAbsolutePath);
47
- const rootCanonicalPath = input.rootCanonicalPath
48
- ? resolvePathPreservingWindowsRoot(input.rootCanonicalPath)
49
- : await resolvePathViaExistingAncestor(rootPath);
50
- assertNoWindowsPathAlias(rootPath);
51
- assertNoWindowsPathAlias(absolutePath);
52
- assertNoWindowsPathAlias(rootCanonicalPath);
53
- observeRoot?.(rootCanonicalPath);
54
- return resolveRootPathLexicalAsync(prepareRootTraversal(input, rootPath, rootCanonicalPath, absolutePath, rawAbsolutePath), observationRequest, observationOutput, removalReceipts);
29
+ return resolveRootPathInternal(params, { observeRoot });
55
30
  }
56
31
  export async function resolveRootPathWithObservation(params, request) {
57
- const output = {};
58
- try {
59
- const resolved = await resolveRootPathInternal(params, request, output);
60
- return output.receipt ? { resolved, receipt: output.receipt } : { resolved };
61
- }
62
- catch (error) {
63
- throw sanitizeRootPathError(error);
64
- }
32
+ const observation = { request };
33
+ const resolved = resolveRootPathInternal(params, { observation });
34
+ return observation.receipt ? { resolved, receipt: observation.receipt } : { resolved };
65
35
  }
66
36
  // Removal receipts are separate from metadata observations and canonical-root
67
37
  // callbacks; the public resolver's options and result remain unchanged.
68
38
  export async function resolveRootPathForRemoval(params, receipts) {
69
- try {
70
- return await resolveRootPathInternal(params, undefined, undefined, undefined, receipts);
71
- }
72
- catch (error) {
73
- throw sanitizeRootPathError(error);
74
- }
39
+ return resolveRootPathInternal(params, { removalReceipts: receipts });
75
40
  }
76
41
  export function resolveRootPathSync(params) {
77
- try {
78
- return resolveRootPathSyncInternal(params);
79
- }
80
- catch (error) {
81
- throw sanitizeRootPathError(error);
82
- }
42
+ return resolveRootPathInternal(params, { mode: "ordinary" });
83
43
  }
84
44
  export function resolveRootPathSyncWithCanonicalRootObservation(params, observeRoot) {
45
+ return resolveRootPathInternal(params, { mode: "ordinary", observeRoot });
46
+ }
47
+ function resolveRootPathInternal(params, options = {}) {
85
48
  try {
86
- return resolveRootPathSyncInternal(params, observeRoot);
49
+ return traverseRootPath(params, options);
87
50
  }
88
51
  catch (error) {
89
52
  throw sanitizeRootPathError(error);
90
53
  }
91
54
  }
92
- function resolveRootPathSyncInternal(params, observeRoot) {
93
- const input = captureValidRootPathInputs(params);
94
- const rawAbsolutePath = absolutePathWithRawSegments(input.absolutePath);
95
- const rootPath = resolvePathPreservingWindowsRoot(input.rootPath);
96
- const absolutePath = resolvePathPreservingWindowsRoot(rawAbsolutePath);
97
- const rootCanonicalPath = input.rootCanonicalPath
98
- ? resolvePathPreservingWindowsRoot(input.rootCanonicalPath)
99
- : resolvePathViaExistingAncestorSync(rootPath);
100
- assertNoWindowsPathAlias(rootPath);
101
- assertNoWindowsPathAlias(absolutePath);
102
- assertNoWindowsPathAlias(rootCanonicalPath);
103
- observeRoot?.(rootCanonicalPath);
104
- return resolveRootPathLexicalSync(prepareRootTraversal(input, rootPath, rootCanonicalPath, absolutePath, rawAbsolutePath));
105
- }
106
55
  function prepareRootTraversal(params, rootPath, rootCanonicalPath, absolutePath, rawAbsolutePath) {
107
56
  let raw = rawAbsolutePath;
108
57
  let trustedAbsolutePath = false;
@@ -173,27 +122,23 @@ function assertNoEmbeddedDriveRelativeSegment(filePath, label) {
173
122
  const root = path.parse(filePath).root;
174
123
  assertNoDriveRelativePathSegments(filePath.slice(root.length).replaceAll("\\", "/"), label);
175
124
  }
176
- function createLexicalTraversalState(params) {
177
- const rawAbsolutePath = params.rawAbsolutePath;
178
- const relative = admitRawPathInsideRoot(params.rootPath, rawAbsolutePath, params.params.rootIdentity)?.relativePath;
125
+ function createLexicalTraversalContext(params) {
126
+ const relative = admitRawPathInsideRoot(params.rootPath, params.rawAbsolutePath, params.params.rootIdentity)?.relativePath;
179
127
  if (relative === undefined)
180
128
  throw new Error("Path traversal must begin at the root");
181
129
  const segments = splitTraversalSegments(relative);
182
130
  return {
183
- segments,
184
- relativePath: relative,
185
- reuseLexicalCanonical: false,
186
- finalComponentIndex: segments.findLastIndex((segment) => segment !== "."),
187
- allowFinalSymlink: params.params.policy?.allowFinalSymlinkForUnlink === true,
188
- canonicalCursor: params.rootCanonicalPath,
189
- lexicalCursor: params.rootPath,
190
- preserveFinalSymlink: false,
191
- missingDepth: 0,
192
- };
193
- }
194
- function createLexicalTraversalContext(params) {
195
- return {
196
- state: createLexicalTraversalState(params),
131
+ state: {
132
+ segments,
133
+ relativePath: relative,
134
+ reuseLexicalCanonical: false,
135
+ finalComponentIndex: segments.findLastIndex((segment) => segment !== "."),
136
+ allowFinalSymlink: params.params.policy?.allowFinalSymlinkForUnlink === true,
137
+ canonicalCursor: params.rootCanonicalPath,
138
+ lexicalCursor: params.rootPath,
139
+ preserveFinalSymlink: false,
140
+ missingDepth: 0,
141
+ },
197
142
  resolveParams: params.params,
198
143
  rootPath: params.rootPath,
199
144
  rootCanonicalPath: params.rootCanonicalPath,
@@ -263,29 +208,15 @@ function disableLexicalTraversalObservation(context, observation) {
263
208
  }
264
209
  function finalizeLexicalResolution(context, kind) {
265
210
  context.state.canonicalCursor = assertLexicalCursorInsideBoundary(context, context.state.canonicalCursor);
266
- return buildResolvedRootPath({
211
+ return {
267
212
  absolutePath: context.absolutePath,
268
213
  canonicalPath: context.state.canonicalCursor,
269
214
  rootPath: context.rootPath,
270
215
  rootCanonicalPath: context.rootCanonicalPath,
271
- kind,
272
- });
273
- }
274
- function handleLexicalLstatFailure(context, error, segment) {
275
- if (!isNotFoundPathError(error)) {
276
- return false;
277
- }
278
- advanceCanonicalCursorForSegment(context, segment);
279
- context.state.missingDepth = 1;
280
- return true;
281
- }
282
- function lexicalStatDisposition(params) {
283
- if (!params.isSymbolicLink)
284
- return "continue";
285
- if (params.rejectFinalSymlink || (params.rejectSymlinks === true && params.isLast)) {
286
- throw new FsSafeError("symlink", "symlink path component not allowed");
287
- }
288
- return params.allowFinalSymlink && params.isLast ? "break" : "resolve-link";
216
+ relativePath: relativeInsideRoot(context.rootCanonicalPath, context.state.canonicalCursor),
217
+ exists: kind.exists,
218
+ kind: kind.kind,
219
+ };
289
220
  }
290
221
  function applyResolvedSymlinkHop(context, linkCanonical) {
291
222
  let admitted;
@@ -319,10 +250,23 @@ function assertResolvedLinkDirectory(pathname, isLast) {
319
250
  const stat = fs.statSync(pathForWindowsFilesystem(pathname));
320
251
  assertDirectoryBeforeMoreSegments(stat, pathname, isLast);
321
252
  }
322
- async function resolveRootPathLexicalAsync(params, observationRequest, observationOutput, removalReceipts) {
323
- const context = createLexicalTraversalContext(params);
253
+ // Both public APIs use synchronous metadata; only canonicalization and ancestor
254
+ // existence differ. Promise wrappers preserve the asynchronous rejection API.
255
+ function traverseRootPath(params, { mode = "native", observation: observationOutput, observeRoot, removalReceipts }) {
256
+ const input = captureValidRootPathInputs(params);
257
+ const rawAbsolutePath = absolutePathWithRawSegments(input.absolutePath);
258
+ const rootPath = resolvePathPreservingWindowsRoot(input.rootPath);
259
+ const absolutePath = resolvePathPreservingWindowsRoot(rawAbsolutePath);
260
+ const rootCanonicalPath = input.rootCanonicalPath
261
+ ? resolvePathPreservingWindowsRoot(input.rootCanonicalPath)
262
+ : resolveExistingAncestor(rootPath, mode);
263
+ assertNoWindowsPathAlias(rootPath);
264
+ assertNoWindowsPathAlias(absolutePath);
265
+ assertNoWindowsPathAlias(rootCanonicalPath);
266
+ observeRoot?.(rootCanonicalPath);
267
+ const context = createLexicalTraversalContext(prepareRootTraversal(input, rootPath, rootCanonicalPath, absolutePath, rawAbsolutePath));
324
268
  const { state } = context;
325
- const observation = createLexicalTraversalObservation(context, observationRequest);
269
+ const observation = createLexicalTraversalObservation(context, observationOutput?.request);
326
270
  for (let idx = 0; idx < state.segments.length; idx += 1) {
327
271
  const segment = state.segments[idx] ?? "";
328
272
  const isLast = idx === state.segments.length - 1;
@@ -374,9 +318,11 @@ async function resolveRootPathLexicalAsync(params, observationRequest, observati
374
318
  // Preserve observation-only versus ordinary traversal error precedence.
375
319
  throw new RootPathObservationError(error instanceof RootPathObservationError ? error.error : sanitizeRootPathError(error), parentReceipt, !(error instanceof RootPathObservationError));
376
320
  }
377
- if (handleLexicalLstatFailure(context, error, segment))
378
- continue;
379
- throw error;
321
+ if (!isNotFoundPathError(error))
322
+ throw error;
323
+ advanceCanonicalCursorForSegment(context, segment);
324
+ state.missingDepth = 1;
325
+ continue;
380
326
  }
381
327
  if (isNativeDirectoryObservationGuard(observed)) {
382
328
  advanceCanonicalCursorForSegment(context, segment);
@@ -392,15 +338,13 @@ async function resolveRootPathLexicalAsync(params, observationRequest, observati
392
338
  const isSymbolicLink = stat.isSymbolicLink();
393
339
  if (!isSymbolicLink)
394
340
  assertDirectoryBeforeMoreSegments(stat, state.lexicalCursor, isLast);
395
- const disposition = lexicalStatDisposition({
396
- isSymbolicLink,
397
- isLast,
398
- rejectSymlinks: isSymbolicLink ? context.resolveParams.rejectSymlinks : undefined,
399
- rejectFinalSymlink: context.resolveParams.rejectFinalSymlink === true && idx === state.finalComponentIndex,
400
- allowFinalSymlink: state.allowFinalSymlink,
401
- });
402
- if (disposition !== "resolve-link") {
403
- state.preserveFinalSymlink = disposition === "break";
341
+ if (isSymbolicLink && ((context.resolveParams.rejectFinalSymlink === true && idx === state.finalComponentIndex) ||
342
+ (context.resolveParams.rejectSymlinks === true && isLast))) {
343
+ throw new FsSafeError("symlink", "symlink path component not allowed");
344
+ }
345
+ const preserveFinalSymlink = isSymbolicLink && state.allowFinalSymlink && isLast;
346
+ if (!isSymbolicLink || preserveFinalSymlink) {
347
+ state.preserveFinalSymlink = preserveFinalSymlink;
404
348
  advanceCanonicalCursorForSegment(context, segment);
405
349
  if (observation?.enabled && isSymbolicLink) {
406
350
  disableLexicalTraversalObservation(context, observation);
@@ -420,9 +364,7 @@ async function resolveRootPathLexicalAsync(params, observationRequest, observati
420
364
  }
421
365
  if (observation?.enabled)
422
366
  disableLexicalTraversalObservation(context, observation);
423
- const linkCanonical = await resolveSymlinkHopPath(state.lexicalCursor, {
424
- rejectUnresolved: context.resolveParams.rejectUnresolvedSymlinks,
425
- });
367
+ const linkCanonical = resolveSymlinkHopPath(state.lexicalCursor, mode, context.resolveParams.rejectUnresolvedSymlinks);
426
368
  applyResolvedSymlinkHop(context, linkCanonical);
427
369
  if (context.resolveParams.rejectSymlinks === true) {
428
370
  throw new FsSafeError("symlink", "symlink path component not allowed");
@@ -438,7 +380,7 @@ async function resolveRootPathLexicalAsync(params, observationRequest, observati
438
380
  ? "directory"
439
381
  : toResolvedKind(observation.target.stat),
440
382
  }
441
- : await getPathKind(state.canonicalCursor, state.preserveFinalSymlink);
383
+ : getPathKindSync(state.canonicalCursor, state.preserveFinalSymlink);
442
384
  if (completeObservation && observationOutput) {
443
385
  observationOutput.receipt = {
444
386
  kind: observation.request.kind,
@@ -451,76 +393,6 @@ async function resolveRootPathLexicalAsync(params, observationRequest, observati
451
393
  }
452
394
  return finalizeLexicalResolution(context, kind);
453
395
  }
454
- function resolveRootPathLexicalSync(params) {
455
- const context = createLexicalTraversalContext(params);
456
- const { state } = context;
457
- for (let idx = 0; idx < state.segments.length; idx += 1) {
458
- const segment = state.segments[idx] ?? "";
459
- const isLast = idx === state.segments.length - 1;
460
- if (segment === ".")
461
- continue;
462
- if (segment === "..") {
463
- applyParentTraversalStep(context);
464
- continue;
465
- }
466
- state.lexicalCursor = path.join(state.lexicalCursor, segment);
467
- if (state.missingDepth > 0) {
468
- advanceCanonicalCursorForSegment(context, segment);
469
- state.missingDepth += 1;
470
- continue;
471
- }
472
- let stat;
473
- try {
474
- stat = fs.lstatSync(state.lexicalCursor);
475
- }
476
- catch (error) {
477
- if (handleLexicalLstatFailure(context, error, segment))
478
- continue;
479
- throw error;
480
- }
481
- const isSymbolicLink = stat.isSymbolicLink();
482
- if (!isSymbolicLink)
483
- assertDirectoryBeforeMoreSegments(stat, state.lexicalCursor, isLast);
484
- const disposition = lexicalStatDisposition({
485
- isSymbolicLink,
486
- isLast,
487
- rejectSymlinks: isSymbolicLink ? context.resolveParams.rejectSymlinks : undefined,
488
- rejectFinalSymlink: context.resolveParams.rejectFinalSymlink === true && idx === state.finalComponentIndex,
489
- allowFinalSymlink: state.allowFinalSymlink,
490
- });
491
- if (disposition !== "resolve-link") {
492
- state.preserveFinalSymlink = disposition === "break";
493
- advanceCanonicalCursorForSegment(context, segment);
494
- if (state.preserveFinalSymlink)
495
- break;
496
- continue;
497
- }
498
- const linkCanonical = resolveSymlinkHopPathSync(state.lexicalCursor, {
499
- rejectUnresolved: context.resolveParams.rejectUnresolvedSymlinks,
500
- });
501
- applyResolvedSymlinkHop(context, linkCanonical);
502
- if (context.resolveParams.rejectSymlinks === true) {
503
- throw new FsSafeError("symlink", "symlink path component not allowed");
504
- }
505
- assertResolvedLinkDirectory(linkCanonical, isLast);
506
- }
507
- const kind = getPathKindSync(state.canonicalCursor, state.preserveFinalSymlink);
508
- return finalizeLexicalResolution(context, kind);
509
- }
510
- function buildResolvedRootPath(params) {
511
- return {
512
- absolutePath: params.absolutePath,
513
- canonicalPath: params.canonicalPath,
514
- rootPath: params.rootPath,
515
- rootCanonicalPath: params.rootCanonicalPath,
516
- relativePath: relativeInsideRoot(params.rootCanonicalPath, params.canonicalPath),
517
- exists: params.kind.exists,
518
- kind: params.kind.kind,
519
- };
520
- }
521
- async function getPathKind(absolutePath, preserveFinalSymlink) {
522
- return getPathKindSync(absolutePath, preserveFinalSymlink);
523
- }
524
396
  function getPathKindSync(absolutePath, preserveFinalSymlink) {
525
397
  try {
526
398
  const operationPath = pathForWindowsFilesystem(absolutePath);
@@ -6,4 +6,3 @@ export declare function resolvePathWithinRoot(params: ResolvePathWithinRootParam
6
6
  ok: false;
7
7
  error: string;
8
8
  };
9
- //# sourceMappingURL=root-paths-lexical.d.ts.map
@@ -60,4 +60,3 @@ export declare function resolvePathsWithinRoot(params: ResolvePathsWithinRootPar
60
60
  export declare function resolveExistingPathsWithinRoot(params: ResolvePathsWithinRootParams): Promise<ResolvePathsWithinRootResult>;
61
61
  export declare function resolveStrictExistingPathsWithinRoot(params: ResolvePathsWithinRootParams): Promise<ResolvePathsWithinRootResult>;
62
62
  export declare function pathScope(rootDir: string, options: PathScopeOptions): PathScope;
63
- //# sourceMappingURL=root-paths.d.ts.map
@@ -23,4 +23,3 @@ export declare function admitRootReadHandle<T extends OwnedRootReadHandle>(param
23
23
  realPath: string;
24
24
  }>;
25
25
  export {};
26
- //# sourceMappingURL=root-read-admission.d.ts.map
@@ -31,40 +31,6 @@ export function inspectOpenedPathIdentitySync(filePath, symlinks) {
31
31
  }
32
32
  return stat;
33
33
  }
34
- function assertRootReadAdmissionCurrent(params) {
35
- assertRootIdentityCurrentSync(params.root);
36
- const admittedPath = (() => {
37
- try {
38
- const current = inspectFileIdentitySync(() => inspectOpenedPathIdentitySync(params.filePath, params.symlinks), params.identity);
39
- if (params.hardlinks !== "allow" && current.nlink > 1n)
40
- throw hardlinkedPathNotAllowedError();
41
- const canonicalPath = resolveFinalOpenedRealPath(params.filePath);
42
- assertNoWindowsPathAlias(canonicalPath, "filesystem", "resolved file path uses a Windows filesystem namespace alias");
43
- const admittedRealPath = admitPathInsideRoot({
44
- rootPath: params.root.rootReal,
45
- candidatePath: canonicalPath,
46
- rootIdentity: params.root.rootIdentity,
47
- });
48
- if (!admittedRealPath) {
49
- throw openedPathResolutionError(outsideWorkspaceError());
50
- }
51
- // This is a fresh no-follow observation even when canonicalPath and
52
- // filePath have the same spelling; realpath may have raced a replacement.
53
- const canonical = inspectFileIdentitySync(() => inspectOpenedPathIdentitySync(canonicalPath, undefined), params.identity);
54
- if (params.hardlinks !== "allow" && canonical.nlink > 1n)
55
- throw hardlinkedPathNotAllowedError();
56
- return admittedRealPath.path;
57
- }
58
- catch (error) {
59
- throw isNotFoundPathError(error)
60
- ? openedPathResolutionError(fileNotFoundError())
61
- : error;
62
- }
63
- })();
64
- params.afterPathIdentityCheck?.(params.filePath, params.handle);
65
- assertRootIdentityCurrentSync(params.root);
66
- return admittedPath;
67
- }
68
34
  export async function admitRootReadHandle(params) {
69
35
  try {
70
36
  if (params.hardlinks !== "allow" && params.opened.stat.nlink > 1) {
@@ -74,16 +40,37 @@ export async function admitRootReadHandle(params) {
74
40
  await params.beforeFinalFence(params.filePath, params.opened.handle);
75
41
  }
76
42
  try {
77
- const finalRealPath = assertRootReadAdmissionCurrent({
78
- root: params.root,
79
- filePath: params.filePath,
80
- handle: params.opened.handle,
81
- identity: params.identity,
82
- hardlinks: params.hardlinks,
83
- symlinks: params.symlinks,
84
- afterPathIdentityCheck: params.afterPathIdentityCheck,
85
- });
86
- return { ...params.opened, realPath: finalRealPath };
43
+ assertRootIdentityCurrentSync(params.root);
44
+ let realPath;
45
+ try {
46
+ const current = inspectFileIdentitySync(() => inspectOpenedPathIdentitySync(params.filePath, params.symlinks), params.identity);
47
+ if (params.hardlinks !== "allow" && current.nlink > 1n)
48
+ throw hardlinkedPathNotAllowedError();
49
+ const canonicalPath = resolveFinalOpenedRealPath(params.filePath);
50
+ assertNoWindowsPathAlias(canonicalPath, "filesystem", "resolved file path uses a Windows filesystem namespace alias");
51
+ const admittedRealPath = admitPathInsideRoot({
52
+ rootPath: params.root.rootReal,
53
+ candidatePath: canonicalPath,
54
+ rootIdentity: params.root.rootIdentity,
55
+ });
56
+ if (!admittedRealPath) {
57
+ throw openedPathResolutionError(outsideWorkspaceError());
58
+ }
59
+ // This is a fresh no-follow observation even when canonicalPath and
60
+ // filePath have the same spelling; realpath may have raced a replacement.
61
+ const canonical = inspectFileIdentitySync(() => inspectOpenedPathIdentitySync(canonicalPath, undefined), params.identity);
62
+ if (params.hardlinks !== "allow" && canonical.nlink > 1n)
63
+ throw hardlinkedPathNotAllowedError();
64
+ realPath = admittedRealPath.path;
65
+ }
66
+ catch (error) {
67
+ throw isNotFoundPathError(error)
68
+ ? openedPathResolutionError(fileNotFoundError())
69
+ : error;
70
+ }
71
+ params.afterPathIdentityCheck?.(params.filePath, params.opened.handle);
72
+ assertRootIdentityCurrentSync(params.root);
73
+ return { ...params.opened, realPath };
87
74
  }
88
75
  catch (error) {
89
76
  if (params.identity.nlink <= 1n) {
@@ -12,4 +12,3 @@ export type RemovalDirectoryAssertion = Readonly<{
12
12
  export declare function createRemovalDirectoryAssertion(path: string, identity: ExactDirectoryIdentity, realPath?: string, platform?: NodeJS.Platform): RemovalDirectoryAssertion;
13
13
  export declare function assertRemovalDirectoryCurrent(assertion: RemovalDirectoryAssertion): void;
14
14
  export {};
15
- //# sourceMappingURL=root-remove-identity.d.ts.map
@@ -14,4 +14,3 @@ export declare class RemovalPathReceipts {
14
14
  directories: readonly CapturedRemovalDirectory[];
15
15
  } | undefined;
16
16
  }
17
- //# sourceMappingURL=root-remove-receipt.d.ts.map
@@ -4,4 +4,3 @@ import type { RemovalPathReceipts } from "./root-remove-receipt.js";
4
4
  export declare const nonrecursiveRemovalKind: unique symbol;
5
5
  export declare function validateRemoveOptions(options: RootRemoveOptions): void;
6
6
  export declare function removePathInRootFallback(root: RootContext, targetPath: string, options: RootRemoveOptions, receipts?: RemovalPathReceipts): Promise<void>;
7
- //# sourceMappingURL=root-remove.d.ts.map
@@ -11,4 +11,3 @@ export declare function mutationSymlinkResolution(symlinks: MutationSymlinkPolic
11
11
  resolveCanonical: boolean;
12
12
  };
13
13
  export declare function assertFinalSymlinkRejected(targetPath: string, reject: boolean | undefined, details?: FsSafeErrorDetails): void;
14
- //# sourceMappingURL=root-symlink-policy.d.ts.map
@@ -39,4 +39,3 @@ type RootWalkCapability = {
39
39
  };
40
40
  export declare function walkRoot(root: RootWalkCapability, relativePath: string, options: RootWalkOptions): AsyncGenerator<RootWalkEntry>;
41
41
  export {};
42
- //# sourceMappingURL=root-walk.d.ts.map
@@ -63,4 +63,3 @@ export declare function resolveGuardedWritePathInRoot(root: RootContext, params:
63
63
  export declare function resolveGuardedWriteTargetInRoot(root: RootContext, params: GuardedWritePathOptions): Promise<GuardedRootWriteTarget>;
64
64
  export declare function resolvePinnedWriteTargetInRoot(root: RootContext, relativePath: string, requestedMode?: number, denyMutations?: DenyMutationPolicy, overwrite?: boolean, mutationSymlinks?: MutationSymlinkPolicy): Promise<PinnedWriteTarget>;
65
65
  export {};
66
- //# sourceMappingURL=root-write-admission.d.ts.map
@@ -9,4 +9,3 @@ export declare function withRootFallbackCompatibilityLock<T>(params: {
9
9
  relativePath: string;
10
10
  assertBeforeMutation: () => void;
11
11
  }) => Promise<T>): Promise<T>;
12
- //# sourceMappingURL=root-write-compatibility.d.ts.map
@@ -39,4 +39,3 @@ export type SharedRootWriteTarget = Readonly<{
39
39
  export declare function assertPreparedRootWriteParentCurrent(prepared: PreparedRootWriteParent, verifyTarget?: boolean): void;
40
40
  export declare function prepareSharedRootWriteTarget(root: RootContext, params: SharedRootWriteTargetParams): Promise<SharedRootWriteTarget>;
41
41
  export {};
42
- //# sourceMappingURL=root-write-complete-parent.d.ts.map
@@ -12,4 +12,3 @@ export declare function createRootWriteLockBinding(params: Readonly<{
12
12
  assertCurrent: () => void;
13
13
  dispose(): void;
14
14
  }>;
15
- //# sourceMappingURL=root-write-lock-binding.d.ts.map
@@ -5,4 +5,3 @@ export declare function inheritWriteTargetMode(params: {
5
5
  rootIdentity?: RootBoundaryIdentity;
6
6
  requestedMode?: number;
7
7
  }): Promise<number>;
8
- //# sourceMappingURL=root-write-mode.d.ts.map
@@ -21,4 +21,3 @@ export declare function finishRootFallbackWrite(params: {
21
21
  }>;
22
22
  onVerificationFailure: (error: unknown) => void;
23
23
  }): Promise<void>;
24
- //# sourceMappingURL=root-write-publication.d.ts.map
@@ -9,4 +9,3 @@ export declare function verifyAtomicWriteResult(params: {
9
9
  expectedMode?: number;
10
10
  parentGuard: AnyAsyncDirectoryGuard;
11
11
  }): Promise<void>;
12
- //# sourceMappingURL=root-write-verification.d.ts.map
package/dist/root.d.ts CHANGED
@@ -4,4 +4,3 @@ export type { CopyCloneMode } from "./copy-policy.js";
4
4
  export type { RootEntriesOptions } from "./root-entries.js";
5
5
  export type { ContainmentGuarantee } from "./containment.js";
6
6
  export type { RootWalkDataEntry, RootWalkDataEntryKind, RootWalkDirectoryErrorBehavior, RootWalkEntry, RootWalkEntryFilter, RootWalkEntryFilterResult, RootWalkEntryKind, RootWalkLimitBehavior, RootWalkOptions, RootWalkSymlinkPolicy, } from "./root-walk.js";
7
- //# sourceMappingURL=root.d.ts.map
@@ -7,6 +7,5 @@ export declare function assertNoDriveRelativePathSegments(value: string, label:
7
7
  export declare function trimHyphenEdges(value: string): string;
8
8
  export declare function isSafePathSegment(segment: string, options?: SafePathSegmentOptions): boolean;
9
9
  export declare function assertSafePathSegment(segment: string, options?: SafePathSegmentOptions): string;
10
- export declare function sanitizeSafePathSegment(value: string, fallback: string, options?: SafePathSegmentOptions): string;
10
+ export declare function sanitizeSafePathSegment(value: string): string | undefined;
11
11
  export declare function assertSafePathPrefix(prefix: string, options?: SafePathSegmentOptions): string;
12
- //# sourceMappingURL=safe-path-segment.d.ts.map
@@ -47,17 +47,14 @@ export function assertSafePathSegment(segment, options = {}) {
47
47
  }
48
48
  return segment;
49
49
  }
50
- export function sanitizeSafePathSegment(value, fallback, options = {}) {
50
+ export function sanitizeSafePathSegment(value) {
51
51
  const sanitized = value
52
52
  .trim()
53
53
  .replace(/[\\/]+/g, "-")
54
54
  .replace(/\0/g, "")
55
55
  .replace(/[^A-Za-z0-9._-]+/g, "-");
56
56
  const trimmed = trimHyphenEdges(sanitized);
57
- if (isSafePathSegment(trimmed, options)) {
58
- return trimmed;
59
- }
60
- return assertSafePathSegment(fallback, { ...options, label: "fallback path segment" });
57
+ return isSafePathSegment(trimmed, { allowDotPrefix: true }) ? trimmed : undefined;
61
58
  }
62
59
  export function assertSafePathPrefix(prefix, options = {}) {
63
60
  // Prefixes are often derived from safe filenames. Normalize harmless
@@ -23,4 +23,3 @@ export declare function prepareSecretFileWrite(params: Omit<SecretFileWriteParam
23
23
  export declare function writeSecretFileAtomic(params: SecretFileWriteParams): Promise<void>;
24
24
  export declare function createSecretFileAtomic(params: SecretFileWriteParams): Promise<void>;
25
25
  export {};
26
- //# sourceMappingURL=secret-file.d.ts.map
@@ -31,29 +31,19 @@ export function readSecretFileSync(filePath, label, options = {}) {
31
31
  }
32
32
  let raw;
33
33
  try {
34
- const openedIdentity = inspectFileIdentitySync(() => {
35
- const stat = fs.fstatSync(opened.fd, { bigint: true });
36
- if (!stat.isFile() || (rejectHardlinks && stat.nlink > 1n)) {
37
- throw new FsSafeError("path-mismatch", "security validation failed");
38
- }
39
- return stat;
40
- }, previewStat);
41
- inspectFileIdentitySync(() => {
42
- const stat = fs.lstatSync(opened.path, { bigint: true });
43
- if (!stat.isFile() || (rejectHardlinks && stat.nlink > 1n)) {
44
- throw new FsSafeError("path-mismatch", "security validation failed");
45
- }
46
- return stat;
47
- }, openedIdentity);
34
+ // The pin already compared the descriptor and resolved name without yielding.
35
+ const openedIdentity = inspectFileIdentitySync(() => opened.identity, previewStat);
48
36
  inspectFileIdentitySync(() => inspectInput("secret path became a symlink"), openedIdentity);
49
37
  raw = readFileDescriptorBoundedSync(opened.fd, maxBytes).toString("utf8");
50
38
  }
51
39
  catch (error) {
40
+ try {
41
+ fs.closeSync(opened.fd);
42
+ }
43
+ catch { /* Preserve the read failure. */ }
52
44
  throw secretReadError(error instanceof FsSafeError ? error.code : "read-failed", "read", label, resolvedPath, error);
53
45
  }
54
- finally {
55
- fs.closeSync(opened.fd);
56
- }
46
+ fs.closeSync(opened.fd);
57
47
  return trimSecretFileContent(raw, label, resolvedPath);
58
48
  }
59
49
  export function tryReadSecretFileSync(filePath, label, options = {}) {
@@ -1,4 +1,3 @@
1
1
  import { type SecretFileReadOptions } from "./secret-read-policy.js";
2
2
  export declare function readSecretFile(filePath: string, label: string, options?: SecretFileReadOptions): Promise<string>;
3
3
  export declare function tryReadSecretFile(filePath: string | undefined, label: string, options?: SecretFileReadOptions): Promise<string | undefined>;
4
- //# sourceMappingURL=secret-read-async.d.ts.map