@likec4/language-server 1.25.1 → 1.26.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 (60) hide show
  1. package/dist/LikeC4FileSystem.js +6 -1
  2. package/dist/LikeC4LanguageServices.d.ts +77 -0
  3. package/dist/LikeC4LanguageServices.js +118 -0
  4. package/dist/Rpc.js +106 -28
  5. package/dist/ast.d.ts +10 -0
  6. package/dist/bundled.mjs +2352 -2278
  7. package/dist/config/index.d.ts +1 -0
  8. package/dist/config/index.js +1 -0
  9. package/dist/config/schema.d.ts +8 -0
  10. package/dist/config/schema.js +19 -0
  11. package/dist/index.d.ts +1 -0
  12. package/dist/lsp/CodeLensProvider.js +3 -1
  13. package/dist/model/builder/buildModel.d.ts +8 -1
  14. package/dist/model/deployments-index.js +1 -1
  15. package/dist/model/fqn-index.d.ts +9 -6
  16. package/dist/model/fqn-index.js +24 -14
  17. package/dist/model/model-builder.d.ts +16 -6
  18. package/dist/model/model-builder.js +64 -50
  19. package/dist/model/model-locator.d.ts +11 -10
  20. package/dist/model/model-locator.js +32 -14
  21. package/dist/model/model-parser.d.ts +148 -148
  22. package/dist/model/model-parser.js +2 -2
  23. package/dist/model/parser/ModelParser.js +14 -2
  24. package/dist/model-change/ModelChanges.d.ts +1 -1
  25. package/dist/model-change/ModelChanges.js +2 -2
  26. package/dist/module.d.ts +9 -3
  27. package/dist/module.js +19 -5
  28. package/dist/protocol.d.ts +98 -16
  29. package/dist/protocol.js +21 -6
  30. package/dist/references/scope-provider.d.ts +24 -11
  31. package/dist/references/scope-provider.js +97 -68
  32. package/dist/shared/index.d.ts +0 -1
  33. package/dist/shared/index.js +0 -1
  34. package/dist/test/testServices.d.ts +15 -1
  35. package/dist/test/testServices.js +65 -17
  36. package/dist/utils/index.d.ts +3 -0
  37. package/dist/utils/index.js +3 -0
  38. package/dist/utils/projectId.d.ts +3 -0
  39. package/dist/utils/projectId.js +6 -0
  40. package/dist/validation/deployment-checks.js +5 -2
  41. package/dist/validation/element.js +2 -1
  42. package/dist/validation/specification.js +14 -7
  43. package/dist/validation/view.js +10 -8
  44. package/dist/views/index.d.ts +1 -1
  45. package/dist/views/index.js +1 -1
  46. package/dist/views/likec4-views.d.ts +17 -8
  47. package/dist/views/likec4-views.js +12 -11
  48. package/dist/workspace/AstNodeDescriptionProvider.d.ts +7 -0
  49. package/dist/workspace/AstNodeDescriptionProvider.js +18 -0
  50. package/dist/workspace/IndexManager.d.ts +10 -0
  51. package/dist/workspace/IndexManager.js +17 -0
  52. package/dist/workspace/LangiumDocuments.d.ts +14 -0
  53. package/dist/workspace/LangiumDocuments.js +31 -0
  54. package/dist/workspace/ProjectsManager.d.ts +48 -0
  55. package/dist/workspace/ProjectsManager.js +150 -0
  56. package/dist/{shared → workspace}/WorkspaceManager.d.ts +8 -2
  57. package/dist/{shared → workspace}/WorkspaceManager.js +22 -0
  58. package/dist/workspace/index.d.ts +5 -0
  59. package/dist/workspace/index.js +5 -0
  60. package/package.json +17 -8
@@ -1,4 +1,4 @@
1
- import { DefaultWeakMap } from '@likec4/core/utils';
1
+ import type { ProjectId } from '@likec4/core';
2
2
  import { type LangiumDocument, type Stream } from 'langium';
3
3
  import type { ParsedLikeC4LangiumDocument } from '../ast';
4
4
  import type { LikeC4Services } from '../module';
