@openclaw/fs-safe 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/dist/absolute-path.d.ts +0 -1
- package/dist/advanced.d.ts +0 -1
- package/dist/archive-crc32.d.ts +0 -1
- package/dist/archive-deadline.d.ts +0 -1
- 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 +2 -4
- package/dist/archive-merge.js +14 -4
- package/dist/archive-native.d.ts +3 -15
- package/dist/archive-native.js +46 -71
- package/dist/archive-options.d.ts +7 -2
- package/dist/archive-parser-errors.d.ts +0 -1
- 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-directory.d.ts +0 -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 +0 -1
- package/dist/archive-zip-manifest.d.ts +0 -1
- package/dist/archive-zip-names.d.ts +0 -1
- package/dist/archive-zip-preflight.d.ts +0 -1
- package/dist/archive.d.ts +0 -1
- package/dist/archive.js +87 -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 +0 -1
- 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 -1
- 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 +0 -1
- 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 +0 -1
- 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 +0 -1
- package/dist/file-contents.d.ts +0 -1
- package/dist/file-handle-transfer.d.ts +0 -1
- package/dist/file-hash.d.ts +0 -1
- package/dist/file-hash.js +170 -66
- 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 +32 -98
- package/dist/file-lock-sync-root-arbitration.d.ts +0 -1
- package/dist/file-lock-sync-root-held.d.ts +0 -1
- 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 +21 -23
- package/dist/file-lock-sync.d.ts +0 -1
- package/dist/file-lock-sync.js +38 -117
- 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 +3 -4
- 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-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/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 +42 -61
- 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 +7 -130
- 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 +6 -15
- 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/lock-config.d.ts +0 -1
- package/dist/move-path-cleanup.d.ts +0 -1
- package/dist/move-path-stage.d.ts +0 -1
- package/dist/move-path.d.ts +0 -1
- 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 +15 -3
- package/dist/native-staged-file.js +55 -63
- package/dist/native.d.ts +0 -1
- package/dist/opened-file-failure.d.ts +0 -1
- package/dist/opened-realpath.d.ts +0 -1
- 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/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 +8 -16
- 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-mode.d.ts +0 -1
- package/dist/pinned-write-staged.d.ts +0 -1
- package/dist/pinned-write-types.d.ts +9 -21
- package/dist/pinned-write.d.ts +0 -1
- 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 +0 -1
- 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 +77 -139
- 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 +14 -3
- package/dist/replace-file-copy-source.d.ts +0 -1
- package/dist/replace-file-copy-source.js +6 -1
- package/dist/replace-file-descriptor.d.ts +0 -1
- package/dist/replace-file-descriptor.js +6 -1
- 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 +66 -85
- package/dist/replace-file.d.ts +0 -1
- 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.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 +0 -1
- package/dist/root-file.d.ts +0 -1
- package/dist/root-impl.d.ts +2 -10
- package/dist/root-impl.js +114 -91
- package/dist/root-move-noreplace.d.ts +0 -1
- 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 -44
- 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-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 +31 -52
- 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 +0 -1
- package/dist/sidecar-lock-policy.d.ts +3 -1
- package/dist/sidecar-lock-policy.js +16 -0
- package/dist/sidecar-lock-reclaim.d.ts +0 -1
- 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 +16 -83
- package/dist/staged-directory.d.ts +0 -1
- 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 +0 -1
- 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/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 +45 -22
- 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/walk.d.ts +0 -1
- 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 +0 -1
- package/dist/write-open-flags.d.ts +0 -1
- package/dist/write-queue.d.ts +0 -1
- package/docs/atomic.md +14 -0
- package/docs/copy.md +2 -0
- package/docs/mutation-policy-proof.md +6 -4
- package/docs/permissions.md +6 -0
- package/docs/root.md +10 -0
- package/docs/secret-file.md +4 -0
- package/docs/writing.md +9 -3
- 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/byte-view.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-contents.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 -20
- 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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PermissionCommandFailure } from "./permission-exec.js";
|
|
2
|
-
import { type PermissionCheck, type PermissionCheckOptions
|
|
2
|
+
import { type PermissionCheck, type PermissionCheckOptions } from "./permissions.js";
|
|
3
3
|
export type PermissionExec = (command: string, args: string[]) => Promise<{
|
|
4
4
|
stdout: string;
|
|
5
5
|
stderr: string;
|
|
@@ -31,14 +31,7 @@ export type IcaclsResetCommandOptions = {
|
|
|
31
31
|
env?: NodeJS.ProcessEnv;
|
|
32
32
|
userInfo?: WindowsUserInfoProvider;
|
|
33
33
|
};
|
|
34
|
-
export declare function inspectWindowsPermissions(
|
|
35
|
-
targetPath: string;
|
|
36
|
-
stat: SafeStatResult;
|
|
37
|
-
effectiveIsDir: boolean;
|
|
38
|
-
effectiveMode: number | null;
|
|
39
|
-
bits: number | null;
|
|
40
|
-
opts?: PermissionCheckOptions;
|
|
41
|
-
}): Promise<PermissionCheck>;
|
|
34
|
+
export declare function inspectWindowsPermissions(targetPath: string, unverified: Readonly<PermissionCheck>, opts?: PermissionCheckOptions): Promise<PermissionCheck>;
|
|
42
35
|
export declare function resolveWindowsUserPrincipal(env?: NodeJS.ProcessEnv, userInfo?: WindowsUserInfoProvider): string | null;
|
|
43
36
|
export declare function parseIcaclsOutput(output: string, targetPath: string): WindowsAclEntry[];
|
|
44
37
|
export declare function summarizeWindowsAcl(entries: WindowsAclEntry[], env?: NodeJS.ProcessEnv): Pick<WindowsAclSummary, "trusted" | "untrustedWorld" | "untrustedGroup">;
|
|
@@ -56,4 +49,3 @@ export declare function createIcaclsResetCommand(targetPath: string, opts: Icacl
|
|
|
56
49
|
args: string[];
|
|
57
50
|
display: string;
|
|
58
51
|
} | null;
|
|
59
|
-
//# sourceMappingURL=permissions-windows.d.ts.map
|
|
@@ -39,20 +39,16 @@ const TRUSTED_BASE_ASCII = new Set([...TRUSTED_BASE].map(stripDiacritics));
|
|
|
39
39
|
const normalize = (value) => normalizeLowercaseStringOrEmpty(value);
|
|
40
40
|
const defaultWindowsUserInfo = () => os.userInfo();
|
|
41
41
|
const defaultPermissionExec = executePermissionCommand;
|
|
42
|
-
function inspectWindowsPermissionsNative(
|
|
42
|
+
function inspectWindowsPermissionsNative(targetPath, unverified) {
|
|
43
43
|
const native = getNativeBinding();
|
|
44
44
|
if (!native)
|
|
45
45
|
return undefined;
|
|
46
46
|
try {
|
|
47
|
-
const facts = native.readOwnerAndDacl(
|
|
47
|
+
const facts = native.readOwnerAndDacl(targetPath);
|
|
48
48
|
if (facts.fallbackRequired)
|
|
49
49
|
return undefined;
|
|
50
50
|
return {
|
|
51
|
-
|
|
52
|
-
isSymlink: params.stat.isSymlink,
|
|
53
|
-
isDir: params.effectiveIsDir,
|
|
54
|
-
mode: params.effectiveMode,
|
|
55
|
-
bits: params.bits,
|
|
51
|
+
...unverified,
|
|
56
52
|
source: "windows-acl",
|
|
57
53
|
worldWritable: facts.worldWritable,
|
|
58
54
|
groupWritable: facts.groupWritable,
|
|
@@ -69,32 +65,20 @@ function inspectWindowsPermissionsNative(params) {
|
|
|
69
65
|
return undefined;
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
|
-
export async function inspectWindowsPermissions(
|
|
73
|
-
|
|
74
|
-
ok: true,
|
|
75
|
-
isSymlink: params.stat.isSymlink,
|
|
76
|
-
isDir: params.effectiveIsDir,
|
|
77
|
-
mode: params.effectiveMode,
|
|
78
|
-
bits: params.bits,
|
|
79
|
-
source: "unknown",
|
|
80
|
-
worldWritable: false,
|
|
81
|
-
groupWritable: false,
|
|
82
|
-
worldReadable: false,
|
|
83
|
-
groupReadable: false,
|
|
84
|
-
};
|
|
85
|
-
if (hasWindowsPathAlias(params.targetPath, "filesystem", "win32")) {
|
|
68
|
+
export async function inspectWindowsPermissions(targetPath, unverified, opts) {
|
|
69
|
+
if (hasWindowsPathAlias(targetPath, "filesystem", "win32")) {
|
|
86
70
|
return {
|
|
87
71
|
...unverified,
|
|
88
72
|
error: "Path uses a Windows filesystem namespace alias",
|
|
89
73
|
};
|
|
90
74
|
}
|
|
91
|
-
const native = inspectWindowsPermissionsNative(
|
|
75
|
+
const native = inspectWindowsPermissionsNative(targetPath, unverified);
|
|
92
76
|
if (native)
|
|
93
77
|
return native;
|
|
94
78
|
const owner = await inspectWindowsOwner({
|
|
95
|
-
targetPath
|
|
96
|
-
env:
|
|
97
|
-
exec:
|
|
79
|
+
targetPath,
|
|
80
|
+
env: opts?.env,
|
|
81
|
+
exec: opts?.exec ?? defaultPermissionExec,
|
|
98
82
|
});
|
|
99
83
|
if (owner.error !== undefined) {
|
|
100
84
|
const error = `Windows owner inspection failed: ${owner.error}`;
|
|
@@ -109,11 +93,7 @@ export async function inspectWindowsPermissions(params) {
|
|
|
109
93
|
if (!acl.ok)
|
|
110
94
|
return { ...unverified, ...ownerFields, error: acl.error, errorDetail: acl.errorDetail, errorCause: acl.errorCause };
|
|
111
95
|
return {
|
|
112
|
-
|
|
113
|
-
isSymlink: params.stat.isSymlink,
|
|
114
|
-
isDir: params.effectiveIsDir,
|
|
115
|
-
mode: params.effectiveMode,
|
|
116
|
-
bits: params.bits,
|
|
96
|
+
...unverified,
|
|
117
97
|
source: "windows-acl",
|
|
118
98
|
worldWritable: acl.untrustedWorld.some((entry) => entry.canWrite),
|
|
119
99
|
groupWritable: acl.untrustedGroup.some((entry) => entry.canWrite),
|
package/dist/permissions.d.ts
CHANGED
|
@@ -57,4 +57,3 @@ export declare function isGroupWritable(bits: number | null): boolean;
|
|
|
57
57
|
export declare function isWorldReadable(bits: number | null): boolean;
|
|
58
58
|
export declare function isGroupReadable(bits: number | null): boolean;
|
|
59
59
|
export declare function formatPosixMode(mode: number): string;
|
|
60
|
-
//# sourceMappingURL=permissions.d.ts.map
|
package/dist/permissions.js
CHANGED
|
@@ -71,28 +71,20 @@ export async function inspectPathPermissions(targetPath, opts) {
|
|
|
71
71
|
}
|
|
72
72
|
const bits = modeBits(effectiveMode);
|
|
73
73
|
const platform = opts?.platform ?? process.platform;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
targetPath,
|
|
77
|
-
stat: st,
|
|
78
|
-
effectiveIsDir,
|
|
79
|
-
effectiveMode,
|
|
80
|
-
bits,
|
|
81
|
-
opts,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
return {
|
|
74
|
+
const windows = platform === "win32";
|
|
75
|
+
const permissions = {
|
|
85
76
|
ok: true,
|
|
86
77
|
isSymlink: st.isSymlink,
|
|
87
78
|
isDir: effectiveIsDir,
|
|
88
79
|
mode: effectiveMode,
|
|
89
80
|
bits,
|
|
90
|
-
source: "posix",
|
|
91
|
-
worldWritable: isWorldWritable(bits),
|
|
92
|
-
groupWritable: isGroupWritable(bits),
|
|
93
|
-
worldReadable: isWorldReadable(bits),
|
|
94
|
-
groupReadable: isGroupReadable(bits),
|
|
81
|
+
source: windows ? "unknown" : "posix",
|
|
82
|
+
worldWritable: !windows && isWorldWritable(bits),
|
|
83
|
+
groupWritable: !windows && isGroupWritable(bits),
|
|
84
|
+
worldReadable: !windows && isWorldReadable(bits),
|
|
85
|
+
groupReadable: !windows && isGroupReadable(bits),
|
|
95
86
|
};
|
|
87
|
+
return windows ? await inspectWindowsPermissions(targetPath, permissions, opts) : permissions;
|
|
96
88
|
}
|
|
97
89
|
export function formatPermissionDetail(targetPath, perms) {
|
|
98
90
|
if (perms.source === "windows-acl") {
|
|
@@ -36,4 +36,3 @@ export declare function mutationObservationCurrent(observation: MutationPathObse
|
|
|
36
36
|
export declare function mutationObservationsCurrent(observations: readonly MutationPathObservation[], directories: readonly MutationDirectoryObservation[]): boolean;
|
|
37
37
|
export declare function advanceMutationObservation(observation: MutationPathObservation, parent: MutationDirectoryObservation, child: MutationDirectoryObservation): MutationPathObservation | undefined;
|
|
38
38
|
export {};
|
|
39
|
-
//# sourceMappingURL=pinned-mutation-observation.d.ts.map
|
package/dist/pinned-open.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type PinnedOpenSyncResult = {
|
|
|
5
5
|
path: string;
|
|
6
6
|
fd: number;
|
|
7
7
|
stat: fs.Stats;
|
|
8
|
+
identity: fs.BigIntStats;
|
|
8
9
|
} | {
|
|
9
10
|
ok: false;
|
|
10
11
|
reason: PinnedOpenSyncFailureReason;
|
|
@@ -27,4 +28,3 @@ export declare function openPinnedFileSync(params: {
|
|
|
27
28
|
ioFs?: PinnedOpenSyncFs;
|
|
28
29
|
finalAdmission?: PinnedOpenSyncFinalAdmission;
|
|
29
30
|
}): PinnedOpenSyncResult;
|
|
30
|
-
//# sourceMappingURL=pinned-open.d.ts.map
|
package/dist/pinned-open.js
CHANGED
|
@@ -63,7 +63,7 @@ export function openPinnedFileSync(params) {
|
|
|
63
63
|
preRealpathIdentity: pathIdentity,
|
|
64
64
|
descriptorIdentity: identity,
|
|
65
65
|
}) ?? realPath;
|
|
66
|
-
const opened = { ok: true, path: admittedPath, fd, stat: openedStat };
|
|
66
|
+
const opened = { ok: true, path: admittedPath, fd, stat: openedStat, identity };
|
|
67
67
|
fd = null;
|
|
68
68
|
return opened;
|
|
69
69
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import type { FileHandle } from "node:fs/promises";
|
|
2
2
|
import type { PinnedWriteInput } from "./pinned-write-types.js";
|
|
3
3
|
export declare function writePinnedInput(target: FileHandle | number, input: PinnedWriteInput, maxBytes?: number, assertBeforeMutation?: () => void): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=pinned-write-input.d.ts.map
|
|
@@ -2,4 +2,3 @@ import type { FileHandle } from "node:fs/promises";
|
|
|
2
2
|
export declare function assertPinnedWriteMode(fd: number, mode: number, privateCreation?: boolean): void;
|
|
3
3
|
export declare function preparePinnedWriteMode(handle: FileHandle, createdMode: number, assertBeforeMutation?: () => void, privateCreation?: boolean): Promise<(() => void) | undefined>;
|
|
4
4
|
export declare function pinnedWriteModeAssertion(fd: number, mode: number, assertBeforeMutation?: () => void, privateCreation?: boolean): () => void;
|
|
5
|
-
//# sourceMappingURL=pinned-write-mode.d.ts.map
|
|
@@ -3,4 +3,3 @@ import type { AsyncDirectoryGuard } from "./directory-guard.js";
|
|
|
3
3
|
import { type FileIdentityStat } from "./file-identity.js";
|
|
4
4
|
import type { PinnedWriteParams } from "./pinned-write-types.js";
|
|
5
5
|
export declare function runPinnedStagedWrite(params: PinnedWriteParams, parentPath: string, parentGuard: AsyncDirectoryGuard<BigIntStats>): Promise<FileIdentityStat>;
|
|
6
|
-
//# sourceMappingURL=pinned-write-staged.d.ts.map
|
|
@@ -24,18 +24,15 @@ export type PinnedCreatedDirectoryReceipt = Readonly<{
|
|
|
24
24
|
parent: MutationDirectoryObservation;
|
|
25
25
|
child: MutationDirectoryObservation;
|
|
26
26
|
}>;
|
|
27
|
+
export type PinnedMutationParentRequest = {
|
|
28
|
+
targetPath: string;
|
|
29
|
+
mutationPath: string;
|
|
30
|
+
phase: "parent" | "parent-create";
|
|
31
|
+
};
|
|
27
32
|
export type PinnedMutationParentWalkSession = Readonly<{
|
|
28
33
|
retainedTargetPath: string;
|
|
29
|
-
tryAuthorizeAtParent(request: Readonly<
|
|
30
|
-
|
|
31
|
-
mutationPath: string;
|
|
32
|
-
phase: "parent" | "parent-create";
|
|
33
|
-
}>, parent: MutationDirectoryObservation): PinnedMutationAuthorizationToken | undefined;
|
|
34
|
-
authorize(request: Readonly<{
|
|
35
|
-
targetPath: string;
|
|
36
|
-
mutationPath: string;
|
|
37
|
-
phase: "parent" | "parent-create";
|
|
38
|
-
}>): Promise<PinnedMutationAdmissionReceipt | undefined>;
|
|
34
|
+
tryAuthorizeAtParent(request: Readonly<PinnedMutationParentRequest>, parent: MutationDirectoryObservation): PinnedMutationAuthorizationToken | undefined;
|
|
35
|
+
authorize(request: Readonly<PinnedMutationParentRequest>): Promise<PinnedMutationAdmissionReceipt | undefined>;
|
|
39
36
|
advanceCreatedDirectory(receipt: PinnedCreatedDirectoryReceipt): PinnedMutationAuthorizationToken | undefined;
|
|
40
37
|
dispose(): void;
|
|
41
38
|
}>;
|
|
@@ -44,16 +41,8 @@ export type PinnedWriteMutationAdmission = Readonly<{
|
|
|
44
41
|
beginParentWalk?(): string | undefined;
|
|
45
42
|
beginSharedParentWalk?(): PinnedMutationParentWalkSession | undefined;
|
|
46
43
|
beginNativeParentWalk?(): PinnedMutationParentWalkSession | undefined;
|
|
47
|
-
tryAuthorizeAtParent?(request: Readonly<
|
|
48
|
-
|
|
49
|
-
mutationPath: string;
|
|
50
|
-
phase: "parent" | "parent-create";
|
|
51
|
-
}>, parent: MutationDirectoryObservation): PinnedMutationAuthorizationToken | undefined;
|
|
52
|
-
authorize(request: Readonly<{
|
|
53
|
-
targetPath: string;
|
|
54
|
-
mutationPath: string;
|
|
55
|
-
phase: "parent" | "parent-create";
|
|
56
|
-
}>): Promise<PinnedMutationAdmissionReceipt | undefined>;
|
|
44
|
+
tryAuthorizeAtParent?(request: Readonly<PinnedMutationParentRequest>, parent: MutationDirectoryObservation): PinnedMutationAuthorizationToken | undefined;
|
|
45
|
+
authorize(request: Readonly<PinnedMutationParentRequest>): Promise<PinnedMutationAdmissionReceipt | undefined>;
|
|
57
46
|
advanceCreatedDirectory?(receipt: PinnedCreatedDirectoryReceipt): PinnedMutationAuthorizationToken | undefined;
|
|
58
47
|
}>;
|
|
59
48
|
export type PinnedWriteParams = {
|
|
@@ -77,4 +66,3 @@ export type PinnedWriteParams = {
|
|
|
77
66
|
onPublished?: (identity: PublishedWriteIdentity) => void;
|
|
78
67
|
verifyPublished?: (fd: number, identity: PublishedWriteIdentity, parentGuard: AnyAsyncDirectoryGuard) => Promise<void>;
|
|
79
68
|
};
|
|
80
|
-
//# sourceMappingURL=pinned-write-types.d.ts.map
|
package/dist/pinned-write.d.ts
CHANGED
|
@@ -6,4 +6,3 @@ export type ReadFileWindowOptions = {
|
|
|
6
6
|
export declare function readFileWindowFully(handle: FileHandle, buffer: Buffer, position: number, { signal }?: ReadFileWindowOptions): Promise<number>;
|
|
7
7
|
/** Synchronous positional read; neither variant advances or closes its descriptor. */
|
|
8
8
|
export declare function readFileWindowFullySync(fd: number, buffer: Buffer, position: number): number;
|
|
9
|
-
//# sourceMappingURL=positional-read.d.ts.map
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import fs, {} from "node:fs";
|
|
2
2
|
import { ownFileDescriptorSync } from "./create-owned-file.js";
|
|
3
|
-
import { FsSafeError } from "./errors.js";
|
|
4
3
|
import { assertSynchronousCallbackResult } from "./mutation-authority.js";
|
|
5
|
-
import { assertInitialSource,
|
|
4
|
+
import { assertInitialSource, FileHandoff, inspectLinkedFile, } from "./private-producer-handoff.js";
|
|
6
5
|
import { resolveReadOpenFlags } from "./read-open-flags.js";
|
|
7
6
|
export function handoffCreatedFileSync(params) {
|
|
8
7
|
let retained = params.source;
|
|
9
8
|
const owners = new Set([retained]);
|
|
10
9
|
const failures = [];
|
|
11
|
-
|
|
12
|
-
let cleanup = "preserved";
|
|
13
|
-
let closeFailed = false;
|
|
10
|
+
const state = new FileHandoff(params, params.identity, true);
|
|
14
11
|
function close(owner) {
|
|
15
12
|
// A throwing close may already have released the descriptor for reuse.
|
|
16
13
|
owners.delete(owner);
|
|
@@ -18,42 +15,20 @@ export function handoffCreatedFileSync(params) {
|
|
|
18
15
|
owner.close();
|
|
19
16
|
}
|
|
20
17
|
catch (error) {
|
|
21
|
-
closeFailed = true;
|
|
18
|
+
state.closeFailed = true;
|
|
22
19
|
throw error;
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
|
-
function assertIdentityCurrent(owner, links) {
|
|
26
|
-
assertParents(params);
|
|
27
|
-
inspectLinkedFile(() => fs.fstatSync(owner.fd, { bigint: true }), params.identity, links, "created file descriptor");
|
|
28
|
-
if (cleanup !== "removed") {
|
|
29
|
-
inspectLinkedFile(() => fs.lstatSync(params.sourcePath, { bigint: true }), params.identity, links, "created file stage");
|
|
30
|
-
}
|
|
31
|
-
if (publication === "published") {
|
|
32
|
-
inspectLinkedFile(() => fs.lstatSync(params.targetPath, { bigint: true }), params.identity, links, "created file destination");
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
22
|
function verifyCurrent(owner, descriptorPath, links) {
|
|
36
|
-
|
|
23
|
+
state.inspect(owner, links);
|
|
37
24
|
params.verifyDescriptor?.(owner.fd, descriptorPath, Number(links));
|
|
38
25
|
}
|
|
39
26
|
try {
|
|
40
27
|
assertInitialSource(params.identity);
|
|
41
28
|
verifyCurrent(retained, params.sourcePath, 1n);
|
|
42
29
|
assertSynchronousCallbackResult(params.assertBeforeMutation?.(), "assertBeforeMutation");
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
try {
|
|
46
|
-
fs.linkSync(params.sourcePath, params.targetPath);
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
const normalized = normalizeLinkError(error);
|
|
50
|
-
if (normalized instanceof FsSafeError &&
|
|
51
|
-
(normalized.code === "already-exists" || normalized.code === "helper-unavailable")) {
|
|
52
|
-
publication = "not-published";
|
|
53
|
-
}
|
|
54
|
-
throw normalized;
|
|
55
|
-
}
|
|
56
|
-
publication = "published";
|
|
30
|
+
state.inspect(retained, 1n);
|
|
31
|
+
state.publish();
|
|
57
32
|
try {
|
|
58
33
|
params.onPublished?.();
|
|
59
34
|
}
|
|
@@ -74,12 +49,10 @@ export function handoffCreatedFileSync(params) {
|
|
|
74
49
|
const descriptorPath = process.platform === "win32" ? params.targetPath : params.sourcePath;
|
|
75
50
|
verifyCurrent(retained, descriptorPath, 2n);
|
|
76
51
|
assertSynchronousCallbackResult(params.assertBeforeMutation?.(), "assertBeforeMutation");
|
|
77
|
-
|
|
78
|
-
cleanup = "failed";
|
|
52
|
+
state.inspect(retained, 2n);
|
|
79
53
|
// Link and unlink stay in one JS turn. Only the verified stage is removed;
|
|
80
54
|
// publication has committed and the destination is never rollback cleanup.
|
|
81
|
-
|
|
82
|
-
cleanup = "removed";
|
|
55
|
+
state.retireSource();
|
|
83
56
|
verifyCurrent(retained, params.targetPath, 1n);
|
|
84
57
|
}
|
|
85
58
|
catch (error) {
|
|
@@ -95,20 +68,5 @@ export function handoffCreatedFileSync(params) {
|
|
|
95
68
|
failures.push(error);
|
|
96
69
|
}
|
|
97
70
|
}
|
|
98
|
-
|
|
99
|
-
// Collision-as-no-op callers must still observe a failed settlement.
|
|
100
|
-
const code = closeFailed || failures.length > 1
|
|
101
|
-
? "helper-failed"
|
|
102
|
-
: primary instanceof FsSafeError ? primary.code : "helper-failed";
|
|
103
|
-
throw new FsSafeError(code, "created file publication failed", {
|
|
104
|
-
cause: failures.length === 1 ? primary : new AggregateError(failures, "created file publication and settlement failed"),
|
|
105
|
-
details: {
|
|
106
|
-
publication: { status: publication },
|
|
107
|
-
cleanup,
|
|
108
|
-
resources: closeFailed ? "close-failed" : "closed",
|
|
109
|
-
path: params.targetPath,
|
|
110
|
-
dev: params.identity.dev,
|
|
111
|
-
ino: params.identity.ino,
|
|
112
|
-
},
|
|
113
|
-
});
|
|
71
|
+
throw state.failure(failures, "created file publication and settlement failed");
|
|
114
72
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type BigIntStats } from "node:fs";
|
|
2
2
|
import { type FileHandle } from "node:fs/promises";
|
|
3
|
+
import { FsSafeError } from "./errors.js";
|
|
3
4
|
import { type TempPathRegistration } from "./temp-cleanup.js";
|
|
4
5
|
export type PrivateProducerHandoff = {
|
|
5
6
|
handle: FileHandle;
|
|
@@ -28,7 +29,25 @@ export declare function assertInitialSource(stat: BigIntStats): void;
|
|
|
28
29
|
export declare function inspectLinkedFile(inspect: () => BigIntStats, expected: BigIntStats, links: bigint, label: string): BigIntStats;
|
|
29
30
|
export declare function assertParents(params: HandoffParents): void;
|
|
30
31
|
export declare function normalizeLinkError(error: unknown): unknown;
|
|
32
|
+
export declare class FileHandoff {
|
|
33
|
+
private readonly paths;
|
|
34
|
+
private readonly identity;
|
|
35
|
+
private readonly createdLabels;
|
|
36
|
+
siblingOwned: boolean;
|
|
37
|
+
publication: "not-published" | "published" | "indeterminate";
|
|
38
|
+
cleanup: "preserved" | "removed" | "failed";
|
|
39
|
+
closeFailed: boolean;
|
|
40
|
+
constructor(paths: HandoffPaths, identity: BigIntStats, createdLabels?: boolean);
|
|
41
|
+
inspect(owner: {
|
|
42
|
+
readonly fd: number;
|
|
43
|
+
}, links: bigint): {
|
|
44
|
+
opened: BigIntStats;
|
|
45
|
+
named?: BigIntStats;
|
|
46
|
+
};
|
|
47
|
+
publish(): void;
|
|
48
|
+
retireSource(): void;
|
|
49
|
+
failure(failures: readonly unknown[], aggregateMessage: string): FsSafeError;
|
|
50
|
+
}
|
|
31
51
|
export declare function handoffPrivateProducerFile(params: ProducerHandoffParams): Promise<PrivateProducerHandoff>;
|
|
32
52
|
export declare function handoffCreatedFile(params: CreatedHandoffParams): Promise<FileHandle>;
|
|
33
53
|
export {};
|
|
34
|
-
//# sourceMappingURL=private-producer-handoff.d.ts.map
|
|
@@ -165,14 +165,62 @@ async function openProducerSource(params, identity, links = 1n) {
|
|
|
165
165
|
}
|
|
166
166
|
return fallback;
|
|
167
167
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
168
|
+
export class FileHandoff {
|
|
169
|
+
paths;
|
|
170
|
+
identity;
|
|
171
|
+
createdLabels;
|
|
172
|
+
siblingOwned = false;
|
|
173
|
+
publication = "not-published";
|
|
174
|
+
cleanup = "preserved";
|
|
175
|
+
closeFailed = false;
|
|
176
|
+
constructor(paths, identity, createdLabels = false) {
|
|
177
|
+
this.paths = paths;
|
|
178
|
+
this.identity = identity;
|
|
179
|
+
this.createdLabels = createdLabels;
|
|
180
|
+
}
|
|
181
|
+
inspect(owner, links) {
|
|
182
|
+
assertParents(this.paths);
|
|
183
|
+
const opened = inspectLinkedFile(() => fsSync.fstatSync(owner.fd, { bigint: true }), this.identity, links, this.createdLabels ? "created file descriptor" : "isolated producer descriptor");
|
|
184
|
+
if (this.cleanup !== "removed") {
|
|
185
|
+
inspectLinkedFile(() => fsSync.lstatSync(this.paths.sourcePath, { bigint: true }), this.identity, links, this.createdLabels ? "created file stage" : "isolated producer path");
|
|
186
|
+
}
|
|
187
|
+
const named = this.publication === "published"
|
|
188
|
+
? inspectLinkedFile(() => fsSync.lstatSync(this.paths.targetPath, { bigint: true }), this.identity, links, this.createdLabels ? "created file destination" : "isolated producer sibling")
|
|
189
|
+
: undefined;
|
|
190
|
+
return { opened, named };
|
|
191
|
+
}
|
|
192
|
+
publish() {
|
|
193
|
+
this.publication = "indeterminate";
|
|
194
|
+
try {
|
|
195
|
+
fsSync.linkSync(this.paths.sourcePath, this.paths.targetPath);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
const normalized = normalizeLinkError(error);
|
|
199
|
+
if (normalized instanceof FsSafeError &&
|
|
200
|
+
(normalized.code === "already-exists" || normalized.code === "helper-unavailable")) {
|
|
201
|
+
this.publication = "not-published";
|
|
202
|
+
}
|
|
203
|
+
throw normalized;
|
|
204
|
+
}
|
|
205
|
+
this.publication = "published";
|
|
206
|
+
}
|
|
207
|
+
retireSource() {
|
|
208
|
+
this.cleanup = "failed";
|
|
209
|
+
fsSync.unlinkSync(this.paths.sourcePath);
|
|
210
|
+
this.cleanup = "removed";
|
|
211
|
+
}
|
|
212
|
+
failure(failures, aggregateMessage) {
|
|
213
|
+
const primary = failures[0];
|
|
214
|
+
// Collision-as-no-op callers must still observe a failed settlement.
|
|
215
|
+
return new FsSafeError(this.closeFailed || failures.length > 1 ? "helper-failed" : primary instanceof FsSafeError ? primary.code : "helper-failed", "created file publication failed", {
|
|
216
|
+
cause: failures.length === 1 ? primary : new AggregateError(failures, aggregateMessage),
|
|
217
|
+
details: {
|
|
218
|
+
publication: { status: this.publication }, cleanup: this.cleanup,
|
|
219
|
+
resources: this.closeFailed ? "close-failed" : "closed",
|
|
220
|
+
path: this.paths.targetPath, dev: this.identity.dev, ino: this.identity.ino,
|
|
221
|
+
},
|
|
222
|
+
});
|
|
173
223
|
}
|
|
174
|
-
const named = state.publication === "published" ? inspectLinkedFile(() => fsSync.lstatSync(params.targetPath, { bigint: true }), identity, links, "isolated producer sibling") : undefined;
|
|
175
|
-
return { opened, named };
|
|
176
224
|
}
|
|
177
225
|
async function handoffFile(params) {
|
|
178
226
|
const created = "source" in params ? params : undefined;
|
|
@@ -186,9 +234,7 @@ async function handoffFile(params) {
|
|
|
186
234
|
const owners = new Set(handle ? [handle] : []);
|
|
187
235
|
const failures = [];
|
|
188
236
|
let unregister;
|
|
189
|
-
const state =
|
|
190
|
-
siblingOwned: false, publication: "not-published", cleanup: "preserved", closeFailed: false,
|
|
191
|
-
};
|
|
237
|
+
const state = new FileHandoff(params, identity);
|
|
192
238
|
async function close(owned) {
|
|
193
239
|
// Final creation consumes its pin before close can release and recycle it.
|
|
194
240
|
// Legacy temporary handoff retains its historical FileHandle close retry.
|
|
@@ -209,7 +255,7 @@ async function handoffFile(params) {
|
|
|
209
255
|
handle = await openProducerSource({ ...params, readWrite: "readWrite" in params && params.readWrite }, identity);
|
|
210
256
|
owners.add(handle);
|
|
211
257
|
}
|
|
212
|
-
|
|
258
|
+
state.inspect(handle, 1n);
|
|
213
259
|
if (created?.verifyDescriptor)
|
|
214
260
|
await created.verifyDescriptor(handle.fd, params.sourcePath, 1);
|
|
215
261
|
if (!created) {
|
|
@@ -220,20 +266,8 @@ async function handoffFile(params) {
|
|
|
220
266
|
});
|
|
221
267
|
}
|
|
222
268
|
assertSynchronousCallbackResult(created?.assertBeforeMutation?.(), "assertBeforeMutation");
|
|
223
|
-
|
|
224
|
-
state.
|
|
225
|
-
try {
|
|
226
|
-
fsSync.linkSync(params.sourcePath, params.targetPath);
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
const normalized = normalizeLinkError(error);
|
|
230
|
-
if (normalized instanceof FsSafeError &&
|
|
231
|
-
(normalized.code === "already-exists" || normalized.code === "helper-unavailable")) {
|
|
232
|
-
state.publication = "not-published";
|
|
233
|
-
}
|
|
234
|
-
throw normalized;
|
|
235
|
-
}
|
|
236
|
-
state.publication = "published";
|
|
269
|
+
state.inspect(handle, 1n);
|
|
270
|
+
state.publish();
|
|
237
271
|
state.siblingOwned = !created;
|
|
238
272
|
try {
|
|
239
273
|
assertSynchronousCallbackResult(created?.onPublished?.(), "onPublished");
|
|
@@ -241,7 +275,7 @@ async function handoffFile(params) {
|
|
|
241
275
|
catch (error) {
|
|
242
276
|
failures.push(error);
|
|
243
277
|
}
|
|
244
|
-
|
|
278
|
+
state.inspect(handle, 2n);
|
|
245
279
|
if (process.platform === "win32") {
|
|
246
280
|
// Legacy Windows unlink retains a delete-pending name until handles
|
|
247
281
|
// opened through that name close. Transfer the pin before retiring it.
|
|
@@ -250,26 +284,24 @@ async function handoffFile(params) {
|
|
|
250
284
|
: await openProducerSource({ ...params, sourcePath: params.targetPath,
|
|
251
285
|
readWrite: "readWrite" in params && params.readWrite }, identity, 2n);
|
|
252
286
|
owners.add(sibling);
|
|
253
|
-
|
|
287
|
+
state.inspect(sibling, 2n);
|
|
254
288
|
if (created?.verifyDescriptor)
|
|
255
289
|
await created.verifyDescriptor(sibling.fd, params.targetPath, 2);
|
|
256
|
-
|
|
290
|
+
state.inspect(sibling, 2n);
|
|
257
291
|
inspectSourceDescriptor(handle, identity, 2n);
|
|
258
292
|
await close(handle);
|
|
259
293
|
handle = sibling;
|
|
260
294
|
// The old handle's close yielded; both names must still be ours.
|
|
261
|
-
|
|
295
|
+
state.inspect(handle, 2n);
|
|
262
296
|
}
|
|
263
297
|
if (created?.verifyDescriptor)
|
|
264
298
|
await created.verifyDescriptor(handle.fd, process.platform === "win32" ? params.targetPath : params.sourcePath, 2);
|
|
265
299
|
assertSynchronousCallbackResult(created?.assertBeforeMutation?.(), "assertBeforeMutation");
|
|
266
|
-
|
|
267
|
-
state.
|
|
268
|
-
fsSync.unlinkSync(params.sourcePath);
|
|
269
|
-
state.cleanup = "removed";
|
|
300
|
+
state.inspect(handle, 2n);
|
|
301
|
+
state.retireSource();
|
|
270
302
|
if (created?.verifyDescriptor)
|
|
271
303
|
await created.verifyDescriptor(handle.fd, params.targetPath, 1);
|
|
272
|
-
const { opened, named } =
|
|
304
|
+
const { opened, named } = state.inspect(handle, 1n);
|
|
273
305
|
const originalMode = identity.mode & 511n;
|
|
274
306
|
if (!created && process.platform === "win32" && (originalMode & 128n) === 0n &&
|
|
275
307
|
((opened.mode & 511n) !== originalMode || (named.mode & 511n) !== originalMode)) {
|
|
@@ -277,7 +309,7 @@ async function handoffFile(params) {
|
|
|
277
309
|
// admitted sibling inode, without reopening or chmodding its pathname.
|
|
278
310
|
assertParents(params);
|
|
279
311
|
fsSync.fchmodSync(handle.fd, Number(originalMode));
|
|
280
|
-
const restored =
|
|
312
|
+
const restored = state.inspect(handle, 1n);
|
|
281
313
|
if ((restored.opened.mode & 511n) !== originalMode || (restored.named.mode & 511n) !== originalMode) {
|
|
282
314
|
throw pathMismatch("isolated producer read-only mode could not be restored");
|
|
283
315
|
}
|
|
@@ -314,18 +346,9 @@ async function handoffFile(params) {
|
|
|
314
346
|
failures.push(error);
|
|
315
347
|
}
|
|
316
348
|
}
|
|
317
|
-
const primary = failures[0];
|
|
318
|
-
const cause = combinedFailure(primary, failures.slice(1));
|
|
319
349
|
if (!created)
|
|
320
|
-
throw
|
|
321
|
-
throw
|
|
322
|
-
cause,
|
|
323
|
-
details: {
|
|
324
|
-
publication: { status: state.publication }, cleanup: state.cleanup,
|
|
325
|
-
resources: state.closeFailed ? "close-failed" : "closed",
|
|
326
|
-
path: params.targetPath, dev: identity.dev, ino: identity.ino,
|
|
327
|
-
},
|
|
328
|
-
});
|
|
350
|
+
throw combinedFailure(failures[0], failures.slice(1));
|
|
351
|
+
throw state.failure(failures, "isolated producer handoff and settlement failed");
|
|
329
352
|
}
|
|
330
353
|
export function handoffPrivateProducerFile(params) {
|
|
331
354
|
return handoffFile(params);
|
|
@@ -5,4 +5,3 @@ export declare function tempWorkspace(options: TempWorkspaceOptions): Promise<Te
|
|
|
5
5
|
export declare function withTempWorkspace<T>(options: TempWorkspaceOptions, run: (workspace: TempWorkspace) => Promise<T>): Promise<T>;
|
|
6
6
|
export declare function tempWorkspaceSync(options: TempWorkspaceOptions): TempWorkspaceSync;
|
|
7
7
|
export declare function withTempWorkspaceSync<T>(options: TempWorkspaceOptions, run: (workspace: TempWorkspaceSync) => T): T;
|
|
8
|
-
//# sourceMappingURL=private-temp-workspace.d.ts.map
|