@likec4/language-server 1.8.0 → 1.9.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 (83) hide show
  1. package/contrib/likec4.tmLanguage.json +1 -1
  2. package/dist/browser.cjs +21 -0
  3. package/dist/browser.d.cts +22 -0
  4. package/dist/browser.d.mts +22 -0
  5. package/dist/browser.d.ts +22 -0
  6. package/dist/browser.mjs +19 -0
  7. package/dist/index.cjs +10 -0
  8. package/dist/index.d.cts +18 -0
  9. package/dist/index.d.mts +18 -0
  10. package/dist/index.d.ts +18 -0
  11. package/dist/index.mjs +1 -0
  12. package/dist/likec4lib.cjs +961 -0
  13. package/dist/likec4lib.d.cts +6 -0
  14. package/dist/likec4lib.d.mts +6 -0
  15. package/dist/likec4lib.d.ts +6 -0
  16. package/dist/likec4lib.mjs +957 -0
  17. package/dist/model-graph/index.cjs +10 -0
  18. package/dist/model-graph/index.d.cts +79 -0
  19. package/dist/model-graph/index.d.mts +79 -0
  20. package/dist/model-graph/index.d.ts +79 -0
  21. package/dist/model-graph/index.mjs +1 -0
  22. package/dist/node.cjs +18 -0
  23. package/dist/node.d.cts +20 -0
  24. package/dist/node.d.mts +20 -0
  25. package/dist/node.d.ts +20 -0
  26. package/dist/node.mjs +16 -0
  27. package/dist/protocol.cjs +25 -0
  28. package/dist/protocol.d.cts +43 -0
  29. package/dist/protocol.d.mts +43 -0
  30. package/dist/protocol.d.ts +43 -0
  31. package/dist/protocol.mjs +17 -0
  32. package/dist/shared/language-server.86lmJ8ZN.d.cts +1194 -0
  33. package/dist/shared/language-server.B1TZgyoH.cjs +5371 -0
  34. package/dist/shared/language-server.CCB4ESN5.mjs +1606 -0
  35. package/dist/shared/language-server.CFTY6j4e.d.mts +1194 -0
  36. package/dist/shared/language-server.D0bOlrCi.cjs +1619 -0
  37. package/dist/shared/language-server.Q-wtPShM.mjs +5360 -0
  38. package/dist/shared/language-server.RjhrBZS0.d.ts +1194 -0
  39. package/package.json +35 -20
  40. package/src/ast.ts +44 -32
  41. package/src/browser.ts +0 -3
  42. package/src/elementRef.ts +1 -1
  43. package/src/generated/ast.ts +105 -86
  44. package/src/generated/grammar.ts +1 -1
  45. package/src/generated-lib/icons.ts +1 -1
  46. package/src/like-c4.langium +30 -18
  47. package/src/likec4lib.ts +2 -3
  48. package/src/logger.ts +9 -1
  49. package/src/lsp/RenameProvider.ts +8 -0
  50. package/src/lsp/SemanticTokenProvider.ts +19 -1
  51. package/src/lsp/index.ts +1 -0
  52. package/src/model/fqn-computation.ts +33 -23
  53. package/src/model/fqn-index.ts +5 -20
  54. package/src/model/model-builder.ts +147 -90
  55. package/src/model/model-locator.ts +1 -1
  56. package/src/model/model-parser-where.ts +3 -2
  57. package/src/model/model-parser.ts +57 -19
  58. package/src/model-graph/LikeC4ModelGraph.ts +42 -21
  59. package/src/model-graph/compute-view/__test__/fixture.ts +16 -14
  60. package/src/model-graph/compute-view/compute.ts +9 -6
  61. package/src/model-graph/compute-view/predicates.ts +3 -3
  62. package/src/model-graph/dynamic-view/__test__/fixture.ts +1 -0
  63. package/src/model-graph/dynamic-view/compute.ts +2 -1
  64. package/src/model-graph/utils/elementExpressionToPredicate.ts +1 -1
  65. package/src/model-graph/utils/sortNodes.ts +2 -6
  66. package/src/module.ts +23 -3
  67. package/src/protocol.ts +4 -5
  68. package/src/references/scope-computation.ts +10 -1
  69. package/src/references/scope-provider.ts +22 -9
  70. package/src/shared/NodeKindProvider.ts +73 -34
  71. package/src/test/setup.ts +3 -8
  72. package/src/utils/graphlib.ts +11 -0
  73. package/src/validation/_shared.ts +24 -0
  74. package/src/validation/element.ts +9 -9
  75. package/src/validation/index.ts +2 -1
  76. package/src/validation/relation.ts +45 -39
  77. package/src/validation/specification.ts +15 -2
  78. package/src/validation/view.ts +7 -0
  79. package/src/view-utils/manual-layout.ts +1 -1
  80. package/src/view-utils/resolve-extended-views.ts +19 -10
  81. package/src/view-utils/resolve-relative-paths.ts +5 -7
  82. package/src/view-utils/view-hash.ts +1 -1
  83. package/src/reset.d.ts +0 -2
