@likec4/language-server 1.27.3 → 1.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/LikeC4LanguageServices.js +6 -7
  2. package/dist/ast.d.ts +16 -9
  3. package/dist/ast.js +58 -79
  4. package/dist/bundled.mjs +2161 -2141
  5. package/dist/config/schema.d.ts +3 -3
  6. package/dist/config/schema.js +12 -5
  7. package/dist/documentation/documentation-provider.js +3 -1
  8. package/dist/formatting/LikeC4Formatter.d.ts +0 -2
  9. package/dist/formatting/LikeC4Formatter.js +24 -53
  10. package/dist/generated/ast.d.ts +128 -233
  11. package/dist/generated/ast.js +136 -308
  12. package/dist/generated/grammar.js +1 -1
  13. package/dist/lsp/CompletionProvider.d.ts +3 -0
  14. package/dist/lsp/CompletionProvider.js +128 -113
  15. package/dist/lsp/DocumentLinkProvider.js +6 -3
  16. package/dist/lsp/HoverProvider.js +3 -1
  17. package/dist/lsp/SemanticTokenProvider.js +33 -43
  18. package/dist/model/builder/MergedSpecification.d.ts +5 -3
  19. package/dist/model/builder/MergedSpecification.js +21 -7
  20. package/dist/model/builder/buildModel.d.ts +6 -1
  21. package/dist/model/builder/buildModel.js +20 -15
  22. package/dist/model/deployments-index.js +4 -2
  23. package/dist/model/fqn-index.d.ts +4 -2
  24. package/dist/model/fqn-index.js +28 -5
  25. package/dist/model/model-builder.d.ts +2 -2
  26. package/dist/model/model-builder.js +54 -16
  27. package/dist/model/model-locator.js +7 -4
  28. package/dist/model/model-parser.d.ts +215 -52
  29. package/dist/model/model-parser.js +6 -2
  30. package/dist/model/parser/Base.d.ts +11 -2
  31. package/dist/model/parser/Base.js +138 -3
  32. package/dist/model/parser/DeploymentModelParser.d.ts +19 -2
  33. package/dist/model/parser/DeploymentModelParser.js +19 -29
  34. package/dist/model/parser/DeploymentViewParser.d.ts +18 -2
  35. package/dist/model/parser/DeploymentViewParser.js +6 -24
  36. package/dist/model/parser/FqnRefParser.d.ts +18 -3
  37. package/dist/model/parser/FqnRefParser.js +264 -40
  38. package/dist/model/parser/GlobalsParser.d.ts +35 -18
  39. package/dist/model/parser/ImportsParser.d.ts +32 -0
  40. package/dist/model/parser/ImportsParser.js +26 -0
  41. package/dist/model/parser/ModelParser.d.ts +26 -2
  42. package/dist/model/parser/ModelParser.js +21 -41
  43. package/dist/model/parser/PredicatesParser.d.ts +35 -12
  44. package/dist/model/parser/PredicatesParser.js +20 -271
  45. package/dist/model/parser/SpecificationParser.d.ts +8 -0
  46. package/dist/model/parser/SpecificationParser.js +5 -9
  47. package/dist/model/parser/ViewsParser.d.ts +36 -19
  48. package/dist/model/parser/ViewsParser.js +16 -12
  49. package/dist/model-change/changeElementStyle.d.ts +2 -2
  50. package/dist/model-change/changeElementStyle.js +9 -6
  51. package/dist/references/name-provider.js +8 -2
  52. package/dist/references/scope-computation.d.ts +1 -1
  53. package/dist/references/scope-computation.js +33 -3
  54. package/dist/references/scope-provider.d.ts +7 -8
  55. package/dist/references/scope-provider.js +59 -41
  56. package/dist/shared/NodeKindProvider.js +4 -2
  57. package/dist/test/testServices.d.ts +2 -0
  58. package/dist/test/testServices.js +4 -1
  59. package/dist/utils/elementRef.d.ts +1 -1
  60. package/dist/utils/elementRef.js +6 -1
  61. package/dist/utils/fqnRef.d.ts +3 -0
  62. package/dist/utils/fqnRef.js +15 -4
  63. package/dist/utils/index.d.ts +1 -0
  64. package/dist/utils/index.js +9 -0
  65. package/dist/utils/projectId.d.ts +2 -1
  66. package/dist/utils/projectId.js +11 -1
  67. package/dist/validation/_shared.js +2 -2
  68. package/dist/validation/deployment-checks.js +24 -10
  69. package/dist/validation/element-ref.d.ts +4 -0
  70. package/dist/validation/element-ref.js +12 -0
  71. package/dist/validation/element.d.ts +1 -1
  72. package/dist/validation/element.js +1 -1
  73. package/dist/validation/imports.d.ts +5 -0
  74. package/dist/validation/imports.js +30 -0
  75. package/dist/validation/index.d.ts +1 -1
  76. package/dist/validation/index.js +47 -45
  77. package/dist/validation/relation.d.ts +2 -2
  78. package/dist/validation/relation.js +24 -27
  79. package/dist/validation/specification.d.ts +9 -9
  80. package/dist/validation/specification.js +9 -9
  81. package/dist/validation/view-predicates/{element-with.d.ts → fqn-expr-with.d.ts} +1 -1
  82. package/dist/validation/view-predicates/fqn-expr-with.js +42 -0
  83. package/dist/validation/view-predicates/fqn-ref-expr.d.ts +4 -0
  84. package/dist/validation/view-predicates/fqn-ref-expr.js +53 -0
  85. package/dist/validation/view-predicates/incoming.d.ts +1 -1
  86. package/dist/validation/view-predicates/incoming.js +2 -2
  87. package/dist/validation/view-predicates/index.d.ts +6 -6
  88. package/dist/validation/view-predicates/index.js +6 -6
  89. package/dist/validation/view-predicates/outgoing.d.ts +1 -1
  90. package/dist/validation/view-predicates/outgoing.js +8 -4
  91. package/dist/validation/view-predicates/{expanded-element.d.ts → relation-expr.d.ts} +1 -1
  92. package/dist/validation/view-predicates/relation-expr.js +39 -0
  93. package/dist/validation/view-predicates/relation-with.d.ts +1 -1
  94. package/dist/validation/view-predicates/relation-with.js +8 -5
  95. package/dist/views/likec4-views.d.ts +1 -0
  96. package/dist/views/likec4-views.js +23 -4
  97. package/dist/workspace/AstNodeDescriptionProvider.d.ts +1 -1
  98. package/dist/workspace/AstNodeDescriptionProvider.js +2 -3
  99. package/dist/workspace/IndexManager.d.ts +1 -1
  100. package/dist/workspace/IndexManager.js +5 -4
  101. package/dist/workspace/LangiumDocuments.d.ts +1 -1
  102. package/dist/workspace/LangiumDocuments.js +3 -5
  103. package/dist/workspace/ProjectsManager.d.ts +25 -7
  104. package/dist/workspace/ProjectsManager.js +76 -32
  105. package/dist/workspace/WorkspaceManager.d.ts +4 -5
  106. package/dist/workspace/WorkspaceManager.js +53 -20
  107. package/package.json +17 -13
  108. package/dist/validation/dynamic-view-rule.d.ts +0 -4
  109. package/dist/validation/dynamic-view-rule.js +0 -17
  110. package/dist/validation/view-predicates/element-with.js +0 -31
  111. package/dist/validation/view-predicates/expanded-element.js +0 -12
  112. package/dist/validation/view-predicates/expression-v2.d.ts +0 -5
  113. package/dist/validation/view-predicates/expression-v2.js +0 -83
