@likec4/language-server 1.15.1 → 1.17.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 (49) hide show
  1. package/contrib/likec4.tmLanguage.json +1 -1
  2. package/dist/browser.cjs +1 -1
  3. package/dist/browser.d.cts +2 -2
  4. package/dist/browser.d.mts +2 -2
  5. package/dist/browser.d.ts +2 -2
  6. package/dist/browser.mjs +2 -2
  7. package/dist/index.cjs +35 -5
  8. package/dist/index.d.cts +17 -4
  9. package/dist/index.d.mts +17 -4
  10. package/dist/index.d.ts +17 -4
  11. package/dist/index.mjs +34 -5
  12. package/dist/model-graph/index.cjs +1 -1
  13. package/dist/model-graph/index.d.cts +4 -2
  14. package/dist/model-graph/index.d.mts +4 -2
  15. package/dist/model-graph/index.d.ts +4 -2
  16. package/dist/model-graph/index.mjs +1 -1
  17. package/dist/shared/{language-server.BuChFlda.mjs → language-server.B8qSDsWW.mjs} +211 -96
  18. package/dist/shared/language-server.BGGRJRnr.d.mts +1338 -0
  19. package/dist/shared/{language-server.BT4WTbFI.mjs → language-server.BXFhlTPo.mjs} +139 -76
  20. package/dist/shared/{language-server.DfMwkd2l.d.mts → language-server.BgDKnNok.d.mts} +45 -11
  21. package/dist/shared/language-server.Bmpq16Gw.d.ts +1338 -0
  22. package/dist/shared/language-server.C1ZfM22X.d.cts +1338 -0
  23. package/dist/shared/{language-server.U2piOAVt.d.cts → language-server.DJo88TnT.d.cts} +45 -11
  24. package/dist/shared/{language-server.DfjkvknB.cjs → language-server.DZRuJVSg.cjs} +209 -94
  25. package/dist/shared/{language-server.B8s2wfT_.cjs → language-server.N8HLDQqz.cjs} +137 -74
  26. package/dist/shared/{language-server.j-ShR6as.d.ts → language-server.PEjk7U9s.d.ts} +45 -11
  27. package/package.json +7 -7
  28. package/src/LikeC4FileSystem.ts +36 -0
  29. package/src/Rpc.ts +2 -2
  30. package/src/ast.ts +11 -3
  31. package/src/generated/ast.ts +112 -11
  32. package/src/generated/grammar.ts +1 -1
  33. package/src/index.ts +3 -3
  34. package/src/like-c4.langium +20 -1
  35. package/src/lsp/SemanticTokenProvider.ts +26 -8
  36. package/src/model/fqn-computation.ts +6 -2
  37. package/src/model/model-builder.ts +25 -30
  38. package/src/model/model-parser.ts +91 -18
  39. package/src/model-graph/LikeC4ModelGraph.ts +22 -11
  40. package/src/model-graph/compute-view/__test__/fixture.ts +69 -19
  41. package/src/model-graph/compute-view/compute.ts +85 -73
  42. package/src/model-graph/dynamic-view/compute.ts +12 -2
  43. package/src/model-graph/utils/applyCustomElementProperties.ts +1 -3
  44. package/src/model-graph/utils/applyViewRuleStyles.ts +0 -4
  45. package/src/references/scope-computation.ts +10 -0
  46. package/src/validation/index.ts +3 -0
  47. package/src/validation/specification.ts +21 -0
  48. package/src/view-utils/index.ts +0 -1
  49. package/src/view-utils/resolve-global-rules.ts +66 -50
@@ -12,7 +12,7 @@
12
12
  },
