@toa.io/core 1.0.0-alpha.314 → 1.0.0-alpha.319

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.
Files changed (35) hide show
  1. package/package.json +2 -2
  2. package/transpiled/call.js +13 -16
  3. package/transpiled/call.js.map +1 -1
  4. package/transpiled/contract/component.d.ts +13 -0
  5. package/transpiled/contract/component.js +55 -10
  6. package/transpiled/contract/component.js.map +1 -1
  7. package/transpiled/contract/index.d.ts +2 -1
  8. package/transpiled/contract/index.js +2 -1
  9. package/transpiled/contract/index.js.map +1 -1
  10. package/transpiled/contract/request.d.ts +5 -0
  11. package/transpiled/contract/request.js +16 -8
  12. package/transpiled/contract/request.js.map +1 -1
  13. package/transpiled/contract/schemas.js +2 -1
  14. package/transpiled/contract/schemas.js.map +1 -1
  15. package/transpiled/contract/system.d.ts +33 -0
  16. package/transpiled/contract/system.js +76 -0
  17. package/transpiled/contract/system.js.map +1 -0
  18. package/transpiled/exceptions.d.ts +3 -0
  19. package/transpiled/exceptions.js +5 -0
  20. package/transpiled/exceptions.js.map +1 -1
  21. package/transpiled/index.d.ts +2 -0
  22. package/transpiled/index.js +1 -0
  23. package/transpiled/index.js.map +1 -1
  24. package/transpiled/operation.js +45 -12
  25. package/transpiled/operation.js.map +1 -1
  26. package/transpiled/parts.d.ts +20 -0
  27. package/transpiled/parts.js +23 -0
  28. package/transpiled/parts.js.map +1 -0
  29. package/transpiled/state.d.ts +4 -4
  30. package/transpiled/state.js +4 -4
  31. package/transpiled/state.js.map +1 -1
  32. package/transpiled/types/bindings.d.ts +1 -1
  33. package/transpiled/types/operations.d.ts +1 -1
  34. package/transpiled/types/request.d.ts +5 -6
  35. package/transpiled/types/storages.d.ts +10 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/core",
3
- "version": "1.0.0-alpha.314",
3
+ "version": "1.0.0-alpha.319",
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": "4b7c0f4468e6fa89f95a69f43fed85c648fb033d"
48
+ "gitHead": "ee4901f2bc12c33fc2098a62f2af0c29838a2c2c"
49
49
  }
