@prisma/compute-sdk 0.2.0 → 0.3.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/dist/api-client.d.ts +229 -4
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +46 -26
- package/dist/api-client.js.map +1 -1
- package/dist/archive.d.ts.map +1 -1
- package/dist/archive.js +25 -11
- package/dist/archive.js.map +1 -1
- package/dist/compute-client.d.ts +8 -1
- package/dist/compute-client.d.ts.map +1 -1
- package/dist/compute-client.js +40 -11
- package/dist/compute-client.js.map +1 -1
- package/dist/errors.d.ts +10 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/polling.d.ts.map +1 -1
- package/dist/polling.js +1 -1
- package/dist/polling.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +8 -6
- package/src/api-client.ts +69 -15
- package/src/archive.ts +33 -9
- package/src/compute-client.ts +64 -11
- package/src/errors.ts +13 -0
- package/src/index.ts +4 -0
- package/src/polling.ts +3 -1
- package/src/types.ts +11 -0
package/dist/api-client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ManagementApiClient, paths } from "@prisma/management-api-sdk";
|
|
2
2
|
import { Result } from "better-result";
|
|
3
|
-
import { ApiError, AuthenticationError } from "./errors.ts";
|
|
4
|
-
export type ApiClientError = AuthenticationError | ApiError;
|
|
3
|
+
import { ApiError, AuthenticationError, CancelledError } from "./errors.ts";
|
|
4
|
+
export type ApiClientError = CancelledError | AuthenticationError | ApiError;
|
|
5
5
|
/**
|
|
6
6
|
* Lean internal wrapper around ManagementApiClient.
|
|
7
7
|
*
|
|
@@ -25,7 +25,7 @@ export declare class InternalApiClient {
|
|
|
25
25
|
name: string;
|
|
26
26
|
};
|
|
27
27
|
}[], ApiClientError>>;
|
|
28
|
-
|
|
28
|
+
createProject(body: CreateProjectBody, signal?: AbortSignal): Promise<import("better-result").Ok<{
|
|
29
29
|
id: string;
|
|
30
30
|
type: "project";
|
|
31
31
|
url: string;
|
|
@@ -37,6 +37,99 @@ export declare class InternalApiClient {
|
|
|
37
37
|
url: string;
|
|
38
38
|
name: string;
|
|
39
39
|
};
|
|
40
|
+
database: {
|
|
41
|
+
id: string;
|
|
42
|
+
type: "database";
|
|
43
|
+
url: string;
|
|
44
|
+
name: string;
|
|
45
|
+
status: "provisioning" | "ready";
|
|
46
|
+
createdAt: string;
|
|
47
|
+
isDefault: boolean;
|
|
48
|
+
defaultConnectionId: string | null;
|
|
49
|
+
connections: {
|
|
50
|
+
id: string;
|
|
51
|
+
type: "connection";
|
|
52
|
+
url: string;
|
|
53
|
+
name: string;
|
|
54
|
+
createdAt: string;
|
|
55
|
+
kind: "postgres" | "accelerate";
|
|
56
|
+
endpoints: {
|
|
57
|
+
direct?: {
|
|
58
|
+
host: string;
|
|
59
|
+
port: number;
|
|
60
|
+
connectionString?: string;
|
|
61
|
+
};
|
|
62
|
+
pooled?: {
|
|
63
|
+
host: string;
|
|
64
|
+
port: number;
|
|
65
|
+
connectionString?: string;
|
|
66
|
+
};
|
|
67
|
+
accelerate?: {
|
|
68
|
+
host: string;
|
|
69
|
+
port: number;
|
|
70
|
+
connectionString?: string;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
directConnection?: {
|
|
74
|
+
host: string;
|
|
75
|
+
pass: string;
|
|
76
|
+
user: string;
|
|
77
|
+
} | null;
|
|
78
|
+
database: {
|
|
79
|
+
id: string;
|
|
80
|
+
url: string;
|
|
81
|
+
name: string;
|
|
82
|
+
};
|
|
83
|
+
}[];
|
|
84
|
+
region: {
|
|
85
|
+
id: string;
|
|
86
|
+
name: string;
|
|
87
|
+
};
|
|
88
|
+
source: {
|
|
89
|
+
type: "empty";
|
|
90
|
+
} | {
|
|
91
|
+
type: "backup";
|
|
92
|
+
databaseId: string;
|
|
93
|
+
backupId: string;
|
|
94
|
+
} | {
|
|
95
|
+
type: "database";
|
|
96
|
+
databaseId: string;
|
|
97
|
+
} | null;
|
|
98
|
+
apiKeys: {
|
|
99
|
+
id: string;
|
|
100
|
+
type: "connection";
|
|
101
|
+
url: string;
|
|
102
|
+
name: string;
|
|
103
|
+
createdAt: string;
|
|
104
|
+
kind: "postgres" | "accelerate";
|
|
105
|
+
endpoints: {
|
|
106
|
+
direct?: {
|
|
107
|
+
host: string;
|
|
108
|
+
port: number;
|
|
109
|
+
};
|
|
110
|
+
pooled?: {
|
|
111
|
+
host: string;
|
|
112
|
+
port: number;
|
|
113
|
+
};
|
|
114
|
+
accelerate?: {
|
|
115
|
+
host: string;
|
|
116
|
+
port: number;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
connectionString: string;
|
|
120
|
+
directConnection?: {
|
|
121
|
+
host: string;
|
|
122
|
+
pass: string;
|
|
123
|
+
user: string;
|
|
124
|
+
} | null;
|
|
125
|
+
}[];
|
|
126
|
+
connectionString: string | null;
|
|
127
|
+
directConnection: {
|
|
128
|
+
host: string;
|
|
129
|
+
pass: string;
|
|
130
|
+
user: string;
|
|
131
|
+
} | null;
|
|
132
|
+
} | null;
|
|
40
133
|
}, ApiClientError> | import("better-result").Err<{
|
|
41
134
|
id: string;
|
|
42
135
|
type: "project";
|
|
@@ -49,6 +142,124 @@ export declare class InternalApiClient {
|
|
|
49
142
|
url: string;
|
|
50
143
|
name: string;
|
|
51
144
|
};
|
|
145
|
+
database: {
|
|
146
|
+
id: string;
|
|
147
|
+
type: "database";
|
|
148
|
+
url: string;
|
|
149
|
+
name: string;
|
|
150
|
+
status: "provisioning" | "ready";
|
|
151
|
+
createdAt: string;
|
|
152
|
+
isDefault: boolean;
|
|
153
|
+
defaultConnectionId: string | null;
|
|
154
|
+
connections: {
|
|
155
|
+
id: string;
|
|
156
|
+
type: "connection";
|
|
157
|
+
url: string;
|
|
158
|
+
name: string;
|
|
159
|
+
createdAt: string;
|
|
160
|
+
kind: "postgres" | "accelerate";
|
|
161
|
+
endpoints: {
|
|
162
|
+
direct?: {
|
|
163
|
+
host: string;
|
|
164
|
+
port: number;
|
|
165
|
+
connectionString?: string;
|
|
166
|
+
};
|
|
167
|
+
pooled?: {
|
|
168
|
+
host: string;
|
|
169
|
+
port: number;
|
|
170
|
+
connectionString?: string;
|
|
171
|
+
};
|
|
172
|
+
accelerate?: {
|
|
173
|
+
host: string;
|
|
174
|
+
port: number;
|
|
175
|
+
connectionString?: string;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
directConnection?: {
|
|
179
|
+
host: string;
|
|
180
|
+
pass: string;
|
|
181
|
+
user: string;
|
|
182
|
+
} | null;
|
|
183
|
+
database: {
|
|
184
|
+
id: string;
|
|
185
|
+
url: string;
|
|
186
|
+
name: string;
|
|
187
|
+
};
|
|
188
|
+
}[];
|
|
189
|
+
region: {
|
|
190
|
+
id: string;
|
|
191
|
+
name: string;
|
|
192
|
+
};
|
|
193
|
+
source: {
|
|
194
|
+
type: "empty";
|
|
195
|
+
} | {
|
|
196
|
+
type: "backup";
|
|
197
|
+
databaseId: string;
|
|
198
|
+
backupId: string;
|
|
199
|
+
} | {
|
|
200
|
+
type: "database";
|
|
201
|
+
databaseId: string;
|
|
202
|
+
} | null;
|
|
203
|
+
apiKeys: {
|
|
204
|
+
id: string;
|
|
205
|
+
type: "connection";
|
|
206
|
+
url: string;
|
|
207
|
+
name: string;
|
|
208
|
+
createdAt: string;
|
|
209
|
+
kind: "postgres" | "accelerate";
|
|
210
|
+
endpoints: {
|
|
211
|
+
direct?: {
|
|
212
|
+
host: string;
|
|
213
|
+
port: number;
|
|
214
|
+
};
|
|
215
|
+
pooled?: {
|
|
216
|
+
host: string;
|
|
217
|
+
port: number;
|
|
218
|
+
};
|
|
219
|
+
accelerate?: {
|
|
220
|
+
host: string;
|
|
221
|
+
port: number;
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
connectionString: string;
|
|
225
|
+
directConnection?: {
|
|
226
|
+
host: string;
|
|
227
|
+
pass: string;
|
|
228
|
+
user: string;
|
|
229
|
+
} | null;
|
|
230
|
+
}[];
|
|
231
|
+
connectionString: string | null;
|
|
232
|
+
directConnection: {
|
|
233
|
+
host: string;
|
|
234
|
+
pass: string;
|
|
235
|
+
user: string;
|
|
236
|
+
} | null;
|
|
237
|
+
} | null;
|
|
238
|
+
}, ApiClientError>>;
|
|
239
|
+
getProject(id: string, signal?: AbortSignal): Promise<import("better-result").Err<{
|
|
240
|
+
id: string;
|
|
241
|
+
type: "project";
|
|
242
|
+
url: string;
|
|
243
|
+
name: string;
|
|
244
|
+
createdAt: string;
|
|
245
|
+
defaultRegion: string | null;
|
|
246
|
+
workspace: {
|
|
247
|
+
id: string;
|
|
248
|
+
url: string;
|
|
249
|
+
name: string;
|
|
250
|
+
};
|
|
251
|
+
}, ApiClientError> | import("better-result").Ok<{
|
|
252
|
+
id: string;
|
|
253
|
+
type: "project";
|
|
254
|
+
url: string;
|
|
255
|
+
name: string;
|
|
256
|
+
createdAt: string;
|
|
257
|
+
defaultRegion: string | null;
|
|
258
|
+
workspace: {
|
|
259
|
+
id: string;
|
|
260
|
+
url: string;
|
|
261
|
+
name: string;
|
|
262
|
+
};
|
|
52
263
|
}, ApiClientError>>;
|
|
53
264
|
listProjectServices(projectId: string, signal?: AbortSignal): Promise<Result<{
|
|
54
265
|
id: string;
|
|
@@ -61,6 +272,7 @@ export declare class InternalApiClient {
|
|
|
61
272
|
};
|
|
62
273
|
projectId: string;
|
|
63
274
|
latestVersionId: string | null;
|
|
275
|
+
serviceEndpointDomain: string;
|
|
64
276
|
createdAt: string;
|
|
65
277
|
}[], ApiClientError>>;
|
|
66
278
|
createProjectService(projectId: string, body: CreateProjectServiceBody, signal?: AbortSignal): Promise<import("better-result").Err<{
|
|
@@ -74,6 +286,7 @@ export declare class InternalApiClient {
|
|
|
74
286
|
};
|
|
75
287
|
projectId: string;
|
|
76
288
|
latestVersionId: string | null;
|
|
289
|
+
serviceEndpointDomain: string;
|
|
77
290
|
createdAt: string;
|
|
78
291
|
}, ApiClientError> | import("better-result").Ok<{
|
|
79
292
|
id: string;
|
|
@@ -86,6 +299,7 @@ export declare class InternalApiClient {
|
|
|
86
299
|
};
|
|
87
300
|
projectId: string;
|
|
88
301
|
latestVersionId: string | null;
|
|
302
|
+
serviceEndpointDomain: string;
|
|
89
303
|
createdAt: string;
|
|
90
304
|
}, ApiClientError>>;
|
|
91
305
|
getService(computeServiceId: string, signal?: AbortSignal): Promise<import("better-result").Err<{
|
|
@@ -99,6 +313,7 @@ export declare class InternalApiClient {
|
|
|
99
313
|
};
|
|
100
314
|
projectId: string;
|
|
101
315
|
latestVersionId: string | null;
|
|
316
|
+
serviceEndpointDomain: string;
|
|
102
317
|
createdAt: string;
|
|
103
318
|
}, ApiClientError> | import("better-result").Ok<{
|
|
104
319
|
id: string;
|
|
@@ -111,6 +326,7 @@ export declare class InternalApiClient {
|
|
|
111
326
|
};
|
|
112
327
|
projectId: string;
|
|
113
328
|
latestVersionId: string | null;
|
|
329
|
+
serviceEndpointDomain: string;
|
|
114
330
|
createdAt: string;
|
|
115
331
|
}, ApiClientError>>;
|
|
116
332
|
deleteService(computeServiceId: string, signal?: AbortSignal): Promise<Result<void, ApiClientError>>;
|
|
@@ -144,6 +360,9 @@ export declare class InternalApiClient {
|
|
|
144
360
|
envVars?: {
|
|
145
361
|
[key: string]: string;
|
|
146
362
|
};
|
|
363
|
+
portMapping?: {
|
|
364
|
+
http?: number;
|
|
365
|
+
};
|
|
147
366
|
createdAt: string;
|
|
148
367
|
}, ApiClientError> | import("better-result").Ok<{
|
|
149
368
|
id: string;
|
|
@@ -155,6 +374,9 @@ export declare class InternalApiClient {
|
|
|
155
374
|
envVars?: {
|
|
156
375
|
[key: string]: string;
|
|
157
376
|
};
|
|
377
|
+
portMapping?: {
|
|
378
|
+
http?: number;
|
|
379
|
+
};
|
|
158
380
|
createdAt: string;
|
|
159
381
|
}, ApiClientError>>;
|
|
160
382
|
startVersion(versionId: string, signal?: AbortSignal): Promise<import("better-result").Err<{
|
|
@@ -165,6 +387,10 @@ export declare class InternalApiClient {
|
|
|
165
387
|
stopVersion(versionId: string, signal?: AbortSignal): Promise<Result<void, ApiClientError>>;
|
|
166
388
|
deleteVersion(versionId: string, signal?: AbortSignal): Promise<Result<void, ApiClientError>>;
|
|
167
389
|
}
|
|
390
|
+
type SdkCreateProjectBody = NonNullable<paths["/v1/projects"]["post"]["requestBody"]>["content"]["application/json"];
|
|
391
|
+
type CreateProjectBody = Omit<SdkCreateProjectBody, "region"> & {
|
|
392
|
+
region?: string;
|
|
393
|
+
};
|
|
168
394
|
type SdkCreateProjectServiceBody = NonNullable<paths["/v1/projects/{projectId}/compute-services"]["post"]["requestBody"]>["content"]["application/json"];
|
|
169
395
|
type CreateProjectServiceBody = Omit<SdkCreateProjectServiceBody, "regionId"> & {
|
|
170
396
|
regionId?: string;
|
|
@@ -173,7 +399,6 @@ export type CreateServiceVersionBody = NonNullable<paths["/v1/compute-services/{
|
|
|
173
399
|
/** Extract the upload URL from a version creation response. */
|
|
174
400
|
export declare function readUploadUrl(data: {
|
|
175
401
|
uploadUrl?: string | null;
|
|
176
|
-
artifactUploadUrl?: string | null;
|
|
177
402
|
}): string | null;
|
|
178
403
|
/** Normalize a preview domain to a clickable https URL. */
|
|
179
404
|
export declare function toDeploymentUrl(value: string): string;
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api-client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Result } from "better-result";
|
|
2
|
-
import { ApiError, AuthenticationError } from "./errors.js";
|
|
2
|
+
import { ApiError, AuthenticationError, CancelledError } from "./errors.js";
|
|
3
3
|
/**
|
|
4
4
|
* Lean internal wrapper around ManagementApiClient.
|
|
5
5
|
*
|
|
@@ -16,38 +16,44 @@ export class InternalApiClient {
|
|
|
16
16
|
return this.#requestPaginated((cursor) => this.#client.GET("/v1/projects", {
|
|
17
17
|
params: { query: cursor ? { cursor } : {} },
|
|
18
18
|
signal,
|
|
19
|
-
}), "/v1/projects");
|
|
19
|
+
}), "/v1/projects", signal);
|
|
20
|
+
}
|
|
21
|
+
async createProject(body, signal) {
|
|
22
|
+
return this.#request(this.#client.POST("/v1/projects", {
|
|
23
|
+
body: body,
|
|
24
|
+
signal,
|
|
25
|
+
}), "/v1/projects", signal).then((r) => r.map((body) => body.data));
|
|
20
26
|
}
|
|
21
27
|
async getProject(id, signal) {
|
|
22
28
|
return this.#request(this.#client.GET("/v1/projects/{id}", {
|
|
23
29
|
params: { path: { id } },
|
|
24
30
|
signal,
|
|
25
|
-
}), "/v1/projects/{id}").then((r) => r.map((body) => body.data));
|
|
31
|
+
}), "/v1/projects/{id}", signal).then((r) => r.map((body) => body.data));
|
|
26
32
|
}
|
|
27
33
|
async listProjectServices(projectId, signal) {
|
|
28
34
|
return this.#requestPaginated((cursor) => this.#client.GET("/v1/projects/{projectId}/compute-services", {
|
|
29
35
|
params: { path: { projectId }, query: cursor ? { cursor } : {} },
|
|
30
36
|
signal,
|
|
31
|
-
}), "/v1/projects/{projectId}/compute-services");
|
|
37
|
+
}), "/v1/projects/{projectId}/compute-services", signal);
|
|
32
38
|
}
|
|
33
39
|
async createProjectService(projectId, body, signal) {
|
|
34
40
|
return this.#request(this.#client.POST("/v1/projects/{projectId}/compute-services", {
|
|
35
41
|
params: { path: { projectId } },
|
|
36
42
|
body: body,
|
|
37
43
|
signal,
|
|
38
|
-
}), "/v1/projects/{projectId}/compute-services").then((r) => r.map((body) => body.data));
|
|
44
|
+
}), "/v1/projects/{projectId}/compute-services", signal).then((r) => r.map((body) => body.data));
|
|
39
45
|
}
|
|
40
46
|
async getService(computeServiceId, signal) {
|
|
41
47
|
return this.#request(this.#client.GET("/v1/compute-services/{computeServiceId}", {
|
|
42
48
|
params: { path: { computeServiceId } },
|
|
43
49
|
signal,
|
|
44
|
-
}), "/v1/compute-services/{computeServiceId}").then((r) => r.map((body) => body.data));
|
|
50
|
+
}), "/v1/compute-services/{computeServiceId}", signal).then((r) => r.map((body) => body.data));
|
|
45
51
|
}
|
|
46
52
|
async deleteService(computeServiceId, signal) {
|
|
47
53
|
return this.#unwrapVoid(this.#client.DELETE("/v1/compute-services/{computeServiceId}", {
|
|
48
54
|
params: { path: { computeServiceId } },
|
|
49
55
|
signal,
|
|
50
|
-
}));
|
|
56
|
+
}), signal);
|
|
51
57
|
}
|
|
52
58
|
async listServiceVersions(computeServiceId, signal) {
|
|
53
59
|
return this.#requestPaginated((cursor) => this.#client.GET("/v1/compute-services/{computeServiceId}/versions", {
|
|
@@ -56,55 +62,61 @@ export class InternalApiClient {
|
|
|
56
62
|
query: cursor ? { cursor } : {},
|
|
57
63
|
},
|
|
58
64
|
signal,
|
|
59
|
-
}), "/v1/compute-services/{computeServiceId}/versions");
|
|
65
|
+
}), "/v1/compute-services/{computeServiceId}/versions", signal);
|
|
60
66
|
}
|
|
61
67
|
async createServiceVersion(computeServiceId, body, signal) {
|
|
62
68
|
return this.#request(this.#client.POST("/v1/compute-services/{computeServiceId}/versions", {
|
|
63
69
|
params: { path: { computeServiceId } },
|
|
64
70
|
body,
|
|
65
71
|
signal,
|
|
66
|
-
}), "/v1/compute-services/{computeServiceId}/versions").then((r) => r.map((body) => body.data));
|
|
72
|
+
}), "/v1/compute-services/{computeServiceId}/versions", signal).then((r) => r.map((body) => body.data));
|
|
67
73
|
}
|
|
68
74
|
async getVersion(versionId, signal) {
|
|
69
75
|
return this.#request(this.#client.GET("/v1/compute-services/versions/{versionId}", {
|
|
70
76
|
params: { path: { versionId } },
|
|
71
77
|
signal,
|
|
72
|
-
}), "/v1/compute-services/versions/{versionId}").then((r) => r.map((body) => body.data));
|
|
78
|
+
}), "/v1/compute-services/versions/{versionId}", signal).then((r) => r.map((body) => body.data));
|
|
73
79
|
}
|
|
74
80
|
async startVersion(versionId, signal) {
|
|
75
81
|
return this.#request(this.#client.POST("/v1/compute-services/versions/{versionId}/start", {
|
|
76
82
|
params: { path: { versionId } },
|
|
77
83
|
signal,
|
|
78
|
-
}), "/v1/compute-services/versions/{versionId}/start").then((r) => r.map((body) => body.data));
|
|
84
|
+
}), "/v1/compute-services/versions/{versionId}/start", signal).then((r) => r.map((body) => body.data));
|
|
79
85
|
}
|
|
80
86
|
async stopVersion(versionId, signal) {
|
|
81
87
|
return this.#unwrapVoid(this.#client.POST("/v1/compute-services/versions/{versionId}/stop", {
|
|
82
88
|
params: { path: { versionId } },
|
|
83
89
|
signal,
|
|
84
|
-
}));
|
|
90
|
+
}), signal);
|
|
85
91
|
}
|
|
86
92
|
async deleteVersion(versionId, signal) {
|
|
87
93
|
return this.#unwrapVoid(this.#client.DELETE("/v1/compute-services/versions/{versionId}", {
|
|
88
94
|
params: { path: { versionId } },
|
|
89
95
|
signal,
|
|
90
|
-
}));
|
|
96
|
+
}), signal);
|
|
91
97
|
}
|
|
92
|
-
async #request(request, endpoint) {
|
|
93
|
-
|
|
98
|
+
async #request(request, endpoint, signal) {
|
|
99
|
+
let result;
|
|
100
|
+
try {
|
|
101
|
+
result = await request;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
return Result.err(parseRequestError(error, undefined, signal));
|
|
105
|
+
}
|
|
94
106
|
if (result.error) {
|
|
95
|
-
return Result.err(
|
|
107
|
+
return Result.err(parseRequestError(result.error, result.response, signal));
|
|
96
108
|
}
|
|
97
109
|
const body = result.data;
|
|
98
110
|
if (body == null) {
|
|
99
|
-
return Result.err(
|
|
111
|
+
return Result.err(parseRequestError(undefined, undefined, signal, `Management API returned an empty response body for ${endpoint}`));
|
|
100
112
|
}
|
|
101
113
|
return Result.ok(body);
|
|
102
114
|
}
|
|
103
|
-
async #requestPaginated(makeRequest, endpoint) {
|
|
115
|
+
async #requestPaginated(makeRequest, endpoint, signal) {
|
|
104
116
|
const allItems = [];
|
|
105
117
|
let cursor;
|
|
106
118
|
for (;;) {
|
|
107
|
-
const result = await this.#request(makeRequest(cursor), endpoint);
|
|
119
|
+
const result = await this.#request(makeRequest(cursor), endpoint, signal);
|
|
108
120
|
if (result.isErr())
|
|
109
121
|
return result;
|
|
110
122
|
allItems.push(...result.value.data);
|
|
@@ -115,10 +127,16 @@ export class InternalApiClient {
|
|
|
115
127
|
}
|
|
116
128
|
return Result.ok(allItems);
|
|
117
129
|
}
|
|
118
|
-
async #unwrapVoid(request) {
|
|
119
|
-
|
|
130
|
+
async #unwrapVoid(request, signal) {
|
|
131
|
+
let result;
|
|
132
|
+
try {
|
|
133
|
+
result = await request;
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
return Result.err(parseRequestError(error, undefined, signal));
|
|
137
|
+
}
|
|
120
138
|
if (result.error) {
|
|
121
|
-
return Result.err(
|
|
139
|
+
return Result.err(parseRequestError(result.error, result.response, signal));
|
|
122
140
|
}
|
|
123
141
|
return Result.ok(undefined);
|
|
124
142
|
}
|
|
@@ -168,15 +186,17 @@ function parseApiError(error, response, fallbackMessage) {
|
|
|
168
186
|
traceHeaders,
|
|
169
187
|
});
|
|
170
188
|
}
|
|
189
|
+
function parseRequestError(error, response, signal, fallbackMessage) {
|
|
190
|
+
if (signal?.aborted) {
|
|
191
|
+
return new CancelledError();
|
|
192
|
+
}
|
|
193
|
+
return parseApiError(error, response, fallbackMessage);
|
|
194
|
+
}
|
|
171
195
|
/** Extract the upload URL from a version creation response. */
|
|
172
196
|
export function readUploadUrl(data) {
|
|
173
197
|
if (typeof data.uploadUrl === "string" && data.uploadUrl.length > 0) {
|
|
174
198
|
return data.uploadUrl;
|
|
175
199
|
}
|
|
176
|
-
if (typeof data.artifactUploadUrl === "string" &&
|
|
177
|
-
data.artifactUploadUrl.length > 0) {
|
|
178
|
-
return data.artifactUploadUrl;
|
|
179
|
-
}
|
|
180
200
|
return null;
|
|
181
201
|
}
|
|
182
202
|
/** Normalize a preview domain to a clickable https URL. */
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/archive.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,CAAC,CAuBrB"}
|
package/dist/archive.js
CHANGED
|
@@ -14,8 +14,9 @@ const COMPUTE_MANIFEST_VERSION = "1";
|
|
|
14
14
|
*/
|
|
15
15
|
export async function createArchive(directory, entrypoint) {
|
|
16
16
|
const packer = pack();
|
|
17
|
+
const rootPath = path.resolve(directory);
|
|
17
18
|
// Walk the directory and add all files
|
|
18
|
-
await addDirectory(packer,
|
|
19
|
+
await addDirectory(packer, rootPath, rootPath, "bundle");
|
|
19
20
|
// Inject the manifest as a synthetic entry
|
|
20
21
|
const manifest = JSON.stringify({
|
|
21
22
|
manifestVersion: COMPUTE_MANIFEST_VERSION,
|
|
@@ -27,34 +28,36 @@ export async function createArchive(directory, entrypoint) {
|
|
|
27
28
|
// Pipe through gzip and collect into buffer
|
|
28
29
|
return await collectGzipped(packer);
|
|
29
30
|
}
|
|
30
|
-
async function addDirectory(packer, fsPath, tarPrefix) {
|
|
31
|
-
const
|
|
31
|
+
async function addDirectory(packer, rootPath, fsPath, tarPrefix) {
|
|
32
|
+
const directoryPath = resolvePathWithinRoot(rootPath, fsPath);
|
|
33
|
+
const entries = await readdir(directoryPath, { withFileTypes: true });
|
|
32
34
|
for (const entry of entries) {
|
|
33
|
-
const fullPath = path.join(
|
|
35
|
+
const fullPath = path.join(directoryPath, entry.name);
|
|
34
36
|
const tarPath = `${tarPrefix}/${entry.name}`;
|
|
35
37
|
if (entry.isSymbolicLink()) {
|
|
36
38
|
// Dereference symlinks: stat the target and add accordingly
|
|
37
39
|
const target = await readlink(fullPath);
|
|
38
|
-
const resolvedPath = path.resolve(
|
|
40
|
+
const resolvedPath = resolvePathWithinRoot(rootPath, path.resolve(directoryPath, target));
|
|
39
41
|
const resolvedStat = await stat(resolvedPath);
|
|
40
42
|
if (resolvedStat.isDirectory()) {
|
|
41
|
-
await addDirectory(packer, resolvedPath, tarPath);
|
|
43
|
+
await addDirectory(packer, rootPath, resolvedPath, tarPath);
|
|
42
44
|
}
|
|
43
45
|
else if (resolvedStat.isFile()) {
|
|
44
|
-
await addFile(packer, resolvedPath, tarPath, resolvedStat);
|
|
46
|
+
await addFile(packer, rootPath, resolvedPath, tarPath, resolvedStat);
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
else if (entry.isDirectory()) {
|
|
48
|
-
await addDirectory(packer, fullPath, tarPath);
|
|
50
|
+
await addDirectory(packer, rootPath, fullPath, tarPath);
|
|
49
51
|
}
|
|
50
52
|
else if (entry.isFile()) {
|
|
51
53
|
const fileStat = await lstat(fullPath);
|
|
52
|
-
await addFile(packer, fullPath, tarPath, fileStat);
|
|
54
|
+
await addFile(packer, rootPath, fullPath, tarPath, fileStat);
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
|
-
async function addFile(packer, fsPath, tarPath, fileStat) {
|
|
57
|
-
const
|
|
58
|
+
async function addFile(packer, rootPath, fsPath, tarPath, fileStat) {
|
|
59
|
+
const filePath = resolvePathWithinRoot(rootPath, fsPath);
|
|
60
|
+
const content = await readFile(filePath);
|
|
58
61
|
packer.entry({
|
|
59
62
|
name: tarPath,
|
|
60
63
|
size: content.length,
|
|
@@ -62,6 +65,17 @@ async function addFile(packer, fsPath, tarPath, fileStat) {
|
|
|
62
65
|
mtime: fileStat.mtime,
|
|
63
66
|
}, content);
|
|
64
67
|
}
|
|
68
|
+
function resolvePathWithinRoot(rootPath, fsPath) {
|
|
69
|
+
const normalizedRootPath = path.resolve(rootPath);
|
|
70
|
+
const resolvedPath = path.resolve(fsPath);
|
|
71
|
+
const relativePath = path.relative(normalizedRootPath, resolvedPath);
|
|
72
|
+
if (relativePath === ".." ||
|
|
73
|
+
relativePath.startsWith(`..${path.sep}`) ||
|
|
74
|
+
path.isAbsolute(relativePath)) {
|
|
75
|
+
throw new Error(`Symlink target escapes archive root: ${resolvedPath}`);
|
|
76
|
+
}
|
|
77
|
+
return resolvedPath;
|
|
78
|
+
}
|
|
65
79
|
function collectGzipped(packer) {
|
|
66
80
|
return new Promise((resolve, reject) => {
|
|
67
81
|
const chunks = [];
|
package/dist/archive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAa,IAAI,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,wBAAwB,GAAG,GAAY,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,UAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"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"}
|