@elaraai/e3-api-client 0.0.2-beta.5 → 0.0.2-beta.50
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 +2 -2
- package/dist/src/datasets.d.ts +73 -4
- package/dist/src/datasets.d.ts.map +1 -1
- package/dist/src/datasets.js +194 -19
- package/dist/src/datasets.js.map +1 -1
- package/dist/src/executions.d.ts +74 -11
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js +184 -36
- package/dist/src/executions.js.map +1 -1
- package/dist/src/http.d.ts +67 -12
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +168 -34
- package/dist/src/http.js.map +1 -1
- package/dist/src/index.d.ts +9 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/packages.d.ts +32 -27
- package/dist/src/packages.d.ts.map +1 -1
- package/dist/src/packages.js +175 -39
- package/dist/src/packages.js.map +1 -1
- package/dist/src/platform.d.ts +553 -1343
- package/dist/src/platform.d.ts.map +1 -1
- package/dist/src/platform.js +123 -915
- package/dist/src/platform.js.map +1 -1
- package/dist/src/repos.d.ts +16 -0
- package/dist/src/repos.d.ts.map +1 -0
- package/dist/src/repos.js +19 -0
- package/dist/src/repos.js.map +1 -0
- package/dist/src/repository.d.ts +67 -5
- package/dist/src/repository.d.ts.map +1 -1
- package/dist/src/repository.js +94 -10
- package/dist/src/repository.js.map +1 -1
- package/dist/src/tasks.d.ts +25 -3
- package/dist/src/tasks.d.ts.map +1 -1
- package/dist/src/tasks.js +29 -8
- package/dist/src/tasks.js.map +1 -1
- package/dist/src/types.d.ts +755 -1251
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +62 -453
- package/dist/src/types.js.map +1 -1
- package/dist/src/util.d.ts +21 -0
- package/dist/src/util.d.ts.map +1 -0
- package/dist/src/util.js +26 -0
- package/dist/src/util.js.map +1 -0
- package/dist/src/workspaces.d.ts +51 -9
- package/dist/src/workspaces.d.ts.map +1 -1
- package/dist/src/workspaces.js +87 -26
- package/dist/src/workspaces.js.map +1 -1
- package/package.json +4 -4
package/dist/src/packages.js
CHANGED
|
@@ -2,64 +2,200 @@
|
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
|
-
import { ArrayType,
|
|
5
|
+
import { ArrayType, NullType, encodeBeast2For, decodeBeast2For } from '@elaraai/east';
|
|
6
6
|
import { PackageObjectType } from '@elaraai/e3-types';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { PackageTransferInitRequestType, PackageTransferInitResponseType, PackageJobResponseType, PackageImportStatusType, PackageExportStatusType, } from '@elaraai/e3-types';
|
|
8
|
+
import { BEAST2_CONTENT_TYPE } from '@elaraai/e3-types';
|
|
9
|
+
import { PackageListItemType } from './types.js';
|
|
10
|
+
import { ResponseType } from './types.js';
|
|
11
|
+
import { get, del, fetchWithAuth, fetchWithProgress, ApiError } from './http.js';
|
|
9
12
|
/**
|
|
10
13
|
* List all packages in the repository.
|
|
11
|
-
*
|
|
12
|
-
* @param url - Base URL of the e3 API server
|
|
13
|
-
* @returns Array of package info (name, version)
|
|
14
14
|
*/
|
|
15
|
-
export async function packageList(url) {
|
|
16
|
-
|
|
17
|
-
return unwrap(response);
|
|
15
|
+
export async function packageList(url, repo, options) {
|
|
16
|
+
return get(url, `/repos/${encodeURIComponent(repo)}/packages`, ArrayType(PackageListItemType), options);
|
|
18
17
|
}
|
|
19
18
|
/**
|
|
20
19
|
* Get package object.
|
|
21
|
-
*
|
|
22
|
-
* @param url - Base URL of the e3 API server
|
|
23
|
-
* @param name - Package name
|
|
24
|
-
* @param version - Package version
|
|
25
|
-
* @returns Package object
|
|
26
20
|
*/
|
|
27
|
-
export async function packageGet(url, name, version) {
|
|
28
|
-
|
|
29
|
-
return unwrap(response);
|
|
21
|
+
export async function packageGet(url, repo, name, version, options) {
|
|
22
|
+
return get(url, `/repos/${encodeURIComponent(repo)}/packages/${encodeURIComponent(name)}/${encodeURIComponent(version)}`, PackageObjectType, options);
|
|
30
23
|
}
|
|
31
24
|
/**
|
|
32
|
-
* Import a package from a zip archive.
|
|
25
|
+
* Import a package from a zip archive using the transfer protocol.
|
|
33
26
|
*
|
|
34
|
-
*
|
|
35
|
-
* @param archive - Zip archive as bytes
|
|
36
|
-
* @returns Imported package info
|
|
27
|
+
* Flow: init upload → upload zip → trigger import → poll for result
|
|
37
28
|
*/
|
|
38
|
-
export async function packageImport(url, archive) {
|
|
39
|
-
const
|
|
40
|
-
|
|
29
|
+
export async function packageImport(url, repo, archive, options, importOptions) {
|
|
30
|
+
const repoEncoded = encodeURIComponent(repo);
|
|
31
|
+
const signal = importOptions?.signal;
|
|
32
|
+
// 1. Init transfer
|
|
33
|
+
const encodeInit = encodeBeast2For(PackageTransferInitRequestType);
|
|
34
|
+
const initRes = await fetchWithAuth(`${url}/api/repos/${repoEncoded}/import`, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers: {
|
|
37
|
+
'Content-Type': BEAST2_CONTENT_TYPE,
|
|
38
|
+
'Accept': BEAST2_CONTENT_TYPE,
|
|
39
|
+
},
|
|
40
|
+
body: encodeInit({ size: BigInt(archive.byteLength) }),
|
|
41
|
+
signal,
|
|
42
|
+
}, options);
|
|
43
|
+
if (!initRes.ok)
|
|
44
|
+
throw new Error(`Transfer init failed: ${initRes.status} ${initRes.statusText}`);
|
|
45
|
+
const initBuffer = new Uint8Array(await initRes.arrayBuffer());
|
|
46
|
+
const decodeInit = decodeBeast2For(ResponseType(PackageTransferInitResponseType));
|
|
47
|
+
const initResult = decodeInit(initBuffer);
|
|
48
|
+
if (initResult.type === 'error')
|
|
49
|
+
throw new ApiError(initResult.value.type, initResult.value.value);
|
|
50
|
+
const { id, uploadUrl } = initResult.value;
|
|
51
|
+
// 2. Upload zip bytes (no auth — URL may be a presigned S3 URL)
|
|
52
|
+
const onUploadProgress = importOptions?.onUploadProgress;
|
|
53
|
+
const uploadBody = onUploadProgress
|
|
54
|
+
? createProgressStream(archive, onUploadProgress)
|
|
55
|
+
: archive;
|
|
56
|
+
const uploadRes = await fetch(uploadUrl, {
|
|
57
|
+
method: 'PUT',
|
|
58
|
+
headers: {
|
|
59
|
+
'Content-Type': 'application/zip',
|
|
60
|
+
'Content-Length': String(archive.byteLength),
|
|
61
|
+
},
|
|
62
|
+
body: uploadBody,
|
|
63
|
+
signal,
|
|
64
|
+
duplex: onUploadProgress ? 'half' : undefined,
|
|
65
|
+
});
|
|
66
|
+
if (!uploadRes.ok)
|
|
67
|
+
throw new Error(`Transfer upload failed: ${uploadRes.status} ${uploadRes.statusText}`);
|
|
68
|
+
// 3. Trigger import
|
|
69
|
+
const importRes = await fetchWithAuth(`${url}/api/repos/${repoEncoded}/import/${id}`, {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: { 'Accept': BEAST2_CONTENT_TYPE },
|
|
72
|
+
signal,
|
|
73
|
+
}, options);
|
|
74
|
+
if (!importRes.ok)
|
|
75
|
+
throw new Error(`Transfer import failed: ${importRes.status} ${importRes.statusText}`);
|
|
76
|
+
const importBuffer = new Uint8Array(await importRes.arrayBuffer());
|
|
77
|
+
const decodeImport = decodeBeast2For(ResponseType(PackageJobResponseType));
|
|
78
|
+
const importResult = decodeImport(importBuffer);
|
|
79
|
+
if (importResult.type === 'error')
|
|
80
|
+
throw new ApiError(importResult.value.type, importResult.value.value);
|
|
81
|
+
// 4. Poll for result
|
|
82
|
+
const status = await pollImport(url, repoEncoded, importResult.value.id, options, importOptions?.onProgress, signal);
|
|
83
|
+
if (status.type === 'failed') {
|
|
84
|
+
throw new Error(`Package import failed: ${status.value.message}`);
|
|
85
|
+
}
|
|
86
|
+
if (status.type === 'completed') {
|
|
87
|
+
return status.value;
|
|
88
|
+
}
|
|
89
|
+
throw new Error('Unexpected job status');
|
|
41
90
|
}
|
|
42
91
|
/**
|
|
43
|
-
* Export a package as a zip archive.
|
|
92
|
+
* Export a package as a zip archive using the transfer protocol.
|
|
44
93
|
*
|
|
45
|
-
*
|
|
46
|
-
* @param name - Package name
|
|
47
|
-
* @param version - Package version
|
|
48
|
-
* @returns Zip archive as bytes
|
|
94
|
+
* Flow: trigger export → poll for result → download zip
|
|
49
95
|
*/
|
|
50
|
-
export async function packageExport(url, name, version) {
|
|
51
|
-
const
|
|
52
|
-
|
|
96
|
+
export async function packageExport(url, repo, name, version, options, exportOptions) {
|
|
97
|
+
const repoEncoded = encodeURIComponent(repo);
|
|
98
|
+
const signal = exportOptions?.signal;
|
|
99
|
+
// 1. Trigger export (name/version in URL, no body)
|
|
100
|
+
const exportRes = await fetchWithAuth(`${url}/api/repos/${repoEncoded}/packages/${encodeURIComponent(name)}/${encodeURIComponent(version)}/export`, {
|
|
101
|
+
method: 'POST',
|
|
102
|
+
headers: { 'Accept': BEAST2_CONTENT_TYPE },
|
|
103
|
+
signal,
|
|
104
|
+
}, options);
|
|
105
|
+
if (!exportRes.ok)
|
|
106
|
+
throw new Error(`Transfer export failed: ${exportRes.status} ${exportRes.statusText}`);
|
|
107
|
+
const exportBuffer = new Uint8Array(await exportRes.arrayBuffer());
|
|
108
|
+
const decodeExport = decodeBeast2For(ResponseType(PackageJobResponseType));
|
|
109
|
+
const exportResult = decodeExport(exportBuffer);
|
|
110
|
+
if (exportResult.type === 'error')
|
|
111
|
+
throw new ApiError(exportResult.value.type, exportResult.value.value);
|
|
112
|
+
// 2. Poll for result
|
|
113
|
+
const status = await pollExport(url, repoEncoded, exportResult.value.id, options, exportOptions?.onProgress, signal);
|
|
114
|
+
if (status.type === 'failed') {
|
|
115
|
+
throw new Error(`Package export failed: ${status.value.message}`);
|
|
116
|
+
}
|
|
117
|
+
if (status.type !== 'completed') {
|
|
118
|
+
throw new Error('Unexpected job status');
|
|
119
|
+
}
|
|
120
|
+
const { downloadUrl } = status.value;
|
|
121
|
+
// 3. Download zip (no auth — URL may be a presigned S3 URL)
|
|
122
|
+
return fetchWithProgress(downloadUrl, exportOptions?.onDownloadProgress, signal);
|
|
53
123
|
}
|
|
54
124
|
/**
|
|
55
125
|
* Remove a package from the repository.
|
|
56
|
-
*
|
|
57
|
-
* @param url - Base URL of the e3 API server
|
|
58
|
-
* @param name - Package name
|
|
59
|
-
* @param version - Package version
|
|
60
126
|
*/
|
|
61
|
-
export async function packageRemove(url, name, version) {
|
|
62
|
-
|
|
63
|
-
|
|
127
|
+
export async function packageRemove(url, repo, name, version, options) {
|
|
128
|
+
await del(url, `/repos/${encodeURIComponent(repo)}/packages/${encodeURIComponent(name)}/${encodeURIComponent(version)}`, NullType, options);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Wrap a Uint8Array in a ReadableStream that reports upload progress.
|
|
132
|
+
*/
|
|
133
|
+
function createProgressStream(data, onProgress, chunkSize = 64 * 1024) {
|
|
134
|
+
const total = data.byteLength;
|
|
135
|
+
let offset = 0;
|
|
136
|
+
return new ReadableStream({
|
|
137
|
+
pull(controller) {
|
|
138
|
+
if (offset >= total) {
|
|
139
|
+
controller.close();
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const end = Math.min(offset + chunkSize, total);
|
|
143
|
+
controller.enqueue(data.subarray(offset, end));
|
|
144
|
+
offset = end;
|
|
145
|
+
onProgress(offset, total);
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Poll a package import job until it completes or fails.
|
|
151
|
+
*/
|
|
152
|
+
async function pollImport(url, repoEncoded, id, options, onProgress, signal, intervalMs = 1000) {
|
|
153
|
+
while (true) {
|
|
154
|
+
signal?.throwIfAborted();
|
|
155
|
+
const res = await fetchWithAuth(`${url}/api/repos/${repoEncoded}/import/${id}`, {
|
|
156
|
+
method: 'GET',
|
|
157
|
+
headers: { 'Accept': BEAST2_CONTENT_TYPE },
|
|
158
|
+
signal,
|
|
159
|
+
}, options);
|
|
160
|
+
if (!res.ok)
|
|
161
|
+
throw new Error(`Import poll failed: ${res.status} ${res.statusText}`);
|
|
162
|
+
const buffer = new Uint8Array(await res.arrayBuffer());
|
|
163
|
+
const decode = decodeBeast2For(ResponseType(PackageImportStatusType));
|
|
164
|
+
const result = decode(buffer);
|
|
165
|
+
if (result.type === 'error')
|
|
166
|
+
throw new ApiError(result.value.type, result.value.value);
|
|
167
|
+
if (result.value.type === 'processing') {
|
|
168
|
+
onProgress?.(result.value.value);
|
|
169
|
+
await new Promise(resolve => setTimeout(resolve, intervalMs));
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
return result.value;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Poll a package export job until it completes or fails.
|
|
177
|
+
*/
|
|
178
|
+
export async function pollExport(url, repoEncoded, id, options, onProgress, signal, intervalMs = 1000) {
|
|
179
|
+
while (true) {
|
|
180
|
+
signal?.throwIfAborted();
|
|
181
|
+
const res = await fetchWithAuth(`${url}/api/repos/${repoEncoded}/export/${id}`, {
|
|
182
|
+
method: 'GET',
|
|
183
|
+
headers: { 'Accept': BEAST2_CONTENT_TYPE },
|
|
184
|
+
signal,
|
|
185
|
+
}, options);
|
|
186
|
+
if (!res.ok)
|
|
187
|
+
throw new Error(`Export poll failed: ${res.status} ${res.statusText}`);
|
|
188
|
+
const buffer = new Uint8Array(await res.arrayBuffer());
|
|
189
|
+
const decode = decodeBeast2For(ResponseType(PackageExportStatusType));
|
|
190
|
+
const result = decode(buffer);
|
|
191
|
+
if (result.type === 'error')
|
|
192
|
+
throw new ApiError(result.value.type, result.value.value);
|
|
193
|
+
if (result.value.type === 'processing') {
|
|
194
|
+
onProgress?.(result.value.value);
|
|
195
|
+
await new Promise(resolve => setTimeout(resolve, intervalMs));
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
return result.value;
|
|
199
|
+
}
|
|
64
200
|
}
|
|
65
201
|
//# sourceMappingURL=packages.js.map
|
package/dist/src/packages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/packages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/packages.ts"],"names":[],"mappings":"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"}
|