@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,176 +0,0 @@
1
- import { exact, FqnRef, invariant, isNonEmptyArray, LinkedList, nameFromFqn, nonexhaustive, nonNullable, } from '@likec4/core';
2
- import { loggable } from '@likec4/log';
3
- import { filter, first, isDefined, isEmpty, isTruthy, mapToObj, pipe } from 'remeda';
4
- import { ast, toRelationshipStyle, } from '../../ast';
5
- import { serverLogger } from '../../logger';
6
- import { stringHash } from '../../utils/stringHash';
7
- const logger = serverLogger.getChild('DeploymentModelParser');
8
- function* streamDeploymentModel(doc) {
9
- const traverseStack = LinkedList.from(doc.parseResult.value.deployments.flatMap(m => m.elements));
10
- const relations = [];
11
- let el;
12
- while ((el = traverseStack.shift())) {
13
- if (ast.isDeploymentRelation(el)) {
14
- relations.push(el);
15
- continue;
16
- }
17
- if (el.body && el.body.elements.length > 0) {
18
- for (const child of el.body.elements) {
19
- traverseStack.push(child);
20
- }
21
- }
22
- yield el;
23
- }
24
- yield* relations;
25
- return;
26
- }
27
- export function DeploymentModelParser(B) {
28
- return class DeploymentModelParser extends B {
29
- parseDeployment() {
30
- const doc = this.doc;
31
- for (const el of streamDeploymentModel(doc)) {
32
- try {
33
- switch (true) {
34
- case ast.isDeploymentRelation(el): {
35
- if (this.isValid(el)) {
36
- doc.c4DeploymentRelations.push(this.parseDeploymentRelation(el));
37
- }
38
- break;
39
- }
40
- case ast.isDeployedInstance(el):
41
- doc.c4Deployments.push(this.parseDeployedInstance(el));
42
- break;
43
- case ast.isDeploymentNode(el): {
44
- doc.c4Deployments.push(this.parseDeploymentNode(el));
45
- break;
46
- }
47
- case ast.isExtendDeployment(el): {
48
- const parsed = this.parseExtendDeployment(el);
49
- if (parsed) {
50
- doc.c4ExtendDeployments.push(parsed);
51
- }
52
- break;
53
- }
54
- default:
55
- nonexhaustive(el);
56
- }
57
- }
58
- catch (e) {
59
- logger.warn(loggable(e));
60
- }
61
- }
62
- }
63
- parseDeploymentNode(astNode) {
64
- const isValid = this.isValid;
65
- const id = this.resolveFqn(astNode);
66
- const kind = nonNullable(astNode.kind.ref, 'DeploymentKind not resolved').name;
67
- const tags = this.convertTags(astNode.body);
68
- const style = this.parseElementStyle(astNode.body?.props);
69
- const metadata = this.getMetadata(astNode.body?.props.find(ast.isMetadataProperty));
70
- const bodyProps = pipe(astNode.body?.props ?? [], filter(isValid), filter(ast.isElementStringProperty), mapToObj(p => [p.key, p.value]));
71
- const { title, ...descAndTech } = this.parseBaseProps(bodyProps, {
72
- title: astNode.title,
73
- summary: astNode.summary,
74
- });
75
- const links = this.convertLinks(astNode.body);
76
- return exact({
77
- id,
78
- kind,
79
- title: title ?? nameFromFqn(id),
80
- ...descAndTech,
81
- tags: tags ?? undefined,
82
- ...(links && isNonEmptyArray(links) && { links }),
83
- style,
84
- metadata,
85
- });
86
- }
87
- parseDeployedInstance(astNode) {
88
- const isValid = this.isValid;
89
- const id = this.resolveFqn(astNode);
90
- const target = this.parseFqnRef(astNode.target.modelElement);
91
- invariant(FqnRef.isModelRef(target) || FqnRef.isImportRef(target), 'Target must be a model reference');
92
- // const element = FqnRef.toModelFqn(target)
93
- const tags = this.convertTags(astNode.body);
94
- const style = this.parseElementStyle(astNode.body?.props);
95
- const metadata = this.getMetadata(astNode.body?.props.find(ast.isMetadataProperty));
96
- const bodyProps = pipe(astNode.body?.props ?? [], filter(isValid), filter(ast.isElementStringProperty), mapToObj(p => [p.key, p.value]));
97
- const baseProps = this.parseBaseProps(bodyProps, {
98
- title: astNode.title,
99
- summary: astNode.summary,
100
- });
101
- const links = this.convertLinks(astNode.body);
102
- return exact({
103
- id,
104
- element: target,
105
- tags: tags ?? undefined,
106
- ...(links && isNonEmptyArray(links) && { links }),
107
- ...baseProps,
108
- style,
109
- metadata,
110
- });
111
- }
112
- parseExtendDeployment(astNode) {
113
- if (!this.isValid(astNode)) {
114
- return null;
115
- }
116
- const id = this.resolveFqn(astNode);
117
- const tags = this.parseTags(astNode.body);
118
- const metadata = this.getMetadata(astNode.body?.props.find(ast.isMetadataProperty));
119
- const astPath = this.getAstNodePath(astNode);
120
- const links = this.parseLinks(astNode.body) ?? [];
121
- if (!tags && isEmpty(metadata ?? {}) && isEmpty(links)) {
122
- return null;
123
- }
124
- return {
125
- id,
126
- astPath,
127
- ...(metadata && { metadata }),
128
- tags,
129
- links: isNonEmptyArray(links) ? links : null,
130
- };
131
- }
132
- _resolveDeploymentRelationSource(node) {
133
- if (isDefined(node.source)) {
134
- return this.parseFqnRef(node.source);
135
- }
136
- if (node.$container.$type === 'DeploymentNodeBody' || node.$container.$type === 'DeployedInstanceBody') {
137
- return {
138
- deployment: this.resolveFqn(node.$container.$container),
139
- };
140
- }
141
- throw new Error('RelationRefError: Invalid container for sourceless relation');
142
- }
143
- parseDeploymentRelation(astNode) {
144
- const isValid = this.isValid;
145
- const astPath = this.getAstNodePath(astNode);
146
- const source = this._resolveDeploymentRelationSource(astNode);
147
- invariant(FqnRef.isDeploymentRef(source), 'Invalid source for deployment relation');
148
- const target = this.parseFqnRef(astNode.target);
149
- invariant(FqnRef.isDeploymentRef(target), 'Invalid target for deployment relation');
150
- const tags = this.convertTags(astNode) ?? this.convertTags(astNode.body);
151
- const links = this.convertLinks(astNode.body);
152
- const kind = (astNode.kind ?? astNode.dotKind?.kind)?.ref?.name;
153
- const metadata = this.getMetadata(astNode.body?.props.find(ast.isMetadataProperty));
154
- const bodyProps = pipe(astNode.body?.props ?? [], filter(ast.isRelationStringProperty), filter(p => isTruthy(p.value)), mapToObj(p => [p.key, p.value]));
155
- const navigateTo = pipe(astNode.body?.props ?? [], filter(ast.isRelationNavigateToProperty), first())?.value.view.ref?.name;
156
- const titleDescAndTech = this.parseBaseProps(bodyProps, {
157
- title: astNode.title,
158
- });
159
- const styleProp = astNode.body?.props.find(ast.isRelationStyleProperty);
160
- const id = stringHash('deployment', astPath, source.deployment, target.deployment);
161
- return exact({
162
- id,
163
- source,
164
- target,
165
- ...titleDescAndTech,
166
- metadata,
167
- kind,
168
- tags: tags ?? undefined,
169
- ...(isNonEmptyArray(links) && { links }),
170
- ...toRelationshipStyle(styleProp?.props, isValid),
171
- navigateTo,
172
- astPath,
173
- });
174
- }
175
- };
176
- }
@@ -1,75 +0,0 @@
1
- import * as c4 from '@likec4/core';
2
- import { type ParsedAstDeploymentView, ast } from '../../ast';
3
- import type { WithDeploymentModel } from './DeploymentModelParser';
4
- import type { WithExpressionV2 } from './FqnRefParser';
5
- export type WithDeploymentView = ReturnType<typeof DeploymentViewParser>;
6
- export declare function DeploymentViewParser<TBase extends WithExpressionV2 & WithDeploymentModel>(B: TBase): {
7
- new (...args: any[]): {
8
- parseDeploymentView(astNode: ast.DeploymentView): ParsedAstDeploymentView;
9
- parseDeploymentViewRule(astRule: ast.DeploymentViewRule): c4.DeploymentViewRule;
10
- parseDeploymentViewRulePredicate(astRule: ast.DeploymentViewRulePredicate): c4.DeploymentViewPredicate;
11
- parseDeploymentViewRuleStyle(astRule: ast.DeploymentViewRuleStyle): c4.DeploymentViewRuleStyle;
12
- parseFqnRef(astNode: ast.FqnRef): c4.FqnRef;
13
- parseExpressionV2(astNode: ast.ExpressionV2): c4.Expression;
14
- parseFqnExprOrWith(astNode: ast.FqnExprOrWith): c4.FqnExpr.Any;
15
- parseFqnExprWith(astNode: ast.FqnExprWith): c4.FqnExpr.Custom;
16
- parseFqnExprOrWhere(astNode: ast.FqnExprOrWhere): c4.FqnExpr.OrWhere;
17
- parseFqnExprWhere(astNode: ast.FqnExprWhere): c4.FqnExpr.Where;
18
- parseFqnExpr(astNode: ast.FqnExpr): c4.FqnExpr;
19
- parseFqnRefExpr(astNode: ast.FqnRefExpr): c4.FqnExpr.NonWildcard;
20
- parseFqnExpressions(astNode: ast.FqnExpressions): c4.FqnExpr[];
21
- parseRelationExprOrWith(astNode: ast.RelationExprOrWith): c4.RelationExpr.Any;
22
- parseRelationExprWith(astNode: ast.RelationExprWith): c4.RelationExpr.Custom;
23
- parseCustomRelationProperties(custom: ast.CustomRelationProperties | undefined): import("type-fest").Except<c4.RelationExpr.Custom["customRelation"], "expr">;
24
- parseRelationExprOrWhere(astNode: ast.RelationExprOrWhere): c4.RelationExpr.OrWhere;
25
- parseRelationExprWhere(astNode: ast.RelationExprWhere): c4.RelationExpr.Where;
26
- parseRelationExpr(astNode: ast.RelationExpr): c4.RelationExpr.OrWhere;
27
- parseInlineKindCondition(astNode: ast.OutgoingRelationExpr): c4.WhereOperator | null;
28
- wrapInWhere(expr: c4.RelationExpr, condition: c4.WhereOperator | null): c4.RelationExpr.OrWhere;
29
- isValid: import("../../validation").IsValidFn;
30
- readonly services: import("../..").LikeC4Services;
31
- readonly doc: import("../../ast").ParsedLikeC4LangiumDocument;
32
- get project(): import("../../workspace").Project;
33
- resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
34
- getAstNodePath(node: import("langium").AstNode): string;
35
- getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
36
- [key: string]: string | string[];
37
- } | undefined;
38
- parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
39
- convertTags<E extends {
40
- tags?: ast.Tags;
41
- }>(withTags?: E | undefined): c4.NonEmptyArray<c4.Tag<string>> | null;
42
- parseTags<E extends {
43
- tags?: ast.Tags;
44
- }>(withTags?: E): c4.NonEmptyArray<c4.Tag> | null;
45
- convertLinks(source?: ast.LinkProperty["$container"]): c4.Link[] | undefined;
46
- parseLinks(source?: ast.LinkProperty["$container"]): c4.Link[] | undefined;
47
- parseIconProperty(prop: ast.IconProperty | undefined): c4.IconUrl | undefined;
48
- parseImageAlias(value: string): string | undefined;
49
- parseColorLiteral(astNode: ast.ColorLiteral): c4.ColorLiteral | undefined;
50
- parseElementStyle(elementProps: Array<ast.ElementProperty> | ast.ElementStyleProperty | undefined): import("../../ast").ParsedElementStyle;
51
- parseStyleProps(styleProps: Array<ast.StyleProperty> | undefined): import("../../ast").ParsedElementStyle;
52
- parseBaseProps(props: {
53
- title?: ast.MarkdownOrString | undefined;
54
- summary?: ast.MarkdownOrString | undefined;
55
- description?: ast.MarkdownOrString | undefined;
56
- technology?: ast.MarkdownOrString | undefined;
57
- }, override?: {
58
- title?: string | undefined;
59
- summary?: string | undefined;
60
- description?: string | undefined;
61
- technology?: string | undefined;
62
- }): {
63
- title?: string;
64
- summary?: c4.MarkdownOrString;
65
- description?: c4.MarkdownOrString;
66
- technology?: string;
67
- };
68
- parseDeployment(): void;
69
- parseDeploymentNode(astNode: ast.DeploymentNode): import("../../ast").ParsedAstDeployment.Node;
70
- parseDeployedInstance(astNode: ast.DeployedInstance): import("../../ast").ParsedAstDeployment.Instance;
71
- parseExtendDeployment(astNode: ast.ExtendDeployment): import("../../ast").ParsedAstExtend | null;
72
- _resolveDeploymentRelationSource(node: ast.DeploymentRelation): c4.FqnRef;
73
- parseDeploymentRelation(astNode: ast.DeploymentRelation): import("../../ast").ParsedAstDeploymentRelation;
74
- };
75
- } & TBase;
@@ -1,86 +0,0 @@
1
- import * as c4 from '@likec4/core';
2
- import { invariant, isNonEmptyArray, nonexhaustive } from '@likec4/core';
3
- import { filter, isNonNullish, mapToObj, pipe } from 'remeda';
4
- import { ast, parseMarkdownAsString, toAutoLayout, ViewOps } from '../../ast';
5
- import { logWarnError } from '../../logger';
6
- import { stringHash } from '../../utils';
7
- import { parseViewManualLayout } from '../../view-utils/manual-layout';
8
- import { removeIndent, toSingleLine } from './Base';
9
- export function DeploymentViewParser(B) {
10
- return class DeploymentViewParser extends B {
11
- parseDeploymentView(astNode) {
12
- const body = astNode.body;
13
- invariant(body, 'DynamicElementView body is not defined');
14
- // only valid props
15
- const props = body.props.filter(this.isValid);
16
- const astPath = this.getAstNodePath(astNode);
17
- let id = astNode.name;
18
- if (!id) {
19
- id = 'deployment_' + stringHash(this.doc.uri.toString(), astPath);
20
- }
21
- const { title = null, description = null, } = this.parseBaseProps(pipe(props, filter(ast.isViewStringProperty), mapToObj(p => [p.key, p.value])));
22
- const tags = this.convertTags(body);
23
- const links = this.convertLinks(body);
24
- ViewOps.writeId(astNode, id);
25
- const manualLayout = parseViewManualLayout(astNode);
26
- return {
27
- [c4._type]: 'deployment',
28
- id: id,
29
- astPath,
30
- title: toSingleLine(title) ?? null,
31
- description,
32
- tags,
33
- links: isNonEmptyArray(links) ? links : null,
34
- rules: body.rules.flatMap(n => {
35
- try {
36
- return this.isValid(n) ? this.parseDeploymentViewRule(n) : [];
37
- }
38
- catch (e) {
39
- logWarnError(e);
40
- return [];
41
- }
42
- }),
43
- ...(manualLayout && { manualLayout }),
44
- };
45
- }
46
- parseDeploymentViewRule(astRule) {
47
- if (ast.isDeploymentViewRulePredicate(astRule)) {
48
- return this.parseDeploymentViewRulePredicate(astRule);
49
- }
50
- if (ast.isViewRuleAutoLayout(astRule)) {
51
- return toAutoLayout(astRule);
52
- }
53
- if (ast.isDeploymentViewRuleStyle(astRule)) {
54
- return this.parseDeploymentViewRuleStyle(astRule);
55
- }
56
- nonexhaustive(astRule);
57
- }
58
- parseDeploymentViewRulePredicate(astRule) {
59
- const exprs = [];
60
- let iterator = astRule.expr;
61
- while (iterator) {
62
- try {
63
- const expr = iterator.value;
64
- if (isNonNullish(expr) && this.isValid(expr)) {
65
- exprs.unshift(this.parseExpressionV2(expr));
66
- }
67
- }
68
- catch (e) {
69
- logWarnError(e);
70
- }
71
- iterator = iterator.prev;
72
- }
73
- return astRule.isInclude ? { include: exprs } : { exclude: exprs };
74
- }
75
- parseDeploymentViewRuleStyle(astRule) {
76
- const style = this.parseStyleProps(astRule.props.filter(ast.isStyleProperty));
77
- const notation = removeIndent(parseMarkdownAsString(astRule.props.find(ast.isNotationProperty)?.value));
78
- const targets = this.parseFqnExpressions(astRule.targets);
79
- return {
80
- targets,
81
- style,
82
- ...(notation && { notation }),
83
- };
84
- }
85
- };
86
- }
@@ -1,66 +0,0 @@
1
- import type * as c4 from '@likec4/core';
2
- import { type AstNode } from 'langium';
3
- import type { Except } from 'type-fest';
4
- import { ast } from '../../ast';
5
- import { type Base } from './Base';
6
- export type WithExpressionV2 = ReturnType<typeof ExpressionV2Parser>;
7
- export declare function ExpressionV2Parser<TBase extends Base>(B: TBase): {
8
- new (...args: any[]): {
9
- parseFqnRef(astNode: ast.FqnRef): c4.FqnRef;
10
- parseExpressionV2(astNode: ast.ExpressionV2): c4.Expression;
11
- parseFqnExprOrWith(astNode: ast.FqnExprOrWith): c4.FqnExpr.Any;
12
- parseFqnExprWith(astNode: ast.FqnExprWith): c4.FqnExpr.Custom;
13
- parseFqnExprOrWhere(astNode: ast.FqnExprOrWhere): c4.FqnExpr.OrWhere;
14
- parseFqnExprWhere(astNode: ast.FqnExprWhere): c4.FqnExpr.Where;
15
- parseFqnExpr(astNode: ast.FqnExpr): c4.FqnExpr;
16
- parseFqnRefExpr(astNode: ast.FqnRefExpr): c4.FqnExpr.NonWildcard;
17
- parseFqnExpressions(astNode: ast.FqnExpressions): c4.FqnExpr[];
18
- parseRelationExprOrWith(astNode: ast.RelationExprOrWith): c4.RelationExpr.Any;
19
- parseRelationExprWith(astNode: ast.RelationExprWith): c4.RelationExpr.Custom;
20
- parseCustomRelationProperties(custom: ast.CustomRelationProperties | undefined): Except<c4.RelationExpr.Custom["customRelation"], "expr">;
21
- parseRelationExprOrWhere(astNode: ast.RelationExprOrWhere): c4.RelationExpr.OrWhere;
22
- parseRelationExprWhere(astNode: ast.RelationExprWhere): c4.RelationExpr.Where;
23
- parseRelationExpr(astNode: ast.RelationExpr): c4.RelationExpr.OrWhere;
24
- parseInlineKindCondition(astNode: ast.OutgoingRelationExpr): c4.WhereOperator | null;
25
- wrapInWhere(expr: c4.RelationExpr, condition: c4.WhereOperator | null): c4.RelationExpr.OrWhere;
26
- isValid: import("../../validation").IsValidFn;
27
- readonly services: import("../..").LikeC4Services;
28
- readonly doc: import("../../ast").ParsedLikeC4LangiumDocument;
29
- get project(): import("../../workspace").Project;
30
- resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
31
- getAstNodePath(node: AstNode): string;
32
- getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
33
- [key: string]: string | string[];
34
- } | undefined;
35
- parseMarkdownOrString(markdownOrString: ast.MarkdownOrString | undefined): c4.MarkdownOrString | undefined;
36
- convertTags<E extends {
37
- tags?: ast.Tags;
38
- }>(withTags?: E | undefined): c4.NonEmptyArray<c4.Tag<string>> | null;
39
- parseTags<E extends {
40
- tags?: ast.Tags;
41
- }>(withTags?: E): c4.NonEmptyArray<c4.Tag> | null;
42
- convertLinks(source?: ast.LinkProperty["$container"]): c4.Link[] | undefined;
43
- parseLinks(source?: ast.LinkProperty["$container"]): c4.Link[] | undefined;
44
- parseIconProperty(prop: ast.IconProperty | undefined): c4.IconUrl | undefined;
45
- parseImageAlias(value: string): string | undefined;
46
- parseColorLiteral(astNode: ast.ColorLiteral): c4.ColorLiteral | undefined;
47
- parseElementStyle(elementProps: Array<ast.ElementProperty> | ast.ElementStyleProperty | undefined): import("../../ast").ParsedElementStyle;
48
- parseStyleProps(styleProps: Array<ast.StyleProperty> | undefined): import("../../ast").ParsedElementStyle;
49
- parseBaseProps(props: {
50
- title?: ast.MarkdownOrString | undefined;
51
- summary?: ast.MarkdownOrString | undefined;
52
- description?: ast.MarkdownOrString | undefined;
53
- technology?: ast.MarkdownOrString | undefined;
54
- }, override?: {
55
- title?: string | undefined;
56
- summary?: string | undefined;
57
- description?: string | undefined;
58
- technology?: string | undefined;
59
- }): {
60
- title?: string;
61
- summary?: c4.MarkdownOrString;
62
- description?: c4.MarkdownOrString;
63
- technology?: string;
64
- };
65
- };
66
- } & TBase;