@openclaw/fs-safe 0.17.0 → 0.18.1

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 (690) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/absolute-path.d.ts +0 -1
  3. package/dist/advanced.d.ts +2 -2
  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 +1 -2
  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-parser-errors.d.ts +0 -1
  16. package/dist/archive-parser.wasm +0 -0
  17. package/dist/archive-plan.d.ts +72 -2
  18. package/dist/archive-plan.js +86 -22
  19. package/dist/archive-read.d.ts +0 -1
  20. package/dist/archive-staging.d.ts +0 -1
  21. package/dist/archive-tar-stream.d.ts +0 -1
  22. package/dist/archive-tar-wasm.d.ts +1 -2
  23. package/dist/archive-zip-admission.d.ts +0 -1
  24. package/dist/archive-zip-count.d.ts +0 -1
  25. package/dist/archive-zip-directory.d.ts +1 -2
  26. package/dist/archive-zip-entry.d.ts +1 -2
  27. package/dist/archive-zip-entry.js +1 -1
  28. package/dist/archive-zip-integrity.d.ts +0 -1
  29. package/dist/archive-zip-loader.d.ts +0 -1
  30. package/dist/archive-zip-manifest.d.ts +0 -1
  31. package/dist/archive-zip-names.d.ts +0 -1
  32. package/dist/archive-zip-preflight.d.ts +0 -1
  33. package/dist/archive.d.ts +8 -6
  34. package/dist/archive.js +204 -168
  35. package/dist/async-lock.d.ts +0 -1
  36. package/dist/atomic.d.ts +3 -2
  37. package/dist/bounded-read-stream.d.ts +0 -1
  38. package/dist/bounded-read.d.ts +0 -1
  39. package/dist/byte-budget.d.ts +0 -1
  40. package/dist/byte-view.d.ts +0 -1
  41. package/dist/clone-metadata.d.ts +0 -1
  42. package/dist/config.d.ts +0 -1
  43. package/dist/containment.d.ts +0 -1
  44. package/dist/copy-file-input.d.ts +0 -1
  45. package/dist/copy-policy.d.ts +0 -1
  46. package/dist/copy-publication.d.ts +1 -2
  47. package/dist/copy-tree-portable.d.ts +0 -1
  48. package/dist/copy-tree-portable.js +9 -6
  49. package/dist/copy.d.ts +0 -1
  50. package/dist/copy.js +5 -5
  51. package/dist/create-owned-file.d.ts +0 -1
  52. package/dist/create.d.ts +16 -3
  53. package/dist/create.js +388 -2
  54. package/dist/creation-boundary.d.ts +60 -0
  55. package/dist/creation-boundary.js +371 -0
  56. package/dist/deny-mutations.d.ts +2 -3
  57. package/dist/deny-mutations.js +55 -35
  58. package/dist/device-path.d.ts +0 -1
  59. package/dist/directory-durability.d.ts +0 -1
  60. package/dist/directory-entry-path.d.ts +0 -1
  61. package/dist/directory-guard.d.ts +2 -7
  62. package/dist/directory-guard.js +25 -56
  63. package/dist/directory-mode-node.d.ts +0 -1
  64. package/dist/directory-mode-node.js +12 -2
  65. package/dist/directory-mode-owner.d.ts +0 -1
  66. package/dist/directory-receipt.d.ts +0 -1
  67. package/dist/durability.d.ts +2 -2
  68. package/dist/effective-uid.d.ts +0 -1
  69. package/dist/error-detail.d.ts +0 -1
  70. package/dist/errors.d.ts +0 -1
  71. package/dist/file-cleanup.d.ts +0 -1
  72. package/dist/file-contents.d.ts +0 -1
  73. package/dist/file-handle-transfer.d.ts +0 -1
  74. package/dist/file-hash.d.ts +0 -1
  75. package/dist/file-hash.js +170 -66
  76. package/dist/file-identity.d.ts +0 -1
  77. package/dist/file-lock-sync-acquisition.d.ts +22 -0
  78. package/dist/file-lock-sync-acquisition.js +98 -0
  79. package/dist/file-lock-sync-admission.d.ts +0 -2
  80. package/dist/file-lock-sync-admission.js +9 -48
  81. package/dist/file-lock-sync-root-acquire.d.ts +0 -1
  82. package/dist/file-lock-sync-root-acquire.js +33 -103
  83. package/dist/file-lock-sync-root-arbitration.d.ts +0 -1
  84. package/dist/file-lock-sync-root-held.d.ts +0 -1
  85. package/dist/file-lock-sync-root-io.d.ts +0 -1
  86. package/dist/file-lock-sync-root-mutation.d.ts +4 -5
  87. package/dist/file-lock-sync-root-mutation.js +7 -9
  88. package/dist/file-lock-sync-root-options.d.ts +0 -1
  89. package/dist/file-lock-sync-root-registration.d.ts +0 -1
  90. package/dist/file-lock-sync-root.d.ts +3 -3
  91. package/dist/file-lock-sync-root.js +14 -87
  92. package/dist/file-lock-sync-stale-admission.d.ts +2 -7
  93. package/dist/file-lock-sync-stale-admission.js +18 -27
  94. package/dist/file-lock-sync.d.ts +4 -22
  95. package/dist/file-lock-sync.js +38 -117
  96. package/dist/file-lock.d.ts +0 -1
  97. package/dist/file-observation.d.ts +0 -1
  98. package/dist/file-store-boundary.d.ts +7 -2
  99. package/dist/file-store-boundary.js +64 -27
  100. package/dist/file-store-prune.d.ts +0 -1
  101. package/dist/file-store-sync-directory.d.ts +0 -1
  102. package/dist/file-store-sync-directory.js +194 -231
  103. package/dist/file-store-sync-write.d.ts +0 -1
  104. package/dist/file-store-sync-write.js +18 -29
  105. package/dist/file-store.d.ts +0 -1
  106. package/dist/file-store.js +4 -10
  107. package/dist/file-sync.d.ts +0 -1
  108. package/dist/filename.d.ts +0 -1
  109. package/dist/filename.js +1 -7
  110. package/dist/fs.d.ts +0 -1
  111. package/dist/guarded-mkdir.d.ts +1 -2
  112. package/dist/guarded-mutation.d.ts +0 -7
  113. package/dist/guarded-mutation.js +6 -11
  114. package/dist/guest-dispatch-python.d.ts +0 -1
  115. package/dist/guest-dispatch-python.js +41 -90
  116. package/dist/guest-native-python.d.ts +0 -1
  117. package/dist/guest.d.ts +0 -1
  118. package/dist/home-dir.d.ts +0 -1
  119. package/dist/index.d.ts +9 -7
  120. package/dist/install-path.d.ts +0 -1
  121. package/dist/json-document-store.d.ts +0 -1
  122. package/dist/json-durable-queue-directory.d.ts +13 -1
  123. package/dist/json-durable-queue-directory.js +134 -0
  124. package/dist/json-durable-queue-ownership.d.ts +0 -1
  125. package/dist/json-durable-queue-ownership.js +42 -61
  126. package/dist/json-durable-queue-read.d.ts +0 -1
  127. package/dist/json-durable-queue-read.js +13 -9
  128. package/dist/json-durable-queue.d.ts +0 -1
  129. package/dist/json-durable-queue.js +8 -132
  130. package/dist/json-store.d.ts +0 -1
  131. package/dist/json-store.js +1 -2
  132. package/dist/json-stringify.d.ts +0 -1
  133. package/dist/json.d.ts +0 -1
  134. package/dist/json.js +7 -17
  135. package/dist/local-file-access.d.ts +0 -1
  136. package/dist/local-file-access.js +3 -10
  137. package/dist/local-file-descriptor.d.ts +0 -1
  138. package/dist/local-roots.d.ts +0 -1
  139. package/dist/lock-config.d.ts +0 -1
  140. package/dist/move-path-cleanup.d.ts +0 -1
  141. package/dist/move-path-stage.d.ts +0 -1
  142. package/dist/move-path.d.ts +0 -1
  143. package/dist/move-path.js +1 -2
  144. package/dist/mutation-authority.d.ts +0 -1
  145. package/dist/native-binding.d.ts +0 -1
  146. package/dist/native-config.d.ts +0 -1
  147. package/dist/native-directory-observation.d.ts +0 -1
  148. package/dist/native-fallback-warning.d.ts +0 -1
  149. package/dist/native-operations.d.ts +1 -5
  150. package/dist/native-operations.js +2 -7
  151. package/dist/native-parent-admission.d.ts +0 -1
  152. package/dist/native-pinned-write-windows.d.ts +1 -2
  153. package/dist/native-pinned-write-windows.js +1 -1
  154. package/dist/native-pinned-write.d.ts +1 -2
  155. package/dist/native-pinned-write.js +7 -16
  156. package/dist/native-policy-directory-observation.d.ts +0 -1
  157. package/dist/native-policy-parent-windows.d.ts +1 -2
  158. package/dist/native-rename-outcome.d.ts +0 -1
  159. package/dist/native-staged-file.d.ts +17 -5
  160. package/dist/native-staged-file.js +56 -65
  161. package/dist/native.d.ts +0 -1
  162. package/dist/opened-file-failure.d.ts +0 -1
  163. package/dist/opened-realpath.d.ts +0 -1
  164. package/dist/output.d.ts +0 -1
  165. package/dist/overwrite-file-handle.d.ts +0 -1
  166. package/dist/owner-dacl.d.ts +0 -1
  167. package/dist/path-case.d.ts +0 -1
  168. package/dist/path-policy.d.ts +0 -1
  169. package/dist/path-prefix.d.ts +0 -1
  170. package/dist/path-scope-lexical.d.ts +0 -1
  171. package/dist/path-segment-route.d.ts +0 -1
  172. package/dist/path-suffix-aliases.d.ts +0 -1
  173. package/dist/path.d.ts +0 -1
  174. package/dist/permission-exec.d.ts +0 -1
  175. package/dist/permission-exec.js +19 -25
  176. package/dist/permissions-public.d.ts +0 -1
  177. package/dist/permissions-windows.d.ts +2 -10
  178. package/dist/permissions-windows.js +10 -30
  179. package/dist/permissions.d.ts +0 -1
  180. package/dist/permissions.js +8 -16
  181. package/dist/pinned-mutation-admission.d.ts +1 -2
  182. package/dist/pinned-mutation-observation.d.ts +0 -1
  183. package/dist/pinned-mutation-shared-route.d.ts +0 -1
  184. package/dist/pinned-open.d.ts +1 -1
  185. package/dist/pinned-open.js +7 -2
  186. package/dist/pinned-operation.d.ts +1 -2
  187. package/dist/pinned-operation.js +3 -16
  188. package/dist/pinned-write-input.d.ts +0 -1
  189. package/dist/pinned-write-mode.d.ts +0 -1
  190. package/dist/pinned-write-mode.js +1 -1
  191. package/dist/pinned-write-staged.d.ts +0 -1
  192. package/dist/pinned-write-staged.js +1 -2
  193. package/dist/pinned-write-types.d.ts +9 -21
  194. package/dist/pinned-write.d.ts +0 -2
  195. package/dist/pinned-write.js +3 -5
  196. package/dist/positional-read.d.ts +0 -1
  197. package/dist/private-directory.d.ts +0 -1
  198. package/dist/private-producer-handoff-sync.d.ts +2 -13
  199. package/dist/private-producer-handoff-sync.js +10 -52
  200. package/dist/private-producer-handoff.d.ts +23 -4
  201. package/dist/private-producer-handoff.js +69 -46
  202. package/dist/private-temp-workspace.d.ts +0 -1
  203. package/dist/private-temp-workspace.js +11 -37
  204. package/dist/publish-copy-stage.d.ts +1 -2
  205. package/dist/publish-file-failure.d.ts +0 -1
  206. package/dist/publish-file.d.ts +0 -2
  207. package/dist/publish-file.js +1 -2
  208. package/dist/read-open-flags.d.ts +0 -1
  209. package/dist/read-opened-file.d.ts +0 -1
  210. package/dist/realpath.d.ts +0 -1
  211. package/dist/recursive-mkdir-path.d.ts +0 -1
  212. package/dist/regular-file.d.ts +0 -1
  213. package/dist/regular-file.js +77 -139
  214. package/dist/replace-directory.d.ts +0 -1
  215. package/dist/replace-directory.js +1 -2
  216. package/dist/replace-file-copy-fallback.d.ts +0 -1
  217. package/dist/replace-file-copy-fallback.js +14 -3
  218. package/dist/replace-file-copy-source.d.ts +0 -1
  219. package/dist/replace-file-copy-source.js +6 -1
  220. package/dist/replace-file-descriptor.d.ts +0 -1
  221. package/dist/replace-file-descriptor.js +6 -1
  222. package/dist/replace-file-mode.d.ts +0 -1
  223. package/dist/replace-file-rename-policy.d.ts +1 -3
  224. package/dist/replace-file-temp-owner.d.ts +12 -13
  225. package/dist/replace-file-temp-owner.js +66 -85
  226. package/dist/replace-file.d.ts +3 -4
  227. package/dist/replace-file.js +1 -1
  228. package/dist/retained-directory-replacement.d.ts +0 -1
  229. package/dist/root-boundary.d.ts +0 -1
  230. package/dist/root-context.d.ts +0 -1
  231. package/dist/root-context.js +3 -7
  232. package/dist/root-create-input.d.ts +1 -2
  233. package/dist/root-directory-creation.d.ts +1 -2
  234. package/dist/root-directory-creation.js +1 -1
  235. package/dist/root-directory-list.d.ts +0 -1
  236. package/dist/root-directory-list.js +3 -7
  237. package/dist/root-directory.d.ts +0 -1
  238. package/dist/root-entries.d.ts +0 -1
  239. package/dist/root-entries.js +2 -2
  240. package/dist/root-errors.d.ts +4 -1
  241. package/dist/root-errors.js +5 -3
  242. package/dist/root-file-final-admission.d.ts +0 -1
  243. package/dist/root-file.d.ts +0 -1
  244. package/dist/root-impl.d.ts +2 -15
  245. package/dist/root-impl.js +136 -112
  246. package/dist/root-move-noreplace.d.ts +0 -1
  247. package/dist/root-move-noreplace.js +4 -10
  248. package/dist/root-move-preflight.d.ts +0 -1
  249. package/dist/root-observed-path.d.ts +0 -1
  250. package/dist/root-observed-path.js +2 -4
  251. package/dist/root-options.d.ts +1 -2
  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 +38 -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-stat.js +2 -4
  258. package/dist/root-path.d.ts +0 -1
  259. package/dist/root-path.js +60 -188
  260. package/dist/root-paths-lexical.d.ts +0 -1
  261. package/dist/root-paths.d.ts +0 -1
  262. package/dist/root-public-types.d.ts +11 -0
  263. package/dist/root-read-admission.d.ts +0 -1
  264. package/dist/root-read-admission.js +31 -44
  265. package/dist/root-remove-identity.d.ts +0 -1
  266. package/dist/root-remove-identity.js +2 -4
  267. package/dist/root-remove-receipt.d.ts +0 -1
  268. package/dist/root-remove.d.ts +0 -1
  269. package/dist/root-remove.js +2 -4
  270. package/dist/root-symlink-policy.d.ts +0 -1
  271. package/dist/root-walk.d.ts +0 -1
  272. package/dist/root-write-admission.d.ts +1 -2
  273. package/dist/root-write-admission.js +3 -7
  274. package/dist/root-write-compatibility.d.ts +0 -1
  275. package/dist/root-write-complete-parent.d.ts +0 -1
  276. package/dist/root-write-complete-parent.js +2 -3
  277. package/dist/root-write-lock-binding.d.ts +0 -1
  278. package/dist/root-write-mode.d.ts +0 -1
  279. package/dist/root-write-publication.d.ts +0 -1
  280. package/dist/root-write-verification.d.ts +1 -2
  281. package/dist/root.d.ts +2 -7
  282. package/dist/safe-path-segment.d.ts +1 -2
  283. package/dist/safe-path-segment.js +2 -5
  284. package/dist/secret-file.d.ts +0 -1
  285. package/dist/secret-file.js +7 -18
  286. package/dist/secret-read-async.d.ts +0 -1
  287. package/dist/secret-read-async.js +5 -5
  288. package/dist/secret-read-policy.d.ts +0 -1
  289. package/dist/secret.d.ts +0 -1
  290. package/dist/secure-file-windows.d.ts +0 -6
  291. package/dist/secure-file-windows.js +13 -28
  292. package/dist/secure-file.d.ts +0 -1
  293. package/dist/secure-file.js +9 -9
  294. package/dist/secure-temp-dir.d.ts +0 -1
  295. package/dist/secure-temp-repair.d.ts +0 -1
  296. package/dist/secure-temp-repair.js +5 -1
  297. package/dist/sibling-staged-file.d.ts +0 -1
  298. package/dist/sibling-staged-file.js +32 -39
  299. package/dist/sibling-temp.d.ts +0 -1
  300. package/dist/sidecar-lock-acquire.d.ts +1 -2
  301. package/dist/sidecar-lock-acquire.js +37 -61
  302. package/dist/sidecar-lock-admission-context.d.ts +0 -1
  303. package/dist/sidecar-lock-admission-parser.d.ts +0 -1
  304. package/dist/sidecar-lock-admission.d.ts +1 -5
  305. package/dist/sidecar-lock-admission.js +1 -7
  306. package/dist/sidecar-lock-handle.d.ts +0 -1
  307. package/dist/sidecar-lock-policy.d.ts +4 -1
  308. package/dist/sidecar-lock-policy.js +23 -0
  309. package/dist/sidecar-lock-reclaim.d.ts +0 -1
  310. package/dist/sidecar-lock-registration.d.ts +13 -0
  311. package/dist/sidecar-lock-registration.js +47 -0
  312. package/dist/sidecar-lock-root.d.ts +0 -1
  313. package/dist/sidecar-lock-stale-admission.d.ts +0 -1
  314. package/dist/sidecar-lock-stale-admission.js +2 -6
  315. package/dist/sidecar-lock-target.d.ts +0 -1
  316. package/dist/sidecar-lock-types.d.ts +22 -17
  317. package/dist/sidecar-lock.d.ts +0 -1
  318. package/dist/sidecar-lock.js +16 -83
  319. package/dist/staged-directory.d.ts +0 -1
  320. package/dist/staged-file-settlement.d.ts +0 -1
  321. package/dist/staged-file-types.d.ts +0 -1
  322. package/dist/stat-observation.d.ts +0 -1
  323. package/dist/store.d.ts +0 -1
  324. package/dist/strict-file-identity.d.ts +0 -1
  325. package/dist/string-coerce.d.ts +0 -1
  326. package/dist/suppressed-error.d.ts +0 -1
  327. package/dist/symlink-parents.d.ts +0 -1
  328. package/dist/temp-cleanup.d.ts +0 -1
  329. package/dist/temp-target.d.ts +0 -1
  330. package/dist/temp-target.js +7 -46
  331. package/dist/temp-workspace-admission.d.ts +0 -8
  332. package/dist/temp-workspace-admission.js +1 -7
  333. package/dist/temp-workspace-child-admission.d.ts +16 -6
  334. package/dist/temp-workspace-child-admission.js +71 -15
  335. package/dist/temp-workspace-descriptor.d.ts +1 -7
  336. package/dist/temp-workspace-descriptor.js +1 -4
  337. package/dist/temp-workspace-owner.d.ts +1 -1
  338. package/dist/temp-workspace-owner.js +45 -22
  339. package/dist/temp-workspace-types.d.ts +0 -1
  340. package/dist/temp.d.ts +0 -1
  341. package/dist/test-hooks.d.ts +0 -1
  342. package/dist/text-atomic.d.ts +0 -1
  343. package/dist/text-atomic.js +1 -1
  344. package/dist/timing.d.ts +0 -1
  345. package/dist/trash.d.ts +0 -1
  346. package/dist/types.d.ts +0 -1
  347. package/dist/unicode-path.d.ts +0 -1
  348. package/dist/walk.d.ts +0 -1
  349. package/dist/windows-command.d.ts +0 -1
  350. package/dist/windows-owner.d.ts +0 -1
  351. package/dist/windows-owner.js +5 -2
  352. package/dist/windows-path-alias.d.ts +1 -1
  353. package/dist/windows-path-alias.js +12 -43
  354. package/dist/windows-path-syntax.d.ts +5 -0
  355. package/dist/windows-path-syntax.js +21 -0
  356. package/dist/windows-security-command.d.ts +0 -1
  357. package/dist/windows-security-facts.d.ts +0 -1
  358. package/dist/write-file-handle.d.ts +0 -1
  359. package/dist/write-open-flags.d.ts +0 -1
  360. package/dist/write-queue.d.ts +0 -1
  361. package/docs/advanced.md +3 -1
  362. package/docs/atomic.md +14 -0
  363. package/docs/copy.md +2 -0
  364. package/docs/mutation-policy-proof.md +6 -4
  365. package/docs/permissions.md +6 -0
  366. package/docs/root.md +10 -0
  367. package/docs/secret-file.md +8 -0
  368. package/docs/sidecar-lock.md +4 -0
  369. package/docs/store.md +6 -0
  370. package/docs/temp.md +8 -1
  371. package/docs/writing.md +14 -3
  372. package/package.json +8 -9
  373. package/dist/absolute-path.d.ts.map +0 -1
  374. package/dist/advanced.d.ts.map +0 -1
  375. package/dist/archive-crc32.d.ts.map +0 -1
  376. package/dist/archive-deadline.d.ts.map +0 -1
  377. package/dist/archive-durability.d.ts.map +0 -1
  378. package/dist/archive-entry.d.ts.map +0 -1
  379. package/dist/archive-errors.d.ts.map +0 -1
  380. package/dist/archive-gzip-tail.d.ts.map +0 -1
  381. package/dist/archive-input.d.ts.map +0 -1
  382. package/dist/archive-kind.d.ts.map +0 -1
  383. package/dist/archive-limits.d.ts.map +0 -1
  384. package/dist/archive-merge.d.ts.map +0 -1
  385. package/dist/archive-native.d.ts +0 -22
  386. package/dist/archive-native.d.ts.map +0 -1
  387. package/dist/archive-native.js +0 -98
  388. package/dist/archive-options.d.ts +0 -25
  389. package/dist/archive-options.d.ts.map +0 -1
  390. package/dist/archive-parser-errors.d.ts.map +0 -1
  391. package/dist/archive-plan.d.ts.map +0 -1
  392. package/dist/archive-policy.d.ts +0 -22
  393. package/dist/archive-policy.d.ts.map +0 -1
  394. package/dist/archive-policy.js +0 -38
  395. package/dist/archive-read.d.ts.map +0 -1
  396. package/dist/archive-staging.d.ts.map +0 -1
  397. package/dist/archive-tar-inspect.d.ts +0 -7
  398. package/dist/archive-tar-inspect.d.ts.map +0 -1
  399. package/dist/archive-tar-inspect.js +0 -62
  400. package/dist/archive-tar-stream.d.ts.map +0 -1
  401. package/dist/archive-tar-wasm.d.ts.map +0 -1
  402. package/dist/archive-tar.d.ts +0 -19
  403. package/dist/archive-tar.d.ts.map +0 -1
  404. package/dist/archive-tar.js +0 -21
  405. package/dist/archive-zip-admission.d.ts.map +0 -1
  406. package/dist/archive-zip-count.d.ts.map +0 -1
  407. package/dist/archive-zip-directory.d.ts.map +0 -1
  408. package/dist/archive-zip-entry.d.ts.map +0 -1
  409. package/dist/archive-zip-integrity.d.ts.map +0 -1
  410. package/dist/archive-zip-loader.d.ts.map +0 -1
  411. package/dist/archive-zip-manifest.d.ts.map +0 -1
  412. package/dist/archive-zip-names.d.ts.map +0 -1
  413. package/dist/archive-zip-preflight.d.ts.map +0 -1
  414. package/dist/archive.d.ts.map +0 -1
  415. package/dist/async-lock.d.ts.map +0 -1
  416. package/dist/atomic.d.ts.map +0 -1
  417. package/dist/bounded-read-stream.d.ts.map +0 -1
  418. package/dist/bounded-read.d.ts.map +0 -1
  419. package/dist/byte-budget.d.ts.map +0 -1
  420. package/dist/byte-view.d.ts.map +0 -1
  421. package/dist/clone-metadata.d.ts.map +0 -1
  422. package/dist/config.d.ts.map +0 -1
  423. package/dist/containment.d.ts.map +0 -1
  424. package/dist/copy-file-input.d.ts.map +0 -1
  425. package/dist/copy-policy.d.ts.map +0 -1
  426. package/dist/copy-publication.d.ts.map +0 -1
  427. package/dist/copy-tree-portable.d.ts.map +0 -1
  428. package/dist/copy.d.ts.map +0 -1
  429. package/dist/create-directory.d.ts +0 -20
  430. package/dist/create-directory.d.ts.map +0 -1
  431. package/dist/create-directory.js +0 -130
  432. package/dist/create-file-async.d.ts +0 -7
  433. package/dist/create-file-async.d.ts.map +0 -1
  434. package/dist/create-file-async.js +0 -121
  435. package/dist/create-file.d.ts +0 -8
  436. package/dist/create-file.d.ts.map +0 -1
  437. package/dist/create-file.js +0 -190
  438. package/dist/create-owned-file.d.ts.map +0 -1
  439. package/dist/create.d.ts.map +0 -1
  440. package/dist/creation-darwin.d.ts +0 -6
  441. package/dist/creation-darwin.d.ts.map +0 -1
  442. package/dist/creation-darwin.js +0 -70
  443. package/dist/creation-file-state.d.ts +0 -19
  444. package/dist/creation-file-state.d.ts.map +0 -1
  445. package/dist/creation-file-state.js +0 -118
  446. package/dist/creation-path.d.ts +0 -21
  447. package/dist/creation-path.d.ts.map +0 -1
  448. package/dist/creation-path.js +0 -71
  449. package/dist/creation-permissions.d.ts +0 -19
  450. package/dist/creation-permissions.d.ts.map +0 -1
  451. package/dist/creation-permissions.js +0 -125
  452. package/dist/deny-mutations.d.ts.map +0 -1
  453. package/dist/device-path.d.ts.map +0 -1
  454. package/dist/directory-durability.d.ts.map +0 -1
  455. package/dist/directory-entry-path.d.ts.map +0 -1
  456. package/dist/directory-guard.d.ts.map +0 -1
  457. package/dist/directory-mode-node.d.ts.map +0 -1
  458. package/dist/directory-mode-owner.d.ts.map +0 -1
  459. package/dist/directory-receipt.d.ts.map +0 -1
  460. package/dist/durability.d.ts.map +0 -1
  461. package/dist/effective-uid.d.ts.map +0 -1
  462. package/dist/error-detail.d.ts.map +0 -1
  463. package/dist/errors.d.ts.map +0 -1
  464. package/dist/file-cleanup.d.ts.map +0 -1
  465. package/dist/file-contents.d.ts.map +0 -1
  466. package/dist/file-handle-transfer.d.ts.map +0 -1
  467. package/dist/file-hash.d.ts.map +0 -1
  468. package/dist/file-identity.d.ts.map +0 -1
  469. package/dist/file-lock-sync-admission.d.ts.map +0 -1
  470. package/dist/file-lock-sync-root-acquire.d.ts.map +0 -1
  471. package/dist/file-lock-sync-root-arbitration.d.ts.map +0 -1
  472. package/dist/file-lock-sync-root-held.d.ts.map +0 -1
  473. package/dist/file-lock-sync-root-io.d.ts.map +0 -1
  474. package/dist/file-lock-sync-root-mutation.d.ts.map +0 -1
  475. package/dist/file-lock-sync-root-options.d.ts.map +0 -1
  476. package/dist/file-lock-sync-root-registration.d.ts.map +0 -1
  477. package/dist/file-lock-sync-root.d.ts.map +0 -1
  478. package/dist/file-lock-sync-stale-admission.d.ts.map +0 -1
  479. package/dist/file-lock-sync.d.ts.map +0 -1
  480. package/dist/file-lock.d.ts.map +0 -1
  481. package/dist/file-observation.d.ts.map +0 -1
  482. package/dist/file-store-boundary.d.ts.map +0 -1
  483. package/dist/file-store-copy-source.d.ts +0 -5
  484. package/dist/file-store-copy-source.d.ts.map +0 -1
  485. package/dist/file-store-copy-source.js +0 -31
  486. package/dist/file-store-limit.d.ts +0 -2
  487. package/dist/file-store-limit.d.ts.map +0 -1
  488. package/dist/file-store-limit.js +0 -8
  489. package/dist/file-store-path.d.ts +0 -3
  490. package/dist/file-store-path.d.ts.map +0 -1
  491. package/dist/file-store-path.js +0 -30
  492. package/dist/file-store-prune.d.ts.map +0 -1
  493. package/dist/file-store-sync-directory.d.ts.map +0 -1
  494. package/dist/file-store-sync-write.d.ts.map +0 -1
  495. package/dist/file-store.d.ts.map +0 -1
  496. package/dist/file-sync.d.ts.map +0 -1
  497. package/dist/filename.d.ts.map +0 -1
  498. package/dist/fs.d.ts.map +0 -1
  499. package/dist/guarded-mkdir.d.ts.map +0 -1
  500. package/dist/guarded-mutation.d.ts.map +0 -1
  501. package/dist/guest-dispatch-python.d.ts.map +0 -1
  502. package/dist/guest-native-python.d.ts.map +0 -1
  503. package/dist/guest.d.ts.map +0 -1
  504. package/dist/home-dir.d.ts.map +0 -1
  505. package/dist/index.d.ts.map +0 -1
  506. package/dist/install-path.d.ts.map +0 -1
  507. package/dist/json-document-store.d.ts.map +0 -1
  508. package/dist/json-durable-queue-directory.d.ts.map +0 -1
  509. package/dist/json-durable-queue-ownership.d.ts.map +0 -1
  510. package/dist/json-durable-queue-paths.d.ts +0 -11
  511. package/dist/json-durable-queue-paths.d.ts.map +0 -1
  512. package/dist/json-durable-queue-paths.js +0 -20
  513. package/dist/json-durable-queue-read.d.ts.map +0 -1
  514. package/dist/json-durable-queue.d.ts.map +0 -1
  515. package/dist/json-store.d.ts.map +0 -1
  516. package/dist/json-stringify.d.ts.map +0 -1
  517. package/dist/json.d.ts.map +0 -1
  518. package/dist/local-file-access.d.ts.map +0 -1
  519. package/dist/local-file-descriptor.d.ts.map +0 -1
  520. package/dist/local-roots.d.ts.map +0 -1
  521. package/dist/lock-config.d.ts.map +0 -1
  522. package/dist/move-path-cleanup.d.ts.map +0 -1
  523. package/dist/move-path-stage.d.ts.map +0 -1
  524. package/dist/move-path.d.ts.map +0 -1
  525. package/dist/mutation-authority.d.ts.map +0 -1
  526. package/dist/native-binding.d.ts.map +0 -1
  527. package/dist/native-config.d.ts.map +0 -1
  528. package/dist/native-directory-observation.d.ts.map +0 -1
  529. package/dist/native-fallback-warning.d.ts.map +0 -1
  530. package/dist/native-operations.d.ts.map +0 -1
  531. package/dist/native-parent-admission.d.ts.map +0 -1
  532. package/dist/native-pinned-write-windows.d.ts.map +0 -1
  533. package/dist/native-pinned-write.d.ts.map +0 -1
  534. package/dist/native-policy-directory-observation.d.ts.map +0 -1
  535. package/dist/native-policy-parent-windows.d.ts.map +0 -1
  536. package/dist/native-rename-outcome.d.ts.map +0 -1
  537. package/dist/native-staged-file.d.ts.map +0 -1
  538. package/dist/native.d.ts.map +0 -1
  539. package/dist/opened-file-failure.d.ts.map +0 -1
  540. package/dist/opened-realpath.d.ts.map +0 -1
  541. package/dist/output.d.ts.map +0 -1
  542. package/dist/overwrite-file-handle.d.ts.map +0 -1
  543. package/dist/owner-dacl.d.ts.map +0 -1
  544. package/dist/path-case.d.ts.map +0 -1
  545. package/dist/path-policy.d.ts.map +0 -1
  546. package/dist/path-prefix.d.ts.map +0 -1
  547. package/dist/path-scope-lexical.d.ts.map +0 -1
  548. package/dist/path-segment-route.d.ts.map +0 -1
  549. package/dist/path-suffix-aliases.d.ts.map +0 -1
  550. package/dist/path.d.ts.map +0 -1
  551. package/dist/permission-exec.d.ts.map +0 -1
  552. package/dist/permissions-public.d.ts.map +0 -1
  553. package/dist/permissions-windows.d.ts.map +0 -1
  554. package/dist/permissions.d.ts.map +0 -1
  555. package/dist/pinned-mutation-admission.d.ts.map +0 -1
  556. package/dist/pinned-mutation-observation.d.ts.map +0 -1
  557. package/dist/pinned-mutation-shared-route.d.ts.map +0 -1
  558. package/dist/pinned-open.d.ts.map +0 -1
  559. package/dist/pinned-operation.d.ts.map +0 -1
  560. package/dist/pinned-write-input.d.ts.map +0 -1
  561. package/dist/pinned-write-mode.d.ts.map +0 -1
  562. package/dist/pinned-write-staged.d.ts.map +0 -1
  563. package/dist/pinned-write-types.d.ts.map +0 -1
  564. package/dist/pinned-write.d.ts.map +0 -1
  565. package/dist/positional-read.d.ts.map +0 -1
  566. package/dist/private-directory.d.ts.map +0 -1
  567. package/dist/private-producer-handoff-sync.d.ts.map +0 -1
  568. package/dist/private-producer-handoff.d.ts.map +0 -1
  569. package/dist/private-temp-workspace.d.ts.map +0 -1
  570. package/dist/publish-copy-stage.d.ts.map +0 -1
  571. package/dist/publish-file-failure.d.ts.map +0 -1
  572. package/dist/publish-file.d.ts.map +0 -1
  573. package/dist/read-open-flags.d.ts.map +0 -1
  574. package/dist/read-opened-file.d.ts.map +0 -1
  575. package/dist/realpath.d.ts.map +0 -1
  576. package/dist/recursive-mkdir-path.d.ts.map +0 -1
  577. package/dist/regular-file.d.ts.map +0 -1
  578. package/dist/replace-directory.d.ts.map +0 -1
  579. package/dist/replace-file-copy-fallback.d.ts.map +0 -1
  580. package/dist/replace-file-copy-source.d.ts.map +0 -1
  581. package/dist/replace-file-descriptor.d.ts.map +0 -1
  582. package/dist/replace-file-mode.d.ts.map +0 -1
  583. package/dist/replace-file-rename-policy.d.ts.map +0 -1
  584. package/dist/replace-file-temp-owner.d.ts.map +0 -1
  585. package/dist/replace-file.d.ts.map +0 -1
  586. package/dist/retained-directory-replacement.d.ts.map +0 -1
  587. package/dist/root-boundary.d.ts.map +0 -1
  588. package/dist/root-context.d.ts.map +0 -1
  589. package/dist/root-create-input.d.ts.map +0 -1
  590. package/dist/root-directory-creation.d.ts.map +0 -1
  591. package/dist/root-directory-list.d.ts.map +0 -1
  592. package/dist/root-directory.d.ts.map +0 -1
  593. package/dist/root-entries.d.ts.map +0 -1
  594. package/dist/root-errors.d.ts.map +0 -1
  595. package/dist/root-file-final-admission.d.ts.map +0 -1
  596. package/dist/root-file.d.ts.map +0 -1
  597. package/dist/root-impl.d.ts.map +0 -1
  598. package/dist/root-move-noreplace.d.ts.map +0 -1
  599. package/dist/root-move-preflight.d.ts.map +0 -1
  600. package/dist/root-observed-path.d.ts.map +0 -1
  601. package/dist/root-options.d.ts.map +0 -1
  602. package/dist/root-path-errors.d.ts.map +0 -1
  603. package/dist/root-path-existing.d.ts.map +0 -1
  604. package/dist/root-path-observation.d.ts.map +0 -1
  605. package/dist/root-path-stat.d.ts.map +0 -1
  606. package/dist/root-path-symlink.d.ts +0 -7
  607. package/dist/root-path-symlink.d.ts.map +0 -1
  608. package/dist/root-path-symlink.js +0 -55
  609. package/dist/root-path.d.ts.map +0 -1
  610. package/dist/root-paths-lexical.d.ts.map +0 -1
  611. package/dist/root-paths.d.ts.map +0 -1
  612. package/dist/root-read-admission.d.ts.map +0 -1
  613. package/dist/root-remove-identity.d.ts.map +0 -1
  614. package/dist/root-remove-receipt.d.ts.map +0 -1
  615. package/dist/root-remove.d.ts.map +0 -1
  616. package/dist/root-symlink-policy.d.ts.map +0 -1
  617. package/dist/root-walk.d.ts.map +0 -1
  618. package/dist/root-write-admission.d.ts.map +0 -1
  619. package/dist/root-write-compatibility.d.ts.map +0 -1
  620. package/dist/root-write-complete-parent.d.ts.map +0 -1
  621. package/dist/root-write-lock-binding.d.ts.map +0 -1
  622. package/dist/root-write-mode.d.ts.map +0 -1
  623. package/dist/root-write-publication.d.ts.map +0 -1
  624. package/dist/root-write-verification.d.ts.map +0 -1
  625. package/dist/root.d.ts.map +0 -1
  626. package/dist/safe-path-segment.d.ts.map +0 -1
  627. package/dist/secret-file.d.ts.map +0 -1
  628. package/dist/secret-read-async.d.ts.map +0 -1
  629. package/dist/secret-read-policy.d.ts.map +0 -1
  630. package/dist/secret.d.ts.map +0 -1
  631. package/dist/secure-file-windows.d.ts.map +0 -1
  632. package/dist/secure-file.d.ts.map +0 -1
  633. package/dist/secure-temp-dir.d.ts.map +0 -1
  634. package/dist/secure-temp-repair.d.ts.map +0 -1
  635. package/dist/sibling-staged-file.d.ts.map +0 -1
  636. package/dist/sibling-temp.d.ts.map +0 -1
  637. package/dist/sidecar-lock-acquire.d.ts.map +0 -1
  638. package/dist/sidecar-lock-admission-context.d.ts.map +0 -1
  639. package/dist/sidecar-lock-admission-parser.d.ts.map +0 -1
  640. package/dist/sidecar-lock-admission.d.ts.map +0 -1
  641. package/dist/sidecar-lock-handle.d.ts.map +0 -1
  642. package/dist/sidecar-lock-policy.d.ts.map +0 -1
  643. package/dist/sidecar-lock-reclaim.d.ts.map +0 -1
  644. package/dist/sidecar-lock-root.d.ts.map +0 -1
  645. package/dist/sidecar-lock-stale-admission.d.ts.map +0 -1
  646. package/dist/sidecar-lock-target.d.ts.map +0 -1
  647. package/dist/sidecar-lock-types.d.ts.map +0 -1
  648. package/dist/sidecar-lock.d.ts.map +0 -1
  649. package/dist/staged-directory.d.ts.map +0 -1
  650. package/dist/staged-file-settlement.d.ts.map +0 -1
  651. package/dist/staged-file-types.d.ts.map +0 -1
  652. package/dist/standalone-publication-path.d.ts +0 -2
  653. package/dist/standalone-publication-path.d.ts.map +0 -1
  654. package/dist/standalone-publication-path.js +0 -6
  655. package/dist/stat-observation.d.ts.map +0 -1
  656. package/dist/store.d.ts.map +0 -1
  657. package/dist/strict-file-identity.d.ts.map +0 -1
  658. package/dist/string-coerce.d.ts.map +0 -1
  659. package/dist/suppressed-error.d.ts.map +0 -1
  660. package/dist/symlink-parents.d.ts.map +0 -1
  661. package/dist/temp-cleanup.d.ts.map +0 -1
  662. package/dist/temp-target.d.ts.map +0 -1
  663. package/dist/temp-workspace-admission.d.ts.map +0 -1
  664. package/dist/temp-workspace-child-admission.d.ts.map +0 -1
  665. package/dist/temp-workspace-descriptor.d.ts.map +0 -1
  666. package/dist/temp-workspace-identity.d.ts +0 -15
  667. package/dist/temp-workspace-identity.d.ts.map +0 -1
  668. package/dist/temp-workspace-identity.js +0 -41
  669. package/dist/temp-workspace-owner.d.ts.map +0 -1
  670. package/dist/temp-workspace-permissions.d.ts +0 -4
  671. package/dist/temp-workspace-permissions.d.ts.map +0 -1
  672. package/dist/temp-workspace-permissions.js +0 -32
  673. package/dist/temp-workspace-types.d.ts.map +0 -1
  674. package/dist/temp.d.ts.map +0 -1
  675. package/dist/test-hooks.d.ts.map +0 -1
  676. package/dist/text-atomic.d.ts.map +0 -1
  677. package/dist/timing.d.ts.map +0 -1
  678. package/dist/trash.d.ts.map +0 -1
  679. package/dist/types.d.ts.map +0 -1
  680. package/dist/unicode-path.d.ts.map +0 -1
  681. package/dist/walk.d.ts.map +0 -1
  682. package/dist/windows-command.d.ts.map +0 -1
  683. package/dist/windows-owner.d.ts.map +0 -1
  684. package/dist/windows-path-alias.d.ts.map +0 -1
  685. package/dist/windows-security-command.d.ts.map +0 -1
  686. package/dist/windows-security-facts.d.ts.map +0 -1
  687. package/dist/write-file-handle.d.ts.map +0 -1
  688. package/dist/write-open-flags.d.ts.map +0 -1
  689. package/dist/write-queue.d.ts.map +0 -1
  690. /package/dist/{archive-options.js → root-public-types.js} +0 -0
