@elaraai/e3-api-client 1.0.84 → 1.0.85
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 +25 -3
- package/dist/src/datasets-transfer.spec.js +40 -5
- package/dist/src/datasets-transfer.spec.js.map +1 -1
- package/dist/src/datasets.d.ts +83 -1
- package/dist/src/datasets.d.ts.map +1 -1
- package/dist/src/datasets.js +213 -37
- package/dist/src/datasets.js.map +1 -1
- package/dist/src/datasets.spec.js +273 -13
- package/dist/src/datasets.spec.js.map +1 -1
- package/dist/src/executions.d.ts +50 -15
- package/dist/src/executions.d.ts.map +1 -1
- package/dist/src/executions.js +57 -16
- package/dist/src/executions.js.map +1 -1
- package/dist/src/executions.spec.d.ts +6 -0
- package/dist/src/executions.spec.d.ts.map +1 -0
- package/dist/src/executions.spec.js +81 -0
- package/dist/src/executions.spec.js.map +1 -0
- package/dist/src/functions.d.ts +39 -8
- package/dist/src/functions.d.ts.map +1 -1
- package/dist/src/functions.js +39 -8
- package/dist/src/functions.js.map +1 -1
- package/dist/src/http.d.ts +65 -7
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +54 -14
- package/dist/src/http.js.map +1 -1
- package/dist/src/http.spec.js +106 -5
- package/dist/src/http.spec.js.map +1 -1
- package/dist/src/index.d.ts +7 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/packages.d.ts.map +1 -1
- package/dist/src/packages.js +3 -3
- package/dist/src/packages.js.map +1 -1
- package/dist/src/packages.spec.d.ts +6 -0
- package/dist/src/packages.spec.d.ts.map +1 -0
- package/dist/src/packages.spec.js +118 -0
- package/dist/src/packages.spec.js.map +1 -0
- package/dist/src/platform.d.ts +103 -9
- package/dist/src/platform.d.ts.map +1 -1
- package/dist/src/platform.js +335 -315
- package/dist/src/platform.js.map +1 -1
- package/dist/src/platform.spec.d.ts +6 -0
- package/dist/src/platform.spec.d.ts.map +1 -0
- package/dist/src/platform.spec.js +85 -0
- package/dist/src/platform.spec.js.map +1 -0
- package/dist/src/records.spec.js +15 -5
- package/dist/src/records.spec.js.map +1 -1
- package/dist/src/repository.d.ts +8 -1
- package/dist/src/repository.d.ts.map +1 -1
- package/dist/src/repository.js +8 -1
- package/dist/src/repository.js.map +1 -1
- package/dist/src/tasks.d.ts +11 -7
- package/dist/src/tasks.d.ts.map +1 -1
- package/dist/src/tasks.js +16 -8
- package/dist/src/tasks.js.map +1 -1
- package/dist/src/types.d.ts +63 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +7 -5
- package/dist/src/types.js.map +1 -1
- package/dist/src/workspaces.d.ts +16 -2
- package/dist/src/workspaces.d.ts.map +1 -1
- package/dist/src/workspaces.js +11 -4
- package/dist/src/workspaces.js.map +1 -1
- package/package.json +4 -4
|
@@ -15,14 +15,31 @@
|
|
|
15
15
|
* splices them: these tests pin that the splice is the value's blob, that an
|
|
16
16
|
* object answered by URL is fetched without the API's auth, and that an object
|
|
17
17
|
* which does not hash to its name is refused. `datasetGetStream`, which it is
|
|
18
|
-
* built on, hands the splice over as it goes, a few segments ahead.
|
|
18
|
+
* built on, hands the splice over as it goes, a few segments ahead. Given a
|
|
19
|
+
* `fetch`, every request of a download goes through it — the URLs a large
|
|
20
|
+
* object or value is answered with among them — and none through the global
|
|
21
|
+
* one.
|
|
22
|
+
*
|
|
23
|
+
* A dataset can move while it is read, and the old value's objects then be
|
|
24
|
+
* refused: these tests pin that `datasetGet` starts over from the new content,
|
|
25
|
+
* at most 3 times, and that `datasetGetStream` starts over only before it
|
|
26
|
+
* returns, raising the move once it has handed out a hash. A dataset that has
|
|
27
|
+
* not moved raises the read's own error, and a manifest above level 0 is
|
|
28
|
+
* refused before a segment is read.
|
|
29
|
+
*
|
|
30
|
+
* A host that serves a value it names by hash — a record's state at a past
|
|
31
|
+
* commit, say — reads it through the same calls: `objectGet` for one object,
|
|
32
|
+
* `collectionGetStream` for a collection by its manifest's hash, and
|
|
33
|
+
* `parsePage` for a page of it, which `datasetGetPage` reads its own with.
|
|
19
34
|
*/
|
|
20
35
|
import { describe, it, afterEach } from 'node:test';
|
|
21
36
|
import assert from 'node:assert/strict';
|
|
22
|
-
import { Beast2ManifestWriter, DictType, IntegerType, SortedMap, StringType, compareFor, decodeCollectionManifest, encodeBeast2PagedFor, sha256Hex, variant, } from '@elaraai/east';
|
|
37
|
+
import { Beast2ManifestWriter, DictType, IntegerType, SortedMap, StringType, compareFor, decodeCollectionManifest, encodeBeast2PagedFor, encodeCollectionManifest, sha256Hex, variant, } from '@elaraai/east';
|
|
23
38
|
import { BEAST2_CONTENT_TYPE } from '@elaraai/e3-types';
|
|
24
39
|
import { datasetFindKey, datasetGet, datasetGetPage, datasetGetStream } from './datasets.js';
|
|
25
40
|
import { ApiError, AuthError, DatasetHashMismatchError } from './http.js';
|
|
41
|
+
// Through the root entry, as a host reaches them.
|
|
42
|
+
import { collectionGetStream, objectGet, parsePage } from './index.js';
|
|
26
43
|
const realFetch = globalThis.fetch;
|
|
27
44
|
afterEach(() => {
|
|
28
45
|
globalThis.fetch = realFetch;
|
|
@@ -30,6 +47,12 @@ afterEach(() => {
|
|
|
30
47
|
const BASE = 'https://example.test';
|
|
31
48
|
const HASH = 'f'.repeat(64);
|
|
32
49
|
const lookupPath = [variant('field', 'inputs'), variant('field', 'lookup')];
|
|
50
|
+
/** A global fetch that fails any request that reaches it. */
|
|
51
|
+
function refuseGlobalFetch() {
|
|
52
|
+
globalThis.fetch = (async (input) => {
|
|
53
|
+
throw new Error(`the global fetch was called for ${String(input)}`);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
33
56
|
/** Installs a fetch mock returning `respond()` and recording request URLs. */
|
|
34
57
|
function mockFetch(respond) {
|
|
35
58
|
const state = { urls: [] };
|
|
@@ -116,10 +139,11 @@ describe('datasetFindKey', () => {
|
|
|
116
139
|
});
|
|
117
140
|
});
|
|
118
141
|
/** A collection as a server stores it — every object by its hash, the
|
|
119
|
-
* manifest's own among them — and the blob its splice is
|
|
120
|
-
|
|
142
|
+
* manifest's own among them — and the blob its splice is: `length` keys,
|
|
143
|
+
* each holding its index plus `first`, so another `first` is another value. */
|
|
144
|
+
function storedCollection({ first = 0, length = 20_000 } = {}) {
|
|
121
145
|
const type = DictType(StringType, IntegerType);
|
|
122
|
-
const value = new SortedMap(Array.from({ length
|
|
146
|
+
const value = new SortedMap(Array.from({ length }, (_, i) => [`k${String(i).padStart(6, '0')}`, BigInt(first + i)]), compareFor(StringType));
|
|
123
147
|
const objects = new Map();
|
|
124
148
|
let manifest = '';
|
|
125
149
|
const writer = new Beast2ManifestWriter(type, {
|
|
@@ -135,14 +159,15 @@ function storedCollection() {
|
|
|
135
159
|
const segments = decodeCollectionManifest(objects.get(manifest)).entries.map((entry) => entry.hash);
|
|
136
160
|
return { objects, manifest, segments, blob: encodeBeast2PagedFor(type)(value) };
|
|
137
161
|
}
|
|
138
|
-
/**
|
|
139
|
-
* from `objects` — the `presigned` ones with a URL to fetch them
|
|
140
|
-
* records each request, and whether it carried the API's
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
162
|
+
/** A `fetch` serving a dataset route naming `manifest`, and an objects route
|
|
163
|
+
* answering from `objects` — the `presigned` ones with a URL to fetch them
|
|
164
|
+
* from — which records each request, and whether it carried the API's
|
|
165
|
+
* auth. */
|
|
166
|
+
function collectionServer(manifest, objects, presigned) {
|
|
167
|
+
const requests = [];
|
|
168
|
+
const fetch = (async (input, init) => {
|
|
144
169
|
const url = new URL(input instanceof Request ? input.url : String(input));
|
|
145
|
-
|
|
170
|
+
requests.push({ url: url.href, auth: new Headers(init?.headers).has('Authorization') });
|
|
146
171
|
if (url.pathname.includes('/datasets/')) {
|
|
147
172
|
return new Response(JSON.stringify({ manifest }), {
|
|
148
173
|
status: 200,
|
|
@@ -158,7 +183,53 @@ function mockServer(manifest, objects, presigned) {
|
|
|
158
183
|
}
|
|
159
184
|
return new Response(objects.get(hash), { status: 200, headers: { 'Content-Type': BEAST2_CONTENT_TYPE } });
|
|
160
185
|
});
|
|
161
|
-
return
|
|
186
|
+
return { requests, fetch };
|
|
187
|
+
}
|
|
188
|
+
/** Stands {@link collectionServer} in for the global `fetch`. */
|
|
189
|
+
function mockServer(manifest, objects, presigned) {
|
|
190
|
+
const server = collectionServer(manifest, objects, presigned);
|
|
191
|
+
globalThis.fetch = server.fetch;
|
|
192
|
+
return server;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* A `fetch` serving a dataset that holds `values[at]`, as a host serves a
|
|
196
|
+
* caller only the objects of the datasets it reads, or as a store does once gc
|
|
197
|
+
* has collected an old value: the dataset route names the held value's
|
|
198
|
+
* manifest, which is its content hash too, and the objects route refuses,
|
|
199
|
+
* `object_not_found`, any object the held value does not name.
|
|
200
|
+
*/
|
|
201
|
+
function movingServer(values) {
|
|
202
|
+
const server = {
|
|
203
|
+
at: 0,
|
|
204
|
+
requests: [],
|
|
205
|
+
beforeObject: () => { },
|
|
206
|
+
fetch: (async (input) => {
|
|
207
|
+
const url = new URL(input instanceof Request ? input.url : String(input));
|
|
208
|
+
server.requests.push(url.href);
|
|
209
|
+
if (url.pathname.includes('/datasets/')) {
|
|
210
|
+
const { manifest } = values[server.at];
|
|
211
|
+
return new Response(JSON.stringify({ manifest }), {
|
|
212
|
+
status: 200,
|
|
213
|
+
headers: { 'Content-Type': 'application/json', 'X-Content-SHA256': manifest },
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
const hash = url.pathname.slice(url.pathname.lastIndexOf('/') + 1);
|
|
217
|
+
server.beforeObject(hash);
|
|
218
|
+
const bytes = values[server.at].objects.get(hash);
|
|
219
|
+
if (bytes === undefined) {
|
|
220
|
+
return new Response(JSON.stringify({ error: { type: 'object_not_found', message: `object ${hash} is no object of the dataset` } }), {
|
|
221
|
+
status: 404,
|
|
222
|
+
headers: { 'Content-Type': 'application/json' },
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return new Response(bytes, { status: 200, headers: { 'Content-Type': BEAST2_CONTENT_TYPE } });
|
|
226
|
+
}),
|
|
227
|
+
};
|
|
228
|
+
return server;
|
|
229
|
+
}
|
|
230
|
+
/** How many times a server's dataset was asked for. */
|
|
231
|
+
function datasetReads(server) {
|
|
232
|
+
return server.requests.filter((url) => url.includes('/datasets/')).length;
|
|
162
233
|
}
|
|
163
234
|
describe('datasetGet', () => {
|
|
164
235
|
it('downloads a collection as the objects its manifest names, spliced into the value\'s blob', async () => {
|
|
@@ -219,4 +290,193 @@ describe('datasetGet', () => {
|
|
|
219
290
|
});
|
|
220
291
|
});
|
|
221
292
|
});
|
|
293
|
+
describe('datasetGet through a given fetch', () => {
|
|
294
|
+
it('downloads a collection through the given fetch alone, a large object\'s URL among its requests', async () => {
|
|
295
|
+
refuseGlobalFetch();
|
|
296
|
+
const { objects, manifest, segments, blob } = storedCollection();
|
|
297
|
+
const server = collectionServer(manifest, objects, new Set([segments[1]]));
|
|
298
|
+
const result = await datasetGet(BASE, 'r', 'ws', lookupPath, { token: 'tok', fetch: server.fetch });
|
|
299
|
+
assert.deepEqual(result.data, blob);
|
|
300
|
+
assert.equal(server.requests.length, segments.length + 4, 'the dataset, the manifest, the header, each segment and the URL');
|
|
301
|
+
assert.deepEqual(server.requests.filter((request) => request.url.startsWith('https://bucket.test/')), [{ url: `https://bucket.test/${segments[1]}`, auth: false }]);
|
|
302
|
+
});
|
|
303
|
+
it('downloads a large value from the URL the dataset route answers with, through the given fetch', async () => {
|
|
304
|
+
refuseGlobalFetch();
|
|
305
|
+
const body = Uint8Array.from({ length: 300_000 }, (_, i) => i % 251);
|
|
306
|
+
const requests = [];
|
|
307
|
+
const given = (async (input, init) => {
|
|
308
|
+
const url = new URL(input instanceof Request ? input.url : String(input));
|
|
309
|
+
requests.push({ url: url.href, auth: new Headers(init?.headers).has('Authorization') });
|
|
310
|
+
if (url.host === 'example.test') {
|
|
311
|
+
return new Response(JSON.stringify({ url: 'https://bucket.test/value' }), {
|
|
312
|
+
status: 200,
|
|
313
|
+
headers: { 'Content-Type': 'application/json', 'X-Content-SHA256': HASH },
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
return new Response(new Blob([body]).stream(), { status: 200, headers: { 'Content-Type': BEAST2_CONTENT_TYPE } });
|
|
317
|
+
});
|
|
318
|
+
const result = await datasetGet(BASE, 'r', 'ws', lookupPath, { token: 'tok', fetch: given });
|
|
319
|
+
assert.deepEqual(result.data, body);
|
|
320
|
+
assert.equal(result.hash, HASH);
|
|
321
|
+
assert.deepEqual(requests.map((request) => [new URL(request.url).host, request.auth]), [['example.test', true], ['bucket.test', false]], 'the URL is fetched without the API\'s auth');
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
describe('a read of a dataset that moves while it is read', () => {
|
|
325
|
+
/** Is `err` the move to `current`, as a pinned page's refusal names it? */
|
|
326
|
+
const movedTo = (current) => (err) => {
|
|
327
|
+
assert.ok(err instanceof DatasetHashMismatchError, `expected DatasetHashMismatchError, got ${String(err)}`);
|
|
328
|
+
assert.equal(err.code, 'dataset_hash_mismatch');
|
|
329
|
+
assert.equal(err.currentHash, current);
|
|
330
|
+
return true;
|
|
331
|
+
};
|
|
332
|
+
it('datasetGet starts over from the new content when the old value\'s objects are refused mid-read, and names that content', async () => {
|
|
333
|
+
const [before, after] = [storedCollection(), storedCollection({ first: 1 })];
|
|
334
|
+
const server = movingServer([before, after]);
|
|
335
|
+
// A run writes the new value while the fourth segment is asked for: it and
|
|
336
|
+
// every later segment of the old value are refused from then on.
|
|
337
|
+
server.beforeObject = (hash) => {
|
|
338
|
+
if (hash === before.segments[3])
|
|
339
|
+
server.at = 1;
|
|
340
|
+
};
|
|
341
|
+
const result = await datasetGet(BASE, 'r', 'ws', lookupPath, { token: null, fetch: server.fetch });
|
|
342
|
+
assert.deepEqual(result.data, after.blob, 'the new value, with none of the old one\'s bytes');
|
|
343
|
+
assert.equal(result.hash, after.manifest, 'the hash is the content read');
|
|
344
|
+
assert.equal(datasetReads(server), 3, 'the read, the check that found it moved, and the read that started over');
|
|
345
|
+
});
|
|
346
|
+
it('datasetGetStream starts over before it returns, and raises a move once it has returned, never splicing two values', async () => {
|
|
347
|
+
const [before, after] = [storedCollection(), storedCollection({ first: 1 })];
|
|
348
|
+
assert.ok(before.segments.length > 12, `the value spans many segments, got ${before.segments.length}`);
|
|
349
|
+
// Moved between the dataset's answer and its manifest's read: nothing has
|
|
350
|
+
// been returned, so the read starts over.
|
|
351
|
+
const early = movingServer([before, after]);
|
|
352
|
+
early.beforeObject = (hash) => {
|
|
353
|
+
if (hash === before.manifest)
|
|
354
|
+
early.at = 1;
|
|
355
|
+
};
|
|
356
|
+
const restarted = await datasetGetStream(BASE, 'r', 'ws', lookupPath, { token: null, fetch: early.fetch });
|
|
357
|
+
assert.equal(restarted.hash, after.manifest);
|
|
358
|
+
const parts = [];
|
|
359
|
+
for await (const chunk of restarted.chunks)
|
|
360
|
+
parts.push(chunk);
|
|
361
|
+
assert.deepEqual(new Uint8Array(Buffer.concat(parts)), after.blob);
|
|
362
|
+
assert.equal(datasetReads(early), 2, 'the read and the check, whose answer the read starts over from');
|
|
363
|
+
// Moved once a hash and some chunks are out: the chunks end in the move,
|
|
364
|
+
// and every byte they gave is the old value's.
|
|
365
|
+
const late = movingServer([before, after]);
|
|
366
|
+
const { hash, chunks } = await datasetGetStream(BASE, 'r', 'ws', lookupPath, { token: null, fetch: late.fetch });
|
|
367
|
+
assert.equal(hash, before.manifest);
|
|
368
|
+
const taken = [];
|
|
369
|
+
await assert.rejects((async () => {
|
|
370
|
+
for await (const chunk of chunks) {
|
|
371
|
+
taken.push(chunk);
|
|
372
|
+
late.at = 1;
|
|
373
|
+
}
|
|
374
|
+
})(), movedTo(after.manifest));
|
|
375
|
+
const given = new Uint8Array(Buffer.concat(taken));
|
|
376
|
+
assert.ok(given.length > 0 && given.length < before.blob.length, `some of the value was given, ${given.length} bytes`);
|
|
377
|
+
assert.deepEqual(given, before.blob.subarray(0, given.length), 'what was given is the old value\'s, and nothing else');
|
|
378
|
+
});
|
|
379
|
+
it('raises the read\'s own error when the dataset has not moved', async () => {
|
|
380
|
+
const held = storedCollection();
|
|
381
|
+
held.objects.delete(held.segments[2]);
|
|
382
|
+
const server = movingServer([held]);
|
|
383
|
+
await assert.rejects(datasetGet(BASE, 'r', 'ws', lookupPath, { token: null, fetch: server.fetch }), (err) => {
|
|
384
|
+
assert.ok(err instanceof ApiError && !(err instanceof DatasetHashMismatchError), `expected the refusal itself, got ${String(err)}`);
|
|
385
|
+
assert.equal(err.code, 'object_not_found');
|
|
386
|
+
return true;
|
|
387
|
+
});
|
|
388
|
+
assert.equal(datasetReads(server), 2, 'the read and the one check');
|
|
389
|
+
});
|
|
390
|
+
it('gives up after 3 restarts on a dataset that keeps moving, naming the content it holds now', async () => {
|
|
391
|
+
const values = [0, 1, 2, 3, 4].map((first) => storedCollection({ first, length: 50 }));
|
|
392
|
+
const server = movingServer(values);
|
|
393
|
+
// Every read finds the dataset moved on by the time it asks for the manifest.
|
|
394
|
+
server.beforeObject = (hash) => {
|
|
395
|
+
if (hash === values[server.at].manifest)
|
|
396
|
+
server.at++;
|
|
397
|
+
};
|
|
398
|
+
await assert.rejects(datasetGet(BASE, 'r', 'ws', lookupPath, { token: null, fetch: server.fetch }), movedTo(values[4].manifest));
|
|
399
|
+
assert.deepEqual(server.requests.filter((url) => url.includes('/objects/')), values.slice(0, 4).map((value) => `${BASE}/api/repos/r/objects/${value.manifest}`), 'the read and 3 restarts, each refused its manifest');
|
|
400
|
+
});
|
|
401
|
+
it('refuses a manifest above level 0 by name, before reading a segment', async () => {
|
|
402
|
+
const { objects, manifest } = storedCollection();
|
|
403
|
+
const levelled = encodeCollectionManifest({ ...decodeCollectionManifest(objects.get(manifest)), level: 1n });
|
|
404
|
+
const levelledHash = sha256Hex(levelled);
|
|
405
|
+
objects.set(levelledHash, levelled);
|
|
406
|
+
const refusal = `the collection ${levelledHash} is a level 1 manifest, whose entries name manifests, not segments: ` +
|
|
407
|
+
'a newer e3 wrote it, which this client does not read — update @elaraai/e3-api-client';
|
|
408
|
+
const server = collectionServer(levelledHash, objects, new Set());
|
|
409
|
+
await assert.rejects(collectionGetStream(BASE, 'r', levelledHash, { token: null, fetch: server.fetch }), { message: refusal });
|
|
410
|
+
assert.deepEqual(server.requests.map((request) => request.url), [`${BASE}/api/repos/r/objects/${levelledHash}`], 'the manifest alone is read');
|
|
411
|
+
// A dataset holding one is refused the same way.
|
|
412
|
+
await assert.rejects(datasetGet(BASE, 'r', 'ws', lookupPath, { token: null, fetch: collectionServer(levelledHash, objects, new Set()).fetch }), { message: refusal });
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
describe('a stored value, by its hash', () => {
|
|
416
|
+
it('streams a collection by its manifest\'s hash through the objects route alone, spliced into the value\'s blob', async () => {
|
|
417
|
+
refuseGlobalFetch();
|
|
418
|
+
const { objects, manifest, segments, blob } = storedCollection();
|
|
419
|
+
const server = collectionServer(manifest, objects, new Set([segments[1]]));
|
|
420
|
+
const chunks = await collectionGetStream(BASE, 'r', manifest, { token: 'tok', fetch: server.fetch });
|
|
421
|
+
assert.deepEqual(server.requests.map((request) => request.url), [`${BASE}/api/repos/r/objects/${manifest}`], 'the manifest is read before the chunks are taken');
|
|
422
|
+
const parts = [];
|
|
423
|
+
for await (const chunk of chunks)
|
|
424
|
+
parts.push(chunk);
|
|
425
|
+
assert.deepEqual(new Uint8Array(Buffer.concat(parts)), blob);
|
|
426
|
+
assert.equal(server.requests.length, segments.length + 3, 'the manifest, the header, each segment and the URL');
|
|
427
|
+
assert.deepEqual(server.requests.filter((request) => request.url.includes('/datasets/')), [], 'no dataset is asked for');
|
|
428
|
+
});
|
|
429
|
+
it('reads one object by its hash, following a URL answer without the API\'s auth', async () => {
|
|
430
|
+
refuseGlobalFetch();
|
|
431
|
+
const { objects, manifest, segments } = storedCollection();
|
|
432
|
+
const server = collectionServer(manifest, objects, new Set([segments[1]]));
|
|
433
|
+
const options = { token: 'tok', fetch: server.fetch };
|
|
434
|
+
assert.deepEqual(await objectGet(BASE, 'r', segments[0], options), objects.get(segments[0]));
|
|
435
|
+
assert.deepEqual(await objectGet(BASE, 'r', segments[1], options), objects.get(segments[1]));
|
|
436
|
+
assert.deepEqual(server.requests, [
|
|
437
|
+
{ url: `${BASE}/api/repos/r/objects/${segments[0]}`, auth: true },
|
|
438
|
+
{ url: `${BASE}/api/repos/r/objects/${segments[1]}`, auth: true },
|
|
439
|
+
{ url: `https://bucket.test/${segments[1]}`, auth: false },
|
|
440
|
+
]);
|
|
441
|
+
});
|
|
442
|
+
it('refuses an object that does not hash to its name, and throws a refusal as the ApiError the server names', async () => {
|
|
443
|
+
const { objects, manifest, segments } = storedCollection();
|
|
444
|
+
const cut = objects.get(segments[2]).subarray(0, 100);
|
|
445
|
+
objects.set(segments[2], cut);
|
|
446
|
+
const server = collectionServer(manifest, objects, new Set());
|
|
447
|
+
await assert.rejects(objectGet(BASE, 'r', segments[2], { token: null, fetch: server.fetch }), {
|
|
448
|
+
message: `object ${segments[2]} arrived as ${sha256Hex(cut)}: the download was cut short or corrupted`,
|
|
449
|
+
});
|
|
450
|
+
const missing = (async () => new Response(JSON.stringify({ error: { type: 'object_not_found', message: `object ${HASH} not found` } }), {
|
|
451
|
+
status: 404,
|
|
452
|
+
headers: { 'Content-Type': 'application/json' },
|
|
453
|
+
}));
|
|
454
|
+
await assert.rejects(objectGet(BASE, 'r', HASH, { token: null, fetch: missing }), (err) => {
|
|
455
|
+
assert.ok(err instanceof ApiError, `expected ApiError, got ${String(err)}`);
|
|
456
|
+
assert.equal(err.code, 'object_not_found');
|
|
457
|
+
return true;
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
it('reads a page answer\'s window from its headers, as datasetGetPage reads its own', async () => {
|
|
461
|
+
const data = Uint8Array.from([1, 2, 3]);
|
|
462
|
+
const headers = {
|
|
463
|
+
'Content-Type': BEAST2_CONTENT_TYPE,
|
|
464
|
+
'X-Content-SHA256': HASH,
|
|
465
|
+
'X-Total-Bytes': '123456',
|
|
466
|
+
'X-Total-Elements': '8000',
|
|
467
|
+
'X-Total-Exactness': 'exact',
|
|
468
|
+
'X-Segment-Count': '80',
|
|
469
|
+
'X-Page-Offset': '900',
|
|
470
|
+
'X-Page-Count': '200',
|
|
471
|
+
};
|
|
472
|
+
const expected = { data, totalElements: 8000, totalBytes: 123456, totalExact: true, segmentCount: 80, offset: 900, count: 200, hash: HASH };
|
|
473
|
+
assert.deepEqual(await parsePage(new Response(data, { status: 200, headers })), expected);
|
|
474
|
+
mockFetch(() => new Response(data, { status: 200, headers }));
|
|
475
|
+
assert.deepEqual(await datasetGetPage(BASE, 'r', 'ws', lookupPath, { offset: 900, limit: 200 }, { token: null }), expected);
|
|
476
|
+
// A header the answer leaves out reads as nothing there.
|
|
477
|
+
assert.deepEqual(await parsePage(new Response(new Uint8Array(), { status: 200, headers: { 'X-Total-Exactness': 'upper-bound' } })), {
|
|
478
|
+
data: new Uint8Array(), totalElements: 0, totalBytes: 0, totalExact: false, segmentCount: 0, offset: 0, count: 0, hash: '',
|
|
479
|
+
});
|
|
480
|
+
});
|
|
481
|
+
});
|
|
222
482
|
//# sourceMappingURL=datasets.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasets.spec.js","sourceRoot":"","sources":["../../src/datasets.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datasets.spec.js","sourceRoot":"","sources":["../../src/datasets.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/src/executions.d.ts
CHANGED
|
@@ -2,16 +2,20 @@
|
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
5
|
+
import type { TaskLogChunk, DataflowBudget, DataflowGraph, DataflowResult, DataflowExecutionState } from './types.js';
|
|
6
6
|
import { type RequestOptions } from './http.js';
|
|
7
7
|
/**
|
|
8
8
|
* Options for starting dataflow execution. The run takes the server's budget
|
|
9
9
|
* of cores and memory.
|
|
10
10
|
*/
|
|
11
11
|
export interface DataflowOptions {
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
/** The tasks the run re-executes even where the cache holds their results:
|
|
13
|
+
* `true` for every task — under a filter, the filter's task — the names of
|
|
14
|
+
* the tasks, or `false` for none (default). A start naming a task the graph
|
|
15
|
+
* does not have (`task_not_found`), or one the filter's run leaves out
|
|
16
|
+
* (`dataflow_error`), is refused before anything runs. */
|
|
17
|
+
force?: boolean | readonly string[];
|
|
18
|
+
/** One task's exact name: the run runs it and its dependency closure */
|
|
15
19
|
filter?: string;
|
|
16
20
|
}
|
|
17
21
|
/**
|
|
@@ -38,10 +42,25 @@ export interface DataflowPollOptions {
|
|
|
38
42
|
* @throws {AuthError} On 401 Unauthorized
|
|
39
43
|
*/
|
|
40
44
|
export declare function dataflowExecuteLaunch(url: string, repo: string, workspace: string, dataflowOptions: DataflowOptions | undefined, options: RequestOptions): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Whether a poll left events of the run for the next: those past its
|
|
47
|
+
* `nextSeq`, up to the run's last (`lastSeq`), which a poll served its limit,
|
|
48
|
+
* or e3-types' `DATAFLOW_POLL_EVENTS_MAX`, does not reach.
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* A client that reads a run's events polls again at once from `nextSeq` while
|
|
52
|
+
* this holds, and takes a status that has ended as the run's last word only
|
|
53
|
+
* once it does not: the events of its end may be past the ones served.
|
|
54
|
+
*
|
|
55
|
+
* @param state - A poll's answer
|
|
56
|
+
* @returns Whether events of the run are past the poll's `nextSeq`
|
|
57
|
+
*/
|
|
58
|
+
export declare function dataflowEventsRemain(state: Pick<DataflowExecutionState, 'nextSeq' | 'lastSeq'>): boolean;
|
|
41
59
|
/**
|
|
42
60
|
* Execute dataflow on a workspace with client-side polling.
|
|
43
61
|
*
|
|
44
|
-
* Starts execution, polls until complete, and returns the result
|
|
62
|
+
* Starts execution, polls until complete, and returns the result, with every
|
|
63
|
+
* event of the run however many polls it takes.
|
|
45
64
|
*
|
|
46
65
|
* @param url - Base URL of the e3 API server
|
|
47
66
|
* @param repo - Repository name
|
|
@@ -74,9 +93,19 @@ export interface LogOptions {
|
|
|
74
93
|
offset?: number;
|
|
75
94
|
/** Maximum bytes to read (default: 65536) */
|
|
76
95
|
limit?: number;
|
|
96
|
+
/** The execution to read, by the inputs hash and id a chunk named: the
|
|
97
|
+
* task's current execution unless given */
|
|
98
|
+
execution?: {
|
|
99
|
+
inputsHash: string;
|
|
100
|
+
executionId: string;
|
|
101
|
+
};
|
|
77
102
|
}
|
|
78
103
|
/**
|
|
79
|
-
* Read task
|
|
104
|
+
* Read a chunk of a task's log from a workspace: of the task's current
|
|
105
|
+
* execution, or of the one `logOptions.execution` names. The chunk names the
|
|
106
|
+
* execution it was read from and whether it has ended, so a client polling
|
|
107
|
+
* the log reads on from its offset, starts over when the execution changes,
|
|
108
|
+
* and stops once it has ended and its log is read.
|
|
80
109
|
*
|
|
81
110
|
* @param url - Base URL of the e3 API server
|
|
82
111
|
* @param repo - Repository name
|
|
@@ -84,30 +113,35 @@ export interface LogOptions {
|
|
|
84
113
|
* @param task - Task name
|
|
85
114
|
* @param logOptions - Log reading options
|
|
86
115
|
* @param options - Request options including auth token
|
|
87
|
-
* @returns Log chunk with data and metadata
|
|
116
|
+
* @returns Log chunk with data and metadata, and its execution
|
|
88
117
|
* @throws {ApiError} On application-level errors
|
|
89
118
|
* @throws {AuthError} On 401 Unauthorized
|
|
90
119
|
*/
|
|
91
|
-
export declare function taskLogs(url: string, repo: string, workspace: string, task: string, logOptions: LogOptions | undefined, options: RequestOptions): Promise<
|
|
120
|
+
export declare function taskLogs(url: string, repo: string, workspace: string, task: string, logOptions: LogOptions | undefined, options: RequestOptions): Promise<TaskLogChunk>;
|
|
92
121
|
/**
|
|
93
122
|
* Options for getting execution state.
|
|
94
123
|
*/
|
|
95
124
|
export interface ExecutionStateOptions {
|
|
96
|
-
/**
|
|
97
|
-
|
|
98
|
-
|
|
125
|
+
/** The poll's cursor: the `nextSeq` the poll before answered, after which
|
|
126
|
+
* the events are served (default: 0, every event) */
|
|
127
|
+
since?: bigint;
|
|
128
|
+
/** Maximum events to return; 0 for the run's state alone. The server serves
|
|
129
|
+
* at most e3-types' `DATAFLOW_POLL_EVENTS_MAX` (1,000), which is also the
|
|
130
|
+
* default: a poll that left events has `nextSeq` before `lastSeq`
|
|
131
|
+
* ({@link dataflowEventsRemain}). */
|
|
99
132
|
limit?: number;
|
|
100
133
|
}
|
|
101
134
|
/**
|
|
102
135
|
* Get dataflow execution state (for polling).
|
|
103
136
|
*
|
|
104
|
-
* Returns the current
|
|
105
|
-
*
|
|
137
|
+
* Returns the current state of the workspace's latest run, and its events
|
|
138
|
+
* past the poll's cursor. A client polling a run passes the `nextSeq` each
|
|
139
|
+
* answer gives as the next poll's `since`, so each poll is served what is new.
|
|
106
140
|
*
|
|
107
141
|
* @param url - Base URL of the e3 API server
|
|
108
142
|
* @param repo - Repository name
|
|
109
143
|
* @param workspace - Workspace name
|
|
110
|
-
* @param stateOptions -
|
|
144
|
+
* @param stateOptions - The poll's cursor, and the most events it is served
|
|
111
145
|
* @param options - Request options including auth token
|
|
112
146
|
* @returns Execution state with events and summary
|
|
113
147
|
* @throws {ApiError} On application-level errors
|
|
@@ -135,7 +169,8 @@ export declare function dataflowBudget(url: string, repo: string, workspace: str
|
|
|
135
169
|
* @param repo - Repository name
|
|
136
170
|
* @param workspace - Workspace name
|
|
137
171
|
* @param options - Request options (token, etc.)
|
|
138
|
-
* @throws {ApiError}
|
|
172
|
+
* @throws {ApiError} `dataflow_error`, "No active execution for this
|
|
173
|
+
* workspace", when no execution is running; or why else the cancel failed
|
|
139
174
|
* @throws {AuthError} On 401 Unauthorized
|
|
140
175
|
*/
|
|
141
176
|
export declare function dataflowCancel(url: string, repo: string, workspace: string, options: RequestOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../src/executions.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../src/executions.ts"],"names":[],"mappings":"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"}
|