@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.
- package/contrib/likec4.tmLanguage.json +1 -1
- package/package.json +9 -9
- package/src/ast.ts +34 -12
- package/src/generated/ast.ts +215 -120
- package/src/generated/grammar.ts +1 -1
- package/src/like-c4.langium +63 -23
- package/src/lsp/SemanticTokenProvider.ts +2 -2
- package/src/model/model-builder.ts +30 -13
- package/src/model/model-parser.ts +92 -22
- package/src/model-graph/compute-view/compute.ts +27 -5
- package/src/model-graph/dynamic-view/compute.ts +11 -3
- package/src/model-graph/utils/applyCustomElementProperties.ts +4 -3
- package/src/model-graph/utils/applyViewRuleStyles.ts +3 -0
- package/src/model-graph/utils/buildElementNotations.ts +63 -0
- package/src/references/scope-computation.ts +5 -5
- package/src/references/scope-provider.ts +21 -9
- package/src/validation/_shared.ts +24 -0
- package/src/validation/dynamic-view-rule.ts +0 -6
- package/src/validation/element.ts +9 -9
- package/src/validation/index.ts +2 -1
- package/src/validation/property-checks.ts +1 -1
- package/src/validation/relation.ts +45 -39
- package/src/validation/specification.ts +15 -2
- package/src/validation/view.ts +7 -0
- package/src/view-utils/view-hash.ts +12 -18
package/src/generated/ast.ts
CHANGED
|
@@ -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 |
|
|
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
|
|
119
|
+
export type MetadataProperty = MetadataBody;
|
|
120
120
|
|
|
121
|
-
export const
|
|
121
|
+
export const MetadataProperty = 'MetadataProperty';
|
|
122
122
|
|
|
123
|
-
export function
|
|
124
|
-
return reflection.isInstance(item,
|
|
123
|
+
export function isMetadataProperty(item: unknown): item is MetadataProperty {
|
|
124
|
+
return reflection.isInstance(item, MetadataProperty);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
export type
|
|
127
|
+
export type Predicate = ElementPredicate | RelationPredicate;
|
|
128
128
|
|
|
129
|
-
export const
|
|
129
|
+
export const Predicate = 'Predicate';
|
|
130
130
|
|
|
131
|
-
export function
|
|
132
|
-
return reflection.isInstance(item,
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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:
|
|
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 |
|
|
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
|
-
|
|
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 |
|
|
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,
|
|
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: '
|
|
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,
|