@toa.io/extensions.exposition 1.0.0-alpha.323 → 1.0.0-alpha.325

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 +3 -3
  2. package/transpiled/MCP/Server.d.ts +8 -1
  3. package/transpiled/MCP/Server.js +14 -1
  4. package/transpiled/MCP/Server.js.map +1 -1
  5. package/transpiled/MCP/discover.d.ts +2 -1
  6. package/transpiled/MCP/discover.js +4 -1
  7. package/transpiled/MCP/discover.js.map +1 -1
  8. package/transpiled/MCP/manifest.d.ts +40 -0
  9. package/transpiled/MCP/manifest.js +163 -0
  10. package/transpiled/MCP/manifest.js.map +1 -0
  11. package/transpiled/directives/realtime/Realtime.d.ts +10 -3
  12. package/transpiled/directives/realtime/Realtime.js +20 -7
  13. package/transpiled/directives/realtime/Realtime.js.map +1 -1
  14. package/transpiled/realtime/Destination.d.ts +1 -1
  15. package/transpiled/realtime/Destination.js +11 -5
  16. package/transpiled/realtime/Destination.js.map +1 -1
  17. package/transpiled/service.js +3 -0
  18. package/transpiled/service.js.map +1 -1
  19. package/ui/dist/_app/immutable/chunks/{B030YAfG.js → BTRhCPhB.js} +2 -2
  20. package/ui/dist/_app/immutable/chunks/{yO7b3L9r.js → BqErKWVG.js} +1 -1
  21. package/ui/dist/_app/immutable/chunks/ChfMjb_F.js +1 -0
  22. package/ui/dist/_app/immutable/chunks/{eZLMu7W8.js → DuSH5obH.js} +1 -1
  23. package/ui/dist/_app/immutable/entry/{app.DvySiTzU.js → app.BgSwzcJI.js} +2 -2
  24. package/ui/dist/_app/immutable/entry/start.gCSokWJN.js +1 -0
  25. package/ui/dist/_app/immutable/nodes/{0.Dcp6rUYD.js → 0.VduHvk8Z.js} +1 -1
  26. package/ui/dist/_app/immutable/nodes/{1.8GFXbj57.js → 1.CVKwY6O3.js} +1 -1
  27. package/ui/dist/_app/immutable/nodes/{2.DZHUfnzb.js → 2.B-P-d6-E.js} +1 -1
  28. package/ui/dist/_app/immutable/nodes/{3.CoU0PAkI.js → 3.CUIC3nDR.js} +1 -1
  29. package/ui/dist/_app/immutable/nodes/{4.ahCiIl9m.js → 4.BtAsqex7.js} +1 -1
  30. package/ui/dist/_app/immutable/nodes/{5.DfxG1FRY.js → 5.DWY_aPT1.js} +1 -1
  31. package/ui/dist/_app/immutable/nodes/{6.Ca65ePdy.js → 6.CcgxAp8Z.js} +1 -1
  32. package/ui/dist/_app/version.json +1 -1
  33. package/ui/dist/index.html +10 -10
  34. package/ui/dist/_app/immutable/chunks/BSuoKOIV.js +0 -1
  35. package/ui/dist/_app/immutable/entry/start.CtniLql5.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/extensions.exposition",
3
- "version": "1.0.0-alpha.323",
3
+ "version": "1.0.0-alpha.325",
4
4
  "type": "module",
5
5
  "description": "Toa Exposition",
6
6
  "author": "temich <tema.gurtovoy@gmail.com>",
@@ -29,7 +29,7 @@
29
29
  ],
30
30
  "dependencies": {
31
31
  "@toa.io/core": "1.0.0-alpha.323",
32
- "@toa.io/definitions": "1.0.0-alpha.323",
32
+ "@toa.io/definitions": "1.0.0-alpha.325",
33
33
  "@toa.io/generic": "1.0.0-alpha.311",
34
34
  "@toa.io/pointer": "1.0.0-alpha.311",
35
35
  "@toa.io/schemas": "1.0.0-alpha.311",
@@ -74,5 +74,5 @@
74
74
  "lru-cache": "11.5.3",
75
75
  "paseto": "4.0.1"
76
76
  },
