@exedev/sdk 0.1.0 → 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/README.md +124 -61
- package/dist/client.d.ts +56 -46
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +288 -103
- package/dist/client.js.map +1 -1
- package/dist/commands.gen.d.ts +328 -292
- package/dist/commands.gen.d.ts.map +1 -1
- package/dist/commands.gen.js +778 -511
- package/dist/commands.gen.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +28 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -1,78 +1,138 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 {
|
|
10
50
|
#token;
|
|
11
51
|
#baseURL;
|
|
12
52
|
#fetch;
|
|
13
53
|
constructor(opts) {
|
|
14
|
-
|
|
15
|
-
if (!opts?.token) {
|
|
54
|
+
if (!opts?.token)
|
|
16
55
|
throw new Error("exedev: token is required");
|
|
17
|
-
}
|
|
18
56
|
this.#token = opts.token;
|
|
19
57
|
this.#baseURL = (opts.baseURL ?? "https://exe.dev").replace(/\/$/, "");
|
|
20
58
|
this.#fetch = opts.fetch ?? ((input, init) => fetch(input, init));
|
|
21
59
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
const docs = parseDocuments(result.body);
|
|
43
|
-
if (docs === undefined) {
|
|
44
|
-
return result.body;
|
|
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();
|
|
77
|
+
}
|
|
78
|
+
return response;
|
|
45
79
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
throw new ExeAPIError(command, result.status, result.body);
|
|
80
|
+
catch (err) {
|
|
81
|
+
signal?.throwIfAborted();
|
|
82
|
+
throw err;
|
|
50
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);
|
|
51
109
|
return docs.length === 1 ? docs[0] : docs;
|
|
52
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
|
+
}
|
|
53
130
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Create an exe.dev API client.
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* ```ts
|
|
59
|
-
* import exedev from "@exedev/sdk";
|
|
60
|
-
*
|
|
61
|
-
* const exe = exedev({ token: process.env.EXE_TOKEN! });
|
|
62
|
-
* const { vms } = await exe.ls();
|
|
63
|
-
* console.log(vms);
|
|
64
|
-
* ```
|
|
65
|
-
*/
|
|
66
|
-
export default function exedev(opts) {
|
|
67
|
-
return new ExedevClient(opts);
|
|
68
|
-
}
|
|
69
|
-
/** Builds the command line for a generated command method. */
|
|
70
131
|
export function commandLine(path, args, options, flags) {
|
|
71
132
|
const words = [path];
|
|
72
133
|
for (const [key, value] of Object.entries(options ?? {})) {
|
|
73
|
-
if (key === "signal" || value === undefined)
|
|
134
|
+
if (key === "signal" || value === undefined)
|
|
74
135
|
continue;
|
|
75
|
-
}
|
|
76
136
|
const kind = Object.hasOwn(flags, key) ? flags[key] : undefined;
|
|
77
137
|
switch (kind) {
|
|
78
138
|
case "bool":
|
|
@@ -83,12 +143,10 @@ export function commandLine(path, args, options, flags) {
|
|
|
83
143
|
words.push(`--${key}=${quote(String(value))}`);
|
|
84
144
|
break;
|
|
85
145
|
case "repeated":
|
|
86
|
-
for (const v of [value].flat())
|
|
146
|
+
for (const v of [value].flat())
|
|
87
147
|
words.push(`--${key}=${quote(String(v))}`);
|
|
88
|
-
}
|
|
89
148
|
break;
|
|
90
|
-
default:
|
|
91
|
-
throw new TypeError(`${path}: unknown option ${JSON.stringify(key)}`);
|
|
149
|
+
default: throw new TypeError(`${path}: unknown option ${JSON.stringify(key)}`);
|
|
92
150
|
}
|
|
93
151
|
}
|
|
94
152
|
const positionals = [];
|
|
@@ -99,70 +157,197 @@ export function commandLine(path, args, options, flags) {
|
|
|
99
157
|
continue;
|
|
100
158
|
}
|
|
101
159
|
for (const a of [arg].flat()) {
|
|
102
|
-
if (skipped)
|
|
103
|
-
throw new TypeError(`${path}: argument
|
|
104
|
-
}
|
|
160
|
+
if (skipped)
|
|
161
|
+
throw new TypeError(`${path}: argument follows an omitted argument`);
|
|
105
162
|
positionals.push(a);
|
|
106
163
|
}
|
|
107
164
|
}
|
|
108
|
-
if (positionals.some((p) => p.startsWith("-")))
|
|
165
|
+
if (positionals.some((p) => p.startsWith("-")))
|
|
109
166
|
words.push("--");
|
|
110
|
-
}
|
|
111
167
|
words.push(...positionals.map(quote));
|
|
112
168
|
return words.join(" ");
|
|
113
169
|
}
|
|
114
|
-
/** Quotes s for the exe.dev command-line parser (POSIX shell rules). */
|
|
115
170
|
export function quote(s) {
|
|
116
|
-
|
|
117
|
-
|
|
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]);
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
throw failure("protocol");
|
|
217
|
+
}
|
|
218
|
+
if (capture) {
|
|
219
|
+
if (count + bytes.length > maxOutputBytes)
|
|
220
|
+
throw failure("output_limit");
|
|
221
|
+
count += bytes.length;
|
|
222
|
+
chunks[name].push(bytes);
|
|
223
|
+
}
|
|
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);
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
signal?.throwIfAborted();
|
|
254
|
+
throw failure("interrupted");
|
|
255
|
+
}
|
|
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
|
+
}
|
|
287
|
+
}
|
|
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);
|
|
118
304
|
}
|
|
119
|
-
return `'${s.replaceAll("'", `'"'"'`)}'`;
|
|
120
305
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
+
}
|
|
125
335
|
function parseDocuments(body) {
|
|
126
336
|
const text = body.trim();
|
|
127
|
-
if (text
|
|
337
|
+
if (!text)
|
|
128
338
|
return undefined;
|
|
129
|
-
}
|
|
130
339
|
try {
|
|
131
340
|
return [JSON.parse(text)];
|
|
132
341
|
}
|
|
133
|
-
catch {
|
|
134
|
-
// Not a single document.
|
|
135
|
-
}
|
|
342
|
+
catch { /* Try NDJSON. */ }
|
|
136
343
|
try {
|
|
137
|
-
return text.split("\n").filter((
|
|
344
|
+
return text.split("\n").filter((s) => s.trim() !== "").map((s) => JSON.parse(s));
|
|
138
345
|
}
|
|
139
346
|
catch {
|
|
140
347
|
return undefined;
|
|
141
348
|
}
|
|
142
349
|
}
|
|
143
350
|
function isErrorDocument(doc) {
|
|
144
|
-
return typeof doc === "object" && doc !== null && !Array.isArray(doc) &&
|
|
145
|
-
Object.keys(doc).length === 1 && "error" in doc;
|
|
146
|
-
}
|
|
147
|
-
/** Error thrown when the exe.dev API reports a failed command. */
|
|
148
|
-
export class ExeAPIError extends Error {
|
|
149
|
-
command;
|
|
150
|
-
status;
|
|
151
|
-
body;
|
|
152
|
-
constructor(command, status, body) {
|
|
153
|
-
super(`exe.dev API error (${status}): ${errorMessage(body)}`);
|
|
154
|
-
this.name = "ExeAPIError";
|
|
155
|
-
this.command = command;
|
|
156
|
-
this.status = status;
|
|
157
|
-
this.body = body;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
function errorMessage(body) {
|
|
161
|
-
for (const doc of parseDocuments(body) ?? []) {
|
|
162
|
-
if (isErrorDocument(doc)) {
|
|
163
|
-
return String(doc.error);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return body.trim();
|
|
351
|
+
return typeof doc === "object" && doc !== null && !Array.isArray(doc) && Object.keys(doc).length === 1 && "error" in doc;
|
|
167
352
|
}
|
|
168
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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"}
|