@likec4/language-server 1.47.0 → 1.49.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 (297) hide show
  1. package/browser/package.json +2 -2
  2. package/browser-worker/package.json +2 -2
  3. package/bundled/package.json +4 -0
  4. package/dist/THIRD-PARTY-LICENSES.md +178 -0
  5. package/dist/_chunks/ConfigurableLayouter.mjs +1 -0
  6. package/dist/_chunks/LikeC4FileSystem.mjs +3 -0
  7. package/dist/_chunks/LikeC4Views.mjs +34 -0
  8. package/dist/_chunks/ProjectsManager.mjs +1 -0
  9. package/dist/_chunks/WithMCPServer.mjs +481 -0
  10. package/dist/_chunks/icons.mjs +2 -0
  11. package/dist/_chunks/index.d.mts +3107 -0
  12. package/dist/_chunks/libs/@msgpack/msgpack.mjs +1 -0
  13. package/dist/_chunks/libs/eventemitter3.mjs +1 -0
  14. package/dist/_chunks/libs/fast-equals.mjs +1 -0
  15. package/dist/_chunks/libs/p-queue.mjs +1 -0
  16. package/dist/_chunks/libs/parse-ms.mjs +1 -0
  17. package/dist/_chunks/libs/picomatch.mjs +1 -0
  18. package/dist/_chunks/libs/pretty-ms.mjs +1 -0
  19. package/dist/_chunks/libs/remeda.mjs +1 -0
  20. package/dist/_chunks/libs/strip-indent.mjs +1 -0
  21. package/dist/_chunks/libs/ufo.mjs +1 -0
  22. package/dist/_chunks/logger.mjs +1 -0
  23. package/dist/_chunks/rolldown-runtime.mjs +1 -0
  24. package/dist/_chunks/utils.mjs +1 -0
  25. package/dist/browser/index.d.mts +10 -0
  26. package/dist/browser/index.mjs +1 -0
  27. package/dist/browser/worker.d.mts +1 -0
  28. package/dist/browser/worker.mjs +1 -0
  29. package/dist/bundled.d.mts +27 -0
  30. package/dist/bundled.mjs +1 -4853
  31. package/dist/filesystem/index.d.mts +2 -0
  32. package/dist/filesystem/index.mjs +1 -0
  33. package/dist/index.d.mts +39 -0
  34. package/dist/index.mjs +1 -0
  35. package/dist/likec4lib.d.mts +16 -0
  36. package/dist/likec4lib.mjs +1 -0
  37. package/dist/mcp/index.d.mts +2 -0
  38. package/dist/mcp/index.mjs +1 -0
  39. package/dist/module.d.mts +126 -0
  40. package/dist/module.mjs +1 -0
  41. package/dist/protocol.d.mts +315 -0
  42. package/dist/protocol.mjs +1 -0
  43. package/filesystem/package.json +4 -0
  44. package/likec4lib/package.json +2 -2
  45. package/mcp/package.json +4 -0
  46. package/module/package.json +4 -0
  47. package/package.json +128 -62
  48. package/protocol/package.json +2 -2
  49. package/LICENSE +0 -21
  50. package/dist/LikeC4LanguageServices.d.ts +0 -115
  51. package/dist/LikeC4LanguageServices.js +0 -164
  52. package/dist/Rpc.d.ts +0 -9
  53. package/dist/Rpc.js +0 -276
  54. package/dist/ast.d.ts +0 -226
  55. package/dist/ast.js +0 -264
  56. package/dist/browser-worker.d.ts +0 -1
  57. package/dist/browser-worker.js +0 -4
  58. package/dist/browser.d.ts +0 -10
  59. package/dist/browser.js +0 -34
  60. package/dist/bundled.d.ts +0 -8
  61. package/dist/bundled.js +0 -44
  62. package/dist/documentation/documentation-provider.d.ts +0 -8
  63. package/dist/documentation/documentation-provider.js +0 -51
  64. package/dist/documentation/index.d.ts +0 -1
  65. package/dist/documentation/index.js +0 -1
  66. package/dist/empty.d.ts +0 -2
  67. package/dist/empty.js +0 -2
  68. package/dist/filesystem/ChokidarWatcher.d.ts +0 -19
  69. package/dist/filesystem/ChokidarWatcher.js +0 -133
  70. package/dist/filesystem/FileSystemWatcher.d.ts +0 -19
  71. package/dist/filesystem/FileSystemWatcher.js +0 -14
  72. package/dist/filesystem/LikeC4FileSystem.d.ts +0 -3
  73. package/dist/filesystem/LikeC4FileSystem.js +0 -140
  74. package/dist/filesystem/index.d.ts +0 -55
  75. package/dist/filesystem/index.js +0 -29
  76. package/dist/formatting/LikeC4Formatter.d.ts +0 -59
  77. package/dist/formatting/LikeC4Formatter.js +0 -637
  78. package/dist/formatting/utils.d.ts +0 -6
  79. package/dist/formatting/utils.js +0 -18
  80. package/dist/generated/ast.d.ts +0 -1411
  81. package/dist/generated/ast.js +0 -2207
  82. package/dist/generated/grammar.d.ts +0 -6
  83. package/dist/generated/grammar.js +0 -7
  84. package/dist/generated/module.d.ts +0 -14
  85. package/dist/generated/module.js +0 -27
  86. package/dist/generated-lib/icons.d.ts +0 -1
  87. package/dist/generated-lib/icons.js +0 -18
  88. package/dist/index.d.ts +0 -37
  89. package/dist/index.js +0 -54
  90. package/dist/likec4lib.d.ts +0 -6
  91. package/dist/likec4lib.js +0 -7
  92. package/dist/logger.d.ts +0 -17
  93. package/dist/logger.js +0 -81
  94. package/dist/lsp/CodeActionProvider.d.ts +0 -14
  95. package/dist/lsp/CodeActionProvider.js +0 -33
  96. package/dist/lsp/CodeLensProvider.d.ts +0 -9
  97. package/dist/lsp/CodeLensProvider.js +0 -44
  98. package/dist/lsp/CompletionProvider.d.ts +0 -13
  99. package/dist/lsp/CompletionProvider.js +0 -238
  100. package/dist/lsp/DocumentHighlightProvider.d.ts +0 -9
  101. package/dist/lsp/DocumentHighlightProvider.js +0 -10
  102. package/dist/lsp/DocumentLinkProvider.d.ts +0 -11
  103. package/dist/lsp/DocumentLinkProvider.js +0 -58
  104. package/dist/lsp/DocumentSymbolProvider.d.ts +0 -33
  105. package/dist/lsp/DocumentSymbolProvider.js +0 -317
  106. package/dist/lsp/HoverProvider.d.ts +0 -10
  107. package/dist/lsp/HoverProvider.js +0 -106
  108. package/dist/lsp/RenameProvider.d.ts +0 -5
  109. package/dist/lsp/RenameProvider.js +0 -6
  110. package/dist/lsp/SemanticTokenProvider.d.ts +0 -19
  111. package/dist/lsp/SemanticTokenProvider.js +0 -305
  112. package/dist/lsp/index.d.ts +0 -8
  113. package/dist/lsp/index.js +0 -9
  114. package/dist/mcp/MCPServerFactory.d.ts +0 -8
  115. package/dist/mcp/MCPServerFactory.js +0 -73
  116. package/dist/mcp/NoopLikeC4MCPServer.d.ts +0 -9
  117. package/dist/mcp/NoopLikeC4MCPServer.js +0 -17
  118. package/dist/mcp/interfaces.d.ts +0 -13
  119. package/dist/mcp/interfaces.js +0 -4
  120. package/dist/mcp/server/StdioLikeC4MCPServer.d.ts +0 -16
  121. package/dist/mcp/server/StdioLikeC4MCPServer.js +0 -51
  122. package/dist/mcp/server/StreamableLikeC4MCPServer.d.ts +0 -16
  123. package/dist/mcp/server/StreamableLikeC4MCPServer.js +0 -121
  124. package/dist/mcp/server/WithMCPServer.d.ts +0 -4
  125. package/dist/mcp/server/WithMCPServer.js +0 -54
  126. package/dist/mcp/tools/_common.d.ts +0 -88
  127. package/dist/mcp/tools/_common.js +0 -49
  128. package/dist/mcp/tools/find-relationships.d.ts +0 -202
  129. package/dist/mcp/tools/find-relationships.js +0 -150
  130. package/dist/mcp/tools/list-projects.d.ts +0 -194
  131. package/dist/mcp/tools/list-projects.js +0 -62
  132. package/dist/mcp/tools/open-view.d.ts +0 -200
  133. package/dist/mcp/tools/open-view.js +0 -52
  134. package/dist/mcp/tools/read-deployment.d.ts +0 -200
  135. package/dist/mcp/tools/read-deployment.js +0 -150
  136. package/dist/mcp/tools/read-element.d.ts +0 -200
  137. package/dist/mcp/tools/read-element.js +0 -218
  138. package/dist/mcp/tools/read-project-summary.d.ts +0 -198
  139. package/dist/mcp/tools/read-project-summary.js +0 -176
  140. package/dist/mcp/tools/read-view.d.ts +0 -200
  141. package/dist/mcp/tools/read-view.js +0 -203
  142. package/dist/mcp/tools/search-element.d.ts +0 -198
  143. package/dist/mcp/tools/search-element.js +0 -177
  144. package/dist/mcp/utils.d.ts +0 -18
  145. package/dist/mcp/utils.js +0 -48
  146. package/dist/model/builder/MergedExtends.d.ts +0 -13
  147. package/dist/model/builder/MergedExtends.js +0 -74
  148. package/dist/model/builder/MergedSpecification.d.ts +0 -32
  149. package/dist/model/builder/MergedSpecification.js +0 -175
  150. package/dist/model/builder/buildModel.d.ts +0 -16
  151. package/dist/model/builder/buildModel.js +0 -245
  152. package/dist/model/deployments-index.d.ts +0 -10
  153. package/dist/model/deployments-index.js +0 -102
  154. package/dist/model/fqn-index.d.ts +0 -61
  155. package/dist/model/fqn-index.js +0 -253
  156. package/dist/model/index.d.ts +0 -6
  157. package/dist/model/index.js +0 -6
  158. package/dist/model/model-builder.d.ts +0 -54
  159. package/dist/model/model-builder.js +0 -233
  160. package/dist/model/model-locator.d.ts +0 -39
  161. package/dist/model/model-locator.js +0 -240
  162. package/dist/model/model-parser-where.d.ts +0 -4
  163. package/dist/model/model-parser-where.js +0 -81
  164. package/dist/model/model-parser.d.ts +0 -645
  165. package/dist/model/model-parser.js +0 -133
  166. package/dist/model/parser/Base.d.ts +0 -69
  167. package/dist/model/parser/Base.js +0 -382
  168. package/dist/model/parser/DeploymentModelParser.d.ts +0 -71
  169. package/dist/model/parser/DeploymentModelParser.js +0 -176
  170. package/dist/model/parser/DeploymentViewParser.d.ts +0 -75
  171. package/dist/model/parser/DeploymentViewParser.js +0 -86
  172. package/dist/model/parser/FqnRefParser.d.ts +0 -66
  173. package/dist/model/parser/FqnRefParser.js +0 -382
  174. package/dist/model/parser/GlobalsParser.d.ts +0 -109
  175. package/dist/model/parser/GlobalsParser.js +0 -84
  176. package/dist/model/parser/ImportsParser.d.ts +0 -46
  177. package/dist/model/parser/ImportsParser.js +0 -24
  178. package/dist/model/parser/ModelParser.d.ts +0 -71
  179. package/dist/model/parser/ModelParser.js +0 -209
  180. package/dist/model/parser/PredicatesParser.d.ts +0 -75
  181. package/dist/model/parser/PredicatesParser.js +0 -45
  182. package/dist/model/parser/SpecificationParser.d.ts +0 -53
  183. package/dist/model/parser/SpecificationParser.js +0 -113
  184. package/dist/model/parser/ValueConverter.d.ts +0 -4
  185. package/dist/model/parser/ValueConverter.js +0 -12
  186. package/dist/model/parser/ViewsParser.d.ts +0 -112
  187. package/dist/model/parser/ViewsParser.js +0 -492
  188. package/dist/model-change/ModelChanges.d.ts +0 -18
  189. package/dist/model-change/ModelChanges.js +0 -129
  190. package/dist/model-change/changeElementStyle.d.ts +0 -16
  191. package/dist/model-change/changeElementStyle.js +0 -134
  192. package/dist/model-change/changeViewLayout.d.ts +0 -12
  193. package/dist/model-change/changeViewLayout.js +0 -28
  194. package/dist/model-change/removeManualLayoutV1.d.ts +0 -7
  195. package/dist/model-change/removeManualLayoutV1.js +0 -27
  196. package/dist/module.d.ts +0 -92
  197. package/dist/module.js +0 -143
  198. package/dist/protocol.d.ts +0 -289
  199. package/dist/protocol.js +0 -123
  200. package/dist/references/index.d.ts +0 -3
  201. package/dist/references/index.js +0 -3
  202. package/dist/references/name-provider.d.ts +0 -9
  203. package/dist/references/name-provider.js +0 -37
  204. package/dist/references/scope-computation.d.ts +0 -20
  205. package/dist/references/scope-computation.js +0 -288
  206. package/dist/references/scope-provider.d.ts +0 -40
  207. package/dist/references/scope-provider.js +0 -239
  208. package/dist/shared/NodeKindProvider.d.ts +0 -15
  209. package/dist/shared/NodeKindProvider.js +0 -57
  210. package/dist/shared/WorkspaceSymbolProvider.d.ts +0 -3
  211. package/dist/shared/WorkspaceSymbolProvider.js +0 -3
  212. package/dist/shared/index.d.ts +0 -2
  213. package/dist/shared/index.js +0 -2
  214. package/dist/test/index.d.ts +0 -1
  215. package/dist/test/index.js +0 -1
  216. package/dist/test/testServices.d.ts +0 -64
  217. package/dist/test/testServices.js +0 -210
  218. package/dist/utils/disposable.d.ts +0 -8
  219. package/dist/utils/disposable.js +0 -26
  220. package/dist/utils/elementRef.d.ts +0 -11
  221. package/dist/utils/elementRef.js +0 -33
  222. package/dist/utils/fqnRef.d.ts +0 -11
  223. package/dist/utils/fqnRef.js +0 -63
  224. package/dist/utils/index.d.ts +0 -11
  225. package/dist/utils/index.js +0 -35
  226. package/dist/utils/printDocs.d.ts +0 -2
  227. package/dist/utils/printDocs.js +0 -1
  228. package/dist/utils/projectId.d.ts +0 -4
  229. package/dist/utils/projectId.js +0 -16
  230. package/dist/utils/stringHash.d.ts +0 -1
  231. package/dist/utils/stringHash.js +0 -5
  232. package/dist/validation/DocumentValidator.d.ts +0 -11
  233. package/dist/validation/DocumentValidator.js +0 -17
  234. package/dist/validation/_shared.d.ts +0 -3
  235. package/dist/validation/_shared.js +0 -26
  236. package/dist/validation/deployment-checks.d.ts +0 -7
  237. package/dist/validation/deployment-checks.js +0 -140
  238. package/dist/validation/dynamic-view.d.ts +0 -6
  239. package/dist/validation/dynamic-view.js +0 -67
  240. package/dist/validation/element-ref.d.ts +0 -4
  241. package/dist/validation/element-ref.js +0 -12
  242. package/dist/validation/element.d.ts +0 -4
  243. package/dist/validation/element.js +0 -49
  244. package/dist/validation/imports.d.ts +0 -4
  245. package/dist/validation/imports.js +0 -46
  246. package/dist/validation/index.d.ts +0 -15
  247. package/dist/validation/index.js +0 -167
  248. package/dist/validation/property-checks.d.ts +0 -7
  249. package/dist/validation/property-checks.js +0 -108
  250. package/dist/validation/relation.d.ts +0 -6
  251. package/dist/validation/relation.js +0 -141
  252. package/dist/validation/specification.d.ts +0 -12
  253. package/dist/validation/specification.js +0 -190
  254. package/dist/validation/view-checks.d.ts +0 -4
  255. package/dist/validation/view-checks.js +0 -46
  256. package/dist/validation/view-predicates/fqn-expr-with.d.ts +0 -4
  257. package/dist/validation/view-predicates/fqn-expr-with.js +0 -43
  258. package/dist/validation/view-predicates/fqn-ref-expr.d.ts +0 -4
  259. package/dist/validation/view-predicates/fqn-ref-expr.js +0 -51
  260. package/dist/validation/view-predicates/incoming.d.ts +0 -4
  261. package/dist/validation/view-predicates/incoming.js +0 -16
  262. package/dist/validation/view-predicates/index.d.ts +0 -6
  263. package/dist/validation/view-predicates/index.js +0 -6
  264. package/dist/validation/view-predicates/outgoing.d.ts +0 -4
  265. package/dist/validation/view-predicates/outgoing.js +0 -20
  266. package/dist/validation/view-predicates/relation-expr.d.ts +0 -4
  267. package/dist/validation/view-predicates/relation-expr.js +0 -46
  268. package/dist/validation/view-predicates/relation-with.d.ts +0 -4
  269. package/dist/validation/view-predicates/relation-with.js +0 -16
  270. package/dist/validation/view.d.ts +0 -4
  271. package/dist/validation/view.js +0 -42
  272. package/dist/view-utils/assignNavigateTo.d.ts +0 -2
  273. package/dist/view-utils/assignNavigateTo.js +0 -27
  274. package/dist/view-utils/index.d.ts +0 -2
  275. package/dist/view-utils/index.js +0 -2
  276. package/dist/view-utils/manual-layout.d.ts +0 -13
  277. package/dist/view-utils/manual-layout.js +0 -149
  278. package/dist/views/ConfigurableLayouter.d.ts +0 -7
  279. package/dist/views/ConfigurableLayouter.js +0 -51
  280. package/dist/views/LikeC4ManualLayouts.d.ts +0 -42
  281. package/dist/views/LikeC4ManualLayouts.js +0 -209
  282. package/dist/views/LikeC4Views.d.ts +0 -89
  283. package/dist/views/LikeC4Views.js +0 -216
  284. package/dist/views/index.d.ts +0 -4
  285. package/dist/views/index.js +0 -11
  286. package/dist/workspace/AstNodeDescriptionProvider.d.ts +0 -7
  287. package/dist/workspace/AstNodeDescriptionProvider.js +0 -18
  288. package/dist/workspace/IndexManager.d.ts +0 -10
  289. package/dist/workspace/IndexManager.js +0 -26
  290. package/dist/workspace/LangiumDocuments.d.ts +0 -29
  291. package/dist/workspace/LangiumDocuments.js +0 -104
  292. package/dist/workspace/ProjectsManager.d.ts +0 -134
  293. package/dist/workspace/ProjectsManager.js +0 -610
  294. package/dist/workspace/WorkspaceManager.d.ts +0 -31
  295. package/dist/workspace/WorkspaceManager.js +0 -132
  296. package/dist/workspace/index.d.ts +0 -5
  297. package/dist/workspace/index.js +0 -5
