@likec4/language-server 1.19.2 → 1.20.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.
- package/contrib/likec4.tmLanguage.json +1 -1
- package/dist/generated/ast.d.ts +33 -5
- package/dist/generated/ast.js +50 -3
- package/dist/generated/grammar.js +1 -1
- package/dist/like-c4.langium +9 -5
- package/dist/lsp/SemanticTokenProvider.d.ts +1 -1
- package/dist/lsp/SemanticTokenProvider.js +7 -0
- package/dist/model/model-parser-where.js +12 -6
- package/package.json +10 -10
- package/src/generated/ast.ts +88 -7
- package/src/generated/grammar.ts +1 -1
- package/src/like-c4.langium +9 -5
- package/src/lsp/SemanticTokenProvider.ts +51 -44
- package/src/model/model-parser-where.ts +22 -14
package/dist/like-c4.langium
CHANGED
|
@@ -413,11 +413,13 @@ WhereRelationNegation:
|
|
|
413
413
|
|
|
414
414
|
WhereRelation:
|
|
415
415
|
{infer WhereRelationTag} 'tag' EqOperator value=[Tag:TagId]? |
|
|
416
|
-
{infer WhereRelationKind} 'kind' EqOperator value=[RelationshipKind:Id]?
|
|
416
|
+
{infer WhereRelationKind} 'kind' EqOperator value=[RelationshipKind:Id]? |
|
|
417
|
+
{infer WhereRelationParticipantTag} participant=Participant StickyDot 'tag' EqOperator value=[Tag:TagId]? |
|
|
418
|
+
{infer WhereRelationParticipantKind} participant=Participant StickyDot 'kind' EqOperator value=[DeploymentNodeOrElementKind:Id]?
|
|
417
419
|
;
|
|
418
|
-
|
|
419
|
-
type WhereTagEqual = WhereElementTag | WhereRelationTag;
|
|
420
|
-
type WhereKindEqual = WhereElementKind | WhereRelationKind;
|
|
420
|
+
type DeploymentNodeOrElementKind = ElementKind | DeploymentNodeKind
|
|
421
|
+
type WhereTagEqual = WhereElementTag | WhereRelationTag | WhereRelationParticipantTag;
|
|
422
|
+
type WhereKindEqual = WhereElementKind | WhereRelationKind | WhereRelationParticipantKind;
|
|
421
423
|
|
|
422
424
|
type WhereExpression = WhereElementExpression | WhereRelationExpression;
|
|
423
425
|
|
|
@@ -769,6 +771,8 @@ ThemeColor returns string:
|
|
|
769
771
|
'primary' | 'secondary' | 'muted' | 'slate' | 'blue' | 'indigo' | 'sky' | 'red' | 'gray' | 'green' | 'amber';
|
|
770
772
|
ElementShape returns string:
|
|
771
773
|
'rectangle' | 'person' | 'browser' | 'mobile' | 'cylinder' | 'storage' | 'queue';
|
|
774
|
+
Participant returns string:
|
|
775
|
+
'source' | 'target';
|
|
772
776
|
|
|
773
777
|
CustomColorValue returns string:
|
|
774
778
|
Hash (Id | Hex | Number);
|
|
@@ -789,7 +793,7 @@ CustomColorId returns string:
|
|
|
789
793
|
IdTerminal | ElementShape | ArrowType | LineOptions | 'element' | 'model';
|
|
790
794
|
|
|
791
795
|
Id returns string:
|
|
792
|
-
IdTerminal | ElementShape | ThemeColor | ArrowType | LineOptions | 'element' | 'model' | 'group' | 'node' | 'deployment' | 'instance';
|
|
796
|
+
IdTerminal | ElementShape | ThemeColor | ArrowType | LineOptions | Participant | 'element' | 'model' | 'group' | 'node' | 'deployment' | 'instance';
|
|
793
797
|
|
|
794
798
|
fragment EqOperator:
|
|
795
799
|
(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AstNode } from 'langium';
|
|
2
|
-
import {
|
|
2
|
+
import { type SemanticTokenAcceptor, AbstractSemanticTokenProvider } from 'langium/lsp';
|
|
3
3
|
export declare class LikeC4SemanticTokenProvider extends AbstractSemanticTokenProvider {
|
|
4
4
|
protected highlightElement(node: AstNode, acceptor: SemanticTokenAcceptor): void | undefined | 'prune';
|
|
5
5
|
private highlightNameAndKind;
|
|
@@ -118,6 +118,13 @@ export class LikeC4SemanticTokenProvider extends AbstractSemanticTokenProvider {
|
|
|
118
118
|
});
|
|
119
119
|
return;
|
|
120
120
|
}
|
|
121
|
+
if (ast.isWhereRelationParticipantKind(node) || ast.isWhereRelationParticipantTag(node)) {
|
|
122
|
+
acceptor({
|
|
123
|
+
node,
|
|
124
|
+
property: "participant",
|
|
125
|
+
type: SemanticTokenTypes.keyword
|
|
126
|
+
});
|
|
127
|
+
}
|
|
121
128
|
if (ast.isElementKindExpression(node) && isTruthy(node.kind)) {
|
|
122
129
|
acceptor({
|
|
123
130
|
node,
|
|
@@ -14,21 +14,27 @@ const parseEquals = ({ operator, not }, value) => {
|
|
|
14
14
|
}
|
|
15
15
|
return not ? { neq: value } : { eq: value };
|
|
16
16
|
};
|
|
17
|
+
function parseParticipant(astNode) {
|
|
18
|
+
if (!ast.isWhereRelationParticipantKind(astNode) && !ast.isWhereRelationParticipantTag(astNode)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return astNode.participant;
|
|
22
|
+
}
|
|
17
23
|
export function parseWhereClause(astNode) {
|
|
18
24
|
switch (true) {
|
|
19
25
|
case ast.isWhereTagEqual(astNode): {
|
|
20
26
|
const tag = astNode.value?.ref?.name;
|
|
27
|
+
const participant = parseParticipant(astNode);
|
|
21
28
|
invariant(tag, "Expected tag name");
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
29
|
+
const tagOperator = { tag: parseEquals(astNode, tag) };
|
|
30
|
+
return participant ? { participant, operator: tagOperator } : tagOperator;
|
|
25
31
|
}
|
|
26
32
|
case ast.isWhereKindEqual(astNode): {
|
|
27
33
|
const kind = astNode.value?.ref?.name;
|
|
34
|
+
const participant = parseParticipant(astNode);
|
|
28
35
|
invariant(kind, "Expected kind name");
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
36
|
+
const kindOperator = { kind: parseEquals(astNode, kind) };
|
|
37
|
+
return participant ? { participant, operator: kindOperator } : kindOperator;
|
|
32
38
|
}
|
|
33
39
|
case (ast.isWhereElementNegation(astNode) || ast.isWhereRelationNegation(astNode)): {
|
|
34
40
|
return {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@likec4/language-server",
|
|
3
3
|
"description": "LikeC4 Language Server",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.20.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bugs": "https://github.com/likec4/likec4/issues",
|
|
7
7
|
"homepage": "https://likec4.dev",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
],
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|
|
20
|
-
"url": "https://github.com/likec4/likec4.git",
|
|
20
|
+
"url": "git+https://github.com/likec4/likec4.git",
|
|
21
21
|
"directory": "packages/language-server"
|
|
22
22
|
},
|
|
23
23
|
"type": "module",
|
|
@@ -82,9 +82,9 @@
|
|
|
82
82
|
"test:watch": "vitest"
|
|
83
83
|
},
|
|
84
84
|
"dependencies": {
|
|
85
|
-
"@likec4/core": "1.
|
|
86
|
-
"@likec4/layouts": "1.
|
|
87
|
-
"@likec4/log": "1.
|
|
85
|
+
"@likec4/core": "1.20.0",
|
|
86
|
+
"@likec4/layouts": "1.20.0",
|
|
87
|
+
"@likec4/log": "1.20.0",
|
|
88
88
|
"@msgpack/msgpack": "^3.0.0-beta2",
|
|
89
89
|
"@smithy/util-base64": "^3.0.0",
|
|
90
90
|
"esm-env": "^1.2.1",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"json5": "^2.2.3",
|
|
95
95
|
"langium": "3.3.0",
|
|
96
96
|
"p-debounce": "^4.0.0",
|
|
97
|
-
"remeda": "^2.
|
|
97
|
+
"remeda": "^2.19.0",
|
|
98
98
|
"strip-indent": "^4.0.0",
|
|
99
99
|
"type-fest": "4.28.1",
|
|
100
100
|
"ufo": "^1.5.4",
|
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
"which": "^4.0.0"
|
|
106
106
|
},
|
|
107
107
|
"devDependencies": {
|
|
108
|
-
"@likec4/icons": "1.
|
|
109
|
-
"@likec4/tsconfig": "1.
|
|
108
|
+
"@likec4/icons": "1.20.0",
|
|
109
|
+
"@likec4/tsconfig": "1.20.0",
|
|
110
110
|
"@types/node": "^20.17.7",
|
|
111
111
|
"@types/which": "^3.0.4",
|
|
112
112
|
"@vitest/coverage-v8": "^2.1.8",
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
"npm-run-all2": "^7.0.1",
|
|
117
117
|
"tsx": "~4.19.2",
|
|
118
118
|
"turbo": "^2.3.3",
|
|
119
|
-
"typescript": "^5.7.
|
|
120
|
-
"unbuild": "^3.
|
|
119
|
+
"typescript": "^5.7.3",
|
|
120
|
+
"unbuild": "^3.2.0",
|
|
121
121
|
"vitest": "^2.1.8"
|
|
122
122
|
},
|
|
123
123
|
"packageManager": "yarn@4.6.0"
|
package/src/generated/ast.ts
CHANGED
|
@@ -120,12 +120,14 @@ export type LikeC4KeywordNames =
|
|
|
120
120
|
| "sky"
|
|
121
121
|
| "slate"
|
|
122
122
|
| "solid"
|
|
123
|
+
| "source"
|
|
123
124
|
| "specification"
|
|
124
125
|
| "storage"
|
|
125
126
|
| "style"
|
|
126
127
|
| "styleGroup"
|
|
127
128
|
| "tag"
|
|
128
129
|
| "tail"
|
|
130
|
+
| "target"
|
|
129
131
|
| "technology"
|
|
130
132
|
| "title"
|
|
131
133
|
| "vee"
|
|
@@ -170,6 +172,14 @@ export function isDeploymentElement(item: unknown): item is DeploymentElement {
|
|
|
170
172
|
return reflection.isInstance(item, DeploymentElement);
|
|
171
173
|
}
|
|
172
174
|
|
|
175
|
+
export type DeploymentNodeOrElementKind = DeploymentNodeKind | ElementKind;
|
|
176
|
+
|
|
177
|
+
export const DeploymentNodeOrElementKind = 'DeploymentNodeOrElementKind';
|
|
178
|
+
|
|
179
|
+
export function isDeploymentNodeOrElementKind(item: unknown): item is DeploymentNodeOrElementKind {
|
|
180
|
+
return reflection.isInstance(item, DeploymentNodeOrElementKind);
|
|
181
|
+
}
|
|
182
|
+
|
|
173
183
|
export type DeploymentViewRule = DeploymentViewRulePredicate | DeploymentViewRuleStyle | ViewRuleAutoLayout;
|
|
174
184
|
|
|
175
185
|
export const DeploymentViewRule = 'DeploymentViewRule';
|
|
@@ -260,10 +270,10 @@ export function isIconId(item: unknown): item is IconId {
|
|
|
260
270
|
return (typeof item === 'string' && (/(aws|azure|gcp|tech):[-\w]*/.test(item)));
|
|
261
271
|
}
|
|
262
272
|
|
|
263
|
-
export type Id = 'deployment' | 'element' | 'group' | 'instance' | 'model' | 'node' | ArrowType | ElementShape | LineOptions | ThemeColor | string;
|
|
273
|
+
export type Id = 'deployment' | 'element' | 'group' | 'instance' | 'model' | 'node' | ArrowType | ElementShape | LineOptions | Participant | ThemeColor | string;
|
|
264
274
|
|
|
265
275
|
export function isId(item: unknown): item is Id {
|
|
266
|
-
return isElementShape(item) || isThemeColor(item) || isArrowType(item) || isLineOptions(item) || item === 'element' || item === 'model' || item === 'group' || item === 'node' || item === 'deployment' || item === 'instance' || (typeof item === 'string' && (/[_]*[a-zA-Z][-\w]*/.test(item)));
|
|
276
|
+
return isElementShape(item) || isThemeColor(item) || isArrowType(item) || isLineOptions(item) || isParticipant(item) || item === 'element' || item === 'model' || item === 'group' || item === 'node' || item === 'deployment' || item === 'instance' || (typeof item === 'string' && (/[_]*[a-zA-Z][-\w]*/.test(item)));
|
|
267
277
|
}
|
|
268
278
|
|
|
269
279
|
export type LikeC4View = DeploymentView | DynamicView | ElementView;
|
|
@@ -288,6 +298,12 @@ export function isMetadataProperty(item: unknown): item is MetadataProperty {
|
|
|
288
298
|
return reflection.isInstance(item, MetadataProperty);
|
|
289
299
|
}
|
|
290
300
|
|
|
301
|
+
export type Participant = 'source' | 'target';
|
|
302
|
+
|
|
303
|
+
export function isParticipant(item: unknown): item is Participant {
|
|
304
|
+
return item === 'source' || item === 'target';
|
|
305
|
+
}
|
|
306
|
+
|
|
291
307
|
export type Predicate = ElementPredicate | RelationPredicate;
|
|
292
308
|
|
|
293
309
|
export const Predicate = 'Predicate';
|
|
@@ -456,7 +472,7 @@ export function isWhereExpression(item: unknown): item is WhereExpression {
|
|
|
456
472
|
return reflection.isInstance(item, WhereExpression);
|
|
457
473
|
}
|
|
458
474
|
|
|
459
|
-
export type WhereKindEqual = WhereElementKind | WhereRelationKind;
|
|
475
|
+
export type WhereKindEqual = WhereElementKind | WhereRelationKind | WhereRelationParticipantKind;
|
|
460
476
|
|
|
461
477
|
export const WhereKindEqual = 'WhereKindEqual';
|
|
462
478
|
|
|
@@ -464,7 +480,7 @@ export function isWhereKindEqual(item: unknown): item is WhereKindEqual {
|
|
|
464
480
|
return reflection.isInstance(item, WhereKindEqual);
|
|
465
481
|
}
|
|
466
482
|
|
|
467
|
-
export type WhereRelation = WhereRelationKind | WhereRelationTag;
|
|
483
|
+
export type WhereRelation = WhereRelationKind | WhereRelationParticipantKind | WhereRelationParticipantTag | WhereRelationTag;
|
|
468
484
|
|
|
469
485
|
export const WhereRelation = 'WhereRelation';
|
|
470
486
|
|
|
@@ -480,7 +496,7 @@ export function isWhereRelationExpression(item: unknown): item is WhereRelationE
|
|
|
480
496
|
return reflection.isInstance(item, WhereRelationExpression);
|
|
481
497
|
}
|
|
482
498
|
|
|
483
|
-
export type WhereTagEqual = WhereElementTag | WhereRelationTag;
|
|
499
|
+
export type WhereTagEqual = WhereElementTag | WhereRelationParticipantTag | WhereRelationTag;
|
|
484
500
|
|
|
485
501
|
export const WhereTagEqual = 'WhereTagEqual';
|
|
486
502
|
|
|
@@ -1976,6 +1992,36 @@ export function isWhereRelationNegation(item: unknown): item is WhereRelationNeg
|
|
|
1976
1992
|
return reflection.isInstance(item, WhereRelationNegation);
|
|
1977
1993
|
}
|
|
1978
1994
|
|
|
1995
|
+
export interface WhereRelationParticipantKind extends AstNode {
|
|
1996
|
+
readonly $container: RelationPredicateWhere | RelationPredicateWhereV2 | WhereBinaryExpression | WhereRelationNegation;
|
|
1997
|
+
readonly $type: 'WhereRelationParticipantKind';
|
|
1998
|
+
not: boolean;
|
|
1999
|
+
operator: 'is' | string;
|
|
2000
|
+
participant: Participant;
|
|
2001
|
+
value?: Reference<DeploymentNodeOrElementKind>;
|
|
2002
|
+
}
|
|
2003
|
+
|
|
2004
|
+
export const WhereRelationParticipantKind = 'WhereRelationParticipantKind';
|
|
2005
|
+
|
|
2006
|
+
export function isWhereRelationParticipantKind(item: unknown): item is WhereRelationParticipantKind {
|
|
2007
|
+
return reflection.isInstance(item, WhereRelationParticipantKind);
|
|
2008
|
+
}
|
|
2009
|
+
|
|
2010
|
+
export interface WhereRelationParticipantTag extends AstNode {
|
|
2011
|
+
readonly $container: RelationPredicateWhere | RelationPredicateWhereV2 | WhereBinaryExpression | WhereRelationNegation;
|
|
2012
|
+
readonly $type: 'WhereRelationParticipantTag';
|
|
2013
|
+
not: boolean;
|
|
2014
|
+
operator: 'is' | string;
|
|
2015
|
+
participant: Participant;
|
|
2016
|
+
value?: Reference<Tag>;
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
export const WhereRelationParticipantTag = 'WhereRelationParticipantTag';
|
|
2020
|
+
|
|
2021
|
+
export function isWhereRelationParticipantTag(item: unknown): item is WhereRelationParticipantTag {
|
|
2022
|
+
return reflection.isInstance(item, WhereRelationParticipantTag);
|
|
2023
|
+
}
|
|
2024
|
+
|
|
1979
2025
|
export interface WhereRelationTag extends AstNode {
|
|
1980
2026
|
readonly $container: RelationPredicateWhere | RelationPredicateWhereV2 | WhereBinaryExpression | WhereRelationNegation;
|
|
1981
2027
|
readonly $type: 'WhereRelationTag';
|
|
@@ -2015,6 +2061,7 @@ export type LikeC4AstType = {
|
|
|
2015
2061
|
DeploymentNode: DeploymentNode
|
|
2016
2062
|
DeploymentNodeBody: DeploymentNodeBody
|
|
2017
2063
|
DeploymentNodeKind: DeploymentNodeKind
|
|
2064
|
+
DeploymentNodeOrElementKind: DeploymentNodeOrElementKind
|
|
2018
2065
|
DeploymentRelation: DeploymentRelation
|
|
2019
2066
|
DeploymentRelationBody: DeploymentRelationBody
|
|
2020
2067
|
DeploymentView: DeploymentView
|
|
@@ -2149,6 +2196,8 @@ export type LikeC4AstType = {
|
|
|
2149
2196
|
WhereRelationExpression: WhereRelationExpression
|
|
2150
2197
|
WhereRelationKind: WhereRelationKind
|
|
2151
2198
|
WhereRelationNegation: WhereRelationNegation
|
|
2199
|
+
WhereRelationParticipantKind: WhereRelationParticipantKind
|
|
2200
|
+
WhereRelationParticipantTag: WhereRelationParticipantTag
|
|
2152
2201
|
WhereRelationTag: WhereRelationTag
|
|
2153
2202
|
WhereTagEqual: WhereTagEqual
|
|
2154
2203
|
WildcardExpression: WildcardExpression
|
|
@@ -2157,7 +2206,7 @@ export type LikeC4AstType = {
|
|
|
2157
2206
|
export class LikeC4AstReflection extends AbstractAstReflection {
|
|
2158
2207
|
|
|
2159
2208
|
getAllTypes(): string[] {
|
|
2160
|
-
return [ArrowProperty, BorderProperty, ColorProperty, CustomColor, CustomElementProperties, CustomRelationProperties, DeployedInstance, DeployedInstanceBody, DeploymentElement, DeploymentNode, DeploymentNodeBody, DeploymentNodeKind, DeploymentRelation, DeploymentRelationBody, DeploymentView, DeploymentViewBody, DeploymentViewRule, DeploymentViewRulePredicate, DeploymentViewRulePredicateExpression, DeploymentViewRuleStyle, DirectedRelationExpr, 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, ExpressionV2, ExtendElement, ExtendElementBody, FqnElementRef, FqnExpr, FqnExpressions, FqnRef, FqnRefExpr, FqnReferenceable, GlobalDynamicPredicateGroup, GlobalPredicateGroup, GlobalStyle, GlobalStyleGroup, GlobalStyleId, Globals, IconProperty, InOutRelationExpr, InOutRelationExpression, IncludePredicate, IncomingRelationExpr, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelDeployments, ModelViews, NavigateToProperty, NotationProperty, NotesProperty, OpacityProperty, OutgoingRelationExpr, OutgoingRelationExpression, Predicate, Predicates, Referenceable, Relation, RelationBody, RelationExpr, RelationExpression, RelationNavigateToProperty, RelationPredicate, RelationPredicateOrWhere, RelationPredicateOrWhereV2, RelationPredicateWhere, RelationPredicateWhereV2, 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];
|
|
2209
|
+
return [ArrowProperty, BorderProperty, ColorProperty, CustomColor, CustomElementProperties, CustomRelationProperties, DeployedInstance, DeployedInstanceBody, DeploymentElement, DeploymentNode, DeploymentNodeBody, DeploymentNodeKind, DeploymentNodeOrElementKind, DeploymentRelation, DeploymentRelationBody, DeploymentView, DeploymentViewBody, DeploymentViewRule, DeploymentViewRulePredicate, DeploymentViewRulePredicateExpression, DeploymentViewRuleStyle, DirectedRelationExpr, 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, ExpressionV2, ExtendElement, ExtendElementBody, FqnElementRef, FqnExpr, FqnExpressions, FqnRef, FqnRefExpr, FqnReferenceable, GlobalDynamicPredicateGroup, GlobalPredicateGroup, GlobalStyle, GlobalStyleGroup, GlobalStyleId, Globals, IconProperty, InOutRelationExpr, InOutRelationExpression, IncludePredicate, IncomingRelationExpr, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelDeployments, ModelViews, NavigateToProperty, NotationProperty, NotesProperty, OpacityProperty, OutgoingRelationExpr, OutgoingRelationExpression, Predicate, Predicates, Referenceable, Relation, RelationBody, RelationExpr, RelationExpression, RelationNavigateToProperty, RelationPredicate, RelationPredicateOrWhere, RelationPredicateOrWhereV2, RelationPredicateWhere, RelationPredicateWhereV2, 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, WhereRelationParticipantKind, WhereRelationParticipantTag, WhereRelationTag, WhereTagEqual, WildcardExpression];
|
|
2161
2210
|
}
|
|
2162
2211
|
|
|
2163
2212
|
protected override computeIsSubtype(subtype: string, supertype: string): boolean {
|
|
@@ -2178,6 +2227,10 @@ export class LikeC4AstReflection extends AbstractAstReflection {
|
|
|
2178
2227
|
case DeploymentNode: {
|
|
2179
2228
|
return this.isSubtype(DeploymentElement, supertype) || this.isSubtype(Referenceable, supertype);
|
|
2180
2229
|
}
|
|
2230
|
+
case DeploymentNodeKind:
|
|
2231
|
+
case ElementKind: {
|
|
2232
|
+
return this.isSubtype(DeploymentNodeOrElementKind, supertype);
|
|
2233
|
+
}
|
|
2181
2234
|
case DeploymentView:
|
|
2182
2235
|
case DynamicView:
|
|
2183
2236
|
case ElementView: {
|
|
@@ -2323,9 +2376,11 @@ export class LikeC4AstReflection extends AbstractAstReflection {
|
|
|
2323
2376
|
case WhereRelationNegation: {
|
|
2324
2377
|
return this.isSubtype(WhereRelationExpression, supertype);
|
|
2325
2378
|
}
|
|
2326
|
-
case WhereRelationKind:
|
|
2379
|
+
case WhereRelationKind:
|
|
2380
|
+
case WhereRelationParticipantKind: {
|
|
2327
2381
|
return this.isSubtype(WhereKindEqual, supertype) || this.isSubtype(WhereRelation, supertype);
|
|
2328
2382
|
}
|
|
2383
|
+
case WhereRelationParticipantTag:
|
|
2329
2384
|
case WhereRelationTag: {
|
|
2330
2385
|
return this.isSubtype(WhereRelation, supertype) || this.isSubtype(WhereTagEqual, supertype);
|
|
2331
2386
|
}
|
|
@@ -2373,6 +2428,7 @@ export class LikeC4AstReflection extends AbstractAstReflection {
|
|
|
2373
2428
|
case 'ElementTagExpression:tag':
|
|
2374
2429
|
case 'Tags:values':
|
|
2375
2430
|
case 'WhereElementTag:value':
|
|
2431
|
+
case 'WhereRelationParticipantTag:value':
|
|
2376
2432
|
case 'WhereRelationTag:value': {
|
|
2377
2433
|
return Tag;
|
|
2378
2434
|
}
|
|
@@ -2394,6 +2450,9 @@ export class LikeC4AstReflection extends AbstractAstReflection {
|
|
|
2394
2450
|
case 'ViewRuleGlobalStyle:style': {
|
|
2395
2451
|
return GlobalStyleId;
|
|
2396
2452
|
}
|
|
2453
|
+
case 'WhereRelationParticipantKind:value': {
|
|
2454
|
+
return DeploymentNodeOrElementKind;
|
|
2455
|
+
}
|
|
2397
2456
|
default: {
|
|
2398
2457
|
throw new Error(`${referenceId} is not a valid reference id.`);
|
|
2399
2458
|
}
|
|
@@ -3439,6 +3498,28 @@ export class LikeC4AstReflection extends AbstractAstReflection {
|
|
|
3439
3498
|
]
|
|
3440
3499
|
};
|
|
3441
3500
|
}
|
|
3501
|
+
case WhereRelationParticipantKind: {
|
|
3502
|
+
return {
|
|
3503
|
+
name: WhereRelationParticipantKind,
|
|
3504
|
+
properties: [
|
|
3505
|
+
{ name: 'not', defaultValue: false },
|
|
3506
|
+
{ name: 'operator' },
|
|
3507
|
+
{ name: 'participant' },
|
|
3508
|
+
{ name: 'value' }
|
|
3509
|
+
]
|
|
3510
|
+
};
|
|
3511
|
+
}
|
|
3512
|
+
case WhereRelationParticipantTag: {
|
|
3513
|
+
return {
|
|
3514
|
+
name: WhereRelationParticipantTag,
|
|
3515
|
+
properties: [
|
|
3516
|
+
{ name: 'not', defaultValue: false },
|
|
3517
|
+
{ name: 'operator' },
|
|
3518
|
+
{ name: 'participant' },
|
|
3519
|
+
{ name: 'value' }
|
|
3520
|
+
]
|
|
3521
|
+
};
|
|
3522
|
+
}
|
|
3442
3523
|
case WhereRelationTag: {
|
|
3443
3524
|
return {
|
|
3444
3525
|
name: WhereRelationTag,
|