@likec4/language-server 1.7.4 → 1.8.1

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.
@@ -76,7 +76,7 @@ export function isElementPredicateOrWhere(item: unknown): item is ElementPredica
76
76
  return reflection.isInstance(item, ElementPredicateOrWhere);
77
77
  }
78
78
 
79
- export type ElementProperty = ElementStringProperty | IconProperty | LinkProperty | StyleProperties;
79
+ export type ElementProperty = ElementStringProperty | ElementStyleProperty | IconProperty | LinkProperty | MetadataProperty;
80
80
 
81
81
  export const ElementProperty = 'ElementProperty';
82
82
 
@@ -116,20 +116,20 @@ export function isLineOptions(item: unknown): item is LineOptions {
116
116
  return item === 'solid' || item === 'dashed' || item === 'dotted';
117
117
  }
118
118
 
119
- export type Predicate = ElementPredicate | RelationPredicate;
119
+ export type MetadataProperty = MetadataBody;
120
120
 
121
- export const Predicate = 'Predicate';
121
+ export const MetadataProperty = 'MetadataProperty';
122
122
 
123
- export function isPredicate(item: unknown): item is Predicate {
124
- return reflection.isInstance(item, Predicate);
123
+ export function isMetadataProperty(item: unknown): item is MetadataProperty {
124
+ return reflection.isInstance(item, MetadataProperty);
125
125
  }
126
126
 
127
- export type Relation = ExplicitRelation | ImplicitRelation;
127
+ export type Predicate = ElementPredicate | RelationPredicate;
128
128
 
129
- export const Relation = 'Relation';
129
+ export const Predicate = 'Predicate';
130
130
 
131
- export function isRelation(item: unknown): item is Relation {
132
- return reflection.isInstance(item, Relation);
131
+ export function isPredicate(item: unknown): item is Predicate {
132
+ return reflection.isInstance(item, Predicate);
133
133
  }
134
134
 
135
135
  export type RelationExpression = DirectedRelationExpression | InOutRelationExpression | IncomingRelationExpression | OutgoingRelationExpression;
@@ -156,7 +156,7 @@ export function isRelationPredicateOrWhere(item: unknown): item is RelationPredi
156
156
  return reflection.isInstance(item, RelationPredicateOrWhere);
157
157
  }
158
158
 
159
- export type RelationProperty = LinkProperty | RelationStringProperty | RelationStyleProperty;
159
+ export type RelationProperty = LinkProperty | MetadataProperty | RelationStringProperty | RelationStyleProperty;
160
160
 
161
161
  export const RelationProperty = 'RelationProperty';
162
162
 
@@ -172,7 +172,7 @@ export function isRelationshipStyleProperty(item: unknown): item is Relationship
172
172
  return reflection.isInstance(item, RelationshipStyleProperty);
173
173
  }
174
174
 
175
- export type StringProperty = ElementStringProperty | RelationStringProperty | ViewStringProperty;
175
+ export type StringProperty = ElementStringProperty | MetadataAttribute | NotationProperty | RelationStringProperty | SpecificationElementStringProperty | SpecificationRelationshipStringProperty | ViewStringProperty;
176
176
 
177
177
  export const StringProperty = 'StringProperty';
178
178
 
@@ -306,7 +306,7 @@ export function isArrowProperty(item: unknown): item is ArrowProperty {
306
306
  }
307
307
 
