@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.
Files changed (50) hide show
  1. package/README.md +2 -2
  2. package/dist/src/datasets.d.ts +73 -4
  3. package/dist/src/datasets.d.ts.map +1 -1
  4. package/dist/src/datasets.js +194 -19
  5. package/dist/src/datasets.js.map +1 -1
  6. package/dist/src/executions.d.ts +74 -11
  7. package/dist/src/executions.d.ts.map +1 -1
  8. package/dist/src/executions.js +184 -36
  9. package/dist/src/executions.js.map +1 -1
  10. package/dist/src/http.d.ts +67 -12
  11. package/dist/src/http.d.ts.map +1 -1
  12. package/dist/src/http.js +168 -34
  13. package/dist/src/http.js.map +1 -1
  14. package/dist/src/index.d.ts +9 -6
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +11 -5
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/packages.d.ts +32 -27
  19. package/dist/src/packages.d.ts.map +1 -1
  20. package/dist/src/packages.js +175 -39
  21. package/dist/src/packages.js.map +1 -1
  22. package/dist/src/platform.d.ts +553 -1343
  23. package/dist/src/platform.d.ts.map +1 -1
  24. package/dist/src/platform.js +123 -915
  25. package/dist/src/platform.js.map +1 -1
  26. package/dist/src/repos.d.ts +16 -0
  27. package/dist/src/repos.d.ts.map +1 -0
  28. package/dist/src/repos.js +19 -0
  29. package/dist/src/repos.js.map +1 -0
  30. package/dist/src/repository.d.ts +67 -5
  31. package/dist/src/repository.d.ts.map +1 -1
  32. package/dist/src/repository.js +94 -10
  33. package/dist/src/repository.js.map +1 -1
  34. package/dist/src/tasks.d.ts +25 -3
  35. package/dist/src/tasks.d.ts.map +1 -1
  36. package/dist/src/tasks.js +29 -8
  37. package/dist/src/tasks.js.map +1 -1
  38. package/dist/src/types.d.ts +755 -1251
  39. package/dist/src/types.d.ts.map +1 -1
  40. package/dist/src/types.js +62 -453
  41. package/dist/src/types.js.map +1 -1
  42. package/dist/src/util.d.ts +21 -0
  43. package/dist/src/util.d.ts.map +1 -0
  44. package/dist/src/util.js +26 -0
  45. package/dist/src/util.js.map +1 -0
  46. package/dist/src/workspaces.d.ts +51 -9
  47. package/dist/src/workspaces.d.ts.map +1 -1
  48. package/dist/src/workspaces.js +87 -26
  49. package/dist/src/workspaces.js.map +1 -1
  50. package/package.json +4 -4
@@ -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, BlobType, NullType } from '@elaraai/east';
5
+ import { ArrayType, NullType, encodeBeast2For, decodeBeast2For } from '@elaraai/east';
6
6
  import { PackageObjectType } from '@elaraai/e3-types';
7
- import { PackageListItemType, PackageImportResultType } from './types.js';
8
- import { get, post, del, unwrap } from './http.js';
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
- const response = await get(url, '/api/packages', ArrayType(PackageListItemType));
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
- const response = await get(url, `/api/packages/${encodeURIComponent(name)}/${encodeURIComponent(version)}`, PackageObjectType);
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
- * @param url - Base URL of the e3 API server
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 response = await post(url, '/api/packages', archive, BlobType, PackageImportResultType);
40
- return unwrap(response);
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
- * @param url - Base URL of the e3 API server
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 response = await get(url, `/api/packages/${encodeURIComponent(name)}/${encodeURIComponent(version)}/export`, BlobType);
52
- return unwrap(response);
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
- const response = await del(url, `/api/packages/${encodeURIComponent(name)}/${encodeURIComponent(version)}`, NullType);
63
- unwrap(response);
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
@@ -1 +1 @@
1
- {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/packages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAsB,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,IAAY,EACZ,OAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,GAAG,CACxB,GAAG,EACH,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC1E,iBAAiB,CAClB,CAAC;IACF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,OAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAC9F,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,IAAY,EACZ,OAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,GAAG,CACxB,GAAG,EACH,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,SAAS,EACjF,QAAQ,CACT,CAAC;IACF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,IAAY,EACZ,OAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,GAAG,CACxB,GAAG,EACH,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC1E,QAAQ,CACT,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/packages.ts"],"names":[],"mappings":"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"}