13
13
  {
14
14
  "name": "keyword.control.likec4",
15
- "match": "\\b(BottomTop|LeftRight|RightLeft|TopBottom|amber|and|autoLayout|blue|border|browser|color|crow|cylinder|dashed|description|diamond|dot|dotted|dynamic|element|element\\.kind|element\\.tag|exclude|extend|extends|global|gray|green|group|head|icon|icons|include|indigo|is|kind|likec4lib|line|link|metadata|mobile|model|muted|navigateTo|none|normal|not|notation|notes|odiamond|odot|of|onormal|opacity|open|or|par|parallel|person|primary|queue|rectangle|red|relationship|secondary|shape|sky|slate|solid|specification|storage|style|styleGroup|tag|tail|technology|title|vee|view|views|where|with)\\b"
15
+ "match": "\\b(BottomTop|LeftRight|RightLeft|TopBottom|amber|and|autoLayout|blue|border|browser|color|crow|cylinder|dashed|description|diamond|dot|dotted|dynamic|dynamicPredicateGroup|element|element\\.kind|element\\.tag|exclude|extend|extends|global|gray|green|group|head|icon|icons|include|indigo|is|kind|likec4lib|line|link|metadata|mobile|model|muted|navigateTo|none|normal|not|notation|notes|odiamond|odot|of|onormal|opacity|open|or|par|parallel|person|predicate|predicateGroup|primary|queue|rectangle|red|relationship|secondary|shape|sky|slate|solid|specification|storage|style|styleGroup|tag|tail|technology|title|vee|view|views|where|with)\\b"
16
16
  },
17
17
  {
18
18
  "name": "string.quoted.double.likec4",
package/dist/browser.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  const lsp = require('langium/lsp');
4
4
  const browser = require('vscode-languageserver/browser');
5
- const module$1 = require('./shared/language-server.DfjkvknB.cjs');
5
+ const module$1 = require('./shared/language-server.DZRuJVSg.cjs');
6
6
 
7
7
  function startLanguageServer() {
8
8
  const messageReader = new browser.BrowserMessageReader(self);
@@ -1,5 +1,5 @@
1
- import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.U2piOAVt.cjs';
2
- export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, s as setLogLevel } from './shared/language-server.U2piOAVt.cjs';
1
+ import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.DJo88TnT.cjs';
2
+ export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, s as setLogLevel } from './shared/language-server.DJo88TnT.cjs';
3
3
  import * as vscode_languageserver from 'vscode-languageserver';
4
4
  import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver/browser';
5
5
  import 'langium';
@@ -1,5 +1,5 @@
1
- import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.DfMwkd2l.mjs';
2
- export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, s as setLogLevel } from './shared/language-server.DfMwkd2l.mjs';
1
+ import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.BgDKnNok.mjs';
2
+ export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, s as setLogLevel } from './shared/language-server.BgDKnNok.mjs';
3
3
  import * as vscode_languageserver from 'vscode-languageserver';
4
4
  import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver/browser';
5
5
  import 'langium';
package/dist/browser.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.j-ShR6as.js';
2
- export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, s as setLogLevel } from './shared/language-server.j-ShR6as.js';
1
+ import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.PEjk7U9s.js';
2
+ export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, s as setLogLevel } from './shared/language-server.PEjk7U9s.js';
3
3
  import * as vscode_languageserver from 'vscode-languageserver';
4
4
  import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver/browser';
5
5
  import 'langium';
package/dist/browser.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { startLanguageServer as startLanguageServer$1 } from 'langium/lsp';
2
2
  import { BrowserMessageReader, BrowserMessageWriter, createConnection } from 'vscode-languageserver/browser';
3
- import { c as createLanguageServices } from './shared/language-server.BuChFlda.mjs';
4
- export { L as LikeC4Module, a as createCustomLanguageServices, s as setLogLevel } from './shared/language-server.BuChFlda.mjs';
3
+ import { c as createLanguageServices } from './shared/language-server.B8qSDsWW.mjs';
4
+ export { L as LikeC4Module, a as createCustomLanguageServices, s as setLogLevel } from './shared/language-server.B8qSDsWW.mjs';
5
5
 
