@toa.io/core 1.0.0-alpha.312 → 1.0.0-alpha.315
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/package.json +2 -2
- package/transpiled/call.js +13 -16
- package/transpiled/call.js.map +1 -1
- package/transpiled/contract/component.d.ts +13 -0
- package/transpiled/contract/component.js +55 -10
- package/transpiled/contract/component.js.map +1 -1
- package/transpiled/contract/index.d.ts +2 -1
- package/transpiled/contract/index.js +2 -1
- package/transpiled/contract/index.js.map +1 -1
- package/transpiled/contract/request.d.ts +5 -0
- package/transpiled/contract/request.js +3 -0
- package/transpiled/contract/request.js.map +1 -1
- package/transpiled/contract/system.d.ts +33 -0
- package/transpiled/contract/system.js +76 -0
- package/transpiled/contract/system.js.map +1 -0
- package/transpiled/entities/entity.js +3 -3
- package/transpiled/entities/entity.js.map +1 -1
- package/transpiled/event.d.ts +7 -1
- package/transpiled/event.js +16 -4
- package/transpiled/event.js.map +1 -1
- package/transpiled/index.d.ts +1 -0
- package/transpiled/index.js +1 -0
- package/transpiled/index.js.map +1 -1
- package/transpiled/operation.d.ts +6 -2
- package/transpiled/operation.js +8 -2
- package/transpiled/operation.js.map +1 -1
- package/transpiled/rendering.d.ts +13 -0
- package/transpiled/rendering.js +21 -0
- package/transpiled/rendering.js.map +1 -0
- package/transpiled/types/bindings.d.ts +1 -1
- package/transpiled/types/extensions.d.ts +5 -0
- package/transpiled/types/inbox.d.ts +5 -0
- package/transpiled/types/outbox.d.ts +14 -0
- package/transpiled/types/request.d.ts +4 -6
- package/transpiled/types/state.d.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toa.io/core",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.315",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Toa Core",
|
|
6
6
|
"author": "temich <tema.gurtovoy@gmail.com>",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"openspan": "1.0.0-alpha.305",
|
|
46
46
|
"uuid": "14.0.2"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "d88ed286bf44bf95b5f3d9db6e7d4621261dbb99"
|
|
49
49
|
}
|
package/transpiled/call.js
CHANGED
|
@@ -119,6 +119,10 @@ export class Call extends Connector {
|
|
|
119
119
|
// nobody waits for a task, and it is made from wherever the queue is consumed
|
|
120
120
|
if (task === true && (timeout !== undefined || signal !== undefined))
|
|
121
121
|
throw new RequestContractException('A task names no `timeout` and no `signal`');
|
|
122
|
+
// an ordinary call is answered eventually, and what nobody could answer is parked with who
|
|
123
|
+
// asked — which only means something to a caller still waiting
|
|
124
|
+
if (!this.#stateful && (timeout !== undefined || signal !== undefined))
|
|
125
|
+
throw new RequestContractException(`'${this.#target}' is stateless, and a call to it names no \`timeout\` and no \`signal\``);
|
|
122
126
|
if (this.#streamed !== undefined) {
|
|
123
127
|
// a task is taken later, by a process whose caller is no longer holding a stream
|
|
124
128
|
if (task === true)
|
|
@@ -133,25 +137,18 @@ export class Call extends Connector {
|
|
|
133
137
|
/**
|
|
134
138
|
* What the transmission is handed beside the envelope. An addressed call always waits for a set
|
|
135
139
|
* time — its caller's, or the context's — because nothing else ends a call to a process that has
|
|
136
|
-
* gone; an ordinary call waits for
|
|
140
|
+
* gone; an ordinary call waits for as long as it takes, and is handed nothing.
|
|
137
141
|
*/
|
|
138
142
|
#terms(instance, timeout, signal) {
|
|
139
|
-
|
|
140
|
-
if (instance === undefined && deadline === undefined && signal === undefined)
|
|
143
|
+
if (instance === undefined)
|
|
141
144
|
return undefined;
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
terms.instance = instance;
|
|
150
|
-
if (deadline !== undefined)
|
|
151
|
-
terms.timeout = deadline;
|
|
152
|
-
if (signals.length > 0)
|
|
153
|
-
terms.signal = signals.length === 1 ? signals[0] : AbortSignal.any(signals);
|
|
154
|
-
return terms;
|
|
145
|
+
const deadline = timeout ?? addressed.timeout();
|
|
146
|
+
const expiry = AbortSignal.timeout(deadline);
|
|
147
|
+
return {
|
|
148
|
+
instance,
|
|
149
|
+
timeout: deadline,
|
|
150
|
+
signal: signal === undefined ? expiry : AbortSignal.any([signal, expiry])
|
|
151
|
+
};
|
|
155
152
|
}
|
|
156
153
|
/** The reply, or *abandoned* once the caller has stopped waiting, however the wait ended. */
|
|
157
154
|
async #transmit(envelope, terms) {
|
package/transpiled/call.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sourceRoot":"","sources":["../source/call.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../source/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,SAAS,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAMnC,MAAM,OAAO,IAAK,SAAQ,SAAS;IACxB,YAAY,CAAc;IAC1B,SAAS,CAAU;IAE5B,wFAAwF;IAC/E,OAAO,CAAQ;IAEf,OAAO,CAAoB;IAEpC,wDAAwD;IAC/C,SAAS,CAAS;IAE3B,gFAAgF;IACvE,KAAK,CAAS;IAEvB,+EAA+E;IACtE,SAAS,CAAoB;IAEtC,sCAAsC;IACtC,YACE,WAAyB,EACzB,QAAkB,EAClB,MAAc,EACd,MAAe,EACf,QAAQ,GAAY,KAAK,EACzB,IAAI,GAAY,KAAK,EACrB,QAAiB;QAEjB,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;QAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAO,GAAY,EAAE,EAAE,OAAO,GAAY,EAAE;QAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAElC;;;WAGG;QACH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;QAExD;;;WAGG;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,IAAI,UAAU,EAAE,QAAQ,KAAK,IAAI,CAAA;QAEjE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAExC;;;;;WAKG;QACH,MAAM,QAAQ,GAAa;YACzB,GAAG,KAAK;YAER,2CAA2C;YAC3C,SAAS,EAAE,IAAI;YAEf,sEAAsE;YACtE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAE5B,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAE5C;;;eAGG;YACH,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAEjE,0EAA0E;YAC1E,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO;SACvC,CAAA;QAED,0DAA0D;QAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAA;QACzD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAA;QACvD,IAAI,QAAQ;YAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE5B,MAAM,OAAO,GAAG,OAAO,EAAE,CAAA;QAEzB,IAAI,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAE/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAEpG,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;aAC1B,IAAI,KAAK,YAAY,QAAQ;YAAE,OAAO,KAAK,CAAA;aAC3C,CAAC;YACJ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC,SAAS,CAAA;YAExD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;gBAC7D,OAAO,KAAK,CAAC,MAAM,CAAA;QAC1B,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,UAAwC;QAChD,IAAI,UAAU,EAAE,EAAE,KAAK,SAAS;YAAE,OAAO,KAAK,EAAE,CAAA;QAEhD,OAAO,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACrF,CAAC;IAED,wFAAwF;IACxF,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,QAAiB;QAC3D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAClC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAEnC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;YACzB,MAAM,IAAI,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,iDAAiD,CAAC,CAAA;QAE9F,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,SAAS;YAC1C,MAAM,IAAI,wBAAwB,CAChC,IAAI,IAAI,CAAC,OAAO,oDAAoD,CACrE,CAAA;QAEH,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,SAAS;YAC3C,MAAM,IAAI,wBAAwB,CAChC,IAAI,IAAI,CAAC,OAAO,wDAAwD,CACzE,CAAA;QAEH,mFAAmF;QACnF,wBAAwB;QACxB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,KAAK,IAAI;YACjC,MAAM,IAAI,wBAAwB,CAChC,IAAI,IAAI,CAAC,OAAO,4CAA4C,CAC7D,CAAA;QAEH,8EAA8E;QAC9E,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;YAClE,MAAM,IAAI,wBAAwB,CAAC,2CAA2C,CAAC,CAAA;QAEjF,2FAA2F;QAC3F,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;YACpE,MAAM,IAAI,wBAAwB,CAChC,IAAI,IAAI,CAAC,OAAO,yEAAyE,CAC1F,CAAA;QAEH,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,iFAAiF;YACjF,IAAI,IAAI,KAAK,IAAI;gBACf,MAAM,IAAI,wBAAwB,CAChC,IAAI,IAAI,CAAC,OAAO,2CAA2C,CAC5D,CAAA;YAEH,kFAAkF;YAClF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;gBACzC,MAAM,IAAI,wBAAwB,CAChC,IAAI,IAAI,CAAC,OAAO,wBAAwB,IAAI,CAAC,SAAS,oCAAoC,CAC3F,CAAA;QACL,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;YACrE,MAAM,IAAI,wBAAwB,CAAC,gDAAgD,CAAC,CAAA;IACxF,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAiB,EAAE,OAAgB,EAAE,MAAoB;QAC9D,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAE5C,MAAM,QAAQ,GAAG,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAA;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE5C,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC1E,CAAA;IACH,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,SAAS,CAAC,QAAkB,EAAE,KAAwB;QAC1D,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAA;QAE5B,mFAAmF;QACnF,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI;YAAE,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAEnE,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACxF,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,KAAc,EAAE,QAAgB;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE7D,MAAM,OAAO,GAAa,KAAiC,CAAC,QAAQ,CAAC,CAAA;IAErE,IAAI,OAAO,YAAY,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC5C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAEjE,OAAQ,OAAgC,CAAC,MAAM,YAAY,QAAQ,CAAA;AACrE,CAAC;AAED,+FAA+F;AAC/F,SAAS,OAAO,CAAC,MAA0B;IACzC,OAAO,MAAM,KAAK,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnF,CAAC;AAED,sFAAsF;AACtF,MAAM,WAAY,SAAQ,KAAK;IAC7B,YAAmB,KAAa;QAC9B,KAAK,EAAE,CAAA;QAEP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC;CACF"}
|
|
@@ -3,6 +3,8 @@ import type { Definition, Entity } from './request.ts';
|
|
|
3
3
|
export interface Contract {
|
|
4
4
|
/** the version of the component this describes */
|
|
5
5
|
version?: string;
|
|
6
|
+
/** what carries a call to any of its operations, which one of them may name otherwise */
|
|
7
|
+
bindings?: string[];
|
|
6
8
|
entity?: Entity;
|
|
7
9
|
operations?: Record<string, Operation>;
|
|
8
10
|
events?: Record<string, Event>;
|
|
@@ -20,5 +22,16 @@ export interface Event {
|
|
|
20
22
|
* operation's concurrency, the bridge that runs it and what it forwards to, and the entity's
|
|
21
23
|
* storage, its blank and its migrations. An event's `path` is a path in the process that
|
|
22
24
|
* normalised the manifest, and names nothing in any other.
|
|
25
|
+
*
|
|
26
|
+
* What the runtime gives every component is not stated either, or is stated once: the entity's
|
|
27
|
+
* system properties, the bindings an operation did not name, the empty output an operation
|
|
28
|
+
* declaring none normalises to, and the `query` that follows from a scope of `none`. None of it
|
|
29
|
+
* is a declaration, and `restore` is what puts it back for whoever reads one.
|
|
23
30
|
*/
|
|
24
31
|
export declare function component(manifest: Contract): Contract;
|
|
32
|
+
/**
|
|
33
|
+
* The contract as the component declared it, which is the whole of what a caller is held to.
|
|
34
|
+
* What was never left out passes through: a component's own manifest is a contract too, and is
|
|
35
|
+
* what a receiver is given of the component whose events it receives.
|
|
36
|
+
*/
|
|
37
|
+
export declare function restore(contract: Contract): Contract;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { pack, same, unpack } from './system.js';
|
|
1
2
|
/**
|
|
2
3
|
* What a caller is given of a component, of what its normalised manifest holds.
|
|
3
4
|
*
|
|
@@ -5,18 +6,26 @@
|
|
|
5
6
|
* operation's concurrency, the bridge that runs it and what it forwards to, and the entity's
|
|
6
7
|
* storage, its blank and its migrations. An event's `path` is a path in the process that
|
|
7
8
|
* normalised the manifest, and names nothing in any other.
|
|
9
|
+
*
|
|
10
|
+
* What the runtime gives every component is not stated either, or is stated once: the entity's
|
|
11
|
+
* system properties, the bindings an operation did not name, the empty output an operation
|
|
12
|
+
* declaring none normalises to, and the `query` that follows from a scope of `none`. None of it
|
|
13
|
+
* is a declaration, and `restore` is what puts it back for whoever reads one.
|
|
8
14
|
*/
|
|
9
15
|
export function component(manifest) {
|
|
10
16
|
const contract = { version: manifest.version };
|
|
11
|
-
if (manifest.
|
|
12
|
-
contract.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
if (manifest.bindings !== undefined)
|
|
18
|
+
contract.bindings = manifest.bindings;
|
|
19
|
+
if (manifest.entity !== undefined) {
|
|
20
|
+
const entity = { properties: manifest.entity.properties };
|
|
21
|
+
if (manifest.entity.required !== undefined)
|
|
22
|
+
entity.required = manifest.entity.required;
|
|
23
|
+
contract.entity = pack(entity);
|
|
24
|
+
}
|
|
16
25
|
if (manifest.operations !== undefined) {
|
|
17
26
|
contract.operations = {};
|
|
18
27
|
for (const [endpoint, definition] of Object.entries(manifest.operations))
|
|
19
|
-
contract.operations[endpoint] = operation(definition);
|
|
28
|
+
contract.operations[endpoint] = operation(definition, manifest.bindings);
|
|
20
29
|
}
|
|
21
30
|
if (manifest.events !== undefined) {
|
|
22
31
|
contract.events = {};
|
|
@@ -25,13 +34,49 @@ export function component(manifest) {
|
|
|
25
34
|
}
|
|
26
35
|
return contract;
|
|
27
36
|
}
|
|
28
|
-
|
|
37
|
+
/**
|
|
38
|
+
* The contract as the component declared it, which is the whole of what a caller is held to.
|
|
39
|
+
* What was never left out passes through: a component's own manifest is a contract too, and is
|
|
40
|
+
* what a receiver is given of the component whose events it receives.
|
|
41
|
+
*/
|
|
42
|
+
export function restore(contract) {
|
|
43
|
+
const restored = { ...contract };
|
|
44
|
+
if (contract.entity !== undefined)
|
|
45
|
+
restored.entity = unpack(contract.entity);
|
|
46
|
+
if (contract.operations !== undefined) {
|
|
47
|
+
restored.operations = {};
|
|
48
|
+
for (const [endpoint, definition] of Object.entries(contract.operations))
|
|
49
|
+
restored.operations[endpoint] = declared(definition, contract.bindings);
|
|
50
|
+
}
|
|
51
|
+
return restored;
|
|
52
|
+
}
|
|
53
|
+
function operation(definition, bindings) {
|
|
29
54
|
const operation = {};
|
|
30
|
-
for (const key of KEYS)
|
|
31
|
-
|
|
32
|
-
|
|
55
|
+
for (const key of KEYS) {
|
|
56
|
+
const value = definition[key];
|
|
57
|
+
if (value === undefined)
|
|
58
|
+
continue;
|
|
59
|
+
if (key === 'bindings' && same(value, bindings))
|
|
60
|
+
continue;
|
|
61
|
+
if (key === 'output' && describes(value) === false)
|
|
62
|
+
continue;
|
|
63
|
+
if (key === 'query' && value === false && definition.scope === 'none')
|
|
64
|
+
continue;
|
|
65
|
+
operation[key] = value;
|
|
66
|
+
}
|
|
33
67
|
return operation;
|
|
34
68
|
}
|
|
69
|
+
function declared(definition, bindings) {
|
|
70
|
+
const operation = { ...definition };
|
|
71
|
+
operation.bindings ??= bindings;
|
|
72
|
+
if (operation.scope === 'none')
|
|
73
|
+
operation.query ??= false;
|
|
74
|
+
return operation;
|
|
75
|
+
}
|
|
76
|
+
/** Whether a schema says anything, which the one an operation declaring no output gets does not. */
|
|
77
|
+
function describes(schema) {
|
|
78
|
+
return schema !== null && Object.keys(schema).length > 0;
|
|
79
|
+
}
|
|
35
80
|
/** What a call to an operation is addressed by, carries, answers and refuses with. */
|
|
36
81
|
const KEYS = [
|
|
37
82
|
'type',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../source/contract/component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../source/contract/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { component } from './component.js';
|
|
1
|
+
export { component, restore } from './component.js';
|
|
2
|
+
export { ID, SYSTEM, pack, unpack } from './system.js';
|
|
2
3
|
export { Request } from './request.js';
|
|
3
4
|
export { Reply } from './reply.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -33,6 +33,11 @@ export interface Definition extends Explanation {
|
|
|
33
33
|
export interface Entity {
|
|
34
34
|
properties: Record<string, JSONSchema>;
|
|
35
35
|
required?: string[];
|
|
36
|
+
/**
|
|
37
|
+
* Whether its system properties are the ones the runtime gives every entity, in which case a
|
|
38
|
+
* contract leaves them out and whoever reads one puts them back.
|
|
39
|
+
*/
|
|
40
|
+
system?: boolean;
|
|
36
41
|
}
|
|
37
42
|
export declare class Request extends Contract {
|
|
38
43
|
readonly discovery: Explanation;
|
|
@@ -17,6 +17,9 @@ export class Request extends Contract {
|
|
|
17
17
|
])
|
|
18
18
|
if (definition[key] !== undefined)
|
|
19
19
|
this.discovery[key] = definition[key];
|
|
20
|
+
// how long a call is remembered is the operation's to keep, not the caller's to plan by
|
|
21
|
+
if (this.discovery.once !== undefined)
|
|
22
|
+
this.discovery.once = this.discovery.once !== false;
|
|
20
23
|
/*
|
|
21
24
|
* An operation that states no output states an empty schema, which every reply fits —
|
|
22
25
|
* and which says nothing to whoever reads it. What its type answers does, so that is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../source/contract/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../source/contract/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AA8CxC,MAAM,OAAO,OAAQ,SAAQ,QAAQ;IACnB,SAAS,GAAgB,EAAE,CAAA;IAEpC,MAAM,CAAU,SAAS,GAC9B,wBAA8C,CAAA;IAEhD,YAAmB,MAAc,EAAE,UAAsB,EAAE,MAAe;QACxE,KAAK,CAAC,MAAM,CAAC,CAAA;QAEb,KAAK,MAAM,GAAG,IAAI;YAChB,aAAa;YACb,MAAM;YACN,UAAU;YACV,QAAQ;YACR,OAAO;YACP,QAAQ;YACR,QAAQ;SACA;YACR,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS;gBAC9B,IAAI,CAAC,SAAqC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAEtE,wFAAwF;QACxF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAA;QAE1F;;;;;;WAMG;QACH,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAE5C,IAAI,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAA;QAC9D,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAClB,UAAsB,EACtB,MAAmD;QAEnD,2FAA2F;QAC3F,6FAA6F;QAC7F,MAAM,MAAM,GAAe;YACzB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV;;;;;;mBAMG;gBACH,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtB,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzB,iFAAiF;gBACjF,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC7B,qEAAqE;gBACrE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;aACxE;YACD,oBAAoB,EAAE,IAAI;SAC3B,CAAA;QAED,MAAM,QAAQ,GAAa,EAAE,CAAA;QAE7B,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YAC7F,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;aAAM,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;YAC1C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;;YAAM,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QAEjD,IAAI,MAAM,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA;QAElD,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAErD,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK;YAAE,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QAE1E,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAE5C,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,CAAC,EAAE,CAAA;YAE3C,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa;gBAAE,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAA;;gBACjE,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAA;YAEvC,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxE,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAA;gBAC5B,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAA;YAC/B,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAA;;gBAC9D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAEjC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA;QACjC,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAEnD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,KAAiB,EAAE,QAAgB;IACnD,MAAM,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;IAC1D,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,KAAK,CAAC,QAAqB,EAAE,QAAQ,CAAC,CAAA;IAEzF,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AAC3C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,OAAO,CAAC,UAAsB,EAAE,MAAe;IACtD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAc,CAAC;QAAE,OAAO,SAAS,CAAA;IAEpF,MAAM,MAAM,GAAe;QACzB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxE,CAAA;IAED,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;QAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAgB,CAAA;IAEvD,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW;QACtE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAA;AAEnE,6FAA6F;AAC7F,SAAS,KAAK,CAAC,MAAqC;IAClD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AACpF,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Entity } from './request.ts';
|
|
2
|
+
import type { JSONSchema } from './schemas.ts';
|
|
3
|
+
/**
|
|
4
|
+
* What the root prototype gives every entity, as `runtime/prototype/manifest.toa.yaml` declares
|
|
5
|
+
* it. Held here because a contract is read where that package is not — a gateway reads one of a
|
|
6
|
+
* component it does not have — and kept the same as the prototype by a test in `@toa.io/norm`,
|
|
7
|
+
* which has both.
|
|
8
|
+
*
|
|
9
|
+
* `id` is apart from the rest: a component may declare its own, and the rest it may not.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ID: JSONSchema;
|
|
12
|
+
export declare const SYSTEM: Record<string, JSONSchema>;
|
|
13
|
+
/**
|
|
14
|
+
* Whether one declaration is the other. Compared as written rather than by walking it: a
|
|
15
|
+
* component cannot have written a system property itself — a manifest that redeclares one is
|
|
16
|
+
* refused — so what is there came from the prototype and is identical to it. A comparison that
|
|
17
|
+
* says no costs the property being written out, and nothing else.
|
|
18
|
+
*/
|
|
19
|
+
export declare function same(one: unknown, other: unknown): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* The entity without what the runtime gives it, saying that it did. An entity a component
|
|
22
|
+
* declares itself — one whose prototype is `null` — may give four of them, or five, or the same
|
|
23
|
+
* names with other schemas, so it is stated as it stands and says nothing.
|
|
24
|
+
*/
|
|
25
|
+
export declare function pack(entity: Entity): Entity;
|
|
26
|
+
/**
|
|
27
|
+
* The entity as the component declared it, which is what anything reading one is given.
|
|
28
|
+
*
|
|
29
|
+
* What is put back is a copy of it. An entity's schemas were its own before a contract left any
|
|
30
|
+
* of them out, and whoever holds one edits it — a route takes a property out of what it
|
|
31
|
+
* describes — so two components sharing one object is not a thing to start doing here.
|
|
32
|
+
*/
|
|
33
|
+
export declare function unpack(entity: Entity): Entity;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the root prototype gives every entity, as `runtime/prototype/manifest.toa.yaml` declares
|
|
3
|
+
* it. Held here because a contract is read where that package is not — a gateway reads one of a
|
|
4
|
+
* component it does not have — and kept the same as the prototype by a test in `@toa.io/norm`,
|
|
5
|
+
* which has both.
|
|
6
|
+
*
|
|
7
|
+
* `id` is apart from the rest: a component may declare its own, and the rest it may not.
|
|
8
|
+
*/
|
|
9
|
+
export const ID = { type: 'string', pattern: '^[a-fA-F0-9]{32}$' };
|
|
10
|
+
export const SYSTEM = {
|
|
11
|
+
VERSION: { type: 'integer', minimum: 0 },
|
|
12
|
+
CREATED: { type: 'integer', format: 'epoch-millis' },
|
|
13
|
+
UPDATED: { type: 'integer', format: 'epoch-millis' },
|
|
14
|
+
DELETED: { type: 'integer', format: 'epoch-millis', nullable: true },
|
|
15
|
+
REGION: { type: 'integer', minimum: 0 }
|
|
16
|
+
};
|
|
17
|
+
/** What the prototype requires, which is every property it gives. */
|
|
18
|
+
const REQUIRED = ['id', ...Object.keys(SYSTEM)];
|
|
19
|
+
/**
|
|
20
|
+
* Whether one declaration is the other. Compared as written rather than by walking it: a
|
|
21
|
+
* component cannot have written a system property itself — a manifest that redeclares one is
|
|
22
|
+
* refused — so what is there came from the prototype and is identical to it. A comparison that
|
|
23
|
+
* says no costs the property being written out, and nothing else.
|
|
24
|
+
*/
|
|
25
|
+
export function same(one, other) {
|
|
26
|
+
return JSON.stringify(one) === JSON.stringify(other);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The entity without what the runtime gives it, saying that it did. An entity a component
|
|
30
|
+
* declares itself — one whose prototype is `null` — may give four of them, or five, or the same
|
|
31
|
+
* names with other schemas, so it is stated as it stands and says nothing.
|
|
32
|
+
*/
|
|
33
|
+
export function pack(entity) {
|
|
34
|
+
if (!given(entity))
|
|
35
|
+
return entity;
|
|
36
|
+
const properties = {};
|
|
37
|
+
for (const [name, property] of Object.entries(entity.properties))
|
|
38
|
+
if (!(name in SYSTEM) && !(name === 'id' && same(property, ID)))
|
|
39
|
+
properties[name] = property;
|
|
40
|
+
const required = (entity.required ?? []).filter((name) => !REQUIRED.includes(name));
|
|
41
|
+
return {
|
|
42
|
+
properties,
|
|
43
|
+
...(required.length === 0 ? {} : { required }),
|
|
44
|
+
system: true
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The entity as the component declared it, which is what anything reading one is given.
|
|
49
|
+
*
|
|
50
|
+
* What is put back is a copy of it. An entity's schemas were its own before a contract left any
|
|
51
|
+
* of them out, and whoever holds one edits it — a route takes a property out of what it
|
|
52
|
+
* describes — so two components sharing one object is not a thing to start doing here.
|
|
53
|
+
*/
|
|
54
|
+
export function unpack(entity) {
|
|
55
|
+
if (entity.system !== true)
|
|
56
|
+
return entity;
|
|
57
|
+
const declared = {
|
|
58
|
+
...entity,
|
|
59
|
+
properties: {
|
|
60
|
+
...entity.properties,
|
|
61
|
+
...(entity.properties.id === undefined ? { id: structuredClone(ID) } : {}),
|
|
62
|
+
...structuredClone(SYSTEM)
|
|
63
|
+
},
|
|
64
|
+
required: [...(entity.required ?? []), ...REQUIRED]
|
|
65
|
+
};
|
|
66
|
+
delete declared.system;
|
|
67
|
+
return declared;
|
|
68
|
+
}
|
|
69
|
+
/** Whether what the prototype gives is what this entity carries, which is what may be left out. */
|
|
70
|
+
function given(entity) {
|
|
71
|
+
for (const [name, property] of Object.entries(SYSTEM))
|
|
72
|
+
if (!same(entity.properties[name], property))
|
|
73
|
+
return false;
|
|
74
|
+
return REQUIRED.every((name) => entity.required?.includes(name) === true);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../source/contract/system.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ export class Entity {
|
|
|
43
43
|
return {
|
|
44
44
|
origin: this.#origin,
|
|
45
45
|
state: this.#state,
|
|
46
|
-
trailers: this.#state.
|
|
46
|
+
trailers: this.#state.TRAILERS,
|
|
47
47
|
input
|
|
48
48
|
};
|
|
49
49
|
}
|
|
@@ -95,8 +95,8 @@ export class Entity {
|
|
|
95
95
|
this.deleted = false;
|
|
96
96
|
}
|
|
97
97
|
#write(value) {
|
|
98
|
-
if (!('
|
|
99
|
-
Object.defineProperty(value, '
|
|
98
|
+
if (!('TRAILERS' in value))
|
|
99
|
+
Object.defineProperty(value, 'TRAILERS', {
|
|
100
100
|
writable: false,
|
|
101
101
|
configurable: false,
|
|
102
102
|
enumerable: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../source/entities/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMlC,MAAM,OAAO,MAAM;IACV,OAAO,GAAG,KAAK,CAAA;IAEb,OAAO,CAAQ;IACf,MAAM,CAAQ;IACd,OAAO,CAAqB;IACrC,OAAO,GAAkB,IAAI,CAAA;IAC7B,MAAM,CAAS;IACf,QAAQ,GAAG,IAAI,CAAA;IAEf;;;;;;OAMG;IACH,sCAAsC;IACtC,YACE,MAAc,EACd,KAAa,EACb,QAA0B,EAC1B,MAAgB,EAChB,OAAO,GAAG,IAAI;QAEd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QAErB,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;;YAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEM,GAAG,CAAC,KAAa;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAEhF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAErC,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM,IAAI,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAEnE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IAEM,KAAK,CAAC,KAAc;QACzB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../source/entities/entity.ts"],"names":[],"mappings":"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"}
|
package/transpiled/event.d.ts
CHANGED
|
@@ -7,8 +7,14 @@ export interface Definition {
|
|
|
7
7
|
subjective?: boolean;
|
|
8
8
|
label?: string;
|
|
9
9
|
}
|
|
10
|
+
export interface Raised {
|
|
11
|
+
payload: unknown;
|
|
12
|
+
}
|
|
10
13
|
export declare class Event extends Connector {
|
|
11
14
|
#private;
|
|
12
|
-
|
|
15
|
+
/** `emitter` is `null` for an event that is rendered and never published: see `Rendering` */
|
|
16
|
+
constructor(definition: Definition, emitter: Emitter | null, bridge?: Bridge);
|
|
17
|
+
/** What the row raises this event with, or `null` where its condition does not hold. */
|
|
18
|
+
render(row: Row): Promise<Raised | null>;
|
|
13
19
|
emit(row: Row): Promise<void>;
|
|
14
20
|
}
|
package/transpiled/event.js
CHANGED
|
@@ -8,6 +8,7 @@ export class Event extends Connector {
|
|
|
8
8
|
#conditioned;
|
|
9
9
|
#subjective;
|
|
10
10
|
#label;
|
|
11
|
+
/** `emitter` is `null` for an event that is rendered and never published: see `Rendering` */
|
|
11
12
|
constructor(definition, emitter, bridge) {
|
|
12
13
|
super();
|
|
13
14
|
this.#conditioned = definition.conditioned;
|
|
@@ -15,14 +16,23 @@ export class Event extends Connector {
|
|
|
15
16
|
this.#label = definition.label ?? 'event';
|
|
16
17
|
this.#emitter = emitter;
|
|
17
18
|
this.#bridge = bridge;
|
|
18
|
-
|
|
19
|
+
if (emitter !== null)
|
|
20
|
+
this.depends(emitter);
|
|
19
21
|
if (bridge !== undefined)
|
|
20
22
|
this.depends(bridge);
|
|
21
23
|
}
|
|
22
|
-
|
|
24
|
+
/** What the row raises this event with, or `null` where its condition does not hold. */
|
|
25
|
+
async render(row) {
|
|
23
26
|
const event = row.event;
|
|
24
|
-
if (this.#conditioned
|
|
25
|
-
|
|
27
|
+
if (this.#conditioned !== false && (await this.#bridge?.condition(event)) !== true)
|
|
28
|
+
return null;
|
|
29
|
+
const payload = this.#subjective === true ? await this.#bridge?.payload(event) : event.state;
|
|
30
|
+
return { payload };
|
|
31
|
+
}
|
|
32
|
+
async emit(row) {
|
|
33
|
+
const raised = await this.render(row);
|
|
34
|
+
if (raised !== null) {
|
|
35
|
+
const { payload } = raised;
|
|
26
36
|
/*
|
|
27
37
|
* The row is committed once, so its id is what makes every publication of it one message:
|
|
28
38
|
* the immediate path, the pump that may run an hour later in another replica, and a
|
|
@@ -45,6 +55,8 @@ export class Event extends Connector {
|
|
|
45
55
|
const context = current();
|
|
46
56
|
if (context !== undefined)
|
|
47
57
|
message.telemetry = encode(context);
|
|
58
|
+
if (this.#emitter === null)
|
|
59
|
+
throw new Error(`Event '${this.#label}' is not published`);
|
|
48
60
|
await this.#emitter.emit(message);
|
|
49
61
|
});
|
|
50
62
|
}
|
package/transpiled/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../source/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../source/event.ts"],"names":[],"mappings":"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"}
|
package/transpiled/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export { Encoded } from './encoded.ts';
|
|
|
9
9
|
export { Effect } from './effect.ts';
|
|
10
10
|
export { Emission } from './emission.ts';
|
|
11
11
|
export { Event } from './event.ts';
|
|
12
|
+
export { Rendering } from './rendering.ts';
|
|
12
13
|
export { Gate } from './gate.ts';
|
|
13
14
|
export { Locator } from './locator.ts';
|
|
14
15
|
export { Observation } from './observation.ts';
|
package/transpiled/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { Encoded } from './encoded.js';
|
|
|
9
9
|
export { Effect } from './effect.js';
|
|
10
10
|
export { Emission } from './emission.js';
|
|
11
11
|
export { Event } from './event.js';
|
|
12
|
+
export { Rendering } from './rendering.js';
|
|
12
13
|
export { Gate } from './gate.js';
|
|
13
14
|
export { Locator } from './locator.js';
|
|
14
15
|
export { Observation } from './observation.js';
|
package/transpiled/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA"}
|
|
@@ -28,8 +28,12 @@ export interface Contracts {
|
|
|
28
28
|
export interface Definition {
|
|
29
29
|
scope: Scope;
|
|
30
30
|
concurrency?: string;
|
|
31
|
-
/**
|
|
32
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Whether the same call arriving twice changes state once; see `documentation/inbox.md`. A
|
|
33
|
+
* number is how many seconds a call is remembered, where the deployment's window is not the
|
|
34
|
+
* one its callers retry within.
|
|
35
|
+
*/
|
|
36
|
+
once?: boolean | number;
|
|
33
37
|
}
|
|
34
38
|
export declare class Operation extends Connector {
|
|
35
39
|
#private;
|
package/transpiled/operation.js
CHANGED
|
@@ -19,6 +19,8 @@ export class Operation extends Connector {
|
|
|
19
19
|
#query;
|
|
20
20
|
#scope;
|
|
21
21
|
#once;
|
|
22
|
+
/** what this operation states of how long a call is remembered; the deployment's where absent */
|
|
23
|
+
#retention;
|
|
22
24
|
/** a reply is validated only on local environments, which are set before an operation is built */
|
|
23
25
|
#local;
|
|
24
26
|
// eslint-disable-next-line max-params
|
|
@@ -29,7 +31,8 @@ export class Operation extends Connector {
|
|
|
29
31
|
this.#contracts = contracts;
|
|
30
32
|
this.#query = query;
|
|
31
33
|
this.#scope = definition.scope;
|
|
32
|
-
this.#once = definition.once === true;
|
|
34
|
+
this.#once = definition.once === true || typeof definition.once === 'number';
|
|
35
|
+
this.#retention = typeof definition.once === 'number' ? definition.once : undefined;
|
|
33
36
|
this.#local = environment.get('TOA_ENV') === 'local';
|
|
34
37
|
this.depends(cascade);
|
|
35
38
|
}
|
|
@@ -104,7 +107,10 @@ export class Operation extends Connector {
|
|
|
104
107
|
* what is recorded must be what was known when the record was made rather than whatever the
|
|
105
108
|
* reply became afterwards.
|
|
106
109
|
*/
|
|
107
|
-
|
|
110
|
+
const call = { id: store.request.id, reply: { ...store.reply } };
|
|
111
|
+
if (this.#retention !== undefined)
|
|
112
|
+
call.retention = this.#retention;
|
|
113
|
+
return call;
|
|
108
114
|
}
|
|
109
115
|
async process(store) {
|
|
110
116
|
await this.acquire(store);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../source/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../source/operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Connector } from './connector.ts';
|
|
2
|
+
import type { Event, Raised } from './event.ts';
|
|
3
|
+
import type { Rendering as Declaration, Row } from './types/outbox.ts';
|
|
4
|
+
/**
|
|
5
|
+
* The component's events, rendered for a destination that writes them somewhere of its own. The
|
|
6
|
+
* condition and the payload are the component's, as they are for the events it publishes, so
|
|
7
|
+
* what the destination writes is what a receiver of the event would have received.
|
|
8
|
+
*/
|
|
9
|
+
export declare class Rendering extends Connector implements Declaration {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(events: Map<string, Event>);
|
|
12
|
+
render(label: string, row: Row): Promise<Raised | null>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Connector } from './connector.js';
|
|
2
|
+
/**
|
|
3
|
+
* The component's events, rendered for a destination that writes them somewhere of its own. The
|
|
4
|
+
* condition and the payload are the component's, as they are for the events it publishes, so
|
|
5
|
+
* what the destination writes is what a receiver of the event would have received.
|
|
6
|
+
*/
|
|
7
|
+
export class Rendering extends Connector {
|
|
8
|
+
#events;
|
|
9
|
+
constructor(events) {
|
|
10
|
+
super();
|
|
11
|
+
this.#events = events;
|
|
12
|
+
this.depends([...events.values()]);
|
|
13
|
+
}
|
|
14
|
+
async render(label, row) {
|
|
15
|
+
const event = this.#events.get(label);
|
|
16
|
+
if (event === undefined)
|
|
17
|
+
throw new Error(`Event '${label}' is not rendered`);
|
|
18
|
+
return await event.render(row);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=rendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../source/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAI1C;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,SAAS;IAC7B,OAAO,CAAoB;IAEpC,YAAmB,MAA0B;QAC3C,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QAErB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,GAAQ;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAErC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,mBAAmB,CAAC,CAAA;QAE5E,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;CACF"}
|
|
@@ -21,7 +21,7 @@ export interface Properties {
|
|
|
21
21
|
export interface Terms {
|
|
22
22
|
/** the process an addressed call goes to */
|
|
23
23
|
instance?: string;
|
|
24
|
-
/** milliseconds the caller
|
|
24
|
+
/** milliseconds the caller of an addressed call waits */
|
|
25
25
|
timeout?: number;
|
|
26
26
|
/** aborts when the caller stops waiting */
|
|
27
27
|
signal?: AbortSignal;
|
|
@@ -55,6 +55,11 @@ export interface Host {
|
|
|
55
55
|
* core cannot name its types.
|
|
56
56
|
*/
|
|
57
57
|
export interface Factory<Manifest = unknown> {
|
|
58
|
+
/**
|
|
59
|
+
* What the package offers for each declaration it claims beside its main one: a manifest key
|
|
60
|
+
* that resolves to `package#key` is answered by `keys[key]`, and never by this.
|
|
61
|
+
*/
|
|
62
|
+
keys?: Record<string, Factory<Manifest>>;
|
|
58
63
|
tenant?(locator: Locator, declaration: any, manifest: Manifest): Connector | Promise<Connector>;
|
|
59
64
|
aspect?(locator: Locator, declaration: any): Aspect | Aspect[];
|
|
60
65
|
/**
|
|
@@ -11,6 +11,11 @@ export interface Call {
|
|
|
11
11
|
id: string;
|
|
12
12
|
/** what the call answered, so that a duplicate of it is answered rather than refused */
|
|
13
13
|
reply: object;
|
|
14
|
+
/**
|
|
15
|
+
* Seconds the call is remembered, where its operation states them. Absent, the storage keeps
|
|
16
|
+
* it for the deployment's window.
|
|
17
|
+
*/
|
|
18
|
+
retention?: number;
|
|
14
19
|
}
|
|
15
20
|
/**
|
|
16
21
|
* The read side of an inbox. What writes a record is the storage's own: it happens inside the
|
|
@@ -34,6 +34,20 @@ export interface Destination extends Connector {
|
|
|
34
34
|
readonly name: string;
|
|
35
35
|
/** the row, not its event: what goes on the wire is the chain it carries too */
|
|
36
36
|
emit(row: Row): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* The events of the component this renders a row into, by their labels. A destination that
|
|
39
|
+
* names them is given a `Rendering` of them before it connects: the payload each would be
|
|
40
|
+
* published with, by the component's own condition and payload.
|
|
41
|
+
*/
|
|
42
|
+
readonly renders?: string[];
|
|
43
|
+
rendering?: Rendering;
|
|
44
|
+
}
|
|
45
|
+
/** What a row makes of the component's events: the payload of each that it raises. */
|
|
46
|
+
export interface Rendering {
|
|
47
|
+
/** `null` where the event's condition does not hold for the row */
|
|
48
|
+
render(label: string, row: Row): Promise<{
|
|
49
|
+
payload: unknown;
|
|
50
|
+
} | null>;
|
|
37
51
|
}
|
|
38
52
|
/**
|
|
39
53
|
* The read side of an outbox. What writes a row is the storage's own: it happens inside the
|
|
@@ -78,14 +78,12 @@ export interface Request<Input = any, Entity = any> {
|
|
|
78
78
|
telemetry?: string;
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
81
|
-
* How a caller waits for
|
|
82
|
-
* and neither is sent with it.
|
|
81
|
+
* How a caller waits for an addressed call, given beside the request: neither is part of what the
|
|
82
|
+
* call asks, and neither is sent with it. An ordinary call waits for as long as its reply takes, and
|
|
83
|
+
* is refused if it names either.
|
|
83
84
|
*/
|
|
84
85
|
export interface Options {
|
|
85
|
-
/**
|
|
86
|
-
* Milliseconds the caller waits for the reply. An addressed call waits the context's default
|
|
87
|
-
* without one; an ordinary call waits for as long as it takes.
|
|
88
|
-
*/
|
|
86
|
+
/** Milliseconds the caller waits for the reply. Without one, the context's default. */
|
|
89
87
|
timeout?: number;
|
|
90
88
|
/** Ends the wait when it aborts, within the timeout. */
|
|
91
89
|
signal?: AbortSignal;
|
|
@@ -3,7 +3,7 @@ export interface Event<State = object, Trailers = object> {
|
|
|
3
3
|
/** the pre-image; null when the entity did not exist before */
|
|
4
4
|
origin: State | null;
|
|
5
5
|
state: State;
|
|
6
|
-
/** out-of-band values an algorithm wrote into `state.
|
|
6
|
+
/** out-of-band values an algorithm wrote into `state.TRAILERS`; must be serializable */
|
|
7
7
|
trailers?: Trailers;
|
|
8
8
|
input?: object;
|
|
9
9
|
}
|