@@ -24,6 +24,7 @@ export const LikeC4Terminals = {
24
24
  Percent: /\b\d+%/,
25
25
  String: /"[^"]*"|'[^']*'/,
26
26
  IdTerminal: /[_]*[a-zA-Z][-\w]*/,
27
+ Hex: /[a-zA-Z0-9]+/,
27
28
  };
28
29
 
29
30
  export type ArrowType = 'crow' | 'diamond' | 'dot' | 'none' | 'normal' | 'odiamond' | 'odot' | 'onormal' | 'open' | 'vee';
@@ -38,6 +39,18 @@ export function isBorderStyleValue(item: unknown): item is BorderStyleValue {
38
39
  return isLineOptions(item) || item === 'none';
39
40
  }
40
41
 
42
+ export type CustomColorId = 'element' | 'model' | ArrowType | ElementShape | LineOptions | string;
43
+
44
+ export function isCustomColorId(item: unknown): item is CustomColorId {
45
+ return isElementShape(item) || isArrowType(item) || isLineOptions(item) || item === 'element' || item === 'model' || (typeof item === 'string' && (/[_]*[a-zA-Z][-\w]*/.test(item)));
46
+ }
47
+
48
+ export type CustomColorValue = string;
49
+
50
+ export function isCustomColorValue(item: unknown): item is CustomColorValue {
51
+ return typeof item === 'string';
52
+ }
53
+
41
54
  export type DotId = string;
42
55
 
