@likec4/language-server 1.46.4 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/LICENSE +1 -1
  2. package/browser/package.json +2 -2
  3. package/browser-worker/package.json +2 -2
  4. package/bundled/package.json +4 -0
  5. package/dist/LikeC4LanguageServices.d.mts +4 -0
  6. package/dist/LikeC4LanguageServices.mjs +3 -0
  7. package/dist/_chunks/ConfigurableLayouter.mjs +1956 -0
  8. package/dist/_chunks/LikeC4LanguageServices.d.mts +1978 -0
  9. package/dist/_chunks/LikeC4LanguageServices.mjs +725 -0
  10. package/dist/_chunks/ast.d.mts +1444 -0
  11. package/dist/_chunks/ast.mjs +2375 -0
  12. package/dist/_chunks/ast2.mjs +176 -0
  13. package/dist/_chunks/common-exports.mjs +0 -0
  14. package/dist/_chunks/filesystem.mjs +58 -0
  15. package/dist/_chunks/grammar.mjs +8 -0
  16. package/dist/_chunks/icons.mjs +5211 -0
  17. package/dist/_chunks/libs/@hono/node-server.mjs +436 -0
  18. package/dist/_chunks/libs/@msgpack/msgpack.mjs +805 -0
  19. package/dist/_chunks/libs/eventemitter3.mjs +243 -0
  20. package/dist/_chunks/libs/fast-equals.mjs +446 -0
  21. package/dist/_chunks/libs/hono.mjs +1829 -0
  22. package/dist/_chunks/libs/p-queue.mjs +449 -0
  23. package/dist/_chunks/libs/parse-ms.mjs +36 -0
  24. package/dist/_chunks/libs/picomatch.mjs +1673 -0
  25. package/dist/_chunks/libs/pretty-ms.mjs +80 -0
  26. package/dist/_chunks/libs/remeda.mjs +482 -0
  27. package/dist/_chunks/libs/strip-indent.mjs +15 -0
  28. package/dist/_chunks/libs/ufo.mjs +166 -0
  29. package/dist/_chunks/likec4lib.mjs +9 -0
  30. package/dist/_chunks/mcp.mjs +33 -0
  31. package/dist/_chunks/module.mjs +28 -0
  32. package/dist/_chunks/module2.mjs +6576 -0
  33. package/dist/_chunks/protocol.d.mts +311 -0
  34. package/dist/_chunks/protocol.mjs +78 -0
  35. package/dist/_chunks/rolldown-runtime.mjs +42 -0
  36. package/dist/ast.d.mts +4 -0
  37. package/dist/ast.mjs +4 -0
  38. package/dist/browser-worker.d.mts +1 -0
  39. package/dist/browser-worker.mjs +6 -0
  40. package/dist/browser.d.mts +11 -0
  41. package/dist/browser.mjs +27 -0
  42. package/dist/bundled.d.mts +28 -0
  43. package/dist/bundled.mjs +51 -4681
  44. package/dist/common-exports.d.mts +4 -0
  45. package/dist/common-exports.mjs +5 -0
  46. package/dist/filesystem/index.d.mts +4 -0
  47. package/dist/filesystem/index.mjs +3 -0
  48. package/dist/generated/ast.d.mts +2 -0
  49. package/dist/generated/ast.mjs +3 -0
  50. package/dist/generated/grammar.d.mts +6 -0
  51. package/dist/generated/grammar.mjs +3 -0
  52. package/dist/generated/module.d.mts +14 -0
  53. package/dist/generated/module.mjs +3 -0
  54. package/dist/generated-lib/icons.d.mts +4 -0
  55. package/dist/generated-lib/icons.mjs +3 -0
  56. package/dist/index.d.mts +4 -0
  57. package/dist/index.mjs +48 -0
  58. package/dist/likec4lib.d.mts +9 -0
  59. package/dist/likec4lib.mjs +4 -0
  60. package/dist/mcp/index.d.mts +4 -0
  61. package/dist/mcp/index.mjs +3 -0
  62. package/dist/module.d.mts +4 -0
  63. package/dist/module.mjs +3 -0
  64. package/dist/protocol.d.mts +2 -0
  65. package/dist/protocol.mjs +3 -0
  66. package/likec4lib/package.json +2 -2
  67. package/package.json +106 -62
  68. package/protocol/package.json +2 -2
  69. package/dist/LikeC4LanguageServices.d.ts +0 -109
  70. package/dist/LikeC4LanguageServices.js +0 -154
  71. package/dist/Rpc.d.ts +0 -9
  72. package/dist/Rpc.js +0 -270
  73. package/dist/ast.d.ts +0 -226
  74. package/dist/ast.js +0 -264
  75. package/dist/browser-worker.d.ts +0 -1
  76. package/dist/browser-worker.js +0 -4
  77. package/dist/browser.d.ts +0 -11
  78. package/dist/browser.js +0 -35
  79. package/dist/bundled.d.ts +0 -8
  80. package/dist/bundled.js +0 -44
  81. package/dist/documentation/documentation-provider.d.ts +0 -8
  82. package/dist/documentation/documentation-provider.js +0 -51
  83. package/dist/documentation/index.d.ts +0 -1
  84. package/dist/documentation/index.js +0 -1
  85. package/dist/empty.d.ts +0 -2
  86. package/dist/empty.js +0 -2
  87. package/dist/filesystem/ChokidarWatcher.d.ts +0 -16
  88. package/dist/filesystem/ChokidarWatcher.js +0 -108
  89. package/dist/filesystem/FileSystemWatcher.d.ts +0 -19
  90. package/dist/filesystem/FileSystemWatcher.js +0 -14
  91. package/dist/filesystem/LikeC4FileSystem.d.ts +0 -3
  92. package/dist/filesystem/LikeC4FileSystem.js +0 -130
  93. package/dist/filesystem/index.d.ts +0 -55
  94. package/dist/filesystem/index.js +0 -29
  95. package/dist/formatting/LikeC4Formatter.d.ts +0 -59
  96. package/dist/formatting/LikeC4Formatter.js +0 -637
  97. package/dist/formatting/utils.d.ts +0 -6
  98. package/dist/formatting/utils.js +0 -18
  99. package/dist/generated/ast.d.ts +0 -1411
  100. package/dist/generated/ast.js +0 -2207
  101. package/dist/generated/grammar.d.ts +0 -6
  102. package/dist/generated/grammar.js +0 -7
  103. package/dist/generated/module.d.ts +0 -14
  104. package/dist/generated/module.js +0 -27
  105. package/dist/generated-lib/icons.d.ts +0 -1
  106. package/dist/generated-lib/icons.js +0 -18
  107. package/dist/index.d.ts +0 -38
  108. package/dist/index.js +0 -55
  109. package/dist/likec4lib.d.ts +0 -6
  110. package/dist/likec4lib.js +0 -7
  111. package/dist/logger.d.ts +0 -17
  112. package/dist/logger.js +0 -81
  113. package/dist/lsp/CodeActionProvider.d.ts +0 -14
  114. package/dist/lsp/CodeActionProvider.js +0 -33
  115. package/dist/lsp/CodeLensProvider.d.ts +0 -9
  116. package/dist/lsp/CodeLensProvider.js +0 -44
  117. package/dist/lsp/CompletionProvider.d.ts +0 -11
  118. package/dist/lsp/CompletionProvider.js +0 -200
  119. package/dist/lsp/DocumentHighlightProvider.d.ts +0 -9
  120. package/dist/lsp/DocumentHighlightProvider.js +0 -10
  121. package/dist/lsp/DocumentLinkProvider.d.ts +0 -11
  122. package/dist/lsp/DocumentLinkProvider.js +0 -58
  123. package/dist/lsp/DocumentSymbolProvider.d.ts +0 -33
  124. package/dist/lsp/DocumentSymbolProvider.js +0 -317
  125. package/dist/lsp/HoverProvider.d.ts +0 -10
  126. package/dist/lsp/HoverProvider.js +0 -106
  127. package/dist/lsp/RenameProvider.d.ts +0 -5
  128. package/dist/lsp/RenameProvider.js +0 -6
  129. package/dist/lsp/SemanticTokenProvider.d.ts +0 -12
  130. package/dist/lsp/SemanticTokenProvider.js +0 -264
  131. package/dist/lsp/index.d.ts +0 -8
  132. package/dist/lsp/index.js +0 -9
  133. package/dist/mcp/MCPServerFactory.d.ts +0 -8
  134. package/dist/mcp/MCPServerFactory.js +0 -73
  135. package/dist/mcp/NoopLikeC4MCPServer.d.ts +0 -9
  136. package/dist/mcp/NoopLikeC4MCPServer.js +0 -17
  137. package/dist/mcp/interfaces.d.ts +0 -13
  138. package/dist/mcp/interfaces.js +0 -5
  139. package/dist/mcp/server/StdioLikeC4MCPServer.d.ts +0 -16
  140. package/dist/mcp/server/StdioLikeC4MCPServer.js +0 -51
  141. package/dist/mcp/server/StreamableLikeC4MCPServer.d.ts +0 -16
  142. package/dist/mcp/server/StreamableLikeC4MCPServer.js +0 -145
  143. package/dist/mcp/server/WithMCPServer.d.ts +0 -4
  144. package/dist/mcp/server/WithMCPServer.js +0 -54
  145. package/dist/mcp/tools/_common.d.ts +0 -88
  146. package/dist/mcp/tools/_common.js +0 -49
  147. package/dist/mcp/tools/find-relationships.d.ts +0 -12
  148. package/dist/mcp/tools/find-relationships.js +0 -150
  149. package/dist/mcp/tools/list-projects.d.ts +0 -6
  150. package/dist/mcp/tools/list-projects.js +0 -62
  151. package/dist/mcp/tools/open-view.d.ts +0 -10
  152. package/dist/mcp/tools/open-view.js +0 -52
  153. package/dist/mcp/tools/read-deployment.d.ts +0 -10
  154. package/dist/mcp/tools/read-deployment.js +0 -150
  155. package/dist/mcp/tools/read-element.d.ts +0 -10
  156. package/dist/mcp/tools/read-element.js +0 -218
  157. package/dist/mcp/tools/read-project-summary.d.ts +0 -8
  158. package/dist/mcp/tools/read-project-summary.js +0 -176
  159. package/dist/mcp/tools/read-view.d.ts +0 -10
  160. package/dist/mcp/tools/read-view.js +0 -203
  161. package/dist/mcp/tools/search-element.d.ts +0 -8
  162. package/dist/mcp/tools/search-element.js +0 -177
  163. package/dist/mcp/utils.d.ts +0 -18
  164. package/dist/mcp/utils.js +0 -48
  165. package/dist/model/builder/MergedExtends.d.ts +0 -13
  166. package/dist/model/builder/MergedExtends.js +0 -74
  167. package/dist/model/builder/MergedSpecification.d.ts +0 -32
  168. package/dist/model/builder/MergedSpecification.js +0 -175
  169. package/dist/model/builder/buildModel.d.ts +0 -16
  170. package/dist/model/builder/buildModel.js +0 -245
  171. package/dist/model/deployments-index.d.ts +0 -10
  172. package/dist/model/deployments-index.js +0 -102
  173. package/dist/model/fqn-index.d.ts +0 -61
  174. package/dist/model/fqn-index.js +0 -253
  175. package/dist/model/index.d.ts +0 -6
  176. package/dist/model/index.js +0 -6
  177. package/dist/model/model-builder.d.ts +0 -52
  178. package/dist/model/model-builder.js +0 -224
  179. package/dist/model/model-locator.d.ts +0 -39
  180. package/dist/model/model-locator.js +0 -240
  181. package/dist/model/model-parser-where.d.ts +0 -4
  182. package/dist/model/model-parser-where.js +0 -81
  183. package/dist/model/model-parser.d.ts +0 -645
  184. package/dist/model/model-parser.js +0 -133
  185. package/dist/model/parser/Base.d.ts +0 -69
  186. package/dist/model/parser/Base.js +0 -372
  187. package/dist/model/parser/DeploymentModelParser.d.ts +0 -71
  188. package/dist/model/parser/DeploymentModelParser.js +0 -176
  189. package/dist/model/parser/DeploymentViewParser.d.ts +0 -75
  190. package/dist/model/parser/DeploymentViewParser.js +0 -86
  191. package/dist/model/parser/FqnRefParser.d.ts +0 -66
  192. package/dist/model/parser/FqnRefParser.js +0 -382
  193. package/dist/model/parser/GlobalsParser.d.ts +0 -109
  194. package/dist/model/parser/GlobalsParser.js +0 -84
  195. package/dist/model/parser/ImportsParser.d.ts +0 -46
  196. package/dist/model/parser/ImportsParser.js +0 -24
  197. package/dist/model/parser/ModelParser.d.ts +0 -71
  198. package/dist/model/parser/ModelParser.js +0 -209
  199. package/dist/model/parser/PredicatesParser.d.ts +0 -75
  200. package/dist/model/parser/PredicatesParser.js +0 -45
  201. package/dist/model/parser/SpecificationParser.d.ts +0 -53
  202. package/dist/model/parser/SpecificationParser.js +0 -113
  203. package/dist/model/parser/ValueConverter.d.ts +0 -4
  204. package/dist/model/parser/ValueConverter.js +0 -12
  205. package/dist/model/parser/ViewsParser.d.ts +0 -112
  206. package/dist/model/parser/ViewsParser.js +0 -492
  207. package/dist/model-change/ModelChanges.d.ts +0 -18
  208. package/dist/model-change/ModelChanges.js +0 -129
  209. package/dist/model-change/changeElementStyle.d.ts +0 -16
  210. package/dist/model-change/changeElementStyle.js +0 -134
  211. package/dist/model-change/changeViewLayout.d.ts +0 -12
  212. package/dist/model-change/changeViewLayout.js +0 -28
  213. package/dist/model-change/removeManualLayoutV1.d.ts +0 -7
  214. package/dist/model-change/removeManualLayoutV1.js +0 -27
  215. package/dist/module.d.ts +0 -92
  216. package/dist/module.js +0 -143
  217. package/dist/protocol.d.ts +0 -284
  218. package/dist/protocol.js +0 -123
  219. package/dist/references/index.d.ts +0 -3
  220. package/dist/references/index.js +0 -3
  221. package/dist/references/name-provider.d.ts +0 -9
  222. package/dist/references/name-provider.js +0 -37
  223. package/dist/references/scope-computation.d.ts +0 -20
  224. package/dist/references/scope-computation.js +0 -288
  225. package/dist/references/scope-provider.d.ts +0 -40
  226. package/dist/references/scope-provider.js +0 -239
  227. package/dist/shared/NodeKindProvider.d.ts +0 -15
  228. package/dist/shared/NodeKindProvider.js +0 -57
  229. package/dist/shared/WorkspaceSymbolProvider.d.ts +0 -3
  230. package/dist/shared/WorkspaceSymbolProvider.js +0 -3
  231. package/dist/shared/index.d.ts +0 -2
  232. package/dist/shared/index.js +0 -2
  233. package/dist/test/index.d.ts +0 -1
  234. package/dist/test/index.js +0 -1
  235. package/dist/test/testServices.d.ts +0 -64
  236. package/dist/test/testServices.js +0 -210
  237. package/dist/utils/disposable.d.ts +0 -8
  238. package/dist/utils/disposable.js +0 -26
  239. package/dist/utils/elementRef.d.ts +0 -11
  240. package/dist/utils/elementRef.js +0 -27
  241. package/dist/utils/fqnRef.d.ts +0 -11
  242. package/dist/utils/fqnRef.js +0 -63
  243. package/dist/utils/index.d.ts +0 -11
  244. package/dist/utils/index.js +0 -35
  245. package/dist/utils/printDocs.d.ts +0 -2
  246. package/dist/utils/printDocs.js +0 -1
  247. package/dist/utils/projectId.d.ts +0 -4
  248. package/dist/utils/projectId.js +0 -16
  249. package/dist/utils/stringHash.d.ts +0 -1
  250. package/dist/utils/stringHash.js +0 -5
  251. package/dist/validation/DocumentValidator.d.ts +0 -11
  252. package/dist/validation/DocumentValidator.js +0 -17
  253. package/dist/validation/_shared.d.ts +0 -3
  254. package/dist/validation/_shared.js +0 -26
  255. package/dist/validation/deployment-checks.d.ts +0 -7
  256. package/dist/validation/deployment-checks.js +0 -140
  257. package/dist/validation/dynamic-view.d.ts +0 -6
  258. package/dist/validation/dynamic-view.js +0 -67
  259. package/dist/validation/element-ref.d.ts +0 -4
  260. package/dist/validation/element-ref.js +0 -12
  261. package/dist/validation/element.d.ts +0 -4
  262. package/dist/validation/element.js +0 -49
  263. package/dist/validation/imports.d.ts +0 -4
  264. package/dist/validation/imports.js +0 -46
  265. package/dist/validation/index.d.ts +0 -15
  266. package/dist/validation/index.js +0 -167
  267. package/dist/validation/property-checks.d.ts +0 -7
  268. package/dist/validation/property-checks.js +0 -108
  269. package/dist/validation/relation.d.ts +0 -6
  270. package/dist/validation/relation.js +0 -141
  271. package/dist/validation/specification.d.ts +0 -12
  272. package/dist/validation/specification.js +0 -190
  273. package/dist/validation/view-checks.d.ts +0 -4
  274. package/dist/validation/view-checks.js +0 -46
  275. package/dist/validation/view-predicates/fqn-expr-with.d.ts +0 -4
  276. package/dist/validation/view-predicates/fqn-expr-with.js +0 -43
  277. package/dist/validation/view-predicates/fqn-ref-expr.d.ts +0 -4
  278. package/dist/validation/view-predicates/fqn-ref-expr.js +0 -51
  279. package/dist/validation/view-predicates/incoming.d.ts +0 -4
  280. package/dist/validation/view-predicates/incoming.js +0 -16
  281. package/dist/validation/view-predicates/index.d.ts +0 -6
  282. package/dist/validation/view-predicates/index.js +0 -6
  283. package/dist/validation/view-predicates/outgoing.d.ts +0 -4
  284. package/dist/validation/view-predicates/outgoing.js +0 -20
  285. package/dist/validation/view-predicates/relation-expr.d.ts +0 -4
  286. package/dist/validation/view-predicates/relation-expr.js +0 -46
  287. package/dist/validation/view-predicates/relation-with.d.ts +0 -4
  288. package/dist/validation/view-predicates/relation-with.js +0 -16
  289. package/dist/validation/view.d.ts +0 -4
  290. package/dist/validation/view.js +0 -42
  291. package/dist/view-utils/assignNavigateTo.d.ts +0 -2
  292. package/dist/view-utils/assignNavigateTo.js +0 -27
  293. package/dist/view-utils/index.d.ts +0 -2
  294. package/dist/view-utils/index.js +0 -2
  295. package/dist/view-utils/manual-layout.d.ts +0 -13
  296. package/dist/view-utils/manual-layout.js +0 -149
  297. package/dist/views/ConfigurableLayouter.d.ts +0 -7
  298. package/dist/views/ConfigurableLayouter.js +0 -51
  299. package/dist/views/LikeC4ManualLayouts.d.ts +0 -42
  300. package/dist/views/LikeC4ManualLayouts.js +0 -209
  301. package/dist/views/LikeC4Views.d.ts +0 -89
  302. package/dist/views/LikeC4Views.js +0 -216
  303. package/dist/views/index.d.ts +0 -4
  304. package/dist/views/index.js +0 -11
  305. package/dist/workspace/AstNodeDescriptionProvider.d.ts +0 -7
  306. package/dist/workspace/AstNodeDescriptionProvider.js +0 -18
  307. package/dist/workspace/IndexManager.d.ts +0 -10
  308. package/dist/workspace/IndexManager.js +0 -26
  309. package/dist/workspace/LangiumDocuments.d.ts +0 -25
  310. package/dist/workspace/LangiumDocuments.js +0 -98
  311. package/dist/workspace/ProjectsManager.d.ts +0 -130
  312. package/dist/workspace/ProjectsManager.js +0 -605
  313. package/dist/workspace/WorkspaceManager.d.ts +0 -31
  314. package/dist/workspace/WorkspaceManager.js +0 -132
  315. package/dist/workspace/index.d.ts +0 -5
  316. package/dist/workspace/index.js +0 -5