77
- "gitHead": "1d31b234602c9eda959d80bdca79b983ebf541ea"
77
+ "gitHead": "95bc03e65c65f02d536da6ed027cf4f78f5cec74"
78
78
  }
@@ -1,4 +1,5 @@
1
1
  import * as http from '../HTTP/index.ts';
2
+ import { Manifest } from './manifest.ts';
2
3
  import type { Tree } from '../RTD/index.ts';
3
4
  import type { MCPAnnotation as MCP } from '@toa.io/definitions/extensions.exposition';
4
5
  /**
@@ -12,8 +13,14 @@ import type { MCPAnnotation as MCP } from '@toa.io/definitions/extensions.exposi
12
13
  export declare class Server {
13
14
  private readonly options;
14
15
  private readonly tree;
15
- private readonly discovery;
16
16
  private readonly origins;
17
+ /** Built again when the icons of the manifest change; a request reads what it is then. */
18
+ private discovery;
19
+ /**
20
+ * The reader of the application's web manifest, which the gateway connects: none without
21
+ * one named.
22
+ */
23
+ readonly manifest: Manifest | null;
17
24
  /** The hosts this is served at the root of, lowercased as a request's host is. */
18
25
  private readonly roots;
19
26
  constructor(options: MCP, tree: Tree);
@@ -2,6 +2,7 @@ import { console } from 'openspan';
2
2
  import { BRANCH_TTL } from '@toa.io/definitions/extensions.exposition';
3
3
  import * as http from '../HTTP/index.js';
4
4
  import { discovery } from './discover.js';
5
+ import { Manifest } from './manifest.js';
5
6
  import { call, list } from './tools.js';
6
7
  import { HEADER_MISMATCH, INVALID_PARAMS, INVALID_REQUEST, METHOD_NOT_FOUND, PARSE, UNSUPPORTED_VERSION, failure, response } from './errors.js';
7
8
  import { CLIENT_CAPABILITIES, JSONRPC, LEGACY, MODERN, PROTOCOL_VERSION, SERVER_INFO, VERSIONS } from './types.js';