6
6
  function startLanguageServer() {
7
7
  const messageReader = new BrowserMessageReader(self);
package/dist/index.cjs CHANGED
@@ -1,13 +1,42 @@
1
1
  'use strict';
2
2
 
3
3
  const lsp = require('langium/lsp');
4
- const node$1 = require('langium/node');
5
- const node = require('vscode-languageserver/node');
6
- const module$1 = require('./shared/language-server.DfjkvknB.cjs');
4
+ const node$1 = require('vscode-languageserver/node');
5
+ const langium = require('langium');
6
+ const node = require('langium/node');
7
+ const node_fs = require('node:fs');
8
+ const promises = require('node:fs/promises');
9
+ const node_path = require('node:path');
10
+ const module$1 = require('./shared/language-server.DZRuJVSg.cjs');
11
+
12
+ const LikeC4FileSystem = {
13
+ fileSystemProvider: () => new SymLinkTraversingFileSystemProvider()
14
+ };
15
+ class SymLinkTraversingFileSystemProvider extends node.NodeFileSystemProvider {
16
+ async readDirectory(folderPath) {
17
+ const dirents = await promises.readdir(folderPath.fsPath, { withFileTypes: true });
18
+ return dirents.map((dirent) => this.followUri(langium.UriUtils.joinPath(folderPath, dirent.name)));
19
+ }
20
+ followUri(uri) {
21
+ const directoryPath = node_path.dirname(uri.fsPath);
22
+ const stat = node_fs.lstatSync(uri.fsPath);
23
+ if (stat.isSymbolicLink()) {
24
+ const resolved_link = node_fs.readlinkSync(uri.fsPath);
25
+ const linked_path = node_path.resolve(directoryPath, resolved_link);
26
+ return this.followUri(langium.URI.file(linked_path));
27
+ } else {
28
+ return {
29
+ isFile: stat.isFile(),
30
+ isDirectory: stat.isDirectory(),
31
+ uri
32
+ };
33
+ }
34
+ }
35
+ }
7
36
 
8
37
  function startLanguageServer() {
9
- const connection = node.createConnection(node.ProposedFeatures.all);
10
- const services = module$1.createLanguageServices({ connection, ...node$1.NodeFileSystem });
38
+ const connection = node$1.createConnection(node$1.ProposedFeatures.all);
39
+ const services = module$1.createLanguageServices({ connection, ...LikeC4FileSystem });
11
40
  lsp.startLanguageServer(services.shared);
12
41
  return {
13
42
  ...services,
@@ -20,4 +49,5 @@ exports.createCustomLanguageServices = module$1.createCustomLanguageServices;
20
49
  exports.createLanguageServices = module$1.createLanguageServices;
21
50
  exports.lspLogger = module$1.logger;
22
51
  exports.setLogLevel = module$1.setLogLevel;
52
+ exports.LikeC4FileSystem = LikeC4FileSystem;
23
53
  exports.startLanguageServer = startLanguageServer;
package/dist/index.d.cts CHANGED
@@ -1,8 +1,9 @@
1
- import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.U2piOAVt.cjs';
2
- export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, m as lspLogger, s as setLogLevel } from './shared/language-server.U2piOAVt.cjs';
1
+ import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.DJo88TnT.cjs';
2
+ export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, m as lspLogger, s as setLogLevel } from './shared/language-server.DJo88TnT.cjs';
3
3
  import * as vscode_languageserver_lib_common_inlineCompletion_proposed from 'vscode-languageserver/lib/common/inlineCompletion.proposed';
4
4
  import * as vscode_languageserver from 'vscode-languageserver';
5
- import 'langium';
5
+ import { URI, FileSystemNode } from 'langium';
6
+ import { NodeFileSystemProvider } from 'langium/node';
6
7
  import 'langium/lsp';
7
8
  import 'vscode-languageserver-types';
8
9
  import '@likec4/core';
@@ -12,10 +13,22 @@ import 'vscode-jsonrpc';
12
13
  import 'vscode-uri';
13
14
  import '@likec4/log';
14
15
 
16
+ declare const LikeC4FileSystem: {
17
+ fileSystemProvider: () => SymLinkTraversingFileSystemProvider;
18
+ };
19
+ /**
20
+ * A file system provider that follows symbolic links.
21
+ * @see https://github.com/likec4/likec4/pull/1213
22
+ */
23
+ declare class SymLinkTraversingFileSystemProvider extends NodeFileSystemProvider {
24
+ readDirectory(folderPath: URI): Promise<FileSystemNode[]>;
25
+ followUri(uri: URI): FileSystemNode;
26
+ }
27
+
15
28
  declare function startLanguageServer(): {
16
29
  connection: vscode_languageserver._Connection<vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver_lib_common_inlineCompletion_proposed.InlineCompletionFeatureShape, vscode_languageserver._>;
17
30
  shared: LikeC4SharedServices;
18
31
  likec4: LikeC4Services;
19
32
  };
20
33
 
21
- export { LikeC4Services, LikeC4SharedServices, startLanguageServer };
34
+ export { LikeC4FileSystem, LikeC4Services, LikeC4SharedServices, startLanguageServer };
package/dist/index.d.mts CHANGED
@@ -1,8 +1,9 @@
1
- import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.DfMwkd2l.mjs';
2
- export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, m as lspLogger, s as setLogLevel } from './shared/language-server.DfMwkd2l.mjs';
1
+ import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.BgDKnNok.mjs';
2
+ export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, m as lspLogger, s as setLogLevel } from './shared/language-server.BgDKnNok.mjs';
3
3
  import * as vscode_languageserver_lib_common_inlineCompletion_proposed from 'vscode-languageserver/lib/common/inlineCompletion.proposed';
