@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
@@ -2,7 +2,7 @@ import { syncFileBestEffort } from "./file-sync.js";
2
2
  import fsSync, {} from "node:fs";
3
3
  import fs, {} from "node:fs/promises";
4
4
  import path from "node:path";
5
- import { assertAsyncDirectoryGuard, assertDirectoryIdentitySync, createAsyncDirectoryGuard, } from "./directory-guard.js";
5
+ import { assertDirectoryIdentitySync, createAsyncDirectoryGuard, } from "./directory-guard.js";
6
6
  import { syncDirectoryBestEffort } from "./directory-durability.js";
7
7
  import { isWindowsReservedDeviceName } from "./device-path.js";
8
8
  import { FsSafeError } from "./errors.js";
@@ -10,7 +10,7 @@ import { getNativeBinding } from "./native.js";
10
10
  import { handoffPrivateProducerFile, } from "./private-producer-handoff.js";
11
11
  import { resolveReadOpenFlags } from "./read-open-flags.js";
12
12
  import { rootFromDirectoryGuard } from "./root-impl.js";
13
- import { inspectFileIdentity } from "./strict-file-identity.js";
13
+ import { inspectFileIdentitySync } from "./strict-file-identity.js";
14
14
  import { registerTempPathForExit } from "./temp-cleanup.js";
15
15
  import { createOwnedTempFile } from "./temp-target.js";
16
16
  import { serializePathWrite } from "./write-queue.js";
@@ -52,8 +52,8 @@ function assertRegularFile(stat) {
52
52
  throw new FsSafeError("hardlink", "sibling temp must have exactly one link");
53
53
  }
54
54
  }