@@ -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 one only where its caller set it.
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
- const deadline = timeout ?? (this.#stateful ? addressed.timeout() : undefined);
140
- if (instance === undefined && deadline === undefined && signal === undefined)
143
+ if (instance === undefined)
141
144
  return undefined;
142
- const signals = [];
143
- if (signal !== undefined)
144
- signals.push(signal);
145
- if (deadline !== undefined)
146
- signals.push(AbortSignal.timeout(deadline));
147
- const terms = {};
148
- if (instance !== undefined)
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) {
@@ -1 +1 @@
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,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,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAE9E,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAC1E,OAAO,SAAS,CAAA;QAElB,MAAM,OAAO,GAAkB,EAAE,CAAA;QAEjC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEvE,MAAM,KAAK,GAAU,EAAE,CAAA;QAEvB,IAAI,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACrD,IAAI,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAA;QAEpD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YACpB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE7E,OAAO,KAAK,CAAA;IACd,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"}
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../source/call.ts"],"names":[],"mappings":"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"}
@@ -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.entity !== undefined)
12
- contract.entity = {
13
- properties: manifest.entity.properties,
14
- required: manifest.entity.required
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
- function operation(definition) {
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
- if (definition[key] !== undefined)
32
- operation[key] = definition[key];
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":"AAmBA;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,MAAM,QAAQ,GAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAA;IAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC/B,QAAQ,CAAC,MAAM,GAAG;YAChB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU;YACtC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;SACnC,CAAA;IAEH,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACtC,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAA;QAExB,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YACtE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAA;QAEpB,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/D,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAA;IAC5D,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,UAAqB;IACtC,MAAM,SAAS,GAA4B,EAAE,CAAA;IAE7C,KAAK,MAAM,GAAG,IAAI,IAAI;QACpB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAErE,OAAO,SAAsB,CAAA;AAC/B,CAAC;AAED,sFAAsF;AACtF,MAAM,IAAI,GAAG;IACX,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,UAAU;IACV,QAAQ;IACR,UAAU;IACV,aAAa;IACb,OAAO;IACP,QAAQ;IACR,QAAQ;CACiC,CAAA"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../source/contract/component.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- export { component } from './component.ts';
1
+ export { component, restore } from './component.ts';
2
+ export { ID, SYSTEM, pack, unpack } from './system.ts';
2
3
  export { Request } from './request.ts';
3
4
  export { Reply } from './reply.ts';
@@ -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;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,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;
@@ -80,14 +80,22 @@ export class Request extends Contract {
80
80
  delete query.properties.version;
81
81
  else
82
82
  delete query.properties.projection;
83
- if (definition.type !== 'observation' || definition.scope !== 'objects') {
83
+ if (definition.scope === 'stream') {
84
+ // a page of a stream is read after the one before it, and ordered by what never moves
84
85
  delete query.properties.omit;
85
- delete query.properties.limit;
86
+ query.not = { anyOf: [{ required: ['sort', 'limit'] }, { required: ['sort', 'token'] }] };
87
+ }
88
+ else {
89
+ delete query.properties.token;
90
+ if (definition.type !== 'observation' || definition.scope !== 'entries') {
91
+ delete query.properties.omit;
92
+ delete query.properties.limit;
93
+ }
94
+ else if (query.required === undefined)
95
+ query.required = ['limit'];
96
+ else
97
+ query.required.push('limit');
86
98
  }
87
- else if (query.required === undefined)
88
- query.required = ['limit'];
89
- else
90
- query.required.push('limit');
91
99
  schema.properties.query = query;
92
100
  }
93
101
  if (required.length > 0)
@@ -125,9 +133,9 @@ function answers(definition, entity) {
125
133
  properties: entity.properties,
126
134
  ...(entity.required === undefined ? {} : { required: entity.required })
127
135
  };
128
- if (definition.scope === 'objects')
136
+ if (definition.scope === 'entries')
129
137
  return { type: 'array', items: object };
130
- return definition.scope === 'object' || definition.scope === 'changeset'
138
+ return definition.scope === 'entry' || definition.scope === 'changeset'
131
139
  ? object
132
140
  : undefined;
133
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../source/contract/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../source/contract/request.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,8 @@ export const query = {
21
21
  minItems: 1,
22
22
  items: { type: 'string', not: { const: 'id' } }
23
23
  },
24
- deleted: { type: 'boolean' }
24
+ deleted: { type: 'boolean' },
25
+ token: { type: 'string', minLength: 1 }
25
26
  },
26
27
  additionalProperties: false
27
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../source/contract/schemas.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,KAAK,GAAe;IAC/B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtB,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACjF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;QACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;QACrC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;QACtC,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,+BAA+B,EAAE;SACpE;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;SAChD;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC7B;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAe;IAC/B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;QAC1D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC5B;IACD,QAAQ,EAAE,CAAC,MAAM,CAAC;CACnB,CAAA"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../source/contract/schemas.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,KAAK,GAAe;IAC/B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtB,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACjF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;QACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;QACrC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;QACtC,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,+BAA+B,EAAE;SACpE;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;SAChD;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;KACxC;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAe;IAC/B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;QAC1D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC5B;IACD,QAAQ,EAAE,CAAC,MAAM,CAAC;CACnB,CAAA"}
@@ -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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"}
@@ -17,6 +17,8 @@ export declare const codes: {
17
17
  Duplicate: number;
18
18
  /** this call has been made, and what it changed is changed */
19
19
  DuplicateCall: number;
20
+ /** a stream token names a point of the storage's history it no longer holds */
21
+ StateHistory: number;
20
22
  Communication: number;
21
23
  Transmission: number;
22
24
  Endpoint: number;
@@ -86,6 +88,7 @@ export declare const StateConcurrencyException: Derived;
86
88
  export declare const StateInitializationException: Derived;
87
89
  export declare const DuplicateException: Derived;
88
90
  export declare const DuplicateCallException: Derived;
91
+ export declare const StateHistoryException: Derived;
89
92
  export declare const CommunicationException: Derived;
90
93
  export declare const TransmissionException: Derived;
91
94
  export declare const EndpointException: Derived;
@@ -17,6 +17,8 @@ export const codes = {
17
17
  Duplicate: 306,
18
18
  /** this call has been made, and what it changed is changed */
19
19
  DuplicateCall: 307,
20
+ /** a stream token names a point of the storage's history it no longer holds */
21
+ StateHistory: 308,
20
22
  Communication: 400,
21
23
  Transmission: 401,
22
24
  Endpoint: 402,
@@ -126,6 +128,7 @@ export const StateConcurrencyException = derive('StateConcurrency');
126
128
  export const StateInitializationException = derive('StateInitialization');
127
129
  export const DuplicateException = derive('Duplicate');
128
130
  export const DuplicateCallException = derive('DuplicateCall');
131
+ export const StateHistoryException = derive('StateHistory');
129
132
  export const CommunicationException = derive('Communication');
130
133
  export const TransmissionException = derive('Transmission');
131
134
  export const EndpointException = derive('Endpoint');
@@ -170,6 +173,8 @@ const OUTCOME = {
170
173
  Duplicate: 'permanent',
171
174
  // a call that has been made stays made: another attempt is refused by the same record
172
175
  DuplicateCall: 'permanent',
176
+ // history a storage has let go of does not come back
177
+ StateHistory: 'permanent',
173
178
  Communication: 'transient',
174
179
  // nothing is listening on that queue yet — a deployment in progress, most of the time
175
180
  Transmission: 'transient',
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../source/exceptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../source/exceptions.ts"],"names":[],"mappings":"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"}
@@ -30,9 +30,11 @@ export * as deliveries from './deliveries.ts';
30
30
  export * as entities from './entities/index.ts';
31
31
  export * as halting from './halting.ts';
32
32
  export * as exceptions from './exceptions.ts';
33
+ export * as parts from './parts.ts';
33
34
  export * as trail from './trail.ts';
34
35
  export * as contract from './contract/index.ts';
35
36
  export type { Exception } from './exceptions.ts';
37
+ export type { Part } from './parts.ts';
36
38
  export type { Invocable } from './component.ts';
37
39
  export type { Explicable } from './remote.ts';
38
40
  export type { Scoped, Store } from './operation.ts';
@@ -30,6 +30,7 @@ export * as deliveries from './deliveries.js';
30
30
  export * as entities from './entities/index.js';
31
31
  export * as halting from './halting.js';
32
32
  export * as exceptions from './exceptions.js';
33
+ export * as parts from './parts.js';
33
34
  export * as trail from './trail.js';
34
35
  export * as contract from './contract/index.js';
35
36
  //# sourceMappingURL=index.js.map
@@ -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,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"}
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,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA"}
@@ -1,6 +1,7 @@
1
- import { Readable } from 'node:stream';
1
+ import { Readable, Transform, pipeline } from 'node:stream';
2
2
  import { Connector } from './connector.js';
3
3
  import { codes, SystemException, RequestContractException } from './exceptions.js';
4
+ import * as parts from './parts.js';
4
5
  import { environment } from '@toa.io/generic';
5
6
  export class Operation extends Connector {
6
7
  scope;
@@ -144,30 +145,62 @@ export class Operation extends Connector {
144
145
  /**
145
146
  * What a caller receives of the output it asked for: each object of it keeps the properties the
146
147
  * request named, in the order the object holds them, and an empty list leaves no output at all.
147
- * A system property is one of them: a caller that reads `VERSION` asks for it. A stream, an error,
148
- * an exception and a value that is not an object are answered as they are.
148
+ * A system property is one of them: a caller that reads `VERSION` asks for it. An object is one
149
+ * the output is, one of an array it is, or one a stream it is yields. An error, an exception and
150
+ * a value that is not an object are answered as they are.
149
151
  */
150
152
  function restrict(reply, output) {
151
153
  if (output === undefined || reply === null || typeof reply !== 'object')
152
154
  return reply;
155
+ // a stream is answered bare, where anything else is answered in `output`
156
+ if (reply instanceof Readable)
157
+ return restrict({ output: reply }, output).output ?? {};
153
158
  const answered = reply.output;
154
- if (answered === undefined || answered === null || answered instanceof Readable)
159
+ if (answered === undefined || answered === null)
155
160
  return reply;
156
- if (typeof answered !== 'object') {
157
- if (output.length === 0)
158
- delete reply.output;
159
- return reply;
160
- }
161
161
  if (output.length === 0) {
162
+ // nobody reads it, and what it holds open — a cursor, a reply pipe — is let go now
163
+ if (answered instanceof Readable)
164
+ answered.destroy();
162
165
  delete reply.output;
163
166
  return reply;
164
167
  }
168
+ if (typeof answered !== 'object')
169
+ return reply;
165
170
  const allowed = new Set(output);
166
- reply.output = Array.isArray(answered)
167
- ? answered.map((entity) => entity !== null && typeof entity === 'object' ? fit(entity, allowed) : entity)
168
- : fit(answered, allowed);
171
+ // a stream of bytes is a value, as a primitive is: there is no property of it to leave out
172
+ if (answered instanceof Readable)
173
+ reply.output = answered.readableObjectMode ? restricted(answered, allowed) : answered;
174
+ else if (Array.isArray(answered))
175
+ reply.output = answered.map((value) => fitted(value, allowed));
176
+ else
177
+ reply.output = fit(answered, allowed);
169
178
  return reply;
170
179
  }
180
+ /**
181
+ * A stream of what `fitted` makes of each value. Joined by `pipeline`, so that a failure of
182
+ * either side reaches the other: the source's error is the reader's, and a reader that stops
183
+ * reading closes the source.
184
+ */
185
+ function restricted(source, allowed) {
186
+ const transform = new Transform({
187
+ objectMode: true,
188
+ transform(value, _, callback) {
189
+ callback(null, fitted(value, allowed));
190
+ }
191
+ });
192
+ return pipeline(source, transform, noop);
193
+ }
194
+ function fitted(value, allowed) {
195
+ // what a part carries of the set is its entry; a removal and a token are not the entity's
196
+ if (parts.is(value))
197
+ return 'entry' in value ? { entry: fit(value.entry, allowed) } : value;
198
+ return value !== null && typeof value === 'object' && !ArrayBuffer.isView(value)
199
+ ? fit(value, allowed)
200
+ : value;
201
+ }
202
+ // what `pipeline` reports is what each stream already carries to its reader
203
+ function noop() { }
171
204
  /** Runs per entity of a collection, hence the set and the absence of intermediates. */
172
205
  function fit(entity, allowed) {
173
206
  const output = {};
@@ -1 +1 @@
1
- {"version":3,"file":"operation.js","sourceRoot":"","sources":["../source/operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../source/operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Record } from './types/storages.ts';
2
+ /**
3
+ * What a stream yields: an entry of the collection, the id of one that left it, or — last — the token
4
+ * the next read starts from. `null` where the storage keeps no history to continue from.
5
+ */
6
+ export type Part = {
7
+ entry: Record;
8
+ } | {
9
+ removed: string;
10
+ } | {
11
+ token: string | null;
12
+ };
13
+ export declare function entry(value: Record): Part;
14
+ export declare function removed(id: string): Part;
15
+ export declare function token(value: string | null): Part;
16
+ /**
17
+ * Whether a value is a part a storage made, whichever copy of this package made it. An object an
18
+ * operation built in the shape of one is its own output, and is answered as any object is.
19
+ */
20
+ export declare function is(value: unknown): value is Part;
@@ -0,0 +1,23 @@
1
+ /** What marks a part a storage made, in every copy of this package: see `Encoded.is`. */
2
+ const KEY = Symbol.for('toa.core.part');
3
+ export function entry(value) {
4
+ return mark({ entry: value });
5
+ }
6
+ export function removed(id) {
7
+ return mark({ removed: id });
8
+ }
9
+ export function token(value) {
10
+ return mark({ token: value });
11
+ }
12
+ /**
13
+ * Whether a value is a part a storage made, whichever copy of this package made it. An object an
14
+ * operation built in the shape of one is its own output, and is answered as any object is.
15
+ */
16
+ export function is(value) {
17
+ return typeof value === 'object' && value !== null && KEY in value;
18
+ }
19
+ // not enumerable, so that encoding a part writes what it holds and nothing else
20
+ function mark(part) {
21
+ return Object.defineProperty(part, KEY, { value: true });
22
+ }
23
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../source/parts.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAQvC,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAoB;IACxC,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,EAAE,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,CAAA;AACpE,CAAC;AAED,gFAAgF;AAChF,SAAS,IAAI,CAAC,IAAU;IACtB,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1D,CAAC"}
@@ -16,10 +16,10 @@ export declare class State {
16
16
  constructor(storage: Storage, entities: Factory, outbox: Outbox | undefined, associated?: boolean);
17
17
  init(id?: string): Entity;
18
18
  fit(values: object): void;
19
- /** scope `object` */
20
- object(query: Query, mutable?: boolean): Promise<Entity | null>;
21
- /** scope `objects` */
22
- objects(query: Query, mutable?: boolean): Promise<EntitySet>;
19
+ /** scope `entry` */
20
+ entry(query: Query, mutable?: boolean): Promise<Entity | null>;
21
+ /** scope `entries` */
22
+ entries(query: Query, mutable?: boolean): Promise<EntitySet>;
23
23
  /** scope `stream` */
24
24
  stream(query: Query): Promise<Readable>;
25
25
  /** scope `changeset` */
@@ -23,8 +23,8 @@ export class State {
23
23
  fit(values) {
24
24
  this.#entities.fit(values);
25
25
  }
26
- /** scope `object` */
27
- async object(query, mutable = true) {
26
+ /** scope `entry` */
27
+ async entry(query, mutable = true) {
28
28
  const record = await this.storage.get(query);
29
29
  if (record !== null)
30
30
  return this.#entities.object(record, mutable);
@@ -39,8 +39,8 @@ export class State {
39
39
  throw new StatePreconditionException();
40
40
  return null;
41
41
  }
42
- /** scope `objects` */
43
- async objects(query, mutable = true) {
42
+ /** scope `entries` */
43
+ async entries(query, mutable = true) {
44
44
  const recordset = await this.storage.find(query);
45
45
  const ids = query.ids;
46
46
  const missing = this.#associated && ids !== undefined && recordset.length < ids.length;
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../source/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../source/state.ts"],"names":[],"mappings":"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"}
@@ -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 waits, where it waits for a set time */
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;
@@ -1,6 +1,6 @@
1
1
  import type { Request } from './request.ts';
2
2
  export type type = 'transition' | 'observation' | 'assignment' | 'computation' | 'effect' | 'unmanaged';
3
- export type scope = 'object' | 'objects' | 'changeset' | 'stream' | 'none';
3
+ export type scope = 'entry' | 'entries' | 'changeset' | 'stream' | 'none';
4
4
  /**
5
5
  * How an endpoint is called. What it resolves to is what the operation declares — `toa types`
6
6
  * writes that per operation, and these are what a hand-written context says instead.
@@ -15,6 +15,7 @@ export interface Query<Entity = any> {
15
15
  projection?: Array<string & keyof Entity>;
16
16
  version?: number;
17
17
  deleted?: boolean;
18
+ token?: string;
18
19
  }
19
20
  /** Origin of a call. Stamped by the framework; whoever reads it takes the keys it knows. */
20
21
  export type Source = {
@@ -78,14 +79,12 @@ export interface Request<Input = any, Entity = any> {
78
79
  telemetry?: string;
79
80
  }
80
81
  /**
81
- * How a caller waits for a call, given beside the request: neither is part of what the call asks,
82
- * and neither is sent with it.
82
+ * How a caller waits for an addressed call, given beside the request: neither is part of what the
83
+ * call asks, and neither is sent with it. An ordinary call waits for as long as its reply takes, and
84
+ * is refused if it names either.
83
85
  */
84
86
  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
- */
87
+ /** Milliseconds the caller waits for the reply. Without one, the context's default. */
89
88
  timeout?: number;
90
89
  /** Ends the wait when it aborts, within the timeout. */
91
90
  signal?: AbortSignal;
@@ -35,11 +35,13 @@ export interface Options {
35
35
  sample?: number;
36
36
  /** include tombstones; without it an observation answers `null` over one */
37
37
  deleted?: boolean;
38
+ /** where a stream continues from: the token the one before it ended with */
39
+ token?: string;
38
40
  }
39
41
  /** What core hands a storage, written by `Query.parse`. */
40
42
  export interface Query {
41
43
  id?: string;
42
- /** many identities at once; `State.objects` inits whichever of them are missing */
44
+ /** many identities at once; `State.entries` inits whichever of them are missing */
43
45
  ids?: string[];
44
46
  version?: number;
45
47
  criteria?: Node;
@@ -52,11 +54,15 @@ export interface Query {
52
54
  * only some scopes, and says so by failing rather than by declaring less.
53
55
  */
54
56
  export interface Storage extends Connector {
55
- /** scope `object` */
57
+ /** scope `entry` */
56
58
  get(query: Query): Promise<Record | null>;
57
- /** scope `objects` */
59
+ /** scope `entries` */
58
60
  find(query: Query): Promise<Record[]>;
59
- /** scope `stream` */
61
+ /**
62
+ * scope `stream`: the parts of the collection the query selects, or of what changed in it since
63
+ * `options.token` — see `parts.ts`. The last part is the token; a stream that ends without it
64
+ * was cut.
65
+ */
60
66
  stream(query?: Query): Promise<Readable>;
61
67
  /**
62
68
  * A transition's commit. `false` is a lost compare-and-swap, not an error. Where `row` is