@elaraai/e3-api-server 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 +88 -11
- package/dist/src/errors.d.ts +15 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +22 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/handlers/dataflow.d.ts +89 -18
- package/dist/src/handlers/dataflow.d.ts.map +1 -1
- package/dist/src/handlers/dataflow.js +198 -123
- package/dist/src/handlers/dataflow.js.map +1 -1
- package/dist/src/handlers/dataflow.spec.js +257 -7
- package/dist/src/handlers/dataflow.spec.js.map +1 -1
- package/dist/src/handlers/datasets.d.ts +56 -15
- package/dist/src/handlers/datasets.d.ts.map +1 -1
- package/dist/src/handlers/datasets.js +200 -122
- package/dist/src/handlers/datasets.js.map +1 -1
- package/dist/src/handlers/datasets.spec.js +92 -2
- package/dist/src/handlers/datasets.spec.js.map +1 -1
- package/dist/src/handlers/functions.d.ts +11 -2
- package/dist/src/handlers/functions.d.ts.map +1 -1
- package/dist/src/handlers/functions.js +50 -20
- package/dist/src/handlers/functions.js.map +1 -1
- package/dist/src/handlers/functions.spec.js +12 -1
- package/dist/src/handlers/functions.spec.js.map +1 -1
- package/dist/src/handlers/index.d.ts +2 -2
- package/dist/src/handlers/index.d.ts.map +1 -1
- package/dist/src/handlers/index.js +2 -2
- package/dist/src/handlers/index.js.map +1 -1
- package/dist/src/handlers/packages.d.ts +1 -1
- package/dist/src/handlers/packages.d.ts.map +1 -1
- package/dist/src/handlers/packages.js +1 -1
- package/dist/src/handlers/packages.js.map +1 -1
- package/dist/src/handlers/records.d.ts +27 -7
- package/dist/src/handlers/records.d.ts.map +1 -1
- package/dist/src/handlers/records.js +36 -16
- package/dist/src/handlers/records.js.map +1 -1
- package/dist/src/handlers/records.spec.js +160 -26
- package/dist/src/handlers/records.spec.js.map +1 -1
- package/dist/src/handlers/repository.d.ts +9 -1
- package/dist/src/handlers/repository.d.ts.map +1 -1
- package/dist/src/handlers/repository.js +14 -5
- package/dist/src/handlers/repository.js.map +1 -1
- package/dist/src/handlers/tasks.d.ts +18 -6
- package/dist/src/handlers/tasks.d.ts.map +1 -1
- package/dist/src/handlers/tasks.js +31 -22
- package/dist/src/handlers/tasks.js.map +1 -1
- package/dist/src/handlers/tasks.spec.js +61 -12
- package/dist/src/handlers/tasks.spec.js.map +1 -1
- package/dist/src/handlers/workspaces.d.ts +11 -6
- package/dist/src/handlers/workspaces.d.ts.map +1 -1
- package/dist/src/handlers/workspaces.js +14 -8
- package/dist/src/handlers/workspaces.js.map +1 -1
- package/dist/src/handlers/workspaces.spec.js +24 -8
- package/dist/src/handlers/workspaces.spec.js.map +1 -1
- package/dist/src/identity.d.ts +22 -0
- package/dist/src/identity.d.ts.map +1 -0
- package/dist/src/identity.js +6 -0
- package/dist/src/identity.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/local-dataflow.d.ts +14 -1
- package/dist/src/local-dataflow.d.ts.map +1 -1
- package/dist/src/local-dataflow.js +12 -7
- package/dist/src/local-dataflow.js.map +1 -1
- package/dist/src/middleware/auth.d.ts +1 -11
- package/dist/src/middleware/auth.d.ts.map +1 -1
- package/dist/src/middleware/auth.js.map +1 -1
- package/dist/src/middleware/repository.d.ts +1 -1
- package/dist/src/middleware/repository.d.ts.map +1 -1
- package/dist/src/middleware/repository.js +4 -10
- package/dist/src/middleware/repository.js.map +1 -1
- package/dist/src/middleware/repository.spec.js +7 -6
- package/dist/src/middleware/repository.spec.js.map +1 -1
- package/dist/src/portable.d.ts +47 -0
- package/dist/src/portable.d.ts.map +1 -0
- package/dist/src/portable.js +79 -0
- package/dist/src/portable.js.map +1 -0
- package/dist/src/portable.spec.d.ts +6 -0
- package/dist/src/portable.spec.d.ts.map +1 -0
- package/dist/src/portable.spec.js +325 -0
- package/dist/src/portable.spec.js.map +1 -0
- package/dist/src/routes/dataset-path.d.ts +28 -0
- package/dist/src/routes/dataset-path.d.ts.map +1 -0
- package/dist/src/routes/dataset-path.js +52 -0
- package/dist/src/routes/dataset-path.js.map +1 -0
- package/dist/src/routes/datasets.d.ts +7 -1
- package/dist/src/routes/datasets.d.ts.map +1 -1
- package/dist/src/routes/datasets.js +5 -11
- package/dist/src/routes/datasets.js.map +1 -1
- package/dist/src/routes/executions.d.ts +4 -2
- package/dist/src/routes/executions.d.ts.map +1 -1
- package/dist/src/routes/executions.js +31 -10
- package/dist/src/routes/executions.js.map +1 -1
- package/dist/src/routes/functions.d.ts +16 -8
- package/dist/src/routes/functions.d.ts.map +1 -1
- package/dist/src/routes/functions.js +21 -11
- package/dist/src/routes/functions.js.map +1 -1
- package/dist/src/routes/index.d.ts +4 -3
- package/dist/src/routes/index.d.ts.map +1 -1
- package/dist/src/routes/index.js +1 -0
- package/dist/src/routes/index.js.map +1 -1
- package/dist/src/routes/objects.d.ts +4 -2
- package/dist/src/routes/objects.d.ts.map +1 -1
- package/dist/src/routes/objects.js +5 -8
- package/dist/src/routes/objects.js.map +1 -1
- package/dist/src/routes/package-transfer.d.ts +1 -1
- package/dist/src/routes/package-transfer.d.ts.map +1 -1
- package/dist/src/routes/package-transfer.js +19 -22
- package/dist/src/routes/package-transfer.js.map +1 -1
- package/dist/src/routes/packages.d.ts +1 -1
- package/dist/src/routes/packages.d.ts.map +1 -1
- package/dist/src/routes/query.d.ts +53 -0
- package/dist/src/routes/query.d.ts.map +1 -0
- package/dist/src/routes/query.js +86 -0
- package/dist/src/routes/query.js.map +1 -0
- package/dist/src/routes/query.spec.d.ts +6 -0
- package/dist/src/routes/query.spec.d.ts.map +1 -0
- package/dist/src/routes/query.spec.js +49 -0
- package/dist/src/routes/query.spec.js.map +1 -0
- package/dist/src/routes/records.d.ts +32 -3
- package/dist/src/routes/records.d.ts.map +1 -1
- package/dist/src/routes/records.js +34 -7
- package/dist/src/routes/records.js.map +1 -1
- package/dist/src/routes/repositories.d.ts +1 -1
- package/dist/src/routes/repositories.d.ts.map +1 -1
- package/dist/src/routes/repository.d.ts +6 -1
- package/dist/src/routes/repository.d.ts.map +1 -1
- package/dist/src/routes/repository.js +5 -0
- package/dist/src/routes/repository.js.map +1 -1
- package/dist/src/routes/repository.spec.d.ts +6 -0
- package/dist/src/routes/repository.spec.d.ts.map +1 -0
- package/dist/src/routes/repository.spec.js +84 -0
- package/dist/src/routes/repository.spec.js.map +1 -0
- package/dist/src/routes/tasks.d.ts +1 -1
- package/dist/src/routes/tasks.d.ts.map +1 -1
- package/dist/src/routes/tasks.js +16 -4
- package/dist/src/routes/tasks.js.map +1 -1
- package/dist/src/routes/transfer.d.ts +1 -1
- package/dist/src/routes/transfer.d.ts.map +1 -1
- package/dist/src/routes/transfer.js +7 -27
- package/dist/src/routes/transfer.js.map +1 -1
- package/dist/src/routes/workspaces.d.ts +1 -1
- package/dist/src/routes/workspaces.d.ts.map +1 -1
- package/dist/src/routes/workspaces.js +34 -22
- package/dist/src/routes/workspaces.js.map +1 -1
- package/dist/src/server.js +1 -1
- package/dist/src/server.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/package.json +8 -4
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { MiddlewareHandler } from 'hono';
|
|
6
6
|
import type { KeyPair } from '../auth/keys.js';
|
|
7
|
+
export type { Identity } from '../identity.js';
|
|
7
8
|
/**
|
|
8
9
|
* JWT authentication configuration.
|
|
9
10
|
*
|
|
@@ -24,17 +25,6 @@ export interface AuthConfig {
|
|
|
24
25
|
/** Internal: direct KeyPair for built-in OIDC provider (avoids self-fetch) */
|
|
25
26
|
_internalKeys?: KeyPair;
|
|
26
27
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Identity information extracted from JWT and set on context.
|
|
29
|
-
*/
|
|
30
|
-
export interface Identity {
|
|
31
|
-
/** Subject - typically user ID */
|
|
32
|
-
sub: string;
|
|
33
|
-
/** User email (if present in token) */
|
|
34
|
-
email?: string;
|
|
35
|
-
/** User roles (if present in token) */
|
|
36
|
-
roles: string[];
|
|
37
|
-
}
|
|
38
28
|
/**
|
|
39
29
|
* Create JWT authentication middleware.
|
|
40
30
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK/C,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAsDD;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+FzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/middleware/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* not exist yet, or is being removed, and their routes answer for it.
|
|
14
14
|
*/
|
|
15
15
|
import type { MiddlewareHandler } from 'hono';
|
|
16
|
-
import { type StorageBackend } from '@elaraai/e3-core';
|
|
16
|
+
import { type StorageBackend } from '@elaraai/e3-core/portable';
|
|
17
17
|
/** How {@link createRepositoryGate} treats a repository that owes store
|
|
18
18
|
* upgrades. */
|
|
19
19
|
export interface RepositoryGateOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/middleware/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAiD,KAAK,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/middleware/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAiD,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAkB/G;gBACgB;AAChB,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,OAAO,GAAE,qBAA0B,GAClC,iBAAiB,CA4CnB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,iBAAiB,CAU9D"}
|
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
|
-
import { RepositoryUpgradePendingError, repositoryOpen } from '@elaraai/e3-core';
|
|
6
|
-
import { sendJsonError } from '../errors.js';
|
|
7
|
-
/** How long, in seconds, a client is told to wait before it asks again of a
|
|
8
|
-
* repository an upgrade waits on. */
|
|
9
|
-
const UPGRADE_RETRY_AFTER_S = 5;
|
|
5
|
+
import { RepositoryUpgradePendingError, repositoryOpen } from '@elaraai/e3-core/portable';
|
|
6
|
+
import { sendJsonError, sendUpgradePending } from '../errors.js';
|
|
10
7
|
/** Whether a request creates or removes a repository. */
|
|
11
8
|
function createsOrRemoves(c) {
|
|
12
9
|
return (c.req.method === 'PUT' || c.req.method === 'DELETE') && /\/repos\/[^/]+$/.test(c.req.path);
|
|
@@ -84,11 +81,8 @@ export function createRepositoryGate(storage, getRepoPath, options = {}) {
|
|
|
84
81
|
// The host's to report; the next request calls it again.
|
|
85
82
|
}
|
|
86
83
|
}
|
|
87
|
-
if (!stopsOrPollsDataflow(c))
|
|
88
|
-
|
|
89
|
-
refused.headers.set('Retry-After', String(UPGRADE_RETRY_AFTER_S));
|
|
90
|
-
return refused;
|
|
91
|
-
}
|
|
84
|
+
if (!stopsOrPollsDataflow(c))
|
|
85
|
+
return sendUpgradePending(err);
|
|
92
86
|
}
|
|
93
87
|
}
|
|
94
88
|
await next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/middleware/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAuB,MAAM,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/middleware/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { describe, it } from 'node:test';
|
|
|
11
11
|
import assert from 'node:assert/strict';
|
|
12
12
|
import { Hono } from 'hono';
|
|
13
13
|
import { encodeBeast2For, none, variant } from '@elaraai/east';
|
|
14
|
-
import {
|
|
14
|
+
import { repositoryUpgradeStep } from '@elaraai/e3-core';
|
|
15
15
|
import { InMemoryStorage } from '@elaraai/e3-core/test';
|
|
16
16
|
import { WorkspaceRecordType } from '@elaraai/e3-types';
|
|
17
17
|
import { createRepositoryGate } from './repository.js';
|
|
@@ -27,8 +27,9 @@ describe('the repository gate', () => {
|
|
|
27
27
|
assert.ok(run, 'the run holds its workspace');
|
|
28
28
|
// The host is upgraded to a release whose backend ships a layout step,
|
|
29
29
|
// which the repository, created before it, owes.
|
|
30
|
+
const before = (await storage.refs.repositoryRead(repo))?.upgrades.map(({ name }) => name) ?? [];
|
|
30
31
|
const applied = [];
|
|
31
|
-
storage.upgrades.push({ name: 'host-layout-2', apply: async () => { applied.push('host-layout-2'); } });
|
|
32
|
+
storage.upgrades.push({ name: 'host-layout-2', apply: async () => { applied.push('host-layout-2'); return null; } });
|
|
32
33
|
const app = new Hono();
|
|
33
34
|
app.use('/api/repos/:repo/*', createRepositoryGate(storage, (r) => r));
|
|
34
35
|
app.post('/api/repos/:repo/workspaces/:ws/dataflow/cancel', (c) => c.text('the cancel route ran'));
|
|
@@ -68,7 +69,7 @@ describe('the repository gate', () => {
|
|
|
68
69
|
const status = await app.request(`/api/repos/${repo}/workspaces/main/status`);
|
|
69
70
|
assert.equal(await status.text(), 'the status route ran');
|
|
70
71
|
assert.deepEqual(applied, ['host-layout-2']);
|
|
71
|
-
assert.deepEqual((await storage.refs.repositoryRead(repo))?.upgrades.map(({ name }) => name), ['host-layout-2']);
|
|
72
|
+
assert.deepEqual((await storage.refs.repositoryRead(repo))?.upgrades.map(({ name }) => name), [...before, 'host-layout-2']);
|
|
72
73
|
});
|
|
73
74
|
it('leaves the upgrade to the host\'s job when told to: no request applies it, each one tells the host, and all pass once the job has', async () => {
|
|
74
75
|
const storage = new InMemoryStorage();
|
|
@@ -76,7 +77,7 @@ describe('the repository gate', () => {
|
|
|
76
77
|
await storage.repos.create(repo);
|
|
77
78
|
await storage.refs.workspaceWrite(repo, 'main', encodeBeast2For(WorkspaceRecordType)(none));
|
|
78
79
|
const applied = [];
|
|
79
|
-
storage.upgrades.push({ name: 'host-layout-2', apply: async () => { applied.push('host-layout-2'); } });
|
|
80
|
+
storage.upgrades.push({ name: 'host-layout-2', apply: async () => { applied.push('host-layout-2'); return null; } });
|
|
80
81
|
// The host starts its job as it is told; the second time, starting it
|
|
81
82
|
// fails, which the host reports itself.
|
|
82
83
|
const told = [];
|
|
@@ -107,8 +108,8 @@ describe('the repository gate', () => {
|
|
|
107
108
|
assert.equal(await cancel.text(), 'the cancel route ran');
|
|
108
109
|
assert.deepEqual(told, [['gated', ['host-layout-2']], ['gated', ['host-layout-2']], ['gated', ['host-layout-2']]]);
|
|
109
110
|
assert.deepEqual(applied, []);
|
|
110
|
-
// The host's job
|
|
111
|
-
await
|
|
111
|
+
// The host's job applies the step, a part at a time until none is owed.
|
|
112
|
+
assert.deepEqual(await repositoryUpgradeStep(storage, repo, { budgetMs: 10_000 }), { owed: [] });
|
|
112
113
|
assert.deepEqual(applied, ['host-layout-2']);
|
|
113
114
|
const status = await app.request(`/api/repos/${repo}/workspaces/main/status`);
|
|
114
115
|
assert.equal(await status.text(), 'the status route ran');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.spec.js","sourceRoot":"","sources":["../../../src/middleware/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,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"repository.spec.js","sourceRoot":"","sources":["../../../src/middleware/repository.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* e3-api-server, portable: the routes that run wherever JavaScript does.
|
|
7
|
+
*
|
|
8
|
+
* This entry (`@elaraai/e3-api-server/portable`) is the route factories, the
|
|
9
|
+
* handlers and the repository gate, with nothing of the machine they run on:
|
|
10
|
+
* every module it reaches imports only another of them, East, e3's types,
|
|
11
|
+
* e3-core's portable entry and Hono, and names none of Node's globals, which
|
|
12
|
+
* `portable.spec.ts` checks through every module it reaches. A host mounts the
|
|
13
|
+
* factories over the seams it gives them — its storage, its runner, its
|
|
14
|
+
* transfer backend, its orchestrator and state store, and its `OneShotAccess`
|
|
15
|
+
* — as the local server does over its own, and as an e3 in a browser page
|
|
16
|
+
* does over the page's.
|
|
17
|
+
*
|
|
18
|
+
* The root entry (`@elaraai/e3-api-server`) exports every one of these, the
|
|
19
|
+
* same functions and objects, and adds what needs Node:
|
|
20
|
+
*
|
|
21
|
+
* - the local server (`createServer`), its budget, and its byte endpoints
|
|
22
|
+
* (`createDataEndpoints`), which stage uploads and downloads as files in the
|
|
23
|
+
* repository — a host serves those URLs itself, as S3 does for e3-cloud;
|
|
24
|
+
* - auth: the token middleware, the OIDC provider and the keys it signs with.
|
|
25
|
+
*
|
|
26
|
+
* @packageDocumentation
|
|
27
|
+
*/
|
|
28
|
+
export { createRepositoriesRoutes, createSingleRepositoryRoutes } from './routes/repositories.js';
|
|
29
|
+
export { createRepositoryRoutes } from './routes/repository.js';
|
|
30
|
+
export { createPackageRoutes } from './routes/packages.js';
|
|
31
|
+
export { createPackageTransferRoutes } from './routes/package-transfer.js';
|
|
32
|
+
export { createWorkspaceRoutes } from './routes/workspaces.js';
|
|
33
|
+
export { createDatasetRoutes, type DatasetRouteOptions } from './routes/datasets.js';
|
|
34
|
+
export { createTransferRoutes, type TransferRouteOptions } from './routes/transfer.js';
|
|
35
|
+
export { createTaskRoutes } from './routes/tasks.js';
|
|
36
|
+
export { createExecutionRoutes, type DataflowSeams, type RunnerBudget } from './routes/executions.js';
|
|
37
|
+
export { createObjectRoutes } from './routes/objects.js';
|
|
38
|
+
export { createPackageFunctionRoutes, createWorkspaceFunctionRoutes, createOneShotRoutes, oneShotAccessByRoles, type GetRunner, type OneShotAccess, type OneShotRoutesOptions, type FunctionRoutesOptions, } from './routes/functions.js';
|
|
39
|
+
export { createWorkspaceRecordRoutes, type RecordRoutesOptions } from './routes/records.js';
|
|
40
|
+
export { badQuery, wholeQuery, pathsQuery, type QueryLeast } from './routes/query.js';
|
|
41
|
+
export * from './handlers/index.js';
|
|
42
|
+
export { createRepositoryGate, createSingleRepositoryGate, type RepositoryGateOptions } from './middleware/repository.js';
|
|
43
|
+
export type { Identity } from './identity.js';
|
|
44
|
+
export { errorToVariant, errorToHttpStatus, sendJsonError, sendUpgradePending } from './errors.js';
|
|
45
|
+
export { ApiTypes } from './types.js';
|
|
46
|
+
export { sendSuccess, sendError, sendSuccessWithStatus, decodeBeast2, decodeBody } from './beast2.js';
|
|
47
|
+
//# sourceMappingURL=portable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable.d.ts","sourceRoot":"","sources":["../../src/portable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,2BAA2B,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK5F,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMtF,cAAc,qBAAqB,CAAC;AAOpC,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAI1H,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAS9C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMnG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* e3-api-server, portable: the routes that run wherever JavaScript does.
|
|
7
|
+
*
|
|
8
|
+
* This entry (`@elaraai/e3-api-server/portable`) is the route factories, the
|
|
9
|
+
* handlers and the repository gate, with nothing of the machine they run on:
|
|
10
|
+
* every module it reaches imports only another of them, East, e3's types,
|
|
11
|
+
* e3-core's portable entry and Hono, and names none of Node's globals, which
|
|
12
|
+
* `portable.spec.ts` checks through every module it reaches. A host mounts the
|
|
13
|
+
* factories over the seams it gives them — its storage, its runner, its
|
|
14
|
+
* transfer backend, its orchestrator and state store, and its `OneShotAccess`
|
|
15
|
+
* — as the local server does over its own, and as an e3 in a browser page
|
|
16
|
+
* does over the page's.
|
|
17
|
+
*
|
|
18
|
+
* The root entry (`@elaraai/e3-api-server`) exports every one of these, the
|
|
19
|
+
* same functions and objects, and adds what needs Node:
|
|
20
|
+
*
|
|
21
|
+
* - the local server (`createServer`), its budget, and its byte endpoints
|
|
22
|
+
* (`createDataEndpoints`), which stage uploads and downloads as files in the
|
|
23
|
+
* repository — a host serves those URLs itself, as S3 does for e3-cloud;
|
|
24
|
+
* - auth: the token middleware, the OIDC provider and the keys it signs with.
|
|
25
|
+
*
|
|
26
|
+
* @packageDocumentation
|
|
27
|
+
*/
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Route factories
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// The repositories a host keeps, and a server of one
|
|
32
|
+
export { createRepositoriesRoutes, createSingleRepositoryRoutes } from './routes/repositories.js';
|
|
33
|
+
// A repository's status, record and gc
|
|
34
|
+
export { createRepositoryRoutes } from './routes/repository.js';
|
|
35
|
+
// Packages, and their import and export as jobs
|
|
36
|
+
export { createPackageRoutes } from './routes/packages.js';
|
|
37
|
+
export { createPackageTransferRoutes } from './routes/package-transfer.js';
|
|
38
|
+
// Workspaces, and their deploys and exports as jobs
|
|
39
|
+
export { createWorkspaceRoutes } from './routes/workspaces.js';
|
|
40
|
+
// Datasets — whole, paged and searched by key — and their uploads, and who may
|
|
41
|
+
// keep an answer pinned to a hash
|
|
42
|
+
export { createDatasetRoutes } from './routes/datasets.js';
|
|
43
|
+
export { createTransferRoutes } from './routes/transfer.js';
|
|
44
|
+
// Tasks and their executions
|
|
45
|
+
export { createTaskRoutes } from './routes/tasks.js';
|
|
46
|
+
// A workspace's dataflow, over the orchestrator and state store a host gives
|
|
47
|
+
export { createExecutionRoutes } from './routes/executions.js';
|
|
48
|
+
// Objects by hash
|
|
49
|
+
export { createObjectRoutes } from './routes/objects.js';
|
|
50
|
+
// Functions and one-shot, under the grant the host's access gives each caller
|
|
51
|
+
export { createPackageFunctionRoutes, createWorkspaceFunctionRoutes, createOneShotRoutes, oneShotAccessByRoles, } from './routes/functions.js';
|
|
52
|
+
// Record mutations and history, under the host's deadline and history page
|
|
53
|
+
export { createWorkspaceRecordRoutes } from './routes/records.js';
|
|
54
|
+
// What a route reads from a query — a window's offset and limit, the dataset
|
|
55
|
+
// paths a status names — and the 400 that refuses one: what a host's own
|
|
56
|
+
// routes read and refuse with, so they answer as upstream's do
|
|
57
|
+
export { badQuery, wholeQuery, pathsQuery } from './routes/query.js';
|
|
58
|
+
// =============================================================================
|
|
59
|
+
// Handlers
|
|
60
|
+
// =============================================================================
|
|
61
|
+
export * from './handlers/index.js';
|
|
62
|
+
// =============================================================================
|
|
63
|
+
// The gate, and who calls
|
|
64
|
+
// =============================================================================
|
|
65
|
+
// The gate every request to one repository passes
|
|
66
|
+
export { createRepositoryGate, createSingleRepositoryGate } from './middleware/repository.js';
|
|
67
|
+
// =============================================================================
|
|
68
|
+
// Errors, answered as every route answers them
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// An e3-core error as the API's `ErrorType`, as its HTTP status and as a JSON
|
|
71
|
+
// answer, and a repository's owed upgrades as the gate answers them: what a
|
|
72
|
+
// host's own routes answer with, so they answer as upstream's do
|
|
73
|
+
export { errorToVariant, errorToHttpStatus, sendJsonError, sendUpgradePending } from './errors.js';
|
|
74
|
+
// =============================================================================
|
|
75
|
+
// Wire types and BEAST2 helpers
|
|
76
|
+
// =============================================================================
|
|
77
|
+
export { ApiTypes } from './types.js';
|
|
78
|
+
export { sendSuccess, sendError, sendSuccessWithStatus, decodeBeast2, decodeBody } from './beast2.js';
|
|
79
|
+
//# sourceMappingURL=portable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/portable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,qDAAqD;AACrD,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAElG,uCAAuC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,gDAAgD;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,oDAAoD;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,+EAA+E;AAC/E,kCAAkC;AAClC,OAAO,EAAE,mBAAmB,EAA4B,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAA6B,MAAM,sBAAsB,CAAC;AAEvF,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,6EAA6E;AAC7E,OAAO,EAAE,qBAAqB,EAAyC,MAAM,wBAAwB,CAAC;AAEtG,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,8EAA8E;AAC9E,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,GAKrB,MAAM,uBAAuB,CAAC;AAE/B,2EAA2E;AAC3E,OAAO,EAAE,2BAA2B,EAA4B,MAAM,qBAAqB,CAAC;AAE5F,6EAA6E;AAC7E,yEAAyE;AACzE,+DAA+D;AAC/D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AAEtF,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,cAAc,qBAAqB,CAAC;AAEpC,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,kDAAkD;AAClD,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAA8B,MAAM,4BAA4B,CAAC;AAM1H,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAEhF,8EAA8E;AAC9E,4EAA4E;AAC5E,iEAAiE;AACjE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnG,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable.spec.d.ts","sourceRoot":"","sources":["../../src/portable.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|