@@ -1,4 +1,4 @@
1
1
  {
2
- "types": "../dist/browser.d.ts",
3
- "module": "../dist/browser.js"
2
+ "types": "../dist/browser/index.d.mts",
3
+ "module": "../dist/browser/index.mjs"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
- "types": "../dist/browser-worker.d.ts",
3
- "module": "../dist/browser-worker.js"
2
+ "types": "../dist/browser/worker.d.mts",
3
+ "module": "../dist/browser/worker.mjs"
4
4
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "types": "../dist/bundled.d.mts",
3
+ "module": "../dist/bundled.mjs"
4
+ }
@@ -0,0 +1,178 @@
1
+ # Licenses of Bundled Dependencies
2
+
3
+ The published artifact additionally contains code with the following licenses:
4
+ ISC, MIT
5
+
6
+ # Bundled Dependencies
7
+
8
+ ## @msgpack/msgpack
9
+
10
+ License: ISC
11
+ By: The MessagePack community
12
+ Repository: https://github.com/msgpack/msgpack-javascript
13
+
14
+ > Copyright 2019 The MessagePack Community.
15
+ >
16
+ > Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
17
+ >
18
+ > THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
+
20
+ ---------------------------------------
21
+
22
+ ## eventemitter3
23
+
24
+ License: MIT
25
+ By: Arnout Kazemier
26
+ Repository: https://github.com/primus/eventemitter3
27
+
28
+ > The MIT License (MIT)
29
+ >
30
+ > Copyright (c) 2014 Arnout Kazemier
31
+ >
32
+ > Permission is hereby granted, free of charge, to any person obtaining a copy
33
+ > of this software and associated documentation files (the "Software"), to deal
34
+ > in the Software without restriction, including without limitation the rights
35
+ > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
36
+ > copies of the Software, and to permit persons to whom the Software is
37
+ > furnished to do so, subject to the following conditions:
38
+ >
39
+ > The above copyright notice and this permission notice shall be included in all
40
+ > copies or substantial portions of the Software.
41
+ >
42
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43
+ > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
44
+ > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
45
+ > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
46
+ > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
47
+ > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
48
+ > SOFTWARE.
49
+
50
+ ---------------------------------------
51
+
52
+ ## fast-equals
53
+
54
+ License: MIT
55
+ By: Tony Quetano
56
+ Repository: https://github.com/planttheidea/fast-equals
57
+
58
+ > MIT License
59
+ >
60
+ > Copyright (c) 2025 Tony Quetano
61
+ >
62
+ > Permission is hereby granted, free of charge, to any person obtaining a copy
63
+ > of this software and associated documentation files (the "Software"), to deal
64
+ > in the Software without restriction, including without limitation the rights
65
+ > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
66
+ > copies of the Software, and to permit persons to whom the Software is
67
+ > furnished to do so, subject to the following conditions:
68
+ >
69
+ > The above copyright notice and this permission notice shall be included in all
70
+ > copies or substantial portions of the Software.
71
+ >
72
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
73
+ > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
74
+ > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
75
+ > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
76
+ > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
77
+ > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
78
+ > SOFTWARE.
79
+
80
+ ---------------------------------------
81
+
82
+ ## p-queue, p-timeout, parse-ms, pretty-ms, strip-indent
83
+
84
+ License: MIT
85
+ Repository: https://github.com/sindresorhus/p-queue
86
+
87
+ License: MIT
88
+ By: Sindre Sorhus
89
+ Repository: https://github.com/sindresorhus/p-timeout
90
+
91
+ License: MIT
92
+ By: Sindre Sorhus
93
+ Repository: https://github.com/sindresorhus/parse-ms
94
+
95
+ License: MIT
96
+ By: Sindre Sorhus
97
+ Repository: https://github.com/sindresorhus/pretty-ms
98
+
99
+ License: MIT
100
+ By: Sindre Sorhus
101
+ Repository: https://github.com/sindresorhus/strip-indent
102
+
103
+ > MIT License
104
+ >
105
+ > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
106
+ >
107
+ > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
108
+ >
109
+ > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
110
+ >
111
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
112
+
113
+ ---------------------------------------
114
+
115
+ ## picomatch
116
+
117
+ License: MIT
118
+ By: Jon Schlinkert
119
+ Repository: https://github.com/micromatch/picomatch
120
+
121
+ > The MIT License (MIT)
122
+ >
123
+ > Copyright (c) 2017-present, Jon Schlinkert.
124
+ >
125
+ > Permission is hereby granted, free of charge, to any person obtaining a copy
126
+ > of this software and associated documentation files (the "Software"), to deal
127
+ > in the Software without restriction, including without limitation the rights
128
+ > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
129
+ > copies of the Software, and to permit persons to whom the Software is
130
+ > furnished to do so, subject to the following conditions:
131
+ >
132
+ > The above copyright notice and this permission notice shall be included in
133
+ > all copies or substantial portions of the Software.
134
+ >
135
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
136
+ > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
137
+ > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
138
+ > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
139
+ > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
140
+ > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
141
+ > THE SOFTWARE.
142
+
143
+ ---------------------------------------
144
+
145
+ ## remeda
146
+
147
+ License: MIT
148
+ By: Łukasz Sentkiewicz
149
+ Repository: https://github.com/remeda/remeda
150
+
151
+ ---------------------------------------
152
+
153
+ ## ufo
154
+
155
+ License: MIT
156
+ Repository: https://github.com/unjs/ufo
157
+
158
+ > MIT License
159
+ >
160
+ > Copyright (c) Pooya Parsa <pooya@pi0.io>
161
+ >
162
+ > Permission is hereby granted, free of charge, to any person obtaining a copy
163
+ > of this software and associated documentation files (the "Software"), to deal
164
+ > in the Software without restriction, including without limitation the rights
165
+ > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
166
+ > copies of the Software, and to permit persons to whom the Software is
167
+ > furnished to do so, subject to the following conditions:
168
+ >
169
+ > The above copyright notice and this permission notice shall be included in all
170
+ > copies or substantial portions of the Software.
171
+ >
172
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
173
+ > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
174
+ > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
175
+ > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
176
+ > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
177
+ > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
178
+ > SOFTWARE.
@@ -0,0 +1 @@
1
+ import{i as logger}from"./logger.mjs";import{C as e}from"./libs/remeda.mjs";import{GraphvizWasmAdapter,QueueGraphvizLayoter}from"@likec4/layouts";import{GraphvizBinaryAdapter}from"@likec4/layouts/graphviz/binary";import which from"which";function graphvizBinPath(){try{return which.sync(`dot`)}catch(t){return logger.error(`Error checking for native Graphviz:`,{error:t}),null}}const ConfigurableLayouter={likec4:{Layouter(i){logger.debug(`Creating ConfigurableLayouter`);let a=new QueueGraphvizLayoter;return i.shared.workspace.ConfigurationProvider.onConfigurationSectionUpdate(r=>{if(logger.debug(`Configuration update: {update}`,{update:r}),r.section!==i.LanguageMetaData.languageId){logger.debug(`Ignoring configuration update as it is not for ${i.LanguageMetaData.languageId}`);return}try{let{mode:o,path:s}=r.configuration.graphviz??{mode:`wasm`,path:``};if(o!==`wasm`){let n=e(s)?graphvizBinPath():s;if(!e(n)){a.changePort(new GraphvizBinaryAdapter(n)),logger.info`use graphviz binary: ${n}`;return}logger.warn(`No Graphviz binaries found on PATH, use graphviz wasm`),i.shared.lsp.Connection?.window.showWarningMessage(`No Graphviz binaries found on PATH, set path to binaries in settings.`)}a.changePort(new GraphvizWasmAdapter),logger.info(`use graphviz wasm`)}catch(t){logger.error(`Failed to update configuration`,{error:t})}}),a}}};export{ConfigurableLayouter as t};
@@ -0,0 +1,3 @@
1
+ import{t as LibIcons}from"./icons.mjs";import{isLikeC4Builtin}from"../likec4lib.mjs";import{n as excludeNodeModules,r as hasLikeC4Ext,t as ensureOrder,wr as NoFileSystemWatcher}from"./utils.mjs";import{i as logger$2}from"./logger.mjs";import{t as PQueue}from"./libs/p-queue.mjs";import{D as t,o as e}from"./libs/remeda.mjs";import{isLikeC4Config,loadConfig}from"@likec4/config/node";import{fdir}from"fdir";import{SimpleCache,URI,UriUtils}from"langium";import{NodeFileSystemProvider}from"langium/node";import{mkdirSync,statSync}from"node:fs";import{unlink,writeFile}from"node:fs/promises";import{basename,dirname}from"node:path";import{objectHash,onNextTick}from"@likec4/core/utils";import chokidar from"chokidar";import JSON5 from"json5";import{Position,Range}from"vscode-languageserver-types";const layoutsLogger=logger$2.getChild(`manual-layouts`),isManualLayoutFile=n=>n.endsWith(`.likec4.snap`);function fileName(n){return`${n}.likec4.snap`}function getManualLayoutsOutDir(n){return UriUtils.resolvePath(n.folderUri,n.config.manualLayouts?.outDir??`.likec4`)}const WithLikeC4ManualLayouts={manualLayouts:n=>new DefaultLikeC4ManualLayouts(n)},RELATIVE_PATH_PREFIX=`file://./`;var DefaultLikeC4ManualLayouts=class{cache;constructor(n){this.services=n,this.cache=new SimpleCache,onNextTick(()=>{n.workspace.ProjectsManager.onProjectsUpdate(()=>{this.clearCaches()})})}async read(n){return await this.cache.get(n.id,async()=>{let r=layoutsLogger.getChild(n.id),i=this.services.workspace.FileSystemProvider,a=getManualLayoutsOutDir(n),o=[];try{let s=await i.scanDirectory(a,isManualLayoutFile);if(s.length===0)return null;for(let a of s)try{let r=await i.readFile(a.uri),s=JSON5.parse(r),c=this.resolveIconPathsAfterRead(s,n.folderUri);o.push({...c,_layout:`manual`})}catch(n){r.warn(`Failed to read view snapshot ${a.uri.fsPath}`,{err:n})}o.length&&r.debug`read manual layouts for ${n.id}, found ${o.length}`}catch(i){r.warn(`Failed to read manual layouts for ${n.folderUri.fsPath}`,{err:i})}if(o.length===0)return null;let s=t(o,e(`id`));return{hash:objectHash(s),views:s}})}async write(n,r){let i=layoutsLogger.getChild(n.id),a=getManualLayoutsOutDir(n),o=UriUtils.joinPath(a,fileName(r.id));if(`manualLayout`in r){let{manualLayout:n,...i}=r;r=i}let s=JSON5.stringify(this.normalizeIconPathsForWrite(r,n.folderUri),{space:2,quote:`'`}),c={uri:o.toString(),range:Range.create(Position.create(0,0),Position.create(s.split(`
2
+ `).length-1,1))};i.debug`write snapshot of ${r.id} in project ${n.id} to ${o.fsPath}`;let l=this.services.workspace.FileSystemProvider;try{await l.writeFile(o,s+`
3
+ `)}catch(n){i.warn(`Failed to write snapshot ${r.id} to ${o.fsPath}`,{err:n})}return this.cache.delete(n.id),c}async remove(n,r){let i=layoutsLogger.getChild(n.id),a=getManualLayoutsOutDir(n),o=UriUtils.joinPath(a,fileName(r));i.debug`delete snapshot of ${r} in project ${n.id}. File: ${o.fsPath}`;let s={uri:o.toString(),range:Range.create(0,0,0,0)};this.cache.delete(n.id);try{if(!await this.services.workspace.FileSystemProvider.deleteFile(o))return i.warn`Snapshot ${r} did not exist at ${o.fsPath}`,null}catch(n){i.warn(`Failed to delete snapshot ${r} from ${o.fsPath}`,{err:n})}return s}clearCaches(){layoutsLogger.trace`clear caches`,this.cache.clear()}normalizeIconPathsForWrite(n,r){let i=n.nodes.map(n=>{if(!n.icon||typeof n.icon!=`string`)return n;if(n.icon.startsWith(`file://`)){let i=URI.parse(n.icon),a=UriUtils.relative(r,i);return a.startsWith(`..`)?n:{...n,icon:`${RELATIVE_PATH_PREFIX}${a}`}}return n});return{...n,nodes:i}}resolveIconPathsAfterRead(n,r){let i=n.nodes.map(n=>{if(!n.icon||typeof n.icon!=`string`)return n;if(n.icon.startsWith(RELATIVE_PATH_PREFIX)){let i=n.icon.substring(9),a=UriUtils.joinPath(r,i);return{...n,icon:a.toString()}}return n});return{...n,nodes:i}}};const logger$1=logger$2.getChild(`chokidar`),WithChokidarWatcher={fileSystemWatcher:n=>new ChokidarFileSystemWatcher(n)},isAnyLikeC4File=n=>{let r=basename(n);return hasLikeC4Ext(r)||isLikeC4Config(r)||isManualLayoutFile(r)};var ChokidarFileSystemWatcher=class{watcher;queue=new PQueue({concurrency:1,timeout:5e3});constructor(n){this.services=n}watch(n){if(this.watcher){logger$1.debug`add watching folder: ${n}`,this.watcher.add(n);return}this.watcher=this.createWatcher(n)}async dispose(){if(this.watcher){let n=this.watcher;this.watcher=void 0,await n.close()}}createWatcher(n){logger$1.debug`create watcher for folder: ${n}`;let r=chokidar.watch(n,{ignored:[n=>n.includes(`node_modules`)||n.includes(`.git`),(n,r)=>!!r?.isFile()&&!isAnyLikeC4File(n)],followSymlinks:!0,ignoreInitial:!0}),onAddOrChange=(n,r)=>{r?.isDirectory()||this.enqueueFileOp(`addOrChange: `+n,async()=>{await this.onAddOrChange(n)})};return r.on(`add`,onAddOrChange).on(`change`,onAddOrChange).on(`unlink`,(n,r)=>{r?.isDirectory()||this.enqueueFileOp(`remove: `+n,async()=>{await this.onRemove(n)})}).on(`unlinkDir`,n=>{this.enqueueFileOp(`removeDir: `+n,async()=>{await this.onRemoveDir(n)})}),r}enqueueFileOp(n,r){this.queue.add(async()=>{try{await r()}catch(r){logger$1.warn(`Failed on {fileop}`,{fileop:n,error:r})}}).catch(r=>{logger$1.error(`Error on {fileop}`,{fileop:n,error:r})})}async onAddOrChange(n){let r=this.services.workspace,i=basename(n),o=URI.file(n);switch(!0){case isLikeC4Config(i):logger$1.debug`project file changed: ${n}`,r.ManualLayouts.clearCaches(),await r.ProjectsManager.registerConfigFile(o);break;case hasLikeC4Ext(i):logger$1.debug`file changed: ${n}`,await r.DocumentBuilder.update([o],[]);break;case isManualLayoutFile(i):{logger$1.debug`manual layout file changed: ${n}`,r.ManualLayouts.clearCaches();let i=r.ProjectsManager.ownerProjectId(o);await r.ProjectsManager.rebuildProject(i);break}default:logger$1.warn`Unknown file change: ${n}`}}async onRemove(n){let r=this.services.workspace,i=basename(n),o=URI.file(n);switch(!0){case isLikeC4Config(i):logger$1.debug`project file removed: ${n}`,r.ManualLayouts.clearCaches(),await r.ProjectsManager.reloadProjects();break;case hasLikeC4Ext(i):logger$1.debug`file removed: ${n}`,await r.DocumentBuilder.update([],[o]);break;case isManualLayoutFile(i):{logger$1.debug`manual layout file removed: ${n}`;let i=r.ProjectsManager.ownerProjectId(o);r.ManualLayouts.clearCaches(),await r.ProjectsManager.rebuildProject(i);break}default:logger$1.warn`Unknown file removal: ${n}`}}async onRemoveDir(n){logger$1.debug`directory removed: ${n}`;let r=this.services.workspace;r.ProjectsManager.findOverlaped(n).length>0&&(r.ManualLayouts.clearCaches(),await r.ProjectsManager.reloadProjects())}};const logger=logger$2.getChild(`filesystem`);function isLikeC4ConfigFile(n,r=!1){return!r&&isLikeC4Config(basename(n))}function isLikeC4File(n,r=!1){return!r&&hasLikeC4Ext(basename(n))}const WithFileSystem=(n=!0)=>({fileSystemProvider:()=>new SymLinkTraversingFileSystemProvider,...n?WithChokidarWatcher:NoFileSystemWatcher});var SymLinkTraversingFileSystemProvider=class extends NodeFileSystemProvider{async readFile(i){if(isLikeC4Builtin(i))return Promise.resolve(LibIcons);try{return await super.readFile(i)}catch(n){return logger.warn(`Failed to read file ${i.fsPath}`,{error:n}),``}}async readDirectory(n,r){let a=r?.recursive??!0,s=r?.maxDepth??1/0,c=[];try{let r=new fdir().withSymlinks({resolvePaths:!1}).exclude(excludeNodeModules).withFullPaths().filter(isLikeC4File);a?s!==1/0&&(r=r.withMaxDepth(s)):r=r.withMaxDepth(1);let o=await r.crawl(n.fsPath).withPromise();for(let n of o)c.push({isFile:!0,isDirectory:!1,uri:URI.file(n)})}catch(r){logger.warn(`Failed to read directory ${n.fsPath}`,{error:r})}return c.sort(ensureOrder)}async scanProjectFiles(n){return await this.scanDirectory(n,isLikeC4ConfigFile)}async scanDirectory(n,r){let a=[];try{let o=await new fdir().withSymlinks({resolvePaths:!1}).exclude(excludeNodeModules).withFullPaths().filter(r).crawl(n.fsPath).withPromise();for(let n of o)a.push({isFile:!0,isDirectory:!1,uri:URI.file(n)})}catch(r){logger.warn(`Failed to scan directory {path}`,{path:n.fsPath,error:r})}return a}async loadProjectConfig(n){return await loadConfig(n)}async writeFile(n,r){let i=dirname(n.fsPath),a=statSync(i,{throwIfNoEntry:!1});if(a?.isFile())throw Error(`Cannot create directory ${i} because a file with the same name exists.`);return a||(logger.debug(`creating directory {path}`,{path:i}),mkdirSync(i,{recursive:!0})),logger.debug(`writing file {path}`,{path:n.fsPath}),await writeFile(n.fsPath,r,{encoding:`utf-8`})}async deleteFile(n){try{let r=n.fsPath,i=statSync(r,{throwIfNoEntry:!1});return i?.isFile()||i?.isSymbolicLink()?(await unlink(r),logger.debug(`deleted file {path}`,{path:r}),!0):(logger.warn(`deleteFile failed: {path} does not exist, or is not a file`,{path:r}),!1)}catch(r){logger.warn(`Failed to delete file ${n.fsPath}`,{error:r})}return!1}};export{WithChokidarWatcher as n,WithLikeC4ManualLayouts as r,WithFileSystem as t};