@elaraai/e3-api-client 1.0.86 → 1.0.88
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/src/executions.d.ts +28 -2
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js +65 -7
- package/dist/src/executions.js.map +1 -1
- package/dist/src/http.d.ts +67 -1
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +87 -3
- package/dist/src/http.js.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/repository.d.ts +24 -5
- package/dist/src/repository.d.ts.map +1 -1
- package/dist/src/repository.js +47 -8
- package/dist/src/repository.js.map +1 -1
- package/dist/src/repository.spec.d.ts +6 -0
- package/dist/src/repository.spec.d.ts.map +1 -0
- package/dist/src/repository.spec.js +95 -0
- package/dist/src/repository.spec.js.map +1 -0
- package/dist/src/stopping-run.spec.d.ts +6 -0
- package/dist/src/stopping-run.spec.d.ts.map +1 -0
- package/dist/src/stopping-run.spec.js +145 -0
- package/dist/src/stopping-run.spec.js.map +1 -0
- package/dist/src/types.d.ts +71 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +7 -3
- package/dist/src/types.js.map +1 -1
- package/dist/src/workspaces.d.ts +44 -6
- package/dist/src/workspaces.d.ts.map +1 -1
- package/dist/src/workspaces.js +47 -10
- package/dist/src/workspaces.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EACV,gBAAgB,EAEhB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,cAAc,EACf,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAkD,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhG;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE9G;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE9G;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAElI;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAOnI;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,MAAM,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,cAAc,EACvB,WAAW,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,QAAQ,CAAC,CAyBnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpG;AAUD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;4CACwC;IACxC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,aAAa,GAAE,iBAAsB,GACpC,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/dist/src/repository.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { StringType, NullType } from '@elaraai/east';
|
|
6
6
|
import { RepositoryRecordType } from '@elaraai/e3-types';
|
|
7
|
-
import { RepositoryStatusType, GcRequestType, GcStartResultType, GcStatusResultType, } from './types.js';
|
|
8
|
-
import { get, post,
|
|
7
|
+
import { RepositoryStatusType, RepositoryRemovalType, GcRequestType, GcStartResultType, GcStatusResultType, } from './types.js';
|
|
8
|
+
import { ApiError, get, post, putEmpty, requestAnswered } from './http.js';
|
|
9
9
|
/**
|
|
10
10
|
* Get repository status.
|
|
11
11
|
*
|
|
@@ -117,19 +117,58 @@ export async function repoGc(url, repo, gcOptions, options, pollOptions = {}) {
|
|
|
117
117
|
export async function repoCreate(url, name, options) {
|
|
118
118
|
return putEmpty(url, `/repos/${encodeURIComponent(name)}`, StringType, options);
|
|
119
119
|
}
|
|
120
|
+
/** How long {@link repoRemove} waits between asks of a removal under way
|
|
121
|
+
* when its server names no `Retry-After`, in milliseconds. */
|
|
122
|
+
const REMOVAL_POLL_MS = 1_000;
|
|
123
|
+
/** The longest {@link repoRemove} waits between asks of a removal under way,
|
|
124
|
+
* whatever its server's `Retry-After`, in milliseconds. */
|
|
125
|
+
const REMOVAL_POLL_MAX_MS = 30_000;
|
|
120
126
|
/**
|
|
121
|
-
* Remove a repository.
|
|
127
|
+
* Remove a repository, and answer once it is gone.
|
|
122
128
|
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
129
|
+
* @remarks
|
|
130
|
+
* A server that removes the repository within the request answers 200, as
|
|
131
|
+
* the local one does. One whose removal outlasts a request answers
|
|
132
|
+
* `202 Accepted`, naming in `Location` the route that says how the removal
|
|
133
|
+
* goes ({@link RepositoryRemovalType}) and in `Retry-After` when to ask: the
|
|
134
|
+
* client asks it, as each answer's `Retry-After` says, until it answers
|
|
135
|
+
* `removed` or `repository_not_found`, and raises the reason it gives when it
|
|
136
|
+
* answers `failed`. So a repository removed and then created again under its
|
|
137
|
+
* name is created once the removal is done. A 202 that names no route is taken
|
|
138
|
+
* as done, as every answer was before servers named one.
|
|
125
139
|
*
|
|
126
140
|
* @param url - Base URL of the e3 API server
|
|
127
141
|
* @param name - Repository name to remove
|
|
128
142
|
* @param options - Request options including auth token
|
|
129
|
-
* @
|
|
143
|
+
* @param removeOptions - What hears that the removal is under way
|
|
144
|
+
* @throws {ApiError} On application-level errors; `repository_removal_failed`,
|
|
145
|
+
* with its reason, when the removal stopped
|
|
130
146
|
* @throws {AuthError} On 401 Unauthorized
|
|
131
147
|
*/
|
|
132
|
-
export async function repoRemove(url, name, options) {
|
|
133
|
-
await
|
|
148
|
+
export async function repoRemove(url, name, options, removeOptions = {}) {
|
|
149
|
+
const removing = await requestAnswered(`${url}/api/repos/${encodeURIComponent(name)}`, 'DELETE', NullType, options);
|
|
150
|
+
if (!removing.accepted || removing.location === null)
|
|
151
|
+
return;
|
|
152
|
+
removeOptions.onWaiting?.();
|
|
153
|
+
let wait = removing.retryAfterMs;
|
|
154
|
+
for (;;) {
|
|
155
|
+
await new Promise((resolve) => setTimeout(resolve, Math.min(wait ?? REMOVAL_POLL_MS, REMOVAL_POLL_MAX_MS)));
|
|
156
|
+
let removal;
|
|
157
|
+
try {
|
|
158
|
+
const asked = await requestAnswered(removing.location, 'GET', RepositoryRemovalType, options);
|
|
159
|
+
removal = asked.value;
|
|
160
|
+
wait = asked.retryAfterMs;
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
// A route of a repository that is gone may say so.
|
|
164
|
+
if (err instanceof ApiError && err.code === 'repository_not_found')
|
|
165
|
+
return;
|
|
166
|
+
throw err;
|
|
167
|
+
}
|
|
168
|
+
if (removal.type === 'removed')
|
|
169
|
+
return;
|
|
170
|
+
if (removal.type === 'failed')
|
|
171
|
+
throw new ApiError('repository_removal_failed', removal.value.message);
|
|
172
|
+
}
|
|
134
173
|
}
|
|
135
174
|
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAyB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.spec.d.ts","sourceRoot":"","sources":["../../src/repository.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Tests for removing a repository whose server finishes the removal after it
|
|
7
|
+
* answers (#1285): `repoRemove` follows the route a `202 Accepted` names until
|
|
8
|
+
* the repository is gone, through a stand-in server given as the `fetch`.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it } from 'node:test';
|
|
11
|
+
import assert from 'node:assert/strict';
|
|
12
|
+
import { NullType, encodeBeast2For, variant } from '@elaraai/east';
|
|
13
|
+
import { BEAST2_CONTENT_TYPE, RepositoryRemovalType, ResponseType } from '@elaraai/e3-types';
|
|
14
|
+
import { ApiError } from './http.js';
|
|
15
|
+
import { repoRemove } from './repository.js';
|
|
16
|
+
const BASE = 'https://e3.test';
|
|
17
|
+
/** A BEAST2 success, as the server sends one. */
|
|
18
|
+
function success(type, value, status = 200, headers = {}) {
|
|
19
|
+
const body = encodeBeast2For(ResponseType(type))(variant('success', value));
|
|
20
|
+
return new Response(body, { status, headers: { 'Content-Type': BEAST2_CONTENT_TYPE, ...headers } });
|
|
21
|
+
}
|
|
22
|
+
/** A BEAST2 refusal, as the server sends one. */
|
|
23
|
+
function refusal(type, error) {
|
|
24
|
+
const body = encodeBeast2For(ResponseType(type))(variant('error', error));
|
|
25
|
+
return new Response(body, { status: 200, headers: { 'Content-Type': BEAST2_CONTENT_TYPE } });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A server that removes repository `r`: within the request when `answers` is
|
|
29
|
+
* empty, or else answering 202 — naming its removal's route, unless `named` is
|
|
30
|
+
* false — whose route then answers each of `answers` in turn, `gone` as
|
|
31
|
+
* `repository_not_found`.
|
|
32
|
+
*
|
|
33
|
+
* @returns The requests, as `METHOD /path`, and the `fetch` the server answers
|
|
34
|
+
*/
|
|
35
|
+
function server(answers, named = true) {
|
|
36
|
+
const requests = [];
|
|
37
|
+
let asked = 0;
|
|
38
|
+
const fetch = (async (input, init) => {
|
|
39
|
+
const url = new URL(String(input));
|
|
40
|
+
const method = init?.method ?? 'GET';
|
|
41
|
+
requests.push(`${method} ${url.pathname}`);
|
|
42
|
+
if (requests.length > 10)
|
|
43
|
+
return new Response('the client asked on past the removal\'s end', { status: 500 });
|
|
44
|
+
if (method === 'DELETE' && url.pathname === '/api/repos/r') {
|
|
45
|
+
if (answers.length === 0)
|
|
46
|
+
return success(NullType, null);
|
|
47
|
+
return success(NullType, null, 202, { 'Retry-After': '0', ...(named && { Location: '/api/repos/r/removal/job-1' }) });
|
|
48
|
+
}
|
|
49
|
+
if (method === 'GET' && url.pathname === '/api/repos/r/removal/job-1') {
|
|
50
|
+
const answer = answers[asked++];
|
|
51
|
+
if ('gone' in answer)
|
|
52
|
+
return refusal(RepositoryRemovalType, variant('repository_not_found', { repo: 'r' }));
|
|
53
|
+
return success(RepositoryRemovalType, answer.removal, 200, { 'Retry-After': '0' });
|
|
54
|
+
}
|
|
55
|
+
return new Response(`unexpected ${method} ${url.href}`, { status: 500 });
|
|
56
|
+
});
|
|
57
|
+
return { requests, fetch };
|
|
58
|
+
}
|
|
59
|
+
describe('removing a repository (#1285)', () => {
|
|
60
|
+
it('answers once a server that removes the repository within the request answers 200', async () => {
|
|
61
|
+
const { requests, fetch } = server([]);
|
|
62
|
+
let waited = false;
|
|
63
|
+
await repoRemove(BASE, 'r', { token: null, fetch }, { onWaiting: () => { waited = true; } });
|
|
64
|
+
assert.deepEqual(requests, ['DELETE /api/repos/r']);
|
|
65
|
+
assert.equal(waited, false);
|
|
66
|
+
});
|
|
67
|
+
it('follows a 202 to the route it names, as each answer\'s Retry-After says, until the repository is removed', async () => {
|
|
68
|
+
const removing = { removal: variant('removing', null) };
|
|
69
|
+
const { requests, fetch } = server([removing, removing, { removal: variant('removed', null) }]);
|
|
70
|
+
let waits = 0;
|
|
71
|
+
await repoRemove(BASE, 'r', { token: null, fetch }, { onWaiting: () => { waits++; } });
|
|
72
|
+
assert.deepEqual(requests, ['DELETE /api/repos/r', ...Array(3).fill('GET /api/repos/r/removal/job-1')]);
|
|
73
|
+
assert.equal(waits, 1, 'told once that it waits');
|
|
74
|
+
});
|
|
75
|
+
it('takes a route that answers repository_not_found as the repository gone', async () => {
|
|
76
|
+
const { requests, fetch } = server([{ removal: variant('removing', null) }, { gone: true }]);
|
|
77
|
+
await repoRemove(BASE, 'r', { token: null, fetch });
|
|
78
|
+
assert.equal(requests.length, 3);
|
|
79
|
+
});
|
|
80
|
+
it('raises a removal that failed, with its reason', async () => {
|
|
81
|
+
const { fetch } = server([{ removal: variant('removing', null) }, { removal: variant('failed', { message: 'the objects could not be deleted' }) }]);
|
|
82
|
+
await assert.rejects(repoRemove(BASE, 'r', { token: null, fetch }), (err) => {
|
|
83
|
+
assert.ok(err instanceof ApiError);
|
|
84
|
+
assert.equal(err.code, 'repository_removal_failed');
|
|
85
|
+
assert.equal(err.details, 'the objects could not be deleted');
|
|
86
|
+
return true;
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
it('takes a 202 that names no route as done, as a client before servers named one did', async () => {
|
|
90
|
+
const { requests, fetch } = server([{ removal: variant('removing', null) }], false);
|
|
91
|
+
await repoRemove(BASE, 'r', { token: null, fetch });
|
|
92
|
+
assert.deepEqual(requests, ['DELETE /api/repos/r']);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=repository.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.spec.js","sourceRoot":"","sources":["../../src/repository.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAmC,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAuD,MAAM,mBAAmB,CAAC;AAClJ,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,IAAI,GAAG,iBAAiB,CAAC;AAE/B,iDAAiD;AACjD,SAAS,OAAO,CAAqB,IAAO,EAAE,KAAqB,EAAE,MAAM,GAAG,GAAG,EAAE,UAAkC,EAAE;IACrH,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAU,CAAC,CAAC;IACrF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,iDAAiD;AACjD,SAAS,OAAO,CAAqB,IAAO,EAAE,KAAoB;IAChE,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAU,CAAC,CAAC;IACnF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,MAAM,CAAC,OAA+D,EAAE,KAAK,GAAG,IAAI;IAC3F,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAA6B,EAAE,IAAkB,EAAE,EAAE;QACzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,IAAI,QAAQ,CAAC,6CAA6C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9G,IAAI,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,4BAA4B,EAAE,CAAC;YACtE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAE,CAAC;YACjC,IAAI,MAAM,IAAI,MAAM;gBAAE,OAAO,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5G,OAAO,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,cAAc,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC,CAA4B,CAAC;IAC9B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7F,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0GAA0G,EAAE,KAAK,IAAI,EAAE;QACxH,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChG,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;QAChH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,yBAAyB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpJ,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,GAAY,EAAE,EAAE;YACnF,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACpF,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopping-run.spec.d.ts","sourceRoot":"","sources":["../../src/stopping-run.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Tests for a run that stops after its cancel answers (#1286):
|
|
7
|
+
* `dataflowCancel` follows the run it cancelled until it has stopped, and a
|
|
8
|
+
* start, a deploy or a workspace's removal the workspace's lock refuses with a
|
|
9
|
+
* `Retry-After` — as a server refuses one while a stopping run holds the
|
|
10
|
+
* workspace — waits as the server says and asks again. Through a stand-in
|
|
11
|
+
* server given as the `fetch`.
|
|
12
|
+
*/
|
|
13
|
+
import { describe, it } from 'node:test';
|
|
14
|
+
import assert from 'node:assert/strict';
|
|
15
|
+
import { NullType, encodeBeast2For, none, some, variant } from '@elaraai/east';
|
|
16
|
+
import { ApiDataflowExecutionStateType, BEAST2_CONTENT_TYPE, PackageJobResponseType, ResponseType, WorkspaceDeployStatusType, } from '@elaraai/e3-types';
|
|
17
|
+
import { dataflowCancel, dataflowExecuteLaunch } from './executions.js';
|
|
18
|
+
import { ApiError } from './http.js';
|
|
19
|
+
import { workspaceDeploy, workspaceRemove } from './workspaces.js';
|
|
20
|
+
const BASE = 'https://e3.test';
|
|
21
|
+
const AT = '2026-10-13T00:00:00.000Z';
|
|
22
|
+
/** A BEAST2 success, as the server sends one. */
|
|
23
|
+
function success(type, value, status = 200) {
|
|
24
|
+
const body = encodeBeast2For(ResponseType(type))(variant('success', value));
|
|
25
|
+
return new Response(body, { status, headers: { 'Content-Type': BEAST2_CONTENT_TYPE } });
|
|
26
|
+
}
|
|
27
|
+
/** A BEAST2 refusal, as the server sends one, with its headers. */
|
|
28
|
+
function refusal(type, error, headers = {}) {
|
|
29
|
+
const body = encodeBeast2For(ResponseType(type))(variant('error', error));
|
|
30
|
+
return new Response(body, { status: 200, headers: { 'Content-Type': BEAST2_CONTENT_TYPE, ...headers } });
|
|
31
|
+
}
|
|
32
|
+
/** The refusal of a workspace something holds. */
|
|
33
|
+
const locked = variant('workspace_locked', { workspace: 'ws', holder: variant('unknown', null) });
|
|
34
|
+
/** A run's state, as its poll answers it. */
|
|
35
|
+
function run(runId, status) {
|
|
36
|
+
return {
|
|
37
|
+
runId, status: variant(status, null), startedAt: AT, completedAt: status === 'aborted' ? some(AT) : none, summary: none,
|
|
38
|
+
events: [], nextSeq: 0n, lastSeq: 0n, budget: none, waiting: [], splits: [],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A server that answers each request by the first of `routes` it matches —
|
|
43
|
+
* `METHOD /path` — with that route's answers in turn, its last again.
|
|
44
|
+
*
|
|
45
|
+
* @returns The requests, as `METHOD /path`, and the `fetch` the server answers
|
|
46
|
+
*/
|
|
47
|
+
function server(routes) {
|
|
48
|
+
const requests = [];
|
|
49
|
+
const served = new Map();
|
|
50
|
+
const fetch = (async (input, init) => {
|
|
51
|
+
const url = new URL(String(input));
|
|
52
|
+
const key = `${init?.method ?? 'GET'} ${url.pathname}`;
|
|
53
|
+
requests.push(key);
|
|
54
|
+
if (requests.length > 20)
|
|
55
|
+
return new Response('the client asked on and on', { status: 500 });
|
|
56
|
+
const answers = routes[key];
|
|
57
|
+
if (answers === undefined)
|
|
58
|
+
return new Response(`unexpected ${key}`, { status: 500 });
|
|
59
|
+
const at = served.get(key) ?? 0;
|
|
60
|
+
served.set(key, at + 1);
|
|
61
|
+
return answers[Math.min(at, answers.length - 1)]();
|
|
62
|
+
});
|
|
63
|
+
return { requests, fetch };
|
|
64
|
+
}
|
|
65
|
+
const POLL = 'GET /api/repos/r/workspaces/ws/dataflow/execution';
|
|
66
|
+
const CANCEL = 'POST /api/repos/r/workspaces/ws/dataflow/cancel';
|
|
67
|
+
describe('a cancel that answers before its run has stopped (#1286)', () => {
|
|
68
|
+
it('follows the run it cancelled while it is stopping, and answers once it has stopped', async () => {
|
|
69
|
+
const { requests, fetch } = server({
|
|
70
|
+
[POLL]: [
|
|
71
|
+
() => success(ApiDataflowExecutionStateType, run('run-1', 'running')),
|
|
72
|
+
() => success(ApiDataflowExecutionStateType, run('run-1', 'stopping')),
|
|
73
|
+
() => success(ApiDataflowExecutionStateType, run('run-1', 'stopping')),
|
|
74
|
+
() => success(ApiDataflowExecutionStateType, run('run-1', 'aborted')),
|
|
75
|
+
],
|
|
76
|
+
[CANCEL]: [() => success(NullType, null)],
|
|
77
|
+
});
|
|
78
|
+
let told = 0;
|
|
79
|
+
await dataflowCancel(BASE, 'r', 'ws', { token: null, fetch }, { onStopping: () => { told++; } });
|
|
80
|
+
assert.deepEqual(requests, [POLL, CANCEL, POLL, POLL, POLL]);
|
|
81
|
+
assert.equal(told, 1, 'told once that the run is stopping');
|
|
82
|
+
});
|
|
83
|
+
it('answers at once when the cancel answers once its run has ended, as a local server\'s does', async () => {
|
|
84
|
+
const { requests, fetch } = server({
|
|
85
|
+
[POLL]: [
|
|
86
|
+
() => success(ApiDataflowExecutionStateType, run('run-1', 'running')),
|
|
87
|
+
() => success(ApiDataflowExecutionStateType, run('run-1', 'aborted')),
|
|
88
|
+
],
|
|
89
|
+
[CANCEL]: [() => success(NullType, null)],
|
|
90
|
+
});
|
|
91
|
+
await dataflowCancel(BASE, 'r', 'ws', { token: null, fetch });
|
|
92
|
+
assert.deepEqual(requests, [POLL, CANCEL, POLL]);
|
|
93
|
+
});
|
|
94
|
+
it('stops following once another run has followed the one it cancelled', async () => {
|
|
95
|
+
const { requests, fetch } = server({
|
|
96
|
+
[POLL]: [
|
|
97
|
+
() => success(ApiDataflowExecutionStateType, run('run-1', 'running')),
|
|
98
|
+
() => success(ApiDataflowExecutionStateType, run('run-2', 'running')),
|
|
99
|
+
],
|
|
100
|
+
[CANCEL]: [() => success(NullType, null)],
|
|
101
|
+
});
|
|
102
|
+
await dataflowCancel(BASE, 'r', 'ws', { token: null, fetch });
|
|
103
|
+
assert.deepEqual(requests, [POLL, CANCEL, POLL]);
|
|
104
|
+
});
|
|
105
|
+
it('raises a cancel of a workspace that has never run as the server refuses it', async () => {
|
|
106
|
+
const { fetch } = server({
|
|
107
|
+
[POLL]: [() => refusal(ApiDataflowExecutionStateType, variant('execution_not_found', { task: 'ws' }))],
|
|
108
|
+
[CANCEL]: [() => refusal(NullType, variant('dataflow_error', { message: 'No active execution for this workspace' }))],
|
|
109
|
+
});
|
|
110
|
+
await assert.rejects(dataflowCancel(BASE, 'r', 'ws', { token: null, fetch }), (err) => err instanceof ApiError && err.code === 'dataflow_error');
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('a workspace a stopping run still holds (#1286)', () => {
|
|
114
|
+
const hinted = (type) => () => refusal(type, locked, { 'Retry-After': '0' });
|
|
115
|
+
it('removes the workspace once the run lets it go, asking again as each refusal\'s Retry-After says', async () => {
|
|
116
|
+
const { requests, fetch } = server({
|
|
117
|
+
'DELETE /api/repos/r/workspaces/ws': [hinted(NullType), hinted(NullType), () => success(NullType, null)],
|
|
118
|
+
});
|
|
119
|
+
await workspaceRemove(BASE, 'r', 'ws', { token: null, fetch });
|
|
120
|
+
assert.equal(requests.length, 3);
|
|
121
|
+
});
|
|
122
|
+
it('raises a refusal that names no Retry-After at once: something else holds the workspace', async () => {
|
|
123
|
+
const { requests, fetch } = server({ 'DELETE /api/repos/r/workspaces/ws': [() => refusal(NullType, locked)] });
|
|
124
|
+
await assert.rejects(workspaceRemove(BASE, 'r', 'ws', { token: null, fetch }), (err) => err instanceof ApiError && err.code === 'workspace_locked' && err.retryAfterMs === undefined);
|
|
125
|
+
assert.equal(requests.length, 1);
|
|
126
|
+
});
|
|
127
|
+
it('starts the dataflow once the run lets the workspace go', async () => {
|
|
128
|
+
const { requests, fetch } = server({
|
|
129
|
+
'POST /api/repos/r/workspaces/ws/dataflow': [hinted(NullType), hinted(NullType), () => success(NullType, null, 202)],
|
|
130
|
+
});
|
|
131
|
+
await dataflowExecuteLaunch(BASE, 'r', 'ws', {}, { token: null, fetch });
|
|
132
|
+
assert.equal(requests.length, 3);
|
|
133
|
+
});
|
|
134
|
+
it('deploys once the run lets the workspace go', async () => {
|
|
135
|
+
const { requests, fetch } = server({
|
|
136
|
+
'POST /api/repos/r/workspaces/ws/deploy': [hinted(PackageJobResponseType), () => success(PackageJobResponseType, { id: 'job-1' })],
|
|
137
|
+
'GET /api/repos/r/workspaces/ws/deploy/job-1': [() => success(WorkspaceDeployStatusType, variant('completed', { records: [], indexes: [], inputs: [], warnings: [] }))],
|
|
138
|
+
});
|
|
139
|
+
await workspaceDeploy(BASE, 'r', 'ws', 'p@1.0.0', { token: null, fetch });
|
|
140
|
+
assert.deepEqual(requests, [
|
|
141
|
+
'POST /api/repos/r/workspaces/ws/deploy', 'POST /api/repos/r/workspaces/ws/deploy', 'GET /api/repos/r/workspaces/ws/deploy/job-1',
|
|
142
|
+
]);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=stopping-run.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopping-run.spec.js","sourceRoot":"","sources":["../../src/stopping-run.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* Types with "Api" prefix in e3-types are re-exported here with shorter names
|
|
10
10
|
* since API consumers don't see the conflicting domain types.
|
|
11
11
|
*/
|
|
12
|
-
export { WorkspaceNotFoundErrorType, WorkspaceNotDeployedErrorType, WorkspaceExistsErrorType, LockHolderType, WorkspaceLockedErrorType, PackageNotFoundErrorType, PackageExistsErrorType, PackageInvalidErrorType, DatasetNotFoundErrorType, TaskNotFoundErrorType, ExecutionNotFoundErrorType, ObjectNotFoundErrorType, DataflowErrorType, PermissionDeniedErrorType, InternalErrorType, RepositoryNotFoundErrorType, ErrorType, ResponseType, RepositoryStatusType, GcRequestType, GcResultType, AsyncOperationStatusType, GcStartResultType, GcStatusResultType, PackageListItemType, PackageImportResultType, PackageInfoType, PackageDetailsType, WorkspaceCreateRequestType, WorkspaceInfoType, SchemaPolicyType, WorkspaceDeployRequestType, RecordPlanType, RecordIndexPlanType, WorkspaceDeployResultType, WorkspaceDeployProgressType, WorkspaceDeployStatusType, WorkspaceExportRequestType, LockStatusType, DatasetStatusType, TaskStatusUpToDateType, TaskStatusWaitingType, TaskStatusInProgressType, TaskStatusFailedType, TaskStatusErrorType, TaskStatusStaleRunningType, TaskStatusType, DatasetStatusInfoType, TaskStatusInfoType, WorkspaceStatusSummaryType, WorkspaceStatusResultType, TaskListItemType, TaskDetailsType, DataflowRequestType, LogChunkType, TaskLogChunkType, TaskExecutionResultType, DataflowResultType, DataflowEventType, ApiExecutionStatusType as ExecutionStatusType, DataflowExecutionSummaryType, DataflowBudgetType, UnitWaitType, SplitProgressType, ApiDataflowExecutionStateType as DataflowExecutionStateType, ExecutionHistoryStatusType, ExecutionListItemType, TASK_EXECUTIONS_PAGE_DEFAULT, TASK_EXECUTIONS_PAGE_MAX, TreeKindType, ListEntryType, DatasetStatusDetailType, TransferUploadRequestType, TransferUploadResponseType, TransferPartResponseType, TransferDoneResponseType, PackageImportStatusType, PackageExportStatusType, RunnerType, ExecuteLimitsType, DiagnosticType, ExecuteResultType, CallArgType, FunctionCallRequestType, FunctionSignatureType, OneShotRequestType, SplitCallArgType, SplitCallRequestType, SplitCallProgressType, SplitCallStatusType, SplitCallPlanType, MutationCallRequestType, MutationResultType, RecordMigrationAppliedType, RecordSignatureType, RecordCommitInfoType, RecordArgPreviewType, RecordCommitArgsType, RecordHistoryCommitType, RecordHistoryResultType, RECORD_ARG_TEXT_CHARS, RECORD_ARG_TEXT_BYTES, RECORD_ARGS_READ_BYTES, DataflowGraphType, DataflowGraphTaskType, } from '@elaraai/e3-types';
|
|
13
|
-
export type { Error, RepositoryStatus, GcRequest, GcResult, AsyncOperationStatus, GcStartResult, GcStatusResult, PackageListItem, PackageImportResult, PackageInfo, PackageDetails, WorkspaceInfo, WorkspaceCreateRequest, WorkspaceDeployRequest, SchemaPolicy, RecordPlan, RecordIndexPlan, WorkspaceDeployResult, WorkspaceDeployProgress, WorkspaceDeployStatus, LockStatus, LockProgress, DeployProgress, RecordDeployState, RecordDeployStep, IntakeFile, IntakeStep, DatasetStatus, ApiTaskStatus as TaskStatus, DatasetStatusInfo, TaskStatusInfo, WorkspaceStatusSummary, WorkspaceStatusResult, TaskListItem, TaskDetails, DataflowRequest, LogChunk, TaskLogChunk, TaskExecutionResult, DataflowResult, DataflowEvent, ApiExecutionStatus as ExecutionStatus, DataflowExecutionSummary, DataflowBudget, UnitWait, SplitProgress, StageUnit, RequeueReason, ApiDataflowExecutionState as DataflowExecutionState, ExecutionHistoryStatus, ExecutionListItem, TreeKind, ListEntry, DatasetStatusDetail, TransferUploadRequest, TransferUploadResponse, TransferPartResponse, TransferDoneResponse, PackageImportStatus, PackageExportStatus, RunnerValue, ExecuteLimits, Diagnostic, ExecuteResult, CallArg, FunctionCallRequest, FunctionSignature, OneShotRequest, SplitCallArg, SplitCallRequest, SplitCallProgress, SplitCallStatus, SplitCallPlan, MutationCallRequest, MutationResult, RecordMigrationApplied, RecordSignature, RecordCommitInfo, RecordArgPreview, RecordCommitArgs, RecordHistoryCommit, RecordHistoryResult, DataflowGraph, DataflowGraphTask, } from '@elaraai/e3-types';
|
|
12
|
+
export { WorkspaceNotFoundErrorType, WorkspaceNotDeployedErrorType, WorkspaceExistsErrorType, LockHolderType, WorkspaceLockedErrorType, PackageNotFoundErrorType, PackageExistsErrorType, PackageInvalidErrorType, DatasetNotFoundErrorType, TaskNotFoundErrorType, ExecutionNotFoundErrorType, ObjectNotFoundErrorType, DataflowErrorType, PermissionDeniedErrorType, InternalErrorType, RepositoryNotFoundErrorType, ErrorType, ResponseType, RepositoryStatusType, GcRequestType, GcResultType, AsyncOperationStatusType, GcStartResultType, GcStatusResultType, RepositoryRemovalType, PackageListItemType, PackageImportResultType, PackageInfoType, PackageDetailsType, WorkspaceCreateRequestType, WorkspaceCopyRequestType, WorkspaceInfoType, SchemaPolicyType, InputPolicyType, WorkspaceDeployRequestType, RecordPlanType, RecordIndexPlanType, InputPlanType, WorkspaceDeployResultType, WorkspaceDeployProgressType, WorkspaceDeployStatusType, WorkspaceExportRequestType, LockStatusType, DatasetStatusType, TaskStatusUpToDateType, TaskStatusWaitingType, TaskStatusInProgressType, TaskStatusFailedType, TaskStatusErrorType, TaskStatusStaleRunningType, TaskStatusType, DatasetStatusInfoType, TaskStatusInfoType, WorkspaceStatusSummaryType, WorkspaceStatusResultType, TaskListItemType, TaskDetailsType, DataflowRequestType, LogChunkType, TaskLogChunkType, TaskExecutionResultType, DataflowResultType, DataflowEventType, ApiExecutionStatusType as ExecutionStatusType, DataflowExecutionSummaryType, DataflowBudgetType, UnitWaitType, SplitProgressType, ApiDataflowExecutionStateType as DataflowExecutionStateType, ExecutionHistoryStatusType, ExecutionListItemType, TASK_EXECUTIONS_PAGE_DEFAULT, TASK_EXECUTIONS_PAGE_MAX, TreeKindType, ListEntryType, DatasetStatusDetailType, TransferUploadRequestType, TransferUploadResponseType, TransferPartResponseType, TransferDoneResponseType, PackageImportStatusType, PackageExportStatusType, RunnerType, ExecuteLimitsType, DiagnosticType, ExecuteResultType, CallArgType, FunctionCallRequestType, FunctionSignatureType, OneShotRequestType, SplitCallArgType, SplitCallRequestType, SplitCallProgressType, SplitCallStatusType, SplitCallPlanType, MutationCallRequestType, MutationResultType, RecordMigrationAppliedType, RecordSignatureType, RecordCommitInfoType, RecordArgPreviewType, RecordCommitArgsType, RecordHistoryCommitType, RecordHistoryResultType, RECORD_ARG_TEXT_CHARS, RECORD_ARG_TEXT_BYTES, RECORD_ARGS_READ_BYTES, DataflowGraphType, DataflowGraphTaskType, } from '@elaraai/e3-types';
|
|
13
|
+
export type { Error, RepositoryStatus, GcRequest, GcResult, AsyncOperationStatus, GcStartResult, GcStatusResult, RepositoryRemoval, PackageListItem, PackageImportResult, PackageInfo, PackageDetails, WorkspaceInfo, WorkspaceCreateRequest, WorkspaceCopyRequest, WorkspaceDeployRequest, SchemaPolicy, InputPolicy, RecordPlan, RecordIndexPlan, InputPlan, WorkspaceDeployResult, WorkspaceDeployProgress, WorkspaceDeployStatus, LockStatus, LockProgress, DeployProgress, RecordDeployState, RecordDeployStep, IntakeFile, IntakeStep, DatasetStatus, ApiTaskStatus as TaskStatus, DatasetStatusInfo, TaskStatusInfo, WorkspaceStatusSummary, WorkspaceStatusResult, TaskListItem, TaskDetails, DataflowRequest, LogChunk, TaskLogChunk, TaskExecutionResult, DataflowResult, DataflowEvent, ApiExecutionStatus as ExecutionStatus, DataflowExecutionSummary, DataflowBudget, UnitWait, SplitProgress, StageUnit, RequeueReason, ApiDataflowExecutionState as DataflowExecutionState, ExecutionHistoryStatus, ExecutionListItem, TreeKind, ListEntry, DatasetStatusDetail, TransferUploadRequest, TransferUploadResponse, TransferPartResponse, TransferDoneResponse, PackageImportStatus, PackageExportStatus, RunnerValue, ExecuteLimits, Diagnostic, ExecuteResult, CallArg, FunctionCallRequest, FunctionSignature, OneShotRequest, SplitCallArg, SplitCallRequest, SplitCallProgress, SplitCallStatus, SplitCallPlan, MutationCallRequest, MutationResult, RecordMigrationApplied, RecordSignature, RecordCommitInfo, RecordArgPreview, RecordCommitArgs, RecordHistoryCommit, RecordHistoryResult, DataflowGraph, DataflowGraphTask, } from '@elaraai/e3-types';
|
|
14
14
|
export declare const ApiTypes: {
|
|
15
15
|
readonly ErrorType: import("@elaraai/east").VariantType<{
|
|
16
16
|
readonly repository_not_found: import("@elaraai/east").StructType<{
|
|
@@ -264,6 +264,13 @@ export declare const ApiTypes: {
|
|
|
264
264
|
}>>;
|
|
265
265
|
readonly error: import("@elaraai/east").OptionType<import("@elaraai/east").StringType>;
|
|
266
266
|
}>;
|
|
267
|
+
readonly RepositoryRemovalType: import("@elaraai/east").VariantType<{
|
|
268
|
+
readonly removing: import("@elaraai/east").NullType;
|
|
269
|
+
readonly removed: import("@elaraai/east").NullType;
|
|
270
|
+
readonly failed: import("@elaraai/east").StructType<{
|
|
271
|
+
readonly message: import("@elaraai/east").StringType;
|
|
272
|
+
}>;
|
|
273
|
+
}>;
|
|
267
274
|
readonly PackageListItemType: import("@elaraai/east").StructType<{
|
|
268
275
|
readonly name: import("@elaraai/east").StringType;
|
|
269
276
|
readonly version: import("@elaraai/east").StringType;
|
|
@@ -336,6 +343,9 @@ export declare const ApiTypes: {
|
|
|
336
343
|
readonly WorkspaceCreateRequestType: import("@elaraai/east").StructType<{
|
|
337
344
|
readonly name: import("@elaraai/east").StringType;
|
|
338
345
|
}>;
|
|
346
|
+
readonly WorkspaceCopyRequestType: import("@elaraai/east").StructType<{
|
|
347
|
+
readonly to: import("@elaraai/east").StringType;
|
|
348
|
+
}>;
|
|
339
349
|
readonly WorkspaceInfoType: import("@elaraai/east").StructType<{
|
|
340
350
|
readonly name: import("@elaraai/east").StringType;
|
|
341
351
|
readonly deployed: import("@elaraai/east").BooleanType;
|
|
@@ -347,6 +357,10 @@ export declare const ApiTypes: {
|
|
|
347
357
|
readonly fail: import("@elaraai/east").NullType;
|
|
348
358
|
readonly reset: import("@elaraai/east").NullType;
|
|
349
359
|
}>;
|
|
360
|
+
readonly InputPolicyType: import("@elaraai/east").VariantType<{
|
|
361
|
+
readonly 'keep-edited': import("@elaraai/east").NullType;
|
|
362
|
+
readonly reset: import("@elaraai/east").NullType;
|
|
363
|
+
}>;
|
|
350
364
|
readonly WorkspaceDeployRequestType: import("@elaraai/east").StructType<{
|
|
351
365
|
readonly packageRef: import("@elaraai/east").StringType;
|
|
352
366
|
readonly schema: import("@elaraai/east").VariantType<{
|
|
@@ -354,6 +368,10 @@ export declare const ApiTypes: {
|
|
|
354
368
|
readonly fail: import("@elaraai/east").NullType;
|
|
355
369
|
readonly reset: import("@elaraai/east").NullType;
|
|
356
370
|
}>;
|
|
371
|
+
readonly inputs: import("@elaraai/east").VariantType<{
|
|
372
|
+
readonly "keep-edited": import("@elaraai/east").NullType;
|
|
373
|
+
readonly reset: import("@elaraai/east").NullType;
|
|
374
|
+
}>;
|
|
357
375
|
readonly allowDropRecords: import("@elaraai/east").BooleanType;
|
|
358
376
|
readonly plan: import("@elaraai/east").BooleanType;
|
|
359
377
|
}>;
|
|
@@ -385,6 +403,22 @@ export declare const ApiTypes: {
|
|
|
385
403
|
readonly keep: import("@elaraai/east").NullType;
|
|
386
404
|
}>;
|
|
387
405
|
}>;
|
|
406
|
+
readonly InputPlanType: import("@elaraai/east").StructType<{
|
|
407
|
+
readonly input: import("@elaraai/east").StringType;
|
|
408
|
+
readonly action: import("@elaraai/east").VariantType<{
|
|
409
|
+
readonly package: import("@elaraai/east").NullType;
|
|
410
|
+
readonly keep: import("@elaraai/east").NullType;
|
|
411
|
+
readonly reset: import("@elaraai/east").StructType<{
|
|
412
|
+
readonly reason: import("@elaraai/east").StringType;
|
|
413
|
+
readonly policy: import("@elaraai/east").BooleanType;
|
|
414
|
+
}>;
|
|
415
|
+
readonly file: import("@elaraai/east").StructType<{
|
|
416
|
+
readonly path: import("@elaraai/east").StringType;
|
|
417
|
+
readonly taken: import("@elaraai/east").BooleanType;
|
|
418
|
+
}>;
|
|
419
|
+
readonly drop: import("@elaraai/east").NullType;
|
|
420
|
+
}>;
|
|
421
|
+
}>;
|
|
388
422
|
readonly WorkspaceDeployResultType: import("@elaraai/east").StructType<{
|
|
389
423
|
readonly records: import("@elaraai/east").ArrayType<import("@elaraai/east").StructType<{
|
|
390
424
|
readonly record: import("@elaraai/east").StringType;
|
|
@@ -414,6 +448,22 @@ export declare const ApiTypes: {
|
|
|
414
448
|
readonly keep: import("@elaraai/east").NullType;
|
|
415
449
|
}>;
|
|
416
450
|
}>>;
|
|
451
|
+
readonly inputs: import("@elaraai/east").ArrayType<import("@elaraai/east").StructType<{
|
|
452
|
+
readonly input: import("@elaraai/east").StringType;
|
|
453
|
+
readonly action: import("@elaraai/east").VariantType<{
|
|
454
|
+
readonly package: import("@elaraai/east").NullType;
|
|
455
|
+
readonly keep: import("@elaraai/east").NullType;
|
|
456
|
+
readonly reset: import("@elaraai/east").StructType<{
|
|
457
|
+
readonly reason: import("@elaraai/east").StringType;
|
|
458
|
+
readonly policy: import("@elaraai/east").BooleanType;
|
|
459
|
+
}>;
|
|
460
|
+
readonly file: import("@elaraai/east").StructType<{
|
|
461
|
+
readonly path: import("@elaraai/east").StringType;
|
|
462
|
+
readonly taken: import("@elaraai/east").BooleanType;
|
|
463
|
+
}>;
|
|
464
|
+
readonly drop: import("@elaraai/east").NullType;
|
|
465
|
+
}>;
|
|
466
|
+
}>>;
|
|
417
467
|
readonly warnings: import("@elaraai/east").ArrayType<import("@elaraai/east").StringType>;
|
|
418
468
|
}>;
|
|
419
469
|
readonly WorkspaceDeployProgressType: import("@elaraai/east").VariantType<{
|
|
@@ -574,6 +624,22 @@ export declare const ApiTypes: {
|
|
|
574
624
|
readonly keep: import("@elaraai/east").NullType;
|
|
575
625
|
}>;
|
|
576
626
|
}>>;
|
|
627
|
+
readonly inputs: import("@elaraai/east").ArrayType<import("@elaraai/east").StructType<{
|
|
628
|
+
readonly input: import("@elaraai/east").StringType;
|
|
629
|
+
readonly action: import("@elaraai/east").VariantType<{
|
|
630
|
+
readonly package: import("@elaraai/east").NullType;
|
|
631
|
+
readonly keep: import("@elaraai/east").NullType;
|
|
632
|
+
readonly reset: import("@elaraai/east").StructType<{
|
|
633
|
+
readonly reason: import("@elaraai/east").StringType;
|
|
634
|
+
readonly policy: import("@elaraai/east").BooleanType;
|
|
635
|
+
}>;
|
|
636
|
+
readonly file: import("@elaraai/east").StructType<{
|
|
637
|
+
readonly path: import("@elaraai/east").StringType;
|
|
638
|
+
readonly taken: import("@elaraai/east").BooleanType;
|
|
639
|
+
}>;
|
|
640
|
+
readonly drop: import("@elaraai/east").NullType;
|
|
641
|
+
}>;
|
|
642
|
+
}>>;
|
|
577
643
|
readonly warnings: import("@elaraai/east").ArrayType<import("@elaraai/east").StringType>;
|
|
578
644
|
}>;
|
|
579
645
|
readonly failed: import("@elaraai/east").StructType<{
|
|
@@ -592,6 +658,7 @@ export declare const ApiTypes: {
|
|
|
592
658
|
readonly removal: import("@elaraai/east").NullType;
|
|
593
659
|
readonly dataset_write: import("@elaraai/east").NullType;
|
|
594
660
|
readonly export: import("@elaraai/east").NullType;
|
|
661
|
+
readonly workspace_copy: import("@elaraai/east").NullType;
|
|
595
662
|
}>;
|
|
596
663
|
readonly holder: import("@elaraai/east").VariantType<{
|
|
597
664
|
readonly process: import("@elaraai/east").StructType<{
|
|
@@ -1102,6 +1169,7 @@ export declare const ApiTypes: {
|
|
|
1102
1169
|
}>;
|
|
1103
1170
|
readonly ExecutionStatusType: import("@elaraai/east").VariantType<{
|
|
1104
1171
|
readonly running: import("@elaraai/east").NullType;
|
|
1172
|
+
readonly stopping: import("@elaraai/east").NullType;
|
|
1105
1173
|
readonly completed: import("@elaraai/east").NullType;
|
|
1106
1174
|
readonly failed: import("@elaraai/east").NullType;
|
|
1107
1175
|
readonly aborted: import("@elaraai/east").NullType;
|
|
@@ -1145,6 +1213,7 @@ export declare const ApiTypes: {
|
|
|
1145
1213
|
readonly runId: import("@elaraai/east").StringType;
|
|
1146
1214
|
readonly status: import("@elaraai/east").VariantType<{
|
|
1147
1215
|
readonly running: import("@elaraai/east").NullType;
|
|
1216
|
+
readonly stopping: import("@elaraai/east").NullType;
|
|
1148
1217
|
readonly completed: import("@elaraai/east").NullType;
|
|
1149
1218
|
readonly failed: import("@elaraai/east").NullType;
|
|
1150
1219
|
readonly aborted: import("@elaraai/east").NullType;
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAGH,OAAO,EAEL,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACxB,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,EACT,YAAY,EAEZ,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HX,CAAC"}
|