@@ -16,8 +17,14 @@ import { CLIENT_CAPABILITIES, JSONRPC, LEGACY, MODERN, PROTOCOL_VERSION, SERVER_
16
17
  export class Server {
17
18
  options;
18
19
  tree;
19
- discovery;
20
20
  origins;
21
+ /** Built again when the icons of the manifest change; a request reads what it is then. */
22
+ discovery;
23
+ /**
24
+ * The reader of the application's web manifest, which the gateway connects: none without
25
+ * one named.
26
+ */
27
+ manifest;
21
28
  /** The hosts this is served at the root of, lowercased as a request's host is. */
22
29
  roots;
23
30
  constructor(options, tree) {
@@ -25,6 +32,12 @@ export class Server {
25
32
  this.tree = tree;
26
33
  this.discovery = discovery(options);
27
34
  this.origins = new Set(options.origins ?? []);
35
+ this.manifest =
36
+ options.manifest === undefined
37
+ ? null
38
+ : new Manifest(options.manifest, (icons) => {
39
+ this.discovery = discovery(options, icons);
40
+ });
28
41
  this.roots = new Set(Object.values(options.hosts ?? {}).map((host) => host.toLowerCase()));
29
42
  }
30
43
  /** Whether the host is one this endpoint is the root of. */
@@ -1 +1 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../source/MCP/Server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../source/MCP/Server.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Icon } from './manifest.ts';
1
2
  import type { MCPAnnotation as MCP } from '@toa.io/definitions/extensions.exposition';
2
3
  /**
3
4
  * What a client is told before it calls anything: the revisions served, what is served, and
@@ -10,4 +11,4 @@ export interface Discovery {
10
11
  /** `initialize`, in the shape a client of an earlier revision reads. */
11
12
  legacy: (offered: string | undefined) => object;
12
13
  }
13
- export declare function discovery(options: MCP): Discovery;
14
+ export declare function discovery(options: MCP, icons?: Icon[]): Discovery;
@@ -1,7 +1,10 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { LEGACY, MODERN, SERVER_INFO, VERSIONS } from './types.js';
3
- export function discovery(options) {
3
+ export function discovery(options, icons = []) {
4
4
  const info = { name: options.name, version: VERSION };
5
+ // the application's own, where its manifest has been read and lists any
6
+ if (icons.length > 0)
7
+ info.icons = icons;
5
8
  // `listChanged` is a stream a client holds open, and this endpoint holds none
6
9
  const capabilities = { tools: {} };
7
10
  const modern = {
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../source/MCP/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAgBlE,MAAM,UAAU,SAAS,CAAC,OAAY;IACpC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAErD,8EAA8E;IAC9E,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAElC,MAAM,MAAM,GAA4B;QACtC,iBAAiB,EAAE,QAAQ;QAC3B,YAAY;QACZ,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;KAC/B,CAAA;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAElF,SAAS,MAAM,CAAC,OAA2B;QACzC,MAAM,KAAK,GAA4B;YACrC,qFAAqF;YACrF,eAAe,EAAE,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAC/E,YAAY;YACZ,UAAU,EAAE,IAAI;SACjB,CAAA;QAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QAEjF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AAC3B,CAAC;AAED,uFAAuF;AACvF,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAChC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACrE,CAAC,OAAO,CAAA"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../source/MCP/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAiBlE,MAAM,UAAU,SAAS,CAAC,OAAY,EAAE,KAAK,GAAW,EAAE;IACxD,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAE9E,wEAAwE;IACxE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAExC,8EAA8E;IAC9E,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAElC,MAAM,MAAM,GAA4B;QACtC,iBAAiB,EAAE,QAAQ;QAC3B,YAAY;QACZ,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;KAC/B,CAAA;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAElF,SAAS,MAAM,CAAC,OAA2B;QACzC,MAAM,KAAK,GAA4B;YACrC,qFAAqF;YACrF,eAAe,EAAE,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAC/E,YAAY;YACZ,UAAU,EAAE,IAAI;SACjB,CAAA;QAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QAEjF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AAC3B,CAAC;AAED,uFAAuF;AACvF,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAChC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACrE,CAAC,OAAO,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { Connector } from '@toa.io/core';
2
+ /** An icon a client may render, as the revision describes one. */
3
+ export interface Icon {
4
+ src: string;
5
+ mimeType?: string;
6
+ sizes?: string[];
7
+ }
8
+ /**
9
+ * The icons of an application's web manifest, read in the background. A request never waits
10
+ * for a read: what it is answered with is what the last read that did not fail gave, and none
11
+ * before one has.
12
+ *
13
+ * Every replica reads for itself — a document this small is not worth sharing state for — and
14
+ * reads again on the cycle a client holds `server/discover` for, so what a client was shown is
15
+ * at most two cycles old. HTTP caching is not honoured: the cycle replaces it.
16
+ */
17
+ export declare class Manifest extends Connector {
18
+ private readonly url;
19
+ private readonly shown;
20
+ private readonly fetch;
21
+ /** What was last shown, to tell a change from a read that found the same. */
22
+ private current;
23
+ /** Consecutive reads that failed, which is what the retry backs off by. */
24
+ private failures;
25
+ private timer;
26
+ private aborted;
27
+ constructor(url: string, shown: (icons: Icon[]) => void, fetch?: typeof globalThis.fetch);
28
+ protected open(): void;
29
+ protected close(): void;
30
+ private read;
31
+ private get;
32
+ private succeeded;
33
+ private failed;
34
+ private schedule;
35
+ }
36
+ /**
37
+ * What a client may render of a manifest's icons with no further trust: one of the manifest's
38
+ * own origin, meant to be shown as it is, and an image where it says what it is.
39
+ */
40
+ export declare function icons(document: unknown, url: string): Icon[];
@@ -0,0 +1,163 @@
1
+ import { console } from 'openspan';
2
+ import { Connector } from '@toa.io/core';
3
+ /**
4
+ * The icons of an application's web manifest, read in the background. A request never waits
5
+ * for a read: what it is answered with is what the last read that did not fail gave, and none
6
+ * before one has.
7
+ *
8
+ * Every replica reads for itself — a document this small is not worth sharing state for — and
9
+ * reads again on the cycle a client holds `server/discover` for, so what a client was shown is
10
+ * at most two cycles old. HTTP caching is not honoured: the cycle replaces it.
11
+ */
12
+ export class Manifest extends Connector {
13
+ url;
14
+ shown;
15
+ fetch;
16
+ /** What was last shown, to tell a change from a read that found the same. */
17
+ current = null;
18
+ /** Consecutive reads that failed, which is what the retry backs off by. */
19
+ failures = 0;
20
+ timer = null;
21
+ aborted = new AbortController();
22
+ constructor(url, shown, fetch = globalThis.fetch) {
23
+ super();
24
+ this.url = url;
25
+ this.shown = shown;
26
+ this.fetch = fetch;
27
+ }
28
+ open() {
29
+ this.aborted = new AbortController();
30
+ // the endpoint answers without icons meanwhile: a site of another origin is not one to wait for
31
+ void this.read();
32
+ }
33
+ close() {
34
+ if (this.timer !== null)
35
+ clearTimeout(this.timer);
36
+ this.timer = null;
37
+ this.aborted.abort();
38
+ }
39
+ async read() {
40
+ const document = await this.get();
41
+ if (this.aborted.signal.aborted)
42
+ return;
43
+ if (document instanceof Error)
44
+ this.failed(document);
45
+ else
46
+ this.succeeded(icons(document, this.url));
47
+ this.schedule();
48
+ }
49
+ async get() {
50
+ try {
51
+ const response = await this.fetch(this.url, {
52
+ // a redirect leaves the address the annotation names
53
+ redirect: 'error',
54
+ signal: AbortSignal.any([this.aborted.signal, AbortSignal.timeout(TIMEOUT)]),
55
+ headers: { accept: 'application/manifest+json, application/json' }
56
+ });
57
+ if (!response.ok)
58
+ return new Error(`The manifest is answered with ${response.status}`);
59
+ return JSON.parse(await capped(response));
60
+ }
61
+ catch (error) {
62
+ return error instanceof Error ? error : new Error(String(error));
63
+ }
64
+ }
65
+ succeeded(found) {
66
+ if (this.failures > 0)
67
+ console.info('The web manifest is read again', { url: this.url });
68
+ this.failures = 0;
69
+ const value = JSON.stringify(found);
70
+ if (value === this.current)
71
+ return;
72
+ if (found.length === 0)
73
+ console.warn('The web manifest lists no icon to show', { url: this.url });
74
+ this.current = value;
75
+ this.shown(found);
76
+ }
77
+ failed(error) {
78
+ this.failures++;
79
+ const attributes = { url: this.url, message: error.message };
80
+ // a site that is down is said once, and not every time it is still down
81
+ if (this.failures === 1)
82
+ console.warn('The web manifest is not read', attributes);
83
+ else
84
+ console.debug('The web manifest is still not read', attributes);
85
+ }
86
+ schedule() {
87
+ // until a read succeeds, sooner; the icons of the last that did are kept meanwhile
88
+ const delay = this.failures === 0 || this.current !== null
89
+ ? CYCLE
90
+ : Math.min(RETRY * 2 ** (this.failures - 1), CYCLE);
91
+ this.timer = setTimeout(() => void this.read(), delay);
92
+ this.timer.unref?.();
93
+ }
94
+ }
95
+ /**
96
+ * What a client may render of a manifest's icons with no further trust: one of the manifest's
97
+ * own origin, meant to be shown as it is, and an image where it says what it is.
98
+ */
99
+ export function icons(document, url) {
100
+ const listed = document?.icons;
101
+ if (!Array.isArray(listed))
102
+ return [];
103
+ const origin = new URL(url).origin;
104
+ const found = [];
105
+ for (const item of listed) {
106
+ if (typeof item !== 'object' || item === null)
107
+ continue;
108
+ const { src, type, sizes, purpose } = item;
109
+ if (typeof src !== 'string' || src === '')
110
+ continue;
111
+ const resolved = URL.parse(src, url);
112
+ if (resolved === null || resolved.origin !== origin)
113
+ continue;
114
+ if (purpose !== undefined && !(typeof purpose === 'string' && words(purpose).includes('any')))
115
+ continue;
116
+ if (type !== undefined && !(typeof type === 'string' && type.startsWith('image/')))
117
+ continue;
118
+ const icon = { src: resolved.href };
119
+ if (type !== undefined)
120
+ icon.mimeType = type;
121
+ const valid = typeof sizes === 'string' ? words(sizes).map(lower).filter(size) : [];
122
+ if (valid.length > 0)
123
+ icon.sizes = valid;
124
+ found.push(icon);
125
+ }
126
+ return found;
127
+ }
128
+ /** The body, not read past the cap: a document no manifest is this large is no manifest. */
129
+ async function capped(response) {
130
+ const reader = response.body?.getReader();
131
+ if (reader === undefined)
132
+ return '';
133
+ const chunks = [];
134
+ let length = 0;
135
+ for (;;) {
136
+ const { done, value } = await reader.read();
137
+ if (done)
138
+ break;
139
+ length += value.byteLength;
140
+ if (length > SIZE) {
141
+ await reader.cancel();
142
+ throw new Error(`The manifest is over ${SIZE} bytes`);
143
+ }
144
+ chunks.push(value);
145
+ }
146
+ return Buffer.concat(chunks).toString('utf8');
147
+ }
148
+ function words(value) {
149
+ return value.split(/\s+/).filter((word) => word !== '');
150
+ }
151
+ function lower(value) {
152
+ return value.toLowerCase();
153
+ }
154
+ function size(value) {
155
+ return value === 'any' || /^[1-9]\d*x[1-9]\d*$/.test(value);
156
+ }
157
+ /** How often the manifest is read: the time a client may hold `server/discover`. */
158
+ const CYCLE = 30 * 60_000;
159
+ /** The first retry after a read failed, doubled until it is a cycle. */
160
+ const RETRY = 60_000;
161
+ const TIMEOUT = 3_000;
162
+ const SIZE = 16 * 1024;
163
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../source/MCP/manifest.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import type { Context } from '../../HTTP/index.ts';
2
2
  import type { DirectiveFamily, Parameter } from '../../RTD/index.ts';
3
3
  import type { Output } from '../../io.ts';
4
4
  /**
5
- * `realtime:stream` answers with the stream of the key a route variable names. Who may read it is
6
- * what the route's own directives say, as for anything else it serves.
5
+ * `realtime:stream` answers with the stream of the key a route variable names, or of a literal
6
+ * key. Who may read it is what the route's own directives say, as for anything else it serves.
7
7
  */
8
8
  export declare class Realtime implements DirectiveFamily<Directive> {
9
9
  readonly name = "realtime";
@@ -12,7 +12,14 @@ export declare class Realtime implements DirectiveFamily<Directive> {
12
12
  create(name: string, value: unknown, _: unknown, route: string): Directive;
13
13
  precall(directives: Directive[], context: Context, parameters: Parameter[]): Promise<Output>;
14
14
  dispose(): void;
15
+ /** The value of the route variable, which is never a literal: a literal is served by name. */
16
+ private variable;
15
17
  }
16
- export interface Directive {
18
+ export type Directive = Variable | Literal;
19
+ interface Variable {
17
20
  variable: string;
18
21
  }
22
+ interface Literal {
23
+ key: string;
24
+ }
25
+ export {};
@@ -1,9 +1,10 @@
1
+ import { literal } from '@toa.io/definitions/extensions.exposition/realtime';
1
2
  import { NotFound } from '../../HTTP/index.js';
2
3
  import { configured } from '../../realtime/redis.js';
3
4
  import { Hub } from './Hub.js';
4
5
  /**
5
- * `realtime:stream` answers with the stream of the key a route variable names. Who may read it is
6
- * what the route's own directives say, as for anything else it serves.
6
+ * `realtime:stream` answers with the stream of the key a route variable names, or of a literal
7
+ * key. Who may read it is what the route's own directives say, as for anything else it serves.
7
8
  */
8
9
  export class Realtime {
9
10
  name = 'realtime';
@@ -14,16 +15,19 @@ export class Realtime {
14
15
  create(name, value, _, route) {
15
16
  if (name !== 'stream')
16
17
  throw new Error(`Directive 'realtime:${name}' is not implemented`);
18
+ if (typeof value === 'string' && literal(value)) {
19
+ if (value.length === 1)
20
+ throw new Error(`'realtime:stream' literal '${value}' names no key, at '${route}'`);
21
+ return { key: value };
22
+ }
17
23
  if (typeof value !== 'string' || !route.includes(`:${value}`))
18
- throw new Error(`'realtime:stream' names the route variable that is the key, and '${String(value)}' ` +
19
- `is not one of '${route}'`);
24
+ throw new Error(`'realtime:stream' names the route variable that is the key, or a literal key, and ` +
25
+ `'${String(value)}' is not one of '${route}'`);
20
26
  return { variable: value };
21
27
  }
22
28
  async precall(directives, context, parameters) {
23
29
  const [directive] = directives;
24
- const key = parameters.find(({ name }) => name === directive.variable)?.value;
25
- if (key === undefined)
26
- throw new Error(`Route variable '${directive.variable}' is not found`);
30
+ const key = 'key' in directive ? directive.key : this.variable(directive, parameters);
27
31
  // nothing in the context declares realtime, so nothing is kept to be read
28
32
  if (!configured())
29
33
  throw new NotFound('Realtime streams are not configured');
@@ -33,5 +37,14 @@ export class Realtime {
33
37
  dispose() {
34
38
  this.hub.close();
35
39
  }
40
+ /** The value of the route variable, which is never a literal: a literal is served by name. */
41
+ variable({ variable }, parameters) {
42
+ const key = parameters.find(({ name }) => name === variable)?.value;
43
+ if (key === undefined)
44
+ throw new Error(`Route variable '${variable}' is not found`);
45
+ if (literal(key))
46
+ throw new NotFound();
47
+ return key;
48
+ }
36
49
  }
37
50
  //# sourceMappingURL=Realtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Realtime.js","sourceRoot":"","sources":["../../../source/directives/realtime/Realtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAK9B;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACH,IAAI,GAAG,UAAU,CAAA;IACjB,SAAS,GAAG,KAAK,CAAA;IAEhB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IAEhC,uDAAuD;IACvD,sCAAsC;IAC/B,MAAM,CAAC,IAAY,EAAE,KAAc,EAAE,CAAU,EAAE,KAAa;QACnE,IAAI,IAAI,KAAK,QAAQ;YACnB,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,sBAAsB,CAAC,CAAA;QAEpE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,oEAAoE,MAAM,CAAC,KAAK,CAAC,IAAI;gBACnF,kBAAkB,KAAK,GAAG,CAC7B,CAAA;QAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,UAAuB,EACvB,OAAgB,EAChB,UAAuB;QAEvB,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAA;QAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;QAE7E,IAAI,GAAG,KAAK,SAAS;YACnB,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,CAAC,QAAQ,gBAAgB,CAAC,CAAA;QAExE,0EAA0E;QAC1E,IAAI,CAAC,UAAU,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,qCAAqC,CAAC,CAAA;QAE5E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAA;QAEhE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAA;IAClD,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"Realtime.js","sourceRoot":"","sources":["../../../source/directives/realtime/Realtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oDAAoD,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAK9B;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACH,IAAI,GAAG,UAAU,CAAA;IACjB,SAAS,GAAG,KAAK,CAAA;IAEhB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IAEhC,uDAAuD;IACvD,sCAAsC;IAC/B,MAAM,CAAC,IAAY,EAAE,KAAc,EAAE,CAAU,EAAE,KAAa;QACnE,IAAI,IAAI,KAAK,QAAQ;YACnB,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,sBAAsB,CAAC,CAAA;QAEpE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,uBAAuB,KAAK,GAAG,CAAC,CAAA;YAErF,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;QACvB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,oFAAoF;gBAClF,IAAI,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,GAAG,CAChD,CAAA;QAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,UAAuB,EACvB,OAAgB,EAChB,UAAuB;QAEvB,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAErF,0EAA0E;QAC1E,IAAI,CAAC,UAAU,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,qCAAqC,CAAC,CAAA;QAE5E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAA;QAEhE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAA;IAClD,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;IAED,8FAA8F;IACtF,QAAQ,CAAC,EAAE,QAAQ,EAAY,EAAE,UAAuB;QAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK,CAAA;QAEnE,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,gBAAgB,CAAC,CAAA;QAEnF,IAAI,OAAO,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,EAAE,CAAA;QAEtC,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { Connector, type Locator } from '@toa.io/core';
2
- import type { Route } from '@toa.io/definitions/extensions.exposition/realtime';
2
+ import { type Route } from '@toa.io/definitions/extensions.exposition/realtime';
3
3
  import type { outbox } from '@toa.io/core/types';
4
4
  /**
5
5
  * Where a component's routed events go: the stream of each of their keys, and its channel. Each
@@ -2,6 +2,7 @@ import { console } from 'openspan';
2
2
  import { Connector } from '@toa.io/core';
3
3
  import { APPEND, MAXLEN, Shards, shard } from './redis.js';
4
4
  import * as measure from './measurements.js';
5
+ import { literal } from '@toa.io/definitions/extensions.exposition/realtime';
5
6
  /**
6
7
  * Where a component's routed events go: the stream of each of their keys, and its channel. Each
7
8
  * event of a row is rendered by the component's own condition and payload, fitted to what its
@@ -72,7 +73,7 @@ export class Destination extends Connector {
72
73
  if (raised === null)
73
74
  return null;
74
75
  const payload = raised.payload;
75
- const keys = keysOf(payload, route.properties);
76
+ const keys = keysOf(payload, route);
76
77
  if (keys.length === 0)
77
78
  return null;
78
79
  return {
@@ -103,16 +104,21 @@ function routed(value) {
103
104
  Array.isArray(keys) &&
104
105
  keys.every((key) => typeof key === 'string'));
105
106
  }
106
- /** The values of the key properties: each a key, or a list of them. */
107
- function keysOf(payload, properties) {
107
+ /**
108
+ * The values of the key properties, each a key or a list of them, and the literals. A value that
109
+ * reads as a literal is not a key: whoever writes it does not reach a literal's stream.
110
+ */
111
+ function keysOf(payload, route) {
108
112
  const keys = new Set();
109
- for (const property of properties) {
113
+ for (const property of route.properties) {
110
114
  const value = payload?.[property];
111
115
  const values = Array.isArray(value) ? value : [value];
112
116
  for (const key of values)
113
- if (typeof key === 'string')
117
+ if (typeof key === 'string' && !literal(key))
114
118
  keys.add(key);
115
119
  }
120
+ for (const key of route.literals)
121
+ keys.add(key);
116
122
  return [...keys];
117
123
  }
118
124
  /** What the route names of the payload, and nothing else. */
@@ -1 +1 @@
1
- {"version":3,"file":"Destination.js","sourceRoot":"","sources":["../../source/realtime/Destination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Destination.js","sourceRoot":"","sources":["../../source/realtime/Destination.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,9 @@ export async function service(host) {
43
43
  const gateway = new Gateway(broadcast, tree, interception, directives, dispatcher, mcp);
44
44
  gateway.depends(remotes);
45
45
  gateway.depends(composition);
46
+ // read in the background, and stopped with the gateway
47
+ if (mcp?.manifest != null)
48
+ gateway.depends(mcp.manifest);
46
49
  // what the directives meter through; one atom per process, connected once
47
50
  gateway.depends(host.atom(ATOM_GROUP));
48
51
  server.attach(gateway.process.bind(gateway));
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../source/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../source/service.ts"],"names":[],"mappings":"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"}