@likec4/language-server 1.17.0 → 1.18.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 (94) hide show
  1. package/contrib/likec4.tmLanguage.json +1 -1
  2. package/dist/browser.cjs +1 -1
  3. package/dist/browser.d.cts +2 -2
  4. package/dist/browser.d.mts +2 -2
  5. package/dist/browser.d.ts +2 -2
  6. package/dist/browser.mjs +2 -2
  7. package/dist/index.cjs +1 -1
  8. package/dist/index.d.cts +2 -2
  9. package/dist/index.d.mts +2 -2
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.mjs +2 -2
  12. package/dist/protocol.d.cts +8 -5
  13. package/dist/protocol.d.mts +8 -5
  14. package/dist/protocol.d.ts +8 -5
  15. package/dist/shared/{language-server.DZRuJVSg.cjs → language-server.CO_nmHiL.cjs} +5605 -4215
  16. package/dist/shared/{language-server.DJo88TnT.d.cts → language-server.Da6ey08o.d.cts} +391 -110
  17. package/dist/shared/{language-server.PEjk7U9s.d.ts → language-server.De7S3e5Z.d.ts} +391 -110
  18. package/dist/shared/{language-server.BgDKnNok.d.mts → language-server.Dj4iDjtB.d.mts} +391 -110
  19. package/dist/shared/{language-server.B8qSDsWW.mjs → language-server.oO_9JoAG.mjs} +5594 -4215
  20. package/package.json +17 -31
  21. package/src/Rpc.ts +6 -3
  22. package/src/ast.ts +124 -71
  23. package/src/formatting/LikeC4Formatter.ts +9 -4
  24. package/src/generated/ast.ts +656 -40
  25. package/src/generated/grammar.ts +2 -2
  26. package/src/generated/module.ts +3 -2
  27. package/src/index.ts +1 -0
  28. package/src/like-c4.langium +170 -22
  29. package/src/logger.ts +7 -2
  30. package/src/lsp/CodeLensProvider.ts +0 -1
  31. package/src/lsp/CompletionProvider.ts +17 -2
  32. package/src/lsp/DocumentSymbolProvider.ts +5 -2
  33. package/src/lsp/HoverProvider.ts +34 -2
  34. package/src/lsp/SemanticTokenProvider.ts +58 -32
  35. package/src/model/deployments-index.ts +218 -0
  36. package/src/model/fqn-computation.ts +1 -1
  37. package/src/model/fqn-index.ts +0 -1
  38. package/src/model/index.ts +1 -0
  39. package/src/model/model-builder.ts +172 -37
  40. package/src/model/model-locator.ts +36 -7
  41. package/src/model/model-parser.ts +554 -92
  42. package/src/model-change/changeViewLayout.ts +2 -2
  43. package/src/module.ts +10 -4
  44. package/src/protocol.ts +10 -6
  45. package/src/references/index.ts +1 -0
  46. package/src/references/name-provider.ts +37 -0
  47. package/src/references/scope-computation.ts +130 -21
  48. package/src/references/scope-provider.ts +63 -36
  49. package/src/shared/NodeKindProvider.ts +15 -3
  50. package/src/utils/deploymentRef.ts +31 -0
  51. package/src/{elementRef.ts → utils/elementRef.ts} +1 -1
  52. package/src/utils/stringHash.ts +2 -2
  53. package/src/validation/_shared.ts +7 -5
  54. package/src/validation/deployment-checks.ts +144 -0
  55. package/src/validation/dynamic-view-step.ts +1 -1
  56. package/src/validation/index.ts +7 -0
  57. package/src/validation/relation.ts +1 -1
  58. package/src/validation/view-predicates/deployments.ts +56 -0
  59. package/src/validation/view-predicates/index.ts +1 -0
  60. package/src/view-utils/assignNavigateTo.ts +6 -5
  61. package/src/view-utils/index.ts +0 -1
  62. package/dist/model-graph/index.cjs +0 -10
  63. package/dist/model-graph/index.d.cts +0 -81
  64. package/dist/model-graph/index.d.mts +0 -81
  65. package/dist/model-graph/index.d.ts +0 -81
  66. package/dist/model-graph/index.mjs +0 -1
  67. package/dist/shared/language-server.BGGRJRnr.d.mts +0 -1338
  68. package/dist/shared/language-server.BXFhlTPo.mjs +0 -1953
  69. package/dist/shared/language-server.Bmpq16Gw.d.ts +0 -1338
  70. package/dist/shared/language-server.C1ZfM22X.d.cts +0 -1338
  71. package/dist/shared/language-server.N8HLDQqz.cjs +0 -1967
  72. package/src/model-graph/LikeC4ModelGraph.ts +0 -338
  73. package/src/model-graph/compute-view/__test__/fixture.ts +0 -630
  74. package/src/model-graph/compute-view/compute.ts +0 -788
  75. package/src/model-graph/compute-view/index.ts +0 -33
  76. package/src/model-graph/compute-view/predicates.ts +0 -509
  77. package/src/model-graph/dynamic-view/__test__/fixture.ts +0 -61
  78. package/src/model-graph/dynamic-view/compute.ts +0 -281
  79. package/src/model-graph/dynamic-view/index.ts +0 -29
  80. package/src/model-graph/index.ts +0 -3
  81. package/src/model-graph/utils/applyCustomElementProperties.ts +0 -65
  82. package/src/model-graph/utils/applyCustomRelationProperties.ts +0 -41
  83. package/src/model-graph/utils/applyViewRuleStyles.ts +0 -49
  84. package/src/model-graph/utils/buildComputeNodes.ts +0 -113
  85. package/src/model-graph/utils/buildElementNotations.ts +0 -63
  86. package/src/model-graph/utils/elementExpressionToPredicate.ts +0 -39
  87. package/src/model-graph/utils/relationExpressionToPredicates.ts +0 -43
  88. package/src/model-graph/utils/sortNodes.ts +0 -105
  89. package/src/model-graph/utils/uniqueTags.test.ts +0 -42
  90. package/src/model-graph/utils/uniqueTags.ts +0 -19
  91. package/src/utils/graphlib.ts +0 -9
  92. package/src/view-utils/resolve-extended-views.ts +0 -66
  93. package/src/view-utils/resolve-global-rules.ts +0 -88
  94. package/src/view-utils/view-hash.ts +0 -27
@@ -1,5 +1,5 @@
1
1
  /******************************************************************************
2
- * This file was generated by langium-cli 3.2.0.
2
+ * This file was generated by langium-cli 3.3.0.
3
3
  * DO NOT EDIT MANUALLY!
4
4
  ******************************************************************************/
5
5
 
