@vercel/sandbox 1.1.5 → 1.1.6
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +12 -12
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +6 -0
- package/dist/api-client/api-client.d.ts +2 -2
- package/dist/api-client/api-client.js +3 -1
- package/dist/api-client/api-client.js.map +1 -1
- package/dist/api-client/api-error.d.ts +4 -1
- package/dist/api-client/api-error.js +3 -1
- package/dist/api-client/api-error.js.map +1 -1
- package/dist/api-client/base-client.js +13 -0
- package/dist/api-client/base-client.js.map +1 -1
- package/dist/api-client/validators.d.ts +10 -10
- package/dist/command.d.ts +7 -0
- package/dist/command.js +39 -7
- package/dist/command.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/api-client/api-client.test.ts +48 -0
- package/src/api-client/api-client.ts +7 -1
- package/src/api-client/api-error.ts +6 -1
- package/src/api-client/base-client.ts +15 -0
- package/src/command.ts +50 -7
- package/src/version.ts +1 -1
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
|
|
2
|
-
> @vercel/sandbox@1.1.
|
|
2
|
+
> @vercel/sandbox@1.1.6 test /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
|
|
3
3
|
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv3.2.1 [39m[90m/home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m src/utils/dev-credentials.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m
|
|
9
|
-
[33m[2m✓[22m[39m signInAndGetToken[2m > [22mtimes out after provided timeout [33m
|
|
8
|
+
[32m✓[39m src/utils/dev-credentials.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 555[2mms[22m[39m
|
|
9
|
+
[33m[2m✓[22m[39m signInAndGetToken[2m > [22mtimes out after provided timeout [33m 539[2mms[22m[39m
|
|
10
|
+
[32m✓[39m src/api-client/api-client.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 27[2mms[22m[39m
|
|
10
11
|
[32m✓[39m src/auth/infer-scope.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 79[2mms[22m[39m
|
|
11
|
-
[32m✓[39m src/utils/jwt-expiry.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m
|
|
12
|
-
[32m✓[39m src/api-client/api-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 100[2mms[22m[39m
|
|
12
|
+
[32m✓[39m src/utils/jwt-expiry.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 47[2mms[22m[39m
|
|
13
13
|
[2m[90m↓[39m[22m src/sandbox.test.ts [2m([22m[2m4 tests[22m[2m | [22m[33m4 skipped[39m[2m)[22m
|
|
14
|
-
[32m✓[39m src/utils/normalizePath.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
14
|
+
[32m✓[39m src/utils/normalizePath.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 19[2mms[22m[39m
|
|
15
15
|
[2m[90m↓[39m[22m src/command.test.ts [2m([22m[2m5 tests[22m[2m | [22m[33m5 skipped[39m[2m)[22m
|
|
16
|
-
[32m✓[39m src/auth/linked-project.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
17
|
-
[32m✓[39m src/utils/get-credentials.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
18
|
-
[32m✓[39m src/utils/types.test.js [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
16
|
+
[32m✓[39m src/auth/linked-project.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 60[2mms[22m[39m
|
|
17
|
+
[32m✓[39m src/utils/get-credentials.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 30[2mms[22m[39m
|
|
18
|
+
[32m✓[39m src/utils/types.test.js [2m([22m[2m1 test[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
19
19
|
|
|
20
20
|
[2m Test Files [22m [1m[32m8 passed[39m[22m[2m | [22m[33m2 skipped[39m[90m (10)[39m
|
|
21
|
-
[2m Tests [22m [1m[
|
|
22
|
-
[2m Start at [22m
|
|
23
|
-
[2m Duration [22m
|
|
21
|
+
[2m Tests [22m [1m[32m48 passed[39m[22m[2m | [22m[33m9 skipped[39m[90m (57)[39m
|
|
22
|
+
[2m Start at [22m 20:03:33
|
|
23
|
+
[2m Duration [22m 11.41s[2m (transform 834ms, setup 305ms, collect 2.88s, tests 824ms, environment 7ms, prepare 2.77s)[22m
|
|
24
24
|
|
package/CHANGELOG.md
CHANGED
|
@@ -108,12 +108,12 @@ export declare class APIClient extends BaseClient {
|
|
|
108
108
|
signal?: AbortSignal;
|
|
109
109
|
}): Promise<Parsed<{
|
|
110
110
|
command: {
|
|
111
|
+
sandboxId: string;
|
|
111
112
|
id: string;
|
|
112
113
|
startedAt: number;
|
|
113
114
|
cwd: string;
|
|
114
115
|
name: string;
|
|
115
116
|
args: string[];
|
|
116
|
-
sandboxId: string;
|
|
117
117
|
exitCode: number | null;
|
|
118
118
|
};
|
|
119
119
|
}>>;
|
|
@@ -215,12 +215,12 @@ export declare class APIClient extends BaseClient {
|
|
|
215
215
|
abortSignal?: AbortSignal;
|
|
216
216
|
}): Promise<Parsed<{
|
|
217
217
|
command: {
|
|
218
|
+
sandboxId: string;
|
|
218
219
|
id: string;
|
|
219
220
|
startedAt: number;
|
|
220
221
|
cwd: string;
|
|
221
222
|
name: string;
|
|
222
223
|
args: string[];
|
|
223
|
-
sandboxId: string;
|
|
224
224
|
exitCode: number | null;
|
|
225
225
|
};
|
|
226
226
|
}>>;
|
|
@@ -190,11 +190,13 @@ class APIClient extends base_client_1.BaseClient {
|
|
|
190
190
|
if (response.headers.get("content-type") !== "application/x-ndjson") {
|
|
191
191
|
throw new api_error_1.APIError(response, {
|
|
192
192
|
message: "Expected a stream of logs",
|
|
193
|
+
sandboxId: params.sandboxId,
|
|
193
194
|
});
|
|
194
195
|
}
|
|
195
196
|
if (response.body === null) {
|
|
196
197
|
throw new api_error_1.APIError(response, {
|
|
197
198
|
message: "No response body",
|
|
199
|
+
sandboxId: params.sandboxId,
|
|
198
200
|
});
|
|
199
201
|
}
|
|
200
202
|
const jsonlinesStream = jsonlines_1.default.parse();
|
|
@@ -204,7 +206,7 @@ class APIClient extends base_client_1.BaseClient {
|
|
|
204
206
|
for await (const chunk of jsonlinesStream) {
|
|
205
207
|
const parsed = validators_1.LogLine.parse(chunk);
|
|
206
208
|
if (parsed.stream === "error") {
|
|
207
|
-
throw new api_error_1.StreamError(parsed.data.code, parsed.data.message);
|
|
209
|
+
throw new api_error_1.StreamError(parsed.data.code, parsed.data.message, params.sandboxId);
|
|
208
210
|
}
|
|
209
211
|
yield parsed;
|
|
210
212
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api-client/api-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api-client/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,14 @@ interface Options<ErrorData> {
|
|
|
2
2
|
message?: string;
|
|
3
3
|
json?: ErrorData;
|
|
4
4
|
text?: string;
|
|
5
|
+
sandboxId?: string;
|
|
5
6
|
}
|
|
6
7
|
export declare class APIError<ErrorData> extends Error {
|
|
7
8
|
response: Response;
|
|
8
9
|
message: string;
|
|
9
10
|
json?: ErrorData;
|
|
10
11
|
text?: string;
|
|
12
|
+
sandboxId?: string;
|
|
11
13
|
constructor(response: Response, options?: Options<ErrorData>);
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
@@ -16,6 +18,7 @@ export declare class APIError<ErrorData> extends Error {
|
|
|
16
18
|
*/
|
|
17
19
|
export declare class StreamError extends Error {
|
|
18
20
|
code: string;
|
|
19
|
-
|
|
21
|
+
sandboxId: string;
|
|
22
|
+
constructor(code: string, message: string, sandboxId: string);
|
|
20
23
|
}
|
|
21
24
|
export {};
|
|
@@ -11,6 +11,7 @@ class APIError extends Error {
|
|
|
11
11
|
this.message = options?.message ?? "";
|
|
12
12
|
this.json = options?.json;
|
|
13
13
|
this.text = options?.text;
|
|
14
|
+
this.sandboxId = options?.sandboxId;
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
17
|
exports.APIError = APIError;
|
|
@@ -19,10 +20,11 @@ exports.APIError = APIError;
|
|
|
19
20
|
* This typically occurs when the sandbox is stopped while streaming.
|
|
20
21
|
*/
|
|
21
22
|
class StreamError extends Error {
|
|
22
|
-
constructor(code, message) {
|
|
23
|
+
constructor(code, message, sandboxId) {
|
|
23
24
|
super(message);
|
|
24
25
|
this.name = "StreamError";
|
|
25
26
|
this.code = code;
|
|
27
|
+
this.sandboxId = sandboxId;
|
|
26
28
|
if (Error.captureStackTrace) {
|
|
27
29
|
Error.captureStackTrace(this, StreamError);
|
|
28
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../src/api-client/api-error.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../src/api-client/api-error.ts"],"names":[],"mappings":";;;AAOA,MAAa,QAAoB,SAAQ,KAAK;IAO5C,YAAY,QAAkB,EAAE,OAA4B;QAC1D,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;IACtC,CAAC;CACF;AAnBD,4BAmBC;AAED;;;GAGG;AACH,MAAa,WAAY,SAAQ,KAAK;IAIpC,YAAY,IAAY,EAAE,OAAe,EAAE,SAAiB;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAbD,kCAaC"}
|
|
@@ -58,6 +58,14 @@ class BaseClient {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
exports.BaseClient = BaseClient;
|
|
61
|
+
/**
|
|
62
|
+
* Extract sandboxId from a sandbox API URL.
|
|
63
|
+
* URLs follow the pattern: /v1/sandboxes/{sandboxId}/...
|
|
64
|
+
*/
|
|
65
|
+
function extractSandboxId(url) {
|
|
66
|
+
const match = url.match(/\/v1\/sandboxes\/([^/?]+)/);
|
|
67
|
+
return match?.[1];
|
|
68
|
+
}
|
|
61
69
|
/**
|
|
62
70
|
* Allows to read the response text and parse it as JSON casting to the given
|
|
63
71
|
* type. If the response is not ok or cannot be parsed it will return error.
|
|
@@ -66,9 +74,11 @@ exports.BaseClient = BaseClient;
|
|
|
66
74
|
* @returns Parsed response or error.
|
|
67
75
|
*/
|
|
68
76
|
async function parse(validator, response) {
|
|
77
|
+
const sandboxId = extractSandboxId(response.url);
|
|
69
78
|
const text = await response.text().catch((err) => {
|
|
70
79
|
return new api_error_1.APIError(response, {
|
|
71
80
|
message: `Can't read response text: ${String(err)}`,
|
|
81
|
+
sandboxId,
|
|
72
82
|
});
|
|
73
83
|
});
|
|
74
84
|
if (typeof text !== "string") {
|
|
@@ -82,6 +92,7 @@ async function parse(validator, response) {
|
|
|
82
92
|
return new api_error_1.APIError(response, {
|
|
83
93
|
message: `Can't parse JSON: ${String(error)}`,
|
|
84
94
|
text,
|
|
95
|
+
sandboxId,
|
|
85
96
|
});
|
|
86
97
|
}
|
|
87
98
|
if (!response.ok) {
|
|
@@ -89,6 +100,7 @@ async function parse(validator, response) {
|
|
|
89
100
|
message: `Status code ${response.status} is not ok`,
|
|
90
101
|
json: json,
|
|
91
102
|
text,
|
|
103
|
+
sandboxId,
|
|
92
104
|
});
|
|
93
105
|
}
|
|
94
106
|
const validated = validator.safeParse(json);
|
|
@@ -97,6 +109,7 @@ async function parse(validator, response) {
|
|
|
97
109
|
message: `Response JSON is not valid: ${validated.error}`,
|
|
98
110
|
json: json,
|
|
99
111
|
text,
|
|
112
|
+
sandboxId,
|
|
100
113
|
});
|
|
101
114
|
}
|
|
102
115
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/api-client/base-client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/api-client/base-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -136,20 +136,20 @@ export declare const Command: z.ZodObject<{
|
|
|
136
136
|
exitCode: z.ZodNullable<z.ZodNumber>;
|
|
137
137
|
startedAt: z.ZodNumber;
|
|
138
138
|
}, "strip", z.ZodTypeAny, {
|
|
139
|
+
sandboxId: string;
|
|
139
140
|
id: string;
|
|
140
141
|
startedAt: number;
|
|
141
142
|
cwd: string;
|
|
142
143
|
name: string;
|
|
143
144
|
args: string[];
|
|
144
|
-
sandboxId: string;
|
|
145
145
|
exitCode: number | null;
|
|
146
146
|
}, {
|
|
147
|
+
sandboxId: string;
|
|
147
148
|
id: string;
|
|
148
149
|
startedAt: number;
|
|
149
150
|
cwd: string;
|
|
150
151
|
name: string;
|
|
151
152
|
args: string[];
|
|
152
|
-
sandboxId: string;
|
|
153
153
|
exitCode: number | null;
|
|
154
154
|
}>;
|
|
155
155
|
export declare const SandboxResponse: z.ZodObject<{
|
|
@@ -390,40 +390,40 @@ export declare const CommandResponse: z.ZodObject<{
|
|
|
390
390
|
exitCode: z.ZodNullable<z.ZodNumber>;
|
|
391
391
|
startedAt: z.ZodNumber;
|
|
392
392
|
}, "strip", z.ZodTypeAny, {
|
|
393
|
+
sandboxId: string;
|
|
393
394
|
id: string;
|
|
394
395
|
startedAt: number;
|
|
395
396
|
cwd: string;
|
|
396
397
|
name: string;
|
|
397
398
|
args: string[];
|
|
398
|
-
sandboxId: string;
|
|
399
399
|
exitCode: number | null;
|
|
400
400
|
}, {
|
|
401
|
+
sandboxId: string;
|
|
401
402
|
id: string;
|
|
402
403
|
startedAt: number;
|
|
403
404
|
cwd: string;
|
|
404
405
|
name: string;
|
|
405
406
|
args: string[];
|
|
406
|
-
sandboxId: string;
|
|
407
407
|
exitCode: number | null;
|
|
408
408
|
}>;
|
|
409
409
|
}, "strip", z.ZodTypeAny, {
|
|
410
410
|
command: {
|
|
411
|
+
sandboxId: string;
|
|
411
412
|
id: string;
|
|
412
413
|
startedAt: number;
|
|
413
414
|
cwd: string;
|
|
414
415
|
name: string;
|
|
415
416
|
args: string[];
|
|
416
|
-
sandboxId: string;
|
|
417
417
|
exitCode: number | null;
|
|
418
418
|
};
|
|
419
419
|
}, {
|
|
420
420
|
command: {
|
|
421
|
+
sandboxId: string;
|
|
421
422
|
id: string;
|
|
422
423
|
startedAt: number;
|
|
423
424
|
cwd: string;
|
|
424
425
|
name: string;
|
|
425
426
|
args: string[];
|
|
426
|
-
sandboxId: string;
|
|
427
427
|
exitCode: number | null;
|
|
428
428
|
};
|
|
429
429
|
}>;
|
|
@@ -438,40 +438,40 @@ export declare const CommandFinishedResponse: z.ZodObject<{
|
|
|
438
438
|
} & {
|
|
439
439
|
exitCode: z.ZodNumber;
|
|
440
440
|
}, "strip", z.ZodTypeAny, {
|
|
441
|
+
sandboxId: string;
|
|
441
442
|
id: string;
|
|
442
443
|
startedAt: number;
|
|
443
444
|
cwd: string;
|
|
444
445
|
name: string;
|
|
445
446
|
args: string[];
|
|
446
|
-
sandboxId: string;
|
|
447
447
|
exitCode: number;
|
|
448
448
|
}, {
|
|
449
|
+
sandboxId: string;
|
|
449
450
|
id: string;
|
|
450
451
|
startedAt: number;
|
|
451
452
|
cwd: string;
|
|
452
453
|
name: string;
|
|
453
454
|
args: string[];
|
|
454
|
-
sandboxId: string;
|
|
455
455
|
exitCode: number;
|
|
456
456
|
}>;
|
|
457
457
|
}, "strip", z.ZodTypeAny, {
|
|
458
458
|
command: {
|
|
459
|
+
sandboxId: string;
|
|
459
460
|
id: string;
|
|
460
461
|
startedAt: number;
|
|
461
462
|
cwd: string;
|
|
462
463
|
name: string;
|
|
463
464
|
args: string[];
|
|
464
|
-
sandboxId: string;
|
|
465
465
|
exitCode: number;
|
|
466
466
|
};
|
|
467
467
|
}, {
|
|
468
468
|
command: {
|
|
469
|
+
sandboxId: string;
|
|
469
470
|
id: string;
|
|
470
471
|
startedAt: number;
|
|
471
472
|
cwd: string;
|
|
472
473
|
name: string;
|
|
473
474
|
args: string[];
|
|
474
|
-
sandboxId: string;
|
|
475
475
|
exitCode: number;
|
|
476
476
|
};
|
|
477
477
|
}>;
|
package/dist/command.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export declare class Command {
|
|
|
28
28
|
*/
|
|
29
29
|
private cmd;
|
|
30
30
|
exitCode: number | null;
|
|
31
|
+
private outputCache;
|
|
32
|
+
private outputCachePromise;
|
|
31
33
|
/**
|
|
32
34
|
* ID of the command execution.
|
|
33
35
|
*/
|
|
@@ -98,6 +100,11 @@ export declare class Command {
|
|
|
98
100
|
wait(params?: {
|
|
99
101
|
signal?: AbortSignal;
|
|
100
102
|
}): Promise<CommandFinished>;
|
|
103
|
+
/**
|
|
104
|
+
* Get cached output, fetching logs only once and reusing for concurrent calls.
|
|
105
|
+
* This prevents race conditions when stdout() and stderr() are called in parallel.
|
|
106
|
+
*/
|
|
107
|
+
private getCachedOutput;
|
|
101
108
|
/**
|
|
102
109
|
* Get the output of `stdout`, `stderr`, or both as a string.
|
|
103
110
|
*
|
package/dist/command.js
CHANGED
|
@@ -35,6 +35,8 @@ class Command {
|
|
|
35
35
|
* @param params.cmdId - The ID of the command execution.
|
|
36
36
|
*/
|
|
37
37
|
constructor({ client, sandboxId, cmd, }) {
|
|
38
|
+
this.outputCache = null;
|
|
39
|
+
this.outputCachePromise = null;
|
|
38
40
|
this.client = client;
|
|
39
41
|
this.sandboxId = sandboxId;
|
|
40
42
|
this.cmd = cmd;
|
|
@@ -101,6 +103,41 @@ class Command {
|
|
|
101
103
|
exitCode: command.json.command.exitCode,
|
|
102
104
|
});
|
|
103
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Get cached output, fetching logs only once and reusing for concurrent calls.
|
|
108
|
+
* This prevents race conditions when stdout() and stderr() are called in parallel.
|
|
109
|
+
*/
|
|
110
|
+
async getCachedOutput(opts) {
|
|
111
|
+
if (this.outputCache) {
|
|
112
|
+
return this.outputCache;
|
|
113
|
+
}
|
|
114
|
+
if (!this.outputCachePromise) {
|
|
115
|
+
this.outputCachePromise = (async () => {
|
|
116
|
+
try {
|
|
117
|
+
let stdout = "";
|
|
118
|
+
let stderr = "";
|
|
119
|
+
let both = "";
|
|
120
|
+
for await (const log of this.logs({ signal: opts?.signal })) {
|
|
121
|
+
both += log.data;
|
|
122
|
+
if (log.stream === "stdout") {
|
|
123
|
+
stdout += log.data;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
stderr += log.data;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
this.outputCache = { stdout, stderr, both };
|
|
130
|
+
return this.outputCache;
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
// Clear the promise so future calls can retry
|
|
134
|
+
this.outputCachePromise = null;
|
|
135
|
+
throw err;
|
|
136
|
+
}
|
|
137
|
+
})();
|
|
138
|
+
}
|
|
139
|
+
return this.outputCachePromise;
|
|
140
|
+
}
|
|
104
141
|
/**
|
|
105
142
|
* Get the output of `stdout`, `stderr`, or both as a string.
|
|
106
143
|
*
|
|
@@ -113,13 +150,8 @@ class Command {
|
|
|
113
150
|
* @returns The output of the specified stream(s) as a string.
|
|
114
151
|
*/
|
|
115
152
|
async output(stream = "both", opts) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (stream === "both" || log.stream === stream) {
|
|
119
|
-
data += log.data;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return data;
|
|
153
|
+
const cached = await this.getCachedOutput(opts);
|
|
154
|
+
return cached[stream];
|
|
123
155
|
}
|
|
124
156
|
/**
|
|
125
157
|
* Get the output of `stdout` as a string.
|
package/dist/command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;;AACA,yDAA8D;AAE9D;;;;;;;;;;;;GAYG;AACH,MAAa,OAAO;
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.1.
|
|
1
|
+
export declare const VERSION = "1.1.6";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -124,5 +124,53 @@ describe("APIClient", () => {
|
|
|
124
124
|
expect(results).toHaveLength(1);
|
|
125
125
|
expect(results[0]).toEqual({ stream: "stdout", data: "some logs" });
|
|
126
126
|
});
|
|
127
|
+
|
|
128
|
+
it("includes sandboxId in APIError", async () => {
|
|
129
|
+
mockFetch.mockResolvedValue(
|
|
130
|
+
new Response(null, {
|
|
131
|
+
headers: { "content-type": "application/json" },
|
|
132
|
+
}),
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
const logs = client.getLogs({ sandboxId: "sbx_123", cmdId: "cmd_456" });
|
|
136
|
+
|
|
137
|
+
try {
|
|
138
|
+
for await (const _ of logs) {
|
|
139
|
+
}
|
|
140
|
+
expect.fail("Expected APIError to be thrown");
|
|
141
|
+
} catch (err) {
|
|
142
|
+
expect(err).toBeInstanceOf(APIError);
|
|
143
|
+
expect((err as APIError<unknown>).sandboxId).toBe("sbx_123");
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it("includes sandboxId in StreamError", async () => {
|
|
148
|
+
const logLines = [
|
|
149
|
+
{
|
|
150
|
+
stream: "error",
|
|
151
|
+
data: {
|
|
152
|
+
code: "sandbox_stopped",
|
|
153
|
+
message: "Sandbox has stopped",
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
mockFetch.mockResolvedValue(
|
|
159
|
+
new Response(createNdjsonStream(logLines), {
|
|
160
|
+
headers: { "content-type": "application/x-ndjson" },
|
|
161
|
+
}),
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
const logs = client.getLogs({ sandboxId: "sbx_123", cmdId: "cmd_456" });
|
|
165
|
+
|
|
166
|
+
try {
|
|
167
|
+
for await (const _ of logs) {
|
|
168
|
+
}
|
|
169
|
+
expect.fail("Expected StreamError to be thrown");
|
|
170
|
+
} catch (err) {
|
|
171
|
+
expect(err).toBeInstanceOf(StreamError);
|
|
172
|
+
expect((err as StreamError).sandboxId).toBe("sbx_123");
|
|
173
|
+
}
|
|
174
|
+
});
|
|
127
175
|
});
|
|
128
176
|
});
|
|
@@ -381,12 +381,14 @@ export class APIClient extends BaseClient {
|
|
|
381
381
|
if (response.headers.get("content-type") !== "application/x-ndjson") {
|
|
382
382
|
throw new APIError(response, {
|
|
383
383
|
message: "Expected a stream of logs",
|
|
384
|
+
sandboxId: params.sandboxId,
|
|
384
385
|
});
|
|
385
386
|
}
|
|
386
387
|
|
|
387
388
|
if (response.body === null) {
|
|
388
389
|
throw new APIError(response, {
|
|
389
390
|
message: "No response body",
|
|
391
|
+
sandboxId: params.sandboxId,
|
|
390
392
|
});
|
|
391
393
|
}
|
|
392
394
|
|
|
@@ -398,7 +400,11 @@ export class APIClient extends BaseClient {
|
|
|
398
400
|
for await (const chunk of jsonlinesStream) {
|
|
399
401
|
const parsed = LogLine.parse(chunk);
|
|
400
402
|
if (parsed.stream === "error") {
|
|
401
|
-
throw new StreamError(
|
|
403
|
+
throw new StreamError(
|
|
404
|
+
parsed.data.code,
|
|
405
|
+
parsed.data.message,
|
|
406
|
+
params.sandboxId,
|
|
407
|
+
);
|
|
402
408
|
}
|
|
403
409
|
yield parsed;
|
|
404
410
|
}
|
|
@@ -2,6 +2,7 @@ interface Options<ErrorData> {
|
|
|
2
2
|
message?: string;
|
|
3
3
|
json?: ErrorData;
|
|
4
4
|
text?: string;
|
|
5
|
+
sandboxId?: string;
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
export class APIError<ErrorData> extends Error {
|
|
@@ -9,6 +10,7 @@ export class APIError<ErrorData> extends Error {
|
|
|
9
10
|
public message: string;
|
|
10
11
|
public json?: ErrorData;
|
|
11
12
|
public text?: string;
|
|
13
|
+
public sandboxId?: string;
|
|
12
14
|
|
|
13
15
|
constructor(response: Response, options?: Options<ErrorData>) {
|
|
14
16
|
super(response.statusText);
|
|
@@ -20,6 +22,7 @@ export class APIError<ErrorData> extends Error {
|
|
|
20
22
|
this.message = options?.message ?? "";
|
|
21
23
|
this.json = options?.json;
|
|
22
24
|
this.text = options?.text;
|
|
25
|
+
this.sandboxId = options?.sandboxId;
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
|
|
@@ -29,11 +32,13 @@ export class APIError<ErrorData> extends Error {
|
|
|
29
32
|
*/
|
|
30
33
|
export class StreamError extends Error {
|
|
31
34
|
public code: string;
|
|
35
|
+
public sandboxId: string;
|
|
32
36
|
|
|
33
|
-
constructor(code: string, message: string) {
|
|
37
|
+
constructor(code: string, message: string, sandboxId: string) {
|
|
34
38
|
super(message);
|
|
35
39
|
this.name = "StreamError";
|
|
36
40
|
this.code = code;
|
|
41
|
+
this.sandboxId = sandboxId;
|
|
37
42
|
if (Error.captureStackTrace) {
|
|
38
43
|
Error.captureStackTrace(this, StreamError);
|
|
39
44
|
}
|
|
@@ -87,6 +87,15 @@ export interface Parsed<Data> {
|
|
|
87
87
|
json: Data;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Extract sandboxId from a sandbox API URL.
|
|
92
|
+
* URLs follow the pattern: /v1/sandboxes/{sandboxId}/...
|
|
93
|
+
*/
|
|
94
|
+
function extractSandboxId(url: string): string | undefined {
|
|
95
|
+
const match = url.match(/\/v1\/sandboxes\/([^/?]+)/);
|
|
96
|
+
return match?.[1];
|
|
97
|
+
}
|
|
98
|
+
|
|
90
99
|
/**
|
|
91
100
|
* Allows to read the response text and parse it as JSON casting to the given
|
|
92
101
|
* type. If the response is not ok or cannot be parsed it will return error.
|
|
@@ -98,9 +107,12 @@ export async function parse<Data, ErrorData>(
|
|
|
98
107
|
validator: ZodType<Data>,
|
|
99
108
|
response: Response,
|
|
100
109
|
): Promise<Parsed<Data> | APIError<ErrorData>> {
|
|
110
|
+
const sandboxId = extractSandboxId(response.url);
|
|
111
|
+
|
|
101
112
|
const text = await response.text().catch((err) => {
|
|
102
113
|
return new APIError<ErrorData>(response, {
|
|
103
114
|
message: `Can't read response text: ${String(err)}`,
|
|
115
|
+
sandboxId,
|
|
104
116
|
});
|
|
105
117
|
});
|
|
106
118
|
|
|
@@ -116,6 +128,7 @@ export async function parse<Data, ErrorData>(
|
|
|
116
128
|
return new APIError<ErrorData>(response, {
|
|
117
129
|
message: `Can't parse JSON: ${String(error)}`,
|
|
118
130
|
text,
|
|
131
|
+
sandboxId,
|
|
119
132
|
});
|
|
120
133
|
}
|
|
121
134
|
|
|
@@ -124,6 +137,7 @@ export async function parse<Data, ErrorData>(
|
|
|
124
137
|
message: `Status code ${response.status} is not ok`,
|
|
125
138
|
json: json as ErrorData,
|
|
126
139
|
text,
|
|
140
|
+
sandboxId,
|
|
127
141
|
});
|
|
128
142
|
}
|
|
129
143
|
|
|
@@ -133,6 +147,7 @@ export async function parse<Data, ErrorData>(
|
|
|
133
147
|
message: `Response JSON is not valid: ${validated.error}`,
|
|
134
148
|
json: json as ErrorData,
|
|
135
149
|
text,
|
|
150
|
+
sandboxId,
|
|
136
151
|
});
|
|
137
152
|
}
|
|
138
153
|
|
package/src/command.ts
CHANGED
|
@@ -33,6 +33,14 @@ export class Command {
|
|
|
33
33
|
|
|
34
34
|
public exitCode: number | null;
|
|
35
35
|
|
|
36
|
+
private outputCache: { stdout: string; stderr: string; both: string } | null =
|
|
37
|
+
null;
|
|
38
|
+
private outputCachePromise: Promise<{
|
|
39
|
+
stdout: string;
|
|
40
|
+
stderr: string;
|
|
41
|
+
both: string;
|
|
42
|
+
}> | null = null;
|
|
43
|
+
|
|
36
44
|
/**
|
|
37
45
|
* ID of the command execution.
|
|
38
46
|
*/
|
|
@@ -134,6 +142,46 @@ export class Command {
|
|
|
134
142
|
});
|
|
135
143
|
}
|
|
136
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Get cached output, fetching logs only once and reusing for concurrent calls.
|
|
147
|
+
* This prevents race conditions when stdout() and stderr() are called in parallel.
|
|
148
|
+
*/
|
|
149
|
+
private async getCachedOutput(opts?: { signal?: AbortSignal }): Promise<{
|
|
150
|
+
stdout: string;
|
|
151
|
+
stderr: string;
|
|
152
|
+
both: string;
|
|
153
|
+
}> {
|
|
154
|
+
if (this.outputCache) {
|
|
155
|
+
return this.outputCache;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (!this.outputCachePromise) {
|
|
159
|
+
this.outputCachePromise = (async () => {
|
|
160
|
+
try {
|
|
161
|
+
let stdout = "";
|
|
162
|
+
let stderr = "";
|
|
163
|
+
let both = "";
|
|
164
|
+
for await (const log of this.logs({ signal: opts?.signal })) {
|
|
165
|
+
both += log.data;
|
|
166
|
+
if (log.stream === "stdout") {
|
|
167
|
+
stdout += log.data;
|
|
168
|
+
} else {
|
|
169
|
+
stderr += log.data;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.outputCache = { stdout, stderr, both };
|
|
173
|
+
return this.outputCache;
|
|
174
|
+
} catch (err) {
|
|
175
|
+
// Clear the promise so future calls can retry
|
|
176
|
+
this.outputCachePromise = null;
|
|
177
|
+
throw err;
|
|
178
|
+
}
|
|
179
|
+
})();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return this.outputCachePromise;
|
|
183
|
+
}
|
|
184
|
+
|
|
137
185
|
/**
|
|
138
186
|
* Get the output of `stdout`, `stderr`, or both as a string.
|
|
139
187
|
*
|
|
@@ -149,13 +197,8 @@ export class Command {
|
|
|
149
197
|
stream: "stdout" | "stderr" | "both" = "both",
|
|
150
198
|
opts?: { signal?: AbortSignal },
|
|
151
199
|
) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (stream === "both" || log.stream === stream) {
|
|
155
|
-
data += log.data;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return data;
|
|
200
|
+
const cached = await this.getCachedOutput(opts);
|
|
201
|
+
return cached[stream];
|
|
159
202
|
}
|
|
160
203
|
|
|
161
204
|
/**
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Autogenerated by inject-version.ts
|
|
2
|
-
export const VERSION = "1.1.
|
|
2
|
+
export const VERSION = "1.1.6";
|