43
56
  export function isDotId(item: unknown): item is DotId {
@@ -132,14 +145,6 @@ export function isPredicate(item: unknown): item is Predicate {
132
145
  return reflection.isInstance(item, Predicate);
133
146
  }
134
147
 
135
- export type Relation = ExplicitRelation | ImplicitRelation;
136
-
137
- export const Relation = 'Relation';
138
-
139
- export function isRelation(item: unknown): item is Relation {
140
- return reflection.isInstance(item, Relation);
141
- }
142
-
143
148
  export type RelationExpression = DirectedRelationExpression | InOutRelationExpression | IncomingRelationExpression | OutgoingRelationExpression;
144
149
 
145
150
  export const RelationExpression = 'RelationExpression';
@@ -329,8 +334,9 @@ export function isBorderProperty(item: unknown): item is BorderProperty {
329
334
  export interface ColorProperty extends AstNode {
330
335
  readonly $container: CustomElementProperties | CustomRelationProperties | ElementStyleProperty | RelationStyleProperty | SpecificationRelationshipKind | ViewRuleStyle;
331
336
  readonly $type: 'ColorProperty';
337
+ customColor?: Reference<CustomColor>;
332
338
  key: 'color';
333
- value: ThemeColor;
339
+ themeColor?: ThemeColor;
334
340
  }
335
341
 
336
342
  export const ColorProperty = 'ColorProperty';
@@ -339,6 +345,18 @@ export function isColorProperty(item: unknown): item is ColorProperty {
339
345
  return reflection.isInstance(item, ColorProperty);
340
346
  }
341
347
 
348
+ export interface CustomColor extends AstNode {
349
+ readonly $container: SpecificationColor;
350
+ readonly $type: 'CustomColor';
351
+ name: CustomColorId;
352
+ }
353
+
354
+ export const CustomColor = 'CustomColor';
355
+
356
+ export function isCustomColor(item: unknown): item is CustomColor {
357
+ return reflection.isInstance(item, CustomColor);
358
+ }
359
+
342
360
  export interface CustomElementProperties extends AstNode {
343
361
  readonly $container: ElementPredicateWith;
344
362
  readonly $type: 'CustomElementProperties';
@@ -552,7 +570,7 @@ export function isElementPredicateWith(item: unknown): item is ElementPredicateW
552
570
  }
553
571
 
554
572
  export interface ElementRef extends AstNode {
555
- readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | DynamicViewStep | ElementDescedantsExpression | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | ElementRef | ElementView | ExpandElementExpression | ExplicitRelation | ImplicitRelation | IncomingRelationExpression | OutgoingRelationExpression | Predicates;
573
+ readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | DynamicViewStep | ElementDescedantsExpression | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | ElementRef | ElementView | ExpandElementExpression | IncomingRelationExpression | OutgoingRelationExpression | Predicates | Relation;
556
574
  readonly $type: 'ElementRef';
557
575
  el: Reference<Element>;
558
576
  parent?: ElementRef;
@@ -668,24 +686,6 @@ export function isExpandElementExpression(item: unknown): item is ExpandElementE
668
686
  return reflection.isInstance(item, ExpandElementExpression);
669
687
  }
670
688
 
671
- export interface ExplicitRelation extends AstNode {
672
- readonly $container: ElementBody | ExtendElementBody | Model;
673
- readonly $type: 'ExplicitRelation';
674
- body?: RelationBody;
675
- kind?: Reference<RelationshipKind>;
676
- source: ElementRef;
677
- tags?: Tags;
678
- target: ElementRef;
679
- technology?: string;
680
- title?: string;
681
- }
682
-
683
- export const ExplicitRelation = 'ExplicitRelation';
684
-
685
- export function isExplicitRelation(item: unknown): item is ExplicitRelation {
686
- return reflection.isInstance(item, ExplicitRelation);
687
- }
688
-
689
689
  export interface ExtendElement extends AstNode {
690
690
  readonly $container: Model;
691
691
  readonly $type: 'ExtendElement';
@@ -702,7 +702,7 @@ export function isExtendElement(item: unknown): item is ExtendElement {
702
702
  export interface ExtendElementBody extends AstNode {
703
703
  readonly $container: ExtendElement;
704
704
  readonly $type: 'ExtendElementBody';
705
- elements: Array<Element | ExplicitRelation>;
705
+ elements: Array<Element | Relation>;
706
706
  }
707
707
 
708
708
  export const ExtendElementBody = 'ExtendElementBody';
@@ -738,23 +738,6 @@ export function isIconProperty(item: unknown): item is IconProperty {
738
738
  return reflection.isInstance(item, IconProperty);
739
739
  }
740
740
 
741
- export interface ImplicitRelation extends AstNode {
742
- readonly $container: ElementBody;
743
- readonly $type: 'ImplicitRelation';
744
- body?: RelationBody;
745
- kind?: Reference<RelationshipKind>;
746
- tags?: Tags;
747
- target: ElementRef;
748
- technology?: string;
749
- title?: string;
750
- }
751
-
752
- export const ImplicitRelation = 'ImplicitRelation';
753
-
754
- export function isImplicitRelation(item: unknown): item is ImplicitRelation {
755
- return reflection.isInstance(item, ImplicitRelation);
756
- }
757
-
758
741
  export interface IncludePredicate extends AstNode {
759
742
  readonly $container: ElementViewBody;
760
743
  readonly $type: 'IncludePredicate';
@@ -884,7 +867,7 @@ export function isMetadataBody(item: unknown): item is MetadataBody {
884
867
  export interface Model extends AstNode {
885
868
  readonly $container: LikeC4Grammar;
886
869
  readonly $type: 'Model';
887
- elements: Array<Element | ExplicitRelation | ExtendElement>;
870
+ elements: Array<Element | ExtendElement | Relation>;
888
871
  name: 'model';
889
872
  }
890
873
 
@@ -973,8 +956,26 @@ export function isPredicates(item: unknown): item is Predicates {
973
956
  return reflection.isInstance(item, Predicates);
974
957
  }
975
958
 
959
+ export interface Relation extends AstNode {
960
+ readonly $container: ElementBody | ExtendElementBody | Model;
961
+ readonly $type: 'Relation';
962
+ body?: RelationBody;
963
+ kind?: Reference<RelationshipKind>;
964
+ source?: ElementRef;
965
+ tags?: Tags;
966
+ target: ElementRef;
967
+ technology?: string;
968
+ title?: string;
969
+ }
970
+
971
+ export const Relation = 'Relation';
972
+
973
+ export function isRelation(item: unknown): item is Relation {
974
+ return reflection.isInstance(item, Relation);
975
+ }
976
+
976
977
  export interface RelationBody extends AstNode {
977
- readonly $container: ExplicitRelation | ImplicitRelation;
978
+ readonly $container: Relation;
978
979
  readonly $type: 'RelationBody';
979
980
  props: Array<RelationProperty>;
980
981
  tags?: Tags;
@@ -1063,6 +1064,19 @@ export function isShapeProperty(item: unknown): item is ShapeProperty {
1063
1064
  return reflection.isInstance(item, ShapeProperty);
1064
1065
  }
1065
1066
 
1067
+ export interface SpecificationColor extends AstNode {
1068
+ readonly $container: SpecificationRule;
1069
+ readonly $type: 'SpecificationColor';
1070
+ color: CustomColorValue;
1071
+ name: CustomColor;
1072
+ }
1073
+
1074
+ export const SpecificationColor = 'SpecificationColor';
1075
+
1076
+ export function isSpecificationColor(item: unknown): item is SpecificationColor {
1077
+ return reflection.isInstance(item, SpecificationColor);
1078
+ }
1079
+
1066
1080
  export interface SpecificationElementKind extends AstNode {
1067
1081
  readonly $container: SpecificationRule;
1068
1082
  readonly $type: 'SpecificationElementKind';
@@ -1118,6 +1132,7 @@ export function isSpecificationRelationshipStringProperty(item: unknown): item i
1118
1132
  export interface SpecificationRule extends AstNode {
1119
1133
  readonly $container: LikeC4Grammar;
1120
1134
  readonly $type: 'SpecificationRule';
1135
+ colors: Array<SpecificationColor>;
1121
1136
  elements: Array<SpecificationElementKind>;
1122
1137
  name: 'specification';
1123
1138
  relationships: Array<SpecificationRelationshipKind>;
@@ -1155,7 +1170,7 @@ export function isTag(item: unknown): item is Tag {
1155
1170
  }
1156
1171
 
1157
1172
  export interface Tags extends AstNode {
1158
- readonly $container: DynamicViewBody | ElementBody | ElementViewBody | ExplicitRelation | ImplicitRelation | RelationBody | Tags;
1173
+ readonly $container: DynamicViewBody | ElementBody | ElementViewBody | Relation | RelationBody | Tags;
1159
1174
  readonly $type: 'Tags';
1160
1175
  prev?: Tags;
1161
1176
  values: Array<Reference<Tag>>;
@@ -1327,6 +1342,7 @@ export type LikeC4AstType = {
1327
1342
  ArrowProperty: ArrowProperty
1328
1343
  BorderProperty: BorderProperty
1329
1344
  ColorProperty: ColorProperty
1345
+ CustomColor: CustomColor
1330
1346
  CustomElementProperties: CustomElementProperties
1331
1347
  CustomRelationProperties: CustomRelationProperties
1332
1348
  DirectedRelationExpression: DirectedRelationExpression
@@ -1357,12 +1373,10 @@ export type LikeC4AstType = {
1357
1373
  ElementViewRef: ElementViewRef
1358
1374
  ExcludePredicate: ExcludePredicate
1359
1375
  ExpandElementExpression: ExpandElementExpression
1360
- ExplicitRelation: ExplicitRelation
1361
1376
  ExtendElement: ExtendElement
1362
1377
  ExtendElementBody: ExtendElementBody
1363
1378
  FqnElementRef: FqnElementRef
1364
1379
  IconProperty: IconProperty
1365
- ImplicitRelation: ImplicitRelation
1366
1380
  InOutRelationExpression: InOutRelationExpression
1367
1381
  IncludePredicate: IncludePredicate
1368
1382
  IncomingRelationExpression: IncomingRelationExpression
@@ -1396,6 +1410,7 @@ export type LikeC4AstType = {
1396
1410
  RelationshipKind: RelationshipKind
1397
1411
  RelationshipStyleProperty: RelationshipStyleProperty
1398
1412
  ShapeProperty: ShapeProperty
1413
+ SpecificationColor: SpecificationColor
1399
1414
  SpecificationElementKind: SpecificationElementKind
1400
1415
  SpecificationElementStringProperty: SpecificationElementStringProperty
1401
1416
  SpecificationRelationshipKind: SpecificationRelationshipKind
@@ -1433,7 +1448,7 @@ export type LikeC4AstType = {
1433
1448
  export class LikeC4AstReflection extends AbstractAstReflection {
1434
1449
 
1435
1450
  getAllTypes(): string[] {
1436
- return [ArrowProperty, BorderProperty, ColorProperty, CustomElementProperties, CustomRelationProperties, DirectedRelationExpression, DynamicView, DynamicViewBody, DynamicViewIncludePredicate, DynamicViewPredicateIterator, DynamicViewRule, DynamicViewStep, Element, ElementBody, ElementDescedantsExpression, ElementExpression, ElementExpressionsIterator, ElementKind, ElementKindExpression, ElementPredicate, ElementPredicateOrWhere, ElementPredicateWhere, ElementPredicateWith, ElementProperty, ElementRef, ElementStringProperty, ElementStyleProperty, ElementTagExpression, ElementView, ElementViewBody, ElementViewRef, ExcludePredicate, ExpandElementExpression, ExplicitRelation, ExtendElement, ExtendElementBody, FqnElementRef, IconProperty, ImplicitRelation, InOutRelationExpression, IncludePredicate, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelViews, NavigateToProperty, NotationProperty, OpacityProperty, OutgoingRelationExpression, Predicate, Predicates, Relation, RelationBody, RelationExpression, RelationPredicate, RelationPredicateOrWhere, RelationPredicateWhere, RelationPredicateWith, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, SpecificationElementKind, SpecificationElementStringProperty, SpecificationRelationshipKind, SpecificationRelationshipStringProperty, SpecificationRule, SpecificationTag, StringProperty, StyleProperty, Tag, Tags, ViewProperty, ViewRef, ViewRule, ViewRuleAutoLayout, ViewRulePredicate, ViewRuleStyle, ViewStringProperty, WhereBinaryExpression, WhereElement, WhereElementExpression, WhereElementKind, WhereElementNegation, WhereElementTag, WhereExpression, WhereKindEqual, WhereRelation, WhereRelationExpression, WhereRelationKind, WhereRelationNegation, WhereRelationTag, WhereTagEqual, WildcardExpression];
1451
+ return [ArrowProperty, BorderProperty, ColorProperty, CustomColor, CustomElementProperties, CustomRelationProperties, DirectedRelationExpression, DynamicView, DynamicViewBody, DynamicViewIncludePredicate, DynamicViewPredicateIterator, DynamicViewRule, DynamicViewStep, Element, ElementBody, ElementDescedantsExpression, ElementExpression, ElementExpressionsIterator, ElementKind, ElementKindExpression, ElementPredicate, ElementPredicateOrWhere, ElementPredicateWhere, ElementPredicateWith, ElementProperty, ElementRef, ElementStringProperty, ElementStyleProperty, ElementTagExpression, ElementView, ElementViewBody, ElementViewRef, ExcludePredicate, ExpandElementExpression, ExtendElement, ExtendElementBody, FqnElementRef, IconProperty, InOutRelationExpression, IncludePredicate, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelViews, NavigateToProperty, NotationProperty, OpacityProperty, OutgoingRelationExpression, Predicate, Predicates, Relation, RelationBody, RelationExpression, RelationPredicate, RelationPredicateOrWhere, RelationPredicateWhere, RelationPredicateWith, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, SpecificationColor, SpecificationElementKind, SpecificationElementStringProperty, SpecificationRelationshipKind, SpecificationRelationshipStringProperty, SpecificationRule, SpecificationTag, StringProperty, StyleProperty, Tag, Tags, ViewProperty, ViewRef, ViewRule, ViewRuleAutoLayout, ViewRulePredicate, ViewRuleStyle, ViewStringProperty, WhereBinaryExpression, WhereElement, WhereElementExpression, WhereElementKind, WhereElementNegation, WhereElementTag, WhereExpression, WhereKindEqual, WhereRelation, WhereRelationExpression, WhereRelationKind, WhereRelationNegation, WhereRelationTag, WhereTagEqual, WildcardExpression];
1437
1452
  }
1438
1453
 
1439
1454
  protected override computeIsSubtype(subtype: string, supertype: string): boolean {
@@ -1493,10 +1508,6 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1493
1508
  case IncludePredicate: {
1494
1509
  return this.isSubtype(ViewRulePredicate, supertype);
1495
1510
  }
1496
- case ExplicitRelation:
1497
- case ImplicitRelation: {
1498
- return this.isSubtype(Relation, supertype);
1499
- }
1500
1511
  case IconProperty: {
1501
1512
  return this.isSubtype(ElementProperty, supertype) || this.isSubtype(StyleProperty, supertype);
1502
1513
  }
@@ -1575,10 +1586,12 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1575
1586
  getReferenceType(refInfo: ReferenceInfo): string {
1576
1587
  const referenceId = `${refInfo.container.$type}:${refInfo.property}`;
1577
1588
  switch (referenceId) {
1589
+ case 'ColorProperty:customColor': {
1590
+ return CustomColor;
1591
+ }
1578
1592
  case 'DynamicViewStep:kind':
1579
- case 'ExplicitRelation:kind':
1580
- case 'ImplicitRelation:kind':
1581
1593
  case 'OutgoingRelationExpression:kind':
1594
+ case 'Relation:kind':
1582
1595
  case 'WhereRelationKind:value': {
1583
1596
  return RelationshipKind;
1584
1597
  }
@@ -1636,8 +1649,17 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1636
1649
  return {
1637
1650
  name: ColorProperty,
1638
1651
  properties: [
1652
+ { name: 'customColor' },
1639
1653
  { name: 'key' },
1640
- { name: 'value' }
1654
+ { name: 'themeColor' }
1655
+ ]
1656
+ };
1657
+ }
1658
+ case CustomColor: {
1659
+ return {
1660
+ name: CustomColor,
1661
+ properties: [
1662
+ { name: 'name' }
1641
1663
  ]
1642
1664
  };
1643
1665
  }
@@ -1870,20 +1892,6 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1870
1892
  ]
1871
1893
  };
1872
1894
  }
1873
- case ExplicitRelation: {
1874
- return {
1875
- name: ExplicitRelation,
1876
- properties: [
1877
- { name: 'body' },
1878
- { name: 'kind' },
1879
- { name: 'source' },
1880
- { name: 'tags' },
1881
- { name: 'target' },
1882
- { name: 'technology' },
1883
- { name: 'title' }
1884
- ]
1885
- };
1886
- }
1887
1895
  case ExtendElement: {
1888
1896
  return {
1889
1897
  name: ExtendElement,
@@ -1920,19 +1928,6 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1920
1928
  ]
1921
1929
  };
1922
1930
  }
1923
- case ImplicitRelation: {
1924
- return {
1925
- name: ImplicitRelation,
1926
- properties: [
1927
- { name: 'body' },
1928
- { name: 'kind' },
1929
- { name: 'tags' },
1930
- { name: 'target' },
1931
- { name: 'technology' },
1932
- { name: 'title' }
1933
- ]
1934
- };
1935
- }
1936
1931
  case IncludePredicate: {
1937
1932
  return {
1938
1933
  name: IncludePredicate,
@@ -2084,6 +2079,20 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2084
2079
  ]
2085
2080
  };
2086
2081
  }
2082
+ case Relation: {
2083
+ return {
2084
+ name: Relation,
2085
+ properties: [
2086
+ { name: 'body' },
2087
+ { name: 'kind' },
2088
+ { name: 'source' },
2089
+ { name: 'tags' },
2090
+ { name: 'target' },
2091
+ { name: 'technology' },
2092
+ { name: 'title' }
2093
+ ]
2094
+ };
2095
+ }
2087
2096
  case RelationBody: {
2088
2097
  return {
2089
2098
  name: RelationBody,
@@ -2146,6 +2155,15 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2146
2155
  ]
2147
2156
  };
2148
2157
  }
2158
+ case SpecificationColor: {
2159
+ return {
2160
+ name: SpecificationColor,
2161
+ properties: [
2162
+ { name: 'color' },
2163
+ { name: 'name' }
2164
+ ]
2165
+ };
2166
+ }
2149
2167
  case SpecificationElementKind: {
2150
2168
  return {
2151
2169
  name: SpecificationElementKind,
@@ -2186,6 +2204,7 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2186
2204
  return {
2187
2205
  name: SpecificationRule,
2188
2206
  properties: [
2207
+ { name: 'colors', defaultValue: [] },
2189
2208
  { name: 'elements', defaultValue: [] },
2190
2209
  { name: 'name' },
2191
2210
  { name: 'relationships', defaultValue: [] },