4
4
  import * as vscode_languageserver from 'vscode-languageserver';
5
- import 'langium';
5
+ import { URI, FileSystemNode } from 'langium';
6
+ import { NodeFileSystemProvider } from 'langium/node';
6
7
  import 'langium/lsp';
7
8
  import 'vscode-languageserver-types';
8
9
  import '@likec4/core';
@@ -12,10 +13,22 @@ import 'vscode-jsonrpc';
12
13
  import 'vscode-uri';
13
14
  import '@likec4/log';
14
15
 
16
+ declare const LikeC4FileSystem: {
17
+ fileSystemProvider: () => SymLinkTraversingFileSystemProvider;
18
+ };
19
+ /**
20
+ * A file system provider that follows symbolic links.
21
+ * @see https://github.com/likec4/likec4/pull/1213
22
+ */
23
+ declare class SymLinkTraversingFileSystemProvider extends NodeFileSystemProvider {
24
+ readDirectory(folderPath: URI): Promise<FileSystemNode[]>;
25
+ followUri(uri: URI): FileSystemNode;
26
+ }
27
+
15
28
  declare function startLanguageServer(): {
16
29
  connection: vscode_languageserver._Connection<vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver_lib_common_inlineCompletion_proposed.InlineCompletionFeatureShape, vscode_languageserver._>;
17
30
  shared: LikeC4SharedServices;
18
31
  likec4: LikeC4Services;
19
32
  };
20
33
 
21
- export { LikeC4Services, LikeC4SharedServices, startLanguageServer };
34
+ export { LikeC4FileSystem, LikeC4Services, LikeC4SharedServices, startLanguageServer };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.j-ShR6as.js';
2
- export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, m as lspLogger, s as setLogLevel } from './shared/language-server.j-ShR6as.js';
1
+ import { L as LikeC4SharedServices, a as LikeC4Services } from './shared/language-server.PEjk7U9s.js';
2
+ export { f as FqnIndex, F as FqnIndexEntry, I as IsValidFn, k as LanguageServicesContext, j as LikeC4AddedServices, g as LikeC4ModelBuilder, h as LikeC4ModelLocator, i as LikeC4ModelParser, d as LikeC4Module, M as ModelParsedListener, e as computeDocumentFqn, c as createCustomLanguageServices, b as createLanguageServices, l as createSharedServices, m as lspLogger, s as setLogLevel } from './shared/language-server.PEjk7U9s.js';
3
3
  import * as vscode_languageserver_lib_common_inlineCompletion_proposed from 'vscode-languageserver/lib/common/inlineCompletion.proposed';
4
4
  import * as vscode_languageserver from 'vscode-languageserver';
5
- import 'langium';
5
+ import { URI, FileSystemNode } from 'langium';
6
+ import { NodeFileSystemProvider } from 'langium/node';
6
7
  import 'langium/lsp';
7
8
  import 'vscode-languageserver-types';
8
9
  import '@likec4/core';
