@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
@@ -1,27 +1,26 @@
1
1
  import fs from "node:fs";
2
- import { defaultSyncShouldReclaim, syncLockTimeout } from "./file-lock-sync-admission.js";
2
+ import { defaultSyncShouldReclaim } from "./file-lock-sync-admission.js";
3
3
  import { parseSidecarLockSnapshot, readSidecarLockRawSnapshotSync, removeSidecarLockIfUnchangedSync, } from "./sidecar-lock-reclaim.js";
4
4
  import { assertSynchronousCallbackResult } from "./mutation-authority.js";
5
+ import { sidecarLockStale } from "./sidecar-lock-policy.js";
5
6
  /** Handle one exclusive-create conflict without surrendering canonical admission. */
6
- export function handleSyncStaleAdmission(params) {
7
+ export function handleSyncStaleAdmission(acquisition, params) {
7
8
  const holderChanged = {};
8
9
  const assertUnheld = () => {
9
- if (!params.hasToken()) {
10
- throw syncLockTimeout(params.lockPath, params.normalizedTargetPath);
11
- }
10
+ acquisition.assert();
12
11
  if (params.currentHeld())
13
12
  throw holderChanged;
14
13
  };
15
14
  const retryHolderChange = (error) => {
16
15
  if (error !== holderChanged)
17
16
  return false;
18
- params.waitForRetry();
17
+ acquisition.waitForRetry();
19
18
  return true;
20
19
  };
21
20
  let rawSnapshot;
22
21
  let lockFileOpenDenied = false;
23
22
  try {
24
- rawSnapshot = readSidecarLockRawSnapshotSync(params.lockPath, {
23
+ rawSnapshot = readSidecarLockRawSnapshotSync(acquisition.lockPath, {
25
24
  rejectNonFile: true,
26
25
  onOpenFailure: (error) => {
27
26
  lockFileOpenDenied = true;
@@ -41,7 +40,7 @@ export function handleSyncStaleAdmission(params) {
41
40
  return;
42
41
  throw boundaryError;
43
42
  }
44
- if (lockFileOpenDenied && params.retryLockFileDenial(error))
43
+ if (lockFileOpenDenied && acquisition.retryDenial(error))
45
44
  return;
46
45
  throw error;
47
46
  }
@@ -93,7 +92,7 @@ export function handleSyncStaleAdmission(params) {
93
92
  throw error;
94
93
  }
95
94
  if (!snapshot) {
96
- params.waitForRetry();
95
+ acquisition.waitForRetry();
97
96
  return;
98
97
  }
99
98
  const nowMs = Date.now();
@@ -103,8 +102,8 @@ export function handleSyncStaleAdmission(params) {
103
102
  try {
104
103
  reclaim = stale.shouldReclaim
105
104
  ? Reflect.apply(stale.shouldReclaim, params.options, [{
106
- lockPath: params.lockPath,
107
- normalizedTargetPath: params.normalizedTargetPath,
105
+ lockPath: acquisition.lockPath,
106
+ normalizedTargetPath: acquisition.normalizedTargetPath,
108
107
  payload: snapshot.payload,
109
108
  staleMs: params.staleMs,
110
109
  nowMs,
@@ -123,7 +122,7 @@ export function handleSyncStaleAdmission(params) {
123
122
  throw error;
124
123
  }
125
124
  if (!reclaim) {
126
- params.waitForRetry();
125
+ acquisition.waitForRetry();
127
126
  return;
128
127
  }
129
128
  if (params.staleRecovery === "remove-if-unchanged" &&
@@ -134,8 +133,8 @@ export function handleSyncStaleAdmission(params) {
134
133
  assertUnheld();
135
134
  try {
136
135
  approved = Reflect.apply(stale.shouldRemove, params.options, [{
137
- lockPath: params.lockPath,
138
- normalizedTargetPath: params.normalizedTargetPath,
136
+ lockPath: acquisition.lockPath,
137
+ normalizedTargetPath: acquisition.normalizedTargetPath,
139
138
  raw: snapshot.raw,
140
139
  payload: snapshot.payload,
141
140
  }]);
@@ -151,11 +150,7 @@ export function handleSyncStaleAdmission(params) {
151
150
  throw error;
152
151
  }
153
152
  if (!approved) {
154
- throw Object.assign(new Error(`file lock stale for ${params.normalizedTargetPath}`), {
155
- code: "file_lock_stale",
156
- lockPath: params.lockPath,
157
- normalizedTargetPath: params.normalizedTargetPath,
158
- });
153
+ throw sidecarLockStale(acquisition.lockPath, acquisition.normalizedTargetPath);
159
154
  }
160
155
  try {
161
156
  fs.mkdirSync(params.reclaimGuardPath);
@@ -170,7 +165,7 @@ export function handleSyncStaleAdmission(params) {
170
165
  throw boundaryError;
171
166
  }
172
167
  if (error.code === "EEXIST") {
173
- params.waitForRetry();
168
+ acquisition.waitForRetry();
174
169
  return;
175
170
  }
176
171
  throw error;
@@ -178,7 +173,7 @@ export function handleSyncStaleAdmission(params) {
178
173
  let holderInterrupted = false;
179
174
  try {
180
175
  assertUnheld();
181
- if (removeSidecarLockIfUnchangedSync(params.lockPath, snapshot, assertUnheld))
176
+ if (removeSidecarLockIfUnchangedSync(acquisition.lockPath, snapshot, assertUnheld))
182
177
  return;
183
178
  }
184
179
  catch (error) {
@@ -196,13 +191,9 @@ export function handleSyncStaleAdmission(params) {
196
191
  }
197
192
  }
198
193
  if (holderInterrupted) {
199
- params.waitForRetry();
194
+ acquisition.waitForRetry();
200
195
  return;
201
196
  }
202
197
  }
203
- throw Object.assign(new Error(`file lock stale for ${params.normalizedTargetPath}`), {
204
- code: "file_lock_stale",
205
- lockPath: params.lockPath,
206
- normalizedTargetPath: params.normalizedTargetPath,
207
- });
198
+ throw sidecarLockStale(acquisition.lockPath, acquisition.normalizedTargetPath);
208
199
  }
@@ -1,28 +1,11 @@
1
- import type { Root } from "./root-impl.js";
2
1
  import { type SidecarLockStaleSnapshot } from "./sidecar-lock-reclaim.js";
3
- import type { SidecarLockCompromisedInfo, SidecarLockRetryOptions, SidecarLockStaleRecovery } from "./sidecar-lock-types.js";
4
- export type FileLockSyncAcquireOptions<TPayload extends Record<string, unknown>> = {
5
- lockPath?: string;
2
+ import type { SidecarLockCommonAcquireOptions, SidecarLockOptionFields, SidecarLockReclaimParams } from "./sidecar-lock-types.js";
3
+ export type FileLockSyncAcquireOptions<TPayload extends Record<string, unknown>> = SidecarLockOptionFields<SidecarLockCommonAcquireOptions & {
6
4
  staleMs?: number;
7
- timeoutMs?: number;
8
- retry?: SidecarLockRetryOptions;
9
- staleRecovery?: SidecarLockStaleRecovery;
10
- reentrantOwner?: string;
11
5
  payload: () => TPayload;
12
- shouldReclaim?: (params: {
13
- lockPath: string;
14
- normalizedTargetPath: string;
15
- payload: unknown;
16
- staleMs: number;
17
- nowMs: number;
18
- heldByThisProcess: false;
19
- }) => boolean;
6
+ shouldReclaim?: (params: SidecarLockReclaimParams<false>) => boolean;
20
7
  shouldRemoveStaleLock?: (snapshot: SidecarLockStaleSnapshot) => boolean;
21
- parsePayload?: (raw: string) => unknown;
22
- lockRoot?: Root;
23
- onCompromised?: (info: SidecarLockCompromisedInfo) => void;
24
- compromiseCheckIntervalMs?: number;
25
- };
8
+ }>;
26
9
  export type FileLockSyncHandle = {
27
10
  lockPath: string;
28
11
  normalizedTargetPath: string;
@@ -32,4 +15,3 @@ export type FileLockSyncHandle = {
32
15
  };
33
16
  export declare function acquireFileLockSync<TPayload extends Record<string, unknown>>(targetPath: string, options: FileLockSyncAcquireOptions<TPayload>): FileLockSyncHandle;
34
17
  export declare function withFileLockSync<T, TPayload extends Record<string, unknown>>(targetPath: string, options: FileLockSyncAcquireOptions<TPayload>, fn: () => T): T;
35
- //# sourceMappingURL=file-lock-sync.d.ts.map
@@ -3,14 +3,14 @@ import { acquireFileLockSyncWithRoot } from "./file-lock-sync-root-acquire.js";
3
3
  import { withSyncHeldLockHandle } from "./file-lock-sync-root-held.js";
4
4
  import path from "node:path";
5
5
  import { readSidecarLockRawSnapshotSync, readSidecarLockSnapshotSync, removeSidecarLockIfUnchangedSync, serializeSidecarLockPayload, sidecarLockSnapshotMatches, } from "./sidecar-lock-reclaim.js";
6
- import { computeSidecarLockDelayMs, isTransientLockFileDenial, maxTransientLockDenials, validateSidecarLockStaleMs, validateSidecarLockCompromiseCheckIntervalMs, validateSidecarLockRetryOptions, validateSidecarLockTimeoutMs, } from "./sidecar-lock-policy.js";
6
+ import { sidecarLockTimeout, isTransientLockFileDenial, validateSidecarLockStaleMs, validateSidecarLockCompromiseCheckIntervalMs, validateSidecarLockRetryOptions, validateSidecarLockTimeoutMs, } from "./sidecar-lock-policy.js";
7
7
  import { getFsSafeLockConfig } from "./lock-config.js";
8
- import { sleepSync } from "./timing.js";
8
+ import { SyncLockAcquisition } from "./file-lock-sync-acquisition.js";
9
9
  import { assertNoWindowsPathAlias } from "./windows-path-alias.js";
10
10
  import { realpathSync } from "./realpath.js";
11
11
  import { recursiveMkdirPath } from "./recursive-mkdir-path.js";
12
12
  import { createSuppressedError } from "./suppressed-error.js";
13
- import { ensureSyncLockExitCleanupRegistered, getSyncHeldLocks, foreignSyncHeldLock, getSyncLockAdmissions, syncReclaimGuardExists, syncLockTimeout, } from "./file-lock-sync-admission.js";
13
+ import { ensureSyncLockExitCleanupRegistered, getSyncHeldLocks, foreignSyncHeldLock, getSyncLockAdmissions, syncReclaimGuardExists, } from "./file-lock-sync-admission.js";
14
14
  import { handleSyncStaleAdmission, } from "./file-lock-sync-stale-admission.js";
15
15
  function releaseAllSyncHeldLocks() {
16
16
  const heldLocks = getSyncHeldLocks();
@@ -135,15 +135,7 @@ export function acquireFileLockSync(targetPath, options) {
135
135
  initiallyHeld.refCount += 1;
136
136
  return createSyncHeldLockHandle(initiallyHeld);
137
137
  }
138
- const admissions = getSyncLockAdmissions();
139
- const admissionToken = {};
140
- let ownsAdmission = false;
141
- const hasAdmissionToken = () => admissions.get(normalizedTargetPath) === admissionToken;
142
- const releaseAdmission = () => {
143
- if (ownsAdmission && hasAdmissionToken())
144
- admissions.delete(normalizedTargetPath);
145
- ownsAdmission = false;
146
- };
138
+ const acquisition = new SyncLockAcquisition(lockPath, normalizedTargetPath, retry, timeoutMs);
147
139
  let payloadCallback;
148
140
  let onCompromised = undefined;
149
141
  let onCompromisedObserved = false;
@@ -152,54 +144,10 @@ export function acquireFileLockSync(targetPath, options) {
152
144
  let staleRecovery = undefined;
153
145
  let staleRecoveryObserved = false;
154
146
  const staleOptions = {};
155
- const startedAt = Date.now();
156
- let attempt = 0;
157
- let transientDenials = 0;
158
147
  const reclaimGuardPath = `${lockPath}.reclaim`;
159
- const waitForRetry = () => {
160
- releaseAdmission();
161
- const elapsed = Date.now() - startedAt;
162
- const timedOut = timeoutMs !== undefined && elapsed >= timeoutMs;
163
- if (timedOut || (retry.retries !== undefined && attempt >= retry.retries)) {
164
- throw syncLockTimeout(lockPath, normalizedTargetPath);
165
- }
166
- const remaining = timeoutMs === undefined || timeoutMs === Number.POSITIVE_INFINITY
167
- ? Number.POSITIVE_INFINITY
168
- : Math.max(0, timeoutMs - elapsed);
169
- sleepSync(Math.min(computeSidecarLockDelayMs(retry, attempt), remaining));
170
- attempt += 1;
171
- };
172
- const retryLockFileDenial = (error) => {
173
- if (!isTransientLockFileDenial(error, lockPath) ||
174
- ++transientDenials > maxTransientLockDenials)
175
- return false;
176
- try {
177
- waitForRetry();
178
- }
179
- catch (waitError) {
180
- // Preserve the filesystem diagnosis when the caller's budget runs out.
181
- if (waitError.code === "file_lock_timeout")
182
- throw error;
183
- throw waitError;
184
- }
185
- return true;
186
- };
187
- const assertAdmissionToken = () => {
188
- if (!hasAdmissionToken())
189
- throw syncLockTimeout(lockPath, normalizedTargetPath);
190
- };
191
- const runAdmissionBoundary = (callback) => {
192
- assertAdmissionToken();
193
- try {
194
- return callback();
195
- }
196
- finally {
197
- assertAdmissionToken();
198
- }
199
- };
200
148
  try {
201
149
  while (true) {
202
- if (!ownsAdmission) {
150
+ if (!acquisition.owns) {
203
151
  const held = heldLocks.get(normalizedTargetPath);
204
152
  if (held && !foreignSyncHeldLock("raw", normalizedTargetPath) &&
205
153
  requestedReentrantOwner !== undefined &&
@@ -208,12 +156,7 @@ export function acquireFileLockSync(targetPath, options) {
208
156
  held.refCount += 1;
209
157
  return createSyncHeldLockHandle(held);
210
158
  }
211
- if (admissions.has(normalizedTargetPath)) {
212
- // The owner can only finish after this synchronous callback unwinds.
213
- throw syncLockTimeout(lockPath, normalizedTargetPath);
214
- }
215
- admissions.set(normalizedTargetPath, admissionToken);
216
- ownsAdmission = true;
159
+ acquisition.reserve();
217
160
  }
218
161
  const attemptHeld = currentTargetHolder();
219
162
  const holderWasReplaced = () => {
@@ -221,60 +164,60 @@ export function acquireFileLockSync(targetPath, options) {
221
164
  return current !== undefined && current !== attemptHeld;
222
165
  };
223
166
  if (!staleRecoveryObserved) {
224
- staleRecovery = runAdmissionBoundary(() => options.staleRecovery ?? defaults.staleRecovery);
167
+ staleRecovery = acquisition.run(() => options.staleRecovery ?? defaults.staleRecovery);
225
168
  staleRecoveryObserved = true;
226
169
  if (holderWasReplaced()) {
227
- waitForRetry();
170
+ acquisition.waitForRetry();
228
171
  continue;
229
172
  }
230
173
  }
231
174
  const reclaimGuardExists = syncReclaimGuardExists(reclaimGuardPath);
232
- if (!hasAdmissionToken())
233
- throw syncLockTimeout(lockPath, normalizedTargetPath);
175
+ if (!acquisition.hasToken())
176
+ throw sidecarLockTimeout(lockPath, normalizedTargetPath);
234
177
  if (holderWasReplaced()) {
235
- waitForRetry();
178
+ acquisition.waitForRetry();
236
179
  continue;
237
180
  }
238
181
  if (reclaimGuardExists) {
239
- waitForRetry();
182
+ acquisition.waitForRetry();
240
183
  continue;
241
184
  }
242
185
  let fd;
243
186
  let createdHeld;
244
187
  let createdSnapshot;
245
188
  if (!payloadCallback)
246
- payloadCallback = runAdmissionBoundary(() => options.payload);
189
+ payloadCallback = acquisition.run(() => options.payload);
247
190
  if (holderWasReplaced()) {
248
- waitForRetry();
191
+ acquisition.waitForRetry();
249
192
  continue;
250
193
  }
251
- const payload = runAdmissionBoundary(() => Reflect.apply(payloadCallback, options, []));
194
+ const payload = acquisition.run(() => Reflect.apply(payloadCallback, options, []));
252
195
  if (holderWasReplaced()) {
253
- waitForRetry();
196
+ acquisition.waitForRetry();
254
197
  continue;
255
198
  }
256
- const { raw, ownershipToken } = runAdmissionBoundary(() => serializeSidecarLockPayload(payload));
199
+ const { raw, ownershipToken } = acquisition.run(() => serializeSidecarLockPayload(payload));
257
200
  if (holderWasReplaced()) {
258
- waitForRetry();
201
+ acquisition.waitForRetry();
259
202
  continue;
260
203
  }
261
204
  if (currentTargetHolder() !== undefined) {
262
- waitForRetry();
205
+ acquisition.waitForRetry();
263
206
  continue;
264
207
  }
265
208
  if (!onCompromisedObserved) {
266
- onCompromised = runAdmissionBoundary(() => options.onCompromised);
209
+ onCompromised = acquisition.run(() => options.onCompromised);
267
210
  onCompromisedObserved = true;
268
211
  if (currentTargetHolder() !== undefined) {
269
- waitForRetry();
212
+ acquisition.waitForRetry();
270
213
  continue;
271
214
  }
272
215
  }
273
216
  if (!parsePayloadObserved) {
274
- parsePayload = runAdmissionBoundary(() => options.parsePayload);
217
+ parsePayload = acquisition.run(() => options.parsePayload);
275
218
  parsePayloadObserved = true;
276
219
  if (currentTargetHolder() !== undefined) {
277
- waitForRetry();
220
+ acquisition.waitForRetry();
278
221
  continue;
279
222
  }
280
223
  }
@@ -311,34 +254,17 @@ export function acquireFileLockSync(targetPath, options) {
311
254
  };
312
255
  const candidateHeld = createdHeld;
313
256
  ensureSyncLockExitCleanupRegistered(releaseAllSyncHeldLocks, lockPath, normalizedTargetPath);
314
- if (!hasAdmissionToken() || currentTargetHolder() !== undefined) {
315
- throw syncLockTimeout(lockPath, normalizedTargetPath);
257
+ if (!acquisition.hasToken() || currentTargetHolder() !== undefined) {
258
+ throw sidecarLockTimeout(lockPath, normalizedTargetPath);
316
259
  }
317
260
  const returnedHandle = createSyncHeldLockHandle(candidateHeld);
318
- if (onCompromised && (compromiseCheckIntervalMs ?? 0) > 0) {
319
- const compromisedCallback = onCompromised;
320
- candidateHeld.timer = setInterval(() => {
321
- let stillHeld;
322
- try {
323
- stillHeld = returnedHandle.verifyStillHeld();
324
- }
325
- catch {
326
- stillHeld = false;
327
- }
328
- if (!stillHeld && candidateHeld.timer) {
329
- clearInterval(candidateHeld.timer);
330
- candidateHeld.timer = undefined;
331
- Reflect.apply(compromisedCallback, options, [{ lockPath, normalizedTargetPath }]);
332
- }
333
- }, compromiseCheckIntervalMs);
334
- candidateHeld.timer.unref();
335
- }
336
- if (!hasAdmissionToken() ||
261
+ acquisition.monitor(candidateHeld, returnedHandle, onCompromised, compromiseCheckIntervalMs, options);
262
+ if (!acquisition.hasToken() ||
337
263
  currentTargetHolder() !== undefined) {
338
- throw syncLockTimeout(lockPath, normalizedTargetPath);
264
+ throw sidecarLockTimeout(lockPath, normalizedTargetPath);
339
265
  }
340
266
  heldLocks.set(normalizedTargetPath, candidateHeld);
341
- releaseAdmission();
267
+ acquisition.release();
342
268
  fd = undefined;
343
269
  return returnedHandle;
344
270
  }
@@ -374,44 +300,39 @@ export function acquireFileLockSync(targetPath, options) {
374
300
  }
375
301
  }
376
302
  if (lockFileCreateDenied) {
377
- if (!hasAdmissionToken())
378
- throw syncLockTimeout(lockPath, normalizedTargetPath);
303
+ if (!acquisition.hasToken())
304
+ throw sidecarLockTimeout(lockPath, normalizedTargetPath);
379
305
  if (currentTargetHolder() !== undefined) {
380
- waitForRetry();
306
+ acquisition.waitForRetry();
381
307
  continue;
382
308
  }
383
- if (retryLockFileDenial(error))
309
+ if (acquisition.retryDenial(error))
384
310
  continue;
385
311
  throw error;
386
312
  }
387
313
  if (!exclusiveCreateConflict)
388
314
  throw error;
389
- if (!hasAdmissionToken())
390
- throw syncLockTimeout(lockPath, normalizedTargetPath);
315
+ if (!acquisition.hasToken())
316
+ throw sidecarLockTimeout(lockPath, normalizedTargetPath);
391
317
  if (currentTargetHolder() !== undefined) {
392
- waitForRetry();
318
+ acquisition.waitForRetry();
393
319
  continue;
394
320
  }
395
- handleSyncStaleAdmission({
396
- hasToken: hasAdmissionToken,
321
+ handleSyncStaleAdmission(acquisition, {
397
322
  currentHeld: currentTargetHolder,
398
- lockPath,
399
- normalizedTargetPath,
400
323
  options,
401
324
  parsePayload,
402
325
  reclaimGuardPath,
403
- retryLockFileDenial,
404
326
  staleMs,
405
327
  staleOptions,
406
328
  staleRecovery,
407
- waitForRetry,
408
329
  });
409
330
  continue;
410
331
  }
411
332
  }
412
333
  }
413
334
  finally {
414
- releaseAdmission();
335
+ acquisition.release();
415
336
  }
416
337
  }
417
338
  export function withFileLockSync(targetPath, options, fn) {
@@ -21,4 +21,3 @@ export declare function withFileLock<T, TPayload extends Record<string, unknown>
21
21
  export declare function createFileLockManager(key: string): FileLockManager;
22
22
  export declare function drainFileLockManagerForTest(targetPath: string, managerKey?: string): Promise<void>;
23
23
  export declare function resetFileLockManagerForTest(targetPath: string, managerKey?: string): void;
24
- //# sourceMappingURL=file-lock.d.ts.map
@@ -6,4 +6,3 @@ export declare function fileObservation(): {
6
6
  has(error: unknown, kind: FailureKind): boolean;
7
7
  };
8
8
  export {};
9
- //# sourceMappingURL=file-observation.d.ts.map
@@ -18,7 +18,6 @@ export declare function writeStreamToTempSource(params: {
18
18
  path: string;
19
19
  cleanup: () => Promise<void>;
20
20
  }>;
21
- export declare function assertSyncDirectoryGuard(guard: SyncParentGuard): void;
22
21
  export declare function ensureParentSync(params: {
23
22
  rootDir: string;
24
23
  filePath: string;
@@ -30,4 +29,10 @@ export declare function ensureStoreDirectorySync(params: {
30
29
  mode: number;
31
30
  messagePrefix: "private store" | "store";
32
31
  }): SyncParentGuard;
33
- //# sourceMappingURL=file-store-boundary.d.ts.map
32
+ export declare function assertRelativePath(relativePath: string): string;
33
+ export declare function resolveStorePath(rootDir: string, relativePath: string): string;
34
+ export declare function assertFileStoreMaxBytes(size: number, limit: number | undefined): void;
35
+ export declare function readFileStoreCopySource(params: {
36
+ sourcePath: string;
37
+ maxBytes: number;
38
+ }): Promise<Buffer>;
@@ -2,25 +2,22 @@ import syncFs from "node:fs";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import { createByteLimitTransform } from "./bounded-read-stream.js";
5
- import { normalizeMaxBytes } from "./byte-budget.js";
6
5
  import { pipeline } from "node:stream/promises";
7
6
  import { FsSafeError } from "./errors.js";
8
7
  import { assertSyncStoreDirectoryReceipt, ensureSyncStoreDirectory, } from "./file-store-sync-directory.js";
9
- import { isPathInside } from "./path.js";
8
+ import { isPathInside, splitSafeRelativePath } from "./path.js";
10
9
  import { resolveOpenedFileRealPathForHandle, root } from "./root.js";
11
10
  import { ensureTrailingSep } from "./root-context.js";
12
11
  import { RootHandle } from "./root-impl.js";
13
12
  import { prepareSecretFileWrite } from "./secret-file.js";
14
13
  import { resolveSecureTempRoot } from "./secure-temp-dir.js";
15
14
  import { recursiveMkdirPath } from "./recursive-mkdir-path.js";
15
+ import { readRegularFile } from "./regular-file.js";
16
+ import { errorCauseOptions } from "./root-errors.js";
16
17
  import { assertNoWindowsPathAlias } from "./windows-path-alias.js";
17
- function parentRelativePath(relativePath) {
18
- const parent = path.posix.dirname(relativePath);
19
- return parent === "." ? "" : parent;
20
- }
21
18
  export async function ensureParentInRoot(scopedRoot, relativePath, mode) {
22
- const parent = parentRelativePath(relativePath);
23
- if (!parent) {
19
+ const parent = path.posix.dirname(relativePath);
20
+ if (parent === ".") {
24
21
  return;
25
22
  }
26
23
  await scopedRoot.mkdir(parent);
@@ -28,10 +25,9 @@ export async function ensureParentInRoot(scopedRoot, relativePath, mode) {
28
25
  }
29
26
  export async function openWritableStoreRoot(params) {
30
27
  assertNoWindowsPathAlias(params.rootDir, "filesystem", "store root uses a Windows filesystem namespace alias");
31
- const maxBytes = normalizeMaxBytes(params.maxBytes);
32
28
  await fs.mkdir(recursiveMkdirPath(params.rootDir), { recursive: true, mode: params.dirMode });
33
29
  await fs.chmod(params.rootDir, params.dirMode).catch(() => undefined);
34
- return await root(params.rootDir, { hardlinks: "reject", maxBytes });
30
+ return await root(params.rootDir, { hardlinks: "reject", maxBytes: params.maxBytes });
35
31
  }
36
32
  export async function openPrivateStoreLockRoot(params) {
37
33
  const { parentGuard } = await prepareSecretFileWrite(params);
@@ -66,15 +62,8 @@ async function chmodDirectoryInRootBestEffort(scopedRoot, relativePath, mode) {
66
62
  await handle.close().catch(() => undefined);
67
63
  }
68
64
  }
69
- function createMaxBytesTransform(maxBytes) {
70
- const limit = normalizeMaxBytes(maxBytes);
71
- if (limit === undefined) {
72
- return undefined;
73
- }
74
- return createByteLimitTransform(limit, () => new FsSafeError("too-large", `file exceeds maximum size of ${limit} bytes`));
75
- }
76
65
  export async function writeStreamToTempSource(params) {
77
- const maxBytes = normalizeMaxBytes(params.maxBytes);
66
+ const maxBytes = params.maxBytes;
78
67
  const tempRoot = resolveSecureTempRoot({
79
68
  fallbackPrefix: "fs-safe-file-store",
80
69
  unsafeFallbackLabel: "file store temp dir",
@@ -90,7 +79,7 @@ export async function writeStreamToTempSource(params) {
90
79
  writable.once("close", () => {
91
80
  handleClosedByStream = true;
92
81
  });
93
- const limiter = createMaxBytesTransform(maxBytes);
82
+ const limiter = maxBytes === undefined ? undefined : createByteLimitTransform(maxBytes, () => new FsSafeError("too-large", `file exceeds maximum size of ${maxBytes} bytes`));
94
83
  if (limiter) {
95
84
  await pipeline(params.stream, limiter, writable);
96
85
  }
@@ -116,13 +105,6 @@ export async function writeStreamToTempSource(params) {
116
105
  throw err;
117
106
  }
118
107
  }
119
- export function assertSyncDirectoryGuard(guard) {
120
- assertSyncStoreDirectoryReceipt({
121
- dir: guard.dir,
122
- realPath: guard.realPath,
123
- exactStat: guard.exactStat,
124
- });
125
- }
126
108
  export function ensureParentSync(params) {
127
109
  assertNoWindowsPathAlias(params.rootDir, "filesystem", "store root uses a Windows filesystem namespace alias");
128
110
  assertNoWindowsPathAlias(params.filePath, "filesystem", "store path uses a Windows filesystem namespace alias");
@@ -135,6 +117,61 @@ export function ensureParentSync(params) {
135
117
  }
136
118
  export function ensureStoreDirectorySync(params) {
137
119
  const guard = ensureSyncStoreDirectory(params);
138
- assertSyncDirectoryGuard(guard);
120
+ assertSyncStoreDirectoryReceipt(guard);
139
121
  return guard;
140
122
  }
123
+ export function assertRelativePath(relativePath) {
124
+ const raw = relativePath.trim();
125
+ if (!raw || raw !== relativePath) {
126
+ throw new FsSafeError("invalid-path", "store key must be non-empty and unpadded");
127
+ }
128
+ const segments = splitSafeRelativePath(raw);
129
+ if (segments.length === 0 ||
130
+ segments.join("/") !== raw ||
131
+ raw.normalize("NFC") !== raw ||
132
+ segments.some((segment) => /[ .]$/u.test(segment))) {
133
+ throw new FsSafeError("invalid-path", "store key must use one canonical relative spelling");
134
+ }
135
+ return raw;
136
+ }
137
+ export function resolveStorePath(rootDir, relativePath) {
138
+ const key = assertRelativePath(relativePath);
139
+ // FileStore constructors snapshot an absolute root before this helper runs.
140
+ // Do not re-resolve it: Node drops the trailing separator from an exact
141
+ // Windows namespace drive root such as `\\?\C:\`.
142
+ const root = path.isAbsolute(rootDir) ? rootDir : path.resolve(rootDir);
143
+ // The immutable key already passed segment validation; keep the containment check.
144
+ const target = path.resolve(root, key);
145
+ if (!isPathInside(root, target)) {
146
+ throw new FsSafeError("outside-workspace", "relative path escapes root");
147
+ }
148
+ return target;
149
+ }
150
+ // Store operation boundaries admit the primitive limit before reaching this helper.
151
+ export function assertFileStoreMaxBytes(size, limit) {
152
+ if (limit !== undefined && size > limit) {
153
+ throw new FsSafeError("too-large", `file exceeds maximum size of ${limit} bytes`);
154
+ }
155
+ }
156
+ export async function readFileStoreCopySource(params) {
157
+ assertNoWindowsPathAlias(params.sourcePath, "filesystem", "source path uses a Windows filesystem namespace alias");
158
+ const sourceStat = syncFs.lstatSync(params.sourcePath);
159
+ if (sourceStat.isSymbolicLink() || !sourceStat.isFile()) {
160
+ throw new FsSafeError("not-file", "source path is not a file");
161
+ }
162
+ assertFileStoreMaxBytes(sourceStat.size, params.maxBytes);
163
+ try {
164
+ return (await readRegularFile({ filePath: params.sourcePath, maxBytes: params.maxBytes }))
165
+ .buffer;
166
+ }
167
+ catch (error) {
168
+ const message = error instanceof Error ? error.message : String(error);
169
+ if (message.includes("regular file") || message.includes("not a regular file")) {
170
+ throw new FsSafeError("not-file", "source path is not a file", errorCauseOptions(error));
171
+ }
172
+ if (message.includes(`exceeds ${params.maxBytes} bytes`)) {
173
+ throw new FsSafeError("too-large", `file exceeds maximum size of ${params.maxBytes} bytes`, errorCauseOptions(error));
174
+ }
175
+ throw error;
176
+ }
177
+ }
@@ -9,4 +9,3 @@ export declare function pruneExpiredStoreEntries(params: {
9
9
  dirMode: number;
10
10
  options: FileStorePruneOptions;
11
11
  }): Promise<void>;
12
- //# sourceMappingURL=file-store-prune.d.ts.map
@@ -13,4 +13,3 @@ export declare function ensureSyncStoreDirectory(params: {
13
13
  }): SyncStoreDirectoryReceipt;
14
14
  export declare function assertSyncStoreDirectoryReceipt(receipt: SyncStoreDirectoryReceipt): void;
15
15
  export {};
16
- //# sourceMappingURL=file-store-sync-directory.d.ts.map