poe-code 14.0.95 → 14.0.96
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/dist/metafile.json +1 -1
- package/package.json +1 -1
- package/packages/safe-bash/dist/commands/filesystem-requirements.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/filesystem-requirements.js +1 -0
- package/packages/safe-bash/dist/commands/filesystem-requirements.js.map +1 -1
- package/packages/safe-bash/dist/commands/filesystem.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/filesystem.js +29 -1
- package/packages/safe-bash/dist/commands/filesystem.js.map +1 -1
- package/packages/safe-bash/dist/contracts/filesystem.d.ts +1 -1
- package/packages/safe-bash/dist/contracts/filesystem.d.ts.map +1 -1
- package/packages/safe-bash/dist/core.browser.js +34 -2
- package/packages/safe-bash/dist/core.browser.js.map +2 -2
- package/packages/safe-fs/dist/contracts/filesystem.d.ts +5 -1
- package/packages/safe-fs/dist/fs/devices/index.d.ts +2 -2
- package/packages/safe-fs/dist/fs/memory/index.d.ts +3 -2
- package/packages/safe-fs/dist/fs/mount/index.d.ts +2 -2
- package/packages/safe-fs/dist/fs/overlay/index.d.ts +2 -2
- package/packages/safe-fs/dist/fs/readonly/index.d.ts +2 -2
- package/packages/safe-fs/dist/fs/real/index.d.ts +2 -2
- package/packages/safe-fs/dist/fs/s3/filesystem.d.ts +3 -2
- package/packages/safe-fs/dist/fs/webdav/webdav.d.ts +3 -2
- package/packages/safe-js/dist/browser/chunks/{chunk-YJ7IIV57.js → chunk-QK4IEGRO.js} +44 -2
- package/packages/safe-js/dist/browser/chunks/chunk-QK4IEGRO.js.map +7 -0
- package/packages/safe-js/dist/browser/safe-fs-core.js +1 -1
- package/packages/safe-js/dist/browser/safe-fs.js +1 -1
- package/packages/safe-js/dist/chunks/{chunk-3HQSRMV6.js → chunk-6V4U2JZS.js} +44 -2
- package/packages/safe-js/dist/chunks/chunk-6V4U2JZS.js.map +7 -0
- package/packages/safe-js/dist/chunks/{chunk-NZIVWYYY.js → chunk-EZRL4ES2.js} +3 -3
- package/packages/safe-js/dist/chunks/{chunk-5JIIALYB.js → chunk-XOQ5CVQM.js} +9 -2
- package/packages/safe-js/dist/chunks/chunk-XOQ5CVQM.js.map +7 -0
- package/packages/safe-js/dist/cli.js +3 -3
- package/packages/safe-js/dist/index.js +3 -3
- package/packages/safe-js/dist/safe-fs-core.js +1 -1
- package/packages/safe-js/dist/safe-fs-node.js +2 -2
- package/packages/safe-js/dist/safe-fs.js +2 -2
- package/packages/safe-js/dist/browser/chunks/chunk-YJ7IIV57.js.map +0 -7
- package/packages/safe-js/dist/chunks/chunk-3HQSRMV6.js.map +0 -7
- package/packages/safe-js/dist/chunks/chunk-5JIIALYB.js.map +0 -7
- /package/packages/safe-js/dist/chunks/{chunk-NZIVWYYY.js.map → chunk-EZRL4ES2.js.map} +0 -0
|
@@ -50,6 +50,7 @@ export interface FileSystemCapabilities {
|
|
|
50
50
|
readonly permissions?: boolean;
|
|
51
51
|
readonly timestamps?: boolean;
|
|
52
52
|
readonly atomicRename?: boolean;
|
|
53
|
+
readonly atomicRenameNoReplace?: boolean;
|
|
53
54
|
readonly snapshotRmdir?: boolean;
|
|
54
55
|
readonly streamingRead?: boolean;
|
|
55
56
|
readonly retainedRead?: boolean;
|
|
@@ -65,6 +66,9 @@ export interface FileReadHandle {
|
|
|
65
66
|
read(position: number, maxBytes: number, options?: FsOptions): Promise<Uint8Array>;
|
|
66
67
|
close(): Promise<void>;
|
|
67
68
|
}
|
|
69
|
+
export interface RenameOptions extends FsOptions {
|
|
70
|
+
readonly noReplace?: boolean;
|
|
71
|
+
}
|
|
68
72
|
export interface ReadFileOptions extends FsOptions {
|
|
69
73
|
readonly maxBytes?: number;
|
|
70
74
|
}
|
|
@@ -116,7 +120,7 @@ export interface FileSystem {
|
|
|
116
120
|
mkdir(path: string, options?: MkdirOptions): Promise<void>;
|
|
117
121
|
rm(path: string, options?: RemoveOptions): Promise<void>;
|
|
118
122
|
rmdir?(path: string, options?: FsOptions): Promise<void>;
|
|
119
|
-
rename(source: string, destination: string, options?:
|
|
123
|
+
rename(source: string, destination: string, options?: RenameOptions): Promise<void>;
|
|
120
124
|
copyFile(source: string, destination: string, options?: CopyFileOptions): Promise<void>;
|
|
121
125
|
realpath(path: string, options?: FsOptions): Promise<string>;
|
|
122
126
|
access(path: string, mode?: number, options?: FsOptions): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileReadHandle, FileStat, FileSystem, FileSystemCapabilities, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
1
|
+
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileReadHandle, FileStat, FileSystem, FileSystemCapabilities, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
2
2
|
import type { ByteSource } from "../../contracts/io.js";
|
|
3
3
|
export declare class DeviceFileSystem implements FileSystem {
|
|
4
4
|
#private;
|
|
@@ -20,7 +20,7 @@ export declare class DeviceFileSystem implements FileSystem {
|
|
|
20
20
|
mkdir(path: string, options?: MkdirOptions): Promise<void>;
|
|
21
21
|
rm(path: string, options?: RemoveOptions): Promise<void>;
|
|
22
22
|
rmdir(path: string, options?: FsOptions): Promise<void>;
|
|
23
|
-
rename(source: string, destination: string, options?:
|
|
23
|
+
rename(source: string, destination: string, options?: RenameOptions): Promise<void>;
|
|
24
24
|
copyFile(source: string, destination: string, options?: CopyFileOptions): Promise<void>;
|
|
25
25
|
access(path: string, mode?: number, options?: FsOptions): Promise<void>;
|
|
26
26
|
readlink(path: string, options?: FsOptions): Promise<string>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, EntryComparison, FileReadHandle, FileStat, FileSystem, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
1
|
+
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, EntryComparison, FileReadHandle, FileStat, FileSystem, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
2
2
|
import type { ByteSource } from "../../contracts/io.js";
|
|
3
3
|
import { type MemoryFileSystemOptions } from "./limits.js";
|
|
4
4
|
export { defaultMemoryFileSystemLimits, type MemoryFileSystemLimits, type MemoryFileSystemOptions } from "./limits.js";
|
|
@@ -20,6 +20,7 @@ export declare class MemoryFileSystem implements FileSystem {
|
|
|
20
20
|
removeDirectory: true;
|
|
21
21
|
recursiveRemove: true;
|
|
22
22
|
rename: true;
|
|
23
|
+
atomicRenameNoReplace: true;
|
|
23
24
|
copy: true;
|
|
24
25
|
exclusiveCopy: true;
|
|
25
26
|
readlink: true;
|
|
@@ -76,7 +77,7 @@ export declare class MemoryFileSystem implements FileSystem {
|
|
|
76
77
|
mkdir(path: string, options?: MkdirOptions): Promise<void>;
|
|
77
78
|
rmdir(path: string, options?: FsOptions): Promise<void>;
|
|
78
79
|
rm(path: string, options?: RemoveOptions): Promise<void>;
|
|
79
|
-
rename(source: string, destination: string, options?:
|
|
80
|
+
rename(source: string, destination: string, options?: RenameOptions): Promise<void>;
|
|
80
81
|
copyFile(source: string, destination: string, options?: CopyFileOptions): Promise<void>;
|
|
81
82
|
realpath(path: string, options?: FsOptions): Promise<string>;
|
|
82
83
|
access(path: string, mode?: number, options?: FsOptions): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileReadHandle, FileStat, FileSystem, FileSystemCapabilities, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
1
|
+
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileReadHandle, FileStat, FileSystem, FileSystemCapabilities, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
2
2
|
import type { ByteSource } from "../../contracts/io.js";
|
|
3
3
|
export interface MountFileSystemOptions {
|
|
4
4
|
readonly root: FileSystem;
|
|
@@ -29,7 +29,7 @@ export declare class MountFileSystem implements FileSystem {
|
|
|
29
29
|
mkdir(path: string, options?: MkdirOptions): Promise<void>;
|
|
30
30
|
rmdir(path: string, options?: FsOptions): Promise<void>;
|
|
31
31
|
rm(path: string, options?: RemoveOptions): Promise<void>;
|
|
32
|
-
rename(source: string, destination: string, options?:
|
|
32
|
+
rename(source: string, destination: string, options?: RenameOptions): Promise<void>;
|
|
33
33
|
copyFile(source: string, destination: string, options?: CopyFileOptions): Promise<void>;
|
|
34
34
|
realpath(path: string, options?: FsOptions): Promise<string>;
|
|
35
35
|
compareEntry(path: string, peer: FileSystem, peerPath: string, options?: FsOptions): Promise<import("../../contracts/filesystem.js").EntryComparison>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ByteSource } from "../../contracts/io.js";
|
|
2
|
-
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileStat, FileSystem, FileSystemCapabilities, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
2
|
+
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileStat, FileSystem, FileSystemCapabilities, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
3
3
|
export interface OverlayFileSystemOptions {
|
|
4
4
|
readonly upper: FileSystem;
|
|
5
5
|
readonly lower: FileSystem;
|
|
@@ -58,7 +58,7 @@ export declare class OverlayFileSystem implements FileSystem {
|
|
|
58
58
|
rmdir(path: string, options?: FsOptions): Promise<void>;
|
|
59
59
|
rm(path: string, options?: RemoveOptions): Promise<void>;
|
|
60
60
|
private materialize;
|
|
61
|
-
rename(source: string, destination: string, options?:
|
|
61
|
+
rename(source: string, destination: string, options?: RenameOptions): Promise<void>;
|
|
62
62
|
copyFile(source: string, destination: string, options?: CopyFileOptions): Promise<void>;
|
|
63
63
|
readlink(path: string, options?: FsOptions): Promise<string>;
|
|
64
64
|
symlink(target: string, path: string, options?: FsOptions): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ByteSource } from "../../contracts/io.js";
|
|
2
|
-
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileStat, FileSystem, FileSystemCapabilities, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
2
|
+
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, FileStat, FileSystem, FileSystemCapabilities, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
3
3
|
export declare class ReadOnlyFileSystem implements FileSystem {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(filesystem: FileSystem);
|
|
@@ -22,7 +22,7 @@ export declare class ReadOnlyFileSystem implements FileSystem {
|
|
|
22
22
|
rm(path: string, _options?: RemoveOptions): Promise<void>;
|
|
23
23
|
unlink(path: string, _options?: FsOptions): Promise<void>;
|
|
24
24
|
rmdir(path: string, _options?: FsOptions): Promise<void>;
|
|
25
|
-
rename(source: string, destination: string, _options?:
|
|
25
|
+
rename(source: string, destination: string, _options?: RenameOptions): Promise<void>;
|
|
26
26
|
copyFile(source: string, destination: string, _options?: CopyFileOptions): Promise<void>;
|
|
27
27
|
symlink(target: string, path: string, _options?: FsOptions): Promise<void>;
|
|
28
28
|
link(existingPath: string, newPath: string, _options?: FsOptions): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppendFileOptions, ByteSource, CopyFileOptions, DirectoryEntry, FileReadHandle, FileStat, FileSystem, FileSystemCapabilities, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/index.js";
|
|
1
|
+
import type { AppendFileOptions, ByteSource, CopyFileOptions, DirectoryEntry, FileReadHandle, FileStat, FileSystem, FileSystemCapabilities, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/index.js";
|
|
2
2
|
export interface RealFileSystemOptions {
|
|
3
3
|
/** An existing, absolute host directory. It is never created implicitly. */
|
|
4
4
|
readonly root: string;
|
|
@@ -59,7 +59,7 @@ export declare class RealFileSystem implements FileSystem {
|
|
|
59
59
|
mkdir(path: string, options?: MkdirOptions): Promise<void>;
|
|
60
60
|
rmdir(path: string, options?: FsOptions): Promise<void>;
|
|
61
61
|
rm(path: string, options?: RemoveOptions): Promise<void>;
|
|
62
|
-
rename(source: string, destination: string, options?:
|
|
62
|
+
rename(source: string, destination: string, options?: RenameOptions): Promise<void>;
|
|
63
63
|
copyFile(source: string, destination: string, options?: CopyFileOptions): Promise<void>;
|
|
64
64
|
realpath(path: string, options?: FsOptions): Promise<string>;
|
|
65
65
|
access(path: string, mode?: number, options?: FsOptions): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FsError } from "../../contracts/errors.js";
|
|
2
|
-
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, EntryComparison, FileStat, FileSystem, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
2
|
+
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, EntryComparison, FileStat, FileSystem, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
3
3
|
import type { ByteSource } from "../../contracts/io.js";
|
|
4
4
|
import type { S3Transport } from "./transport.js";
|
|
5
5
|
export interface S3FileSystemOptions {
|
|
@@ -41,6 +41,7 @@ export declare class S3FileSystem implements FileSystem {
|
|
|
41
41
|
append: boolean;
|
|
42
42
|
exclusiveCreate: boolean;
|
|
43
43
|
truncate: boolean;
|
|
44
|
+
atomicRenameNoReplace: false;
|
|
44
45
|
rename: boolean;
|
|
45
46
|
streamingAppend: boolean;
|
|
46
47
|
randomAccessWrite: false;
|
|
@@ -99,7 +100,7 @@ export declare class S3FileSystem implements FileSystem {
|
|
|
99
100
|
rm(input: string, options?: RemoveOptions): Promise<void>;
|
|
100
101
|
private copy;
|
|
101
102
|
copyFile(sourceInput: string, destinationInput: string, options?: CopyFileOptions): Promise<void>;
|
|
102
|
-
rename(sourceInput: string, destinationInput: string, options?:
|
|
103
|
+
rename(sourceInput: string, destinationInput: string, options?: RenameOptions): Promise<void>;
|
|
103
104
|
private copyWithPut;
|
|
104
105
|
realpath(input: string, options?: FsOptions): Promise<string>;
|
|
105
106
|
access(path: string, mode?: number, options?: FsOptions): Promise<void>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PlatformComparisonCallback } from "#safe-fs-platform";
|
|
2
2
|
import type { ByteSource } from "../../contracts/io.js";
|
|
3
|
-
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, EntryComparison, FileStat, FileSystem, FsOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
3
|
+
import type { AppendFileOptions, CopyFileOptions, DirectoryEntry, EntryComparison, FileStat, FileSystem, FsOptions, RenameOptions, MkdirOptions, ReadDirectoryOptions, ReadFileOptions, ReadStreamOptions, RemoveOptions, WriteFileOptions } from "../../contracts/filesystem.js";
|
|
4
4
|
export type WebDavFetch = (url: string, init: RequestInit) => Promise<Response>;
|
|
5
5
|
export interface WebDavAtomicEmptyDirectoryRequest {
|
|
6
6
|
readonly operation: "atomic-empty-rmdir/v1";
|
|
@@ -49,6 +49,7 @@ export declare class WebDavFileSystem implements FileSystem {
|
|
|
49
49
|
remove: true;
|
|
50
50
|
recursiveRemove: true;
|
|
51
51
|
rename: true;
|
|
52
|
+
atomicRenameNoReplace: false;
|
|
52
53
|
copy: true;
|
|
53
54
|
exclusiveCopy: true;
|
|
54
55
|
readlink: false;
|
|
@@ -114,7 +115,7 @@ export declare class WebDavFileSystem implements FileSystem {
|
|
|
114
115
|
private guardTransferIdentity;
|
|
115
116
|
private transfer;
|
|
116
117
|
private withDestinationLock;
|
|
117
|
-
rename(source: string, destination: string, options?:
|
|
118
|
+
rename(source: string, destination: string, options?: RenameOptions): Promise<void>;
|
|
118
119
|
copyFile(source: string, destination: string, options?: CopyFileOptions): Promise<void>;
|
|
119
120
|
realpath(path: string, options?: FsOptions): Promise<string>;
|
|
120
121
|
access(path: string, mode?: number, options?: FsOptions): Promise<void>;
|
|
@@ -775,6 +775,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
775
775
|
removeDirectory: true,
|
|
776
776
|
recursiveRemove: true,
|
|
777
777
|
rename: true,
|
|
778
|
+
atomicRenameNoReplace: true,
|
|
778
779
|
copy: true,
|
|
779
780
|
exclusiveCopy: true,
|
|
780
781
|
readlink: true,
|
|
@@ -1199,6 +1200,7 @@ var MemoryFileSystem = class _MemoryFileSystem {
|
|
|
1199
1200
|
if (this.terminalDot(source) || this.terminalDot(destination)) this.fail("EINVAL", "rename", source, destination);
|
|
1200
1201
|
if (node === this.root || target.node === this.root) this.fail("EBUSY", "rename", source, destination);
|
|
1201
1202
|
if (destination.endsWith("/") && node.type !== "directory") this.fail("ENOTDIR", "rename", source, destination);
|
|
1203
|
+
if (options.noReplace && target.node) this.fail("EEXIST", "rename", source, destination);
|
|
1202
1204
|
if (target.node === node) return;
|
|
1203
1205
|
if (node.type === "directory" && target.path.startsWith(`${origin.path}/`)) this.fail("EINVAL", "rename", source, destination);
|
|
1204
1206
|
this.permission(origin.parent, 3, "rename", source);
|
|
@@ -1701,6 +1703,7 @@ var deviceCapabilities = Object.freeze({
|
|
|
1701
1703
|
truncate: false,
|
|
1702
1704
|
randomAccessWrite: false,
|
|
1703
1705
|
atomicRename: false,
|
|
1706
|
+
atomicRenameNoReplace: false,
|
|
1704
1707
|
descriptorWriteStream: true
|
|
1705
1708
|
});
|
|
1706
1709
|
function globalCapabilities(filesystem) {
|
|
@@ -1975,6 +1978,11 @@ var DeviceFileSystem = class {
|
|
|
1975
1978
|
async rename(source, destination, options = {}) {
|
|
1976
1979
|
await this.#mutable(source, options, false);
|
|
1977
1980
|
await this.#mutable(destination, options, false);
|
|
1981
|
+
if (options.noReplace) {
|
|
1982
|
+
const capabilities = await this.#filesystem.capabilitiesFor?.(destination, options) ?? this.#filesystem.capabilities;
|
|
1983
|
+
options.signal?.throwIfAborted();
|
|
1984
|
+
if (capabilities.atomicRenameNoReplace !== true) throw new FsError("ENOTSUP", { syscall: "rename", path: source, dest: destination });
|
|
1985
|
+
}
|
|
1978
1986
|
await this.#filesystem.rename(source, destination, options);
|
|
1979
1987
|
}
|
|
1980
1988
|
async copyFile(source, destination, options = {}) {
|
|
@@ -2111,6 +2119,7 @@ function readOnlyCapabilities(capabilities) {
|
|
|
2111
2119
|
timestamps: false,
|
|
2112
2120
|
descriptorWriteStream: false,
|
|
2113
2121
|
atomicRename: false,
|
|
2122
|
+
atomicRenameNoReplace: false,
|
|
2114
2123
|
streamingWrite: false
|
|
2115
2124
|
});
|
|
2116
2125
|
}
|
|
@@ -2366,7 +2375,7 @@ var MountFileSystem = class _MountFileSystem {
|
|
|
2366
2375
|
if (capability === "descriptorWriteStream" && backend.capabilities.streamingWrite === false) return false;
|
|
2367
2376
|
return declared === true && optional[capability]?.some((method) => typeof backend[method] !== "function") ? false : declared;
|
|
2368
2377
|
});
|
|
2369
|
-
if (["rename", "copy", "exclusiveCopy"].includes(capability) && mounts.length > 1) return void 0;
|
|
2378
|
+
if (["rename", "atomicRenameNoReplace", "copy", "exclusiveCopy"].includes(capability) && mounts.length > 1) return void 0;
|
|
2370
2379
|
return values.every((value) => value === true) ? true : values.every((value) => value === false) ? false : void 0;
|
|
2371
2380
|
};
|
|
2372
2381
|
const semantics = Object.fromEntries([
|
|
@@ -2386,6 +2395,7 @@ var MountFileSystem = class _MountFileSystem {
|
|
|
2386
2395
|
"removeDirectory",
|
|
2387
2396
|
"recursiveRemove",
|
|
2388
2397
|
"rename",
|
|
2398
|
+
"atomicRenameNoReplace",
|
|
2389
2399
|
"copy",
|
|
2390
2400
|
"exclusiveCopy",
|
|
2391
2401
|
"readlink",
|
|
@@ -2699,6 +2709,11 @@ var MountFileSystem = class _MountFileSystem {
|
|
|
2699
2709
|
this.mutable(target);
|
|
2700
2710
|
this.entryPath(source);
|
|
2701
2711
|
this.entryPath(destination);
|
|
2712
|
+
if (options.noReplace) {
|
|
2713
|
+
const capabilities = await target.mount.backend.capabilitiesFor?.(target.local, options) ?? target.mount.backend.capabilities;
|
|
2714
|
+
options.signal?.throwIfAborted();
|
|
2715
|
+
if (capabilities.atomicRenameNoReplace !== true) fail("ENOTSUP");
|
|
2716
|
+
}
|
|
2702
2717
|
await origin.mount.backend.rename(origin.local, target.local, options);
|
|
2703
2718
|
}, destination);
|
|
2704
2719
|
}
|
|
@@ -2962,6 +2977,7 @@ var OverlayFileSystem = class {
|
|
|
2962
2977
|
...upper.readOnly === void 0 ? {} : { readOnly: upper.readOnly },
|
|
2963
2978
|
...effectiveAppend === void 0 ? {} : { append: effectiveAppend },
|
|
2964
2979
|
atomicRename: false,
|
|
2980
|
+
atomicRenameNoReplace: false,
|
|
2965
2981
|
descriptorWriteStream: false,
|
|
2966
2982
|
hardlinks: false,
|
|
2967
2983
|
symlinks: writable && this.#upper.capabilities.symlinks === true && typeof this.#upper.symlink === "function" && typeof this.#upper.readlink === "function" && (this.#lower.capabilities.symlinks !== true || typeof this.#lower.readlink === "function"),
|
|
@@ -3468,6 +3484,7 @@ var OverlayFileSystem = class {
|
|
|
3468
3484
|
}
|
|
3469
3485
|
async rename(source, destination, options = {}) {
|
|
3470
3486
|
return this.run(options, async () => {
|
|
3487
|
+
if (options.noReplace) fail2("ENOTSUP", source, "atomic no-replace rename is unsupported");
|
|
3471
3488
|
this.writable(source);
|
|
3472
3489
|
const original = await this.required(source, options, false);
|
|
3473
3490
|
const target = await this.resolve(destination, options, false, true);
|
|
@@ -3795,6 +3812,15 @@ function withFileSystemQuota(fs, options) {
|
|
|
3795
3812
|
await fs.appendFile(path, data, appendOptions);
|
|
3796
3813
|
});
|
|
3797
3814
|
},
|
|
3815
|
+
async rename(source, destination, renameOptions) {
|
|
3816
|
+
if (renameOptions?.noReplace) {
|
|
3817
|
+
renameOptions.signal?.throwIfAborted();
|
|
3818
|
+
const capabilities = await fs.capabilitiesFor?.(destination, renameOptions) ?? fs.capabilities;
|
|
3819
|
+
renameOptions?.signal?.throwIfAborted();
|
|
3820
|
+
if (capabilities.atomicRenameNoReplace !== true) throw new FsError("ENOTSUP", { syscall: "rename", path: source, dest: destination });
|
|
3821
|
+
}
|
|
3822
|
+
await fs.rename(source, destination, renameOptions);
|
|
3823
|
+
},
|
|
3798
3824
|
copyFile(source, destination, copyOptions) {
|
|
3799
3825
|
return mutate(async () => {
|
|
3800
3826
|
await assertDelta(destination, (await fs.stat(source, copyOptions)).size, copyOptions);
|
|
@@ -3950,6 +3976,17 @@ function scopeFileSystem(filesystem, charge, signal) {
|
|
|
3950
3976
|
const peer = args[1];
|
|
3951
3977
|
args[1] = originals.get(peer) ?? peer;
|
|
3952
3978
|
}
|
|
3979
|
+
if (property === "rename" && args[2]?.noReplace) return (async () => {
|
|
3980
|
+
const options = args[2];
|
|
3981
|
+
const capabilities = await original.capabilitiesFor?.(args[1], options) ?? original.capabilities;
|
|
3982
|
+
assertOpen(options);
|
|
3983
|
+
if (capabilities.atomicRenameNoReplace !== true) throw new FsError("ENOTSUP", {
|
|
3984
|
+
syscall: "rename",
|
|
3985
|
+
path: args[0],
|
|
3986
|
+
dest: args[1]
|
|
3987
|
+
});
|
|
3988
|
+
return Reflect.apply(method, original, args);
|
|
3989
|
+
})();
|
|
3953
3990
|
return Reflect.apply(method, original, args);
|
|
3954
3991
|
};
|
|
3955
3992
|
const scoped = property === "openReadFile" ? async (...args) => wrapHandle(await dispatch(...args)) : property === "readStream" ? (...args) => wrapStream(dispatch(...args), args[1]) : operations.has(property) && property !== "canonicalizeMissingTarget" ? async (...args) => dispatch(...args) : dispatch;
|
|
@@ -4334,6 +4371,7 @@ var WebDavFileSystem = class {
|
|
|
4334
4371
|
remove: true,
|
|
4335
4372
|
recursiveRemove: true,
|
|
4336
4373
|
rename: true,
|
|
4374
|
+
atomicRenameNoReplace: false,
|
|
4337
4375
|
copy: true,
|
|
4338
4376
|
exclusiveCopy: true,
|
|
4339
4377
|
readlink: false,
|
|
@@ -5272,6 +5310,10 @@ var WebDavFileSystem = class {
|
|
|
5272
5310
|
}
|
|
5273
5311
|
}
|
|
5274
5312
|
async rename(source, destination, options = {}) {
|
|
5313
|
+
if (options.noReplace) {
|
|
5314
|
+
options.signal?.throwIfAborted();
|
|
5315
|
+
fail3("ENOTSUP", "rename", source, "atomic no-replace rename is unsupported");
|
|
5316
|
+
}
|
|
5275
5317
|
await this.transfer("MOVE", source, destination, options);
|
|
5276
5318
|
}
|
|
5277
5319
|
async copyFile(source, destination, options = {}) {
|
|
@@ -5998,4 +6040,4 @@ export {
|
|
|
5998
6040
|
WebDavFileSystem,
|
|
5999
6041
|
createFsBridge
|
|
6000
6042
|
};
|
|
6001
|
-
//# sourceMappingURL=chunk-
|
|
6043
|
+
//# sourceMappingURL=chunk-QK4IEGRO.js.map
|