optio-api 0.2.9 → 0.2.11
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 +39 -7
- 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 +35 -23
- 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 +74 -33
- 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 +44 -15
- 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 +41 -15
- 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/discovery.d.ts +7 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +18 -11
- package/dist/discovery.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/process-change-hub.d.ts +87 -0
- package/dist/process-change-hub.d.ts.map +1 -0
- package/dist/process-change-hub.js +268 -0
- package/dist/process-change-hub.js.map +1 -0
- package/dist/process-change-relevance.d.ts +57 -0
- package/dist/process-change-relevance.d.ts.map +1 -0
- package/dist/process-change-relevance.js +101 -0
- package/dist/process-change-relevance.js.map +1 -0
- package/dist/stream-poller.d.ts +13 -1
- package/dist/stream-poller.d.ts.map +1 -1
- package/dist/stream-poller.js +290 -260
- package/dist/stream-poller.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which changes of `{prefix}_processes` a live stream must re-read for,
|
|
3
|
+
* decided from the change event alone (no extra read). The rules lean towards
|
|
4
|
+
* "relevant": a false positive costs one read, a false negative a stale stream.
|
|
5
|
+
*
|
|
6
|
+
* Spec: docs/2026-10-09-api-change-streams-design.md ("What is relevant")
|
|
7
|
+
*/
|
|
8
|
+
import type { ChangeStreamDocument, Document } from 'mongodb';
|
|
9
|
+
/**
|
|
10
|
+
* The fields the list stream compares and sends; the list poll reads nothing
|
|
11
|
+
* else (no log, widgetData, params or sessionEvents), so each read stays small.
|
|
12
|
+
*/
|
|
13
|
+
export declare const LIST_PROJECTION: {
|
|
14
|
+
readonly processId: 1;
|
|
15
|
+
readonly name: 1;
|
|
16
|
+
readonly status: 1;
|
|
17
|
+
readonly progress: 1;
|
|
18
|
+
readonly cancellable: 1;
|
|
19
|
+
readonly special: 1;
|
|
20
|
+
readonly warning: 1;
|
|
21
|
+
readonly metadata: 1;
|
|
22
|
+
readonly depth: 1;
|
|
23
|
+
readonly supportsResume: 1;
|
|
24
|
+
readonly hasSavedState: 1;
|
|
25
|
+
readonly supportsResurrect: 1;
|
|
26
|
+
readonly hasUnsavedWork: 1;
|
|
27
|
+
readonly resurrecting: 1;
|
|
28
|
+
readonly autoResumeScheduled: 1;
|
|
29
|
+
readonly browserOpenRequests: 1;
|
|
30
|
+
};
|
|
31
|
+
/** A change of one process document, reduced to what the rules need. Ids are
|
|
32
|
+
* the `_id` as a string (ObjectId hex). `fields` are the top-level keys an
|
|
33
|
+
* update touched; `values` its `updatedFields` as delivered. */
|
|
34
|
+
export type ProcessChange = {
|
|
35
|
+
op: 'insert' | 'replace';
|
|
36
|
+
id: string;
|
|
37
|
+
doc: Record<string, unknown>;
|
|
38
|
+
} | {
|
|
39
|
+
op: 'update';
|
|
40
|
+
id: string;
|
|
41
|
+
fields: Set<string>;
|
|
42
|
+
values: Record<string, unknown>;
|
|
43
|
+
} | {
|
|
44
|
+
op: 'delete';
|
|
45
|
+
id: string;
|
|
46
|
+
} | {
|
|
47
|
+
op: 'invalidate';
|
|
48
|
+
};
|
|
49
|
+
export declare function toProcessChange(ev: ChangeStreamDocument<Document>): ProcessChange | null;
|
|
50
|
+
/** The list stream (`members`: the ids it showed in its last read). */
|
|
51
|
+
export declare function listRelevant(c: ProcessChange, members: Set<string>): boolean;
|
|
52
|
+
/** A tree or multi-tree stream (`roots`: its root ids; `members`: the ids it
|
|
53
|
+
* showed in its last read, flat ids included). */
|
|
54
|
+
export declare function treeRelevant(c: ProcessChange, roots: Set<string>, members: Set<string>): boolean;
|
|
55
|
+
/** The session-events stream of `sessionId` (`members`: the ids it read). */
|
|
56
|
+
export declare function sessionRelevant(c: ProcessChange, sessionId: string, members: Set<string>): boolean;
|
|
57
|
+
//# sourceMappingURL=process-change-relevance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-change-relevance.d.ts","sourceRoot":"","sources":["../src/process-change-relevance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAKlB,CAAC;AAIX;;iEAEiE;AACjE,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,QAAQ,GAAG,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAClF;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,YAAY,CAAA;CAAE,CAAC;AAIzB,wBAAgB,eAAe,CAAC,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,aAAa,GAAG,IAAI,CAuCxF;AAOD,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAW5E;AAED;mDACmD;AACnD,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAWhG;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAalG"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fields the list stream compares and sends; the list poll reads nothing
|
|
3
|
+
* else (no log, widgetData, params or sessionEvents), so each read stays small.
|
|
4
|
+
*/
|
|
5
|
+
export const LIST_PROJECTION = {
|
|
6
|
+
processId: 1, name: 1, status: 1, progress: 1, cancellable: 1, special: 1,
|
|
7
|
+
warning: 1, metadata: 1, depth: 1, supportsResume: 1, hasSavedState: 1,
|
|
8
|
+
supportsResurrect: 1, hasUnsavedWork: 1, resurrecting: 1,
|
|
9
|
+
autoResumeScheduled: 1, browserOpenRequests: 1,
|
|
10
|
+
};
|
|
11
|
+
const LIST_FIELDS = new Set(Object.keys(LIST_PROJECTION));
|
|
12
|
+
const topLevel = (path) => path.split('.', 1)[0];
|
|
13
|
+
export function toProcessChange(ev) {
|
|
14
|
+
switch (ev.operationType) {
|
|
15
|
+
case 'insert':
|
|
16
|
+
case 'replace':
|
|
17
|
+
return {
|
|
18
|
+
op: ev.operationType,
|
|
19
|
+
id: String(ev.documentKey._id),
|
|
20
|
+
doc: (ev.fullDocument ?? {}),
|
|
21
|
+
};
|
|
22
|
+
case 'update': {
|
|
23
|
+
const trimmed = ev;
|
|
24
|
+
if (Array.isArray(trimmed.changedFields)) {
|
|
25
|
+
// Cut down by the change stream's own pipeline (process-change-hub.ts).
|
|
26
|
+
return {
|
|
27
|
+
op: 'update',
|
|
28
|
+
id: String(ev.documentKey._id),
|
|
29
|
+
fields: new Set(trimmed.changedFields.map(topLevel)),
|
|
30
|
+
values: 'sessionValue' in trimmed ? { originatingSessionId: trimmed.sessionValue } : {},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const desc = ev.updateDescription ?? {};
|
|
34
|
+
const values = (desc.updatedFields ?? {});
|
|
35
|
+
const fields = new Set([
|
|
36
|
+
...Object.keys(values).map(topLevel),
|
|
37
|
+
...(desc.removedFields ?? []).map(topLevel),
|
|
38
|
+
...(desc.truncatedArrays ?? []).map((t) => topLevel(t.field)),
|
|
39
|
+
]);
|
|
40
|
+
return { op: 'update', id: String(ev.documentKey._id), fields, values };
|
|
41
|
+
}
|
|
42
|
+
case 'delete':
|
|
43
|
+
return { op: 'delete', id: String(ev.documentKey._id) };
|
|
44
|
+
case 'drop':
|
|
45
|
+
case 'rename':
|
|
46
|
+
case 'dropDatabase':
|
|
47
|
+
case 'invalidate':
|
|
48
|
+
return { op: 'invalidate' };
|
|
49
|
+
default:
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const touches = (fields, wanted) => {
|
|
54
|
+
for (const f of fields)
|
|
55
|
+
if (wanted.has(f))
|
|
56
|
+
return true;
|
|
57
|
+
return false;
|
|
58
|
+
};
|
|
59
|
+
/** The list stream (`members`: the ids it showed in its last read). */
|
|
60
|
+
export function listRelevant(c, members) {
|
|
61
|
+
switch (c.op) {
|
|
62
|
+
case 'invalidate':
|
|
63
|
+
case 'insert':
|
|
64
|
+
case 'replace': // may start or stop matching, like an insert
|
|
65
|
+
return true;
|
|
66
|
+
case 'delete':
|
|
67
|
+
return members.has(c.id);
|
|
68
|
+
case 'update':
|
|
69
|
+
return c.fields.has('metadata') || (members.has(c.id) && touches(c.fields, LIST_FIELDS));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** A tree or multi-tree stream (`roots`: its root ids; `members`: the ids it
|
|
73
|
+
* showed in its last read, flat ids included). */
|
|
74
|
+
export function treeRelevant(c, roots, members) {
|
|
75
|
+
switch (c.op) {
|
|
76
|
+
case 'invalidate':
|
|
77
|
+
return true;
|
|
78
|
+
case 'insert':
|
|
79
|
+
case 'replace':
|
|
80
|
+
return members.has(c.id) || roots.has(String(c.doc.rootId));
|
|
81
|
+
case 'delete':
|
|
82
|
+
case 'update':
|
|
83
|
+
return members.has(c.id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** The session-events stream of `sessionId` (`members`: the ids it read). */
|
|
87
|
+
export function sessionRelevant(c, sessionId, members) {
|
|
88
|
+
switch (c.op) {
|
|
89
|
+
case 'invalidate':
|
|
90
|
+
return true;
|
|
91
|
+
case 'insert':
|
|
92
|
+
case 'replace':
|
|
93
|
+
return c.doc.originatingSessionId === sessionId;
|
|
94
|
+
case 'delete':
|
|
95
|
+
return false; // a deleted process has no new events to send
|
|
96
|
+
case 'update':
|
|
97
|
+
return c.values.originatingSessionId === sessionId
|
|
98
|
+
|| (members.has(c.id) && c.fields.has('sessionEvents'));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=process-change-relevance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-change-relevance.js","sourceRoot":"","sources":["../src/process-change-relevance.ts"],"names":[],"mappings":"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"}
|
package/dist/stream-poller.d.ts
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { ObjectId, type Db } from 'mongodb';
|
|
2
2
|
import type { ProcessMetadataFilter } from 'optio-contracts';
|
|
3
|
+
import type { ScopeFilter } from './auth.js';
|
|
4
|
+
import { type ProcessChangeHub } from './process-change-hub.js';
|
|
3
5
|
export interface StreamPollerOptions {
|
|
4
6
|
db: Db;
|
|
5
7
|
prefix: string;
|
|
6
8
|
sendEvent: (data: unknown) => void;
|
|
7
9
|
onError: () => void;
|
|
8
10
|
metadataFilter?: ProcessMetadataFilter;
|
|
11
|
+
/** Access scope (auth.ts): only processes inside it are emitted. */
|
|
12
|
+
scope?: ScopeFilter | null;
|
|
13
|
+
/** The change hub to follow; default: the shared hub of (db, prefix). */
|
|
14
|
+
hub?: ProcessChangeHub;
|
|
9
15
|
}
|
|
10
16
|
export interface ListPollerHandle {
|
|
11
17
|
start(): void;
|
|
12
18
|
stop(): void;
|
|
13
19
|
}
|
|
14
20
|
export declare function createListPoller(opts: StreamPollerOptions): ListPollerHandle;
|
|
15
|
-
export interface TreePollerOptions extends Omit<StreamPollerOptions, 'metadataFilter'> {
|
|
21
|
+
export interface TreePollerOptions extends Omit<StreamPollerOptions, 'metadataFilter' | 'scope'> {
|
|
16
22
|
rootId: string;
|
|
17
23
|
baseDepth: number;
|
|
18
24
|
maxDepth?: number;
|
|
@@ -30,6 +36,8 @@ export interface MultiTreePollerOptions {
|
|
|
30
36
|
treeRoots: MultiTreeRoot[];
|
|
31
37
|
flatIds: ObjectId[];
|
|
32
38
|
maxDepth?: number;
|
|
39
|
+
/** The change hub to follow; default: the shared hub of (db, prefix). */
|
|
40
|
+
hub?: ProcessChangeHub;
|
|
33
41
|
}
|
|
34
42
|
export declare function createMultiTreePoller(opts: MultiTreePollerOptions): ListPollerHandle;
|
|
35
43
|
export interface SessionEventsPollerOptions {
|
|
@@ -38,6 +46,10 @@ export interface SessionEventsPollerOptions {
|
|
|
38
46
|
sessionId: string;
|
|
39
47
|
sendEvent: (data: unknown) => void;
|
|
40
48
|
onError: () => void;
|
|
49
|
+
/** Access scope (auth.ts): only processes inside it are read. */
|
|
50
|
+
scope?: ScopeFilter | null;
|
|
51
|
+
/** The change hub to follow; default: the shared hub of (db, prefix). */
|
|
52
|
+
hub?: ProcessChangeHub;
|
|
41
53
|
}
|
|
42
54
|
/**
|
|
43
55
|
* Poll-backed session-events feed. Each ~1s tick reads processes whose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-poller.d.ts","sourceRoot":"","sources":["../src/stream-poller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-poller.d.ts","sourceRoot":"","sources":["../src/stream-poller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,OAAO,EAA2C,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEzG,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,oEAAoE;IACpE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,yEAAyE;IACzE,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AAqED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CAyD5E;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,CAoG1E;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,gBAAgB,CAkHpF;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,yEAAyE;IACzE,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,0BAA0B,GAAG,gBAAgB,CA6B5F"}
|