@domainlang/language 0.12.0 → 0.13.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 (90) hide show
  1. package/out/ast-augmentation.d.ts +7 -2
  2. package/out/diagram/context-map-diagram-generator.d.ts +9 -2
  3. package/out/diagram/context-map-diagram-generator.js +112 -63
  4. package/out/diagram/context-map-diagram-generator.js.map +1 -1
  5. package/out/generated/ast.d.ts +323 -51
  6. package/out/generated/ast.js +194 -33
  7. package/out/generated/ast.js.map +1 -1
  8. package/out/generated/grammar.js +418 -172
  9. package/out/generated/grammar.js.map +1 -1
  10. package/out/lsp/domain-lang-completion.js +39 -15
  11. package/out/lsp/domain-lang-completion.js.map +1 -1
  12. package/out/lsp/domain-lang-formatter.js +32 -0
  13. package/out/lsp/domain-lang-formatter.js.map +1 -1
  14. package/out/lsp/domain-lang-index-manager.d.ts +2 -3
  15. package/out/lsp/domain-lang-index-manager.js +5 -8
  16. package/out/lsp/domain-lang-index-manager.js.map +1 -1
  17. package/out/lsp/domain-lang-workspace-manager.d.ts +1 -1
  18. package/out/lsp/domain-lang-workspace-manager.js +2 -26
  19. package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
  20. package/out/lsp/explain.js +9 -3
  21. package/out/lsp/explain.js.map +1 -1
  22. package/out/lsp/hover/domain-lang-hover.js +13 -11
  23. package/out/lsp/hover/domain-lang-hover.js.map +1 -1
  24. package/out/lsp/hover/domain-lang-keywords.js +29 -26
  25. package/out/lsp/hover/domain-lang-keywords.js.map +1 -1
  26. package/out/sdk/ast-augmentation.d.ts +29 -21
  27. package/out/sdk/ast-augmentation.js +11 -7
  28. package/out/sdk/ast-augmentation.js.map +1 -1
  29. package/out/sdk/index.d.ts +2 -2
  30. package/out/sdk/index.js +1 -1
  31. package/out/sdk/index.js.map +1 -1
  32. package/out/sdk/loader-node.js +2 -2
  33. package/out/sdk/loader-node.js.map +1 -1
  34. package/out/sdk/patterns.d.ts +50 -61
  35. package/out/sdk/patterns.js +92 -62
  36. package/out/sdk/patterns.js.map +1 -1
  37. package/out/sdk/query.js +54 -43
  38. package/out/sdk/query.js.map +1 -1
  39. package/out/sdk/serializers.js +20 -7
  40. package/out/sdk/serializers.js.map +1 -1
  41. package/out/sdk/types.d.ts +87 -18
  42. package/out/sdk/types.js.map +1 -1
  43. package/out/sdk/validator.js +48 -64
  44. package/out/sdk/validator.js.map +1 -1
  45. package/out/services/performance-optimizer.d.ts +3 -3
  46. package/out/services/performance-optimizer.js +1 -3
  47. package/out/services/performance-optimizer.js.map +1 -1
  48. package/out/services/relationship-inference.d.ts +4 -4
  49. package/out/services/relationship-inference.js +34 -46
  50. package/out/services/relationship-inference.js.map +1 -1
  51. package/out/syntaxes/domain-lang.monarch.js +1 -1
  52. package/out/syntaxes/domain-lang.monarch.js.map +1 -1
  53. package/out/utils/import-utils.d.ts +6 -20
  54. package/out/utils/import-utils.js +3 -63
  55. package/out/utils/import-utils.js.map +1 -1
  56. package/out/validation/constants.d.ts +23 -6
  57. package/out/validation/constants.js +24 -7
  58. package/out/validation/constants.js.map +1 -1
  59. package/out/validation/maps.js +10 -4
  60. package/out/validation/maps.js.map +1 -1
  61. package/out/validation/relationships.d.ts +4 -8
  62. package/out/validation/relationships.js +96 -48
  63. package/out/validation/relationships.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/ast-augmentation.ts +7 -2
  66. package/src/diagram/context-map-diagram-generator.ts +132 -70
  67. package/src/domain-lang.langium +62 -26
  68. package/src/generated/ast.ts +413 -63
  69. package/src/generated/grammar.ts +418 -172
  70. package/src/lsp/domain-lang-completion.ts +42 -15
  71. package/src/lsp/domain-lang-formatter.ts +34 -0
  72. package/src/lsp/domain-lang-index-manager.ts +6 -9
  73. package/src/lsp/domain-lang-workspace-manager.ts +3 -29
  74. package/src/lsp/explain.ts +10 -2
  75. package/src/lsp/hover/domain-lang-hover.ts +10 -8
  76. package/src/lsp/hover/domain-lang-keywords.ts +27 -24
  77. package/src/sdk/ast-augmentation.ts +30 -21
  78. package/src/sdk/index.ts +11 -1
  79. package/src/sdk/loader-node.ts +2 -2
  80. package/src/sdk/patterns.ts +114 -76
  81. package/src/sdk/query.ts +57 -48
  82. package/src/sdk/serializers.ts +20 -7
  83. package/src/sdk/types.ts +92 -17
  84. package/src/sdk/validator.ts +52 -69
  85. package/src/services/performance-optimizer.ts +4 -6
  86. package/src/services/relationship-inference.ts +43 -54
  87. package/src/utils/import-utils.ts +9 -74
  88. package/src/validation/constants.ts +32 -9
  89. package/src/validation/maps.ts +12 -4
  90. package/src/validation/relationships.ts +150 -71
