@likec4/language-server 1.45.0 → 1.46.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.
- package/dist/LikeC4LanguageServices.d.ts +3 -0
- package/dist/LikeC4LanguageServices.js +2 -0
- package/dist/Rpc.js +13 -2
- package/dist/ast.d.ts +10 -0
- package/dist/ast.js +7 -0
- package/dist/bundled.mjs +3819 -4062
- package/dist/filesystem/ChokidarWatcher.js +2 -2
- package/dist/filesystem/LikeC4FileSystem.js +5 -1
- package/dist/filesystem/index.d.ts +2 -0
- package/dist/generated/ast.d.ts +46 -9
- package/dist/generated/ast.js +56 -4
- package/dist/generated/grammar.js +1 -1
- package/dist/generated-lib/icons.js +1 -1
- package/dist/lsp/DocumentSymbolProvider.js +12 -1
- package/dist/mcp/server/WithMCPServer.js +0 -2
- package/dist/mcp/tools/read-deployment.js +18 -0
- package/dist/mcp/tools/read-element.js +24 -0
- package/dist/model/builder/buildModel.js +70 -1
- package/dist/model/fqn-index.js +8 -2
- package/dist/model/model-parser.d.ts +3 -0
- package/dist/model/model-parser.js +7 -0
- package/dist/model/parser/Base.js +8 -3
- package/dist/model/parser/GlobalsParser.d.ts +1 -0
- package/dist/model/parser/ModelParser.d.ts +2 -1
- package/dist/model/parser/ModelParser.js +45 -1
- package/dist/model/parser/ViewsParser.d.ts +1 -0
- package/dist/model/parser/ViewsParser.js +13 -0
- package/dist/model-change/ModelChanges.js +6 -3
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +11 -1
- package/dist/validation/relation.d.ts +1 -0
- package/dist/validation/relation.js +87 -1
- package/dist/validation/view-checks.d.ts +4 -0
- package/dist/validation/view-checks.js +46 -0
- package/dist/views/LikeC4ManualLayouts.js +2 -2
- package/dist/views/LikeC4Views.js +2 -2
- package/dist/workspace/ProjectsManager.d.ts +26 -1
- package/dist/workspace/ProjectsManager.js +98 -12
- package/dist/workspace/WorkspaceManager.js +38 -0
- package/package.json +17 -17
|
@@ -5,6 +5,7 @@ import { URI } from 'langium';
|
|
|
5
5
|
import type { CancellationToken } from 'vscode-jsonrpc';
|
|
6
6
|
import type { Range } from 'vscode-languageserver-types';
|
|
7
7
|
import type { LikeC4ModelBuilder } from './model';
|
|
8
|
+
import type { LikeC4ModelChanges } from './model-change/ModelChanges';
|
|
8
9
|
import type { LikeC4Services } from './module';
|
|
9
10
|
import type { Locate } from './protocol';
|
|
10
11
|
import type { LikeC4Views } from './views/LikeC4Views';
|
|
@@ -14,6 +15,7 @@ export interface LikeC4LanguageServices {
|
|
|
14
15
|
readonly builder: LikeC4ModelBuilder;
|
|
15
16
|
readonly workspaceUri: URI;
|
|
16
17
|
readonly projectsManager: ProjectsManager;
|
|
18
|
+
readonly editor: LikeC4ModelChanges;
|
|
17
19
|
/**
|
|
18
20
|
* Returns all projects with relevant documents
|
|
19
21
|
*/
|
|
@@ -61,6 +63,7 @@ export interface LikeC4LanguageServices {
|
|
|
61
63
|
export declare class DefaultLikeC4LanguageServices implements LikeC4LanguageServices {
|
|
62
64
|
private services;
|
|
63
65
|
readonly builder: LikeC4ModelBuilder;
|
|
66
|
+
readonly editor: LikeC4ModelChanges;
|
|
64
67
|
readonly projectsManager: ProjectsManager;
|
|
65
68
|
constructor(services: LikeC4Services);
|
|
66
69
|
get views(): LikeC4Views;
|
|
@@ -13,11 +13,13 @@ const logger = mainLogger.getChild('LanguageServices');
|
|
|
13
13
|
export class DefaultLikeC4LanguageServices {
|
|
14
14
|
services;
|
|
15
15
|
builder;
|
|
16
|
+
editor;
|
|
16
17
|
projectsManager;
|
|
17
18
|
constructor(services) {
|
|
18
19
|
this.services = services;
|
|
19
20
|
this.builder = services.likec4.ModelBuilder;
|
|
20
21
|
this.projectsManager = services.shared.workspace.ProjectsManager;
|
|
22
|
+
this.editor = services.likec4.ModelChanges;
|
|
21
23
|
}
|
|
22
24
|
get views() {
|
|
23
25
|
return this.services.likec4.Views;
|
package/dist/Rpc.js
CHANGED
|
@@ -25,7 +25,12 @@ export class Rpc extends ADisposable {
|
|
|
25
25
|
const LangiumDocuments = this.services.shared.workspace.LangiumDocuments;
|
|
26
26
|
const DocumentBuilder = this.services.shared.workspace.DocumentBuilder;
|
|
27
27
|
const notifyModelParsed = funnel((batch) => {
|
|
28
|
-
|
|
28
|
+
if (batch > 1) {
|
|
29
|
+
logger.debug `send ${'onDidChangeModel'} (${batch} batched)`;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
logger.debug `send ${'onDidChangeModel'}`;
|
|
33
|
+
}
|
|
29
34
|
connection.sendNotification(DidChangeModelNotification.type, '').catch(error => {
|
|
30
35
|
logger.warn(`[ServerRpc] error sending onDidChangeModel:`, { error });
|
|
31
36
|
return;
|
|
@@ -183,7 +188,13 @@ export class Rpc extends ADisposable {
|
|
|
183
188
|
}
|
|
184
189
|
}), connection.onRequest(ChangeView.req, async (request, _cancelToken) => {
|
|
185
190
|
logger.debug `received request ${'changeView'} of ${request.viewId} from project ${request.projectId}`;
|
|
186
|
-
|
|
191
|
+
const loc = await likec4Services.ModelChanges.applyChange(request);
|
|
192
|
+
const op = request.change.op;
|
|
193
|
+
if (request.projectId &&
|
|
194
|
+
(op === 'save-view-snapshot' || op === 'reset-manual-layout')) {
|
|
195
|
+
await projects.rebuidProject(request.projectId);
|
|
196
|
+
}
|
|
197
|
+
return loc;
|
|
187
198
|
}), connection.onRequest(FetchTelemetryMetrics.req, async (cancelToken) => {
|
|
188
199
|
const projectsIds = [...projects.all];
|
|
189
200
|
const promises = projectsIds.map(async (projectId) => {
|
package/dist/ast.d.ts
CHANGED
|
@@ -90,6 +90,15 @@ export interface ParsedAstExtend {
|
|
|
90
90
|
[key: string]: string | string[];
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
+
export interface ParsedAstExtendRelation {
|
|
94
|
+
id: c4.RelationId;
|
|
95
|
+
astPath: string;
|
|
96
|
+
tags?: c4.NonEmptyArray<c4.Tag> | null;
|
|
97
|
+
links?: c4.NonEmptyArray<c4.Link> | null;
|
|
98
|
+
metadata?: {
|
|
99
|
+
[key: string]: string | string[];
|
|
100
|
+
};
|
|
101
|
+
}
|
|
93
102
|
export interface ParsedAstRelation {
|
|
94
103
|
id: c4.RelationId;
|
|
95
104
|
astPath: string;
|
|
@@ -179,6 +188,7 @@ export interface LikeC4DocumentProps {
|
|
|
179
188
|
c4Elements?: ParsedAstElement[];
|
|
180
189
|
c4ExtendElements?: ParsedAstExtend[];
|
|
181
190
|
c4ExtendDeployments?: ParsedAstExtend[];
|
|
191
|
+
c4ExtendRelations?: ParsedAstExtendRelation[];
|
|
182
192
|
c4Relations?: ParsedAstRelation[];
|
|
183
193
|
c4Globals?: ParsedAstGlobals;
|
|
184
194
|
c4Views?: ParsedAstView[];
|
package/dist/ast.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2023-2025 Denis Davydkov
|
|
4
|
+
// Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
5
|
+
//
|
|
6
|
+
// Portions of this file have been modified by NVIDIA CORPORATION & AFFILIATES.
|
|
1
7
|
import { invariant, MultiMap, nonexhaustive } from '@likec4/core/utils';
|
|
2
8
|
import { AstUtils, DocumentState } from 'langium';
|
|
3
9
|
import { clamp, isNullish, isTruthy } from 'remeda';
|
|
@@ -42,6 +48,7 @@ export function isParsedLikeC4LangiumDocument(doc) {
|
|
|
42
48
|
&& !!doc.c4Elements
|
|
43
49
|
&& !!doc.c4ExtendElements
|
|
44
50
|
&& !!doc.c4ExtendDeployments
|
|
51
|
+
&& !!doc.c4ExtendRelations
|
|
45
52
|
&& !!doc.c4Relations
|
|
46
53
|
&& !!doc.c4Views
|
|
47
54
|
&& !!doc.c4Deployments
|