@@ -7,40 +7,40 @@ export type ModelParsedListener = () => void;
7
7
  declare const DocumentParserFromMixins: {
8
8
  new (...args: any[]): {
9
9
  parseGlobals(): void;
10
- parseAndStoreGlobalPredicateGroupOrDynamic(astRule: import("../generated/ast").GlobalPredicateGroup | import("../generated/ast").GlobalDynamicPredicateGroup, id: DefaultWeakMap, c4Globals: import("../ast").ParsedAstGlobals): void;
11
- parseGlobalPredicateGroup(astRule: import("../generated/ast").GlobalPredicateGroup): DefaultWeakMap[];
12
- parseGlobalDynamicPredicateGroup(astRule: import("../generated/ast").GlobalDynamicPredicateGroup): DefaultWeakMap[];
13
- parseGlobalStyleOrGroup(astRule: import("../generated/ast").GlobalStyle | import("../generated/ast").GlobalStyleGroup): DefaultWeakMap[];
10
+ parseAndStoreGlobalPredicateGroupOrDynamic(astRule: import("../generated/ast").GlobalPredicateGroup | import("../generated/ast").GlobalDynamicPredicateGroup, id: ProjectId, c4Globals: import("../ast").ParsedAstGlobals): void;
11
+ parseGlobalPredicateGroup(astRule: import("../generated/ast").GlobalPredicateGroup): ProjectId[];
12
+ parseGlobalDynamicPredicateGroup(astRule: import("../generated/ast").GlobalDynamicPredicateGroup): ProjectId[];
13
+ parseGlobalStyleOrGroup(astRule: import("../generated/ast").GlobalStyle | import("../generated/ast").GlobalStyleGroup): ProjectId[];
14
14
  parseViews(): void;
15
- parseElementView(astNode: import("../generated/ast").ElementView, additionalStyles: DefaultWeakMap[]): import("../ast").ParsedAstElementView;
16
- parseViewRule(astRule: import("../generated/ast").ViewRule): DefaultWeakMap;
17
- parseViewRulePredicate(astNode: import("../generated/ast").ViewRulePredicate): DefaultWeakMap;
18
- parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): DefaultWeakMap;
19
- parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): DefaultWeakMap;
20
- parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): DefaultWeakMap;
21
- parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): DefaultWeakMap;
22
- parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").ElementExpressionsIterator, notationProperty?: import("../generated/ast").NotationProperty): DefaultWeakMap;
23
- parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): DefaultWeakMap;
24
- parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: DefaultWeakMap[]): import("../ast").ParsedAstDynamicView;
25
- parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): DefaultWeakMap;
26
- parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): DefaultWeakMap;
27
- parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): DefaultWeakMap;
28
- parseDynamicStep(node: import("../generated/ast").DynamicViewStep): DefaultWeakMap;
29
- parsePredicate(astNode: import("../generated/ast").Predicate): DefaultWeakMap;
30
- parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): DefaultWeakMap;
31
- parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): DefaultWeakMap[];
32
- parseElementExpression(astNode: import("../generated/ast").ElementExpression): DefaultWeakMap;
33
- parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): DefaultWeakMap;
34
- parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): DefaultWeakMap;
35
- parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): DefaultWeakMap;
36
- parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): DefaultWeakMap;
37
- parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: DefaultWeakMap | DefaultWeakMap): DefaultWeakMap;
38
- parseRelationExpression(astNode: import("../generated/ast").RelationExpression): DefaultWeakMap;
15
+ parseElementView(astNode: import("../generated/ast").ElementView, additionalStyles: ProjectId[]): import("../ast").ParsedAstElementView;
16
+ parseViewRule(astRule: import("../generated/ast").ViewRule): ProjectId;
17
+ parseViewRulePredicate(astNode: import("../generated/ast").ViewRulePredicate): ProjectId;
18
+ parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): ProjectId;
19
+ parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): ProjectId;
20
+ parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): ProjectId;
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;
23
+ parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): ProjectId;
24
+ parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: ProjectId[]): import("../ast").ParsedAstDynamicView;
25
+ parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): ProjectId;
26
+ parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): ProjectId;
27
+ parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): ProjectId;
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;
39
39
  isValid: import("../validation").IsValidFn;
40
40
  readonly services: LikeC4Services;
41
41
  readonly doc: ParsedLikeC4LangiumDocument;
