@poe-platform/safe-bash 0.1.53 → 0.1.55
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/safe-bash/browser.d.ts +2 -0
- package/dist/safe-bash/browser.d.ts.map +1 -1
- package/dist/safe-bash/browser.js +3951 -874
- package/dist/safe-bash/browser.js.map +4 -4
- package/dist/safe-bash/commands/basic.d.ts.map +1 -1
- package/dist/safe-bash/commands/basic.js +7 -1
- package/dist/safe-bash/commands/basic.js.map +1 -1
- package/dist/safe-bash/commands/filesystem-requirements.d.ts +67 -0
- package/dist/safe-bash/commands/filesystem-requirements.d.ts.map +1 -0
- package/dist/safe-bash/commands/filesystem-requirements.js +81 -0
- package/dist/safe-bash/commands/filesystem-requirements.js.map +1 -0
- package/dist/safe-bash/commands/filesystem.d.ts.map +1 -1
- package/dist/safe-bash/commands/filesystem.js +106 -9
- package/dist/safe-bash/commands/filesystem.js.map +1 -1
- package/dist/safe-bash/commands/grep.d.ts.map +1 -1
- package/dist/safe-bash/commands/grep.js +3 -109
- package/dist/safe-bash/commands/grep.js.map +1 -1
- package/dist/safe-bash/commands/internal.d.ts +1 -0
- package/dist/safe-bash/commands/internal.d.ts.map +1 -1
- package/dist/safe-bash/commands/internal.js +22 -0
- package/dist/safe-bash/commands/internal.js.map +1 -1
- package/dist/safe-bash/commands/move.d.ts.map +1 -1
- package/dist/safe-bash/commands/move.js +21 -0
- package/dist/safe-bash/commands/move.js.map +1 -1
- package/dist/safe-bash/commands/network/curl.js +2 -0
- package/dist/safe-bash/commands/network/curl.js.map +1 -1
- package/dist/safe-bash/commands/network/output.d.ts.map +1 -1
- package/dist/safe-bash/commands/network/output.js +37 -33
- package/dist/safe-bash/commands/network/output.js.map +1 -1
- package/dist/safe-bash/commands/portable-requirements.d.ts +6 -0
- package/dist/safe-bash/commands/portable-requirements.d.ts.map +1 -0
- package/dist/safe-bash/commands/portable-requirements.js +18 -0
- package/dist/safe-bash/commands/portable-requirements.js.map +1 -0
- package/dist/safe-bash/commands/predicates.d.ts.map +1 -1
- package/dist/safe-bash/commands/predicates.js +9 -1
- package/dist/safe-bash/commands/predicates.js.map +1 -1
- package/dist/safe-bash/commands/regex-execution/client.d.ts +5 -67
- package/dist/safe-bash/commands/regex-execution/client.d.ts.map +1 -1
- package/dist/safe-bash/commands/regex-execution/client.js +13 -379
- package/dist/safe-bash/commands/regex-execution/client.js.map +1 -1
- package/dist/safe-bash/commands/regex-execution/portable.d.ts +71 -0
- package/dist/safe-bash/commands/regex-execution/portable.d.ts.map +1 -0
- package/dist/safe-bash/commands/regex-execution/portable.js +385 -0
- package/dist/safe-bash/commands/regex-execution/portable.js.map +1 -0
- package/dist/safe-bash/commands/regex-execution/protocol.js +1 -1
- package/dist/safe-bash/commands/regex-execution/protocol.js.map +1 -1
- package/dist/safe-bash/commands/regex-execution/provider.d.ts +24 -0
- package/dist/safe-bash/commands/regex-execution/provider.d.ts.map +1 -0
- package/dist/safe-bash/commands/regex-execution/provider.js +2 -0
- package/dist/safe-bash/commands/regex-execution/provider.js.map +1 -0
- package/dist/safe-bash/commands/regex-execution/public.d.ts +9 -0
- package/dist/safe-bash/commands/regex-execution/public.d.ts.map +1 -0
- package/dist/safe-bash/commands/regex-execution/public.js +6 -0
- package/dist/safe-bash/commands/regex-execution/public.js.map +1 -0
- package/dist/safe-bash/commands/search/glob.d.ts +1 -1
- package/dist/safe-bash/commands/search/glob.d.ts.map +1 -1
- package/dist/safe-bash/commands/search/glob.js +1 -1
- package/dist/safe-bash/commands/search/glob.js.map +1 -1
- package/dist/safe-bash/commands/search/grep.d.ts +4 -0
- package/dist/safe-bash/commands/search/grep.d.ts.map +1 -0
- package/dist/safe-bash/commands/search/grep.js +119 -0
- package/dist/safe-bash/commands/search/grep.js.map +1 -0
- package/dist/safe-bash/commands/search/matcher.d.ts +1 -1
- package/dist/safe-bash/commands/search/matcher.d.ts.map +1 -1
- package/dist/safe-bash/commands/search/matcher.js +1 -1
- package/dist/safe-bash/commands/search/matcher.js.map +1 -1
- package/dist/safe-bash/commands/search/output.d.ts +1 -1
- package/dist/safe-bash/commands/search/output.d.ts.map +1 -1
- package/dist/safe-bash/commands/search/output.js +8 -2
- package/dist/safe-bash/commands/search/output.js.map +1 -1
- package/dist/safe-bash/commands/search/portable.d.ts +14 -0
- package/dist/safe-bash/commands/search/portable.d.ts.map +1 -0
- package/dist/safe-bash/commands/search/portable.js +22 -0
- package/dist/safe-bash/commands/search/portable.js.map +1 -0
- package/dist/safe-bash/commands/search/requirements.d.ts +9 -0
- package/dist/safe-bash/commands/search/requirements.d.ts.map +1 -0
- package/dist/safe-bash/commands/search/requirements.js +72 -0
- package/dist/safe-bash/commands/search/requirements.js.map +1 -0
- package/dist/safe-bash/commands/search/rg-command.d.ts +5 -0
- package/dist/safe-bash/commands/search/rg-command.d.ts.map +1 -0
- package/dist/safe-bash/commands/search/rg-command.js +230 -0
- package/dist/safe-bash/commands/search/rg-command.js.map +1 -0
- package/dist/safe-bash/commands/search/rg.d.ts +2 -2
- package/dist/safe-bash/commands/search/rg.d.ts.map +1 -1
- package/dist/safe-bash/commands/search/rg.js +3 -216
- package/dist/safe-bash/commands/search/rg.js.map +1 -1
- package/dist/safe-bash/commands/search/shared.d.ts.map +1 -1
- package/dist/safe-bash/commands/search/shared.js +2 -0
- package/dist/safe-bash/commands/search/shared.js.map +1 -1
- package/dist/safe-bash/commands/search/walk.d.ts +1 -1
- package/dist/safe-bash/commands/search/walk.d.ts.map +1 -1
- package/dist/safe-bash/commands/search/walk.js +8 -1
- package/dist/safe-bash/commands/search/walk.js.map +1 -1
- package/dist/safe-bash/commands/streams.d.ts.map +1 -1
- package/dist/safe-bash/commands/streams.js +52 -108
- package/dist/safe-bash/commands/streams.js.map +1 -1
- package/dist/safe-bash/commands/text-programs/sed.d.ts.map +1 -1
- package/dist/safe-bash/commands/text-programs/sed.js +23 -14
- package/dist/safe-bash/commands/text-programs/sed.js.map +1 -1
- package/dist/safe-bash/commands/text-programs/shared.d.ts.map +1 -1
- package/dist/safe-bash/commands/text-programs/shared.js +3 -5
- package/dist/safe-bash/commands/text-programs/shared.js.map +1 -1
- package/dist/safe-bash/commands/text.d.ts.map +1 -1
- package/dist/safe-bash/commands/text.js +22 -4
- package/dist/safe-bash/commands/text.js.map +1 -1
- package/dist/safe-bash/contracts/command-requirements.d.ts +22 -0
- package/dist/safe-bash/contracts/command-requirements.d.ts.map +1 -0
- package/dist/safe-bash/contracts/command-requirements.js +47 -0
- package/dist/safe-bash/contracts/command-requirements.js.map +1 -0
- package/dist/safe-bash/contracts/command.d.ts +2 -0
- package/dist/safe-bash/contracts/command.d.ts.map +1 -1
- package/dist/safe-bash/contracts/command.js.map +1 -1
- package/dist/safe-bash/contracts/filesystem-output.d.ts +12 -0
- package/dist/safe-bash/contracts/filesystem-output.d.ts.map +1 -0
- package/dist/safe-bash/contracts/filesystem-output.js +160 -0
- package/dist/safe-bash/contracts/filesystem-output.js.map +1 -0
- package/dist/safe-bash/contracts/index.d.ts +1 -0
- package/dist/safe-bash/contracts/index.d.ts.map +1 -1
- package/dist/safe-bash/contracts/index.js +1 -0
- package/dist/safe-bash/contracts/index.js.map +1 -1
- package/dist/safe-bash/contracts/io.d.ts +2 -0
- package/dist/safe-bash/contracts/io.d.ts.map +1 -1
- package/dist/safe-bash/contracts/io.js +2 -0
- package/dist/safe-bash/contracts/io.js.map +1 -1
- package/dist/safe-bash/contracts/output.d.ts +1 -0
- package/dist/safe-bash/contracts/output.d.ts.map +1 -1
- package/dist/safe-bash/contracts/output.js +6 -1
- package/dist/safe-bash/contracts/output.js.map +1 -1
- package/dist/safe-bash/index.d.ts +2 -1
- package/dist/safe-bash/index.d.ts.map +1 -1
- package/dist/safe-bash/index.js +2 -0
- package/dist/safe-bash/index.js.map +1 -1
- package/dist/safe-bash/shell/runtime.d.ts +7 -2
- package/dist/safe-bash/shell/runtime.d.ts.map +1 -1
- package/dist/safe-bash/shell/runtime.js +247 -185
- package/dist/safe-bash/shell/runtime.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/commands/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/commands/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAKnH,wBAAgB,aAAa,IAAI,iBAAiB,EAAE,CAsKnD"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { basename, dirname, getCommandArguments, writeBytes } from "../contracts/index.js";
|
|
2
2
|
import { decoder, define, encoder, escapeBytes, options, output, requireOperands, UsageError, value } from "./internal.js";
|
|
3
|
+
import { assertCommandRequirements } from "../contracts/command-requirements.js";
|
|
4
|
+
import { pwdRequirements } from "./portable-requirements.js";
|
|
3
5
|
export function basicCommands() {
|
|
4
6
|
return [
|
|
5
7
|
define("true", () => ({ exitCode: 0 })),
|
|
@@ -35,6 +37,10 @@ export function basicCommands() {
|
|
|
35
37
|
define("pwd", async (context) => {
|
|
36
38
|
const parsed = options(context.args, "LP");
|
|
37
39
|
requireOperands(parsed.operands, 0, 0);
|
|
40
|
+
const mode = parsed.flags.has("P") ? "physical" : "logical";
|
|
41
|
+
assertCommandRequirements(context, pwdRequirements, [mode]);
|
|
42
|
+
if (mode === "physical" && context.fs.capabilitiesFor)
|
|
43
|
+
assertCommandRequirements(context, pwdRequirements, [mode], await context.fs.capabilitiesFor(context.cwd, { signal: context.signal }));
|
|
38
44
|
await output(context, `${parsed.flags.has("P") ? await context.fs.realpath(context.cwd, { signal: context.signal }) : context.cwd}\n`);
|
|
39
45
|
return { exitCode: 0 };
|
|
40
46
|
}),
|
|
@@ -203,6 +209,6 @@ export function basicCommands() {
|
|
|
203
209
|
} while (argument < args.length && !stopped);
|
|
204
210
|
return { exitCode };
|
|
205
211
|
}),
|
|
206
|
-
];
|
|
212
|
+
].map(command => ({ ...command, filesystemRequirements: command.name === "pwd" ? pwdRequirements : [] }));
|
|
207
213
|
}
|
|
208
214
|
//# sourceMappingURL=basic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/commands/basic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/commands/basic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type CommandContext } from "../contracts/index.js";
|
|
2
|
+
export declare const filesystemCommandRequirements: {
|
|
3
|
+
mkdir: {
|
|
4
|
+
id: string;
|
|
5
|
+
description: string;
|
|
6
|
+
capabilities: string[];
|
|
7
|
+
mutates: true;
|
|
8
|
+
}[];
|
|
9
|
+
touch: ({
|
|
10
|
+
id: string;
|
|
11
|
+
description: string;
|
|
12
|
+
capabilities: string[];
|
|
13
|
+
mutates: true;
|
|
14
|
+
} | {
|
|
15
|
+
id: string;
|
|
16
|
+
description: string;
|
|
17
|
+
capabilities: string[];
|
|
18
|
+
mutates?: never;
|
|
19
|
+
})[];
|
|
20
|
+
cp: {
|
|
21
|
+
id: string;
|
|
22
|
+
description: string;
|
|
23
|
+
capabilities: string[];
|
|
24
|
+
mutates: true;
|
|
25
|
+
}[];
|
|
26
|
+
mv: {
|
|
27
|
+
id: string;
|
|
28
|
+
description: string;
|
|
29
|
+
capabilities: string[];
|
|
30
|
+
mutates: true;
|
|
31
|
+
}[];
|
|
32
|
+
rm: {
|
|
33
|
+
id: string;
|
|
34
|
+
description: string;
|
|
35
|
+
capabilities: string[];
|
|
36
|
+
mutates: true;
|
|
37
|
+
}[];
|
|
38
|
+
rmdir: {
|
|
39
|
+
id: string;
|
|
40
|
+
description: string;
|
|
41
|
+
capabilities: string[];
|
|
42
|
+
mutates: true;
|
|
43
|
+
}[];
|
|
44
|
+
ln: {
|
|
45
|
+
id: string;
|
|
46
|
+
description: string;
|
|
47
|
+
capabilities: string[];
|
|
48
|
+
mutates: true;
|
|
49
|
+
}[];
|
|
50
|
+
readlink: {
|
|
51
|
+
id: string;
|
|
52
|
+
description: string;
|
|
53
|
+
capabilities: string[];
|
|
54
|
+
}[];
|
|
55
|
+
realpath: {
|
|
56
|
+
id: string;
|
|
57
|
+
description: string;
|
|
58
|
+
capabilities: string[];
|
|
59
|
+
}[];
|
|
60
|
+
ls: {
|
|
61
|
+
id: string;
|
|
62
|
+
description: string;
|
|
63
|
+
capabilities: string[];
|
|
64
|
+
}[];
|
|
65
|
+
};
|
|
66
|
+
export declare function admitFilesystemModes(context: CommandContext, command: keyof typeof filesystemCommandRequirements, modes: readonly string[], paths: readonly string[]): Promise<void>;
|
|
67
|
+
//# sourceMappingURL=filesystem-requirements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-requirements.d.ts","sourceRoot":"","sources":["../../src/commands/filesystem-requirements.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG9E,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDyB,CAAC;AAEpE,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,OAAO,6BAA6B,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAC/H,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { assertCommandRequirements } from "../contracts/command-requirements.js";
|
|
2
|
+
import { dirname, FsError } from "../contracts/index.js";
|
|
3
|
+
import { codeOf } from "./internal.js";
|
|
4
|
+
export const filesystemCommandRequirements = {
|
|
5
|
+
mkdir: [
|
|
6
|
+
{ id: "directory", description: "Create explicit directories", capabilities: ["explicitDirectories", "mkdir"], mutates: true },
|
|
7
|
+
{ id: "parents", description: "Create parent directories (-p)", capabilities: ["explicitDirectories", "recursiveMkdir"], mutates: true },
|
|
8
|
+
],
|
|
9
|
+
touch: [
|
|
10
|
+
{ id: "create", description: "Create a missing file exclusively", capabilities: ["stat", "exclusiveCreate"], mutates: true },
|
|
11
|
+
{ id: "existing", description: "Update existing file timestamps", capabilities: ["stat", "timestamps"], mutates: true },
|
|
12
|
+
{ id: "no-create", description: "Skip missing files (-c)", capabilities: ["stat"] },
|
|
13
|
+
],
|
|
14
|
+
cp: [
|
|
15
|
+
{ id: "file", description: "Copy file contents", capabilities: ["stat", "realpath", "copy"], mutates: true },
|
|
16
|
+
{ id: "recursive", description: "Copy directory trees (-r/-R)", capabilities: ["stat", "realpath", "readdir", "explicitDirectories", "mkdir", "copy"], mutates: true },
|
|
17
|
+
{ id: "symlink", description: "Copy symbolic links without dereferencing", capabilities: ["stat", "realpath", "readlink", "symlinks"], mutates: true },
|
|
18
|
+
{ id: "replace", description: "Remove a destination before replacing it", capabilities: ["remove"], mutates: true },
|
|
19
|
+
{ id: "exclusive", description: "Exclusively copy after forced removal", capabilities: ["exclusiveCopy"], mutates: true },
|
|
20
|
+
],
|
|
21
|
+
mv: [
|
|
22
|
+
{ id: "rename", description: "Rename files or directories", capabilities: ["stat", "rename"], mutates: true },
|
|
23
|
+
{ id: "cross-source", description: "Remove file sources after an existing cross-device transfer", capabilities: ["stat", "remove"], mutates: true },
|
|
24
|
+
{ id: "cross-directory-source", description: "Traverse and remove cross-device source directories", capabilities: ["stat", "readdir", "removeDirectory"], mutates: true },
|
|
25
|
+
{ id: "cross-link-source", description: "Inspect and remove cross-device source links", capabilities: ["stat", "readlink", "remove"], mutates: true },
|
|
26
|
+
{ id: "cross-file", description: "Publish file contents through the existing cross-device copy route", capabilities: ["stat", "copy"], mutates: true },
|
|
27
|
+
{ id: "cross-exclusive", description: "Publish a missing cross-device destination exclusively", capabilities: ["exclusiveCopy"], mutates: true },
|
|
28
|
+
{ id: "cross-directory", description: "Create missing cross-device destination directories", capabilities: ["mkdir"], mutates: true },
|
|
29
|
+
{ id: "cross-link", description: "Publish cross-device destination links", capabilities: ["symlinks"], mutates: true },
|
|
30
|
+
{ id: "cross-replace", description: "Remove entries replaced by a cross-device transfer", capabilities: ["remove"], mutates: true },
|
|
31
|
+
],
|
|
32
|
+
rm: [
|
|
33
|
+
{ id: "file", description: "Remove file entries", capabilities: ["stat", "remove"], mutates: true },
|
|
34
|
+
{ id: "directory", description: "Remove empty directories (-d)", capabilities: ["stat", "removeDirectory"], mutates: true },
|
|
35
|
+
{ id: "recursive", description: "Remove directory trees (-r/-R)", capabilities: ["stat", "recursiveRemove"], mutates: true },
|
|
36
|
+
],
|
|
37
|
+
rmdir: [
|
|
38
|
+
{ id: "directory", description: "Remove empty directories, including parents (-p)", capabilities: ["removeDirectory"], mutates: true },
|
|
39
|
+
],
|
|
40
|
+
ln: [
|
|
41
|
+
{ id: "hard", description: "Create hard links", capabilities: ["stat", "hardlinks"], mutates: true },
|
|
42
|
+
{ id: "symbolic", description: "Create symbolic links (-s)", capabilities: ["stat", "symlinks"], mutates: true },
|
|
43
|
+
{ id: "replace", description: "Remove existing destinations (-f)", capabilities: ["remove"], mutates: true },
|
|
44
|
+
],
|
|
45
|
+
readlink: [
|
|
46
|
+
{ id: "link", description: "Read symbolic link targets", capabilities: ["readlink"] },
|
|
47
|
+
{ id: "canonical", description: "Canonicalize paths (-f/-e)", capabilities: ["stat", "realpath"] },
|
|
48
|
+
],
|
|
49
|
+
realpath: [
|
|
50
|
+
{ id: "canonical", description: "Canonicalize existing or missing paths", capabilities: ["stat", "realpath"] },
|
|
51
|
+
],
|
|
52
|
+
ls: [
|
|
53
|
+
{ id: "entry", description: "Inspect individual directory entries", capabilities: ["stat"] },
|
|
54
|
+
{ id: "directory", description: "List directories, including recursive listings (-R)", capabilities: ["stat", "readdir", "realpath"] },
|
|
55
|
+
{ id: "link", description: "Show symbolic link targets in long listings (-l)", capabilities: ["readlink"] },
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
export async function admitFilesystemModes(context, command, modes, paths) {
|
|
59
|
+
const requirements = filesystemCommandRequirements[command];
|
|
60
|
+
for (const path of paths) {
|
|
61
|
+
let candidate = path;
|
|
62
|
+
while (true) {
|
|
63
|
+
try {
|
|
64
|
+
assertCommandRequirements(context, requirements, modes, context.fs.capabilities.readOnly === true ? { readOnly: true } : {});
|
|
65
|
+
const capabilities = await context.fs.capabilitiesFor?.(candidate, { signal: context.signal }) ?? context.fs.capabilities;
|
|
66
|
+
assertCommandRequirements(context, requirements, modes, capabilities);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
context.signal.throwIfAborted();
|
|
71
|
+
if (codeOf(error) === "ENOTSUP" || codeOf(error) === "EROFS") {
|
|
72
|
+
throw new FsError(codeOf(error) === "EROFS" ? "EROFS" : "ENOTSUP", { syscall: command, path, cause: error });
|
|
73
|
+
}
|
|
74
|
+
if (codeOf(error) !== "ENOENT" || candidate === "/")
|
|
75
|
+
throw error;
|
|
76
|
+
candidate = dirname(candidate);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=filesystem-requirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-requirements.js","sourceRoot":"","sources":["../../src/commands/filesystem-requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/commands/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAEgB,KAAK,iBAAiB,EAC5C,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/commands/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAEgB,KAAK,iBAAiB,EAC5C,MAAM,uBAAuB,CAAC;AAgK/B,wBAAgB,kBAAkB,IAAI,iBAAiB,EAAE,CAsRxD"}
|
|
@@ -2,6 +2,20 @@ import { basename, dirname, FsError, isPathWithin, joinPath, relativePath, } fro
|
|
|
2
2
|
import { codeOf, define, eachOperand, options, output, pathOf, requireOperands, UsageError, value } from "./internal.js";
|
|
3
3
|
import { compareCopyIdentity, compareObservedEntries } from "./copy-identity.js";
|
|
4
4
|
import { MoveBudget, moveAcrossDevices } from "./move.js";
|
|
5
|
+
import { admitFilesystemModes, filesystemCommandRequirements } from "./filesystem-requirements.js";
|
|
6
|
+
async function preflightOperands(context, operands, check) {
|
|
7
|
+
for (const operand of operands) {
|
|
8
|
+
try {
|
|
9
|
+
await check(operand);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
context.signal.throwIfAborted();
|
|
13
|
+
if (codeOf(error) === "ENOTSUP" || codeOf(error) === "EROFS"
|
|
14
|
+
|| codeOf(error) === "ENOTEMPTY" && error instanceof FsError && codeOf(error.cause) === "ENOTSUP")
|
|
15
|
+
throw error;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
5
19
|
async function maybeStat(context, path, follow = true) {
|
|
6
20
|
try {
|
|
7
21
|
return await context.fs[follow ? "stat" : "lstat"](path, { signal: context.signal });
|
|
@@ -28,10 +42,30 @@ async function canonicalMissing(context, path) {
|
|
|
28
42
|
}
|
|
29
43
|
}
|
|
30
44
|
function needCapability(context, capability) {
|
|
45
|
+
const declaration = { symlink: "symlinks", link: "hardlinks", readlink: "readlink", utimes: "timestamps" }[capability];
|
|
46
|
+
if (!context.fs.capabilitiesFor && context.fs.capabilities[declaration] === false)
|
|
47
|
+
throw new FsError("ENOTSUP", { syscall: capability });
|
|
31
48
|
if (!context.fs[capability])
|
|
32
49
|
throw new FsError("ENOTSUP", { syscall: capability });
|
|
33
50
|
}
|
|
51
|
+
async function admitEmptyDirectory(context, path) {
|
|
52
|
+
try {
|
|
53
|
+
await admitFilesystemModes(context, "rmdir", ["directory"], [path]);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
context.signal.throwIfAborted();
|
|
57
|
+
if (codeOf(error) === "ENOTSUP") {
|
|
58
|
+
const capabilities = await context.fs.capabilitiesFor?.(path, { signal: context.signal }) ?? context.fs.capabilities;
|
|
59
|
+
if (capabilities.write !== false && capabilities.readdir !== false
|
|
60
|
+
&& (await context.fs.readdir(path, { signal: context.signal })).length) {
|
|
61
|
+
throw new FsError("ENOTEMPTY", { syscall: "rmdir", path, cause: error });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
34
67
|
async function removeEmptyDirectory(context, path) {
|
|
68
|
+
await admitEmptyDirectory(context, path);
|
|
35
69
|
context.signal.throwIfAborted();
|
|
36
70
|
if (!context.fs.rmdir)
|
|
37
71
|
throw new FsError("ENOTSUP", { syscall: "rmdir", path });
|
|
@@ -45,7 +79,7 @@ async function destinations(context, operands) {
|
|
|
45
79
|
throw new FsError("ENOTDIR", { path: target });
|
|
46
80
|
return { target, directory, sources: operands.slice(0, -1) };
|
|
47
81
|
}
|
|
48
|
-
async function copy(context, source, target, flags, top = true, ancestors = new Set()) {
|
|
82
|
+
async function copy(context, source, target, flags, top = true, ancestors = new Set(), preflight = false) {
|
|
49
83
|
context.signal.throwIfAborted();
|
|
50
84
|
const link = await context.fs.lstat(source, { signal: context.signal });
|
|
51
85
|
const preserveLink = link.type === "symlink" && !flags.has("L") && (flags.has("P") || !top);
|
|
@@ -55,14 +89,15 @@ async function copy(context, source, target, flags, top = true, ancestors = new
|
|
|
55
89
|
? joinPath(await context.fs.realpath(dirname(source), { signal: context.signal }), basename(source))
|
|
56
90
|
: await context.fs.realpath(source, { signal: context.signal });
|
|
57
91
|
const physicalTarget = preserveLink
|
|
58
|
-
? joinPath(await
|
|
92
|
+
? joinPath(preflight ? await canonicalMissing(context, dirname(target))
|
|
93
|
+
: await context.fs.realpath(dirname(target), { signal: context.signal }), basename(target))
|
|
59
94
|
: await canonicalMissing(context, target);
|
|
60
95
|
if (physicalSource === physicalTarget || compareCopyIdentity(sourceStat, targetStat) === "same") {
|
|
61
96
|
throw new FsError("EINVAL", { path: source, dest: target, message: "source and destination are the same file" });
|
|
62
97
|
}
|
|
63
98
|
if (flags.has("n") && await maybeStat(context, target, false))
|
|
64
99
|
return;
|
|
65
|
-
if (!preserveLink && targetStat && await compareObservedEntries(context.fs, source, sourceStat, context.fs, target, targetStat, { signal: context.signal }) === "same") {
|
|
100
|
+
if (!preflight && !preserveLink && targetStat && await compareObservedEntries(context.fs, source, sourceStat, context.fs, target, targetStat, { signal: context.signal }) === "same") {
|
|
66
101
|
throw new FsError("EINVAL", { path: source, dest: target, message: "source and destination are the same file" });
|
|
67
102
|
}
|
|
68
103
|
if (sourceStat.type === "directory") {
|
|
@@ -74,19 +109,22 @@ async function copy(context, source, target, flags, top = true, ancestors = new
|
|
|
74
109
|
throw new FsError("ELOOP", { path: source });
|
|
75
110
|
if (targetStat && targetStat.type !== "directory")
|
|
76
111
|
throw new FsError("ENOTDIR", { path: target });
|
|
77
|
-
|
|
112
|
+
await admitFilesystemModes(context, "cp", ["recursive"], [target]);
|
|
113
|
+
if (!targetStat && !preflight)
|
|
78
114
|
await context.fs.mkdir(target, { mode: sourceStat.mode & 0o777, signal: context.signal });
|
|
79
115
|
const next = new Set(ancestors).add(physicalSource);
|
|
80
116
|
for (const entry of (await context.fs.readdir(source, { signal: context.signal })).sort((left, right) => left.name < right.name ? -1 : left.name > right.name ? 1 : 0)) {
|
|
81
|
-
await copy(context, joinPath(source, entry.name), joinPath(target, entry.name), flags, false, next);
|
|
117
|
+
await copy(context, joinPath(source, entry.name), joinPath(target, entry.name), flags, false, next, preflight);
|
|
82
118
|
}
|
|
83
119
|
}
|
|
84
120
|
else if (preserveLink) {
|
|
121
|
+
await admitFilesystemModes(context, "cp", ["symlink"], [target]);
|
|
85
122
|
needCapability(context, "symlink");
|
|
86
123
|
needCapability(context, "readlink");
|
|
87
124
|
const linkTarget = await context.fs.readlink(source, { signal: context.signal });
|
|
88
125
|
const existing = await maybeStat(context, target, false);
|
|
89
126
|
if (existing) {
|
|
127
|
+
await admitFilesystemModes(context, "cp", ["replace"], [target]);
|
|
90
128
|
if (existing.type === "directory")
|
|
91
129
|
throw new FsError("EISDIR", { path: target });
|
|
92
130
|
const sourceEntry = await context.fs.lstat(source, { signal: context.signal });
|
|
@@ -96,13 +134,18 @@ async function copy(context, source, target, flags, top = true, ancestors = new
|
|
|
96
134
|
if (identity === "unknown")
|
|
97
135
|
throw new FsError("ENOTSUP", { path: source, dest: target, message: "symbolic link copy unlink lacks authoritative distinctness" });
|
|
98
136
|
context.signal.throwIfAborted();
|
|
99
|
-
|
|
137
|
+
if (!preflight)
|
|
138
|
+
await context.fs.rm(target, { recursive: false, signal: context.signal });
|
|
100
139
|
}
|
|
101
|
-
|
|
140
|
+
if (!preflight)
|
|
141
|
+
await context.fs.symlink(linkTarget, target, { signal: context.signal });
|
|
102
142
|
}
|
|
103
143
|
else {
|
|
144
|
+
await admitFilesystemModes(context, "cp", ["file", ...flags.has("f") && targetStat ? ["replace", "exclusive"] : []], [target]);
|
|
104
145
|
if (targetStat?.type === "directory")
|
|
105
146
|
throw new FsError("EISDIR", { path: target });
|
|
147
|
+
if (preflight)
|
|
148
|
+
return;
|
|
106
149
|
try {
|
|
107
150
|
await context.fs.copyFile(source, target, { signal: context.signal });
|
|
108
151
|
}
|
|
@@ -127,7 +170,7 @@ async function copy(context, source, target, flags, top = true, ancestors = new
|
|
|
127
170
|
await context.fs.copyFile(source, target, { exclusive: true, signal: context.signal });
|
|
128
171
|
}
|
|
129
172
|
}
|
|
130
|
-
if (flags.has("v"))
|
|
173
|
+
if (!preflight && flags.has("v"))
|
|
131
174
|
await output(context, `'${source}' -> '${target}'\n`);
|
|
132
175
|
}
|
|
133
176
|
function modeText(stat) {
|
|
@@ -152,6 +195,7 @@ export function filesystemCommands() {
|
|
|
152
195
|
const mode = value(parsed, "m");
|
|
153
196
|
if (mode !== undefined && !/^[0-7]{1,4}$/u.test(mode))
|
|
154
197
|
throw new UsageError(`invalid mode '${mode}' (octal required)`);
|
|
198
|
+
await preflightOperands(context, parsed.operands, operand => admitFilesystemModes(context, "mkdir", [parsed.flags.has("p") ? "parents" : "directory"], [pathOf(context, operand)]));
|
|
155
199
|
return eachOperand(context, parsed.operands, async (operand) => {
|
|
156
200
|
await context.fs.mkdir(pathOf(context, operand), { recursive: parsed.flags.has("p"), ...(mode === undefined ? {} : { mode: parseInt(mode, 8) }), signal: context.signal });
|
|
157
201
|
if (parsed.flags.has("v"))
|
|
@@ -164,12 +208,20 @@ export function filesystemCommands() {
|
|
|
164
208
|
const reference = value(parsed, "r");
|
|
165
209
|
const times = reference === undefined ? undefined : await context.fs.stat(pathOf(context, reference), { signal: context.signal });
|
|
166
210
|
const now = Date.now();
|
|
211
|
+
await preflightOperands(context, parsed.operands, async (operand) => {
|
|
212
|
+
const path = pathOf(context, operand);
|
|
213
|
+
const existing = await maybeStat(context, path);
|
|
214
|
+
const modes = existing ? ["existing"] : parsed.flags.has("c") ? ["no-create"]
|
|
215
|
+
: reference === undefined ? ["create"] : ["create", "existing"];
|
|
216
|
+
await admitFilesystemModes(context, "touch", modes, [path]);
|
|
217
|
+
});
|
|
167
218
|
return eachOperand(context, parsed.operands, async (operand) => {
|
|
168
219
|
const path = pathOf(context, operand);
|
|
169
220
|
let existing = await maybeStat(context, path);
|
|
170
221
|
if (!existing) {
|
|
171
222
|
if (parsed.flags.has("c"))
|
|
172
223
|
return;
|
|
224
|
+
await admitFilesystemModes(context, "touch", reference === undefined ? ["create"] : ["create", "existing"], [path]);
|
|
173
225
|
if (reference !== undefined)
|
|
174
226
|
needCapability(context, "utimes");
|
|
175
227
|
await context.fs.writeFile(path, new Uint8Array(), { flag: "wx", signal: context.signal });
|
|
@@ -178,6 +230,7 @@ export function filesystemCommands() {
|
|
|
178
230
|
existing = await context.fs.stat(path, { signal: context.signal });
|
|
179
231
|
}
|
|
180
232
|
needCapability(context, "utimes");
|
|
233
|
+
await admitFilesystemModes(context, "touch", ["existing"], [path]);
|
|
181
234
|
const accessOnly = parsed.flags.has("a") && !parsed.flags.has("m");
|
|
182
235
|
const modifyOnly = parsed.flags.has("m") && !parsed.flags.has("a");
|
|
183
236
|
await context.fs.utimes(path, modifyOnly ? existing.atimeMs : times?.atimeMs ?? now, accessOnly ? existing.mtimeMs : times?.mtimeMs ?? now, { signal: context.signal });
|
|
@@ -188,6 +241,10 @@ export function filesystemCommands() {
|
|
|
188
241
|
if (parsed.flags.has("P") && parsed.flags.has("L"))
|
|
189
242
|
throw new UsageError("-P and -L cannot be combined");
|
|
190
243
|
const destination = await destinations(context, parsed.operands);
|
|
244
|
+
await preflightOperands(context, destination.sources, async (operand) => {
|
|
245
|
+
const source = pathOf(context, operand);
|
|
246
|
+
await copy(context, source, destination.directory ? joinPath(destination.target, basename(source)) : destination.target, parsed.flags, true, new Set(), true);
|
|
247
|
+
});
|
|
191
248
|
return eachOperand(context, destination.sources, async (operand) => {
|
|
192
249
|
const source = pathOf(context, operand);
|
|
193
250
|
await copy(context, source, destination.directory ? joinPath(destination.target, basename(source)) : destination.target, parsed.flags);
|
|
@@ -197,6 +254,13 @@ export function filesystemCommands() {
|
|
|
197
254
|
const parsed = options(context.args, "fnv", { force: "f", "no-clobber": "n", verbose: "v" });
|
|
198
255
|
const destination = await destinations(context, parsed.operands);
|
|
199
256
|
const budget = new MoveBudget(context.signal);
|
|
257
|
+
await preflightOperands(context, destination.sources, async (operand) => {
|
|
258
|
+
const source = pathOf(context, operand);
|
|
259
|
+
const target = destination.directory ? joinPath(destination.target, basename(source)) : destination.target;
|
|
260
|
+
if (parsed.flags.has("n") && await maybeStat(context, target, false))
|
|
261
|
+
return;
|
|
262
|
+
await admitFilesystemModes(context, "mv", ["rename"], [source, target]);
|
|
263
|
+
});
|
|
200
264
|
return eachOperand(context, destination.sources, async (operand) => {
|
|
201
265
|
const source = pathOf(context, operand);
|
|
202
266
|
const target = destination.directory ? joinPath(destination.target, basename(source)) : destination.target;
|
|
@@ -223,6 +287,17 @@ export function filesystemCommands() {
|
|
|
223
287
|
const parsed = options(context.args, "rRfdv", { recursive: "r", force: "f", dir: "d", verbose: "v" });
|
|
224
288
|
if (!parsed.flags.has("f"))
|
|
225
289
|
requireOperands(parsed.operands);
|
|
290
|
+
await preflightOperands(context, parsed.operands, async (operand) => {
|
|
291
|
+
const path = pathOf(context, operand);
|
|
292
|
+
const stat = await maybeStat(context, path, false);
|
|
293
|
+
if (!stat)
|
|
294
|
+
return;
|
|
295
|
+
const mode = stat.type === "directory" ? parsed.flags.has("r") || parsed.flags.has("R") ? "recursive" : "directory" : "file";
|
|
296
|
+
if (mode === "directory")
|
|
297
|
+
await admitEmptyDirectory(context, path);
|
|
298
|
+
else
|
|
299
|
+
await admitFilesystemModes(context, "rm", [mode], [path]);
|
|
300
|
+
});
|
|
226
301
|
return eachOperand(context, parsed.operands, async (operand) => {
|
|
227
302
|
const path = pathOf(context, operand);
|
|
228
303
|
if (path === "/" || [".", ".."].includes(operand.replace(/\/+$/u, "").split("/").at(-1)))
|
|
@@ -256,6 +331,14 @@ export function filesystemCommands() {
|
|
|
256
331
|
define("rmdir", async (context) => {
|
|
257
332
|
const parsed = options(context.args, "pv", { parents: "p", verbose: "v" });
|
|
258
333
|
requireOperands(parsed.operands);
|
|
334
|
+
await preflightOperands(context, parsed.operands, async (operand) => {
|
|
335
|
+
let path = pathOf(context, operand);
|
|
336
|
+
const stop = dirname(pathOf(context, operand.split("/").find(part => part && part !== ".") ?? operand));
|
|
337
|
+
do {
|
|
338
|
+
await admitEmptyDirectory(context, path);
|
|
339
|
+
path = dirname(path);
|
|
340
|
+
} while (parsed.flags.has("p") && path !== "/" && path !== stop);
|
|
341
|
+
});
|
|
259
342
|
return eachOperand(context, parsed.operands, async (operand) => {
|
|
260
343
|
let path = pathOf(context, operand);
|
|
261
344
|
const stop = dirname(pathOf(context, operand.split("/").find(part => part && part !== ".") ?? operand));
|
|
@@ -281,6 +364,11 @@ export function filesystemCommands() {
|
|
|
281
364
|
throw new FsError("ENOTDIR", { path: target });
|
|
282
365
|
const symbolic = parsed.flags.has("s");
|
|
283
366
|
needCapability(context, symbolic ? "symlink" : "link");
|
|
367
|
+
await preflightOperands(context, operands.slice(0, -1), async (operand) => {
|
|
368
|
+
const destination = directory ? joinPath(target, basename(operand)) : target;
|
|
369
|
+
const replacing = parsed.flags.has("f") && await maybeStat(context, destination, false);
|
|
370
|
+
await admitFilesystemModes(context, "ln", [symbolic ? "symbolic" : "hard", ...replacing ? ["replace"] : []], [destination]);
|
|
371
|
+
});
|
|
284
372
|
return eachOperand(context, operands.slice(0, -1), async (operand) => {
|
|
285
373
|
const destination = directory ? joinPath(target, basename(operand)) : target;
|
|
286
374
|
const source = pathOf(context, operand);
|
|
@@ -310,6 +398,7 @@ export function filesystemCommands() {
|
|
|
310
398
|
requireOperands(parsed.operands);
|
|
311
399
|
return eachOperand(context, parsed.operands, async (operand) => {
|
|
312
400
|
const path = pathOf(context, operand);
|
|
401
|
+
await admitFilesystemModes(context, "readlink", [parsed.flags.has("e") || parsed.flags.has("f") ? "canonical" : "link"], [path]);
|
|
313
402
|
let result;
|
|
314
403
|
if (parsed.flags.has("e"))
|
|
315
404
|
result = await context.fs.realpath(path, { signal: context.signal });
|
|
@@ -347,6 +436,7 @@ export function filesystemCommands() {
|
|
|
347
436
|
requireOperands(parsed.operands);
|
|
348
437
|
const canonical = async (operand) => {
|
|
349
438
|
const path = pathOf(context, operand);
|
|
439
|
+
await admitFilesystemModes(context, "realpath", ["canonical"], [path]);
|
|
350
440
|
const existing = await maybeStat(context, path, false);
|
|
351
441
|
return parsed.flags.has("m") ? await canonicalMissing(context, path)
|
|
352
442
|
: parsed.flags.has("e") || existing ? await context.fs.realpath(path, { signal: context.signal })
|
|
@@ -368,6 +458,7 @@ export function filesystemCommands() {
|
|
|
368
458
|
const operands = parsed.operands.length ? parsed.operands : ["."];
|
|
369
459
|
let headerWritten = false;
|
|
370
460
|
const render = async (path, display) => {
|
|
461
|
+
await admitFilesystemModes(context, "ls", ["entry"], [path]);
|
|
371
462
|
const stat = await context.fs[parsed.flags.has("L") ? "stat" : "lstat"](path, { signal: context.signal });
|
|
372
463
|
let suffix = stat.type === "directory" && (parsed.flags.has("F") || parsed.flags.has("p")) ? "/" : "";
|
|
373
464
|
if (parsed.flags.has("F") && stat.type === "symlink")
|
|
@@ -378,6 +469,7 @@ export function filesystemCommands() {
|
|
|
378
469
|
const date = new Date(stat.mtimeMs).toISOString().slice(0, 16).replace("T", " ");
|
|
379
470
|
let target = "";
|
|
380
471
|
if (stat.type === "symlink") {
|
|
472
|
+
await admitFilesystemModes(context, "ls", ["link"], [path]);
|
|
381
473
|
needCapability(context, "readlink");
|
|
382
474
|
target = ` -> ${await context.fs.readlink(path, { signal: context.signal })}`;
|
|
383
475
|
}
|
|
@@ -388,11 +480,13 @@ export function filesystemCommands() {
|
|
|
388
480
|
};
|
|
389
481
|
const list = async (path, display, header, ancestors = new Set()) => {
|
|
390
482
|
context.signal.throwIfAborted();
|
|
483
|
+
await admitFilesystemModes(context, "ls", ["entry"], [path]);
|
|
391
484
|
const stat = await context.fs[parsed.flags.has("L") || !parsed.flags.has("d") && !parsed.flags.has("l") ? "stat" : "lstat"](path, { signal: context.signal });
|
|
392
485
|
if (stat.type !== "directory" || parsed.flags.has("d")) {
|
|
393
486
|
await render(path, display);
|
|
394
487
|
return;
|
|
395
488
|
}
|
|
489
|
+
await admitFilesystemModes(context, "ls", ["directory"], [path]);
|
|
396
490
|
const physical = await context.fs.realpath(path, { signal: context.signal });
|
|
397
491
|
if (ancestors.has(physical))
|
|
398
492
|
throw new FsError("ELOOP", { path });
|
|
@@ -422,6 +516,9 @@ export function filesystemCommands() {
|
|
|
422
516
|
};
|
|
423
517
|
return eachOperand(context, operands, operand => list(pathOf(context, operand), operand, operands.length > 1 || parsed.flags.has("R")));
|
|
424
518
|
}),
|
|
425
|
-
]
|
|
519
|
+
].map(command => {
|
|
520
|
+
const requirements = filesystemCommandRequirements[command.name];
|
|
521
|
+
return requirements ? { ...command, filesystemRequirements: requirements } : command;
|
|
522
|
+
});
|
|
426
523
|
}
|
|
427
524
|
//# sourceMappingURL=filesystem.js.map
|