@@ -1,317 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- //
3
- // Copyright (c) 2023-2025 Denis Davydkov
4
- // Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
- //
6
- // Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
7
- import { nonexhaustive } from '@likec4/core';
8
- import { AstUtils, DocumentState, GrammarUtils } from 'langium';
9
- import { filter, isEmpty, isTruthy, map, pipe } from 'remeda';
10
- import { SymbolKind } from 'vscode-languageserver-types';
11
- import { ast, isLikeC4LangiumDocument } from '../ast';
12
- import { logger as rootLogger, logWarnError } from '../logger';
13
- import { readStrictFqn } from '../utils/elementRef';
14
- const logger = rootLogger.getChild('DocumentSymbolProvider');
15
- export class LikeC4DocumentSymbolProvider {
16
- services;
17
- nodeKindProvider;
18
- nameProvider;
19
- parser;
20
- locator;
21
- constructor(services) {
22
- this.services = services;
23
- this.nodeKindProvider = services.shared.lsp.NodeKindProvider;
24
- this.parser = services.likec4.ModelParser;
25
- this.locator = services.likec4.ModelLocator;
26
- this.nameProvider = services.references.NameProvider;
27
- }
28
- async getSymbols(doc, _params, cancelToken) {
29
- if (!isLikeC4LangiumDocument(doc) || this.services.shared.workspace.ProjectsManager.isExcluded(doc)) {
30
- return [];
31
- }
32
- if (doc.state <= DocumentState.Linked) {
33
- logger.debug(`Waiting for document ${doc.uri.path} to be Linked`);
34
- await this.services.shared.workspace.DocumentBuilder.waitUntil(DocumentState.Linked, doc.uri, cancelToken);
35
- logger.debug(`document is Linked`);
36
- }
37
- const { parseResult: { value: { specifications, models, deployments, views, likec4lib }, }, } = doc;
38
- return [
39
- ...likec4lib.map(l => () => this.getLikec4LibSymbol(l)),
40
- ...specifications.map(s => () => this.getSpecSymbol(s)),
41
- ...models.map(s => () => this.getModelSymbol(s)),
42
- ...deployments.map(s => () => this.getDeploymentModelSymbol(s)),
43
- ...views.map(s => () => this.getModelViewsSymbol(s)),
44
- ].flatMap(fn => {
45
- try {
46
- return fn() ?? [];
47
- }
48
- catch (e) {
49
- logWarnError(e);
50
- return [];
51
- }
52
- });
53
- }
54
- getLikec4LibSymbol(astLib) {
55
- const cstModel = astLib?.$cstNode;
56
- if (!cstModel)
57
- return [];
58
- const children = astLib.icons.map(i => this.getLibIconSymbol(i)).filter(isTruthy);
59
- if (children.length === 0)
60
- return [];
61
- return [
62
- {
63
- kind: SymbolKind.Namespace,
64
- name: 'icons',
65
- range: cstModel.range,
66
- selectionRange: GrammarUtils.findNodeForKeyword(cstModel, 'icons')?.range ?? cstModel.range,
67
- children,
68
- },
69
- ];
70
- }
71
- getSpecSymbol(astSpec) {
72
- const cstModel = astSpec?.$cstNode;
73
- if (!cstModel)
74
- return [];
75
- const specKeywordNode = GrammarUtils.findNodeForProperty(cstModel, 'name');
76
- if (!specKeywordNode)
77
- return [];
78
- const specSymbols = pipe([...astSpec.elements, ...astSpec.tags, ...astSpec.relationships], map(nd => {
79
- try {
80
- if (ast.isSpecificationElementKind(nd) || ast.isSpecificationRelationshipKind(nd)
81
- || ast.isSpecificationDeploymentNodeKind(nd)) {
82
- return this.getKindSymbol(nd);
83
- }
84
- if (ast.isSpecificationTag(nd)) {
85
- return this.getTagSymbol(nd);
86
- }
87
- }
88
- catch (e) {
89
- logWarnError(e);
90
- return null;
91
- }
92
- nonexhaustive(nd);
93
- }), filter(isTruthy));
94
- if (specSymbols.length === 0)
95
- return [];
96
- return [
97
- {
98
- kind: SymbolKind.Namespace,
99
- name: astSpec.name,
100
- range: cstModel.range,
101
- selectionRange: specKeywordNode.range,
102
- children: specSymbols,
103
- },
104
- ];
105
- }
106
- getModelSymbol(astModel) {
107
- const cstModel = astModel.$cstNode;
108
- if (!cstModel)
109
- return [];
110
- const nameNode = GrammarUtils.findNodeForProperty(cstModel, 'name');
111
- if (!nameNode)
112
- return [];
113
- return [
114
- {
115
- kind: this.symbolKind(astModel),
116
- name: astModel.name,
117
- range: cstModel.range,
118
- selectionRange: nameNode.range,
119
- children: astModel.elements.flatMap(e => {
120
- // Skip ExtendRelation nodes as they don't need symbols
121
- if (ast.isExtendRelation(e))
122
- return [];
123
- return this.getElementsSymbol(e);
124
- }),
125
- },
126
- ];
127
- }
128
- getDeploymentModelSymbol(astModel) {
129
- const cstModel = astModel.$cstNode;
130
- if (!cstModel)
131
- return [];
132
- const nameNode = GrammarUtils.findNodeForProperty(cstModel, 'name');
133
- if (!nameNode)
134
- return [];
135
- return [
136
- {
137
- kind: this.symbolKind(astModel),
138
- name: astModel.name,
139
- range: cstModel.range,
140
- selectionRange: nameNode.range,
141
- children: astModel.elements.flatMap(e => this.getDeploymentElementSymbol(e)),
142
- },
143
- ];
144
- }
145
- getElementsSymbol(el) {
146
- try {
147
- if (ast.isExtendElement(el)) {
148
- return this.getExtendElementSymbol(el);
149
- }
150
- if (ast.isElement(el)) {
151
- return this.getElementSymbol(el);
152
- }
153
- }
154
- catch (e) {
155
- logWarnError(e);
156
- }
157
- return [];
158
- }
159
- getExtendElementSymbol(astElement) {
160
- const cst = astElement.$cstNode;
161
- const nameNode = astElement.element.$cstNode;
162
- const body = astElement.body;
163
- if (!cst || !nameNode)
164
- return [];
165
- return [
166
- {
167
- kind: this.symbolKind(astElement),
168
- name: readStrictFqn(astElement.element),
169
- range: cst.range,
170
- selectionRange: nameNode.range,
171
- children: body.elements.flatMap(e => this.getElementsSymbol(e)),
172
- },
173
- ];
174
- }
175
- getElementSymbol(astElement) {
176
- const cst = astElement.$cstNode;
177
- const nameNode = GrammarUtils.findNodeForProperty(cst, 'name');
178
- if (!nameNode || !cst)
179
- return [];
180
- const name = astElement.name;
181
- const kind = astElement.kind.$refText;
182
- // TODO: return the title as well
183
- const detail = kind; // + (astElement.title ? ': ' + astElement.title : '').replaceAll('\n', ' ').trim()
184
- return [
185
- {
186
- kind: this.symbolKind(astElement),
187
- name: name,
188
- range: cst.range,
189
- selectionRange: nameNode.range,
190
- detail,
191
- children: astElement.body?.elements.flatMap(e => this.getElementsSymbol(e)) ?? [],
192
- },
193
- ];
194
- }
195
- getModelViewsSymbol(astViews) {
196
- const cst = astViews.$cstNode;
197
- const nameNode = GrammarUtils.findNodeForProperty(cst, 'name');
198
- if (!nameNode || !cst)
199
- return [];
200
- return [
201
- {
202
- kind: this.symbolKind(astViews),
203
- name: astViews.name,
204
- range: cst.range,
205
- selectionRange: nameNode.range,
206
- children: astViews.views.flatMap(e => this.getViewSymbol(e)),
207
- },
208
- ];
209
- }
210
- getKindSymbol(astKind) {
211
- if (!astKind.$cstNode || !astKind.kind.$cstNode || isEmpty(astKind.kind.name))
212
- return null;
213
- return {
214
- kind: this.symbolKind(astKind),
215
- name: astKind.kind.name,
216
- range: astKind.$cstNode.range,
217
- selectionRange: astKind.kind.$cstNode.range,
218
- };
219
- }
220
- getTagSymbol(astTag) {
221
- if (!astTag.$cstNode || !astTag.tag.$cstNode || isEmpty(astTag.tag.name))
222
- return null;
223
- return {
224
- kind: this.symbolKind(astTag),
225
- name: '#' + astTag.tag.name,
226
- range: astTag.$cstNode.range,
227
- selectionRange: astTag.tag.$cstNode.range,
228
- };
229
- }
230
- getLibIconSymbol(astTag) {
231
- if (!astTag.$cstNode || isEmpty(astTag.name))
232
- return null;
233
- return {
234
- kind: this.symbolKind(astTag),
235
- name: astTag.name,
236
- range: astTag.$cstNode.range,
237
- selectionRange: astTag.$cstNode.range,
238
- };
239
- }
240
- getViewSymbol(astView) {
241
- const cst = astView?.$cstNode;
242
- if (!cst)
243
- return [];
244
- const nameNode = astView.name ? GrammarUtils.findNodeForProperty(cst, 'name') : null;
245
- if (!nameNode)
246
- return [];
247
- return [
248
- {
249
- kind: this.symbolKind(astView),
250
- name: nameNode.text,
251
- range: cst.range,
252
- selectionRange: nameNode.range,
253
- children: [],
254
- },
255
- ];
256
- }
257
- getDeploymentElementSymbol(el) {
258
- try {
259
- if (ast.isDeploymentNode(el)) {
260
- return this.getDeploymentNodeSymbol(el);
261
- }
262
- if (ast.isDeployedInstance(el)) {
263
- return this.getDeployedInstanceSymbol(el);
264
- }
265
- if (ast.isExtendDeployment(el)) {
266
- return [];
267
- }
268
- }
269
- catch (e) {
270
- logWarnError(e);
271
- }
272
- return [];
273
- }
274
- getDeploymentNodeSymbol(astElement) {
275
- const cst = astElement.$cstNode;
276
- const nameNode = this.nameProvider.getNameNode(astElement);
277
- if (!nameNode || !cst)
278
- return [];
279
- const name = this.nameProvider.getNameStrict(astElement);
280
- const kind = astElement.kind.$refText;
281
- // TODO: return the title as well
282
- const detail = kind; // + (astElement.title ? ': ' + astElement.title : '').replaceAll('\n', ' ').trim()
283
- return [
284
- {
285
- kind: this.symbolKind(astElement),
286
- name: name,
287
- range: cst.range,
288
- selectionRange: nameNode.range,
289
- detail,
290
- children: astElement.body?.elements.flatMap(e => this.getDeploymentElementSymbol(e)) ?? [],
291
- },
292
- ];
293
- }
294
- getDeployedInstanceSymbol(astElement) {
295
- const cst = astElement.$cstNode;
296
- const nameNode = this.nameProvider.getNameNode(astElement);
297
- if (!nameNode || !cst)
298
- return [];
299
- const doc = AstUtils.getDocument(astElement);
300
- const instance = this.parser.forDocument(doc).parseDeployedInstance(astElement);
301
- const name = this.nameProvider.getNameStrict(astElement);
302
- const detail = 'instance of ' + instance.element.model;
303
- return [
304
- {
305
- kind: this.symbolKind(astElement),
306
- name: name,
307
- range: cst.range,
308
- selectionRange: nameNode.range,
309
- detail,
310
- children: [],
311
- },
312
- ];
313
- }
314
- symbolKind(node) {
315
- return this.nodeKindProvider.getSymbolKind(node);
316
- }
317
- }
@@ -1,10 +0,0 @@
1
- import { type AstNode, type MaybePromise } from 'langium';
2
- import { AstNodeHoverProvider } from 'langium/lsp';
3
- import type { Hover } from 'vscode-languageserver-types';
4
- import type { LikeC4Services } from '../module';
5
- export declare class LikeC4HoverProvider extends AstNodeHoverProvider {
6
- private parser;
7
- private locator;
8
- constructor(services: LikeC4Services);
9
- protected getAstNodeHoverContent(node: AstNode): MaybePromise<Hover | undefined>;
10
- }
@@ -1,106 +0,0 @@
1
- import { FqnRef, preferSummary } from '@likec4/core';
2
- import { AstUtils } from 'langium';
3
- import { AstNodeHoverProvider } from 'langium/lsp';
4
- import { ast } from '../ast';
5
- export class LikeC4HoverProvider extends AstNodeHoverProvider {
6
- parser;
7
- locator;
8
- constructor(services) {
9
- super(services);
10
- this.parser = services.likec4.ModelParser;
11
- this.locator = services.likec4.ModelLocator;
12
- }
13
- getAstNodeHoverContent(node) {
14
- if (ast.isTag(node)) {
15
- return {
16
- contents: {
17
- kind: 'markdown',
18
- value: 'tag `' + node.name + '`',
19
- },
20
- };
21
- }
22
- if (ast.isDeploymentNode(node)) {
23
- const doc = AstUtils.getDocument(node);
24
- const el = this.parser.forDocument(doc).parseDeploymentNode(node);
25
- const lines = [el.id + ' '];
26
- if (el.title !== node.name) {
27
- lines.push(`### ${el.title}`);
28
- }
29
- lines.push('deployment node `' + el.kind + '` ');
30
- const summary = preferSummary(el);
31
- if (summary) {
32
- lines.push('', summary.md ?? summary.txt);
33
- }
34
- return {
35
- contents: {
36
- kind: 'markdown',
37
- value: lines.join('\n'),
38
- },
39
- };
40
- }
41
- if (ast.isDeployedInstance(node)) {
42
- const doc = AstUtils.getDocument(node);
43
- const instance = this.parser.forDocument(doc).parseDeployedInstance(node);
44
- const [projectId, fqn] = FqnRef.isImportRef(instance.element)
45
- ? [instance.element.project, instance.element.model]
46
- : [doc.likec4ProjectId, instance.element.model];
47
- const el = projectId ? this.locator.getParsedElement(fqn, projectId) : this.locator.getParsedElement(fqn);
48
- const lines = [instance.id + ' ', `instance of \`${FqnRef.flatten(instance.element)}\``];
49
- if (el) {
50
- lines.push(`### ${el.title}`, 'element kind `' + el.kind + '` ');
51
- }
52
- return {
53
- contents: {
54
- kind: 'markdown',
55
- value: lines.join('\n'),
56
- },
57
- };
58
- }
59
- if (ast.isElementKind(node)) {
60
- return {
61
- contents: {
62
- kind: 'markdown',
63
- value: 'element kind `' + node.name + '`',
64
- },
65
- };
66
- }
67
- if (ast.isDeploymentNodeKind(node)) {
68
- return {
69
- contents: {
70
- kind: 'markdown',
71
- value: 'deployment node `' + node.name + '`',
72
- },
73
- };
74
- }
75
- if (ast.isRelationshipKind(node)) {
76
- return {
77
- contents: {
78
- kind: 'markdown',
79
- value: 'relationship kind `' + node.name + '`',
80
- },
81
- };
82
- }
83
- if (ast.isElement(node)) {
84
- const el = this.locator.getParsedElement(node);
85
- if (!el) {
86
- return;
87
- }
88
- const lines = [
89
- el.id,
90
- `### ${el.title}`,
91
- 'element kind `' + el.kind + '` ',
92
- ];
93
- const summary = preferSummary(el);
94
- if (summary) {
95
- lines.push('', summary.md ?? summary.txt);
96
- }
97
- return {
98
- contents: {
99
- kind: 'markdown',
100
- value: lines.join('\n'),
101
- },
102
- };
103
- }
104
- return;
105
- }
106
- }
@@ -1,5 +0,0 @@
1
- import { DefaultRenameProvider } from 'langium/lsp';
2
- import type { LikeC4Services } from '../module';
3
- export declare class LikeC4RenameProvider extends DefaultRenameProvider {
4
- constructor(services: LikeC4Services);
5
- }
@@ -1,6 +0,0 @@
1
- import { DefaultRenameProvider } from 'langium/lsp';
2
- export class LikeC4RenameProvider extends DefaultRenameProvider {
3
- constructor(services) {
4
- super(services);
5
- }
6
- }
@@ -1,12 +0,0 @@
1
- import type { AstNode } from 'langium';
2
- import { type SemanticTokenAcceptor, AbstractSemanticTokenProvider } from 'langium/lsp';
3
- import type { LikeC4Services } from '../module';
4
- export declare class LikeC4SemanticTokenProvider extends AbstractSemanticTokenProvider {
5
- private rules;
6
- constructor(services: LikeC4Services);
7
- protected initRules(): void;
8
- protected highlightElement(node: AstNode, acceptor: SemanticTokenAcceptor): void | undefined | 'prune';
9
- private highlightNameAndKind;
10
- private highlightView;
11
- private mark;
12
- }