42
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
43
- getAstNodePath(node: DefaultWeakMap): any;
42
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
43
+ getAstNodePath(node: ProjectId): any;
44
44
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
45
45
  [key: string]: string;
46
46
  } | undefined;
@@ -49,20 +49,20 @@ declare const DocumentParserFromMixins: {
49
49
  }>(withTags?: E | undefined): any;
50
50
  parseTags<E extends {
51
51
  tags?: import("../generated/ast").Tags;
52
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
53
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
54
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
52
+ }>(withTags?: E): ProjectId<ProjectId> | null;
53
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
54
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
55
55
  parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
56
- parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): DefaultWeakMap;
57
- parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): DefaultWeakMap;
58
- parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): DefaultWeakMap;
59
- parseFqnRef(astNode: import("../generated/ast").FqnRef): DefaultWeakMap;
60
- parseFqnExpr(astNode: import("../generated/ast").FqnExpr): DefaultWeakMap;
61
- parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): DefaultWeakMap;
62
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): DefaultWeakMap;
63
- parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): DefaultWeakMap[];
64
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): DefaultWeakMap;
65
- parseRelationExpr(astNode: import("../generated/ast").RelationExpr): DefaultWeakMap;
56
+ parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): ProjectId;
57
+ parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): ProjectId;
58
+ 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
66
  parseDeployment(): void;
67
67
  parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
68
68
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
@@ -72,35 +72,35 @@ declare const DocumentParserFromMixins: {
72
72
  } & {
73
73
  new (...args: any[]): {
74
74
  parseViews(): void;
75
- parseElementView(astNode: import("../generated/ast").ElementView, additionalStyles: DefaultWeakMap[]): import("../ast").ParsedAstElementView;
76
- parseViewRule(astRule: import("../generated/ast").ViewRule): DefaultWeakMap;
77
- parseViewRulePredicate(astNode: import("../generated/ast").ViewRulePredicate): DefaultWeakMap;
78
- parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): DefaultWeakMap;
79
- parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): DefaultWeakMap;
80
- parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): DefaultWeakMap;
81
- parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): DefaultWeakMap;
82
- parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").ElementExpressionsIterator, notationProperty?: import("../generated/ast").NotationProperty): DefaultWeakMap;
83
- parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): DefaultWeakMap;
84
- parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: DefaultWeakMap[]): import("../ast").ParsedAstDynamicView;
85
- parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): DefaultWeakMap;
86
- parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): DefaultWeakMap;
87
- parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): DefaultWeakMap;
88
- parseDynamicStep(node: import("../generated/ast").DynamicViewStep): DefaultWeakMap;
89
- parsePredicate(astNode: import("../generated/ast").Predicate): DefaultWeakMap;
90
- parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): DefaultWeakMap;
91
- parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): DefaultWeakMap[];
92
- parseElementExpression(astNode: import("../generated/ast").ElementExpression): DefaultWeakMap;
93
- parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): DefaultWeakMap;
94
- parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): DefaultWeakMap;
95
- parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): DefaultWeakMap;
96
- parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): DefaultWeakMap;
97
- parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: DefaultWeakMap | DefaultWeakMap): DefaultWeakMap;
98
- parseRelationExpression(astNode: import("../generated/ast").RelationExpression): DefaultWeakMap;
75
+ parseElementView(astNode: import("../generated/ast").ElementView, additionalStyles: ProjectId[]): import("../ast").ParsedAstElementView;
76
+ parseViewRule(astRule: import("../generated/ast").ViewRule): ProjectId;
77
+ parseViewRulePredicate(astNode: import("../generated/ast").ViewRulePredicate): ProjectId;
78
+ parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): ProjectId;
79
+ parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): ProjectId;
80
+ parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): ProjectId;
81
+ 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;
83
+ parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): ProjectId;
84
+ parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: ProjectId[]): import("../ast").ParsedAstDynamicView;
85
+ parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): ProjectId;
86
+ parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): ProjectId;
87
+ parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): ProjectId;
88
+ 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;
99
99
  isValid: import("../validation").IsValidFn;
100
100
  readonly services: LikeC4Services;
101
101
  readonly doc: ParsedLikeC4LangiumDocument;
102
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
103
- getAstNodePath(node: DefaultWeakMap): any;
102
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
103
+ getAstNodePath(node: ProjectId): any;
104
104
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
105
105
  [key: string]: string;
