@likec4/language-server 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +19 -8
  2. package/src/ast.ts +2 -0
  3. package/src/generated/ast.ts +157 -123
  4. package/src/generated/grammar.ts +2 -2
  5. package/src/generated/module.ts +1 -1
  6. package/src/like-c4.langium +53 -34
  7. package/src/logger.ts +21 -7
  8. package/src/lsp/CompletionProvider.ts +7 -0
  9. package/src/lsp/SemanticTokenProvider.ts +78 -17
  10. package/src/lsp/index.ts +1 -0
  11. package/src/model/model-builder.ts +3 -39
  12. package/src/model/model-parser.ts +19 -4
  13. package/src/model-change/ModelChanges.ts +58 -53
  14. package/src/model-change/changeElementStyle.ts +5 -6
  15. package/src/model-change/saveManualLayout.ts +43 -0
  16. package/src/model-graph/LikeC4ModelGraph.ts +304 -0
  17. package/src/model-graph/compute-view/__test__/fixture.ts +438 -0
  18. package/src/model-graph/compute-view/compute.ts +430 -0
  19. package/src/model-graph/compute-view/index.ts +33 -0
  20. package/src/model-graph/compute-view/predicates.ts +404 -0
  21. package/src/model-graph/dynamic-view/__test__/fixture.ts +56 -0
  22. package/src/model-graph/dynamic-view/compute.ts +198 -0
  23. package/src/model-graph/dynamic-view/index.ts +29 -0
  24. package/src/model-graph/index.ts +3 -0
  25. package/src/model-graph/utils/applyElementCustomProperties.ts +49 -0
  26. package/src/model-graph/utils/applyViewRuleStyles.ts +68 -0
  27. package/src/model-graph/utils/buildComputeNodes.ts +61 -0
  28. package/src/model-graph/utils/sortNodes.ts +105 -0
  29. package/src/module.ts +3 -0
  30. package/src/protocol.ts +3 -18
  31. package/src/references/scope-computation.ts +29 -11
  32. package/src/references/scope-provider.ts +22 -16
  33. package/src/validation/view.ts +9 -4
  34. package/src/view-utils/manual-layout.ts +93 -0
  35. package/contrib/likec4.monarch.ts +0 -41
  36. package/src/lsp/DocumentLinkProvider.test.ts +0 -66
@@ -1,5 +1,5 @@
1
1
  /******************************************************************************
2
- * This file was generated by langium-cli 3.0.3.
2
+ * This file was generated by langium-cli 3.1.0.
3
3
  * DO NOT EDIT MANUALLY!
4
4
  ******************************************************************************/
5
5
 
@@ -15,8 +15,9 @@ export const LikeC4Terminals = {
15
15
  URI_RELATIVE: /\.{0,2}\/[^\/]\S+/,
16
16
  DotUnderscore: /\b\._/,
17
17
  DotWildcard: /\b\.\*/,
18
- TagHash: /\#\b/,
19
- Dot: /\b\./,
18
+ Hash: /#/,
19
+ StickyDot: /\b\./,
20
+ Dot: /\./,
20
21
  NotEqual: /\!\={1,2}/,
21
22
  Eq: /\={1,2}/,
22
23
  Colon: /:/,
@@ -39,6 +40,12 @@ export function isBorderStyleValue(item: unknown): item is BorderStyleValue {
39
40
  return isLineOptions(item) || item === 'none';
40
41
  }
41
42
 
43
+ export type DotId = string;
44
+
45
+ export function isDotId(item: unknown): item is DotId {
46
+ return typeof item === 'string';
47
+ }
48
+
42
49
  export type DynamicViewRule = DynamicViewRulePredicate | ViewRuleAutoLayout | ViewRuleStyle;
43
50
 
44
51
  export const DynamicViewRule = 'DynamicViewRule';
@@ -113,6 +120,14 @@ export function isRelationshipStyleProperty(item: unknown): item is Relationship
113
120
  return reflection.isInstance(item, RelationshipStyleProperty);
114
121
  }
115
122
 
123
+ export type StringProperty = ElementStringProperty | ViewStringProperty;
124
+
125
+ export const StringProperty = 'StringProperty';
126
+
127
+ export function isStringProperty(item: unknown): item is StringProperty {
128
+ return reflection.isInstance(item, StringProperty);
129
+ }
130
+
116
131
  export type StyleProperty = BorderProperty | ColorProperty | IconProperty | OpacityProperty | ShapeProperty;
117
132
 
