optio-api 0.2.9 → 0.2.10
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 +32 -5
- package/dist/_generated/optio-engine.d.ts +8 -0
- package/dist/_generated/optio-engine.d.ts.map +1 -1
- package/dist/_generated/optio-engine.js +3 -0
- package/dist/_generated/optio-engine.js.map +1 -1
- package/dist/access-scope.d.ts +53 -0
- package/dist/access-scope.d.ts.map +1 -0
- package/dist/access-scope.js +110 -0
- package/dist/access-scope.js.map +1 -0
- package/dist/adapters/express.d.ts +5 -0
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +34 -22
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/fastify.d.ts +5 -1
- package/dist/adapters/fastify.d.ts.map +1 -1
- package/dist/adapters/fastify.js +73 -32
- package/dist/adapters/fastify.js.map +1 -1
- package/dist/adapters/nextjs-app.d.ts +5 -0
- package/dist/adapters/nextjs-app.d.ts.map +1 -1
- package/dist/adapters/nextjs-app.js +43 -14
- package/dist/adapters/nextjs-app.js.map +1 -1
- package/dist/adapters/nextjs-pages.d.ts +5 -0
- package/dist/adapters/nextjs-pages.d.ts.map +1 -1
- package/dist/adapters/nextjs-pages.js +40 -14
- package/dist/adapters/nextjs-pages.js.map +1 -1
- package/dist/auth.d.ts +48 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +44 -0
- package/dist/auth.js.map +1 -1
- package/dist/handlers.d.ts +44 -14
- package/dist/handlers.d.ts.map +1 -1
- package/dist/handlers.js +78 -20
- package/dist/handlers.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/stream-poller.d.ts +6 -1
- package/dist/stream-poller.d.ts.map +1 -1
- package/dist/stream-poller.js +24 -4
- package/dist/stream-poller.js.map +1 -1
- package/package.json +2 -2
|
@@ -8,7 +8,9 @@ import * as handlers from '../handlers.js';
|
|
|
8
8
|
import { createListPoller, createTreePoller, createMultiTreePoller } from '../stream-poller.js';
|
|
9
9
|
import { discoverInstances } from '../discovery.js';
|
|
10
10
|
import { resolveDb } from '../resolve.js';
|
|
11
|
-
import {
|
|
11
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
12
|
+
import { accessFor, checkAuth, UNRESTRICTED, } from '../auth.js';
|
|
13
|
+
import { gateInstances, inScope } from '../access-scope.js';
|
|
12
14
|
import { isWriteMethod } from '../widget-proxy-core.js';
|
|
13
15
|
import { detectLegacyMetadataParams, formatLegacyMetadataMessage, } from '../metadata-filter-query.js';
|
|
14
16
|
import { parseSseOptions, checkLegacyMetadataParams, LegacyMetadataParamError, } from '../sse-options.js';
|
|
@@ -30,50 +32,66 @@ export function createOptioHandler(opts) {
|
|
|
30
32
|
dbOpts = 'mongoClient' in opts && opts.mongoClient ? { mongoClient: opts.mongoClient } : { db: opts.db };
|
|
31
33
|
ctx = createOptioContext({ dbOpts, redis });
|
|
32
34
|
}
|
|
35
|
+
// The request's access travels to the ts-rest routes in an
|
|
36
|
+
// AsyncLocalStorage set around the ts-rest call (as in nextjs-app).
|
|
37
|
+
const hooks = { scope: opts.scope, authorize: opts.authorize };
|
|
38
|
+
const requestAccess = new AsyncLocalStorage();
|
|
39
|
+
function currentAccess() {
|
|
40
|
+
const access = requestAccess.getStore();
|
|
41
|
+
if (access)
|
|
42
|
+
return access;
|
|
43
|
+
if (!hooks.scope && !hooks.authorize)
|
|
44
|
+
return UNRESTRICTED;
|
|
45
|
+
throw new Error('optio-api: route reached without the request\'s access');
|
|
46
|
+
}
|
|
33
47
|
const tsRestHandler = createNextRouter(apiContract.processes, {
|
|
34
48
|
list: async ({ query }) => {
|
|
35
|
-
const result = await handlers.listProcesses(ctx, query);
|
|
49
|
+
const result = await handlers.listProcesses(ctx, query, await currentAccess());
|
|
36
50
|
return { status: 200, body: result };
|
|
37
51
|
},
|
|
38
52
|
get: async ({ params, query }) => {
|
|
39
|
-
const result = await handlers.getProcess(ctx, query, params.id);
|
|
53
|
+
const result = await handlers.getProcess(ctx, query, params.id, await currentAccess());
|
|
40
54
|
if (!result)
|
|
41
55
|
return { status: 404, body: { message: 'Process not found' } };
|
|
42
56
|
return { status: 200, body: result };
|
|
43
57
|
},
|
|
44
58
|
getTree: async ({ params, query }) => {
|
|
45
|
-
const result = await handlers.getProcessTree(ctx, query, params.id);
|
|
59
|
+
const result = await handlers.getProcessTree(ctx, query, params.id, await currentAccess());
|
|
46
60
|
if (!result)
|
|
47
61
|
return { status: 404, body: { message: 'Process not found' } };
|
|
48
62
|
return { status: 200, body: result };
|
|
49
63
|
},
|
|
50
64
|
getLog: async ({ params, query }) => {
|
|
51
|
-
const result = await handlers.getProcessLog(ctx, query, params.id);
|
|
65
|
+
const result = await handlers.getProcessLog(ctx, query, params.id, await currentAccess());
|
|
52
66
|
if (!result)
|
|
53
67
|
return { status: 404, body: { message: 'Process not found' } };
|
|
54
68
|
return { status: 200, body: result };
|
|
55
69
|
},
|
|
56
70
|
getTreeLog: async ({ params, query }) => {
|
|
57
|
-
const result = await handlers.getProcessTreeLog(ctx, query, params.id);
|
|
71
|
+
const result = await handlers.getProcessTreeLog(ctx, query, params.id, await currentAccess());
|
|
58
72
|
if (!result)
|
|
59
73
|
return { status: 404, body: { message: 'Process not found' } };
|
|
60
74
|
return { status: 200, body: result };
|
|
61
75
|
},
|
|
62
76
|
launch: async ({ params, query, body }) => {
|
|
63
|
-
const result = await handlers.launchProcess(ctx, query, params.id, body?.resume === true);
|
|
77
|
+
const result = await handlers.launchProcess(ctx, query, params.id, body?.resume === true, null, await currentAccess());
|
|
64
78
|
return result;
|
|
65
79
|
},
|
|
66
80
|
cancel: async ({ params, query }) => {
|
|
67
|
-
const result = await handlers.cancelProcess(ctx, query, params.id);
|
|
81
|
+
const result = await handlers.cancelProcess(ctx, query, params.id, await currentAccess());
|
|
68
82
|
return result;
|
|
69
83
|
},
|
|
70
84
|
dismiss: async ({ params, query }) => {
|
|
71
|
-
const result = await handlers.dismissProcess(ctx, query, params.id);
|
|
85
|
+
const result = await handlers.dismissProcess(ctx, query, params.id, await currentAccess());
|
|
86
|
+
return result;
|
|
87
|
+
},
|
|
88
|
+
resurrect: async ({ params, query, body }) => {
|
|
89
|
+
const result = await handlers.resurrectProcess(ctx, query, params.id, body?.sessionId ?? null, await currentAccess());
|
|
72
90
|
return result;
|
|
73
91
|
},
|
|
74
92
|
resync: async ({ query, body }) => {
|
|
75
|
-
const result = await handlers.resyncProcesses(ctx, query, body.clean, body.metadataFilter);
|
|
76
|
-
return
|
|
93
|
+
const result = await handlers.resyncProcesses(ctx, query, body.clean, body.metadataFilter, await currentAccess());
|
|
94
|
+
return result;
|
|
77
95
|
},
|
|
78
96
|
});
|
|
79
97
|
const handler = async (req, res) => {
|
|
@@ -82,6 +100,7 @@ export function createOptioHandler(opts) {
|
|
|
82
100
|
res.status(authResult.status).json(authResult.body);
|
|
83
101
|
return;
|
|
84
102
|
}
|
|
103
|
+
const access = await accessFor(req, hooks);
|
|
85
104
|
const url = req.url ?? '';
|
|
86
105
|
const method = req.method ?? '';
|
|
87
106
|
// Strip query string for path comparisons — req.url includes it on Pages Router.
|
|
@@ -96,6 +115,10 @@ export function createOptioHandler(opts) {
|
|
|
96
115
|
}
|
|
97
116
|
// Discovery endpoint: /api/optio/instances
|
|
98
117
|
if (url === '/api/optio/instances' && method === 'GET') {
|
|
118
|
+
if (!(await gateInstances(access))) {
|
|
119
|
+
res.status(403).json({ message: 'Forbidden' });
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
99
122
|
const instances = await discoverInstances(dbOpts, redis);
|
|
100
123
|
res.status(200).json({ instances });
|
|
101
124
|
return;
|
|
@@ -114,7 +137,8 @@ export function createOptioHandler(opts) {
|
|
|
114
137
|
}
|
|
115
138
|
const { db, prefix } = resolveDb(dbOpts, sseOpts);
|
|
116
139
|
const col = db.collection(`${prefix}_processes`);
|
|
117
|
-
const
|
|
140
|
+
const found = await col.findOne({ _id: new ObjectId(id) });
|
|
141
|
+
const proc = found && (await inScope(col, found, access.scope)) ? found : null;
|
|
118
142
|
if (!proc) {
|
|
119
143
|
res.status(404).json({ message: 'Process not found' });
|
|
120
144
|
return;
|
|
@@ -167,7 +191,8 @@ export function createOptioHandler(opts) {
|
|
|
167
191
|
const col = db.collection(`${prefix}_processes`);
|
|
168
192
|
async function resolveOne(id) {
|
|
169
193
|
try {
|
|
170
|
-
const
|
|
194
|
+
const found = await col.findOne({ _id: new ObjectId(id) });
|
|
195
|
+
const proc = found && (await inScope(col, found, access.scope)) ? found : null;
|
|
171
196
|
return { id, proc };
|
|
172
197
|
}
|
|
173
198
|
catch {
|
|
@@ -254,13 +279,14 @@ export function createOptioHandler(opts) {
|
|
|
254
279
|
sendEvent,
|
|
255
280
|
onError: () => res.end(),
|
|
256
281
|
metadataFilter: sseOpts.metadataFilter,
|
|
282
|
+
scope: access.scope,
|
|
257
283
|
});
|
|
258
284
|
poller.start();
|
|
259
285
|
req.on('close', () => poller.stop());
|
|
260
286
|
return;
|
|
261
287
|
}
|
|
262
288
|
// Delegate to ts-rest handler for all other routes
|
|
263
|
-
return tsRestHandler(req, res);
|
|
289
|
+
return requestAccess.run(access, () => tsRestHandler(req, res));
|
|
264
290
|
};
|
|
265
291
|
return explicit ? { handler } : { handler, ctx };
|
|
266
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextjs-pages.js","sourceRoot":"","sources":["../../src/adapters/nextjs-pages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nextjs-pages.js","sourceRoot":"","sources":["../../src/adapters/nextjs-pages.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -7,4 +7,52 @@ export interface AuthResult {
|
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
9
|
export declare function checkAuth<TRequest>(req: TRequest, authenticate: AuthCallback<TRequest>, isWrite: boolean): Promise<AuthResult | null>;
|
|
10
|
+
/** A flat exact-match metadata map: the tenant boundary a request is confined to. */
|
|
11
|
+
export type ScopeFilter = Record<string, string | number | boolean | null>;
|
|
12
|
+
export type OptioAction = 'read' | 'launch' | 'cancel' | 'dismiss' | 'resurrect' | 'resync' | 'widget' | 'widget-control' | 'widget-upload' | 'instances';
|
|
13
|
+
/** What `authorize` sees of a process. */
|
|
14
|
+
export interface ProcessRef {
|
|
15
|
+
_id: string;
|
|
16
|
+
processId: string;
|
|
17
|
+
name: string;
|
|
18
|
+
parentId?: string;
|
|
19
|
+
rootId: string;
|
|
20
|
+
metadata: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface AuthorizeInput {
|
|
23
|
+
role: OptioRole;
|
|
24
|
+
action: OptioAction;
|
|
25
|
+
/** The process a single-process action targets. */
|
|
26
|
+
process?: ProcessRef;
|
|
27
|
+
/** resync: the effective (scoped) filter. */
|
|
28
|
+
metadataFilter?: Record<string, unknown>;
|
|
29
|
+
/** resync: whether process records are deleted first. */
|
|
30
|
+
clean?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Confines a request to processes whose `metadata` equals every key of the
|
|
34
|
+
* returned map. `null` (or an empty map) leaves the request unscoped.
|
|
35
|
+
*/
|
|
36
|
+
export type ScopeCallback<TRequest> = (req: TRequest) => ScopeFilter | null | Promise<ScopeFilter | null>;
|
|
37
|
+
/** Decides a mutating action (and instance discovery); `false` gives 403. */
|
|
38
|
+
export type AuthorizeCallback<TRequest> = (req: TRequest, input: AuthorizeInput) => boolean | Promise<boolean>;
|
|
39
|
+
export interface AccessHooks<TRequest> {
|
|
40
|
+
scope?: ScopeCallback<TRequest>;
|
|
41
|
+
authorize?: AuthorizeCallback<TRequest>;
|
|
42
|
+
}
|
|
43
|
+
/** Framework-agnostic access for one request; handlers take this. */
|
|
44
|
+
export interface Access {
|
|
45
|
+
/** False when the host passed neither hook: handlers skip every check. */
|
|
46
|
+
restricted: boolean;
|
|
47
|
+
scope: ScopeFilter | null;
|
|
48
|
+
authorize(input: Omit<AuthorizeInput, 'role'>): Promise<boolean>;
|
|
49
|
+
}
|
|
50
|
+
export declare const UNRESTRICTED: Access;
|
|
51
|
+
export declare function resolveAccess<TRequest>(hooks: AccessHooks<TRequest>, req: TRequest, role: OptioRole): Promise<Access>;
|
|
52
|
+
/**
|
|
53
|
+
* The access of a request that already passed `checkAuth`, resolved once per
|
|
54
|
+
* request. Throws (synchronously) for a request `checkAuth` never accepted:
|
|
55
|
+
* that is an adapter wiring bug, and failing loudly beats guessing a role.
|
|
56
|
+
*/
|
|
57
|
+
export declare function accessFor<TRequest extends object>(req: TRequest, hooks: AccessHooks<TRequest>): Promise<Access>;
|
|
10
58
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9C,MAAM,MAAM,YAAY,CAAC,QAAQ,IAC/B,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAClB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.js
CHANGED
|
@@ -1,9 +1,53 @@
|
|
|
1
|
+
// The role each authenticated request was given, for `accessFor`. Keyed by the
|
|
2
|
+
// framework-native request object, so it is collected with the request.
|
|
3
|
+
const requestRoles = new WeakMap();
|
|
1
4
|
export async function checkAuth(req, authenticate, isWrite) {
|
|
2
5
|
const role = await authenticate(req);
|
|
3
6
|
if (role === null)
|
|
4
7
|
return { status: 401, body: { message: 'Unauthorized' } };
|
|
5
8
|
if (isWrite && role === 'viewer')
|
|
6
9
|
return { status: 403, body: { message: 'Forbidden' } };
|
|
10
|
+
if (typeof req === 'object' && req !== null)
|
|
11
|
+
requestRoles.set(req, role);
|
|
7
12
|
return null;
|
|
8
13
|
}
|
|
14
|
+
export const UNRESTRICTED = Object.freeze({
|
|
15
|
+
restricted: false,
|
|
16
|
+
scope: null,
|
|
17
|
+
authorize: async () => true,
|
|
18
|
+
});
|
|
19
|
+
export async function resolveAccess(hooks, req, role) {
|
|
20
|
+
if (!hooks.scope && !hooks.authorize)
|
|
21
|
+
return UNRESTRICTED;
|
|
22
|
+
const raw = hooks.scope ? await hooks.scope(req) : null;
|
|
23
|
+
const scope = raw && Object.keys(raw).length > 0 ? raw : null;
|
|
24
|
+
const authorize = hooks.authorize;
|
|
25
|
+
return {
|
|
26
|
+
restricted: true,
|
|
27
|
+
scope,
|
|
28
|
+
authorize: authorize
|
|
29
|
+
? async (input) => (await authorize(req, { ...input, role })) === true
|
|
30
|
+
: async () => true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const requestAccess = new WeakMap();
|
|
34
|
+
/**
|
|
35
|
+
* The access of a request that already passed `checkAuth`, resolved once per
|
|
36
|
+
* request. Throws (synchronously) for a request `checkAuth` never accepted:
|
|
37
|
+
* that is an adapter wiring bug, and failing loudly beats guessing a role.
|
|
38
|
+
*/
|
|
39
|
+
export function accessFor(req, hooks) {
|
|
40
|
+
if (!hooks.scope && !hooks.authorize)
|
|
41
|
+
return Promise.resolve(UNRESTRICTED);
|
|
42
|
+
const cached = requestAccess.get(req);
|
|
43
|
+
if (cached)
|
|
44
|
+
return cached;
|
|
45
|
+
const role = requestRoles.get(req);
|
|
46
|
+
if (role === undefined) {
|
|
47
|
+
throw new Error('optio-api: accessFor called before checkAuth accepted the request');
|
|
48
|
+
}
|
|
49
|
+
const access = resolveAccess(hooks, req, role);
|
|
50
|
+
requestAccess.set(req, access);
|
|
51
|
+
return access;
|
|
52
|
+
}
|
|
9
53
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAa,EACb,YAAoC,EACpC,OAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC;IAC7E,IAAI,OAAO,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;IACzF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAUA,+EAA+E;AAC/E,wEAAwE;AACxE,MAAM,YAAY,GAAG,IAAI,OAAO,EAAqB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAa,EACb,YAAoC,EACpC,OAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC;IAC7E,IAAI,OAAO,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;IACzF,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AA0DD,MAAM,CAAC,MAAM,YAAY,GAAW,MAAM,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,KAAK;IACjB,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAA4B,EAC5B,GAAa,EACb,IAAe;IAEf,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,YAAY,CAAC;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,KAAK;QACL,SAAS,EAAE,SAAS;YAClB,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI;YACtE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,OAAO,EAA2B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,GAAa,EACb,KAA4B;IAE5B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/C,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/handlers.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ProcessMetadataFilter } from './types.js';
|
|
2
2
|
import type { OptioContext } from './context.js';
|
|
3
|
-
import
|
|
3
|
+
import { type Access } from './auth.js';
|
|
4
|
+
import type { LaunchFailureReason as LaunchFailureReasonType, CancelFailureReason as CancelFailureReasonType, DismissFailureReason as DismissFailureReasonType, ResurrectFailureReason as ResurrectFailureReasonType } from 'optio-contracts';
|
|
4
5
|
export interface ListQuery {
|
|
5
6
|
cursor?: string;
|
|
6
7
|
limit: number;
|
|
@@ -12,7 +13,7 @@ export interface ListProcessesQuery extends ListQuery {
|
|
|
12
13
|
database?: string;
|
|
13
14
|
prefix?: string;
|
|
14
15
|
}
|
|
15
|
-
export declare function listProcesses(ctx: OptioContext, query: ListProcessesQuery): Promise<{
|
|
16
|
+
export declare function listProcesses(ctx: OptioContext, query: ListProcessesQuery, access?: Access): Promise<{
|
|
16
17
|
items: {
|
|
17
18
|
_id: any;
|
|
18
19
|
parentId: any;
|
|
@@ -24,7 +25,7 @@ export declare function listProcesses(ctx: OptioContext, query: ListProcessesQue
|
|
|
24
25
|
export declare function getProcess(ctx: OptioContext, query: {
|
|
25
26
|
database?: string;
|
|
26
27
|
prefix?: string;
|
|
27
|
-
}, id: string): Promise<{
|
|
28
|
+
}, id: string, access?: Access): Promise<{
|
|
28
29
|
_id: any;
|
|
29
30
|
parentId: any;
|
|
30
31
|
rootId: any;
|
|
@@ -33,7 +34,7 @@ export declare function getProcessTree(ctx: OptioContext, query: {
|
|
|
33
34
|
database?: string;
|
|
34
35
|
prefix?: string;
|
|
35
36
|
maxDepth?: number;
|
|
36
|
-
}, id: string): Promise<any>;
|
|
37
|
+
}, id: string, access?: Access): Promise<any>;
|
|
37
38
|
export interface PaginationQuery {
|
|
38
39
|
cursor?: string;
|
|
39
40
|
limit: number;
|
|
@@ -42,7 +43,7 @@ export interface GetProcessLogQuery extends PaginationQuery {
|
|
|
42
43
|
database?: string;
|
|
43
44
|
prefix?: string;
|
|
44
45
|
}
|
|
45
|
-
export declare function getProcessLog(ctx: OptioContext, query: GetProcessLogQuery, id: string): Promise<{
|
|
46
|
+
export declare function getProcessLog(ctx: OptioContext, query: GetProcessLogQuery, id: string, access?: Access): Promise<{
|
|
46
47
|
items: any;
|
|
47
48
|
nextCursor: string | null;
|
|
48
49
|
totalCount: any;
|
|
@@ -54,11 +55,17 @@ export interface GetProcessTreeLogQuery extends TreeLogQuery {
|
|
|
54
55
|
database?: string;
|
|
55
56
|
prefix?: string;
|
|
56
57
|
}
|
|
57
|
-
export declare function getProcessTreeLog(ctx: OptioContext, query: GetProcessTreeLogQuery, id: string): Promise<{
|
|
58
|
+
export declare function getProcessTreeLog(ctx: OptioContext, query: GetProcessTreeLogQuery, id: string, access?: Access): Promise<{
|
|
58
59
|
items: any[];
|
|
59
60
|
nextCursor: string | null;
|
|
60
61
|
totalCount: number;
|
|
61
62
|
} | null>;
|
|
63
|
+
export type ForbiddenResult = {
|
|
64
|
+
status: 403;
|
|
65
|
+
body: {
|
|
66
|
+
message: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
62
69
|
export type LaunchCommandResult = {
|
|
63
70
|
status: 200;
|
|
64
71
|
body: any;
|
|
@@ -68,7 +75,7 @@ export type LaunchCommandResult = {
|
|
|
68
75
|
reason: LaunchFailureReasonType;
|
|
69
76
|
message: string;
|
|
70
77
|
};
|
|
71
|
-
};
|
|
78
|
+
} | ForbiddenResult;
|
|
72
79
|
export type CancelCommandResult = {
|
|
73
80
|
status: 200;
|
|
74
81
|
body: any;
|
|
@@ -78,7 +85,7 @@ export type CancelCommandResult = {
|
|
|
78
85
|
reason: CancelFailureReasonType;
|
|
79
86
|
message: string;
|
|
80
87
|
};
|
|
81
|
-
};
|
|
88
|
+
} | ForbiddenResult;
|
|
82
89
|
export type DismissCommandResult = {
|
|
83
90
|
status: 200;
|
|
84
91
|
body: any;
|
|
@@ -88,23 +95,46 @@ export type DismissCommandResult = {
|
|
|
88
95
|
reason: DismissFailureReasonType;
|
|
89
96
|
message: string;
|
|
90
97
|
};
|
|
98
|
+
} | ForbiddenResult;
|
|
99
|
+
export type ResurrectCommandResult = {
|
|
100
|
+
status: 200;
|
|
101
|
+
body: any;
|
|
102
|
+
} | {
|
|
103
|
+
status: 404 | 409;
|
|
104
|
+
body: {
|
|
105
|
+
reason: ResurrectFailureReasonType;
|
|
106
|
+
message: string;
|
|
107
|
+
};
|
|
108
|
+
} | ForbiddenResult;
|
|
109
|
+
export type ResyncCommandResult = {
|
|
110
|
+
status: 202;
|
|
111
|
+
body: {
|
|
112
|
+
message: string;
|
|
113
|
+
};
|
|
114
|
+
} | {
|
|
115
|
+
status: 400 | 403;
|
|
116
|
+
body: {
|
|
117
|
+
message: string;
|
|
118
|
+
};
|
|
91
119
|
};
|
|
92
120
|
export declare function launchProcess(ctx: OptioContext, query: {
|
|
93
121
|
database?: string;
|
|
94
122
|
prefix?: string;
|
|
95
|
-
}, id: string, resume?: boolean, sessionId?: string | null): Promise<LaunchCommandResult>;
|
|
123
|
+
}, id: string, resume?: boolean, sessionId?: string | null, access?: Access): Promise<LaunchCommandResult>;
|
|
96
124
|
export declare function cancelProcess(ctx: OptioContext, query: {
|
|
97
125
|
database?: string;
|
|
98
126
|
prefix?: string;
|
|
99
|
-
}, id: string): Promise<CancelCommandResult>;
|
|
127
|
+
}, id: string, access?: Access): Promise<CancelCommandResult>;
|
|
100
128
|
export declare function dismissProcess(ctx: OptioContext, query: {
|
|
101
129
|
database?: string;
|
|
102
130
|
prefix?: string;
|
|
103
|
-
}, id: string): Promise<DismissCommandResult>;
|
|
131
|
+
}, id: string, access?: Access): Promise<DismissCommandResult>;
|
|
132
|
+
export declare function resurrectProcess(ctx: OptioContext, query: {
|
|
133
|
+
database?: string;
|
|
134
|
+
prefix?: string;
|
|
135
|
+
}, id: string, sessionId?: string | null, access?: Access): Promise<ResurrectCommandResult>;
|
|
104
136
|
export declare function resyncProcesses(ctx: OptioContext, query: {
|
|
105
137
|
database?: string;
|
|
106
138
|
prefix?: string;
|
|
107
|
-
}, clean?: boolean, metadataFilter?: ProcessMetadataFilter): Promise<
|
|
108
|
-
message: string;
|
|
109
|
-
}>;
|
|
139
|
+
}, clean?: boolean, metadataFilter?: ProcessMetadataFilter, access?: Access): Promise<ResyncCommandResult>;
|
|
110
140
|
//# sourceMappingURL=handlers.d.ts.map
|
package/dist/handlers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,KAAK,EACV,mBAAmB,IAAI,uBAAuB,EAC9C,mBAAmB,IAAI,uBAAuB,EAC9C,oBAAoB,IAAI,wBAAwB,EAChD,sBAAsB,IAAI,0BAA0B,EACrD,MAAM,iBAAiB,CAAC;AAuBzB,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,kBAAkB,EACzB,MAAM,GAAE,MAAqB;;;;;;;;GAwB9B;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAqB;;;;UAM9B;AA8BD,wBAAsB,cAAc,CAClC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAChE,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAqB,gBAU9B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,kBAAkB,EACzB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAqB;;;;UAiB9B;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,sBAAsB,EAC7B,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAqB;;;;UA+B9B;AAKD,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,uBAAuB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjF,eAAe,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,uBAAuB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjF,eAAe,CAAC;AAEpB,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,wBAAwB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAClF,eAAe,CAAC;AAEpB,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,0BAA0B,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACpF,eAAe,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AA6CrD,wBAAsB,aAAa,CACjC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,OAAe,EACvB,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,MAAM,GAAE,MAAqB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAQ9B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAqB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAQ9B;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAqB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAQ/B;AAwBD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,EAAE,EAAE,MAAM,EACV,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,MAAM,GAAE,MAAqB,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAQjC;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,KAAK,GAAE,OAAe,EACtB,cAAc,CAAC,EAAE,qBAAqB,EACtC,MAAM,GAAE,MAAqB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAoB9B"}
|
package/dist/handlers.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ObjectId } from 'mongodb';
|
|
2
2
|
import { metadataFilterToMongo } from './metadata-filter-query.js';
|
|
3
|
-
import { findProcessByEitherId } from './process-id-resolver.js';
|
|
4
3
|
import { resolveDb, resolveOptioEngine } from './resolve.js';
|
|
4
|
+
import { UNRESTRICTED } from './auth.js';
|
|
5
|
+
import { andScope, findScopedProcess, gateProcess, scopedResyncFilter } from './access-scope.js';
|
|
5
6
|
function col(db, prefix) {
|
|
6
7
|
return db.collection(`${prefix}_processes`);
|
|
7
8
|
}
|
|
@@ -18,12 +19,10 @@ function toResponse(proc) {
|
|
|
18
19
|
rootId: proc.rootId.toString(),
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
export async function listProcesses(ctx, query) {
|
|
22
|
+
export async function listProcesses(ctx, query, access = UNRESTRICTED) {
|
|
22
23
|
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
23
24
|
const { cursor, limit, rootId, state, metadataFilter } = query;
|
|
24
|
-
const filter = {
|
|
25
|
-
...metadataFilterToMongo(metadataFilter),
|
|
26
|
-
};
|
|
25
|
+
const filter = andScope({ ...metadataFilterToMongo(metadataFilter) }, access.scope);
|
|
27
26
|
if (rootId)
|
|
28
27
|
filter.rootId = new ObjectId(rootId);
|
|
29
28
|
if (state)
|
|
@@ -43,9 +42,9 @@ export async function listProcesses(ctx, query) {
|
|
|
43
42
|
totalCount,
|
|
44
43
|
};
|
|
45
44
|
}
|
|
46
|
-
export async function getProcess(ctx, query, id) {
|
|
45
|
+
export async function getProcess(ctx, query, id, access = UNRESTRICTED) {
|
|
47
46
|
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
48
|
-
const proc = await
|
|
47
|
+
const proc = await findScopedProcess(col(db, prefix), id, access.scope);
|
|
49
48
|
if (!proc)
|
|
50
49
|
return null;
|
|
51
50
|
return toResponse(proc);
|
|
@@ -73,19 +72,20 @@ async function buildTree(db, prefix, processId, maxDepth, currentDepth = 0) {
|
|
|
73
72
|
children,
|
|
74
73
|
};
|
|
75
74
|
}
|
|
76
|
-
export async function getProcessTree(ctx, query, id) {
|
|
75
|
+
export async function getProcessTree(ctx, query, id, access = UNRESTRICTED) {
|
|
77
76
|
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
78
77
|
// Resolve the entry-point doc first so we can accept either id form.
|
|
79
78
|
// Internal recursion in `buildTree` walks via `parentId` ObjectId
|
|
80
|
-
// references and does not need the lookup helper
|
|
81
|
-
|
|
79
|
+
// references and does not need the lookup helper; the whole tree shares
|
|
80
|
+
// the entry point's tenant, so the scope is checked there only.
|
|
81
|
+
const entry = await findScopedProcess(col(db, prefix), id, access.scope);
|
|
82
82
|
if (!entry)
|
|
83
83
|
return null;
|
|
84
84
|
return buildTree(db, prefix, entry._id, query.maxDepth);
|
|
85
85
|
}
|
|
86
|
-
export async function getProcessLog(ctx, query, id) {
|
|
86
|
+
export async function getProcessLog(ctx, query, id, access = UNRESTRICTED) {
|
|
87
87
|
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
88
|
-
const proc = await
|
|
88
|
+
const proc = await findScopedProcess(col(db, prefix), id, access.scope);
|
|
89
89
|
if (!proc)
|
|
90
90
|
return null;
|
|
91
91
|
const { cursor, limit } = query;
|
|
@@ -100,9 +100,9 @@ export async function getProcessLog(ctx, query, id) {
|
|
|
100
100
|
totalCount: proc.log.length,
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
|
-
export async function getProcessTreeLog(ctx, query, id) {
|
|
103
|
+
export async function getProcessTreeLog(ctx, query, id, access = UNRESTRICTED) {
|
|
104
104
|
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
105
|
-
const proc = await
|
|
105
|
+
const proc = await findScopedProcess(col(db, prefix), id, access.scope);
|
|
106
106
|
if (!proc)
|
|
107
107
|
return null;
|
|
108
108
|
const { maxDepth, cursor, limit } = query;
|
|
@@ -128,6 +128,7 @@ export async function getProcessTreeLog(ctx, query, id) {
|
|
|
128
128
|
totalCount: allLogs.length,
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
|
+
const FORBIDDEN = { status: 403, body: { message: 'Forbidden' } };
|
|
131
132
|
const LAUNCH_STATUS = {
|
|
132
133
|
'not-found': 404,
|
|
133
134
|
'not-launchable': 409,
|
|
@@ -159,30 +160,87 @@ function cancelFail(reason) {
|
|
|
159
160
|
function dismissFail(reason) {
|
|
160
161
|
return { status: DISMISS_STATUS[reason], body: { reason, message: MESSAGES[reason] } };
|
|
161
162
|
}
|
|
162
|
-
export async function launchProcess(ctx, query, id, resume = false, sessionId = null) {
|
|
163
|
+
export async function launchProcess(ctx, query, id, resume = false, sessionId = null, access = UNRESTRICTED) {
|
|
164
|
+
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
165
|
+
const gate = await gateProcess(col(db, prefix), id, access, 'launch');
|
|
166
|
+
if (!gate.ok)
|
|
167
|
+
return gate.status === 404 ? launchFail('not-found') : FORBIDDEN;
|
|
163
168
|
const engine = resolveOptioEngine(ctx, query);
|
|
164
169
|
const result = await engine.launch({ processId: id, resume, sessionId });
|
|
165
170
|
if (result.ok)
|
|
166
171
|
return { status: 200, body: toResponse(result.process) };
|
|
167
172
|
return launchFail(result.reason);
|
|
168
173
|
}
|
|
169
|
-
export async function cancelProcess(ctx, query, id) {
|
|
174
|
+
export async function cancelProcess(ctx, query, id, access = UNRESTRICTED) {
|
|
175
|
+
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
176
|
+
const gate = await gateProcess(col(db, prefix), id, access, 'cancel');
|
|
177
|
+
if (!gate.ok)
|
|
178
|
+
return gate.status === 404 ? cancelFail('not-found') : FORBIDDEN;
|
|
170
179
|
const engine = resolveOptioEngine(ctx, query);
|
|
171
180
|
const result = await engine.cancel({ processId: id });
|
|
172
181
|
if (result.ok)
|
|
173
182
|
return { status: 200, body: toResponse(result.process) };
|
|
174
183
|
return cancelFail(result.reason);
|
|
175
184
|
}
|
|
176
|
-
export async function dismissProcess(ctx, query, id) {
|
|
185
|
+
export async function dismissProcess(ctx, query, id, access = UNRESTRICTED) {
|
|
186
|
+
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
187
|
+
const gate = await gateProcess(col(db, prefix), id, access, 'dismiss');
|
|
188
|
+
if (!gate.ok)
|
|
189
|
+
return gate.status === 404 ? dismissFail('not-found') : FORBIDDEN;
|
|
177
190
|
const engine = resolveOptioEngine(ctx, query);
|
|
178
191
|
const result = await engine.dismiss({ processId: id });
|
|
179
192
|
if (result.ok)
|
|
180
193
|
return { status: 200, body: toResponse(result.process) };
|
|
181
194
|
return dismissFail(result.reason);
|
|
182
195
|
}
|
|
183
|
-
|
|
196
|
+
const RESURRECT_STATUS = {
|
|
197
|
+
'not-found': 404,
|
|
198
|
+
'not-resurrectable': 409,
|
|
199
|
+
'no-resurrect-support': 409,
|
|
200
|
+
'resurrect-in-progress': 409,
|
|
201
|
+
'launch-blocked': 409,
|
|
202
|
+
'shutting-down': 409,
|
|
203
|
+
};
|
|
204
|
+
const RESURRECT_MESSAGES = {
|
|
205
|
+
'not-found': 'Process not found',
|
|
206
|
+
'not-resurrectable': 'Process has no unsaved work to resurrect, or is still active',
|
|
207
|
+
'no-resurrect-support': 'This task does not support resurrect',
|
|
208
|
+
'resurrect-in-progress': 'A resurrect of this process is already running',
|
|
209
|
+
'launch-blocked': 'Launches matching this filter are currently blocked',
|
|
210
|
+
'shutting-down': 'The engine is shutting down',
|
|
211
|
+
};
|
|
212
|
+
function resurrectFail(reason) {
|
|
213
|
+
return { status: RESURRECT_STATUS[reason], body: { reason, message: RESURRECT_MESSAGES[reason] } };
|
|
214
|
+
}
|
|
215
|
+
export async function resurrectProcess(ctx, query, id, sessionId = null, access = UNRESTRICTED) {
|
|
216
|
+
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
217
|
+
const gate = await gateProcess(col(db, prefix), id, access, 'resurrect');
|
|
218
|
+
if (!gate.ok)
|
|
219
|
+
return gate.status === 404 ? resurrectFail('not-found') : FORBIDDEN;
|
|
184
220
|
const engine = resolveOptioEngine(ctx, query);
|
|
185
|
-
await engine.
|
|
186
|
-
|
|
221
|
+
const result = await engine.resurrect({ processId: id, sessionId });
|
|
222
|
+
if (result.ok)
|
|
223
|
+
return { status: 200, body: toResponse(result.process) };
|
|
224
|
+
return resurrectFail(result.reason);
|
|
225
|
+
}
|
|
226
|
+
export async function resyncProcesses(ctx, query, clean = false, metadataFilter, access = UNRESTRICTED) {
|
|
227
|
+
// Under a scope the engine regenerates (and prunes) only the scope's tasks.
|
|
228
|
+
const scoped = scopedResyncFilter(metadataFilter, access.scope);
|
|
229
|
+
if (!scoped.ok)
|
|
230
|
+
return { status: scoped.status, body: { message: scoped.message } };
|
|
231
|
+
if (access.restricted
|
|
232
|
+
&& !(await access.authorize({
|
|
233
|
+
action: 'resync',
|
|
234
|
+
clean,
|
|
235
|
+
metadataFilter: scoped.filter,
|
|
236
|
+
}))) {
|
|
237
|
+
return FORBIDDEN;
|
|
238
|
+
}
|
|
239
|
+
const engine = resolveOptioEngine(ctx, query);
|
|
240
|
+
await engine.resync({ clean, metadataFilter: scoped.filter });
|
|
241
|
+
return {
|
|
242
|
+
status: 202,
|
|
243
|
+
body: { message: clean ? 'Nuke and resync requested' : 'Resync requested' },
|
|
244
|
+
};
|
|
187
245
|
}
|
|
188
246
|
//# sourceMappingURL=handlers.js.map
|