@@ -19,26 +19,46 @@ declare const DocumentParserFromMixins: {
19
19
  parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): ProjectId;
20
20
  parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): ProjectId;
21
21
  parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): ProjectId;
22
- parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").ElementExpressionsIterator, notationProperty?: import("../generated/ast").NotationProperty): ProjectId;
22
+ parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").FqnExpressions, notationProperty?: import("../generated/ast").NotationProperty): ProjectId;
23
23
  parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): ProjectId;
24
24
  parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: ProjectId[]): import("../ast").ParsedAstDynamicView;
25
25
  parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): ProjectId;
26
26
  parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): ProjectId;
27
27
  parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): ProjectId;
28
28
  parseDynamicStep(node: import("../generated/ast").DynamicViewStep): ProjectId;
29
- parsePredicate(astNode: import("../generated/ast").Predicate): ProjectId;
30
- parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): ProjectId;
31
- parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): ProjectId[];
32
- parseElementExpression(astNode: import("../generated/ast").ElementExpression): ProjectId;
33
- parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): ProjectId;
34
- parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): ProjectId;
35
- parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): ProjectId;
36
- parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): ProjectId;
37
- parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: ProjectId | ProjectId): ProjectId;
38
- parseRelationExpression(astNode: import("../generated/ast").RelationExpression): ProjectId;
29
+ parsePredicate(astNode: import("../generated/ast").ExpressionV2): ProjectId;
30
+ parseElementPredicate(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
31
+ parseElementPredicateOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
32
+ parseElementExpression(astNode: import("../generated/ast").FqnExpr): ProjectId;
33
+ parseElementPredicateWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
34
+ parseElementPredicateWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
35
+ parseRelationPredicate(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
36
+ parseRelationPredicateOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
37
+ parseRelationPredicateWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
38
+ parseRelationPredicateWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
39
+ parseRelationExpression(astNode: import("../generated/ast").RelationExpr): ProjectId;
40
+ parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
41
+ parseExpressionV2(astNode: import("../generated/ast").ExpressionV2): ProjectId;
42
+ parseFqnExprOrWith(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
43
+ parseFqnExprWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
44
+ parseFqnExprOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
45
+ parseFqnExprWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
46
+ parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
47
+ parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
48
+ parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
49
+ parseRelationExprOrWith(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
50
+ parseRelationExprWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
51
+ parseRelationExprOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
52
+ parseRelationExprWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
53
+ parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
39
54
  isValid: import("../validation").IsValidFn;
40
55
  readonly services: LikeC4Services;
41
56
  readonly doc: ParsedLikeC4LangiumDocument;
57
+ readonly project: {
58
+ id: ProjectId;
59
+ folder: ProjectId;
60
+ config: Readonly<import("../config").ProjectConfig>;
61
+ };
42
62
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
43
63
  getAstNodePath(node: ProjectId): any;
44
64
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -52,21 +72,18 @@ declare const DocumentParserFromMixins: {
52
72
  }>(withTags?: E): ProjectId<ProjectId> | null;
53
73
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
54
74
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
75
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
76
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
77
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
55
78
  parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
56
79
  parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): ProjectId;
57
80
  parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): ProjectId;
58
81
  parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): ProjectId;
59
- parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
60
- parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
61
- parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
62
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
63
- parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
64
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
65
- parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
66
82
  parseDeployment(): void;
67
83
  parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
68
84
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
69
85
  parseExtendDeployment(astNode: import("../generated/ast").ExtendDeployment): import("../ast").ParsedAstExtend | null;
86
+ _resolveDeploymentRelationSource(node: import("../generated/ast").DeploymentRelation): ProjectId;
70
87
  parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
71
88
  };