308
308
  export interface BorderProperty extends AstNode {
309
- readonly $container: CustomElementProperties | StyleProperties | ViewRuleStyle;
309
+ readonly $container: CustomElementProperties | ElementStyleProperty | ViewRuleStyle;
310
310
  readonly $type: 'BorderProperty';
311
311
  key: 'border';
312
312
  value: BorderStyleValue;
@@ -319,7 +319,7 @@ export function isBorderProperty(item: unknown): item is BorderProperty {
319
319
  }
320
320
 
321
321
  export interface ColorProperty extends AstNode {
322
- readonly $container: CustomElementProperties | CustomRelationProperties | RelationStyleProperty | SpecificationRelationshipKind | StyleProperties | ViewRuleStyle;
322
+ readonly $container: CustomElementProperties | CustomRelationProperties | ElementStyleProperty | RelationStyleProperty | SpecificationRelationshipKind | ViewRuleStyle;
323
323
  readonly $type: 'ColorProperty';
324
324
  key: 'color';
325
325
  value: ThemeColor;
@@ -334,7 +334,7 @@ export function isColorProperty(item: unknown): item is ColorProperty {
334
334
  export interface CustomElementProperties extends AstNode {
335
335
  readonly $container: ElementPredicateWith;
336
336
  readonly $type: 'CustomElementProperties';
337
- props: Array<ElementStringProperty | NavigateToProperty | StyleProperty>;
337
+ props: Array<ElementStringProperty | NavigateToProperty | NotationProperty | StyleProperty>;
338
338
  }
339
339
 
340
340
  export const CustomElementProperties = 'CustomElementProperties';
@@ -346,7 +346,7 @@ export function isCustomElementProperties(item: unknown): item is CustomElementP
346
346
  export interface CustomRelationProperties extends AstNode {
347
347
  readonly $container: DynamicViewStep | RelationPredicateWith;
348
348
  readonly $type: 'CustomRelationProperties';
349
- props: Array<RelationStringProperty | RelationshipStyleProperty>;
349
+ props: Array<NotationProperty | RelationStringProperty | RelationshipStyleProperty>;
350
350
  }
351
351
 
352
352
  export const CustomRelationProperties = 'CustomRelationProperties';
@@ -544,7 +544,7 @@ export function isElementPredicateWith(item: unknown): item is ElementPredicateW
544
544
  }
545
545
 
546
546
  export interface ElementRef extends AstNode {
547
- readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | DynamicViewStep | ElementDescedantsExpression | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | ElementRef | ElementView | ExpandElementExpression | ExplicitRelation | ImplicitRelation | IncomingRelationExpression | OutgoingRelationExpression | Predicates;
547
+ readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | DynamicViewStep | ElementDescedantsExpression | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | ElementRef | ElementView | ExpandElementExpression | IncomingRelationExpression | OutgoingRelationExpression | Predicates | Relation;
548
548
  readonly $type: 'ElementRef';
549
549
  el: Reference<Element>;
550
550
  parent?: ElementRef;
@@ -569,6 +569,19 @@ export function isElementStringProperty(item: unknown): item is ElementStringPro
569
569
  return reflection.isInstance(item, ElementStringProperty);
570
570
  }
571
571
 
572
+ export interface ElementStyleProperty extends AstNode {
573
+ readonly $container: ElementBody | SpecificationElementKind;
574
+ readonly $type: 'ElementStyleProperty';
575
+ key: 'style';
576
+ props: Array<StyleProperty>;
577
+ }
578
+
579
+ export const ElementStyleProperty = 'ElementStyleProperty';
580
+
581
+ export function isElementStyleProperty(item: unknown): item is ElementStyleProperty {
582
+ return reflection.isInstance(item, ElementStyleProperty);
583
+ }
584
+
572
585
  export interface ElementTagExpression extends AstNode {
573
586
  readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | IncomingRelationExpression | OutgoingRelationExpression | Predicates;
574
587
  readonly $type: 'ElementTagExpression';
@@ -647,23 +660,6 @@ export function isExpandElementExpression(item: unknown): item is ExpandElementE
647
660
  return reflection.isInstance(item, ExpandElementExpression);
648
661
  }
649
662
 
650
- export interface ExplicitRelation extends AstNode {
651
- readonly $container: ElementBody | ExtendElementBody | Model;
652
- readonly $type: 'ExplicitRelation';
653
- body?: RelationBody;
654
- kind?: Reference<RelationshipKind>;
655
- source: ElementRef;
656
- tags?: Tags;
657
- target: ElementRef;
658
- title?: string;
659
- }
660
-
661
- export const ExplicitRelation = 'ExplicitRelation';
662
-
663
- export function isExplicitRelation(item: unknown): item is ExplicitRelation {
664
- return reflection.isInstance(item, ExplicitRelation);
665
- }
666
-
667
663
  export interface ExtendElement extends AstNode {
668
664
  readonly $container: Model;
669
665
  readonly $type: 'ExtendElement';
@@ -680,7 +676,7 @@ export function isExtendElement(item: unknown): item is ExtendElement {
680
676
  export interface ExtendElementBody extends AstNode {
681
677
  readonly $container: ExtendElement;
682
678
  readonly $type: 'ExtendElementBody';
683
- elements: Array<Element | ExplicitRelation>;
679
+ elements: Array<Element | Relation>;
684
680
  }
685
681
 
686
682
  export const ExtendElementBody = 'ExtendElementBody';
@@ -703,7 +699,7 @@ export function isFqnElementRef(item: unknown): item is FqnElementRef {
703
699
  }
704
700
 
705
701
  export interface IconProperty extends AstNode {
706
- readonly $container: CustomElementProperties | ElementBody | StyleProperties | ViewRuleStyle;
702
+ readonly $container: CustomElementProperties | ElementBody | ElementStyleProperty | ViewRuleStyle;
707
703
  readonly $type: 'IconProperty';
708
704
  key: 'icon';
709
705
  libicon?: Reference<LibIcon>;
@@ -716,22 +712,6 @@ export function isIconProperty(item: unknown): item is IconProperty {
716
712
  return reflection.isInstance(item, IconProperty);
717
713
  }
718
714
 
719
- export interface ImplicitRelation extends AstNode {
720
- readonly $container: ElementBody;
721
- readonly $type: 'ImplicitRelation';
722
- body?: RelationBody;
723
- kind?: Reference<RelationshipKind>;
724
- tags?: Tags;
725
- target: ElementRef;
726
- title?: string;
727
- }
728
-
729
- export const ImplicitRelation = 'ImplicitRelation';
730
-
731
- export function isImplicitRelation(item: unknown): item is ImplicitRelation {
732
- return reflection.isInstance(item, ImplicitRelation);
733
- }
734
-
735
715
  export interface IncludePredicate extends AstNode {
736
716
  readonly $container: ElementViewBody;
737
717
  readonly $type: 'IncludePredicate';
@@ -823,6 +803,7 @@ export interface LinkProperty extends AstNode {
823
803
  readonly $container: DynamicViewBody | ElementBody | ElementViewBody | RelationBody;
824
804
  readonly $type: 'LinkProperty';
825
805
  key: 'link';
806
+ title?: string;
826
807
  value: Uri;
827
808
  }
828
809
 
@@ -832,10 +813,35 @@ export function isLinkProperty(item: unknown): item is LinkProperty {
832
813
  return reflection.isInstance(item, LinkProperty);
833
814
  }
834
815
 
816
+ export interface MetadataAttribute extends AstNode {
817
+ readonly $container: MetadataBody;
818
+ readonly $type: 'MetadataAttribute';
819
+ key: string;
820
+ value: string;
821
+ }
822
+
823
+ export const MetadataAttribute = 'MetadataAttribute';
824
+
825
+ export function isMetadataAttribute(item: unknown): item is MetadataAttribute {
826
+ return reflection.isInstance(item, MetadataAttribute);
827
+ }
828
+
829
+ export interface MetadataBody extends AstNode {
830
+ readonly $container: ElementBody | RelationBody;
831
+ readonly $type: 'MetadataBody';
832
+ props: Array<MetadataAttribute>;
833
+ }
834
+
835
+ export const MetadataBody = 'MetadataBody';
836
+
837
+ export function isMetadataBody(item: unknown): item is MetadataBody {
838
+ return reflection.isInstance(item, MetadataBody);
839
+ }
840
+
835
841
  export interface Model extends AstNode {
836
842
  readonly $container: LikeC4Grammar;
837
843
  readonly $type: 'Model';
838
- elements: Array<Element | ExplicitRelation | ExtendElement>;
844
+ elements: Array<Element | ExtendElement | Relation>;
839
845
  name: 'model';
840
846
  }
841
847
 
@@ -871,8 +877,21 @@ export function isNavigateToProperty(item: unknown): item is NavigateToProperty
871
877
  return reflection.isInstance(item, NavigateToProperty);
872
878
  }
873
879
 
880
+ export interface NotationProperty extends AstNode {
881
+ readonly $container: CustomElementProperties | CustomRelationProperties | ViewRuleStyle;
882
+ readonly $type: 'NotationProperty';
883
+ key: 'notation';
884
+ value: string;
885
+ }
886
+
887
+ export const NotationProperty = 'NotationProperty';
888
+
889
+ export function isNotationProperty(item: unknown): item is NotationProperty {
890
+ return reflection.isInstance(item, NotationProperty);
891
+ }
892
+
874
893
  export interface OpacityProperty extends AstNode {
875
- readonly $container: CustomElementProperties | StyleProperties | ViewRuleStyle;
894
+ readonly $container: CustomElementProperties | ElementStyleProperty | ViewRuleStyle;
876
895
  readonly $type: 'OpacityProperty';
877
896
  key: 'opacity';
878
897
  value: string;
@@ -911,8 +930,26 @@ export function isPredicates(item: unknown): item is Predicates {
911
930
  return reflection.isInstance(item, Predicates);
912
931
  }
913
932
 
933
+ export interface Relation extends AstNode {
934
+ readonly $container: ElementBody | ExtendElementBody | Model;
935
+ readonly $type: 'Relation';
936
+ body?: RelationBody;
937
+ kind?: Reference<RelationshipKind>;
938
+ source?: ElementRef;
939
+ tags?: Tags;
940
+ target: ElementRef;
941
+ technology?: string;
942
+ title?: string;
943
+ }
944
+
945
+ export const Relation = 'Relation';
946
+
947
+ export function isRelation(item: unknown): item is Relation {
948
+ return reflection.isInstance(item, Relation);
949
+ }
950
+
914
951
  export interface RelationBody extends AstNode {
915
- readonly $container: ExplicitRelation | ImplicitRelation;
952
+ readonly $container: Relation;
916
953
  readonly $type: 'RelationBody';
917
954
  props: Array<RelationProperty>;
918
955
  tags?: Tags;
@@ -989,7 +1026,7 @@ export function isRelationStyleProperty(item: unknown): item is RelationStylePro
989
1026
  }
990
1027
 
991
1028
  export interface ShapeProperty extends AstNode {
992
- readonly $container: CustomElementProperties | StyleProperties | ViewRuleStyle;
1029
+ readonly $container: CustomElementProperties | ElementStyleProperty | ViewRuleStyle;
993
1030
  readonly $type: 'ShapeProperty';
994
1031
  key: 'shape';
995
1032
  value: ElementShape;
@@ -1005,7 +1042,7 @@ export interface SpecificationElementKind extends AstNode {
1005
1042
  readonly $container: SpecificationRule;
1006
1043
  readonly $type: 'SpecificationElementKind';
1007
1044
  kind: ElementKind;
1008
- style?: StyleProperties;
1045
+ props: Array<ElementStyleProperty | SpecificationElementStringProperty>;
1009
1046
  }
1010
1047
 
1011
1048
  export const SpecificationElementKind = 'SpecificationElementKind';
@@ -1014,11 +1051,24 @@ export function isSpecificationElementKind(item: unknown): item is Specification
1014
1051
  return reflection.isInstance(item, SpecificationElementKind);
1015
1052
  }
1016
1053
 
1054
+ export interface SpecificationElementStringProperty extends AstNode {
1055
+ readonly $container: SpecificationElementKind;
1056
+ readonly $type: 'SpecificationElementStringProperty';
1057
+ key: 'notation' | 'technology';
1058
+ value: string;
1059
+ }
1060
+
1061
+ export const SpecificationElementStringProperty = 'SpecificationElementStringProperty';
1062
+
1063
+ export function isSpecificationElementStringProperty(item: unknown): item is SpecificationElementStringProperty {
1064
+ return reflection.isInstance(item, SpecificationElementStringProperty);
1065
+ }
1066
+
1017
1067
  export interface SpecificationRelationshipKind extends AstNode {
1018
1068
  readonly $container: SpecificationRule;
1019
1069
  readonly $type: 'SpecificationRelationshipKind';
1020
1070
  kind: RelationshipKind;
1021
- props: Array<RelationshipStyleProperty>;
1071
+ props: Array<RelationshipStyleProperty | SpecificationRelationshipStringProperty>;
1022
1072
  }
1023
1073
 
1024
1074
  export const SpecificationRelationshipKind = 'SpecificationRelationshipKind';
@@ -1027,6 +1077,19 @@ export function isSpecificationRelationshipKind(item: unknown): item is Specific
1027
1077
  return reflection.isInstance(item, SpecificationRelationshipKind);
1028
1078
  }
1029
1079
 
1080
+ export interface SpecificationRelationshipStringProperty extends AstNode {
1081
+ readonly $container: SpecificationRelationshipKind;
1082
+ readonly $type: 'SpecificationRelationshipStringProperty';
1083
+ key: 'notation' | 'technology';
1084
+ value: string;
1085
+ }
1086
+
1087
+ export const SpecificationRelationshipStringProperty = 'SpecificationRelationshipStringProperty';
1088
+
1089
+ export function isSpecificationRelationshipStringProperty(item: unknown): item is SpecificationRelationshipStringProperty {
1090
+ return reflection.isInstance(item, SpecificationRelationshipStringProperty);
1091
+ }
1092
+
1030
1093
  export interface SpecificationRule extends AstNode {
1031
1094
  readonly $container: LikeC4Grammar;
1032
1095
  readonly $type: 'SpecificationRule';
@@ -1054,19 +1117,6 @@ export function isSpecificationTag(item: unknown): item is SpecificationTag {
1054
1117
  return reflection.isInstance(item, SpecificationTag);
1055
1118
  }
1056
1119
 
1057
- export interface StyleProperties extends AstNode {
1058
- readonly $container: ElementBody | SpecificationElementKind;
1059
- readonly $type: 'StyleProperties';
1060
- key: 'style';
1061
- props: Array<StyleProperty>;
1062
- }
1063
-
1064
- export const StyleProperties = 'StyleProperties';
1065
-
1066
- export function isStyleProperties(item: unknown): item is StyleProperties {
1067
- return reflection.isInstance(item, StyleProperties);
1068
- }
1069
-
1070
1120
  export interface Tag extends AstNode {
1071
1121
  readonly $container: SpecificationTag;
1072
1122
  readonly $type: 'Tag';
@@ -1080,7 +1130,7 @@ export function isTag(item: unknown): item is Tag {
1080
1130
  }
1081
1131
 
1082
1132
  export interface Tags extends AstNode {
1083
- readonly $container: DynamicViewBody | ElementBody | ElementViewBody | ExplicitRelation | ImplicitRelation | RelationBody | Tags;
1133
+ readonly $container: DynamicViewBody | ElementBody | ElementViewBody | Relation | RelationBody | Tags;
1084
1134
  readonly $type: 'Tags';
1085
1135
  prev?: Tags;
1086
1136
  values: Array<Reference<Tag>>;
@@ -1119,7 +1169,7 @@ export function isViewRuleAutoLayout(item: unknown): item is ViewRuleAutoLayout
1119
1169
  export interface ViewRuleStyle extends AstNode {
1120
1170
  readonly $container: DynamicViewBody | ElementViewBody;
1121
1171
  readonly $type: 'ViewRuleStyle';
1122
- props: Array<StyleProperty>;
1172
+ props: Array<NotationProperty | StyleProperty>;
1123
1173
  target: ElementExpressionsIterator;
1124
1174
  }
1125
1175
 
@@ -1275,18 +1325,17 @@ export type LikeC4AstType = {
1275
1325
  ElementProperty: ElementProperty
1276
1326
  ElementRef: ElementRef
1277
1327
  ElementStringProperty: ElementStringProperty
1328
+ ElementStyleProperty: ElementStyleProperty
1278
1329
  ElementTagExpression: ElementTagExpression
1279
1330
  ElementView: ElementView
1280
1331
  ElementViewBody: ElementViewBody
1281
1332
  ElementViewRef: ElementViewRef
1282
1333
  ExcludePredicate: ExcludePredicate
1283
1334
  ExpandElementExpression: ExpandElementExpression
1284
- ExplicitRelation: ExplicitRelation
1285
1335
  ExtendElement: ExtendElement
1286
1336
  ExtendElementBody: ExtendElementBody
1287
1337
  FqnElementRef: FqnElementRef
1288
1338
  IconProperty: IconProperty
1289
- ImplicitRelation: ImplicitRelation
1290
1339
  InOutRelationExpression: InOutRelationExpression
1291
1340
  IncludePredicate: IncludePredicate
1292
1341
  IncomingRelationExpression: IncomingRelationExpression
@@ -1296,9 +1345,13 @@ export type LikeC4AstType = {
1296
1345
  LikeC4View: LikeC4View
1297
1346
  LineProperty: LineProperty
1298
1347
  LinkProperty: LinkProperty
1348
+ MetadataAttribute: MetadataAttribute
1349
+ MetadataBody: MetadataBody
1350
+ MetadataProperty: MetadataProperty
1299
1351
  Model: Model
1300
1352
  ModelViews: ModelViews
1301
1353
  NavigateToProperty: NavigateToProperty
1354
+ NotationProperty: NotationProperty
1302
1355
  OpacityProperty: OpacityProperty
1303
1356
  OutgoingRelationExpression: OutgoingRelationExpression
1304
1357
  Predicate: Predicate
@@ -1317,11 +1370,12 @@ export type LikeC4AstType = {
1317
1370
  RelationshipStyleProperty: RelationshipStyleProperty
1318
1371
  ShapeProperty: ShapeProperty
1319
1372
  SpecificationElementKind: SpecificationElementKind
1373
+ SpecificationElementStringProperty: SpecificationElementStringProperty
1320
1374
  SpecificationRelationshipKind: SpecificationRelationshipKind
1375
+ SpecificationRelationshipStringProperty: SpecificationRelationshipStringProperty
1321
1376
  SpecificationRule: SpecificationRule
1322
1377
  SpecificationTag: SpecificationTag
1323
1378
  StringProperty: StringProperty
1324
- StyleProperties: StyleProperties
1325
1379
  StyleProperty: StyleProperty
1326
1380
  Tag: Tag
1327
1381
  Tags: Tags
@@ -1352,7 +1406,7 @@ export type LikeC4AstType = {
1352
1406
  export class LikeC4AstReflection extends AbstractAstReflection {
1353
1407
 
1354
1408
  getAllTypes(): string[] {
1355
- 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, ElementTagExpression, ElementView, ElementViewBody, ElementViewRef, ExcludePredicate, ExpandElementExpression, ExplicitRelation, ExtendElement, ExtendElementBody, FqnElementRef, IconProperty, ImplicitRelation, InOutRelationExpression, IncludePredicate, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, Model, ModelViews, NavigateToProperty, OpacityProperty, OutgoingRelationExpression, Predicate, Predicates, Relation, RelationBody, RelationExpression, RelationPredicate, RelationPredicateOrWhere, RelationPredicateWhere, RelationPredicateWith, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, SpecificationElementKind, SpecificationRelationshipKind, SpecificationRule, SpecificationTag, StringProperty, StyleProperties, 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];
1409
+ 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, 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, 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];
1356
1410
  }
1357
1411
 
1358
1412
  protected override computeIsSubtype(subtype: string, supertype: string): boolean {
@@ -1405,20 +1459,31 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1405
1459
  case ElementStringProperty: {
1406
1460
  return this.isSubtype(ElementProperty, supertype) || this.isSubtype(StringProperty, supertype);
1407
1461
  }
1462
+ case ElementStyleProperty: {
1463
+ return this.isSubtype(ElementProperty, supertype);
1464
+ }
1408
1465
  case ExcludePredicate:
1409
1466
  case IncludePredicate: {
1410
1467
  return this.isSubtype(ViewRulePredicate, supertype);
1411
1468
  }
1412
- case ExplicitRelation:
1413
- case ImplicitRelation: {
1414
- return this.isSubtype(Relation, supertype);
1415
- }
1416
1469
  case IconProperty: {
1417
1470
  return this.isSubtype(ElementProperty, supertype) || this.isSubtype(StyleProperty, supertype);
1418
1471
  }
1419
1472
  case LinkProperty: {
1420
1473
  return this.isSubtype(ElementProperty, supertype) || this.isSubtype(RelationProperty, supertype) || this.isSubtype(ViewProperty, supertype);
1421
1474
  }
1475
+ case MetadataAttribute:
1476
+ case NotationProperty:
1477
+ case SpecificationElementStringProperty:
1478
+ case SpecificationRelationshipStringProperty: {
1479
+ return this.isSubtype(StringProperty, supertype);
1480
+ }
1481
+ case MetadataBody: {
1482
+ return this.isSubtype(MetadataProperty, supertype);
1483
+ }
1484
+ case MetadataProperty: {
1485
+ return this.isSubtype(ElementProperty, supertype) || this.isSubtype(RelationProperty, supertype);
1486
+ }
1422
1487
  case RelationExpression:
1423
1488
  case RelationPredicateWhere: {
1424
1489
  return this.isSubtype(RelationPredicateOrWhere, supertype);
@@ -1433,9 +1498,6 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1433
1498
  case RelationStyleProperty: {
1434
1499
  return this.isSubtype(RelationProperty, supertype);
1435
1500
  }
1436
- case StyleProperties: {
1437
- return this.isSubtype(ElementProperty, supertype);
1438
- }
1439
1501
  case ViewRuleAutoLayout:
1440
1502
  case ViewRuleStyle: {
1441
1503
  return this.isSubtype(DynamicViewRule, supertype) || this.isSubtype(ViewRule, supertype);
@@ -1483,9 +1545,8 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1483
1545
  const referenceId = `${refInfo.container.$type}:${refInfo.property}`;
1484
1546
  switch (referenceId) {
1485
1547
  case 'DynamicViewStep:kind':
1486
- case 'ExplicitRelation:kind':
1487
- case 'ImplicitRelation:kind':
1488
1548
  case 'OutgoingRelationExpression:kind':
1549
+ case 'Relation:kind':
1489
1550
  case 'WhereRelationKind:value': {
1490
1551
  return RelationshipKind;
1491
1552
  }
@@ -1714,6 +1775,15 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1714
1775
  ]
1715
1776
  };
1716
1777
  }
1778
+ case ElementStyleProperty: {
1779
+ return {
1780
+ name: ElementStyleProperty,
1781
+ properties: [
1782
+ { name: 'key' },
1783
+ { name: 'props', defaultValue: [] }
1784
+ ]
1785
+ };
1786
+ }
1717
1787
  case ElementTagExpression: {
1718
1788
  return {
1719
1789
  name: ElementTagExpression,
@@ -1768,19 +1838,6 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1768
1838
  ]
1769
1839
  };
1770
1840
  }
1771
- case ExplicitRelation: {
1772
- return {
1773
- name: ExplicitRelation,
1774
- properties: [
1775
- { name: 'body' },
1776
- { name: 'kind' },
1777
- { name: 'source' },
1778
- { name: 'tags' },
1779
- { name: 'target' },
1780
- { name: 'title' }
1781
- ]
1782
- };
1783
- }
1784
1841
  case ExtendElement: {
1785
1842
  return {
1786
1843
  name: ExtendElement,
@@ -1817,18 +1874,6 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1817
1874
  ]
1818
1875
  };
1819
1876
  }
1820
- case ImplicitRelation: {
1821
- return {
1822
- name: ImplicitRelation,
1823
- properties: [
1824
- { name: 'body' },
1825
- { name: 'kind' },
1826
- { name: 'tags' },
1827
- { name: 'target' },
1828
- { name: 'title' }
1829
- ]
1830
- };
1831
- }
1832
1877
  case IncludePredicate: {
1833
1878
  return {
1834
1879
  name: IncludePredicate,
@@ -1892,12 +1937,30 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1892
1937
  case LinkProperty: {
1893
1938
  return {
1894
1939
  name: LinkProperty,
1940
+ properties: [
1941
+ { name: 'key' },
1942
+ { name: 'title' },
1943
+ { name: 'value' }
1944
+ ]
1945
+ };
1946
+ }
1947
+ case MetadataAttribute: {
1948
+ return {
1949
+ name: MetadataAttribute,
1895
1950
  properties: [
1896
1951
  { name: 'key' },
1897
1952
  { name: 'value' }
1898
1953
  ]
1899
1954
  };
1900
1955
  }
1956
+ case MetadataBody: {
1957
+ return {
1958
+ name: MetadataBody,
1959
+ properties: [
1960
+ { name: 'props', defaultValue: [] }
1961
+ ]
1962
+ };
1963
+ }
1901
1964
  case Model: {
1902
1965
  return {
1903
1966
  name: Model,
@@ -1925,6 +1988,15 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1925
1988
  ]
1926
1989
  };
1927
1990
  }
1991
+ case NotationProperty: {
1992
+ return {
1993
+ name: NotationProperty,
1994
+ properties: [
1995
+ { name: 'key' },
1996
+ { name: 'value' }
1997
+ ]
1998
+ };
1999
+ }
1928
2000
  case OpacityProperty: {
1929
2001
  return {
1930
2002
  name: OpacityProperty,
@@ -1953,6 +2025,20 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1953
2025
  ]
1954
2026
  };
1955
2027
  }
2028
+ case Relation: {
2029
+ return {
2030
+ name: Relation,
2031
+ properties: [
2032
+ { name: 'body' },
2033
+ { name: 'kind' },
2034
+ { name: 'source' },
2035
+ { name: 'tags' },
2036
+ { name: 'target' },
2037
+ { name: 'technology' },
2038
+ { name: 'title' }
2039
+ ]
2040
+ };
2041
+ }
1956
2042
  case RelationBody: {
1957
2043
  return {
1958
2044
  name: RelationBody,
@@ -2020,7 +2106,16 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2020
2106
  name: SpecificationElementKind,
2021
2107
  properties: [
2022
2108
  { name: 'kind' },
2023
- { name: 'style' }
2109
+ { name: 'props', defaultValue: [] }
2110
+ ]
2111
+ };
2112
+ }
2113
+ case SpecificationElementStringProperty: {
2114
+ return {
2115
+ name: SpecificationElementStringProperty,
2116
+ properties: [
2117
+ { name: 'key' },
2118
+ { name: 'value' }
2024
2119
  ]
2025
2120
  };
2026
2121
  }
@@ -2033,6 +2128,15 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2033
2128
  ]
2034
2129
  };
2035
2130
  }
2131
+ case SpecificationRelationshipStringProperty: {
2132
+ return {
2133
+ name: SpecificationRelationshipStringProperty,
2134
+ properties: [
2135
+ { name: 'key' },
2136
+ { name: 'value' }
2137
+ ]
2138
+ };
2139
+ }
2036
2140
  case SpecificationRule: {
2037
2141
  return {
2038
2142
  name: SpecificationRule,
@@ -2052,15 +2156,6 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2052
2156
  ]
2053
2157
  };
2054
2158
  }
2055
- case StyleProperties: {
2056
- return {
2057
- name: StyleProperties,
2058
- properties: [
2059
- { name: 'key' },
2060
- { name: 'props', defaultValue: [] }
2061
- ]
2062
- };
2063
- }
2064
2159
  case Tag: {
2065
2160
  return {
2066
2161
  name: Tag,