@poe-platform/safe-bash 0.1.145 → 0.1.147

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +1 -1
  2. package/dist/safe-bash/browser.d.ts +4 -0
  3. package/dist/safe-bash/browser.d.ts.map +1 -1
  4. package/dist/safe-bash/browser.js +4046 -2910
  5. package/dist/safe-bash/browser.js.map +4 -4
  6. package/dist/safe-bash/commands/basic.d.ts +3 -1
  7. package/dist/safe-bash/commands/basic.d.ts.map +1 -1
  8. package/dist/safe-bash/commands/basic.js +143 -141
  9. package/dist/safe-bash/commands/basic.js.map +1 -1
  10. package/dist/safe-bash/commands/execution.d.ts +4 -1
  11. package/dist/safe-bash/commands/execution.d.ts.map +1 -1
  12. package/dist/safe-bash/commands/execution.js +134 -32
  13. package/dist/safe-bash/commands/execution.js.map +1 -1
  14. package/dist/safe-bash/commands/filesystem.d.ts.map +1 -1
  15. package/dist/safe-bash/commands/filesystem.js +161 -39
  16. package/dist/safe-bash/commands/filesystem.js.map +1 -1
  17. package/dist/safe-bash/commands/find.d.ts.map +1 -1
  18. package/dist/safe-bash/commands/find.js +83 -3
  19. package/dist/safe-bash/commands/find.js.map +1 -1
  20. package/dist/safe-bash/commands/index.d.ts +4 -0
  21. package/dist/safe-bash/commands/index.d.ts.map +1 -1
  22. package/dist/safe-bash/commands/index.js +1 -1
  23. package/dist/safe-bash/commands/index.js.map +1 -1
  24. package/dist/safe-bash/commands/regex-execution/ere/matcher.d.ts.map +1 -1
  25. package/dist/safe-bash/commands/regex-execution/ere/matcher.js +35 -15
  26. package/dist/safe-bash/commands/regex-execution/ere/matcher.js.map +1 -1
  27. package/dist/safe-bash/commands/search/file-types.d.ts +2 -0
  28. package/dist/safe-bash/commands/search/file-types.d.ts.map +1 -0
  29. package/dist/safe-bash/commands/search/file-types.js +229 -0
  30. package/dist/safe-bash/commands/search/file-types.js.map +1 -0
  31. package/dist/safe-bash/commands/search/options.d.ts +4 -0
  32. package/dist/safe-bash/commands/search/options.d.ts.map +1 -1
  33. package/dist/safe-bash/commands/search/options.js +14 -1
  34. package/dist/safe-bash/commands/search/options.js.map +1 -1
  35. package/dist/safe-bash/commands/search/walk.d.ts +2 -0
  36. package/dist/safe-bash/commands/search/walk.d.ts.map +1 -1
  37. package/dist/safe-bash/commands/search/walk.js +32 -0
  38. package/dist/safe-bash/commands/search/walk.js.map +1 -1
  39. package/dist/safe-bash/commands/streams.d.ts +1 -1
  40. package/dist/safe-bash/commands/streams.d.ts.map +1 -1
  41. package/dist/safe-bash/commands/streams.js +7 -1
  42. package/dist/safe-bash/commands/streams.js.map +1 -1
  43. package/dist/safe-bash/commands/structured/interpreter.d.ts +9 -1
  44. package/dist/safe-bash/commands/structured/interpreter.d.ts.map +1 -1
  45. package/dist/safe-bash/commands/structured/interpreter.js +78 -2
  46. package/dist/safe-bash/commands/structured/interpreter.js.map +1 -1
  47. package/dist/safe-bash/commands/structured/parser.d.ts +13 -0
  48. package/dist/safe-bash/commands/structured/parser.d.ts.map +1 -1
  49. package/dist/safe-bash/commands/structured/parser.js +49 -2
  50. package/dist/safe-bash/commands/structured/parser.js.map +1 -1
  51. package/dist/safe-bash/commands/table-text/join.d.ts.map +1 -1
  52. package/dist/safe-bash/commands/table-text/join.js +7 -2
  53. package/dist/safe-bash/commands/table-text/join.js.map +1 -1
  54. package/dist/safe-bash/commands/text-programs/sed.d.ts.map +1 -1
  55. package/dist/safe-bash/commands/text-programs/sed.js +98 -29
  56. package/dist/safe-bash/commands/text-programs/sed.js.map +1 -1
  57. package/dist/safe-bash/commands/text.d.ts.map +1 -1
  58. package/dist/safe-bash/commands/text.js +26 -16
  59. package/dist/safe-bash/commands/text.js.map +1 -1
  60. package/dist/safe-bash/plugins/index.d.ts +3 -0
  61. package/dist/safe-bash/plugins/index.d.ts.map +1 -1
  62. package/dist/safe-bash/plugins/index.js +1 -1
  63. package/dist/safe-bash/plugins/index.js.map +1 -1
  64. package/dist/safe-bash/shell/brace-expansion.d.ts +6 -0
  65. package/dist/safe-bash/shell/brace-expansion.d.ts.map +1 -0
  66. package/dist/safe-bash/shell/brace-expansion.js +335 -0
  67. package/dist/safe-bash/shell/brace-expansion.js.map +1 -0
  68. package/dist/safe-bash/shell/parser.d.ts +10 -1
  69. package/dist/safe-bash/shell/parser.d.ts.map +1 -1
  70. package/dist/safe-bash/shell/parser.js +92 -18
  71. package/dist/safe-bash/shell/parser.js.map +1 -1
  72. package/dist/safe-bash/shell/runtime.d.ts +4 -2
  73. package/dist/safe-bash/shell/runtime.d.ts.map +1 -1
  74. package/dist/safe-bash/shell/runtime.js +239 -38
  75. package/dist/safe-bash/shell/runtime.js.map +1 -1
  76. package/package.json +2 -2