72
89
  } & {
@@ -79,26 +96,46 @@ declare const DocumentParserFromMixins: {
79
96
  parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): ProjectId;
80
97
  parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): ProjectId;
81
98
  parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): ProjectId;
82
- parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").ElementExpressionsIterator, notationProperty?: import("../generated/ast").NotationProperty): ProjectId;
99
+ parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").FqnExpressions, notationProperty?: import("../generated/ast").NotationProperty): ProjectId;
83
100
  parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): ProjectId;
84
101
  parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: ProjectId[]): import("../ast").ParsedAstDynamicView;
85
102
  parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): ProjectId;
86
103
  parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): ProjectId;
87
104
  parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): ProjectId;
88
105
  parseDynamicStep(node: import("../generated/ast").DynamicViewStep): ProjectId;
89
- parsePredicate(astNode: import("../generated/ast").Predicate): ProjectId;
90
- parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): ProjectId;
91
- parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): ProjectId[];
92
- parseElementExpression(astNode: import("../generated/ast").ElementExpression): ProjectId;
93
- parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): ProjectId;
94
- parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): ProjectId;
95
- parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): ProjectId;
96
- parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): ProjectId;
97
- parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: ProjectId | ProjectId): ProjectId;
98
- parseRelationExpression(astNode: import("../generated/ast").RelationExpression): ProjectId;
106
+ parsePredicate(astNode: import("../generated/ast").ExpressionV2): ProjectId;
107
+ parseElementPredicate(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
108
+ parseElementPredicateOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
109
+ parseElementExpression(astNode: import("../generated/ast").FqnExpr): ProjectId;
110
+ parseElementPredicateWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
111
+ parseElementPredicateWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
112
+ parseRelationPredicate(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
113
+ parseRelationPredicateOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
114
+ parseRelationPredicateWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
115
+ parseRelationPredicateWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
116
+ parseRelationExpression(astNode: import("../generated/ast").RelationExpr): ProjectId;
117
+ parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
118
+ parseExpressionV2(astNode: import("../generated/ast").ExpressionV2): ProjectId;
119
+ parseFqnExprOrWith(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
120
+ parseFqnExprWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
121
+ parseFqnExprOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
122
+ parseFqnExprWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
123
+ parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
124
+ parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
125
+ parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
126
+ parseRelationExprOrWith(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
127
+ parseRelationExprWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
128
+ parseRelationExprOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
129
+ parseRelationExprWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
130
+ parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
99
131
  isValid: import("../validation").IsValidFn;
100
132
  readonly services: LikeC4Services;
101
133
  readonly doc: ParsedLikeC4LangiumDocument;
134
+ readonly project: {
135
+ id: ProjectId;
136
+ folder: ProjectId;
137
+ config: Readonly<import("../config").ProjectConfig>;
138
+ };
102
139
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
103
140
  getAstNodePath(node: ProjectId): any;
104
141
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -112,21 +149,18 @@ declare const DocumentParserFromMixins: {
112
149
  }>(withTags?: E): ProjectId<ProjectId> | null;
113
150
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
114
151
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
152
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
153
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
154
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
115
155
  parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
116
156
  parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): ProjectId;
117
157
  parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): ProjectId;
118
158
  parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): ProjectId;
119
- parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
120
- parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
121
- parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
122
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
123
- parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
124
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
125
- parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
126
159
  parseDeployment(): void;
127
160
  parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
128
161
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
129
162
  parseExtendDeployment(astNode: import("../generated/ast").ExtendDeployment): import("../ast").ParsedAstExtend | null;
163
+ _resolveDeploymentRelationSource(node: import("../generated/ast").DeploymentRelation): ProjectId;
130
164
  parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
131
165
  };