@@ -12,10 +13,22 @@ import 'vscode-jsonrpc';
12
13
  import 'vscode-uri';
13
14
  import '@likec4/log';
14
15
 
16
+ declare const LikeC4FileSystem: {
17
+ fileSystemProvider: () => SymLinkTraversingFileSystemProvider;
18
+ };
19
+ /**
20
+ * A file system provider that follows symbolic links.
21
+ * @see https://github.com/likec4/likec4/pull/1213
22
+ */
23
+ declare class SymLinkTraversingFileSystemProvider extends NodeFileSystemProvider {
24
+ readDirectory(folderPath: URI): Promise<FileSystemNode[]>;
25
+ followUri(uri: URI): FileSystemNode;
26
+ }
27
+
15
28
  declare function startLanguageServer(): {
16
29
  connection: vscode_languageserver._Connection<vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver._, vscode_languageserver_lib_common_inlineCompletion_proposed.InlineCompletionFeatureShape, vscode_languageserver._>;
17
30
  shared: LikeC4SharedServices;
18
31
  likec4: LikeC4Services;
19
32
  };
20
33
 
21
- export { LikeC4Services, LikeC4SharedServices, startLanguageServer };
34
+ export { LikeC4FileSystem, LikeC4Services, LikeC4SharedServices, startLanguageServer };
package/dist/index.mjs CHANGED
@@ -1,12 +1,41 @@
1
1
  import { startLanguageServer as startLanguageServer$1 } from 'langium/lsp';
2
- import { NodeFileSystem } from 'langium/node';
3
2
  import { createConnection, ProposedFeatures } from 'vscode-languageserver/node';
4
- import { c as createLanguageServices } from './shared/language-server.BuChFlda.mjs';
5
- export { L as LikeC4Module, a as createCustomLanguageServices, l as lspLogger, s as setLogLevel } from './shared/language-server.BuChFlda.mjs';
3
+ import { UriUtils, URI } from 'langium';
4
+ import { NodeFileSystemProvider } from 'langium/node';
5
+ import { lstatSync, readlinkSync } from 'node:fs';
6
+ import { readdir } from 'node:fs/promises';
7
+ import { dirname, resolve } from 'node:path';
8
+ import { c as createLanguageServices } from './shared/language-server.B8qSDsWW.mjs';
9
+ export { L as LikeC4Module, a as createCustomLanguageServices, l as lspLogger, s as setLogLevel } from './shared/language-server.B8qSDsWW.mjs';
10
+
11
+ const LikeC4FileSystem = {
12
+ fileSystemProvider: () => new SymLinkTraversingFileSystemProvider()
13
+ };
14
+ class SymLinkTraversingFileSystemProvider extends NodeFileSystemProvider {
15
+ async readDirectory(folderPath) {
16
+ const dirents = await readdir(folderPath.fsPath, { withFileTypes: true });
17
+ return dirents.map((dirent) => this.followUri(UriUtils.joinPath(folderPath, dirent.name)));
18
+ }
19
+ followUri(uri) {
20
+ const directoryPath = dirname(uri.fsPath);
21
+ const stat = lstatSync(uri.fsPath);
22
+ if (stat.isSymbolicLink()) {
23
+ const resolved_link = readlinkSync(uri.fsPath);
24
+ const linked_path = resolve(directoryPath, resolved_link);
25
+ return this.followUri(URI.file(linked_path));
26
+ } else {
27
+ return {
28
+ isFile: stat.isFile(),
29
+ isDirectory: stat.isDirectory(),
30
+ uri
31
+ };
32
+ }
33
+ }
34
+ }
6
35
 