@@ -1,3 +1,5 @@
1
- import { type CommandDefinition } from "../contracts/index.js";
1
+ import { type CommandContext, type CommandDefinition, type CommandResult } from "../contracts/index.js";
2
2
  export declare function basicCommands(): CommandDefinition[];
3
+ export declare function formatPrintf(context: CommandContext): Promise<CommandResult>;
4
+ export declare const printfCommand: CommandDefinition;
3
5
  //# sourceMappingURL=basic.d.ts.map
@@ -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;AAKnH,wBAAgB,aAAa,IAAI,iBAAiB,EAAE,CAsKnD"}
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/commands/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK5J,wBAAgB,aAAa,IAAI,iBAAiB,EAAE,CAwDnD;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA8GlF;AAED,eAAO,MAAM,aAAa,mBAAiC,CAAC"}
@@ -64,151 +64,153 @@ export function basicCommands() {
64
64
  await output(context, dirname(operand.replace(/\/+$/u, "") || (operand.startsWith("/") ? "/" : ".")) + (parsed.flags.has("z") ? "\0" : "\n"));
65
65
  return { exitCode: 0 };
66
66
  }),
67
- define("printf", async (context) => {
68
- const incoming = getCommandArguments(context);
69
- const arguments_ = incoming.args[0] === "--" ? incoming.slice(1) : incoming;
70
- const args = arguments_.args;
71
- requireOperands(args);
72
- const format = args[0];
73
- if (format.startsWith("-") && incoming.args[0] !== "--")
74
- throw new UsageError(`invalid option '${format}'`);
75
- const rawFormat = typeof arguments_.values[0] === "string" ? undefined : arguments_.bytes(0);
76
- const formatLength = rawFormat?.length ?? format.length;
77
- let argument = 1;
78
- let exitCode = 0;
79
- let stopped = false;
80
- do {
81
- const before = argument;
82
- for (let offset = 0; offset < formatLength && !stopped;) {
83
- if (rawFormat ? rawFormat[offset] !== 37 : format[offset] !== "%") {
84
- const end = rawFormat ? rawFormat.indexOf(37, offset) : format.indexOf("%", offset);
85
- const limit = end < 0 ? formatLength : end;
86
- const literal = rawFormat ? rawFormat.subarray(offset, limit) : format.slice(offset, limit);
87
- const escaped = escapeBytes(literal);
88
- await output(context, escaped.bytes);
89
- stopped = escaped.stop;
90
- offset += literal.length;
91
- continue;
92
- }
93
- if (rawFormat ? rawFormat[offset + 1] === 37 : format[offset + 1] === "%") {
94
- await output(context, "%");
95
- offset += 2;
96
- continue;
97
- }
98
- let tokenEnd = offset + 1;
99
- if (rawFormat)
100
- while (tokenEnd < rawFormat.length && (rawFormat[tokenEnd] >= 48 && rawFormat[tokenEnd] <= 57 || [32, 35, 43, 45, 46].includes(rawFormat[tokenEnd])))
101
- tokenEnd++;
102
- const fragment = rawFormat ? decoder.decode(rawFormat.subarray(offset, tokenEnd + 1)) : format.slice(offset);
103
- const match = /^%([-+ #0]*)(\d+)?(?:\.(\d+))?([sbqcdiouxXfFeEgG])/u.exec(fragment);
104
- if (!match)
105
- throw new UsageError(`invalid format near '${fragment}'`);
106
- offset += match[0].length;
107
- const flags = match[1];
108
- const width = Number(match[2] ?? 0);
109
- const precision = match[3] === undefined ? undefined : Number(match[3]);
110
- if (width > 1_000_000 || (precision ?? 0) > 1000)
111
- throw new UsageError("format width or precision is too large");
112
- const specifier = match[4];
113
- if (/[fFeEgG]/u.test(specifier) && (precision ?? 0) > 100)
114
- throw new UsageError("floating-point precision is too large");
115
- const suppliedIndex = argument++;
116
- const supplied = args[suppliedIndex] ?? "";
117
- let text;
118
- if (specifier === "b" || specifier === "s") {
119
- const suppliedValue = arguments_.values[suppliedIndex] ?? "";
120
- const raw = specifier === "b" && typeof suppliedValue === "string" ? suppliedValue : arguments_.bytes(suppliedIndex) ?? new Uint8Array();
121
- const escaped = specifier === "b" ? escapeBytes(raw, true, true) : { bytes: raw, stop: false };
122
- const bytes = escaped.bytes.subarray(0, precision);
123
- const padding = " ".repeat(Math.max(0, width - bytes.length));
124
- if (!flags.includes("-"))
125
- await output(context, padding);
126
- await output(context, bytes);
127
- if (flags.includes("-"))
128
- await output(context, padding);
129
- stopped = escaped.stop;
130
- continue;
131
- }
132
- if (specifier === "q")
133
- text = supplied === "" ? "''" : supplied.replace(/[^a-zA-Z0-9_./-]/gu, character => character === "\n" ? "$'\\n'" : `\\${character}`);
134
- else if (specifier === "c")
135
- text = supplied ? String.fromCodePoint(supplied.codePointAt(0)) : "\0";
136
- else {
137
- let number = supplied === "" ? 0 : /^["']/u.test(supplied) ? supplied.codePointAt(1) ?? 0 : Number(supplied);
138
- if (/^[+-]0[xX][0-9a-fA-F]+$/u.test(supplied.trim())) {
139
- number = Number(supplied.trim().slice(1)) * (supplied.trim().startsWith("-") ? -1 : 1);
140
- }
141
- if (/^[+-]?0[0-9]+$/u.test(supplied) && !/[fFeEgG]/u.test(specifier)) {
142
- if (/[89]/u.test(supplied))
143
- number = NaN;
144
- else
145
- number = parseInt(supplied.replace(/^[+-]?0/u, ""), 8) * (supplied.startsWith("-") ? -1 : 1);
146
- }
147
- if (!Number.isFinite(number)) {
148
- await writeBytes(context.stderr, encoder.encode(`printf: '${supplied}': invalid number\n`), context.signal);
149
- exitCode = 1;
150
- number = 0;
151
- }
152
- if (/[fF]/u.test(specifier))
153
- text = number.toFixed(precision ?? 6);
154
- else if (/[eE]/u.test(specifier))
155
- text = number.toExponential(precision ?? 6).replace(/e([+-])(\d)$/u, "e$10$2");
156
- else if (/[gG]/u.test(specifier))
157
- text = Number(number.toPrecision(Math.max(1, precision ?? 6))).toString();
67
+ printfCommand,
68
+ ].map(command => ({ ...command, filesystemRequirements: command.name === "pwd" ? pwdRequirements : [] }));
69
+ }
70
+ export async function formatPrintf(context) {
71
+ const incoming = getCommandArguments(context);
72
+ const arguments_ = incoming.args[0] === "--" ? incoming.slice(1) : incoming;
73
+ const args = arguments_.args;
74
+ requireOperands(args);
75
+ const format = args[0];
76
+ if (format.startsWith("-") && incoming.args[0] !== "--")
77
+ throw new UsageError(`invalid option '${format}'`);
78
+ const rawFormat = typeof arguments_.values[0] === "string" ? undefined : arguments_.bytes(0);
79
+ const formatLength = rawFormat?.length ?? format.length;
80
+ let argument = 1;
81
+ let exitCode = 0;
82
+ let stopped = false;
83
+ do {
84
+ const before = argument;
85
+ for (let offset = 0; offset < formatLength && !stopped;) {
86
+ if (rawFormat ? rawFormat[offset] !== 37 : format[offset] !== "%") {
87
+ const end = rawFormat ? rawFormat.indexOf(37, offset) : format.indexOf("%", offset);
88
+ const limit = end < 0 ? formatLength : end;
89
+ const literal = rawFormat ? rawFormat.subarray(offset, limit) : format.slice(offset, limit);
90
+ const escaped = escapeBytes(literal);
91
+ await output(context, escaped.bytes);
92
+ stopped = escaped.stop;
93
+ offset += literal.length;
94
+ continue;
95
+ }
96
+ if (rawFormat ? rawFormat[offset + 1] === 37 : format[offset + 1] === "%") {
97
+ await output(context, "%");
98
+ offset += 2;
99
+ continue;
100
+ }
101
+ let tokenEnd = offset + 1;
102
+ if (rawFormat)
103
+ while (tokenEnd < rawFormat.length && (rawFormat[tokenEnd] >= 48 && rawFormat[tokenEnd] <= 57 || [32, 35, 43, 45, 46].includes(rawFormat[tokenEnd])))
104
+ tokenEnd++;
105
+ const fragment = rawFormat ? decoder.decode(rawFormat.subarray(offset, tokenEnd + 1)) : format.slice(offset);
106
+ const match = /^%([-+ #0]*)(\d+)?(?:\.(\d+))?([sbqcdiouxXfFeEgG])/u.exec(fragment);
107
+ if (!match)
108
+ throw new UsageError(`invalid format near '${fragment}'`);
109
+ offset += match[0].length;
110
+ const flags = match[1];
111
+ const width = Number(match[2] ?? 0);
112
+ const precision = match[3] === undefined ? undefined : Number(match[3]);
113
+ if (width > 1_000_000 || (precision ?? 0) > 1000)
114
+ throw new UsageError("format width or precision is too large");
115
+ const specifier = match[4];
116
+ if (/[fFeEgG]/u.test(specifier) && (precision ?? 0) > 100)
117
+ throw new UsageError("floating-point precision is too large");
118
+ const suppliedIndex = argument++;
119
+ const supplied = args[suppliedIndex] ?? "";
120
+ let text;
121
+ if (specifier === "b" || specifier === "s") {
122
+ const suppliedValue = arguments_.values[suppliedIndex] ?? "";
123
+ const raw = specifier === "b" && typeof suppliedValue === "string" ? suppliedValue : arguments_.bytes(suppliedIndex) ?? new Uint8Array();
124
+ const escaped = specifier === "b" ? escapeBytes(raw, true, true) : { bytes: raw, stop: false };
125
+ const bytes = escaped.bytes.subarray(0, precision);
126
+ const padding = " ".repeat(Math.max(0, width - bytes.length));
127
+ if (!flags.includes("-"))
128
+ await output(context, padding);
129
+ await output(context, bytes);
130
+ if (flags.includes("-"))
131
+ await output(context, padding);
132
+ stopped = escaped.stop;
133
+ continue;
134
+ }
135
+ if (specifier === "q")
136
+ text = supplied === "" ? "''" : supplied.replace(/[^a-zA-Z0-9_./-]/gu, character => character === "\n" ? "$'\\n'" : `\\${character}`);
137
+ else if (specifier === "c")
138
+ text = supplied ? String.fromCodePoint(supplied.codePointAt(0)) : "\0";
139
+ else {
140
+ let number = supplied === "" ? 0 : /^["']/u.test(supplied) ? supplied.codePointAt(1) ?? 0 : Number(supplied);
141
+ if (/^[+-]0[xX][0-9a-fA-F]+$/u.test(supplied.trim())) {
142
+ number = Number(supplied.trim().slice(1)) * (supplied.trim().startsWith("-") ? -1 : 1);
143
+ }
144
+ if (/^[+-]?0[0-9]+$/u.test(supplied) && !/[fFeEgG]/u.test(specifier)) {
145
+ if (/[89]/u.test(supplied))
146
+ number = NaN;
147
+ else
148
+ number = parseInt(supplied.replace(/^[+-]?0/u, ""), 8) * (supplied.startsWith("-") ? -1 : 1);
149
+ }
150
+ if (!Number.isFinite(number)) {
151
+ await writeBytes(context.stderr, encoder.encode(`printf: '${supplied}': invalid number\n`), context.signal);
152
+ exitCode = 1;
153
+ number = 0;
154
+ }
155
+ if (/[fF]/u.test(specifier))
156
+ text = number.toFixed(precision ?? 6);
157
+ else if (/[eE]/u.test(specifier))
158
+ text = number.toExponential(precision ?? 6).replace(/e([+-])(\d)$/u, "e$10$2");
159
+ else if (/[gG]/u.test(specifier))
160
+ text = Number(number.toPrecision(Math.max(1, precision ?? 6))).toString();
161
+ else {
162
+ const radix = /[xX]/u.test(specifier) ? 16 : specifier === "o" ? 8 : 10;
163
+ const unsigned = /[uoxX]/u.test(specifier);
164
+ let integral;
165
+ try {
166
+ const token = supplied.trim();
167
+ if (!token || /^["']/u.test(token))
168
+ integral = BigInt(Math.trunc(number));
158
169
  else {
159
- const radix = /[xX]/u.test(specifier) ? 16 : specifier === "o" ? 8 : 10;
160
- const unsigned = /[uoxX]/u.test(specifier);
161
- let integral;
162
- try {
163
- const token = supplied.trim();
164
- if (!token || /^["']/u.test(token))
165
- integral = BigInt(Math.trunc(number));
166
- else {
167
- const magnitude = token.replace(/^[+-]/u, "");
168
- if (!/^(?:0[xX][0-9a-fA-F]+|0[0-7]*|[1-9][0-9]*)$/u.test(magnitude))
169
- throw new Error("invalid integer");
170
- integral = BigInt(/^0[0-7]+$/u.test(magnitude) ? `0o${magnitude.slice(1)}` : magnitude) * (token.startsWith("-") ? -1n : 1n);
171
- }
172
- }
173
- catch {
174
- integral = 0n;
175
- if (exitCode === 0)
176
- await writeBytes(context.stderr, encoder.encode(`printf: '${supplied}': invalid integer\n`), context.signal);
177
- exitCode = 1;
178
- }
179
- text = (unsigned ? BigInt.asUintN(64, integral) : integral).toString(radix);
180
- if (precision === 0 && integral === 0n)
181
- text = "";
182
- if (precision !== undefined)
183
- text = text.startsWith("-") ? `-${text.slice(1).padStart(precision, "0")}` : text.padStart(precision, "0");
184
- if (flags.includes("#")) {
185
- if (radix === 16 && integral !== 0n)
186
- text = "0x" + text;
187
- else if (radix === 8 && !text.startsWith("0"))
188
- text = "0" + text;
189
- }
170
+ const magnitude = token.replace(/^[+-]/u, "");
171
+ if (!/^(?:0[xX][0-9a-fA-F]+|0[0-7]*|[1-9][0-9]*)$/u.test(magnitude))
172
+ throw new Error("invalid integer");
173
+ integral = BigInt(/^0[0-7]+$/u.test(magnitude) ? `0o${magnitude.slice(1)}` : magnitude) * (token.startsWith("-") ? -1n : 1n);
190
174
  }
191
- if (/[XFEG]/u.test(specifier))
192
- text = text.toUpperCase();
193
- if (number >= 0 && /[difFeEgG]/u.test(specifier))
194
- text = (flags.includes("+") ? "+" : flags.includes(" ") ? " " : "") + text;
195
175
  }
196
- if (flags.includes("-"))
197
- text = text.padEnd(width, " ");
198
- else if (flags.includes("0") && /[diouxXfFeEgG]/u.test(specifier)
199
- && (precision === undefined || /[fFeEgG]/u.test(specifier))) {
200
- const prefix = /^[+ -]|^0[xX]/u.exec(text)?.[0] ?? "";
201
- text = prefix + text.slice(prefix.length).padStart(Math.max(0, width - prefix.length), "0");
176
+ catch {
177
+ integral = 0n;
178
+ if (exitCode === 0)
179
+ await writeBytes(context.stderr, encoder.encode(`printf: '${supplied}': invalid integer\n`), context.signal);
180
+ exitCode = 1;
181
+ }
182
+ text = (unsigned ? BigInt.asUintN(64, integral) : integral).toString(radix);
183
+ if (precision === 0 && integral === 0n)
184
+ text = "";
185
+ if (precision !== undefined)
186
+ text = text.startsWith("-") ? `-${text.slice(1).padStart(precision, "0")}` : text.padStart(precision, "0");
187
+ if (flags.includes("#")) {
188
+ if (radix === 16 && integral !== 0n)
189
+ text = "0x" + text;
190
+ else if (radix === 8 && !text.startsWith("0"))
191
+ text = "0" + text;
202
192
  }
203
- else
204
- text = text.padStart(width, " ");
205
- await output(context, text);
206
193
  }
207
- if (argument === before)
208
- break;
209
- } while (argument < args.length && !stopped);
210
- return { exitCode };
211
- }),
212
- ].map(command => ({ ...command, filesystemRequirements: command.name === "pwd" ? pwdRequirements : [] }));
194
+ if (/[XFEG]/u.test(specifier))
195
+ text = text.toUpperCase();
196
+ if (number >= 0 && /[difFeEgG]/u.test(specifier))
197
+ text = (flags.includes("+") ? "+" : flags.includes(" ") ? " " : "") + text;
198
+ }
199
+ if (flags.includes("-"))
200
+ text = text.padEnd(width, " ");
201
+ else if (flags.includes("0") && /[diouxXfFeEgG]/u.test(specifier)
202
+ && (precision === undefined || /[fFeEgG]/u.test(specifier))) {
203
+ const prefix = /^[+ -]|^0[xX]/u.exec(text)?.[0] ?? "";
204
+ text = prefix + text.slice(prefix.length).padStart(Math.max(0, width - prefix.length), "0");
205
+ }
206
+ else
207
+ text = text.padStart(width, " ");
208
+ await output(context, text);
209
+ }
210
+ if (argument === before)
211
+ break;
212
+ } while (argument < args.length && !stopped);
213
+ return { exitCode };
213
214
  }
215
+ export const printfCommand = define("printf", formatPrintf);
214
216
  //# 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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"}
@@ -1,4 +1,7 @@
1
1
  import { type CommandDefinition, type CommandHandler } from "../contracts/index.js";
2
+ export interface ExecutionCommandsOptions {
3
+ readonly maxParallelProcesses?: number;
4
+ }
2
5
  export declare function directExecutor(fallback: CommandHandler): CommandHandler;
3
- export declare function executionCommands(execute: CommandHandler): CommandDefinition[];
6
+ export declare function executionCommands(execute: CommandHandler, configuration?: ExecutionCommandsOptions): CommandDefinition[];
4
7
  //# sourceMappingURL=execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/commands/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK1J,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAYvE;AAiCD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CA0G9E"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/commands/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK1J,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAYvE;AAiCD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,GAAE,wBAA6B,GAAG,iBAAiB,EAAE,CAqM5H"}
@@ -83,7 +83,11 @@ async function* argumentsFrom(source, signal, delimiter, replacement = false) {
83
83
  if (active)
84
84
  yield current;
85
85
  }
86
- export function executionCommands(execute) {
86
+ export function executionCommands(execute, configuration = {}) {
87
+ const configured = configuration.maxParallelProcesses;
88
+ const maxParallelProcesses = configured === undefined ? 4 : configured;
89
+ if (!Number.isSafeInteger(maxParallelProcesses) || maxParallelProcesses < 1)
90
+ throw new RangeError("maxParallelProcesses must be a positive safe integer");
87
91
  return [
88
92
  define("env", async (context) => {
89
93
  const argumentValues = getCommandArguments(context);
@@ -147,8 +151,8 @@ export function executionCommands(execute) {
147
151
  const argumentValues = getCommandArguments(context);
148
152
  const operandIndices = [];
149
153
  const parsed = options(argumentValues.args, "0rn:s:I:d:tP:xE:", { null: "0", "no-run-if-empty": "r", "max-args": "n", "max-chars": "s", replace: "I", delimiter: "d", verbose: "t", "max-procs": "P", exit: "x", eof: "E" }, true, index => { operandIndices.push(index); });
150
- if (integer(value(parsed, "P") ?? "1") !== 1)
151
- throw new UsageError("only sequential execution (-P 1) is supported");
154
+ const requested = integer(value(parsed, "P") ?? "1");
155
+ const parallelism = requested === 0 ? maxParallelProcesses : Math.min(requested, maxParallelProcesses);
152
156
  const replacement = value(parsed, "I");
153
157
  if (replacement === "")
154
158
  throw new UsageError("replacement string cannot be empty");
@@ -176,7 +180,74 @@ export function executionCommands(execute) {
176
180
  let executed = false;
177
181
  let status = 0;
178
182
  let stop = false;
183
+ let terminal = false;
184
+ let failure;
185
+ let finishing = false;
186
+ let cleanupPromise;
187
+ let inputIterator;
188
+ let inputFinished = false;
189
+ let inputReturn;
190
+ let wake;
191
+ const active = new Set();
192
+ const children = new AbortController();
193
+ const input = new AbortController();
194
+ const inputStopped = new Error("xargs input admission closed");
195
+ const childSignal = AbortSignal.any([context.signal, children.signal]);
196
+ const inputSignal = AbortSignal.any([context.signal, input.signal]);
197
+ const notify = () => { const waiting = wake; wake = undefined; waiting?.(); };
198
+ const stopInput = () => { stop = true; input.abort(inputStopped); notify(); };
199
+ const closeInput = () => {
200
+ inputReturn ??= Promise.resolve().then(() => inputFinished ? { done: true, value: undefined } : inputIterator?.return?.() ?? { done: true, value: undefined });
201
+ return inputReturn;
202
+ };
203
+ const fail = (reason) => {
204
+ failure ??= { reason };
205
+ stopInput();
206
+ children.abort(reason);
207
+ };
208
+ const cancelled = () => { stopInput(); children.abort(context.signal.reason); };
209
+ const cleanup = () => {
210
+ if (!cleanupPromise) {
211
+ stopInput();
212
+ if (!finishing)
213
+ children.abort(inputStopped);
214
+ cleanupPromise = Promise.resolve().then(async () => {
215
+ try {
216
+ const results = await Promise.allSettled([closeInput(), ...active]);
217
+ for (const result of results)
218
+ if (result.status === "rejected")
219
+ throw result.reason;
220
+ }
221
+ finally {
222
+ context.signal.removeEventListener("abort", cancelled);
223
+ }
224
+ });
225
+ }
226
+ return cleanupPromise;
227
+ };
228
+ context.registerCleanup?.(cleanup);
229
+ context.signal.addEventListener("abort", cancelled, { once: true });
230
+ if (context.signal.aborted)
231
+ cancelled();
232
+ const source = { [Symbol.asyncIterator]() {
233
+ inputSignal.throwIfAborted();
234
+ inputIterator = context.stdin[Symbol.asyncIterator]();
235
+ return {
236
+ async next() {
237
+ const result = await inputIterator.next();
238
+ inputFinished = result.done === true;
239
+ return result;
240
+ },
241
+ return: closeInput,
242
+ };
243
+ } };
244
+ const capacity = async () => {
245
+ while (!stop && active.size >= parallelism)
246
+ await new Promise(resolve => { wake = resolve; });
247
+ };
179
248
  const dispatch = async () => {
249
+ if (stop)
250
+ return;
180
251
  const childArguments = initial.withValues(replacement === undefined ? [...initial.values, ...batch] : initial.values.map((argument, index) => replaceArgument(typeof argument === "string" ? argument : initial.bytes(index), replacement, batch[0] ?? "")));
181
252
  const args = childArguments.args;
182
253
  const size = encoder.encode(command).length + 1 + childArguments.values.reduce((sum, argument) => sum + shellValueByteLength(argument) + 1, 0);
@@ -184,45 +255,76 @@ export function executionCommands(execute) {
184
255
  throw new UsageError("expanded arguments exceed command size limit");
185
256
  if (parsed.flags.has("t"))
186
257
  await writeBytes(context.stderr, encoder.encode([command, ...args].map(argument => /^[A-Za-z0-9_./-]+$/u.test(argument) ? argument : `'${argument.replaceAll("'", "'\\''")}'`).join(" ") + "\n"), context.signal);
187
- const result = await execute({ ...context, command, args, argumentValues: childArguments, stdin: emptyInput(), stdinIsDefault: true, env: { ...context.env } });
258
+ if (stop)
259
+ return;
260
+ context.signal.throwIfAborted();
188
261
  executed = true;
189
- if (result.exitCode === 255) {
190
- status = 124;
191
- stop = true;
192
- }
193
- else if (result.exitCode === 126 || result.exitCode === 127) {
194
- status = result.exitCode;
195
- stop = true;
196
- }
197
- else if (result.exitCode !== 0)
198
- status = 123;
199
262
  batch = [];
200
263
  bytes = baseBytes;
264
+ const pending = Promise.resolve().then(() => {
265
+ childSignal.throwIfAborted();
266
+ if (context.invoke)
267
+ return context.invoke(command, args, {
268
+ argumentValues: childArguments, stdin: emptyInput(), stdinIsDefault: true,
269
+ cwd: context.cwd, env: { ...context.env }, stdout: context.stdout, stderr: context.stderr, signal: childSignal,
270
+ });
271
+ return execute({ ...context, command, args, argumentValues: childArguments, stdin: emptyInput(), stdinIsDefault: true, env: { ...context.env }, signal: childSignal });
272
+ }).then(result => {
273
+ const exitCode = result.exitCode;
274
+ if (!terminal && (exitCode === 255 || exitCode === 126 || exitCode === 127)) {
275
+ terminal = true;
276
+ status = exitCode === 255 ? 124 : exitCode;
277
+ stopInput();
278
+ }
279
+ else if (!terminal && exitCode !== 0)
280
+ status = 123;
281
+ }).catch(fail).then(() => { active.delete(pending); notify(); });
282
+ active.add(pending);
201
283
  };
202
284
  const eof = value(parsed, "E");
203
- for await (const argument of argumentsFrom(context.stdin, context.signal, delimiter, replacement !== undefined)) {
204
- if (delimiter === undefined && eof !== undefined && eof !== "" && argument === eof)
205
- break;
206
- const size = encoder.encode(argument).length + 1;
207
- if (replacement === undefined && baseBytes + size > maxBytes)
208
- throw new UsageError("single argument exceeds command size limit");
209
- if (batch.length && (batch.length === maxArgs || bytes + size > maxBytes)) {
210
- if (parsed.flags.has("x") && batch.length < maxArgs)
211
- throw new UsageError("command size limit exceeded");
212
- await dispatch();
213
- if (stop)
285
+ try {
286
+ for await (const argument of argumentsFrom(source, inputSignal, delimiter, replacement !== undefined)) {
287
+ if (stop || delimiter === undefined && eof !== undefined && eof !== "" && argument === eof)
214
288
  break;
289
+ const size = encoder.encode(argument).length + 1;
290
+ if (replacement === undefined && baseBytes + size > maxBytes)
291
+ throw new UsageError("single argument exceeds command size limit");
292
+ if (batch.length && (batch.length === maxArgs || bytes + size > maxBytes)) {
293
+ if (parsed.flags.has("x") && batch.length < maxArgs)
294
+ throw new UsageError("command size limit exceeded");
295
+ await dispatch();
296
+ await capacity();
297
+ if (stop)
298
+ break;
299
+ }
300
+ batch.push(argument);
301
+ bytes += size;
302
+ if (batch.length === maxArgs) {
303
+ await dispatch();
304
+ await capacity();
305
+ if (stop)
306
+ break;
307
+ }
215
308
  }
216
- batch.push(argument);
217
- bytes += size;
218
- if (batch.length === maxArgs) {
309
+ if (!stop && (batch.length || !executed && !parsed.flags.has("r") && replacement === undefined))
219
310
  await dispatch();
220
- if (stop)
221
- break;
311
+ }
312
+ catch (error) {
313
+ if (error !== inputStopped)
314
+ fail(error);
315
+ }
316
+ finally {
317
+ finishing = true;
318
+ try {
319
+ await cleanup();
320
+ }
321
+ catch (error) {
322
+ failure ??= { reason: error };
222
323
  }
223
324
  }
224
- if (!stop && (batch.length || !executed && !parsed.flags.has("r") && replacement === undefined))
225
- await dispatch();
325
+ context.signal.throwIfAborted();
326
+ if (failure)
327
+ throw failure.reason;
226
328
  return { exitCode: status };
227
329
  }),
228
330
  ];