@@ -15,8 +15,8 @@ export const LikeC4Terminals = {
15
15
  LIB_ICON: /(aws|azure|gcp|tech):[-\w]*/,
16
16
  URI_WITH_SCHEMA: /\w+:\/\/\S+/,
17
17
  URI_RELATIVE: /\.{0,2}\/[^\/]\S+/,
18
- DotUnderscore: /\b\._/,
19
- DotWildcard: /\b\.\*/,
18
+ DotUnderscore: /\b\._(?![_a-zA-Z])/,
19
+ DotWildcard: /\b\.\*{1,2}/,
20
20
  Hash: /#/,
21
21
  StickyDot: /\b\./,
22
22
  Dot: /\./,
@@ -57,6 +57,8 @@ export type LikeC4KeywordNames =
57
57
  | "crow"
58
58
  | "cylinder"
59
59
  | "dashed"
60
+ | "deployment"
61
+ | "deploymentNode"
60
62
  | "description"
61
63
  | "diamond"
62
64
  | "dot"
@@ -78,6 +80,8 @@ export type LikeC4KeywordNames =
78
80
  | "icons"
79
81
  | "include"
80
82
  | "indigo"
83
+ | "instance"
84
+ | "instanceOf"
81
85
  | "is"
82
86
  | "kind"
83
87
  | "likec4lib"
@@ -88,6 +92,7 @@ export type LikeC4KeywordNames =
88
92
  | "model"
89
93
  | "muted"
90
94
  | "navigateTo"
95
+ | "node"
91
96
  | "none"
92
97
  | "normal"
93
98
  | "not"
@@ -157,6 +162,54 @@ export function isCustomColorValue(item: unknown): item is CustomColorValue {
157
162
  return typeof item === 'string';
158
163
  }
159
164
 
165
+ export type DeploymentElement = DeployedInstance | DeploymentNode;
166
+
167
+ export const DeploymentElement = 'DeploymentElement';
168
+
169
+ export function isDeploymentElement(item: unknown): item is DeploymentElement {
170
+ return reflection.isInstance(item, DeploymentElement);
171
+ }
172
+
173
+ export type DeploymentElementExpression = DeploymentRefExpression | WildcardExpression;
174
+
175
+ export const DeploymentElementExpression = 'DeploymentElementExpression';
176
+
177
+ export function isDeploymentElementExpression(item: unknown): item is DeploymentElementExpression {
178
+ return reflection.isInstance(item, DeploymentElementExpression);
179
+ }
180
+
181
+ export type DeploymentExpression = DeploymentElementExpression | DeploymentRelationExpression;
182
+
183
+ export const DeploymentExpression = 'DeploymentExpression';
184
+
185
+ export function isDeploymentExpression(item: unknown): item is DeploymentExpression {
186
+ return reflection.isInstance(item, DeploymentExpression);
187
+ }
188
+
189
+ export type DeploymentReferenceable = DeployedInstance | DeploymentNode | Element;
190
+
191
+ export const DeploymentReferenceable = 'DeploymentReferenceable';
192
+
193
+ export function isDeploymentReferenceable(item: unknown): item is DeploymentReferenceable {
194
+ return reflection.isInstance(item, DeploymentReferenceable);
195
+ }
196
+
197
+ export type DeploymentRelationExpression = DirectedDeploymentRelationExpression | InOutDeploymentRelationExpression | IncomingDeploymentRelationExpression | OutgoingDeploymentRelationExpression;
198
+
199
+ export const DeploymentRelationExpression = 'DeploymentRelationExpression';
200
+
201
+ export function isDeploymentRelationExpression(item: unknown): item is DeploymentRelationExpression {
202
+ return reflection.isInstance(item, DeploymentRelationExpression);
203
+ }
204
+
205
+ export type DeploymentViewRule = DeploymentViewRulePredicate | DeploymentViewRuleStyle | ViewRuleAutoLayout;
206
+
207
+ export const DeploymentViewRule = 'DeploymentViewRule';
208
+
209
+ export function isDeploymentViewRule(item: unknown): item is DeploymentViewRule {
210
+ return reflection.isInstance(item, DeploymentViewRule);
211
+ }
212
+
160
213
  export type DotId = string;
161
214
 
162
215
  export function isDotId(item: unknown): item is DotId {
@@ -209,19 +262,27 @@ export function isElementShape(item: unknown): item is ElementShape {
209
262
  return item === 'rectangle' || item === 'person' || item === 'browser' || item === 'mobile' || item === 'cylinder' || item === 'storage' || item === 'queue';
210
263
  }
211
264
 
265
+ export type FqnReferenceable = DeploymentReferenceable | Element | ExtendElement;
266
+
267
+ export const FqnReferenceable = 'FqnReferenceable';
268
+
269
+ export function isFqnReferenceable(item: unknown): item is FqnReferenceable {
270
+ return reflection.isInstance(item, FqnReferenceable);
271
+ }
272
+
212
273
  export type IconId = string;
213
274
 
214
275
  export function isIconId(item: unknown): item is IconId {
215
276
  return (typeof item === 'string' && (/(aws|azure|gcp|tech):[-\w]*/.test(item)));
216
277
  }
217
278
 
218
- export type Id = 'element' | 'group' | 'model' | ArrowType | ElementShape | LineOptions | ThemeColor | string;
279
+ export type Id = 'deployment' | 'element' | 'group' | 'model' | 'node' | ArrowType | ElementShape | LineOptions | ThemeColor | string;
219
280
 
220
281
  export function isId(item: unknown): item is Id {
221
- return isElementShape(item) || isThemeColor(item) || isArrowType(item) || isLineOptions(item) || item === 'element' || item === 'model' || item === 'group' || (typeof item === 'string' && (/[_]*[a-zA-Z][-\w]*/.test(item)));
282
+ return isElementShape(item) || isThemeColor(item) || isArrowType(item) || isLineOptions(item) || item === 'element' || item === 'model' || item === 'group' || item === 'node' || item === 'deployment' || (typeof item === 'string' && (/[_]*[a-zA-Z][-\w]*/.test(item)));
222
283
  }
223
284
 
224
- export type LikeC4View = DynamicView | ElementView;
285
+ export type LikeC4View = DeploymentView | DynamicView | ElementView;
225
286
 
226
287
  export const LikeC4View = 'LikeC4View';
227
288
 
@@ -433,7 +494,7 @@ export function isArrowProperty(item: unknown): item is ArrowProperty {
433
494
  }
434
495
 
435
496
  export interface BorderProperty extends AstNode {
436
- readonly $container: CustomElementProperties | ElementStyleProperty | GlobalStyle | ViewRuleGroup | ViewRuleStyle;
497
+ readonly $container: CustomElementProperties | DeploymentViewRuleStyle | ElementStyleProperty | GlobalStyle | ViewRuleGroup | ViewRuleStyle;
437
498
  readonly $type: 'BorderProperty';
438
499
  key: 'border';
439
500
  value: BorderStyleValue;
@@ -446,7 +507,7 @@ export function isBorderProperty(item: unknown): item is BorderProperty {
446
507
  }
447
508
 
448
509
  export interface ColorProperty extends AstNode {
449
- readonly $container: CustomElementProperties | CustomRelationProperties | ElementStyleProperty | GlobalStyle | RelationStyleProperty | SpecificationRelationshipKind | ViewRuleGroup | ViewRuleStyle;
510
+ readonly $container: CustomElementProperties | CustomRelationProperties | DeploymentViewRuleStyle | ElementStyleProperty | GlobalStyle | RelationStyleProperty | SpecificationRelationshipKind | ViewRuleGroup | ViewRuleStyle;
450
511
  readonly $type: 'ColorProperty';
451
512
  customColor?: Reference<CustomColor>;
452
513
  key: 'color';
@@ -495,6 +556,224 @@ export function isCustomRelationProperties(item: unknown): item is CustomRelatio
495
556
  return reflection.isInstance(item, CustomRelationProperties);
496
557
  }
497
558
 
559
+ export interface DeployedInstance extends AstNode {
560
+ readonly $container: DeploymentNodeBody;
561
+ readonly $type: 'DeployedInstance';
562
+ body?: DeployedInstanceBody;
563
+ element: ElementRef;
564
+ name?: Id;
565
+ title?: string;
566
+ }
567
+
568
+ export const DeployedInstance = 'DeployedInstance';
569
+
570
+ export function isDeployedInstance(item: unknown): item is DeployedInstance {
571
+ return reflection.isInstance(item, DeployedInstance);
572
+ }
573
+
574
+ export interface DeployedInstanceBody extends AstNode {
575
+ readonly $container: DeployedInstance;
576
+ readonly $type: 'DeployedInstanceBody';
577
+ props: Array<ElementProperty>;
578
+ tags?: Tags;
579
+ }
580
+
581
+ export const DeployedInstanceBody = 'DeployedInstanceBody';
582
+
583
+ export function isDeployedInstanceBody(item: unknown): item is DeployedInstanceBody {
584
+ return reflection.isInstance(item, DeployedInstanceBody);
585
+ }
586
+
587
+ export interface DeploymentExpressionIterator extends AstNode {
588
+ readonly $container: DeploymentExpressionIterator | DeploymentViewRuleStyle;
589
+ readonly $type: 'DeploymentExpressionIterator';
590
+ prev?: DeploymentExpressionIterator;
591
+ value: DeploymentElementExpression;
592
+ }
593
+
594
+ export const DeploymentExpressionIterator = 'DeploymentExpressionIterator';
595
+
596
+ export function isDeploymentExpressionIterator(item: unknown): item is DeploymentExpressionIterator {
597
+ return reflection.isInstance(item, DeploymentExpressionIterator);
598
+ }
599
+
600
+ export interface DeploymentNode extends AstNode {
601
+ readonly $container: DeploymentNodeBody | ModelDeployments;
602
+ readonly $type: 'DeploymentNode';
603
+ body?: DeploymentNodeBody;
604
+ kind: Reference<DeploymentNodeKind>;
605
+ name: Id;
606
+ title?: string;
607
+ }
608
+
609
+ export const DeploymentNode = 'DeploymentNode';
610
+
611
+ export function isDeploymentNode(item: unknown): item is DeploymentNode {
612
+ return reflection.isInstance(item, DeploymentNode);
613
+ }
614
+
615
+ export interface DeploymentNodeBody extends AstNode {
616
+ readonly $container: DeploymentNode;
617
+ readonly $type: 'DeploymentNodeBody';
618
+ elements: Array<DeployedInstance | DeploymentNode | DeploymentRelation>;
619
+ props: Array<ElementProperty>;
620
+ tags?: Tags;
621
+ }
622
+
623
+ export const DeploymentNodeBody = 'DeploymentNodeBody';
624
+
625
+ export function isDeploymentNodeBody(item: unknown): item is DeploymentNodeBody {
626
+ return reflection.isInstance(item, DeploymentNodeBody);
627
+ }
628
+
629
+ export interface DeploymentNodeKind extends AstNode {
630
+ readonly $container: SpecificationDeploymentNodeKind;
631
+ readonly $type: 'DeploymentNodeKind';
632
+ name: Id;
633
+ }
634
+
635
+ export const DeploymentNodeKind = 'DeploymentNodeKind';
636
+
637
+ export function isDeploymentNodeKind(item: unknown): item is DeploymentNodeKind {
638
+ return reflection.isInstance(item, DeploymentNodeKind);
639
+ }
640
+
641
+ export interface DeploymentRef extends AstNode {
642
+ readonly $container: DeploymentRef | DeploymentRefExpression | DeploymentRelation;
643
+ readonly $type: 'DeploymentRef';
644
+ parent?: DeploymentRef;
645
+ value: Reference<DeploymentReferenceable>;
646
+ }
647
+
648
+ export const DeploymentRef = 'DeploymentRef';
649
+
650
+ export function isDeploymentRef(item: unknown): item is DeploymentRef {
651
+ return reflection.isInstance(item, DeploymentRef);
652
+ }
653
+
654
+ export interface DeploymentRefExpression extends AstNode {
655
+ readonly $container: DeploymentExpressionIterator | DeploymentViewRulePredicateExpression | DirectedDeploymentRelationExpression | IncomingDeploymentRelationExpression | OutgoingDeploymentRelationExpression;
656
+ readonly $type: 'DeploymentRefExpression';
657
+ ref: DeploymentRef;
658
+ selector?: string;
659
+ }
660
+
661
+ export const DeploymentRefExpression = 'DeploymentRefExpression';
662
+
663
+ export function isDeploymentRefExpression(item: unknown): item is DeploymentRefExpression {
664
+ return reflection.isInstance(item, DeploymentRefExpression);
665
+ }
666
+
667
+ export interface DeploymentRelation extends AstNode {
668
+ readonly $container: DeploymentNodeBody | ModelDeployments;
669
+ readonly $type: 'DeploymentRelation';
670
+ body?: DeploymentRelationBody;
671
+ kind?: Reference<RelationshipKind>;
672
+ source: DeploymentRef;
673
+ tags?: Tags;
674
+ target: DeploymentRef;
675
+ technology?: string;
676
+ title?: string;
677
+ }
678
+
679
+ export const DeploymentRelation = 'DeploymentRelation';
680
+
681
+ export function isDeploymentRelation(item: unknown): item is DeploymentRelation {
682
+ return reflection.isInstance(item, DeploymentRelation);
683
+ }
684
+
685
+ export interface DeploymentRelationBody extends AstNode {
686
+ readonly $container: DeploymentRelation;
687
+ readonly $type: 'DeploymentRelationBody';
688
+ props: Array<RelationProperty>;
689
+ tags?: Tags;
690
+ }
691
+
692
+ export const DeploymentRelationBody = 'DeploymentRelationBody';
693
+
694
+ export function isDeploymentRelationBody(item: unknown): item is DeploymentRelationBody {
695
+ return reflection.isInstance(item, DeploymentRelationBody);
696
+ }
697
+
698
+ export interface DeploymentView extends AstNode {
699
+ readonly $container: ModelViews;
700
+ readonly $type: 'DeploymentView';
701
+ body?: DeploymentViewBody;
702
+ name: Id;
703
+ }
704
+
705
+ export const DeploymentView = 'DeploymentView';
706
+
707
+ export function isDeploymentView(item: unknown): item is DeploymentView {
708
+ return reflection.isInstance(item, DeploymentView);
709
+ }
710
+
711
+ export interface DeploymentViewBody extends AstNode {
712
+ readonly $container: DeploymentView;
713
+ readonly $type: 'DeploymentViewBody';
714
+ props: Array<ViewProperty>;
715
+ rules: Array<DeploymentViewRule>;
716
+ tags?: Tags;
717
+ }
718
+
719
+ export const DeploymentViewBody = 'DeploymentViewBody';
720
+
721
+ export function isDeploymentViewBody(item: unknown): item is DeploymentViewBody {
722
+ return reflection.isInstance(item, DeploymentViewBody);
723
+ }
724
+
725
+ export interface DeploymentViewRulePredicate extends AstNode {
726
+ readonly $container: DeploymentViewBody;
727
+ readonly $type: 'DeploymentViewRulePredicate';
728
+ expr: DeploymentViewRulePredicateExpression;
729
+ isInclude: boolean;
730
+ }
731
+
732
+ export const DeploymentViewRulePredicate = 'DeploymentViewRulePredicate';
733
+
734
+ export function isDeploymentViewRulePredicate(item: unknown): item is DeploymentViewRulePredicate {
735
+ return reflection.isInstance(item, DeploymentViewRulePredicate);
736
+ }
737
+
738
+ export interface DeploymentViewRulePredicateExpression extends AstNode {
739
+ readonly $container: DeploymentViewRulePredicate | DeploymentViewRulePredicateExpression;
740
+ readonly $type: 'DeploymentViewRulePredicateExpression';
741
+ prev?: DeploymentViewRulePredicateExpression;
742
+ value: DeploymentExpression;
743
+ }
744
+
745
+ export const DeploymentViewRulePredicateExpression = 'DeploymentViewRulePredicateExpression';
746
+
747
+ export function isDeploymentViewRulePredicateExpression(item: unknown): item is DeploymentViewRulePredicateExpression {
748
+ return reflection.isInstance(item, DeploymentViewRulePredicateExpression);
749
+ }
750
+
751
+ export interface DeploymentViewRuleStyle extends AstNode {
752
+ readonly $container: DeploymentViewBody;
753
+ readonly $type: 'DeploymentViewRuleStyle';
754
+ props: Array<NotationProperty | StyleProperty>;
755
+ target: DeploymentExpressionIterator;
756
+ }
757
+
758
+ export const DeploymentViewRuleStyle = 'DeploymentViewRuleStyle';
759
+
760
+ export function isDeploymentViewRuleStyle(item: unknown): item is DeploymentViewRuleStyle {
761
+ return reflection.isInstance(item, DeploymentViewRuleStyle);
762
+ }
763
+
764
+ export interface DirectedDeploymentRelationExpression extends AstNode {
765
+ readonly $container: DeploymentViewRulePredicateExpression;
766
+ readonly $type: 'DirectedDeploymentRelationExpression';
767
+ source: OutgoingDeploymentRelationExpression;
768
+ target: DeploymentElementExpression;
769
+ }
770
+
771
+ export const DirectedDeploymentRelationExpression = 'DirectedDeploymentRelationExpression';
772
+
773
+ export function isDirectedDeploymentRelationExpression(item: unknown): item is DirectedDeploymentRelationExpression {
774
+ return reflection.isInstance(item, DirectedDeploymentRelationExpression);
775
+ }
776
+
498
777
  export interface DirectedRelationExpression extends AstNode {
499
778
  readonly $container: Predicates | RelationPredicateWhere | RelationPredicateWith;
500
779
  readonly $type: 'DirectedRelationExpression';
@@ -647,6 +926,7 @@ export interface ElementDescedantsExpression extends AstNode {
647
926
  readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | IncomingRelationExpression | OutgoingRelationExpression | Predicates;
648
927
  readonly $type: 'ElementDescedantsExpression';
649
928
  parent: ElementRef;
929
+ suffix: string;
650
930
  }
651
931
 
652
932
  export const ElementDescedantsExpression = 'ElementDescedantsExpression';
@@ -720,7 +1000,7 @@ export function isElementPredicateWith(item: unknown): item is ElementPredicateW
720
1000
  }
721
1001
 
722
1002
  export interface ElementRef extends AstNode {
723
- readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | DynamicViewStep | ElementDescedantsExpression | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | ElementRef | ElementView | ExpandElementExpression | IncomingRelationExpression | OutgoingRelationExpression | Predicates | Relation;
1003
+ readonly $container: DeployedInstance | DirectedRelationExpression | DynamicViewPredicateIterator | DynamicViewStep | ElementDescedantsExpression | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | ElementRef | ElementView | ExpandElementExpression | IncomingRelationExpression | OutgoingRelationExpression | Predicates | Relation;
724
1004
  readonly $type: 'ElementRef';
725
1005
  el: Reference<Element>;
726
1006
  parent?: ElementRef;
@@ -733,7 +1013,7 @@ export function isElementRef(item: unknown): item is ElementRef {
733
1013
  }
734
1014
 
735
1015
  export interface ElementStringProperty extends AstNode {
736
- readonly $container: CustomElementProperties | ElementBody;
1016
+ readonly $container: CustomElementProperties | DeployedInstanceBody | DeploymentNodeBody | ElementBody;
737
1017
  readonly $type: 'ElementStringProperty';
738
1018
  key: 'description' | 'technology' | 'title';
739
1019
  value: string;
@@ -746,7 +1026,7 @@ export function isElementStringProperty(item: unknown): item is ElementStringPro
746
1026
  }
747
1027
 
748
1028
  export interface ElementStyleProperty extends AstNode {
749
- readonly $container: ElementBody | SpecificationElementKind;
1029
+ readonly $container: DeployedInstanceBody | DeploymentNodeBody | ElementBody | SpecificationDeploymentNodeKind | SpecificationElementKind;
750
1030
  readonly $type: 'ElementStyleProperty';
751
1031
  key: 'style';
752
1032
  props: Array<StyleProperty>;
@@ -954,7 +1234,7 @@ export function isGlobalStyleId(item: unknown): item is GlobalStyleId {
954
1234
  }
955
1235
 
956
1236
  export interface IconProperty extends AstNode {
957
- readonly $container: CustomElementProperties | ElementBody | ElementStyleProperty | GlobalStyle | ViewRuleStyle;
1237
+ readonly $container: CustomElementProperties | DeployedInstanceBody | DeploymentNodeBody | DeploymentViewRuleStyle | ElementBody | ElementStyleProperty | GlobalStyle | ViewRuleStyle;
958
1238
  readonly $type: 'IconProperty';
959
1239
  key: 'icon';
960
1240
  libicon?: Reference<LibIcon>;
@@ -979,6 +1259,18 @@ export function isIncludePredicate(item: unknown): item is IncludePredicate {
979
1259
  return reflection.isInstance(item, IncludePredicate);
980
1260
  }
981
1261
 
1262
+ export interface IncomingDeploymentRelationExpression extends AstNode {
1263
+ readonly $container: DeploymentViewRulePredicateExpression | InOutDeploymentRelationExpression;
1264
+ readonly $type: 'IncomingDeploymentRelationExpression';
1265
+ to: DeploymentElementExpression;
1266
+ }
1267
+
1268
+ export const IncomingDeploymentRelationExpression = 'IncomingDeploymentRelationExpression';
1269
+
1270
+ export function isIncomingDeploymentRelationExpression(item: unknown): item is IncomingDeploymentRelationExpression {
1271
+ return reflection.isInstance(item, IncomingDeploymentRelationExpression);
1272
+ }
1273
+
982
1274
  export interface IncomingRelationExpression extends AstNode {
983
1275
  readonly $container: InOutRelationExpression | Predicates | RelationPredicateWhere | RelationPredicateWith;
984
1276
  readonly $type: 'IncomingRelationExpression';
@@ -991,6 +1283,18 @@ export function isIncomingRelationExpression(item: unknown): item is IncomingRel
991
1283
  return reflection.isInstance(item, IncomingRelationExpression);
992
1284
  }
993
1285
 
1286
+ export interface InOutDeploymentRelationExpression extends AstNode {
1287
+ readonly $container: DeploymentViewRulePredicateExpression;
1288
+ readonly $type: 'InOutDeploymentRelationExpression';
1289
+ inout: IncomingDeploymentRelationExpression;
1290
+ }
1291
+
1292
+ export const InOutDeploymentRelationExpression = 'InOutDeploymentRelationExpression';
1293
+
1294
+ export function isInOutDeploymentRelationExpression(item: unknown): item is InOutDeploymentRelationExpression {
1295
+ return reflection.isInstance(item, InOutDeploymentRelationExpression);
1296
+ }
1297
+
994
1298
  export interface InOutRelationExpression extends AstNode {
995
1299
  readonly $container: Predicates | RelationPredicateWhere | RelationPredicateWith;
996
1300
  readonly $type: 'InOutRelationExpression';
@@ -1017,6 +1321,7 @@ export function isLibIcon(item: unknown): item is LibIcon {
1017
1321
 
1018
1322
  export interface LikeC4Grammar extends AstNode {
1019
1323
  readonly $type: 'LikeC4Grammar';
1324
+ deployments: Array<ModelDeployments>;
1020
1325
  globals: Array<Globals>;
1021
1326
  likec4lib: Array<LikeC4Lib>;
1022
1327
  models: Array<Model>;
@@ -1056,7 +1361,7 @@ export function isLineProperty(item: unknown): item is LineProperty {
1056
1361
  }
1057
1362
 
1058
1363
  export interface LinkProperty extends AstNode {
1059
- readonly $container: DynamicViewBody | ElementBody | ElementViewBody | RelationBody;
1364
+ readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelationBody | DeploymentViewBody | DynamicViewBody | ElementBody | ElementViewBody | RelationBody;
1060
1365
  readonly $type: 'LinkProperty';
1061
1366
  key: 'link';
1062
1367
  title?: string;
@@ -1083,7 +1388,7 @@ export function isMetadataAttribute(item: unknown): item is MetadataAttribute {
1083
1388
  }
1084
1389
 
1085
1390
  export interface MetadataBody extends AstNode {
1086
- readonly $container: ElementBody | RelationBody;
1391
+ readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelationBody | ElementBody | RelationBody;
1087
1392
  readonly $type: 'MetadataBody';
1088
1393
  props: Array<MetadataAttribute>;
1089
1394
  }
@@ -1107,6 +1412,19 @@ export function isModel(item: unknown): item is Model {
1107
1412
  return reflection.isInstance(item, Model);
1108
1413
  }
1109
1414
 
1415
+ export interface ModelDeployments extends AstNode {
1416
+ readonly $container: LikeC4Grammar;
1417
+ readonly $type: 'ModelDeployments';
1418
+ elements: Array<DeploymentNode | DeploymentRelation>;
1419
+ name: 'deployment';
1420
+ }
1421
+
1422
+ export const ModelDeployments = 'ModelDeployments';
1423
+
1424
+ export function isModelDeployments(item: unknown): item is ModelDeployments {
1425
+ return reflection.isInstance(item, ModelDeployments);
1426
+ }
1427
+
1110
1428
  export interface ModelViews extends AstNode {
1111
1429
  readonly $container: LikeC4Grammar;
1112
1430
  readonly $type: 'ModelViews';
@@ -1135,7 +1453,7 @@ export function isNavigateToProperty(item: unknown): item is NavigateToProperty
1135
1453
  }
1136
1454
 
1137
1455
  export interface NotationProperty extends AstNode {
1138
- readonly $container: CustomElementProperties | CustomRelationProperties | GlobalStyle | ViewRuleStyle;
1456
+ readonly $container: CustomElementProperties | CustomRelationProperties | DeploymentViewRuleStyle | GlobalStyle | ViewRuleStyle;
1139
1457
  readonly $type: 'NotationProperty';
1140
1458
  key: 'notation';
1141
1459
  value: string;
@@ -1161,7 +1479,7 @@ export function isNotesProperty(item: unknown): item is NotesProperty {
1161
1479
  }
1162
1480
 
1163
1481
  export interface OpacityProperty extends AstNode {
1164
- readonly $container: CustomElementProperties | ElementStyleProperty | GlobalStyle | ViewRuleGroup | ViewRuleStyle;
1482
+ readonly $container: CustomElementProperties | DeploymentViewRuleStyle | ElementStyleProperty | GlobalStyle | ViewRuleGroup | ViewRuleStyle;
1165
1483
  readonly $type: 'OpacityProperty';
1166
1484
  key: 'opacity';
1167
1485
  value: string;
@@ -1173,6 +1491,20 @@ export function isOpacityProperty(item: unknown): item is OpacityProperty {
1173
1491
  return reflection.isInstance(item, OpacityProperty);
1174
1492
  }
1175
1493
 
1494
+ export interface OutgoingDeploymentRelationExpression extends AstNode {
1495
+ readonly $container: DeploymentViewRulePredicateExpression | DirectedDeploymentRelationExpression;
1496
+ readonly $type: 'OutgoingDeploymentRelationExpression';
1497
+ from: DeploymentElementExpression;
1498
+ isBidirectional: boolean;
1499
+ kind?: Reference<RelationshipKind>;
1500
+ }
1501
+
1502
+ export const OutgoingDeploymentRelationExpression = 'OutgoingDeploymentRelationExpression';
1503
+
1504
+ export function isOutgoingDeploymentRelationExpression(item: unknown): item is OutgoingDeploymentRelationExpression {
1505
+ return reflection.isInstance(item, OutgoingDeploymentRelationExpression);
1506
+ }
1507
+
1176
1508
  export interface OutgoingRelationExpression extends AstNode {
1177
1509
  readonly $container: DirectedRelationExpression | Predicates | RelationPredicateWhere | RelationPredicateWith;
1178
1510
  readonly $type: 'OutgoingRelationExpression';
@@ -1232,7 +1564,7 @@ export function isRelationBody(item: unknown): item is RelationBody {
1232
1564
  }
1233
1565
 
1234
1566
  export interface RelationNavigateToProperty extends AstNode {
1235
- readonly $container: CustomRelationProperties | RelationBody;
1567
+ readonly $container: CustomRelationProperties | DeploymentRelationBody | RelationBody;
1236
1568
  readonly $type: 'RelationNavigateToProperty';
1237
1569
  key: 'navigateTo';
1238
1570
  value: DynamicViewRef;
@@ -1283,7 +1615,7 @@ export function isRelationshipKind(item: unknown): item is RelationshipKind {
1283
1615
  }
1284
1616
 
1285
1617
  export interface RelationStringProperty extends AstNode {
1286
- readonly $container: CustomRelationProperties | RelationBody;
1618
+ readonly $container: CustomRelationProperties | DeploymentRelationBody | RelationBody;
1287
1619
  readonly $type: 'RelationStringProperty';
1288
1620
  key: 'description' | 'technology' | 'title';
1289
1621
  value: string;
@@ -1296,7 +1628,7 @@ export function isRelationStringProperty(item: unknown): item is RelationStringP
1296
1628
  }
1297
1629
 
1298
1630
  export interface RelationStyleProperty extends AstNode {
1299
- readonly $container: RelationBody;
1631
+ readonly $container: DeploymentRelationBody | RelationBody;
1300
1632
  readonly $type: 'RelationStyleProperty';
1301
1633
  key: 'style';
1302
1634
  props: Array<RelationshipStyleProperty>;
@@ -1309,7 +1641,7 @@ export function isRelationStyleProperty(item: unknown): item is RelationStylePro
1309
1641
  }
1310
1642
 
1311
1643
  export interface ShapeProperty extends AstNode {
1312
- readonly $container: CustomElementProperties | ElementStyleProperty | GlobalStyle | ViewRuleStyle;
1644
+ readonly $container: CustomElementProperties | DeploymentViewRuleStyle | ElementStyleProperty | GlobalStyle | ViewRuleStyle;
1313
1645
  readonly $type: 'ShapeProperty';
1314
1646
  key: 'shape';
1315
1647
  value: ElementShape;
@@ -1334,6 +1666,19 @@ export function isSpecificationColor(item: unknown): item is SpecificationColor
1334
1666
  return reflection.isInstance(item, SpecificationColor);
1335
1667
  }
1336
1668
 
1669
+ export interface SpecificationDeploymentNodeKind extends AstNode {
1670
+ readonly $container: SpecificationRule;
1671
+ readonly $type: 'SpecificationDeploymentNodeKind';
1672
+ kind: DeploymentNodeKind;
1673
+ props: Array<ElementStyleProperty | SpecificationElementStringProperty>;
1674
+ }
1675
+
1676
+ export const SpecificationDeploymentNodeKind = 'SpecificationDeploymentNodeKind';
1677
+
1678
+ export function isSpecificationDeploymentNodeKind(item: unknown): item is SpecificationDeploymentNodeKind {
1679
+ return reflection.isInstance(item, SpecificationDeploymentNodeKind);
1680
+ }
1681
+
1337
1682
  export interface SpecificationElementKind extends AstNode {
1338
1683
  readonly $container: SpecificationRule;
1339
1684
  readonly $type: 'SpecificationElementKind';
@@ -1348,7 +1693,7 @@ export function isSpecificationElementKind(item: unknown): item is Specification
1348
1693
  }
1349
1694
 
1350
1695
  export interface SpecificationElementStringProperty extends AstNode {
1351
- readonly $container: SpecificationElementKind;
1696
+ readonly $container: SpecificationDeploymentNodeKind | SpecificationElementKind;
1352
1697
  readonly $type: 'SpecificationElementStringProperty';
1353
1698
  key: 'notation' | 'technology';
1354
1699
  value: string;
@@ -1390,6 +1735,7 @@ export interface SpecificationRule extends AstNode {
1390
1735
  readonly $container: LikeC4Grammar;
1391
1736
  readonly $type: 'SpecificationRule';
1392
1737
  colors: Array<SpecificationColor>;
1738
+ deploymentNodes: Array<SpecificationDeploymentNodeKind>;
1393
1739
  elements: Array<SpecificationElementKind>;
1394
1740
  name: 'specification';
1395
1741
  relationships: Array<SpecificationRelationshipKind>;
@@ -1427,7 +1773,7 @@ export function isTag(item: unknown): item is Tag {
1427
1773
  }
1428
1774
 
1429
1775
  export interface Tags extends AstNode {
1430
- readonly $container: DynamicViewBody | ElementBody | ElementViewBody | Relation | RelationBody | Tags;
1776
+ readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelation | DeploymentRelationBody | DeploymentViewBody | DynamicViewBody | ElementBody | ElementViewBody | Relation | RelationBody | Tags;
1431
1777
  readonly $type: 'Tags';
1432
1778
  prev?: Tags;
1433
1779
  values: Array<Reference<Tag>>;
@@ -1452,7 +1798,7 @@ export function isViewRef(item: unknown): item is ViewRef {
1452
1798
  }
1453
1799
 
1454
1800
  export interface ViewRuleAutoLayout extends AstNode {
1455
- readonly $container: DynamicViewBody | ElementViewBody;
1801
+ readonly $container: DeploymentViewBody | DynamicViewBody | ElementViewBody;
1456
1802
  readonly $type: 'ViewRuleAutoLayout';
1457
1803
  direction: ViewLayoutDirection;
1458
1804
  nodeSep?: number;
@@ -1517,7 +1863,7 @@ export function isViewRuleStyle(item: unknown): item is ViewRuleStyle {
1517
1863
  }
1518
1864
 
1519
1865
  export interface ViewStringProperty extends AstNode {
1520
- readonly $container: DynamicViewBody | ElementViewBody;
1866
+ readonly $container: DeploymentViewBody | DynamicViewBody | ElementViewBody;
1521
1867
  readonly $type: 'ViewStringProperty';
1522
1868
  key: 'description' | 'title';
1523
1869
  value: string;
@@ -1624,7 +1970,7 @@ export function isWhereRelationTag(item: unknown): item is WhereRelationTag {
1624
1970
  }
1625
1971
 
1626
1972
  export interface WildcardExpression extends AstNode {
1627
- readonly $container: DirectedRelationExpression | DynamicViewPredicateIterator | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | IncomingRelationExpression | OutgoingRelationExpression | Predicates;
1973
+ readonly $container: DeploymentExpressionIterator | DeploymentViewRulePredicateExpression | DirectedDeploymentRelationExpression | DirectedRelationExpression | DynamicViewPredicateIterator | ElementExpressionsIterator | ElementPredicateWhere | ElementPredicateWith | IncomingDeploymentRelationExpression | IncomingRelationExpression | OutgoingDeploymentRelationExpression | OutgoingRelationExpression | Predicates;
1628
1974
  readonly $type: 'WildcardExpression';
1629
1975
  isWildcard: boolean;
1630
1976
  }
@@ -1642,6 +1988,28 @@ export type LikeC4AstType = {
1642
1988
  CustomColor: CustomColor
1643
1989
  CustomElementProperties: CustomElementProperties
1644
1990
  CustomRelationProperties: CustomRelationProperties
1991
+ DeployedInstance: DeployedInstance
1992
+ DeployedInstanceBody: DeployedInstanceBody
1993
+ DeploymentElement: DeploymentElement
1994
+ DeploymentElementExpression: DeploymentElementExpression
1995
+ DeploymentExpression: DeploymentExpression
1996
+ DeploymentExpressionIterator: DeploymentExpressionIterator
1997
+ DeploymentNode: DeploymentNode
1998
+ DeploymentNodeBody: DeploymentNodeBody
1999
+ DeploymentNodeKind: DeploymentNodeKind
2000
+ DeploymentRef: DeploymentRef
2001
+ DeploymentRefExpression: DeploymentRefExpression
2002
+ DeploymentReferenceable: DeploymentReferenceable
2003
+ DeploymentRelation: DeploymentRelation
2004
+ DeploymentRelationBody: DeploymentRelationBody
2005
+ DeploymentRelationExpression: DeploymentRelationExpression
2006
+ DeploymentView: DeploymentView
2007
+ DeploymentViewBody: DeploymentViewBody
2008
+ DeploymentViewRule: DeploymentViewRule
2009
+ DeploymentViewRulePredicate: DeploymentViewRulePredicate
2010
+ DeploymentViewRulePredicateExpression: DeploymentViewRulePredicateExpression
2011
+ DeploymentViewRuleStyle: DeploymentViewRuleStyle
2012
+ DirectedDeploymentRelationExpression: DirectedDeploymentRelationExpression
1645
2013
  DirectedRelationExpression: DirectedRelationExpression
1646
2014
  DynamicView: DynamicView
1647
2015
  DynamicViewBody: DynamicViewBody
@@ -1676,6 +2044,7 @@ export type LikeC4AstType = {
1676
2044
  ExtendElement: ExtendElement
1677
2045
  ExtendElementBody: ExtendElementBody
1678
2046
  FqnElementRef: FqnElementRef
2047
+ FqnReferenceable: FqnReferenceable
1679
2048
  GlobalDynamicPredicateGroup: GlobalDynamicPredicateGroup
1680
2049
  GlobalPredicateGroup: GlobalPredicateGroup
1681
2050
  GlobalStyle: GlobalStyle
@@ -1683,8 +2052,10 @@ export type LikeC4AstType = {
1683
2052
  GlobalStyleId: GlobalStyleId
1684
2053
  Globals: Globals
1685
2054
  IconProperty: IconProperty
2055
+ InOutDeploymentRelationExpression: InOutDeploymentRelationExpression
1686
2056
  InOutRelationExpression: InOutRelationExpression
1687
2057
  IncludePredicate: IncludePredicate
2058
+ IncomingDeploymentRelationExpression: IncomingDeploymentRelationExpression
1688
2059
  IncomingRelationExpression: IncomingRelationExpression
1689
2060
  LibIcon: LibIcon
1690
2061
  LikeC4Grammar: LikeC4Grammar
@@ -1696,11 +2067,13 @@ export type LikeC4AstType = {
1696
2067
  MetadataBody: MetadataBody
1697
2068
  MetadataProperty: MetadataProperty
1698
2069
  Model: Model
2070
+ ModelDeployments: ModelDeployments
1699
2071
  ModelViews: ModelViews
1700
2072
  NavigateToProperty: NavigateToProperty
1701
2073
  NotationProperty: NotationProperty
1702
2074
  NotesProperty: NotesProperty
1703
2075
  OpacityProperty: OpacityProperty
2076
+ OutgoingDeploymentRelationExpression: OutgoingDeploymentRelationExpression
1704
2077
  OutgoingRelationExpression: OutgoingRelationExpression
1705
2078
  Predicate: Predicate
1706
2079
  Predicates: Predicates
@@ -1719,6 +2092,7 @@ export type LikeC4AstType = {
1719
2092
  RelationshipStyleProperty: RelationshipStyleProperty
1720
2093
  ShapeProperty: ShapeProperty
1721
2094
  SpecificationColor: SpecificationColor
2095
+ SpecificationDeploymentNodeKind: SpecificationDeploymentNodeKind
1722
2096
  SpecificationElementKind: SpecificationElementKind
1723
2097
  SpecificationElementStringProperty: SpecificationElementStringProperty
1724
2098
  SpecificationRelationshipKind: SpecificationRelationshipKind
@@ -1760,7 +2134,7 @@ export type LikeC4AstType = {
1760
2134
  export class LikeC4AstReflection extends AbstractAstReflection {
1761
2135
 
1762
2136
  getAllTypes(): string[] {
1763
- return [ArrowProperty, BorderProperty, ColorProperty, CustomColor, CustomElementProperties, CustomRelationProperties, DirectedRelationExpression, DynamicView, DynamicViewBody, DynamicViewGlobalPredicateRef, DynamicViewIncludePredicate, DynamicViewParallelSteps, DynamicViewPredicateIterator, DynamicViewRef, 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, GlobalDynamicPredicateGroup, GlobalPredicateGroup, GlobalStyle, GlobalStyleGroup, GlobalStyleId, Globals, IconProperty, InOutRelationExpression, IncludePredicate, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelViews, NavigateToProperty, NotationProperty, NotesProperty, OpacityProperty, OutgoingRelationExpression, Predicate, Predicates, Relation, RelationBody, RelationExpression, RelationNavigateToProperty, RelationPredicate, RelationPredicateOrWhere, RelationPredicateWhere, RelationPredicateWith, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, SpecificationColor, SpecificationElementKind, SpecificationElementStringProperty, SpecificationRelationshipKind, SpecificationRelationshipStringProperty, SpecificationRule, SpecificationTag, StringProperty, StyleProperty, Tag, Tags, ViewProperty, ViewRef, ViewRule, ViewRuleAutoLayout, ViewRuleGlobalPredicateRef, ViewRuleGlobalStyle, ViewRuleGroup, ViewRulePredicate, ViewRuleStyle, ViewRuleStyleOrGlobalRef, ViewStringProperty, WhereBinaryExpression, WhereElement, WhereElementExpression, WhereElementKind, WhereElementNegation, WhereElementTag, WhereExpression, WhereKindEqual, WhereRelation, WhereRelationExpression, WhereRelationKind, WhereRelationNegation, WhereRelationTag, WhereTagEqual, WildcardExpression];
2137
+ return [ArrowProperty, BorderProperty, ColorProperty, CustomColor, CustomElementProperties, CustomRelationProperties, DeployedInstance, DeployedInstanceBody, DeploymentElement, DeploymentElementExpression, DeploymentExpression, DeploymentExpressionIterator, DeploymentNode, DeploymentNodeBody, DeploymentNodeKind, DeploymentRef, DeploymentRefExpression, DeploymentReferenceable, DeploymentRelation, DeploymentRelationBody, DeploymentRelationExpression, DeploymentView, DeploymentViewBody, DeploymentViewRule, DeploymentViewRulePredicate, DeploymentViewRulePredicateExpression, DeploymentViewRuleStyle, DirectedDeploymentRelationExpression, DirectedRelationExpression, DynamicView, DynamicViewBody, DynamicViewGlobalPredicateRef, DynamicViewIncludePredicate, DynamicViewParallelSteps, DynamicViewPredicateIterator, DynamicViewRef, 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, FqnReferenceable, GlobalDynamicPredicateGroup, GlobalPredicateGroup, GlobalStyle, GlobalStyleGroup, GlobalStyleId, Globals, IconProperty, InOutDeploymentRelationExpression, InOutRelationExpression, IncludePredicate, IncomingDeploymentRelationExpression, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelDeployments, ModelViews, NavigateToProperty, NotationProperty, NotesProperty, OpacityProperty, OutgoingDeploymentRelationExpression, OutgoingRelationExpression, Predicate, Predicates, Relation, RelationBody, RelationExpression, RelationNavigateToProperty, RelationPredicate, RelationPredicateOrWhere, RelationPredicateWhere, RelationPredicateWith, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, SpecificationColor, SpecificationDeploymentNodeKind, SpecificationElementKind, SpecificationElementStringProperty, SpecificationRelationshipKind, SpecificationRelationshipStringProperty, SpecificationRule, SpecificationTag, StringProperty, StyleProperty, Tag, Tags, ViewProperty, ViewRef, ViewRule, ViewRuleAutoLayout, ViewRuleGlobalPredicateRef, ViewRuleGlobalStyle, ViewRuleGroup, ViewRulePredicate, ViewRuleStyle, ViewRuleStyleOrGlobalRef, ViewStringProperty, WhereBinaryExpression, WhereElement, WhereElementExpression, WhereElementKind, WhereElementNegation, WhereElementTag, WhereExpression, WhereKindEqual, WhereRelation, WhereRelationExpression, WhereRelationKind, WhereRelationNegation, WhereRelationTag, WhereTagEqual, WildcardExpression];
1764
2138
  }
1765
2139
 
1766
2140
  protected override computeIsSubtype(subtype: string, supertype: string): boolean {
@@ -1777,26 +2151,54 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1777
2151
  case ColorProperty: {
1778
2152
  return this.isSubtype(RelationshipStyleProperty, supertype) || this.isSubtype(StyleProperty, supertype);
1779
2153
  }
2154
+ case DeployedInstance:
2155
+ case DeploymentNode: {
2156
+ return this.isSubtype(DeploymentElement, supertype) || this.isSubtype(DeploymentReferenceable, supertype);
2157
+ }
2158
+ case DeploymentElementExpression:
2159
+ case DeploymentRelationExpression: {
2160
+ return this.isSubtype(DeploymentExpression, supertype);
2161
+ }
2162
+ case DeploymentReferenceable:
2163
+ case ExtendElement: {
2164
+ return this.isSubtype(FqnReferenceable, supertype);
2165
+ }
2166
+ case DeploymentRefExpression: {
2167
+ return this.isSubtype(DeploymentElementExpression, supertype);
2168
+ }
2169
+ case DeploymentView:
2170
+ case DynamicView:
2171
+ case ElementView: {
2172
+ return this.isSubtype(LikeC4View, supertype);
2173
+ }
2174
+ case DeploymentViewRulePredicate:
2175
+ case DeploymentViewRuleStyle: {
2176
+ return this.isSubtype(DeploymentViewRule, supertype);
2177
+ }
2178
+ case DirectedDeploymentRelationExpression:
2179
+ case IncomingDeploymentRelationExpression:
2180
+ case InOutDeploymentRelationExpression:
2181
+ case OutgoingDeploymentRelationExpression: {
2182
+ return this.isSubtype(DeploymentRelationExpression, supertype);
2183
+ }
1780
2184
  case DirectedRelationExpression:
1781
2185
  case IncomingRelationExpression:
1782
2186
  case InOutRelationExpression:
1783
2187
  case OutgoingRelationExpression: {
1784
2188
  return this.isSubtype(RelationExpression, supertype);
1785
2189
  }
1786
- case DynamicView:
1787
- case ElementView: {
1788
- return this.isSubtype(LikeC4View, supertype);
1789
- }
1790
2190
  case DynamicViewGlobalPredicateRef:
1791
2191
  case DynamicViewIncludePredicate: {
1792
2192
  return this.isSubtype(DynamicViewRule, supertype);
1793
2193
  }
2194
+ case Element: {
2195
+ return this.isSubtype(DeploymentReferenceable, supertype) || this.isSubtype(FqnReferenceable, supertype);
2196
+ }
1794
2197
  case ElementDescedantsExpression:
1795
2198
  case ElementKindExpression:
1796
2199
  case ElementRef:
1797
2200
  case ElementTagExpression:
1798
- case ExpandElementExpression:
1799
- case WildcardExpression: {
2201
+ case ExpandElementExpression: {
1800
2202
  return this.isSubtype(ElementExpression, supertype);
1801
2203
  }
1802
2204
  case ElementExpression:
@@ -1855,9 +2257,8 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1855
2257
  case RelationStringProperty: {
1856
2258
  return this.isSubtype(RelationProperty, supertype) || this.isSubtype(StringProperty, supertype);
1857
2259
  }
1858
- case ViewRuleAutoLayout:
1859
- case ViewRuleStyleOrGlobalRef: {
1860
- return this.isSubtype(DynamicViewRule, supertype) || this.isSubtype(ViewRule, supertype);
2260
+ case ViewRuleAutoLayout: {
2261
+ return this.isSubtype(DeploymentViewRule, supertype) || this.isSubtype(DynamicViewRule, supertype) || this.isSubtype(ViewRule, supertype);
1861
2262
  }
1862
2263
  case ViewRuleGlobalPredicateRef:
1863
2264
  case ViewRuleGroup:
@@ -1868,6 +2269,9 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1868
2269
  case ViewRuleStyle: {
1869
2270
  return this.isSubtype(ViewRuleStyleOrGlobalRef, supertype);
1870
2271
  }
2272
+ case ViewRuleStyleOrGlobalRef: {
2273
+ return this.isSubtype(DynamicViewRule, supertype) || this.isSubtype(ViewRule, supertype);
2274
+ }
1871
2275
  case ViewStringProperty: {
1872
2276
  return this.isSubtype(StringProperty, supertype) || this.isSubtype(ViewProperty, supertype);
1873
2277
  }
@@ -1898,6 +2302,9 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1898
2302
  case WhereRelationTag: {
1899
2303
  return this.isSubtype(WhereRelation, supertype) || this.isSubtype(WhereTagEqual, supertype);
1900
2304
  }
2305
+ case WildcardExpression: {
2306
+ return this.isSubtype(DeploymentElementExpression, supertype) || this.isSubtype(ElementExpression, supertype);
2307
+ }
1901
2308
  default: {
1902
2309
  return false;
1903
2310
  }
@@ -1910,18 +2317,26 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1910
2317
  case 'ColorProperty:customColor': {
1911
2318
  return CustomColor;
1912
2319
  }
1913
- case 'DynamicViewGlobalPredicateRef:predicate': {
1914
- return GlobalDynamicPredicateGroup;
2320
+ case 'DeploymentNode:kind': {
2321
+ return DeploymentNodeKind;
1915
2322
  }
1916
- case 'DynamicViewRef:view': {
1917
- return DynamicView;
2323
+ case 'DeploymentRef:value': {
2324
+ return DeploymentReferenceable;
1918
2325
  }
2326
+ case 'DeploymentRelation:kind':
1919
2327
  case 'DynamicViewStep:kind':
2328
+ case 'OutgoingDeploymentRelationExpression:kind':
1920
2329
  case 'OutgoingRelationExpression:kind':
1921
2330
  case 'Relation:kind':
1922
2331
  case 'WhereRelationKind:value': {
1923
2332
  return RelationshipKind;
1924
2333
  }
2334
+ case 'DynamicViewGlobalPredicateRef:predicate': {
2335
+ return GlobalDynamicPredicateGroup;
2336
+ }
2337
+ case 'DynamicViewRef:view': {
2338
+ return DynamicView;
2339
+ }
1925
2340
  case 'Element:kind':
1926
2341
  case 'ElementKindExpression:kind':
1927
2342
  case 'WhereElementKind:value': {
@@ -2012,6 +2427,160 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2012
2427
  ]
2013
2428
  };
2014
2429
  }
2430
+ case DeployedInstance: {
2431
+ return {
2432
+ name: DeployedInstance,
2433
+ properties: [
2434
+ { name: 'body' },
2435
+ { name: 'element' },
2436
+ { name: 'name' },
2437
+ { name: 'title' }
2438
+ ]
2439
+ };
2440
+ }
2441
+ case DeployedInstanceBody: {
2442
+ return {
2443
+ name: DeployedInstanceBody,
2444
+ properties: [
2445
+ { name: 'props', defaultValue: [] },
2446
+ { name: 'tags' }
2447
+ ]
2448
+ };
2449
+ }
2450
+ case DeploymentExpressionIterator: {
2451
+ return {
2452
+ name: DeploymentExpressionIterator,
2453
+ properties: [
2454
+ { name: 'prev' },
2455
+ { name: 'value' }
2456
+ ]
2457
+ };
2458
+ }
2459
+ case DeploymentNode: {
2460
+ return {
2461
+ name: DeploymentNode,
2462
+ properties: [
2463
+ { name: 'body' },
2464
+ { name: 'kind' },
2465
+ { name: 'name' },
2466
+ { name: 'title' }
2467
+ ]
2468
+ };
2469
+ }
2470
+ case DeploymentNodeBody: {
2471
+ return {
2472
+ name: DeploymentNodeBody,
2473
+ properties: [
2474
+ { name: 'elements', defaultValue: [] },
2475
+ { name: 'props', defaultValue: [] },
2476
+ { name: 'tags' }
2477
+ ]
2478
+ };
2479
+ }
2480
+ case DeploymentNodeKind: {
2481
+ return {
2482
+ name: DeploymentNodeKind,
2483
+ properties: [
2484
+ { name: 'name' }
2485
+ ]
2486
+ };
2487
+ }
2488
+ case DeploymentRef: {
2489
+ return {
2490
+ name: DeploymentRef,
2491
+ properties: [
2492
+ { name: 'parent' },
2493
+ { name: 'value' }
2494
+ ]
2495
+ };
2496
+ }
2497
+ case DeploymentRefExpression: {
2498
+ return {
2499
+ name: DeploymentRefExpression,
2500
+ properties: [
2501
+ { name: 'ref' },
2502
+ { name: 'selector' }
2503
+ ]
2504
+ };
2505
+ }
2506
+ case DeploymentRelation: {
2507
+ return {
2508
+ name: DeploymentRelation,
2509
+ properties: [
2510
+ { name: 'body' },
2511
+ { name: 'kind' },
2512
+ { name: 'source' },
2513
+ { name: 'tags' },
2514
+ { name: 'target' },
2515
+ { name: 'technology' },
2516
+ { name: 'title' }
2517
+ ]
2518
+ };
2519
+ }
2520
+ case DeploymentRelationBody: {
2521
+ return {
2522
+ name: DeploymentRelationBody,
2523
+ properties: [
2524
+ { name: 'props', defaultValue: [] },
2525
+ { name: 'tags' }
2526
+ ]
2527
+ };
2528
+ }
2529
+ case DeploymentView: {
2530
+ return {
2531
+ name: DeploymentView,
2532
+ properties: [
2533
+ { name: 'body' },
2534
+ { name: 'name' }
2535
+ ]
2536
+ };
2537
+ }
2538
+ case DeploymentViewBody: {
2539
+ return {
2540
+ name: DeploymentViewBody,
2541
+ properties: [
2542
+ { name: 'props', defaultValue: [] },
2543
+ { name: 'rules', defaultValue: [] },
2544
+ { name: 'tags' }
2545
+ ]
2546
+ };
2547
+ }
2548
+ case DeploymentViewRulePredicate: {
2549
+ return {
2550
+ name: DeploymentViewRulePredicate,
2551
+ properties: [
2552
+ { name: 'expr' },
2553
+ { name: 'isInclude', defaultValue: false }
2554
+ ]
2555
+ };
2556
+ }
2557
+ case DeploymentViewRulePredicateExpression: {
2558
+ return {
2559
+ name: DeploymentViewRulePredicateExpression,
2560
+ properties: [
2561
+ { name: 'prev' },
2562
+ { name: 'value' }
2563
+ ]
2564
+ };
2565
+ }
2566
+ case DeploymentViewRuleStyle: {
2567
+ return {
2568
+ name: DeploymentViewRuleStyle,
2569
+ properties: [
2570
+ { name: 'props', defaultValue: [] },
2571
+ { name: 'target' }
2572
+ ]
2573
+ };
2574
+ }
2575
+ case DirectedDeploymentRelationExpression: {
2576
+ return {
2577
+ name: DirectedDeploymentRelationExpression,
2578
+ properties: [
2579
+ { name: 'source' },
2580
+ { name: 'target' }
2581
+ ]
2582
+ };
2583
+ }
2015
2584
  case DirectedRelationExpression: {
2016
2585
  return {
2017
2586
  name: DirectedRelationExpression,
@@ -2120,7 +2689,8 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2120
2689
  return {
2121
2690
  name: ElementDescedantsExpression,
2122
2691
  properties: [
2123
- { name: 'parent' }
2692
+ { name: 'parent' },
2693
+ { name: 'suffix' }
2124
2694
  ]
2125
2695
  };
2126
2696
  }
@@ -2348,6 +2918,14 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2348
2918
  ]
2349
2919
  };
2350
2920
  }
2921
+ case IncomingDeploymentRelationExpression: {
2922
+ return {
2923
+ name: IncomingDeploymentRelationExpression,
2924
+ properties: [
2925
+ { name: 'to' }
2926
+ ]
2927
+ };
2928
+ }
2351
2929
  case IncomingRelationExpression: {
2352
2930
  return {
2353
2931
  name: IncomingRelationExpression,
@@ -2356,6 +2934,14 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2356
2934
  ]
2357
2935
  };
2358
2936
  }
2937
+ case InOutDeploymentRelationExpression: {
2938
+ return {
2939
+ name: InOutDeploymentRelationExpression,
2940
+ properties: [
2941
+ { name: 'inout' }
2942
+ ]
2943
+ };
2944
+ }
2359
2945
  case InOutRelationExpression: {
2360
2946
  return {
2361
2947
  name: InOutRelationExpression,
@@ -2376,6 +2962,7 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2376
2962
  return {
2377
2963
  name: LikeC4Grammar,
2378
2964
  properties: [
2965
+ { name: 'deployments', defaultValue: [] },
2379
2966
  { name: 'globals', defaultValue: [] },
2380
2967
  { name: 'likec4lib', defaultValue: [] },
2381
2968
  { name: 'models', defaultValue: [] },
@@ -2437,6 +3024,15 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2437
3024
  ]
2438
3025
  };
2439
3026
  }
3027
+ case ModelDeployments: {
3028
+ return {
3029
+ name: ModelDeployments,
3030
+ properties: [
3031
+ { name: 'elements', defaultValue: [] },
3032
+ { name: 'name' }
3033
+ ]
3034
+ };
3035
+ }
2440
3036
  case ModelViews: {
2441
3037
  return {
2442
3038
  name: ModelViews,
@@ -2483,6 +3079,16 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2483
3079
  ]
2484
3080
  };
2485
3081
  }
3082
+ case OutgoingDeploymentRelationExpression: {
3083
+ return {
3084
+ name: OutgoingDeploymentRelationExpression,
3085
+ properties: [
3086
+ { name: 'from' },
3087
+ { name: 'isBidirectional', defaultValue: false },
3088
+ { name: 'kind' }
3089
+ ]
3090
+ };
3091
+ }
2486
3092
  case OutgoingRelationExpression: {
2487
3093
  return {
2488
3094
  name: OutgoingRelationExpression,
@@ -2596,6 +3202,15 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2596
3202
  ]
2597
3203
  };
2598
3204
  }
3205
+ case SpecificationDeploymentNodeKind: {
3206
+ return {
3207
+ name: SpecificationDeploymentNodeKind,
3208
+ properties: [
3209
+ { name: 'kind' },
3210
+ { name: 'props', defaultValue: [] }
3211
+ ]
3212
+ };
3213
+ }
2599
3214
  case SpecificationElementKind: {
2600
3215
  return {
2601
3216
  name: SpecificationElementKind,
@@ -2637,6 +3252,7 @@ export class LikeC4AstReflection extends AbstractAstReflection {
2637
3252
  name: SpecificationRule,
2638
3253
  properties: [
2639
3254
  { name: 'colors', defaultValue: [] },
3255
+ { name: 'deploymentNodes', defaultValue: [] },
2640
3256
  { name: 'elements', defaultValue: [] },
2641
3257
  { name: 'name' },
2642
3258
  { name: 'relationships', defaultValue: [] },