118
133
  export const StyleProperty = 'StyleProperty';
@@ -284,6 +299,7 @@ export function isDynamicViewBody(item: unknown): item is DynamicViewBody {
284
299
  export interface DynamicViewRulePredicate extends AstNode {
285
300
  readonly $container: DynamicViewBody;
286
301
  readonly $type: 'DynamicViewRulePredicate';
302
+ commas: Array<string>;
287
303
  expressions: Array<ViewRulePredicateExpr>;
288
304
  }
289
305
 
@@ -366,6 +382,7 @@ export function isElementKindExpr(item: unknown): item is ElementKindExpr {
366
382
  export interface ElementRef extends AstNode {
367
383
  readonly $container: CustomElementExpr | DescedantsExpr | DynamicViewRulePredicate | DynamicViewStep | ElementRef | ElementView | ExcludePredicate | ExpandElementExpr | ExplicitRelation | ImplicitRelation | IncludePredicate | IncomingExpr | OutgoingExpr | RelationExpr | ViewRuleStyle;
368
384
  readonly $type: 'ElementRef';
385
+ dot?: string;
369
386
  el: Reference<Element>;
370
387
  parent?: ElementRef;
371
388
  }
@@ -446,6 +463,7 @@ export function isElementViewRef(item: unknown): item is ElementViewRef {
446
463
  export interface ExcludePredicate extends AstNode {
447
464
  readonly $container: ElementViewBody;
448
465
  readonly $type: 'ExcludePredicate';
466
+ commas: Array<string>;
449
467
  expressions: Array<ViewRulePredicateExpr>;
450
468
  }
451
469
 
@@ -512,6 +530,7 @@ export function isExtendElementBody(item: unknown): item is ExtendElementBody {
512
530
  export interface FqnElementRef extends AstNode {
513
531
  readonly $container: ExtendElement | FqnElementRef;
514
532
  readonly $type: 'FqnElementRef';
533
+ dot?: string;
515
534
  el: Reference<Element>;
516
535
  parent?: FqnElementRef;
517
536
  }
@@ -554,6 +573,7 @@ export function isImplicitRelation(item: unknown): item is ImplicitRelation {
554
573
  export interface IncludePredicate extends AstNode {
555
574
  readonly $container: ElementViewBody;
556
575
  readonly $type: 'IncludePredicate';
576
+ commas: Array<string>;
557
577
  expressions: Array<ViewRulePredicateExpr>;
558
578
  }
559
579
 
@@ -655,6 +675,7 @@ export function isModelViews(item: unknown): item is ModelViews {
655
675
  export interface NavigateToProperty extends AstNode {
656
676
  readonly $container: CustomElementExprBody;
657
677
  readonly $type: 'NavigateToProperty';
678
+ key: 'navigateTo';
658
679
  value: ViewRef;
659
680
  }
660
681
 
@@ -848,6 +869,7 @@ export function isTag(item: unknown): item is Tag {
848
869
  export interface Tags extends AstNode {
849
870
  readonly $container: DynamicViewBody | ElementBody | ElementViewBody | ExplicitRelation | ImplicitRelation | RelationBody;
850
871
  readonly $type: 'Tags';
872
+ comma: Array<string>;
851
873
  value: Array<Reference<Tag>>;
852
874
  }
853
875
 
@@ -884,6 +906,7 @@ export function isViewRuleAutoLayout(item: unknown): item is ViewRuleAutoLayout
884
906
  export interface ViewRuleStyle extends AstNode {
885
907
  readonly $container: DynamicViewBody | ElementViewBody;
886
908
  readonly $type: 'ViewRuleStyle';
909
+ commas: Array<string>;
887
910
  styleprops: Array<StyleProperty>;
888
911
  targets: Array<ElementExpr>;
889
912
  }
@@ -976,6 +999,7 @@ export type LikeC4AstType = {
976
999
  SpecificationRelationshipKind: SpecificationRelationshipKind
977
1000
  SpecificationRule: SpecificationRule
978
1001
  SpecificationTag: SpecificationTag
1002
+ StringProperty: StringProperty
979
1003
  StyleProperties: StyleProperties
980
1004
  StyleProperty: StyleProperty
981
1005
  Tag: Tag
@@ -994,7 +1018,7 @@ export type LikeC4AstType = {
994
1018
  export class LikeC4AstReflection extends AbstractAstReflection {
995
1019
 
996
1020
  getAllTypes(): string[] {
997
- return ['ArrowProperty', 'BorderProperty', 'ColorProperty', 'CustomElementExpr', 'CustomElementExprBody', 'DescedantsExpr', 'DynamicView', 'DynamicViewBody', 'DynamicViewRule', 'DynamicViewRulePredicate', 'DynamicViewStep', 'Element', 'ElementBody', 'ElementExpr', 'ElementKind', 'ElementKindExpr', 'ElementProperty', 'ElementRef', 'ElementStringProperty', 'ElementTagExpr', 'ElementView', 'ElementViewBody', 'ElementViewRef', 'ExcludePredicate', 'ExpandElementExpr', 'ExplicitRelation', 'ExtendElement', 'ExtendElementBody', 'FqnElementRef', 'IconProperty', 'ImplicitRelation', 'InOutExpr', 'IncludePredicate', 'IncomingExpr', 'LikeC4Grammar', 'LikeC4View', 'LineProperty', 'LinkProperty', 'Model', 'ModelViews', 'NavigateToProperty', 'OpacityProperty', 'OutgoingExpr', 'Relation', 'RelationBody', 'RelationExpr', 'RelationProperty', 'RelationStringProperty', 'RelationStyleProperty', 'RelationshipKind', 'RelationshipStyleProperty', 'ShapeProperty', 'SpecificationElementKind', 'SpecificationRelationshipKind', 'SpecificationRule', 'SpecificationTag', 'StyleProperties', 'StyleProperty', 'Tag', 'Tags', 'ViewProperty', 'ViewRef', 'ViewRule', 'ViewRuleAutoLayout', 'ViewRulePredicate', 'ViewRulePredicateExpr', 'ViewRuleStyle', 'ViewStringProperty', 'WildcardExpr'];
1021
+ return [ArrowProperty, BorderProperty, ColorProperty, CustomElementExpr, CustomElementExprBody, DescedantsExpr, DynamicView, DynamicViewBody, DynamicViewRule, DynamicViewRulePredicate, DynamicViewStep, Element, ElementBody, ElementExpr, ElementKind, ElementKindExpr, ElementProperty, ElementRef, ElementStringProperty, ElementTagExpr, ElementView, ElementViewBody, ElementViewRef, ExcludePredicate, ExpandElementExpr, ExplicitRelation, ExtendElement, ExtendElementBody, FqnElementRef, IconProperty, ImplicitRelation, InOutExpr, IncludePredicate, IncomingExpr, LikeC4Grammar, LikeC4View, LineProperty, LinkProperty, Model, ModelViews, NavigateToProperty, OpacityProperty, OutgoingExpr, Relation, RelationBody, RelationExpr, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, SpecificationElementKind, SpecificationRelationshipKind, SpecificationRule, SpecificationTag, StringProperty, StyleProperties, StyleProperty, Tag, Tags, ViewProperty, ViewRef, ViewRule, ViewRuleAutoLayout, ViewRulePredicate, ViewRulePredicateExpr, ViewRuleStyle, ViewStringProperty, WildcardExpr];
998
1022
  }
999
1023
 
1000
1024
  protected override computeIsSubtype(subtype: string, supertype: string): boolean {
@@ -1035,9 +1059,8 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1035
1059
  case DynamicViewRulePredicate: {
1036
1060
  return this.isSubtype(DynamicViewRule, supertype);
1037
1061
  }
1038
- case ElementStringProperty:
1039
- case StyleProperties: {
1040
- return this.isSubtype(ElementProperty, supertype);
1062
+ case ElementStringProperty: {
1063
+ return this.isSubtype(ElementProperty, supertype) || this.isSubtype(StringProperty, supertype);
1041
1064
  }
1042
1065
  case ExcludePredicate:
1043
1066
  case IncludePredicate: {
@@ -1054,6 +1077,9 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1054
1077
  case RelationStyleProperty: {
1055
1078
  return this.isSubtype(RelationProperty, supertype);
1056
1079
  }
1080
+ case StyleProperties: {
1081
+ return this.isSubtype(ElementProperty, supertype);
1082
+ }
1057
1083
  case ViewRuleAutoLayout:
1058
1084
  case ViewRuleStyle: {
1059
1085
  return this.isSubtype(DynamicViewRule, supertype) || this.isSubtype(ViewRule, supertype);
@@ -1062,7 +1088,7 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1062
1088
  return this.isSubtype(ViewRule, supertype);
1063
1089
  }
1064
1090
  case ViewStringProperty: {
1065
- return this.isSubtype(ViewProperty, supertype);
1091
+ return this.isSubtype(StringProperty, supertype) || this.isSubtype(ViewProperty, supertype);
1066
1092
  }
1067
1093
  default: {
1068
1094
  return false;
@@ -1104,70 +1130,70 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1104
1130
 
1105
1131
  getTypeMetaData(type: string): TypeMetaData {
1106
1132
  switch (type) {
1107
- case 'ArrowProperty': {
1133
+ case ArrowProperty: {
1108
1134
  return {
1109
- name: 'ArrowProperty',
1135
+ name: ArrowProperty,
1110
1136
  properties: [
1111
1137
  { name: 'key' },
1112
1138
  { name: 'value' }
1113
1139
  ]
1114
1140
  };
1115
1141
  }
1116
- case 'BorderProperty': {
1142
+ case BorderProperty: {
1117
1143
  return {
1118
- name: 'BorderProperty',
1144
+ name: BorderProperty,
1119
1145
  properties: [
1120
1146
  { name: 'key' },
1121
1147
  { name: 'value' }
1122
1148
  ]
1123
1149
  };
1124
1150
  }
1125
- case 'ColorProperty': {
1151
+ case ColorProperty: {
1126
1152
  return {
1127
- name: 'ColorProperty',
1153
+ name: ColorProperty,
1128
1154
  properties: [
1129
1155
  { name: 'key' },
1130
1156
  { name: 'value' }
1131
1157
  ]
1132
1158
  };
1133
1159
  }
1134
- case 'CustomElementExpr': {
1160
+ case CustomElementExpr: {
1135
1161
  return {
1136
- name: 'CustomElementExpr',
1162
+ name: CustomElementExpr,
1137
1163
  properties: [
1138
1164
  { name: 'body' },
1139
1165
  { name: 'target' }
1140
1166
  ]
1141
1167
  };
1142
1168
  }
1143
- case 'CustomElementExprBody': {
1169
+ case CustomElementExprBody: {
1144
1170
  return {
1145
- name: 'CustomElementExprBody',
1171
+ name: CustomElementExprBody,
1146
1172
  properties: [
1147
1173
  { name: 'props', defaultValue: [] }
1148
1174
  ]
1149
1175
  };
1150
1176
  }
1151
- case 'DescedantsExpr': {
1177
+ case DescedantsExpr: {
1152
1178
  return {
1153
- name: 'DescedantsExpr',
1179
+ name: DescedantsExpr,
1154
1180
  properties: [
1155
1181
  { name: 'parent' }
1156
1182
  ]
1157
1183
  };
1158
1184
  }
1159
- case 'DynamicView': {
1185
+ case DynamicView: {
1160
1186
  return {
1161
- name: 'DynamicView',
1187
+ name: DynamicView,
1162
1188
  properties: [
1163
1189
  { name: 'body' },
1164
1190
  { name: 'name' }
1165
1191
  ]
1166
1192
  };
1167
1193
  }
1168
- case 'DynamicViewBody': {
1194
+ case DynamicViewBody: {
1169
1195
  return {
1170
- name: 'DynamicViewBody',
1196
+ name: DynamicViewBody,
1171
1197
  properties: [
1172
1198
  { name: 'props', defaultValue: [] },
1173
1199
  { name: 'rules', defaultValue: [] },
@@ -1176,17 +1202,18 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1176
1202
  ]
1177
1203
  };
1178
1204
  }
1179
- case 'DynamicViewRulePredicate': {
1205
+ case DynamicViewRulePredicate: {
1180
1206
  return {
1181
- name: 'DynamicViewRulePredicate',
1207
+ name: DynamicViewRulePredicate,
1182
1208
  properties: [
1209
+ { name: 'commas', defaultValue: [] },
1183
1210
  { name: 'expressions', defaultValue: [] }
1184
1211
  ]
1185
1212
  };
1186
1213
  }
1187
- case 'DynamicViewStep': {
1214
+ case DynamicViewStep: {
1188
1215
  return {
1189
- name: 'DynamicViewStep',
1216
+ name: DynamicViewStep,
1190
1217
  properties: [
1191
1218
  { name: 'isBackward', defaultValue: false },
1192
1219
  { name: 'kind' },
@@ -1196,20 +1223,20 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1196
1223
  ]
1197
1224
  };
1198
1225
  }
1199
- case 'Element': {
1226
+ case Element: {
1200
1227
  return {
1201
- name: 'Element',
1228
+ name: Element,
1202
1229
  properties: [
1203
1230
  { name: 'body' },
1204
1231
  { name: 'kind' },
1205
1232
  { name: 'name' },
1206
- { name: 'props' }
1233
+ { name: 'props', defaultValue: [] }
1207
1234
  ]
1208
1235
  };
1209
1236
  }
1210
- case 'ElementBody': {
1237
+ case ElementBody: {
1211
1238
  return {
1212
- name: 'ElementBody',
1239
+ name: ElementBody,
1213
1240
  properties: [
1214
1241
  { name: 'elements', defaultValue: [] },
1215
1242
  { name: 'props', defaultValue: [] },
@@ -1217,53 +1244,54 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1217
1244
  ]
1218
1245
  };
1219
1246
  }
1220
- case 'ElementKind': {
1247
+ case ElementKind: {
1221
1248
  return {
1222
- name: 'ElementKind',
1249
+ name: ElementKind,
1223
1250
  properties: [
1224
1251
  { name: 'name' }
1225
1252
  ]
1226
1253
  };
1227
1254
  }
1228
- case 'ElementKindExpr': {
1255
+ case ElementKindExpr: {
1229
1256
  return {
1230
- name: 'ElementKindExpr',
1257
+ name: ElementKindExpr,
1231
1258
  properties: [
1232
1259
  { name: 'isEqual', defaultValue: false },
1233
1260
  { name: 'kind' }
1234
1261
  ]
1235
1262
  };
1236
1263
  }
1237
- case 'ElementRef': {
1264
+ case ElementRef: {
1238
1265
  return {
1239
- name: 'ElementRef',
1266
+ name: ElementRef,
1240
1267
  properties: [
1268
+ { name: 'dot' },
1241
1269
  { name: 'el' },
1242
1270
  { name: 'parent' }
1243
1271
  ]
1244
1272
  };
1245
1273
  }
1246
- case 'ElementStringProperty': {
1274
+ case ElementStringProperty: {
1247
1275
  return {
1248
- name: 'ElementStringProperty',
1276
+ name: ElementStringProperty,
1249
1277
  properties: [
1250
1278
  { name: 'key' },
1251
1279
  { name: 'value' }
1252
1280
  ]
1253
1281
  };
1254
1282
  }
1255
- case 'ElementTagExpr': {
1283
+ case ElementTagExpr: {
1256
1284
  return {
1257
- name: 'ElementTagExpr',
1285
+ name: ElementTagExpr,
1258
1286
  properties: [
1259
1287
  { name: 'isEqual', defaultValue: false },
1260
1288
  { name: 'tag' }
1261
1289
  ]
1262
1290
  };
1263
1291
  }
1264
- case 'ElementView': {
1292
+ case ElementView: {
1265
1293
  return {
1266
- name: 'ElementView',
1294
+ name: ElementView,
1267
1295
  properties: [
1268
1296
  { name: 'body' },
1269
1297
  { name: 'extends' },
@@ -1272,9 +1300,9 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1272
1300
  ]
1273
1301
  };
1274
1302
  }
1275
- case 'ElementViewBody': {
1303
+ case ElementViewBody: {
1276
1304
  return {
1277
- name: 'ElementViewBody',
1305
+ name: ElementViewBody,
1278
1306
  properties: [
1279
1307
  { name: 'props', defaultValue: [] },
1280
1308
  { name: 'rules', defaultValue: [] },
@@ -1282,33 +1310,34 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1282
1310
  ]
1283
1311
  };
1284
1312
  }
1285
- case 'ElementViewRef': {
1313
+ case ElementViewRef: {
1286
1314
  return {
1287
- name: 'ElementViewRef',
1315
+ name: ElementViewRef,
1288
1316
  properties: [
1289
1317
  { name: 'view' }
1290
1318
  ]
1291
1319
  };
1292
1320
  }
1293
- case 'ExcludePredicate': {
1321
+ case ExcludePredicate: {
1294
1322
  return {
1295
- name: 'ExcludePredicate',
1323
+ name: ExcludePredicate,
1296
1324
  properties: [
1325
+ { name: 'commas', defaultValue: [] },
1297
1326
  { name: 'expressions', defaultValue: [] }
1298
1327
  ]
1299
1328
  };
1300
1329
  }
1301
- case 'ExpandElementExpr': {
1330
+ case ExpandElementExpr: {
1302
1331
  return {
1303
- name: 'ExpandElementExpr',
1332
+ name: ExpandElementExpr,
1304
1333
  properties: [
1305
1334
  { name: 'parent' }
1306
1335
  ]
1307
1336
  };
1308
1337
  }
1309
- case 'ExplicitRelation': {
1338
+ case ExplicitRelation: {
1310
1339
  return {
1311
- name: 'ExplicitRelation',
1340
+ name: ExplicitRelation,
1312
1341
  properties: [
1313
1342
  { name: 'body' },
1314
1343
  { name: 'kind' },
@@ -1319,44 +1348,45 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1319
1348
  ]
1320
1349
  };
1321
1350
  }
1322
- case 'ExtendElement': {
1351
+ case ExtendElement: {
1323
1352
  return {
1324
- name: 'ExtendElement',
1353
+ name: ExtendElement,
1325
1354
  properties: [
1326
1355
  { name: 'body' },
1327
1356
  { name: 'element' }
1328
1357
  ]
1329
1358
  };
1330
1359
  }
1331
- case 'ExtendElementBody': {
1360
+ case ExtendElementBody: {
1332
1361
  return {
1333
- name: 'ExtendElementBody',
1362
+ name: ExtendElementBody,
1334
1363
  properties: [
1335
1364
  { name: 'elements', defaultValue: [] }
1336
1365
  ]
1337
1366
  };
1338
1367
  }
1339
- case 'FqnElementRef': {
1368
+ case FqnElementRef: {
1340
1369
  return {
1341
- name: 'FqnElementRef',
1370
+ name: FqnElementRef,
1342
1371
  properties: [
1372
+ { name: 'dot' },
1343
1373
  { name: 'el' },
1344
1374
  { name: 'parent' }
1345
1375
  ]
1346
1376
  };
1347
1377
  }
1348
- case 'IconProperty': {
1378
+ case IconProperty: {
1349
1379
  return {
1350
- name: 'IconProperty',
1380
+ name: IconProperty,
1351
1381
  properties: [
1352
1382
  { name: 'key' },
1353
1383
  { name: 'value' }
1354
1384
  ]
1355
1385
  };
1356
1386
  }
1357
- case 'ImplicitRelation': {
1387
+ case ImplicitRelation: {
1358
1388
  return {
1359
- name: 'ImplicitRelation',
1389
+ name: ImplicitRelation,
1360
1390
  properties: [
1361
1391
  { name: 'body' },
1362
1392
  { name: 'kind' },
@@ -1366,33 +1396,34 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1366
1396
  ]
1367
1397
  };
1368
1398
  }
1369
- case 'IncludePredicate': {
1399
+ case IncludePredicate: {
1370
1400
  return {
1371
- name: 'IncludePredicate',
1401
+ name: IncludePredicate,
1372
1402
  properties: [
1403
+ { name: 'commas', defaultValue: [] },
1373
1404
  { name: 'expressions', defaultValue: [] }
1374
1405
  ]
1375
1406
  };
1376
1407
  }
1377
- case 'IncomingExpr': {
1408
+ case IncomingExpr: {
1378
1409
  return {
1379
- name: 'IncomingExpr',
1410
+ name: IncomingExpr,
1380
1411
  properties: [
1381
1412
  { name: 'to' }
1382
1413
  ]
1383
1414
  };
1384
1415
  }
1385
- case 'InOutExpr': {
1416
+ case InOutExpr: {
1386
1417
  return {
1387
- name: 'InOutExpr',
1418
+ name: InOutExpr,
1388
1419
  properties: [
1389
1420
  { name: 'inout' }
1390
1421
  ]
1391
1422
  };
1392
1423
  }
1393
- case 'LikeC4Grammar': {
1424
+ case LikeC4Grammar: {
1394
1425
  return {
1395
- name: 'LikeC4Grammar',
1426
+ name: LikeC4Grammar,
1396
1427
  properties: [
1397
1428
  { name: 'models', defaultValue: [] },
1398
1429
  { name: 'specifications', defaultValue: [] },
@@ -1400,79 +1431,80 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1400
1431
  ]
1401
1432
  };
1402
1433
  }
1403
- case 'LineProperty': {
1434
+ case LineProperty: {
1404
1435
  return {
1405
- name: 'LineProperty',
1436
+ name: LineProperty,
1406
1437
  properties: [
1407
1438
  { name: 'key' },
1408
1439
  { name: 'value' }
1409
1440
  ]
1410
1441
  };
1411
1442
  }
1412
- case 'LinkProperty': {
1443
+ case LinkProperty: {
1413
1444
  return {
1414
- name: 'LinkProperty',
1445
+ name: LinkProperty,
1415
1446
  properties: [
1416
1447
  { name: 'key' },
1417
1448
  { name: 'value' }
1418
1449
  ]
1419
1450
  };
1420
1451
  }
1421
- case 'Model': {
1452
+ case Model: {
1422
1453
  return {
1423
- name: 'Model',
1454
+ name: Model,
1424
1455
  properties: [
1425
1456
  { name: 'elements', defaultValue: [] },
1426
1457
  { name: 'name' }
1427
1458
  ]
1428
1459
  };
1429
1460
  }
1430
- case 'ModelViews': {
1461
+ case ModelViews: {
1431
1462
  return {
1432
- name: 'ModelViews',
1463
+ name: ModelViews,
1433
1464
  properties: [
1434
1465
  { name: 'name' },
1435
1466
  { name: 'views', defaultValue: [] }
1436
1467
  ]
1437
1468
  };
1438
1469
  }
1439
- case 'NavigateToProperty': {
1470
+ case NavigateToProperty: {
1440
1471
  return {
1441
- name: 'NavigateToProperty',
1472
+ name: NavigateToProperty,
1442
1473
  properties: [
1474
+ { name: 'key' },
1443
1475
  { name: 'value' }
1444
1476
  ]
1445
1477
  };
1446
1478
  }
1447
- case 'OpacityProperty': {
1479
+ case OpacityProperty: {
1448
1480
  return {
1449
- name: 'OpacityProperty',
1481
+ name: OpacityProperty,
1450
1482
  properties: [
1451
1483
  { name: 'key' },
1452
1484
  { name: 'value' }
1453
1485
  ]
1454
1486
  };
1455
1487
  }
1456
- case 'OutgoingExpr': {
1488
+ case OutgoingExpr: {
1457
1489
  return {
1458
- name: 'OutgoingExpr',
1490
+ name: OutgoingExpr,
1459
1491
  properties: [
1460
1492
  { name: 'from' }
1461
1493
  ]
1462
1494
  };
1463
1495
  }
1464
- case 'RelationBody': {
1496
+ case RelationBody: {
1465
1497
  return {
1466
- name: 'RelationBody',
1498
+ name: RelationBody,
1467
1499
  properties: [
1468
1500
  { name: 'props', defaultValue: [] },
1469
1501
  { name: 'tags' }
1470
1502
  ]
1471
1503
  };
1472
1504
  }
1473
- case 'RelationExpr': {
1505
+ case RelationExpr: {
1474
1506
  return {
1475
- name: 'RelationExpr',
1507
+ name: RelationExpr,
1476
1508
  properties: [
1477
1509
  { name: 'isBidirectional', defaultValue: false },
1478
1510
  { name: 'source' },
@@ -1480,62 +1512,62 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1480
1512
  ]
1481
1513
  };
1482
1514
  }
1483
- case 'RelationshipKind': {
1515
+ case RelationshipKind: {
1484
1516
  return {
1485
- name: 'RelationshipKind',
1517
+ name: RelationshipKind,
1486
1518
  properties: [
1487
1519
  { name: 'name' }
1488
1520
  ]
1489
1521
  };
1490
1522
  }
1491
- case 'RelationStringProperty': {
1523
+ case RelationStringProperty: {
1492
1524
  return {
1493
- name: 'RelationStringProperty',
1525
+ name: RelationStringProperty,
1494
1526
  properties: [
1495
1527
  { name: 'key' },
1496
1528
  { name: 'value' }
1497
1529
  ]
1498
1530
  };
1499
1531
  }
1500
- case 'RelationStyleProperty': {
1532
+ case RelationStyleProperty: {
1501
1533
  return {
1502
- name: 'RelationStyleProperty',
1534
+ name: RelationStyleProperty,
1503
1535
  properties: [
1504
1536
  { name: 'key' },
1505
1537
  { name: 'props', defaultValue: [] }
1506
1538
  ]
1507
1539
  };
1508
1540
  }
1509
- case 'ShapeProperty': {
1541
+ case ShapeProperty: {
1510
1542
  return {
1511
- name: 'ShapeProperty',
1543
+ name: ShapeProperty,
1512
1544
  properties: [
1513
1545
  { name: 'key' },
1514
1546
  { name: 'value' }
1515
1547
  ]
1516
1548
  };
1517
1549
  }
1518
- case 'SpecificationElementKind': {
1550
+ case SpecificationElementKind: {
1519
1551
  return {
1520
- name: 'SpecificationElementKind',
1552
+ name: SpecificationElementKind,
1521
1553
  properties: [
1522
1554
  { name: 'kind' },
1523
1555
  { name: 'style' }
1524
1556
  ]
1525
1557
  };
1526
1558
  }
1527
- case 'SpecificationRelationshipKind': {
1559
+ case SpecificationRelationshipKind: {
1528
1560
  return {
1529
- name: 'SpecificationRelationshipKind',
1561
+ name: SpecificationRelationshipKind,
1530
1562
  properties: [
1531
1563
  { name: 'kind' },
1532
1564
  { name: 'props', defaultValue: [] }
1533
1565
  ]
1534
1566
  };
1535
1567
  }
1536
- case 'SpecificationRule': {
1568
+ case SpecificationRule: {
1537
1569
  return {
1538
- name: 'SpecificationRule',
1570
+ name: SpecificationRule,
1539
1571
  properties: [
1540
1572
  { name: 'elements', defaultValue: [] },
1541
1573
  { name: 'name' },
@@ -1544,76 +1576,78 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1544
1576
  ]
1545
1577
  };
1546
1578
  }
1547
- case 'SpecificationTag': {
1579
+ case SpecificationTag: {
1548
1580
  return {
1549
- name: 'SpecificationTag',
1581
+ name: SpecificationTag,
1550
1582
  properties: [
1551
1583
  { name: 'tag' }
1552
1584
  ]
1553
1585
  };
1554
1586
  }
1555
- case 'StyleProperties': {
1587
+ case StyleProperties: {
1556
1588
  return {
1557
- name: 'StyleProperties',
1589
+ name: StyleProperties,
1558
1590
  properties: [
1559
1591
  { name: 'key' },
1560
1592
  { name: 'props', defaultValue: [] }
1561
1593
  ]
1562
1594
  };
1563
1595
  }
1564
- case 'Tag': {
1596
+ case Tag: {
1565
1597
  return {
1566
- name: 'Tag',
1598
+ name: Tag,
1567
1599
  properties: [
1568
1600
  { name: 'name' }
1569
1601
  ]
1570
1602
  };
1571
1603
  }
1572
- case 'Tags': {
1604
+ case Tags: {
1573
1605
  return {
1574
- name: 'Tags',
1606
+ name: Tags,
1575
1607
  properties: [
1608
+ { name: 'comma', defaultValue: [] },
1576
1609
  { name: 'value', defaultValue: [] }
1577
1610
  ]
1578
1611
  };
1579
1612
  }
1580
- case 'ViewRef': {
1613
+ case ViewRef: {
1581
1614
  return {
1582
- name: 'ViewRef',
1615
+ name: ViewRef,
1583
1616
  properties: [
1584
1617
  { name: 'view' }
1585
1618
  ]
1586
1619
  };
1587
1620
  }
1588
- case 'ViewRuleAutoLayout': {
1621
+ case ViewRuleAutoLayout: {
1589
1622
  return {
1590
- name: 'ViewRuleAutoLayout',
1623
+ name: ViewRuleAutoLayout,
1591
1624
  properties: [
1592
1625
  { name: 'direction' }
1593
1626
  ]
1594
1627
  };
1595
1628
  }
1596
- case 'ViewRuleStyle': {
1629
+ case ViewRuleStyle: {
1597
1630
  return {
1598
- name: 'ViewRuleStyle',
1631
+ name: ViewRuleStyle,
1599
1632
  properties: [
1633
+ { name: 'commas', defaultValue: [] },
1600
1634
  { name: 'styleprops', defaultValue: [] },
1601
1635
  { name: 'targets', defaultValue: [] }
1602
1636
  ]
1603
1637
  };
1604
1638
  }
1605
- case 'ViewStringProperty': {
1639
+ case ViewStringProperty: {
1606
1640
  return {
1607
- name: 'ViewStringProperty',
1641
+ name: ViewStringProperty,
1608
1642
  properties: [
1609
1643
  { name: 'key' },
1610
1644
  { name: 'value' }
1611
1645
  ]
1612
1646
  };
1613
1647
  }
1614
- case 'WildcardExpr': {
1648
+ case WildcardExpr: {
1615
1649
  return {
1616
- name: 'WildcardExpr',
1650
+ name: WildcardExpr,
1617
1651
  properties: [
1618
1652
  { name: 'isWildcard', defaultValue: false }
1619
1653
  ]