7
36
  function startLanguageServer() {
8
37
  const connection = createConnection(ProposedFeatures.all);
9
- const services = createLanguageServices({ connection, ...NodeFileSystem });
38
+ const services = createLanguageServices({ connection, ...LikeC4FileSystem });
10
39
  startLanguageServer$1(services.shared);
11
40
  return {
12
41
  ...services,
@@ -14,4 +43,4 @@ function startLanguageServer() {
14
43
  };
15
44
  }
16
45
 
17
- export { createLanguageServices, startLanguageServer };
46
+ export { LikeC4FileSystem, createLanguageServices, startLanguageServer };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const LikeC4ModelGraph = require('../shared/language-server.B8s2wfT_.cjs');
3
+ const LikeC4ModelGraph = require('../shared/language-server.N8HLDQqz.cjs');
4
4
 
5
5
 
6
6
 
@@ -1,8 +1,9 @@
1
- import { Element, Fqn, Relation, RelationID, ElementView, ComputedElementView, DynamicView, ComputedDynamicView } from '@likec4/core';
1
+ import { ModelGlobals, Element, Fqn, Relation, RelationID, ElementView, ComputedElementView, DynamicView, ComputedDynamicView } from '@likec4/core';
2
2
 
3
3
  type Params = {
4
4
  elements: Record<Fqn, Element>;
5
5
  relations: Record<RelationID, Relation>;
6
+ globals?: ModelGlobals;
6
7
  };
7
8
  type RelationEdge = {
8
9
  source: Element;
@@ -17,7 +18,8 @@ type FqnsOrElements = ReadonlyArray<Fqn> | ReadonlyArray<Element>;
17
18
  */
18
19
  declare class LikeC4ModelGraph {
19
20
  #private;
20
- constructor({ elements, relations }: Params);
21
+ readonly globals: ModelGlobals;
22
+ constructor({ elements, relations, globals }: Params);
21
23
  get rootElements(): Element[];
22
24
  get elements(): Element[];
23
25
  element(id: Fqn): Element;
@@ -1,8 +1,9 @@
1
- import { Element, Fqn, Relation, RelationID, ElementView, ComputedElementView, DynamicView, ComputedDynamicView } from '@likec4/core';
1
+ import { ModelGlobals, Element, Fqn, Relation, RelationID, ElementView, ComputedElementView, DynamicView, ComputedDynamicView } from '@likec4/core';
2
2
 
3
3
  type Params = {
4
4
  elements: Record<Fqn, Element>;
5
5
  relations: Record<RelationID, Relation>;
6
+ globals?: ModelGlobals;
6
7
  };
7
8
  type RelationEdge = {
8
9
  source: Element;
@@ -17,7 +18,8 @@ type FqnsOrElements = ReadonlyArray<Fqn> | ReadonlyArray<Element>;
17
18
  */
18
19
  declare class LikeC4ModelGraph {
19
20
  #private;
20
- constructor({ elements, relations }: Params);
21
+ readonly globals: ModelGlobals;
22
+ constructor({ elements, relations, globals }: Params);
21
23
  get rootElements(): Element[];
22
24
  get elements(): Element[];
23
25
  element(id: Fqn): Element;
@@ -1,8 +1,9 @@
1
- import { Element, Fqn, Relation, RelationID, ElementView, ComputedElementView, DynamicView, ComputedDynamicView } from '@likec4/core';
1
+ import { ModelGlobals, Element, Fqn, Relation, RelationID, ElementView, ComputedElementView, DynamicView, ComputedDynamicView } from '@likec4/core';
2
2
 
3
3
  type Params = {
4
4
  elements: Record<Fqn, Element>;
5
5
  relations: Record<RelationID, Relation>;
6
+ globals?: ModelGlobals;
6
7
  };
7
8
  type RelationEdge = {
8
9
  source: Element;
@@ -17,7 +18,8 @@ type FqnsOrElements = ReadonlyArray<Fqn> | ReadonlyArray<Element>;
17
18
  */
18
19
  declare class LikeC4ModelGraph {
19
20
  #private;
20
- constructor({ elements, relations }: Params);
21
+ readonly globals: ModelGlobals;
22
+ constructor({ elements, relations, globals }: Params);
21
23
  get rootElements(): Element[];
22
24
  get elements(): Element[];
23
25
  element(id: Fqn): Element;
@@ -1 +1 @@
1
- export { L as LikeC4ModelGraph, b as computeDynamicView, c as computeElementView, a as computeView } from '../shared/language-server.BT4WTbFI.mjs';
1
+ export { L as LikeC4ModelGraph, b as computeDynamicView, c as computeElementView, a as computeView } from '../shared/language-server.BXFhlTPo.mjs';