package/dist/move-path.js CHANGED
@@ -10,8 +10,7 @@ import { resolveReadOpenFlags } from "./read-open-flags.js";
10
10
  import { realpathSync } from "./realpath.js";
11
11
  import { cleanupPinnedFilePath } from "./file-cleanup.js";
12
12
  import { createMoveStageOwner } from "./move-path-stage.js";
13
- import { admitStandalonePublicationPath } from "./standalone-publication-path.js";
14
- import { assertNoWindowsPathAlias } from "./windows-path-alias.js";
13
+ import { admitStandalonePublicationPath, assertNoWindowsPathAlias } from "./windows-path-alias.js";
15
14
  export function moveCopyFallbackReasonForRenameError(error, platform = process.platform) {
16
15
  const code = error?.code;
17
16
  if (code === "EXDEV") {
@@ -6,4 +6,3 @@ export declare class MutationAuthorityError extends FsSafeError {
6
6
  export declare function assertSynchronousCallbackResult(returned: unknown, name: string): void;
7
7
  export declare function composeMutationAssertions(defaultAssertion?: () => void, callAssertion?: () => void): (() => void) | undefined;
8
8
  export declare function rethrowMutationAuthorityError(error: unknown): never;
9
- //# sourceMappingURL=mutation-authority.d.ts.map
@@ -160,4 +160,3 @@ export interface NativeBinding {
160
160
  sha256File(fd: number, maxBytes?: number, signal?: AbortSignal): Promise<NativeFileHash>;
161
161
  }
162
162
  export declare function captureNativeFdClose(binding: NativeBinding): (fd: number) => void;
163
- //# sourceMappingURL=native-binding.d.ts.map
@@ -14,4 +14,3 @@ export declare function configureFsSafeNative(config: Partial<FsSafeNativeConfig
14
14
  export declare function configureFsSafePython(config: Partial<FsSafePythonConfig>): void;
15
15
  export declare function getFsSafeNativeConfig(): FsSafeNativeConfig;
16
16
  export declare function __resetFsSafeNativeConfigForTest(): void;
17
- //# sourceMappingURL=native-config.d.ts.map
@@ -14,4 +14,3 @@ export declare function getNativeDirectoryObservationBackend(enabled?: boolean):
14
14
  export declare function inspectNativeDirectoryObservation(backend: NativeDirectoryObservationBackend, pathname: string, expected?: ExactStatIdentity, platform?: NodeJS.Platform): NativeDirectoryObservation;
15
15
  export declare function extendNativeDirectoryObservationGuard(observation: NativeDirectoryObservation, dir: string): NativeDirectoryObservationGuard;
16
16
  export declare function isNativeDirectoryObservationGuard(guard: unknown): guard is NativeDirectoryObservationGuard;
17
- //# sourceMappingURL=native-directory-observation.d.ts.map
@@ -1,4 +1,3 @@
1
1
  /** Warn once per capability, without including caller paths or native error text. */
2
2
  export declare function warnNativeFallback(feature: string, limitation: string): void;
3
3
  export declare function __resetNativeFallbackWarningsForTest(): void;
4
- //# sourceMappingURL=native-fallback-warning.d.ts.map
@@ -1,10 +1,7 @@
1
- import { type BigIntStats, type Stats } from "node:fs";
2
- import type { ContainmentGuarantee } from "./containment.js";
1
+ import { type BigIntStats } from "node:fs";
3
2
  export type NativeFileHandle = {
4
3
  readonly fd: number;
5
- readonly containment: ContainmentGuarantee;
6
4
  close(): Promise<void>;
7
- stat(): Promise<Stats>;
8
5
  writeFile(data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
9
6
  };
10
7
  export declare function nativeOpenFlags(flags: number): number;
@@ -16,4 +13,3 @@ export declare function removeNativeCreatedFileIfStillPinned(params: {
16
13
  created?: BigIntStats;
17
14
  }): void;
18
15
  export declare function createNativeExclusiveFile(targetPath: string, mode: number): Promise<NativeFileHandle | undefined>;
19
- //# sourceMappingURL=native-operations.d.ts.map
@@ -1,7 +1,6 @@
1
1
  import fsSync, {} from "node:fs";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
- import { FsSafeError } from "./errors.js";
5
4
  import { sameFileIdentityForCleanup } from "./file-identity.js";
6
5
  import { getNativeBinding } from "./native.js";
7
6
  import { captureNativeFdClose } from "./native-binding.js";
@@ -21,20 +20,16 @@ export function writeNativeFd(fd, data) {
21
20
  offset += written;
22
21
  }
23
22
  }
24
- function wrapNativeFd(fd, containment, closeFd) {
23
+ function wrapNativeFd(fd, closeFd) {
25
24
  let open = true;
26
25
  return {
27
26
  fd,
28
- containment,
29
27
  async close() {
30
28
  if (open) {
31
29
  open = false;
32
30
  closeFd(fd);
33
31
  }
34
32
  },
35
- async stat() {
36
- return fsSync.fstatSync(fd);
37
- },
38
33
  async writeFile(data, encoding) {
39
34
  writeNativeFd(fd, Buffer.isBuffer(data) ? data : Buffer.from(data, encoding ?? "utf8"));
40
35
  },
@@ -91,7 +86,7 @@ export async function createNativeExclusiveFile(targetPath, mode) {
91
86
  fd = opened.fd;
92
87
  fsSync.fchmodSync(fd, mode);
93
88
  created = fsSync.fstatSync(fd, { bigint: true });
94
- return wrapNativeFd(fd, opened.containment, closeFd);
89
+ return wrapNativeFd(fd, closeFd);
95
90
  }
96
91
  catch (error) {
97
92
  if (fd !== undefined) {
@@ -32,4 +32,3 @@ export declare function openNativeParentAdmission(binding: NativeBinding, rootAd
32
32
  root: Pick<FileHandle, "fd">;
33
33
  }, relativeParentPath: string, observation?: "native-directory"): Promise<NativeParentAdmission>;
34
34
  export {};
35
- //# sourceMappingURL=native-parent-admission.d.ts.map
@@ -2,6 +2,5 @@ import type { FileHandle } from "node:fs/promises";
2
2
  import { type AnyAsyncDirectoryGuard } from "./directory-guard.js";
3
3
  import type { FileIdentityStat } from "./file-identity.js";
4
4
  import type { NativeBinding } from "./native.js";
5
- import type { PinnedWriteParams } from "./pinned-write.js";
5
+ import type { PinnedWriteParams } from "./pinned-write-types.js";
6
6
  export declare function runPinnedWriteWindows(binding: NativeBinding, params: PinnedWriteParams, root: FileHandle, parentFd: number, parentGuard: AnyAsyncDirectoryGuard): Promise<FileIdentityStat>;
7
- //# sourceMappingURL=native-pinned-write-windows.d.ts.map
@@ -3,7 +3,7 @@ import { randomUUID } from "node:crypto";
3
3
  import fsSync, {} from "node:fs";
4
4
  import path from "node:path";
5
5
  import { createFileHandle } from "./create.js";
6
- import { hasPreservedCreationArtifacts } from "./creation-file-state.js";
6
+ import { hasPreservedCreationArtifacts } from "./creation-boundary.js";
7
7
  import { assertSyncDirectoryGuard } from "./directory-guard.js";
8
8
  import { FsSafeError } from "./errors.js";
9
9
  import { nativeOpenFlags, removeNativeCreatedFileIfStillPinned, } from "./native-operations.js";
@@ -1,5 +1,4 @@
1
1
  import type { FileIdentityStat } from "./file-identity.js";
2
2
  import type { NativeBinding } from "./native.js";
3
- import type { PinnedWriteParams } from "./pinned-write.js";
3
+ import type { PinnedWriteParams } from "./pinned-write-types.js";
4
4
  export declare function runPinnedWriteNative(binding: NativeBinding, params: PinnedWriteParams): Promise<FileIdentityStat>;
5
- //# sourceMappingURL=native-pinned-write.d.ts.map
@@ -63,15 +63,10 @@ import { NativePolicyDirectoryMismatch } from "./native-policy-directory-observa
63
63
  import { assertPolicyStagedDirectoryCurrent, assertStagedDirectoryCurrent, describePolicyStagedDirectory, describeStagedDirectory, refreshPolicyStagedDirectoryObservation, } from "./staged-directory.js";
64
64
  import { inspectFileIdentitySync } from "./strict-file-identity.js";
65
65
  import { realpathSync } from "./realpath.js";
66
+ import { errorCauseOptions } from "./root-errors.js";
66
67
  import { isNotFoundPathError, isSymlinkOpenError } from "./path.js";
67
68
  import { checkedMutationDirectory, } from "./pinned-mutation-observation.js";
68
69
  import { createPathSegmentRoute, joinPathSegmentRoute } from "./path-segment-route.js";
69
- function relativeParentSegments(relativeParentPath) {
70
- return relativeParentPath.split("/").filter(Boolean);
71
- }
72
- function prospectiveTargetPath(parentPath, parentRoute, offset, basename) {
73
- return joinPathSegmentRoute(parentPath, parentRoute, offset, basename);
74
- }
75
70
  function sameAbsolutePath(left, right) {
76
71
  return path.relative(path.resolve(left), path.resolve(right)) === "";
77
72
  }
@@ -101,12 +96,8 @@ function normalizePolicyParentOpenError(error, params) {
101
96
  if (!isSymlinkOpenError(error))
102
97
  return error;
103
98
  return params.mutationAdmission?.rejectParentSymlinks
104
- ? new FsSafeError("symlink", "symlink path component not allowed", {
105
- cause: error instanceof Error ? error : undefined,
106
- })
107
- : new FsSafeError("path-mismatch", "native write parent changed during policy admission", {
108
- cause: error instanceof Error ? error : undefined,
109
- });
99
+ ? new FsSafeError("symlink", "symlink path component not allowed", errorCauseOptions(error))
100
+ : new FsSafeError("path-mismatch", "native write parent changed during policy admission", errorCauseOptions(error));
110
101
  }
111
102
  async function describePosixParent(parentFd, pathname) {
112
103
  const parentPath = realpathSync.native(pathname);
@@ -172,12 +163,12 @@ async function capturePolicyAwarePosixParent(binding, params, rootFd, directoryF
172
163
  observationDisposers.set(fd, dispose);
173
164
  return captured;
174
165
  };
175
- const segments = relativeParentSegments(params.relativeParentPath);
166
+ const segments = params.relativeParentPath.split("/").filter(Boolean);
176
167
  const parentSpelling = segments.length
177
168
  ? path.join(params.rootPath, ...segments)
178
169
  : params.rootPath;
179
170
  const segmentRoute = createPathSegmentRoute(segments);
180
- const initialTarget = prospectiveTargetPath(params.rootPath, segmentRoute, 0, params.basename);
171
+ const initialTarget = joinPathSegmentRoute(params.rootPath, segmentRoute, 0, params.basename);
181
172
  let retainedTargetPath = params.mutationAdmission?.beginParentWalk?.();
182
173
  if (retainedTargetPath && !sameAbsolutePath(retainedTargetPath, initialTarget)) {
183
174
  retainedTargetPath = undefined;
@@ -255,7 +246,7 @@ async function capturePolicyAwarePosixParent(binding, params, rootFd, directoryF
255
246
  if (!isNotFoundPathError(openError)) {
256
247
  throw normalizePolicyParentOpenError(openError, params);
257
248
  }
258
- const targetPath = retainedTargetPath ?? prospectiveTargetPath(currentPath, segmentRoute, index, params.basename);
249
+ const targetPath = retainedTargetPath ?? joinPathSegmentRoute(currentPath, segmentRoute, index, params.basename);
259
250
  const request = Object.freeze({
260
251
  targetPath,
261
252
  mutationPath: childPath,
@@ -311,7 +302,7 @@ async function capturePolicyAwarePosixParent(binding, params, rootFd, directoryF
311
302
  childAuthorization = params.mutationAdmission.advanceCreatedDirectory(evidence);
312
303
  }
313
304
  }
314
- const targetPath = retainedTargetPath ?? prospectiveTargetPath(child.parentPath, segmentRoute, index + 1, params.basename);
305
+ const targetPath = retainedTargetPath ?? joinPathSegmentRoute(child.parentPath, segmentRoute, index + 1, params.basename);
315
306
  const request = Object.freeze({
316
307
  targetPath,
317
308
  mutationPath: targetPath,
@@ -9,4 +9,3 @@ export type NativePolicyDirectoryObserver = MutationDirectoryObserver & {
9
9
  };
10
10
  /** Fresh name/metadata/canonical facts from a caller-owned POSIX descriptor. */
11
11
  export declare function nativePolicyDirectoryObserver(binding: NativeBinding | undefined, fd: number, pathname: string): NativePolicyDirectoryObserver | undefined;
12
- //# sourceMappingURL=native-policy-directory-observation.d.ts.map
@@ -2,7 +2,7 @@ import { type BigIntStats } from "node:fs";
2
2
  import { type AsyncDirectoryGuard } from "./directory-guard.js";
3
3
  import { type NativeRootAdmission } from "./native-parent-admission.js";
4
4
  import type { NativeBinding } from "./native.js";
5
- import type { PinnedWriteParams } from "./pinned-write.js";
5
+ import type { PinnedWriteParams } from "./pinned-write-types.js";
6
6
  import { type MutationDirectoryObservation } from "./pinned-mutation-observation.js";
7
7
  type PolicyParent = {
8
8
  fd: number;
@@ -11,4 +11,3 @@ type PolicyParent = {
11
11
  };
12
12
  export declare function capturePolicyAwareWindowsParent(binding: NativeBinding, params: PinnedWriteParams, rootAdmission: NativeRootAdmission): Promise<PolicyParent>;
13
13
  export {};
14
- //# sourceMappingURL=native-policy-parent-windows.d.ts.map
@@ -1,4 +1,3 @@
1
1
  export declare const NATIVE_RENAME_SOURCE_IDENTITY_MISMATCH = "FS_SAFE_INTERNAL_RENAME_SOURCE_IDENTITY_MISMATCH";
2
2
  export type NativeRenameFailureOutcome = "uncommitted" | "indeterminate";
3
3
  export declare function classifyNativeRenameFailure(error: unknown): NativeRenameFailureOutcome;
4
- //# sourceMappingURL=native-rename-outcome.d.ts.map
@@ -3,15 +3,28 @@ import { type BigIntStats, type Stats } from "node:fs";
3
3
  import type { AnyAsyncDirectoryGuard } from "./directory-guard.js";
4
4
  import type { FileIdentityStat } from "./file-identity.js";
5
5
  import { type NativeBinding } from "./native-binding.js";
6
- import type { PinnedWriteInput, PinnedWriteParams } from "./pinned-write.js";
6
+ import type { PinnedWriteInput, PinnedWriteParams } from "./pinned-write-types.js";
7
7
  import type { PublishedFileReceipt, StagedFile, StagedFileCleanupReceipt, StagedFileReceipt } from "./staged-file-types.js";
8
8
  export type NativeStagingBinding = NativeBinding & Required<Pick<NativeBinding, "createStagedFile" | "stagedFileMatches" | "removeStagedFile">>;
9
9
  export declare function assertNativeStaging(binding: NativeBinding): asserts binding is NativeStagingBinding;
10
10
  type StagedPermissionPolicy = "private-creation" | "mode-only";
11
+ type NativeStageOwner = Readonly<{
12
+ binding: NativeStagingBinding;
13
+ parentFd: number;
14
+ closeParentFd: (fd: number) => void;
15
+ directory: StagedFileReceipt["directory"];
16
+ portableNames?: boolean;
17
+ mode: number;
18
+ sync?: boolean;
19
+ strictFileSync?: boolean;
20
+ assertBeforeMutation?: () => void;
21
+ permissionPolicy?: StagedPermissionPolicy;
22
+ name?: string;
23
+ }>;
11
24
  declare class NativeStagedFile implements StagedFile {
12
25
  #private;
13
- constructor(binding: NativeStagingBinding, parentFd: number, closeParentFd: (fd: number) => void, directory: StagedFileReceipt["directory"], portableNames: boolean, publishedMode: number, sync: boolean, assertBeforeMutation?: () => void, name?: string, strictFileSync?: boolean, permissionPolicy?: StagedPermissionPolicy);
14
- static create(binding: NativeStagingBinding, parentFd: number, closeParentFd: (fd: number) => void, directory: StagedFileReceipt["directory"], input: PinnedWriteInput, mode: number, maxBytes?: number, portableNames?: boolean, sync?: boolean, assertBeforeMutation?: () => void, exclusiveBasename?: string, strictFileSync?: boolean, permissionPolicy?: StagedPermissionPolicy): Promise<NativeStagedFile>;
26
+ constructor(owner: NativeStageOwner);
27
+ static create(owner: NativeStageOwner, input: PinnedWriteInput, maxBytes?: number): Promise<NativeStagedFile>;
15
28
  static write(binding: NativeStagingBinding, parentFd: number, closeParentFd: (fd: number) => void, directory: StagedFileReceipt["directory"], params: PinnedWriteParams, parentGuard: AnyAsyncDirectoryGuard): Promise<FileIdentityStat>;
16
29
  get receipt(): StagedFileReceipt;
17
30
  assertCurrent(): Promise<void>;
@@ -23,11 +36,10 @@ declare class NativeStagedFile implements StagedFile {
23
36
  }
24
37
  export declare const createNativeStage: (...args: Parameters<typeof NativeStagedFile.create>) => Promise<StagedFile>;
25
38
  export declare const writeNativeStage: typeof NativeStagedFile.write;
26
- export type { PublishedFileReceipt, StagedFile, StagedFileCleanupReceipt, StagedFileFailureDetails, StagedFilePublication, StagedFileReceipt, } from "./staged-file-types.js";
27
39
  export declare function stageFileInDirectory(options: {
28
40
  directory: string | DirectoryReceipt<Stats | BigIntStats>;
29
41
  content: string | Uint8Array;
30
42
  /** Published mode; the unpublished stage stays at 0600. Defaults to 0600. */
31
43
  mode?: number;
32
44
  }): Promise<StagedFile>;
33
- //# sourceMappingURL=native-staged-file.d.ts.map
45
+ export {};
@@ -50,8 +50,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
50
50
  var e = new Error(message);
51
51
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
52
  });
53
- import { assertDarwinCreationAcl } from "./creation-darwin.js";
54
- import { assertPrivateCreationFile } from "./creation-file-state.js";
53
+ import { assertDarwinCreationAcl, assertPrivateCreationFile } from "./creation-boundary.js";
55
54
  import { requireNativeBinding } from "./native.js";
56
55
  import { syncFileBestEffortSync } from "./file-sync.js";
57
56
  import { randomUUID } from "node:crypto";
@@ -86,50 +85,33 @@ function assertBasename(name, portable) {
86
85
  }
87
86
  const NOT_PUBLISHED = Object.freeze({ status: "not-published" });
88
87
  class NativeStagedFile {
89
- #binding;
88
+ #owner;
90
89
  #closeFd;
91
- #parentFd;
92
- #closeParentFd;
93
- #directory;
94
- #portableNames;
95
- #publishedMode;
96
- #sync;
97
- #strictFileSync;
90
+ #assertBeforeMutation;
98
91
  #private;
99
92
  #verifyMode;
100
- #assertBeforeMutation;
101
- #name;
102
93
  #state = { status: "open", publication: NOT_PUBLISHED };
103
94
  #receipt;
104
95
  #rejectFinalSymlink = false;
105
- constructor(binding, parentFd, closeParentFd, directory, portableNames, publishedMode, sync, assertBeforeMutation, name = `.fs-safe-${randomUUID()}.tmp`, strictFileSync = false, permissionPolicy) {
106
- assertBasename(name, portableNames);
107
- this.#name = name;
108
- this.#closeFd = captureNativeFdClose(binding);
109
- this.#binding = binding;
110
- this.#parentFd = parentFd;
111
- this.#closeParentFd = closeParentFd;
112
- this.#directory = directory;
113
- this.#portableNames = portableNames;
114
- this.#publishedMode = publishedMode;
115
- this.#sync = sync;
116
- this.#strictFileSync = strictFileSync;
117
- this.#private = permissionPolicy === "private-creation";
118
- this.#verifyMode = permissionPolicy !== undefined;
119
- this.#assertBeforeMutation = assertBeforeMutation;
96
+ constructor(owner) {
97
+ const name = owner.name ?? `.fs-safe-${randomUUID()}.tmp`;
98
+ assertBasename(name, owner.portableNames !== false);
99
+ this.#closeFd = captureNativeFdClose(owner.binding);
100
+ this.#owner = { ...owner, name };
101
+ this.#assertBeforeMutation = owner.assertBeforeMutation;
102
+ this.#private = owner.permissionPolicy === "private-creation";
103
+ this.#verifyMode = owner.permissionPolicy !== undefined;
120
104
  }
121
105
  // Public staging supplies a Node parent; pinned writes supply a native parent.
122
106
  // The supplied closer owns parentFd even on construction or preparation failure.
123
- static async create(binding, parentFd, closeParentFd, directory, input, mode, maxBytes,
124
- // Public staging uses portable names; existing POSIX writes accept literal names.
125
- portableNames = true, sync = true, assertBeforeMutation, exclusiveBasename, strictFileSync = false, permissionPolicy) {
107
+ static async create(owner, input, maxBytes) {
126
108
  let staged;
127
109
  try {
128
- staged = new NativeStagedFile(binding, parentFd, closeParentFd, directory, portableNames, mode, sync, assertBeforeMutation, exclusiveBasename, strictFileSync, permissionPolicy);
110
+ staged = new NativeStagedFile(owner);
129
111
  }
130
112
  catch (error) {
131
113
  try {
132
- closeParentFd(parentFd);
114
+ owner.closeParentFd(owner.parentFd);
133
115
  }
134
116
  catch (closeError) {
135
117
  throw new AggregateError([error, closeError], "staged owner construction and close failed");
@@ -145,7 +127,13 @@ class NativeStagedFile {
145
127
  const exclusive = params.overwrite === false && params.input.kind === "buffer" && params.input.stageBeforePublish === false;
146
128
  // This owner never escapes. Only the internal verifier borrows its fd;
147
129
  // public descriptor methods remain await-free and cannot race disposal.
148
- const staged = __addDisposableResource(env_1, await NativeStagedFile.create(binding, parentFd, closeParentFd, directory, params.input, params.mode, params.maxBytes, false, params.sync, params.assertBeforeMutation, exclusive ? params.basename : undefined, params.strictFileSync, params.private ? "private-creation" : params.verifyPosixMode === true ? "mode-only" : undefined), true);
130
+ const staged = __addDisposableResource(env_1, await NativeStagedFile.create({
131
+ binding, parentFd, closeParentFd, directory, mode: params.mode, sync: params.sync,
132
+ // Public staging uses portable names; existing POSIX writes accept literal names.
133
+ portableNames: false, assertBeforeMutation: params.assertBeforeMutation,
134
+ name: exclusive ? params.basename : undefined, strictFileSync: params.strictFileSync,
135
+ permissionPolicy: params.private ? "private-creation" : params.verifyPosixMode === true ? "mode-only" : undefined,
136
+ }, params.input, params.maxBytes), true);
149
137
  staged.#rejectFinalSymlink = params.rejectFinalSymlink === true;
150
138
  if (params.input.kind === "file")
151
139
  await params.input.verifySource();
@@ -201,7 +189,7 @@ class NativeStagedFile {
201
189
  }
202
190
  #assertNamed(name, expectedMode) {
203
191
  const fd = this.#file();
204
- const stat = this.#binding.stagedFileMatches(this.#parentFd, name, fd)
192
+ const stat = this.#owner.binding.stagedFileMatches(this.#owner.parentFd, name, fd)
205
193
  ? fs.fstatSync(fd, { bigint: true }) : undefined;
206
194
  if (!stat || stat.nlink !== 1n) {
207
195
  throw new FsSafeError("path-mismatch", "staged entry no longer names the exclusive created file");
@@ -213,8 +201,8 @@ class NativeStagedFile {
213
201
  if (this.#open().publication.status !== "not-published") {
214
202
  throw new FsSafeError("helper-failed", "staged file publication has already been attempted");
215
203
  }
216
- assertStagedDirectoryCurrent(this.#directory);
217
- this.#assertNamed(this.#name, 0o600);
204
+ assertStagedDirectoryCurrent(this.#owner.directory);
205
+ this.#assertNamed(this.#owner.name, 0o600);
218
206
  }
219
207
  #assertPermissions(fd, stat, expectedMode) {
220
208
  if (this.#private)
@@ -228,7 +216,7 @@ class NativeStagedFile {
228
216
  }
229
217
  async #prepare(input, maxBytes) {
230
218
  try {
231
- const mode = this.#publishedMode;
219
+ const mode = this.#owner.mode;
232
220
  if (!Number.isInteger(mode) || mode < 0 || mode > 0o7777) {
233
221
  throw new FsSafeError("invalid-path", "invalid staged file mode");
234
222
  }
@@ -239,25 +227,25 @@ class NativeStagedFile {
239
227
  throw new FsSafeError("helper-unavailable", "required cloning cannot verify staged permissions before copying");
240
228
  }
241
229
  }
242
- assertStagedDirectoryCurrent(this.#directory);
230
+ assertStagedDirectoryCurrent(this.#owner.directory);
243
231
  // The exclusive open performs no fallible post-open checks. Store its fd
244
232
  // before every subsequent operation, including the first metadata read.
245
233
  const state = this.#open();
246
234
  if (this.#private)
247
- assertDarwinCreationAcl(this.#parentFd, "file");
235
+ assertDarwinCreationAcl(this.#owner.parentFd, "file");
248
236
  this.#assertBeforeMutation?.();
249
237
  if (this.#private)
250
- assertDarwinCreationAcl(this.#parentFd, "file");
238
+ assertDarwinCreationAcl(this.#owner.parentFd, "file");
251
239
  // Native copying populates its new file before returning its descriptor.
252
240
  const copied = input.kind === "file" && !this.#verifyMode
253
- ? await createNativeCopyFile(this.#binding, input, this.#parentFd, this.#name, maxBytes, false)
241
+ ? await createNativeCopyFile(this.#owner.binding, input, this.#owner.parentFd, this.#owner.name, maxBytes, false)
254
242
  : undefined;
255
243
  state.fileFd = copied?.fd;
256
244
  if (state.fileFd === undefined) {
257
245
  this.#assertBeforeMutation?.();
258
246
  if (this.#private)
259
- assertDarwinCreationAcl(this.#parentFd, "file");
260
- state.fileFd = this.#binding.createStagedFile(this.#parentFd, this.#name);
247
+ assertDarwinCreationAcl(this.#owner.parentFd, "file");
248
+ state.fileFd = this.#owner.binding.createStagedFile(this.#owner.parentFd, this.#owner.name);
261
249
  }
262
250
  const fd = state.fileFd;
263
251
  if (input.kind === "file")
@@ -281,14 +269,14 @@ class NativeStagedFile {
281
269
  await writePinnedInput(fd, input, maxBytes, assertBeforeMutation);
282
270
  if (this.#verifyMode)
283
271
  this.#assertStagePermissions(fd);
284
- if (this.#sync) {
285
- if (this.#strictFileSync)
272
+ if (this.#owner.sync !== false) {
273
+ if (this.#owner.strictFileSync)
286
274
  fs.fsyncSync(fd);
287
275
  else
288
276
  syncFileBestEffortSync(fd);
289
277
  }
290
278
  const stat = fs.fstatSync(fd, { bigint: true });
291
- this.#receipt = createStagedFileReceipt(this.#directory, this.#name, stat);
279
+ this.#receipt = createStagedFileReceipt(this.#owner.directory, this.#owner.name, stat);
292
280
  this.#assertCurrent();
293
281
  }
294
282
  catch (error) {
@@ -311,23 +299,23 @@ class NativeStagedFile {
311
299
  const overwrite = options?.overwrite;
312
300
  try {
313
301
  const state = this.#open();
314
- assertBasename(basename, this.#portableNames);
315
- if (basename === this.#name || typeof overwrite !== "boolean") {
302
+ assertBasename(basename, this.#owner.portableNames !== false);
303
+ if (basename === this.#owner.name || typeof overwrite !== "boolean") {
316
304
  throw new FsSafeError("invalid-path", "publication needs a distinct basename and explicit overwrite policy");
317
305
  }
318
306
  this.#assertCurrent();
319
- assertFinalSymlinkRejected(path.join(this.#directory.realPath, basename), this.#rejectFinalSymlink);
307
+ assertFinalSymlinkRejected(path.join(this.#owner.directory.realPath, basename), this.#rejectFinalSymlink);
320
308
  this.#assertBeforeMutation?.();
321
309
  if (this.#assertBeforeMutation) {
322
310
  this.#assertCurrent();
323
- assertFinalSymlinkRejected(path.join(this.#directory.realPath, basename), this.#rejectFinalSymlink);
311
+ assertFinalSymlinkRejected(path.join(this.#owner.directory.realPath, basename), this.#rejectFinalSymlink);
324
312
  }
325
313
  try {
326
314
  if (overwrite) {
327
- this.#binding.renameReplace(this.#parentFd, this.#name, this.#parentFd, basename);
315
+ this.#owner.binding.renameReplace(this.#owner.parentFd, this.#owner.name, this.#owner.parentFd, basename);
328
316
  }
329
317
  else {
330
- this.#binding.renameNoReplace(this.#parentFd, this.#name, this.#parentFd, basename);
318
+ this.#owner.binding.renameNoReplace(this.#owner.parentFd, this.#owner.name, this.#owner.parentFd, basename);
331
319
  }
332
320
  }
333
321
  catch (error) {
@@ -355,24 +343,24 @@ class NativeStagedFile {
355
343
  this.#open().publication = receipt;
356
344
  onPublished?.(receipt.staged.identity);
357
345
  const stagedMode = this.#assertNamed(basename, 0o600);
358
- assertStagedDirectoryCurrent(this.#directory);
346
+ assertStagedDirectoryCurrent(this.#owner.directory);
359
347
  // Keep contents private until the name passes its identity fence. Mode
360
348
  // changes use the owned fd, including for final mode 000.
361
349
  const fd = this.#file();
362
- if (this.#publishedMode !== 0o600 || stagedMode !== 0o600)
363
- fs.fchmodSync(fd, this.#publishedMode);
350
+ if (this.#owner.mode !== 0o600 || stagedMode !== 0o600)
351
+ fs.fchmodSync(fd, this.#owner.mode);
364
352
  // Content was synced during preparation. A lost chmod leaves 0600, no wider
365
353
  // than modes retaining owner rw; restrictive modes still need a durable correction.
366
- if (this.#sync && ((this.#publishedMode & 0o600) !== 0o600 || (stagedMode & ~this.#publishedMode) !== 0)) {
367
- if (this.#strictFileSync)
354
+ if (this.#owner.sync !== false && ((this.#owner.mode & 0o600) !== 0o600 || (stagedMode & ~this.#owner.mode) !== 0)) {
355
+ if (this.#owner.strictFileSync)
368
356
  fs.fsyncSync(fd);
369
357
  else
370
358
  syncFileBestEffortSync(fd);
371
359
  }
372
- if (this.#sync)
373
- syncFileBestEffortSync(this.#parentFd);
374
- this.#assertNamed(basename, this.#publishedMode);
375
- assertStagedDirectoryCurrent(this.#directory);
360
+ if (this.#owner.sync !== false)
361
+ syncFileBestEffortSync(this.#owner.parentFd);
362
+ this.#assertNamed(basename, this.#owner.mode);
363
+ assertStagedDirectoryCurrent(this.#owner.directory);
376
364
  return receipt;
377
365
  }
378
366
  #finalize() {
@@ -387,7 +375,7 @@ class NativeStagedFile {
387
375
  }
388
376
  else if (state.publication.status === "not-published" && state.fileFd !== undefined) {
389
377
  try {
390
- outcome = this.#binding.removeStagedFile(this.#parentFd, this.#name, state.fileFd);
378
+ outcome = this.#owner.binding.removeStagedFile(this.#owner.parentFd, this.#owner.name, state.fileFd);
391
379
  }
392
380
  catch (error) {
393
381
  outcome = "failed";
@@ -397,7 +385,7 @@ class NativeStagedFile {
397
385
  let resources = "closed";
398
386
  for (const [fd, closeFd] of [
399
387
  [state.fileFd, this.#closeFd],
400
- [this.#parentFd, this.#closeParentFd],
388
+ [this.#owner.parentFd, this.#owner.closeParentFd],
401
389
  ]) {
402
390
  if (fd === undefined) {
403
391
  continue;
@@ -411,7 +399,7 @@ class NativeStagedFile {
411
399
  }
412
400
  }
413
401
  const receipt = Object.freeze({
414
- temporaryBasename: this.#name,
402
+ temporaryBasename: this.#owner.name,
415
403
  publication: state.publication,
416
404
  status: outcome,
417
405
  resources,
@@ -447,5 +435,8 @@ export async function stageFileInDirectory(options) {
447
435
  const input = { kind: "buffer", data: Buffer.from(options.content) };
448
436
  const mode = options.mode ?? 0o600;
449
437
  const parent = openStagedDirectory(options.directory);
450
- return await createNativeStage(binding, parent.fd, fs.closeSync, parent.receipt, input, mode, undefined, true, true, undefined, undefined, false, "mode-only");
438
+ return await createNativeStage({
439
+ binding, parentFd: parent.fd, closeParentFd: fs.closeSync,
440
+ directory: parent.receipt, mode, permissionPolicy: "mode-only",
441
+ }, input);
451
442
  }
package/dist/native.d.ts CHANGED
@@ -11,4 +11,3 @@ export declare function getNativeBinding(): NativeBinding | undefined;
11
11
  export declare function requireNativeBinding(): NativeBinding;
12
12
  export declare function __setNativeLoaderForTest(loader: () => NativeBinding): void;
13
13
  export declare function __resetNativeLoaderForTest(): void;
14
- //# sourceMappingURL=native.d.ts.map
@@ -5,4 +5,3 @@ export declare function recordExclusiveCreateFailure(error: unknown, filePath: s
5
5
  export declare function openedPathResolutionError(error?: Error): Error;
6
6
  export declare function recordPreOpenFileChange(error: unknown, handle: FileHandle, filePath: string, before: BigIntStats | undefined, opened: BigIntStats | undefined): Promise<void>;
7
7
  export declare function recordOpenedFileFailure(error: unknown, handle: FileHandle, filePath: string, identity: BigIntStats): Promise<void>;
8
- //# sourceMappingURL=opened-file-failure.d.ts.map
@@ -13,4 +13,3 @@ export declare function resolveOpenedFileRealPathForFd(fd: number, handleStat: F
13
13
  realPath: string;
14
14
  stat: Stats | BigIntStats;
15
15
  }>;
16
- //# sourceMappingURL=opened-realpath.d.ts.map
package/dist/output.d.ts CHANGED
@@ -14,4 +14,3 @@ export type ExternalFileWriteResult<T = void> = {
14
14
  result: T;
15
15
  };
16
16
  export declare function writeExternalFileWithinRoot<T = void>(options: ExternalFileWriteOptions<T>): Promise<ExternalFileWriteResult<T>>;
17
- //# sourceMappingURL=output.d.ts.map
@@ -5,4 +5,3 @@ export type OverwriteFileHandleOptions = {
5
5
  };
6
6
  /** Overwrite a borrowed, non-append read/write handle with best-effort failure rollback. */
7
7
  export declare function overwriteFileHandle(handle: FileHandle, data: Uint8Array, options?: OverwriteFileHandleOptions): Promise<void>;
8
- //# sourceMappingURL=overwrite-file-handle.d.ts.map
@@ -28,4 +28,3 @@ export type OwnerAndDaclResult = {
28
28
  platform: NodeJS.Platform;
29
29
  };
30
30
  export declare function readOwnerAndDacl(targetPath: string): OwnerAndDaclResult;
31
- //# sourceMappingURL=owner-dacl.d.ts.map
@@ -4,4 +4,3 @@ export type ProbePathCaseOptions = {
4
4
  };
5
5
  /** Observe local ASCII case behavior; unknown observations never imply an operating-system default. */
6
6
  export declare function probePathCaseInsensitiveSync(targetPath: string, options?: ProbePathCaseOptions): boolean | undefined;
7
- //# sourceMappingURL=path-case.d.ts.map
@@ -22,4 +22,3 @@ export declare function assertNoHardlinkedFinalPath(params: {
22
22
  boundaryLabel: string;
23
23
  allowFinalHardlinkForUnlink?: boolean;
24
24
  }): Promise<void>;
25
- //# sourceMappingURL=path-policy.d.ts.map
@@ -4,4 +4,3 @@ export type ResolvedPathPrefix = {
4
4
  readonly unresolvedSegments: readonly string[];
5
5
  };
6
6
  export declare function resolvePathPrefixSync(input: string): ResolvedPathPrefix;
7
- //# sourceMappingURL=path-prefix.d.ts.map
@@ -11,4 +11,3 @@ export declare function resolvePathWithinNormalizedRoot(params: ResolvePathWithi
11
11
  ok: false;
12
12
  error: string;
13
13
  };
14
- //# sourceMappingURL=path-scope-lexical.d.ts.map
@@ -4,4 +4,3 @@ export type PathSegmentRoute = Readonly<{
4
4
  }>;
5
5
  export declare function createPathSegmentRoute(segments: readonly string[]): PathSegmentRoute;
6
6
  export declare function joinPathSegmentRoute(base: string, route: PathSegmentRoute, offset: number, tail?: string): string;
7
- //# sourceMappingURL=path-segment-route.d.ts.map
@@ -9,4 +9,3 @@ export type ProbePathSuffixAliasesOptions = {
9
9
  };
10
10
  /** Observe bounded missing suffix aliases; the caller owns caching and ambiguity policy. */
11
11
  export declare function probePathSuffixAliasesSync(options: ProbePathSuffixAliasesOptions): boolean | undefined;
12
- //# sourceMappingURL=path-suffix-aliases.d.ts.map
package/dist/path.d.ts CHANGED
@@ -18,4 +18,3 @@ export declare function isPathInsideWithRealpath(basePath: string, candidatePath
18
18
  export declare function safeStatSync(targetPath: string): fs.Stats | null;
19
19
  export declare function splitSafeRelativePath(relativePath: string): string[];
20
20
  export declare function resolveSafeRelativePath(rootDir: string, relativePath: string): string;
21
- //# sourceMappingURL=path.d.ts.map
@@ -24,4 +24,3 @@ export declare function executePermissionCommand(command: string, args: string[]
24
24
  stdout: string;
25
25
  stderr: string;
26
26
  }>;
27
- //# sourceMappingURL=permission-exec.d.ts.map