@likec4/language-server 1.17.1 → 1.18.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/contrib/likec4.tmLanguage.json +1 -1
- package/dist/browser.cjs +1 -1
- package/dist/browser.d.cts +2 -2
- package/dist/browser.d.mts +2 -2
- package/dist/browser.d.ts +2 -2
- package/dist/browser.mjs +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/protocol.d.cts +8 -5
- package/dist/protocol.d.mts +8 -5
- package/dist/protocol.d.ts +8 -5
- package/dist/shared/{language-server.DKV_FdPN.cjs → language-server.CO_nmHiL.cjs} +5598 -4213
- package/dist/shared/{language-server.BQRvVmE0.d.cts → language-server.Da6ey08o.d.cts} +390 -74
- package/dist/shared/{language-server.BysPcTxr.d.ts → language-server.De7S3e5Z.d.ts} +390 -74
- package/dist/shared/{language-server._wkyPgso.d.mts → language-server.Dj4iDjtB.d.mts} +390 -74
- package/dist/shared/{language-server.BIbAD1T-.mjs → language-server.oO_9JoAG.mjs} +5604 -4230
- package/package.json +11 -25
- package/src/Rpc.ts +6 -3
- package/src/ast.ts +124 -71
- package/src/generated/ast.ts +655 -39
- package/src/generated/grammar.ts +1 -1
- package/src/index.ts +1 -0
- package/src/like-c4.langium +170 -22
- package/src/logger.ts +7 -2
- package/src/lsp/CodeLensProvider.ts +0 -1
- package/src/lsp/CompletionProvider.ts +17 -2
- package/src/lsp/DocumentSymbolProvider.ts +5 -2
- package/src/lsp/HoverProvider.ts +34 -2
- package/src/lsp/SemanticTokenProvider.ts +58 -32
- package/src/model/deployments-index.ts +218 -0
- package/src/model/fqn-computation.ts +1 -1
- package/src/model/fqn-index.ts +0 -1
- package/src/model/index.ts +1 -0
- package/src/model/model-builder.ts +172 -37
- package/src/model/model-locator.ts +36 -7
- package/src/model/model-parser.ts +554 -92
- package/src/model-change/changeViewLayout.ts +2 -2
- package/src/module.ts +10 -4
- package/src/protocol.ts +10 -6
- package/src/references/index.ts +1 -0
- package/src/references/name-provider.ts +37 -0
- package/src/references/scope-computation.ts +130 -21
- package/src/references/scope-provider.ts +63 -36
- package/src/shared/NodeKindProvider.ts +15 -3
- package/src/utils/deploymentRef.ts +31 -0
- package/src/{elementRef.ts → utils/elementRef.ts} +1 -1
- package/src/utils/stringHash.ts +2 -2
- package/src/validation/_shared.ts +7 -5
- package/src/validation/deployment-checks.ts +144 -0
- package/src/validation/dynamic-view-step.ts +1 -1
- package/src/validation/index.ts +7 -0
- package/src/validation/relation.ts +1 -1
- package/src/validation/view-predicates/deployments.ts +56 -0
- package/src/validation/view-predicates/index.ts +1 -0
- package/src/view-utils/assignNavigateTo.ts +6 -5
- package/src/view-utils/index.ts +0 -1
- package/dist/model-graph/index.cjs +0 -10
- package/dist/model-graph/index.d.cts +0 -81
- package/dist/model-graph/index.d.mts +0 -81
- package/dist/model-graph/index.d.ts +0 -81
- package/dist/model-graph/index.mjs +0 -1
- package/dist/shared/language-server.D2QdbOJO.cjs +0 -1995
- package/dist/shared/language-server.DGrBGmsd.mjs +0 -1981
- package/src/model-graph/LikeC4ModelGraph.ts +0 -338
- package/src/model-graph/compute-view/__test__/fixture.ts +0 -630
- package/src/model-graph/compute-view/compute.ts +0 -788
- package/src/model-graph/compute-view/index.ts +0 -33
- package/src/model-graph/compute-view/predicates.ts +0 -509
- package/src/model-graph/dynamic-view/__test__/fixture.ts +0 -61
- package/src/model-graph/dynamic-view/compute.ts +0 -313
- package/src/model-graph/dynamic-view/index.ts +0 -29
- package/src/model-graph/index.ts +0 -3
- package/src/model-graph/utils/applyCustomElementProperties.ts +0 -65
- package/src/model-graph/utils/applyCustomRelationProperties.ts +0 -41
- package/src/model-graph/utils/applyViewRuleStyles.ts +0 -49
- package/src/model-graph/utils/buildComputeNodes.ts +0 -113
- package/src/model-graph/utils/buildElementNotations.ts +0 -63
- package/src/model-graph/utils/elementExpressionToPredicate.ts +0 -39
- package/src/model-graph/utils/relationExpressionToPredicates.ts +0 -43
- package/src/model-graph/utils/sortNodes.ts +0 -105
- package/src/model-graph/utils/uniqueTags.test.ts +0 -42
- package/src/model-graph/utils/uniqueTags.ts +0 -19
- package/src/utils/graphlib.ts +0 -9
- package/src/view-utils/resolve-extended-views.ts +0 -66
- package/src/view-utils/resolve-global-rules.ts +0 -88
- package/src/view-utils/view-hash.ts +0 -27
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type * as c4 from '@likec4/core'
|
|
2
2
|
import type { LangiumDocuments } from 'langium'
|
|
3
3
|
import { AstUtils, GrammarUtils } from 'langium'
|
|
4
|
+
import { isString } from 'remeda'
|
|
4
5
|
import type { Location } from 'vscode-languageserver-types'
|
|
5
6
|
import type { ParsedAstElement } from '../ast'
|
|
6
7
|
import { ast, isParsedLikeC4LangiumDocument } from '../ast'
|
|
7
8
|
import type { LikeC4Services } from '../module'
|
|
9
|
+
import type { DeploymentsIndex } from './deployments-index'
|
|
8
10
|
import { type FqnIndex } from './fqn-index'
|
|
9
11
|
|
|
10
12
|
const { findNodeForKeyword, findNodeForProperty } = GrammarUtils
|
|
@@ -12,10 +14,12 @@ const { getDocument } = AstUtils
|
|
|
12
14
|
|
|
13
15
|
export class LikeC4ModelLocator {
|
|
14
16
|
private fqnIndex: FqnIndex
|
|
17
|
+
private deploymentsIndex: DeploymentsIndex
|
|
15
18
|
private langiumDocuments: LangiumDocuments
|
|
16
19
|
|
|
17
20
|
constructor(private services: LikeC4Services) {
|
|
18
21
|
this.fqnIndex = services.likec4.FqnIndex
|
|
22
|
+
this.deploymentsIndex = services.likec4.DeploymentsIndex
|
|
19
23
|
this.langiumDocuments = services.shared.workspace.LangiumDocuments
|
|
20
24
|
}
|
|
21
25
|
|
|
@@ -23,10 +27,23 @@ export class LikeC4ModelLocator {
|
|
|
23
27
|
return this.langiumDocuments.all.filter(isParsedLikeC4LangiumDocument)
|
|
24
28
|
}
|
|
25
29
|
|
|
26
|
-
public getParsedElement(
|
|
27
|
-
|
|
30
|
+
public getParsedElement(astNodeOrFqn: ast.Element | c4.Fqn): ParsedAstElement | null {
|
|
31
|
+
if (isString(astNodeOrFqn)) {
|
|
32
|
+
const fqn = astNodeOrFqn
|
|
33
|
+
const entry = this.fqnIndex.byFqn(astNodeOrFqn).head()
|
|
34
|
+
if (!entry) {
|
|
35
|
+
return null
|
|
36
|
+
}
|
|
37
|
+
const doc = this.langiumDocuments.getDocument(entry.documentUri)
|
|
38
|
+
if (!doc || !isParsedLikeC4LangiumDocument(doc)) {
|
|
39
|
+
return null
|
|
40
|
+
}
|
|
41
|
+
return doc.c4Elements.find(e => e.id === fqn) ?? null
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const fqn = this.fqnIndex.getFqn(astNodeOrFqn)
|
|
28
45
|
if (!fqn) return null
|
|
29
|
-
const doc = getDocument(
|
|
46
|
+
const doc = getDocument(astNodeOrFqn)
|
|
30
47
|
if (!isParsedLikeC4LangiumDocument(doc)) {
|
|
31
48
|
return null
|
|
32
49
|
}
|
|
@@ -44,10 +61,22 @@ export class LikeC4ModelLocator {
|
|
|
44
61
|
range: docsegment.range
|
|
45
62
|
}
|
|
46
63
|
}
|
|
64
|
+
public locateDeploymentElement(fqn: c4.Fqn, _prop?: string): Location | null {
|
|
65
|
+
const entry = this.deploymentsIndex.byFqn(fqn).head()
|
|
66
|
+
const docsegment = entry?.nameSegment ?? entry?.selectionSegment
|
|
67
|
+
if (!entry || !docsegment) {
|
|
68
|
+
return null
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
uri: entry.documentUri.toString(),
|
|
72
|
+
range: docsegment.range
|
|
73
|
+
}
|
|
74
|
+
}
|
|
47
75
|
|
|
48
|
-
public locateRelation(relationId: c4.
|
|
76
|
+
public locateRelation(relationId: c4.RelationId): Location | null {
|
|
49
77
|
for (const doc of this.documents()) {
|
|
50
78
|
const relation = doc.c4Relations.find(r => r.id === relationId)
|
|
79
|
+
?? doc.c4DeploymentRelations.find(r => r.id === relationId)
|
|
51
80
|
if (!relation) {
|
|
52
81
|
continue
|
|
53
82
|
}
|
|
@@ -55,7 +84,7 @@ export class LikeC4ModelLocator {
|
|
|
55
84
|
doc.parseResult.value,
|
|
56
85
|
relation.astPath
|
|
57
86
|
)
|
|
58
|
-
if (!ast.isRelation(node)) {
|
|
87
|
+
if (!ast.isRelation(node) && !ast.isDeploymentRelation(node)) {
|
|
59
88
|
continue
|
|
60
89
|
}
|
|
61
90
|
|
|
@@ -76,7 +105,7 @@ export class LikeC4ModelLocator {
|
|
|
76
105
|
return null
|
|
77
106
|
}
|
|
78
107
|
|
|
79
|
-
public locateViewAst(viewId: c4.
|
|
108
|
+
public locateViewAst(viewId: c4.ViewId) {
|
|
80
109
|
for (const doc of this.documents()) {
|
|
81
110
|
const view = doc.c4Views.find(r => r.id === viewId)
|
|
82
111
|
if (!view) {
|
|
@@ -97,7 +126,7 @@ export class LikeC4ModelLocator {
|
|
|
97
126
|
return null
|
|
98
127
|
}
|
|
99
128
|
|
|
100
|
-
public locateView(viewId: c4.
|
|
129
|
+
public locateView(viewId: c4.ViewId): Location | null {
|
|
101
130
|
const res = this.locateViewAst(viewId)
|
|
102
131
|
if (!res) {
|
|
103
132
|
return null
|