@stocksharp/diagram 0.2.2 → 0.3.0

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 (68) hide show
  1. package/README.md +12 -0
  2. package/dist/esm/canvas-renderer.js +28 -22
  3. package/dist/esm/canvas-renderer.js.map +1 -1
  4. package/dist/esm/core/action-registry.js +24 -0
  5. package/dist/esm/core/action-registry.js.map +1 -1
  6. package/dist/esm/core/document.js +85 -28
  7. package/dist/esm/core/document.js.map +1 -1
  8. package/dist/esm/core/json.js +17 -0
  9. package/dist/esm/core/json.js.map +1 -0
  10. package/dist/esm/core/model.js +4 -0
  11. package/dist/esm/core/model.js.map +1 -1
  12. package/dist/esm/core/state.js +16 -2
  13. package/dist/esm/core/state.js.map +1 -1
  14. package/dist/esm/diagram/catalog.js +17 -5
  15. package/dist/esm/diagram/catalog.js.map +1 -1
  16. package/dist/esm/diagram/event-emitter.js +10 -0
  17. package/dist/esm/diagram/event-emitter.js.map +1 -1
  18. package/dist/esm/diagram/stocksharp-diagram.js +69 -57
  19. package/dist/esm/diagram/stocksharp-diagram.js.map +1 -1
  20. package/dist/esm/diagram/types.js +2 -1
  21. package/dist/esm/diagram/types.js.map +1 -1
  22. package/dist/esm/embed.js +129 -39
  23. package/dist/esm/embed.js.map +1 -1
  24. package/dist/esm/index.js +1 -1
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/ssdiagram.js +314 -147
  27. package/dist/ssdiagram.js.map +4 -4
  28. package/dist/types/canvas-renderer.d.ts +3 -5
  29. package/dist/types/canvas-renderer.d.ts.map +1 -1
  30. package/dist/types/core/action-registry.d.ts +7 -0
  31. package/dist/types/core/action-registry.d.ts.map +1 -1
  32. package/dist/types/core/document.d.ts.map +1 -1
  33. package/dist/types/core/json.d.ts +11 -0
  34. package/dist/types/core/json.d.ts.map +1 -0
  35. package/dist/types/core/model.d.ts +10 -1
  36. package/dist/types/core/model.d.ts.map +1 -1
  37. package/dist/types/core/state.d.ts +24 -1
  38. package/dist/types/core/state.d.ts.map +1 -1
  39. package/dist/types/diagram/api.d.ts +13 -6
  40. package/dist/types/diagram/api.d.ts.map +1 -1
  41. package/dist/types/diagram/catalog.d.ts +2 -1
  42. package/dist/types/diagram/catalog.d.ts.map +1 -1
  43. package/dist/types/diagram/event-emitter.d.ts +6 -1
  44. package/dist/types/diagram/event-emitter.d.ts.map +1 -1
  45. package/dist/types/diagram/palette.d.ts +1 -1
  46. package/dist/types/diagram/palette.d.ts.map +1 -1
  47. package/dist/types/diagram/stocksharp-diagram.d.ts +32 -21
  48. package/dist/types/diagram/stocksharp-diagram.d.ts.map +1 -1
  49. package/dist/types/diagram/types.d.ts +4 -4
  50. package/dist/types/diagram/types.d.ts.map +1 -1
  51. package/dist/types/embed.d.ts.map +1 -1
  52. package/dist/types/index.d.ts +3 -3
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/package.json +2 -2
  55. package/src/canvas-renderer.ts +26 -24
  56. package/src/core/action-registry.ts +25 -0
  57. package/src/core/document.ts +91 -31
  58. package/src/core/json.ts +16 -0
  59. package/src/core/model.ts +14 -1
  60. package/src/core/state.ts +41 -3
  61. package/src/diagram/api.ts +14 -5
  62. package/src/diagram/catalog.ts +18 -6
  63. package/src/diagram/event-emitter.ts +12 -1
  64. package/src/diagram/palette.ts +1 -1
  65. package/src/diagram/stocksharp-diagram.ts +91 -75
  66. package/src/diagram/types.ts +6 -5
  67. package/src/embed.ts +149 -40
  68. package/src/index.ts +4 -0
