@renderinc/sdk 0.1.0 → 0.2.1
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/CHANGELOG.md +33 -0
- package/README.md +17 -7
- package/biome.json +84 -0
- package/dist/experimental/blob/api.d.ts +11 -0
- package/dist/experimental/blob/api.d.ts.map +1 -0
- package/dist/experimental/blob/api.js +44 -0
- package/dist/experimental/blob/client.d.ts +21 -0
- package/dist/experimental/blob/client.d.ts.map +1 -0
- package/dist/experimental/blob/client.js +127 -0
- package/dist/experimental/blob/index.d.ts +5 -0
- package/dist/experimental/blob/index.d.ts.map +1 -0
- package/dist/experimental/blob/index.js +8 -0
- package/dist/experimental/blob/types.d.ts +49 -0
- package/dist/experimental/blob/types.d.ts.map +1 -0
- package/dist/experimental/experimental.d.ts +12 -0
- package/dist/experimental/experimental.d.ts.map +1 -0
- package/dist/experimental/experimental.js +16 -0
- package/dist/experimental/index.d.ts +3 -0
- package/dist/experimental/index.d.ts.map +1 -0
- package/dist/experimental/index.js +10 -0
- package/dist/experimental/object/api.d.ts +11 -0
- package/dist/experimental/object/api.d.ts.map +1 -0
- package/dist/experimental/object/api.js +44 -0
- package/dist/experimental/object/client.d.ts +21 -0
- package/dist/experimental/object/client.d.ts.map +1 -0
- package/dist/experimental/object/client.js +127 -0
- package/dist/experimental/object/index.d.ts +5 -0
- package/dist/experimental/object/index.d.ts.map +1 -0
- package/dist/experimental/object/index.js +8 -0
- package/dist/experimental/object/types.d.ts +49 -0
- package/dist/experimental/object/types.d.ts.map +1 -0
- package/dist/experimental/object/types.js +2 -0
- package/dist/generated/schema.d.ts +9910 -0
- package/dist/generated/schema.d.ts.map +1 -0
- package/dist/generated/schema.js +2 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/render.d.ts +2 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +4 -2
- package/dist/utils/create-api-client.d.ts +1 -1
- package/dist/utils/create-api-client.d.ts.map +1 -1
- package/dist/utils/create-api-client.js +2 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +23 -0
- package/dist/workflows/client/client.d.ts +1 -1
- package/dist/workflows/client/client.d.ts.map +1 -1
- package/dist/workflows/client/sse.d.ts +2 -2
- package/dist/workflows/client/sse.d.ts.map +1 -1
- package/dist/workflows/client/sse.js +2 -0
- package/dist/workflows/client/types.d.ts +1 -1
- package/dist/workflows/client/types.d.ts.map +1 -1
- package/dist/workflows/executor.d.ts +2 -2
- package/dist/workflows/executor.d.ts.map +1 -1
- package/dist/workflows/registry.d.ts +1 -1
- package/dist/workflows/registry.d.ts.map +1 -1
- package/dist/workflows/registry.js +13 -6
- package/dist/workflows/runner.d.ts.map +1 -1
- package/dist/workflows/runner.js +2 -0
- package/dist/workflows/schema.d.ts +9 -0
- package/dist/workflows/schema.d.ts.map +1 -1
- package/dist/workflows/task.d.ts +1 -0
- package/dist/workflows/task.d.ts.map +1 -1
- package/dist/workflows/task.js +34 -0
- package/dist/workflows/types.d.ts +3 -1
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/uds.d.ts +1 -1
- package/dist/workflows/uds.d.ts.map +1 -1
- package/dist/workflows/uds.js +27 -82
- package/examples/client/main.ts +42 -0
- package/examples/client/package-lock.json +601 -0
- package/examples/client/package.json +16 -0
- package/examples/client/tsconfig.json +17 -0
- package/examples/task/main.ts +90 -0
- package/examples/task/package-lock.json +584 -0
- package/examples/task/package.json +16 -0
- package/examples/task/tsconfig.json +17 -0
- package/package.json +19 -27
- package/src/errors.test.ts +75 -0
- package/src/errors.ts +73 -0
- package/src/experimental/experimental.ts +56 -0
- package/src/experimental/index.ts +24 -0
- package/src/experimental/object/api.ts +91 -0
- package/src/experimental/object/client.test.ts +138 -0
- package/src/experimental/object/client.ts +317 -0
- package/src/experimental/object/index.ts +22 -0
- package/src/experimental/object/types.test.ts +87 -0
- package/src/experimental/object/types.ts +131 -0
- package/src/generated/schema.ts +12937 -0
- package/src/index.ts +7 -0
- package/src/render.ts +35 -0
- package/src/utils/create-api-client.ts +13 -0
- package/src/utils/get-base-url.test.ts +58 -0
- package/src/utils/get-base-url.ts +16 -0
- package/src/version.ts +37 -0
- package/src/workflows/client/client.test.ts +68 -0
- package/src/workflows/client/client.ts +142 -0
- package/src/workflows/client/create-client.ts +17 -0
- package/src/workflows/client/index.ts +3 -0
- package/src/workflows/client/sse.ts +95 -0
- package/src/workflows/client/types.ts +56 -0
- package/src/workflows/executor.ts +124 -0
- package/src/workflows/index.ts +7 -0
- package/src/workflows/registry.test.ts +76 -0
- package/src/workflows/registry.ts +88 -0
- package/src/workflows/runner.ts +38 -0
- package/src/workflows/schema.ts +348 -0
- package/src/workflows/task.ts +117 -0
- package/src/workflows/types.test.ts +52 -0
- package/src/workflows/types.ts +89 -0
- package/src/workflows/uds.ts +139 -0
- package/test-types.ts +14 -0
- package/tsconfig.build.json +4 -0
- package/tsconfig.json +23 -0
- package/vitest.config.ts +8 -0
- package/dist/workflows/client/errors.d.ts +0 -25
- package/dist/workflows/client/errors.d.ts.map +0 -1
- package/dist/workflows/client/errors.js +0 -56
- package/dist/workflows/client/schema.d.ts +0 -9322
- package/dist/workflows/client/schema.d.ts.map +0 -1
- package/dist/workflows/client/workflows.d.ts +0 -15
- package/dist/workflows/client/workflows.d.ts.map +0 -1
- package/dist/workflows/client/workflows.js +0 -63
- /package/dist/{workflows/client/schema.js → experimental/blob/types.js} +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScopedObjectClient = exports.ObjectClient = void 0;
|
|
4
|
+
const errors_js_1 = require("../../errors.js");
|
|
5
|
+
class ObjectClient {
|
|
6
|
+
constructor(apiClient) {
|
|
7
|
+
this.apiClient = apiClient;
|
|
8
|
+
}
|
|
9
|
+
async put(input) {
|
|
10
|
+
const size = this.resolveSize(input);
|
|
11
|
+
const { data, error } = await this.apiClient.PUT("/blobs/{ownerId}/{region}/{key}", {
|
|
12
|
+
params: {
|
|
13
|
+
path: {
|
|
14
|
+
ownerId: input.ownerId,
|
|
15
|
+
region: input.region,
|
|
16
|
+
key: input.key,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
body: { sizeBytes: size },
|
|
20
|
+
});
|
|
21
|
+
if (error) {
|
|
22
|
+
throw new errors_js_1.RenderError(`Failed to get upload URL: ${error.message || "Unknown error"}`);
|
|
23
|
+
}
|
|
24
|
+
const headers = {
|
|
25
|
+
"Content-Length": size.toString(),
|
|
26
|
+
};
|
|
27
|
+
if (input.contentType) {
|
|
28
|
+
headers["Content-Type"] = input.contentType;
|
|
29
|
+
}
|
|
30
|
+
const response = await fetch(data.url, {
|
|
31
|
+
method: "PUT",
|
|
32
|
+
headers,
|
|
33
|
+
body: input.data,
|
|
34
|
+
duplex: "half",
|
|
35
|
+
});
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
throw new errors_js_1.RenderError(`Upload failed: ${response.status} ${response.statusText}`);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
etag: response.headers.get("ETag") ?? undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async get(input) {
|
|
44
|
+
const { data, error } = await this.apiClient.GET("/blobs/{ownerId}/{region}/{key}", {
|
|
45
|
+
params: {
|
|
46
|
+
path: {
|
|
47
|
+
ownerId: input.ownerId,
|
|
48
|
+
region: input.region,
|
|
49
|
+
key: input.key,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
if (error) {
|
|
54
|
+
throw new errors_js_1.RenderError(`Failed to get download URL: ${error.message || "Unknown error"}`);
|
|
55
|
+
}
|
|
56
|
+
const response = await fetch(data.url);
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
throw new errors_js_1.RenderError(`Download failed: ${response.status} ${response.statusText}`);
|
|
59
|
+
}
|
|
60
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
61
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
62
|
+
return {
|
|
63
|
+
data: buffer,
|
|
64
|
+
size: buffer.byteLength,
|
|
65
|
+
contentType: response.headers.get("Content-Type") ?? undefined,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
async delete(input) {
|
|
69
|
+
const { error } = await this.apiClient.DELETE("/blobs/{ownerId}/{region}/{key}", {
|
|
70
|
+
params: {
|
|
71
|
+
path: {
|
|
72
|
+
ownerId: input.ownerId,
|
|
73
|
+
region: input.region,
|
|
74
|
+
key: input.key,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
if (error) {
|
|
79
|
+
throw new errors_js_1.RenderError(`Failed to delete object: ${error.message || "Unknown error"}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
scoped(scope) {
|
|
83
|
+
return new ScopedObjectClient(this.apiClient, scope);
|
|
84
|
+
}
|
|
85
|
+
resolveSize(input) {
|
|
86
|
+
if (Buffer.isBuffer(input.data) || input.data instanceof Uint8Array) {
|
|
87
|
+
const actualSize = input.data.byteLength;
|
|
88
|
+
if (input.size !== undefined && input.size !== actualSize) {
|
|
89
|
+
throw new errors_js_1.RenderError(`Size mismatch: provided size ${input.size} does not match actual size ${actualSize}`);
|
|
90
|
+
}
|
|
91
|
+
return actualSize;
|
|
92
|
+
}
|
|
93
|
+
if (input.size === undefined) {
|
|
94
|
+
throw new errors_js_1.RenderError("Size is required for stream and string inputs. Provide the size parameter.");
|
|
95
|
+
}
|
|
96
|
+
if (input.size <= 0) {
|
|
97
|
+
throw new errors_js_1.RenderError("Size must be a positive integer");
|
|
98
|
+
}
|
|
99
|
+
return input.size;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.ObjectClient = ObjectClient;
|
|
103
|
+
class ScopedObjectClient {
|
|
104
|
+
constructor(apiClient, scope) {
|
|
105
|
+
this.scope = scope;
|
|
106
|
+
this.objectClient = new ObjectClient(apiClient);
|
|
107
|
+
}
|
|
108
|
+
async put(input) {
|
|
109
|
+
return this.objectClient.put({
|
|
110
|
+
...this.scope,
|
|
111
|
+
...input,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async get(input) {
|
|
115
|
+
return this.objectClient.get({
|
|
116
|
+
...this.scope,
|
|
117
|
+
...input,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async delete(input) {
|
|
121
|
+
return this.objectClient.delete({
|
|
122
|
+
...this.scope,
|
|
123
|
+
...input,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.ScopedObjectClient = ScopedObjectClient;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ObjectApi } from "./api.js";
|
|
2
|
+
export { ObjectClient, ScopedObjectClient } from "./client.js";
|
|
3
|
+
export type { DeleteObjectInput, GetObjectInput, ObjectData, ObjectIdentifier, ObjectScope, PresignedDownloadUrl, PresignedUploadUrl, PutObjectInput, PutObjectInputBuffer, PutObjectInputStream, PutObjectResult, ScopedDeleteObjectInput, ScopedGetObjectInput, ScopedPutObjectInput, } from "./types.js";
|
|
4
|
+
export { Region } from "./types.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/experimental/object/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScopedObjectClient = exports.ObjectClient = exports.ObjectApi = void 0;
|
|
4
|
+
var api_js_1 = require("./api.js");
|
|
5
|
+
Object.defineProperty(exports, "ObjectApi", { enumerable: true, get: function () { return api_js_1.ObjectApi; } });
|
|
6
|
+
var client_js_1 = require("./client.js");
|
|
7
|
+
Object.defineProperty(exports, "ObjectClient", { enumerable: true, get: function () { return client_js_1.ObjectClient; } });
|
|
8
|
+
Object.defineProperty(exports, "ScopedObjectClient", { enumerable: true, get: function () { return client_js_1.ScopedObjectClient; } });
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
export type Region = "frankfurt" | "oregon" | "ohio" | "singapore" | "virginia";
|
|
3
|
+
export interface ObjectIdentifier {
|
|
4
|
+
ownerId: `tea-${string}`;
|
|
5
|
+
region: Region | string;
|
|
6
|
+
key: string;
|
|
7
|
+
}
|
|
8
|
+
interface PutObjectInputBase extends ObjectIdentifier {
|
|
9
|
+
contentType?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface PutObjectInputBuffer extends PutObjectInputBase {
|
|
12
|
+
data: Buffer | Uint8Array | string;
|
|
13
|
+
size?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PutObjectInputStream extends PutObjectInputBase {
|
|
16
|
+
data: Readable;
|
|
17
|
+
size: number;
|
|
18
|
+
}
|
|
19
|
+
export type PutObjectInput = PutObjectInputBuffer | PutObjectInputStream;
|
|
20
|
+
export interface GetObjectInput extends ObjectIdentifier {
|
|
21
|
+
}
|
|
22
|
+
export interface DeleteObjectInput extends ObjectIdentifier {
|
|
23
|
+
}
|
|
24
|
+
export interface PresignedUploadUrl {
|
|
25
|
+
url: string;
|
|
26
|
+
expiresAt: Date;
|
|
27
|
+
maxSizeBytes: number;
|
|
28
|
+
}
|
|
29
|
+
export interface PresignedDownloadUrl {
|
|
30
|
+
url: string;
|
|
31
|
+
expiresAt: Date;
|
|
32
|
+
}
|
|
33
|
+
export interface ObjectData {
|
|
34
|
+
data: Buffer;
|
|
35
|
+
contentType?: string;
|
|
36
|
+
size: number;
|
|
37
|
+
}
|
|
38
|
+
export interface PutObjectResult {
|
|
39
|
+
etag?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ObjectScope {
|
|
42
|
+
ownerId: `tea-${string}`;
|
|
43
|
+
region: Region | string;
|
|
44
|
+
}
|
|
45
|
+
export type ScopedPutObjectInput = Omit<PutObjectInput, keyof ObjectScope>;
|
|
46
|
+
export type ScopedGetObjectInput = Omit<GetObjectInput, keyof ObjectScope>;
|
|
47
|
+
export type ScopedDeleteObjectInput = Omit<DeleteObjectInput, keyof ObjectScope>;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/experimental/object/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAKhF,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;IAEzB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,GAAG,EAAE,MAAM,CAAC;CACb;AAKD,UAAU,kBAAmB,SAAQ,gBAAgB;IAEnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAE9D,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAEnC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAE9D,IAAI,EAAE,QAAQ,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAKzE,MAAM,WAAW,cAAe,SAAQ,gBAAgB;CAAG;AAK3D,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;CAAG;AAK9D,MAAM,WAAW,kBAAkB;IAEjC,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,IAAI,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,MAAM,WAAW,oBAAoB;IAEnC,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,IAAI,CAAC;CACjB;AAKD,MAAM,WAAW,UAAU;IAEzB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,MAAM,WAAW,eAAe;IAE9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,WAAW;IAE1B,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;IAEzB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAKD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,WAAW,CAAC,CAAC;AAK3E,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,WAAW,CAAC,CAAC;AAK3E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,WAAW,CAAC,CAAC"}
|