@openclaw/fs-safe 0.16.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -0
- package/README.md +8 -1
- package/dist/absolute-path.d.ts +0 -1
- package/dist/absolute-path.js +2 -8
- package/dist/advanced.d.ts +2 -1
- package/dist/advanced.js +2 -0
- package/dist/archive-crc32.d.ts +0 -1
- package/dist/archive-deadline.d.ts +0 -1
- package/dist/archive-deadline.js +22 -23
- package/dist/archive-durability.d.ts +0 -1
- package/dist/archive-entry.d.ts +0 -1
- package/dist/archive-errors.d.ts +0 -1
- package/dist/archive-gzip-tail.d.ts +0 -1
- package/dist/archive-input.d.ts +0 -1
- package/dist/archive-kind.d.ts +0 -1
- package/dist/archive-limits.d.ts +0 -1
- package/dist/archive-merge.d.ts +3 -4
- package/dist/archive-merge.js +17 -7
- package/dist/archive-native.d.ts +3 -14
- package/dist/archive-native.js +46 -70
- package/dist/archive-options.d.ts +9 -2
- package/dist/archive-parser-errors.d.ts +0 -1
- package/dist/archive-parser.wasm +0 -0
- package/dist/archive-plan.d.ts +10 -1
- package/dist/archive-plan.js +31 -21
- package/dist/archive-policy.d.ts +0 -1
- package/dist/archive-read.d.ts +0 -1
- package/dist/archive-staging.d.ts +0 -1
- package/dist/archive-tar-inspect.d.ts +0 -1
- package/dist/archive-tar-stream.d.ts +0 -1
- package/dist/archive-tar-wasm.d.ts +0 -1
- package/dist/archive-tar.d.ts +0 -1
- package/dist/archive-zip-admission.d.ts +0 -1
- package/dist/archive-zip-count.d.ts +0 -1
- package/dist/archive-zip-count.js +21 -1
- package/dist/archive-zip-directory.d.ts +0 -1
- package/dist/archive-zip-directory.js +23 -1
- package/dist/archive-zip-entry.d.ts +0 -1
- package/dist/archive-zip-integrity.d.ts +0 -1
- package/dist/archive-zip-loader.d.ts +2 -1
- package/dist/archive-zip-loader.js +7 -0
- package/dist/archive-zip-manifest.d.ts +0 -1
- package/dist/archive-zip-names.d.ts +0 -1
- package/dist/archive-zip-names.js +7 -2
- package/dist/archive-zip-preflight.d.ts +0 -1
- package/dist/archive.d.ts +0 -1
- package/dist/archive.js +93 -164
- package/dist/async-lock.d.ts +0 -1
- package/dist/atomic.d.ts +0 -1
- package/dist/bounded-read-stream.d.ts +0 -1
- package/dist/bounded-read.d.ts +0 -1
- package/dist/byte-budget.d.ts +0 -1
- package/dist/byte-view.d.ts +2 -0
- package/dist/byte-view.js +13 -0
- package/dist/clone-metadata.d.ts +0 -1
- package/dist/config.d.ts +0 -1
- package/dist/containment.d.ts +0 -1
- package/dist/copy-file-input.d.ts +0 -1
- package/dist/copy-policy.d.ts +0 -1
- package/dist/copy-publication.d.ts +0 -1
- package/dist/copy-tree-portable.d.ts +0 -1
- package/dist/copy-tree-portable.js +9 -6
- package/dist/copy.d.ts +0 -1
- package/dist/copy.js +5 -5
- package/dist/create-directory.d.ts +0 -2
- package/dist/create-directory.js +3 -22
- package/dist/create-file-async.d.ts +0 -1
- package/dist/create-file.d.ts +0 -1
- package/dist/create-file.js +3 -14
- package/dist/create-owned-file.d.ts +0 -1
- package/dist/create.d.ts +1 -2
- package/dist/create.js +1 -1
- package/dist/creation-darwin.d.ts +0 -2
- package/dist/creation-darwin.js +0 -9
- package/dist/creation-file-state.d.ts +0 -1
- package/dist/creation-path.d.ts +2 -1
- package/dist/creation-path.js +12 -0
- package/dist/creation-permissions.d.ts +0 -1
- package/dist/creation-permissions.js +28 -38
- package/dist/deny-mutations.d.ts +2 -3
- package/dist/deny-mutations.js +55 -35
- package/dist/device-path.d.ts +0 -1
- package/dist/directory-durability.d.ts +6 -7
- package/dist/directory-entry-path.d.ts +0 -1
- package/dist/directory-guard.d.ts +2 -7
- package/dist/directory-guard.js +25 -56
- package/dist/directory-mode-node.d.ts +0 -1
- package/dist/directory-mode-owner.d.ts +0 -1
- package/dist/directory-receipt.d.ts +2 -3
- package/dist/directory-receipt.js +15 -19
- package/dist/durability.d.ts +0 -1
- package/dist/effective-uid.d.ts +0 -1
- package/dist/error-detail.d.ts +0 -1
- package/dist/errors.d.ts +0 -1
- package/dist/file-cleanup.d.ts +1 -1
- package/dist/file-cleanup.js +7 -4
- package/dist/file-contents.d.ts +5 -0
- package/dist/file-contents.js +40 -0
- package/dist/file-handle-transfer.d.ts +0 -1
- package/dist/file-hash.d.ts +0 -1
- package/dist/file-hash.js +186 -70
- package/dist/file-identity.d.ts +0 -1
- package/dist/file-lock-sync-acquisition.d.ts +22 -0
- package/dist/file-lock-sync-acquisition.js +98 -0
- package/dist/file-lock-sync-admission.d.ts +0 -2
- package/dist/file-lock-sync-admission.js +9 -48
- package/dist/file-lock-sync-root-acquire.d.ts +0 -1
- package/dist/file-lock-sync-root-acquire.js +35 -98
- package/dist/file-lock-sync-root-arbitration.d.ts +0 -1
- package/dist/file-lock-sync-root-held.d.ts +1 -3
- package/dist/file-lock-sync-root-held.js +7 -5
- package/dist/file-lock-sync-root-io.d.ts +0 -1
- package/dist/file-lock-sync-root-mutation.d.ts +4 -5
- package/dist/file-lock-sync-root-mutation.js +7 -9
- package/dist/file-lock-sync-root-options.d.ts +0 -1
- package/dist/file-lock-sync-root-registration.d.ts +0 -1
- package/dist/file-lock-sync-root.d.ts +1 -2
- package/dist/file-lock-sync-root.js +14 -87
- package/dist/file-lock-sync-stale-admission.d.ts +2 -7
- package/dist/file-lock-sync-stale-admission.js +24 -23
- package/dist/file-lock-sync.d.ts +0 -1
- package/dist/file-lock-sync.js +46 -128
- package/dist/file-lock.d.ts +0 -1
- package/dist/file-observation.d.ts +0 -1
- package/dist/file-store-boundary.d.ts +0 -2
- package/dist/file-store-boundary.js +6 -26
- package/dist/file-store-copy-source.d.ts +1 -2
- package/dist/file-store-copy-source.js +1 -1
- package/dist/file-store-limit.d.ts +1 -2
- package/dist/file-store-limit.js +2 -3
- package/dist/file-store-path.d.ts +0 -1
- package/dist/file-store-prune.d.ts +0 -1
- package/dist/file-store-sync-directory.d.ts +0 -1
- package/dist/file-store-sync-directory.js +194 -231
- package/dist/file-store-sync-write.d.ts +0 -1
- package/dist/file-store-sync-write.js +16 -26
- package/dist/file-store.d.ts +0 -1
- package/dist/file-store.js +6 -7
- package/dist/file-sync.d.ts +0 -1
- package/dist/filename.d.ts +0 -1
- package/dist/filename.js +1 -7
- package/dist/fs.d.ts +0 -1
- package/dist/guarded-mkdir.d.ts +0 -1
- package/dist/guarded-mkdir.js +6 -27
- package/dist/guarded-mutation.d.ts +0 -7
- package/dist/guarded-mutation.js +6 -11
- package/dist/guest-dispatch-python.d.ts +0 -1
- package/dist/guest-dispatch-python.js +41 -90
- package/dist/guest-native-python.d.ts +0 -1
- package/dist/guest.d.ts +0 -1
- package/dist/home-dir.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/install-path.d.ts +0 -1
- package/dist/install-path.js +2 -5
- package/dist/json-document-store.d.ts +0 -1
- package/dist/json-durable-queue-directory.d.ts +13 -1
- package/dist/json-durable-queue-directory.js +134 -0
- package/dist/json-durable-queue-ownership.d.ts +0 -1
- package/dist/json-durable-queue-ownership.js +43 -66
- package/dist/json-durable-queue-read.d.ts +0 -1
- package/dist/json-durable-queue-read.js +6 -6
- package/dist/json-durable-queue.d.ts +0 -1
- package/dist/json-durable-queue.js +17 -139
- package/dist/json-store.d.ts +0 -1
- package/dist/json-stringify.d.ts +0 -1
- package/dist/json.d.ts +0 -1
- package/dist/json.js +38 -90
- package/dist/local-file-access.d.ts +0 -1
- package/dist/local-file-access.js +3 -10
- package/dist/local-file-descriptor.d.ts +0 -1
- package/dist/local-roots.d.ts +0 -1
- package/dist/local-roots.js +19 -21
- package/dist/lock-config.d.ts +0 -1
- package/dist/move-path-cleanup.d.ts +5 -20
- package/dist/move-path-cleanup.js +57 -21
- package/dist/move-path-stage.d.ts +0 -1
- package/dist/move-path.d.ts +0 -1
- package/dist/move-path.js +62 -39
- package/dist/mutation-authority.d.ts +0 -1
- package/dist/native-binding.d.ts +0 -1
- package/dist/native-config.d.ts +0 -1
- package/dist/native-directory-observation.d.ts +0 -1
- package/dist/native-fallback-warning.d.ts +0 -1
- package/dist/native-operations.d.ts +1 -5
- package/dist/native-operations.js +2 -6
- package/dist/native-parent-admission.d.ts +0 -1
- package/dist/native-pinned-write-windows.d.ts +0 -1
- package/dist/native-pinned-write.d.ts +0 -1
- package/dist/native-pinned-write.js +4 -10
- package/dist/native-policy-directory-observation.d.ts +0 -1
- package/dist/native-policy-parent-windows.d.ts +0 -1
- package/dist/native-rename-outcome.d.ts +0 -1
- package/dist/native-staged-file.d.ts +17 -4
- package/dist/native-staged-file.js +63 -68
- package/dist/native.d.ts +0 -1
- package/dist/native.js +2 -2
- package/dist/opened-file-failure.d.ts +0 -1
- package/dist/opened-realpath.d.ts +0 -1
- package/dist/opened-realpath.js +11 -2
- package/dist/output.d.ts +0 -1
- package/dist/overwrite-file-handle.d.ts +0 -1
- package/dist/owner-dacl.d.ts +0 -1
- package/dist/path-case.d.ts +0 -1
- package/dist/path-policy.d.ts +0 -1
- package/dist/path-prefix.d.ts +0 -1
- package/dist/path-scope-lexical.d.ts +0 -1
- package/dist/path-segment-route.d.ts +0 -1
- package/dist/path-suffix-aliases.d.ts +0 -1
- package/dist/path.d.ts +0 -1
- package/dist/path.js +2 -1
- package/dist/permission-exec.d.ts +0 -1
- package/dist/permission-exec.js +19 -25
- package/dist/permissions-public.d.ts +0 -1
- package/dist/permissions-windows.d.ts +2 -10
- package/dist/permissions-windows.js +10 -30
- package/dist/permissions.d.ts +0 -1
- package/dist/permissions.js +11 -33
- package/dist/pinned-mutation-admission.d.ts +0 -1
- package/dist/pinned-mutation-observation.d.ts +0 -1
- package/dist/pinned-mutation-shared-route.d.ts +0 -1
- package/dist/pinned-open.d.ts +1 -1
- package/dist/pinned-open.js +1 -1
- package/dist/pinned-operation.d.ts +0 -1
- package/dist/pinned-write-input.d.ts +0 -1
- package/dist/pinned-write-input.js +11 -1
- package/dist/pinned-write-mode.d.ts +3 -4
- package/dist/pinned-write-mode.js +15 -8
- package/dist/pinned-write-staged.d.ts +0 -1
- package/dist/pinned-write-staged.js +10 -11
- package/dist/pinned-write-types.d.ts +9 -21
- package/dist/pinned-write.d.ts +0 -1
- package/dist/pinned-write.js +17 -13
- package/dist/positional-read.d.ts +0 -1
- package/dist/private-directory.d.ts +0 -1
- package/dist/private-producer-handoff-sync.d.ts +0 -1
- package/dist/private-producer-handoff-sync.js +9 -51
- package/dist/private-producer-handoff.d.ts +20 -1
- package/dist/private-producer-handoff.js +69 -46
- package/dist/private-temp-workspace.d.ts +0 -1
- package/dist/private-temp-workspace.js +11 -36
- package/dist/publish-copy-stage.d.ts +0 -1
- package/dist/publish-file-failure.d.ts +0 -1
- package/dist/publish-file.d.ts +2 -3
- package/dist/publish-file.js +56 -96
- package/dist/read-open-flags.d.ts +0 -1
- package/dist/read-opened-file.d.ts +0 -1
- package/dist/realpath.d.ts +0 -1
- package/dist/recursive-mkdir-path.d.ts +0 -1
- package/dist/regular-file.d.ts +0 -1
- package/dist/regular-file.js +107 -178
- package/dist/replace-directory.d.ts +0 -1
- package/dist/replace-file-copy-fallback.d.ts +0 -1
- package/dist/replace-file-copy-fallback.js +42 -29
- package/dist/replace-file-copy-source.d.ts +0 -1
- package/dist/replace-file-copy-source.js +19 -23
- package/dist/replace-file-descriptor.d.ts +0 -1
- package/dist/replace-file-descriptor.js +16 -17
- package/dist/replace-file-mode.d.ts +0 -1
- package/dist/replace-file-rename-policy.d.ts +0 -1
- package/dist/replace-file-temp-owner.d.ts +12 -13
- package/dist/replace-file-temp-owner.js +72 -91
- package/dist/replace-file.d.ts +0 -1
- package/dist/replace-file.js +9 -13
- package/dist/retained-directory-replacement.d.ts +0 -1
- package/dist/root-boundary.d.ts +0 -1
- package/dist/root-context.d.ts +0 -1
- package/dist/root-create-input.d.ts +0 -1
- package/dist/root-directory-creation.d.ts +0 -1
- package/dist/root-directory-list.d.ts +0 -1
- package/dist/root-directory-list.js +20 -3
- package/dist/root-directory.d.ts +0 -1
- package/dist/root-entries.d.ts +0 -1
- package/dist/root-errors.d.ts +0 -1
- package/dist/root-file-final-admission.d.ts +1 -2
- package/dist/root-file-final-admission.js +5 -2
- package/dist/root-file.d.ts +0 -1
- package/dist/root-file.js +3 -2
- package/dist/root-impl.d.ts +2 -10
- package/dist/root-impl.js +164 -111
- package/dist/root-move-noreplace.d.ts +2 -1
- package/dist/root-move-noreplace.js +2 -2
- package/dist/root-move-preflight.d.ts +0 -1
- package/dist/root-observed-path.d.ts +0 -1
- package/dist/root-options.d.ts +0 -1
- package/dist/root-path-errors.d.ts +0 -1
- package/dist/root-path-existing.d.ts +3 -1
- package/dist/root-path-existing.js +39 -18
- package/dist/root-path-observation.d.ts +0 -1
- package/dist/root-path-stat.d.ts +0 -1
- package/dist/root-path.d.ts +0 -1
- package/dist/root-path.js +60 -188
- package/dist/root-paths-lexical.d.ts +0 -1
- package/dist/root-paths.d.ts +0 -1
- package/dist/root-read-admission.d.ts +0 -1
- package/dist/root-read-admission.js +31 -39
- package/dist/root-remove-identity.d.ts +0 -1
- package/dist/root-remove-receipt.d.ts +0 -1
- package/dist/root-remove.d.ts +0 -1
- package/dist/root-remove.js +15 -1
- package/dist/root-symlink-policy.d.ts +0 -1
- package/dist/root-walk.d.ts +0 -1
- package/dist/root-write-admission.d.ts +0 -1
- package/dist/root-write-compatibility.d.ts +0 -1
- package/dist/root-write-complete-parent.d.ts +0 -1
- package/dist/root-write-lock-binding.d.ts +0 -1
- package/dist/root-write-mode.d.ts +0 -1
- package/dist/root-write-publication.d.ts +0 -1
- package/dist/root-write-verification.d.ts +0 -1
- package/dist/root.d.ts +0 -1
- package/dist/safe-path-segment.d.ts +1 -2
- package/dist/safe-path-segment.js +2 -5
- package/dist/secret-file.d.ts +0 -1
- package/dist/secret-file.js +7 -17
- package/dist/secret-read-async.d.ts +0 -1
- package/dist/secret-read-async.js +5 -5
- package/dist/secret-read-policy.d.ts +0 -1
- package/dist/secret.d.ts +0 -1
- package/dist/secure-file-windows.d.ts +0 -6
- package/dist/secure-file-windows.js +13 -28
- package/dist/secure-file.d.ts +0 -1
- package/dist/secure-file.js +9 -9
- package/dist/secure-temp-dir.d.ts +0 -1
- package/dist/secure-temp-repair.d.ts +0 -1
- package/dist/sibling-staged-file.d.ts +0 -1
- package/dist/sibling-staged-file.js +32 -39
- package/dist/sibling-temp.d.ts +0 -1
- package/dist/sidecar-lock-acquire.d.ts +1 -2
- package/dist/sidecar-lock-acquire.js +35 -58
- package/dist/sidecar-lock-admission-context.d.ts +0 -1
- package/dist/sidecar-lock-admission-parser.d.ts +0 -1
- package/dist/sidecar-lock-admission.d.ts +1 -5
- package/dist/sidecar-lock-admission.js +1 -7
- package/dist/sidecar-lock-handle.d.ts +3 -1
- package/dist/sidecar-lock-handle.js +6 -0
- package/dist/sidecar-lock-policy.d.ts +3 -1
- package/dist/sidecar-lock-policy.js +16 -0
- package/dist/sidecar-lock-reclaim.d.ts +1 -2
- package/dist/sidecar-lock-reclaim.js +11 -8
- package/dist/sidecar-lock-registration.d.ts +13 -0
- package/dist/sidecar-lock-registration.js +47 -0
- package/dist/sidecar-lock-root.d.ts +0 -1
- package/dist/sidecar-lock-stale-admission.d.ts +0 -1
- package/dist/sidecar-lock-target.d.ts +0 -1
- package/dist/sidecar-lock-types.d.ts +0 -1
- package/dist/sidecar-lock.d.ts +0 -1
- package/dist/sidecar-lock.js +19 -88
- package/dist/staged-directory.d.ts +2 -3
- package/dist/staged-file-settlement.d.ts +0 -1
- package/dist/staged-file-types.d.ts +0 -1
- package/dist/standalone-publication-path.d.ts +0 -1
- package/dist/stat-observation.d.ts +0 -1
- package/dist/store.d.ts +0 -1
- package/dist/strict-file-identity.d.ts +1 -2
- package/dist/strict-file-identity.js +9 -9
- package/dist/string-coerce.d.ts +0 -1
- package/dist/suppressed-error.d.ts +0 -1
- package/dist/symlink-parents.d.ts +0 -1
- package/dist/symlink-parents.js +2 -27
- package/dist/temp-cleanup.d.ts +0 -1
- package/dist/temp-target.d.ts +0 -1
- package/dist/temp-target.js +7 -46
- package/dist/temp-workspace-admission.d.ts +0 -8
- package/dist/temp-workspace-admission.js +0 -4
- package/dist/temp-workspace-child-admission.d.ts +0 -4
- package/dist/temp-workspace-child-admission.js +0 -12
- package/dist/temp-workspace-descriptor.d.ts +0 -6
- package/dist/temp-workspace-descriptor.js +0 -2
- package/dist/temp-workspace-identity.d.ts +0 -1
- package/dist/temp-workspace-owner.d.ts +1 -1
- package/dist/temp-workspace-owner.js +49 -26
- package/dist/temp-workspace-permissions.d.ts +0 -1
- package/dist/temp-workspace-types.d.ts +0 -1
- package/dist/temp.d.ts +0 -1
- package/dist/test-hooks.d.ts +0 -1
- package/dist/text-atomic.d.ts +0 -1
- package/dist/timing.d.ts +0 -1
- package/dist/trash.d.ts +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/unicode-path.d.ts +0 -1
- package/dist/unicode-path.js +3 -0
- package/dist/walk.d.ts +0 -1
- package/dist/walk.js +4 -2
- package/dist/windows-command.d.ts +0 -1
- package/dist/windows-owner.d.ts +0 -1
- package/dist/windows-owner.js +4 -1
- package/dist/windows-path-alias.d.ts +0 -1
- package/dist/windows-path-alias.js +7 -43
- package/dist/windows-path-syntax.d.ts +5 -0
- package/dist/windows-path-syntax.js +21 -0
- package/dist/windows-security-command.d.ts +0 -1
- package/dist/windows-security-facts.d.ts +0 -1
- package/dist/write-file-handle.d.ts +7 -1
- package/dist/write-file-handle.js +23 -0
- package/dist/write-open-flags.d.ts +0 -1
- package/dist/write-open-flags.js +1 -8
- package/dist/write-queue.d.ts +0 -1
- package/dist/write-queue.js +1 -4
- package/docs/advanced.md +68 -1
- package/docs/archive.md +41 -2
- package/docs/atomic.md +43 -5
- package/docs/contributing.md +4 -0
- package/docs/copy.md +2 -0
- package/docs/creation.md +8 -4
- package/docs/durability.md +35 -0
- package/docs/file-contents.md +68 -0
- package/docs/json.md +5 -4
- package/docs/local-roots.md +2 -0
- package/docs/mutation-policy-proof.md +11 -7
- package/docs/native.md +9 -8
- package/docs/path.md +4 -4
- package/docs/permissions.md +6 -0
- package/docs/public-api.md +5 -0
- package/docs/quickstart.md +1 -1
- package/docs/reading.md +2 -2
- package/docs/regular-file.md +3 -0
- package/docs/root.md +19 -0
- package/docs/secret-file.md +4 -0
- package/docs/sidecar-lock.md +9 -1
- package/docs/staged-file.md +4 -3
- package/docs/store.md +3 -1
- package/docs/temp.md +4 -1
- package/docs/types.md +18 -2
- package/docs/walk.md +7 -0
- package/docs/writing.md +18 -5
- package/package.json +8 -9
- package/dist/absolute-path.d.ts.map +0 -1
- package/dist/advanced.d.ts.map +0 -1
- package/dist/archive-crc32.d.ts.map +0 -1
- package/dist/archive-deadline.d.ts.map +0 -1
- package/dist/archive-durability.d.ts.map +0 -1
- package/dist/archive-entry.d.ts.map +0 -1
- package/dist/archive-errors.d.ts.map +0 -1
- package/dist/archive-gzip-tail.d.ts.map +0 -1
- package/dist/archive-input.d.ts.map +0 -1
- package/dist/archive-kind.d.ts.map +0 -1
- package/dist/archive-limits.d.ts.map +0 -1
- package/dist/archive-merge.d.ts.map +0 -1
- package/dist/archive-native.d.ts.map +0 -1
- package/dist/archive-options.d.ts.map +0 -1
- package/dist/archive-parser-errors.d.ts.map +0 -1
- package/dist/archive-plan.d.ts.map +0 -1
- package/dist/archive-policy.d.ts.map +0 -1
- package/dist/archive-read.d.ts.map +0 -1
- package/dist/archive-staging.d.ts.map +0 -1
- package/dist/archive-tar-inspect.d.ts.map +0 -1
- package/dist/archive-tar-stream.d.ts.map +0 -1
- package/dist/archive-tar-wasm.d.ts.map +0 -1
- package/dist/archive-tar.d.ts.map +0 -1
- package/dist/archive-zip-admission.d.ts.map +0 -1
- package/dist/archive-zip-count.d.ts.map +0 -1
- package/dist/archive-zip-directory.d.ts.map +0 -1
- package/dist/archive-zip-entry.d.ts.map +0 -1
- package/dist/archive-zip-integrity.d.ts.map +0 -1
- package/dist/archive-zip-loader.d.ts.map +0 -1
- package/dist/archive-zip-manifest.d.ts.map +0 -1
- package/dist/archive-zip-names.d.ts.map +0 -1
- package/dist/archive-zip-preflight.d.ts.map +0 -1
- package/dist/archive.d.ts.map +0 -1
- package/dist/async-lock.d.ts.map +0 -1
- package/dist/atomic.d.ts.map +0 -1
- package/dist/bounded-read-stream.d.ts.map +0 -1
- package/dist/bounded-read.d.ts.map +0 -1
- package/dist/byte-budget.d.ts.map +0 -1
- package/dist/clone-metadata.d.ts.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/containment.d.ts.map +0 -1
- package/dist/copy-file-input.d.ts.map +0 -1
- package/dist/copy-policy.d.ts.map +0 -1
- package/dist/copy-publication.d.ts.map +0 -1
- package/dist/copy-tree-portable.d.ts.map +0 -1
- package/dist/copy.d.ts.map +0 -1
- package/dist/create-directory.d.ts.map +0 -1
- package/dist/create-file-async.d.ts.map +0 -1
- package/dist/create-file.d.ts.map +0 -1
- package/dist/create-owned-file.d.ts.map +0 -1
- package/dist/create.d.ts.map +0 -1
- package/dist/creation-darwin.d.ts.map +0 -1
- package/dist/creation-file-state.d.ts.map +0 -1
- package/dist/creation-path.d.ts.map +0 -1
- package/dist/creation-permissions.d.ts.map +0 -1
- package/dist/deny-mutations.d.ts.map +0 -1
- package/dist/device-path.d.ts.map +0 -1
- package/dist/directory-durability.d.ts.map +0 -1
- package/dist/directory-entry-path.d.ts.map +0 -1
- package/dist/directory-guard.d.ts.map +0 -1
- package/dist/directory-mode-node.d.ts.map +0 -1
- package/dist/directory-mode-owner.d.ts.map +0 -1
- package/dist/directory-receipt.d.ts.map +0 -1
- package/dist/durability.d.ts.map +0 -1
- package/dist/effective-uid.d.ts.map +0 -1
- package/dist/error-detail.d.ts.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/file-cleanup.d.ts.map +0 -1
- package/dist/file-handle-transfer.d.ts.map +0 -1
- package/dist/file-hash.d.ts.map +0 -1
- package/dist/file-identity.d.ts.map +0 -1
- package/dist/file-lock-sync-admission.d.ts.map +0 -1
- package/dist/file-lock-sync-root-acquire.d.ts.map +0 -1
- package/dist/file-lock-sync-root-arbitration.d.ts.map +0 -1
- package/dist/file-lock-sync-root-held.d.ts.map +0 -1
- package/dist/file-lock-sync-root-io.d.ts.map +0 -1
- package/dist/file-lock-sync-root-mutation.d.ts.map +0 -1
- package/dist/file-lock-sync-root-options.d.ts.map +0 -1
- package/dist/file-lock-sync-root-registration.d.ts.map +0 -1
- package/dist/file-lock-sync-root.d.ts.map +0 -1
- package/dist/file-lock-sync-stale-admission.d.ts.map +0 -1
- package/dist/file-lock-sync.d.ts.map +0 -1
- package/dist/file-lock.d.ts.map +0 -1
- package/dist/file-observation.d.ts.map +0 -1
- package/dist/file-store-boundary.d.ts.map +0 -1
- package/dist/file-store-copy-source.d.ts.map +0 -1
- package/dist/file-store-limit.d.ts.map +0 -1
- package/dist/file-store-path.d.ts.map +0 -1
- package/dist/file-store-prune.d.ts.map +0 -1
- package/dist/file-store-sync-directory.d.ts.map +0 -1
- package/dist/file-store-sync-write.d.ts.map +0 -1
- package/dist/file-store.d.ts.map +0 -1
- package/dist/file-sync.d.ts.map +0 -1
- package/dist/filename.d.ts.map +0 -1
- package/dist/fs.d.ts.map +0 -1
- package/dist/guarded-mkdir.d.ts.map +0 -1
- package/dist/guarded-mutation.d.ts.map +0 -1
- package/dist/guest-dispatch-python.d.ts.map +0 -1
- package/dist/guest-native-python.d.ts.map +0 -1
- package/dist/guest.d.ts.map +0 -1
- package/dist/home-dir.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/install-path.d.ts.map +0 -1
- package/dist/json-document-store.d.ts.map +0 -1
- package/dist/json-durable-queue-directory.d.ts.map +0 -1
- package/dist/json-durable-queue-ownership.d.ts.map +0 -1
- package/dist/json-durable-queue-paths.d.ts +0 -11
- package/dist/json-durable-queue-paths.d.ts.map +0 -1
- package/dist/json-durable-queue-paths.js +0 -42
- package/dist/json-durable-queue-read.d.ts.map +0 -1
- package/dist/json-durable-queue.d.ts.map +0 -1
- package/dist/json-store.d.ts.map +0 -1
- package/dist/json-stringify.d.ts.map +0 -1
- package/dist/json.d.ts.map +0 -1
- package/dist/local-file-access.d.ts.map +0 -1
- package/dist/local-file-descriptor.d.ts.map +0 -1
- package/dist/local-roots.d.ts.map +0 -1
- package/dist/lock-config.d.ts.map +0 -1
- package/dist/move-path-cleanup.d.ts.map +0 -1
- package/dist/move-path-stage.d.ts.map +0 -1
- package/dist/move-path.d.ts.map +0 -1
- package/dist/mutation-authority.d.ts.map +0 -1
- package/dist/native-binding.d.ts.map +0 -1
- package/dist/native-config.d.ts.map +0 -1
- package/dist/native-directory-observation.d.ts.map +0 -1
- package/dist/native-fallback-warning.d.ts.map +0 -1
- package/dist/native-operations.d.ts.map +0 -1
- package/dist/native-parent-admission.d.ts.map +0 -1
- package/dist/native-pinned-write-windows.d.ts.map +0 -1
- package/dist/native-pinned-write.d.ts.map +0 -1
- package/dist/native-policy-directory-observation.d.ts.map +0 -1
- package/dist/native-policy-parent-windows.d.ts.map +0 -1
- package/dist/native-rename-outcome.d.ts.map +0 -1
- package/dist/native-staged-file.d.ts.map +0 -1
- package/dist/native.d.ts.map +0 -1
- package/dist/opened-file-failure.d.ts.map +0 -1
- package/dist/opened-realpath.d.ts.map +0 -1
- package/dist/output.d.ts.map +0 -1
- package/dist/overwrite-file-handle.d.ts.map +0 -1
- package/dist/owner-dacl.d.ts.map +0 -1
- package/dist/path-case.d.ts.map +0 -1
- package/dist/path-policy.d.ts.map +0 -1
- package/dist/path-prefix.d.ts.map +0 -1
- package/dist/path-scope-lexical.d.ts.map +0 -1
- package/dist/path-segment-route.d.ts.map +0 -1
- package/dist/path-suffix-aliases.d.ts.map +0 -1
- package/dist/path.d.ts.map +0 -1
- package/dist/permission-exec.d.ts.map +0 -1
- package/dist/permissions-public.d.ts.map +0 -1
- package/dist/permissions-windows.d.ts.map +0 -1
- package/dist/permissions.d.ts.map +0 -1
- package/dist/pinned-mutation-admission.d.ts.map +0 -1
- package/dist/pinned-mutation-observation.d.ts.map +0 -1
- package/dist/pinned-mutation-shared-route.d.ts.map +0 -1
- package/dist/pinned-open.d.ts.map +0 -1
- package/dist/pinned-operation.d.ts.map +0 -1
- package/dist/pinned-write-input.d.ts.map +0 -1
- package/dist/pinned-write-mode.d.ts.map +0 -1
- package/dist/pinned-write-staged.d.ts.map +0 -1
- package/dist/pinned-write-types.d.ts.map +0 -1
- package/dist/pinned-write.d.ts.map +0 -1
- package/dist/positional-read.d.ts.map +0 -1
- package/dist/private-directory.d.ts.map +0 -1
- package/dist/private-producer-handoff-sync.d.ts.map +0 -1
- package/dist/private-producer-handoff.d.ts.map +0 -1
- package/dist/private-temp-workspace.d.ts.map +0 -1
- package/dist/publish-copy-stage.d.ts.map +0 -1
- package/dist/publish-file-failure.d.ts.map +0 -1
- package/dist/publish-file.d.ts.map +0 -1
- package/dist/read-open-flags.d.ts.map +0 -1
- package/dist/read-opened-file.d.ts.map +0 -1
- package/dist/realpath.d.ts.map +0 -1
- package/dist/recursive-mkdir-path.d.ts.map +0 -1
- package/dist/regular-file.d.ts.map +0 -1
- package/dist/replace-directory.d.ts.map +0 -1
- package/dist/replace-file-copy-fallback.d.ts.map +0 -1
- package/dist/replace-file-copy-source.d.ts.map +0 -1
- package/dist/replace-file-descriptor.d.ts.map +0 -1
- package/dist/replace-file-mode.d.ts.map +0 -1
- package/dist/replace-file-rename-policy.d.ts.map +0 -1
- package/dist/replace-file-temp-owner.d.ts.map +0 -1
- package/dist/replace-file.d.ts.map +0 -1
- package/dist/retained-directory-replacement.d.ts.map +0 -1
- package/dist/root-boundary.d.ts.map +0 -1
- package/dist/root-context.d.ts.map +0 -1
- package/dist/root-create-input.d.ts.map +0 -1
- package/dist/root-directory-creation.d.ts.map +0 -1
- package/dist/root-directory-list.d.ts.map +0 -1
- package/dist/root-directory.d.ts.map +0 -1
- package/dist/root-entries.d.ts.map +0 -1
- package/dist/root-errors.d.ts.map +0 -1
- package/dist/root-file-final-admission.d.ts.map +0 -1
- package/dist/root-file.d.ts.map +0 -1
- package/dist/root-impl.d.ts.map +0 -1
- package/dist/root-move-noreplace.d.ts.map +0 -1
- package/dist/root-move-preflight.d.ts.map +0 -1
- package/dist/root-observed-path.d.ts.map +0 -1
- package/dist/root-options.d.ts.map +0 -1
- package/dist/root-path-errors.d.ts.map +0 -1
- package/dist/root-path-existing.d.ts.map +0 -1
- package/dist/root-path-observation.d.ts.map +0 -1
- package/dist/root-path-stat.d.ts.map +0 -1
- package/dist/root-path-symlink.d.ts +0 -7
- package/dist/root-path-symlink.d.ts.map +0 -1
- package/dist/root-path-symlink.js +0 -55
- package/dist/root-path.d.ts.map +0 -1
- package/dist/root-paths-lexical.d.ts.map +0 -1
- package/dist/root-paths.d.ts.map +0 -1
- package/dist/root-read-admission.d.ts.map +0 -1
- package/dist/root-remove-identity.d.ts.map +0 -1
- package/dist/root-remove-receipt.d.ts.map +0 -1
- package/dist/root-remove.d.ts.map +0 -1
- package/dist/root-symlink-policy.d.ts.map +0 -1
- package/dist/root-walk.d.ts.map +0 -1
- package/dist/root-write-admission.d.ts.map +0 -1
- package/dist/root-write-compatibility.d.ts.map +0 -1
- package/dist/root-write-complete-parent.d.ts.map +0 -1
- package/dist/root-write-lock-binding.d.ts.map +0 -1
- package/dist/root-write-mode.d.ts.map +0 -1
- package/dist/root-write-publication.d.ts.map +0 -1
- package/dist/root-write-verification.d.ts.map +0 -1
- package/dist/root.d.ts.map +0 -1
- package/dist/safe-path-segment.d.ts.map +0 -1
- package/dist/secret-file.d.ts.map +0 -1
- package/dist/secret-read-async.d.ts.map +0 -1
- package/dist/secret-read-policy.d.ts.map +0 -1
- package/dist/secret.d.ts.map +0 -1
- package/dist/secure-file-windows.d.ts.map +0 -1
- package/dist/secure-file.d.ts.map +0 -1
- package/dist/secure-temp-dir.d.ts.map +0 -1
- package/dist/secure-temp-repair.d.ts.map +0 -1
- package/dist/sibling-staged-file.d.ts.map +0 -1
- package/dist/sibling-temp.d.ts.map +0 -1
- package/dist/sidecar-lock-acquire.d.ts.map +0 -1
- package/dist/sidecar-lock-admission-context.d.ts.map +0 -1
- package/dist/sidecar-lock-admission-parser.d.ts.map +0 -1
- package/dist/sidecar-lock-admission.d.ts.map +0 -1
- package/dist/sidecar-lock-handle.d.ts.map +0 -1
- package/dist/sidecar-lock-policy.d.ts.map +0 -1
- package/dist/sidecar-lock-reclaim.d.ts.map +0 -1
- package/dist/sidecar-lock-root.d.ts.map +0 -1
- package/dist/sidecar-lock-stale-admission.d.ts.map +0 -1
- package/dist/sidecar-lock-target.d.ts.map +0 -1
- package/dist/sidecar-lock-types.d.ts.map +0 -1
- package/dist/sidecar-lock.d.ts.map +0 -1
- package/dist/staged-directory.d.ts.map +0 -1
- package/dist/staged-file-settlement.d.ts.map +0 -1
- package/dist/staged-file-types.d.ts.map +0 -1
- package/dist/standalone-publication-path.d.ts.map +0 -1
- package/dist/stat-observation.d.ts.map +0 -1
- package/dist/store.d.ts.map +0 -1
- package/dist/strict-file-identity.d.ts.map +0 -1
- package/dist/string-coerce.d.ts.map +0 -1
- package/dist/suppressed-error.d.ts.map +0 -1
- package/dist/symlink-parents.d.ts.map +0 -1
- package/dist/temp-cleanup.d.ts.map +0 -1
- package/dist/temp-target.d.ts.map +0 -1
- package/dist/temp-workspace-admission.d.ts.map +0 -1
- package/dist/temp-workspace-child-admission.d.ts.map +0 -1
- package/dist/temp-workspace-descriptor.d.ts.map +0 -1
- package/dist/temp-workspace-identity.d.ts.map +0 -1
- package/dist/temp-workspace-owner.d.ts.map +0 -1
- package/dist/temp-workspace-permissions.d.ts.map +0 -1
- package/dist/temp-workspace-types.d.ts.map +0 -1
- package/dist/temp.d.ts.map +0 -1
- package/dist/test-hooks.d.ts.map +0 -1
- package/dist/text-atomic.d.ts.map +0 -1
- package/dist/timing.d.ts.map +0 -1
- package/dist/trash.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/unicode-path.d.ts.map +0 -1
- package/dist/walk.d.ts.map +0 -1
- package/dist/windows-command.d.ts.map +0 -1
- package/dist/windows-owner.d.ts.map +0 -1
- package/dist/windows-path-alias.d.ts.map +0 -1
- package/dist/windows-security-command.d.ts.map +0 -1
- package/dist/windows-security-facts.d.ts.map +0 -1
- package/dist/write-file-handle.d.ts.map +0 -1
- package/dist/write-open-flags.d.ts.map +0 -1
- package/dist/write-queue.d.ts.map +0 -1
|
@@ -40,19 +40,19 @@ export async function inspectFileIdentity(inspect, expected, platform = process.
|
|
|
40
40
|
}
|
|
41
41
|
throw identityMismatch();
|
|
42
42
|
}
|
|
43
|
-
export function inspectFileIdentitySync(inspect, expected, platform = process.platform) {
|
|
43
|
+
export function inspectFileIdentitySync(inspect, expected, platform = process.platform, mismatch = identityMismatch) {
|
|
44
44
|
let knownDev;
|
|
45
45
|
let knownIno;
|
|
46
46
|
if (expected) {
|
|
47
47
|
knownDev = expected.dev;
|
|
48
48
|
if (typeof knownDev !== "bigint")
|
|
49
|
-
throw
|
|
49
|
+
throw mismatch();
|
|
50
50
|
knownIno = expected.ino;
|
|
51
51
|
if (typeof knownIno !== "bigint")
|
|
52
|
-
throw
|
|
52
|
+
throw mismatch();
|
|
53
53
|
// An unknown expected device must not bypass observation of its inode.
|
|
54
54
|
if (platform === "win32" && (knownDev === 0n || knownIno === 0n))
|
|
55
|
-
throw
|
|
55
|
+
throw mismatch();
|
|
56
56
|
}
|
|
57
57
|
for (let attempt = 0; attempt < 2; attempt++) {
|
|
58
58
|
const stat = inspect();
|
|
@@ -61,28 +61,28 @@ export function inspectFileIdentitySync(inspect, expected, platform = process.pl
|
|
|
61
61
|
// a checker closure, known-component object, or field array per inspection.
|
|
62
62
|
const dev = stat.dev;
|
|
63
63
|
if (typeof dev !== "bigint")
|
|
64
|
-
throw
|
|
64
|
+
throw mismatch();
|
|
65
65
|
if (platform === "win32" && dev === 0n) {
|
|
66
66
|
complete = false;
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
69
|
if (knownDev !== undefined && knownDev !== dev)
|
|
70
|
-
throw
|
|
70
|
+
throw mismatch();
|
|
71
71
|
knownDev = dev;
|
|
72
72
|
}
|
|
73
73
|
const ino = stat.ino;
|
|
74
74
|
if (typeof ino !== "bigint")
|
|
75
|
-
throw
|
|
75
|
+
throw mismatch();
|
|
76
76
|
if (platform === "win32" && ino === 0n) {
|
|
77
77
|
complete = false;
|
|
78
78
|
}
|
|
79
79
|
else {
|
|
80
80
|
if (knownIno !== undefined && knownIno !== ino)
|
|
81
|
-
throw
|
|
81
|
+
throw mismatch();
|
|
82
82
|
knownIno = ino;
|
|
83
83
|
}
|
|
84
84
|
if (complete)
|
|
85
85
|
return stat;
|
|
86
86
|
}
|
|
87
|
-
throw
|
|
87
|
+
throw mismatch();
|
|
88
88
|
}
|
package/dist/string-coerce.d.ts
CHANGED
|
@@ -2,4 +2,3 @@ export declare function normalizeNullableString(value: unknown): string | null;
|
|
|
2
2
|
export declare function normalizeOptionalString(value: unknown): string | undefined;
|
|
3
3
|
export declare function normalizeOptionalLowercaseString(value: unknown): string | undefined;
|
|
4
4
|
export declare function normalizeLowercaseStringOrEmpty(value: unknown): string;
|
|
5
|
-
//# sourceMappingURL=string-coerce.d.ts.map
|
|
@@ -9,4 +9,3 @@ export type AssertNoSymlinkParentsOptions = {
|
|
|
9
9
|
};
|
|
10
10
|
export declare function assertNoSymlinkParents(params: AssertNoSymlinkParentsOptions): Promise<void>;
|
|
11
11
|
export declare function assertNoSymlinkParentsSync(params: AssertNoSymlinkParentsOptions): void;
|
|
12
|
-
//# sourceMappingURL=symlink-parents.d.ts.map
|
package/dist/symlink-parents.js
CHANGED
|
@@ -26,32 +26,7 @@ function formatUnsafePath(params, current) {
|
|
|
26
26
|
return `${params.messagePrefix ?? "Path"} must not traverse symlinked directory: ${current}`;
|
|
27
27
|
}
|
|
28
28
|
export async function assertNoSymlinkParents(params) {
|
|
29
|
-
|
|
30
|
-
if (!walk) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
let current = walk.root;
|
|
34
|
-
for (const [index, segment] of walk.segments.entries()) {
|
|
35
|
-
current = path.join(current, segment);
|
|
36
|
-
try {
|
|
37
|
-
const stat = fsSync.lstatSync(current);
|
|
38
|
-
if (stat.isSymbolicLink()) {
|
|
39
|
-
if (params.allowRootChildSymlink && path.dirname(current) === walk.root) {
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
throw new Error(formatUnsafePath(params, current));
|
|
43
|
-
}
|
|
44
|
-
if ((params.requireDirectories || index < walk.segments.length - 1) && !stat.isDirectory()) {
|
|
45
|
-
throw new FsSafeError("not-file", `${params.messagePrefix ?? "Path"} must traverse directories: ${current}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
if (hasNodeErrorCode(err, "ENOENT") && params.allowMissing !== false) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
throw err;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
29
|
+
assertNoSymlinkParentsSync(params);
|
|
55
30
|
}
|
|
56
31
|
export function assertNoSymlinkParentsSync(params) {
|
|
57
32
|
const walk = resolvePathWalk(params);
|
|
@@ -74,7 +49,7 @@ export function assertNoSymlinkParentsSync(params) {
|
|
|
74
49
|
}
|
|
75
50
|
}
|
|
76
51
|
catch (err) {
|
|
77
|
-
if (err
|
|
52
|
+
if (hasNodeErrorCode(err, "ENOENT") && params.allowMissing !== false) {
|
|
78
53
|
return;
|
|
79
54
|
}
|
|
80
55
|
throw err;
|
package/dist/temp-cleanup.d.ts
CHANGED
|
@@ -11,4 +11,3 @@ export declare function registerTempPathForExit(tempPath: string, options?: {
|
|
|
11
11
|
}): TempPathRegistration;
|
|
12
12
|
export declare function __cleanupRegisteredTempPathsForTest(): void;
|
|
13
13
|
export declare function __cleanupRegisteredTempPathForTest(tempPath: string): void;
|
|
14
|
-
//# sourceMappingURL=temp-cleanup.d.ts.map
|
package/dist/temp-target.d.ts
CHANGED
|
@@ -29,4 +29,3 @@ export declare function createOwnedTempFile(params: TempFileOptions): Promise<{
|
|
|
29
29
|
export declare function tempFile(params: TempFileOptions): Promise<TempFile>;
|
|
30
30
|
export declare function withTempFile<T>(params: TempFileOptions, fn: (tmpPath: string) => Promise<T>): Promise<T>;
|
|
31
31
|
export {};
|
|
32
|
-
//# sourceMappingURL=temp-target.d.ts.map
|
package/dist/temp-target.js
CHANGED
|
@@ -59,10 +59,7 @@ function sanitizeExtension(extension) {
|
|
|
59
59
|
return token ? `.${token}` : "";
|
|
60
60
|
}
|
|
61
61
|
export function sanitizeTempFileName(fileName) {
|
|
62
|
-
|
|
63
|
-
allowDotPrefix: true,
|
|
64
|
-
});
|
|
65
|
-
return suffixWindowsReservedDeviceName(sanitized);
|
|
62
|
+
return suffixWindowsReservedDeviceName(sanitizeSafePathSegment(path.basename(fileName)) ?? "download.bin");
|
|
66
63
|
}
|
|
67
64
|
export function buildRandomTempFilePath(params) {
|
|
68
65
|
const rootDir = resolveTempRoot(params.rootDir);
|
|
@@ -87,16 +84,7 @@ function isNodeErrorWithCode(err, code) {
|
|
|
87
84
|
}
|
|
88
85
|
async function cleanupTempDir(dir, identity, onCleanupError) {
|
|
89
86
|
try {
|
|
90
|
-
|
|
91
|
-
try {
|
|
92
|
-
current = fsSync.lstatSync(dir, { bigint: true });
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
if (isNodeErrorWithCode(error, "ENOENT")) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
throw error;
|
|
99
|
-
}
|
|
87
|
+
const current = fsSync.lstatSync(dir, { bigint: true });
|
|
100
88
|
if (!current || !sameFileIdentityForCleanup(current, identity)) {
|
|
101
89
|
return;
|
|
102
90
|
}
|
|
@@ -131,7 +119,7 @@ export async function createOwnedTempFile(params) {
|
|
|
131
119
|
const prefix = `${sanitizePrefix(params.prefix)}-`;
|
|
132
120
|
if (cleanupSafety === "require-bounded") {
|
|
133
121
|
const initialFileName = sanitizeTempFileName(params.fileName ?? "download.bin");
|
|
134
|
-
const [{ TempWorkspaceCleanupCapability, TempWorkspaceCleanupOwner }, { admitExistingTempWorkspaceRoot }, { TempWorkspaceRetainedChild }, { validateInitialTempWorkspaceChild
|
|
122
|
+
const [{ TempWorkspaceCleanupCapability, TempWorkspaceCleanupOwner, throwTempWorkspaceCreationFailure }, { admitExistingTempWorkspaceRoot }, { TempWorkspaceRetainedChild }, { validateInitialTempWorkspaceChild }, { inspectDirectoryIdentitySync },] = await Promise.all([
|
|
135
123
|
import("./temp-workspace-owner.js"),
|
|
136
124
|
import("./temp-workspace-admission.js"),
|
|
137
125
|
import("./temp-workspace-descriptor.js"),
|
|
@@ -159,9 +147,9 @@ export async function createOwnedTempFile(params) {
|
|
|
159
147
|
identity = Object.freeze({ dev: initial.dev, ino: initial.ino });
|
|
160
148
|
const needsModeInitialization = validateInitialTempWorkspaceChild(initial, admission.ownerUid, 0o700);
|
|
161
149
|
retainedChild = TempWorkspaceRetainedChild.retain(dir, identity);
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
150
|
+
if (needsModeInitialization) {
|
|
151
|
+
await retainedChild.initializeMode(0o700, admission.ownerUid, admission.assertCurrent);
|
|
152
|
+
}
|
|
165
153
|
const retainDescriptor = capability.admitChildDescriptor(retainedChild.ensureReadable());
|
|
166
154
|
capability.assertAncestryCurrent();
|
|
167
155
|
retainedChild.finalizeAdmission(admission.ownerUid, 0o700);
|
|
@@ -172,34 +160,7 @@ export async function createOwnedTempFile(params) {
|
|
|
172
160
|
});
|
|
173
161
|
}
|
|
174
162
|
catch (error) {
|
|
175
|
-
|
|
176
|
-
if (cleanupOwner)
|
|
177
|
-
cleanupOwner.cleanupSync();
|
|
178
|
-
else {
|
|
179
|
-
const closeErrors = [];
|
|
180
|
-
try {
|
|
181
|
-
retainedChild?.close();
|
|
182
|
-
}
|
|
183
|
-
catch (closeError) {
|
|
184
|
-
closeErrors.push(closeError);
|
|
185
|
-
}
|
|
186
|
-
try {
|
|
187
|
-
capability.close();
|
|
188
|
-
}
|
|
189
|
-
catch (closeError) {
|
|
190
|
-
closeErrors.push(closeError);
|
|
191
|
-
}
|
|
192
|
-
if (closeErrors.length === 1)
|
|
193
|
-
throw closeErrors[0];
|
|
194
|
-
if (closeErrors.length > 1) {
|
|
195
|
-
throw new AggregateError(closeErrors, "temp file admission descriptor close failed");
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
catch (cleanupError) {
|
|
200
|
-
throw new AggregateError([error, cleanupError], "temp file creation and cleanup both failed");
|
|
201
|
-
}
|
|
202
|
-
throw error;
|
|
163
|
+
return throwTempWorkspaceCreationFailure(error, retainedChild, capability, cleanupOwner, "temp file");
|
|
203
164
|
}
|
|
204
165
|
const owner = cleanupOwner;
|
|
205
166
|
const file = (fileName) => {
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
type ExactIdentity = Readonly<{
|
|
2
|
-
dev: bigint;
|
|
3
|
-
ino: bigint;
|
|
4
|
-
}>;
|
|
5
1
|
export type TempWorkspaceRootAdmission = {
|
|
6
2
|
dir: string;
|
|
7
|
-
identity: ExactIdentity;
|
|
8
3
|
ownerUid: number | undefined;
|
|
9
|
-
realPath: string;
|
|
10
4
|
retainCleanupParent(descriptorFd: number): void;
|
|
11
5
|
prepareCleanupProbe(descriptorFd: number): void;
|
|
12
6
|
prepareChildCreation(descriptorFd?: number): void;
|
|
@@ -18,5 +12,3 @@ export type TempWorkspaceRootAdmission = {
|
|
|
18
12
|
export declare function admitExistingTempWorkspaceRoot(rootDir: string): TempWorkspaceRootAdmission;
|
|
19
13
|
export declare function admitTempWorkspaceRoot(rootDir: string): Promise<TempWorkspaceRootAdmission>;
|
|
20
14
|
export declare function admitTempWorkspaceRootSync(rootDir: string): TempWorkspaceRootAdmission;
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=temp-workspace-admission.d.ts.map
|
|
@@ -247,9 +247,7 @@ function rootAdmission(chain, ownerUid) {
|
|
|
247
247
|
const current = chain[chain.length - 1];
|
|
248
248
|
return {
|
|
249
249
|
dir: current.dir,
|
|
250
|
-
identity: current.identity,
|
|
251
250
|
ownerUid,
|
|
252
|
-
realPath: current.realPath,
|
|
253
251
|
retainCleanupParent: (descriptorFd) => {
|
|
254
252
|
assertSnapshot(current, ownerUid);
|
|
255
253
|
associateTempWorkspaceRoot(current, ownerUid, descriptorFd);
|
|
@@ -280,9 +278,7 @@ function canonicalRootAdmission(discovery, ownerUid) {
|
|
|
280
278
|
};
|
|
281
279
|
return {
|
|
282
280
|
dir: discovery.dir,
|
|
283
|
-
identity: discovery.identity,
|
|
284
281
|
ownerUid,
|
|
285
|
-
realPath: discovery.realPath,
|
|
286
282
|
// Merely opening the cleanup-parent descriptor grants no authority. The
|
|
287
283
|
// exact association is completed only at a bounded probe or the mutation
|
|
288
284
|
// boundary below.
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import type { BigIntStats, Stats } from "node:fs";
|
|
2
2
|
import type { TempWorkspaceRootAdmission } from "./temp-workspace-admission.js";
|
|
3
|
-
import type { TempWorkspaceRetainedChild } from "./temp-workspace-descriptor.js";
|
|
4
3
|
import { type TempWorkspaceIdentityStat } from "./temp-workspace-identity.js";
|
|
5
4
|
export declare function assertTempWorkspaceChildState(stat: BigIntStats | Stats, ownerUid: number | undefined): void;
|
|
6
5
|
export declare function validateInitialTempWorkspaceChild(stat: BigIntStats, ownerUid: number | undefined, mode: number): boolean;
|
|
7
6
|
export declare function childHasRequestedMode(stat: BigIntStats | Stats, mode: number): boolean;
|
|
8
7
|
export declare function admitTempWorkspaceChild(dir: string, expected: BigIntStats, parent: TempWorkspaceRootAdmission, mode: number): Promise<void> | undefined;
|
|
9
8
|
export declare function admitTempWorkspaceChildSync(dir: string, expected: BigIntStats, parent: TempWorkspaceRootAdmission, mode: number): void;
|
|
10
|
-
export declare function admitRetainedTempWorkspaceChild(retained: TempWorkspaceRetainedChild, needsModeInitialization: boolean, parent: TempWorkspaceRootAdmission, mode: number): Promise<void> | undefined;
|
|
11
|
-
export declare function admitRetainedTempWorkspaceChildSync(retained: TempWorkspaceRetainedChild, needsModeInitialization: boolean, parent: TempWorkspaceRootAdmission, mode: number): void;
|
|
12
9
|
export declare function validateAdmittedTempWorkspaceChild(current: TempWorkspaceIdentityStat, ownerUid: number | undefined, mode: number): TempWorkspaceIdentityStat;
|
|
13
|
-
//# sourceMappingURL=temp-workspace-child-admission.d.ts.map
|
|
@@ -74,18 +74,6 @@ export function admitTempWorkspaceChildSync(dir, expected, parent, mode) {
|
|
|
74
74
|
owner.close();
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
export function admitRetainedTempWorkspaceChild(retained, needsModeInitialization, parent, mode) {
|
|
78
|
-
if (!needsModeInitialization)
|
|
79
|
-
return undefined;
|
|
80
|
-
return retained.initializeMode(mode, parent.ownerUid, parent.assertCurrent);
|
|
81
|
-
}
|
|
82
|
-
export function admitRetainedTempWorkspaceChildSync(retained, needsModeInitialization, parent, mode) {
|
|
83
|
-
if (!needsModeInitialization) {
|
|
84
|
-
retained.discardInitialReceipt();
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
retained.initializeModeSync(mode, parent.ownerUid, parent.assertCurrent);
|
|
88
|
-
}
|
|
89
77
|
export function validateAdmittedTempWorkspaceChild(current, ownerUid, mode) {
|
|
90
78
|
assertTempWorkspaceChildState(current, ownerUid);
|
|
91
79
|
if (!childHasRequestedMode(current, mode)) {
|
|
@@ -8,11 +8,6 @@ export type RetainedDirectory = {
|
|
|
8
8
|
access: DirectoryDescriptorAccess;
|
|
9
9
|
receipt: Readonly<{
|
|
10
10
|
path: string;
|
|
11
|
-
realPath: string;
|
|
12
|
-
identity: Readonly<{
|
|
13
|
-
dev: bigint;
|
|
14
|
-
ino: bigint;
|
|
15
|
-
}>;
|
|
16
11
|
}>;
|
|
17
12
|
};
|
|
18
13
|
export type RetainedChildDirectory = {
|
|
@@ -45,4 +40,3 @@ export declare class TempWorkspaceRetainedChild {
|
|
|
45
40
|
close(): void;
|
|
46
41
|
}
|
|
47
42
|
export {};
|
|
48
|
-
//# sourceMappingURL=temp-workspace-descriptor.d.ts.map
|
|
@@ -12,4 +12,3 @@ export declare const TEMP_WORKSPACE_NUMERIC_IDENTITY_REPLAY: boolean;
|
|
|
12
12
|
export declare function projectTempWorkspaceNumericIdentity(identity: TempWorkspaceIdentity): TempWorkspaceNumericIdentity | undefined;
|
|
13
13
|
export declare function inspectTempWorkspaceDescriptorIdentitySync(fd: number, expected: TempWorkspaceIdentity, numeric: TempWorkspaceNumericIdentity | undefined): TempWorkspaceIdentityStat;
|
|
14
14
|
export declare function inspectTempWorkspaceDirectoryIdentitySync(dir: string, expected: TempWorkspaceIdentity, numeric: TempWorkspaceNumericIdentity | undefined): TempWorkspaceIdentityStat;
|
|
15
|
-
//# sourceMappingURL=temp-workspace-identity.d.ts.map
|
|
@@ -15,10 +15,10 @@ export declare class TempWorkspaceCleanupCapability {
|
|
|
15
15
|
assertAncestryCurrent(): void;
|
|
16
16
|
close(): void;
|
|
17
17
|
}
|
|
18
|
+
export declare function throwTempWorkspaceCreationFailure(error: unknown, retainedChild: TempWorkspaceRetainedChild | undefined, capability: TempWorkspaceCleanupCapability, owner?: TempWorkspaceCleanupOwner, label?: string): never;
|
|
18
19
|
export declare class TempWorkspaceCleanupOwner {
|
|
19
20
|
#private;
|
|
20
21
|
constructor(retained: TempWorkspaceRetainedChild, capability: TempWorkspaceCleanupCapability, retainDescriptor: boolean);
|
|
21
22
|
cleanup(): Promise<TempWorkspaceCleanupResult>;
|
|
22
23
|
cleanupSync(): TempWorkspaceCleanupResult;
|
|
23
24
|
}
|
|
24
|
-
//# sourceMappingURL=temp-workspace-owner.d.ts.map
|
|
@@ -58,10 +58,10 @@ export class TempWorkspaceCleanupCapability {
|
|
|
58
58
|
try {
|
|
59
59
|
parent = openTempWorkspaceCleanupParent(root, admission);
|
|
60
60
|
}
|
|
61
|
-
catch {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
catch (error) {
|
|
62
|
+
// Failed descriptor closure must retain the original admission failure too.
|
|
63
|
+
if (error instanceof AggregateError)
|
|
64
|
+
throw error;
|
|
65
65
|
}
|
|
66
66
|
let available = false;
|
|
67
67
|
if (childModeAllowsRemoval && parent?.access === "read" && isNativeCleanupBinding(binding)) {
|
|
@@ -158,6 +158,36 @@ export class TempWorkspaceCleanupCapability {
|
|
|
158
158
|
fsSync.closeSync(this.parent.fd);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
+
export function throwTempWorkspaceCreationFailure(error, retainedChild, capability, owner, label = "temp workspace") {
|
|
162
|
+
try {
|
|
163
|
+
if (owner)
|
|
164
|
+
owner.cleanupSync();
|
|
165
|
+
else {
|
|
166
|
+
const closeErrors = [];
|
|
167
|
+
try {
|
|
168
|
+
retainedChild?.close();
|
|
169
|
+
}
|
|
170
|
+
catch (closeError) {
|
|
171
|
+
closeErrors.push(closeError);
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
capability.close();
|
|
175
|
+
}
|
|
176
|
+
catch (closeError) {
|
|
177
|
+
closeErrors.push(closeError);
|
|
178
|
+
}
|
|
179
|
+
if (closeErrors.length === 1)
|
|
180
|
+
throw closeErrors[0];
|
|
181
|
+
if (closeErrors.length > 1) {
|
|
182
|
+
throw new AggregateError(closeErrors, `${label} admission descriptor close failed`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (cleanupError) {
|
|
187
|
+
throw new AggregateError([error, cleanupError], `${label} creation and cleanup both failed`);
|
|
188
|
+
}
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
161
191
|
export class TempWorkspaceCleanupOwner {
|
|
162
192
|
#dir;
|
|
163
193
|
#identity;
|
|
@@ -294,22 +324,19 @@ export class TempWorkspaceCleanupOwner {
|
|
|
294
324
|
await beforeNativeRemoval(quarantine.path);
|
|
295
325
|
return this.#mapRemoval(await this.#capability.binding.removeOwnedTree(this.#capability.parent.fd, quarantine.name, this.#directory.fd));
|
|
296
326
|
}
|
|
297
|
-
let removalFailure;
|
|
298
327
|
try {
|
|
299
328
|
this.#assertQuarantine(quarantine);
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return "indeterminate";
|
|
332
|
+
}
|
|
333
|
+
// Removal failures propagate unchanged; only authority uncertainty becomes a receipt.
|
|
334
|
+
await fs.rm(quarantine.path, { recursive: true, force: true });
|
|
335
|
+
try {
|
|
307
336
|
this.#capability.assertCurrent();
|
|
308
337
|
return "removed";
|
|
309
338
|
}
|
|
310
|
-
catch
|
|
311
|
-
if (removalFailure !== undefined)
|
|
312
|
-
throw removalFailure.error;
|
|
339
|
+
catch {
|
|
313
340
|
return "indeterminate";
|
|
314
341
|
}
|
|
315
342
|
}
|
|
@@ -318,22 +345,18 @@ export class TempWorkspaceCleanupOwner {
|
|
|
318
345
|
getFsSafeTestHooks()?.beforeTempWorkspaceNativeRemovalSync?.(quarantine.path);
|
|
319
346
|
return this.#mapRemoval(this.#capability.binding.removeOwnedTreeSync(this.#capability.parent.fd, quarantine.name, this.#directory.fd));
|
|
320
347
|
}
|
|
321
|
-
let removalFailure;
|
|
322
348
|
try {
|
|
323
349
|
this.#assertQuarantine(quarantine);
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
return "indeterminate";
|
|
353
|
+
}
|
|
354
|
+
fsSync.rmSync(quarantine.path, { recursive: true, force: true });
|
|
355
|
+
try {
|
|
331
356
|
this.#capability.assertCurrent();
|
|
332
357
|
return "removed";
|
|
333
358
|
}
|
|
334
|
-
catch
|
|
335
|
-
if (removalFailure !== undefined)
|
|
336
|
-
throw removalFailure.error;
|
|
359
|
+
catch {
|
|
337
360
|
return "indeterminate";
|
|
338
361
|
}
|
|
339
362
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import type { BigIntStats, Stats } from "node:fs";
|
|
2
2
|
export declare function validateTempWorkspaceDirMode(mode: number): void;
|
|
3
3
|
export declare function assertTrustedTempWorkspaceDirectory(stat: Pick<BigIntStats, "uid" | "mode"> | Pick<Stats, "uid" | "mode">, uid: number | undefined, child?: boolean): void;
|
|
4
|
-
//# sourceMappingURL=temp-workspace-permissions.d.ts.map
|
package/dist/temp.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { tempWorkspace, type TempWorkspace, type TempWorkspaceOptions, type TempWorkspaceCleanupResult, type TempWorkspaceCleanupSafety, tempWorkspaceSync, type TempWorkspaceSync, withTempWorkspace, withTempWorkspaceSync, } from "./private-temp-workspace.js";
|
|
2
2
|
export type { TempPathIdentityReceipt } from "./temp-cleanup.js";
|
|
3
3
|
export { resolveSecureTempRoot, type ResolveSecureTempRootOptions, type SecureTempRootDescriptorAdapter, } from "./secure-temp-dir.js";
|
|
4
|
-
//# sourceMappingURL=temp.d.ts.map
|
package/dist/test-hooks.d.ts
CHANGED
package/dist/text-atomic.d.ts
CHANGED
package/dist/timing.d.ts
CHANGED
package/dist/trash.d.ts
CHANGED
package/dist/types.d.ts
CHANGED
package/dist/unicode-path.d.ts
CHANGED
package/dist/unicode-path.js
CHANGED
|
@@ -3,6 +3,9 @@ export function lowerCaseNfc(value) {
|
|
|
3
3
|
return NON_ASCII.test(value) ? value.normalize("NFC").toLowerCase().normalize("NFC") : value.toLowerCase();
|
|
4
4
|
}
|
|
5
5
|
export function maxNormalizedUtf8Bytes(value, includeRaw = false) {
|
|
6
|
+
// ASCII has identical raw, NFC and NFD forms, with one UTF-8 byte per unit.
|
|
7
|
+
if (typeof value === "string" && !NON_ASCII.test(value))
|
|
8
|
+
return value.length;
|
|
6
9
|
const nfc = value.normalize("NFC");
|
|
7
10
|
const bytes = Buffer.byteLength(nfc, "utf8");
|
|
8
11
|
const maximum = includeRaw && nfc !== value ? Math.max(bytes, Buffer.byteLength(value, "utf8")) : bytes;
|
package/dist/walk.d.ts
CHANGED
|
@@ -38,4 +38,3 @@ type WalkDirectoryResultWithFailures = WalkDirectoryResult & {
|
|
|
38
38
|
export declare function walkDirectorySync(rootDir: string, options?: WalkDirectoryOptions): WalkDirectoryResultWithFailures;
|
|
39
39
|
export declare function walkDirectory(rootDir: string, options?: AsyncWalkDirectoryOptions): Promise<WalkDirectoryResultWithFailures>;
|
|
40
40
|
export {};
|
|
41
|
-
//# sourceMappingURL=walk.d.ts.map
|
package/dist/walk.js
CHANGED
|
@@ -108,13 +108,14 @@ export function walkDirectorySync(rootDir, options = {}) {
|
|
|
108
108
|
recordFailedDir(result, root, dir, depth, error);
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
|
+
const childPrefix = dir.endsWith(path.sep) ? dir : `${dir}${path.sep}`;
|
|
111
112
|
for (const dirent of entries) {
|
|
112
113
|
if (shouldStop(result, options)) {
|
|
113
114
|
result.truncated = true;
|
|
114
115
|
return;
|
|
115
116
|
}
|
|
116
117
|
result.scannedEntryCount += 1;
|
|
117
|
-
const fullPath =
|
|
118
|
+
const fullPath = childPrefix + dirent.name;
|
|
118
119
|
const kind = resolveKind(fullPath, dirent, symlinks);
|
|
119
120
|
if (!kind)
|
|
120
121
|
continue;
|
|
@@ -171,13 +172,14 @@ export async function walkDirectory(rootDir, options = {}) {
|
|
|
171
172
|
recordFailedDir(result, root, dir, depth, error);
|
|
172
173
|
return;
|
|
173
174
|
}
|
|
175
|
+
const childPrefix = dir.endsWith(path.sep) ? dir : `${dir}${path.sep}`;
|
|
174
176
|
for (const dirent of entries) {
|
|
175
177
|
if (shouldStop(result, options)) {
|
|
176
178
|
result.truncated = true;
|
|
177
179
|
return;
|
|
178
180
|
}
|
|
179
181
|
result.scannedEntryCount += 1;
|
|
180
|
-
const fullPath =
|
|
182
|
+
const fullPath = childPrefix + dirent.name;
|
|
181
183
|
const kind = resolveKind(fullPath, dirent, symlinks);
|
|
182
184
|
if (!kind)
|
|
183
185
|
continue;
|
package/dist/windows-owner.d.ts
CHANGED
package/dist/windows-owner.js
CHANGED
|
@@ -79,7 +79,10 @@ export async function inspectWindowsOwner(params) {
|
|
|
79
79
|
if (!ownerSid || !currentUserSid) {
|
|
80
80
|
return { error: "Windows owner query returned invalid SID data" };
|
|
81
81
|
}
|
|
82
|
-
const remote = parsed.remote
|
|
82
|
+
const remote = parsed.remote;
|
|
83
|
+
if (typeof remote !== "boolean") {
|
|
84
|
+
return { error: "Windows owner query returned invalid locality data" };
|
|
85
|
+
}
|
|
83
86
|
return {
|
|
84
87
|
sid: ownerSid,
|
|
85
88
|
currentUserSid,
|
|
@@ -36,4 +36,3 @@ export declare function hasWindowsPathAlias(value: string, kind: WindowsPathAlia
|
|
|
36
36
|
export declare function assertNoWindowsPathAliasForPlatform(value: string, kind: WindowsPathAliasKind, message: string, platform: NodeJS.Platform | string | undefined): void;
|
|
37
37
|
export declare function assertNoWindowsPathAlias(value: string, kind?: WindowsPathAliasKind, message?: string, platform?: NodeJS.Platform | string): void;
|
|
38
38
|
export declare function isWindowsPathAliasError(error: unknown): error is FsSafeError;
|
|
39
|
-
//# sourceMappingURL=windows-path-alias.d.ts.map
|