@@ -1,6 +1,11 @@
1
1
  declare module './generated/ast.js' {
2
- interface Relationship {
3
- inferredType?: string;
2
+ interface DirectionalRelationship {
3
+ /** SDK-inferred relationship kind based on patterns and arrow */
4
+ inferredKind?: string;
5
+ }
6
+ interface SymmetricRelationship {
7
+ /** SDK-inferred relationship kind from pattern or >< arrow */
8
+ inferredKind?: string;
4
9
  }
5
10
  }
6
11
  export {};
@@ -27,6 +27,13 @@ export declare class DomainLangContextMapDiagramGenerator extends LangiumDiagram
27
27
  * pattern boxes (e.g., `U [OHS, PL]`).
28
28
  */
29
29
  private createRelationshipEdge;
30
+ /**
31
+ * Creates an undirected edge for symmetric relationships (SK, P, SW).
32
+ *
33
+ * Symmetric relationships have no upstream/downstream directionality.
34
+ * The center label shows the relationship kind (e.g. "Shared Kernel").
35
+ */
36
+ private createSymmetricEdge;
30
37
  /**
31
38
  * Adds a U/D badge label at the source or target end of an edge.
32
39
  *
@@ -50,8 +57,8 @@ export declare class DomainLangContextMapDiagramGenerator extends LangiumDiagram
50
57
  * For `<->` without explicit type, defaults to "Partnership".
51
58
  * For `><`, defaults to "Separate Ways".
52
59
  */
53
- private formatRelationshipType;
54
- private displayRelationshipType;
60
+ private formatRelationshipKind;
61
+ private displayRelationshipKind;
55
62
  private collectContextMapNodes;
56
63
  private ensureNodeForContextMapItem;
57
64
  private createNode;
@@ -1,5 +1,6 @@
1
1
  import { LangiumDiagramGenerator } from 'langium-sprotty';
2
2
  import { fromDocument } from '../sdk/query.js';
3
+ import { isBigBallOfMud } from '../generated/ast.js';
3
4
  /** Ellipse sizing for bounded context nodes — sized for long names like "CustomerManagementContext" */
4
5
  const NODE_WIDTH = 280;
5
6
  const NODE_HEIGHT = 100;
@@ -12,27 +13,30 @@ const PATTERN_ABBREVIATIONS = {
12
13
  PublishedLanguage: 'PL',
13
14
  AntiCorruptionLayer: 'ACL',
14
15
  Conformist: 'CF',
15
- Partnership: 'P',
16
- SharedKernel: 'SK',
16
+ Supplier: 'S',
17
+ Customer: 'C',
17
18
  BigBallOfMud: 'BBoM',
19
+ SharedKernel: 'SK',
20
+ Partnership: 'P',
21
+ SeparateWays: 'SW',
18
22
  };
19
23
  /**
20
- * Returns the abbreviated form of an integration pattern keyword.
24
+ * Returns the abbreviated form of a side pattern AST node.
21
25
  *
22
- * Short forms (e.g. `OHS`, `ACL`) are returned unchanged. Long forms (e.g.
23
- * `OpenHostService`, `AntiCorruptionLayer`) are mapped to their abbreviation.
26
+ * Maps the `$type` (e.g. `OpenHostService`, `Conformist`) to its standard
27
+ * DDD abbreviation (e.g. `OHS`, `CF`). Unknown types are returned as-is.
24
28
  */
25
- function normalizePattern(pattern) {
26
- return PATTERN_ABBREVIATIONS[pattern] ?? pattern;
29
+ function normalizePatternNode(pattern) {
30
+ return PATTERN_ABBREVIATIONS[pattern.$type] ?? pattern.$type;
27
31
  }
28
32
  /**
29
- * Returns `true` when the pattern identifies a Big Ball of Mud participant.
33
+ * Returns `true` when the side pattern identifies a Big Ball of Mud participant.
30
34
  *
31
35
  * BBoM is surfaced as a cloud node shape on the bounded context itself, not as
32
36
  * a text annotation in the edge badge, so it should be excluded from badge text.
33
37
  */
34
- function isBBoMPattern(pattern) {
35
- return pattern === 'BBoM' || pattern === 'BigBallOfMud';
38
+ function isBBoMSidePattern(pattern) {
39
+ return isBigBallOfMud(pattern);
36
40
  }
37
41
  /**
38
42
  * Generates context map diagrams in the **DDD community notation** style.
@@ -71,22 +75,24 @@ export class DomainLangContextMapDiagramGenerator extends LangiumDiagramGenerato
71
75
  // the `node:bbom` Sprotty type so the webview renders them as clouds.
72
76
  const bboMNodeKeys = new Set();
73
77
  for (const rel of relationships) {
74
- if (rel.leftPatterns.some(isBBoMPattern)) {
75
- bboMNodeKeys.add(this.getNodeKey(query, rel.left));
76
- }
77
- if (rel.rightPatterns.some(isBBoMPattern)) {
78
- bboMNodeKeys.add(this.getNodeKey(query, rel.right));
78
+ if (rel.type === 'directional') {
79
+ if (rel.left.patterns.some(isBBoMSidePattern)) {
80
+ bboMNodeKeys.add(this.getNodeKey(query, rel.left.context));
81
+ }
82
+ if (rel.right.patterns.some(isBBoMSidePattern)) {
83
+ bboMNodeKeys.add(this.getNodeKey(query, rel.right.context));
84
+ }
79
85
  }
80
86
  }
81
87
  const nodeMap = new Map();
82
88
  this.collectContextMapNodes(selectedMap, query, nodeMap, bboMNodeKeys, args);
83
89
  for (const relationship of relationships) {
84
- this.ensureNode(nodeMap, query, relationship.left, bboMNodeKeys, args);
85
- this.ensureNode(nodeMap, query, relationship.right, bboMNodeKeys, args);
90
+ this.ensureNode(nodeMap, query, relationship.left.context, bboMNodeKeys, args);
91
+ this.ensureNode(nodeMap, query, relationship.right.context, bboMNodeKeys, args);
86
92
  }
87
93
  const edges = relationships.flatMap((relationship) => {
88
- const leftKey = this.getNodeKey(query, relationship.left);
89
- const rightKey = this.getNodeKey(query, relationship.right);
94
+ const leftKey = this.getNodeKey(query, relationship.left.context);
95
+ const rightKey = this.getNodeKey(query, relationship.right.context);
90
96
  const leftNode = nodeMap.get(leftKey);
91
97
  const rightNode = nodeMap.get(rightKey);
92
98
  if (!leftNode || !rightNode) {
@@ -95,11 +101,7 @@ export class DomainLangContextMapDiagramGenerator extends LangiumDiagramGenerato
95
101
  return this.createRelationshipEdge({
96
102
  leftNode,
97
103
  rightNode,
98
- arrow: relationship.arrow,
99
- leftPatterns: relationship.leftPatterns,
100
- rightPatterns: relationship.rightPatterns,
101
- type: relationship.type,
102
- astNode: relationship.astNode,
104
+ relationship,
103
105
  }, args);
104
106
  });
105
107
  return {
@@ -121,29 +123,34 @@ export class DomainLangContextMapDiagramGenerator extends LangiumDiagramGenerato
121
123
  * pattern boxes (e.g., `U [OHS, PL]`).
122
124
  */
123
125
  createRelationshipEdge(params, args) {
124
- const { leftNode, rightNode, arrow, leftPatterns, rightPatterns, type, astNode } = params;
125
- // Determine source/target based on arrow direction
126
+ const { leftNode, rightNode, relationship } = params;
127
+ const astNode = relationship.astNode;
128
+ if (relationship.type === 'symmetric') {
129
+ return this.createSymmetricEdge(leftNode, rightNode, relationship.kind, astNode, args);
130
+ }
131
+ // Directional
132
+ const { arrow, kind, left, right } = relationship;
133
+ // Determine source/target nodes based on arrow direction
126
134
  const sourceId = arrow === '<-' ? rightNode.id : leftNode.id;
127
135
  const targetId = arrow === '<-' ? leftNode.id : rightNode.id;
128
136
  const edgeId = args.idCache.uniqueId(`edge:${sourceId}:${targetId}`, astNode);
129
137
  const children = [];
130
- if (arrow === '<->') {
131
- // Partnership / bidirectionalno U/D roles
132
- this.addUDBadge(children, edgeId, 'source', leftPatterns, undefined, args);
133
- this.addUDBadge(children, edgeId, 'target', rightPatterns, undefined, args);
134
- }
135
- else if (arrow === '><') {
136
- // Separate Ways — no U/D, no patterns
138
+ if (kind === 'Bidirectional') {
139
+ // No upstream/downstream rolesshow patterns positionally
140
+ this.addUDBadge(children, edgeId, 'source', left.patterns, undefined, args);
141
+ this.addUDBadge(children, edgeId, 'target', right.patterns, undefined, args);
137
142
  }
138
143
  else {
139
- // Unidirectional: -> or <-
140
- const sourcePatterns = arrow === '<-' ? rightPatterns : leftPatterns;
141
- const targetPatterns = arrow === '<-' ? leftPatterns : rightPatterns;
142
- this.addUDBadge(children, edgeId, 'source', sourcePatterns, 'U', args);
143
- this.addUDBadge(children, edgeId, 'target', targetPatterns, 'D', args);
144
+ // Upstream/downstream or Customer/Supplier
145
+ const sourcePatterns = arrow === '<-' ? right.patterns : left.patterns;
146
+ const targetPatterns = arrow === '<-' ? left.patterns : right.patterns;
147
+ const sourceRole = kind === 'CustomerSupplier' ? 'S' : 'U';
148
+ const targetRole = kind === 'CustomerSupplier' ? 'C' : 'D';
149
+ this.addUDBadge(children, edgeId, 'source', sourcePatterns, sourceRole, args);
150
+ this.addUDBadge(children, edgeId, 'target', targetPatterns, targetRole, args);
144
151
  }
145
- // Center label: relationship type
146
- const centerLabel = this.formatRelationshipType(type, arrow);
152
+ // Center label: relationship kind
153
+ const centerLabel = this.formatRelationshipKind(kind);
147
154
  if (centerLabel) {
148
155
  children.push({
149
156
  type: 'label:edge',
@@ -158,10 +165,7 @@ export class DomainLangContextMapDiagramGenerator extends LangiumDiagramGenerato
158
165
  });
159
166
  }
160
167
  let edgeCssClasses;
161
- if (arrow === '><') {
162
- edgeCssClasses = ['separate-ways'];
163
- }
164
- else if (arrow === '<->') {
168
+ if (arrow === '<->') {
165
169
  edgeCssClasses = ['partnership'];
166
170
  }
167
171
  const edge = {
@@ -175,6 +179,50 @@ export class DomainLangContextMapDiagramGenerator extends LangiumDiagramGenerato
175
179
  this.traceProvider.trace(edge, astNode);
176
180
  return [edge];
177
181
  }
182
+ /**
183
+ * Creates an undirected edge for symmetric relationships (SK, P, SW).
184
+ *
185
+ * Symmetric relationships have no upstream/downstream directionality.
186
+ * The center label shows the relationship kind (e.g. "Shared Kernel").
187
+ */
188
+ createSymmetricEdge(leftNode, rightNode, kind, astNode, args) {
189
+ const edgeId = args.idCache.uniqueId(`edge:${leftNode.id}:${rightNode.id}`, astNode);
190
+ const children = [];
191
+ const centerLabel = this.formatRelationshipKind(kind);
192
+ if (centerLabel) {
193
+ children.push({
194
+ type: 'label:edge',
195
+ id: args.idCache.uniqueId(`${edgeId}:type`),
196
+ text: centerLabel,
197
+ edgePlacement: {
198
+ side: 'on',
199
+ position: 0.5,
200
+ rotate: false,
201
+ offset: 10,
202
+ },
203
+ });
204
+ }
205
+ let edgeCssClasses;
206
+ if (kind === 'SeparateWays') {
207
+ edgeCssClasses = ['separate-ways'];
208
+ }
209
+ else if (kind === 'Partnership') {
210
+ edgeCssClasses = ['partnership'];
211
+ }
212
+ else if (kind === 'SharedKernel') {
213
+ edgeCssClasses = ['shared-kernel'];
214
+ }
215
+ const edge = {
216
+ type: 'edge',
217
+ id: edgeId,
218
+ sourceId: leftNode.id,
219
+ targetId: rightNode.id,
220
+ cssClasses: edgeCssClasses,
221
+ children: children.length > 0 ? children : undefined,
222
+ };
223
+ this.traceProvider.trace(edge, astNode);
224
+ return [edge];
225
+ }
178
226
  /**
179
227
  * Adds a U/D badge label at the source or target end of an edge.
180
228
  *
@@ -186,10 +234,14 @@ export class DomainLangContextMapDiagramGenerator extends LangiumDiagramGenerato
186
234
  * The webview `UDBadgeLabelView` renders this as a bordered box.
187
235
  */
188
236
  addUDBadge(children, edgeId, placement, patterns, role, args) {
189
- // Normalise pattern names and strip BBoM (shown on node, not in badge)
237
+ // Normalise pattern names and strip BBoM (shown on node, not in badge).
238
+ // Also strip Supplier/Customer when they are already expressed as the role letter
239
+ // to prevent duplicate annotations like "S S" or "C C".
190
240
  const badgePatterns = patterns
191
- .filter((p) => !isBBoMPattern(p))
192
- .map(normalizePattern);
241
+ .filter((p) => !isBBoMSidePattern(p))
242
+ .filter((p) => !(role === 'S' && p.$type === 'Supplier'))
243
+ .filter((p) => !(role === 'C' && p.$type === 'Customer'))
244
+ .map(normalizePatternNode);
193
245
  if (!role && badgePatterns.length === 0) {
194
246
  return;
195
247
  }
@@ -221,24 +273,21 @@ export class DomainLangContextMapDiagramGenerator extends LangiumDiagramGenerato
221
273
  * For `<->` without explicit type, defaults to "Partnership".
222
274
  * For `><`, defaults to "Separate Ways".
223
275
  */
224
- formatRelationshipType(type, arrow) {
225
- if (type) {
226
- return this.displayRelationshipType(type);
227
- }
228
- if (arrow === '<->') {
229
- return 'Partnership';
230
- }
231
- if (arrow === '><') {
232
- return 'Separate Ways';
233
- }
234
- return undefined;
276
+ formatRelationshipKind(kind) {
277
+ if (!kind)
278
+ return undefined;
279
+ return this.displayRelationshipKind(kind);
235
280
  }
236
- displayRelationshipType(type) {
237
- switch (type) {
238
- case 'CustomerSupplier': return 'Customer/Supplier';
281
+ displayRelationshipKind(kind) {
282
+ switch (kind) {
283
+ // Directional kinds are already conveyed by U/D and C/S role badges — no center label needed
284
+ case 'CustomerSupplier': return undefined;
285
+ case 'UpstreamDownstream': return undefined;
286
+ // Symmetric and bidirectional kinds have no role badges, so label them explicitly
239
287
  case 'SharedKernel': return 'Shared Kernel';
240
- case 'UpstreamDownstream': return 'Upstream/Downstream';
241
- default: return type;
288
+ case 'SeparateWays': return 'Separate Ways';
289
+ case 'Partnership': return 'Partnership';
290
+ default: return kind;
242
291
  }
243
292
  }
244
293
  // ── Node generation ──
@@ -1 +1 @@
1
- {"version":3,"file":"context-map-diagram-generator.js","sourceRoot":"","sources":["../../src/diagram/context-map-diagram-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAyB,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,uGAAuG;AACvG,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;GAGG;AACH,MAAM,qBAAqB,GAAqC;IAC5D,eAAe,EAAE,KAAK;IACtB,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,KAAK;IAC1B,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,MAAM;CACvB,CAAC;AAEF;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACrC,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAe;IAClC,OAAO,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,cAAc,CAAC;AAC5D,CAAC;AAiBD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oCAAqC,SAAQ,uBAAuB;IAC1D,YAAY,CAAC,IAAsB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAkC,CAAC;QACzD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBAC9C,QAAQ,EAAE,EAAE;aACE,CAAC;QACvB,CAAC;QAED,wEAAwE;QACxE,0DAA0D;QAC1D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,EAAE;aACtC,KAAK,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,KAAK,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,KAAK,WAAW,CAAC;aAChH,OAAO,EAAE,CAAC;QAEf,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;QACzC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAE7E,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAExC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,sBAAsB,CAAC;gBAC/B,QAAQ;gBACR,SAAS;gBACT,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,YAAY,EAAE,YAAY,CAAC,YAAY;gBACvC,aAAa,EAAE,YAAY,CAAC,aAAa;gBACzC,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,OAAO,EAAE,YAAY,CAAC,OAAO;aAChC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC;YACzE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC;SAC3B,CAAC;IACvB,CAAC;IAED,oDAAoD;IAEpD;;;;;;;;;;OAUG;IACK,sBAAsB,CAC1B,MAA8B,EAC9B,IAAsB;QAEtB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC1F,mDAAmD;QACnD,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAChC,QAAQ,QAAQ,IAAI,QAAQ,EAAE,EAC9B,OAAO,CACV,CAAC;QAEF,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAClB,6CAA6C;YAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3E,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,sCAAsC;QAC1C,CAAC;aAAM,CAAC;YACJ,2BAA2B;YAC3B,MAAM,cAAc,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;YACrE,MAAM,cAAc,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,WAAW,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC;gBAC3C,IAAI,EAAE,WAAW;gBACjB,aAAa,EAAE;oBACX,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,GAAG;oBACb,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,EAAE;iBACb;aACwB,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,cAAoC,CAAC;QACzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjB,cAAc,GAAG,CAAC,eAAe,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACzB,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,GAAU;YAChB,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,MAAM;YACV,QAAQ;YACR,QAAQ;YACR,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACvD,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAqB,EAAE,OAA+C,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACK,UAAU,CACd,QAAyB,EACzB,MAAc,EACd,SAA8B,EAC9B,QAA2B,EAC3B,IAA2B,EAC3B,IAAsB;QAEtB,uEAAuE;QACvE,MAAM,aAAa,GAAG,QAAQ;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aAChC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO;QACX,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;QAE/C,QAAQ,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;YACnD,IAAI,EAAE,SAAS;YACf,aAAa,EAAE;gBACX,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBAC5C,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC;aACZ;SACwB,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;OAWG;IACK,sBAAsB,CAAC,IAAwB,EAAE,KAAa;QAClE,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,eAAe,CAAC;QAC3B,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,uBAAuB,CAAC,IAAY;QACxC,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,kBAAkB,CAAC,CAAC,OAAO,mBAAmB,CAAC;YACpD,KAAK,cAAc,CAAC,CAAC,OAAO,eAAe,CAAC;YAC5C,KAAK,oBAAoB,CAAC,CAAC,OAAO,qBAAqB,CAAC;YACxD,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;QACzB,CAAC;IACL,CAAC;IAED,wBAAwB;IAEhB,sBAAsB,CAC1B,WAAuB,EACvB,KAAY,EACZ,OAA2B,EAC3B,YAAiC,EACjC,IAAsB;QAEtB,KAAK,MAAM,iBAAiB,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;YAC1D,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBACzC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/E,CAAC;YAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;gBACrE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;IACL,CAAC;IAEO,2BAA2B,CAC/B,IAAiD,EACjD,KAAY,EACZ,OAA2B,EAC3B,YAAiC,EACjC,IAAsB;QAEtB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAqB,EAAE,cAAc,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,EAAU,EAAE,KAAa,EAAE,MAAM,GAAG,KAAK;QACxD,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;YACnC,EAAE;YACF,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YACxB,IAAI,EAAE;gBACF,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,WAAW;aACtB;YACD,MAAM,EAAE,MAAM;YACd,aAAa,EAAE;gBACX,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,QAAQ;gBAChB,eAAe,EAAE,KAAK;gBACtB,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE,EAAE;gBACjB,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,EAAE;aACnB;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;SAC9C,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,KAAa;QACjD,OAAO;YACH,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,GAAG,MAAM,QAAQ;YACrB,IAAI,EAAE,KAAK;SACc,CAAC;IAClC,CAAC;IAEO,UAAU,CACd,OAA2B,EAC3B,KAAY,EACZ,cAA8B,EAC9B,YAAiC,EACjC,IAAsB;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAqB,EAAE,cAAc,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,oBAAoB,CAAC,OAA2B,EAAE,KAAa,EAAE,IAAsB;QAC3F,MAAM,GAAG,GAAG,cAAc,KAAK,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAEO,UAAU,CAAC,KAAY,EAAE,cAA8B;QAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC;IACtC,CAAC;IAED,0BAA0B;IAElB,YAAY,CAAC,IAAsB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACrF,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;QACvF,OAAO;YACH,qBAAqB;YACrB,sBAAsB;SACzB,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,OAAe,EAAE,GAAW;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,CAAC;IAEO,gBAAgB,CAAC,WAAkC,EAAE,KAAY,EAAE,SAA2B;QAClG,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,qBAAqB,CAAC,CAAC;YAC1G,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,sBAAsB,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACtG,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;CACJ"}
1
+ {"version":3,"file":"context-map-diagram-generator.js","sourceRoot":"","sources":["../../src/diagram/context-map-diagram-generator.ts"],"names":[],"mappings":"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"}