55
- async function inspectStage(inspect, expected) {
56
- return await inspectFileIdentity(async () => {
55
+ function inspectStage(inspect, expected) {
56
+ return inspectFileIdentitySync(() => {
57
57
  const stat = inspect();
58
58
  assertRegularFile(stat);
59
59
  return stat;
@@ -67,12 +67,7 @@ function aggregateErrors(errors, message) {
67
67
  // Own the workspace before the producer can leave partial output. The finished
68
68
  // file still enters the ordinary sibling admission and publication lifecycle.
69
69
  async function writeIsolatedProducer(params) {
70
- const tempPath = params.tempPath;
71
- const write = params.write;
72
- const writeReceiver = params.writeReceiver;
73
- const parentGuard = params.parentGuard;
74
- const assertParent = params.assertParent;
75
- const syncTempFile = params.syncTempFile;
70
+ const { tempPath, write, writeReceiver, parentGuard, assertParent, syncTempFile } = params;
76
71
  assertParent();
77
72
  const targetRoot = rootFromDirectoryGuard(parentGuard);
78
73
  // Select the handoff before invoking the producer. Missing required native
@@ -150,7 +145,9 @@ export async function writeCallbackSibling(params) {
150
145
  const syncTempFile = params.syncTempFile;
151
146
  const syncParentDir = params.syncParentDir;
152
147
  const guard = await createAsyncDirectoryGuard(parent, { bigint: true });
153
- const assertParent = () => assertAsyncDirectoryGuard(guard);
148
+ const assertParent = () => assertDirectoryIdentitySync(parent, {
149
+ dev: guard.stat.dev, ino: guard.stat.ino, realPath: guard.realPath,
150
+ });
154
151
  let handle;
155
152
  let identity;
156
153
  let unregister;
@@ -158,10 +155,10 @@ export async function writeCallbackSibling(params) {
158
155
  let renamed = false;
159
156
  let failure;
160
157
  const inspectPath = (pathname, expected) => inspectStage(() => fsSync.lstatSync(pathname, { bigint: true }), expected);
161
- const assertCurrent = async (pathname) => {
162
- await assertParent();
163
- const opened = await inspectStage(() => fsSync.fstatSync(handle.fd, { bigint: true }), identity);
164
- const current = await inspectPath(pathname, opened);
158
+ const assertCurrent = (pathname) => {
159
+ assertParent();
160
+ const opened = inspectStage(() => fsSync.fstatSync(handle.fd, { bigint: true }), identity);
161
+ const current = inspectPath(pathname, opened);
165
162
  if (maxBytes !== undefined &&
166
163
  (opened.size > maxBytes || current.size > maxBytes)) {
167
164
  throw new FsSafeError("too-large", `sibling temp exceeds maxBytes (${maxBytes})`);
@@ -176,11 +173,7 @@ export async function writeCallbackSibling(params) {
176
173
  writeReceiver: params,
177
174
  parentGuard: guard,
178
175
  syncTempFile: syncTempFile,
179
- assertParent: () => assertDirectoryIdentitySync(parent, {
180
- dev: guard.stat.dev,
181
- ino: guard.stat.ino,
182
- realPath: guard.realPath,
183
- }),
176
+ assertParent,
184
177
  });
185
178
  result = isolated.result;
186
179
  cleanupWorkspace = isolated.cleanupWorkspace;
@@ -193,13 +186,10 @@ export async function writeCallbackSibling(params) {
193
186
  else {
194
187
  result = await Reflect.apply(write, params, [tempPath]);
195
188
  }
196
- await assertParent();
197
- if (handle) {
198
- const opened = await inspectStage(() => fsSync.fstatSync(handle.fd, { bigint: true }), identity);
199
- await inspectPath(tempPath, opened);
200
- }
201
- else {
202
- const before = await inspectPath(tempPath);
189
+ assertParent();
190
+ let expected = identity;
191
+ if (!handle) {
192
+ expected = inspectPath(tempPath);
203
193
  try {
204
194
  // No create/truncate flags; O_NONBLOCK also bounds a FIFO swap during open.
205
195
  const access = syncTempFile ? fsSync.constants.O_RDWR : fsSync.constants.O_RDONLY;
@@ -211,12 +201,14 @@ export async function writeCallbackSibling(params) {
211
201
  }
212
202
  throw error;
213
203
  }
214
- const opened = await inspectStage(() => fsSync.fstatSync(handle.fd, { bigint: true }), before);
215
- await inspectPath(tempPath, opened);
204
+ }
205
+ const opened = inspectStage(() => fsSync.fstatSync(handle.fd, { bigint: true }), expected);
206
+ inspectPath(tempPath, opened);
207
+ if (!identity) {
216
208
  identity = opened;
217
209
  unregister = registerTempPathForExit(tempPath, { identity, singleLinkFile: true });
218
210
  }
219
- await assertParent();
211
+ assertParent();
220
212
  if (cleanupWorkspace) {
221
213
  const cleanup = cleanupWorkspace;
222
214
  cleanupWorkspace = undefined;
@@ -233,7 +225,7 @@ export async function writeCallbackSibling(params) {
233
225
  throw new FsSafeError("invalid-path", "final path must differ from the sibling temp path");
234
226
  }
235
227
  await serializePathWrite(filePath, async () => {
236
- await assertCurrent(tempPath);
228
+ assertCurrent(tempPath);
237
229
  if (mode !== undefined) {
238
230
  try {
239
231
  await handle.chmod(mode);
@@ -242,20 +234,21 @@ export async function writeCallbackSibling(params) {
242
234
  if (!ignoreModeError)
243
235
  throw error;
244
236
  }
237
+ assertCurrent(tempPath);
245
238
  }
246
239
  if (syncTempFile) {
247
- await assertCurrent(tempPath);
248
240
  await syncFileBestEffort(handle);
241
+ assertCurrent(tempPath);
249
242
  }
250
- await assertCurrent(tempPath);
251
243
  await fs.rename(tempPath, filePath);
252
244
  // A later verification failure never authorizes rollback of the final name.
253
245
  renamed = true;
254
246
  unregister();
255
- await assertCurrent(filePath);
256
- if (syncParentDir)
247
+ assertCurrent(filePath);
248
+ if (syncParentDir) {
257
249
  await syncDirectoryBestEffort(parent);
258
- await assertCurrent(filePath);
250
+ assertCurrent(filePath);
251
+ }
259
252
  });
260
253
  return { filePath, result };
261
254
  }
@@ -276,9 +269,9 @@ export async function writeCallbackSibling(params) {
276
269
  try {
277
270
  if (!renamed && identity) {
278
271
  try {
279
- await assertParent();
280
- await inspectStage(() => fsSync.fstatSync(handle.fd, { bigint: true }), identity);
281
- await inspectPath(tempPath, identity);
272
+ assertParent();
273
+ inspectStage(() => fsSync.fstatSync(handle.fd, { bigint: true }), identity);
274
+ inspectPath(tempPath, identity);
282
275
  await fs.unlink(tempPath);
283
276
  unregister?.();
284
277
  }
@@ -26,4 +26,3 @@ export declare function writeViaSiblingTempPath(params: {
26
26
  fallbackFileName?: string;
27
27
  tempPrefix?: string;
28
28
  }): Promise<void>;
29
- //# sourceMappingURL=sibling-temp.d.ts.map
@@ -1,5 +1,4 @@
1
1
  import type { SidecarLockAcquireOptions, SidecarLockHandle } from "./sidecar-lock-types.js";
2
- import { type SidecarLockAcquisitionContext } from "./sidecar-lock-admission.js";
2
+ import type { SidecarLockAcquisitionContext } from "./sidecar-lock-admission.js";
3
3
  export type { HeldSidecarLock } from "./sidecar-lock-admission.js";
4
4
  export declare function acquireSidecarLock<TPayload extends Record<string, unknown>>(options: SidecarLockAcquireOptions<TPayload>, context: SidecarLockAcquisitionContext): Promise<SidecarLockHandle>;
5
- //# sourceMappingURL=sidecar-lock-acquire.d.ts.map
@@ -5,12 +5,11 @@ import { fileObservation } from "./file-observation.js";
5
5
  import { readFileHandleBounded } from "./bounded-read.js";
6
6
  import { openSidecarRoot } from "./sidecar-lock-root.js";
7
7
  import { createNativeExclusiveFile } from "./native-operations.js";
8
- import { computeSidecarLockDelayMs, isTransientLockFileDenial, maxTransientLockDenials, validateSidecarLockStaleMs, validateSidecarLockRetryOptions, validateSidecarLockCompromiseCheckIntervalMs, validateSidecarLockTimeoutMs, } from "./sidecar-lock-policy.js";
8
+ import { sidecarLockRetryDelay, sidecarLockTimeout, isTransientLockFileDenial, maxTransientLockDenials, validateSidecarLockStaleMs, validateSidecarLockRetryOptions, validateSidecarLockCompromiseCheckIntervalMs, validateSidecarLockTimeoutMs, } from "./sidecar-lock-policy.js";
9
9
  import { relativeSidecarLockPath, removeSidecarLockIfUnchanged, serializeSidecarLockPayload, sidecarReclaimGuardExists, } from "./sidecar-lock-reclaim.js";
10
10
  import { awaitSidecarAdmissionBoundary, conditionalSidecarLockParser, observeHeldSidecarParser, observeSidecarLockParser, runSidecarAdmissionBoundary, } from "./sidecar-lock-admission-parser.js";
11
11
  import { handleStaleSidecarAdmission, } from "./sidecar-lock-stale-admission.js";
12
12
  import { ancestryHasSidecarAdmission, captureSidecarAdmissionAncestry, createSidecarAdmissionController, } from "./sidecar-lock-admission-context.js";
13
- import { sidecarLockTimeout } from "./sidecar-lock-admission.js";
14
13
  import { resolveSidecarLockPaths } from "./sidecar-lock-target.js";
15
14
  import { createSuppressedError } from "./suppressed-error.js";
16
15
  import { sleep } from "./timing.js";
@@ -34,11 +33,25 @@ export async function acquireSidecarLock(options, context) {
34
33
  const requestedReentrantOwner = options.reentrantOwner;
35
34
  const { lockPath, normalizedTargetPath } = await resolveSidecarLockPaths(targetPath, explicitLockPath, lockRoot);
36
35
  const activeDescendant = ancestryHasSidecarAdmission(admissionAncestry, context.admissions, normalizedTargetPath);
37
- let held = context.held.get(normalizedTargetPath);
38
- if (held &&
36
+ const isReentrant = (candidate) => !!candidate &&
39
37
  requestedReentrantOwner !== undefined &&
40
- held.reentrantOwner !== undefined &&
41
- requestedReentrantOwner === held.reentrantOwner) {
38
+ candidate.reentrantOwner !== undefined &&
39
+ requestedReentrantOwner === candidate.reentrantOwner;
40
+ const reuseHeldLock = (candidate) => {
41
+ const lifecycle = context.ensureExitCleanupRegistered();
42
+ context.assertRetainOnExitSupported(retainOnExit);
43
+ if (context.held.get(normalizedTargetPath) !== candidate || candidate.releasePromise)
44
+ return undefined;
45
+ candidate.refCount = (candidate.refCount ?? 1) + 1;
46
+ // Any same-owner request upgrades exit retention; later requests never revoke it.
47
+ if (retainOnExit === true)
48
+ candidate.retainOnExit = true;
49
+ const returnedHandle = context.handleForHeldLock(normalizedTargetPath, candidate);
50
+ context.armExitCleanup(lifecycle);
51
+ return returnedHandle;
52
+ };
53
+ let held = context.held.get(normalizedTargetPath);
54
+ if (isReentrant(held)) {
42
55
  // Join a final release before deciding whether this completed owner remains.
43
56
  // Successful cleanup requires a fresh acquisition; failed cleanup can retry.
44
57
  if (held.releasePromise) {
@@ -47,29 +60,16 @@ export async function acquireSidecarLock(options, context) {
47
60
  await held.releasePromise.catch(() => undefined);
48
61
  held = context.held.get(normalizedTargetPath);
49
62
  }
50
- if (held &&
51
- requestedReentrantOwner !== undefined &&
52
- held.reentrantOwner !== undefined &&
53
- requestedReentrantOwner === held.reentrantOwner) {
54
- const lifecycle = context.ensureExitCleanupRegistered();
55
- context.assertRetainOnExitSupported(retainOnExit);
56
- if (context.held.get(normalizedTargetPath) === held && !held.releasePromise) {
57
- held.refCount = (held.refCount ?? 1) + 1;
58
- // Retention is monotonic: any same-owner request to keep the sidecar on
59
- // exit upgrades the held lock; a later default acquisition never revokes it.
60
- if (retainOnExit === true) {
61
- held.retainOnExit = true;
62
- }
63
- const returnedHandle = context.handleForHeldLock(normalizedTargetPath, held);
64
- context.armExitCleanup(lifecycle);
65
- return returnedHandle;
66
- }
63
+ if (isReentrant(held)) {
64
+ const reused = reuseHeldLock(held);
65
+ if (reused)
66
+ return reused;
67
67
  }
68
68
  }
69
69
  if (activeDescendant)
70
70
  throw sidecarLockTimeout(lockPath, normalizedTargetPath);
71
71
  const admission = createSidecarAdmissionController(admissionAncestry, context.admissions, normalizedTargetPath);
72
- const startedAt = Date.now();
72
+ const startedAt = performance.now();
73
73
  const reclaimGuardPath = `${lockPath}.reclaim`;
74
74
  let reclaimGuard;
75
75
  const releaseReclaimGuard = async () => {
@@ -90,17 +90,9 @@ export async function acquireSidecarLock(options, context) {
90
90
  const withinDenialBudget = () => ++transientDenials <= maxTransientLockDenials;
91
91
  const waitForRetry = async () => {
92
92
  admission.release();
93
- const elapsed = Date.now() - startedAt;
94
- if ((timeoutMs !== undefined &&
95
- timeoutMs !== Number.POSITIVE_INFINITY &&
96
- elapsed >= timeoutMs) ||
97
- (retry.retries !== undefined && attempt >= retry.retries)) {
93
+ const delay = sidecarLockRetryDelay(retry, timeoutMs === Number.POSITIVE_INFINITY ? undefined : timeoutMs, performance.now() - startedAt, attempt);
94
+ if (delay === undefined)
98
95
  throw sidecarLockTimeout(lockPath, normalizedTargetPath);
99
- }
100
- const remaining = timeoutMs === undefined || timeoutMs === Number.POSITIVE_INFINITY
101
- ? Number.POSITIVE_INFINITY
102
- : Math.max(0, timeoutMs - elapsed);
103
- const delay = Math.min(computeSidecarLockDelayMs(retry, attempt), remaining);
104
96
  attempt += 1;
105
97
  await sleep(delay);
106
98
  };
@@ -123,29 +115,16 @@ export async function acquireSidecarLock(options, context) {
123
115
  while (true) {
124
116
  if (!admission.owns) {
125
117
  held = context.held.get(normalizedTargetPath);
126
- if (held &&
127
- requestedReentrantOwner !== undefined &&
128
- held.reentrantOwner !== undefined &&
129
- requestedReentrantOwner === held.reentrantOwner) {
118
+ if (isReentrant(held)) {
130
119
  if (held.releasePromise) {
131
120
  await held.releasePromise.catch(() => undefined);
132
121
  held = context.held.get(normalizedTargetPath);
133
122
  }
134
- if (held &&
135
- requestedReentrantOwner !== undefined &&
136
- held.reentrantOwner !== undefined &&
137
- requestedReentrantOwner === held.reentrantOwner) {
138
- const lifecycle = context.ensureExitCleanupRegistered();
139
- context.assertRetainOnExitSupported(retainOnExit);
140
- if (context.held.get(normalizedTargetPath) !== held || held.releasePromise) {
141
- continue;
142
- }
143
- held.refCount = (held.refCount ?? 1) + 1;
144
- if (retainOnExit === true)
145
- held.retainOnExit = true;
146
- const returnedHandle = context.handleForHeldLock(normalizedTargetPath, held);
147
- context.armExitCleanup(lifecycle);
148
- return returnedHandle;
123
+ if (isReentrant(held)) {
124
+ const reused = reuseHeldLock(held);
125
+ if (reused)
126
+ return reused;
127
+ continue;
149
128
  }
150
129
  }
151
130
  if (context.admissions.has(normalizedTargetPath)) {
@@ -378,8 +357,9 @@ export async function acquireSidecarLock(options, context) {
378
357
  try {
379
358
  if (createdHeld)
380
359
  stopSidecarLockMonitoring(createdHeld);
360
+ let failedSnapshot = createdSnapshot;
381
361
  if (handle) {
382
- const failedSnapshot = createdSnapshot ?? { payload: null };
362
+ failedSnapshot ??= { payload: null };
383
363
  try {
384
364
  failedSnapshot.stat = fsSync.fstatSync(handle.fd);
385
365
  }
@@ -391,14 +371,10 @@ export async function acquireSidecarLock(options, context) {
391
371
  context.held.delete(normalizedTargetPath);
392
372
  }
393
373
  await handle.close().catch(() => undefined);
394
- // Root records use the creator receipt; partial raw writes use fd identity.
395
- await removeSidecarLockIfUnchanged(lockPath, failedSnapshot, {
396
- lockRoot,
397
- parsePayload: conditionalSidecarLockParser(parserState, admission, () => admission.hasToken() && !context.held.has(normalizedTargetPath)),
398
- });
399
374
  }
400
- else if (createdSnapshot) {
401
- await removeSidecarLockIfUnchanged(lockPath, createdSnapshot, {
375
+ // Root records use the creator receipt; partial raw writes use fd identity.
376
+ if (failedSnapshot) {
377
+ await removeSidecarLockIfUnchanged(lockPath, failedSnapshot, {
402
378
  lockRoot,
403
379
  parsePayload: conditionalSidecarLockParser(parserState, admission, () => admission.hasToken() && !context.held.has(normalizedTargetPath)),
404
380
  });
@@ -16,4 +16,3 @@ export declare function createSidecarAdmissionController(ancestry: SidecarAdmiss
16
16
  run<T>(callback: () => T): T;
17
17
  };
18
18
  export {};
19
- //# sourceMappingURL=sidecar-lock-admission-context.d.ts.map
@@ -40,4 +40,3 @@ export declare function observeHeldSidecarParser(params: {
40
40
  isTransientDenial(error: unknown): boolean;
41
41
  }): Promise<HeldSidecarParserObservation>;
42
42
  export {};
43
- //# sourceMappingURL=sidecar-lock-admission-parser.d.ts.map
@@ -2,11 +2,10 @@ import type { NativeFileHandle } from "./native-operations.js";
2
2
  import type { Root } from "./root-impl.js";
3
3
  import type { SidecarLockSnapshot } from "./sidecar-lock-reclaim.js";
4
4
  import type { SidecarLockHandle } from "./sidecar-lock-types.js";
5
- type SidecarFileHandle = Pick<NativeFileHandle, "fd" | "close" | "stat" | "writeFile">;
6
5
  export type HeldSidecarLock = {
7
6
  refCount: number;
8
7
  reentrantOwner?: string;
9
- handle: SidecarFileHandle;
8
+ handle: NativeFileHandle;
10
9
  lockPath: string;
11
10
  snapshot: SidecarLockSnapshot;
12
11
  acquiredAt: number;
@@ -30,6 +29,3 @@ export type SidecarLockAcquisitionContext = {
30
29
  assertRetainOnExitSupported(retainOnExit: boolean | undefined): void;
31
30
  handleForHeldLock(normalizedTargetPath: string, held: HeldSidecarLock): SidecarLockHandle;
32
31
  };
33
- export declare function sidecarLockTimeout(lockPath: string, normalizedTargetPath: string): Error;
34
- export {};
35
- //# sourceMappingURL=sidecar-lock-admission.d.ts.map
@@ -1,7 +1 @@
1
- export function sidecarLockTimeout(lockPath, normalizedTargetPath) {
2
- return Object.assign(new Error(`file lock timeout for ${normalizedTargetPath}`), {
3
- code: "file_lock_timeout",
4
- lockPath,
5
- normalizedTargetPath,
6
- });
7
- }
1
+ export {};
@@ -24,4 +24,3 @@ export declare function createHeldSidecarLockHandle(params: {
24
24
  retry?: boolean;
25
25
  }) => Promise<unknown>;
26
26
  }): SidecarLockHandle;
27
- //# sourceMappingURL=sidecar-lock-handle.d.ts.map
@@ -4,6 +4,10 @@ export declare function validateSidecarLockTimeoutMs(timeoutMs: number | undefin
4
4
  export declare function validateSidecarLockStaleMs(staleMs: number | undefined): void;
5
5
  export declare function validateSidecarLockCompromiseCheckIntervalMs(intervalMs: number | undefined): void;
6
6
  export declare function computeSidecarLockDelayMs(retry: SidecarLockRetryOptions, attempt: number): number;
7
+ export declare function sidecarLockTimeout(lockPath: string, normalizedTargetPath: string): Error;
8
+ export declare function sidecarLockStale(lockPath: string, normalizedTargetPath: string): Error;
9
+ /** Undefined means the deadline or retry count is exhausted. */
10
+ export declare function sidecarLockRetryDelay(retry: SidecarLockRetryOptions, timeoutMs: number | undefined, elapsed: number, attempt: number): number | undefined;
7
11
  export declare const maxTransientLockDenials = 8;
8
12
  export declare function isTransientLockFileDenial(error: unknown, lockPath: string): boolean;
9
13
  export declare function sidecarLockPayloadCreatedAtMs(payload: unknown): number | null;
@@ -13,4 +17,3 @@ export declare function defaultSidecarLockShouldReclaim(params: {
13
17
  staleMs: number;
14
18
  nowMs: number;
15
19
  }): Promise<boolean>;
16
- //# sourceMappingURL=sidecar-lock-policy.d.ts.map
@@ -55,6 +55,29 @@ export function computeSidecarLockDelayMs(retry, attempt) {
55
55
  const jitter = retry.randomize ? 1 + Math.random() : 1;
56
56
  return Math.min(maxTimeout, Math.round(base * jitter));
57
57
  }
58
+ export function sidecarLockTimeout(lockPath, normalizedTargetPath) {
59
+ return Object.assign(new Error(`file lock timeout for ${normalizedTargetPath}`), {
60
+ code: "file_lock_timeout",
61
+ lockPath,
62
+ normalizedTargetPath,
63
+ });
64
+ }
65
+ export function sidecarLockStale(lockPath, normalizedTargetPath) {
66
+ return Object.assign(new Error(`file lock stale for ${normalizedTargetPath}`), {
67
+ code: "file_lock_stale",
68
+ lockPath,
69
+ normalizedTargetPath,
70
+ });
71
+ }
72
+ /** Undefined means the deadline or retry count is exhausted. */
73
+ export function sidecarLockRetryDelay(retry, timeoutMs, elapsed, attempt) {
74
+ if ((timeoutMs !== undefined && elapsed >= timeoutMs) ||
75
+ (retry.retries !== undefined && attempt >= retry.retries))
76
+ return undefined;
77
+ const remaining = timeoutMs === undefined || timeoutMs === Number.POSITIVE_INFINITY
78
+ ? Number.POSITIVE_INFINITY : Math.max(0, timeoutMs - elapsed);
79
+ return Math.min(computeSidecarLockDelayMs(retry, attempt), remaining);
80
+ }
58
81
  // Windows denies access to a lock file while a just-unlinked directory entry
59
82
  // is still being torn down, so a contended acquire sees EPERM on a name that is
60
83
  // already gone -- both when creating it exclusively and when reading the
@@ -65,4 +65,3 @@ export declare function removeStaleSidecarLockIfAllowed(params: {
65
65
  assertGuardHeld?: () => Promise<void>;
66
66
  }): Promise<"removed" | "changed" | "not-approved">;
67
67
  export {};
68
- //# sourceMappingURL=sidecar-lock-reclaim.d.ts.map
@@ -0,0 +1,13 @@
1
+ type CleanupRegistration = {
2
+ event: "exit" | "beforeExit";
3
+ registered: symbol;
4
+ registering: symbol;
5
+ handler: symbol;
6
+ retainAware?: symbol;
7
+ reentryError(): Error;
8
+ };
9
+ /** Preserve the legacy, first-registration-wins protocol across package copies. */
10
+ export declare function ensureSidecarLockCleanupRegistered<T extends true | {
11
+ armed: boolean;
12
+ }>(keys: CleanupRegistration, cleanup: () => void, marker: T): T;
13
+ export {};
@@ -0,0 +1,47 @@
1
+ /** Preserve the legacy, first-registration-wins protocol across package copies. */
2
+ export function ensureSidecarLockCleanupRegistered(keys, cleanup, marker) {
3
+ const state = globalThis;
4
+ if (state[keys.registered])
5
+ return state[keys.registered];
6
+ // process.on emits newListener synchronously; reentry cannot wait for it.
7
+ if (state[keys.registering])
8
+ throw keys.reentryError();
9
+ const registration = {};
10
+ const commit = () => {
11
+ state[keys.handler] = cleanup;
12
+ if (keys.retainAware)
13
+ state[keys.retainAware] = true;
14
+ state[keys.registered] = marker;
15
+ };
16
+ state[keys.registering] = registration;
17
+ try {
18
+ process.on(keys.event, cleanup);
19
+ commit();
20
+ return marker;
21
+ }
22
+ catch (error) {
23
+ if (process.listeners(keys.event).includes(cleanup)) {
24
+ try {
25
+ process.off(keys.event, cleanup);
26
+ }
27
+ catch {
28
+ // Reconcile the marker with the actual listener below.
29
+ }
30
+ }
31
+ if (process.listeners(keys.event).includes(cleanup)) {
32
+ commit();
33
+ }
34
+ else {
35
+ if (state[keys.handler] === cleanup)
36
+ delete state[keys.handler];
37
+ // Only the before-exit lifecycle has an individually owned marker.
38
+ if (marker !== true && state[keys.registered] === marker)
39
+ delete state[keys.registered];
40
+ }
41
+ throw error;
42
+ }
43
+ finally {
44
+ if (state[keys.registering] === registration)
45
+ delete state[keys.registering];
46
+ }
47
+ }
@@ -1,3 +1,2 @@
1
1
  import type { OpenResult, Root } from "./root-impl.js";
2
2
  export declare function openSidecarRoot(lockRoot: Root, relative: string, discardObservation?: "unlinked" | "changed", onOpenFailure?: (error: unknown) => void): Promise<OpenResult | null>;
3
- //# sourceMappingURL=sidecar-lock-root.d.ts.map
@@ -36,4 +36,3 @@ export declare function handleStaleSidecarAdmission<TPayload extends Record<stri
36
36
  waitForRetry(): Promise<void>;
37
37
  }): Promise<void>;
38
38
  export {};
39
- //# sourceMappingURL=sidecar-lock-stale-admission.d.ts.map
@@ -1,4 +1,4 @@
1
- import { defaultSidecarLockShouldReclaim, isTransientLockFileDenial } from "./sidecar-lock-policy.js";
1
+ import { defaultSidecarLockShouldReclaim, isTransientLockFileDenial, sidecarLockStale } from "./sidecar-lock-policy.js";
2
2
  import { readSidecarLockRawSnapshot, removeStaleSidecarLockIfAllowed, sidecarLockSnapshotStillPresent, tryAcquireSidecarReclaimGuard, } from "./sidecar-lock-reclaim.js";
3
3
  import { observeSidecarLockParser, parseSidecarLockSnapshotUnderAdmission, scopedSidecarLockParser, } from "./sidecar-lock-admission-parser.js";
4
4
  /** Handle one historical EEXIST attempt while its canonical admission is held. */
@@ -224,9 +224,5 @@ export async function handleStaleSidecarAdmission(params) {
224
224
  }
225
225
  await params.releaseReclaimGuard();
226
226
  }
227
- throw Object.assign(new Error(`file lock stale for ${normalizedTargetPath}`), {
228
- code: "file_lock_stale",
229
- lockPath,
230
- normalizedTargetPath,
231
- });
227
+ throw sidecarLockStale(lockPath, normalizedTargetPath);
232
228
  }
@@ -5,4 +5,3 @@ export declare function resolveSidecarLockPaths(targetPath: string, explicitLock
5
5
  lockPath: string;
6
6
  normalizedTargetPath: string;
7
7
  }>;
8
- //# sourceMappingURL=sidecar-lock-target.d.ts.map
@@ -12,27 +12,35 @@ export type SidecarLockCompromisedInfo = {
12
12
  lockPath: string;
13
13
  normalizedTargetPath: string;
14
14
  };
15
- export type SidecarLockAcquireOptions<TPayload extends Record<string, unknown>> = {
16
- targetPath: string;
15
+ export type SidecarLockOptionFields<T> = {
16
+ [K in keyof T]: T[K];
17
+ };
18
+ export type SidecarLockCommonAcquireOptions = {
17
19
  lockPath?: string;
18
- staleMs: number;
19
20
  timeoutMs?: number;
20
21
  retry?: SidecarLockRetryOptions;
21
22
  staleRecovery?: SidecarLockStaleRecovery;
22
23
  reentrantOwner?: string;
24
+ parsePayload?: (raw: string) => unknown;
25
+ lockRoot?: Root;
26
+ onCompromised?: (info: SidecarLockCompromisedInfo) => void;
27
+ compromiseCheckIntervalMs?: number;
28
+ };
29
+ export type SidecarLockReclaimParams<Held extends boolean = boolean> = {
30
+ lockPath: string;
31
+ normalizedTargetPath: string;
32
+ payload: unknown;
33
+ staleMs: number;
34
+ nowMs: number;
35
+ heldByThisProcess: Held;
36
+ };
37
+ export type SidecarLockAcquireOptions<TPayload extends Record<string, unknown>> = SidecarLockOptionFields<SidecarLockCommonAcquireOptions & {
38
+ targetPath: string;
39
+ staleMs: number;
23
40
  payload: () => TPayload | Promise<TPayload>;
24
- shouldReclaim?: (params: {
25
- lockPath: string;
26
- normalizedTargetPath: string;
27
- payload: unknown;
28
- staleMs: number;
29
- nowMs: number;
30
- heldByThisProcess: boolean;
31
- }) => boolean | Promise<boolean>;
41
+ shouldReclaim?: (params: SidecarLockReclaimParams) => boolean | Promise<boolean>;
32
42
  shouldRemoveStaleLock?: (snapshot: SidecarLockStaleSnapshot) => boolean | Promise<boolean>;
33
43
  metadata?: Record<string, unknown>;
34
- parsePayload?: (raw: string) => unknown;
35
- lockRoot?: Root;
36
44
  /**
37
45
  * Keep the lock file when the process exits naturally. Default `false`:
38
46
  * process-exit handlers release held locks. Set only for deliberately
@@ -40,9 +48,7 @@ export type SidecarLockAcquireOptions<TPayload extends Record<string, unknown>>
40
48
  * liveness is governed by the caller's own stale policy.
41
49
  */
42
50
  retainOnExit?: boolean;
43
- onCompromised?: (info: SidecarLockCompromisedInfo) => void;
44
- compromiseCheckIntervalMs?: number;
45
- };
51
+ }>;
46
52
  export type SidecarLockHandle = {
47
53
  lockPath: string;
48
54
  normalizedTargetPath: string;
@@ -60,4 +66,3 @@ export type SidecarLockHeldEntry = {
60
66
  export type WithSidecarLockOptions<TPayload extends Record<string, unknown>> = Omit<SidecarLockAcquireOptions<TPayload>, "targetPath"> & {
61
67
  managerKey?: string;
62
68
  };
63
- //# sourceMappingURL=sidecar-lock-types.d.ts.map
@@ -11,4 +11,3 @@ export declare function createSidecarLockManager(key: string): {
11
11
  heldEntries: () => SidecarLockHeldEntry[];
12
12
  };
13
13
  export declare function withSidecarLock<T, TPayload extends Record<string, unknown>>(targetPath: string, options: WithSidecarLockOptions<TPayload>, fn: () => Promise<T>): Promise<T>;
14
- //# sourceMappingURL=sidecar-lock.d.ts.map