@exedev/sdk 0.0.6 → 0.2.0
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/LICENSE +21 -0
- package/README.md +128 -46
- package/dist/client.d.ts +59 -54
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +343 -99
- package/dist/client.js.map +1 -1
- package/dist/commands.gen.d.ts +1468 -0
- package/dist/commands.gen.d.ts.map +1 -0
- package/dist/commands.gen.js +1640 -0
- package/dist/commands.gen.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +110 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +8 -5
package/dist/client.js
CHANGED
|
@@ -1,109 +1,353 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
1
|
+
// Code generated by "go run ./cmd/gensdkjs" in the exe.dev repository. DO NOT EDIT.
|
|
2
|
+
/** API rejection. Neither requests nor response bodies appear in default logging. */
|
|
3
|
+
export class ExeAPIError extends Error {
|
|
4
|
+
operation;
|
|
5
|
+
status;
|
|
6
|
+
#body;
|
|
7
|
+
constructor(operation, status, body) {
|
|
8
|
+
super(`exe.dev API error (${status}) during ${operation}`);
|
|
9
|
+
this.name = "ExeAPIError";
|
|
10
|
+
this.operation = operation;
|
|
11
|
+
this.status = status;
|
|
12
|
+
this.#body = body;
|
|
13
|
+
}
|
|
14
|
+
/** Opt-in server diagnostics; may contain secrets. Does not establish whether an operation ran. */
|
|
15
|
+
details() { return { body: this.#body }; }
|
|
16
|
+
}
|
|
17
|
+
export class ExeProtocolError extends Error {
|
|
18
|
+
operation;
|
|
19
|
+
constructor(operation) {
|
|
20
|
+
super(`exedev: invalid ${operation} response`);
|
|
21
|
+
this.operation = operation;
|
|
22
|
+
this.name = "ExeProtocolError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** The command's exit status is unknown; captured output is only a prefix. Do not blindly retry. */
|
|
26
|
+
export class SSHStreamError extends Error {
|
|
27
|
+
code;
|
|
28
|
+
captured;
|
|
29
|
+
#stdout;
|
|
30
|
+
#stderr;
|
|
31
|
+
#detail;
|
|
32
|
+
constructor(code, captured, stdout, stderr, detail) {
|
|
33
|
+
super(`exedev: ssh ${code === "output_limit" ? "capture limit exceeded" : code === "protocol" ? "invalid output stream" : "output ended before the command exited"}`);
|
|
34
|
+
this.code = code;
|
|
35
|
+
this.captured = captured;
|
|
36
|
+
this.name = "SSHStreamError";
|
|
37
|
+
this.#stdout = stdout;
|
|
38
|
+
this.#stderr = stderr;
|
|
39
|
+
this.#detail = detail;
|
|
40
|
+
}
|
|
41
|
+
get stdoutBytes() { return this.#stdout; }
|
|
42
|
+
get stderrBytes() { return this.#stderr; }
|
|
43
|
+
get stdout() { return decodeUTF8(this.#stdout); }
|
|
44
|
+
get stderr() { return decodeUTF8(this.#stderr); }
|
|
45
|
+
/** Opt-in server diagnostics; may contain secrets. */
|
|
46
|
+
details() { return { message: this.#detail }; }
|
|
47
|
+
}
|
|
48
|
+
/** Internal transport, deliberately not exported from the package entry point. */
|
|
49
|
+
export class Transport {
|
|
50
|
+
#token;
|
|
51
|
+
#baseURL;
|
|
52
|
+
#fetch;
|
|
53
|
+
constructor(opts) {
|
|
54
|
+
if (!opts?.token)
|
|
55
|
+
throw new Error("exedev: token is required");
|
|
56
|
+
this.#token = opts.token;
|
|
57
|
+
this.#baseURL = (opts.baseURL ?? "https://exe.dev").replace(/\/$/, "");
|
|
58
|
+
this.#fetch = opts.fetch ?? ((input, init) => fetch(input, init));
|
|
59
|
+
}
|
|
60
|
+
async #post(command, options) {
|
|
61
|
+
const signal = options?.signal;
|
|
62
|
+
signal?.throwIfAborted();
|
|
63
|
+
try {
|
|
64
|
+
const response = await abortable(this.#fetch(`${this.#baseURL}/exec`, {
|
|
65
|
+
method: "POST",
|
|
66
|
+
headers: {
|
|
67
|
+
Authorization: `Bearer ${this.#token}`,
|
|
68
|
+
"Content-Type": "text/plain",
|
|
69
|
+
Accept: "application/json, application/x-ndjson",
|
|
70
|
+
},
|
|
71
|
+
body: command,
|
|
72
|
+
signal,
|
|
73
|
+
}), signal);
|
|
74
|
+
if (signal?.aborted) {
|
|
75
|
+
response.body?.cancel().catch(() => { });
|
|
76
|
+
signal.throwIfAborted();
|
|
59
77
|
}
|
|
60
|
-
return
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
78
|
+
return response;
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
signal?.throwIfAborted();
|
|
82
|
+
throw err;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async #text(response, signal) {
|
|
86
|
+
try {
|
|
87
|
+
const body = await abortable(response.text(), signal);
|
|
88
|
+
signal?.throwIfAborted();
|
|
89
|
+
return body;
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
signal?.throwIfAborted();
|
|
93
|
+
throw err;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async call(path, args, options, flags, json = false) {
|
|
97
|
+
const res = await this.#post(commandLine(path, args, options, flags), options);
|
|
98
|
+
const body = await this.#text(res, options?.signal);
|
|
99
|
+
if (!res.ok)
|
|
100
|
+
throw new ExeAPIError(path, res.status, body);
|
|
101
|
+
const docs = parseDocuments(body);
|
|
102
|
+
if (docs === undefined) {
|
|
103
|
+
if (json)
|
|
104
|
+
throw new ExeProtocolError(path);
|
|
105
|
+
return body;
|
|
106
|
+
}
|
|
107
|
+
if (docs.some(isErrorDocument))
|
|
108
|
+
throw new ExeAPIError(path, res.status, body);
|
|
109
|
+
return docs.length === 1 ? docs[0] : docs;
|
|
110
|
+
}
|
|
111
|
+
async ssh(vm, command, options = {}) {
|
|
112
|
+
const { capture = true, maxOutputBytes = 8 * 1024 * 1024 } = options;
|
|
113
|
+
if (typeof capture !== "boolean" || !Number.isSafeInteger(maxOutputBytes) || maxOutputBytes < 0) {
|
|
114
|
+
throw new TypeError("exedev: capture must be boolean and maxOutputBytes a nonnegative safe integer");
|
|
115
|
+
}
|
|
116
|
+
const res = await this.#post(`ssh ${quote(vm)} ${quote(command)}`, options);
|
|
117
|
+
if (!res.ok) {
|
|
118
|
+
const body = await this.#text(res, options.signal);
|
|
119
|
+
throw new ExeAPIError("ssh", res.status, body);
|
|
120
|
+
}
|
|
121
|
+
if (!isNDJSON(res)) {
|
|
122
|
+
// An older server may be streaming an infinite command in its raw
|
|
123
|
+
// format. Do not read it as an error body, or claim the command never ran.
|
|
124
|
+
res.body?.cancel().catch(() => { });
|
|
125
|
+
options.signal?.throwIfAborted();
|
|
126
|
+
throw new ExeProtocolError("ssh");
|
|
127
|
+
}
|
|
128
|
+
return readSSHOutput(res, { ...options, capture, maxOutputBytes });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export function commandLine(path, args, options, flags) {
|
|
132
|
+
const words = [path];
|
|
133
|
+
for (const [key, value] of Object.entries(options ?? {})) {
|
|
134
|
+
if (key === "signal" || value === undefined)
|
|
135
|
+
continue;
|
|
136
|
+
const kind = Object.hasOwn(flags, key) ? flags[key] : undefined;
|
|
137
|
+
switch (kind) {
|
|
138
|
+
case "bool":
|
|
139
|
+
words.push(value ? `--${key}` : `--${key}=false`);
|
|
140
|
+
break;
|
|
141
|
+
case "number":
|
|
142
|
+
case "string":
|
|
143
|
+
words.push(`--${key}=${quote(String(value))}`);
|
|
144
|
+
break;
|
|
145
|
+
case "repeated":
|
|
146
|
+
for (const v of [value].flat())
|
|
147
|
+
words.push(`--${key}=${quote(String(v))}`);
|
|
148
|
+
break;
|
|
149
|
+
default: throw new TypeError(`${path}: unknown option ${JSON.stringify(key)}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const positionals = [];
|
|
153
|
+
let skipped = false;
|
|
154
|
+
for (const arg of args) {
|
|
155
|
+
if (arg === undefined) {
|
|
156
|
+
skipped = true;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
for (const a of [arg].flat()) {
|
|
160
|
+
if (skipped)
|
|
161
|
+
throw new TypeError(`${path}: argument follows an omitted argument`);
|
|
162
|
+
positionals.push(a);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (positionals.some((p) => p.startsWith("-")))
|
|
166
|
+
words.push("--");
|
|
167
|
+
words.push(...positionals.map(quote));
|
|
168
|
+
return words.join(" ");
|
|
169
|
+
}
|
|
170
|
+
export function quote(s) {
|
|
171
|
+
return /^[A-Za-z0-9_@%+=:,./-]+$/.test(s) ? s : `'${s.replaceAll("'", `'"'"'`)}'`;
|
|
172
|
+
}
|
|
173
|
+
function isNDJSON(res) {
|
|
174
|
+
return (res.headers.get("Content-Type") ?? "").split(";")[0].trim().toLowerCase() === "application/x-ndjson";
|
|
175
|
+
}
|
|
176
|
+
// SSH writes are small; refuse an unbounded/incomplete NDJSON frame even in stream-only mode.
|
|
177
|
+
const maxFrameChars = 1024 * 1024;
|
|
178
|
+
async function readSSHOutput(res, options) {
|
|
179
|
+
const { signal, capture, maxOutputBytes } = options;
|
|
180
|
+
const chunks = { stdout: [], stderr: [] };
|
|
181
|
+
const decoders = { stdout: new TextDecoder(), stderr: new TextDecoder() };
|
|
182
|
+
const callbacks = { stdout: options.onStdout, stderr: options.onStderr };
|
|
183
|
+
let count = 0;
|
|
184
|
+
let exitCode;
|
|
185
|
+
let terminal = false;
|
|
186
|
+
const failure = (code, detail) => new SSHStreamError(code, capture, concat(chunks.stdout), concat(chunks.stderr), detail);
|
|
187
|
+
const deliver = async (name, text) => {
|
|
188
|
+
if (text && callbacks[name])
|
|
189
|
+
await abortable(Promise.resolve().then(() => callbacks[name](text)), signal);
|
|
190
|
+
signal?.throwIfAborted();
|
|
191
|
+
};
|
|
192
|
+
const frame = async (line) => {
|
|
193
|
+
signal?.throwIfAborted();
|
|
194
|
+
if (line.trim() === "")
|
|
195
|
+
return;
|
|
196
|
+
if (terminal || line.length > maxFrameChars)
|
|
197
|
+
throw failure("protocol");
|
|
198
|
+
let f;
|
|
199
|
+
try {
|
|
200
|
+
f = JSON.parse(line);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
throw failure("protocol");
|
|
204
|
+
}
|
|
205
|
+
if (typeof f !== "object" || f === null || Array.isArray(f) || Object.keys(f).length !== 1)
|
|
206
|
+
throw failure("protocol");
|
|
207
|
+
const value = f;
|
|
208
|
+
for (const name of ["stdout", "stderr"]) {
|
|
209
|
+
if (typeof value[name] !== "string")
|
|
210
|
+
continue;
|
|
211
|
+
let bytes;
|
|
212
|
+
try {
|
|
213
|
+
bytes = decodeBase64(value[name]);
|
|
66
214
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const result = await exec(`restart ${vmName}`, execOpts);
|
|
70
|
-
if (!result.ok) {
|
|
71
|
-
throw new ExeAPIError(`restart ${vmName}`, result.status, result.body);
|
|
215
|
+
catch {
|
|
216
|
+
throw failure("protocol");
|
|
72
217
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
218
|
+
if (capture) {
|
|
219
|
+
if (count + bytes.length > maxOutputBytes)
|
|
220
|
+
throw failure("output_limit");
|
|
221
|
+
count += bytes.length;
|
|
222
|
+
chunks[name].push(bytes);
|
|
78
223
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
224
|
+
if (callbacks[name])
|
|
225
|
+
await deliver(name, decoders[name].decode(bytes, { stream: true }));
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
if (typeof value.exit_code === "number" && Number.isSafeInteger(value.exit_code) && value.exit_code >= 0) {
|
|
229
|
+
exitCode = value.exit_code;
|
|
230
|
+
terminal = true;
|
|
231
|
+
}
|
|
232
|
+
else if (typeof value.error === "string") {
|
|
233
|
+
throw failure("interrupted", value.error);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
throw failure("protocol");
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
const reader = res.body?.getReader();
|
|
240
|
+
const decoder = new TextDecoder();
|
|
241
|
+
let pending = "";
|
|
242
|
+
let done = false;
|
|
243
|
+
try {
|
|
244
|
+
if (!reader)
|
|
245
|
+
throw failure("interrupted");
|
|
246
|
+
while (true) {
|
|
247
|
+
signal?.throwIfAborted();
|
|
248
|
+
let chunk;
|
|
249
|
+
try {
|
|
250
|
+
chunk = await abortable(reader.read(), signal);
|
|
84
251
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const result = await exec(`share show ${vmName}`, execOpts);
|
|
89
|
-
if (!result.ok) {
|
|
90
|
-
throw new ExeAPIError(`share show ${vmName}`, result.status, result.body);
|
|
252
|
+
catch {
|
|
253
|
+
signal?.throwIfAborted();
|
|
254
|
+
throw failure("interrupted");
|
|
91
255
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
256
|
+
if (chunk.done)
|
|
257
|
+
break;
|
|
258
|
+
const lines = (pending + decoder.decode(chunk.value, { stream: true })).split("\n");
|
|
259
|
+
pending = lines.pop();
|
|
260
|
+
for (const line of lines)
|
|
261
|
+
await frame(line);
|
|
262
|
+
if (pending.length > maxFrameChars)
|
|
263
|
+
throw failure("protocol");
|
|
264
|
+
}
|
|
265
|
+
await frame(pending + decoder.decode());
|
|
266
|
+
if (exitCode === undefined)
|
|
267
|
+
throw failure("interrupted");
|
|
268
|
+
for (const name of ["stdout", "stderr"]) {
|
|
269
|
+
if (callbacks[name])
|
|
270
|
+
await deliver(name, decoders[name].decode());
|
|
271
|
+
}
|
|
272
|
+
signal?.throwIfAborted();
|
|
273
|
+
done = true;
|
|
274
|
+
const stdoutBytes = concat(chunks.stdout);
|
|
275
|
+
const stderrBytes = concat(chunks.stderr);
|
|
276
|
+
return {
|
|
277
|
+
exitCode, captured: capture, stdoutBytes, stderrBytes,
|
|
278
|
+
get stdout() { return decodeUTF8(stdoutBytes); },
|
|
279
|
+
get stderr() { return decodeUTF8(stderrBytes); },
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
if (!done)
|
|
284
|
+
reader?.cancel().catch(() => { });
|
|
285
|
+
reader?.releaseLock();
|
|
286
|
+
}
|
|
95
287
|
}
|
|
96
|
-
/**
|
|
97
|
-
export
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
288
|
+
/** Stop waiting for an uncooperative fetch/body/callback when the caller cancels. */
|
|
289
|
+
export async function abortable(promise, signal) {
|
|
290
|
+
if (!signal)
|
|
291
|
+
return promise;
|
|
292
|
+
let abort;
|
|
293
|
+
try {
|
|
294
|
+
return await Promise.race([promise, new Promise((_, reject) => {
|
|
295
|
+
abort = () => reject(signal.reason);
|
|
296
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
297
|
+
if (signal.aborted)
|
|
298
|
+
abort();
|
|
299
|
+
})]);
|
|
300
|
+
}
|
|
301
|
+
finally {
|
|
302
|
+
if (abort)
|
|
303
|
+
signal.removeEventListener("abort", abort);
|
|
107
304
|
}
|
|
108
305
|
}
|
|
306
|
+
export function delay(ms, signal) {
|
|
307
|
+
return new Promise((resolve, reject) => {
|
|
308
|
+
const done = () => { signal.removeEventListener("abort", abort); resolve(); };
|
|
309
|
+
const timer = setTimeout(done, ms);
|
|
310
|
+
const abort = () => { clearTimeout(timer); signal.removeEventListener("abort", abort); reject(signal.reason); };
|
|
311
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
312
|
+
if (signal.aborted)
|
|
313
|
+
abort();
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
function decodeBase64(s) {
|
|
317
|
+
const bin = atob(s);
|
|
318
|
+
const bytes = new Uint8Array(bin.length);
|
|
319
|
+
for (let i = 0; i < bin.length; i++)
|
|
320
|
+
bytes[i] = bin.charCodeAt(i);
|
|
321
|
+
return bytes;
|
|
322
|
+
}
|
|
323
|
+
function decodeUTF8(bytes) { return new TextDecoder().decode(bytes); }
|
|
324
|
+
function concat(chunks) {
|
|
325
|
+
if (chunks.length === 1)
|
|
326
|
+
return chunks[0];
|
|
327
|
+
const out = new Uint8Array(chunks.reduce((n, c) => n + c.length, 0));
|
|
328
|
+
let at = 0;
|
|
329
|
+
for (const c of chunks) {
|
|
330
|
+
out.set(c, at);
|
|
331
|
+
at += c.length;
|
|
332
|
+
}
|
|
333
|
+
return out;
|
|
334
|
+
}
|
|
335
|
+
function parseDocuments(body) {
|
|
336
|
+
const text = body.trim();
|
|
337
|
+
if (!text)
|
|
338
|
+
return undefined;
|
|
339
|
+
try {
|
|
340
|
+
return [JSON.parse(text)];
|
|
341
|
+
}
|
|
342
|
+
catch { /* Try NDJSON. */ }
|
|
343
|
+
try {
|
|
344
|
+
return text.split("\n").filter((s) => s.trim() !== "").map((s) => JSON.parse(s));
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
return undefined;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
function isErrorDocument(doc) {
|
|
351
|
+
return typeof doc === "object" && doc !== null && !Array.isArray(doc) && Object.keys(doc).length === 1 && "error" in doc;
|
|
352
|
+
}
|
|
109
353
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|