106
106
  } | undefined;
@@ -109,20 +109,20 @@ declare const DocumentParserFromMixins: {
109
109
  }>(withTags?: E | undefined): any;
110
110
  parseTags<E extends {
111
111
  tags?: import("../generated/ast").Tags;
112
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
113
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
114
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
112
+ }>(withTags?: E): ProjectId<ProjectId> | null;
113
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
114
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
115
115
  parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
116
- parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): DefaultWeakMap;
117
- parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): DefaultWeakMap;
118
- parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): DefaultWeakMap;
119
- parseFqnRef(astNode: import("../generated/ast").FqnRef): DefaultWeakMap;
120
- parseFqnExpr(astNode: import("../generated/ast").FqnExpr): DefaultWeakMap;
121
- parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): DefaultWeakMap;
122
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): DefaultWeakMap;
123
- parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): DefaultWeakMap[];
124
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): DefaultWeakMap;
125
- parseRelationExpr(astNode: import("../generated/ast").RelationExpr): DefaultWeakMap;
116
+ parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): ProjectId;
117
+ parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): ProjectId;
118
+ 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
126
  parseDeployment(): void;
127
127
  parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
128
128
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
@@ -136,8 +136,8 @@ declare const DocumentParserFromMixins: {
136
136
  isValid: import("../validation").IsValidFn;
137
137
  readonly services: LikeC4Services;
138
138
  readonly doc: ParsedLikeC4LangiumDocument;
139
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
140
- getAstNodePath(node: DefaultWeakMap): any;
139
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
140
+ getAstNodePath(node: ProjectId): any;
141
141
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
142
142
  [key: string]: string;
143
143
  } | undefined;
@@ -146,27 +146,27 @@ declare const DocumentParserFromMixins: {
146
146
  }>(withTags?: E | undefined): any;
147
147
  parseTags<E extends {
148
148
  tags?: import("../generated/ast").Tags;
149
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
150
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
151
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
149
+ }>(withTags?: E): ProjectId<ProjectId> | null;
150
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
151
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
152
152
  };
153
153
  } & {
154
154
  new (...args: any[]): {
155
- parsePredicate(astNode: import("../generated/ast").Predicate): DefaultWeakMap;
156
- parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): DefaultWeakMap;
157
- parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): DefaultWeakMap[];
158
- parseElementExpression(astNode: import("../generated/ast").ElementExpression): DefaultWeakMap;
159
- parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): DefaultWeakMap;
160
- parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): DefaultWeakMap;
161
- parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): DefaultWeakMap;
162
- parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): DefaultWeakMap;
163
- parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: DefaultWeakMap | DefaultWeakMap): DefaultWeakMap;
164
- parseRelationExpression(astNode: import("../generated/ast").RelationExpression): DefaultWeakMap;
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;
165
165
  isValid: import("../validation").IsValidFn;
166
166
  readonly services: LikeC4Services;
167
167
  readonly doc: ParsedLikeC4LangiumDocument;
168
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
169
- getAstNodePath(node: DefaultWeakMap): any;
168
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
169
+ getAstNodePath(node: ProjectId): any;
170
170
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
171
171
  [key: string]: string;
172
172
  } | undefined;
@@ -175,28 +175,28 @@ declare const DocumentParserFromMixins: {
175
175
  }>(withTags?: E | undefined): any;
176
176
  parseTags<E extends {
177
177
  tags?: import("../generated/ast").Tags;
178
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
179
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
180
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
178
+ }>(withTags?: E): ProjectId<ProjectId> | null;
179
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
180
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
181
181
  };
182
182
  } & {
183
183
  new (...args: any[]): {
184
184
  parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
185
- parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): DefaultWeakMap;
186
- parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): DefaultWeakMap;
187
- parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): DefaultWeakMap;
188
- parseFqnRef(astNode: import("../generated/ast").FqnRef): DefaultWeakMap;
189
- parseFqnExpr(astNode: import("../generated/ast").FqnExpr): DefaultWeakMap;
190
- parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): DefaultWeakMap;
191
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): DefaultWeakMap;
192
- parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): DefaultWeakMap[];
193
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): DefaultWeakMap;
194
- parseRelationExpr(astNode: import("../generated/ast").RelationExpr): DefaultWeakMap;
185
+ parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): ProjectId;
186
+ parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): ProjectId;
187
+ parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): ProjectId;
188
+ parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
189
+ parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
190
+ parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
191
+ parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
192
+ parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
193
+ parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
194
+ parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
195
195
  isValid: import("../validation").IsValidFn;
