@poe-platform/safe-bash 0.1.628 → 0.1.630
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 +1 -2
- package/dist/safe-bash/chunks/chunk-3BZ5NQ73.js +3952 -0
- package/dist/safe-bash/chunks/chunk-3BZ5NQ73.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-KYNRHYHP.js → chunk-6YSBXTTJ.js} +5 -5
- package/dist/safe-bash/chunks/{chunk-HHJSJWUD.js → chunk-K7W6Q6FN.js} +4 -4
- package/dist/safe-bash/chunks/{chunk-WPEMUXV4.js → chunk-KQ6J7JHQ.js} +4 -4
- package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip.js +18 -17
- package/dist/safe-bash/commands/archive/zip.js.map +1 -1
- package/dist/safe-bash/commands/llm/index.browser.js +2 -2
- package/dist/safe-bash/commands/network/index.browser.js +2 -2
- package/dist/safe-bash/commands/node/browser.d.ts +2 -0
- package/dist/safe-bash/commands/node/browser.d.ts.map +1 -0
- package/dist/safe-bash/commands/node/browser.js +2 -0
- package/dist/safe-bash/commands/node/browser.js.map +1 -0
- package/dist/safe-bash/commands/node/index.browser.js +16 -0
- package/dist/safe-bash/commands/node/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/node/safejs.d.ts +6 -0
- package/dist/safe-bash/commands/node/safejs.d.ts.map +1 -1
- package/dist/safe-bash/commands/node/safejs.js +25 -1
- package/dist/safe-bash/commands/node/safejs.js.map +1 -1
- package/dist/safe-bash/commands/safejs/index.d.ts +5 -17
- package/dist/safe-bash/commands/safejs/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/safejs/index.js +3 -202
- package/dist/safe-bash/commands/safejs/index.js.map +1 -1
- package/dist/safe-bash/commands/safejs/runtime.d.ts +15 -0
- package/dist/safe-bash/commands/safejs/runtime.d.ts.map +1 -0
- package/dist/safe-bash/commands/safejs/runtime.js +190 -0
- package/dist/safe-bash/commands/safejs/runtime.js.map +1 -0
- package/dist/safe-bash/commands/yq/index.browser.js +2 -2
- package/dist/safe-bash/core.browser.js +515 -4364
- package/dist/safe-bash/core.browser.js.map +4 -4
- package/dist/safe-bash/core.d.ts +1 -0
- package/dist/safe-bash/core.d.ts.map +1 -1
- package/dist/safe-bash/core.js +1 -0
- package/dist/safe-bash/core.js.map +1 -1
- package/dist/safe-bash/index.d.ts +1 -0
- package/dist/safe-bash/index.d.ts.map +1 -1
- package/dist/safe-bash/index.js +1 -0
- package/dist/safe-bash/index.js.map +1 -1
- package/package.json +9 -3
- /package/dist/safe-bash/chunks/{chunk-KYNRHYHP.js.map → chunk-6YSBXTTJ.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-HHJSJWUD.js.map → chunk-K7W6Q6FN.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-WPEMUXV4.js.map → chunk-KQ6J7JHQ.js.map} +0 -0
|
@@ -1,203 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { makeSafeJsFsModule } from "../../integrations/safejs/index.js";
|
|
5
|
-
import { record, withSignal } from "../../integrations/safejs/values.js";
|
|
6
|
-
import { pathOf, UsageError } from "../internal.js";
|
|
7
|
-
import { GuestInput, GuestOutput } from "./io.js";
|
|
8
|
-
import { commandLimits, defaultSafeJsLimits, invocation } from "./options.js";
|
|
9
|
-
import { SafeJsCommandLimitError } from "./types.js";
|
|
10
|
-
export { defaultSafeJsLimits, SafeJsCommandLimitError };
|
|
11
|
-
const help = "Usage: safejs [-p|--print] [-e SOURCE [--] ARG... | FILE ARG... | - ARG...]\nNo source operand reads SafeJS source from stdin. Inline/file source leaves stdin for guest data.\n-p prints the returned string or JSON value followed by LF; this is not Node.js.\nGuest modules: fs, stdio, command. A host-injected SafeJS runtime is required.\n";
|
|
12
|
-
class GuestDiagnostic extends PublicDiagnostic {
|
|
13
|
-
info;
|
|
14
|
-
constructor(info) {
|
|
15
|
-
super(info.message);
|
|
16
|
-
this.info = info;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function errorInfo(error) {
|
|
20
|
-
if (typeof error === "string")
|
|
21
|
-
return { name: "Error", code: "", message: error };
|
|
22
|
-
if (typeof error !== "object" || error === null)
|
|
23
|
-
return { name: "Error", code: "", message: "SafeJS execution failed" };
|
|
24
|
-
const field = (name) => {
|
|
25
|
-
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
26
|
-
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
27
|
-
};
|
|
28
|
-
return { name: field("name"), code: field("code"), message: field("message") || "SafeJS execution failed" };
|
|
29
|
-
}
|
|
30
|
-
function statusField(error, name) {
|
|
31
|
-
if (typeof error !== "object" || error === null)
|
|
32
|
-
return "";
|
|
33
|
-
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
34
|
-
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
35
|
-
}
|
|
36
|
-
function validateRuntime(runtime) {
|
|
37
|
-
if (runtime === undefined)
|
|
38
|
-
return;
|
|
39
|
-
for (const key of ["run", "createBudget", "makeFsModule", "declareHostOperation"]) {
|
|
40
|
-
if (typeof runtime[key] !== "function")
|
|
41
|
-
throw new TypeError(`SafeJS runtime.${key} must be injected`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
export function createSafeJsCommands(options = {}, dialect = {
|
|
45
|
-
name: "safejs", description: "Execute an injected SafeJS interpreter against the virtual filesystem", help, invocation,
|
|
46
|
-
}) {
|
|
47
|
-
const limits = commandLimits(options.limits);
|
|
48
|
-
const runtime = options.runtime;
|
|
49
|
-
validateRuntime(runtime);
|
|
50
|
-
return [{ name: dialect.name, description: dialect.description, async execute(context) {
|
|
51
|
-
const deadline = Date.now() + limits.timeoutMs;
|
|
52
|
-
const diagnose = async (message) => {
|
|
53
|
-
const diagnostic = new AbortController();
|
|
54
|
-
const timer = setTimeout(() => diagnostic.abort(), Math.max(1, Math.min(limits.timeoutMs, deadline - Date.now())));
|
|
55
|
-
try {
|
|
56
|
-
await writeDiagnostic(context.stderr, `${dialect.name}: ${message.slice(0, 4096)}\n`, AbortSignal.any([context.signal, diagnostic.signal]));
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
context.signal.throwIfAborted();
|
|
60
|
-
if (!diagnostic.signal.aborted)
|
|
61
|
-
throw error;
|
|
62
|
-
}
|
|
63
|
-
finally {
|
|
64
|
-
clearTimeout(timer);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
let parsed;
|
|
68
|
-
try {
|
|
69
|
-
parsed = dialect.invocation(context.args);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
await diagnose(publicDiagnosticMessage(error, context.onInternalError));
|
|
73
|
-
return { exitCode: 2 };
|
|
74
|
-
}
|
|
75
|
-
context.signal.throwIfAborted();
|
|
76
|
-
if (parsed.help) {
|
|
77
|
-
await writeBytes(context.stdout, Buffer.from(dialect.help), context.signal);
|
|
78
|
-
return { exitCode: 0 };
|
|
79
|
-
}
|
|
80
|
-
if (!runtime) {
|
|
81
|
-
await diagnose("runtime not installed; inject run, createBudget, makeFsModule and declareHostOperation");
|
|
82
|
-
return { exitCode: 127 };
|
|
83
|
-
}
|
|
84
|
-
const controller = new AbortController();
|
|
85
|
-
const signal = AbortSignal.any([context.signal, controller.signal]);
|
|
86
|
-
let failure;
|
|
87
|
-
let hasFailure = false;
|
|
88
|
-
const fail = (error) => {
|
|
89
|
-
if (!hasFailure && !controller.signal.aborted) {
|
|
90
|
-
hasFailure = true;
|
|
91
|
-
failure = error;
|
|
92
|
-
queueMicrotask(() => controller.abort(error));
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
const timeout = setTimeout(() => fail(new SafeJsCommandLimitError("timeoutMs")), limits.timeoutMs);
|
|
96
|
-
let input;
|
|
97
|
-
const output = new GuestOutput(context.stdout, context.stderr, limits.maxOutputBytes, signal, fail);
|
|
98
|
-
let exitCode = 0;
|
|
99
|
-
let thrown;
|
|
100
|
-
let failed = false;
|
|
101
|
-
try {
|
|
102
|
-
const fromStdin = parsed.source === undefined && parsed.file === "-";
|
|
103
|
-
let source = parsed.source;
|
|
104
|
-
let filename = parsed.file;
|
|
105
|
-
if (source === undefined) {
|
|
106
|
-
if (!fromStdin)
|
|
107
|
-
filename = pathOf(context, parsed.file);
|
|
108
|
-
const capabilities = fromStdin ? undefined : await withSignal(signal, async () => await context.fs.capabilitiesFor?.(filename, { signal }) ?? context.fs.capabilities);
|
|
109
|
-
const bytes = fromStdin ? context.stdin : context.fs.readStream && capabilities?.streamingRead !== false
|
|
110
|
-
? context.fs.readStream(filename, { signal, chunkSize: 65536 })
|
|
111
|
-
: toByteSource(await withSignal(signal, () => context.fs.readFile(filename, { signal, maxBytes: limits.maxSourceBytes })));
|
|
112
|
-
const reader = new GuestInput(bytes, limits.maxSourceBytes, signal, fail, "maxSourceBytes");
|
|
113
|
-
try {
|
|
114
|
-
source = await reader.readText();
|
|
115
|
-
}
|
|
116
|
-
finally {
|
|
117
|
-
await reader.close();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else if (Buffer.byteLength(source) > limits.maxSourceBytes)
|
|
121
|
-
throw new SafeJsCommandLimitError("maxSourceBytes");
|
|
122
|
-
if (source.startsWith("\uFEFF"))
|
|
123
|
-
source = source.slice(1);
|
|
124
|
-
input = new GuestInput(fromStdin ? toByteSource("") : context.stdin, limits.maxInputBytes, signal, fail);
|
|
125
|
-
const guestInput = input;
|
|
126
|
-
const declare = runtime.declareHostOperation;
|
|
127
|
-
const stdio = {
|
|
128
|
-
readBytes: declare(async (size) => guestInput.readBytes(size), "read-side-effect"),
|
|
129
|
-
readText: declare(async () => guestInput.readText(), "read-side-effect"),
|
|
130
|
-
write: declare(async (text) => output.text(text), "read-side-effect"),
|
|
131
|
-
writeBytes: declare(async (bytes) => output.bytes(bytes), "read-side-effect"),
|
|
132
|
-
error: declare(async (text) => output.text(text, true), "read-side-effect"),
|
|
133
|
-
errorBytes: declare(async (bytes) => output.bytes(bytes, true), "read-side-effect"),
|
|
134
|
-
};
|
|
135
|
-
const env = Object.create(null);
|
|
136
|
-
for (const [key, value] of Object.entries(context.env))
|
|
137
|
-
env[key] = value;
|
|
138
|
-
const command = {
|
|
139
|
-
args: [...parsed.args], cwd: context.cwd, env,
|
|
140
|
-
setExitCode: declare((value) => {
|
|
141
|
-
signal.throwIfAborted();
|
|
142
|
-
if (typeof value !== "number" || !Number.isInteger(value) || value < 0 || value > 255)
|
|
143
|
-
throw new TypeError("exit code must be an integer from 0 through 255");
|
|
144
|
-
exitCode = value;
|
|
145
|
-
}, "read-side-effect"),
|
|
146
|
-
};
|
|
147
|
-
const budget = runtime.createBudget({ maxSteps: limits.maxSteps, deadline,
|
|
148
|
-
maxCallDepth: limits.maxCallDepth, stringLength: limits.stringLength, arrayLength: limits.arrayLength, dataSize: limits.dataSize });
|
|
149
|
-
const modules = { fs: makeSafeJsFsModule(runtime.makeFsModule, context.fs, { cwd: context.cwd, signal }), stdio, command };
|
|
150
|
-
const prepared = dialect.prepare?.(source, { ...parsed, file: filename }, modules);
|
|
151
|
-
const result = record(await withSignal(signal, () => runtime.run(prepared?.source ?? source, {
|
|
152
|
-
budget, filename, modules, signal, ...(prepared ? { bindings: prepared.bindings } : {}),
|
|
153
|
-
sink: { log: (...args) => output.console(args, false), error: (...args) => output.console(args, true) },
|
|
154
|
-
})), "SafeJS run result");
|
|
155
|
-
signal.throwIfAborted();
|
|
156
|
-
if (result.ok !== true && result.ok !== false)
|
|
157
|
-
throw new TypeError("Invalid SafeJS run result.ok");
|
|
158
|
-
if (!result.ok) {
|
|
159
|
-
const info = errorInfo(result.error);
|
|
160
|
-
throw new GuestDiagnostic(info);
|
|
161
|
-
}
|
|
162
|
-
if (parsed.print && result.returnValue !== undefined)
|
|
163
|
-
await output.result(result.returnValue);
|
|
164
|
-
await output.drain();
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
thrown = hasFailure ? failure : error;
|
|
168
|
-
failed = true;
|
|
169
|
-
}
|
|
170
|
-
finally {
|
|
171
|
-
try {
|
|
172
|
-
await output.drain();
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
thrown = hasFailure ? failure : error;
|
|
176
|
-
failed = true;
|
|
177
|
-
}
|
|
178
|
-
controller.abort();
|
|
179
|
-
clearTimeout(timeout);
|
|
180
|
-
await input?.close().catch(() => { });
|
|
181
|
-
}
|
|
182
|
-
context.signal.throwIfAborted();
|
|
183
|
-
if (failed) {
|
|
184
|
-
const info = thrown instanceof GuestDiagnostic ? thrown.info : { name: statusField(thrown, "name"), code: statusField(thrown, "code") };
|
|
185
|
-
const detail = thrown instanceof SafeJsCommandLimitError ? thrown.message : publicDiagnosticMessage(thrown, context.onInternalError);
|
|
186
|
-
if (!output.stderrFailed)
|
|
187
|
-
await diagnose(detail);
|
|
188
|
-
return { exitCode: thrown instanceof SafeJsCommandLimitError || info.code === "budgetExceeded" ? 124
|
|
189
|
-
: thrown instanceof UsageError || info.name === "ParseError" ? 2 : 1 };
|
|
190
|
-
}
|
|
191
|
-
return { exitCode };
|
|
192
|
-
} }];
|
|
193
|
-
}
|
|
194
|
-
export function safeJsCommands(options = {}) {
|
|
195
|
-
const definitions = createSafeJsCommands(options);
|
|
196
|
-
return { name: "safejs-commands", setup(host) {
|
|
197
|
-
if (!options.replace && host.commands.has("safejs"))
|
|
198
|
-
throw new Error("Command already registered: safejs");
|
|
199
|
-
for (const definition of definitions)
|
|
200
|
-
host.commands.register(definition, { replace: options.replace ?? false });
|
|
201
|
-
} };
|
|
202
|
-
}
|
|
1
|
+
export { createNodeCommands as createSafeJsCommands, nodeCommands as safeJsCommands } from "../node/browser.js";
|
|
2
|
+
export { defaultSafeJsLimits } from "./options.js";
|
|
3
|
+
export { SafeJsCommandLimitError } from "./types.js";
|
|
203
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/safejs/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/safejs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,oBAAoB,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEhH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CommandDefinition } from "../../contracts/index.js";
|
|
2
|
+
import { type Invocation } from "./options.js";
|
|
3
|
+
import { type SafeJsCommandsOptions, type SafeJsModule } from "./types.js";
|
|
4
|
+
export interface SafeJsCommandDialect {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly description: string;
|
|
7
|
+
readonly help: string;
|
|
8
|
+
readonly invocation: (args: readonly string[]) => Invocation;
|
|
9
|
+
readonly prepare?: (source: string, selected: Invocation, modules: Record<string, SafeJsModule>) => {
|
|
10
|
+
readonly source: string;
|
|
11
|
+
readonly bindings: SafeJsModule;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function createSafeJsCommands<Budget = unknown>(options: SafeJsCommandsOptions<Budget>, dialect: SafeJsCommandDialect): readonly CommandDefinition[];
|
|
15
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/commands/safejs/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAM5F,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAA2B,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAsB,MAAM,YAAY,CAAC;AAExH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,UAAU,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK;QAClG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KACjC,CAAC;CACH;AA6BD,wBAAgB,oBAAoB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,oBAAoB,GAAG,SAAS,iBAAiB,EAAE,CAyG1J"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { PublicDiagnostic, publicDiagnosticMessage } from "../../diagnostics.js";
|
|
2
|
+
import { toByteSource, writeBytes } from "../../contracts/index.js";
|
|
3
|
+
import { writeDiagnostic } from "../../escaping.js";
|
|
4
|
+
import { makeSafeJsFsModule } from "../../integrations/safejs/index.js";
|
|
5
|
+
import { record, withSignal } from "../../integrations/safejs/values.js";
|
|
6
|
+
import { pathOf, UsageError } from "../internal.js";
|
|
7
|
+
import { GuestInput, GuestOutput } from "./io.js";
|
|
8
|
+
import { commandLimits } from "./options.js";
|
|
9
|
+
import { SafeJsCommandLimitError } from "./types.js";
|
|
10
|
+
class GuestDiagnostic extends PublicDiagnostic {
|
|
11
|
+
info;
|
|
12
|
+
constructor(info) {
|
|
13
|
+
super(info.message);
|
|
14
|
+
this.info = info;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function errorInfo(error) {
|
|
18
|
+
if (typeof error === "string")
|
|
19
|
+
return { name: "Error", code: "", message: error };
|
|
20
|
+
if (typeof error !== "object" || error === null)
|
|
21
|
+
return { name: "Error", code: "", message: "SafeJS execution failed" };
|
|
22
|
+
const field = (name) => {
|
|
23
|
+
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
24
|
+
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
25
|
+
};
|
|
26
|
+
return { name: field("name"), code: field("code"), message: field("message") || "SafeJS execution failed" };
|
|
27
|
+
}
|
|
28
|
+
function statusField(error, name) {
|
|
29
|
+
if (typeof error !== "object" || error === null)
|
|
30
|
+
return "";
|
|
31
|
+
const descriptor = Object.getOwnPropertyDescriptor(error, name);
|
|
32
|
+
return descriptor && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : "";
|
|
33
|
+
}
|
|
34
|
+
function validateRuntime(runtime) {
|
|
35
|
+
if (runtime === undefined)
|
|
36
|
+
return;
|
|
37
|
+
for (const key of ["run", "createBudget", "makeFsModule", "declareHostOperation"]) {
|
|
38
|
+
if (typeof runtime[key] !== "function")
|
|
39
|
+
throw new TypeError(`SafeJS runtime.${key} must be injected`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function createSafeJsCommands(options, dialect) {
|
|
43
|
+
const limits = commandLimits(options.limits);
|
|
44
|
+
const runtime = options.runtime;
|
|
45
|
+
validateRuntime(runtime);
|
|
46
|
+
return [{ name: dialect.name, description: dialect.description, async execute(context) {
|
|
47
|
+
const deadline = Date.now() + limits.timeoutMs;
|
|
48
|
+
const diagnose = async (message) => {
|
|
49
|
+
const diagnostic = new AbortController();
|
|
50
|
+
const timer = setTimeout(() => diagnostic.abort(), Math.max(1, Math.min(limits.timeoutMs, deadline - Date.now())));
|
|
51
|
+
try {
|
|
52
|
+
await writeDiagnostic(context.stderr, `${dialect.name}: ${message.slice(0, 4096)}\n`, AbortSignal.any([context.signal, diagnostic.signal]));
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
context.signal.throwIfAborted();
|
|
56
|
+
if (!diagnostic.signal.aborted)
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
clearTimeout(timer);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
let parsed;
|
|
64
|
+
try {
|
|
65
|
+
parsed = dialect.invocation(context.args);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
await diagnose(publicDiagnosticMessage(error, context.onInternalError));
|
|
69
|
+
return { exitCode: 2 };
|
|
70
|
+
}
|
|
71
|
+
context.signal.throwIfAborted();
|
|
72
|
+
if (parsed.help) {
|
|
73
|
+
await writeBytes(context.stdout, Buffer.from(dialect.help), context.signal);
|
|
74
|
+
return { exitCode: 0 };
|
|
75
|
+
}
|
|
76
|
+
if (!runtime) {
|
|
77
|
+
await diagnose("runtime not installed; inject run, createBudget, makeFsModule and declareHostOperation");
|
|
78
|
+
return { exitCode: 127 };
|
|
79
|
+
}
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
const signal = AbortSignal.any([context.signal, controller.signal]);
|
|
82
|
+
let failure;
|
|
83
|
+
let hasFailure = false;
|
|
84
|
+
const fail = (error) => {
|
|
85
|
+
if (!hasFailure && !controller.signal.aborted) {
|
|
86
|
+
hasFailure = true;
|
|
87
|
+
failure = error;
|
|
88
|
+
queueMicrotask(() => controller.abort(error));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const timeout = setTimeout(() => fail(new SafeJsCommandLimitError("timeoutMs")), limits.timeoutMs);
|
|
92
|
+
let input;
|
|
93
|
+
const output = new GuestOutput(context.stdout, context.stderr, limits.maxOutputBytes, signal, fail);
|
|
94
|
+
let exitCode = 0;
|
|
95
|
+
let thrown;
|
|
96
|
+
let failed = false;
|
|
97
|
+
try {
|
|
98
|
+
const fromStdin = parsed.source === undefined && parsed.file === "-";
|
|
99
|
+
let source = parsed.source;
|
|
100
|
+
let filename = parsed.file;
|
|
101
|
+
if (source === undefined) {
|
|
102
|
+
if (!fromStdin)
|
|
103
|
+
filename = pathOf(context, parsed.file);
|
|
104
|
+
const capabilities = fromStdin ? undefined : await withSignal(signal, async () => await context.fs.capabilitiesFor?.(filename, { signal }) ?? context.fs.capabilities);
|
|
105
|
+
const bytes = fromStdin ? context.stdin : context.fs.readStream && capabilities?.streamingRead !== false
|
|
106
|
+
? context.fs.readStream(filename, { signal, chunkSize: 65536 })
|
|
107
|
+
: toByteSource(await withSignal(signal, () => context.fs.readFile(filename, { signal, maxBytes: limits.maxSourceBytes })));
|
|
108
|
+
const reader = new GuestInput(bytes, limits.maxSourceBytes, signal, fail, "maxSourceBytes");
|
|
109
|
+
try {
|
|
110
|
+
source = await reader.readText();
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
await reader.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else if (Buffer.byteLength(source) > limits.maxSourceBytes)
|
|
117
|
+
throw new SafeJsCommandLimitError("maxSourceBytes");
|
|
118
|
+
if (source.startsWith("\uFEFF"))
|
|
119
|
+
source = source.slice(1);
|
|
120
|
+
input = new GuestInput(fromStdin ? toByteSource("") : context.stdin, limits.maxInputBytes, signal, fail);
|
|
121
|
+
const guestInput = input;
|
|
122
|
+
const declare = runtime.declareHostOperation;
|
|
123
|
+
const stdio = {
|
|
124
|
+
readBytes: declare(async (size) => guestInput.readBytes(size), "read-side-effect"),
|
|
125
|
+
readText: declare(async () => guestInput.readText(), "read-side-effect"),
|
|
126
|
+
write: declare(async (text) => output.text(text), "read-side-effect"),
|
|
127
|
+
writeBytes: declare(async (bytes) => output.bytes(bytes), "read-side-effect"),
|
|
128
|
+
error: declare(async (text) => output.text(text, true), "read-side-effect"),
|
|
129
|
+
errorBytes: declare(async (bytes) => output.bytes(bytes, true), "read-side-effect"),
|
|
130
|
+
};
|
|
131
|
+
const env = Object.create(null);
|
|
132
|
+
for (const [key, value] of Object.entries(context.env))
|
|
133
|
+
env[key] = value;
|
|
134
|
+
const command = {
|
|
135
|
+
args: [...parsed.args], cwd: context.cwd, env,
|
|
136
|
+
setExitCode: declare((value) => {
|
|
137
|
+
signal.throwIfAborted();
|
|
138
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < 0 || value > 255)
|
|
139
|
+
throw new TypeError("exit code must be an integer from 0 through 255");
|
|
140
|
+
exitCode = value;
|
|
141
|
+
}, "read-side-effect"),
|
|
142
|
+
};
|
|
143
|
+
const budget = runtime.createBudget({ maxSteps: limits.maxSteps, deadline,
|
|
144
|
+
maxCallDepth: limits.maxCallDepth, stringLength: limits.stringLength, arrayLength: limits.arrayLength, dataSize: limits.dataSize });
|
|
145
|
+
const modules = { fs: makeSafeJsFsModule(runtime.makeFsModule, context.fs, { cwd: context.cwd, signal }), stdio, command };
|
|
146
|
+
const prepared = dialect.prepare?.(source, { ...parsed, file: filename }, modules);
|
|
147
|
+
const result = record(await withSignal(signal, () => runtime.run(prepared?.source ?? source, {
|
|
148
|
+
budget, filename, modules, signal, ...(prepared ? { bindings: prepared.bindings } : {}),
|
|
149
|
+
sink: { log: (...args) => output.console(args, false), error: (...args) => output.console(args, true) },
|
|
150
|
+
})), "SafeJS run result");
|
|
151
|
+
signal.throwIfAborted();
|
|
152
|
+
if (result.ok !== true && result.ok !== false)
|
|
153
|
+
throw new TypeError("Invalid SafeJS run result.ok");
|
|
154
|
+
if (!result.ok) {
|
|
155
|
+
const info = errorInfo(result.error);
|
|
156
|
+
throw new GuestDiagnostic(info);
|
|
157
|
+
}
|
|
158
|
+
if (parsed.print && result.returnValue !== undefined)
|
|
159
|
+
await output.result(result.returnValue);
|
|
160
|
+
await output.drain();
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
thrown = hasFailure ? failure : error;
|
|
164
|
+
failed = true;
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
try {
|
|
168
|
+
await output.drain();
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
thrown = hasFailure ? failure : error;
|
|
172
|
+
failed = true;
|
|
173
|
+
}
|
|
174
|
+
controller.abort();
|
|
175
|
+
clearTimeout(timeout);
|
|
176
|
+
await input?.close().catch(() => { });
|
|
177
|
+
}
|
|
178
|
+
context.signal.throwIfAborted();
|
|
179
|
+
if (failed) {
|
|
180
|
+
const info = thrown instanceof GuestDiagnostic ? thrown.info : { name: statusField(thrown, "name"), code: statusField(thrown, "code") };
|
|
181
|
+
const detail = thrown instanceof SafeJsCommandLimitError ? thrown.message : publicDiagnosticMessage(thrown, context.onInternalError);
|
|
182
|
+
if (!output.stderrFailed)
|
|
183
|
+
await diagnose(detail);
|
|
184
|
+
return { exitCode: thrown instanceof SafeJsCommandLimitError || info.code === "budgetExceeded" ? 124
|
|
185
|
+
: thrown instanceof UsageError || info.name === "ParseError" ? 2 : 1 };
|
|
186
|
+
}
|
|
187
|
+
return { exitCode };
|
|
188
|
+
} }];
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/safejs/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
createYqCommand,
|
|
3
3
|
createYqCommands,
|
|
4
4
|
yqCommands
|
|
5
|
-
} from "../../chunks/chunk-
|
|
5
|
+
} from "../../chunks/chunk-K7W6Q6FN.js";
|
|
6
6
|
import "../../chunks/chunk-AFH57PPL.js";
|
|
7
|
-
import "../../chunks/chunk-GFZKQIPL.js";
|
|
8
7
|
import "../../chunks/chunk-RNKTWFEM.js";
|
|
8
|
+
import "../../chunks/chunk-GFZKQIPL.js";
|
|
9
9
|
import "../../chunks/chunk-UYX72YHY.js";
|
|
10
10
|
import "../../chunks/chunk-DPJWEGIX.js";
|
|
11
11
|
import "../../chunks/chunk-CXMIIXJA.js";
|