@@ -12,6 +12,30 @@ export class DiagramActionRegistry {
12
12
  this.actions.delete(action.id);
13
13
  };
14
14
  }
15
+ /**
16
+ * Registers one action per id from a table keyed by TId, in key order.
17
+ * Because the table is a total Record, adding a member to TId without adding
18
+ * its action stops compiling instead of producing a command that silently
19
+ * does nothing.
20
+ */
21
+ registerAll(actions) {
22
+ // Object.keys is typed string[] because a value can carry keys beyond the
23
+ // ones its type names. This parameter is a total Record over TId, so its
24
+ // keys are exactly TId.
25
+ const ids = Object.keys(actions);
26
+ // Delegating rather than spreading: a spread would copy own fields and
27
+ // drop the prototype, so a class-based action would register cleanly and
28
+ // then throw on its first call.
29
+ const disposers = ids.map((id) => {
30
+ const action = actions[id];
31
+ return this.register({
32
+ id,
33
+ canExecute: (context) => action.canExecute(context),
34
+ execute: (context) => action.execute(context),
35
+ });
36
+ });
37
+ return () => disposers.forEach((dispose) => dispose());
38
+ }
15
39
  get(id) {
16
40
  return this.actions.get(id) ?? null;
17
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"action-registry.js","sourceRoot":"","sources":["../../../src/core/action-registry.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,qBAAqB;IAAlC;QACqB,YAAO,GAAG,IAAI,GAAG,EAAqC,CAAC;IAiC5E,CAAC;IA/BG,QAAQ,CAAC,MAAoC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACR,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC;IACN,CAAC;IAED,GAAG,CAAC,EAAO;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,OAAiB;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;SACtC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,UAAU,CAAC,EAAO,EAAE,OAAiB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,EAAO,EAAE,OAAiB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"action-registry.js","sourceRoot":"","sources":["../../../src/core/action-registry.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,qBAAqB;IAAlC;QACqB,YAAO,GAAG,IAAI,GAAG,EAAqC,CAAC;IA0D5E,CAAC;IAxDG,QAAQ,CAAC,MAAoC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACR,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,OAA8D;QACtE,0EAA0E;QAC1E,yEAAyE;QACzE,wBAAwB;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAU,CAAC;QAC1C,uEAAuE;QACvE,yEAAyE;QACzE,gCAAgC;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC;gBACjB,EAAE;gBACF,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;gBACnD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aAChD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,GAAG,CAAC,EAAO;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,OAAiB;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;SACtC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,UAAU,CAAC,EAAO,EAAE,OAAiB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,EAAO,EAAE,OAAiB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -1,3 +1,5 @@
1
+ import { setJsonKey } from './json.js';
2
+ import { toPortDynamicMode } from './model.js';
1
3
  import { DIAGRAM_DOCUMENT_VERSION, } from './model.js';
2
4
  export { DIAGRAM_DOCUMENT_VERSION } from './model.js';
3
5
  export class DiagramDocumentError extends Error {
@@ -8,26 +10,33 @@ export class DiagramDocumentError extends Error {
8
10
  }
9
11
  }
10
12
  export function createDiagramDocument(input = {}) {
11
- const nodes = (input.nodes ?? []).map((node, index) => normalizeNode(node, `$.nodes[${index}]`));
13
+ // DiagramDocumentInput is a structural interface, so its shape is a claim by
14
+ // the caller, not a guarantee. Elements are checked the same way parsed ones
15
+ // are, otherwise a malformed one surfaces as a TypeError naming no path.
16
+ const rawNodes = mapElements(input.nodes, '$.nodes');
17
+ const rawLinks = mapElements(input.links, '$.links');
18
+ const nodes = rawNodes.map((node, index) => normalizeNode(node, `$.nodes[${index}]`));
12
19
  const usedLinkIds = new Set();
13
- for (let index = 0; index < (input.links ?? []).length; index++) {
14
- const id = input.links?.[index].id;
15
- if (id === undefined)
20
+ for (let index = 0; index < rawLinks.length; index++) {
21
+ const raw = rawLinks[index].id;
22
+ if (raw === undefined)
16
23
  continue;
17
- requireIdentifier(id, `$.links[${index}].id`);
24
+ const id = requireIdentifier(raw, `$.links[${index}].id`);
18
25
  if (usedLinkIds.has(id)) {
19
26
  throw new DiagramDocumentError(`duplicate link id "${id}"`, `$.links[${index}].id`);
20
27
  }
21
28
  usedLinkIds.add(id);
22
29
  }
23
30
  let sequence = 1;
24
- const links = (input.links ?? []).map((link, index) => {
31
+ const links = rawLinks.map((link, index) => {
25
32
  let id = link.id;
26
33
  if (id === undefined) {
34
+ let generated;
27
35
  do
28
- id = `link_${sequence++}`;
29
- while (usedLinkIds.has(id));
30
- usedLinkIds.add(id);
36
+ generated = `link_${sequence++}`;
37
+ while (usedLinkIds.has(generated));
38
+ usedLinkIds.add(generated);
39
+ id = generated;
31
40
  }
32
41
  return normalizeLink({ ...link, id }, `$.links[${index}]`);
33
42
  });
@@ -57,7 +66,7 @@ export function parseDiagramDocument(source) {
57
66
  throw new DiagramDocumentError(reason);
58
67
  }
59
68
  }
60
- const root = requireObject(value, '$');
69
+ const root = requireStructure(value, '$');
61
70
  const version = requireNumber(root.version, '$.version');
62
71
  if (version !== DIAGRAM_DOCUMENT_VERSION) {
63
72
  throw new DiagramDocumentError(`unsupported document version ${version}`, '$.version');
@@ -71,7 +80,8 @@ export function parseDiagramDocument(source) {
71
80
  validateDocument(document);
72
81
  return document;
73
82
  }
74
- function normalizeNode(input, path) {
83
+ function normalizeNode(value, path) {
84
+ const input = requireStructure(value, path);
75
85
  const id = requireIdentifier(input.id, `${path}.id`);
76
86
  return {
77
87
  id,
@@ -86,28 +96,34 @@ function normalizeNode(input, path) {
86
96
  icon: requireString(input.icon ?? '', `${path}.icon`),
87
97
  message: requireString(input.message ?? '', `${path}.message`),
88
98
  openAction: requireString(input.openAction ?? '', `${path}.openAction`),
89
- inPorts: (input.inPorts ?? []).map((port, index) => normalizePort(port, `${path}.inPorts[${index}]`)),
90
- outPorts: (input.outPorts ?? []).map((port, index) => normalizePort(port, `${path}.outPorts[${index}]`)),
91
- parameters: (input.parameters ?? []).map((parameter, index) => normalizeParameter(parameter, `${path}.parameters[${index}]`)),
99
+ inPorts: mapElements(input.inPorts, `${path}.inPorts`)
100
+ .map((port, index) => normalizePort(port, `${path}.inPorts[${index}]`)),
101
+ outPorts: mapElements(input.outPorts, `${path}.outPorts`)
102
+ .map((port, index) => normalizePort(port, `${path}.outPorts[${index}]`)),
103
+ parameters: mapElements(input.parameters, `${path}.parameters`)
104
+ .map((parameter, index) => normalizeParameter(parameter, `${path}.parameters[${index}]`)),
92
105
  paramValues: cloneStringRecord(input.paramValues ?? {}, `${path}.paramValues`),
93
106
  metadata: cloneJsonObject(input.metadata ?? {}, `${path}.metadata`),
94
107
  };
95
108
  }
96
- function normalizePort(input, path) {
109
+ function normalizePort(value, path) {
110
+ const input = requireStructure(value, path);
97
111
  return {
98
112
  id: requireIdentifier(input.id, `${path}.id`),
99
113
  name: requireString(input.name, `${path}.name`),
100
114
  description: requireString(input.description ?? '', `${path}.description`),
101
115
  type: requireString(input.type ?? '', `${path}.type`),
102
116
  maxLinks: requireNonNegativeInteger(input.maxLinks ?? 0, `${path}.maxLinks`),
103
- availableTypes: (input.availableTypes ?? []).map((type, index) => requireString(type, `${path}.availableTypes[${index}]`)),
117
+ availableTypes: requireArray(input.availableTypes ?? [], `${path}.availableTypes`)
118
+ .map((type, index) => requireString(type, `${path}.availableTypes[${index}]`)),
104
119
  isDynamic: requireBoolean(input.isDynamic ?? false, `${path}.isDynamic`),
105
- dynamicMode: requireString(input.dynamicMode ?? '', `${path}.dynamicMode`),
120
+ dynamicMode: requirePortDynamicMode(input.dynamicMode ?? '', `${path}.dynamicMode`),
106
121
  isSibling: requireBoolean(input.isSibling ?? false, `${path}.isSibling`),
107
122
  metadata: cloneJsonObject(input.metadata ?? {}, `${path}.metadata`),
108
123
  };
109
124
  }
110
- function normalizeParameter(input, path) {
125
+ function normalizeParameter(value, path) {
126
+ const input = requireStructure(value, path);
111
127
  return {
112
128
  name: requireIdentifier(input.name, `${path}.name`),
113
129
  displayName: requireString(input.displayName, `${path}.displayName`),
@@ -123,7 +139,8 @@ function normalizeParameter(input, path) {
123
139
  editorType: requireString(input.editorType, `${path}.editorType`),
124
140
  };
125
141
  }
126
- function normalizeLink(input, path) {
142
+ function normalizeLink(value, path) {
143
+ const input = requireStructure(value, path);
127
144
  return {
128
145
  id: requireIdentifier(input.id, `${path}.id`),
129
146
  from: normalizeEndpoint(input.from, `${path}.from`),
@@ -131,14 +148,15 @@ function normalizeLink(input, path) {
131
148
  metadata: cloneJsonObject(input.metadata ?? {}, `${path}.metadata`),
132
149
  };
133
150
  }
134
- function normalizeEndpoint(input, path) {
151
+ function normalizeEndpoint(value, path) {
152
+ const input = requireStructure(value, path);
135
153
  return {
136
154
  nodeId: requireIdentifier(input.nodeId, `${path}.nodeId`),
137
155
  portId: requireIdentifier(input.portId, `${path}.portId`),
138
156
  };
139
157
  }
140
158
  function parseNode(value, path) {
141
- const node = requireObject(value, path);
159
+ const node = requireStructure(value, path);
142
160
  return normalizeNode({
143
161
  id: requireString(node.id, `${path}.id`),
144
162
  typeId: requireString(node.typeId, `${path}.typeId`),
@@ -160,7 +178,7 @@ function parseNode(value, path) {
160
178
  }, path);
161
179
  }
162
180
  function parsePort(value, path) {
163
- const port = requireObject(value, path);
181
+ const port = requireStructure(value, path);
164
182
  return normalizePort({
165
183
  id: requireString(port.id, `${path}.id`),
166
184
  name: requireString(port.name, `${path}.name`),
@@ -169,13 +187,13 @@ function parsePort(value, path) {
169
187
  maxLinks: requireNumber(port.maxLinks, `${path}.maxLinks`),
170
188
  availableTypes: requireArray(port.availableTypes, `${path}.availableTypes`).map((type, index) => requireString(type, `${path}.availableTypes[${index}]`)),
171
189
  isDynamic: requireBoolean(port.isDynamic, `${path}.isDynamic`),
172
- dynamicMode: requireString(port.dynamicMode, `${path}.dynamicMode`),
190
+ dynamicMode: requirePortDynamicMode(port.dynamicMode, `${path}.dynamicMode`),
173
191
  isSibling: requireBoolean(port.isSibling, `${path}.isSibling`),
174
192
  metadata: cloneJsonObject(port.metadata, `${path}.metadata`),
175
193
  }, path);
176
194
  }
177
195
  function parseParameter(value, path) {
178
- const parameter = requireObject(value, path);
196
+ const parameter = requireStructure(value, path);
179
197
  return normalizeParameter({
180
198
  name: requireString(parameter.name, `${path}.name`),
181
199
  displayName: requireString(parameter.displayName, `${path}.displayName`),
@@ -192,7 +210,7 @@ function parseParameter(value, path) {
192
210
  }, path);
193
211
  }
194
212
  function parseLink(value, path) {
195
- const link = requireObject(value, path);
213
+ const link = requireStructure(value, path);
196
214
  return normalizeLink({
197
215
  id: requireString(link.id, `${path}.id`),
198
216
  from: parseEndpoint(link.from, `${path}.from`),
@@ -201,7 +219,7 @@ function parseLink(value, path) {
201
219
  }, path);
202
220
  }
203
221
  function parseEndpoint(value, path) {
204
- const endpoint = requireObject(value, path);
222
+ const endpoint = requireStructure(value, path);
205
223
  return {
206
224
  nodeId: requireIdentifier(endpoint.nodeId, `${path}.nodeId`),
207
225
  portId: requireIdentifier(endpoint.portId, `${path}.portId`),
@@ -256,7 +274,7 @@ function cloneStringRecord(value, path) {
256
274
  const object = requireObject(value, path);
257
275
  const result = {};
258
276
  for (const [key, item] of Object.entries(object))
259
- result[key] = requireString(item, `${path}.${key}`);
277
+ setJsonKey(result, key, requireString(item, `${path}.${key}`));
260
278
  return result;
261
279
  }
262
280
  function cloneJsonObject(value, path, ancestors = new WeakSet()) {
@@ -267,7 +285,7 @@ function cloneJsonObject(value, path, ancestors = new WeakSet()) {
267
285
  const result = {};
268
286
  try {
269
287
  for (const [key, item] of Object.entries(object)) {
270
- result[key] = cloneJsonValue(item, `${path}.${key}`, ancestors);
288
+ setJsonKey(result, key, cloneJsonValue(item, `${path}.${key}`, ancestors));
271
289
  }
272
290
  }
273
291
  finally {
@@ -295,6 +313,22 @@ function cloneJsonValue(value, path, ancestors) {
295
313
  return cloneJsonObject(value, path, ancestors);
296
314
  throw new DiagramDocumentError('expected a JSON value', path);
297
315
  }
316
+ /**
317
+ * A container whose fields are read individually. Any object will do, including
318
+ * a class instance: hosts build schemes out of DiagramNode and Port, not object
319
+ * literals, and every field is validated on its own below.
320
+ */
321
+ function requireStructure(value, path) {
322
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
323
+ throw new DiagramDocumentError('expected an object', path);
324
+ }
325
+ return value;
326
+ }
327
+ /**
328
+ * A value that has to survive JSON round-tripping unchanged. Stricter than
329
+ * requireStructure on purpose: a Date or any other class instance would
330
+ * serialize to something the parser could not read back.
331
+ */
298
332
  function requireObject(value, path) {
299
333
  if (!isObject(value))
300
334
  throw new DiagramDocumentError('expected an object', path);
@@ -306,6 +340,18 @@ function isObject(value) {
306
340
  const prototype = Object.getPrototypeOf(value);
307
341
  return prototype === Object.prototype || prototype === null;
308
342
  }
343
+ /**
344
+ * Reads an optional array of objects, rejecting a non-array, a hole or a
345
+ * non-object element. null counts as absent, like the `?? []` every other
346
+ * optional field is read through.
347
+ */
348
+ function mapElements(value, path) {
349
+ if (value === undefined || value === null)
350
+ return [];
351
+ // Array.from rather than map: map skips holes, carrying an undefined element
352
+ // into the result instead of reporting it.
353
+ return Array.from(requireArray(value, path), (element, index) => requireStructure(element, `${path}[${index}]`));
354
+ }
309
355
  function requireArray(value, path) {
310
356
  if (!Array.isArray(value))
311
357
  throw new DiagramDocumentError('expected an array', path);
@@ -316,6 +362,17 @@ function requireString(value, path) {
316
362
  throw new DiagramDocumentError('expected a string', path);
317
363
  return value;
318
364
  }
365
+ /**
366
+ * Coerces rather than rejects. The set is closed in the types, which is where a
367
+ * typo gets caught, but a persisted scheme can carry anything a JavaScript host
368
+ * wrote before that -- and refusing to load it would brick the whole document
369
+ * over a field whose every value except 'onConnect' behaves identically. The
370
+ * type must still be a string, so a number or an object is a real error.
371
+ */
372
+ function requirePortDynamicMode(value, path) {
373
+ const mode = requireString(value, path);
374
+ return toPortDynamicMode(mode);
375
+ }
319
376
  function requireIdentifier(value, path) {
320
377
  const id = requireString(value, path);
321
378
  if (id.trim().length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/core/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/core/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Stores a key that JSON can legitimately carry but plain assignment cannot hold.
3
+ *
4
+ * `JSON.parse` produces `__proto__` as an ordinary own key, yet writing it back
5
+ * with `target[key] = value` hits the inherited `__proto__` setter: the value is
6
+ * dropped and the object's prototype is replaced instead. A document parsed that
7
+ * way loses data and stops satisfying the parser's own "plain object" guard, so
8
+ * anything the parser accepted could no longer be serialized or cloned.
9
+ */
10
+ export function setJsonKey(target, key, value) {
11
+ if (key === '__proto__') {
12
+ Object.defineProperty(target, key, { value, enumerable: true, writable: true, configurable: true });
13
+ return;
14
+ }
15
+ target[key] = value;
16
+ }
17
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/core/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAI,MAAyB,EAAE,GAAW,EAAE,KAAQ;IAC1E,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpG,OAAO;IACX,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxB,CAAC"}
@@ -1,2 +1,6 @@
1
+ /** Narrows an untyped value to the closed set, defaulting to the inert mode. */
2
+ export function toPortDynamicMode(value) {
3
+ return value === 'manual' || value === 'onConnect' ? value : '';
4
+ }
1
5
  export const DIAGRAM_DOCUMENT_VERSION = 1;
2
6
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/core/model.ts"],"names":[],"mappings":"AAqEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/core/model.ts"],"names":[],"mappings":"AA8BA,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC5C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC;AAiDD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAU,CAAC"}
@@ -7,7 +7,7 @@ export function cloneDiagramRuntimeState(state) {
7
7
  globalError: state.globalError === null ? null : { ...state.globalError },
8
8
  nodes: Object.fromEntries(Object.entries(state.nodes).map(([nodeId, node]) => [nodeId, {
9
9
  active: node.active,
10
- error: node.error === null ? null : { ...node.error },
10
+ errors: cloneDiagramNodeErrors(node.errors),
11
11
  ports: {
12
12
  in: Object.fromEntries(Object.entries(node.ports.in)
13
13
  .map(([portId, port]) => [portId, { ...port }])),
@@ -66,8 +66,22 @@ export function createReadOnlyDiagramPermissions() {
66
66
  export function createDiagramNodeRuntimeState() {
67
67
  return {
68
68
  active: false,
69
- error: null,
69
+ errors: {},
70
70
  ports: { in: {}, out: {} },
71
71
  };
72
72
  }
73
+ /**
74
+ * Tolerates a missing map: hosts persist runtime snapshots and build them by
75
+ * hand, so a state written before this field existed still has to be readable.
76
+ */
77
+ export function cloneDiagramNodeErrors(errors) {
78
+ const result = {};
79
+ if (errors === undefined || errors === null)
80
+ return result;
81
+ if (errors.runtime !== undefined)
82
+ result.runtime = { ...errors.runtime };
83
+ if (errors.load !== undefined)
84
+ result.load = { ...errors.load };
85
+ return result;
86
+ }
73
87
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state.ts"],"names":[],"mappings":"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"}
@@ -27,19 +27,31 @@ export class StockSharpCatalog extends EventEmitter {
27
27
  // imported node ("Element type is missing from the palette"). Node.id
28
28
  // keeps its original casing so save/load round-trips unchanged.
29
29
  addNodeType(node) {
30
- const n = node instanceof Node ? node : new Node(node);
30
+ // Copied on the way in as well as on the way out: otherwise the caller
31
+ // keeps a handle on the stored definition and can edit it afterwards.
32
+ // The clone covers the init branch too -- Node's constructor keeps the
33
+ // caller's Port instances and parameters array as they are.
34
+ const n = (node instanceof Node ? node : new Node(node)).clone();
31
35
  this.nodeTypes.set(n.id.toLowerCase(), n);
32
- this.emit('nodeTypesChanged', this.getNodeTypes());
36
+ this.emitNodeTypesChanged();
33
37
  }
34
38
  removeNodeType(id) {
35
39
  this.nodeTypes.delete(id.toLowerCase());
36
- this.emit('nodeTypesChanged', this.getNodeTypes());
40
+ this.emitNodeTypesChanged();
37
41
  }
38
42
  getNodeType(id) {
39
- return this.nodeTypes.get(id.toLowerCase()) ?? null;
43
+ return this.nodeTypes.get(id.toLowerCase())?.clone() ?? null;
40
44
  }
41
45
  getNodeTypes() {
42
- return Array.from(this.nodeTypes.values());
46
+ return Array.from(this.nodeTypes.values(), (node) => node.clone());
47
+ }
48
+ // Node definitions are mutable, so the payload has to be a copy of each one.
49
+ // Building a catalog is a loop of addNodeType calls, which would make that
50
+ // quadratic; skipping it while nobody listens keeps catalog construction --
51
+ // where no subscriber exists yet -- as cheap as it was.
52
+ emitNodeTypesChanged() {
53
+ if (this.hasHandlers('nodeTypesChanged'))
54
+ this.emit('nodeTypesChanged', this.getNodeTypes());
43
55
  }
44
56
  }
45
57
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/diagram/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAY,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpE,MAAM,OAAO,iBAAkB,SAAQ,YAA2B;IAAlE;;QACqB,cAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxC,cAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;IA4CzD,CAAC;IA1CG,WAAW,CAAC,QAAiC;QACzC,MAAM,EAAE,GAAG,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,IAAY;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,gEAAgE;IAChE,WAAW,CAAC,IAAqB;QAC7B,MAAM,CAAC,GAAG,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;IACxD,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;CACJ"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/diagram/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAY,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpE,MAAM,OAAO,iBAAkB,SAAQ,YAA2B;IAAlE;;QACqB,cAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxC,cAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;IAwDzD,CAAC;IAtDG,WAAW,CAAC,QAAiC;QACzC,MAAM,EAAE,GAAG,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,IAAY;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,gEAAgE;IAChE,WAAW,CAAC,IAAqB;QAC7B,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,CAAC,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;IACjE,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,wDAAwD;IAChD,oBAAoB;QACxB,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACjG,CAAC;CACJ"}
@@ -1,3 +1,6 @@
1
+ // TEvents is constrained to object rather than Record<string, unknown>: the
2
+ // latter forces every event map to carry a string index signature, which
3
+ // collapses keyof TEvents to string and lets any misspelled name compile.
1
4
  export class EventEmitter {
2
5
  constructor() {
3
6
  this.handlers = new Map();
@@ -35,6 +38,13 @@ export class EventEmitter {
35
38
  }
36
39
  }
37
40
  }
41
+ /**
42
+ * Whether anyone is listening. Lets a subject skip building a payload that
43
+ * is expensive to produce and that nothing would read.
44
+ */
45
+ hasHandlers(event) {
46
+ return (this.handlers.get(event)?.size ?? 0) > 0;
47
+ }
38
48
  clearEventHandlers() {
39
49
  this.handlers.clear();
40
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../src/diagram/event-emitter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAAzB;QACqB,aAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;IAwCrF,CAAC;IAtCG,EAAE,CAA0B,KAAQ,EAAE,OAAiC;QACnE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAgC,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAA0B,KAAQ,EAAE,OAAiC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAgC,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAES,IAAI,CAA0B,KAAQ,EAAE,OAAmB;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC;gBACA,OAAoC,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAES,kBAAkB;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACJ"}
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../src/diagram/event-emitter.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,OAAO,YAAY;IAAzB;QACqB,aAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;IAgDrF,CAAC;IA9CG,EAAE,CAA0B,KAAQ,EAAE,OAAiC;QACnE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAgC,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAA0B,KAAQ,EAAE,OAAiC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAgC,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAES,IAAI,CAA0B,KAAQ,EAAE,OAAmB;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC;gBACA,OAAoC,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,WAAW,CAA0B,KAAQ;QACnD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAES,kBAAkB;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACJ"}