132
166
  } & {
@@ -136,6 +170,11 @@ declare const DocumentParserFromMixins: {
136
170
  isValid: import("../validation").IsValidFn;
137
171
  readonly services: LikeC4Services;
138
172
  readonly doc: ParsedLikeC4LangiumDocument;
173
+ readonly project: {
174
+ id: ProjectId;
175
+ folder: ProjectId;
176
+ config: Readonly<import("../config").ProjectConfig>;
177
+ };
139
178
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
140
179
  getAstNodePath(node: ProjectId): any;
141
180
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -149,22 +188,45 @@ declare const DocumentParserFromMixins: {
149
188
  }>(withTags?: E): ProjectId<ProjectId> | null;
150
189
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
151
190
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
191
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
192
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
193
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
152
194
  };
153
195
  } & {
154
196
  new (...args: any[]): {
155
- parsePredicate(astNode: import("../generated/ast").Predicate): ProjectId;
156
- parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): ProjectId;
157
- parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): ProjectId[];
158
- parseElementExpression(astNode: import("../generated/ast").ElementExpression): ProjectId;
159
- parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): ProjectId;
160
- parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): ProjectId;
161
- parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): ProjectId;
162
- parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): ProjectId;
163
- parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: ProjectId | ProjectId): ProjectId;
164
- parseRelationExpression(astNode: import("../generated/ast").RelationExpression): ProjectId;
197
+ parsePredicate(astNode: import("../generated/ast").ExpressionV2): ProjectId;
198
+ parseElementPredicate(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
199
+ parseElementPredicateOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
200
+ parseElementExpression(astNode: import("../generated/ast").FqnExpr): ProjectId;
201
+ parseElementPredicateWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
202
+ parseElementPredicateWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
203
+ parseRelationPredicate(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
204
+ parseRelationPredicateOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
205
+ parseRelationPredicateWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
206
+ parseRelationPredicateWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
207
+ parseRelationExpression(astNode: import("../generated/ast").RelationExpr): ProjectId;
208
+ parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
209
+ parseExpressionV2(astNode: import("../generated/ast").ExpressionV2): ProjectId;
210
+ parseFqnExprOrWith(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
211
+ parseFqnExprWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
212
+ parseFqnExprOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
213
+ parseFqnExprWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
214
+ parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
215
+ parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
216
+ parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
217
+ parseRelationExprOrWith(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
218
+ parseRelationExprWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
219
+ parseRelationExprOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
220
+ parseRelationExprWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
221
+ parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
165
222
  isValid: import("../validation").IsValidFn;
166
223
  readonly services: LikeC4Services;
167
224
  readonly doc: ParsedLikeC4LangiumDocument;
225
+ readonly project: {
226
+ id: ProjectId;
227
+ folder: ProjectId;
228
+ config: Readonly<import("../config").ProjectConfig>;
229
+ };
168
230
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
169
231
  getAstNodePath(node: ProjectId): any;
170
232
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -178,6 +240,9 @@ declare const DocumentParserFromMixins: {
178
240
  }>(withTags?: E): ProjectId<ProjectId> | null;
179
241
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
180
242
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
243
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
244
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
245
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
181
246
  };
182
247
  } & {
183
248
  new (...args: any[]): {
@@ -186,15 +251,27 @@ declare const DocumentParserFromMixins: {
186
251
  parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): ProjectId;
187
252
  parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): ProjectId;
188
253
  parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
254
+ parseExpressionV2(astNode: import("../generated/ast").ExpressionV2): ProjectId;
255
+ parseFqnExprOrWith(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
256
+ parseFqnExprWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
257
+ parseFqnExprOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
258
+ parseFqnExprWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
189
259
  parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
190
260
  parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
191
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
192
261
  parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
193
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
262
+ parseRelationExprOrWith(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
263
+ parseRelationExprWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
264
+ parseRelationExprOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
265
+ parseRelationExprWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
194
266
  parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
195
267
  isValid: import("../validation").IsValidFn;
196
268
  readonly services: LikeC4Services;
197
269
  readonly doc: ParsedLikeC4LangiumDocument;
270
+ readonly project: {
271
+ id: ProjectId;
272
+ folder: ProjectId;
273
+ config: Readonly<import("../config").ProjectConfig>;
274
+ };
198
275
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
199
276
  getAstNodePath(node: ProjectId): any;
200
277
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -208,10 +285,14 @@ declare const DocumentParserFromMixins: {
208
285
  }>(withTags?: E): ProjectId<ProjectId> | null;
209
286
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
210
287
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
288
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
289
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
290
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
211
291
  parseDeployment(): void;
212
292
  parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
213
293
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
214
294
  parseExtendDeployment(astNode: import("../generated/ast").ExtendDeployment): import("../ast").ParsedAstExtend | null;
295
+ _resolveDeploymentRelationSource(node: import("../generated/ast").DeploymentRelation): ProjectId;
215
296
  parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
216
297
  };
217
298
  } & {
@@ -220,17 +301,30 @@ declare const DocumentParserFromMixins: {
220
301
  parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
221
302
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
222
303
  parseExtendDeployment(astNode: import("../generated/ast").ExtendDeployment): import("../ast").ParsedAstExtend | null;
304
+ _resolveDeploymentRelationSource(node: import("../generated/ast").DeploymentRelation): ProjectId;
223
305
  parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
224
306
  parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
307
+ parseExpressionV2(astNode: import("../generated/ast").ExpressionV2): ProjectId;
308
+ parseFqnExprOrWith(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
309
+ parseFqnExprWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
310
+ parseFqnExprOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
311
+ parseFqnExprWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
225
312
  parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
226
313
  parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
227
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
228
314
  parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
229
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
315
+ parseRelationExprOrWith(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
316
+ parseRelationExprWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
317
+ parseRelationExprOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
318
+ parseRelationExprWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
230
319
  parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
231
320
  isValid: import("../validation").IsValidFn;
232
321
  readonly services: LikeC4Services;
233
322
  readonly doc: ParsedLikeC4LangiumDocument;
323
+ readonly project: {
324
+ id: ProjectId;
325
+ folder: ProjectId;
326
+ config: Readonly<import("../config").ProjectConfig>;
327
+ };
234
328
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
235
329
  getAstNodePath(node: ProjectId): any;
236
330
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -244,16 +338,67 @@ declare const DocumentParserFromMixins: {
244
338
  }>(withTags?: E): ProjectId<ProjectId> | null;
245
339
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
246
340
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
341
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
342
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
343
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
247
344
  };
248
345
  } & {
249
346
  new (...args: any[]): {
250
347
  parseModel(): void;
251
348
  parseElement(astNode: import("../generated/ast").Element): import("../ast").ParsedAstElement;
252
349
  parseExtendElement(astNode: import("../generated/ast").ExtendElement): import("../ast").ParsedAstExtend | null;
350
+ _resolveRelationSource(node: import("../generated/ast").Relation): ProjectId | ProjectId;
253
351
  parseRelation(astNode: import("../generated/ast").Relation): import("../ast").ParsedAstRelation;
352
+ parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
353
+ parseExpressionV2(astNode: import("../generated/ast").ExpressionV2): ProjectId;
354
+ parseFqnExprOrWith(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
355
+ parseFqnExprWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
356
+ parseFqnExprOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
357
+ parseFqnExprWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
358
+ parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
359
+ parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
360
+ parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
361
+ parseRelationExprOrWith(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
362
+ parseRelationExprWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
363
+ parseRelationExprOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
364
+ parseRelationExprWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
365
+ parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
366
+ isValid: import("../validation").IsValidFn;
367
+ readonly services: LikeC4Services;
368
+ readonly doc: ParsedLikeC4LangiumDocument;
369
+ readonly project: {
370
+ id: ProjectId;
371
+ folder: ProjectId;
372
+ config: Readonly<import("../config").ProjectConfig>;
373
+ };
374
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
375
+ getAstNodePath(node: ProjectId): any;
376
+ getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
377
+ [key: string]: string;
378
+ } | undefined;
379
+ convertTags<E extends {
380
+ tags?: import("../generated/ast").Tags;
381
+ }>(withTags?: E | undefined): any;
382
+ parseTags<E extends {
383
+ tags?: import("../generated/ast").Tags;
384
+ }>(withTags?: E): ProjectId<ProjectId> | null;
385
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
386
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
387
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
388
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
389
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
390
+ };
391
+ } & {
392
+ new (...args: any[]): {
393
+ parseImports(): void;
254
394
  isValid: import("../validation").IsValidFn;
255
395
  readonly services: LikeC4Services;
256
396
  readonly doc: ParsedLikeC4LangiumDocument;
397
+ readonly project: {
398
+ id: ProjectId;
399
+ folder: ProjectId;
400
+ config: Readonly<import("../config").ProjectConfig>;
401
+ };
257
402
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
258
403
  getAstNodePath(node: ProjectId): any;
259
404
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -267,19 +412,34 @@ declare const DocumentParserFromMixins: {
267
412
  }>(withTags?: E): ProjectId<ProjectId> | null;
268
413
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
269
414
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
415
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
416
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
417
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
270
418
  };
271
419
  } & {
272
420
  new (...args: any[]): {
273
421
  parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
422
+ parseExpressionV2(astNode: import("../generated/ast").ExpressionV2): ProjectId;
423
+ parseFqnExprOrWith(astNode: import("../generated/ast").FqnExprOrWith): ProjectId;
424
+ parseFqnExprWith(astNode: import("../generated/ast").FqnExprWith): ProjectId;
425
+ parseFqnExprOrWhere(astNode: import("../generated/ast").FqnExprOrWhere): ProjectId;
426
+ parseFqnExprWhere(astNode: import("../generated/ast").FqnExprWhere): ProjectId;
274
427
  parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
275
428
  parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
276
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
277
429
  parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
278
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
430
+ parseRelationExprOrWith(astNode: import("../generated/ast").RelationExprOrWith): ProjectId;
431
+ parseRelationExprWith(astNode: import("../generated/ast").RelationExprWith): ProjectId;
432
+ parseRelationExprOrWhere(astNode: import("../generated/ast").RelationExprOrWhere): ProjectId;
433
+ parseRelationExprWhere(astNode: import("../generated/ast").RelationExprWhere): ProjectId;
279
434
  parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
280
435
  isValid: import("../validation").IsValidFn;
281
436
  readonly services: LikeC4Services;
282
437
  readonly doc: ParsedLikeC4LangiumDocument;
438
+ readonly project: {
439
+ id: ProjectId;
440
+ folder: ProjectId;
441
+ config: Readonly<import("../config").ProjectConfig>;
442
+ };
283
443
  resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
284
444
  getAstNodePath(node: ProjectId): any;
285
445
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
@@ -293,6 +453,9 @@ declare const DocumentParserFromMixins: {
293
453
  }>(withTags?: E): ProjectId<ProjectId> | null;
294
454
  convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
295
455
  parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
456
+ parseIconProperty(prop: import("../generated/ast").IconProperty | undefined): ProjectId | undefined;
457
+ parseElementStyle(elementProps: Array<import("../generated/ast").ElementProperty> | import("../generated/ast").ElementStyleProperty | undefined): import("../ast").ParsedElementStyle;
458
+ parseStyleProps(styleProps: Array<import("../generated/ast").StyleProperty> | undefined): import("../ast").ParsedElementStyle;
296
459
  };
297
460
  } & typeof BaseParser;
298
461
  export declare class DocumentParser extends DocumentParserFromMixins {
@@ -1,4 +1,4 @@
1
- import { DefaultWeakMap } from "@likec4/core/utils";
1
+ import { DefaultWeakMap, MultiMap } from "@likec4/core/utils";
2
2
  import { loggable } from "@likec4/log";
3
3
  import { DocumentState } from "langium";
4
4
  import { pipe } from "remeda";
@@ -10,6 +10,7 @@ import { DeploymentModelParser } from "./parser/DeploymentModelParser.js";
10
10
  import { DeploymentViewParser } from "./parser/DeploymentViewParser.js";
11
11
  import { ExpressionV2Parser } from "./parser/FqnRefParser.js";
12
12
  import { GlobalsParser } from "./parser/GlobalsParser.js";
13
+ import { ImportsParser } from "./parser/ImportsParser.js";
13
14
  import { ModelParser } from "./parser/ModelParser.js";
14
15
  import { PredicatesParser } from "./parser/PredicatesParser.js";
15
16
  import { SpecificationParser } from "./parser/SpecificationParser.js";
@@ -17,6 +18,7 @@ import { ViewsParser } from "./parser/ViewsParser.js";
17
18
  const DocumentParserFromMixins = pipe(
18
19
  BaseParser,
19
20
  ExpressionV2Parser,
21
+ ImportsParser,
20
22
  ModelParser,
21
23
  DeploymentModelParser,
22
24
  DeploymentViewParser,
@@ -92,11 +94,13 @@ export class LikeC4ModelParser {
92
94
  dynamicPredicates: {},
93
95
  styles: {}
94
96
  },
95
- c4Views: []
97
+ c4Views: [],
98
+ c4Imports: new MultiMap(Set)
96
99
  };
97
100
  doc = Object.assign(doc, props);
98
101
  const parser = new DocumentParser(this.services, doc);
99
102
  parser.parseSpecification();
103
+ parser.parseImports();
100
104
  parser.parseModel();
101
105
  parser.parseGlobals();
102
106
  parser.parseDeployment();
@@ -1,6 +1,7 @@
1
1
  import type * as c4 from '@likec4/core';
2
- import type { AstNode } from 'langium';
3
- import { type ParsedLikeC4LangiumDocument, ast } from '../../ast';
2
+ import type { AstNode, URI } from 'langium';
3
+ import { type ParsedElementStyle, type ParsedLikeC4LangiumDocument, ast } from '../../ast';
4
+ import type { ProjectConfig } from '../../config';
4
5
  import type { LikeC4Services } from '../../module';
5
6
  import { type IsValidFn } from '../../validation';
6
7
  export type GConstructor<T = {}> = new (...args: any[]) => T;
@@ -12,6 +13,11 @@ export declare class BaseParser {
12
13
  readonly doc: ParsedLikeC4LangiumDocument;
13
14
  isValid: IsValidFn;
14
15
  constructor(services: LikeC4Services, doc: ParsedLikeC4LangiumDocument);
16
+ get project(): {
17
+ id: c4.ProjectId;
18
+ folder: URI;
19
+ config: Readonly<ProjectConfig>;
20
+ };
15
21
  resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
16
22
  getAstNodePath(node: AstNode): any;
17
23
  getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
@@ -25,4 +31,7 @@ export declare class BaseParser {
25
31
  }>(withTags?: E): c4.NonEmptyArray<c4.Tag> | null;
26
32
  convertLinks(source?: ast.LinkProperty['$container']): c4.Link[] | undefined;
27
33
  parseLinks(source?: ast.LinkProperty['$container']): c4.Link[] | undefined;
34
+ parseIconProperty(prop: ast.IconProperty | undefined): c4.IconUrl | undefined;
35
+ parseElementStyle(elementProps: Array<ast.ElementProperty> | ast.ElementStyleProperty | undefined): ParsedElementStyle;
36
+ parseStyleProps(styleProps: Array<ast.StyleProperty> | undefined): ParsedElementStyle;
28
37
  }