196
196
  readonly services: LikeC4Services;
197
197
  readonly doc: ParsedLikeC4LangiumDocument;
198
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
199
- getAstNodePath(node: DefaultWeakMap): any;
198
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
199
+ getAstNodePath(node: ProjectId): any;
200
200
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
201
201
  [key: string]: string;
202
202
  } | undefined;
@@ -205,9 +205,9 @@ declare const DocumentParserFromMixins: {
205
205
  }>(withTags?: E | undefined): any;
206
206
  parseTags<E extends {
207
207
  tags?: import("../generated/ast").Tags;
208
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
209
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
210
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
208
+ }>(withTags?: E): ProjectId<ProjectId> | null;
209
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
210
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
211
211
  parseDeployment(): void;
212
212
  parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
213
213
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
@@ -221,18 +221,18 @@ declare const DocumentParserFromMixins: {
221
221
  parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
222
222
  parseExtendDeployment(astNode: import("../generated/ast").ExtendDeployment): import("../ast").ParsedAstExtend | null;
223
223
  parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
224
- parseFqnRef(astNode: import("../generated/ast").FqnRef): DefaultWeakMap;
225
- parseFqnExpr(astNode: import("../generated/ast").FqnExpr): DefaultWeakMap;
226
- parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): DefaultWeakMap;
227
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): DefaultWeakMap;
228
- parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): DefaultWeakMap[];
229
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): DefaultWeakMap;
230
- parseRelationExpr(astNode: import("../generated/ast").RelationExpr): DefaultWeakMap;
224
+ parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
225
+ parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
226
+ parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
227
+ parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
228
+ parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
229
+ parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
230
+ parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
231
231
  isValid: import("../validation").IsValidFn;
232
232
  readonly services: LikeC4Services;
233
233
  readonly doc: ParsedLikeC4LangiumDocument;
234
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
235
- getAstNodePath(node: DefaultWeakMap): any;
234
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
235
+ getAstNodePath(node: ProjectId): any;
236
236
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
237
237
  [key: string]: string;
238
238
  } | undefined;
@@ -241,9 +241,9 @@ declare const DocumentParserFromMixins: {
241
241
  }>(withTags?: E | undefined): any;
242
242
  parseTags<E extends {
243
243
  tags?: import("../generated/ast").Tags;
244
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
245
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
246
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
244
+ }>(withTags?: E): ProjectId<ProjectId> | null;
245
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
246
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
247
247
  };
248
248
  } & {
249
249
  new (...args: any[]): {
@@ -254,8 +254,8 @@ declare const DocumentParserFromMixins: {
254
254
  isValid: import("../validation").IsValidFn;
255
255
  readonly services: LikeC4Services;
256
256
  readonly doc: ParsedLikeC4LangiumDocument;
257
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
258
- getAstNodePath(node: DefaultWeakMap): any;
257
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
258
+ getAstNodePath(node: ProjectId): any;
259
259
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
260
260
  [key: string]: string;
261
261
  } | undefined;
@@ -264,24 +264,24 @@ declare const DocumentParserFromMixins: {
264
264
  }>(withTags?: E | undefined): any;
265
265
  parseTags<E extends {
266
266
  tags?: import("../generated/ast").Tags;
267
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
268
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
269
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
267
+ }>(withTags?: E): ProjectId<ProjectId> | null;
268
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
269
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
270
270
  };
271
271
  } & {
272
272
  new (...args: any[]): {
273
- parseFqnRef(astNode: import("../generated/ast").FqnRef): DefaultWeakMap;
274
- parseFqnExpr(astNode: import("../generated/ast").FqnExpr): DefaultWeakMap;
275
- parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): DefaultWeakMap;
276
- parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): DefaultWeakMap;
277
- parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): DefaultWeakMap[];
278
- parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): DefaultWeakMap;
279
- parseRelationExpr(astNode: import("../generated/ast").RelationExpr): DefaultWeakMap;
273
+ parseFqnRef(astNode: import("../generated/ast").FqnRef): ProjectId;
274
+ parseFqnExpr(astNode: import("../generated/ast").FqnExpr): ProjectId;
275
+ parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): ProjectId;
276
+ parseElementWhereExpr(astNode: import("../generated/ast").ElementPredicateWhereV2): ProjectId;
277
+ parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): ProjectId[];
278
+ parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): ProjectId;
279
+ parseRelationExpr(astNode: import("../generated/ast").RelationExpr): ProjectId;
280
280
  isValid: import("../validation").IsValidFn;
