@swiftuijs/twill-shell 0.2.0 → 0.3.1
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/README.md +51 -16
- package/dist/cwd.d.ts.map +1 -1
- package/dist/cwd.js +7 -9
- package/dist/cwd.js.map +1 -1
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +29 -29
- package/dist/environment.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +64 -60
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +222 -166
- package/dist/index.js.map +1 -1
- package/dist/values.d.ts.map +1 -1
- package/dist/values.js +153 -177
- package/dist/values.js.map +1 -1
- package/package.json +9 -10
package/dist/values.js
CHANGED
|
@@ -1,200 +1,176 @@
|
|
|
1
|
-
import { isAbsolute } from
|
|
2
|
-
import { constants } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { constants } from "node:buffer";
|
|
3
|
+
//#region src/values.twill
|
|
4
|
+
var commandBrand = Symbol.for("@swiftuijs/twill-shell/command/v1");
|
|
5
|
+
var environmentBrand = Symbol.for("@swiftuijs/twill-shell/environment/v1");
|
|
6
|
+
var outputBrand = Symbol.for("@swiftuijs/twill-shell/output/v1");
|
|
7
|
+
var inputBrand = Symbol.for("@swiftuijs/twill-shell/input/v1");
|
|
7
8
|
function string(value, label, empty = false) {
|
|
8
|
-
|
|
9
|
-
throw new TypeError(`${label} must be a ${empty ? '' : 'nonempty '}string without NUL`);
|
|
9
|
+
if (typeof value !== "string" || !empty && value.length === 0 || value.includes("\0")) throw new TypeError(`${label} must be a ${empty ? "" : "nonempty "}string without NUL`);
|
|
10
10
|
}
|
|
11
11
|
function command(executable, args) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
arguments: Object.freeze(snapshot),
|
|
21
|
-
});
|
|
12
|
+
if (!Array.isArray(args)) throw new TypeError("arguments must be an array of strings");
|
|
13
|
+
const snapshot = Array.from(args);
|
|
14
|
+
for (const arg of snapshot) string(arg, "argument", true);
|
|
15
|
+
return Object.freeze({
|
|
16
|
+
[commandBrand]: true,
|
|
17
|
+
executable,
|
|
18
|
+
arguments: Object.freeze(snapshot)
|
|
19
|
+
});
|
|
22
20
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return command(executable, args);
|
|
35
|
-
},
|
|
21
|
+
var Command = Object.freeze({
|
|
22
|
+
name(executable, args = []) {
|
|
23
|
+
string(executable, "executable");
|
|
24
|
+
if (/[\\/:]/.test(executable)) throw new TypeError("Command.name requires a name without path separators");
|
|
25
|
+
return command(executable, args);
|
|
26
|
+
},
|
|
27
|
+
path(executable, args = []) {
|
|
28
|
+
string(executable, "executable");
|
|
29
|
+
if (!isAbsolute(executable)) throw new TypeError("Command.path requires an absolute path");
|
|
30
|
+
return command(executable, args);
|
|
31
|
+
}
|
|
36
32
|
});
|
|
37
33
|
function environment(kind, values) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
kind,
|
|
52
|
-
values: Object.freeze(snapshot),
|
|
53
|
-
});
|
|
34
|
+
if (!values || typeof values !== "object" || Array.isArray(values)) throw new TypeError("environment values must be an object");
|
|
35
|
+
const snapshot = Object.create(null);
|
|
36
|
+
for (const [key, value] of Object.entries(values)) {
|
|
37
|
+
string(key, "environment key");
|
|
38
|
+
if (key.includes("=")) throw new TypeError("environment key cannot contain =");
|
|
39
|
+
if (value !== void 0) string(value, "environment value", true);
|
|
40
|
+
snapshot[key] = value;
|
|
41
|
+
}
|
|
42
|
+
return Object.freeze({
|
|
43
|
+
[environmentBrand]: true,
|
|
44
|
+
kind,
|
|
45
|
+
values: Object.freeze(snapshot)
|
|
46
|
+
});
|
|
54
47
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
48
|
+
var Environment = Object.freeze({
|
|
49
|
+
inherit(updates = {}) {
|
|
50
|
+
return environment("inherit", updates);
|
|
51
|
+
},
|
|
52
|
+
replace(values) {
|
|
53
|
+
return environment("replace", values);
|
|
54
|
+
}
|
|
62
55
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
var inheritedOutput = Object.freeze({
|
|
57
|
+
[outputBrand]: true,
|
|
58
|
+
kind: "inherit"
|
|
66
59
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
var discardedOutput = Object.freeze({
|
|
61
|
+
[outputBrand]: true,
|
|
62
|
+
kind: "discard"
|
|
70
63
|
});
|
|
71
64
|
function captureLimit(limit) {
|
|
72
|
-
|
|
73
|
-
throw new TypeError('output limit must be a positive safe byte count within Buffer.MAX_LENGTH');
|
|
65
|
+
if (!Number.isSafeInteger(limit) || limit <= 0 || limit > constants.MAX_LENGTH) throw new TypeError("output limit must be a positive safe byte count within Buffer.MAX_LENGTH");
|
|
74
66
|
}
|
|
75
67
|
function capture(kind, options) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
68
|
+
const limit = options?.limit;
|
|
69
|
+
captureLimit(limit);
|
|
70
|
+
return Object.freeze({
|
|
71
|
+
[outputBrand]: true,
|
|
72
|
+
kind,
|
|
73
|
+
limit
|
|
74
|
+
});
|
|
79
75
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
76
|
+
var Output = Object.freeze({
|
|
77
|
+
inherit() {
|
|
78
|
+
return inheritedOutput;
|
|
79
|
+
},
|
|
80
|
+
discard() {
|
|
81
|
+
return discardedOutput;
|
|
82
|
+
},
|
|
83
|
+
text(options) {
|
|
84
|
+
return capture("text", options);
|
|
85
|
+
},
|
|
86
|
+
bytes(options) {
|
|
87
|
+
return capture("bytes", options);
|
|
88
|
+
}
|
|
93
89
|
});
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
none() {
|
|
98
|
-
return noInput;
|
|
99
|
-
},
|
|
100
|
-
inherit() {
|
|
101
|
-
return inheritedInput;
|
|
102
|
-
},
|
|
90
|
+
var noInput = Object.freeze({
|
|
91
|
+
[inputBrand]: true,
|
|
92
|
+
kind: "none"
|
|
103
93
|
});
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
94
|
+
var inheritedInput = Object.freeze({
|
|
95
|
+
[inputBrand]: true,
|
|
96
|
+
kind: "inherit"
|
|
97
|
+
});
|
|
98
|
+
var Input = Object.freeze({
|
|
99
|
+
none() {
|
|
100
|
+
return noInput;
|
|
101
|
+
},
|
|
102
|
+
inherit() {
|
|
103
|
+
return inheritedInput;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
var optionKeys = /* @__PURE__ */ new Set([
|
|
107
|
+
"cwd",
|
|
108
|
+
"environment",
|
|
109
|
+
"input",
|
|
110
|
+
"output",
|
|
111
|
+
"error",
|
|
112
|
+
"check",
|
|
113
|
+
"signal",
|
|
114
|
+
"timeoutMs",
|
|
115
|
+
"gracePeriodMs",
|
|
116
|
+
"killTimeoutMs"
|
|
115
117
|
]);
|
|
116
118
|
function duration(value, label, minimum) {
|
|
117
|
-
|
|
118
|
-
throw new TypeError(`${label} must be an integer between ${minimum} and 2147483647`);
|
|
119
|
+
if (!Number.isInteger(value) || value < minimum || value > 2147483647) throw new TypeError(`${label} must be an integer between ${minimum} and 2147483647`);
|
|
119
120
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
throw new TypeError('signal must be an AbortSignal');
|
|
149
|
-
if (timeoutMs !== undefined)
|
|
150
|
-
duration(timeoutMs, 'timeoutMs', 1);
|
|
151
|
-
duration(gracePeriodMs, 'gracePeriodMs', 0);
|
|
152
|
-
duration(killTimeoutMs, 'killTimeoutMs', 1);
|
|
153
|
-
return {
|
|
154
|
-
cwd,
|
|
155
|
-
environment: env,
|
|
156
|
-
input,
|
|
157
|
-
output,
|
|
158
|
-
error,
|
|
159
|
-
check,
|
|
160
|
-
signal,
|
|
161
|
-
timeoutMs,
|
|
162
|
-
gracePeriodMs,
|
|
163
|
-
killTimeoutMs,
|
|
164
|
-
};
|
|
121
|
+
function settings(cmd, options) {
|
|
122
|
+
if (!cmd || cmd[commandBrand] !== true) throw new TypeError("Use Command.name or Command.path");
|
|
123
|
+
if (!options || typeof options !== "object" || Array.isArray(options)) throw new TypeError("run options must be an object");
|
|
124
|
+
for (const key of Object.keys(options)) if (!optionKeys.has(key)) throw new TypeError(`Unknown run option: ${key}`);
|
|
125
|
+
const { cwd, environment: env, input = noInput, output = inheritedOutput, error = inheritedOutput, check = true, signal, timeoutMs, gracePeriodMs = 250, killTimeoutMs = 1e3 } = options;
|
|
126
|
+
if (cwd !== void 0) string(cwd, "cwd");
|
|
127
|
+
if (env !== void 0 && (!env || env[environmentBrand] !== true)) throw new TypeError("Use Environment.inherit or Environment.replace");
|
|
128
|
+
if (!output || output[outputBrand] !== true || !error || error[outputBrand] !== true) throw new TypeError("Use Output policies");
|
|
129
|
+
for (const policy of [output, error]) if (policy.kind === "text" || policy.kind === "bytes") captureLimit(policy.limit);
|
|
130
|
+
else if (policy.kind !== "inherit" && policy.kind !== "discard") throw new TypeError("Unknown output policy");
|
|
131
|
+
if (typeof input !== "string" && !(input instanceof Uint8Array) && (!input || input[inputBrand] !== true)) throw new TypeError("input must be a string, Uint8Array or Input policy");
|
|
132
|
+
if (typeof check !== "boolean") throw new TypeError("check must be a boolean");
|
|
133
|
+
if (signal !== void 0 && !(signal instanceof AbortSignal)) throw new TypeError("signal must be an AbortSignal");
|
|
134
|
+
if (timeoutMs !== void 0) duration(timeoutMs, "timeoutMs", 1);
|
|
135
|
+
duration(gracePeriodMs, "gracePeriodMs", 0);
|
|
136
|
+
duration(killTimeoutMs, "killTimeoutMs", 1);
|
|
137
|
+
return {
|
|
138
|
+
cwd,
|
|
139
|
+
environment: env,
|
|
140
|
+
input,
|
|
141
|
+
output,
|
|
142
|
+
error,
|
|
143
|
+
check,
|
|
144
|
+
signal,
|
|
145
|
+
timeoutMs,
|
|
146
|
+
gracePeriodMs,
|
|
147
|
+
killTimeoutMs
|
|
148
|
+
};
|
|
165
149
|
}
|
|
166
150
|
/** Internal helper; parameter permits testing Windows key behavior on other hosts. */
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
for (const [key, value] of Object.entries(policy.values)) {
|
|
192
|
-
if (value === undefined)
|
|
193
|
-
delete env[key];
|
|
194
|
-
else
|
|
195
|
-
env[key] = value;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return env;
|
|
151
|
+
function childEnvironment(policy, platform = process.platform) {
|
|
152
|
+
if (policy === void 0) return void 0;
|
|
153
|
+
const env = Object.assign(Object.create(null), policy.kind === "inherit" ? process.env : void 0);
|
|
154
|
+
if (platform === "win32") {
|
|
155
|
+
const keys = /* @__PURE__ */ new Map();
|
|
156
|
+
for (const key of Object.keys(env)) {
|
|
157
|
+
const normalized = key.toUpperCase();
|
|
158
|
+
const previous = keys.get(normalized);
|
|
159
|
+
if (previous !== void 0) delete env[previous];
|
|
160
|
+
keys.set(normalized, key);
|
|
161
|
+
}
|
|
162
|
+
for (const [key, value] of Object.entries(policy.values)) {
|
|
163
|
+
const normalized = key.toUpperCase();
|
|
164
|
+
const previous = keys.get(normalized);
|
|
165
|
+
if (previous !== void 0) delete env[previous];
|
|
166
|
+
keys.set(normalized, key);
|
|
167
|
+
if (value !== void 0) env[key] = value;
|
|
168
|
+
}
|
|
169
|
+
} else for (const [key, value] of Object.entries(policy.values)) if (value === void 0) delete env[key];
|
|
170
|
+
else env[key] = value;
|
|
171
|
+
return env;
|
|
199
172
|
}
|
|
173
|
+
//#endregion
|
|
174
|
+
export { Command, Environment, Input, Output, childEnvironment, settings };
|
|
175
|
+
|
|
200
176
|
//# sourceMappingURL=values.js.map
|
package/dist/values.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.js","
|
|
1
|
+
{"version":3,"file":"values.js","names":[],"sources":["../src/values.twill"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swiftuijs/twill-shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Swift-inspired subprocess toolkit for Twill and native Node scripts: explicit arguments, bounded output and owned teardown.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,9 +37,10 @@
|
|
|
37
37
|
"vitest": "^5.0.3",
|
|
38
38
|
"@vitest/coverage-v8": "^5.0.3",
|
|
39
39
|
"prettier": "^3.9.9",
|
|
40
|
-
"
|
|
41
|
-
"@swiftuijs/twill-formatter": "0.
|
|
42
|
-
"@swiftuijs/twill
|
|
40
|
+
"vite": "^8.3.2",
|
|
41
|
+
"@swiftuijs/twill-formatter": "0.3.1",
|
|
42
|
+
"@swiftuijs/twill": "0.3.1",
|
|
43
|
+
"@swiftuijs/twill-export": "0.3.1"
|
|
43
44
|
},
|
|
44
45
|
"author": {
|
|
45
46
|
"name": "forth.ink",
|
|
@@ -62,15 +63,13 @@
|
|
|
62
63
|
"optional": true
|
|
63
64
|
}
|
|
64
65
|
},
|
|
65
|
-
"dependencies": {
|
|
66
|
-
"@swiftuijs/twill-shell-native": "0.2.0"
|
|
67
|
-
},
|
|
68
66
|
"scripts": {
|
|
69
|
-
"build": "
|
|
70
|
-
"typecheck": "
|
|
67
|
+
"build": "vite build && twill declarations -p tsconfig.build.json -o dist && node scripts/compact-maps.mjs",
|
|
68
|
+
"typecheck": "twill check -p tsconfig.json",
|
|
71
69
|
"test:unit": "vitest run",
|
|
72
70
|
"test:coverage": "vitest run --coverage",
|
|
73
71
|
"test:package": "node tests/consumer.mjs",
|
|
74
|
-
"benchmark": "node benchmarks/run.mjs"
|
|
72
|
+
"benchmark": "node benchmarks/run.mjs",
|
|
73
|
+
"benchmark:complete": "node benchmarks/complete.mjs"
|
|
75
74
|
}
|
|
76
75
|
}
|