281
281
  readonly services: LikeC4Services;
282
282
  readonly doc: ParsedLikeC4LangiumDocument;
283
- resolveFqn(node: import("../generated/ast").FqnReferenceable): DefaultWeakMap;
284
- getAstNodePath(node: DefaultWeakMap): any;
283
+ resolveFqn(node: import("../generated/ast").FqnReferenceable): ProjectId;
284
+ getAstNodePath(node: ProjectId): any;
285
285
  getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
286
286
  [key: string]: string;
287
287
  } | undefined;
@@ -290,9 +290,9 @@ declare const DocumentParserFromMixins: {
290
290
  }>(withTags?: E | undefined): any;
291
291
  parseTags<E extends {
292
292
  tags?: import("../generated/ast").Tags;
293
- }>(withTags?: E): DefaultWeakMap<DefaultWeakMap> | null;
294
- convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
295
- parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): DefaultWeakMap[] | undefined;
293
+ }>(withTags?: E): ProjectId<ProjectId> | null;
294
+ convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
295
+ parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): ProjectId[] | undefined;
296
296
  };
297
297
  } & typeof BaseParser;
298
298
  export declare class DocumentParser extends DocumentParserFromMixins {
@@ -301,7 +301,7 @@ export declare class LikeC4ModelParser {
301
301
  private services;
302
302
  protected cachedParsers: any;
303
303
  constructor(services: LikeC4Services);
304
- documents(): Stream<ParsedLikeC4LangiumDocument>;
304
+ documents(projectId: ProjectId): Stream<ParsedLikeC4LangiumDocument>;
305
305
  parse(doc: LangiumDocument): ParsedLikeC4LangiumDocument;
306
306
  forDocument(doc: LangiumDocument): DocumentParser;
307
307
  private createParser;
@@ -53,8 +53,8 @@ export class LikeC4ModelParser {
53
53
  );
54
54
  }
55
55
  cachedParsers = new DefaultWeakMap((doc) => this.createParser(doc));
56
- documents() {
57
- return this.services.shared.workspace.LangiumDocuments.all.map(
56
+ documents(projectId) {
57
+ return this.services.shared.workspace.LangiumDocuments.projectDocuments(projectId).map(
58
58
  (d) => this.parse(d)
59
59
  );
60
60
  }
@@ -1,14 +1,16 @@
1
1
  import { isNonEmptyArray, LinkedList, nonexhaustive, nonNullable } from "@likec4/core";
2
+ import { loggable } from "@likec4/log";
2
3
  import { filter, first, isDefined, isEmpty, isNonNullish, isTruthy, map, mapToObj, pipe } from "remeda";
3
4
  import {
4
5
  ast,
5
6
  toElementStyle,
6
7
  toRelationshipStyleExcludeDefaults
7
8
  } from "../../ast.js";
8
- import { logWarnError } from "../../logger.js";
9
+ import { logger as mainLogger } from "../../logger.js";
9
10
  import { elementRef } from "../../utils/elementRef.js";
10
11
  import { stringHash } from "../../utils/stringHash.js";
11
12
  import { removeIndent, toSingleLine } from "./Base.js";
13
+ const logger = mainLogger.getChild("ModelParser");
12
14
  function resolveRelationPoints(node) {
13
15
  const target = elementRef(node.target);
14
16
  if (!target) {
@@ -76,7 +78,17 @@ export function ModelParser(B) {
76
78
  }
77
79
  nonexhaustive(el);
78
80
  } catch (e) {
79
- logWarnError(e);
81
+ const astPath = this.getAstNodePath(el);
82
+ const error = loggable(e);
83
+ const message = e instanceof Error ? e.message : String(error);
84
+ logger.warn(`Error on {eltype}: ${message}
85
+ document: {path}
86
+ astpath: {astPath}
87
+ ${error}`, {
88
+ path: doc.uri.path,
89
+ eltype: el.$type,
90
+ astPath
91
+ });
80
92
  }
81
93
  }
82
94
  }
@@ -7,7 +7,7 @@ export declare class LikeC4ModelChanges {
7
7
  private locator;
8
8
  constructor(services: LikeC4Services);
9
9
  applyChange(changeView: ChangeView.Params): Promise<Location | null>;
10
- protected convertToTextEdit({ viewId, change }: ChangeView.Params): {
10
+ protected convertToTextEdit({ viewId, projectId, change }: ChangeView.Params): {
11
11
  doc: ParsedLikeC4LangiumDocument;
12
12
  modifiedRange: Range;
13
13
  edits: TextEdit[];
@@ -45,8 +45,8 @@ export class LikeC4ModelChanges {
45
45
  }
46
46
  return result;
47
47
  }
48
- convertToTextEdit({ viewId, change }) {
49
- const lookup = this.locator.locateViewAst(viewId);
48
+ convertToTextEdit({ viewId, projectId, change }) {
49
+ const lookup = this.locator.locateViewAst(viewId, projectId);
50
50
  if (!lookup) {
51
51
  throw new Error(`LikeC4ModelChanges: view not found: ${viewId}`);
52
52
  }
package/dist/module.d.ts CHANGED
@@ -2,19 +2,24 @@ import { GraphvizLayouter } from '@likec4/layouts';
2
2
  import { type Module, WorkspaceCache } from 'langium';
3
3
  import { type DefaultSharedModuleContext, type LangiumServices, type LangiumSharedServices, type PartialLangiumServices } from 'langium/lsp';
4
4
  import { LikeC4DocumentationProvider } from './documentation';
5
+ import { type LikeC4LanguageServices } from './LikeC4LanguageServices';
5
6
  import { LikeC4CodeLensProvider, LikeC4CompletionProvider, LikeC4DocumentHighlightProvider, LikeC4DocumentLinkProvider, LikeC4DocumentSymbolProvider, LikeC4HoverProvider, LikeC4SemanticTokenProvider } from './lsp';
6
- import { DeploymentsIndex, FqnIndex, LikeC4ModelBuilder, LikeC4ModelLocator, LikeC4ModelParser } from './model';
7
+ import { type LikeC4ModelBuilder, DeploymentsIndex, FqnIndex, LikeC4ModelLocator, LikeC4ModelParser } from './model';
7
8
  import { LikeC4ModelChanges } from './model-change/ModelChanges';
8
9
  import { LikeC4NameProvider, LikeC4ScopeComputation, LikeC4ScopeProvider } from './references';
9
10
  import { Rpc } from './Rpc';
10
- import { LikeC4WorkspaceManager, NodeKindProvider, WorkspaceSymbolProvider } from './shared';
11
- import { LikeC4Views } from './views';
11
+ import { NodeKindProvider, WorkspaceSymbolProvider } from './shared';
12
+ import { type LikeC4Views } from './views';
13
+ import { IndexManager, LangiumDocuments, LikeC4WorkspaceManager, ProjectsManager } from './workspace';
12
14
  interface LikeC4AddedSharedServices {
13
15
  lsp: {
14
16
  NodeKindProvider: NodeKindProvider;
15
17
  WorkspaceSymbolProvider: WorkspaceSymbolProvider;
16
18
  };
17
19
  workspace: {
20
+ ProjectsManager: ProjectsManager;
21
+ IndexManager: IndexManager;
22
+ LangiumDocuments: LangiumDocuments;
18
23
  WorkspaceManager: LikeC4WorkspaceManager;
19
24
  };
20
25
  }
@@ -29,6 +34,7 @@ export interface LikeC4AddedServices {
29
34
  ValidatedWorkspaceCache: WorkspaceCache<string, any>;
30
35
  Rpc: Rpc;
31
36
  likec4: {
37
+ LanguageServices: LikeC4LanguageServices;
32
38
  Views: LikeC4Views;
33
39
  Layouter: GraphvizLayouter;
34
40
  DeploymentsIndex: DeploymentsIndex;